diff --git a/CHANGELOG b/CHANGELOG
index c0a6693..3a754d1 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -1,3 +1,24 @@
+v1.6.0
+  Version 1.6.0
+
+  Release to drop support for Python 2.6 and add support for google-auth.
+
+  - Support for Python 2.6 has been dropped. (#319)
+  - The credentials argument to discovery.build and discovery.build_from_document
+    can be either oauth2client credentials or google-auth credentials. (#319)
+  - discovery.build and discovery.build_from_document now unambiguously use the
+    http argument to make all requests, including the request for the discovery
+    document. (#319)
+  - The http and credentials arguments to discovery.build and
+    discovery.build_from_document are now mutually exclusive, eliminating a
+    buggy edge case. (#319)
+  - If neither http or credentials is specified to discovery.build and
+    discovery.build_from_document, then Application Default Credentials will
+    be used. The library prefers google-auth for this if it is available, but
+    can also use oauth2client's implementation. (#319)
+  - Fixed resumable upload failure when receiving a 308 response. (#312)
+  - Clarified the support versions of Python 3. (#316)
+
 v1.5.5
   Version 1.5.5
 
diff --git a/README.md b/README.md
index 03bdf8c..9d11c67 100644
--- a/README.md
+++ b/README.md
@@ -16,9 +16,7 @@
 See the [Developers Guide](https://developers.google.com/api-client-library/python/start/get_started) for more detailed instructions and additional documentation.
 
 # Python Version
-Python 2.6 or 2.7 are fully supported.
-
-Python 3.3 and 3.4 are supported and tested. This library may work on later versions of 3, but we do not currently run tests against those versions.
+Python 2.7, 3.3, and 3.4 are fully supported and tested. This library may work on later versions of 3, but we do not currently run tests against those versions.
 
 # Third Party Libraries and Dependencies
 The following libraries will be installed when you install the client library:
diff --git a/docs/dyn/adexchangebuyer_v1_3.creatives.html b/docs/dyn/adexchangebuyer_v1_3.creatives.html
index 348d2b9..02e8f6b 100644
--- a/docs/dyn/adexchangebuyer_v1_3.creatives.html
+++ b/docs/dyn/adexchangebuyer_v1_3.creatives.html
@@ -111,7 +111,7 @@
         "A String",
       ],
       "accountId": 42, # Account id.
-      "videoURL": "A String", # The url to fetch a video ad. If set, HTMLSnippet should not be set.
+      "videoURL": "A String", # The URL to fetch a video ad. If set, HTMLSnippet and the nativeAd should not be set.
       "clickThroughUrl": [ # The set of destination urls for the snippet.
         "A String",
       ],
@@ -212,7 +212,7 @@
       "A String",
     ],
     "accountId": 42, # Account id.
-    "videoURL": "A String", # The url to fetch a video ad. If set, HTMLSnippet should not be set.
+    "videoURL": "A String", # The URL to fetch a video ad. If set, HTMLSnippet and the nativeAd should not be set.
     "clickThroughUrl": [ # The set of destination urls for the snippet.
       "A String",
     ],
@@ -308,7 +308,7 @@
         "A String",
       ],
       "accountId": 42, # Account id.
-      "videoURL": "A String", # The url to fetch a video ad. If set, HTMLSnippet should not be set.
+      "videoURL": "A String", # The URL to fetch a video ad. If set, HTMLSnippet and the nativeAd should not be set.
       "clickThroughUrl": [ # The set of destination urls for the snippet.
         "A String",
       ],
@@ -422,7 +422,7 @@
             "A String",
           ],
           "accountId": 42, # Account id.
-          "videoURL": "A String", # The url to fetch a video ad. If set, HTMLSnippet should not be set.
+          "videoURL": "A String", # The URL to fetch a video ad. If set, HTMLSnippet and the nativeAd should not be set.
           "clickThroughUrl": [ # The set of destination urls for the snippet.
             "A String",
           ],
diff --git a/docs/dyn/adexchangebuyer_v1_4.accounts.html b/docs/dyn/adexchangebuyer_v1_4.accounts.html
index bab5f56..8870a0c 100644
--- a/docs/dyn/adexchangebuyer_v1_4.accounts.html
+++ b/docs/dyn/adexchangebuyer_v1_4.accounts.html
@@ -110,10 +110,11 @@
               # - US_EAST
               # - US_WEST
           "maximumQps": 42, # The maximum queries per second the Ad Exchange will send.
-          "bidProtocol": "A String", # The protocol that the bidder endpoint is using. By default, OpenRTB protocols use JSON, except PROTOCOL_OPENRTB_PROTOBUF. PROTOCOL_OPENRTB_PROTOBUF uses protobuf encoding over the latest OpenRTB protocol version, which is 2.3 right now. Allowed values:
+          "bidProtocol": "A String", # The protocol that the bidder endpoint is using. By default, OpenRTB protocols use JSON, except PROTOCOL_OPENRTB_PROTOBUF. PROTOCOL_OPENRTB_PROTOBUF uses protobuf encoding over the latest OpenRTB protocol version, which is 2.4 right now. Allowed values:
               # - PROTOCOL_ADX
               # - PROTOCOL_OPENRTB_2_2
               # - PROTOCOL_OPENRTB_2_3
+              # - PROTOCOL_OPENRTB_2_4
               # - PROTOCOL_OPENRTB_PROTOBUF
         },
       ],
@@ -148,10 +149,11 @@
                   # - US_EAST
                   # - US_WEST
               "maximumQps": 42, # The maximum queries per second the Ad Exchange will send.
-              "bidProtocol": "A String", # The protocol that the bidder endpoint is using. By default, OpenRTB protocols use JSON, except PROTOCOL_OPENRTB_PROTOBUF. PROTOCOL_OPENRTB_PROTOBUF uses protobuf encoding over the latest OpenRTB protocol version, which is 2.3 right now. Allowed values:
+              "bidProtocol": "A String", # The protocol that the bidder endpoint is using. By default, OpenRTB protocols use JSON, except PROTOCOL_OPENRTB_PROTOBUF. PROTOCOL_OPENRTB_PROTOBUF uses protobuf encoding over the latest OpenRTB protocol version, which is 2.4 right now. Allowed values:
                   # - PROTOCOL_ADX
                   # - PROTOCOL_OPENRTB_2_2
                   # - PROTOCOL_OPENRTB_2_3
+                  # - PROTOCOL_OPENRTB_2_4
                   # - PROTOCOL_OPENRTB_PROTOBUF
             },
           ],
@@ -187,10 +189,11 @@
             # - US_EAST
             # - US_WEST
         "maximumQps": 42, # The maximum queries per second the Ad Exchange will send.
-        "bidProtocol": "A String", # The protocol that the bidder endpoint is using. By default, OpenRTB protocols use JSON, except PROTOCOL_OPENRTB_PROTOBUF. PROTOCOL_OPENRTB_PROTOBUF uses protobuf encoding over the latest OpenRTB protocol version, which is 2.3 right now. Allowed values:
+        "bidProtocol": "A String", # The protocol that the bidder endpoint is using. By default, OpenRTB protocols use JSON, except PROTOCOL_OPENRTB_PROTOBUF. PROTOCOL_OPENRTB_PROTOBUF uses protobuf encoding over the latest OpenRTB protocol version, which is 2.4 right now. Allowed values:
             # - PROTOCOL_ADX
             # - PROTOCOL_OPENRTB_2_2
             # - PROTOCOL_OPENRTB_2_3
+            # - PROTOCOL_OPENRTB_2_4
             # - PROTOCOL_OPENRTB_PROTOBUF
       },
     ],
@@ -218,10 +221,11 @@
               # - US_EAST
               # - US_WEST
           "maximumQps": 42, # The maximum queries per second the Ad Exchange will send.
-          "bidProtocol": "A String", # The protocol that the bidder endpoint is using. By default, OpenRTB protocols use JSON, except PROTOCOL_OPENRTB_PROTOBUF. PROTOCOL_OPENRTB_PROTOBUF uses protobuf encoding over the latest OpenRTB protocol version, which is 2.3 right now. Allowed values:
+          "bidProtocol": "A String", # The protocol that the bidder endpoint is using. By default, OpenRTB protocols use JSON, except PROTOCOL_OPENRTB_PROTOBUF. PROTOCOL_OPENRTB_PROTOBUF uses protobuf encoding over the latest OpenRTB protocol version, which is 2.4 right now. Allowed values:
               # - PROTOCOL_ADX
               # - PROTOCOL_OPENRTB_2_2
               # - PROTOCOL_OPENRTB_2_3
+              # - PROTOCOL_OPENRTB_2_4
               # - PROTOCOL_OPENRTB_PROTOBUF
         },
       ],
@@ -254,10 +258,11 @@
             # - US_EAST
             # - US_WEST
         "maximumQps": 42, # The maximum queries per second the Ad Exchange will send.
-        "bidProtocol": "A String", # The protocol that the bidder endpoint is using. By default, OpenRTB protocols use JSON, except PROTOCOL_OPENRTB_PROTOBUF. PROTOCOL_OPENRTB_PROTOBUF uses protobuf encoding over the latest OpenRTB protocol version, which is 2.3 right now. Allowed values:
+        "bidProtocol": "A String", # The protocol that the bidder endpoint is using. By default, OpenRTB protocols use JSON, except PROTOCOL_OPENRTB_PROTOBUF. PROTOCOL_OPENRTB_PROTOBUF uses protobuf encoding over the latest OpenRTB protocol version, which is 2.4 right now. Allowed values:
             # - PROTOCOL_ADX
             # - PROTOCOL_OPENRTB_2_2
             # - PROTOCOL_OPENRTB_2_3
+            # - PROTOCOL_OPENRTB_2_4
             # - PROTOCOL_OPENRTB_PROTOBUF
       },
     ],
@@ -285,10 +290,11 @@
               # - US_EAST
               # - US_WEST
           "maximumQps": 42, # The maximum queries per second the Ad Exchange will send.
-          "bidProtocol": "A String", # The protocol that the bidder endpoint is using. By default, OpenRTB protocols use JSON, except PROTOCOL_OPENRTB_PROTOBUF. PROTOCOL_OPENRTB_PROTOBUF uses protobuf encoding over the latest OpenRTB protocol version, which is 2.3 right now. Allowed values:
+          "bidProtocol": "A String", # The protocol that the bidder endpoint is using. By default, OpenRTB protocols use JSON, except PROTOCOL_OPENRTB_PROTOBUF. PROTOCOL_OPENRTB_PROTOBUF uses protobuf encoding over the latest OpenRTB protocol version, which is 2.4 right now. Allowed values:
               # - PROTOCOL_ADX
               # - PROTOCOL_OPENRTB_2_2
               # - PROTOCOL_OPENRTB_2_3
+              # - PROTOCOL_OPENRTB_2_4
               # - PROTOCOL_OPENRTB_PROTOBUF
         },
       ],
diff --git a/docs/dyn/adexchangebuyer_v1_4.creatives.html b/docs/dyn/adexchangebuyer_v1_4.creatives.html
index babdfbc..5b9bb56 100644
--- a/docs/dyn/adexchangebuyer_v1_4.creatives.html
+++ b/docs/dyn/adexchangebuyer_v1_4.creatives.html
@@ -132,7 +132,7 @@
         "A String",
       ],
       "accountId": 42, # Account id.
-      "videoURL": "A String", # The URL to fetch a video ad. If set, HTMLSnippet and the nativeAd should not be set. Note, this is diffrent from resource.native_ad.video_url above.
+      "videoURL": "A String", # The URL to fetch a video ad. If set, HTMLSnippet and the nativeAd should not be set. Note, this is different from resource.native_ad.video_url above.
       "clickThroughUrl": [ # The set of destination urls for the snippet.
         "A String",
       ],
@@ -144,7 +144,7 @@
         "body": "A String", # A long description of the ad.
         "advertiser": "A String",
         "store": "A String", # The URL to the app store to purchase/download the promoted app.
-        "videoURL": "A String",
+        "videoURL": "A String", # The URL of the XML VAST for a native ad. Note this is a separate field from resource.video_url.
         "headline": "A String", # A short title for the ad.
         "image": { # A large image.
           "url": "A String",
@@ -168,6 +168,7 @@
         ],
         "price": "A String", # The price of the promoted app including the currency info.
         "clickTrackingUrl": "A String", # The URL to use for click tracking.
+        "clickLinkUrl": "A String", # The URL that the browser/SDK will load when the user clicks the ad.
       },
       "version": 42, # The version for this creative. Read-only. This field should not be set in requests.
       "apiUploadTimestamp": "A String", # The last upload timestamp of this creative if it was uploaded via API. Read-only. The value of this field is generated, and will be ignored for uploads. (formatted RFC 3339 timestamp).
@@ -275,7 +276,7 @@
       "A String",
     ],
     "accountId": 42, # Account id.
-    "videoURL": "A String", # The URL to fetch a video ad. If set, HTMLSnippet and the nativeAd should not be set. Note, this is diffrent from resource.native_ad.video_url above.
+    "videoURL": "A String", # The URL to fetch a video ad. If set, HTMLSnippet and the nativeAd should not be set. Note, this is different from resource.native_ad.video_url above.
     "clickThroughUrl": [ # The set of destination urls for the snippet.
       "A String",
     ],
@@ -287,7 +288,7 @@
       "body": "A String", # A long description of the ad.
       "advertiser": "A String",
       "store": "A String", # The URL to the app store to purchase/download the promoted app.
-      "videoURL": "A String",
+      "videoURL": "A String", # The URL of the XML VAST for a native ad. Note this is a separate field from resource.video_url.
       "headline": "A String", # A short title for the ad.
       "image": { # A large image.
         "url": "A String",
@@ -311,6 +312,7 @@
       ],
       "price": "A String", # The price of the promoted app including the currency info.
       "clickTrackingUrl": "A String", # The URL to use for click tracking.
+      "clickLinkUrl": "A String", # The URL that the browser/SDK will load when the user clicks the ad.
     },
     "version": 42, # The version for this creative. Read-only. This field should not be set in requests.
     "apiUploadTimestamp": "A String", # The last upload timestamp of this creative if it was uploaded via API. Read-only. The value of this field is generated, and will be ignored for uploads. (formatted RFC 3339 timestamp).
@@ -413,7 +415,7 @@
         "A String",
       ],
       "accountId": 42, # Account id.
-      "videoURL": "A String", # The URL to fetch a video ad. If set, HTMLSnippet and the nativeAd should not be set. Note, this is diffrent from resource.native_ad.video_url above.
+      "videoURL": "A String", # The URL to fetch a video ad. If set, HTMLSnippet and the nativeAd should not be set. Note, this is different from resource.native_ad.video_url above.
       "clickThroughUrl": [ # The set of destination urls for the snippet.
         "A String",
       ],
@@ -425,7 +427,7 @@
         "body": "A String", # A long description of the ad.
         "advertiser": "A String",
         "store": "A String", # The URL to the app store to purchase/download the promoted app.
-        "videoURL": "A String",
+        "videoURL": "A String", # The URL of the XML VAST for a native ad. Note this is a separate field from resource.video_url.
         "headline": "A String", # A short title for the ad.
         "image": { # A large image.
           "url": "A String",
@@ -449,6 +451,7 @@
         ],
         "price": "A String", # The price of the promoted app including the currency info.
         "clickTrackingUrl": "A String", # The URL to use for click tracking.
+        "clickLinkUrl": "A String", # The URL that the browser/SDK will load when the user clicks the ad.
       },
       "version": 42, # The version for this creative. Read-only. This field should not be set in requests.
       "apiUploadTimestamp": "A String", # The last upload timestamp of this creative if it was uploaded via API. Read-only. The value of this field is generated, and will be ignored for uploads. (formatted RFC 3339 timestamp).
@@ -576,7 +579,7 @@
             "A String",
           ],
           "accountId": 42, # Account id.
-          "videoURL": "A String", # The URL to fetch a video ad. If set, HTMLSnippet and the nativeAd should not be set. Note, this is diffrent from resource.native_ad.video_url above.
+          "videoURL": "A String", # The URL to fetch a video ad. If set, HTMLSnippet and the nativeAd should not be set. Note, this is different from resource.native_ad.video_url above.
           "clickThroughUrl": [ # The set of destination urls for the snippet.
             "A String",
           ],
@@ -588,7 +591,7 @@
             "body": "A String", # A long description of the ad.
             "advertiser": "A String",
             "store": "A String", # The URL to the app store to purchase/download the promoted app.
-            "videoURL": "A String",
+            "videoURL": "A String", # The URL of the XML VAST for a native ad. Note this is a separate field from resource.video_url.
             "headline": "A String", # A short title for the ad.
             "image": { # A large image.
               "url": "A String",
@@ -612,6 +615,7 @@
             ],
             "price": "A String", # The price of the promoted app including the currency info.
             "clickTrackingUrl": "A String", # The URL to use for click tracking.
+            "clickLinkUrl": "A String", # The URL that the browser/SDK will load when the user clicks the ad.
           },
           "version": 42, # The version for this creative. Read-only. This field should not be set in requests.
           "apiUploadTimestamp": "A String", # The last upload timestamp of this creative if it was uploaded via API. Read-only. The value of this field is generated, and will be ignored for uploads. (formatted RFC 3339 timestamp).
diff --git a/docs/dyn/adexchangebuyer_v1_4.marketplacedeals.html b/docs/dyn/adexchangebuyer_v1_4.marketplacedeals.html
index 5c4a11c..5d7142b 100644
--- a/docs/dyn/adexchangebuyer_v1_4.marketplacedeals.html
+++ b/docs/dyn/adexchangebuyer_v1_4.marketplacedeals.html
@@ -121,7 +121,7 @@
         "isRfpTemplate": True or False, # Indicates whether the current deal is a RFP template. RFP template is created by buyer and not based on seller created products.
         "webPropertyCode": "A String",
         "proposalId": "A String",
-        "inventoryDescription": "A String", # Description for the deal terms. (updatable)
+        "inventoryDescription": "A String", # Description for the deal terms. (buyer-readonly)
         "productId": "A String", # The product-id from which this deal was created. (readonly, except on create)
         "deliveryControl": { # The set of fields around delivery control that are interesting for a buyer to see but are non-negotiable. These are set by the publisher. This message is assigned an id of 100 since some day we would want to model this as a protobuf extension.
           "frequencyCaps": [
@@ -346,7 +346,7 @@
         "isRfpTemplate": True or False, # Indicates whether the current deal is a RFP template. RFP template is created by buyer and not based on seller created products.
         "webPropertyCode": "A String",
         "proposalId": "A String",
-        "inventoryDescription": "A String", # Description for the deal terms. (updatable)
+        "inventoryDescription": "A String", # Description for the deal terms. (buyer-readonly)
         "productId": "A String", # The product-id from which this deal was created. (readonly, except on create)
         "deliveryControl": { # The set of fields around delivery control that are interesting for a buyer to see but are non-negotiable. These are set by the publisher. This message is assigned an id of 100 since some day we would want to model this as a protobuf extension.
           "frequencyCaps": [
@@ -566,7 +566,7 @@
         "isRfpTemplate": True or False, # Indicates whether the current deal is a RFP template. RFP template is created by buyer and not based on seller created products.
         "webPropertyCode": "A String",
         "proposalId": "A String",
-        "inventoryDescription": "A String", # Description for the deal terms. (updatable)
+        "inventoryDescription": "A String", # Description for the deal terms. (buyer-readonly)
         "productId": "A String", # The product-id from which this deal was created. (readonly, except on create)
         "deliveryControl": { # The set of fields around delivery control that are interesting for a buyer to see but are non-negotiable. These are set by the publisher. This message is assigned an id of 100 since some day we would want to model this as a protobuf extension.
           "frequencyCaps": [
@@ -793,7 +793,7 @@
         "isRfpTemplate": True or False, # Indicates whether the current deal is a RFP template. RFP template is created by buyer and not based on seller created products.
         "webPropertyCode": "A String",
         "proposalId": "A String",
-        "inventoryDescription": "A String", # Description for the deal terms. (updatable)
+        "inventoryDescription": "A String", # Description for the deal terms. (buyer-readonly)
         "productId": "A String", # The product-id from which this deal was created. (readonly, except on create)
         "deliveryControl": { # The set of fields around delivery control that are interesting for a buyer to see but are non-negotiable. These are set by the publisher. This message is assigned an id of 100 since some day we would want to model this as a protobuf extension.
           "frequencyCaps": [
@@ -1017,7 +1017,7 @@
         "isRfpTemplate": True or False, # Indicates whether the current deal is a RFP template. RFP template is created by buyer and not based on seller created products.
         "webPropertyCode": "A String",
         "proposalId": "A String",
-        "inventoryDescription": "A String", # Description for the deal terms. (updatable)
+        "inventoryDescription": "A String", # Description for the deal terms. (buyer-readonly)
         "productId": "A String", # The product-id from which this deal was created. (readonly, except on create)
         "deliveryControl": { # The set of fields around delivery control that are interesting for a buyer to see but are non-negotiable. These are set by the publisher. This message is assigned an id of 100 since some day we would want to model this as a protobuf extension.
           "frequencyCaps": [
@@ -1301,7 +1301,7 @@
         "isRfpTemplate": True or False, # Indicates whether the current deal is a RFP template. RFP template is created by buyer and not based on seller created products.
         "webPropertyCode": "A String",
         "proposalId": "A String",
-        "inventoryDescription": "A String", # Description for the deal terms. (updatable)
+        "inventoryDescription": "A String", # Description for the deal terms. (buyer-readonly)
         "productId": "A String", # The product-id from which this deal was created. (readonly, except on create)
         "deliveryControl": { # The set of fields around delivery control that are interesting for a buyer to see but are non-negotiable. These are set by the publisher. This message is assigned an id of 100 since some day we would want to model this as a protobuf extension.
           "frequencyCaps": [
diff --git a/docs/dyn/adexchangebuyer_v1_4.pretargetingConfig.html b/docs/dyn/adexchangebuyer_v1_4.pretargetingConfig.html
index 337b688..000600f 100644
--- a/docs/dyn/adexchangebuyer_v1_4.pretargetingConfig.html
+++ b/docs/dyn/adexchangebuyer_v1_4.pretargetingConfig.html
@@ -154,6 +154,12 @@
           "type": "A String", # The type of the placement.
         },
       ],
+      "dimensions": [ # Requests which allow one of these (width, height) pairs will match. All pairs must be supported ad dimensions.
+        {
+          "width": "A String", # Width in pixels.
+          "height": "A String", # Height in pixels.
+        },
+      ],
       "billingId": "A String", # The id for billing purposes, provided for reference. Leave this field blank for insert requests; the id will be generated automatically.
       "geoCriteriaIds": [ # Requests containing any of these geo criteria ids will match.
         "A String",
@@ -165,16 +171,14 @@
         "A String",
       ],
       "isActive": True or False, # Whether this config is active. Required for all requests.
-      "dimensions": [ # Requests which allow one of these (width, height) pairs will match. All pairs must be supported ad dimensions.
-        {
-          "width": "A String", # Width in pixels.
-          "height": "A String", # Height in pixels.
-        },
-      ],
+      "minimumViewabilityDecile": 42, # Requests where the predicted viewability is below the specified decile will not match. E.g. if the buyer sets this value to 5, requests from slots where the predicted viewability is below 50% will not match. If the predicted viewability is unknown this field will be ignored.
       "kind": "adexchangebuyer#pretargetingConfig", # The kind of the resource, i.e. "adexchangebuyer#pretargetingConfig".
       "supportedCreativeAttributes": [ # Creative attributes should be declared here if all creatives corresponding to this pretargeting configuration have that creative attribute. Values are from pretargetable-creative-attributes.txt in the downloadable files section.
         "A String",
       ],
+      "userIdentifierDataRequired": [ # Requests containing the specified type of user data will match. Possible values are HOSTED_MATCH_DATA, which means the request is cookie-targetable and has a match in the buyer's hosted match table, and COOKIE_OR_IDFA, which means the request has either a targetable cookie or an iOS IDFA.
+        "A String",
+      ],
       "vendorTypes": [ # Requests that allow any of these vendor ids will match. Values are from vendors.txt in the downloadable files section.
         "A String",
       ],
@@ -242,6 +246,12 @@
         "type": "A String", # The type of the placement.
       },
     ],
+    "dimensions": [ # Requests which allow one of these (width, height) pairs will match. All pairs must be supported ad dimensions.
+      {
+        "width": "A String", # Width in pixels.
+        "height": "A String", # Height in pixels.
+      },
+    ],
     "billingId": "A String", # The id for billing purposes, provided for reference. Leave this field blank for insert requests; the id will be generated automatically.
     "geoCriteriaIds": [ # Requests containing any of these geo criteria ids will match.
       "A String",
@@ -253,16 +263,14 @@
       "A String",
     ],
     "isActive": True or False, # Whether this config is active. Required for all requests.
-    "dimensions": [ # Requests which allow one of these (width, height) pairs will match. All pairs must be supported ad dimensions.
-      {
-        "width": "A String", # Width in pixels.
-        "height": "A String", # Height in pixels.
-      },
-    ],
+    "minimumViewabilityDecile": 42, # Requests where the predicted viewability is below the specified decile will not match. E.g. if the buyer sets this value to 5, requests from slots where the predicted viewability is below 50% will not match. If the predicted viewability is unknown this field will be ignored.
     "kind": "adexchangebuyer#pretargetingConfig", # The kind of the resource, i.e. "adexchangebuyer#pretargetingConfig".
     "supportedCreativeAttributes": [ # Creative attributes should be declared here if all creatives corresponding to this pretargeting configuration have that creative attribute. Values are from pretargetable-creative-attributes.txt in the downloadable files section.
       "A String",
     ],
+    "userIdentifierDataRequired": [ # Requests containing the specified type of user data will match. Possible values are HOSTED_MATCH_DATA, which means the request is cookie-targetable and has a match in the buyer's hosted match table, and COOKIE_OR_IDFA, which means the request has either a targetable cookie or an iOS IDFA.
+      "A String",
+    ],
     "vendorTypes": [ # Requests that allow any of these vendor ids will match. Values are from vendors.txt in the downloadable files section.
       "A String",
     ],
@@ -324,6 +332,12 @@
           "type": "A String", # The type of the placement.
         },
       ],
+      "dimensions": [ # Requests which allow one of these (width, height) pairs will match. All pairs must be supported ad dimensions.
+        {
+          "width": "A String", # Width in pixels.
+          "height": "A String", # Height in pixels.
+        },
+      ],
       "billingId": "A String", # The id for billing purposes, provided for reference. Leave this field blank for insert requests; the id will be generated automatically.
       "geoCriteriaIds": [ # Requests containing any of these geo criteria ids will match.
         "A String",
@@ -335,16 +349,14 @@
         "A String",
       ],
       "isActive": True or False, # Whether this config is active. Required for all requests.
-      "dimensions": [ # Requests which allow one of these (width, height) pairs will match. All pairs must be supported ad dimensions.
-        {
-          "width": "A String", # Width in pixels.
-          "height": "A String", # Height in pixels.
-        },
-      ],
+      "minimumViewabilityDecile": 42, # Requests where the predicted viewability is below the specified decile will not match. E.g. if the buyer sets this value to 5, requests from slots where the predicted viewability is below 50% will not match. If the predicted viewability is unknown this field will be ignored.
       "kind": "adexchangebuyer#pretargetingConfig", # The kind of the resource, i.e. "adexchangebuyer#pretargetingConfig".
       "supportedCreativeAttributes": [ # Creative attributes should be declared here if all creatives corresponding to this pretargeting configuration have that creative attribute. Values are from pretargetable-creative-attributes.txt in the downloadable files section.
         "A String",
       ],
+      "userIdentifierDataRequired": [ # Requests containing the specified type of user data will match. Possible values are HOSTED_MATCH_DATA, which means the request is cookie-targetable and has a match in the buyer's hosted match table, and COOKIE_OR_IDFA, which means the request has either a targetable cookie or an iOS IDFA.
+        "A String",
+      ],
       "vendorTypes": [ # Requests that allow any of these vendor ids will match. Values are from vendors.txt in the downloadable files section.
         "A String",
       ],
@@ -415,6 +427,12 @@
               "type": "A String", # The type of the placement.
             },
           ],
+          "dimensions": [ # Requests which allow one of these (width, height) pairs will match. All pairs must be supported ad dimensions.
+            {
+              "width": "A String", # Width in pixels.
+              "height": "A String", # Height in pixels.
+            },
+          ],
           "billingId": "A String", # The id for billing purposes, provided for reference. Leave this field blank for insert requests; the id will be generated automatically.
           "geoCriteriaIds": [ # Requests containing any of these geo criteria ids will match.
             "A String",
@@ -426,16 +444,14 @@
             "A String",
           ],
           "isActive": True or False, # Whether this config is active. Required for all requests.
-          "dimensions": [ # Requests which allow one of these (width, height) pairs will match. All pairs must be supported ad dimensions.
-            {
-              "width": "A String", # Width in pixels.
-              "height": "A String", # Height in pixels.
-            },
-          ],
+          "minimumViewabilityDecile": 42, # Requests where the predicted viewability is below the specified decile will not match. E.g. if the buyer sets this value to 5, requests from slots where the predicted viewability is below 50% will not match. If the predicted viewability is unknown this field will be ignored.
           "kind": "adexchangebuyer#pretargetingConfig", # The kind of the resource, i.e. "adexchangebuyer#pretargetingConfig".
           "supportedCreativeAttributes": [ # Creative attributes should be declared here if all creatives corresponding to this pretargeting configuration have that creative attribute. Values are from pretargetable-creative-attributes.txt in the downloadable files section.
             "A String",
           ],
+          "userIdentifierDataRequired": [ # Requests containing the specified type of user data will match. Possible values are HOSTED_MATCH_DATA, which means the request is cookie-targetable and has a match in the buyer's hosted match table, and COOKIE_OR_IDFA, which means the request has either a targetable cookie or an iOS IDFA.
+            "A String",
+          ],
           "vendorTypes": [ # Requests that allow any of these vendor ids will match. Values are from vendors.txt in the downloadable files section.
             "A String",
           ],
@@ -507,6 +523,12 @@
         "type": "A String", # The type of the placement.
       },
     ],
+    "dimensions": [ # Requests which allow one of these (width, height) pairs will match. All pairs must be supported ad dimensions.
+      {
+        "width": "A String", # Width in pixels.
+        "height": "A String", # Height in pixels.
+      },
+    ],
     "billingId": "A String", # The id for billing purposes, provided for reference. Leave this field blank for insert requests; the id will be generated automatically.
     "geoCriteriaIds": [ # Requests containing any of these geo criteria ids will match.
       "A String",
@@ -518,16 +540,14 @@
       "A String",
     ],
     "isActive": True or False, # Whether this config is active. Required for all requests.
-    "dimensions": [ # Requests which allow one of these (width, height) pairs will match. All pairs must be supported ad dimensions.
-      {
-        "width": "A String", # Width in pixels.
-        "height": "A String", # Height in pixels.
-      },
-    ],
+    "minimumViewabilityDecile": 42, # Requests where the predicted viewability is below the specified decile will not match. E.g. if the buyer sets this value to 5, requests from slots where the predicted viewability is below 50% will not match. If the predicted viewability is unknown this field will be ignored.
     "kind": "adexchangebuyer#pretargetingConfig", # The kind of the resource, i.e. "adexchangebuyer#pretargetingConfig".
     "supportedCreativeAttributes": [ # Creative attributes should be declared here if all creatives corresponding to this pretargeting configuration have that creative attribute. Values are from pretargetable-creative-attributes.txt in the downloadable files section.
       "A String",
     ],
+    "userIdentifierDataRequired": [ # Requests containing the specified type of user data will match. Possible values are HOSTED_MATCH_DATA, which means the request is cookie-targetable and has a match in the buyer's hosted match table, and COOKIE_OR_IDFA, which means the request has either a targetable cookie or an iOS IDFA.
+      "A String",
+    ],
     "vendorTypes": [ # Requests that allow any of these vendor ids will match. Values are from vendors.txt in the downloadable files section.
       "A String",
     ],
@@ -589,6 +609,12 @@
           "type": "A String", # The type of the placement.
         },
       ],
+      "dimensions": [ # Requests which allow one of these (width, height) pairs will match. All pairs must be supported ad dimensions.
+        {
+          "width": "A String", # Width in pixels.
+          "height": "A String", # Height in pixels.
+        },
+      ],
       "billingId": "A String", # The id for billing purposes, provided for reference. Leave this field blank for insert requests; the id will be generated automatically.
       "geoCriteriaIds": [ # Requests containing any of these geo criteria ids will match.
         "A String",
@@ -600,16 +626,14 @@
         "A String",
       ],
       "isActive": True or False, # Whether this config is active. Required for all requests.
-      "dimensions": [ # Requests which allow one of these (width, height) pairs will match. All pairs must be supported ad dimensions.
-        {
-          "width": "A String", # Width in pixels.
-          "height": "A String", # Height in pixels.
-        },
-      ],
+      "minimumViewabilityDecile": 42, # Requests where the predicted viewability is below the specified decile will not match. E.g. if the buyer sets this value to 5, requests from slots where the predicted viewability is below 50% will not match. If the predicted viewability is unknown this field will be ignored.
       "kind": "adexchangebuyer#pretargetingConfig", # The kind of the resource, i.e. "adexchangebuyer#pretargetingConfig".
       "supportedCreativeAttributes": [ # Creative attributes should be declared here if all creatives corresponding to this pretargeting configuration have that creative attribute. Values are from pretargetable-creative-attributes.txt in the downloadable files section.
         "A String",
       ],
+      "userIdentifierDataRequired": [ # Requests containing the specified type of user data will match. Possible values are HOSTED_MATCH_DATA, which means the request is cookie-targetable and has a match in the buyer's hosted match table, and COOKIE_OR_IDFA, which means the request has either a targetable cookie or an iOS IDFA.
+        "A String",
+      ],
       "vendorTypes": [ # Requests that allow any of these vendor ids will match. Values are from vendors.txt in the downloadable files section.
         "A String",
       ],
@@ -678,6 +702,12 @@
         "type": "A String", # The type of the placement.
       },
     ],
+    "dimensions": [ # Requests which allow one of these (width, height) pairs will match. All pairs must be supported ad dimensions.
+      {
+        "width": "A String", # Width in pixels.
+        "height": "A String", # Height in pixels.
+      },
+    ],
     "billingId": "A String", # The id for billing purposes, provided for reference. Leave this field blank for insert requests; the id will be generated automatically.
     "geoCriteriaIds": [ # Requests containing any of these geo criteria ids will match.
       "A String",
@@ -689,16 +719,14 @@
       "A String",
     ],
     "isActive": True or False, # Whether this config is active. Required for all requests.
-    "dimensions": [ # Requests which allow one of these (width, height) pairs will match. All pairs must be supported ad dimensions.
-      {
-        "width": "A String", # Width in pixels.
-        "height": "A String", # Height in pixels.
-      },
-    ],
+    "minimumViewabilityDecile": 42, # Requests where the predicted viewability is below the specified decile will not match. E.g. if the buyer sets this value to 5, requests from slots where the predicted viewability is below 50% will not match. If the predicted viewability is unknown this field will be ignored.
     "kind": "adexchangebuyer#pretargetingConfig", # The kind of the resource, i.e. "adexchangebuyer#pretargetingConfig".
     "supportedCreativeAttributes": [ # Creative attributes should be declared here if all creatives corresponding to this pretargeting configuration have that creative attribute. Values are from pretargetable-creative-attributes.txt in the downloadable files section.
       "A String",
     ],
+    "userIdentifierDataRequired": [ # Requests containing the specified type of user data will match. Possible values are HOSTED_MATCH_DATA, which means the request is cookie-targetable and has a match in the buyer's hosted match table, and COOKIE_OR_IDFA, which means the request has either a targetable cookie or an iOS IDFA.
+      "A String",
+    ],
     "vendorTypes": [ # Requests that allow any of these vendor ids will match. Values are from vendors.txt in the downloadable files section.
       "A String",
     ],
@@ -760,6 +788,12 @@
           "type": "A String", # The type of the placement.
         },
       ],
+      "dimensions": [ # Requests which allow one of these (width, height) pairs will match. All pairs must be supported ad dimensions.
+        {
+          "width": "A String", # Width in pixels.
+          "height": "A String", # Height in pixels.
+        },
+      ],
       "billingId": "A String", # The id for billing purposes, provided for reference. Leave this field blank for insert requests; the id will be generated automatically.
       "geoCriteriaIds": [ # Requests containing any of these geo criteria ids will match.
         "A String",
@@ -771,16 +805,14 @@
         "A String",
       ],
       "isActive": True or False, # Whether this config is active. Required for all requests.
-      "dimensions": [ # Requests which allow one of these (width, height) pairs will match. All pairs must be supported ad dimensions.
-        {
-          "width": "A String", # Width in pixels.
-          "height": "A String", # Height in pixels.
-        },
-      ],
+      "minimumViewabilityDecile": 42, # Requests where the predicted viewability is below the specified decile will not match. E.g. if the buyer sets this value to 5, requests from slots where the predicted viewability is below 50% will not match. If the predicted viewability is unknown this field will be ignored.
       "kind": "adexchangebuyer#pretargetingConfig", # The kind of the resource, i.e. "adexchangebuyer#pretargetingConfig".
       "supportedCreativeAttributes": [ # Creative attributes should be declared here if all creatives corresponding to this pretargeting configuration have that creative attribute. Values are from pretargetable-creative-attributes.txt in the downloadable files section.
         "A String",
       ],
+      "userIdentifierDataRequired": [ # Requests containing the specified type of user data will match. Possible values are HOSTED_MATCH_DATA, which means the request is cookie-targetable and has a match in the buyer's hosted match table, and COOKIE_OR_IDFA, which means the request has either a targetable cookie or an iOS IDFA.
+        "A String",
+      ],
       "vendorTypes": [ # Requests that allow any of these vendor ids will match. Values are from vendors.txt in the downloadable files section.
         "A String",
       ],
diff --git a/docs/dyn/adexchangebuyer_v1_4.products.html b/docs/dyn/adexchangebuyer_v1_4.products.html
index 177e228..2229395 100644
--- a/docs/dyn/adexchangebuyer_v1_4.products.html
+++ b/docs/dyn/adexchangebuyer_v1_4.products.html
@@ -318,6 +318,7 @@
     "lastUpdateTimeMs": "A String", # Time of last update in ms. since epoch (readonly)
     "legacyOfferId": "A String", # Optional legacy offer id if this offer is a preferred deal offer.
     "kind": "adexchangebuyer#product", # Identifies what kind of resource this is. Value: the fixed string "adexchangebuyer#product".
+    "marketplacePublisherProfileId": "A String", # Marketplace publisher profile Id. This Id differs from the regular publisher_profile_id in that 1. This is a new id, the old Id will be deprecated in 2017. 2. This id uniquely identifies a publisher profile by itself.
     "name": "A String", # The name for this product as set by the seller. (buyer-readonly)
     "syndicationProduct": "A String", # The syndication product associated with the deal. (readonly, except on create)
     "flightStartTimeMs": "A String", # Inventory availability dates. (times are in ms since epoch) The granularity is generally in the order of seconds. (buyer-readonly)
@@ -564,6 +565,7 @@
         "lastUpdateTimeMs": "A String", # Time of last update in ms. since epoch (readonly)
         "legacyOfferId": "A String", # Optional legacy offer id if this offer is a preferred deal offer.
         "kind": "adexchangebuyer#product", # Identifies what kind of resource this is. Value: the fixed string "adexchangebuyer#product".
+        "marketplacePublisherProfileId": "A String", # Marketplace publisher profile Id. This Id differs from the regular publisher_profile_id in that 1. This is a new id, the old Id will be deprecated in 2017. 2. This id uniquely identifies a publisher profile by itself.
         "name": "A String", # The name for this product as set by the seller. (buyer-readonly)
         "syndicationProduct": "A String", # The syndication product associated with the deal. (readonly, except on create)
         "flightStartTimeMs": "A String", # Inventory availability dates. (times are in ms since epoch) The granularity is generally in the order of seconds. (buyer-readonly)
diff --git a/docs/dyn/adexchangebuyer_v1_4.proposals.html b/docs/dyn/adexchangebuyer_v1_4.proposals.html
index 5dc6e4e..c061cfd 100644
--- a/docs/dyn/adexchangebuyer_v1_4.proposals.html
+++ b/docs/dyn/adexchangebuyer_v1_4.proposals.html
@@ -335,7 +335,7 @@
       propose - 
       proposeAndAccept - 
       unknownAction - 
-      updateFinalized - 
+      updateNonTerms - 
   body: object, The request body. (required)
     The object takes the form of:
 
@@ -577,7 +577,7 @@
       propose - 
       proposeAndAccept - 
       unknownAction - 
-      updateFinalized - 
+      updateNonTerms - 
   body: object, The request body. (required)
     The object takes the form of:
 
diff --git a/docs/dyn/adsense_v1_3.accounts.adunits.html b/docs/dyn/adsense_v1_3.accounts.adunits.html
index 2451880..eeaeb71 100644
--- a/docs/dyn/adsense_v1_3.accounts.adunits.html
+++ b/docs/dyn/adsense_v1_3.accounts.adunits.html
@@ -138,7 +138,7 @@
       "size": "A String", # Size of this ad unit.
     },
     "customStyle": { # Custom style information specific to this ad unit.
-      "corners": "A String", # The style of the corners in the ad.
+      "corners": "A String", # The style of the corners in the ad (deprecated: never populated, ignored).
       "colors": { # The colors which are included in the style. These are represented as six hexadecimal characters, similar to HTML color codes, but without the leading hash.
         "url": "A String", # The color of the ad url.
         "text": "A String", # The color of the ad text.
@@ -224,7 +224,7 @@
           "size": "A String", # Size of this ad unit.
         },
         "customStyle": { # Custom style information specific to this ad unit.
-          "corners": "A String", # The style of the corners in the ad.
+          "corners": "A String", # The style of the corners in the ad (deprecated: never populated, ignored).
           "colors": { # The colors which are included in the style. These are represented as six hexadecimal characters, similar to HTML color codes, but without the leading hash.
             "url": "A String", # The color of the ad url.
             "text": "A String", # The color of the ad text.
diff --git a/docs/dyn/adsense_v1_3.accounts.customchannels.adunits.html b/docs/dyn/adsense_v1_3.accounts.customchannels.adunits.html
index b0bf524..e16c863 100644
--- a/docs/dyn/adsense_v1_3.accounts.customchannels.adunits.html
+++ b/docs/dyn/adsense_v1_3.accounts.customchannels.adunits.html
@@ -133,7 +133,7 @@
           "size": "A String", # Size of this ad unit.
         },
         "customStyle": { # Custom style information specific to this ad unit.
-          "corners": "A String", # The style of the corners in the ad.
+          "corners": "A String", # The style of the corners in the ad (deprecated: never populated, ignored).
           "colors": { # The colors which are included in the style. These are represented as six hexadecimal characters, similar to HTML color codes, but without the leading hash.
             "url": "A String", # The color of the ad url.
             "text": "A String", # The color of the ad text.
diff --git a/docs/dyn/adsense_v1_3.accounts.savedadstyles.html b/docs/dyn/adsense_v1_3.accounts.savedadstyles.html
index 12ccac8..b33d862 100644
--- a/docs/dyn/adsense_v1_3.accounts.savedadstyles.html
+++ b/docs/dyn/adsense_v1_3.accounts.savedadstyles.html
@@ -98,7 +98,7 @@
     {
     "kind": "adsense#savedAdStyle", # Kind of resource this is, in this case adsense#savedAdStyle.
     "adStyle": { # The AdStyle itself.
-      "corners": "A String", # The style of the corners in the ad.
+      "corners": "A String", # The style of the corners in the ad (deprecated: never populated, ignored).
       "colors": { # The colors which are included in the style. These are represented as six hexadecimal characters, similar to HTML color codes, but without the leading hash.
         "url": "A String", # The color of the ad url.
         "text": "A String", # The color of the ad text.
@@ -135,7 +135,7 @@
       {
         "kind": "adsense#savedAdStyle", # Kind of resource this is, in this case adsense#savedAdStyle.
         "adStyle": { # The AdStyle itself.
-          "corners": "A String", # The style of the corners in the ad.
+          "corners": "A String", # The style of the corners in the ad (deprecated: never populated, ignored).
           "colors": { # The colors which are included in the style. These are represented as six hexadecimal characters, similar to HTML color codes, but without the leading hash.
             "url": "A String", # The color of the ad url.
             "text": "A String", # The color of the ad text.
diff --git a/docs/dyn/adsense_v1_3.adunits.html b/docs/dyn/adsense_v1_3.adunits.html
index 010c9ab..13df0d1 100644
--- a/docs/dyn/adsense_v1_3.adunits.html
+++ b/docs/dyn/adsense_v1_3.adunits.html
@@ -137,7 +137,7 @@
       "size": "A String", # Size of this ad unit.
     },
     "customStyle": { # Custom style information specific to this ad unit.
-      "corners": "A String", # The style of the corners in the ad.
+      "corners": "A String", # The style of the corners in the ad (deprecated: never populated, ignored).
       "colors": { # The colors which are included in the style. These are represented as six hexadecimal characters, similar to HTML color codes, but without the leading hash.
         "url": "A String", # The color of the ad url.
         "text": "A String", # The color of the ad text.
@@ -221,7 +221,7 @@
           "size": "A String", # Size of this ad unit.
         },
         "customStyle": { # Custom style information specific to this ad unit.
-          "corners": "A String", # The style of the corners in the ad.
+          "corners": "A String", # The style of the corners in the ad (deprecated: never populated, ignored).
           "colors": { # The colors which are included in the style. These are represented as six hexadecimal characters, similar to HTML color codes, but without the leading hash.
             "url": "A String", # The color of the ad url.
             "text": "A String", # The color of the ad text.
diff --git a/docs/dyn/adsense_v1_3.customchannels.adunits.html b/docs/dyn/adsense_v1_3.customchannels.adunits.html
index 973aeb2..73bd337 100644
--- a/docs/dyn/adsense_v1_3.customchannels.adunits.html
+++ b/docs/dyn/adsense_v1_3.customchannels.adunits.html
@@ -132,7 +132,7 @@
           "size": "A String", # Size of this ad unit.
         },
         "customStyle": { # Custom style information specific to this ad unit.
-          "corners": "A String", # The style of the corners in the ad.
+          "corners": "A String", # The style of the corners in the ad (deprecated: never populated, ignored).
           "colors": { # The colors which are included in the style. These are represented as six hexadecimal characters, similar to HTML color codes, but without the leading hash.
             "url": "A String", # The color of the ad url.
             "text": "A String", # The color of the ad text.
diff --git a/docs/dyn/adsense_v1_3.savedadstyles.html b/docs/dyn/adsense_v1_3.savedadstyles.html
index 4a663e1..064f2fb 100644
--- a/docs/dyn/adsense_v1_3.savedadstyles.html
+++ b/docs/dyn/adsense_v1_3.savedadstyles.html
@@ -97,7 +97,7 @@
     {
     "kind": "adsense#savedAdStyle", # Kind of resource this is, in this case adsense#savedAdStyle.
     "adStyle": { # The AdStyle itself.
-      "corners": "A String", # The style of the corners in the ad.
+      "corners": "A String", # The style of the corners in the ad (deprecated: never populated, ignored).
       "colors": { # The colors which are included in the style. These are represented as six hexadecimal characters, similar to HTML color codes, but without the leading hash.
         "url": "A String", # The color of the ad url.
         "text": "A String", # The color of the ad text.
@@ -133,7 +133,7 @@
       {
         "kind": "adsense#savedAdStyle", # Kind of resource this is, in this case adsense#savedAdStyle.
         "adStyle": { # The AdStyle itself.
-          "corners": "A String", # The style of the corners in the ad.
+          "corners": "A String", # The style of the corners in the ad (deprecated: never populated, ignored).
           "colors": { # The colors which are included in the style. These are represented as six hexadecimal characters, similar to HTML color codes, but without the leading hash.
             "url": "A String", # The color of the ad url.
             "text": "A String", # The color of the ad text.
diff --git a/docs/dyn/adsense_v1_4.accounts.adunits.html b/docs/dyn/adsense_v1_4.accounts.adunits.html
index b720c12..8ed6b57 100644
--- a/docs/dyn/adsense_v1_4.accounts.adunits.html
+++ b/docs/dyn/adsense_v1_4.accounts.adunits.html
@@ -138,7 +138,7 @@
       "size": "A String", # Size of this ad unit.
     },
     "customStyle": { # Custom style information specific to this ad unit.
-      "corners": "A String", # The style of the corners in the ad.
+      "corners": "A String", # The style of the corners in the ad (deprecated: never populated, ignored).
       "colors": { # The colors which are included in the style. These are represented as six hexadecimal characters, similar to HTML color codes, but without the leading hash.
         "url": "A String", # The color of the ad url.
         "text": "A String", # The color of the ad text.
@@ -224,7 +224,7 @@
           "size": "A String", # Size of this ad unit.
         },
         "customStyle": { # Custom style information specific to this ad unit.
-          "corners": "A String", # The style of the corners in the ad.
+          "corners": "A String", # The style of the corners in the ad (deprecated: never populated, ignored).
           "colors": { # The colors which are included in the style. These are represented as six hexadecimal characters, similar to HTML color codes, but without the leading hash.
             "url": "A String", # The color of the ad url.
             "text": "A String", # The color of the ad text.
diff --git a/docs/dyn/adsense_v1_4.accounts.customchannels.adunits.html b/docs/dyn/adsense_v1_4.accounts.customchannels.adunits.html
index e982c35..ae414ce 100644
--- a/docs/dyn/adsense_v1_4.accounts.customchannels.adunits.html
+++ b/docs/dyn/adsense_v1_4.accounts.customchannels.adunits.html
@@ -133,7 +133,7 @@
           "size": "A String", # Size of this ad unit.
         },
         "customStyle": { # Custom style information specific to this ad unit.
-          "corners": "A String", # The style of the corners in the ad.
+          "corners": "A String", # The style of the corners in the ad (deprecated: never populated, ignored).
           "colors": { # The colors which are included in the style. These are represented as six hexadecimal characters, similar to HTML color codes, but without the leading hash.
             "url": "A String", # The color of the ad url.
             "text": "A String", # The color of the ad text.
diff --git a/docs/dyn/adsense_v1_4.accounts.savedadstyles.html b/docs/dyn/adsense_v1_4.accounts.savedadstyles.html
index 5c7e7fb..dfdb717 100644
--- a/docs/dyn/adsense_v1_4.accounts.savedadstyles.html
+++ b/docs/dyn/adsense_v1_4.accounts.savedadstyles.html
@@ -98,7 +98,7 @@
     {
     "kind": "adsense#savedAdStyle", # Kind of resource this is, in this case adsense#savedAdStyle.
     "adStyle": { # The AdStyle itself.
-      "corners": "A String", # The style of the corners in the ad.
+      "corners": "A String", # The style of the corners in the ad (deprecated: never populated, ignored).
       "colors": { # The colors which are included in the style. These are represented as six hexadecimal characters, similar to HTML color codes, but without the leading hash.
         "url": "A String", # The color of the ad url.
         "text": "A String", # The color of the ad text.
@@ -135,7 +135,7 @@
       {
         "kind": "adsense#savedAdStyle", # Kind of resource this is, in this case adsense#savedAdStyle.
         "adStyle": { # The AdStyle itself.
-          "corners": "A String", # The style of the corners in the ad.
+          "corners": "A String", # The style of the corners in the ad (deprecated: never populated, ignored).
           "colors": { # The colors which are included in the style. These are represented as six hexadecimal characters, similar to HTML color codes, but without the leading hash.
             "url": "A String", # The color of the ad url.
             "text": "A String", # The color of the ad text.
diff --git a/docs/dyn/adsense_v1_4.adunits.html b/docs/dyn/adsense_v1_4.adunits.html
index 8f92a18..1e85bef 100644
--- a/docs/dyn/adsense_v1_4.adunits.html
+++ b/docs/dyn/adsense_v1_4.adunits.html
@@ -137,7 +137,7 @@
       "size": "A String", # Size of this ad unit.
     },
     "customStyle": { # Custom style information specific to this ad unit.
-      "corners": "A String", # The style of the corners in the ad.
+      "corners": "A String", # The style of the corners in the ad (deprecated: never populated, ignored).
       "colors": { # The colors which are included in the style. These are represented as six hexadecimal characters, similar to HTML color codes, but without the leading hash.
         "url": "A String", # The color of the ad url.
         "text": "A String", # The color of the ad text.
@@ -221,7 +221,7 @@
           "size": "A String", # Size of this ad unit.
         },
         "customStyle": { # Custom style information specific to this ad unit.
-          "corners": "A String", # The style of the corners in the ad.
+          "corners": "A String", # The style of the corners in the ad (deprecated: never populated, ignored).
           "colors": { # The colors which are included in the style. These are represented as six hexadecimal characters, similar to HTML color codes, but without the leading hash.
             "url": "A String", # The color of the ad url.
             "text": "A String", # The color of the ad text.
diff --git a/docs/dyn/adsense_v1_4.customchannels.adunits.html b/docs/dyn/adsense_v1_4.customchannels.adunits.html
index 8ad228f..19d3d7d 100644
--- a/docs/dyn/adsense_v1_4.customchannels.adunits.html
+++ b/docs/dyn/adsense_v1_4.customchannels.adunits.html
@@ -132,7 +132,7 @@
           "size": "A String", # Size of this ad unit.
         },
         "customStyle": { # Custom style information specific to this ad unit.
-          "corners": "A String", # The style of the corners in the ad.
+          "corners": "A String", # The style of the corners in the ad (deprecated: never populated, ignored).
           "colors": { # The colors which are included in the style. These are represented as six hexadecimal characters, similar to HTML color codes, but without the leading hash.
             "url": "A String", # The color of the ad url.
             "text": "A String", # The color of the ad text.
diff --git a/docs/dyn/adsense_v1_4.savedadstyles.html b/docs/dyn/adsense_v1_4.savedadstyles.html
index ccc5ff6..194d7fe 100644
--- a/docs/dyn/adsense_v1_4.savedadstyles.html
+++ b/docs/dyn/adsense_v1_4.savedadstyles.html
@@ -97,7 +97,7 @@
     {
     "kind": "adsense#savedAdStyle", # Kind of resource this is, in this case adsense#savedAdStyle.
     "adStyle": { # The AdStyle itself.
-      "corners": "A String", # The style of the corners in the ad.
+      "corners": "A String", # The style of the corners in the ad (deprecated: never populated, ignored).
       "colors": { # The colors which are included in the style. These are represented as six hexadecimal characters, similar to HTML color codes, but without the leading hash.
         "url": "A String", # The color of the ad url.
         "text": "A String", # The color of the ad text.
@@ -133,7 +133,7 @@
       {
         "kind": "adsense#savedAdStyle", # Kind of resource this is, in this case adsense#savedAdStyle.
         "adStyle": { # The AdStyle itself.
-          "corners": "A String", # The style of the corners in the ad.
+          "corners": "A String", # The style of the corners in the ad (deprecated: never populated, ignored).
           "colors": { # The colors which are included in the style. These are represented as six hexadecimal characters, similar to HTML color codes, but without the leading hash.
             "url": "A String", # The color of the ad url.
             "text": "A String", # The color of the ad text.
diff --git a/docs/dyn/adsensehost_v4_1.accounts.adunits.html b/docs/dyn/adsensehost_v4_1.accounts.adunits.html
index a7b0a7e..bbabaf0 100644
--- a/docs/dyn/adsensehost_v4_1.accounts.adunits.html
+++ b/docs/dyn/adsensehost_v4_1.accounts.adunits.html
@@ -138,7 +138,7 @@
         "size": "A String", # Size of this ad unit.
       },
       "customStyle": { # Custom style information specific to this ad unit.
-        "corners": "A String", # The style of the corners in the ad. Possible values are SQUARE, SLIGHTLY_ROUNDED and VERY_ROUNDED.
+        "corners": "A String", # The style of the corners in the ad (deprecated: never populated, ignored).
         "colors": { # The colors included in the style. These are represented as six hexadecimal characters, similar to HTML color codes, but without the leading hash.
           "url": "A String", # The color of the ad url.
           "text": "A String", # The color of the ad text.
@@ -194,7 +194,7 @@
         "size": "A String", # Size of this ad unit.
       },
       "customStyle": { # Custom style information specific to this ad unit.
-        "corners": "A String", # The style of the corners in the ad. Possible values are SQUARE, SLIGHTLY_ROUNDED and VERY_ROUNDED.
+        "corners": "A String", # The style of the corners in the ad (deprecated: never populated, ignored).
         "colors": { # The colors included in the style. These are represented as six hexadecimal characters, similar to HTML color codes, but without the leading hash.
           "url": "A String", # The color of the ad url.
           "text": "A String", # The color of the ad text.
@@ -267,7 +267,7 @@
       "size": "A String", # Size of this ad unit.
     },
     "customStyle": { # Custom style information specific to this ad unit.
-      "corners": "A String", # The style of the corners in the ad. Possible values are SQUARE, SLIGHTLY_ROUNDED and VERY_ROUNDED.
+      "corners": "A String", # The style of the corners in the ad (deprecated: never populated, ignored).
       "colors": { # The colors included in the style. These are represented as six hexadecimal characters, similar to HTML color codes, but without the leading hash.
         "url": "A String", # The color of the ad url.
         "text": "A String", # The color of the ad text.
@@ -314,7 +314,7 @@
         "size": "A String", # Size of this ad unit.
       },
       "customStyle": { # Custom style information specific to this ad unit.
-        "corners": "A String", # The style of the corners in the ad. Possible values are SQUARE, SLIGHTLY_ROUNDED and VERY_ROUNDED.
+        "corners": "A String", # The style of the corners in the ad (deprecated: never populated, ignored).
         "colors": { # The colors included in the style. These are represented as six hexadecimal characters, similar to HTML color codes, but without the leading hash.
           "url": "A String", # The color of the ad url.
           "text": "A String", # The color of the ad text.
@@ -375,7 +375,7 @@
             "size": "A String", # Size of this ad unit.
           },
           "customStyle": { # Custom style information specific to this ad unit.
-            "corners": "A String", # The style of the corners in the ad. Possible values are SQUARE, SLIGHTLY_ROUNDED and VERY_ROUNDED.
+            "corners": "A String", # The style of the corners in the ad (deprecated: never populated, ignored).
             "colors": { # The colors included in the style. These are represented as six hexadecimal characters, similar to HTML color codes, but without the leading hash.
               "url": "A String", # The color of the ad url.
               "text": "A String", # The color of the ad text.
@@ -448,7 +448,7 @@
       "size": "A String", # Size of this ad unit.
     },
     "customStyle": { # Custom style information specific to this ad unit.
-      "corners": "A String", # The style of the corners in the ad. Possible values are SQUARE, SLIGHTLY_ROUNDED and VERY_ROUNDED.
+      "corners": "A String", # The style of the corners in the ad (deprecated: never populated, ignored).
       "colors": { # The colors included in the style. These are represented as six hexadecimal characters, similar to HTML color codes, but without the leading hash.
         "url": "A String", # The color of the ad url.
         "text": "A String", # The color of the ad text.
@@ -495,7 +495,7 @@
         "size": "A String", # Size of this ad unit.
       },
       "customStyle": { # Custom style information specific to this ad unit.
-        "corners": "A String", # The style of the corners in the ad. Possible values are SQUARE, SLIGHTLY_ROUNDED and VERY_ROUNDED.
+        "corners": "A String", # The style of the corners in the ad (deprecated: never populated, ignored).
         "colors": { # The colors included in the style. These are represented as six hexadecimal characters, similar to HTML color codes, but without the leading hash.
           "url": "A String", # The color of the ad url.
           "text": "A String", # The color of the ad text.
@@ -549,7 +549,7 @@
       "size": "A String", # Size of this ad unit.
     },
     "customStyle": { # Custom style information specific to this ad unit.
-      "corners": "A String", # The style of the corners in the ad. Possible values are SQUARE, SLIGHTLY_ROUNDED and VERY_ROUNDED.
+      "corners": "A String", # The style of the corners in the ad (deprecated: never populated, ignored).
       "colors": { # The colors included in the style. These are represented as six hexadecimal characters, similar to HTML color codes, but without the leading hash.
         "url": "A String", # The color of the ad url.
         "text": "A String", # The color of the ad text.
@@ -596,7 +596,7 @@
         "size": "A String", # Size of this ad unit.
       },
       "customStyle": { # Custom style information specific to this ad unit.
-        "corners": "A String", # The style of the corners in the ad. Possible values are SQUARE, SLIGHTLY_ROUNDED and VERY_ROUNDED.
+        "corners": "A String", # The style of the corners in the ad (deprecated: never populated, ignored).
         "colors": { # The colors included in the style. These are represented as six hexadecimal characters, similar to HTML color codes, but without the leading hash.
           "url": "A String", # The color of the ad url.
           "text": "A String", # The color of the ad text.
diff --git a/docs/dyn/analytics_v3.management.uploads.html b/docs/dyn/analytics_v3.management.uploads.html
index 1b63ecc..79d1c8f 100644
--- a/docs/dyn/analytics_v3.management.uploads.html
+++ b/docs/dyn/analytics_v3.management.uploads.html
@@ -84,7 +84,7 @@
   <code><a href="#list">list(accountId, webPropertyId, customDataSourceId, max_results=None, start_index=None)</a></code></p>
 <p class="firstline">List uploads to which the user has access.</p>
 <p class="toc_element">
-  <code><a href="#uploadData">uploadData(accountId, webPropertyId, customDataSourceId, media_body=None)</a></code></p>
+  <code><a href="#uploadData">uploadData(accountId, webPropertyId, customDataSourceId, media_body=None, media_mime_type=None)</a></code></p>
 <p class="firstline">Upload data for a custom data source.</p>
 <h3>Method Details</h3>
 <div class="method">
@@ -169,7 +169,7 @@
 </div>
 
 <div class="method">
-    <code class="details" id="uploadData">uploadData(accountId, webPropertyId, customDataSourceId, media_body=None)</code>
+    <code class="details" id="uploadData">uploadData(accountId, webPropertyId, customDataSourceId, media_body=None, media_mime_type=None)</code>
   <pre>Upload data for a custom data source.
 
 Args:
@@ -177,6 +177,7 @@
   webPropertyId: string, Web property UA-string associated with the upload. (required)
   customDataSourceId: string, Custom data source Id to which the data being uploaded belongs. (required)
   media_body: string, The filename of the media request body, or an instance of a MediaUpload object.
+  media_mime_type: string, The MIME type of the media request body, or an instance of a MediaUpload object.
 
 Returns:
   An object of the form:
diff --git a/docs/dyn/analyticsreporting_v4.reports.html b/docs/dyn/analyticsreporting_v4.reports.html
index f4316be..69f3515 100644
--- a/docs/dyn/analyticsreporting_v4.reports.html
+++ b/docs/dyn/analyticsreporting_v4.reports.html
@@ -823,6 +823,8 @@
             },
           ],
           "rowCount": 42, # Total number of matching rows for this query.
+          "dataLastRefreshed": "A String", # The last time the data in the report was refreshed. All the hits received
+              # before this timestamp are included in the calculation of the report.
           "samplesReadCounts": [ # If the results are
               # [sampled](https://support.google.com/analytics/answer/2637192),
               # this returns the total number of samples read, one entry per date range.
diff --git a/docs/dyn/androidenterprise_v1.enterprises.html b/docs/dyn/androidenterprise_v1.enterprises.html
index 53b5c61..a31348c 100644
--- a/docs/dyn/androidenterprise_v1.enterprises.html
+++ b/docs/dyn/androidenterprise_v1.enterprises.html
@@ -118,7 +118,7 @@
 <p class="firstline">Set the account that will be used to authenticate to the API as the enterprise.</p>
 <p class="toc_element">
   <code><a href="#setStoreLayout">setStoreLayout(enterpriseId, body)</a></code></p>
-<p class="firstline">Sets the store layout for the enterprise.</p>
+<p class="firstline">Sets the store layout for the enterprise. By default, storeLayoutType is set to "basic" and the basic store layout is enabled. The basic layout only contains apps approved by the administrator, and that have been added to the available product set for a user (using the  setAvailableProductSet call). Apps on the page are sorted in order of their product ID value. If you create a custom store layout (by setting storeLayoutType = "custom"), the basic store layout is disabled.</p>
 <p class="toc_element">
   <code><a href="#unenroll">unenroll(enterpriseId)</a></code></p>
 <p class="firstline">Unenrolls an enterprise from the calling EMM.</p>
@@ -170,7 +170,7 @@
 { # Specification for a token used to generate iframes. The token specifies what data the admin is allowed to modify and the URI the iframe is allowed to communiate with.
     "kind": "androidenterprise#administratorWebTokenSpec", # Identifies what kind of resource this is. Value: the fixed string "androidenterprise#administratorWebTokenSpec".
     "parent": "A String", # The URI of the parent frame hosting the iframe. To prevent XSS, the iframe may not be hosted at other URIs. This URI must be https.
-    "permission": [ # The list of permissions the admin is granted within the iframe. The admin will only be allowed to view an iframe if they have all of the permissions associated with it.
+    "permission": [ # The list of permissions the admin is granted within the iframe. The admin will only be allowed to view an iframe if they have all of the permissions associated with it. The only valid value is "approveApps" that will allow the admin to access the iframe in "approve" mode.
       "A String",
     ],
   }
@@ -303,10 +303,11 @@
     "kind": "androidenterprise#serviceAccount", # Identifies what kind of resource this is. Value: the fixed string "androidenterprise#serviceAccount".
     "name": "A String", # The account name of the service account, in the form of an email address. Assigned by the server.
     "key": { # Credentials that can be used to authenticate as a service account. # Credentials that can be used to authenticate as this ServiceAccount.
-      "type": "A String", # The file format of the generated key data.
+      "publicData": "A String", # Public key data for the credentials file. This is an X.509 cert. If you are using the googleCredentials key type, this is identical to the cert that can be retrieved by using the X.509 cert url inside of the credentials file.
       "kind": "androidenterprise#serviceAccountKey", # Identifies what kind of resource this is. Value: the fixed string "androidenterprise#serviceAccountKey".
       "data": "A String", # The body of the private key credentials file, in string format. This is only populated when the ServiceAccountKey is created, and is not stored by Google.
       "id": "A String", # An opaque, unique identifier for this ServiceAccountKey. Assigned by the server.
+      "type": "A String", # The file format of the generated key data.
     },
   }</pre>
 </div>
@@ -328,7 +329,7 @@
         #
         # If there exists at least one page, this field must be set to the ID of a valid page.
     "kind": "androidenterprise#storeLayout", # Identifies what kind of resource this is. Value: the fixed string "androidenterprise#storeLayout".
-    "storeLayoutType": "A String", # Sets a store layout type. If set to "custom", "homepageId" must be specified. If set to "basic", the layout will consist of all approved apps accessible by the user, split in pages of 100 each; in this case, "homepageId" must not be specified. The "basic" setting takes precedence over any existing collections setup for this enterprise (if any). Should the enterprise use collectionViewers for controlling access rights, these will still be respected.
+    "storeLayoutType": "A String", # The store layout type. By default, this value is set to "basic". If set to "custom", "homepageId" must be specified. If set to "basic", the layout will consist of all approved apps accessible by the user, split in pages of 100 each; in this case, "homepageId" must not be specified. The "basic" setting takes precedence over any existing collections setup for this enterprise (if any). Should the enterprise use collectionViewers for controlling access rights, these will still be respected.
   }</pre>
 </div>
 
@@ -508,7 +509,7 @@
 
 <div class="method">
     <code class="details" id="setStoreLayout">setStoreLayout(enterpriseId, body)</code>
-  <pre>Sets the store layout for the enterprise.
+  <pre>Sets the store layout for the enterprise. By default, storeLayoutType is set to "basic" and the basic store layout is enabled. The basic layout only contains apps approved by the administrator, and that have been added to the available product set for a user (using the  setAvailableProductSet call). Apps on the page are sorted in order of their product ID value. If you create a custom store layout (by setting storeLayoutType = "custom"), the basic store layout is disabled.
 
 Args:
   enterpriseId: string, The ID of the enterprise. (required)
@@ -522,7 +523,7 @@
       # 
       # If there exists at least one page, this field must be set to the ID of a valid page.
   "kind": "androidenterprise#storeLayout", # Identifies what kind of resource this is. Value: the fixed string "androidenterprise#storeLayout".
-  "storeLayoutType": "A String", # Sets a store layout type. If set to "custom", "homepageId" must be specified. If set to "basic", the layout will consist of all approved apps accessible by the user, split in pages of 100 each; in this case, "homepageId" must not be specified. The "basic" setting takes precedence over any existing collections setup for this enterprise (if any). Should the enterprise use collectionViewers for controlling access rights, these will still be respected.
+  "storeLayoutType": "A String", # The store layout type. By default, this value is set to "basic". If set to "custom", "homepageId" must be specified. If set to "basic", the layout will consist of all approved apps accessible by the user, split in pages of 100 each; in this case, "homepageId" must not be specified. The "basic" setting takes precedence over any existing collections setup for this enterprise (if any). Should the enterprise use collectionViewers for controlling access rights, these will still be respected.
 }
 
 
@@ -536,7 +537,7 @@
         #
         # If there exists at least one page, this field must be set to the ID of a valid page.
     "kind": "androidenterprise#storeLayout", # Identifies what kind of resource this is. Value: the fixed string "androidenterprise#storeLayout".
-    "storeLayoutType": "A String", # Sets a store layout type. If set to "custom", "homepageId" must be specified. If set to "basic", the layout will consist of all approved apps accessible by the user, split in pages of 100 each; in this case, "homepageId" must not be specified. The "basic" setting takes precedence over any existing collections setup for this enterprise (if any). Should the enterprise use collectionViewers for controlling access rights, these will still be respected.
+    "storeLayoutType": "A String", # The store layout type. By default, this value is set to "basic". If set to "custom", "homepageId" must be specified. If set to "basic", the layout will consist of all approved apps accessible by the user, split in pages of 100 each; in this case, "homepageId" must not be specified. The "basic" setting takes precedence over any existing collections setup for this enterprise (if any). Should the enterprise use collectionViewers for controlling access rights, these will still be respected.
   }</pre>
 </div>
 
diff --git a/docs/dyn/androidenterprise_v1.serviceaccountkeys.html b/docs/dyn/androidenterprise_v1.serviceaccountkeys.html
index 438225f..d1292cf 100644
--- a/docs/dyn/androidenterprise_v1.serviceaccountkeys.html
+++ b/docs/dyn/androidenterprise_v1.serviceaccountkeys.html
@@ -106,10 +106,11 @@
     The object takes the form of:
 
 { # Credentials that can be used to authenticate as a service account.
-  "type": "A String", # The file format of the generated key data.
+  "publicData": "A String", # Public key data for the credentials file. This is an X.509 cert. If you are using the googleCredentials key type, this is identical to the cert that can be retrieved by using the X.509 cert url inside of the credentials file.
   "kind": "androidenterprise#serviceAccountKey", # Identifies what kind of resource this is. Value: the fixed string "androidenterprise#serviceAccountKey".
   "data": "A String", # The body of the private key credentials file, in string format. This is only populated when the ServiceAccountKey is created, and is not stored by Google.
   "id": "A String", # An opaque, unique identifier for this ServiceAccountKey. Assigned by the server.
+  "type": "A String", # The file format of the generated key data.
 }
 
 
@@ -117,10 +118,11 @@
   An object of the form:
 
     { # Credentials that can be used to authenticate as a service account.
-    "type": "A String", # The file format of the generated key data.
+    "publicData": "A String", # Public key data for the credentials file. This is an X.509 cert. If you are using the googleCredentials key type, this is identical to the cert that can be retrieved by using the X.509 cert url inside of the credentials file.
     "kind": "androidenterprise#serviceAccountKey", # Identifies what kind of resource this is. Value: the fixed string "androidenterprise#serviceAccountKey".
     "data": "A String", # The body of the private key credentials file, in string format. This is only populated when the ServiceAccountKey is created, and is not stored by Google.
     "id": "A String", # An opaque, unique identifier for this ServiceAccountKey. Assigned by the server.
+    "type": "A String", # The file format of the generated key data.
   }</pre>
 </div>
 
@@ -137,10 +139,11 @@
     {
     "serviceAccountKey": [ # The service account credentials.
       { # Credentials that can be used to authenticate as a service account.
-        "type": "A String", # The file format of the generated key data.
+        "publicData": "A String", # Public key data for the credentials file. This is an X.509 cert. If you are using the googleCredentials key type, this is identical to the cert that can be retrieved by using the X.509 cert url inside of the credentials file.
         "kind": "androidenterprise#serviceAccountKey", # Identifies what kind of resource this is. Value: the fixed string "androidenterprise#serviceAccountKey".
         "data": "A String", # The body of the private key credentials file, in string format. This is only populated when the ServiceAccountKey is created, and is not stored by Google.
         "id": "A String", # An opaque, unique identifier for this ServiceAccountKey. Assigned by the server.
+        "type": "A String", # The file format of the generated key data.
       },
     ],
   }</pre>
diff --git a/docs/dyn/androidenterprise_v1.users.html b/docs/dyn/androidenterprise_v1.users.html
index 0ea296f..9349c3a 100644
--- a/docs/dyn/androidenterprise_v1.users.html
+++ b/docs/dyn/androidenterprise_v1.users.html
@@ -194,7 +194,7 @@
 
     { # A set of products.
       "kind": "androidenterprise#productSet", # Identifies what kind of resource this is. Value: the fixed string "androidenterprise#productSet".
-      "productSetBehavior": "A String", # The interpretation of this product set. "unknown" should never be sent and ignored if received. "whitelist" means that this product set constitutes a whitelist. "includeAll" means that all products are accessible (the value of the productId field is therefore ignored). If a value is not supplied, it is interpreted to be "whitelist" for backwards compatibility.
+      "productSetBehavior": "A String", # The interpretation of this product set. "unknown" should never be sent and ignored if received. "whitelist" means that this product set constitutes a whitelist. "includeAll" means that all products are accessible, including products that are approved, not approved, and even products where approval has been revoked. If the value is "includeAll", the value of the productId field is therefore ignored. If a value is not supplied, it is interpreted to be "whitelist" for backwards compatibility.
       "productId": [ # The list of product IDs making up the set of products.
         "A String",
       ],
@@ -334,7 +334,7 @@
 
 { # A set of products.
     "kind": "androidenterprise#productSet", # Identifies what kind of resource this is. Value: the fixed string "androidenterprise#productSet".
-    "productSetBehavior": "A String", # The interpretation of this product set. "unknown" should never be sent and ignored if received. "whitelist" means that this product set constitutes a whitelist. "includeAll" means that all products are accessible (the value of the productId field is therefore ignored). If a value is not supplied, it is interpreted to be "whitelist" for backwards compatibility.
+    "productSetBehavior": "A String", # The interpretation of this product set. "unknown" should never be sent and ignored if received. "whitelist" means that this product set constitutes a whitelist. "includeAll" means that all products are accessible, including products that are approved, not approved, and even products where approval has been revoked. If the value is "includeAll", the value of the productId field is therefore ignored. If a value is not supplied, it is interpreted to be "whitelist" for backwards compatibility.
     "productId": [ # The list of product IDs making up the set of products.
       "A String",
     ],
@@ -346,7 +346,7 @@
 
     { # A set of products.
       "kind": "androidenterprise#productSet", # Identifies what kind of resource this is. Value: the fixed string "androidenterprise#productSet".
-      "productSetBehavior": "A String", # The interpretation of this product set. "unknown" should never be sent and ignored if received. "whitelist" means that this product set constitutes a whitelist. "includeAll" means that all products are accessible (the value of the productId field is therefore ignored). If a value is not supplied, it is interpreted to be "whitelist" for backwards compatibility.
+      "productSetBehavior": "A String", # The interpretation of this product set. "unknown" should never be sent and ignored if received. "whitelist" means that this product set constitutes a whitelist. "includeAll" means that all products are accessible, including products that are approved, not approved, and even products where approval has been revoked. If the value is "includeAll", the value of the productId field is therefore ignored. If a value is not supplied, it is interpreted to be "whitelist" for backwards compatibility.
       "productId": [ # The list of product IDs making up the set of products.
         "A String",
       ],
diff --git a/docs/dyn/androidpublisher_v2.edits.apks.html b/docs/dyn/androidpublisher_v2.edits.apks.html
index 636762a..2fd99f0 100644
--- a/docs/dyn/androidpublisher_v2.edits.apks.html
+++ b/docs/dyn/androidpublisher_v2.edits.apks.html
@@ -81,7 +81,7 @@
   <code><a href="#list">list(packageName, editId)</a></code></p>
 <p class="firstline">A description of how to use this function</p>
 <p class="toc_element">
-  <code><a href="#upload">upload(packageName, editId, media_body=None)</a></code></p>
+  <code><a href="#upload">upload(packageName, editId, media_body=None, media_mime_type=None)</a></code></p>
 <p class="firstline">A description of how to use this function</p>
 <h3>Method Details</h3>
 <div class="method">
@@ -186,13 +186,14 @@
 </div>
 
 <div class="method">
-    <code class="details" id="upload">upload(packageName, editId, media_body=None)</code>
+    <code class="details" id="upload">upload(packageName, editId, media_body=None, media_mime_type=None)</code>
   <pre>A description of how to use this function
 
 Args:
   packageName: string, Unique identifier for the Android app that is being updated; for example, "com.spiffygame". (required)
   editId: string, Unique identifier for this edit. (required)
   media_body: string, The filename of the media request body, or an instance of a MediaUpload object.
+  media_mime_type: string, The MIME type of the media request body, or an instance of a MediaUpload object.
 
 Returns:
   An object of the form:
diff --git a/docs/dyn/androidpublisher_v2.edits.deobfuscationfiles.html b/docs/dyn/androidpublisher_v2.edits.deobfuscationfiles.html
index 14e2f10..27b38ae 100644
--- a/docs/dyn/androidpublisher_v2.edits.deobfuscationfiles.html
+++ b/docs/dyn/androidpublisher_v2.edits.deobfuscationfiles.html
@@ -75,11 +75,11 @@
 <h1><a href="androidpublisher_v2.html">Google Play Developer API</a> . <a href="androidpublisher_v2.edits.html">edits</a> . <a href="androidpublisher_v2.edits.deobfuscationfiles.html">deobfuscationfiles</a></h1>
 <h2>Instance Methods</h2>
 <p class="toc_element">
-  <code><a href="#upload">upload(packageName, editId, apkVersionCode, deobfuscationFileType, media_body=None)</a></code></p>
+  <code><a href="#upload">upload(packageName, editId, apkVersionCode, deobfuscationFileType, media_body=None, media_mime_type=None)</a></code></p>
 <p class="firstline">Uploads the deobfuscation file of the specified APK. If a deobfuscation file already exists, it will be replaced.</p>
 <h3>Method Details</h3>
 <div class="method">
-    <code class="details" id="upload">upload(packageName, editId, apkVersionCode, deobfuscationFileType, media_body=None)</code>
+    <code class="details" id="upload">upload(packageName, editId, apkVersionCode, deobfuscationFileType, media_body=None, media_mime_type=None)</code>
   <pre>Uploads the deobfuscation file of the specified APK. If a deobfuscation file already exists, it will be replaced.
 
 Args:
@@ -90,6 +90,7 @@
     Allowed values
       proguard - 
   media_body: string, The filename of the media request body, or an instance of a MediaUpload object.
+  media_mime_type: string, The MIME type of the media request body, or an instance of a MediaUpload object.
 
 Returns:
   An object of the form:
diff --git a/docs/dyn/androidpublisher_v2.edits.expansionfiles.html b/docs/dyn/androidpublisher_v2.edits.expansionfiles.html
index 117b9df..05358d0 100644
--- a/docs/dyn/androidpublisher_v2.edits.expansionfiles.html
+++ b/docs/dyn/androidpublisher_v2.edits.expansionfiles.html
@@ -84,7 +84,7 @@
   <code><a href="#update">update(packageName, editId, apkVersionCode, expansionFileType, body)</a></code></p>
 <p class="firstline">Updates the APK's Expansion File configuration to reference another APK's Expansion Files. To add a new Expansion File use the Upload method.</p>
 <p class="toc_element">
-  <code><a href="#upload">upload(packageName, editId, apkVersionCode, expansionFileType, media_body=None)</a></code></p>
+  <code><a href="#upload">upload(packageName, editId, apkVersionCode, expansionFileType, media_body=None, media_mime_type=None)</a></code></p>
 <p class="firstline">Uploads and attaches a new Expansion File to the APK specified.</p>
 <h3>Method Details</h3>
 <div class="method">
@@ -170,7 +170,7 @@
 </div>
 
 <div class="method">
-    <code class="details" id="upload">upload(packageName, editId, apkVersionCode, expansionFileType, media_body=None)</code>
+    <code class="details" id="upload">upload(packageName, editId, apkVersionCode, expansionFileType, media_body=None, media_mime_type=None)</code>
   <pre>Uploads and attaches a new Expansion File to the APK specified.
 
 Args:
@@ -182,6 +182,7 @@
       main - 
       patch - 
   media_body: string, The filename of the media request body, or an instance of a MediaUpload object.
+  media_mime_type: string, The MIME type of the media request body, or an instance of a MediaUpload object.
 
 Returns:
   An object of the form:
diff --git a/docs/dyn/androidpublisher_v2.edits.images.html b/docs/dyn/androidpublisher_v2.edits.images.html
index 5d4a27f..c4e2557 100644
--- a/docs/dyn/androidpublisher_v2.edits.images.html
+++ b/docs/dyn/androidpublisher_v2.edits.images.html
@@ -84,7 +84,7 @@
   <code><a href="#list">list(packageName, editId, language, imageType)</a></code></p>
 <p class="firstline">Lists all images for the specified language and image type.</p>
 <p class="toc_element">
-  <code><a href="#upload">upload(packageName, editId, language, imageType, media_body=None)</a></code></p>
+  <code><a href="#upload">upload(packageName, editId, language, imageType, media_body=None, media_mime_type=None)</a></code></p>
 <p class="firstline">Uploads a new image and adds it to the list of images for the specified language and image type.</p>
 <h3>Method Details</h3>
 <div class="method">
@@ -179,7 +179,7 @@
 </div>
 
 <div class="method">
-    <code class="details" id="upload">upload(packageName, editId, language, imageType, media_body=None)</code>
+    <code class="details" id="upload">upload(packageName, editId, language, imageType, media_body=None, media_mime_type=None)</code>
   <pre>Uploads a new image and adds it to the list of images for the specified language and image type.
 
 Args:
@@ -198,6 +198,7 @@
       tvScreenshots - 
       wearScreenshots - 
   media_body: string, The filename of the media request body, or an instance of a MediaUpload object.
+  media_mime_type: string, The MIME type of the media request body, or an instance of a MediaUpload object.
 
 Returns:
   An object of the form:
diff --git a/docs/dyn/androidpublisher_v2.purchases.html b/docs/dyn/androidpublisher_v2.purchases.html
index 9acea14..4865e46 100644
--- a/docs/dyn/androidpublisher_v2.purchases.html
+++ b/docs/dyn/androidpublisher_v2.purchases.html
@@ -84,4 +84,9 @@
 </p>
 <p class="firstline">Returns the subscriptions Resource.</p>
 
+<p class="toc_element">
+  <code><a href="androidpublisher_v2.purchases.voidedpurchases.html">voidedpurchases()</a></code>
+</p>
+<p class="firstline">Returns the voidedpurchases Resource.</p>
+
 </body></html>
\ No newline at end of file
diff --git a/docs/dyn/androidpublisher_v2.purchases.voidedpurchases.html b/docs/dyn/androidpublisher_v2.purchases.voidedpurchases.html
new file mode 100644
index 0000000..f24b252
--- /dev/null
+++ b/docs/dyn/androidpublisher_v2.purchases.voidedpurchases.html
@@ -0,0 +1,117 @@
+<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="androidpublisher_v2.html">Google Play Developer API</a> . <a href="androidpublisher_v2.purchases.html">purchases</a> . <a href="androidpublisher_v2.purchases.voidedpurchases.html">voidedpurchases</a></h1>
+<h2>Instance Methods</h2>
+<p class="toc_element">
+  <code><a href="#list">list(packageName, startTime=None, token=None, maxResults=None, startIndex=None, endTime=None)</a></code></p>
+<p class="firstline">Lists the purchases that were cancelled, refunded or charged-back.</p>
+<h3>Method Details</h3>
+<div class="method">
+    <code class="details" id="list">list(packageName, startTime=None, token=None, maxResults=None, startIndex=None, endTime=None)</code>
+  <pre>Lists the purchases that were cancelled, refunded or charged-back.
+
+Args:
+  packageName: string, The package name of the application for which voided purchases need to be returned (for example, 'com.some.thing'). (required)
+  startTime: string, The start time of list window, in milliseconds since the epoch (Jan 1, 1970). If not specified, default to current time - 30 days, which is also the earlies accepted start time. This parameter will be ignored if pagination token is set.
+  token: string, A parameter
+  maxResults: integer, A parameter
+  startIndex: integer, A parameter
+  endTime: string, The end time of list window, in milliseconds since the epoch (Jan 1, 1970). If not specified, default to current time, which is also the latest accepted end time. This parameter will be ignored if pagination token is set.
+
+Returns:
+  An object of the form:
+
+    {
+    "voidedPurchases": [
+      { # A VoidedPurchase resource indicates the purchase was either cancelled/refunded/charged-back.
+        "kind": "androidpublisher#voidedPurchase", # This kind represents a voided purchase object in the androidpublisher service.
+        "voidedTimeMillis": "A String", # The time when the purchase was cancelled/refunded/chargeback, in milliseconds since the epoch (Jan 1, 1970).
+        "purchaseToken": "A String", # The token that was generated when a purchase was made and uniquely identifies a purchase.
+        "purchaseTimeMillis": "A String", # The time the purchase was made, in milliseconds since the epoch (Jan 1, 1970).
+      },
+    ],
+    "tokenPagination": {
+      "nextPageToken": "A String",
+      "previousPageToken": "A String",
+    },
+    "pageInfo": {
+      "totalResults": 42,
+      "startIndex": 42,
+      "resultPerPage": 42,
+    },
+  }</pre>
+</div>
+
+</body></html>
\ No newline at end of file
diff --git a/docs/dyn/androidpublisher_v2.reviews.html b/docs/dyn/androidpublisher_v2.reviews.html
index 0e8d71b..4b64122 100644
--- a/docs/dyn/androidpublisher_v2.reviews.html
+++ b/docs/dyn/androidpublisher_v2.reviews.html
@@ -75,22 +75,23 @@
 <h1><a href="androidpublisher_v2.html">Google Play Developer API</a> . <a href="androidpublisher_v2.reviews.html">reviews</a></h1>
 <h2>Instance Methods</h2>
 <p class="toc_element">
-  <code><a href="#get">get(packageName, reviewId)</a></code></p>
+  <code><a href="#get">get(packageName, reviewId, translationLanguage=None)</a></code></p>
 <p class="firstline">Returns a single review.</p>
 <p class="toc_element">
-  <code><a href="#list">list(packageName, token=None, maxResults=None, startIndex=None)</a></code></p>
+  <code><a href="#list">list(packageName, translationLanguage=None, token=None, maxResults=None, startIndex=None)</a></code></p>
 <p class="firstline">Returns a list of reviews.</p>
 <p class="toc_element">
   <code><a href="#reply">reply(packageName, reviewId, body)</a></code></p>
 <p class="firstline">Reply to a single review, or update an existing reply.</p>
 <h3>Method Details</h3>
 <div class="method">
-    <code class="details" id="get">get(packageName, reviewId)</code>
+    <code class="details" id="get">get(packageName, reviewId, translationLanguage=None)</code>
   <pre>Returns a single review.
 
 Args:
   packageName: string, Unique identifier for the Android app for which we want reviews; for example, "com.spiffygame". (required)
   reviewId: string, A parameter (required)
+  translationLanguage: string, A parameter
 
 Returns:
   An object of the form:
@@ -109,16 +110,32 @@
         },
         "userComment": { # A comment from a user.
           "appVersionCode": 42, # Integer version code of the app as installed at the time the review was written. May be absent.
+          "originalText": "A String", # Untranslated text of the review, in the case where the review has been translated. If the review has not been translated this is left blank.
           "reviewerLanguage": "A String", # Language code for the reviewer. This is taken from the device settings so is not guaranteed to match the language the review is written in. May be absent.
           "lastModified": { # The last time at which this comment was updated.
             "nanos": 42,
             "seconds": "A String",
           },
+          "thumbsUpCount": 42, # Number of users who have given this review a thumbs up
           "starRating": 42, # The star rating associated with the review, from 1 to 5.
           "text": "A String", # The content of the comment, i.e. review body. In some cases users have been able to write a review with separate title and body; in those cases the title and body are concatenated and separated by a tab character.
           "device": "A String", # Codename for the reviewer's device, e.g. klte, flounder. May be absent.
           "androidOsVersion": 42, # Integer Android SDK version of the user's device at the time the review was written, e.g. 23 is Marshmallow. May be absent.
+          "deviceMetadata": { # Some information about the characteristics of the user's device
+            "screenDensityDpi": 42, # Screen density in DPI
+            "screenHeightPx": 42, # Screen height in pixels
+            "cpuModel": "A String", # Device CPU model e.g. "MSM8974"
+            "productName": "A String", # Device model name (e.g. Droid)
+            "nativePlatform": "A String", # Comma separated list of native platforms (e.g. "arm", "arm7")
+            "deviceClass": "A String", # Device class (e.g. tablet)
+            "cpuMake": "A String", # Device CPU make e.g. "Qualcomm"
+            "ramMb": 42, # Device RAM in Megabytes e.g. "2048"
+            "screenWidthPx": 42, # Screen width in pixels
+            "glEsVersion": 42, # OpenGL version
+            "manufacturer": "A String", # Device manufacturer (e.g. Motorola)
+          },
           "appVersionName": "A String", # String version name of the app as installed at the time the review was written. May be absent.
+          "thumbsDownCount": 42, # Number of users who have given this review a thumbs down
         },
       },
     ],
@@ -126,11 +143,12 @@
 </div>
 
 <div class="method">
-    <code class="details" id="list">list(packageName, token=None, maxResults=None, startIndex=None)</code>
+    <code class="details" id="list">list(packageName, translationLanguage=None, token=None, maxResults=None, startIndex=None)</code>
   <pre>Returns a list of reviews.
 
 Args:
   packageName: string, Unique identifier for the Android app for which we want reviews; for example, "com.spiffygame". (required)
+  translationLanguage: string, A parameter
   token: string, A parameter
   maxResults: integer, A parameter
   startIndex: integer, A parameter
@@ -154,16 +172,32 @@
             },
             "userComment": { # A comment from a user.
               "appVersionCode": 42, # Integer version code of the app as installed at the time the review was written. May be absent.
+              "originalText": "A String", # Untranslated text of the review, in the case where the review has been translated. If the review has not been translated this is left blank.
               "reviewerLanguage": "A String", # Language code for the reviewer. This is taken from the device settings so is not guaranteed to match the language the review is written in. May be absent.
               "lastModified": { # The last time at which this comment was updated.
                 "nanos": 42,
                 "seconds": "A String",
               },
+              "thumbsUpCount": 42, # Number of users who have given this review a thumbs up
               "starRating": 42, # The star rating associated with the review, from 1 to 5.
               "text": "A String", # The content of the comment, i.e. review body. In some cases users have been able to write a review with separate title and body; in those cases the title and body are concatenated and separated by a tab character.
               "device": "A String", # Codename for the reviewer's device, e.g. klte, flounder. May be absent.
               "androidOsVersion": 42, # Integer Android SDK version of the user's device at the time the review was written, e.g. 23 is Marshmallow. May be absent.
+              "deviceMetadata": { # Some information about the characteristics of the user's device
+                "screenDensityDpi": 42, # Screen density in DPI
+                "screenHeightPx": 42, # Screen height in pixels
+                "cpuModel": "A String", # Device CPU model e.g. "MSM8974"
+                "productName": "A String", # Device model name (e.g. Droid)
+                "nativePlatform": "A String", # Comma separated list of native platforms (e.g. "arm", "arm7")
+                "deviceClass": "A String", # Device class (e.g. tablet)
+                "cpuMake": "A String", # Device CPU make e.g. "Qualcomm"
+                "ramMb": 42, # Device RAM in Megabytes e.g. "2048"
+                "screenWidthPx": 42, # Screen width in pixels
+                "glEsVersion": 42, # OpenGL version
+                "manufacturer": "A String", # Device manufacturer (e.g. Motorola)
+              },
               "appVersionName": "A String", # String version name of the app as installed at the time the review was written. May be absent.
+              "thumbsDownCount": 42, # Number of users who have given this review a thumbs down
             },
           },
         ],
diff --git a/docs/dyn/appengine_v1.apps.html b/docs/dyn/appengine_v1.apps.html
index 9163837..54b5736 100644
--- a/docs/dyn/appengine_v1.apps.html
+++ b/docs/dyn/appengine_v1.apps.html
@@ -90,70 +90,125 @@
 <p class="firstline">Returns the services Resource.</p>
 
 <p class="toc_element">
+  <code><a href="#create">create(body, x__xgafv=None)</a></code></p>
+<p class="firstline">Creates an App Engine application for a Google Cloud Platform project. This requires a project that excludes an App Engine application. For details about creating a project without an application, see the Google Cloud Resource Manager create project topic (https://cloud.google.com/resource-manager/docs/creating-project).</p>
+<p class="toc_element">
   <code><a href="#get">get(appsId, x__xgafv=None)</a></code></p>
 <p class="firstline">Gets information about an application.</p>
 <p class="toc_element">
   <code><a href="#patch">patch(appsId, body, updateMask=None, x__xgafv=None)</a></code></p>
-<p class="firstline">Updates application parameters.</p>
+<p class="firstline">Updates the specified Application resource. You can update the following fields: auth_domain (https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1/apps#Application.FIELDS.auth_domain) default_cookie_expiration (https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1/apps#Application.FIELDS.default_cookie_expiration)</p>
 <p class="toc_element">
   <code><a href="#repair">repair(appsId, body, x__xgafv=None)</a></code></p>
-<p class="firstline">Recreates the required App Engine features for the application in your project, for example a Cloud Storage bucket or App Engine service account. Use this method if you receive an error message about a missing feature, for example "*Error retrieving the App Engine service account*".</p>
+<p class="firstline">Recreates the required App Engine features for the specified App Engine application, for example a Cloud Storage bucket or App Engine service account. Use this method if you receive an error message about a missing feature, for example, Error retrieving the App Engine service account.</p>
 <h3>Method Details</h3>
 <div class="method">
+    <code class="details" id="create">create(body, x__xgafv=None)</code>
+  <pre>Creates an App Engine application for a Google Cloud Platform project. This requires a project that excludes an App Engine application. For details about creating a project without an application, see the Google Cloud Resource Manager create project topic (https://cloud.google.com/resource-manager/docs/creating-project).
+
+Args:
+  body: object, The request body. (required)
+    The object takes the form of:
+
+{ # An Application resource contains the top-level configuration of an App Engine application.
+    "defaultHostname": "A String", # Hostname used to reach this application, as resolved by App Engine.@OutputOnly
+    "name": "A String", # Full path to the Application resource in the API. Example: apps/myapp.@OutputOnly
+    "codeBucket": "A String", # Google Cloud Storage bucket that can be used for storing files associated with this application. This bucket is associated with the application and can be used by the gcloud deployment commands.@OutputOnly
+    "defaultBucket": "A String", # Google Cloud Storage bucket that can be used by this application to store content.@OutputOnly
+    "dispatchRules": [ # HTTP path dispatch rules for requests to the application that do not explicitly target a service or version. Rules are order-dependent.@OutputOnly
+      { # Rules to match an HTTP request and dispatch that request to a service.
+        "path": "A String", # Pathname within the host. Must start with a "/". A single "*" can be included at the end of the path. The sum of the lengths of the domain and path may not exceed 100 characters.
+        "domain": "A String", # Domain name to match against. The wildcard "*" is supported if specified before a period: "*.".Defaults to matching all domains: "*".
+        "service": "A String", # Resource ID of a service in this application that should serve the matched request. The service must already exist. Example: default.
+      },
+    ],
+    "defaultCookieExpiration": "A String", # Cookie expiration policy for this application.
+    "locationId": "A String", # Location from which this application will be run. Application instances will run out of data centers in the chosen location, which is also where all of the application's end user content is stored.Defaults to us-central.Options are:us-central - Central USeurope-west - Western Europeus-east1 - Eastern US
+    "authDomain": "A String", # Google Apps authentication domain that controls which users can access this application.Defaults to open access for any Google Account.
+    "id": "A String", # Identifier of the Application resource. This identifier is equivalent to the project ID of the Google Cloud Platform project where you want to deploy your application. Example: myapp.
+  }
+
+  x__xgafv: string, V1 error format.
+
+Returns:
+  An object of the form:
+
+    { # This resource represents a long-running operation that is the result of a network API call.
+    "response": { # The normal response of the operation in case of success. If the original method returns no data on success, such as Delete, the response is google.protobuf.Empty. If the original method is standard Get/Create/Update, the response should be the resource. For other methods, the response should have the type XxxResponse, where Xxx is the original method name. For example, if the original method name is TakeSnapshot(), the inferred response type is TakeSnapshotResponse.
+      "a_key": "", # Properties of the object. Contains field @type with type URL.
+    },
+    "error": { # The Status type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by gRPC (https://github.com/grpc). The error model is designed to be: Simple to use and understand for most users Flexible enough to meet unexpected needsOverviewThe Status message contains three pieces of data: error code, error message, and error details. The error code should be an enum value of google.rpc.Code, but it may accept additional error codes if needed. The error message should be a developer-facing English message that helps developers understand and resolve the error. If a localized user-facing error message is needed, put the localized message in the error details or localize it in the client. The optional error details may contain arbitrary information about the error. There is a predefined set of error detail types in the package google.rpc which can be used for common error conditions.Language mappingThe Status message is the logical representation of the error model, but it is not necessarily the actual wire format. When the Status message is exposed in different client libraries and different wire protocols, it can be mapped differently. For example, it will likely be mapped to some exceptions in Java, but more likely mapped to some error codes in C.Other usesThe error model and the Status message can be used in a variety of environments, either with or without APIs, to provide a consistent developer experience across different environments.Example uses of this error model include: Partial errors. If a service needs to return partial errors to the client, it may embed the Status in the normal response to indicate the partial errors. Workflow errors. A typical workflow has multiple steps. Each step may have a Status message for error reporting purpose. Batch operations. If a client uses batch request and batch response, the Status message should be used directly inside batch response, one for each error sub-response. Asynchronous operations. If an API call embeds asynchronous operation results in its response, the status of those operations should be represented directly using the Status message. Logging. If some API errors are stored in logs, the message Status could be used directly after any stripping needed for security/privacy reasons. # The error result of the operation in case of failure or cancellation.
+      "message": "A String", # A developer-facing error message, which should be in English. Any user-facing error message should be localized and sent in the google.rpc.Status.details field, or localized by the client.
+      "code": 42, # The status code, which should be an enum value of google.rpc.Code.
+      "details": [ # A list of messages that carry the error details. There will be a common set of message types for APIs to use.
+        {
+          "a_key": "", # Properties of the object. Contains field @type with type URL.
+        },
+      ],
+    },
+    "done": True or False, # If the value is false, it means the operation is still in progress. If true, the operation is completed, and either error or response is available.
+    "name": "A String", # The server-assigned name, which is only unique within the same service that originally returns it. If you use the default HTTP mapping, the name should have the format of operations/some/unique/name.
+    "metadata": { # Service-specific metadata associated with the operation. It typically contains progress information and common metadata such as create time. Some services might not provide such metadata. Any method that returns a long-running operation should document the metadata type, if any.
+      "a_key": "", # Properties of the object. Contains field @type with type URL.
+    },
+  }</pre>
+</div>
+
+<div class="method">
     <code class="details" id="get">get(appsId, x__xgafv=None)</code>
   <pre>Gets information about an application.
 
 Args:
-  appsId: string, Part of `name`. Name of the Application resource to get. Example: `apps/myapp`. (required)
+  appsId: string, Part of `name`. Name of the Application resource to get. Example: apps/myapp. (required)
   x__xgafv: string, V1 error format.
 
 Returns:
   An object of the form:
 
     { # An Application resource contains the top-level configuration of an App Engine application.
-      "defaultHostname": "A String", # Hostname used to reach this application, as resolved by App Engine. @OutputOnly
-      "name": "A String", # Full path to the Application resource in the API. Example: `apps/myapp`. @OutputOnly
-      "codeBucket": "A String", # Google Cloud Storage bucket that can be used for storing files associated with this application. This bucket is associated with the application and can be used by the gcloud deployment commands. @OutputOnly
-      "defaultBucket": "A String", # Google Cloud Storage bucket that can be used by this application to store content. @OutputOnly
-      "dispatchRules": [ # HTTP path dispatch rules for requests to the application that do not explicitly target a service or version. Rules are order-dependent. @OutputOnly
+      "defaultHostname": "A String", # Hostname used to reach this application, as resolved by App Engine.@OutputOnly
+      "name": "A String", # Full path to the Application resource in the API. Example: apps/myapp.@OutputOnly
+      "codeBucket": "A String", # Google Cloud Storage bucket that can be used for storing files associated with this application. This bucket is associated with the application and can be used by the gcloud deployment commands.@OutputOnly
+      "defaultBucket": "A String", # Google Cloud Storage bucket that can be used by this application to store content.@OutputOnly
+      "dispatchRules": [ # HTTP path dispatch rules for requests to the application that do not explicitly target a service or version. Rules are order-dependent.@OutputOnly
         { # Rules to match an HTTP request and dispatch that request to a service.
-          "path": "A String", # Pathname within the host. Must start with a "`/`". A single "`*`" can be included at the end of the path. The sum of the lengths of the domain and path may not exceed 100 characters.
-          "domain": "A String", # Domain name to match against. The wildcard "`*`" is supported if specified before a period: "`*.`". Defaults to matching all domains: "`*`".
-          "service": "A String", # Resource ID of a service in this application that should serve the matched request. The service must already exist. Example: `default`.
+          "path": "A String", # Pathname within the host. Must start with a "/". A single "*" can be included at the end of the path. The sum of the lengths of the domain and path may not exceed 100 characters.
+          "domain": "A String", # Domain name to match against. The wildcard "*" is supported if specified before a period: "*.".Defaults to matching all domains: "*".
+          "service": "A String", # Resource ID of a service in this application that should serve the matched request. The service must already exist. Example: default.
         },
       ],
-      "defaultCookieExpiration": "A String", # Cookie expiration policy for this application. @OutputOnly
-      "locationId": "A String", # Location from which this application will be run. Application instances will run out of data centers in the chosen location, which is also where all of the application's end user content is stored. Defaults to `us-central`. Options are: `us-central` - Central US `europe-west` - Western Europe `us-east1` - Eastern US
-      "authDomain": "A String", # Google Apps authentication domain that controls which users can access this application. Defaults to open access for any Google Account.
-      "id": "A String", # Identifier of the Application resource. This identifier is equivalent to the project ID of the Google Cloud Platform project where you want to deploy your application. Example: `myapp`.
+      "defaultCookieExpiration": "A String", # Cookie expiration policy for this application.
+      "locationId": "A String", # Location from which this application will be run. Application instances will run out of data centers in the chosen location, which is also where all of the application's end user content is stored.Defaults to us-central.Options are:us-central - Central USeurope-west - Western Europeus-east1 - Eastern US
+      "authDomain": "A String", # Google Apps authentication domain that controls which users can access this application.Defaults to open access for any Google Account.
+      "id": "A String", # Identifier of the Application resource. This identifier is equivalent to the project ID of the Google Cloud Platform project where you want to deploy your application. Example: myapp.
     }</pre>
 </div>
 
 <div class="method">
     <code class="details" id="patch">patch(appsId, body, updateMask=None, x__xgafv=None)</code>
-  <pre>Updates application parameters.
+  <pre>Updates the specified Application resource. You can update the following fields: auth_domain (https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1/apps#Application.FIELDS.auth_domain) default_cookie_expiration (https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1/apps#Application.FIELDS.default_cookie_expiration)
 
 Args:
-  appsId: string, Part of `name`. Name of the application to update. Example: `apps/myapp`. (required)
+  appsId: string, Part of `name`. Name of the Application resource to update. Example: apps/myapp. (required)
   body: object, The request body. (required)
     The object takes the form of:
 
 { # An Application resource contains the top-level configuration of an App Engine application.
-    "defaultHostname": "A String", # Hostname used to reach this application, as resolved by App Engine. @OutputOnly
-    "name": "A String", # Full path to the Application resource in the API. Example: `apps/myapp`. @OutputOnly
-    "codeBucket": "A String", # Google Cloud Storage bucket that can be used for storing files associated with this application. This bucket is associated with the application and can be used by the gcloud deployment commands. @OutputOnly
-    "defaultBucket": "A String", # Google Cloud Storage bucket that can be used by this application to store content. @OutputOnly
-    "dispatchRules": [ # HTTP path dispatch rules for requests to the application that do not explicitly target a service or version. Rules are order-dependent. @OutputOnly
+    "defaultHostname": "A String", # Hostname used to reach this application, as resolved by App Engine.@OutputOnly
+    "name": "A String", # Full path to the Application resource in the API. Example: apps/myapp.@OutputOnly
+    "codeBucket": "A String", # Google Cloud Storage bucket that can be used for storing files associated with this application. This bucket is associated with the application and can be used by the gcloud deployment commands.@OutputOnly
+    "defaultBucket": "A String", # Google Cloud Storage bucket that can be used by this application to store content.@OutputOnly
+    "dispatchRules": [ # HTTP path dispatch rules for requests to the application that do not explicitly target a service or version. Rules are order-dependent.@OutputOnly
       { # Rules to match an HTTP request and dispatch that request to a service.
-        "path": "A String", # Pathname within the host. Must start with a "`/`". A single "`*`" can be included at the end of the path. The sum of the lengths of the domain and path may not exceed 100 characters.
-        "domain": "A String", # Domain name to match against. The wildcard "`*`" is supported if specified before a period: "`*.`". Defaults to matching all domains: "`*`".
-        "service": "A String", # Resource ID of a service in this application that should serve the matched request. The service must already exist. Example: `default`.
+        "path": "A String", # Pathname within the host. Must start with a "/". A single "*" can be included at the end of the path. The sum of the lengths of the domain and path may not exceed 100 characters.
+        "domain": "A String", # Domain name to match against. The wildcard "*" is supported if specified before a period: "*.".Defaults to matching all domains: "*".
+        "service": "A String", # Resource ID of a service in this application that should serve the matched request. The service must already exist. Example: default.
       },
     ],
-    "defaultCookieExpiration": "A String", # Cookie expiration policy for this application. @OutputOnly
-    "locationId": "A String", # Location from which this application will be run. Application instances will run out of data centers in the chosen location, which is also where all of the application's end user content is stored. Defaults to `us-central`. Options are: `us-central` - Central US `europe-west` - Western Europe `us-east1` - Eastern US
-    "authDomain": "A String", # Google Apps authentication domain that controls which users can access this application. Defaults to open access for any Google Account.
-    "id": "A String", # Identifier of the Application resource. This identifier is equivalent to the project ID of the Google Cloud Platform project where you want to deploy your application. Example: `myapp`.
+    "defaultCookieExpiration": "A String", # Cookie expiration policy for this application.
+    "locationId": "A String", # Location from which this application will be run. Application instances will run out of data centers in the chosen location, which is also where all of the application's end user content is stored.Defaults to us-central.Options are:us-central - Central USeurope-west - Western Europeus-east1 - Eastern US
+    "authDomain": "A String", # Google Apps authentication domain that controls which users can access this application.Defaults to open access for any Google Account.
+    "id": "A String", # Identifier of the Application resource. This identifier is equivalent to the project ID of the Google Cloud Platform project where you want to deploy your application. Example: myapp.
   }
 
   updateMask: string, Standard field mask for the set of fields to be updated.
@@ -163,10 +218,10 @@
   An object of the form:
 
     { # This resource represents a long-running operation that is the result of a network API call.
-    "response": { # The normal response of the operation in case of success. If the original method returns no data on success, such as `Delete`, the response is `google.protobuf.Empty`. If the original method is standard `Get`/`Create`/`Update`, the response should be the resource. For other methods, the response should have the type `XxxResponse`, where `Xxx` is the original method name. For example, if the original method name is `TakeSnapshot()`, the inferred response type is `TakeSnapshotResponse`.
+    "response": { # The normal response of the operation in case of success. If the original method returns no data on success, such as Delete, the response is google.protobuf.Empty. If the original method is standard Get/Create/Update, the response should be the resource. For other methods, the response should have the type XxxResponse, where Xxx is the original method name. For example, if the original method name is TakeSnapshot(), the inferred response type is TakeSnapshotResponse.
       "a_key": "", # Properties of the object. Contains field @type with type URL.
     },
-    "error": { # The `Status` type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by [gRPC](https://github.com/grpc). The error model is designed to be: - Simple to use and understand for most users - Flexible enough to meet unexpected needs # Overview The `Status` message contains three pieces of data: error code, error message, and error details. The error code should be an enum value of google.rpc.Code, but it may accept additional error codes if needed. The error message should be a developer-facing English message that helps developers *understand* and *resolve* the error. If a localized user-facing error message is needed, put the localized message in the error details or localize it in the client. The optional error details may contain arbitrary information about the error. There is a predefined set of error detail types in the package `google.rpc` which can be used for common error conditions. # Language mapping The `Status` message is the logical representation of the error model, but it is not necessarily the actual wire format. When the `Status` message is exposed in different client libraries and different wire protocols, it can be mapped differently. For example, it will likely be mapped to some exceptions in Java, but more likely mapped to some error codes in C. # Other uses The error model and the `Status` message can be used in a variety of environments, either with or without APIs, to provide a consistent developer experience across different environments. Example uses of this error model include: - Partial errors. If a service needs to return partial errors to the client, it may embed the `Status` in the normal response to indicate the partial errors. - Workflow errors. A typical workflow has multiple steps. Each step may have a `Status` message for error reporting purpose. - Batch operations. If a client uses batch request and batch response, the `Status` message should be used directly inside batch response, one for each error sub-response. - Asynchronous operations. If an API call embeds asynchronous operation results in its response, the status of those operations should be represented directly using the `Status` message. - Logging. If some API errors are stored in logs, the message `Status` could be used directly after any stripping needed for security/privacy reasons. # The error result of the operation in case of failure.
+    "error": { # The Status type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by gRPC (https://github.com/grpc). The error model is designed to be: Simple to use and understand for most users Flexible enough to meet unexpected needsOverviewThe Status message contains three pieces of data: error code, error message, and error details. The error code should be an enum value of google.rpc.Code, but it may accept additional error codes if needed. The error message should be a developer-facing English message that helps developers understand and resolve the error. If a localized user-facing error message is needed, put the localized message in the error details or localize it in the client. The optional error details may contain arbitrary information about the error. There is a predefined set of error detail types in the package google.rpc which can be used for common error conditions.Language mappingThe Status message is the logical representation of the error model, but it is not necessarily the actual wire format. When the Status message is exposed in different client libraries and different wire protocols, it can be mapped differently. For example, it will likely be mapped to some exceptions in Java, but more likely mapped to some error codes in C.Other usesThe error model and the Status message can be used in a variety of environments, either with or without APIs, to provide a consistent developer experience across different environments.Example uses of this error model include: Partial errors. If a service needs to return partial errors to the client, it may embed the Status in the normal response to indicate the partial errors. Workflow errors. A typical workflow has multiple steps. Each step may have a Status message for error reporting purpose. Batch operations. If a client uses batch request and batch response, the Status message should be used directly inside batch response, one for each error sub-response. Asynchronous operations. If an API call embeds asynchronous operation results in its response, the status of those operations should be represented directly using the Status message. Logging. If some API errors are stored in logs, the message Status could be used directly after any stripping needed for security/privacy reasons. # The error result of the operation in case of failure or cancellation.
       "message": "A String", # A developer-facing error message, which should be in English. Any user-facing error message should be localized and sent in the google.rpc.Status.details field, or localized by the client.
       "code": 42, # The status code, which should be an enum value of google.rpc.Code.
       "details": [ # A list of messages that carry the error details. There will be a common set of message types for APIs to use.
@@ -175,8 +230,8 @@
         },
       ],
     },
-    "done": True or False, # If the value is `false`, it means the operation is still in progress. If true, the operation is completed, and either `error` or `response` is available.
-    "name": "A String", # The server-assigned name, which is only unique within the same service that originally returns it. If you use the default HTTP mapping, the `name` should have the format of `operations/some/unique/name`.
+    "done": True or False, # If the value is false, it means the operation is still in progress. If true, the operation is completed, and either error or response is available.
+    "name": "A String", # The server-assigned name, which is only unique within the same service that originally returns it. If you use the default HTTP mapping, the name should have the format of operations/some/unique/name.
     "metadata": { # Service-specific metadata associated with the operation. It typically contains progress information and common metadata such as create time. Some services might not provide such metadata. Any method that returns a long-running operation should document the metadata type, if any.
       "a_key": "", # Properties of the object. Contains field @type with type URL.
     },
@@ -185,10 +240,10 @@
 
 <div class="method">
     <code class="details" id="repair">repair(appsId, body, x__xgafv=None)</code>
-  <pre>Recreates the required App Engine features for the application in your project, for example a Cloud Storage bucket or App Engine service account. Use this method if you receive an error message about a missing feature, for example "*Error retrieving the App Engine service account*".
+  <pre>Recreates the required App Engine features for the specified App Engine application, for example a Cloud Storage bucket or App Engine service account. Use this method if you receive an error message about a missing feature, for example, Error retrieving the App Engine service account.
 
 Args:
-  appsId: string, Part of `name`. Name of the application to repair. Example: `apps/myapp` (required)
+  appsId: string, Part of `name`. Name of the application to repair. Example: apps/myapp (required)
   body: object, The request body. (required)
     The object takes the form of:
 
@@ -201,10 +256,10 @@
   An object of the form:
 
     { # This resource represents a long-running operation that is the result of a network API call.
-    "response": { # The normal response of the operation in case of success. If the original method returns no data on success, such as `Delete`, the response is `google.protobuf.Empty`. If the original method is standard `Get`/`Create`/`Update`, the response should be the resource. For other methods, the response should have the type `XxxResponse`, where `Xxx` is the original method name. For example, if the original method name is `TakeSnapshot()`, the inferred response type is `TakeSnapshotResponse`.
+    "response": { # The normal response of the operation in case of success. If the original method returns no data on success, such as Delete, the response is google.protobuf.Empty. If the original method is standard Get/Create/Update, the response should be the resource. For other methods, the response should have the type XxxResponse, where Xxx is the original method name. For example, if the original method name is TakeSnapshot(), the inferred response type is TakeSnapshotResponse.
       "a_key": "", # Properties of the object. Contains field @type with type URL.
     },
-    "error": { # The `Status` type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by [gRPC](https://github.com/grpc). The error model is designed to be: - Simple to use and understand for most users - Flexible enough to meet unexpected needs # Overview The `Status` message contains three pieces of data: error code, error message, and error details. The error code should be an enum value of google.rpc.Code, but it may accept additional error codes if needed. The error message should be a developer-facing English message that helps developers *understand* and *resolve* the error. If a localized user-facing error message is needed, put the localized message in the error details or localize it in the client. The optional error details may contain arbitrary information about the error. There is a predefined set of error detail types in the package `google.rpc` which can be used for common error conditions. # Language mapping The `Status` message is the logical representation of the error model, but it is not necessarily the actual wire format. When the `Status` message is exposed in different client libraries and different wire protocols, it can be mapped differently. For example, it will likely be mapped to some exceptions in Java, but more likely mapped to some error codes in C. # Other uses The error model and the `Status` message can be used in a variety of environments, either with or without APIs, to provide a consistent developer experience across different environments. Example uses of this error model include: - Partial errors. If a service needs to return partial errors to the client, it may embed the `Status` in the normal response to indicate the partial errors. - Workflow errors. A typical workflow has multiple steps. Each step may have a `Status` message for error reporting purpose. - Batch operations. If a client uses batch request and batch response, the `Status` message should be used directly inside batch response, one for each error sub-response. - Asynchronous operations. If an API call embeds asynchronous operation results in its response, the status of those operations should be represented directly using the `Status` message. - Logging. If some API errors are stored in logs, the message `Status` could be used directly after any stripping needed for security/privacy reasons. # The error result of the operation in case of failure.
+    "error": { # The Status type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by gRPC (https://github.com/grpc). The error model is designed to be: Simple to use and understand for most users Flexible enough to meet unexpected needsOverviewThe Status message contains three pieces of data: error code, error message, and error details. The error code should be an enum value of google.rpc.Code, but it may accept additional error codes if needed. The error message should be a developer-facing English message that helps developers understand and resolve the error. If a localized user-facing error message is needed, put the localized message in the error details or localize it in the client. The optional error details may contain arbitrary information about the error. There is a predefined set of error detail types in the package google.rpc which can be used for common error conditions.Language mappingThe Status message is the logical representation of the error model, but it is not necessarily the actual wire format. When the Status message is exposed in different client libraries and different wire protocols, it can be mapped differently. For example, it will likely be mapped to some exceptions in Java, but more likely mapped to some error codes in C.Other usesThe error model and the Status message can be used in a variety of environments, either with or without APIs, to provide a consistent developer experience across different environments.Example uses of this error model include: Partial errors. If a service needs to return partial errors to the client, it may embed the Status in the normal response to indicate the partial errors. Workflow errors. A typical workflow has multiple steps. Each step may have a Status message for error reporting purpose. Batch operations. If a client uses batch request and batch response, the Status message should be used directly inside batch response, one for each error sub-response. Asynchronous operations. If an API call embeds asynchronous operation results in its response, the status of those operations should be represented directly using the Status message. Logging. If some API errors are stored in logs, the message Status could be used directly after any stripping needed for security/privacy reasons. # The error result of the operation in case of failure or cancellation.
       "message": "A String", # A developer-facing error message, which should be in English. Any user-facing error message should be localized and sent in the google.rpc.Status.details field, or localized by the client.
       "code": 42, # The status code, which should be an enum value of google.rpc.Code.
       "details": [ # A list of messages that carry the error details. There will be a common set of message types for APIs to use.
@@ -213,8 +268,8 @@
         },
       ],
     },
-    "done": True or False, # If the value is `false`, it means the operation is still in progress. If true, the operation is completed, and either `error` or `response` is available.
-    "name": "A String", # The server-assigned name, which is only unique within the same service that originally returns it. If you use the default HTTP mapping, the `name` should have the format of `operations/some/unique/name`.
+    "done": True or False, # If the value is false, it means the operation is still in progress. If true, the operation is completed, and either error or response is available.
+    "name": "A String", # The server-assigned name, which is only unique within the same service that originally returns it. If you use the default HTTP mapping, the name should have the format of operations/some/unique/name.
     "metadata": { # Service-specific metadata associated with the operation. It typically contains progress information and common metadata such as create time. Some services might not provide such metadata. Any method that returns a long-running operation should document the metadata type, if any.
       "a_key": "", # Properties of the object. Contains field @type with type URL.
     },
diff --git a/docs/dyn/appengine_v1.apps.locations.html b/docs/dyn/appengine_v1.apps.locations.html
index 50a71c6..4189291 100644
--- a/docs/dyn/appengine_v1.apps.locations.html
+++ b/docs/dyn/appengine_v1.apps.locations.html
@@ -100,8 +100,8 @@
     "labels": { # Cross-service attributes for the location. For example {"cloud.googleapis.com/region": "us-east1"}
       "a_key": "A String",
     },
-    "locationId": "A String", # The canonical id for this location. For example: `"us-east1"`.
-    "name": "A String", # Resource name for the location, which may vary between implementations. For example: `"projects/example-project/locations/us-east1"`
+    "locationId": "A String", # The canonical id for this location. For example: "us-east1".
+    "name": "A String", # Resource name for the location, which may vary between implementations. For example: "projects/example-project/locations/us-east1"
     "metadata": { # Service-specific metadata. For example the available capacity at the given location.
       "a_key": "", # Properties of the object. Contains field @type with type URL.
     },
@@ -129,8 +129,8 @@
         "labels": { # Cross-service attributes for the location. For example {"cloud.googleapis.com/region": "us-east1"}
           "a_key": "A String",
         },
-        "locationId": "A String", # The canonical id for this location. For example: `"us-east1"`.
-        "name": "A String", # Resource name for the location, which may vary between implementations. For example: `"projects/example-project/locations/us-east1"`
+        "locationId": "A String", # The canonical id for this location. For example: "us-east1".
+        "name": "A String", # Resource name for the location, which may vary between implementations. For example: "projects/example-project/locations/us-east1"
         "metadata": { # Service-specific metadata. For example the available capacity at the given location.
           "a_key": "", # Properties of the object. Contains field @type with type URL.
         },
diff --git a/docs/dyn/appengine_v1.apps.operations.html b/docs/dyn/appengine_v1.apps.operations.html
index ef14ed9..0e5e39c 100644
--- a/docs/dyn/appengine_v1.apps.operations.html
+++ b/docs/dyn/appengine_v1.apps.operations.html
@@ -79,7 +79,7 @@
 <p class="firstline">Gets the latest state of a long-running operation. Clients can use this method to poll the operation result at intervals as recommended by the API service.</p>
 <p class="toc_element">
   <code><a href="#list">list(appsId, pageSize=None, filter=None, pageToken=None, x__xgafv=None)</a></code></p>
-<p class="firstline">Lists operations that match the specified filter in the request. If the server doesn't support this method, it returns `UNIMPLEMENTED`. NOTE: the `name` binding below allows API services to override the binding to use different resource name schemes, such as `users/*/operations`.</p>
+<p class="firstline">Lists operations that match the specified filter in the request. If the server doesn't support this method, it returns UNIMPLEMENTED.NOTE: the name binding below allows API services to override the binding to use different resource name schemes, such as users/*/operations.</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>
@@ -97,10 +97,10 @@
   An object of the form:
 
     { # This resource represents a long-running operation that is the result of a network API call.
-    "response": { # The normal response of the operation in case of success. If the original method returns no data on success, such as `Delete`, the response is `google.protobuf.Empty`. If the original method is standard `Get`/`Create`/`Update`, the response should be the resource. For other methods, the response should have the type `XxxResponse`, where `Xxx` is the original method name. For example, if the original method name is `TakeSnapshot()`, the inferred response type is `TakeSnapshotResponse`.
+    "response": { # The normal response of the operation in case of success. If the original method returns no data on success, such as Delete, the response is google.protobuf.Empty. If the original method is standard Get/Create/Update, the response should be the resource. For other methods, the response should have the type XxxResponse, where Xxx is the original method name. For example, if the original method name is TakeSnapshot(), the inferred response type is TakeSnapshotResponse.
       "a_key": "", # Properties of the object. Contains field @type with type URL.
     },
-    "error": { # The `Status` type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by [gRPC](https://github.com/grpc). The error model is designed to be: - Simple to use and understand for most users - Flexible enough to meet unexpected needs # Overview The `Status` message contains three pieces of data: error code, error message, and error details. The error code should be an enum value of google.rpc.Code, but it may accept additional error codes if needed. The error message should be a developer-facing English message that helps developers *understand* and *resolve* the error. If a localized user-facing error message is needed, put the localized message in the error details or localize it in the client. The optional error details may contain arbitrary information about the error. There is a predefined set of error detail types in the package `google.rpc` which can be used for common error conditions. # Language mapping The `Status` message is the logical representation of the error model, but it is not necessarily the actual wire format. When the `Status` message is exposed in different client libraries and different wire protocols, it can be mapped differently. For example, it will likely be mapped to some exceptions in Java, but more likely mapped to some error codes in C. # Other uses The error model and the `Status` message can be used in a variety of environments, either with or without APIs, to provide a consistent developer experience across different environments. Example uses of this error model include: - Partial errors. If a service needs to return partial errors to the client, it may embed the `Status` in the normal response to indicate the partial errors. - Workflow errors. A typical workflow has multiple steps. Each step may have a `Status` message for error reporting purpose. - Batch operations. If a client uses batch request and batch response, the `Status` message should be used directly inside batch response, one for each error sub-response. - Asynchronous operations. If an API call embeds asynchronous operation results in its response, the status of those operations should be represented directly using the `Status` message. - Logging. If some API errors are stored in logs, the message `Status` could be used directly after any stripping needed for security/privacy reasons. # The error result of the operation in case of failure.
+    "error": { # The Status type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by gRPC (https://github.com/grpc). The error model is designed to be: Simple to use and understand for most users Flexible enough to meet unexpected needsOverviewThe Status message contains three pieces of data: error code, error message, and error details. The error code should be an enum value of google.rpc.Code, but it may accept additional error codes if needed. The error message should be a developer-facing English message that helps developers understand and resolve the error. If a localized user-facing error message is needed, put the localized message in the error details or localize it in the client. The optional error details may contain arbitrary information about the error. There is a predefined set of error detail types in the package google.rpc which can be used for common error conditions.Language mappingThe Status message is the logical representation of the error model, but it is not necessarily the actual wire format. When the Status message is exposed in different client libraries and different wire protocols, it can be mapped differently. For example, it will likely be mapped to some exceptions in Java, but more likely mapped to some error codes in C.Other usesThe error model and the Status message can be used in a variety of environments, either with or without APIs, to provide a consistent developer experience across different environments.Example uses of this error model include: Partial errors. If a service needs to return partial errors to the client, it may embed the Status in the normal response to indicate the partial errors. Workflow errors. A typical workflow has multiple steps. Each step may have a Status message for error reporting purpose. Batch operations. If a client uses batch request and batch response, the Status message should be used directly inside batch response, one for each error sub-response. Asynchronous operations. If an API call embeds asynchronous operation results in its response, the status of those operations should be represented directly using the Status message. Logging. If some API errors are stored in logs, the message Status could be used directly after any stripping needed for security/privacy reasons. # The error result of the operation in case of failure or cancellation.
       "message": "A String", # A developer-facing error message, which should be in English. Any user-facing error message should be localized and sent in the google.rpc.Status.details field, or localized by the client.
       "code": 42, # The status code, which should be an enum value of google.rpc.Code.
       "details": [ # A list of messages that carry the error details. There will be a common set of message types for APIs to use.
@@ -109,8 +109,8 @@
         },
       ],
     },
-    "done": True or False, # If the value is `false`, it means the operation is still in progress. If true, the operation is completed, and either `error` or `response` is available.
-    "name": "A String", # The server-assigned name, which is only unique within the same service that originally returns it. If you use the default HTTP mapping, the `name` should have the format of `operations/some/unique/name`.
+    "done": True or False, # If the value is false, it means the operation is still in progress. If true, the operation is completed, and either error or response is available.
+    "name": "A String", # The server-assigned name, which is only unique within the same service that originally returns it. If you use the default HTTP mapping, the name should have the format of operations/some/unique/name.
     "metadata": { # Service-specific metadata associated with the operation. It typically contains progress information and common metadata such as create time. Some services might not provide such metadata. Any method that returns a long-running operation should document the metadata type, if any.
       "a_key": "", # Properties of the object. Contains field @type with type URL.
     },
@@ -119,7 +119,7 @@
 
 <div class="method">
     <code class="details" id="list">list(appsId, pageSize=None, filter=None, pageToken=None, x__xgafv=None)</code>
-  <pre>Lists operations that match the specified filter in the request. If the server doesn't support this method, it returns `UNIMPLEMENTED`. NOTE: the `name` binding below allows API services to override the binding to use different resource name schemes, such as `users/*/operations`.
+  <pre>Lists operations that match the specified filter in the request. If the server doesn't support this method, it returns UNIMPLEMENTED.NOTE: the name binding below allows API services to override the binding to use different resource name schemes, such as users/*/operations.
 
 Args:
   appsId: string, Part of `name`. The name of the operation collection. (required)
@@ -134,10 +134,10 @@
     { # The response message for Operations.ListOperations.
     "operations": [ # A list of operations that matches the specified filter in the request.
       { # This resource represents a long-running operation that is the result of a network API call.
-        "response": { # The normal response of the operation in case of success. If the original method returns no data on success, such as `Delete`, the response is `google.protobuf.Empty`. If the original method is standard `Get`/`Create`/`Update`, the response should be the resource. For other methods, the response should have the type `XxxResponse`, where `Xxx` is the original method name. For example, if the original method name is `TakeSnapshot()`, the inferred response type is `TakeSnapshotResponse`.
+        "response": { # The normal response of the operation in case of success. If the original method returns no data on success, such as Delete, the response is google.protobuf.Empty. If the original method is standard Get/Create/Update, the response should be the resource. For other methods, the response should have the type XxxResponse, where Xxx is the original method name. For example, if the original method name is TakeSnapshot(), the inferred response type is TakeSnapshotResponse.
           "a_key": "", # Properties of the object. Contains field @type with type URL.
         },
-        "error": { # The `Status` type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by [gRPC](https://github.com/grpc). The error model is designed to be: - Simple to use and understand for most users - Flexible enough to meet unexpected needs # Overview The `Status` message contains three pieces of data: error code, error message, and error details. The error code should be an enum value of google.rpc.Code, but it may accept additional error codes if needed. The error message should be a developer-facing English message that helps developers *understand* and *resolve* the error. If a localized user-facing error message is needed, put the localized message in the error details or localize it in the client. The optional error details may contain arbitrary information about the error. There is a predefined set of error detail types in the package `google.rpc` which can be used for common error conditions. # Language mapping The `Status` message is the logical representation of the error model, but it is not necessarily the actual wire format. When the `Status` message is exposed in different client libraries and different wire protocols, it can be mapped differently. For example, it will likely be mapped to some exceptions in Java, but more likely mapped to some error codes in C. # Other uses The error model and the `Status` message can be used in a variety of environments, either with or without APIs, to provide a consistent developer experience across different environments. Example uses of this error model include: - Partial errors. If a service needs to return partial errors to the client, it may embed the `Status` in the normal response to indicate the partial errors. - Workflow errors. A typical workflow has multiple steps. Each step may have a `Status` message for error reporting purpose. - Batch operations. If a client uses batch request and batch response, the `Status` message should be used directly inside batch response, one for each error sub-response. - Asynchronous operations. If an API call embeds asynchronous operation results in its response, the status of those operations should be represented directly using the `Status` message. - Logging. If some API errors are stored in logs, the message `Status` could be used directly after any stripping needed for security/privacy reasons. # The error result of the operation in case of failure.
+        "error": { # The Status type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by gRPC (https://github.com/grpc). The error model is designed to be: Simple to use and understand for most users Flexible enough to meet unexpected needsOverviewThe Status message contains three pieces of data: error code, error message, and error details. The error code should be an enum value of google.rpc.Code, but it may accept additional error codes if needed. The error message should be a developer-facing English message that helps developers understand and resolve the error. If a localized user-facing error message is needed, put the localized message in the error details or localize it in the client. The optional error details may contain arbitrary information about the error. There is a predefined set of error detail types in the package google.rpc which can be used for common error conditions.Language mappingThe Status message is the logical representation of the error model, but it is not necessarily the actual wire format. When the Status message is exposed in different client libraries and different wire protocols, it can be mapped differently. For example, it will likely be mapped to some exceptions in Java, but more likely mapped to some error codes in C.Other usesThe error model and the Status message can be used in a variety of environments, either with or without APIs, to provide a consistent developer experience across different environments.Example uses of this error model include: Partial errors. If a service needs to return partial errors to the client, it may embed the Status in the normal response to indicate the partial errors. Workflow errors. A typical workflow has multiple steps. Each step may have a Status message for error reporting purpose. Batch operations. If a client uses batch request and batch response, the Status message should be used directly inside batch response, one for each error sub-response. Asynchronous operations. If an API call embeds asynchronous operation results in its response, the status of those operations should be represented directly using the Status message. Logging. If some API errors are stored in logs, the message Status could be used directly after any stripping needed for security/privacy reasons. # The error result of the operation in case of failure or cancellation.
           "message": "A String", # A developer-facing error message, which should be in English. Any user-facing error message should be localized and sent in the google.rpc.Status.details field, or localized by the client.
           "code": 42, # The status code, which should be an enum value of google.rpc.Code.
           "details": [ # A list of messages that carry the error details. There will be a common set of message types for APIs to use.
@@ -146,8 +146,8 @@
             },
           ],
         },
-        "done": True or False, # If the value is `false`, it means the operation is still in progress. If true, the operation is completed, and either `error` or `response` is available.
-        "name": "A String", # The server-assigned name, which is only unique within the same service that originally returns it. If you use the default HTTP mapping, the `name` should have the format of `operations/some/unique/name`.
+        "done": True or False, # If the value is false, it means the operation is still in progress. If true, the operation is completed, and either error or response is available.
+        "name": "A String", # The server-assigned name, which is only unique within the same service that originally returns it. If you use the default HTTP mapping, the name should have the format of operations/some/unique/name.
         "metadata": { # Service-specific metadata associated with the operation. It typically contains progress information and common metadata such as create time. Some services might not provide such metadata. Any method that returns a long-running operation should document the metadata type, if any.
           "a_key": "", # Properties of the object. Contains field @type with type URL.
         },
diff --git a/docs/dyn/appengine_v1.apps.services.html b/docs/dyn/appengine_v1.apps.services.html
index cbc826b..ca148e8 100644
--- a/docs/dyn/appengine_v1.apps.services.html
+++ b/docs/dyn/appengine_v1.apps.services.html
@@ -100,7 +100,7 @@
   <pre>Deletes the specified service and all enclosed versions.
 
 Args:
-  appsId: string, Part of `name`. Name of the resource requested. Example: `apps/myapp/services/default`. (required)
+  appsId: string, Part of `name`. Name of the resource requested. Example: apps/myapp/services/default. (required)
   servicesId: string, Part of `name`. See documentation of `appsId`. (required)
   x__xgafv: string, V1 error format.
 
@@ -108,10 +108,10 @@
   An object of the form:
 
     { # This resource represents a long-running operation that is the result of a network API call.
-    "response": { # The normal response of the operation in case of success. If the original method returns no data on success, such as `Delete`, the response is `google.protobuf.Empty`. If the original method is standard `Get`/`Create`/`Update`, the response should be the resource. For other methods, the response should have the type `XxxResponse`, where `Xxx` is the original method name. For example, if the original method name is `TakeSnapshot()`, the inferred response type is `TakeSnapshotResponse`.
+    "response": { # The normal response of the operation in case of success. If the original method returns no data on success, such as Delete, the response is google.protobuf.Empty. If the original method is standard Get/Create/Update, the response should be the resource. For other methods, the response should have the type XxxResponse, where Xxx is the original method name. For example, if the original method name is TakeSnapshot(), the inferred response type is TakeSnapshotResponse.
       "a_key": "", # Properties of the object. Contains field @type with type URL.
     },
-    "error": { # The `Status` type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by [gRPC](https://github.com/grpc). The error model is designed to be: - Simple to use and understand for most users - Flexible enough to meet unexpected needs # Overview The `Status` message contains three pieces of data: error code, error message, and error details. The error code should be an enum value of google.rpc.Code, but it may accept additional error codes if needed. The error message should be a developer-facing English message that helps developers *understand* and *resolve* the error. If a localized user-facing error message is needed, put the localized message in the error details or localize it in the client. The optional error details may contain arbitrary information about the error. There is a predefined set of error detail types in the package `google.rpc` which can be used for common error conditions. # Language mapping The `Status` message is the logical representation of the error model, but it is not necessarily the actual wire format. When the `Status` message is exposed in different client libraries and different wire protocols, it can be mapped differently. For example, it will likely be mapped to some exceptions in Java, but more likely mapped to some error codes in C. # Other uses The error model and the `Status` message can be used in a variety of environments, either with or without APIs, to provide a consistent developer experience across different environments. Example uses of this error model include: - Partial errors. If a service needs to return partial errors to the client, it may embed the `Status` in the normal response to indicate the partial errors. - Workflow errors. A typical workflow has multiple steps. Each step may have a `Status` message for error reporting purpose. - Batch operations. If a client uses batch request and batch response, the `Status` message should be used directly inside batch response, one for each error sub-response. - Asynchronous operations. If an API call embeds asynchronous operation results in its response, the status of those operations should be represented directly using the `Status` message. - Logging. If some API errors are stored in logs, the message `Status` could be used directly after any stripping needed for security/privacy reasons. # The error result of the operation in case of failure.
+    "error": { # The Status type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by gRPC (https://github.com/grpc). The error model is designed to be: Simple to use and understand for most users Flexible enough to meet unexpected needsOverviewThe Status message contains three pieces of data: error code, error message, and error details. The error code should be an enum value of google.rpc.Code, but it may accept additional error codes if needed. The error message should be a developer-facing English message that helps developers understand and resolve the error. If a localized user-facing error message is needed, put the localized message in the error details or localize it in the client. The optional error details may contain arbitrary information about the error. There is a predefined set of error detail types in the package google.rpc which can be used for common error conditions.Language mappingThe Status message is the logical representation of the error model, but it is not necessarily the actual wire format. When the Status message is exposed in different client libraries and different wire protocols, it can be mapped differently. For example, it will likely be mapped to some exceptions in Java, but more likely mapped to some error codes in C.Other usesThe error model and the Status message can be used in a variety of environments, either with or without APIs, to provide a consistent developer experience across different environments.Example uses of this error model include: Partial errors. If a service needs to return partial errors to the client, it may embed the Status in the normal response to indicate the partial errors. Workflow errors. A typical workflow has multiple steps. Each step may have a Status message for error reporting purpose. Batch operations. If a client uses batch request and batch response, the Status message should be used directly inside batch response, one for each error sub-response. Asynchronous operations. If an API call embeds asynchronous operation results in its response, the status of those operations should be represented directly using the Status message. Logging. If some API errors are stored in logs, the message Status could be used directly after any stripping needed for security/privacy reasons. # The error result of the operation in case of failure or cancellation.
       "message": "A String", # A developer-facing error message, which should be in English. Any user-facing error message should be localized and sent in the google.rpc.Status.details field, or localized by the client.
       "code": 42, # The status code, which should be an enum value of google.rpc.Code.
       "details": [ # A list of messages that carry the error details. There will be a common set of message types for APIs to use.
@@ -120,8 +120,8 @@
         },
       ],
     },
-    "done": True or False, # If the value is `false`, it means the operation is still in progress. If true, the operation is completed, and either `error` or `response` is available.
-    "name": "A String", # The server-assigned name, which is only unique within the same service that originally returns it. If you use the default HTTP mapping, the `name` should have the format of `operations/some/unique/name`.
+    "done": True or False, # If the value is false, it means the operation is still in progress. If true, the operation is completed, and either error or response is available.
+    "name": "A String", # The server-assigned name, which is only unique within the same service that originally returns it. If you use the default HTTP mapping, the name should have the format of operations/some/unique/name.
     "metadata": { # Service-specific metadata associated with the operation. It typically contains progress information and common metadata such as create time. Some services might not provide such metadata. Any method that returns a long-running operation should document the metadata type, if any.
       "a_key": "", # Properties of the object. Contains field @type with type URL.
     },
@@ -133,7 +133,7 @@
   <pre>Gets the current configuration of the specified service.
 
 Args:
-  appsId: string, Part of `name`. Name of the resource requested. Example: `apps/myapp/services/default`. (required)
+  appsId: string, Part of `name`. Name of the resource requested. Example: apps/myapp/services/default. (required)
   servicesId: string, Part of `name`. See documentation of `appsId`. (required)
   x__xgafv: string, V1 error format.
 
@@ -147,8 +147,8 @@
           "a_key": 3.14,
         },
       },
-      "name": "A String", # Full path to the Service resource in the API. Example: `apps/myapp/services/default`. @OutputOnly
-      "id": "A String", # Relative name of the service within the application. Example: `default`. @OutputOnly
+      "name": "A String", # Full path to the Service resource in the API. Example: apps/myapp/services/default.@OutputOnly
+      "id": "A String", # Relative name of the service within the application. Example: default.@OutputOnly
     }</pre>
 </div>
 
@@ -157,7 +157,7 @@
   <pre>Lists all the services in the application.
 
 Args:
-  appsId: string, Part of `parent`. Name of the parent Application resource. Example: `apps/myapp`. (required)
+  appsId: string, Part of `parent`. Name of the parent Application resource. Example: apps/myapp. (required)
   pageSize: integer, Maximum results to return per page.
   pageToken: string, Continuation token for fetching the next page of results.
   x__xgafv: string, V1 error format.
@@ -165,7 +165,7 @@
 Returns:
   An object of the form:
 
-    { # Response message for `Services.ListServices`.
+    { # Response message for Services.ListServices.
     "services": [ # The services belonging to the requested application.
       { # A Service resource is a logical component of an application that can share state and communicate in a secure fashion with other services. For example, an application that handles customer requests might include separate services to handle tasks such as backend data analysis or API requests from mobile devices. Each service has a collection of versions that define a specific set of code used to implement the functionality of that service.
           "split": { # Traffic routing configuration for versions within a single service. Traffic splits define how traffic directed to the service is assigned to versions. # Mapping that defines fractional HTTP traffic diversion to different versions within the service.
@@ -174,8 +174,8 @@
               "a_key": 3.14,
             },
           },
-          "name": "A String", # Full path to the Service resource in the API. Example: `apps/myapp/services/default`. @OutputOnly
-          "id": "A String", # Relative name of the service within the application. Example: `default`. @OutputOnly
+          "name": "A String", # Full path to the Service resource in the API. Example: apps/myapp/services/default.@OutputOnly
+          "id": "A String", # Relative name of the service within the application. Example: default.@OutputOnly
         },
     ],
     "nextPageToken": "A String", # Continuation token for fetching the next page of results.
@@ -201,7 +201,7 @@
   <pre>Updates the configuration of the specified service.
 
 Args:
-  appsId: string, Part of `name`. Name of the resource to update. Example: `apps/myapp/services/default`. (required)
+  appsId: string, Part of `name`. Name of the resource to update. Example: apps/myapp/services/default. (required)
   servicesId: string, Part of `name`. See documentation of `appsId`. (required)
   body: object, The request body. (required)
     The object takes the form of:
@@ -213,11 +213,11 @@
         "a_key": 3.14,
       },
     },
-    "name": "A String", # Full path to the Service resource in the API. Example: `apps/myapp/services/default`. @OutputOnly
-    "id": "A String", # Relative name of the service within the application. Example: `default`. @OutputOnly
+    "name": "A String", # Full path to the Service resource in the API. Example: apps/myapp/services/default.@OutputOnly
+    "id": "A String", # Relative name of the service within the application. Example: default.@OutputOnly
   }
 
-  migrateTraffic: boolean, Set to `true` to gradually shift traffic from one version to another single version. By default, traffic is shifted immediately. For gradual traffic migration, the target version must be located within instances that are configured for both [warmup requests](https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1/apps.services.versions#inboundservicetype) and [automatic scaling](https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1/apps.services.versions#automaticscaling). You must specify the [`shardBy`](https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1/apps.services#shardby) field in the Service resource. Gradual traffic migration is not supported in the App Engine flexible environment. For examples, see [Migrating and Splitting Traffic](https://cloud.google.com/appengine/docs/admin-api/migrating-splitting-traffic).
+  migrateTraffic: boolean, Set to true to gradually shift traffic from one version to another single version. By default, traffic is shifted immediately. For gradual traffic migration, the target version must be located within instances that are configured for both warmup requests (https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1/apps.services.versions#inboundservicetype) and automatic scaling (https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1/apps.services.versions#automaticscaling). You must specify the shardBy (https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1/apps.services#shardby) field in the Service resource. Gradual traffic migration is not supported in the App Engine flexible environment. For examples, see Migrating and Splitting Traffic (https://cloud.google.com/appengine/docs/admin-api/migrating-splitting-traffic).
   updateMask: string, Standard field mask for the set of fields to be updated.
   x__xgafv: string, V1 error format.
 
@@ -225,10 +225,10 @@
   An object of the form:
 
     { # This resource represents a long-running operation that is the result of a network API call.
-    "response": { # The normal response of the operation in case of success. If the original method returns no data on success, such as `Delete`, the response is `google.protobuf.Empty`. If the original method is standard `Get`/`Create`/`Update`, the response should be the resource. For other methods, the response should have the type `XxxResponse`, where `Xxx` is the original method name. For example, if the original method name is `TakeSnapshot()`, the inferred response type is `TakeSnapshotResponse`.
+    "response": { # The normal response of the operation in case of success. If the original method returns no data on success, such as Delete, the response is google.protobuf.Empty. If the original method is standard Get/Create/Update, the response should be the resource. For other methods, the response should have the type XxxResponse, where Xxx is the original method name. For example, if the original method name is TakeSnapshot(), the inferred response type is TakeSnapshotResponse.
       "a_key": "", # Properties of the object. Contains field @type with type URL.
     },
-    "error": { # The `Status` type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by [gRPC](https://github.com/grpc). The error model is designed to be: - Simple to use and understand for most users - Flexible enough to meet unexpected needs # Overview The `Status` message contains three pieces of data: error code, error message, and error details. The error code should be an enum value of google.rpc.Code, but it may accept additional error codes if needed. The error message should be a developer-facing English message that helps developers *understand* and *resolve* the error. If a localized user-facing error message is needed, put the localized message in the error details or localize it in the client. The optional error details may contain arbitrary information about the error. There is a predefined set of error detail types in the package `google.rpc` which can be used for common error conditions. # Language mapping The `Status` message is the logical representation of the error model, but it is not necessarily the actual wire format. When the `Status` message is exposed in different client libraries and different wire protocols, it can be mapped differently. For example, it will likely be mapped to some exceptions in Java, but more likely mapped to some error codes in C. # Other uses The error model and the `Status` message can be used in a variety of environments, either with or without APIs, to provide a consistent developer experience across different environments. Example uses of this error model include: - Partial errors. If a service needs to return partial errors to the client, it may embed the `Status` in the normal response to indicate the partial errors. - Workflow errors. A typical workflow has multiple steps. Each step may have a `Status` message for error reporting purpose. - Batch operations. If a client uses batch request and batch response, the `Status` message should be used directly inside batch response, one for each error sub-response. - Asynchronous operations. If an API call embeds asynchronous operation results in its response, the status of those operations should be represented directly using the `Status` message. - Logging. If some API errors are stored in logs, the message `Status` could be used directly after any stripping needed for security/privacy reasons. # The error result of the operation in case of failure.
+    "error": { # The Status type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by gRPC (https://github.com/grpc). The error model is designed to be: Simple to use and understand for most users Flexible enough to meet unexpected needsOverviewThe Status message contains three pieces of data: error code, error message, and error details. The error code should be an enum value of google.rpc.Code, but it may accept additional error codes if needed. The error message should be a developer-facing English message that helps developers understand and resolve the error. If a localized user-facing error message is needed, put the localized message in the error details or localize it in the client. The optional error details may contain arbitrary information about the error. There is a predefined set of error detail types in the package google.rpc which can be used for common error conditions.Language mappingThe Status message is the logical representation of the error model, but it is not necessarily the actual wire format. When the Status message is exposed in different client libraries and different wire protocols, it can be mapped differently. For example, it will likely be mapped to some exceptions in Java, but more likely mapped to some error codes in C.Other usesThe error model and the Status message can be used in a variety of environments, either with or without APIs, to provide a consistent developer experience across different environments.Example uses of this error model include: Partial errors. If a service needs to return partial errors to the client, it may embed the Status in the normal response to indicate the partial errors. Workflow errors. A typical workflow has multiple steps. Each step may have a Status message for error reporting purpose. Batch operations. If a client uses batch request and batch response, the Status message should be used directly inside batch response, one for each error sub-response. Asynchronous operations. If an API call embeds asynchronous operation results in its response, the status of those operations should be represented directly using the Status message. Logging. If some API errors are stored in logs, the message Status could be used directly after any stripping needed for security/privacy reasons. # The error result of the operation in case of failure or cancellation.
       "message": "A String", # A developer-facing error message, which should be in English. Any user-facing error message should be localized and sent in the google.rpc.Status.details field, or localized by the client.
       "code": 42, # The status code, which should be an enum value of google.rpc.Code.
       "details": [ # A list of messages that carry the error details. There will be a common set of message types for APIs to use.
@@ -237,8 +237,8 @@
         },
       ],
     },
-    "done": True or False, # If the value is `false`, it means the operation is still in progress. If true, the operation is completed, and either `error` or `response` is available.
-    "name": "A String", # The server-assigned name, which is only unique within the same service that originally returns it. If you use the default HTTP mapping, the `name` should have the format of `operations/some/unique/name`.
+    "done": True or False, # If the value is false, it means the operation is still in progress. If true, the operation is completed, and either error or response is available.
+    "name": "A String", # The server-assigned name, which is only unique within the same service that originally returns it. If you use the default HTTP mapping, the name should have the format of operations/some/unique/name.
     "metadata": { # Service-specific metadata associated with the operation. It typically contains progress information and common metadata such as create time. Some services might not provide such metadata. Any method that returns a long-running operation should document the metadata type, if any.
       "a_key": "", # Properties of the object. Contains field @type with type URL.
     },
diff --git a/docs/dyn/appengine_v1.apps.services.versions.html b/docs/dyn/appengine_v1.apps.services.versions.html
index 00db1c3..8d15d33 100644
--- a/docs/dyn/appengine_v1.apps.services.versions.html
+++ b/docs/dyn/appengine_v1.apps.services.versions.html
@@ -87,7 +87,7 @@
 <p class="firstline">Deletes an existing Version resource.</p>
 <p class="toc_element">
   <code><a href="#get">get(appsId, servicesId, versionsId, x__xgafv=None, view=None)</a></code></p>
-<p class="firstline">Gets the specified Version resource. By default, only a `BASIC_VIEW` will be returned. Specify the `FULL_VIEW` parameter to get the full resource.</p>
+<p class="firstline">Gets the specified Version resource. By default, only a BASIC_VIEW will be returned. Specify the FULL_VIEW parameter to get the full resource.</p>
 <p class="toc_element">
   <code><a href="#list">list(appsId, servicesId, pageSize=None, x__xgafv=None, pageToken=None, view=None)</a></code></p>
 <p class="firstline">Lists the versions of a service.</p>
@@ -96,19 +96,23 @@
 <p class="firstline">Retrieves the next page of results.</p>
 <p class="toc_element">
   <code><a href="#patch">patch(appsId, servicesId, versionsId, body, updateMask=None, x__xgafv=None)</a></code></p>
-<p class="firstline">Updates the specified Version resource. You can specify the following fields depending on the App Engine environment and type of scaling that the version resource uses: * [`serving_status`](https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1/apps.services.versions#Version.FIELDS.serving_status): For Version resources that use basic scaling, manual scaling, or run in the App Engine flexible environment. * [`instance_class`](https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1/apps.services.versions#Version.FIELDS.instance_class): For Version resources that run in the App Engine standard environment. * [`automatic_scaling.min_idle_instances`](https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1/apps.services.versions#Version.FIELDS.automatic_scaling): For Version resources that use automatic scaling and run in the App Engine standard environment. * [`automatic_scaling.max_idle_instances`](https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1/apps.services.versions#Version.FIELDS.automatic_scaling): For Version resources that use automatic scaling and run in the App Engine standard environment.</p>
+<p class="firstline">Updates the specified Version resource. You can specify the following fields depending on the App Engine environment and type of scaling that the version resource uses: serving_status (https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1/apps.services.versions#Version.FIELDS.serving_status): For Version resources that use basic scaling, manual scaling, or run in the App Engine flexible environment. instance_class (https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1/apps.services.versions#Version.FIELDS.instance_class): For Version resources that run in the App Engine standard environment. automatic_scaling.min_idle_instances (https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1/apps.services.versions#Version.FIELDS.automatic_scaling): For Version resources that use automatic scaling and run in the App Engine standard environment. automatic_scaling.max_idle_instances (https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1/apps.services.versions#Version.FIELDS.automatic_scaling): For Version resources that use automatic scaling and run in the App Engine standard environment.</p>
 <h3>Method Details</h3>
 <div class="method">
     <code class="details" id="create">create(appsId, servicesId, body, x__xgafv=None)</code>
   <pre>Deploys code and resource files to a new version.
 
 Args:
-  appsId: string, Part of `parent`. Name of the parent resource to create this version under. Example: `apps/myapp/services/default`. (required)
+  appsId: string, Part of `parent`. Name of the parent resource to create this version under. Example: apps/myapp/services/default. (required)
   servicesId: string, Part of `parent`. See documentation of `appsId`. (required)
   body: object, The request body. (required)
     The object takes the form of:
 
 { # A Version resource is a specific set of source code and configuration files that are deployed into a service.
+    "endpointsApiService": { # Cloud Endpoints (https://cloud.google.com/endpoints) configuration. The Endpoints API Service provides tooling for serving Open API and gRPC endpoints via an NGINX proxy.The fields here refer to the name and configuration id of a "service" resource in the Service Management API (https://cloud.google.com/service-management/overview). # Cloud Endpoints configuration.If endpoints_api_service is set, the Cloud Endpoints Extensible Service Proxy will be provided to serve the API implemented by the app.
+      "configId": "A String", # Endpoints service configuration id as specified by the Service Management API. For example "2016-09-19r1"
+      "name": "A String", # Endpoints service name which is the name of the "service" resource in the Service Management API. For example "myapi.endpoints.myproject.cloud.goog"
+    },
     "basicScaling": { # A service with basic scaling will create an instance when the application receives a request. The instance will be turned down when the app becomes idle. Basic scaling is ideal for work that is intermittent or driven by user activity. # A service with basic scaling will create an instance when the application receives a request. The instance will be turned down when the app becomes idle. Basic scaling is ideal for work that is intermittent or driven by user activity.
       "idleTimeout": "A String", # Duration of time after the last request that an instance must wait before the instance is shut down.
       "maxInstances": 42, # Maximum number of instances to create for this version.
@@ -117,24 +121,24 @@
       "a_key": "A String",
     },
     "vm": True or False, # Whether to deploy this version in a container on a virtual machine.
-    "instanceClass": "A String", # Instance class that is used to run this version. Valid values are: * AutomaticScaling: `F1`, `F2`, `F4`, `F4_1G` * ManualScaling or BasicScaling: `B1`, `B2`, `B4`, `B8`, `B4_1G` Defaults to `F1` for AutomaticScaling and `B1` for ManualScaling or BasicScaling.
-    "errorHandlers": [ # Custom static error pages. Limited to 10KB per page. Only returned in `GET` requests if `view=FULL` is set.
+    "instanceClass": "A String", # Instance class that is used to run this version. Valid values are: AutomaticScaling: F1, F2, F4, F4_1G ManualScaling or BasicScaling: B1, B2, B4, B8, B4_1GDefaults to F1 for AutomaticScaling and B1 for ManualScaling or BasicScaling.
+    "errorHandlers": [ # Custom static error pages. Limited to 10KB per page.Only returned in GET requests if view=FULL is set.
       { # Custom static error page to be served when an error occurs.
         "errorCode": "A String", # Error condition this handler applies to.
-        "mimeType": "A String", # MIME type of file. Defaults to `text/html`.
+        "mimeType": "A String", # MIME type of file. Defaults to text/html.
         "staticFile": "A String", # Static file content to be served for this error.
       },
     ],
-    "id": "A String", # Relative name of the version within the service. Example: `v1`. Version names can contain only lowercase letters, numbers, or hyphens. Reserved names: "default", "latest", and any name with the prefix "ah-".
-    "apiConfig": { # [Google Cloud Endpoints](https://cloud.google.com/appengine/docs/python/endpoints/) configuration for API handlers. # Serving configuration for [Google Cloud Endpoints](https://cloud.google.com/appengine/docs/python/endpoints/). Only returned in `GET` requests if `view=FULL` is set.
+    "id": "A String", # Relative name of the version within the service. Example: v1. Version names can contain only lowercase letters, numbers, or hyphens. Reserved names: "default", "latest", and any name with the prefix "ah-".
+    "apiConfig": { # Google Cloud Endpoints (https://cloud.google.com/appengine/docs/python/endpoints/) configuration for API handlers. # Serving configuration for Google Cloud Endpoints (https://cloud.google.com/appengine/docs/python/endpoints/).Only returned in GET requests if view=FULL is set.
       "url": "A String", # URL to serve the endpoint at.
       "securityLevel": "A String", # Security (HTTPS) enforcement for this URL.
-      "authFailAction": "A String", # Action to take when users access resources that require authentication. Defaults to `redirect`.
-      "login": "A String", # Level of login required to access this resource. Defaults to `optional`.
+      "authFailAction": "A String", # Action to take when users access resources that require authentication. Defaults to redirect.
+      "login": "A String", # Level of login required to access this resource. Defaults to optional.
       "script": "A String", # Path to the script from the application root directory.
     },
     "threadsafe": True or False, # Whether multiple requests can be dispatched to this version at once.
-    "healthCheck": { # Health checking configuration for VM instances. Unhealthy instances are killed and replaced with new instances. Only applicable for instances in App Engine flexible environment. # Configures health checking for VM instances. Unhealthy instances are stopped and replaced with new instances. Only applicable for VM runtimes. Only returned in `GET` requests if `view=FULL` is set.
+    "healthCheck": { # Health checking configuration for VM instances. Unhealthy instances are killed and replaced with new instances. Only applicable for instances in App Engine flexible environment. # Configures health checking for VM instances. Unhealthy instances are stopped and replaced with new instances. Only applicable for VM runtimes.Only returned in GET requests if view=FULL is set.
       "restartThreshold": 42, # Number of consecutive failed health checks required before an instance is restarted.
       "checkInterval": "A String", # Interval between health checks.
       "unhealthyThreshold": 42, # Number of consecutive failed health checks required before removing traffic.
@@ -143,16 +147,16 @@
       "timeout": "A String", # Time before the health check is considered failed.
       "disableHealthCheck": True or False, # Whether to explicitly disable health checks for this instance.
     },
-    "defaultExpiration": "A String", # Duration that static files should be cached by web proxies and browsers. Only applicable if the corresponding [StaticFilesHandler](https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1/apps.services.versions#staticfileshandler) does not specify its own expiration time. Only returned in `GET` requests if `view=FULL` is set.
-    "versionUrl": "A String", # Serving URL for this version. Example: "https://myversion-dot-myservice-dot-myapp.appspot.com" @OutputOnly
-    "libraries": [ # Configuration for third-party Python runtime libraries that are required by the application. Only returned in `GET` requests if `view=FULL` is set.
+    "defaultExpiration": "A String", # Duration that static files should be cached by web proxies and browsers. Only applicable if the corresponding StaticFilesHandler (https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1/apps.services.versions#staticfileshandler) does not specify its own expiration time.Only returned in GET requests if view=FULL is set.
+    "versionUrl": "A String", # Serving URL for this version. Example: "https://myversion-dot-myservice-dot-myapp.appspot.com"@OutputOnly
+    "libraries": [ # Configuration for third-party Python runtime libraries that are required by the application.Only returned in GET requests if view=FULL is set.
       { # Third-party Python runtime library that is required by the application.
         "version": "A String", # Version of the library to select, or "latest".
         "name": "A String", # Name of the library. Example: "django".
       },
     ],
-    "env": "A String", # App Engine execution environment for this version. Defaults to `standard`.
-    "diskUsageBytes": "A String", # Total size in bytes of all the files that are included in this version and curerntly hosted on the App Engine disk. @OutputOnly
+    "env": "A String", # App Engine execution environment for this version.Defaults to standard.
+    "diskUsageBytes": "A String", # Total size in bytes of all the files that are included in this version and curerntly hosted on the App Engine disk.@OutputOnly
     "automaticScaling": { # Automatic scaling is based on request rate, response latencies, and other application metrics. # Automatic scaling is based on request rate, response latencies, and other application metrics.
       "minPendingLatency": "A String", # Minimum amount of time a request should wait in the pending queue before starting a new instance to handle it.
       "networkUtilization": { # Target scaling by network usage. Only applicable for VM runtimes. # Target scaling by network usage.
@@ -174,35 +178,42 @@
         "targetConcurrentRequests": 42, # Target number of concurrent requests.
         "targetRequestCountPerSecond": 42, # Target requests per second.
       },
-      "coolDownPeriod": "A String", # Amount of time that the [Autoscaler](https://cloud.google.com/compute/docs/autoscaler/) should wait between changes to the number of virtual machines. Only applicable for VM runtimes.
+      "coolDownPeriod": "A String", # Amount of time that the Autoscaler (https://cloud.google.com/compute/docs/autoscaler/) should wait between changes to the number of virtual machines. Only applicable for VM runtimes.
       "maxTotalInstances": 42, # Maximum number of instances that should be started to handle requests.
-      "maxConcurrentRequests": 42, # Number of concurrent requests an automatic scaling instance can accept before the scheduler spawns a new instance. Defaults to a runtime-specific value.
+      "maxConcurrentRequests": 42, # Number of concurrent requests an automatic scaling instance can accept before the scheduler spawns a new instance.Defaults to a runtime-specific value.
       "minTotalInstances": 42, # Minimum number of instances that should be maintained for this version.
       "cpuUtilization": { # Target scaling by CPU usage. # Target scaling by CPU usage.
         "targetUtilization": 3.14, # Target CPU utilization ratio to maintain when scaling. Must be between 0 and 1.
         "aggregationWindowLength": "A String", # Period of time over which CPU utilization is calculated.
       },
     },
-    "envVariables": { # Environment variables available to the application. Only returned in `GET` requests if `view=FULL` is set.
+    "envVariables": { # Environment variables available to the application.Only returned in GET requests if view=FULL is set.
       "a_key": "A String",
     },
     "resources": { # Machine resources for a version. # Machine resources for this version. Only applicable for VM runtimes.
+      "volumes": [ # User specified volumes.
+        { # Volumes mounted within the app container. Only applicable for VM runtimes.
+          "volumeType": "A String", # Underlying volume type, e.g. 'tmpfs'.
+          "name": "A String", # Unique name for the volume.
+          "sizeGb": 3.14, # Volume size in gigabytes.
+        },
+      ],
       "diskGb": 3.14, # Disk size (GB) needed.
       "cpu": 3.14, # Number of CPU cores needed.
       "memoryGb": 3.14, # Memory (GB) needed.
     },
     "manualScaling": { # A service with manual scaling runs continuously, allowing you to perform complex initialization and rely on the state of its memory over time. # A service with manual scaling runs continuously, allowing you to perform complex initialization and rely on the state of its memory over time.
-      "instances": 42, # Number of instances to assign to the service at the start. This number can later be altered by using the [Modules API](https://cloud.google.com/appengine/docs/python/modules/functions) `set_num_instances()` function.
+      "instances": 42, # Number of instances to assign to the service at the start. This number can later be altered by using the Modules API (https://cloud.google.com/appengine/docs/python/modules/functions) set_num_instances() function.
     },
     "inboundServices": [ # Before an application can receive email or XMPP messages, the application must be configured to enable the service.
       "A String",
     ],
-    "createdBy": "A String", # Email address of the user who created this version. @OutputOnly
-    "deployment": { # Code and application artifacts used to deploy a version to App Engine. # Code and application artifacts that make up this version. Only returned in `GET` requests if `view=FULL` is set.
+    "createdBy": "A String", # Email address of the user who created this version.@OutputOnly
+    "deployment": { # Code and application artifacts used to deploy a version to App Engine. # Code and application artifacts that make up this version.Only returned in GET requests if view=FULL is set.
       "files": { # Manifest of the files stored in Google Cloud Storage that are included as part of this version. All files must be readable using the credentials supplied with this call.
         "a_key": { # Single source file that is part of the version to be deployed. Each source file that is deployed must be specified separately.
-          "mimeType": "A String", # The MIME type of the file. Defaults to the value from Google Cloud Storage.
-          "sourceUrl": "A String", # URL source to use to fetch this file. Must be a URL to a resource in Google Cloud Storage in the form 'http(s)://storage.googleapis.com/\/\'.
+          "mimeType": "A String", # The MIME type of the file.Defaults to the value from Google Cloud Storage.
+          "sourceUrl": "A String", # URL source to use to fetch this file. Must be a URL to a resource in Google Cloud Storage in the form 'http(s)://storage.googleapis.com//'.
           "sha1Sum": "A String", # The SHA1 hash of the file, in hex.
         },
       },
@@ -211,29 +222,30 @@
       },
       "zip": { # The zip file information for a zip deployment. # The zip file for this deployment, if this is a zip deployment.
         "filesCount": 42, # An estimate of the number of files in a zip for a zip deployment. If set, must be greater than or equal to the actual number of files. Used for optimizing performance; if not provided, deployment may be slow.
-        "sourceUrl": "A String", # URL of the zip file to deploy from. Must be a URL to a resource in Google Cloud Storage in the form 'http(s)://storage.googleapis.com/\/\'.
+        "sourceUrl": "A String", # URL of the zip file to deploy from. Must be a URL to a resource in Google Cloud Storage in the form 'http(s)://storage.googleapis.com//'.
       },
     },
-    "createTime": "A String", # Time that this version was created. @OutputOnly
+    "createTime": "A String", # Time that this version was created.@OutputOnly
     "network": { # Extra network settings. Only applicable for VM runtimes. # Extra network settings. Only applicable for VM runtimes.
       "instanceTag": "A String", # Tag to apply to the VM instance during creation.
       "forwardedPorts": [ # List of ports, or port pairs, to forward from the virtual machine to the application container.
         "A String",
       ],
-      "name": "A String", # Google Cloud Platform network where the virtual machines are created. Specify the short name, not the resource path. Defaults to `default`.
+      "name": "A String", # Google Cloud Platform network where the virtual machines are created. Specify the short name, not the resource path.Defaults to default.
+      "subnetworkName": "A String", # Google Cloud Platform sub-network where the virtual machines are created. Specify the short name, not the resource path.If a subnetwork name is specified, a network name will also be required unless it is for the default network. If the network the VM instance is being created in is a Legacy network, then the IP address is allocated from the IPv4Range. If the network the VM instance is being created in is an auto Subnet Mode Network, then only network name should be specified (not the subnetwork_name) and the IP address is created from the IPCidrRange of the subnetwork that exists in that zone for that network. If the network the VM instance is being created in is a custom Subnet Mode Network, then the subnetwork_name must be specified and the IP address is created from the IPCidrRange of the subnetwork.If specified, the subnetwork must exist in the same region as the Flex app.
     },
-    "nobuildFilesRegex": "A String", # Files that match this pattern will not be built into this version. Only applicable for Go runtimes. Only returned in `GET` requests if `view=FULL` is set.
-    "name": "A String", # Full path to the Version resource in the API. Example: `apps/myapp/services/default/versions/v1`. @OutputOnly
-    "handlers": [ # An ordered list of URL-matching patterns that should be applied to incoming requests. The first matching URL handles the request and other request handlers are not attempted. Only returned in `GET` requests if `view=FULL` is set.
+    "nobuildFilesRegex": "A String", # Files that match this pattern will not be built into this version. Only applicable for Go runtimes.Only returned in GET requests if view=FULL is set.
+    "name": "A String", # Full path to the Version resource in the API. Example: apps/myapp/services/default/versions/v1.@OutputOnly
+    "handlers": [ # An ordered list of URL-matching patterns that should be applied to incoming requests. The first matching URL handles the request and other request handlers are not attempted.Only returned in GET requests if view=FULL is set.
       { # URL pattern and description of how the URL should be handled. App Engine can handle URLs by executing application code or by serving static files uploaded with the version, such as images, CSS, or JavaScript.
         "securityLevel": "A String", # Security (HTTPS) enforcement for this URL.
-        "authFailAction": "A String", # Action to take when users access resources that require authentication. Defaults to `redirect`.
+        "authFailAction": "A String", # Action to take when users access resources that require authentication. Defaults to redirect.
         "urlRegex": "A String", # URL prefix. Uses regular expression syntax, which means regexp special characters must be escaped, but should not contain groupings. All URLs that begin with this prefix are handled by this handler, using the portion of the URL after the prefix as part of the file path.
         "script": { # Executes a script to handle the request that matches the URL pattern. # Executes a script to handle the request that matches this URL pattern.
           "scriptPath": "A String", # Path to the script from the application root directory.
         },
         "staticFiles": { # Files served directly to the user for a given URL, such as images, CSS stylesheets, or JavaScript source files. Static file handlers describe which files in the application directory are static files, and which URLs serve them. # Returns the contents of a file, such as an image, as the response.
-          "mimeType": "A String", # MIME type used to serve all files served by this handler. Defaults to file-specific MIME types, which are derived from each file's filename extension.
+          "mimeType": "A String", # MIME type used to serve all files served by this handler.Defaults to file-specific MIME types, which are derived from each file's filename extension.
           "applicationReadable": True or False, # Whether files should also be uploaded as code data. By default, files declared in static file handlers are uploaded as static data and are only served to end users; they cannot be read by the application. If enabled, uploads are charged against both your code and static data storage resource quotas.
           "expiration": "A String", # Time a static file served by this handler should be cached by web proxies and browsers.
           "requireMatchingFile": True or False, # Whether this handler should match the request if the file referenced by the handler does not exist.
@@ -247,11 +259,11 @@
           "scriptPath": "A String", # Path to the script from the application root directory.
         },
         "login": "A String", # Level of login required to access this resource.
-        "redirectHttpResponseCode": "A String", # `30x` code to use when performing redirects for the `secure` field. Defaults to `302`.
+        "redirectHttpResponseCode": "A String", # 30x code to use when performing redirects for the secure field. Defaults to 302.
       },
     ],
-    "servingStatus": "A String", # Current serving status of this version. Only the versions with a `SERVING` status create instances and can be billed. `SERVING_STATUS_UNSPECIFIED` is an invalid value. Defaults to `SERVING`.
-    "runtime": "A String", # Desired runtime. Example: `python27`.
+    "servingStatus": "A String", # Current serving status of this version. Only the versions with a SERVING status create instances and can be billed.SERVING_STATUS_UNSPECIFIED is an invalid value. Defaults to SERVING.
+    "runtime": "A String", # Desired runtime. Example: python27.
   }
 
   x__xgafv: string, V1 error format.
@@ -260,10 +272,10 @@
   An object of the form:
 
     { # This resource represents a long-running operation that is the result of a network API call.
-    "response": { # The normal response of the operation in case of success. If the original method returns no data on success, such as `Delete`, the response is `google.protobuf.Empty`. If the original method is standard `Get`/`Create`/`Update`, the response should be the resource. For other methods, the response should have the type `XxxResponse`, where `Xxx` is the original method name. For example, if the original method name is `TakeSnapshot()`, the inferred response type is `TakeSnapshotResponse`.
+    "response": { # The normal response of the operation in case of success. If the original method returns no data on success, such as Delete, the response is google.protobuf.Empty. If the original method is standard Get/Create/Update, the response should be the resource. For other methods, the response should have the type XxxResponse, where Xxx is the original method name. For example, if the original method name is TakeSnapshot(), the inferred response type is TakeSnapshotResponse.
       "a_key": "", # Properties of the object. Contains field @type with type URL.
     },
-    "error": { # The `Status` type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by [gRPC](https://github.com/grpc). The error model is designed to be: - Simple to use and understand for most users - Flexible enough to meet unexpected needs # Overview The `Status` message contains three pieces of data: error code, error message, and error details. The error code should be an enum value of google.rpc.Code, but it may accept additional error codes if needed. The error message should be a developer-facing English message that helps developers *understand* and *resolve* the error. If a localized user-facing error message is needed, put the localized message in the error details or localize it in the client. The optional error details may contain arbitrary information about the error. There is a predefined set of error detail types in the package `google.rpc` which can be used for common error conditions. # Language mapping The `Status` message is the logical representation of the error model, but it is not necessarily the actual wire format. When the `Status` message is exposed in different client libraries and different wire protocols, it can be mapped differently. For example, it will likely be mapped to some exceptions in Java, but more likely mapped to some error codes in C. # Other uses The error model and the `Status` message can be used in a variety of environments, either with or without APIs, to provide a consistent developer experience across different environments. Example uses of this error model include: - Partial errors. If a service needs to return partial errors to the client, it may embed the `Status` in the normal response to indicate the partial errors. - Workflow errors. A typical workflow has multiple steps. Each step may have a `Status` message for error reporting purpose. - Batch operations. If a client uses batch request and batch response, the `Status` message should be used directly inside batch response, one for each error sub-response. - Asynchronous operations. If an API call embeds asynchronous operation results in its response, the status of those operations should be represented directly using the `Status` message. - Logging. If some API errors are stored in logs, the message `Status` could be used directly after any stripping needed for security/privacy reasons. # The error result of the operation in case of failure.
+    "error": { # The Status type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by gRPC (https://github.com/grpc). The error model is designed to be: Simple to use and understand for most users Flexible enough to meet unexpected needsOverviewThe Status message contains three pieces of data: error code, error message, and error details. The error code should be an enum value of google.rpc.Code, but it may accept additional error codes if needed. The error message should be a developer-facing English message that helps developers understand and resolve the error. If a localized user-facing error message is needed, put the localized message in the error details or localize it in the client. The optional error details may contain arbitrary information about the error. There is a predefined set of error detail types in the package google.rpc which can be used for common error conditions.Language mappingThe Status message is the logical representation of the error model, but it is not necessarily the actual wire format. When the Status message is exposed in different client libraries and different wire protocols, it can be mapped differently. For example, it will likely be mapped to some exceptions in Java, but more likely mapped to some error codes in C.Other usesThe error model and the Status message can be used in a variety of environments, either with or without APIs, to provide a consistent developer experience across different environments.Example uses of this error model include: Partial errors. If a service needs to return partial errors to the client, it may embed the Status in the normal response to indicate the partial errors. Workflow errors. A typical workflow has multiple steps. Each step may have a Status message for error reporting purpose. Batch operations. If a client uses batch request and batch response, the Status message should be used directly inside batch response, one for each error sub-response. Asynchronous operations. If an API call embeds asynchronous operation results in its response, the status of those operations should be represented directly using the Status message. Logging. If some API errors are stored in logs, the message Status could be used directly after any stripping needed for security/privacy reasons. # The error result of the operation in case of failure or cancellation.
       "message": "A String", # A developer-facing error message, which should be in English. Any user-facing error message should be localized and sent in the google.rpc.Status.details field, or localized by the client.
       "code": 42, # The status code, which should be an enum value of google.rpc.Code.
       "details": [ # A list of messages that carry the error details. There will be a common set of message types for APIs to use.
@@ -272,8 +284,8 @@
         },
       ],
     },
-    "done": True or False, # If the value is `false`, it means the operation is still in progress. If true, the operation is completed, and either `error` or `response` is available.
-    "name": "A String", # The server-assigned name, which is only unique within the same service that originally returns it. If you use the default HTTP mapping, the `name` should have the format of `operations/some/unique/name`.
+    "done": True or False, # If the value is false, it means the operation is still in progress. If true, the operation is completed, and either error or response is available.
+    "name": "A String", # The server-assigned name, which is only unique within the same service that originally returns it. If you use the default HTTP mapping, the name should have the format of operations/some/unique/name.
     "metadata": { # Service-specific metadata associated with the operation. It typically contains progress information and common metadata such as create time. Some services might not provide such metadata. Any method that returns a long-running operation should document the metadata type, if any.
       "a_key": "", # Properties of the object. Contains field @type with type URL.
     },
@@ -285,7 +297,7 @@
   <pre>Deletes an existing Version resource.
 
 Args:
-  appsId: string, Part of `name`. Name of the resource requested. Example: `apps/myapp/services/default/versions/v1`. (required)
+  appsId: string, Part of `name`. Name of the resource requested. Example: apps/myapp/services/default/versions/v1. (required)
   servicesId: string, Part of `name`. See documentation of `appsId`. (required)
   versionsId: string, Part of `name`. See documentation of `appsId`. (required)
   x__xgafv: string, V1 error format.
@@ -294,10 +306,10 @@
   An object of the form:
 
     { # This resource represents a long-running operation that is the result of a network API call.
-    "response": { # The normal response of the operation in case of success. If the original method returns no data on success, such as `Delete`, the response is `google.protobuf.Empty`. If the original method is standard `Get`/`Create`/`Update`, the response should be the resource. For other methods, the response should have the type `XxxResponse`, where `Xxx` is the original method name. For example, if the original method name is `TakeSnapshot()`, the inferred response type is `TakeSnapshotResponse`.
+    "response": { # The normal response of the operation in case of success. If the original method returns no data on success, such as Delete, the response is google.protobuf.Empty. If the original method is standard Get/Create/Update, the response should be the resource. For other methods, the response should have the type XxxResponse, where Xxx is the original method name. For example, if the original method name is TakeSnapshot(), the inferred response type is TakeSnapshotResponse.
       "a_key": "", # Properties of the object. Contains field @type with type URL.
     },
-    "error": { # The `Status` type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by [gRPC](https://github.com/grpc). The error model is designed to be: - Simple to use and understand for most users - Flexible enough to meet unexpected needs # Overview The `Status` message contains three pieces of data: error code, error message, and error details. The error code should be an enum value of google.rpc.Code, but it may accept additional error codes if needed. The error message should be a developer-facing English message that helps developers *understand* and *resolve* the error. If a localized user-facing error message is needed, put the localized message in the error details or localize it in the client. The optional error details may contain arbitrary information about the error. There is a predefined set of error detail types in the package `google.rpc` which can be used for common error conditions. # Language mapping The `Status` message is the logical representation of the error model, but it is not necessarily the actual wire format. When the `Status` message is exposed in different client libraries and different wire protocols, it can be mapped differently. For example, it will likely be mapped to some exceptions in Java, but more likely mapped to some error codes in C. # Other uses The error model and the `Status` message can be used in a variety of environments, either with or without APIs, to provide a consistent developer experience across different environments. Example uses of this error model include: - Partial errors. If a service needs to return partial errors to the client, it may embed the `Status` in the normal response to indicate the partial errors. - Workflow errors. A typical workflow has multiple steps. Each step may have a `Status` message for error reporting purpose. - Batch operations. If a client uses batch request and batch response, the `Status` message should be used directly inside batch response, one for each error sub-response. - Asynchronous operations. If an API call embeds asynchronous operation results in its response, the status of those operations should be represented directly using the `Status` message. - Logging. If some API errors are stored in logs, the message `Status` could be used directly after any stripping needed for security/privacy reasons. # The error result of the operation in case of failure.
+    "error": { # The Status type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by gRPC (https://github.com/grpc). The error model is designed to be: Simple to use and understand for most users Flexible enough to meet unexpected needsOverviewThe Status message contains three pieces of data: error code, error message, and error details. The error code should be an enum value of google.rpc.Code, but it may accept additional error codes if needed. The error message should be a developer-facing English message that helps developers understand and resolve the error. If a localized user-facing error message is needed, put the localized message in the error details or localize it in the client. The optional error details may contain arbitrary information about the error. There is a predefined set of error detail types in the package google.rpc which can be used for common error conditions.Language mappingThe Status message is the logical representation of the error model, but it is not necessarily the actual wire format. When the Status message is exposed in different client libraries and different wire protocols, it can be mapped differently. For example, it will likely be mapped to some exceptions in Java, but more likely mapped to some error codes in C.Other usesThe error model and the Status message can be used in a variety of environments, either with or without APIs, to provide a consistent developer experience across different environments.Example uses of this error model include: Partial errors. If a service needs to return partial errors to the client, it may embed the Status in the normal response to indicate the partial errors. Workflow errors. A typical workflow has multiple steps. Each step may have a Status message for error reporting purpose. Batch operations. If a client uses batch request and batch response, the Status message should be used directly inside batch response, one for each error sub-response. Asynchronous operations. If an API call embeds asynchronous operation results in its response, the status of those operations should be represented directly using the Status message. Logging. If some API errors are stored in logs, the message Status could be used directly after any stripping needed for security/privacy reasons. # The error result of the operation in case of failure or cancellation.
       "message": "A String", # A developer-facing error message, which should be in English. Any user-facing error message should be localized and sent in the google.rpc.Status.details field, or localized by the client.
       "code": 42, # The status code, which should be an enum value of google.rpc.Code.
       "details": [ # A list of messages that carry the error details. There will be a common set of message types for APIs to use.
@@ -306,8 +318,8 @@
         },
       ],
     },
-    "done": True or False, # If the value is `false`, it means the operation is still in progress. If true, the operation is completed, and either `error` or `response` is available.
-    "name": "A String", # The server-assigned name, which is only unique within the same service that originally returns it. If you use the default HTTP mapping, the `name` should have the format of `operations/some/unique/name`.
+    "done": True or False, # If the value is false, it means the operation is still in progress. If true, the operation is completed, and either error or response is available.
+    "name": "A String", # The server-assigned name, which is only unique within the same service that originally returns it. If you use the default HTTP mapping, the name should have the format of operations/some/unique/name.
     "metadata": { # Service-specific metadata associated with the operation. It typically contains progress information and common metadata such as create time. Some services might not provide such metadata. Any method that returns a long-running operation should document the metadata type, if any.
       "a_key": "", # Properties of the object. Contains field @type with type URL.
     },
@@ -316,19 +328,23 @@
 
 <div class="method">
     <code class="details" id="get">get(appsId, servicesId, versionsId, x__xgafv=None, view=None)</code>
-  <pre>Gets the specified Version resource. By default, only a `BASIC_VIEW` will be returned. Specify the `FULL_VIEW` parameter to get the full resource.
+  <pre>Gets the specified Version resource. By default, only a BASIC_VIEW will be returned. Specify the FULL_VIEW parameter to get the full resource.
 
 Args:
-  appsId: string, Part of `name`. Name of the resource requested. Example: `apps/myapp/services/default/versions/v1`. (required)
+  appsId: string, Part of `name`. Name of the resource requested. Example: apps/myapp/services/default/versions/v1. (required)
   servicesId: string, Part of `name`. See documentation of `appsId`. (required)
   versionsId: string, Part of `name`. See documentation of `appsId`. (required)
   x__xgafv: string, V1 error format.
-  view: string, Controls the set of fields returned in the `Get` response.
+  view: string, Controls the set of fields returned in the Get response.
 
 Returns:
   An object of the form:
 
     { # A Version resource is a specific set of source code and configuration files that are deployed into a service.
+      "endpointsApiService": { # Cloud Endpoints (https://cloud.google.com/endpoints) configuration. The Endpoints API Service provides tooling for serving Open API and gRPC endpoints via an NGINX proxy.The fields here refer to the name and configuration id of a "service" resource in the Service Management API (https://cloud.google.com/service-management/overview). # Cloud Endpoints configuration.If endpoints_api_service is set, the Cloud Endpoints Extensible Service Proxy will be provided to serve the API implemented by the app.
+        "configId": "A String", # Endpoints service configuration id as specified by the Service Management API. For example "2016-09-19r1"
+        "name": "A String", # Endpoints service name which is the name of the "service" resource in the Service Management API. For example "myapi.endpoints.myproject.cloud.goog"
+      },
       "basicScaling": { # A service with basic scaling will create an instance when the application receives a request. The instance will be turned down when the app becomes idle. Basic scaling is ideal for work that is intermittent or driven by user activity. # A service with basic scaling will create an instance when the application receives a request. The instance will be turned down when the app becomes idle. Basic scaling is ideal for work that is intermittent or driven by user activity.
         "idleTimeout": "A String", # Duration of time after the last request that an instance must wait before the instance is shut down.
         "maxInstances": 42, # Maximum number of instances to create for this version.
@@ -337,24 +353,24 @@
         "a_key": "A String",
       },
       "vm": True or False, # Whether to deploy this version in a container on a virtual machine.
-      "instanceClass": "A String", # Instance class that is used to run this version. Valid values are: * AutomaticScaling: `F1`, `F2`, `F4`, `F4_1G` * ManualScaling or BasicScaling: `B1`, `B2`, `B4`, `B8`, `B4_1G` Defaults to `F1` for AutomaticScaling and `B1` for ManualScaling or BasicScaling.
-      "errorHandlers": [ # Custom static error pages. Limited to 10KB per page. Only returned in `GET` requests if `view=FULL` is set.
+      "instanceClass": "A String", # Instance class that is used to run this version. Valid values are: AutomaticScaling: F1, F2, F4, F4_1G ManualScaling or BasicScaling: B1, B2, B4, B8, B4_1GDefaults to F1 for AutomaticScaling and B1 for ManualScaling or BasicScaling.
+      "errorHandlers": [ # Custom static error pages. Limited to 10KB per page.Only returned in GET requests if view=FULL is set.
         { # Custom static error page to be served when an error occurs.
           "errorCode": "A String", # Error condition this handler applies to.
-          "mimeType": "A String", # MIME type of file. Defaults to `text/html`.
+          "mimeType": "A String", # MIME type of file. Defaults to text/html.
           "staticFile": "A String", # Static file content to be served for this error.
         },
       ],
-      "id": "A String", # Relative name of the version within the service. Example: `v1`. Version names can contain only lowercase letters, numbers, or hyphens. Reserved names: "default", "latest", and any name with the prefix "ah-".
-      "apiConfig": { # [Google Cloud Endpoints](https://cloud.google.com/appengine/docs/python/endpoints/) configuration for API handlers. # Serving configuration for [Google Cloud Endpoints](https://cloud.google.com/appengine/docs/python/endpoints/). Only returned in `GET` requests if `view=FULL` is set.
+      "id": "A String", # Relative name of the version within the service. Example: v1. Version names can contain only lowercase letters, numbers, or hyphens. Reserved names: "default", "latest", and any name with the prefix "ah-".
+      "apiConfig": { # Google Cloud Endpoints (https://cloud.google.com/appengine/docs/python/endpoints/) configuration for API handlers. # Serving configuration for Google Cloud Endpoints (https://cloud.google.com/appengine/docs/python/endpoints/).Only returned in GET requests if view=FULL is set.
         "url": "A String", # URL to serve the endpoint at.
         "securityLevel": "A String", # Security (HTTPS) enforcement for this URL.
-        "authFailAction": "A String", # Action to take when users access resources that require authentication. Defaults to `redirect`.
-        "login": "A String", # Level of login required to access this resource. Defaults to `optional`.
+        "authFailAction": "A String", # Action to take when users access resources that require authentication. Defaults to redirect.
+        "login": "A String", # Level of login required to access this resource. Defaults to optional.
         "script": "A String", # Path to the script from the application root directory.
       },
       "threadsafe": True or False, # Whether multiple requests can be dispatched to this version at once.
-      "healthCheck": { # Health checking configuration for VM instances. Unhealthy instances are killed and replaced with new instances. Only applicable for instances in App Engine flexible environment. # Configures health checking for VM instances. Unhealthy instances are stopped and replaced with new instances. Only applicable for VM runtimes. Only returned in `GET` requests if `view=FULL` is set.
+      "healthCheck": { # Health checking configuration for VM instances. Unhealthy instances are killed and replaced with new instances. Only applicable for instances in App Engine flexible environment. # Configures health checking for VM instances. Unhealthy instances are stopped and replaced with new instances. Only applicable for VM runtimes.Only returned in GET requests if view=FULL is set.
         "restartThreshold": 42, # Number of consecutive failed health checks required before an instance is restarted.
         "checkInterval": "A String", # Interval between health checks.
         "unhealthyThreshold": 42, # Number of consecutive failed health checks required before removing traffic.
@@ -363,16 +379,16 @@
         "timeout": "A String", # Time before the health check is considered failed.
         "disableHealthCheck": True or False, # Whether to explicitly disable health checks for this instance.
       },
-      "defaultExpiration": "A String", # Duration that static files should be cached by web proxies and browsers. Only applicable if the corresponding [StaticFilesHandler](https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1/apps.services.versions#staticfileshandler) does not specify its own expiration time. Only returned in `GET` requests if `view=FULL` is set.
-      "versionUrl": "A String", # Serving URL for this version. Example: "https://myversion-dot-myservice-dot-myapp.appspot.com" @OutputOnly
-      "libraries": [ # Configuration for third-party Python runtime libraries that are required by the application. Only returned in `GET` requests if `view=FULL` is set.
+      "defaultExpiration": "A String", # Duration that static files should be cached by web proxies and browsers. Only applicable if the corresponding StaticFilesHandler (https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1/apps.services.versions#staticfileshandler) does not specify its own expiration time.Only returned in GET requests if view=FULL is set.
+      "versionUrl": "A String", # Serving URL for this version. Example: "https://myversion-dot-myservice-dot-myapp.appspot.com"@OutputOnly
+      "libraries": [ # Configuration for third-party Python runtime libraries that are required by the application.Only returned in GET requests if view=FULL is set.
         { # Third-party Python runtime library that is required by the application.
           "version": "A String", # Version of the library to select, or "latest".
           "name": "A String", # Name of the library. Example: "django".
         },
       ],
-      "env": "A String", # App Engine execution environment for this version. Defaults to `standard`.
-      "diskUsageBytes": "A String", # Total size in bytes of all the files that are included in this version and curerntly hosted on the App Engine disk. @OutputOnly
+      "env": "A String", # App Engine execution environment for this version.Defaults to standard.
+      "diskUsageBytes": "A String", # Total size in bytes of all the files that are included in this version and curerntly hosted on the App Engine disk.@OutputOnly
       "automaticScaling": { # Automatic scaling is based on request rate, response latencies, and other application metrics. # Automatic scaling is based on request rate, response latencies, and other application metrics.
         "minPendingLatency": "A String", # Minimum amount of time a request should wait in the pending queue before starting a new instance to handle it.
         "networkUtilization": { # Target scaling by network usage. Only applicable for VM runtimes. # Target scaling by network usage.
@@ -394,35 +410,42 @@
           "targetConcurrentRequests": 42, # Target number of concurrent requests.
           "targetRequestCountPerSecond": 42, # Target requests per second.
         },
-        "coolDownPeriod": "A String", # Amount of time that the [Autoscaler](https://cloud.google.com/compute/docs/autoscaler/) should wait between changes to the number of virtual machines. Only applicable for VM runtimes.
+        "coolDownPeriod": "A String", # Amount of time that the Autoscaler (https://cloud.google.com/compute/docs/autoscaler/) should wait between changes to the number of virtual machines. Only applicable for VM runtimes.
         "maxTotalInstances": 42, # Maximum number of instances that should be started to handle requests.
-        "maxConcurrentRequests": 42, # Number of concurrent requests an automatic scaling instance can accept before the scheduler spawns a new instance. Defaults to a runtime-specific value.
+        "maxConcurrentRequests": 42, # Number of concurrent requests an automatic scaling instance can accept before the scheduler spawns a new instance.Defaults to a runtime-specific value.
         "minTotalInstances": 42, # Minimum number of instances that should be maintained for this version.
         "cpuUtilization": { # Target scaling by CPU usage. # Target scaling by CPU usage.
           "targetUtilization": 3.14, # Target CPU utilization ratio to maintain when scaling. Must be between 0 and 1.
           "aggregationWindowLength": "A String", # Period of time over which CPU utilization is calculated.
         },
       },
-      "envVariables": { # Environment variables available to the application. Only returned in `GET` requests if `view=FULL` is set.
+      "envVariables": { # Environment variables available to the application.Only returned in GET requests if view=FULL is set.
         "a_key": "A String",
       },
       "resources": { # Machine resources for a version. # Machine resources for this version. Only applicable for VM runtimes.
+        "volumes": [ # User specified volumes.
+          { # Volumes mounted within the app container. Only applicable for VM runtimes.
+            "volumeType": "A String", # Underlying volume type, e.g. 'tmpfs'.
+            "name": "A String", # Unique name for the volume.
+            "sizeGb": 3.14, # Volume size in gigabytes.
+          },
+        ],
         "diskGb": 3.14, # Disk size (GB) needed.
         "cpu": 3.14, # Number of CPU cores needed.
         "memoryGb": 3.14, # Memory (GB) needed.
       },
       "manualScaling": { # A service with manual scaling runs continuously, allowing you to perform complex initialization and rely on the state of its memory over time. # A service with manual scaling runs continuously, allowing you to perform complex initialization and rely on the state of its memory over time.
-        "instances": 42, # Number of instances to assign to the service at the start. This number can later be altered by using the [Modules API](https://cloud.google.com/appengine/docs/python/modules/functions) `set_num_instances()` function.
+        "instances": 42, # Number of instances to assign to the service at the start. This number can later be altered by using the Modules API (https://cloud.google.com/appengine/docs/python/modules/functions) set_num_instances() function.
       },
       "inboundServices": [ # Before an application can receive email or XMPP messages, the application must be configured to enable the service.
         "A String",
       ],
-      "createdBy": "A String", # Email address of the user who created this version. @OutputOnly
-      "deployment": { # Code and application artifacts used to deploy a version to App Engine. # Code and application artifacts that make up this version. Only returned in `GET` requests if `view=FULL` is set.
+      "createdBy": "A String", # Email address of the user who created this version.@OutputOnly
+      "deployment": { # Code and application artifacts used to deploy a version to App Engine. # Code and application artifacts that make up this version.Only returned in GET requests if view=FULL is set.
         "files": { # Manifest of the files stored in Google Cloud Storage that are included as part of this version. All files must be readable using the credentials supplied with this call.
           "a_key": { # Single source file that is part of the version to be deployed. Each source file that is deployed must be specified separately.
-            "mimeType": "A String", # The MIME type of the file. Defaults to the value from Google Cloud Storage.
-            "sourceUrl": "A String", # URL source to use to fetch this file. Must be a URL to a resource in Google Cloud Storage in the form 'http(s)://storage.googleapis.com/\/\'.
+            "mimeType": "A String", # The MIME type of the file.Defaults to the value from Google Cloud Storage.
+            "sourceUrl": "A String", # URL source to use to fetch this file. Must be a URL to a resource in Google Cloud Storage in the form 'http(s)://storage.googleapis.com//'.
             "sha1Sum": "A String", # The SHA1 hash of the file, in hex.
           },
         },
@@ -431,29 +454,30 @@
         },
         "zip": { # The zip file information for a zip deployment. # The zip file for this deployment, if this is a zip deployment.
           "filesCount": 42, # An estimate of the number of files in a zip for a zip deployment. If set, must be greater than or equal to the actual number of files. Used for optimizing performance; if not provided, deployment may be slow.
-          "sourceUrl": "A String", # URL of the zip file to deploy from. Must be a URL to a resource in Google Cloud Storage in the form 'http(s)://storage.googleapis.com/\/\'.
+          "sourceUrl": "A String", # URL of the zip file to deploy from. Must be a URL to a resource in Google Cloud Storage in the form 'http(s)://storage.googleapis.com//'.
         },
       },
-      "createTime": "A String", # Time that this version was created. @OutputOnly
+      "createTime": "A String", # Time that this version was created.@OutputOnly
       "network": { # Extra network settings. Only applicable for VM runtimes. # Extra network settings. Only applicable for VM runtimes.
         "instanceTag": "A String", # Tag to apply to the VM instance during creation.
         "forwardedPorts": [ # List of ports, or port pairs, to forward from the virtual machine to the application container.
           "A String",
         ],
-        "name": "A String", # Google Cloud Platform network where the virtual machines are created. Specify the short name, not the resource path. Defaults to `default`.
+        "name": "A String", # Google Cloud Platform network where the virtual machines are created. Specify the short name, not the resource path.Defaults to default.
+        "subnetworkName": "A String", # Google Cloud Platform sub-network where the virtual machines are created. Specify the short name, not the resource path.If a subnetwork name is specified, a network name will also be required unless it is for the default network. If the network the VM instance is being created in is a Legacy network, then the IP address is allocated from the IPv4Range. If the network the VM instance is being created in is an auto Subnet Mode Network, then only network name should be specified (not the subnetwork_name) and the IP address is created from the IPCidrRange of the subnetwork that exists in that zone for that network. If the network the VM instance is being created in is a custom Subnet Mode Network, then the subnetwork_name must be specified and the IP address is created from the IPCidrRange of the subnetwork.If specified, the subnetwork must exist in the same region as the Flex app.
       },
-      "nobuildFilesRegex": "A String", # Files that match this pattern will not be built into this version. Only applicable for Go runtimes. Only returned in `GET` requests if `view=FULL` is set.
-      "name": "A String", # Full path to the Version resource in the API. Example: `apps/myapp/services/default/versions/v1`. @OutputOnly
-      "handlers": [ # An ordered list of URL-matching patterns that should be applied to incoming requests. The first matching URL handles the request and other request handlers are not attempted. Only returned in `GET` requests if `view=FULL` is set.
+      "nobuildFilesRegex": "A String", # Files that match this pattern will not be built into this version. Only applicable for Go runtimes.Only returned in GET requests if view=FULL is set.
+      "name": "A String", # Full path to the Version resource in the API. Example: apps/myapp/services/default/versions/v1.@OutputOnly
+      "handlers": [ # An ordered list of URL-matching patterns that should be applied to incoming requests. The first matching URL handles the request and other request handlers are not attempted.Only returned in GET requests if view=FULL is set.
         { # URL pattern and description of how the URL should be handled. App Engine can handle URLs by executing application code or by serving static files uploaded with the version, such as images, CSS, or JavaScript.
           "securityLevel": "A String", # Security (HTTPS) enforcement for this URL.
-          "authFailAction": "A String", # Action to take when users access resources that require authentication. Defaults to `redirect`.
+          "authFailAction": "A String", # Action to take when users access resources that require authentication. Defaults to redirect.
           "urlRegex": "A String", # URL prefix. Uses regular expression syntax, which means regexp special characters must be escaped, but should not contain groupings. All URLs that begin with this prefix are handled by this handler, using the portion of the URL after the prefix as part of the file path.
           "script": { # Executes a script to handle the request that matches the URL pattern. # Executes a script to handle the request that matches this URL pattern.
             "scriptPath": "A String", # Path to the script from the application root directory.
           },
           "staticFiles": { # Files served directly to the user for a given URL, such as images, CSS stylesheets, or JavaScript source files. Static file handlers describe which files in the application directory are static files, and which URLs serve them. # Returns the contents of a file, such as an image, as the response.
-            "mimeType": "A String", # MIME type used to serve all files served by this handler. Defaults to file-specific MIME types, which are derived from each file's filename extension.
+            "mimeType": "A String", # MIME type used to serve all files served by this handler.Defaults to file-specific MIME types, which are derived from each file's filename extension.
             "applicationReadable": True or False, # Whether files should also be uploaded as code data. By default, files declared in static file handlers are uploaded as static data and are only served to end users; they cannot be read by the application. If enabled, uploads are charged against both your code and static data storage resource quotas.
             "expiration": "A String", # Time a static file served by this handler should be cached by web proxies and browsers.
             "requireMatchingFile": True or False, # Whether this handler should match the request if the file referenced by the handler does not exist.
@@ -467,11 +491,11 @@
             "scriptPath": "A String", # Path to the script from the application root directory.
           },
           "login": "A String", # Level of login required to access this resource.
-          "redirectHttpResponseCode": "A String", # `30x` code to use when performing redirects for the `secure` field. Defaults to `302`.
+          "redirectHttpResponseCode": "A String", # 30x code to use when performing redirects for the secure field. Defaults to 302.
         },
       ],
-      "servingStatus": "A String", # Current serving status of this version. Only the versions with a `SERVING` status create instances and can be billed. `SERVING_STATUS_UNSPECIFIED` is an invalid value. Defaults to `SERVING`.
-      "runtime": "A String", # Desired runtime. Example: `python27`.
+      "servingStatus": "A String", # Current serving status of this version. Only the versions with a SERVING status create instances and can be billed.SERVING_STATUS_UNSPECIFIED is an invalid value. Defaults to SERVING.
+      "runtime": "A String", # Desired runtime. Example: python27.
     }</pre>
 </div>
 
@@ -480,20 +504,24 @@
   <pre>Lists the versions of a service.
 
 Args:
-  appsId: string, Part of `parent`. Name of the parent Service resource. Example: `apps/myapp/services/default`. (required)
+  appsId: string, Part of `parent`. Name of the parent Service resource. Example: apps/myapp/services/default. (required)
   servicesId: string, Part of `parent`. See documentation of `appsId`. (required)
   pageSize: integer, Maximum results to return per page.
   x__xgafv: string, V1 error format.
   pageToken: string, Continuation token for fetching the next page of results.
-  view: string, Controls the set of fields returned in the `List` response.
+  view: string, Controls the set of fields returned in the List response.
 
 Returns:
   An object of the form:
 
-    { # Response message for `Versions.ListVersions`.
+    { # Response message for Versions.ListVersions.
     "nextPageToken": "A String", # Continuation token for fetching the next page of results.
     "versions": [ # The versions belonging to the requested service.
       { # A Version resource is a specific set of source code and configuration files that are deployed into a service.
+          "endpointsApiService": { # Cloud Endpoints (https://cloud.google.com/endpoints) configuration. The Endpoints API Service provides tooling for serving Open API and gRPC endpoints via an NGINX proxy.The fields here refer to the name and configuration id of a "service" resource in the Service Management API (https://cloud.google.com/service-management/overview). # Cloud Endpoints configuration.If endpoints_api_service is set, the Cloud Endpoints Extensible Service Proxy will be provided to serve the API implemented by the app.
+            "configId": "A String", # Endpoints service configuration id as specified by the Service Management API. For example "2016-09-19r1"
+            "name": "A String", # Endpoints service name which is the name of the "service" resource in the Service Management API. For example "myapi.endpoints.myproject.cloud.goog"
+          },
           "basicScaling": { # A service with basic scaling will create an instance when the application receives a request. The instance will be turned down when the app becomes idle. Basic scaling is ideal for work that is intermittent or driven by user activity. # A service with basic scaling will create an instance when the application receives a request. The instance will be turned down when the app becomes idle. Basic scaling is ideal for work that is intermittent or driven by user activity.
             "idleTimeout": "A String", # Duration of time after the last request that an instance must wait before the instance is shut down.
             "maxInstances": 42, # Maximum number of instances to create for this version.
@@ -502,24 +530,24 @@
             "a_key": "A String",
           },
           "vm": True or False, # Whether to deploy this version in a container on a virtual machine.
-          "instanceClass": "A String", # Instance class that is used to run this version. Valid values are: * AutomaticScaling: `F1`, `F2`, `F4`, `F4_1G` * ManualScaling or BasicScaling: `B1`, `B2`, `B4`, `B8`, `B4_1G` Defaults to `F1` for AutomaticScaling and `B1` for ManualScaling or BasicScaling.
-          "errorHandlers": [ # Custom static error pages. Limited to 10KB per page. Only returned in `GET` requests if `view=FULL` is set.
+          "instanceClass": "A String", # Instance class that is used to run this version. Valid values are: AutomaticScaling: F1, F2, F4, F4_1G ManualScaling or BasicScaling: B1, B2, B4, B8, B4_1GDefaults to F1 for AutomaticScaling and B1 for ManualScaling or BasicScaling.
+          "errorHandlers": [ # Custom static error pages. Limited to 10KB per page.Only returned in GET requests if view=FULL is set.
             { # Custom static error page to be served when an error occurs.
               "errorCode": "A String", # Error condition this handler applies to.
-              "mimeType": "A String", # MIME type of file. Defaults to `text/html`.
+              "mimeType": "A String", # MIME type of file. Defaults to text/html.
               "staticFile": "A String", # Static file content to be served for this error.
             },
           ],
-          "id": "A String", # Relative name of the version within the service. Example: `v1`. Version names can contain only lowercase letters, numbers, or hyphens. Reserved names: "default", "latest", and any name with the prefix "ah-".
-          "apiConfig": { # [Google Cloud Endpoints](https://cloud.google.com/appengine/docs/python/endpoints/) configuration for API handlers. # Serving configuration for [Google Cloud Endpoints](https://cloud.google.com/appengine/docs/python/endpoints/). Only returned in `GET` requests if `view=FULL` is set.
+          "id": "A String", # Relative name of the version within the service. Example: v1. Version names can contain only lowercase letters, numbers, or hyphens. Reserved names: "default", "latest", and any name with the prefix "ah-".
+          "apiConfig": { # Google Cloud Endpoints (https://cloud.google.com/appengine/docs/python/endpoints/) configuration for API handlers. # Serving configuration for Google Cloud Endpoints (https://cloud.google.com/appengine/docs/python/endpoints/).Only returned in GET requests if view=FULL is set.
             "url": "A String", # URL to serve the endpoint at.
             "securityLevel": "A String", # Security (HTTPS) enforcement for this URL.
-            "authFailAction": "A String", # Action to take when users access resources that require authentication. Defaults to `redirect`.
-            "login": "A String", # Level of login required to access this resource. Defaults to `optional`.
+            "authFailAction": "A String", # Action to take when users access resources that require authentication. Defaults to redirect.
+            "login": "A String", # Level of login required to access this resource. Defaults to optional.
             "script": "A String", # Path to the script from the application root directory.
           },
           "threadsafe": True or False, # Whether multiple requests can be dispatched to this version at once.
-          "healthCheck": { # Health checking configuration for VM instances. Unhealthy instances are killed and replaced with new instances. Only applicable for instances in App Engine flexible environment. # Configures health checking for VM instances. Unhealthy instances are stopped and replaced with new instances. Only applicable for VM runtimes. Only returned in `GET` requests if `view=FULL` is set.
+          "healthCheck": { # Health checking configuration for VM instances. Unhealthy instances are killed and replaced with new instances. Only applicable for instances in App Engine flexible environment. # Configures health checking for VM instances. Unhealthy instances are stopped and replaced with new instances. Only applicable for VM runtimes.Only returned in GET requests if view=FULL is set.
             "restartThreshold": 42, # Number of consecutive failed health checks required before an instance is restarted.
             "checkInterval": "A String", # Interval between health checks.
             "unhealthyThreshold": 42, # Number of consecutive failed health checks required before removing traffic.
@@ -528,16 +556,16 @@
             "timeout": "A String", # Time before the health check is considered failed.
             "disableHealthCheck": True or False, # Whether to explicitly disable health checks for this instance.
           },
-          "defaultExpiration": "A String", # Duration that static files should be cached by web proxies and browsers. Only applicable if the corresponding [StaticFilesHandler](https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1/apps.services.versions#staticfileshandler) does not specify its own expiration time. Only returned in `GET` requests if `view=FULL` is set.
-          "versionUrl": "A String", # Serving URL for this version. Example: "https://myversion-dot-myservice-dot-myapp.appspot.com" @OutputOnly
-          "libraries": [ # Configuration for third-party Python runtime libraries that are required by the application. Only returned in `GET` requests if `view=FULL` is set.
+          "defaultExpiration": "A String", # Duration that static files should be cached by web proxies and browsers. Only applicable if the corresponding StaticFilesHandler (https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1/apps.services.versions#staticfileshandler) does not specify its own expiration time.Only returned in GET requests if view=FULL is set.
+          "versionUrl": "A String", # Serving URL for this version. Example: "https://myversion-dot-myservice-dot-myapp.appspot.com"@OutputOnly
+          "libraries": [ # Configuration for third-party Python runtime libraries that are required by the application.Only returned in GET requests if view=FULL is set.
             { # Third-party Python runtime library that is required by the application.
               "version": "A String", # Version of the library to select, or "latest".
               "name": "A String", # Name of the library. Example: "django".
             },
           ],
-          "env": "A String", # App Engine execution environment for this version. Defaults to `standard`.
-          "diskUsageBytes": "A String", # Total size in bytes of all the files that are included in this version and curerntly hosted on the App Engine disk. @OutputOnly
+          "env": "A String", # App Engine execution environment for this version.Defaults to standard.
+          "diskUsageBytes": "A String", # Total size in bytes of all the files that are included in this version and curerntly hosted on the App Engine disk.@OutputOnly
           "automaticScaling": { # Automatic scaling is based on request rate, response latencies, and other application metrics. # Automatic scaling is based on request rate, response latencies, and other application metrics.
             "minPendingLatency": "A String", # Minimum amount of time a request should wait in the pending queue before starting a new instance to handle it.
             "networkUtilization": { # Target scaling by network usage. Only applicable for VM runtimes. # Target scaling by network usage.
@@ -559,35 +587,42 @@
               "targetConcurrentRequests": 42, # Target number of concurrent requests.
               "targetRequestCountPerSecond": 42, # Target requests per second.
             },
-            "coolDownPeriod": "A String", # Amount of time that the [Autoscaler](https://cloud.google.com/compute/docs/autoscaler/) should wait between changes to the number of virtual machines. Only applicable for VM runtimes.
+            "coolDownPeriod": "A String", # Amount of time that the Autoscaler (https://cloud.google.com/compute/docs/autoscaler/) should wait between changes to the number of virtual machines. Only applicable for VM runtimes.
             "maxTotalInstances": 42, # Maximum number of instances that should be started to handle requests.
-            "maxConcurrentRequests": 42, # Number of concurrent requests an automatic scaling instance can accept before the scheduler spawns a new instance. Defaults to a runtime-specific value.
+            "maxConcurrentRequests": 42, # Number of concurrent requests an automatic scaling instance can accept before the scheduler spawns a new instance.Defaults to a runtime-specific value.
             "minTotalInstances": 42, # Minimum number of instances that should be maintained for this version.
             "cpuUtilization": { # Target scaling by CPU usage. # Target scaling by CPU usage.
               "targetUtilization": 3.14, # Target CPU utilization ratio to maintain when scaling. Must be between 0 and 1.
               "aggregationWindowLength": "A String", # Period of time over which CPU utilization is calculated.
             },
           },
-          "envVariables": { # Environment variables available to the application. Only returned in `GET` requests if `view=FULL` is set.
+          "envVariables": { # Environment variables available to the application.Only returned in GET requests if view=FULL is set.
             "a_key": "A String",
           },
           "resources": { # Machine resources for a version. # Machine resources for this version. Only applicable for VM runtimes.
+            "volumes": [ # User specified volumes.
+              { # Volumes mounted within the app container. Only applicable for VM runtimes.
+                "volumeType": "A String", # Underlying volume type, e.g. 'tmpfs'.
+                "name": "A String", # Unique name for the volume.
+                "sizeGb": 3.14, # Volume size in gigabytes.
+              },
+            ],
             "diskGb": 3.14, # Disk size (GB) needed.
             "cpu": 3.14, # Number of CPU cores needed.
             "memoryGb": 3.14, # Memory (GB) needed.
           },
           "manualScaling": { # A service with manual scaling runs continuously, allowing you to perform complex initialization and rely on the state of its memory over time. # A service with manual scaling runs continuously, allowing you to perform complex initialization and rely on the state of its memory over time.
-            "instances": 42, # Number of instances to assign to the service at the start. This number can later be altered by using the [Modules API](https://cloud.google.com/appengine/docs/python/modules/functions) `set_num_instances()` function.
+            "instances": 42, # Number of instances to assign to the service at the start. This number can later be altered by using the Modules API (https://cloud.google.com/appengine/docs/python/modules/functions) set_num_instances() function.
           },
           "inboundServices": [ # Before an application can receive email or XMPP messages, the application must be configured to enable the service.
             "A String",
           ],
-          "createdBy": "A String", # Email address of the user who created this version. @OutputOnly
-          "deployment": { # Code and application artifacts used to deploy a version to App Engine. # Code and application artifacts that make up this version. Only returned in `GET` requests if `view=FULL` is set.
+          "createdBy": "A String", # Email address of the user who created this version.@OutputOnly
+          "deployment": { # Code and application artifacts used to deploy a version to App Engine. # Code and application artifacts that make up this version.Only returned in GET requests if view=FULL is set.
             "files": { # Manifest of the files stored in Google Cloud Storage that are included as part of this version. All files must be readable using the credentials supplied with this call.
               "a_key": { # Single source file that is part of the version to be deployed. Each source file that is deployed must be specified separately.
-                "mimeType": "A String", # The MIME type of the file. Defaults to the value from Google Cloud Storage.
-                "sourceUrl": "A String", # URL source to use to fetch this file. Must be a URL to a resource in Google Cloud Storage in the form 'http(s)://storage.googleapis.com/\/\'.
+                "mimeType": "A String", # The MIME type of the file.Defaults to the value from Google Cloud Storage.
+                "sourceUrl": "A String", # URL source to use to fetch this file. Must be a URL to a resource in Google Cloud Storage in the form 'http(s)://storage.googleapis.com//'.
                 "sha1Sum": "A String", # The SHA1 hash of the file, in hex.
               },
             },
@@ -596,29 +631,30 @@
             },
             "zip": { # The zip file information for a zip deployment. # The zip file for this deployment, if this is a zip deployment.
               "filesCount": 42, # An estimate of the number of files in a zip for a zip deployment. If set, must be greater than or equal to the actual number of files. Used for optimizing performance; if not provided, deployment may be slow.
-              "sourceUrl": "A String", # URL of the zip file to deploy from. Must be a URL to a resource in Google Cloud Storage in the form 'http(s)://storage.googleapis.com/\/\'.
+              "sourceUrl": "A String", # URL of the zip file to deploy from. Must be a URL to a resource in Google Cloud Storage in the form 'http(s)://storage.googleapis.com//'.
             },
           },
-          "createTime": "A String", # Time that this version was created. @OutputOnly
+          "createTime": "A String", # Time that this version was created.@OutputOnly
           "network": { # Extra network settings. Only applicable for VM runtimes. # Extra network settings. Only applicable for VM runtimes.
             "instanceTag": "A String", # Tag to apply to the VM instance during creation.
             "forwardedPorts": [ # List of ports, or port pairs, to forward from the virtual machine to the application container.
               "A String",
             ],
-            "name": "A String", # Google Cloud Platform network where the virtual machines are created. Specify the short name, not the resource path. Defaults to `default`.
+            "name": "A String", # Google Cloud Platform network where the virtual machines are created. Specify the short name, not the resource path.Defaults to default.
+            "subnetworkName": "A String", # Google Cloud Platform sub-network where the virtual machines are created. Specify the short name, not the resource path.If a subnetwork name is specified, a network name will also be required unless it is for the default network. If the network the VM instance is being created in is a Legacy network, then the IP address is allocated from the IPv4Range. If the network the VM instance is being created in is an auto Subnet Mode Network, then only network name should be specified (not the subnetwork_name) and the IP address is created from the IPCidrRange of the subnetwork that exists in that zone for that network. If the network the VM instance is being created in is a custom Subnet Mode Network, then the subnetwork_name must be specified and the IP address is created from the IPCidrRange of the subnetwork.If specified, the subnetwork must exist in the same region as the Flex app.
           },
-          "nobuildFilesRegex": "A String", # Files that match this pattern will not be built into this version. Only applicable for Go runtimes. Only returned in `GET` requests if `view=FULL` is set.
-          "name": "A String", # Full path to the Version resource in the API. Example: `apps/myapp/services/default/versions/v1`. @OutputOnly
-          "handlers": [ # An ordered list of URL-matching patterns that should be applied to incoming requests. The first matching URL handles the request and other request handlers are not attempted. Only returned in `GET` requests if `view=FULL` is set.
+          "nobuildFilesRegex": "A String", # Files that match this pattern will not be built into this version. Only applicable for Go runtimes.Only returned in GET requests if view=FULL is set.
+          "name": "A String", # Full path to the Version resource in the API. Example: apps/myapp/services/default/versions/v1.@OutputOnly
+          "handlers": [ # An ordered list of URL-matching patterns that should be applied to incoming requests. The first matching URL handles the request and other request handlers are not attempted.Only returned in GET requests if view=FULL is set.
             { # URL pattern and description of how the URL should be handled. App Engine can handle URLs by executing application code or by serving static files uploaded with the version, such as images, CSS, or JavaScript.
               "securityLevel": "A String", # Security (HTTPS) enforcement for this URL.
-              "authFailAction": "A String", # Action to take when users access resources that require authentication. Defaults to `redirect`.
+              "authFailAction": "A String", # Action to take when users access resources that require authentication. Defaults to redirect.
               "urlRegex": "A String", # URL prefix. Uses regular expression syntax, which means regexp special characters must be escaped, but should not contain groupings. All URLs that begin with this prefix are handled by this handler, using the portion of the URL after the prefix as part of the file path.
               "script": { # Executes a script to handle the request that matches the URL pattern. # Executes a script to handle the request that matches this URL pattern.
                 "scriptPath": "A String", # Path to the script from the application root directory.
               },
               "staticFiles": { # Files served directly to the user for a given URL, such as images, CSS stylesheets, or JavaScript source files. Static file handlers describe which files in the application directory are static files, and which URLs serve them. # Returns the contents of a file, such as an image, as the response.
-                "mimeType": "A String", # MIME type used to serve all files served by this handler. Defaults to file-specific MIME types, which are derived from each file's filename extension.
+                "mimeType": "A String", # MIME type used to serve all files served by this handler.Defaults to file-specific MIME types, which are derived from each file's filename extension.
                 "applicationReadable": True or False, # Whether files should also be uploaded as code data. By default, files declared in static file handlers are uploaded as static data and are only served to end users; they cannot be read by the application. If enabled, uploads are charged against both your code and static data storage resource quotas.
                 "expiration": "A String", # Time a static file served by this handler should be cached by web proxies and browsers.
                 "requireMatchingFile": True or False, # Whether this handler should match the request if the file referenced by the handler does not exist.
@@ -632,11 +668,11 @@
                 "scriptPath": "A String", # Path to the script from the application root directory.
               },
               "login": "A String", # Level of login required to access this resource.
-              "redirectHttpResponseCode": "A String", # `30x` code to use when performing redirects for the `secure` field. Defaults to `302`.
+              "redirectHttpResponseCode": "A String", # 30x code to use when performing redirects for the secure field. Defaults to 302.
             },
           ],
-          "servingStatus": "A String", # Current serving status of this version. Only the versions with a `SERVING` status create instances and can be billed. `SERVING_STATUS_UNSPECIFIED` is an invalid value. Defaults to `SERVING`.
-          "runtime": "A String", # Desired runtime. Example: `python27`.
+          "servingStatus": "A String", # Current serving status of this version. Only the versions with a SERVING status create instances and can be billed.SERVING_STATUS_UNSPECIFIED is an invalid value. Defaults to SERVING.
+          "runtime": "A String", # Desired runtime. Example: python27.
         },
     ],
   }</pre>
@@ -658,16 +694,20 @@
 
 <div class="method">
     <code class="details" id="patch">patch(appsId, servicesId, versionsId, body, updateMask=None, x__xgafv=None)</code>
-  <pre>Updates the specified Version resource. You can specify the following fields depending on the App Engine environment and type of scaling that the version resource uses: * [`serving_status`](https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1/apps.services.versions#Version.FIELDS.serving_status): For Version resources that use basic scaling, manual scaling, or run in the App Engine flexible environment. * [`instance_class`](https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1/apps.services.versions#Version.FIELDS.instance_class): For Version resources that run in the App Engine standard environment. * [`automatic_scaling.min_idle_instances`](https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1/apps.services.versions#Version.FIELDS.automatic_scaling): For Version resources that use automatic scaling and run in the App Engine standard environment. * [`automatic_scaling.max_idle_instances`](https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1/apps.services.versions#Version.FIELDS.automatic_scaling): For Version resources that use automatic scaling and run in the App Engine standard environment.
+  <pre>Updates the specified Version resource. You can specify the following fields depending on the App Engine environment and type of scaling that the version resource uses: serving_status (https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1/apps.services.versions#Version.FIELDS.serving_status): For Version resources that use basic scaling, manual scaling, or run in the App Engine flexible environment. instance_class (https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1/apps.services.versions#Version.FIELDS.instance_class): For Version resources that run in the App Engine standard environment. automatic_scaling.min_idle_instances (https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1/apps.services.versions#Version.FIELDS.automatic_scaling): For Version resources that use automatic scaling and run in the App Engine standard environment. automatic_scaling.max_idle_instances (https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1/apps.services.versions#Version.FIELDS.automatic_scaling): For Version resources that use automatic scaling and run in the App Engine standard environment.
 
 Args:
-  appsId: string, Part of `name`. Name of the resource to update. Example: `apps/myapp/services/default/versions/1`. (required)
+  appsId: string, Part of `name`. Name of the resource to update. Example: apps/myapp/services/default/versions/1. (required)
   servicesId: string, Part of `name`. See documentation of `appsId`. (required)
   versionsId: string, Part of `name`. See documentation of `appsId`. (required)
   body: object, The request body. (required)
     The object takes the form of:
 
 { # A Version resource is a specific set of source code and configuration files that are deployed into a service.
+    "endpointsApiService": { # Cloud Endpoints (https://cloud.google.com/endpoints) configuration. The Endpoints API Service provides tooling for serving Open API and gRPC endpoints via an NGINX proxy.The fields here refer to the name and configuration id of a "service" resource in the Service Management API (https://cloud.google.com/service-management/overview). # Cloud Endpoints configuration.If endpoints_api_service is set, the Cloud Endpoints Extensible Service Proxy will be provided to serve the API implemented by the app.
+      "configId": "A String", # Endpoints service configuration id as specified by the Service Management API. For example "2016-09-19r1"
+      "name": "A String", # Endpoints service name which is the name of the "service" resource in the Service Management API. For example "myapi.endpoints.myproject.cloud.goog"
+    },
     "basicScaling": { # A service with basic scaling will create an instance when the application receives a request. The instance will be turned down when the app becomes idle. Basic scaling is ideal for work that is intermittent or driven by user activity. # A service with basic scaling will create an instance when the application receives a request. The instance will be turned down when the app becomes idle. Basic scaling is ideal for work that is intermittent or driven by user activity.
       "idleTimeout": "A String", # Duration of time after the last request that an instance must wait before the instance is shut down.
       "maxInstances": 42, # Maximum number of instances to create for this version.
@@ -676,24 +716,24 @@
       "a_key": "A String",
     },
     "vm": True or False, # Whether to deploy this version in a container on a virtual machine.
-    "instanceClass": "A String", # Instance class that is used to run this version. Valid values are: * AutomaticScaling: `F1`, `F2`, `F4`, `F4_1G` * ManualScaling or BasicScaling: `B1`, `B2`, `B4`, `B8`, `B4_1G` Defaults to `F1` for AutomaticScaling and `B1` for ManualScaling or BasicScaling.
-    "errorHandlers": [ # Custom static error pages. Limited to 10KB per page. Only returned in `GET` requests if `view=FULL` is set.
+    "instanceClass": "A String", # Instance class that is used to run this version. Valid values are: AutomaticScaling: F1, F2, F4, F4_1G ManualScaling or BasicScaling: B1, B2, B4, B8, B4_1GDefaults to F1 for AutomaticScaling and B1 for ManualScaling or BasicScaling.
+    "errorHandlers": [ # Custom static error pages. Limited to 10KB per page.Only returned in GET requests if view=FULL is set.
       { # Custom static error page to be served when an error occurs.
         "errorCode": "A String", # Error condition this handler applies to.
-        "mimeType": "A String", # MIME type of file. Defaults to `text/html`.
+        "mimeType": "A String", # MIME type of file. Defaults to text/html.
         "staticFile": "A String", # Static file content to be served for this error.
       },
     ],
-    "id": "A String", # Relative name of the version within the service. Example: `v1`. Version names can contain only lowercase letters, numbers, or hyphens. Reserved names: "default", "latest", and any name with the prefix "ah-".
-    "apiConfig": { # [Google Cloud Endpoints](https://cloud.google.com/appengine/docs/python/endpoints/) configuration for API handlers. # Serving configuration for [Google Cloud Endpoints](https://cloud.google.com/appengine/docs/python/endpoints/). Only returned in `GET` requests if `view=FULL` is set.
+    "id": "A String", # Relative name of the version within the service. Example: v1. Version names can contain only lowercase letters, numbers, or hyphens. Reserved names: "default", "latest", and any name with the prefix "ah-".
+    "apiConfig": { # Google Cloud Endpoints (https://cloud.google.com/appengine/docs/python/endpoints/) configuration for API handlers. # Serving configuration for Google Cloud Endpoints (https://cloud.google.com/appengine/docs/python/endpoints/).Only returned in GET requests if view=FULL is set.
       "url": "A String", # URL to serve the endpoint at.
       "securityLevel": "A String", # Security (HTTPS) enforcement for this URL.
-      "authFailAction": "A String", # Action to take when users access resources that require authentication. Defaults to `redirect`.
-      "login": "A String", # Level of login required to access this resource. Defaults to `optional`.
+      "authFailAction": "A String", # Action to take when users access resources that require authentication. Defaults to redirect.
+      "login": "A String", # Level of login required to access this resource. Defaults to optional.
       "script": "A String", # Path to the script from the application root directory.
     },
     "threadsafe": True or False, # Whether multiple requests can be dispatched to this version at once.
-    "healthCheck": { # Health checking configuration for VM instances. Unhealthy instances are killed and replaced with new instances. Only applicable for instances in App Engine flexible environment. # Configures health checking for VM instances. Unhealthy instances are stopped and replaced with new instances. Only applicable for VM runtimes. Only returned in `GET` requests if `view=FULL` is set.
+    "healthCheck": { # Health checking configuration for VM instances. Unhealthy instances are killed and replaced with new instances. Only applicable for instances in App Engine flexible environment. # Configures health checking for VM instances. Unhealthy instances are stopped and replaced with new instances. Only applicable for VM runtimes.Only returned in GET requests if view=FULL is set.
       "restartThreshold": 42, # Number of consecutive failed health checks required before an instance is restarted.
       "checkInterval": "A String", # Interval between health checks.
       "unhealthyThreshold": 42, # Number of consecutive failed health checks required before removing traffic.
@@ -702,16 +742,16 @@
       "timeout": "A String", # Time before the health check is considered failed.
       "disableHealthCheck": True or False, # Whether to explicitly disable health checks for this instance.
     },
-    "defaultExpiration": "A String", # Duration that static files should be cached by web proxies and browsers. Only applicable if the corresponding [StaticFilesHandler](https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1/apps.services.versions#staticfileshandler) does not specify its own expiration time. Only returned in `GET` requests if `view=FULL` is set.
-    "versionUrl": "A String", # Serving URL for this version. Example: "https://myversion-dot-myservice-dot-myapp.appspot.com" @OutputOnly
-    "libraries": [ # Configuration for third-party Python runtime libraries that are required by the application. Only returned in `GET` requests if `view=FULL` is set.
+    "defaultExpiration": "A String", # Duration that static files should be cached by web proxies and browsers. Only applicable if the corresponding StaticFilesHandler (https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1/apps.services.versions#staticfileshandler) does not specify its own expiration time.Only returned in GET requests if view=FULL is set.
+    "versionUrl": "A String", # Serving URL for this version. Example: "https://myversion-dot-myservice-dot-myapp.appspot.com"@OutputOnly
+    "libraries": [ # Configuration for third-party Python runtime libraries that are required by the application.Only returned in GET requests if view=FULL is set.
       { # Third-party Python runtime library that is required by the application.
         "version": "A String", # Version of the library to select, or "latest".
         "name": "A String", # Name of the library. Example: "django".
       },
     ],
-    "env": "A String", # App Engine execution environment for this version. Defaults to `standard`.
-    "diskUsageBytes": "A String", # Total size in bytes of all the files that are included in this version and curerntly hosted on the App Engine disk. @OutputOnly
+    "env": "A String", # App Engine execution environment for this version.Defaults to standard.
+    "diskUsageBytes": "A String", # Total size in bytes of all the files that are included in this version and curerntly hosted on the App Engine disk.@OutputOnly
     "automaticScaling": { # Automatic scaling is based on request rate, response latencies, and other application metrics. # Automatic scaling is based on request rate, response latencies, and other application metrics.
       "minPendingLatency": "A String", # Minimum amount of time a request should wait in the pending queue before starting a new instance to handle it.
       "networkUtilization": { # Target scaling by network usage. Only applicable for VM runtimes. # Target scaling by network usage.
@@ -733,35 +773,42 @@
         "targetConcurrentRequests": 42, # Target number of concurrent requests.
         "targetRequestCountPerSecond": 42, # Target requests per second.
       },
-      "coolDownPeriod": "A String", # Amount of time that the [Autoscaler](https://cloud.google.com/compute/docs/autoscaler/) should wait between changes to the number of virtual machines. Only applicable for VM runtimes.
+      "coolDownPeriod": "A String", # Amount of time that the Autoscaler (https://cloud.google.com/compute/docs/autoscaler/) should wait between changes to the number of virtual machines. Only applicable for VM runtimes.
       "maxTotalInstances": 42, # Maximum number of instances that should be started to handle requests.
-      "maxConcurrentRequests": 42, # Number of concurrent requests an automatic scaling instance can accept before the scheduler spawns a new instance. Defaults to a runtime-specific value.
+      "maxConcurrentRequests": 42, # Number of concurrent requests an automatic scaling instance can accept before the scheduler spawns a new instance.Defaults to a runtime-specific value.
       "minTotalInstances": 42, # Minimum number of instances that should be maintained for this version.
       "cpuUtilization": { # Target scaling by CPU usage. # Target scaling by CPU usage.
         "targetUtilization": 3.14, # Target CPU utilization ratio to maintain when scaling. Must be between 0 and 1.
         "aggregationWindowLength": "A String", # Period of time over which CPU utilization is calculated.
       },
     },
-    "envVariables": { # Environment variables available to the application. Only returned in `GET` requests if `view=FULL` is set.
+    "envVariables": { # Environment variables available to the application.Only returned in GET requests if view=FULL is set.
       "a_key": "A String",
     },
     "resources": { # Machine resources for a version. # Machine resources for this version. Only applicable for VM runtimes.
+      "volumes": [ # User specified volumes.
+        { # Volumes mounted within the app container. Only applicable for VM runtimes.
+          "volumeType": "A String", # Underlying volume type, e.g. 'tmpfs'.
+          "name": "A String", # Unique name for the volume.
+          "sizeGb": 3.14, # Volume size in gigabytes.
+        },
+      ],
       "diskGb": 3.14, # Disk size (GB) needed.
       "cpu": 3.14, # Number of CPU cores needed.
       "memoryGb": 3.14, # Memory (GB) needed.
     },
     "manualScaling": { # A service with manual scaling runs continuously, allowing you to perform complex initialization and rely on the state of its memory over time. # A service with manual scaling runs continuously, allowing you to perform complex initialization and rely on the state of its memory over time.
-      "instances": 42, # Number of instances to assign to the service at the start. This number can later be altered by using the [Modules API](https://cloud.google.com/appengine/docs/python/modules/functions) `set_num_instances()` function.
+      "instances": 42, # Number of instances to assign to the service at the start. This number can later be altered by using the Modules API (https://cloud.google.com/appengine/docs/python/modules/functions) set_num_instances() function.
     },
     "inboundServices": [ # Before an application can receive email or XMPP messages, the application must be configured to enable the service.
       "A String",
     ],
-    "createdBy": "A String", # Email address of the user who created this version. @OutputOnly
-    "deployment": { # Code and application artifacts used to deploy a version to App Engine. # Code and application artifacts that make up this version. Only returned in `GET` requests if `view=FULL` is set.
+    "createdBy": "A String", # Email address of the user who created this version.@OutputOnly
+    "deployment": { # Code and application artifacts used to deploy a version to App Engine. # Code and application artifacts that make up this version.Only returned in GET requests if view=FULL is set.
       "files": { # Manifest of the files stored in Google Cloud Storage that are included as part of this version. All files must be readable using the credentials supplied with this call.
         "a_key": { # Single source file that is part of the version to be deployed. Each source file that is deployed must be specified separately.
-          "mimeType": "A String", # The MIME type of the file. Defaults to the value from Google Cloud Storage.
-          "sourceUrl": "A String", # URL source to use to fetch this file. Must be a URL to a resource in Google Cloud Storage in the form 'http(s)://storage.googleapis.com/\/\'.
+          "mimeType": "A String", # The MIME type of the file.Defaults to the value from Google Cloud Storage.
+          "sourceUrl": "A String", # URL source to use to fetch this file. Must be a URL to a resource in Google Cloud Storage in the form 'http(s)://storage.googleapis.com//'.
           "sha1Sum": "A String", # The SHA1 hash of the file, in hex.
         },
       },
@@ -770,29 +817,30 @@
       },
       "zip": { # The zip file information for a zip deployment. # The zip file for this deployment, if this is a zip deployment.
         "filesCount": 42, # An estimate of the number of files in a zip for a zip deployment. If set, must be greater than or equal to the actual number of files. Used for optimizing performance; if not provided, deployment may be slow.
-        "sourceUrl": "A String", # URL of the zip file to deploy from. Must be a URL to a resource in Google Cloud Storage in the form 'http(s)://storage.googleapis.com/\/\'.
+        "sourceUrl": "A String", # URL of the zip file to deploy from. Must be a URL to a resource in Google Cloud Storage in the form 'http(s)://storage.googleapis.com//'.
       },
     },
-    "createTime": "A String", # Time that this version was created. @OutputOnly
+    "createTime": "A String", # Time that this version was created.@OutputOnly
     "network": { # Extra network settings. Only applicable for VM runtimes. # Extra network settings. Only applicable for VM runtimes.
       "instanceTag": "A String", # Tag to apply to the VM instance during creation.
       "forwardedPorts": [ # List of ports, or port pairs, to forward from the virtual machine to the application container.
         "A String",
       ],
-      "name": "A String", # Google Cloud Platform network where the virtual machines are created. Specify the short name, not the resource path. Defaults to `default`.
+      "name": "A String", # Google Cloud Platform network where the virtual machines are created. Specify the short name, not the resource path.Defaults to default.
+      "subnetworkName": "A String", # Google Cloud Platform sub-network where the virtual machines are created. Specify the short name, not the resource path.If a subnetwork name is specified, a network name will also be required unless it is for the default network. If the network the VM instance is being created in is a Legacy network, then the IP address is allocated from the IPv4Range. If the network the VM instance is being created in is an auto Subnet Mode Network, then only network name should be specified (not the subnetwork_name) and the IP address is created from the IPCidrRange of the subnetwork that exists in that zone for that network. If the network the VM instance is being created in is a custom Subnet Mode Network, then the subnetwork_name must be specified and the IP address is created from the IPCidrRange of the subnetwork.If specified, the subnetwork must exist in the same region as the Flex app.
     },
-    "nobuildFilesRegex": "A String", # Files that match this pattern will not be built into this version. Only applicable for Go runtimes. Only returned in `GET` requests if `view=FULL` is set.
-    "name": "A String", # Full path to the Version resource in the API. Example: `apps/myapp/services/default/versions/v1`. @OutputOnly
-    "handlers": [ # An ordered list of URL-matching patterns that should be applied to incoming requests. The first matching URL handles the request and other request handlers are not attempted. Only returned in `GET` requests if `view=FULL` is set.
+    "nobuildFilesRegex": "A String", # Files that match this pattern will not be built into this version. Only applicable for Go runtimes.Only returned in GET requests if view=FULL is set.
+    "name": "A String", # Full path to the Version resource in the API. Example: apps/myapp/services/default/versions/v1.@OutputOnly
+    "handlers": [ # An ordered list of URL-matching patterns that should be applied to incoming requests. The first matching URL handles the request and other request handlers are not attempted.Only returned in GET requests if view=FULL is set.
       { # URL pattern and description of how the URL should be handled. App Engine can handle URLs by executing application code or by serving static files uploaded with the version, such as images, CSS, or JavaScript.
         "securityLevel": "A String", # Security (HTTPS) enforcement for this URL.
-        "authFailAction": "A String", # Action to take when users access resources that require authentication. Defaults to `redirect`.
+        "authFailAction": "A String", # Action to take when users access resources that require authentication. Defaults to redirect.
         "urlRegex": "A String", # URL prefix. Uses regular expression syntax, which means regexp special characters must be escaped, but should not contain groupings. All URLs that begin with this prefix are handled by this handler, using the portion of the URL after the prefix as part of the file path.
         "script": { # Executes a script to handle the request that matches the URL pattern. # Executes a script to handle the request that matches this URL pattern.
           "scriptPath": "A String", # Path to the script from the application root directory.
         },
         "staticFiles": { # Files served directly to the user for a given URL, such as images, CSS stylesheets, or JavaScript source files. Static file handlers describe which files in the application directory are static files, and which URLs serve them. # Returns the contents of a file, such as an image, as the response.
-          "mimeType": "A String", # MIME type used to serve all files served by this handler. Defaults to file-specific MIME types, which are derived from each file's filename extension.
+          "mimeType": "A String", # MIME type used to serve all files served by this handler.Defaults to file-specific MIME types, which are derived from each file's filename extension.
           "applicationReadable": True or False, # Whether files should also be uploaded as code data. By default, files declared in static file handlers are uploaded as static data and are only served to end users; they cannot be read by the application. If enabled, uploads are charged against both your code and static data storage resource quotas.
           "expiration": "A String", # Time a static file served by this handler should be cached by web proxies and browsers.
           "requireMatchingFile": True or False, # Whether this handler should match the request if the file referenced by the handler does not exist.
@@ -806,11 +854,11 @@
           "scriptPath": "A String", # Path to the script from the application root directory.
         },
         "login": "A String", # Level of login required to access this resource.
-        "redirectHttpResponseCode": "A String", # `30x` code to use when performing redirects for the `secure` field. Defaults to `302`.
+        "redirectHttpResponseCode": "A String", # 30x code to use when performing redirects for the secure field. Defaults to 302.
       },
     ],
-    "servingStatus": "A String", # Current serving status of this version. Only the versions with a `SERVING` status create instances and can be billed. `SERVING_STATUS_UNSPECIFIED` is an invalid value. Defaults to `SERVING`.
-    "runtime": "A String", # Desired runtime. Example: `python27`.
+    "servingStatus": "A String", # Current serving status of this version. Only the versions with a SERVING status create instances and can be billed.SERVING_STATUS_UNSPECIFIED is an invalid value. Defaults to SERVING.
+    "runtime": "A String", # Desired runtime. Example: python27.
   }
 
   updateMask: string, Standard field mask for the set of fields to be updated.
@@ -820,10 +868,10 @@
   An object of the form:
 
     { # This resource represents a long-running operation that is the result of a network API call.
-    "response": { # The normal response of the operation in case of success. If the original method returns no data on success, such as `Delete`, the response is `google.protobuf.Empty`. If the original method is standard `Get`/`Create`/`Update`, the response should be the resource. For other methods, the response should have the type `XxxResponse`, where `Xxx` is the original method name. For example, if the original method name is `TakeSnapshot()`, the inferred response type is `TakeSnapshotResponse`.
+    "response": { # The normal response of the operation in case of success. If the original method returns no data on success, such as Delete, the response is google.protobuf.Empty. If the original method is standard Get/Create/Update, the response should be the resource. For other methods, the response should have the type XxxResponse, where Xxx is the original method name. For example, if the original method name is TakeSnapshot(), the inferred response type is TakeSnapshotResponse.
       "a_key": "", # Properties of the object. Contains field @type with type URL.
     },
-    "error": { # The `Status` type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by [gRPC](https://github.com/grpc). The error model is designed to be: - Simple to use and understand for most users - Flexible enough to meet unexpected needs # Overview The `Status` message contains three pieces of data: error code, error message, and error details. The error code should be an enum value of google.rpc.Code, but it may accept additional error codes if needed. The error message should be a developer-facing English message that helps developers *understand* and *resolve* the error. If a localized user-facing error message is needed, put the localized message in the error details or localize it in the client. The optional error details may contain arbitrary information about the error. There is a predefined set of error detail types in the package `google.rpc` which can be used for common error conditions. # Language mapping The `Status` message is the logical representation of the error model, but it is not necessarily the actual wire format. When the `Status` message is exposed in different client libraries and different wire protocols, it can be mapped differently. For example, it will likely be mapped to some exceptions in Java, but more likely mapped to some error codes in C. # Other uses The error model and the `Status` message can be used in a variety of environments, either with or without APIs, to provide a consistent developer experience across different environments. Example uses of this error model include: - Partial errors. If a service needs to return partial errors to the client, it may embed the `Status` in the normal response to indicate the partial errors. - Workflow errors. A typical workflow has multiple steps. Each step may have a `Status` message for error reporting purpose. - Batch operations. If a client uses batch request and batch response, the `Status` message should be used directly inside batch response, one for each error sub-response. - Asynchronous operations. If an API call embeds asynchronous operation results in its response, the status of those operations should be represented directly using the `Status` message. - Logging. If some API errors are stored in logs, the message `Status` could be used directly after any stripping needed for security/privacy reasons. # The error result of the operation in case of failure.
+    "error": { # The Status type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by gRPC (https://github.com/grpc). The error model is designed to be: Simple to use and understand for most users Flexible enough to meet unexpected needsOverviewThe Status message contains three pieces of data: error code, error message, and error details. The error code should be an enum value of google.rpc.Code, but it may accept additional error codes if needed. The error message should be a developer-facing English message that helps developers understand and resolve the error. If a localized user-facing error message is needed, put the localized message in the error details or localize it in the client. The optional error details may contain arbitrary information about the error. There is a predefined set of error detail types in the package google.rpc which can be used for common error conditions.Language mappingThe Status message is the logical representation of the error model, but it is not necessarily the actual wire format. When the Status message is exposed in different client libraries and different wire protocols, it can be mapped differently. For example, it will likely be mapped to some exceptions in Java, but more likely mapped to some error codes in C.Other usesThe error model and the Status message can be used in a variety of environments, either with or without APIs, to provide a consistent developer experience across different environments.Example uses of this error model include: Partial errors. If a service needs to return partial errors to the client, it may embed the Status in the normal response to indicate the partial errors. Workflow errors. A typical workflow has multiple steps. Each step may have a Status message for error reporting purpose. Batch operations. If a client uses batch request and batch response, the Status message should be used directly inside batch response, one for each error sub-response. Asynchronous operations. If an API call embeds asynchronous operation results in its response, the status of those operations should be represented directly using the Status message. Logging. If some API errors are stored in logs, the message Status could be used directly after any stripping needed for security/privacy reasons. # The error result of the operation in case of failure or cancellation.
       "message": "A String", # A developer-facing error message, which should be in English. Any user-facing error message should be localized and sent in the google.rpc.Status.details field, or localized by the client.
       "code": 42, # The status code, which should be an enum value of google.rpc.Code.
       "details": [ # A list of messages that carry the error details. There will be a common set of message types for APIs to use.
@@ -832,8 +880,8 @@
         },
       ],
     },
-    "done": True or False, # If the value is `false`, it means the operation is still in progress. If true, the operation is completed, and either `error` or `response` is available.
-    "name": "A String", # The server-assigned name, which is only unique within the same service that originally returns it. If you use the default HTTP mapping, the `name` should have the format of `operations/some/unique/name`.
+    "done": True or False, # If the value is false, it means the operation is still in progress. If true, the operation is completed, and either error or response is available.
+    "name": "A String", # The server-assigned name, which is only unique within the same service that originally returns it. If you use the default HTTP mapping, the name should have the format of operations/some/unique/name.
     "metadata": { # Service-specific metadata associated with the operation. It typically contains progress information and common metadata such as create time. Some services might not provide such metadata. Any method that returns a long-running operation should document the metadata type, if any.
       "a_key": "", # Properties of the object. Contains field @type with type URL.
     },
diff --git a/docs/dyn/appengine_v1.apps.services.versions.instances.html b/docs/dyn/appengine_v1.apps.services.versions.instances.html
index 8a33df9..10345fa 100644
--- a/docs/dyn/appengine_v1.apps.services.versions.instances.html
+++ b/docs/dyn/appengine_v1.apps.services.versions.instances.html
@@ -76,7 +76,7 @@
 <h2>Instance Methods</h2>
 <p class="toc_element">
   <code><a href="#debug">debug(appsId, servicesId, versionsId, instancesId, body, x__xgafv=None)</a></code></p>
-<p class="firstline">Enables debugging on a VM instance. This allows you to use the SSH command to connect to the virtual machine where the instance lives. While in "debug mode", the instance continues to serve live traffic. You should delete the instance when you are done debugging and then allow the system to take over and determine if another instance should be started. Only applicable for instances in App Engine flexible environment.</p>
+<p class="firstline">Enables debugging on a VM instance. This allows you to use the SSH command to connect to the virtual machine where the instance lives. While in "debug mode", the instance continues to serve live traffic. You should delete the instance when you are done debugging and then allow the system to take over and determine if another instance should be started.Only applicable for instances in App Engine flexible environment.</p>
 <p class="toc_element">
   <code><a href="#delete">delete(appsId, servicesId, versionsId, instancesId, x__xgafv=None)</a></code></p>
 <p class="firstline">Stops a running instance.</p>
@@ -92,17 +92,18 @@
 <h3>Method Details</h3>
 <div class="method">
     <code class="details" id="debug">debug(appsId, servicesId, versionsId, instancesId, body, x__xgafv=None)</code>
-  <pre>Enables debugging on a VM instance. This allows you to use the SSH command to connect to the virtual machine where the instance lives. While in "debug mode", the instance continues to serve live traffic. You should delete the instance when you are done debugging and then allow the system to take over and determine if another instance should be started. Only applicable for instances in App Engine flexible environment.
+  <pre>Enables debugging on a VM instance. This allows you to use the SSH command to connect to the virtual machine where the instance lives. While in "debug mode", the instance continues to serve live traffic. You should delete the instance when you are done debugging and then allow the system to take over and determine if another instance should be started.Only applicable for instances in App Engine flexible environment.
 
 Args:
-  appsId: string, Part of `name`. Name of the resource requested. Example: `apps/myapp/services/default/versions/v1/instances/instance-1`. (required)
+  appsId: string, Part of `name`. Name of the resource requested. Example: apps/myapp/services/default/versions/v1/instances/instance-1. (required)
   servicesId: string, Part of `name`. See documentation of `appsId`. (required)
   versionsId: string, Part of `name`. See documentation of `appsId`. (required)
   instancesId: string, Part of `name`. See documentation of `appsId`. (required)
   body: object, The request body. (required)
     The object takes the form of:
 
-{ # Request message for `Instances.DebugInstance`.
+{ # Request message for Instances.DebugInstance.
+    "sshKey": "A String", # Public SSH key to add to the instance. Examples: [USERNAME]:ssh-rsa [KEY_VALUE] [USERNAME] [USERNAME]:ssh-rsa [KEY_VALUE] google-ssh {"userName":"[USERNAME]","expireOn":"[EXPIRE_TIME]"}For more information, see Adding and Removing SSH Keys (https://cloud.google.com/compute/docs/instances/adding-removing-ssh-keys).
   }
 
   x__xgafv: string, V1 error format.
@@ -111,10 +112,10 @@
   An object of the form:
 
     { # This resource represents a long-running operation that is the result of a network API call.
-    "response": { # The normal response of the operation in case of success. If the original method returns no data on success, such as `Delete`, the response is `google.protobuf.Empty`. If the original method is standard `Get`/`Create`/`Update`, the response should be the resource. For other methods, the response should have the type `XxxResponse`, where `Xxx` is the original method name. For example, if the original method name is `TakeSnapshot()`, the inferred response type is `TakeSnapshotResponse`.
+    "response": { # The normal response of the operation in case of success. If the original method returns no data on success, such as Delete, the response is google.protobuf.Empty. If the original method is standard Get/Create/Update, the response should be the resource. For other methods, the response should have the type XxxResponse, where Xxx is the original method name. For example, if the original method name is TakeSnapshot(), the inferred response type is TakeSnapshotResponse.
       "a_key": "", # Properties of the object. Contains field @type with type URL.
     },
-    "error": { # The `Status` type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by [gRPC](https://github.com/grpc). The error model is designed to be: - Simple to use and understand for most users - Flexible enough to meet unexpected needs # Overview The `Status` message contains three pieces of data: error code, error message, and error details. The error code should be an enum value of google.rpc.Code, but it may accept additional error codes if needed. The error message should be a developer-facing English message that helps developers *understand* and *resolve* the error. If a localized user-facing error message is needed, put the localized message in the error details or localize it in the client. The optional error details may contain arbitrary information about the error. There is a predefined set of error detail types in the package `google.rpc` which can be used for common error conditions. # Language mapping The `Status` message is the logical representation of the error model, but it is not necessarily the actual wire format. When the `Status` message is exposed in different client libraries and different wire protocols, it can be mapped differently. For example, it will likely be mapped to some exceptions in Java, but more likely mapped to some error codes in C. # Other uses The error model and the `Status` message can be used in a variety of environments, either with or without APIs, to provide a consistent developer experience across different environments. Example uses of this error model include: - Partial errors. If a service needs to return partial errors to the client, it may embed the `Status` in the normal response to indicate the partial errors. - Workflow errors. A typical workflow has multiple steps. Each step may have a `Status` message for error reporting purpose. - Batch operations. If a client uses batch request and batch response, the `Status` message should be used directly inside batch response, one for each error sub-response. - Asynchronous operations. If an API call embeds asynchronous operation results in its response, the status of those operations should be represented directly using the `Status` message. - Logging. If some API errors are stored in logs, the message `Status` could be used directly after any stripping needed for security/privacy reasons. # The error result of the operation in case of failure.
+    "error": { # The Status type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by gRPC (https://github.com/grpc). The error model is designed to be: Simple to use and understand for most users Flexible enough to meet unexpected needsOverviewThe Status message contains three pieces of data: error code, error message, and error details. The error code should be an enum value of google.rpc.Code, but it may accept additional error codes if needed. The error message should be a developer-facing English message that helps developers understand and resolve the error. If a localized user-facing error message is needed, put the localized message in the error details or localize it in the client. The optional error details may contain arbitrary information about the error. There is a predefined set of error detail types in the package google.rpc which can be used for common error conditions.Language mappingThe Status message is the logical representation of the error model, but it is not necessarily the actual wire format. When the Status message is exposed in different client libraries and different wire protocols, it can be mapped differently. For example, it will likely be mapped to some exceptions in Java, but more likely mapped to some error codes in C.Other usesThe error model and the Status message can be used in a variety of environments, either with or without APIs, to provide a consistent developer experience across different environments.Example uses of this error model include: Partial errors. If a service needs to return partial errors to the client, it may embed the Status in the normal response to indicate the partial errors. Workflow errors. A typical workflow has multiple steps. Each step may have a Status message for error reporting purpose. Batch operations. If a client uses batch request and batch response, the Status message should be used directly inside batch response, one for each error sub-response. Asynchronous operations. If an API call embeds asynchronous operation results in its response, the status of those operations should be represented directly using the Status message. Logging. If some API errors are stored in logs, the message Status could be used directly after any stripping needed for security/privacy reasons. # The error result of the operation in case of failure or cancellation.
       "message": "A String", # A developer-facing error message, which should be in English. Any user-facing error message should be localized and sent in the google.rpc.Status.details field, or localized by the client.
       "code": 42, # The status code, which should be an enum value of google.rpc.Code.
       "details": [ # A list of messages that carry the error details. There will be a common set of message types for APIs to use.
@@ -123,8 +124,8 @@
         },
       ],
     },
-    "done": True or False, # If the value is `false`, it means the operation is still in progress. If true, the operation is completed, and either `error` or `response` is available.
-    "name": "A String", # The server-assigned name, which is only unique within the same service that originally returns it. If you use the default HTTP mapping, the `name` should have the format of `operations/some/unique/name`.
+    "done": True or False, # If the value is false, it means the operation is still in progress. If true, the operation is completed, and either error or response is available.
+    "name": "A String", # The server-assigned name, which is only unique within the same service that originally returns it. If you use the default HTTP mapping, the name should have the format of operations/some/unique/name.
     "metadata": { # Service-specific metadata associated with the operation. It typically contains progress information and common metadata such as create time. Some services might not provide such metadata. Any method that returns a long-running operation should document the metadata type, if any.
       "a_key": "", # Properties of the object. Contains field @type with type URL.
     },
@@ -136,7 +137,7 @@
   <pre>Stops a running instance.
 
 Args:
-  appsId: string, Part of `name`. Name of the resource requested. Example: `apps/myapp/services/default/versions/v1/instances/instance-1`. (required)
+  appsId: string, Part of `name`. Name of the resource requested. Example: apps/myapp/services/default/versions/v1/instances/instance-1. (required)
   servicesId: string, Part of `name`. See documentation of `appsId`. (required)
   versionsId: string, Part of `name`. See documentation of `appsId`. (required)
   instancesId: string, Part of `name`. See documentation of `appsId`. (required)
@@ -146,10 +147,10 @@
   An object of the form:
 
     { # This resource represents a long-running operation that is the result of a network API call.
-    "response": { # The normal response of the operation in case of success. If the original method returns no data on success, such as `Delete`, the response is `google.protobuf.Empty`. If the original method is standard `Get`/`Create`/`Update`, the response should be the resource. For other methods, the response should have the type `XxxResponse`, where `Xxx` is the original method name. For example, if the original method name is `TakeSnapshot()`, the inferred response type is `TakeSnapshotResponse`.
+    "response": { # The normal response of the operation in case of success. If the original method returns no data on success, such as Delete, the response is google.protobuf.Empty. If the original method is standard Get/Create/Update, the response should be the resource. For other methods, the response should have the type XxxResponse, where Xxx is the original method name. For example, if the original method name is TakeSnapshot(), the inferred response type is TakeSnapshotResponse.
       "a_key": "", # Properties of the object. Contains field @type with type URL.
     },
-    "error": { # The `Status` type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by [gRPC](https://github.com/grpc). The error model is designed to be: - Simple to use and understand for most users - Flexible enough to meet unexpected needs # Overview The `Status` message contains three pieces of data: error code, error message, and error details. The error code should be an enum value of google.rpc.Code, but it may accept additional error codes if needed. The error message should be a developer-facing English message that helps developers *understand* and *resolve* the error. If a localized user-facing error message is needed, put the localized message in the error details or localize it in the client. The optional error details may contain arbitrary information about the error. There is a predefined set of error detail types in the package `google.rpc` which can be used for common error conditions. # Language mapping The `Status` message is the logical representation of the error model, but it is not necessarily the actual wire format. When the `Status` message is exposed in different client libraries and different wire protocols, it can be mapped differently. For example, it will likely be mapped to some exceptions in Java, but more likely mapped to some error codes in C. # Other uses The error model and the `Status` message can be used in a variety of environments, either with or without APIs, to provide a consistent developer experience across different environments. Example uses of this error model include: - Partial errors. If a service needs to return partial errors to the client, it may embed the `Status` in the normal response to indicate the partial errors. - Workflow errors. A typical workflow has multiple steps. Each step may have a `Status` message for error reporting purpose. - Batch operations. If a client uses batch request and batch response, the `Status` message should be used directly inside batch response, one for each error sub-response. - Asynchronous operations. If an API call embeds asynchronous operation results in its response, the status of those operations should be represented directly using the `Status` message. - Logging. If some API errors are stored in logs, the message `Status` could be used directly after any stripping needed for security/privacy reasons. # The error result of the operation in case of failure.
+    "error": { # The Status type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by gRPC (https://github.com/grpc). The error model is designed to be: Simple to use and understand for most users Flexible enough to meet unexpected needsOverviewThe Status message contains three pieces of data: error code, error message, and error details. The error code should be an enum value of google.rpc.Code, but it may accept additional error codes if needed. The error message should be a developer-facing English message that helps developers understand and resolve the error. If a localized user-facing error message is needed, put the localized message in the error details or localize it in the client. The optional error details may contain arbitrary information about the error. There is a predefined set of error detail types in the package google.rpc which can be used for common error conditions.Language mappingThe Status message is the logical representation of the error model, but it is not necessarily the actual wire format. When the Status message is exposed in different client libraries and different wire protocols, it can be mapped differently. For example, it will likely be mapped to some exceptions in Java, but more likely mapped to some error codes in C.Other usesThe error model and the Status message can be used in a variety of environments, either with or without APIs, to provide a consistent developer experience across different environments.Example uses of this error model include: Partial errors. If a service needs to return partial errors to the client, it may embed the Status in the normal response to indicate the partial errors. Workflow errors. A typical workflow has multiple steps. Each step may have a Status message for error reporting purpose. Batch operations. If a client uses batch request and batch response, the Status message should be used directly inside batch response, one for each error sub-response. Asynchronous operations. If an API call embeds asynchronous operation results in its response, the status of those operations should be represented directly using the Status message. Logging. If some API errors are stored in logs, the message Status could be used directly after any stripping needed for security/privacy reasons. # The error result of the operation in case of failure or cancellation.
       "message": "A String", # A developer-facing error message, which should be in English. Any user-facing error message should be localized and sent in the google.rpc.Status.details field, or localized by the client.
       "code": 42, # The status code, which should be an enum value of google.rpc.Code.
       "details": [ # A list of messages that carry the error details. There will be a common set of message types for APIs to use.
@@ -158,8 +159,8 @@
         },
       ],
     },
-    "done": True or False, # If the value is `false`, it means the operation is still in progress. If true, the operation is completed, and either `error` or `response` is available.
-    "name": "A String", # The server-assigned name, which is only unique within the same service that originally returns it. If you use the default HTTP mapping, the `name` should have the format of `operations/some/unique/name`.
+    "done": True or False, # If the value is false, it means the operation is still in progress. If true, the operation is completed, and either error or response is available.
+    "name": "A String", # The server-assigned name, which is only unique within the same service that originally returns it. If you use the default HTTP mapping, the name should have the format of operations/some/unique/name.
     "metadata": { # Service-specific metadata associated with the operation. It typically contains progress information and common metadata such as create time. Some services might not provide such metadata. Any method that returns a long-running operation should document the metadata type, if any.
       "a_key": "", # Properties of the object. Contains field @type with type URL.
     },
@@ -171,7 +172,7 @@
   <pre>Gets instance information.
 
 Args:
-  appsId: string, Part of `name`. Name of the resource requested. Example: `apps/myapp/services/default/versions/v1/instances/instance-1`. (required)
+  appsId: string, Part of `name`. Name of the resource requested. Example: apps/myapp/services/default/versions/v1/instances/instance-1. (required)
   servicesId: string, Part of `name`. See documentation of `appsId`. (required)
   versionsId: string, Part of `name`. See documentation of `appsId`. (required)
   instancesId: string, Part of `name`. See documentation of `appsId`. (required)
@@ -181,21 +182,22 @@
   An object of the form:
 
     { # An Instance resource is the computing unit that App Engine uses to automatically scale an application.
-    "errors": 42, # Number of errors since this instance was started. @OutputOnly
-    "name": "A String", # Full path to the Instance resource in the API. Example: `apps/myapp/services/default/versions/v1/instances/instance-1`. @OutputOnly
-    "appEngineRelease": "A String", # App Engine release this instance is running on. @OutputOnly
-    "vmId": "A String", # Virtual machine ID of this instance. Only applicable for instances in App Engine flexible environment. @OutputOnly
-    "memoryUsage": "A String", # Total memory in use (bytes). @OutputOnly
-    "id": "A String", # Relative name of the instance within the version. Example: `instance-1`. @OutputOnly
-    "averageLatency": 42, # Average latency (ms) over the last minute. @OutputOnly
-    "vmDebugEnabled": True or False, # Whether this instance is in debug mode. Only applicable for instances in App Engine flexible environment. @OutputOnly
-    "startTime": "A String", # Time that this instance was started. @OutputOnly
-    "qps": 3.14, # Average queries per second (QPS) over the last minute. @OutputOnly
-    "requests": 42, # Number of requests since this instance was started. @OutputOnly
-    "vmName": "A String", # Name of the virtual machine where this instance lives. Only applicable for instances in App Engine flexible environment. @OutputOnly
-    "availability": "A String", # Availability of the instance. @OutputOnly
-    "vmZoneName": "A String", # Zone where the virtual machine is located. Only applicable for instances in App Engine flexible environment. @OutputOnly
-    "vmStatus": "A String", # Status of the virtual machine where this instance lives. Only applicable for instances in App Engine flexible environment. @OutputOnly
+    "errors": 42, # Number of errors since this instance was started.@OutputOnly
+    "name": "A String", # Full path to the Instance resource in the API. Example: apps/myapp/services/default/versions/v1/instances/instance-1.@OutputOnly
+    "appEngineRelease": "A String", # App Engine release this instance is running on.@OutputOnly
+    "vmId": "A String", # Virtual machine ID of this instance. Only applicable for instances in App Engine flexible environment.@OutputOnly
+    "memoryUsage": "A String", # Total memory in use (bytes).@OutputOnly
+    "id": "A String", # Relative name of the instance within the version. Example: instance-1.@OutputOnly
+    "averageLatency": 42, # Average latency (ms) over the last minute.@OutputOnly
+    "vmDebugEnabled": True or False, # Whether this instance is in debug mode. Only applicable for instances in App Engine flexible environment.@OutputOnly
+    "startTime": "A String", # Time that this instance was started.@OutputOnly
+    "vmIp": "A String", # The IP address of this instance. Only applicable for instances in App Engine flexible environment.@OutputOnly
+    "qps": 3.14, # Average queries per second (QPS) over the last minute.@OutputOnly
+    "requests": 42, # Number of requests since this instance was started.@OutputOnly
+    "vmName": "A String", # Name of the virtual machine where this instance lives. Only applicable for instances in App Engine flexible environment.@OutputOnly
+    "availability": "A String", # Availability of the instance.@OutputOnly
+    "vmZoneName": "A String", # Zone where the virtual machine is located. Only applicable for instances in App Engine flexible environment.@OutputOnly
+    "vmStatus": "A String", # Status of the virtual machine where this instance lives. Only applicable for instances in App Engine flexible environment.@OutputOnly
   }</pre>
 </div>
 
@@ -204,7 +206,7 @@
   <pre>Lists the instances of a version.
 
 Args:
-  appsId: string, Part of `parent`. Name of the parent Version resource. Example: `apps/myapp/services/default/versions/v1`. (required)
+  appsId: string, Part of `parent`. Name of the parent Version resource. Example: apps/myapp/services/default/versions/v1. (required)
   servicesId: string, Part of `parent`. See documentation of `appsId`. (required)
   versionsId: string, Part of `parent`. See documentation of `appsId`. (required)
   pageSize: integer, Maximum results to return per page.
@@ -214,25 +216,26 @@
 Returns:
   An object of the form:
 
-    { # Response message for `Instances.ListInstances`.
+    { # Response message for Instances.ListInstances.
     "nextPageToken": "A String", # Continuation token for fetching the next page of results.
     "instances": [ # The instances belonging to the requested version.
       { # An Instance resource is the computing unit that App Engine uses to automatically scale an application.
-        "errors": 42, # Number of errors since this instance was started. @OutputOnly
-        "name": "A String", # Full path to the Instance resource in the API. Example: `apps/myapp/services/default/versions/v1/instances/instance-1`. @OutputOnly
-        "appEngineRelease": "A String", # App Engine release this instance is running on. @OutputOnly
-        "vmId": "A String", # Virtual machine ID of this instance. Only applicable for instances in App Engine flexible environment. @OutputOnly
-        "memoryUsage": "A String", # Total memory in use (bytes). @OutputOnly
-        "id": "A String", # Relative name of the instance within the version. Example: `instance-1`. @OutputOnly
-        "averageLatency": 42, # Average latency (ms) over the last minute. @OutputOnly
-        "vmDebugEnabled": True or False, # Whether this instance is in debug mode. Only applicable for instances in App Engine flexible environment. @OutputOnly
-        "startTime": "A String", # Time that this instance was started. @OutputOnly
-        "qps": 3.14, # Average queries per second (QPS) over the last minute. @OutputOnly
-        "requests": 42, # Number of requests since this instance was started. @OutputOnly
-        "vmName": "A String", # Name of the virtual machine where this instance lives. Only applicable for instances in App Engine flexible environment. @OutputOnly
-        "availability": "A String", # Availability of the instance. @OutputOnly
-        "vmZoneName": "A String", # Zone where the virtual machine is located. Only applicable for instances in App Engine flexible environment. @OutputOnly
-        "vmStatus": "A String", # Status of the virtual machine where this instance lives. Only applicable for instances in App Engine flexible environment. @OutputOnly
+        "errors": 42, # Number of errors since this instance was started.@OutputOnly
+        "name": "A String", # Full path to the Instance resource in the API. Example: apps/myapp/services/default/versions/v1/instances/instance-1.@OutputOnly
+        "appEngineRelease": "A String", # App Engine release this instance is running on.@OutputOnly
+        "vmId": "A String", # Virtual machine ID of this instance. Only applicable for instances in App Engine flexible environment.@OutputOnly
+        "memoryUsage": "A String", # Total memory in use (bytes).@OutputOnly
+        "id": "A String", # Relative name of the instance within the version. Example: instance-1.@OutputOnly
+        "averageLatency": 42, # Average latency (ms) over the last minute.@OutputOnly
+        "vmDebugEnabled": True or False, # Whether this instance is in debug mode. Only applicable for instances in App Engine flexible environment.@OutputOnly
+        "startTime": "A String", # Time that this instance was started.@OutputOnly
+        "vmIp": "A String", # The IP address of this instance. Only applicable for instances in App Engine flexible environment.@OutputOnly
+        "qps": 3.14, # Average queries per second (QPS) over the last minute.@OutputOnly
+        "requests": 42, # Number of requests since this instance was started.@OutputOnly
+        "vmName": "A String", # Name of the virtual machine where this instance lives. Only applicable for instances in App Engine flexible environment.@OutputOnly
+        "availability": "A String", # Availability of the instance.@OutputOnly
+        "vmZoneName": "A String", # Zone where the virtual machine is located. Only applicable for instances in App Engine flexible environment.@OutputOnly
+        "vmStatus": "A String", # Status of the virtual machine where this instance lives. Only applicable for instances in App Engine flexible environment.@OutputOnly
       },
     ],
   }</pre>
diff --git a/docs/dyn/appengine_v1.html b/docs/dyn/appengine_v1.html
index 14a7271..effe6f7 100644
--- a/docs/dyn/appengine_v1.html
+++ b/docs/dyn/appengine_v1.html
@@ -80,11 +80,6 @@
 <p class="firstline">Returns the apps Resource.</p>
 
 <p class="toc_element">
-  <code><a href="appengine_v1.experimental.html">experimental()</a></code>
-</p>
-<p class="firstline">Returns the experimental Resource.</p>
-
-<p class="toc_element">
   <code><a href="#new_batch_http_request">new_batch_http_request()</a></code></p>
 <p class="firstline">Create a BatchHttpRequest object based on the discovery document.</p>
 <h3>Method Details</h3>
diff --git a/docs/dyn/appengine_v1beta4.apps.html b/docs/dyn/appengine_v1beta4.apps.html
index b92a097..8e89eb4 100644
--- a/docs/dyn/appengine_v1beta4.apps.html
+++ b/docs/dyn/appengine_v1beta4.apps.html
@@ -91,38 +91,38 @@
 
 <p class="toc_element">
   <code><a href="#create">create(body, x__xgafv=None)</a></code></p>
-<p class="firstline">Creates an App Engine application for a Google Cloud Platform project. This requires a project that excludes an App Engine application. For details about creating a project without an application, see the [Google Cloud Resource Manager create project topic](https://cloud.google.com/resource-manager/docs/creating-project).</p>
+<p class="firstline">Creates an App Engine application for a Google Cloud Platform project. This requires a project that excludes an App Engine application. For details about creating a project without an application, see the Google Cloud Resource Manager create project topic (https://cloud.google.com/resource-manager/docs/creating-project).</p>
 <p class="toc_element">
   <code><a href="#get">get(appsId, x__xgafv=None, ensureResourcesExist=None)</a></code></p>
 <p class="firstline">Gets information about an application.</p>
 <p class="toc_element">
   <code><a href="#patch">patch(appsId, body, mask=None, x__xgafv=None)</a></code></p>
-<p class="firstline">Updates application parameters.</p>
+<p class="firstline">Updates the specified Application resource. You can update the following fields: auth_domain (https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1beta4/apps#Application.FIELDS.auth_domain) default_cookie_expiration (https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1beta4/apps#Application.FIELDS.default_cookie_expiration)</p>
 <h3>Method Details</h3>
 <div class="method">
     <code class="details" id="create">create(body, x__xgafv=None)</code>
-  <pre>Creates an App Engine application for a Google Cloud Platform project. This requires a project that excludes an App Engine application. For details about creating a project without an application, see the [Google Cloud Resource Manager create project topic](https://cloud.google.com/resource-manager/docs/creating-project).
+  <pre>Creates an App Engine application for a Google Cloud Platform project. This requires a project that excludes an App Engine application. For details about creating a project without an application, see the Google Cloud Resource Manager create project topic (https://cloud.google.com/resource-manager/docs/creating-project).
 
 Args:
   body: object, The request body. (required)
     The object takes the form of:
 
 { # An Application resource contains the top-level configuration of an App Engine application.
-    "defaultHostname": "A String", # Hostname used to reach the application, as resolved by App Engine. @OutputOnly
-    "name": "A String", # Full path to the Application resource in the API. Example: `apps/myapp`. @OutputOnly
-    "codeBucket": "A String", # Google Cloud Storage bucket that can be used for storing files associated with this application. This bucket is associated with the application and can be used by the gcloud deployment commands. @OutputOnly
-    "defaultBucket": "A String", # Google Cloud Storage bucket that can be used by this application to store content. @OutputOnly
-    "dispatchRules": [ # HTTP path dispatch rules for requests to the application that do not explicitly target a module or version. Rules are order-dependent. @OutputOnly
+    "defaultHostname": "A String", # Hostname used to reach the application, as resolved by App Engine.@OutputOnly
+    "name": "A String", # Full path to the Application resource in the API. Example: apps/myapp.@OutputOnly
+    "codeBucket": "A String", # Google Cloud Storage bucket that can be used for storing files associated with this application. This bucket is associated with the application and can be used by the gcloud deployment commands.@OutputOnly
+    "defaultBucket": "A String", # Google Cloud Storage bucket that can be used by this application to store content.@OutputOnly
+    "dispatchRules": [ # HTTP path dispatch rules for requests to the application that do not explicitly target a module or version. Rules are order-dependent.@OutputOnly
       { # Rules to match an HTTP request and dispatch that request to a module.
-        "path": "A String", # Pathname within the host. Must start with a "`/`". A single "`*`" can be included at the end of the path. The sum of the lengths of the domain and path may not exceed 100 characters.
-        "domain": "A String", # Domain name to match against. The wildcard "`*`" is supported if specified before a period: "`*.`". Defaults to matching all domains: "`*`".
-        "module": "A String", # Resource ID of a module in this application that should serve the matched request. The module must already exist. Example: `default`.
+        "path": "A String", # Pathname within the host. Must start with a "/". A single "*" can be included at the end of the path. The sum of the lengths of the domain and path may not exceed 100 characters.
+        "domain": "A String", # Domain name to match against. The wildcard "*" is supported if specified before a period: "*.".Defaults to matching all domains: "*".
+        "module": "A String", # Resource ID of a module in this application that should serve the matched request. The module must already exist. Example: default.
       },
     ],
-    "defaultCookieExpiration": "A String", # Cookie expiration policy for this application. @OutputOnly
-    "location": "A String", # Location from which this application will be run. Application instances will run out of data centers in the chosen location, which is also where all of the application's end user content is stored. Defaults to `us-central`. Options are: `us-central` - Central US `europe-west` - Western Europe `us-east1` - Eastern US
-    "authDomain": "A String", # Google Apps authentication domain that controls which users can access this application. Defaults to open access for any Google Account.
-    "id": "A String", # Identifier of the Application resource. This identifier is equivalent to the project ID of the Google Cloud Platform project where you want to deploy your application. Example: `myapp`.
+    "defaultCookieExpiration": "A String", # Cookie expiration policy for this application.
+    "location": "A String", # Location from which this application will be run. Application instances will run out of data centers in the chosen location, which is also where all of the application's end user content is stored.Defaults to us-central.Options are:us-central - Central USeurope-west - Western Europeus-east1 - Eastern US
+    "authDomain": "A String", # Google Apps authentication domain that controls which users can access this application.Defaults to open access for any Google Account.
+    "id": "A String", # Identifier of the Application resource. This identifier is equivalent to the project ID of the Google Cloud Platform project where you want to deploy your application. Example: myapp.
   }
 
   x__xgafv: string, V1 error format.
@@ -131,10 +131,10 @@
   An object of the form:
 
     { # This resource represents a long-running operation that is the result of a network API call.
-    "response": { # The normal response of the operation in case of success. If the original method returns no data on success, such as `Delete`, the response is `google.protobuf.Empty`. If the original method is standard `Get`/`Create`/`Update`, the response should be the resource. For other methods, the response should have the type `XxxResponse`, where `Xxx` is the original method name. For example, if the original method name is `TakeSnapshot()`, the inferred response type is `TakeSnapshotResponse`.
+    "response": { # The normal response of the operation in case of success. If the original method returns no data on success, such as Delete, the response is google.protobuf.Empty. If the original method is standard Get/Create/Update, the response should be the resource. For other methods, the response should have the type XxxResponse, where Xxx is the original method name. For example, if the original method name is TakeSnapshot(), the inferred response type is TakeSnapshotResponse.
       "a_key": "", # Properties of the object. Contains field @type with type URL.
     },
-    "error": { # The `Status` type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by [gRPC](https://github.com/grpc). The error model is designed to be: - Simple to use and understand for most users - Flexible enough to meet unexpected needs # Overview The `Status` message contains three pieces of data: error code, error message, and error details. The error code should be an enum value of google.rpc.Code, but it may accept additional error codes if needed. The error message should be a developer-facing English message that helps developers *understand* and *resolve* the error. If a localized user-facing error message is needed, put the localized message in the error details or localize it in the client. The optional error details may contain arbitrary information about the error. There is a predefined set of error detail types in the package `google.rpc` which can be used for common error conditions. # Language mapping The `Status` message is the logical representation of the error model, but it is not necessarily the actual wire format. When the `Status` message is exposed in different client libraries and different wire protocols, it can be mapped differently. For example, it will likely be mapped to some exceptions in Java, but more likely mapped to some error codes in C. # Other uses The error model and the `Status` message can be used in a variety of environments, either with or without APIs, to provide a consistent developer experience across different environments. Example uses of this error model include: - Partial errors. If a service needs to return partial errors to the client, it may embed the `Status` in the normal response to indicate the partial errors. - Workflow errors. A typical workflow has multiple steps. Each step may have a `Status` message for error reporting purpose. - Batch operations. If a client uses batch request and batch response, the `Status` message should be used directly inside batch response, one for each error sub-response. - Asynchronous operations. If an API call embeds asynchronous operation results in its response, the status of those operations should be represented directly using the `Status` message. - Logging. If some API errors are stored in logs, the message `Status` could be used directly after any stripping needed for security/privacy reasons. # The error result of the operation in case of failure.
+    "error": { # The Status type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by gRPC (https://github.com/grpc). The error model is designed to be: Simple to use and understand for most users Flexible enough to meet unexpected needsOverviewThe Status message contains three pieces of data: error code, error message, and error details. The error code should be an enum value of google.rpc.Code, but it may accept additional error codes if needed. The error message should be a developer-facing English message that helps developers understand and resolve the error. If a localized user-facing error message is needed, put the localized message in the error details or localize it in the client. The optional error details may contain arbitrary information about the error. There is a predefined set of error detail types in the package google.rpc which can be used for common error conditions.Language mappingThe Status message is the logical representation of the error model, but it is not necessarily the actual wire format. When the Status message is exposed in different client libraries and different wire protocols, it can be mapped differently. For example, it will likely be mapped to some exceptions in Java, but more likely mapped to some error codes in C.Other usesThe error model and the Status message can be used in a variety of environments, either with or without APIs, to provide a consistent developer experience across different environments.Example uses of this error model include: Partial errors. If a service needs to return partial errors to the client, it may embed the Status in the normal response to indicate the partial errors. Workflow errors. A typical workflow has multiple steps. Each step may have a Status message for error reporting purpose. Batch operations. If a client uses batch request and batch response, the Status message should be used directly inside batch response, one for each error sub-response. Asynchronous operations. If an API call embeds asynchronous operation results in its response, the status of those operations should be represented directly using the Status message. Logging. If some API errors are stored in logs, the message Status could be used directly after any stripping needed for security/privacy reasons. # The error result of the operation in case of failure or cancellation.
       "message": "A String", # A developer-facing error message, which should be in English. Any user-facing error message should be localized and sent in the google.rpc.Status.details field, or localized by the client.
       "code": 42, # The status code, which should be an enum value of google.rpc.Code.
       "details": [ # A list of messages that carry the error details. There will be a common set of message types for APIs to use.
@@ -143,8 +143,8 @@
         },
       ],
     },
-    "done": True or False, # If the value is `false`, it means the operation is still in progress. If true, the operation is completed, and either `error` or `response` is available.
-    "name": "A String", # The server-assigned name, which is only unique within the same service that originally returns it. If you use the default HTTP mapping, the `name` should have the format of `operations/some/unique/name`.
+    "done": True or False, # If the value is false, it means the operation is still in progress. If true, the operation is completed, and either error or response is available.
+    "name": "A String", # The server-assigned name, which is only unique within the same service that originally returns it. If you use the default HTTP mapping, the name should have the format of operations/some/unique/name.
     "metadata": { # Service-specific metadata associated with the operation. It typically contains progress information and common metadata such as create time. Some services might not provide such metadata. Any method that returns a long-running operation should document the metadata type, if any.
       "a_key": "", # Properties of the object. Contains field @type with type URL.
     },
@@ -156,57 +156,57 @@
   <pre>Gets information about an application.
 
 Args:
-  appsId: string, Part of `name`. Name of the application to get. Example: `apps/myapp`. (required)
+  appsId: string, Part of `name`. Name of the application to get. Example: apps/myapp. (required)
   x__xgafv: string, V1 error format.
-  ensureResourcesExist: boolean, Certain resources associated with an application are created on-demand. Controls whether these resources should be created when performing the `GET` operation. If specified and any resources could not be created, the request will fail with an error code. Additionally, this parameter can cause the request to take longer to complete.
+  ensureResourcesExist: boolean, Certain resources associated with an application are created on-demand. Controls whether these resources should be created when performing the GET operation. If specified and any resources could not be created, the request will fail with an error code. Additionally, this parameter can cause the request to take longer to complete.
 
 Returns:
   An object of the form:
 
     { # An Application resource contains the top-level configuration of an App Engine application.
-      "defaultHostname": "A String", # Hostname used to reach the application, as resolved by App Engine. @OutputOnly
-      "name": "A String", # Full path to the Application resource in the API. Example: `apps/myapp`. @OutputOnly
-      "codeBucket": "A String", # Google Cloud Storage bucket that can be used for storing files associated with this application. This bucket is associated with the application and can be used by the gcloud deployment commands. @OutputOnly
-      "defaultBucket": "A String", # Google Cloud Storage bucket that can be used by this application to store content. @OutputOnly
-      "dispatchRules": [ # HTTP path dispatch rules for requests to the application that do not explicitly target a module or version. Rules are order-dependent. @OutputOnly
+      "defaultHostname": "A String", # Hostname used to reach the application, as resolved by App Engine.@OutputOnly
+      "name": "A String", # Full path to the Application resource in the API. Example: apps/myapp.@OutputOnly
+      "codeBucket": "A String", # Google Cloud Storage bucket that can be used for storing files associated with this application. This bucket is associated with the application and can be used by the gcloud deployment commands.@OutputOnly
+      "defaultBucket": "A String", # Google Cloud Storage bucket that can be used by this application to store content.@OutputOnly
+      "dispatchRules": [ # HTTP path dispatch rules for requests to the application that do not explicitly target a module or version. Rules are order-dependent.@OutputOnly
         { # Rules to match an HTTP request and dispatch that request to a module.
-          "path": "A String", # Pathname within the host. Must start with a "`/`". A single "`*`" can be included at the end of the path. The sum of the lengths of the domain and path may not exceed 100 characters.
-          "domain": "A String", # Domain name to match against. The wildcard "`*`" is supported if specified before a period: "`*.`". Defaults to matching all domains: "`*`".
-          "module": "A String", # Resource ID of a module in this application that should serve the matched request. The module must already exist. Example: `default`.
+          "path": "A String", # Pathname within the host. Must start with a "/". A single "*" can be included at the end of the path. The sum of the lengths of the domain and path may not exceed 100 characters.
+          "domain": "A String", # Domain name to match against. The wildcard "*" is supported if specified before a period: "*.".Defaults to matching all domains: "*".
+          "module": "A String", # Resource ID of a module in this application that should serve the matched request. The module must already exist. Example: default.
         },
       ],
-      "defaultCookieExpiration": "A String", # Cookie expiration policy for this application. @OutputOnly
-      "location": "A String", # Location from which this application will be run. Application instances will run out of data centers in the chosen location, which is also where all of the application's end user content is stored. Defaults to `us-central`. Options are: `us-central` - Central US `europe-west` - Western Europe `us-east1` - Eastern US
-      "authDomain": "A String", # Google Apps authentication domain that controls which users can access this application. Defaults to open access for any Google Account.
-      "id": "A String", # Identifier of the Application resource. This identifier is equivalent to the project ID of the Google Cloud Platform project where you want to deploy your application. Example: `myapp`.
+      "defaultCookieExpiration": "A String", # Cookie expiration policy for this application.
+      "location": "A String", # Location from which this application will be run. Application instances will run out of data centers in the chosen location, which is also where all of the application's end user content is stored.Defaults to us-central.Options are:us-central - Central USeurope-west - Western Europeus-east1 - Eastern US
+      "authDomain": "A String", # Google Apps authentication domain that controls which users can access this application.Defaults to open access for any Google Account.
+      "id": "A String", # Identifier of the Application resource. This identifier is equivalent to the project ID of the Google Cloud Platform project where you want to deploy your application. Example: myapp.
     }</pre>
 </div>
 
 <div class="method">
     <code class="details" id="patch">patch(appsId, body, mask=None, x__xgafv=None)</code>
-  <pre>Updates application parameters.
+  <pre>Updates the specified Application resource. You can update the following fields: auth_domain (https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1beta4/apps#Application.FIELDS.auth_domain) default_cookie_expiration (https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1beta4/apps#Application.FIELDS.default_cookie_expiration)
 
 Args:
-  appsId: string, Part of `name`. Name of the application to update. For example: "apps/myapp". (required)
+  appsId: string, Part of `name`. Name of the Application resource to update. Example: apps/myapp. (required)
   body: object, The request body. (required)
     The object takes the form of:
 
 { # An Application resource contains the top-level configuration of an App Engine application.
-    "defaultHostname": "A String", # Hostname used to reach the application, as resolved by App Engine. @OutputOnly
-    "name": "A String", # Full path to the Application resource in the API. Example: `apps/myapp`. @OutputOnly
-    "codeBucket": "A String", # Google Cloud Storage bucket that can be used for storing files associated with this application. This bucket is associated with the application and can be used by the gcloud deployment commands. @OutputOnly
-    "defaultBucket": "A String", # Google Cloud Storage bucket that can be used by this application to store content. @OutputOnly
-    "dispatchRules": [ # HTTP path dispatch rules for requests to the application that do not explicitly target a module or version. Rules are order-dependent. @OutputOnly
+    "defaultHostname": "A String", # Hostname used to reach the application, as resolved by App Engine.@OutputOnly
+    "name": "A String", # Full path to the Application resource in the API. Example: apps/myapp.@OutputOnly
+    "codeBucket": "A String", # Google Cloud Storage bucket that can be used for storing files associated with this application. This bucket is associated with the application and can be used by the gcloud deployment commands.@OutputOnly
+    "defaultBucket": "A String", # Google Cloud Storage bucket that can be used by this application to store content.@OutputOnly
+    "dispatchRules": [ # HTTP path dispatch rules for requests to the application that do not explicitly target a module or version. Rules are order-dependent.@OutputOnly
       { # Rules to match an HTTP request and dispatch that request to a module.
-        "path": "A String", # Pathname within the host. Must start with a "`/`". A single "`*`" can be included at the end of the path. The sum of the lengths of the domain and path may not exceed 100 characters.
-        "domain": "A String", # Domain name to match against. The wildcard "`*`" is supported if specified before a period: "`*.`". Defaults to matching all domains: "`*`".
-        "module": "A String", # Resource ID of a module in this application that should serve the matched request. The module must already exist. Example: `default`.
+        "path": "A String", # Pathname within the host. Must start with a "/". A single "*" can be included at the end of the path. The sum of the lengths of the domain and path may not exceed 100 characters.
+        "domain": "A String", # Domain name to match against. The wildcard "*" is supported if specified before a period: "*.".Defaults to matching all domains: "*".
+        "module": "A String", # Resource ID of a module in this application that should serve the matched request. The module must already exist. Example: default.
       },
     ],
-    "defaultCookieExpiration": "A String", # Cookie expiration policy for this application. @OutputOnly
-    "location": "A String", # Location from which this application will be run. Application instances will run out of data centers in the chosen location, which is also where all of the application's end user content is stored. Defaults to `us-central`. Options are: `us-central` - Central US `europe-west` - Western Europe `us-east1` - Eastern US
-    "authDomain": "A String", # Google Apps authentication domain that controls which users can access this application. Defaults to open access for any Google Account.
-    "id": "A String", # Identifier of the Application resource. This identifier is equivalent to the project ID of the Google Cloud Platform project where you want to deploy your application. Example: `myapp`.
+    "defaultCookieExpiration": "A String", # Cookie expiration policy for this application.
+    "location": "A String", # Location from which this application will be run. Application instances will run out of data centers in the chosen location, which is also where all of the application's end user content is stored.Defaults to us-central.Options are:us-central - Central USeurope-west - Western Europeus-east1 - Eastern US
+    "authDomain": "A String", # Google Apps authentication domain that controls which users can access this application.Defaults to open access for any Google Account.
+    "id": "A String", # Identifier of the Application resource. This identifier is equivalent to the project ID of the Google Cloud Platform project where you want to deploy your application. Example: myapp.
   }
 
   mask: string, Standard field mask for the set of fields to be updated.
@@ -216,10 +216,10 @@
   An object of the form:
 
     { # This resource represents a long-running operation that is the result of a network API call.
-    "response": { # The normal response of the operation in case of success. If the original method returns no data on success, such as `Delete`, the response is `google.protobuf.Empty`. If the original method is standard `Get`/`Create`/`Update`, the response should be the resource. For other methods, the response should have the type `XxxResponse`, where `Xxx` is the original method name. For example, if the original method name is `TakeSnapshot()`, the inferred response type is `TakeSnapshotResponse`.
+    "response": { # The normal response of the operation in case of success. If the original method returns no data on success, such as Delete, the response is google.protobuf.Empty. If the original method is standard Get/Create/Update, the response should be the resource. For other methods, the response should have the type XxxResponse, where Xxx is the original method name. For example, if the original method name is TakeSnapshot(), the inferred response type is TakeSnapshotResponse.
       "a_key": "", # Properties of the object. Contains field @type with type URL.
     },
-    "error": { # The `Status` type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by [gRPC](https://github.com/grpc). The error model is designed to be: - Simple to use and understand for most users - Flexible enough to meet unexpected needs # Overview The `Status` message contains three pieces of data: error code, error message, and error details. The error code should be an enum value of google.rpc.Code, but it may accept additional error codes if needed. The error message should be a developer-facing English message that helps developers *understand* and *resolve* the error. If a localized user-facing error message is needed, put the localized message in the error details or localize it in the client. The optional error details may contain arbitrary information about the error. There is a predefined set of error detail types in the package `google.rpc` which can be used for common error conditions. # Language mapping The `Status` message is the logical representation of the error model, but it is not necessarily the actual wire format. When the `Status` message is exposed in different client libraries and different wire protocols, it can be mapped differently. For example, it will likely be mapped to some exceptions in Java, but more likely mapped to some error codes in C. # Other uses The error model and the `Status` message can be used in a variety of environments, either with or without APIs, to provide a consistent developer experience across different environments. Example uses of this error model include: - Partial errors. If a service needs to return partial errors to the client, it may embed the `Status` in the normal response to indicate the partial errors. - Workflow errors. A typical workflow has multiple steps. Each step may have a `Status` message for error reporting purpose. - Batch operations. If a client uses batch request and batch response, the `Status` message should be used directly inside batch response, one for each error sub-response. - Asynchronous operations. If an API call embeds asynchronous operation results in its response, the status of those operations should be represented directly using the `Status` message. - Logging. If some API errors are stored in logs, the message `Status` could be used directly after any stripping needed for security/privacy reasons. # The error result of the operation in case of failure.
+    "error": { # The Status type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by gRPC (https://github.com/grpc). The error model is designed to be: Simple to use and understand for most users Flexible enough to meet unexpected needsOverviewThe Status message contains three pieces of data: error code, error message, and error details. The error code should be an enum value of google.rpc.Code, but it may accept additional error codes if needed. The error message should be a developer-facing English message that helps developers understand and resolve the error. If a localized user-facing error message is needed, put the localized message in the error details or localize it in the client. The optional error details may contain arbitrary information about the error. There is a predefined set of error detail types in the package google.rpc which can be used for common error conditions.Language mappingThe Status message is the logical representation of the error model, but it is not necessarily the actual wire format. When the Status message is exposed in different client libraries and different wire protocols, it can be mapped differently. For example, it will likely be mapped to some exceptions in Java, but more likely mapped to some error codes in C.Other usesThe error model and the Status message can be used in a variety of environments, either with or without APIs, to provide a consistent developer experience across different environments.Example uses of this error model include: Partial errors. If a service needs to return partial errors to the client, it may embed the Status in the normal response to indicate the partial errors. Workflow errors. A typical workflow has multiple steps. Each step may have a Status message for error reporting purpose. Batch operations. If a client uses batch request and batch response, the Status message should be used directly inside batch response, one for each error sub-response. Asynchronous operations. If an API call embeds asynchronous operation results in its response, the status of those operations should be represented directly using the Status message. Logging. If some API errors are stored in logs, the message Status could be used directly after any stripping needed for security/privacy reasons. # The error result of the operation in case of failure or cancellation.
       "message": "A String", # A developer-facing error message, which should be in English. Any user-facing error message should be localized and sent in the google.rpc.Status.details field, or localized by the client.
       "code": 42, # The status code, which should be an enum value of google.rpc.Code.
       "details": [ # A list of messages that carry the error details. There will be a common set of message types for APIs to use.
@@ -228,8 +228,8 @@
         },
       ],
     },
-    "done": True or False, # If the value is `false`, it means the operation is still in progress. If true, the operation is completed, and either `error` or `response` is available.
-    "name": "A String", # The server-assigned name, which is only unique within the same service that originally returns it. If you use the default HTTP mapping, the `name` should have the format of `operations/some/unique/name`.
+    "done": True or False, # If the value is false, it means the operation is still in progress. If true, the operation is completed, and either error or response is available.
+    "name": "A String", # The server-assigned name, which is only unique within the same service that originally returns it. If you use the default HTTP mapping, the name should have the format of operations/some/unique/name.
     "metadata": { # Service-specific metadata associated with the operation. It typically contains progress information and common metadata such as create time. Some services might not provide such metadata. Any method that returns a long-running operation should document the metadata type, if any.
       "a_key": "", # Properties of the object. Contains field @type with type URL.
     },
diff --git a/docs/dyn/appengine_v1beta4.apps.locations.html b/docs/dyn/appengine_v1beta4.apps.locations.html
index b2df972..313ecca 100644
--- a/docs/dyn/appengine_v1beta4.apps.locations.html
+++ b/docs/dyn/appengine_v1beta4.apps.locations.html
@@ -100,8 +100,8 @@
     "labels": { # Cross-service attributes for the location. For example {"cloud.googleapis.com/region": "us-east1"}
       "a_key": "A String",
     },
-    "locationId": "A String", # The canonical id for this location. For example: `"us-east1"`.
-    "name": "A String", # Resource name for the location, which may vary between implementations. For example: `"projects/example-project/locations/us-east1"`
+    "locationId": "A String", # The canonical id for this location. For example: "us-east1".
+    "name": "A String", # Resource name for the location, which may vary between implementations. For example: "projects/example-project/locations/us-east1"
     "metadata": { # Service-specific metadata. For example the available capacity at the given location.
       "a_key": "", # Properties of the object. Contains field @type with type URL.
     },
@@ -129,8 +129,8 @@
         "labels": { # Cross-service attributes for the location. For example {"cloud.googleapis.com/region": "us-east1"}
           "a_key": "A String",
         },
-        "locationId": "A String", # The canonical id for this location. For example: `"us-east1"`.
-        "name": "A String", # Resource name for the location, which may vary between implementations. For example: `"projects/example-project/locations/us-east1"`
+        "locationId": "A String", # The canonical id for this location. For example: "us-east1".
+        "name": "A String", # Resource name for the location, which may vary between implementations. For example: "projects/example-project/locations/us-east1"
         "metadata": { # Service-specific metadata. For example the available capacity at the given location.
           "a_key": "", # Properties of the object. Contains field @type with type URL.
         },
diff --git a/docs/dyn/appengine_v1beta4.apps.modules.html b/docs/dyn/appengine_v1beta4.apps.modules.html
index 70dbc03..27462af 100644
--- a/docs/dyn/appengine_v1beta4.apps.modules.html
+++ b/docs/dyn/appengine_v1beta4.apps.modules.html
@@ -100,7 +100,7 @@
   <pre>Deletes the specified module and all enclosed versions.
 
 Args:
-  appsId: string, Part of `name`. Name of the resource requested. Example: `apps/myapp/modules/default`. (required)
+  appsId: string, Part of `name`. Name of the resource requested. Example: apps/myapp/modules/default. (required)
   modulesId: string, Part of `name`. See documentation of `appsId`. (required)
   x__xgafv: string, V1 error format.
 
@@ -108,10 +108,10 @@
   An object of the form:
 
     { # This resource represents a long-running operation that is the result of a network API call.
-    "response": { # The normal response of the operation in case of success. If the original method returns no data on success, such as `Delete`, the response is `google.protobuf.Empty`. If the original method is standard `Get`/`Create`/`Update`, the response should be the resource. For other methods, the response should have the type `XxxResponse`, where `Xxx` is the original method name. For example, if the original method name is `TakeSnapshot()`, the inferred response type is `TakeSnapshotResponse`.
+    "response": { # The normal response of the operation in case of success. If the original method returns no data on success, such as Delete, the response is google.protobuf.Empty. If the original method is standard Get/Create/Update, the response should be the resource. For other methods, the response should have the type XxxResponse, where Xxx is the original method name. For example, if the original method name is TakeSnapshot(), the inferred response type is TakeSnapshotResponse.
       "a_key": "", # Properties of the object. Contains field @type with type URL.
     },
-    "error": { # The `Status` type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by [gRPC](https://github.com/grpc). The error model is designed to be: - Simple to use and understand for most users - Flexible enough to meet unexpected needs # Overview The `Status` message contains three pieces of data: error code, error message, and error details. The error code should be an enum value of google.rpc.Code, but it may accept additional error codes if needed. The error message should be a developer-facing English message that helps developers *understand* and *resolve* the error. If a localized user-facing error message is needed, put the localized message in the error details or localize it in the client. The optional error details may contain arbitrary information about the error. There is a predefined set of error detail types in the package `google.rpc` which can be used for common error conditions. # Language mapping The `Status` message is the logical representation of the error model, but it is not necessarily the actual wire format. When the `Status` message is exposed in different client libraries and different wire protocols, it can be mapped differently. For example, it will likely be mapped to some exceptions in Java, but more likely mapped to some error codes in C. # Other uses The error model and the `Status` message can be used in a variety of environments, either with or without APIs, to provide a consistent developer experience across different environments. Example uses of this error model include: - Partial errors. If a service needs to return partial errors to the client, it may embed the `Status` in the normal response to indicate the partial errors. - Workflow errors. A typical workflow has multiple steps. Each step may have a `Status` message for error reporting purpose. - Batch operations. If a client uses batch request and batch response, the `Status` message should be used directly inside batch response, one for each error sub-response. - Asynchronous operations. If an API call embeds asynchronous operation results in its response, the status of those operations should be represented directly using the `Status` message. - Logging. If some API errors are stored in logs, the message `Status` could be used directly after any stripping needed for security/privacy reasons. # The error result of the operation in case of failure.
+    "error": { # The Status type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by gRPC (https://github.com/grpc). The error model is designed to be: Simple to use and understand for most users Flexible enough to meet unexpected needsOverviewThe Status message contains three pieces of data: error code, error message, and error details. The error code should be an enum value of google.rpc.Code, but it may accept additional error codes if needed. The error message should be a developer-facing English message that helps developers understand and resolve the error. If a localized user-facing error message is needed, put the localized message in the error details or localize it in the client. The optional error details may contain arbitrary information about the error. There is a predefined set of error detail types in the package google.rpc which can be used for common error conditions.Language mappingThe Status message is the logical representation of the error model, but it is not necessarily the actual wire format. When the Status message is exposed in different client libraries and different wire protocols, it can be mapped differently. For example, it will likely be mapped to some exceptions in Java, but more likely mapped to some error codes in C.Other usesThe error model and the Status message can be used in a variety of environments, either with or without APIs, to provide a consistent developer experience across different environments.Example uses of this error model include: Partial errors. If a service needs to return partial errors to the client, it may embed the Status in the normal response to indicate the partial errors. Workflow errors. A typical workflow has multiple steps. Each step may have a Status message for error reporting purpose. Batch operations. If a client uses batch request and batch response, the Status message should be used directly inside batch response, one for each error sub-response. Asynchronous operations. If an API call embeds asynchronous operation results in its response, the status of those operations should be represented directly using the Status message. Logging. If some API errors are stored in logs, the message Status could be used directly after any stripping needed for security/privacy reasons. # The error result of the operation in case of failure or cancellation.
       "message": "A String", # A developer-facing error message, which should be in English. Any user-facing error message should be localized and sent in the google.rpc.Status.details field, or localized by the client.
       "code": 42, # The status code, which should be an enum value of google.rpc.Code.
       "details": [ # A list of messages that carry the error details. There will be a common set of message types for APIs to use.
@@ -120,8 +120,8 @@
         },
       ],
     },
-    "done": True or False, # If the value is `false`, it means the operation is still in progress. If true, the operation is completed, and either `error` or `response` is available.
-    "name": "A String", # The server-assigned name, which is only unique within the same service that originally returns it. If you use the default HTTP mapping, the `name` should have the format of `operations/some/unique/name`.
+    "done": True or False, # If the value is false, it means the operation is still in progress. If true, the operation is completed, and either error or response is available.
+    "name": "A String", # The server-assigned name, which is only unique within the same service that originally returns it. If you use the default HTTP mapping, the name should have the format of operations/some/unique/name.
     "metadata": { # Service-specific metadata associated with the operation. It typically contains progress information and common metadata such as create time. Some services might not provide such metadata. Any method that returns a long-running operation should document the metadata type, if any.
       "a_key": "", # Properties of the object. Contains field @type with type URL.
     },
@@ -133,7 +133,7 @@
   <pre>Gets the current configuration of the specified module.
 
 Args:
-  appsId: string, Part of `name`. Name of the resource requested. Example: `apps/myapp/modules/default`. (required)
+  appsId: string, Part of `name`. Name of the resource requested. Example: apps/myapp/modules/default. (required)
   modulesId: string, Part of `name`. See documentation of `appsId`. (required)
   x__xgafv: string, V1 error format.
 
@@ -147,8 +147,8 @@
           "a_key": 3.14,
         },
       },
-      "name": "A String", # Full path to the Module resource in the API. Example: `apps/myapp/modules/default`. @OutputOnly
-      "id": "A String", # Relative name of the module within the application. Example: `default`. @OutputOnly
+      "name": "A String", # Full path to the Module resource in the API. Example: apps/myapp/modules/default.@OutputOnly
+      "id": "A String", # Relative name of the module within the application. Example: default.@OutputOnly
     }</pre>
 </div>
 
@@ -157,7 +157,7 @@
   <pre>Lists all the modules in the application.
 
 Args:
-  appsId: string, Part of `name`. Name of the resource requested. Example: `apps/myapp`. (required)
+  appsId: string, Part of `name`. Name of the resource requested. Example: apps/myapp. (required)
   pageSize: integer, Maximum results to return per page.
   pageToken: string, Continuation token for fetching the next page of results.
   x__xgafv: string, V1 error format.
@@ -165,7 +165,7 @@
 Returns:
   An object of the form:
 
-    { # Response message for `Modules.ListModules`.
+    { # Response message for Modules.ListModules.
     "nextPageToken": "A String", # Continuation token for fetching the next page of results.
     "modules": [ # The modules belonging to the requested application.
       { # A Module resource is a logical component of an application that can share state and communicate in a secure fashion with other modules. For example, an application that handles customer requests might include separate modules to handle tasks such as backend data analysis or API requests from mobile devices. Each module has a collection of versions that define a specific set of code used to implement the functionality of that module.
@@ -175,8 +175,8 @@
               "a_key": 3.14,
             },
           },
-          "name": "A String", # Full path to the Module resource in the API. Example: `apps/myapp/modules/default`. @OutputOnly
-          "id": "A String", # Relative name of the module within the application. Example: `default`. @OutputOnly
+          "name": "A String", # Full path to the Module resource in the API. Example: apps/myapp/modules/default.@OutputOnly
+          "id": "A String", # Relative name of the module within the application. Example: default.@OutputOnly
         },
     ],
   }</pre>
@@ -201,7 +201,7 @@
   <pre>Updates the configuration of the specified module.
 
 Args:
-  appsId: string, Part of `name`. Name of the resource to update. Example: `apps/myapp/modules/default`. (required)
+  appsId: string, Part of `name`. Name of the resource to update. Example: apps/myapp/modules/default. (required)
   modulesId: string, Part of `name`. See documentation of `appsId`. (required)
   body: object, The request body. (required)
     The object takes the form of:
@@ -213,11 +213,11 @@
         "a_key": 3.14,
       },
     },
-    "name": "A String", # Full path to the Module resource in the API. Example: `apps/myapp/modules/default`. @OutputOnly
-    "id": "A String", # Relative name of the module within the application. Example: `default`. @OutputOnly
+    "name": "A String", # Full path to the Module resource in the API. Example: apps/myapp/modules/default.@OutputOnly
+    "id": "A String", # Relative name of the module within the application. Example: default.@OutputOnly
   }
 
-  migrateTraffic: boolean, Set to `true` to gradually shift traffic from one version to another single version. By default, traffic is shifted immediately. For gradual traffic migration, the target version must be located within instances that are configured for both [warmup requests](https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1beta4/apps.modules.versions#inboundservicetype) and [automatic scaling](https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1beta4/apps.modules.versions#automaticscaling). You must specify the [`shardBy`](https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1beta4/apps.modules#shardby) field in the Module resource. Gradual traffic migration is not supported in the App Engine flexible environment. For examples, see [Migrating and Splitting Traffic](https://cloud.google.com/appengine/docs/admin-api/migrating-splitting-traffic).
+  migrateTraffic: boolean, Set to true to gradually shift traffic from one version to another single version. By default, traffic is shifted immediately. For gradual traffic migration, the target version must be located within instances that are configured for both warmup requests (https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1beta4/apps.modules.versions#inboundservicetype) and automatic scaling (https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1beta4/apps.modules.versions#automaticscaling). You must specify the shardBy (https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1beta4/apps.modules#shardby) field in the Module resource. Gradual traffic migration is not supported in the App Engine flexible environment. For examples, see Migrating and Splitting Traffic (https://cloud.google.com/appengine/docs/admin-api/migrating-splitting-traffic).
   mask: string, Standard field mask for the set of fields to be updated.
   x__xgafv: string, V1 error format.
 
@@ -225,10 +225,10 @@
   An object of the form:
 
     { # This resource represents a long-running operation that is the result of a network API call.
-    "response": { # The normal response of the operation in case of success. If the original method returns no data on success, such as `Delete`, the response is `google.protobuf.Empty`. If the original method is standard `Get`/`Create`/`Update`, the response should be the resource. For other methods, the response should have the type `XxxResponse`, where `Xxx` is the original method name. For example, if the original method name is `TakeSnapshot()`, the inferred response type is `TakeSnapshotResponse`.
+    "response": { # The normal response of the operation in case of success. If the original method returns no data on success, such as Delete, the response is google.protobuf.Empty. If the original method is standard Get/Create/Update, the response should be the resource. For other methods, the response should have the type XxxResponse, where Xxx is the original method name. For example, if the original method name is TakeSnapshot(), the inferred response type is TakeSnapshotResponse.
       "a_key": "", # Properties of the object. Contains field @type with type URL.
     },
-    "error": { # The `Status` type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by [gRPC](https://github.com/grpc). The error model is designed to be: - Simple to use and understand for most users - Flexible enough to meet unexpected needs # Overview The `Status` message contains three pieces of data: error code, error message, and error details. The error code should be an enum value of google.rpc.Code, but it may accept additional error codes if needed. The error message should be a developer-facing English message that helps developers *understand* and *resolve* the error. If a localized user-facing error message is needed, put the localized message in the error details or localize it in the client. The optional error details may contain arbitrary information about the error. There is a predefined set of error detail types in the package `google.rpc` which can be used for common error conditions. # Language mapping The `Status` message is the logical representation of the error model, but it is not necessarily the actual wire format. When the `Status` message is exposed in different client libraries and different wire protocols, it can be mapped differently. For example, it will likely be mapped to some exceptions in Java, but more likely mapped to some error codes in C. # Other uses The error model and the `Status` message can be used in a variety of environments, either with or without APIs, to provide a consistent developer experience across different environments. Example uses of this error model include: - Partial errors. If a service needs to return partial errors to the client, it may embed the `Status` in the normal response to indicate the partial errors. - Workflow errors. A typical workflow has multiple steps. Each step may have a `Status` message for error reporting purpose. - Batch operations. If a client uses batch request and batch response, the `Status` message should be used directly inside batch response, one for each error sub-response. - Asynchronous operations. If an API call embeds asynchronous operation results in its response, the status of those operations should be represented directly using the `Status` message. - Logging. If some API errors are stored in logs, the message `Status` could be used directly after any stripping needed for security/privacy reasons. # The error result of the operation in case of failure.
+    "error": { # The Status type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by gRPC (https://github.com/grpc). The error model is designed to be: Simple to use and understand for most users Flexible enough to meet unexpected needsOverviewThe Status message contains three pieces of data: error code, error message, and error details. The error code should be an enum value of google.rpc.Code, but it may accept additional error codes if needed. The error message should be a developer-facing English message that helps developers understand and resolve the error. If a localized user-facing error message is needed, put the localized message in the error details or localize it in the client. The optional error details may contain arbitrary information about the error. There is a predefined set of error detail types in the package google.rpc which can be used for common error conditions.Language mappingThe Status message is the logical representation of the error model, but it is not necessarily the actual wire format. When the Status message is exposed in different client libraries and different wire protocols, it can be mapped differently. For example, it will likely be mapped to some exceptions in Java, but more likely mapped to some error codes in C.Other usesThe error model and the Status message can be used in a variety of environments, either with or without APIs, to provide a consistent developer experience across different environments.Example uses of this error model include: Partial errors. If a service needs to return partial errors to the client, it may embed the Status in the normal response to indicate the partial errors. Workflow errors. A typical workflow has multiple steps. Each step may have a Status message for error reporting purpose. Batch operations. If a client uses batch request and batch response, the Status message should be used directly inside batch response, one for each error sub-response. Asynchronous operations. If an API call embeds asynchronous operation results in its response, the status of those operations should be represented directly using the Status message. Logging. If some API errors are stored in logs, the message Status could be used directly after any stripping needed for security/privacy reasons. # The error result of the operation in case of failure or cancellation.
       "message": "A String", # A developer-facing error message, which should be in English. Any user-facing error message should be localized and sent in the google.rpc.Status.details field, or localized by the client.
       "code": 42, # The status code, which should be an enum value of google.rpc.Code.
       "details": [ # A list of messages that carry the error details. There will be a common set of message types for APIs to use.
@@ -237,8 +237,8 @@
         },
       ],
     },
-    "done": True or False, # If the value is `false`, it means the operation is still in progress. If true, the operation is completed, and either `error` or `response` is available.
-    "name": "A String", # The server-assigned name, which is only unique within the same service that originally returns it. If you use the default HTTP mapping, the `name` should have the format of `operations/some/unique/name`.
+    "done": True or False, # If the value is false, it means the operation is still in progress. If true, the operation is completed, and either error or response is available.
+    "name": "A String", # The server-assigned name, which is only unique within the same service that originally returns it. If you use the default HTTP mapping, the name should have the format of operations/some/unique/name.
     "metadata": { # Service-specific metadata associated with the operation. It typically contains progress information and common metadata such as create time. Some services might not provide such metadata. Any method that returns a long-running operation should document the metadata type, if any.
       "a_key": "", # Properties of the object. Contains field @type with type URL.
     },
diff --git a/docs/dyn/appengine_v1beta4.apps.modules.versions.html b/docs/dyn/appengine_v1beta4.apps.modules.versions.html
index 223561d..9675228 100644
--- a/docs/dyn/appengine_v1beta4.apps.modules.versions.html
+++ b/docs/dyn/appengine_v1beta4.apps.modules.versions.html
@@ -87,7 +87,7 @@
 <p class="firstline">Deletes an existing version.</p>
 <p class="toc_element">
   <code><a href="#get">get(appsId, modulesId, versionsId, x__xgafv=None, view=None)</a></code></p>
-<p class="firstline">Gets the specified Version resource. By default, only a `BASIC_VIEW` will be returned. Specify the `FULL_VIEW` parameter to get the full resource.</p>
+<p class="firstline">Gets the specified Version resource. By default, only a BASIC_VIEW will be returned. Specify the FULL_VIEW parameter to get the full resource.</p>
 <p class="toc_element">
   <code><a href="#list">list(appsId, modulesId, pageSize=None, pageToken=None, x__xgafv=None, view=None)</a></code></p>
 <p class="firstline">Lists the versions of a module.</p>
@@ -96,14 +96,14 @@
 <p class="firstline">Retrieves the next page of results.</p>
 <p class="toc_element">
   <code><a href="#patch">patch(appsId, modulesId, versionsId, body, mask=None, x__xgafv=None)</a></code></p>
-<p class="firstline">Updates the specified Version resource. You can specify the following fields depending on the App Engine environment and type of scaling that the version resource uses: * [`serving_status`](https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1beta4/apps.modules.versions#Version.FIELDS.serving_status): For Version resources that use basic scaling, manual scaling, or run in the App Engine flexible environment. * [`instance_class`](https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1beta4/apps.modules.versions#Version.FIELDS.instance_class): For Version resources that run in the App Engine standard environment. * [`automatic_scaling.min_idle_instances`](https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1beta4/apps.modules.versions#Version.FIELDS.automatic_scaling): For Version resources that use automatic scaling and run in the App Engine standard environment. * [`automatic_scaling.max_idle_instances`](https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1beta4/apps.modules.versions#Version.FIELDS.automatic_scaling): For Version resources that use automatic scaling and run in the App Engine standard environment.</p>
+<p class="firstline">Updates the specified Version resource. You can specify the following fields depending on the App Engine environment and type of scaling that the version resource uses: serving_status (https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1beta4/apps.modules.versions#Version.FIELDS.serving_status): For Version resources that use basic scaling, manual scaling, or run in the App Engine flexible environment. instance_class (https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1beta4/apps.modules.versions#Version.FIELDS.instance_class): For Version resources that run in the App Engine standard environment. automatic_scaling.min_idle_instances (https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1beta4/apps.modules.versions#Version.FIELDS.automatic_scaling): For Version resources that use automatic scaling and run in the App Engine standard environment. automatic_scaling.max_idle_instances (https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1beta4/apps.modules.versions#Version.FIELDS.automatic_scaling): For Version resources that use automatic scaling and run in the App Engine standard environment.</p>
 <h3>Method Details</h3>
 <div class="method">
     <code class="details" id="create">create(appsId, modulesId, body, x__xgafv=None)</code>
   <pre>Deploys code and resource files to a new version.
 
 Args:
-  appsId: string, Part of `name`. Name of the resource to update. Example: `apps/myapp/modules/default`. (required)
+  appsId: string, Part of `name`. Name of the resource to update. Example: apps/myapp/modules/default. (required)
   modulesId: string, Part of `name`. See documentation of `appsId`. (required)
   body: object, The request body. (required)
     The object takes the form of:
@@ -117,24 +117,24 @@
       "a_key": "A String",
     },
     "vm": True or False, # Whether to deploy this version in a container on a virtual machine.
-    "instanceClass": "A String", # Instance class that is used to run this version. Valid values are: * AutomaticScaling: `F1`, `F2`, `F4`, `F4_1G` * ManualScaling or BasicScaling: `B1`, `B2`, `B4`, `B8`, `B4_1G` Defaults to `F1` for AutomaticScaling and `B1` for ManualScaling or BasicScaling.
-    "errorHandlers": [ # Custom static error pages. Limited to 10KB per page. Only returned in `GET` requests if `view=FULL` is set.
+    "instanceClass": "A String", # Instance class that is used to run this version. Valid values are: AutomaticScaling: F1, F2, F4, F4_1G ManualScaling or BasicScaling: B1, B2, B4, B8, B4_1GDefaults to F1 for AutomaticScaling and B1 for ManualScaling or BasicScaling.
+    "errorHandlers": [ # Custom static error pages. Limited to 10KB per page.Only returned in GET requests if view=FULL is set.
       { # Custom static error page to be served when an error occurs.
         "errorCode": "A String", # Error condition this handler applies to.
-        "mimeType": "A String", # MIME type of file. Defaults to `text/html`.
+        "mimeType": "A String", # MIME type of file. Defaults to text/html.
         "staticFile": "A String", # Static file content to be served for this error.
       },
     ],
-    "id": "A String", # Relative name of the version within the module. Example: `v1`. Version names can contain only lowercase letters, numbers, or hyphens. Reserved names: "default", "latest", and any name with the prefix "ah-".
-    "apiConfig": { # [Google Cloud Endpoints](https://cloud.google.com/appengine/docs/python/endpoints/) configuration for API handlers. # Serving configuration for [Google Cloud Endpoints](https://cloud.google.com/appengine/docs/python/endpoints/). Only returned in `GET` requests if `view=FULL` is set.
+    "id": "A String", # Relative name of the version within the module. Example: v1. Version names can contain only lowercase letters, numbers, or hyphens. Reserved names: "default", "latest", and any name with the prefix "ah-".
+    "apiConfig": { # Google Cloud Endpoints (https://cloud.google.com/appengine/docs/python/endpoints/) configuration for API handlers. # Serving configuration for Google Cloud Endpoints (https://cloud.google.com/appengine/docs/python/endpoints/).Only returned in GET requests if view=FULL is set.
       "url": "A String", # URL to serve the endpoint at.
       "securityLevel": "A String", # Security (HTTPS) enforcement for this URL.
-      "authFailAction": "A String", # Action to take when users access resources that require authentication. Defaults to `redirect`.
-      "login": "A String", # Level of login required to access this resource. Defaults to `optional`.
+      "authFailAction": "A String", # Action to take when users access resources that require authentication. Defaults to redirect.
+      "login": "A String", # Level of login required to access this resource. Defaults to optional.
       "script": "A String", # Path to the script from the application root directory.
     },
     "threadsafe": True or False, # Whether multiple requests can be dispatched to this version at once.
-    "healthCheck": { # Health checking configuration for VM instances. Unhealthy instances are killed and replaced with new instances. Only applicable for instances in App Engine flexible environment. # Configures health checking for VM instances. Unhealthy instances are stopped and replaced with new instances. Only applicable for VM runtimes. Only returned in `GET` requests if `view=FULL` is set.
+    "healthCheck": { # Health checking configuration for VM instances. Unhealthy instances are killed and replaced with new instances. Only applicable for instances in App Engine flexible environment. # Configures health checking for VM instances. Unhealthy instances are stopped and replaced with new instances. Only applicable for VM runtimes.Only returned in GET requests if view=FULL is set.
       "restartThreshold": 42, # Number of consecutive failed health checks required before an instance is restarted.
       "checkInterval": "A String", # Interval between health checks.
       "unhealthyThreshold": 42, # Number of consecutive failed health checks required before removing traffic.
@@ -143,15 +143,15 @@
       "timeout": "A String", # Time before the health check is considered failed.
       "disableHealthCheck": True or False, # Whether to explicitly disable health checks for this instance.
     },
-    "defaultExpiration": "A String", # Duration that static files should be cached by web proxies and browsers. Only applicable if the corresponding [StaticFilesHandler](https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1/apps.services.versions#staticfileshandler) does not specify its own expiration time. Only returned in `GET` requests if `view=FULL` is set.
-    "libraries": [ # Configuration for third-party Python runtime libraries required by the application. Only returned in `GET` requests if `view=FULL` is set.
+    "defaultExpiration": "A String", # Duration that static files should be cached by web proxies and browsers. Only applicable if the corresponding StaticFilesHandler (https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1/apps.services.versions#staticfileshandler) does not specify its own expiration time.Only returned in GET requests if view=FULL is set.
+    "libraries": [ # Configuration for third-party Python runtime libraries required by the application.Only returned in GET requests if view=FULL is set.
       { # Third-party Python runtime library that is required by the application.
         "version": "A String", # Version of the library to select, or "latest".
         "name": "A String", # Name of the library. Example: "django".
       },
     ],
-    "deployer": "A String", # Email address of the user who created this version. @OutputOnly
-    "env": "A String", # App Engine execution environment to use for this version. Defaults to `1`.
+    "deployer": "A String", # Email address of the user who created this version.@OutputOnly
+    "env": "A String", # App Engine execution environment to use for this version.Defaults to 1.
     "automaticScaling": { # Automatic scaling is based on request rate, response latencies, and other application metrics. # Automatic scaling is based on request rate, response latencies, and other application metrics.
       "minPendingLatency": "A String", # Minimum amount of time a request should wait in the pending queue before starting a new instance to handle it.
       "networkUtilization": { # Target scaling by network usage. Only applicable for VM runtimes. # Target scaling by network usage.
@@ -173,34 +173,41 @@
         "targetConcurrentRequests": 42, # Target number of concurrent requests.
         "targetRequestCountPerSec": 42, # Target requests per second.
       },
-      "coolDownPeriod": "A String", # Amount of time that the [Autoscaler](https://cloud.google.com/compute/docs/autoscaler/) should wait between changes to the number of virtual machines. Only applicable for VM runtimes.
+      "coolDownPeriod": "A String", # Amount of time that the Autoscaler (https://cloud.google.com/compute/docs/autoscaler/) should wait between changes to the number of virtual machines. Only applicable for VM runtimes.
       "maxTotalInstances": 42, # Maximum number of instances that should be started to handle requests.
-      "maxConcurrentRequests": 42, # Number of concurrent requests an automatic scaling instance can accept before the scheduler spawns a new instance. Defaults to a runtime-specific value.
+      "maxConcurrentRequests": 42, # Number of concurrent requests an automatic scaling instance can accept before the scheduler spawns a new instance.Defaults to a runtime-specific value.
       "minTotalInstances": 42, # Minimum number of instances that should be maintained for this version.
       "cpuUtilization": { # Target scaling by CPU usage. # Target scaling by CPU usage.
         "targetUtilization": 3.14, # Target CPU utilization ratio to maintain when scaling. Must be between 0 and 1.
         "aggregationWindowLength": "A String", # Period of time over which CPU utilization is calculated.
       },
     },
-    "envVariables": { # Environment variables made available to the application. Only returned in `GET` requests if `view=FULL` is set.
+    "envVariables": { # Environment variables made available to the application.Only returned in GET requests if view=FULL is set.
       "a_key": "A String",
     },
     "resources": { # Machine resources for a version. # Machine resources for this version. Only applicable for VM runtimes.
+      "volumes": [ # User specified volumes.
+        { # Volumes mounted within the app container. Only applicable for VM runtimes.
+          "volumeType": "A String", # Underlying volume type, e.g. 'tmpfs'.
+          "name": "A String", # Unique name for the volume.
+          "sizeGb": 3.14, # Volume size in gigabytes.
+        },
+      ],
       "diskGb": 3.14, # Disk size (GB) needed.
       "cpu": 3.14, # Number of CPU cores needed.
       "memoryGb": 3.14, # Memory (GB) needed.
     },
     "manualScaling": { # A module with manual scaling runs continuously, allowing you to perform complex initialization and rely on the state of its memory over time. # A module with manual scaling runs continuously, allowing you to perform complex initialization and rely on the state of its memory over time.
-      "instances": 42, # Number of instances to assign to the module at the start. This number can later be altered by using the [Modules API](https://cloud.google.com/appengine/docs/python/modules/functions) `set_num_instances()` function.
+      "instances": 42, # Number of instances to assign to the module at the start. This number can later be altered by using the Modules API (https://cloud.google.com/appengine/docs/python/modules/functions) set_num_instances() function.
     },
     "inboundServices": [ # Before an application can receive email or XMPP messages, the application must be configured to enable the service.
       "A String",
     ],
-    "deployment": { # Code and application artifacts used to deploy a version to App Engine. # Code and application artifacts that make up this version. Only returned in `GET` requests if `view=FULL` is set.
+    "deployment": { # Code and application artifacts used to deploy a version to App Engine. # Code and application artifacts that make up this version.Only returned in GET requests if view=FULL is set.
       "files": { # Manifest of the files stored in Google Cloud Storage that are included as part of this version. All files must be readable using the credentials supplied with this call.
         "a_key": { # Single source file that is part of the version to be deployed. Each source file that is deployed must be specified separately.
-          "mimeType": "A String", # The MIME type of the file. Defaults to the value from Google Cloud Storage.
-          "sourceUrl": "A String", # URL source to use to fetch this file. Must be a URL to a resource in Google Cloud Storage in the form 'http(s)://storage.googleapis.com/\/\'.
+          "mimeType": "A String", # The MIME type of the file.Defaults to the value from Google Cloud Storage.
+          "sourceUrl": "A String", # URL source to use to fetch this file. Must be a URL to a resource in Google Cloud Storage in the form 'http(s)://storage.googleapis.com//'.
           "sha1Sum": "A String", # The SHA1 hash of the file, in hex.
         },
       },
@@ -219,24 +226,24 @@
       "forwardedPorts": [ # List of ports, or port pairs, to forward from the virtual machine to the application container.
         "A String",
       ],
-      "name": "A String", # Google Cloud Platform network where the virtual machines are created. Specify the short name, not the resource path. Defaults to `default`.
+      "name": "A String", # Google Cloud Platform network where the virtual machines are created. Specify the short name, not the resource path.Defaults to default.
     },
-    "nobuildFilesRegex": "A String", # Files that match this pattern will not be built into this version. Only applicable for Go runtimes. Only returned in `GET` requests if `view=FULL` is set.
-    "name": "A String", # Full path to the Version resource in the API. Example: `apps/myapp/modules/default/versions/v1`. @OutputOnly
-    "handlers": [ # An ordered list of URL-matching patterns that should be applied to incoming requests. The first matching URL handles the request and other request handlers are not attempted. Only returned in `GET` requests if `view=FULL` is set.
+    "nobuildFilesRegex": "A String", # Files that match this pattern will not be built into this version. Only applicable for Go runtimes.Only returned in GET requests if view=FULL is set.
+    "name": "A String", # Full path to the Version resource in the API. Example: apps/myapp/modules/default/versions/v1.@OutputOnly
+    "handlers": [ # An ordered list of URL-matching patterns that should be applied to incoming requests. The first matching URL handles the request and other request handlers are not attempted.Only returned in GET requests if view=FULL is set.
       { # URL pattern and description of how the URL should be handled. App Engine can handle URLs by executing application code, or by serving static files uploaded with the version, such as images, CSS, or JavaScript.
-        "staticDirectory": { # Files served directly to the user for a given URL, such as images, CSS stylesheets, or JavaScript source files. Static directory handlers make it easy to serve the entire contents of a directory as static files. # Serves the entire contents of a directory as static files. This attribute is deprecated. You can mimic the behavior of static directories using static files.
+        "staticDirectory": { # Files served directly to the user for a given URL, such as images, CSS stylesheets, or JavaScript source files. Static directory handlers make it easy to serve the entire contents of a directory as static files. # Serves the entire contents of a directory as static files.This attribute is deprecated. You can mimic the behavior of static directories using static files.
           "mimeType": "A String", # MIME type used to serve all files served by this handler. Defaults to file-specific MIME types, which are direved from each file's filename extension.
           "httpHeaders": { # HTTP headers to use for all responses from these URLs.
             "a_key": "A String",
           },
           "expiration": "A String", # Time a static file served by this handler should be cached.
-          "directory": "A String", # Path to the directory containing the static files from the application root directory. Everything after the end of the matched URL pattern is appended to `static_dir` to form the full path to the requested file.
+          "directory": "A String", # Path to the directory containing the static files from the application root directory. Everything after the end of the matched URL pattern is appended to static_dir to form the full path to the requested file.
           "requireMatchingFile": True or False, # Whether this handler should match the request if the file referenced by the handler does not exist.
           "applicationReadable": True or False, # Whether files should also be uploaded as code data. By default, files declared in static directory handlers are uploaded as static data and are only served to end users; they cannot be read by the application. If enabled, uploads are charged against both your code and static data storage resource quotas.
         },
         "securityLevel": "A String", # Security (HTTPS) enforcement for this URL.
-        "authFailAction": "A String", # Action to take when users access resources that require authentication. Defaults to `redirect`.
+        "authFailAction": "A String", # Action to take when users access resources that require authentication. Defaults to redirect.
         "urlRegex": "A String", # A URL prefix. Uses regular expression syntax, which means regexp special characters must be escaped, but should not contain groupings. All URLs that begin with this prefix are handled by this handler, using the portion of the URL after the prefix as part of the file path.
         "script": { # Executes a script to handle the request that matches the URL pattern. # Executes a script to handle the request that matches this URL pattern.
           "scriptPath": "A String", # Path to the script from the application root directory.
@@ -256,12 +263,12 @@
           "scriptPath": "A String", # Path to the script from the application root directory.
         },
         "login": "A String", # Level of login required to access this resource.
-        "redirectHttpResponseCode": "A String", # `30x` code to use when performing redirects for the `secure` field. Defaults to `302`.
+        "redirectHttpResponseCode": "A String", # 30x code to use when performing redirects for the secure field. Defaults to 302.
       },
     ],
-    "creationTime": "A String", # Time that this version was created. @OutputOnly
-    "servingStatus": "A String", # Current serving status of this version. Only the versions with a `SERVING` status create instances and can be billed. `SERVING_STATUS_UNSPECIFIED` is an invalid value. Defaults to `SERVING`.
-    "runtime": "A String", # Desired runtime. Example: `python27`.
+    "creationTime": "A String", # Time that this version was created.@OutputOnly
+    "servingStatus": "A String", # Current serving status of this version. Only the versions with a SERVING status create instances and can be billed.SERVING_STATUS_UNSPECIFIED is an invalid value. Defaults to SERVING.
+    "runtime": "A String", # Desired runtime. Example: python27.
   }
 
   x__xgafv: string, V1 error format.
@@ -270,10 +277,10 @@
   An object of the form:
 
     { # This resource represents a long-running operation that is the result of a network API call.
-    "response": { # The normal response of the operation in case of success. If the original method returns no data on success, such as `Delete`, the response is `google.protobuf.Empty`. If the original method is standard `Get`/`Create`/`Update`, the response should be the resource. For other methods, the response should have the type `XxxResponse`, where `Xxx` is the original method name. For example, if the original method name is `TakeSnapshot()`, the inferred response type is `TakeSnapshotResponse`.
+    "response": { # The normal response of the operation in case of success. If the original method returns no data on success, such as Delete, the response is google.protobuf.Empty. If the original method is standard Get/Create/Update, the response should be the resource. For other methods, the response should have the type XxxResponse, where Xxx is the original method name. For example, if the original method name is TakeSnapshot(), the inferred response type is TakeSnapshotResponse.
       "a_key": "", # Properties of the object. Contains field @type with type URL.
     },
-    "error": { # The `Status` type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by [gRPC](https://github.com/grpc). The error model is designed to be: - Simple to use and understand for most users - Flexible enough to meet unexpected needs # Overview The `Status` message contains three pieces of data: error code, error message, and error details. The error code should be an enum value of google.rpc.Code, but it may accept additional error codes if needed. The error message should be a developer-facing English message that helps developers *understand* and *resolve* the error. If a localized user-facing error message is needed, put the localized message in the error details or localize it in the client. The optional error details may contain arbitrary information about the error. There is a predefined set of error detail types in the package `google.rpc` which can be used for common error conditions. # Language mapping The `Status` message is the logical representation of the error model, but it is not necessarily the actual wire format. When the `Status` message is exposed in different client libraries and different wire protocols, it can be mapped differently. For example, it will likely be mapped to some exceptions in Java, but more likely mapped to some error codes in C. # Other uses The error model and the `Status` message can be used in a variety of environments, either with or without APIs, to provide a consistent developer experience across different environments. Example uses of this error model include: - Partial errors. If a service needs to return partial errors to the client, it may embed the `Status` in the normal response to indicate the partial errors. - Workflow errors. A typical workflow has multiple steps. Each step may have a `Status` message for error reporting purpose. - Batch operations. If a client uses batch request and batch response, the `Status` message should be used directly inside batch response, one for each error sub-response. - Asynchronous operations. If an API call embeds asynchronous operation results in its response, the status of those operations should be represented directly using the `Status` message. - Logging. If some API errors are stored in logs, the message `Status` could be used directly after any stripping needed for security/privacy reasons. # The error result of the operation in case of failure.
+    "error": { # The Status type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by gRPC (https://github.com/grpc). The error model is designed to be: Simple to use and understand for most users Flexible enough to meet unexpected needsOverviewThe Status message contains three pieces of data: error code, error message, and error details. The error code should be an enum value of google.rpc.Code, but it may accept additional error codes if needed. The error message should be a developer-facing English message that helps developers understand and resolve the error. If a localized user-facing error message is needed, put the localized message in the error details or localize it in the client. The optional error details may contain arbitrary information about the error. There is a predefined set of error detail types in the package google.rpc which can be used for common error conditions.Language mappingThe Status message is the logical representation of the error model, but it is not necessarily the actual wire format. When the Status message is exposed in different client libraries and different wire protocols, it can be mapped differently. For example, it will likely be mapped to some exceptions in Java, but more likely mapped to some error codes in C.Other usesThe error model and the Status message can be used in a variety of environments, either with or without APIs, to provide a consistent developer experience across different environments.Example uses of this error model include: Partial errors. If a service needs to return partial errors to the client, it may embed the Status in the normal response to indicate the partial errors. Workflow errors. A typical workflow has multiple steps. Each step may have a Status message for error reporting purpose. Batch operations. If a client uses batch request and batch response, the Status message should be used directly inside batch response, one for each error sub-response. Asynchronous operations. If an API call embeds asynchronous operation results in its response, the status of those operations should be represented directly using the Status message. Logging. If some API errors are stored in logs, the message Status could be used directly after any stripping needed for security/privacy reasons. # The error result of the operation in case of failure or cancellation.
       "message": "A String", # A developer-facing error message, which should be in English. Any user-facing error message should be localized and sent in the google.rpc.Status.details field, or localized by the client.
       "code": 42, # The status code, which should be an enum value of google.rpc.Code.
       "details": [ # A list of messages that carry the error details. There will be a common set of message types for APIs to use.
@@ -282,8 +289,8 @@
         },
       ],
     },
-    "done": True or False, # If the value is `false`, it means the operation is still in progress. If true, the operation is completed, and either `error` or `response` is available.
-    "name": "A String", # The server-assigned name, which is only unique within the same service that originally returns it. If you use the default HTTP mapping, the `name` should have the format of `operations/some/unique/name`.
+    "done": True or False, # If the value is false, it means the operation is still in progress. If true, the operation is completed, and either error or response is available.
+    "name": "A String", # The server-assigned name, which is only unique within the same service that originally returns it. If you use the default HTTP mapping, the name should have the format of operations/some/unique/name.
     "metadata": { # Service-specific metadata associated with the operation. It typically contains progress information and common metadata such as create time. Some services might not provide such metadata. Any method that returns a long-running operation should document the metadata type, if any.
       "a_key": "", # Properties of the object. Contains field @type with type URL.
     },
@@ -295,7 +302,7 @@
   <pre>Deletes an existing version.
 
 Args:
-  appsId: string, Part of `name`. Name of the resource requested. Example: `apps/myapp/modules/default/versions/v1`. (required)
+  appsId: string, Part of `name`. Name of the resource requested. Example: apps/myapp/modules/default/versions/v1. (required)
   modulesId: string, Part of `name`. See documentation of `appsId`. (required)
   versionsId: string, Part of `name`. See documentation of `appsId`. (required)
   x__xgafv: string, V1 error format.
@@ -304,10 +311,10 @@
   An object of the form:
 
     { # This resource represents a long-running operation that is the result of a network API call.
-    "response": { # The normal response of the operation in case of success. If the original method returns no data on success, such as `Delete`, the response is `google.protobuf.Empty`. If the original method is standard `Get`/`Create`/`Update`, the response should be the resource. For other methods, the response should have the type `XxxResponse`, where `Xxx` is the original method name. For example, if the original method name is `TakeSnapshot()`, the inferred response type is `TakeSnapshotResponse`.
+    "response": { # The normal response of the operation in case of success. If the original method returns no data on success, such as Delete, the response is google.protobuf.Empty. If the original method is standard Get/Create/Update, the response should be the resource. For other methods, the response should have the type XxxResponse, where Xxx is the original method name. For example, if the original method name is TakeSnapshot(), the inferred response type is TakeSnapshotResponse.
       "a_key": "", # Properties of the object. Contains field @type with type URL.
     },
-    "error": { # The `Status` type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by [gRPC](https://github.com/grpc). The error model is designed to be: - Simple to use and understand for most users - Flexible enough to meet unexpected needs # Overview The `Status` message contains three pieces of data: error code, error message, and error details. The error code should be an enum value of google.rpc.Code, but it may accept additional error codes if needed. The error message should be a developer-facing English message that helps developers *understand* and *resolve* the error. If a localized user-facing error message is needed, put the localized message in the error details or localize it in the client. The optional error details may contain arbitrary information about the error. There is a predefined set of error detail types in the package `google.rpc` which can be used for common error conditions. # Language mapping The `Status` message is the logical representation of the error model, but it is not necessarily the actual wire format. When the `Status` message is exposed in different client libraries and different wire protocols, it can be mapped differently. For example, it will likely be mapped to some exceptions in Java, but more likely mapped to some error codes in C. # Other uses The error model and the `Status` message can be used in a variety of environments, either with or without APIs, to provide a consistent developer experience across different environments. Example uses of this error model include: - Partial errors. If a service needs to return partial errors to the client, it may embed the `Status` in the normal response to indicate the partial errors. - Workflow errors. A typical workflow has multiple steps. Each step may have a `Status` message for error reporting purpose. - Batch operations. If a client uses batch request and batch response, the `Status` message should be used directly inside batch response, one for each error sub-response. - Asynchronous operations. If an API call embeds asynchronous operation results in its response, the status of those operations should be represented directly using the `Status` message. - Logging. If some API errors are stored in logs, the message `Status` could be used directly after any stripping needed for security/privacy reasons. # The error result of the operation in case of failure.
+    "error": { # The Status type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by gRPC (https://github.com/grpc). The error model is designed to be: Simple to use and understand for most users Flexible enough to meet unexpected needsOverviewThe Status message contains three pieces of data: error code, error message, and error details. The error code should be an enum value of google.rpc.Code, but it may accept additional error codes if needed. The error message should be a developer-facing English message that helps developers understand and resolve the error. If a localized user-facing error message is needed, put the localized message in the error details or localize it in the client. The optional error details may contain arbitrary information about the error. There is a predefined set of error detail types in the package google.rpc which can be used for common error conditions.Language mappingThe Status message is the logical representation of the error model, but it is not necessarily the actual wire format. When the Status message is exposed in different client libraries and different wire protocols, it can be mapped differently. For example, it will likely be mapped to some exceptions in Java, but more likely mapped to some error codes in C.Other usesThe error model and the Status message can be used in a variety of environments, either with or without APIs, to provide a consistent developer experience across different environments.Example uses of this error model include: Partial errors. If a service needs to return partial errors to the client, it may embed the Status in the normal response to indicate the partial errors. Workflow errors. A typical workflow has multiple steps. Each step may have a Status message for error reporting purpose. Batch operations. If a client uses batch request and batch response, the Status message should be used directly inside batch response, one for each error sub-response. Asynchronous operations. If an API call embeds asynchronous operation results in its response, the status of those operations should be represented directly using the Status message. Logging. If some API errors are stored in logs, the message Status could be used directly after any stripping needed for security/privacy reasons. # The error result of the operation in case of failure or cancellation.
       "message": "A String", # A developer-facing error message, which should be in English. Any user-facing error message should be localized and sent in the google.rpc.Status.details field, or localized by the client.
       "code": 42, # The status code, which should be an enum value of google.rpc.Code.
       "details": [ # A list of messages that carry the error details. There will be a common set of message types for APIs to use.
@@ -316,8 +323,8 @@
         },
       ],
     },
-    "done": True or False, # If the value is `false`, it means the operation is still in progress. If true, the operation is completed, and either `error` or `response` is available.
-    "name": "A String", # The server-assigned name, which is only unique within the same service that originally returns it. If you use the default HTTP mapping, the `name` should have the format of `operations/some/unique/name`.
+    "done": True or False, # If the value is false, it means the operation is still in progress. If true, the operation is completed, and either error or response is available.
+    "name": "A String", # The server-assigned name, which is only unique within the same service that originally returns it. If you use the default HTTP mapping, the name should have the format of operations/some/unique/name.
     "metadata": { # Service-specific metadata associated with the operation. It typically contains progress information and common metadata such as create time. Some services might not provide such metadata. Any method that returns a long-running operation should document the metadata type, if any.
       "a_key": "", # Properties of the object. Contains field @type with type URL.
     },
@@ -326,14 +333,14 @@
 
 <div class="method">
     <code class="details" id="get">get(appsId, modulesId, versionsId, x__xgafv=None, view=None)</code>
-  <pre>Gets the specified Version resource. By default, only a `BASIC_VIEW` will be returned. Specify the `FULL_VIEW` parameter to get the full resource.
+  <pre>Gets the specified Version resource. By default, only a BASIC_VIEW will be returned. Specify the FULL_VIEW parameter to get the full resource.
 
 Args:
-  appsId: string, Part of `name`. Name of the resource requested. Example: `apps/myapp/modules/default/versions/v1`. (required)
+  appsId: string, Part of `name`. Name of the resource requested. Example: apps/myapp/modules/default/versions/v1. (required)
   modulesId: string, Part of `name`. See documentation of `appsId`. (required)
   versionsId: string, Part of `name`. See documentation of `appsId`. (required)
   x__xgafv: string, V1 error format.
-  view: string, Controls the set of fields returned in the `Get` response.
+  view: string, Controls the set of fields returned in the Get response.
 
 Returns:
   An object of the form:
@@ -347,24 +354,24 @@
         "a_key": "A String",
       },
       "vm": True or False, # Whether to deploy this version in a container on a virtual machine.
-      "instanceClass": "A String", # Instance class that is used to run this version. Valid values are: * AutomaticScaling: `F1`, `F2`, `F4`, `F4_1G` * ManualScaling or BasicScaling: `B1`, `B2`, `B4`, `B8`, `B4_1G` Defaults to `F1` for AutomaticScaling and `B1` for ManualScaling or BasicScaling.
-      "errorHandlers": [ # Custom static error pages. Limited to 10KB per page. Only returned in `GET` requests if `view=FULL` is set.
+      "instanceClass": "A String", # Instance class that is used to run this version. Valid values are: AutomaticScaling: F1, F2, F4, F4_1G ManualScaling or BasicScaling: B1, B2, B4, B8, B4_1GDefaults to F1 for AutomaticScaling and B1 for ManualScaling or BasicScaling.
+      "errorHandlers": [ # Custom static error pages. Limited to 10KB per page.Only returned in GET requests if view=FULL is set.
         { # Custom static error page to be served when an error occurs.
           "errorCode": "A String", # Error condition this handler applies to.
-          "mimeType": "A String", # MIME type of file. Defaults to `text/html`.
+          "mimeType": "A String", # MIME type of file. Defaults to text/html.
           "staticFile": "A String", # Static file content to be served for this error.
         },
       ],
-      "id": "A String", # Relative name of the version within the module. Example: `v1`. Version names can contain only lowercase letters, numbers, or hyphens. Reserved names: "default", "latest", and any name with the prefix "ah-".
-      "apiConfig": { # [Google Cloud Endpoints](https://cloud.google.com/appengine/docs/python/endpoints/) configuration for API handlers. # Serving configuration for [Google Cloud Endpoints](https://cloud.google.com/appengine/docs/python/endpoints/). Only returned in `GET` requests if `view=FULL` is set.
+      "id": "A String", # Relative name of the version within the module. Example: v1. Version names can contain only lowercase letters, numbers, or hyphens. Reserved names: "default", "latest", and any name with the prefix "ah-".
+      "apiConfig": { # Google Cloud Endpoints (https://cloud.google.com/appengine/docs/python/endpoints/) configuration for API handlers. # Serving configuration for Google Cloud Endpoints (https://cloud.google.com/appengine/docs/python/endpoints/).Only returned in GET requests if view=FULL is set.
         "url": "A String", # URL to serve the endpoint at.
         "securityLevel": "A String", # Security (HTTPS) enforcement for this URL.
-        "authFailAction": "A String", # Action to take when users access resources that require authentication. Defaults to `redirect`.
-        "login": "A String", # Level of login required to access this resource. Defaults to `optional`.
+        "authFailAction": "A String", # Action to take when users access resources that require authentication. Defaults to redirect.
+        "login": "A String", # Level of login required to access this resource. Defaults to optional.
         "script": "A String", # Path to the script from the application root directory.
       },
       "threadsafe": True or False, # Whether multiple requests can be dispatched to this version at once.
-      "healthCheck": { # Health checking configuration for VM instances. Unhealthy instances are killed and replaced with new instances. Only applicable for instances in App Engine flexible environment. # Configures health checking for VM instances. Unhealthy instances are stopped and replaced with new instances. Only applicable for VM runtimes. Only returned in `GET` requests if `view=FULL` is set.
+      "healthCheck": { # Health checking configuration for VM instances. Unhealthy instances are killed and replaced with new instances. Only applicable for instances in App Engine flexible environment. # Configures health checking for VM instances. Unhealthy instances are stopped and replaced with new instances. Only applicable for VM runtimes.Only returned in GET requests if view=FULL is set.
         "restartThreshold": 42, # Number of consecutive failed health checks required before an instance is restarted.
         "checkInterval": "A String", # Interval between health checks.
         "unhealthyThreshold": 42, # Number of consecutive failed health checks required before removing traffic.
@@ -373,15 +380,15 @@
         "timeout": "A String", # Time before the health check is considered failed.
         "disableHealthCheck": True or False, # Whether to explicitly disable health checks for this instance.
       },
-      "defaultExpiration": "A String", # Duration that static files should be cached by web proxies and browsers. Only applicable if the corresponding [StaticFilesHandler](https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1/apps.services.versions#staticfileshandler) does not specify its own expiration time. Only returned in `GET` requests if `view=FULL` is set.
-      "libraries": [ # Configuration for third-party Python runtime libraries required by the application. Only returned in `GET` requests if `view=FULL` is set.
+      "defaultExpiration": "A String", # Duration that static files should be cached by web proxies and browsers. Only applicable if the corresponding StaticFilesHandler (https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1/apps.services.versions#staticfileshandler) does not specify its own expiration time.Only returned in GET requests if view=FULL is set.
+      "libraries": [ # Configuration for third-party Python runtime libraries required by the application.Only returned in GET requests if view=FULL is set.
         { # Third-party Python runtime library that is required by the application.
           "version": "A String", # Version of the library to select, or "latest".
           "name": "A String", # Name of the library. Example: "django".
         },
       ],
-      "deployer": "A String", # Email address of the user who created this version. @OutputOnly
-      "env": "A String", # App Engine execution environment to use for this version. Defaults to `1`.
+      "deployer": "A String", # Email address of the user who created this version.@OutputOnly
+      "env": "A String", # App Engine execution environment to use for this version.Defaults to 1.
       "automaticScaling": { # Automatic scaling is based on request rate, response latencies, and other application metrics. # Automatic scaling is based on request rate, response latencies, and other application metrics.
         "minPendingLatency": "A String", # Minimum amount of time a request should wait in the pending queue before starting a new instance to handle it.
         "networkUtilization": { # Target scaling by network usage. Only applicable for VM runtimes. # Target scaling by network usage.
@@ -403,34 +410,41 @@
           "targetConcurrentRequests": 42, # Target number of concurrent requests.
           "targetRequestCountPerSec": 42, # Target requests per second.
         },
-        "coolDownPeriod": "A String", # Amount of time that the [Autoscaler](https://cloud.google.com/compute/docs/autoscaler/) should wait between changes to the number of virtual machines. Only applicable for VM runtimes.
+        "coolDownPeriod": "A String", # Amount of time that the Autoscaler (https://cloud.google.com/compute/docs/autoscaler/) should wait between changes to the number of virtual machines. Only applicable for VM runtimes.
         "maxTotalInstances": 42, # Maximum number of instances that should be started to handle requests.
-        "maxConcurrentRequests": 42, # Number of concurrent requests an automatic scaling instance can accept before the scheduler spawns a new instance. Defaults to a runtime-specific value.
+        "maxConcurrentRequests": 42, # Number of concurrent requests an automatic scaling instance can accept before the scheduler spawns a new instance.Defaults to a runtime-specific value.
         "minTotalInstances": 42, # Minimum number of instances that should be maintained for this version.
         "cpuUtilization": { # Target scaling by CPU usage. # Target scaling by CPU usage.
           "targetUtilization": 3.14, # Target CPU utilization ratio to maintain when scaling. Must be between 0 and 1.
           "aggregationWindowLength": "A String", # Period of time over which CPU utilization is calculated.
         },
       },
-      "envVariables": { # Environment variables made available to the application. Only returned in `GET` requests if `view=FULL` is set.
+      "envVariables": { # Environment variables made available to the application.Only returned in GET requests if view=FULL is set.
         "a_key": "A String",
       },
       "resources": { # Machine resources for a version. # Machine resources for this version. Only applicable for VM runtimes.
+        "volumes": [ # User specified volumes.
+          { # Volumes mounted within the app container. Only applicable for VM runtimes.
+            "volumeType": "A String", # Underlying volume type, e.g. 'tmpfs'.
+            "name": "A String", # Unique name for the volume.
+            "sizeGb": 3.14, # Volume size in gigabytes.
+          },
+        ],
         "diskGb": 3.14, # Disk size (GB) needed.
         "cpu": 3.14, # Number of CPU cores needed.
         "memoryGb": 3.14, # Memory (GB) needed.
       },
       "manualScaling": { # A module with manual scaling runs continuously, allowing you to perform complex initialization and rely on the state of its memory over time. # A module with manual scaling runs continuously, allowing you to perform complex initialization and rely on the state of its memory over time.
-        "instances": 42, # Number of instances to assign to the module at the start. This number can later be altered by using the [Modules API](https://cloud.google.com/appengine/docs/python/modules/functions) `set_num_instances()` function.
+        "instances": 42, # Number of instances to assign to the module at the start. This number can later be altered by using the Modules API (https://cloud.google.com/appengine/docs/python/modules/functions) set_num_instances() function.
       },
       "inboundServices": [ # Before an application can receive email or XMPP messages, the application must be configured to enable the service.
         "A String",
       ],
-      "deployment": { # Code and application artifacts used to deploy a version to App Engine. # Code and application artifacts that make up this version. Only returned in `GET` requests if `view=FULL` is set.
+      "deployment": { # Code and application artifacts used to deploy a version to App Engine. # Code and application artifacts that make up this version.Only returned in GET requests if view=FULL is set.
         "files": { # Manifest of the files stored in Google Cloud Storage that are included as part of this version. All files must be readable using the credentials supplied with this call.
           "a_key": { # Single source file that is part of the version to be deployed. Each source file that is deployed must be specified separately.
-            "mimeType": "A String", # The MIME type of the file. Defaults to the value from Google Cloud Storage.
-            "sourceUrl": "A String", # URL source to use to fetch this file. Must be a URL to a resource in Google Cloud Storage in the form 'http(s)://storage.googleapis.com/\/\'.
+            "mimeType": "A String", # The MIME type of the file.Defaults to the value from Google Cloud Storage.
+            "sourceUrl": "A String", # URL source to use to fetch this file. Must be a URL to a resource in Google Cloud Storage in the form 'http(s)://storage.googleapis.com//'.
             "sha1Sum": "A String", # The SHA1 hash of the file, in hex.
           },
         },
@@ -449,24 +463,24 @@
         "forwardedPorts": [ # List of ports, or port pairs, to forward from the virtual machine to the application container.
           "A String",
         ],
-        "name": "A String", # Google Cloud Platform network where the virtual machines are created. Specify the short name, not the resource path. Defaults to `default`.
+        "name": "A String", # Google Cloud Platform network where the virtual machines are created. Specify the short name, not the resource path.Defaults to default.
       },
-      "nobuildFilesRegex": "A String", # Files that match this pattern will not be built into this version. Only applicable for Go runtimes. Only returned in `GET` requests if `view=FULL` is set.
-      "name": "A String", # Full path to the Version resource in the API. Example: `apps/myapp/modules/default/versions/v1`. @OutputOnly
-      "handlers": [ # An ordered list of URL-matching patterns that should be applied to incoming requests. The first matching URL handles the request and other request handlers are not attempted. Only returned in `GET` requests if `view=FULL` is set.
+      "nobuildFilesRegex": "A String", # Files that match this pattern will not be built into this version. Only applicable for Go runtimes.Only returned in GET requests if view=FULL is set.
+      "name": "A String", # Full path to the Version resource in the API. Example: apps/myapp/modules/default/versions/v1.@OutputOnly
+      "handlers": [ # An ordered list of URL-matching patterns that should be applied to incoming requests. The first matching URL handles the request and other request handlers are not attempted.Only returned in GET requests if view=FULL is set.
         { # URL pattern and description of how the URL should be handled. App Engine can handle URLs by executing application code, or by serving static files uploaded with the version, such as images, CSS, or JavaScript.
-          "staticDirectory": { # Files served directly to the user for a given URL, such as images, CSS stylesheets, or JavaScript source files. Static directory handlers make it easy to serve the entire contents of a directory as static files. # Serves the entire contents of a directory as static files. This attribute is deprecated. You can mimic the behavior of static directories using static files.
+          "staticDirectory": { # Files served directly to the user for a given URL, such as images, CSS stylesheets, or JavaScript source files. Static directory handlers make it easy to serve the entire contents of a directory as static files. # Serves the entire contents of a directory as static files.This attribute is deprecated. You can mimic the behavior of static directories using static files.
             "mimeType": "A String", # MIME type used to serve all files served by this handler. Defaults to file-specific MIME types, which are direved from each file's filename extension.
             "httpHeaders": { # HTTP headers to use for all responses from these URLs.
               "a_key": "A String",
             },
             "expiration": "A String", # Time a static file served by this handler should be cached.
-            "directory": "A String", # Path to the directory containing the static files from the application root directory. Everything after the end of the matched URL pattern is appended to `static_dir` to form the full path to the requested file.
+            "directory": "A String", # Path to the directory containing the static files from the application root directory. Everything after the end of the matched URL pattern is appended to static_dir to form the full path to the requested file.
             "requireMatchingFile": True or False, # Whether this handler should match the request if the file referenced by the handler does not exist.
             "applicationReadable": True or False, # Whether files should also be uploaded as code data. By default, files declared in static directory handlers are uploaded as static data and are only served to end users; they cannot be read by the application. If enabled, uploads are charged against both your code and static data storage resource quotas.
           },
           "securityLevel": "A String", # Security (HTTPS) enforcement for this URL.
-          "authFailAction": "A String", # Action to take when users access resources that require authentication. Defaults to `redirect`.
+          "authFailAction": "A String", # Action to take when users access resources that require authentication. Defaults to redirect.
           "urlRegex": "A String", # A URL prefix. Uses regular expression syntax, which means regexp special characters must be escaped, but should not contain groupings. All URLs that begin with this prefix are handled by this handler, using the portion of the URL after the prefix as part of the file path.
           "script": { # Executes a script to handle the request that matches the URL pattern. # Executes a script to handle the request that matches this URL pattern.
             "scriptPath": "A String", # Path to the script from the application root directory.
@@ -486,12 +500,12 @@
             "scriptPath": "A String", # Path to the script from the application root directory.
           },
           "login": "A String", # Level of login required to access this resource.
-          "redirectHttpResponseCode": "A String", # `30x` code to use when performing redirects for the `secure` field. Defaults to `302`.
+          "redirectHttpResponseCode": "A String", # 30x code to use when performing redirects for the secure field. Defaults to 302.
         },
       ],
-      "creationTime": "A String", # Time that this version was created. @OutputOnly
-      "servingStatus": "A String", # Current serving status of this version. Only the versions with a `SERVING` status create instances and can be billed. `SERVING_STATUS_UNSPECIFIED` is an invalid value. Defaults to `SERVING`.
-      "runtime": "A String", # Desired runtime. Example: `python27`.
+      "creationTime": "A String", # Time that this version was created.@OutputOnly
+      "servingStatus": "A String", # Current serving status of this version. Only the versions with a SERVING status create instances and can be billed.SERVING_STATUS_UNSPECIFIED is an invalid value. Defaults to SERVING.
+      "runtime": "A String", # Desired runtime. Example: python27.
     }</pre>
 </div>
 
@@ -500,17 +514,17 @@
   <pre>Lists the versions of a module.
 
 Args:
-  appsId: string, Part of `name`. Name of the resource requested. Example: `apps/myapp/modules/default`. (required)
+  appsId: string, Part of `name`. Name of the resource requested. Example: apps/myapp/modules/default. (required)
   modulesId: string, Part of `name`. See documentation of `appsId`. (required)
   pageSize: integer, Maximum results to return per page.
   pageToken: string, Continuation token for fetching the next page of results.
   x__xgafv: string, V1 error format.
-  view: string, Controls the set of fields returned in the `List` response.
+  view: string, Controls the set of fields returned in the List response.
 
 Returns:
   An object of the form:
 
-    { # Response message for `Versions.ListVersions`.
+    { # Response message for Versions.ListVersions.
     "nextPageToken": "A String", # Continuation token for fetching the next page of results.
     "versions": [ # The versions belonging to the requested module.
       { # A Version resource is a specific set of source code and configuration files that are deployed into a module.
@@ -522,24 +536,24 @@
             "a_key": "A String",
           },
           "vm": True or False, # Whether to deploy this version in a container on a virtual machine.
-          "instanceClass": "A String", # Instance class that is used to run this version. Valid values are: * AutomaticScaling: `F1`, `F2`, `F4`, `F4_1G` * ManualScaling or BasicScaling: `B1`, `B2`, `B4`, `B8`, `B4_1G` Defaults to `F1` for AutomaticScaling and `B1` for ManualScaling or BasicScaling.
-          "errorHandlers": [ # Custom static error pages. Limited to 10KB per page. Only returned in `GET` requests if `view=FULL` is set.
+          "instanceClass": "A String", # Instance class that is used to run this version. Valid values are: AutomaticScaling: F1, F2, F4, F4_1G ManualScaling or BasicScaling: B1, B2, B4, B8, B4_1GDefaults to F1 for AutomaticScaling and B1 for ManualScaling or BasicScaling.
+          "errorHandlers": [ # Custom static error pages. Limited to 10KB per page.Only returned in GET requests if view=FULL is set.
             { # Custom static error page to be served when an error occurs.
               "errorCode": "A String", # Error condition this handler applies to.
-              "mimeType": "A String", # MIME type of file. Defaults to `text/html`.
+              "mimeType": "A String", # MIME type of file. Defaults to text/html.
               "staticFile": "A String", # Static file content to be served for this error.
             },
           ],
-          "id": "A String", # Relative name of the version within the module. Example: `v1`. Version names can contain only lowercase letters, numbers, or hyphens. Reserved names: "default", "latest", and any name with the prefix "ah-".
-          "apiConfig": { # [Google Cloud Endpoints](https://cloud.google.com/appengine/docs/python/endpoints/) configuration for API handlers. # Serving configuration for [Google Cloud Endpoints](https://cloud.google.com/appengine/docs/python/endpoints/). Only returned in `GET` requests if `view=FULL` is set.
+          "id": "A String", # Relative name of the version within the module. Example: v1. Version names can contain only lowercase letters, numbers, or hyphens. Reserved names: "default", "latest", and any name with the prefix "ah-".
+          "apiConfig": { # Google Cloud Endpoints (https://cloud.google.com/appengine/docs/python/endpoints/) configuration for API handlers. # Serving configuration for Google Cloud Endpoints (https://cloud.google.com/appengine/docs/python/endpoints/).Only returned in GET requests if view=FULL is set.
             "url": "A String", # URL to serve the endpoint at.
             "securityLevel": "A String", # Security (HTTPS) enforcement for this URL.
-            "authFailAction": "A String", # Action to take when users access resources that require authentication. Defaults to `redirect`.
-            "login": "A String", # Level of login required to access this resource. Defaults to `optional`.
+            "authFailAction": "A String", # Action to take when users access resources that require authentication. Defaults to redirect.
+            "login": "A String", # Level of login required to access this resource. Defaults to optional.
             "script": "A String", # Path to the script from the application root directory.
           },
           "threadsafe": True or False, # Whether multiple requests can be dispatched to this version at once.
-          "healthCheck": { # Health checking configuration for VM instances. Unhealthy instances are killed and replaced with new instances. Only applicable for instances in App Engine flexible environment. # Configures health checking for VM instances. Unhealthy instances are stopped and replaced with new instances. Only applicable for VM runtimes. Only returned in `GET` requests if `view=FULL` is set.
+          "healthCheck": { # Health checking configuration for VM instances. Unhealthy instances are killed and replaced with new instances. Only applicable for instances in App Engine flexible environment. # Configures health checking for VM instances. Unhealthy instances are stopped and replaced with new instances. Only applicable for VM runtimes.Only returned in GET requests if view=FULL is set.
             "restartThreshold": 42, # Number of consecutive failed health checks required before an instance is restarted.
             "checkInterval": "A String", # Interval between health checks.
             "unhealthyThreshold": 42, # Number of consecutive failed health checks required before removing traffic.
@@ -548,15 +562,15 @@
             "timeout": "A String", # Time before the health check is considered failed.
             "disableHealthCheck": True or False, # Whether to explicitly disable health checks for this instance.
           },
-          "defaultExpiration": "A String", # Duration that static files should be cached by web proxies and browsers. Only applicable if the corresponding [StaticFilesHandler](https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1/apps.services.versions#staticfileshandler) does not specify its own expiration time. Only returned in `GET` requests if `view=FULL` is set.
-          "libraries": [ # Configuration for third-party Python runtime libraries required by the application. Only returned in `GET` requests if `view=FULL` is set.
+          "defaultExpiration": "A String", # Duration that static files should be cached by web proxies and browsers. Only applicable if the corresponding StaticFilesHandler (https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1/apps.services.versions#staticfileshandler) does not specify its own expiration time.Only returned in GET requests if view=FULL is set.
+          "libraries": [ # Configuration for third-party Python runtime libraries required by the application.Only returned in GET requests if view=FULL is set.
             { # Third-party Python runtime library that is required by the application.
               "version": "A String", # Version of the library to select, or "latest".
               "name": "A String", # Name of the library. Example: "django".
             },
           ],
-          "deployer": "A String", # Email address of the user who created this version. @OutputOnly
-          "env": "A String", # App Engine execution environment to use for this version. Defaults to `1`.
+          "deployer": "A String", # Email address of the user who created this version.@OutputOnly
+          "env": "A String", # App Engine execution environment to use for this version.Defaults to 1.
           "automaticScaling": { # Automatic scaling is based on request rate, response latencies, and other application metrics. # Automatic scaling is based on request rate, response latencies, and other application metrics.
             "minPendingLatency": "A String", # Minimum amount of time a request should wait in the pending queue before starting a new instance to handle it.
             "networkUtilization": { # Target scaling by network usage. Only applicable for VM runtimes. # Target scaling by network usage.
@@ -578,34 +592,41 @@
               "targetConcurrentRequests": 42, # Target number of concurrent requests.
               "targetRequestCountPerSec": 42, # Target requests per second.
             },
-            "coolDownPeriod": "A String", # Amount of time that the [Autoscaler](https://cloud.google.com/compute/docs/autoscaler/) should wait between changes to the number of virtual machines. Only applicable for VM runtimes.
+            "coolDownPeriod": "A String", # Amount of time that the Autoscaler (https://cloud.google.com/compute/docs/autoscaler/) should wait between changes to the number of virtual machines. Only applicable for VM runtimes.
             "maxTotalInstances": 42, # Maximum number of instances that should be started to handle requests.
-            "maxConcurrentRequests": 42, # Number of concurrent requests an automatic scaling instance can accept before the scheduler spawns a new instance. Defaults to a runtime-specific value.
+            "maxConcurrentRequests": 42, # Number of concurrent requests an automatic scaling instance can accept before the scheduler spawns a new instance.Defaults to a runtime-specific value.
             "minTotalInstances": 42, # Minimum number of instances that should be maintained for this version.
             "cpuUtilization": { # Target scaling by CPU usage. # Target scaling by CPU usage.
               "targetUtilization": 3.14, # Target CPU utilization ratio to maintain when scaling. Must be between 0 and 1.
               "aggregationWindowLength": "A String", # Period of time over which CPU utilization is calculated.
             },
           },
-          "envVariables": { # Environment variables made available to the application. Only returned in `GET` requests if `view=FULL` is set.
+          "envVariables": { # Environment variables made available to the application.Only returned in GET requests if view=FULL is set.
             "a_key": "A String",
           },
           "resources": { # Machine resources for a version. # Machine resources for this version. Only applicable for VM runtimes.
+            "volumes": [ # User specified volumes.
+              { # Volumes mounted within the app container. Only applicable for VM runtimes.
+                "volumeType": "A String", # Underlying volume type, e.g. 'tmpfs'.
+                "name": "A String", # Unique name for the volume.
+                "sizeGb": 3.14, # Volume size in gigabytes.
+              },
+            ],
             "diskGb": 3.14, # Disk size (GB) needed.
             "cpu": 3.14, # Number of CPU cores needed.
             "memoryGb": 3.14, # Memory (GB) needed.
           },
           "manualScaling": { # A module with manual scaling runs continuously, allowing you to perform complex initialization and rely on the state of its memory over time. # A module with manual scaling runs continuously, allowing you to perform complex initialization and rely on the state of its memory over time.
-            "instances": 42, # Number of instances to assign to the module at the start. This number can later be altered by using the [Modules API](https://cloud.google.com/appengine/docs/python/modules/functions) `set_num_instances()` function.
+            "instances": 42, # Number of instances to assign to the module at the start. This number can later be altered by using the Modules API (https://cloud.google.com/appengine/docs/python/modules/functions) set_num_instances() function.
           },
           "inboundServices": [ # Before an application can receive email or XMPP messages, the application must be configured to enable the service.
             "A String",
           ],
-          "deployment": { # Code and application artifacts used to deploy a version to App Engine. # Code and application artifacts that make up this version. Only returned in `GET` requests if `view=FULL` is set.
+          "deployment": { # Code and application artifacts used to deploy a version to App Engine. # Code and application artifacts that make up this version.Only returned in GET requests if view=FULL is set.
             "files": { # Manifest of the files stored in Google Cloud Storage that are included as part of this version. All files must be readable using the credentials supplied with this call.
               "a_key": { # Single source file that is part of the version to be deployed. Each source file that is deployed must be specified separately.
-                "mimeType": "A String", # The MIME type of the file. Defaults to the value from Google Cloud Storage.
-                "sourceUrl": "A String", # URL source to use to fetch this file. Must be a URL to a resource in Google Cloud Storage in the form 'http(s)://storage.googleapis.com/\/\'.
+                "mimeType": "A String", # The MIME type of the file.Defaults to the value from Google Cloud Storage.
+                "sourceUrl": "A String", # URL source to use to fetch this file. Must be a URL to a resource in Google Cloud Storage in the form 'http(s)://storage.googleapis.com//'.
                 "sha1Sum": "A String", # The SHA1 hash of the file, in hex.
               },
             },
@@ -624,24 +645,24 @@
             "forwardedPorts": [ # List of ports, or port pairs, to forward from the virtual machine to the application container.
               "A String",
             ],
-            "name": "A String", # Google Cloud Platform network where the virtual machines are created. Specify the short name, not the resource path. Defaults to `default`.
+            "name": "A String", # Google Cloud Platform network where the virtual machines are created. Specify the short name, not the resource path.Defaults to default.
           },
-          "nobuildFilesRegex": "A String", # Files that match this pattern will not be built into this version. Only applicable for Go runtimes. Only returned in `GET` requests if `view=FULL` is set.
-          "name": "A String", # Full path to the Version resource in the API. Example: `apps/myapp/modules/default/versions/v1`. @OutputOnly
-          "handlers": [ # An ordered list of URL-matching patterns that should be applied to incoming requests. The first matching URL handles the request and other request handlers are not attempted. Only returned in `GET` requests if `view=FULL` is set.
+          "nobuildFilesRegex": "A String", # Files that match this pattern will not be built into this version. Only applicable for Go runtimes.Only returned in GET requests if view=FULL is set.
+          "name": "A String", # Full path to the Version resource in the API. Example: apps/myapp/modules/default/versions/v1.@OutputOnly
+          "handlers": [ # An ordered list of URL-matching patterns that should be applied to incoming requests. The first matching URL handles the request and other request handlers are not attempted.Only returned in GET requests if view=FULL is set.
             { # URL pattern and description of how the URL should be handled. App Engine can handle URLs by executing application code, or by serving static files uploaded with the version, such as images, CSS, or JavaScript.
-              "staticDirectory": { # Files served directly to the user for a given URL, such as images, CSS stylesheets, or JavaScript source files. Static directory handlers make it easy to serve the entire contents of a directory as static files. # Serves the entire contents of a directory as static files. This attribute is deprecated. You can mimic the behavior of static directories using static files.
+              "staticDirectory": { # Files served directly to the user for a given URL, such as images, CSS stylesheets, or JavaScript source files. Static directory handlers make it easy to serve the entire contents of a directory as static files. # Serves the entire contents of a directory as static files.This attribute is deprecated. You can mimic the behavior of static directories using static files.
                 "mimeType": "A String", # MIME type used to serve all files served by this handler. Defaults to file-specific MIME types, which are direved from each file's filename extension.
                 "httpHeaders": { # HTTP headers to use for all responses from these URLs.
                   "a_key": "A String",
                 },
                 "expiration": "A String", # Time a static file served by this handler should be cached.
-                "directory": "A String", # Path to the directory containing the static files from the application root directory. Everything after the end of the matched URL pattern is appended to `static_dir` to form the full path to the requested file.
+                "directory": "A String", # Path to the directory containing the static files from the application root directory. Everything after the end of the matched URL pattern is appended to static_dir to form the full path to the requested file.
                 "requireMatchingFile": True or False, # Whether this handler should match the request if the file referenced by the handler does not exist.
                 "applicationReadable": True or False, # Whether files should also be uploaded as code data. By default, files declared in static directory handlers are uploaded as static data and are only served to end users; they cannot be read by the application. If enabled, uploads are charged against both your code and static data storage resource quotas.
               },
               "securityLevel": "A String", # Security (HTTPS) enforcement for this URL.
-              "authFailAction": "A String", # Action to take when users access resources that require authentication. Defaults to `redirect`.
+              "authFailAction": "A String", # Action to take when users access resources that require authentication. Defaults to redirect.
               "urlRegex": "A String", # A URL prefix. Uses regular expression syntax, which means regexp special characters must be escaped, but should not contain groupings. All URLs that begin with this prefix are handled by this handler, using the portion of the URL after the prefix as part of the file path.
               "script": { # Executes a script to handle the request that matches the URL pattern. # Executes a script to handle the request that matches this URL pattern.
                 "scriptPath": "A String", # Path to the script from the application root directory.
@@ -661,12 +682,12 @@
                 "scriptPath": "A String", # Path to the script from the application root directory.
               },
               "login": "A String", # Level of login required to access this resource.
-              "redirectHttpResponseCode": "A String", # `30x` code to use when performing redirects for the `secure` field. Defaults to `302`.
+              "redirectHttpResponseCode": "A String", # 30x code to use when performing redirects for the secure field. Defaults to 302.
             },
           ],
-          "creationTime": "A String", # Time that this version was created. @OutputOnly
-          "servingStatus": "A String", # Current serving status of this version. Only the versions with a `SERVING` status create instances and can be billed. `SERVING_STATUS_UNSPECIFIED` is an invalid value. Defaults to `SERVING`.
-          "runtime": "A String", # Desired runtime. Example: `python27`.
+          "creationTime": "A String", # Time that this version was created.@OutputOnly
+          "servingStatus": "A String", # Current serving status of this version. Only the versions with a SERVING status create instances and can be billed.SERVING_STATUS_UNSPECIFIED is an invalid value. Defaults to SERVING.
+          "runtime": "A String", # Desired runtime. Example: python27.
         },
     ],
   }</pre>
@@ -688,10 +709,10 @@
 
 <div class="method">
     <code class="details" id="patch">patch(appsId, modulesId, versionsId, body, mask=None, x__xgafv=None)</code>
-  <pre>Updates the specified Version resource. You can specify the following fields depending on the App Engine environment and type of scaling that the version resource uses: * [`serving_status`](https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1beta4/apps.modules.versions#Version.FIELDS.serving_status): For Version resources that use basic scaling, manual scaling, or run in the App Engine flexible environment. * [`instance_class`](https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1beta4/apps.modules.versions#Version.FIELDS.instance_class): For Version resources that run in the App Engine standard environment. * [`automatic_scaling.min_idle_instances`](https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1beta4/apps.modules.versions#Version.FIELDS.automatic_scaling): For Version resources that use automatic scaling and run in the App Engine standard environment. * [`automatic_scaling.max_idle_instances`](https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1beta4/apps.modules.versions#Version.FIELDS.automatic_scaling): For Version resources that use automatic scaling and run in the App Engine standard environment.
+  <pre>Updates the specified Version resource. You can specify the following fields depending on the App Engine environment and type of scaling that the version resource uses: serving_status (https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1beta4/apps.modules.versions#Version.FIELDS.serving_status): For Version resources that use basic scaling, manual scaling, or run in the App Engine flexible environment. instance_class (https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1beta4/apps.modules.versions#Version.FIELDS.instance_class): For Version resources that run in the App Engine standard environment. automatic_scaling.min_idle_instances (https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1beta4/apps.modules.versions#Version.FIELDS.automatic_scaling): For Version resources that use automatic scaling and run in the App Engine standard environment. automatic_scaling.max_idle_instances (https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1beta4/apps.modules.versions#Version.FIELDS.automatic_scaling): For Version resources that use automatic scaling and run in the App Engine standard environment.
 
 Args:
-  appsId: string, Part of `name`. Name of the resource to update. Example: `apps/myapp/modules/default/versions/1`. (required)
+  appsId: string, Part of `name`. Name of the resource to update. Example: apps/myapp/modules/default/versions/1. (required)
   modulesId: string, Part of `name`. See documentation of `appsId`. (required)
   versionsId: string, Part of `name`. See documentation of `appsId`. (required)
   body: object, The request body. (required)
@@ -706,24 +727,24 @@
       "a_key": "A String",
     },
     "vm": True or False, # Whether to deploy this version in a container on a virtual machine.
-    "instanceClass": "A String", # Instance class that is used to run this version. Valid values are: * AutomaticScaling: `F1`, `F2`, `F4`, `F4_1G` * ManualScaling or BasicScaling: `B1`, `B2`, `B4`, `B8`, `B4_1G` Defaults to `F1` for AutomaticScaling and `B1` for ManualScaling or BasicScaling.
-    "errorHandlers": [ # Custom static error pages. Limited to 10KB per page. Only returned in `GET` requests if `view=FULL` is set.
+    "instanceClass": "A String", # Instance class that is used to run this version. Valid values are: AutomaticScaling: F1, F2, F4, F4_1G ManualScaling or BasicScaling: B1, B2, B4, B8, B4_1GDefaults to F1 for AutomaticScaling and B1 for ManualScaling or BasicScaling.
+    "errorHandlers": [ # Custom static error pages. Limited to 10KB per page.Only returned in GET requests if view=FULL is set.
       { # Custom static error page to be served when an error occurs.
         "errorCode": "A String", # Error condition this handler applies to.
-        "mimeType": "A String", # MIME type of file. Defaults to `text/html`.
+        "mimeType": "A String", # MIME type of file. Defaults to text/html.
         "staticFile": "A String", # Static file content to be served for this error.
       },
     ],
-    "id": "A String", # Relative name of the version within the module. Example: `v1`. Version names can contain only lowercase letters, numbers, or hyphens. Reserved names: "default", "latest", and any name with the prefix "ah-".
-    "apiConfig": { # [Google Cloud Endpoints](https://cloud.google.com/appengine/docs/python/endpoints/) configuration for API handlers. # Serving configuration for [Google Cloud Endpoints](https://cloud.google.com/appengine/docs/python/endpoints/). Only returned in `GET` requests if `view=FULL` is set.
+    "id": "A String", # Relative name of the version within the module. Example: v1. Version names can contain only lowercase letters, numbers, or hyphens. Reserved names: "default", "latest", and any name with the prefix "ah-".
+    "apiConfig": { # Google Cloud Endpoints (https://cloud.google.com/appengine/docs/python/endpoints/) configuration for API handlers. # Serving configuration for Google Cloud Endpoints (https://cloud.google.com/appengine/docs/python/endpoints/).Only returned in GET requests if view=FULL is set.
       "url": "A String", # URL to serve the endpoint at.
       "securityLevel": "A String", # Security (HTTPS) enforcement for this URL.
-      "authFailAction": "A String", # Action to take when users access resources that require authentication. Defaults to `redirect`.
-      "login": "A String", # Level of login required to access this resource. Defaults to `optional`.
+      "authFailAction": "A String", # Action to take when users access resources that require authentication. Defaults to redirect.
+      "login": "A String", # Level of login required to access this resource. Defaults to optional.
       "script": "A String", # Path to the script from the application root directory.
     },
     "threadsafe": True or False, # Whether multiple requests can be dispatched to this version at once.
-    "healthCheck": { # Health checking configuration for VM instances. Unhealthy instances are killed and replaced with new instances. Only applicable for instances in App Engine flexible environment. # Configures health checking for VM instances. Unhealthy instances are stopped and replaced with new instances. Only applicable for VM runtimes. Only returned in `GET` requests if `view=FULL` is set.
+    "healthCheck": { # Health checking configuration for VM instances. Unhealthy instances are killed and replaced with new instances. Only applicable for instances in App Engine flexible environment. # Configures health checking for VM instances. Unhealthy instances are stopped and replaced with new instances. Only applicable for VM runtimes.Only returned in GET requests if view=FULL is set.
       "restartThreshold": 42, # Number of consecutive failed health checks required before an instance is restarted.
       "checkInterval": "A String", # Interval between health checks.
       "unhealthyThreshold": 42, # Number of consecutive failed health checks required before removing traffic.
@@ -732,15 +753,15 @@
       "timeout": "A String", # Time before the health check is considered failed.
       "disableHealthCheck": True or False, # Whether to explicitly disable health checks for this instance.
     },
-    "defaultExpiration": "A String", # Duration that static files should be cached by web proxies and browsers. Only applicable if the corresponding [StaticFilesHandler](https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1/apps.services.versions#staticfileshandler) does not specify its own expiration time. Only returned in `GET` requests if `view=FULL` is set.
-    "libraries": [ # Configuration for third-party Python runtime libraries required by the application. Only returned in `GET` requests if `view=FULL` is set.
+    "defaultExpiration": "A String", # Duration that static files should be cached by web proxies and browsers. Only applicable if the corresponding StaticFilesHandler (https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1/apps.services.versions#staticfileshandler) does not specify its own expiration time.Only returned in GET requests if view=FULL is set.
+    "libraries": [ # Configuration for third-party Python runtime libraries required by the application.Only returned in GET requests if view=FULL is set.
       { # Third-party Python runtime library that is required by the application.
         "version": "A String", # Version of the library to select, or "latest".
         "name": "A String", # Name of the library. Example: "django".
       },
     ],
-    "deployer": "A String", # Email address of the user who created this version. @OutputOnly
-    "env": "A String", # App Engine execution environment to use for this version. Defaults to `1`.
+    "deployer": "A String", # Email address of the user who created this version.@OutputOnly
+    "env": "A String", # App Engine execution environment to use for this version.Defaults to 1.
     "automaticScaling": { # Automatic scaling is based on request rate, response latencies, and other application metrics. # Automatic scaling is based on request rate, response latencies, and other application metrics.
       "minPendingLatency": "A String", # Minimum amount of time a request should wait in the pending queue before starting a new instance to handle it.
       "networkUtilization": { # Target scaling by network usage. Only applicable for VM runtimes. # Target scaling by network usage.
@@ -762,34 +783,41 @@
         "targetConcurrentRequests": 42, # Target number of concurrent requests.
         "targetRequestCountPerSec": 42, # Target requests per second.
       },
-      "coolDownPeriod": "A String", # Amount of time that the [Autoscaler](https://cloud.google.com/compute/docs/autoscaler/) should wait between changes to the number of virtual machines. Only applicable for VM runtimes.
+      "coolDownPeriod": "A String", # Amount of time that the Autoscaler (https://cloud.google.com/compute/docs/autoscaler/) should wait between changes to the number of virtual machines. Only applicable for VM runtimes.
       "maxTotalInstances": 42, # Maximum number of instances that should be started to handle requests.
-      "maxConcurrentRequests": 42, # Number of concurrent requests an automatic scaling instance can accept before the scheduler spawns a new instance. Defaults to a runtime-specific value.
+      "maxConcurrentRequests": 42, # Number of concurrent requests an automatic scaling instance can accept before the scheduler spawns a new instance.Defaults to a runtime-specific value.
       "minTotalInstances": 42, # Minimum number of instances that should be maintained for this version.
       "cpuUtilization": { # Target scaling by CPU usage. # Target scaling by CPU usage.
         "targetUtilization": 3.14, # Target CPU utilization ratio to maintain when scaling. Must be between 0 and 1.
         "aggregationWindowLength": "A String", # Period of time over which CPU utilization is calculated.
       },
     },
-    "envVariables": { # Environment variables made available to the application. Only returned in `GET` requests if `view=FULL` is set.
+    "envVariables": { # Environment variables made available to the application.Only returned in GET requests if view=FULL is set.
       "a_key": "A String",
     },
     "resources": { # Machine resources for a version. # Machine resources for this version. Only applicable for VM runtimes.
+      "volumes": [ # User specified volumes.
+        { # Volumes mounted within the app container. Only applicable for VM runtimes.
+          "volumeType": "A String", # Underlying volume type, e.g. 'tmpfs'.
+          "name": "A String", # Unique name for the volume.
+          "sizeGb": 3.14, # Volume size in gigabytes.
+        },
+      ],
       "diskGb": 3.14, # Disk size (GB) needed.
       "cpu": 3.14, # Number of CPU cores needed.
       "memoryGb": 3.14, # Memory (GB) needed.
     },
     "manualScaling": { # A module with manual scaling runs continuously, allowing you to perform complex initialization and rely on the state of its memory over time. # A module with manual scaling runs continuously, allowing you to perform complex initialization and rely on the state of its memory over time.
-      "instances": 42, # Number of instances to assign to the module at the start. This number can later be altered by using the [Modules API](https://cloud.google.com/appengine/docs/python/modules/functions) `set_num_instances()` function.
+      "instances": 42, # Number of instances to assign to the module at the start. This number can later be altered by using the Modules API (https://cloud.google.com/appengine/docs/python/modules/functions) set_num_instances() function.
     },
     "inboundServices": [ # Before an application can receive email or XMPP messages, the application must be configured to enable the service.
       "A String",
     ],
-    "deployment": { # Code and application artifacts used to deploy a version to App Engine. # Code and application artifacts that make up this version. Only returned in `GET` requests if `view=FULL` is set.
+    "deployment": { # Code and application artifacts used to deploy a version to App Engine. # Code and application artifacts that make up this version.Only returned in GET requests if view=FULL is set.
       "files": { # Manifest of the files stored in Google Cloud Storage that are included as part of this version. All files must be readable using the credentials supplied with this call.
         "a_key": { # Single source file that is part of the version to be deployed. Each source file that is deployed must be specified separately.
-          "mimeType": "A String", # The MIME type of the file. Defaults to the value from Google Cloud Storage.
-          "sourceUrl": "A String", # URL source to use to fetch this file. Must be a URL to a resource in Google Cloud Storage in the form 'http(s)://storage.googleapis.com/\/\'.
+          "mimeType": "A String", # The MIME type of the file.Defaults to the value from Google Cloud Storage.
+          "sourceUrl": "A String", # URL source to use to fetch this file. Must be a URL to a resource in Google Cloud Storage in the form 'http(s)://storage.googleapis.com//'.
           "sha1Sum": "A String", # The SHA1 hash of the file, in hex.
         },
       },
@@ -808,24 +836,24 @@
       "forwardedPorts": [ # List of ports, or port pairs, to forward from the virtual machine to the application container.
         "A String",
       ],
-      "name": "A String", # Google Cloud Platform network where the virtual machines are created. Specify the short name, not the resource path. Defaults to `default`.
+      "name": "A String", # Google Cloud Platform network where the virtual machines are created. Specify the short name, not the resource path.Defaults to default.
     },
-    "nobuildFilesRegex": "A String", # Files that match this pattern will not be built into this version. Only applicable for Go runtimes. Only returned in `GET` requests if `view=FULL` is set.
-    "name": "A String", # Full path to the Version resource in the API. Example: `apps/myapp/modules/default/versions/v1`. @OutputOnly
-    "handlers": [ # An ordered list of URL-matching patterns that should be applied to incoming requests. The first matching URL handles the request and other request handlers are not attempted. Only returned in `GET` requests if `view=FULL` is set.
+    "nobuildFilesRegex": "A String", # Files that match this pattern will not be built into this version. Only applicable for Go runtimes.Only returned in GET requests if view=FULL is set.
+    "name": "A String", # Full path to the Version resource in the API. Example: apps/myapp/modules/default/versions/v1.@OutputOnly
+    "handlers": [ # An ordered list of URL-matching patterns that should be applied to incoming requests. The first matching URL handles the request and other request handlers are not attempted.Only returned in GET requests if view=FULL is set.
       { # URL pattern and description of how the URL should be handled. App Engine can handle URLs by executing application code, or by serving static files uploaded with the version, such as images, CSS, or JavaScript.
-        "staticDirectory": { # Files served directly to the user for a given URL, such as images, CSS stylesheets, or JavaScript source files. Static directory handlers make it easy to serve the entire contents of a directory as static files. # Serves the entire contents of a directory as static files. This attribute is deprecated. You can mimic the behavior of static directories using static files.
+        "staticDirectory": { # Files served directly to the user for a given URL, such as images, CSS stylesheets, or JavaScript source files. Static directory handlers make it easy to serve the entire contents of a directory as static files. # Serves the entire contents of a directory as static files.This attribute is deprecated. You can mimic the behavior of static directories using static files.
           "mimeType": "A String", # MIME type used to serve all files served by this handler. Defaults to file-specific MIME types, which are direved from each file's filename extension.
           "httpHeaders": { # HTTP headers to use for all responses from these URLs.
             "a_key": "A String",
           },
           "expiration": "A String", # Time a static file served by this handler should be cached.
-          "directory": "A String", # Path to the directory containing the static files from the application root directory. Everything after the end of the matched URL pattern is appended to `static_dir` to form the full path to the requested file.
+          "directory": "A String", # Path to the directory containing the static files from the application root directory. Everything after the end of the matched URL pattern is appended to static_dir to form the full path to the requested file.
           "requireMatchingFile": True or False, # Whether this handler should match the request if the file referenced by the handler does not exist.
           "applicationReadable": True or False, # Whether files should also be uploaded as code data. By default, files declared in static directory handlers are uploaded as static data and are only served to end users; they cannot be read by the application. If enabled, uploads are charged against both your code and static data storage resource quotas.
         },
         "securityLevel": "A String", # Security (HTTPS) enforcement for this URL.
-        "authFailAction": "A String", # Action to take when users access resources that require authentication. Defaults to `redirect`.
+        "authFailAction": "A String", # Action to take when users access resources that require authentication. Defaults to redirect.
         "urlRegex": "A String", # A URL prefix. Uses regular expression syntax, which means regexp special characters must be escaped, but should not contain groupings. All URLs that begin with this prefix are handled by this handler, using the portion of the URL after the prefix as part of the file path.
         "script": { # Executes a script to handle the request that matches the URL pattern. # Executes a script to handle the request that matches this URL pattern.
           "scriptPath": "A String", # Path to the script from the application root directory.
@@ -845,12 +873,12 @@
           "scriptPath": "A String", # Path to the script from the application root directory.
         },
         "login": "A String", # Level of login required to access this resource.
-        "redirectHttpResponseCode": "A String", # `30x` code to use when performing redirects for the `secure` field. Defaults to `302`.
+        "redirectHttpResponseCode": "A String", # 30x code to use when performing redirects for the secure field. Defaults to 302.
       },
     ],
-    "creationTime": "A String", # Time that this version was created. @OutputOnly
-    "servingStatus": "A String", # Current serving status of this version. Only the versions with a `SERVING` status create instances and can be billed. `SERVING_STATUS_UNSPECIFIED` is an invalid value. Defaults to `SERVING`.
-    "runtime": "A String", # Desired runtime. Example: `python27`.
+    "creationTime": "A String", # Time that this version was created.@OutputOnly
+    "servingStatus": "A String", # Current serving status of this version. Only the versions with a SERVING status create instances and can be billed.SERVING_STATUS_UNSPECIFIED is an invalid value. Defaults to SERVING.
+    "runtime": "A String", # Desired runtime. Example: python27.
   }
 
   mask: string, Standard field mask for the set of fields to be updated.
@@ -860,10 +888,10 @@
   An object of the form:
 
     { # This resource represents a long-running operation that is the result of a network API call.
-    "response": { # The normal response of the operation in case of success. If the original method returns no data on success, such as `Delete`, the response is `google.protobuf.Empty`. If the original method is standard `Get`/`Create`/`Update`, the response should be the resource. For other methods, the response should have the type `XxxResponse`, where `Xxx` is the original method name. For example, if the original method name is `TakeSnapshot()`, the inferred response type is `TakeSnapshotResponse`.
+    "response": { # The normal response of the operation in case of success. If the original method returns no data on success, such as Delete, the response is google.protobuf.Empty. If the original method is standard Get/Create/Update, the response should be the resource. For other methods, the response should have the type XxxResponse, where Xxx is the original method name. For example, if the original method name is TakeSnapshot(), the inferred response type is TakeSnapshotResponse.
       "a_key": "", # Properties of the object. Contains field @type with type URL.
     },
-    "error": { # The `Status` type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by [gRPC](https://github.com/grpc). The error model is designed to be: - Simple to use and understand for most users - Flexible enough to meet unexpected needs # Overview The `Status` message contains three pieces of data: error code, error message, and error details. The error code should be an enum value of google.rpc.Code, but it may accept additional error codes if needed. The error message should be a developer-facing English message that helps developers *understand* and *resolve* the error. If a localized user-facing error message is needed, put the localized message in the error details or localize it in the client. The optional error details may contain arbitrary information about the error. There is a predefined set of error detail types in the package `google.rpc` which can be used for common error conditions. # Language mapping The `Status` message is the logical representation of the error model, but it is not necessarily the actual wire format. When the `Status` message is exposed in different client libraries and different wire protocols, it can be mapped differently. For example, it will likely be mapped to some exceptions in Java, but more likely mapped to some error codes in C. # Other uses The error model and the `Status` message can be used in a variety of environments, either with or without APIs, to provide a consistent developer experience across different environments. Example uses of this error model include: - Partial errors. If a service needs to return partial errors to the client, it may embed the `Status` in the normal response to indicate the partial errors. - Workflow errors. A typical workflow has multiple steps. Each step may have a `Status` message for error reporting purpose. - Batch operations. If a client uses batch request and batch response, the `Status` message should be used directly inside batch response, one for each error sub-response. - Asynchronous operations. If an API call embeds asynchronous operation results in its response, the status of those operations should be represented directly using the `Status` message. - Logging. If some API errors are stored in logs, the message `Status` could be used directly after any stripping needed for security/privacy reasons. # The error result of the operation in case of failure.
+    "error": { # The Status type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by gRPC (https://github.com/grpc). The error model is designed to be: Simple to use and understand for most users Flexible enough to meet unexpected needsOverviewThe Status message contains three pieces of data: error code, error message, and error details. The error code should be an enum value of google.rpc.Code, but it may accept additional error codes if needed. The error message should be a developer-facing English message that helps developers understand and resolve the error. If a localized user-facing error message is needed, put the localized message in the error details or localize it in the client. The optional error details may contain arbitrary information about the error. There is a predefined set of error detail types in the package google.rpc which can be used for common error conditions.Language mappingThe Status message is the logical representation of the error model, but it is not necessarily the actual wire format. When the Status message is exposed in different client libraries and different wire protocols, it can be mapped differently. For example, it will likely be mapped to some exceptions in Java, but more likely mapped to some error codes in C.Other usesThe error model and the Status message can be used in a variety of environments, either with or without APIs, to provide a consistent developer experience across different environments.Example uses of this error model include: Partial errors. If a service needs to return partial errors to the client, it may embed the Status in the normal response to indicate the partial errors. Workflow errors. A typical workflow has multiple steps. Each step may have a Status message for error reporting purpose. Batch operations. If a client uses batch request and batch response, the Status message should be used directly inside batch response, one for each error sub-response. Asynchronous operations. If an API call embeds asynchronous operation results in its response, the status of those operations should be represented directly using the Status message. Logging. If some API errors are stored in logs, the message Status could be used directly after any stripping needed for security/privacy reasons. # The error result of the operation in case of failure or cancellation.
       "message": "A String", # A developer-facing error message, which should be in English. Any user-facing error message should be localized and sent in the google.rpc.Status.details field, or localized by the client.
       "code": 42, # The status code, which should be an enum value of google.rpc.Code.
       "details": [ # A list of messages that carry the error details. There will be a common set of message types for APIs to use.
@@ -872,8 +900,8 @@
         },
       ],
     },
-    "done": True or False, # If the value is `false`, it means the operation is still in progress. If true, the operation is completed, and either `error` or `response` is available.
-    "name": "A String", # The server-assigned name, which is only unique within the same service that originally returns it. If you use the default HTTP mapping, the `name` should have the format of `operations/some/unique/name`.
+    "done": True or False, # If the value is false, it means the operation is still in progress. If true, the operation is completed, and either error or response is available.
+    "name": "A String", # The server-assigned name, which is only unique within the same service that originally returns it. If you use the default HTTP mapping, the name should have the format of operations/some/unique/name.
     "metadata": { # Service-specific metadata associated with the operation. It typically contains progress information and common metadata such as create time. Some services might not provide such metadata. Any method that returns a long-running operation should document the metadata type, if any.
       "a_key": "", # Properties of the object. Contains field @type with type URL.
     },
diff --git a/docs/dyn/appengine_v1beta4.apps.modules.versions.instances.html b/docs/dyn/appengine_v1beta4.apps.modules.versions.instances.html
index a21db3f..43ad34a 100644
--- a/docs/dyn/appengine_v1beta4.apps.modules.versions.instances.html
+++ b/docs/dyn/appengine_v1beta4.apps.modules.versions.instances.html
@@ -76,7 +76,7 @@
 <h2>Instance Methods</h2>
 <p class="toc_element">
   <code><a href="#debug">debug(appsId, modulesId, versionsId, instancesId, body, x__xgafv=None)</a></code></p>
-<p class="firstline">Enables debugging on a VM instance. This allows you to use the SSH command to connect to the virtual machine where the instance lives. While in "debug mode", the instance continues to serve live traffic. You should delete the instance when you are done debugging and then allow the system to take over and determine if another instance should be started. Only applicable for instances in App Engine flexible environment.</p>
+<p class="firstline">Enables debugging on a VM instance. This allows you to use the SSH command to connect to the virtual machine where the instance lives. While in "debug mode", the instance continues to serve live traffic. You should delete the instance when you are done debugging and then allow the system to take over and determine if another instance should be started.Only applicable for instances in App Engine flexible environment.</p>
 <p class="toc_element">
   <code><a href="#delete">delete(appsId, modulesId, versionsId, instancesId, x__xgafv=None)</a></code></p>
 <p class="firstline">Stops a running instance.</p>
@@ -92,17 +92,18 @@
 <h3>Method Details</h3>
 <div class="method">
     <code class="details" id="debug">debug(appsId, modulesId, versionsId, instancesId, body, x__xgafv=None)</code>
-  <pre>Enables debugging on a VM instance. This allows you to use the SSH command to connect to the virtual machine where the instance lives. While in "debug mode", the instance continues to serve live traffic. You should delete the instance when you are done debugging and then allow the system to take over and determine if another instance should be started. Only applicable for instances in App Engine flexible environment.
+  <pre>Enables debugging on a VM instance. This allows you to use the SSH command to connect to the virtual machine where the instance lives. While in "debug mode", the instance continues to serve live traffic. You should delete the instance when you are done debugging and then allow the system to take over and determine if another instance should be started.Only applicable for instances in App Engine flexible environment.
 
 Args:
-  appsId: string, Part of `name`. Name of the resource requested. Example: `apps/myapp/modules/default/versions/v1/instances/instance-1`. (required)
+  appsId: string, Part of `name`. Name of the resource requested. Example: apps/myapp/modules/default/versions/v1/instances/instance-1. (required)
   modulesId: string, Part of `name`. See documentation of `appsId`. (required)
   versionsId: string, Part of `name`. See documentation of `appsId`. (required)
   instancesId: string, Part of `name`. See documentation of `appsId`. (required)
   body: object, The request body. (required)
     The object takes the form of:
 
-{ # Request message for `Instances.DebugInstance`.
+{ # Request message for Instances.DebugInstance.
+    "sshKey": "A String", # Public SSH key to add to the instance. Examples: [USERNAME]:ssh-rsa [KEY_VALUE] [USERNAME] [USERNAME]:ssh-rsa [KEY_VALUE] google-ssh {"userName":"[USERNAME]","expireOn":"[EXPIRE_TIME]"}For more information, see Adding and Removing SSH Keys (https://cloud.google.com/compute/docs/instances/adding-removing-ssh-keys).
   }
 
   x__xgafv: string, V1 error format.
@@ -111,10 +112,10 @@
   An object of the form:
 
     { # This resource represents a long-running operation that is the result of a network API call.
-    "response": { # The normal response of the operation in case of success. If the original method returns no data on success, such as `Delete`, the response is `google.protobuf.Empty`. If the original method is standard `Get`/`Create`/`Update`, the response should be the resource. For other methods, the response should have the type `XxxResponse`, where `Xxx` is the original method name. For example, if the original method name is `TakeSnapshot()`, the inferred response type is `TakeSnapshotResponse`.
+    "response": { # The normal response of the operation in case of success. If the original method returns no data on success, such as Delete, the response is google.protobuf.Empty. If the original method is standard Get/Create/Update, the response should be the resource. For other methods, the response should have the type XxxResponse, where Xxx is the original method name. For example, if the original method name is TakeSnapshot(), the inferred response type is TakeSnapshotResponse.
       "a_key": "", # Properties of the object. Contains field @type with type URL.
     },
-    "error": { # The `Status` type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by [gRPC](https://github.com/grpc). The error model is designed to be: - Simple to use and understand for most users - Flexible enough to meet unexpected needs # Overview The `Status` message contains three pieces of data: error code, error message, and error details. The error code should be an enum value of google.rpc.Code, but it may accept additional error codes if needed. The error message should be a developer-facing English message that helps developers *understand* and *resolve* the error. If a localized user-facing error message is needed, put the localized message in the error details or localize it in the client. The optional error details may contain arbitrary information about the error. There is a predefined set of error detail types in the package `google.rpc` which can be used for common error conditions. # Language mapping The `Status` message is the logical representation of the error model, but it is not necessarily the actual wire format. When the `Status` message is exposed in different client libraries and different wire protocols, it can be mapped differently. For example, it will likely be mapped to some exceptions in Java, but more likely mapped to some error codes in C. # Other uses The error model and the `Status` message can be used in a variety of environments, either with or without APIs, to provide a consistent developer experience across different environments. Example uses of this error model include: - Partial errors. If a service needs to return partial errors to the client, it may embed the `Status` in the normal response to indicate the partial errors. - Workflow errors. A typical workflow has multiple steps. Each step may have a `Status` message for error reporting purpose. - Batch operations. If a client uses batch request and batch response, the `Status` message should be used directly inside batch response, one for each error sub-response. - Asynchronous operations. If an API call embeds asynchronous operation results in its response, the status of those operations should be represented directly using the `Status` message. - Logging. If some API errors are stored in logs, the message `Status` could be used directly after any stripping needed for security/privacy reasons. # The error result of the operation in case of failure.
+    "error": { # The Status type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by gRPC (https://github.com/grpc). The error model is designed to be: Simple to use and understand for most users Flexible enough to meet unexpected needsOverviewThe Status message contains three pieces of data: error code, error message, and error details. The error code should be an enum value of google.rpc.Code, but it may accept additional error codes if needed. The error message should be a developer-facing English message that helps developers understand and resolve the error. If a localized user-facing error message is needed, put the localized message in the error details or localize it in the client. The optional error details may contain arbitrary information about the error. There is a predefined set of error detail types in the package google.rpc which can be used for common error conditions.Language mappingThe Status message is the logical representation of the error model, but it is not necessarily the actual wire format. When the Status message is exposed in different client libraries and different wire protocols, it can be mapped differently. For example, it will likely be mapped to some exceptions in Java, but more likely mapped to some error codes in C.Other usesThe error model and the Status message can be used in a variety of environments, either with or without APIs, to provide a consistent developer experience across different environments.Example uses of this error model include: Partial errors. If a service needs to return partial errors to the client, it may embed the Status in the normal response to indicate the partial errors. Workflow errors. A typical workflow has multiple steps. Each step may have a Status message for error reporting purpose. Batch operations. If a client uses batch request and batch response, the Status message should be used directly inside batch response, one for each error sub-response. Asynchronous operations. If an API call embeds asynchronous operation results in its response, the status of those operations should be represented directly using the Status message. Logging. If some API errors are stored in logs, the message Status could be used directly after any stripping needed for security/privacy reasons. # The error result of the operation in case of failure or cancellation.
       "message": "A String", # A developer-facing error message, which should be in English. Any user-facing error message should be localized and sent in the google.rpc.Status.details field, or localized by the client.
       "code": 42, # The status code, which should be an enum value of google.rpc.Code.
       "details": [ # A list of messages that carry the error details. There will be a common set of message types for APIs to use.
@@ -123,8 +124,8 @@
         },
       ],
     },
-    "done": True or False, # If the value is `false`, it means the operation is still in progress. If true, the operation is completed, and either `error` or `response` is available.
-    "name": "A String", # The server-assigned name, which is only unique within the same service that originally returns it. If you use the default HTTP mapping, the `name` should have the format of `operations/some/unique/name`.
+    "done": True or False, # If the value is false, it means the operation is still in progress. If true, the operation is completed, and either error or response is available.
+    "name": "A String", # The server-assigned name, which is only unique within the same service that originally returns it. If you use the default HTTP mapping, the name should have the format of operations/some/unique/name.
     "metadata": { # Service-specific metadata associated with the operation. It typically contains progress information and common metadata such as create time. Some services might not provide such metadata. Any method that returns a long-running operation should document the metadata type, if any.
       "a_key": "", # Properties of the object. Contains field @type with type URL.
     },
@@ -136,7 +137,7 @@
   <pre>Stops a running instance.
 
 Args:
-  appsId: string, Part of `name`. Name of the resource requested. Example: `apps/myapp/modules/default/versions/v1/instances/instance-1`. (required)
+  appsId: string, Part of `name`. Name of the resource requested. Example: apps/myapp/modules/default/versions/v1/instances/instance-1. (required)
   modulesId: string, Part of `name`. See documentation of `appsId`. (required)
   versionsId: string, Part of `name`. See documentation of `appsId`. (required)
   instancesId: string, Part of `name`. See documentation of `appsId`. (required)
@@ -146,10 +147,10 @@
   An object of the form:
 
     { # This resource represents a long-running operation that is the result of a network API call.
-    "response": { # The normal response of the operation in case of success. If the original method returns no data on success, such as `Delete`, the response is `google.protobuf.Empty`. If the original method is standard `Get`/`Create`/`Update`, the response should be the resource. For other methods, the response should have the type `XxxResponse`, where `Xxx` is the original method name. For example, if the original method name is `TakeSnapshot()`, the inferred response type is `TakeSnapshotResponse`.
+    "response": { # The normal response of the operation in case of success. If the original method returns no data on success, such as Delete, the response is google.protobuf.Empty. If the original method is standard Get/Create/Update, the response should be the resource. For other methods, the response should have the type XxxResponse, where Xxx is the original method name. For example, if the original method name is TakeSnapshot(), the inferred response type is TakeSnapshotResponse.
       "a_key": "", # Properties of the object. Contains field @type with type URL.
     },
-    "error": { # The `Status` type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by [gRPC](https://github.com/grpc). The error model is designed to be: - Simple to use and understand for most users - Flexible enough to meet unexpected needs # Overview The `Status` message contains three pieces of data: error code, error message, and error details. The error code should be an enum value of google.rpc.Code, but it may accept additional error codes if needed. The error message should be a developer-facing English message that helps developers *understand* and *resolve* the error. If a localized user-facing error message is needed, put the localized message in the error details or localize it in the client. The optional error details may contain arbitrary information about the error. There is a predefined set of error detail types in the package `google.rpc` which can be used for common error conditions. # Language mapping The `Status` message is the logical representation of the error model, but it is not necessarily the actual wire format. When the `Status` message is exposed in different client libraries and different wire protocols, it can be mapped differently. For example, it will likely be mapped to some exceptions in Java, but more likely mapped to some error codes in C. # Other uses The error model and the `Status` message can be used in a variety of environments, either with or without APIs, to provide a consistent developer experience across different environments. Example uses of this error model include: - Partial errors. If a service needs to return partial errors to the client, it may embed the `Status` in the normal response to indicate the partial errors. - Workflow errors. A typical workflow has multiple steps. Each step may have a `Status` message for error reporting purpose. - Batch operations. If a client uses batch request and batch response, the `Status` message should be used directly inside batch response, one for each error sub-response. - Asynchronous operations. If an API call embeds asynchronous operation results in its response, the status of those operations should be represented directly using the `Status` message. - Logging. If some API errors are stored in logs, the message `Status` could be used directly after any stripping needed for security/privacy reasons. # The error result of the operation in case of failure.
+    "error": { # The Status type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by gRPC (https://github.com/grpc). The error model is designed to be: Simple to use and understand for most users Flexible enough to meet unexpected needsOverviewThe Status message contains three pieces of data: error code, error message, and error details. The error code should be an enum value of google.rpc.Code, but it may accept additional error codes if needed. The error message should be a developer-facing English message that helps developers understand and resolve the error. If a localized user-facing error message is needed, put the localized message in the error details or localize it in the client. The optional error details may contain arbitrary information about the error. There is a predefined set of error detail types in the package google.rpc which can be used for common error conditions.Language mappingThe Status message is the logical representation of the error model, but it is not necessarily the actual wire format. When the Status message is exposed in different client libraries and different wire protocols, it can be mapped differently. For example, it will likely be mapped to some exceptions in Java, but more likely mapped to some error codes in C.Other usesThe error model and the Status message can be used in a variety of environments, either with or without APIs, to provide a consistent developer experience across different environments.Example uses of this error model include: Partial errors. If a service needs to return partial errors to the client, it may embed the Status in the normal response to indicate the partial errors. Workflow errors. A typical workflow has multiple steps. Each step may have a Status message for error reporting purpose. Batch operations. If a client uses batch request and batch response, the Status message should be used directly inside batch response, one for each error sub-response. Asynchronous operations. If an API call embeds asynchronous operation results in its response, the status of those operations should be represented directly using the Status message. Logging. If some API errors are stored in logs, the message Status could be used directly after any stripping needed for security/privacy reasons. # The error result of the operation in case of failure or cancellation.
       "message": "A String", # A developer-facing error message, which should be in English. Any user-facing error message should be localized and sent in the google.rpc.Status.details field, or localized by the client.
       "code": 42, # The status code, which should be an enum value of google.rpc.Code.
       "details": [ # A list of messages that carry the error details. There will be a common set of message types for APIs to use.
@@ -158,8 +159,8 @@
         },
       ],
     },
-    "done": True or False, # If the value is `false`, it means the operation is still in progress. If true, the operation is completed, and either `error` or `response` is available.
-    "name": "A String", # The server-assigned name, which is only unique within the same service that originally returns it. If you use the default HTTP mapping, the `name` should have the format of `operations/some/unique/name`.
+    "done": True or False, # If the value is false, it means the operation is still in progress. If true, the operation is completed, and either error or response is available.
+    "name": "A String", # The server-assigned name, which is only unique within the same service that originally returns it. If you use the default HTTP mapping, the name should have the format of operations/some/unique/name.
     "metadata": { # Service-specific metadata associated with the operation. It typically contains progress information and common metadata such as create time. Some services might not provide such metadata. Any method that returns a long-running operation should document the metadata type, if any.
       "a_key": "", # Properties of the object. Contains field @type with type URL.
     },
@@ -171,7 +172,7 @@
   <pre>Gets instance information.
 
 Args:
-  appsId: string, Part of `name`. Name of the resource requested. Example: `apps/myapp/modules/default/versions/v1/instances/instance-1`. (required)
+  appsId: string, Part of `name`. Name of the resource requested. Example: apps/myapp/modules/default/versions/v1/instances/instance-1. (required)
   modulesId: string, Part of `name`. See documentation of `appsId`. (required)
   versionsId: string, Part of `name`. See documentation of `appsId`. (required)
   instancesId: string, Part of `name`. See documentation of `appsId`. (required)
@@ -181,21 +182,22 @@
   An object of the form:
 
     { # An Instance resource is the computing unit that App Engine uses to automatically scale an application.
-    "errors": 42, # Number of errors since this instance was started. @OutputOnly
-    "name": "A String", # Full path to the Instance resource in the API. Example: `apps/myapp/modules/default/versions/v1/instances/instance-1`. @OutputOnly
-    "startTimestamp": "A String", # Time that this instance was started. @OutputOnly
-    "appEngineRelease": "A String", # App Engine release this instance is running on. @OutputOnly
-    "vmId": "A String", # Virtual machine ID of this instance. Only applicable for instances in App Engine flexible environment. @OutputOnly
-    "memoryUsage": "A String", # Total memory in use (bytes). @OutputOnly
-    "id": "A String", # Relative name of the instance within the version. Example: `instance-1`. @OutputOnly
-    "vmUnlocked": True or False, # Whether this instance is in debug mode. Only applicable for instances in App Engine flexible environment. @OutputOnly
-    "averageLatency": 42, # Average latency (ms) over the last minute. @OutputOnly
-    "qps": 3.14, # Average queries per second (QPS) over the last minute. @OutputOnly
-    "requests": 42, # Number of requests since this instance was started. @OutputOnly
-    "vmName": "A String", # Name of the virtual machine where this instance lives. Only applicable for instances in App Engine flexible environment. @OutputOnly
-    "availability": "A String", # Availability of the instance. @OutputOnly
-    "vmZoneName": "A String", # Zone where the virtual machine is located. Only applicable for instances in App Engine flexible environment. @OutputOnly
-    "vmStatus": "A String", # Status of the virtual machine where this instance lives. Only applicable for instances in App Engine flexible environment. @OutputOnly
+    "errors": 42, # Number of errors since this instance was started.@OutputOnly
+    "name": "A String", # Full path to the Instance resource in the API. Example: apps/myapp/modules/default/versions/v1/instances/instance-1.@OutputOnly
+    "startTimestamp": "A String", # Time that this instance was started.@OutputOnly
+    "appEngineRelease": "A String", # App Engine release this instance is running on.@OutputOnly
+    "vmId": "A String", # Virtual machine ID of this instance. Only applicable for instances in App Engine flexible environment.@OutputOnly
+    "memoryUsage": "A String", # Total memory in use (bytes).@OutputOnly
+    "id": "A String", # Relative name of the instance within the version. Example: instance-1.@OutputOnly
+    "vmUnlocked": True or False, # Whether this instance is in debug mode. Only applicable for instances in App Engine flexible environment.@OutputOnly
+    "averageLatency": 42, # Average latency (ms) over the last minute.@OutputOnly
+    "vmIp": "A String", # The IP address of this instance. Only applicable for instances in App Engine flexible environment.@OutputOnly
+    "qps": 3.14, # Average queries per second (QPS) over the last minute.@OutputOnly
+    "requests": 42, # Number of requests since this instance was started.@OutputOnly
+    "vmName": "A String", # Name of the virtual machine where this instance lives. Only applicable for instances in App Engine flexible environment.@OutputOnly
+    "availability": "A String", # Availability of the instance.@OutputOnly
+    "vmZoneName": "A String", # Zone where the virtual machine is located. Only applicable for instances in App Engine flexible environment.@OutputOnly
+    "vmStatus": "A String", # Status of the virtual machine where this instance lives. Only applicable for instances in App Engine flexible environment.@OutputOnly
   }</pre>
 </div>
 
@@ -204,7 +206,7 @@
   <pre>Lists the instances of a version.
 
 Args:
-  appsId: string, Part of `name`. Name of the resource requested. Example: `apps/myapp/modules/default/versions/v1`. (required)
+  appsId: string, Part of `name`. Name of the resource requested. Example: apps/myapp/modules/default/versions/v1. (required)
   modulesId: string, Part of `name`. See documentation of `appsId`. (required)
   versionsId: string, Part of `name`. See documentation of `appsId`. (required)
   pageSize: integer, Maximum results to return per page.
@@ -214,25 +216,26 @@
 Returns:
   An object of the form:
 
-    { # Response message for `Instances.ListInstances`.
+    { # Response message for Instances.ListInstances.
     "nextPageToken": "A String", # Continuation token for fetching the next page of results.
     "instances": [ # The instances belonging to the requested version.
       { # An Instance resource is the computing unit that App Engine uses to automatically scale an application.
-        "errors": 42, # Number of errors since this instance was started. @OutputOnly
-        "name": "A String", # Full path to the Instance resource in the API. Example: `apps/myapp/modules/default/versions/v1/instances/instance-1`. @OutputOnly
-        "startTimestamp": "A String", # Time that this instance was started. @OutputOnly
-        "appEngineRelease": "A String", # App Engine release this instance is running on. @OutputOnly
-        "vmId": "A String", # Virtual machine ID of this instance. Only applicable for instances in App Engine flexible environment. @OutputOnly
-        "memoryUsage": "A String", # Total memory in use (bytes). @OutputOnly
-        "id": "A String", # Relative name of the instance within the version. Example: `instance-1`. @OutputOnly
-        "vmUnlocked": True or False, # Whether this instance is in debug mode. Only applicable for instances in App Engine flexible environment. @OutputOnly
-        "averageLatency": 42, # Average latency (ms) over the last minute. @OutputOnly
-        "qps": 3.14, # Average queries per second (QPS) over the last minute. @OutputOnly
-        "requests": 42, # Number of requests since this instance was started. @OutputOnly
-        "vmName": "A String", # Name of the virtual machine where this instance lives. Only applicable for instances in App Engine flexible environment. @OutputOnly
-        "availability": "A String", # Availability of the instance. @OutputOnly
-        "vmZoneName": "A String", # Zone where the virtual machine is located. Only applicable for instances in App Engine flexible environment. @OutputOnly
-        "vmStatus": "A String", # Status of the virtual machine where this instance lives. Only applicable for instances in App Engine flexible environment. @OutputOnly
+        "errors": 42, # Number of errors since this instance was started.@OutputOnly
+        "name": "A String", # Full path to the Instance resource in the API. Example: apps/myapp/modules/default/versions/v1/instances/instance-1.@OutputOnly
+        "startTimestamp": "A String", # Time that this instance was started.@OutputOnly
+        "appEngineRelease": "A String", # App Engine release this instance is running on.@OutputOnly
+        "vmId": "A String", # Virtual machine ID of this instance. Only applicable for instances in App Engine flexible environment.@OutputOnly
+        "memoryUsage": "A String", # Total memory in use (bytes).@OutputOnly
+        "id": "A String", # Relative name of the instance within the version. Example: instance-1.@OutputOnly
+        "vmUnlocked": True or False, # Whether this instance is in debug mode. Only applicable for instances in App Engine flexible environment.@OutputOnly
+        "averageLatency": 42, # Average latency (ms) over the last minute.@OutputOnly
+        "vmIp": "A String", # The IP address of this instance. Only applicable for instances in App Engine flexible environment.@OutputOnly
+        "qps": 3.14, # Average queries per second (QPS) over the last minute.@OutputOnly
+        "requests": 42, # Number of requests since this instance was started.@OutputOnly
+        "vmName": "A String", # Name of the virtual machine where this instance lives. Only applicable for instances in App Engine flexible environment.@OutputOnly
+        "availability": "A String", # Availability of the instance.@OutputOnly
+        "vmZoneName": "A String", # Zone where the virtual machine is located. Only applicable for instances in App Engine flexible environment.@OutputOnly
+        "vmStatus": "A String", # Status of the virtual machine where this instance lives. Only applicable for instances in App Engine flexible environment.@OutputOnly
       },
     ],
   }</pre>
diff --git a/docs/dyn/appengine_v1beta4.apps.operations.html b/docs/dyn/appengine_v1beta4.apps.operations.html
index a4e0bb5..72ba064 100644
--- a/docs/dyn/appengine_v1beta4.apps.operations.html
+++ b/docs/dyn/appengine_v1beta4.apps.operations.html
@@ -79,7 +79,7 @@
 <p class="firstline">Gets the latest state of a long-running operation. Clients can use this method to poll the operation result at intervals as recommended by the API service.</p>
 <p class="toc_element">
   <code><a href="#list">list(appsId, pageSize=None, filter=None, pageToken=None, x__xgafv=None)</a></code></p>
-<p class="firstline">Lists operations that match the specified filter in the request. If the server doesn't support this method, it returns `UNIMPLEMENTED`. NOTE: the `name` binding below allows API services to override the binding to use different resource name schemes, such as `users/*/operations`.</p>
+<p class="firstline">Lists operations that match the specified filter in the request. If the server doesn't support this method, it returns UNIMPLEMENTED.NOTE: the name binding below allows API services to override the binding to use different resource name schemes, such as users/*/operations.</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>
@@ -97,10 +97,10 @@
   An object of the form:
 
     { # This resource represents a long-running operation that is the result of a network API call.
-    "response": { # The normal response of the operation in case of success. If the original method returns no data on success, such as `Delete`, the response is `google.protobuf.Empty`. If the original method is standard `Get`/`Create`/`Update`, the response should be the resource. For other methods, the response should have the type `XxxResponse`, where `Xxx` is the original method name. For example, if the original method name is `TakeSnapshot()`, the inferred response type is `TakeSnapshotResponse`.
+    "response": { # The normal response of the operation in case of success. If the original method returns no data on success, such as Delete, the response is google.protobuf.Empty. If the original method is standard Get/Create/Update, the response should be the resource. For other methods, the response should have the type XxxResponse, where Xxx is the original method name. For example, if the original method name is TakeSnapshot(), the inferred response type is TakeSnapshotResponse.
       "a_key": "", # Properties of the object. Contains field @type with type URL.
     },
-    "error": { # The `Status` type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by [gRPC](https://github.com/grpc). The error model is designed to be: - Simple to use and understand for most users - Flexible enough to meet unexpected needs # Overview The `Status` message contains three pieces of data: error code, error message, and error details. The error code should be an enum value of google.rpc.Code, but it may accept additional error codes if needed. The error message should be a developer-facing English message that helps developers *understand* and *resolve* the error. If a localized user-facing error message is needed, put the localized message in the error details or localize it in the client. The optional error details may contain arbitrary information about the error. There is a predefined set of error detail types in the package `google.rpc` which can be used for common error conditions. # Language mapping The `Status` message is the logical representation of the error model, but it is not necessarily the actual wire format. When the `Status` message is exposed in different client libraries and different wire protocols, it can be mapped differently. For example, it will likely be mapped to some exceptions in Java, but more likely mapped to some error codes in C. # Other uses The error model and the `Status` message can be used in a variety of environments, either with or without APIs, to provide a consistent developer experience across different environments. Example uses of this error model include: - Partial errors. If a service needs to return partial errors to the client, it may embed the `Status` in the normal response to indicate the partial errors. - Workflow errors. A typical workflow has multiple steps. Each step may have a `Status` message for error reporting purpose. - Batch operations. If a client uses batch request and batch response, the `Status` message should be used directly inside batch response, one for each error sub-response. - Asynchronous operations. If an API call embeds asynchronous operation results in its response, the status of those operations should be represented directly using the `Status` message. - Logging. If some API errors are stored in logs, the message `Status` could be used directly after any stripping needed for security/privacy reasons. # The error result of the operation in case of failure.
+    "error": { # The Status type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by gRPC (https://github.com/grpc). The error model is designed to be: Simple to use and understand for most users Flexible enough to meet unexpected needsOverviewThe Status message contains three pieces of data: error code, error message, and error details. The error code should be an enum value of google.rpc.Code, but it may accept additional error codes if needed. The error message should be a developer-facing English message that helps developers understand and resolve the error. If a localized user-facing error message is needed, put the localized message in the error details or localize it in the client. The optional error details may contain arbitrary information about the error. There is a predefined set of error detail types in the package google.rpc which can be used for common error conditions.Language mappingThe Status message is the logical representation of the error model, but it is not necessarily the actual wire format. When the Status message is exposed in different client libraries and different wire protocols, it can be mapped differently. For example, it will likely be mapped to some exceptions in Java, but more likely mapped to some error codes in C.Other usesThe error model and the Status message can be used in a variety of environments, either with or without APIs, to provide a consistent developer experience across different environments.Example uses of this error model include: Partial errors. If a service needs to return partial errors to the client, it may embed the Status in the normal response to indicate the partial errors. Workflow errors. A typical workflow has multiple steps. Each step may have a Status message for error reporting purpose. Batch operations. If a client uses batch request and batch response, the Status message should be used directly inside batch response, one for each error sub-response. Asynchronous operations. If an API call embeds asynchronous operation results in its response, the status of those operations should be represented directly using the Status message. Logging. If some API errors are stored in logs, the message Status could be used directly after any stripping needed for security/privacy reasons. # The error result of the operation in case of failure or cancellation.
       "message": "A String", # A developer-facing error message, which should be in English. Any user-facing error message should be localized and sent in the google.rpc.Status.details field, or localized by the client.
       "code": 42, # The status code, which should be an enum value of google.rpc.Code.
       "details": [ # A list of messages that carry the error details. There will be a common set of message types for APIs to use.
@@ -109,8 +109,8 @@
         },
       ],
     },
-    "done": True or False, # If the value is `false`, it means the operation is still in progress. If true, the operation is completed, and either `error` or `response` is available.
-    "name": "A String", # The server-assigned name, which is only unique within the same service that originally returns it. If you use the default HTTP mapping, the `name` should have the format of `operations/some/unique/name`.
+    "done": True or False, # If the value is false, it means the operation is still in progress. If true, the operation is completed, and either error or response is available.
+    "name": "A String", # The server-assigned name, which is only unique within the same service that originally returns it. If you use the default HTTP mapping, the name should have the format of operations/some/unique/name.
     "metadata": { # Service-specific metadata associated with the operation. It typically contains progress information and common metadata such as create time. Some services might not provide such metadata. Any method that returns a long-running operation should document the metadata type, if any.
       "a_key": "", # Properties of the object. Contains field @type with type URL.
     },
@@ -119,7 +119,7 @@
 
 <div class="method">
     <code class="details" id="list">list(appsId, pageSize=None, filter=None, pageToken=None, x__xgafv=None)</code>
-  <pre>Lists operations that match the specified filter in the request. If the server doesn't support this method, it returns `UNIMPLEMENTED`. NOTE: the `name` binding below allows API services to override the binding to use different resource name schemes, such as `users/*/operations`.
+  <pre>Lists operations that match the specified filter in the request. If the server doesn't support this method, it returns UNIMPLEMENTED.NOTE: the name binding below allows API services to override the binding to use different resource name schemes, such as users/*/operations.
 
 Args:
   appsId: string, Part of `name`. The name of the operation collection. (required)
@@ -134,10 +134,10 @@
     { # The response message for Operations.ListOperations.
     "operations": [ # A list of operations that matches the specified filter in the request.
       { # This resource represents a long-running operation that is the result of a network API call.
-        "response": { # The normal response of the operation in case of success. If the original method returns no data on success, such as `Delete`, the response is `google.protobuf.Empty`. If the original method is standard `Get`/`Create`/`Update`, the response should be the resource. For other methods, the response should have the type `XxxResponse`, where `Xxx` is the original method name. For example, if the original method name is `TakeSnapshot()`, the inferred response type is `TakeSnapshotResponse`.
+        "response": { # The normal response of the operation in case of success. If the original method returns no data on success, such as Delete, the response is google.protobuf.Empty. If the original method is standard Get/Create/Update, the response should be the resource. For other methods, the response should have the type XxxResponse, where Xxx is the original method name. For example, if the original method name is TakeSnapshot(), the inferred response type is TakeSnapshotResponse.
           "a_key": "", # Properties of the object. Contains field @type with type URL.
         },
-        "error": { # The `Status` type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by [gRPC](https://github.com/grpc). The error model is designed to be: - Simple to use and understand for most users - Flexible enough to meet unexpected needs # Overview The `Status` message contains three pieces of data: error code, error message, and error details. The error code should be an enum value of google.rpc.Code, but it may accept additional error codes if needed. The error message should be a developer-facing English message that helps developers *understand* and *resolve* the error. If a localized user-facing error message is needed, put the localized message in the error details or localize it in the client. The optional error details may contain arbitrary information about the error. There is a predefined set of error detail types in the package `google.rpc` which can be used for common error conditions. # Language mapping The `Status` message is the logical representation of the error model, but it is not necessarily the actual wire format. When the `Status` message is exposed in different client libraries and different wire protocols, it can be mapped differently. For example, it will likely be mapped to some exceptions in Java, but more likely mapped to some error codes in C. # Other uses The error model and the `Status` message can be used in a variety of environments, either with or without APIs, to provide a consistent developer experience across different environments. Example uses of this error model include: - Partial errors. If a service needs to return partial errors to the client, it may embed the `Status` in the normal response to indicate the partial errors. - Workflow errors. A typical workflow has multiple steps. Each step may have a `Status` message for error reporting purpose. - Batch operations. If a client uses batch request and batch response, the `Status` message should be used directly inside batch response, one for each error sub-response. - Asynchronous operations. If an API call embeds asynchronous operation results in its response, the status of those operations should be represented directly using the `Status` message. - Logging. If some API errors are stored in logs, the message `Status` could be used directly after any stripping needed for security/privacy reasons. # The error result of the operation in case of failure.
+        "error": { # The Status type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by gRPC (https://github.com/grpc). The error model is designed to be: Simple to use and understand for most users Flexible enough to meet unexpected needsOverviewThe Status message contains three pieces of data: error code, error message, and error details. The error code should be an enum value of google.rpc.Code, but it may accept additional error codes if needed. The error message should be a developer-facing English message that helps developers understand and resolve the error. If a localized user-facing error message is needed, put the localized message in the error details or localize it in the client. The optional error details may contain arbitrary information about the error. There is a predefined set of error detail types in the package google.rpc which can be used for common error conditions.Language mappingThe Status message is the logical representation of the error model, but it is not necessarily the actual wire format. When the Status message is exposed in different client libraries and different wire protocols, it can be mapped differently. For example, it will likely be mapped to some exceptions in Java, but more likely mapped to some error codes in C.Other usesThe error model and the Status message can be used in a variety of environments, either with or without APIs, to provide a consistent developer experience across different environments.Example uses of this error model include: Partial errors. If a service needs to return partial errors to the client, it may embed the Status in the normal response to indicate the partial errors. Workflow errors. A typical workflow has multiple steps. Each step may have a Status message for error reporting purpose. Batch operations. If a client uses batch request and batch response, the Status message should be used directly inside batch response, one for each error sub-response. Asynchronous operations. If an API call embeds asynchronous operation results in its response, the status of those operations should be represented directly using the Status message. Logging. If some API errors are stored in logs, the message Status could be used directly after any stripping needed for security/privacy reasons. # The error result of the operation in case of failure or cancellation.
           "message": "A String", # A developer-facing error message, which should be in English. Any user-facing error message should be localized and sent in the google.rpc.Status.details field, or localized by the client.
           "code": 42, # The status code, which should be an enum value of google.rpc.Code.
           "details": [ # A list of messages that carry the error details. There will be a common set of message types for APIs to use.
@@ -146,8 +146,8 @@
             },
           ],
         },
-        "done": True or False, # If the value is `false`, it means the operation is still in progress. If true, the operation is completed, and either `error` or `response` is available.
-        "name": "A String", # The server-assigned name, which is only unique within the same service that originally returns it. If you use the default HTTP mapping, the `name` should have the format of `operations/some/unique/name`.
+        "done": True or False, # If the value is false, it means the operation is still in progress. If true, the operation is completed, and either error or response is available.
+        "name": "A String", # The server-assigned name, which is only unique within the same service that originally returns it. If you use the default HTTP mapping, the name should have the format of operations/some/unique/name.
         "metadata": { # Service-specific metadata associated with the operation. It typically contains progress information and common metadata such as create time. Some services might not provide such metadata. Any method that returns a long-running operation should document the metadata type, if any.
           "a_key": "", # Properties of the object. Contains field @type with type URL.
         },
diff --git a/docs/dyn/appengine_v1beta5.apps.html b/docs/dyn/appengine_v1beta5.apps.html
index 7b012ff..85ea070 100644
--- a/docs/dyn/appengine_v1beta5.apps.html
+++ b/docs/dyn/appengine_v1beta5.apps.html
@@ -91,38 +91,38 @@
 
 <p class="toc_element">
   <code><a href="#create">create(body, x__xgafv=None)</a></code></p>
-<p class="firstline">Creates an App Engine application for a Google Cloud Platform project. This requires a project that excludes an App Engine application. For details about creating a project without an application, see the [Google Cloud Resource Manager create project topic](https://cloud.google.com/resource-manager/docs/creating-project).</p>
+<p class="firstline">Creates an App Engine application for a Google Cloud Platform project. This requires a project that excludes an App Engine application. For details about creating a project without an application, see the Google Cloud Resource Manager create project topic (https://cloud.google.com/resource-manager/docs/creating-project).</p>
 <p class="toc_element">
   <code><a href="#get">get(appsId, x__xgafv=None, ensureResourcesExist=None)</a></code></p>
 <p class="firstline">Gets information about an application.</p>
 <p class="toc_element">
   <code><a href="#patch">patch(appsId, body, mask=None, x__xgafv=None)</a></code></p>
-<p class="firstline">Updates application parameters.</p>
+<p class="firstline">Updates the specified Application resource. You can update the following fields: auth_domain (https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1beta5/apps#Application.FIELDS.auth_domain) default_cookie_expiration (https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1beta5/apps#Application.FIELDS.default_cookie_expiration)</p>
 <h3>Method Details</h3>
 <div class="method">
     <code class="details" id="create">create(body, x__xgafv=None)</code>
-  <pre>Creates an App Engine application for a Google Cloud Platform project. This requires a project that excludes an App Engine application. For details about creating a project without an application, see the [Google Cloud Resource Manager create project topic](https://cloud.google.com/resource-manager/docs/creating-project).
+  <pre>Creates an App Engine application for a Google Cloud Platform project. This requires a project that excludes an App Engine application. For details about creating a project without an application, see the Google Cloud Resource Manager create project topic (https://cloud.google.com/resource-manager/docs/creating-project).
 
 Args:
   body: object, The request body. (required)
     The object takes the form of:
 
 { # An Application resource contains the top-level configuration of an App Engine application.
-    "defaultHostname": "A String", # Hostname used to reach the application, as resolved by App Engine. @OutputOnly
-    "name": "A String", # Full path to the Application resource in the API. Example: `apps/myapp`. @OutputOnly
-    "codeBucket": "A String", # A Google Cloud Storage bucket that can be used for storing files associated with this application. This bucket is associated with the application and can be used by the gcloud deployment commands. @OutputOnly
-    "defaultBucket": "A String", # A Google Cloud Storage bucket that can be used by the application to store content. @OutputOnly
-    "dispatchRules": [ # HTTP path dispatch rules for requests to the application that do not explicitly target a service or version. Rules are order-dependent. @OutputOnly
+    "defaultHostname": "A String", # Hostname used to reach the application, as resolved by App Engine.@OutputOnly
+    "name": "A String", # Full path to the Application resource in the API. Example: apps/myapp.@OutputOnly
+    "codeBucket": "A String", # A Google Cloud Storage bucket that can be used for storing files associated with this application. This bucket is associated with the application and can be used by the gcloud deployment commands.@OutputOnly
+    "defaultBucket": "A String", # A Google Cloud Storage bucket that can be used by the application to store content.@OutputOnly
+    "dispatchRules": [ # HTTP path dispatch rules for requests to the application that do not explicitly target a service or version. Rules are order-dependent.@OutputOnly
       { # Rules to match an HTTP request and dispatch that request to a service.
-        "path": "A String", # Pathname within the host. Must start with a "`/`". A single "`*`" can be included at the end of the path. The sum of the lengths of the domain and path may not exceed 100 characters.
-        "domain": "A String", # Domain name to match against. The wildcard "`*`" is supported if specified before a period: "`*.`". Defaults to matching all domains: "`*`".
-        "service": "A String", # Resource id of a service in this application that should serve the matched request. The service must already exist. Example: `default`.
+        "path": "A String", # Pathname within the host. Must start with a "/". A single "*" can be included at the end of the path. The sum of the lengths of the domain and path may not exceed 100 characters.
+        "domain": "A String", # Domain name to match against. The wildcard "*" is supported if specified before a period: "*.".Defaults to matching all domains: "*".
+        "service": "A String", # Resource id of a service in this application that should serve the matched request. The service must already exist. Example: default.
       },
     ],
-    "defaultCookieExpiration": "A String", # Cookie expiration policy for this application. @OutputOnly
-    "location": "A String", # Location from which this application will be run. Application instances will run out of data centers in the chosen location, which is also where all of the application's end user content is stored. Defaults to `us-central`. Options are: `us-central` - Central US `europe-west` - Western Europe `us-east1` - Eastern US
-    "authDomain": "A String", # Google Apps authentication domain that controls which users can access this application. Defaults to open access for any Google Account.
-    "id": "A String", # Identifier of the Application resource. This identifier is equivalent to the project ID of the Google Cloud Platform project where you want to deploy your application. Example: `myapp`.
+    "defaultCookieExpiration": "A String", # Cookie expiration policy for this application.
+    "location": "A String", # Location from which this application will be run. Application instances will run out of data centers in the chosen location, which is also where all of the application's end user content is stored.Defaults to us-central.Options are:us-central - Central USeurope-west - Western Europeus-east1 - Eastern US
+    "authDomain": "A String", # Google Apps authentication domain that controls which users can access this application.Defaults to open access for any Google Account.
+    "id": "A String", # Identifier of the Application resource. This identifier is equivalent to the project ID of the Google Cloud Platform project where you want to deploy your application. Example: myapp.
   }
 
   x__xgafv: string, V1 error format.
@@ -131,10 +131,10 @@
   An object of the form:
 
     { # This resource represents a long-running operation that is the result of a network API call.
-    "response": { # The normal response of the operation in case of success. If the original method returns no data on success, such as `Delete`, the response is `google.protobuf.Empty`. If the original method is standard `Get`/`Create`/`Update`, the response should be the resource. For other methods, the response should have the type `XxxResponse`, where `Xxx` is the original method name. For example, if the original method name is `TakeSnapshot()`, the inferred response type is `TakeSnapshotResponse`.
+    "response": { # The normal response of the operation in case of success. If the original method returns no data on success, such as Delete, the response is google.protobuf.Empty. If the original method is standard Get/Create/Update, the response should be the resource. For other methods, the response should have the type XxxResponse, where Xxx is the original method name. For example, if the original method name is TakeSnapshot(), the inferred response type is TakeSnapshotResponse.
       "a_key": "", # Properties of the object. Contains field @type with type URL.
     },
-    "error": { # The `Status` type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by [gRPC](https://github.com/grpc). The error model is designed to be: - Simple to use and understand for most users - Flexible enough to meet unexpected needs # Overview The `Status` message contains three pieces of data: error code, error message, and error details. The error code should be an enum value of google.rpc.Code, but it may accept additional error codes if needed. The error message should be a developer-facing English message that helps developers *understand* and *resolve* the error. If a localized user-facing error message is needed, put the localized message in the error details or localize it in the client. The optional error details may contain arbitrary information about the error. There is a predefined set of error detail types in the package `google.rpc` which can be used for common error conditions. # Language mapping The `Status` message is the logical representation of the error model, but it is not necessarily the actual wire format. When the `Status` message is exposed in different client libraries and different wire protocols, it can be mapped differently. For example, it will likely be mapped to some exceptions in Java, but more likely mapped to some error codes in C. # Other uses The error model and the `Status` message can be used in a variety of environments, either with or without APIs, to provide a consistent developer experience across different environments. Example uses of this error model include: - Partial errors. If a service needs to return partial errors to the client, it may embed the `Status` in the normal response to indicate the partial errors. - Workflow errors. A typical workflow has multiple steps. Each step may have a `Status` message for error reporting purpose. - Batch operations. If a client uses batch request and batch response, the `Status` message should be used directly inside batch response, one for each error sub-response. - Asynchronous operations. If an API call embeds asynchronous operation results in its response, the status of those operations should be represented directly using the `Status` message. - Logging. If some API errors are stored in logs, the message `Status` could be used directly after any stripping needed for security/privacy reasons. # The error result of the operation in case of failure.
+    "error": { # The Status type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by gRPC (https://github.com/grpc). The error model is designed to be: Simple to use and understand for most users Flexible enough to meet unexpected needsOverviewThe Status message contains three pieces of data: error code, error message, and error details. The error code should be an enum value of google.rpc.Code, but it may accept additional error codes if needed. The error message should be a developer-facing English message that helps developers understand and resolve the error. If a localized user-facing error message is needed, put the localized message in the error details or localize it in the client. The optional error details may contain arbitrary information about the error. There is a predefined set of error detail types in the package google.rpc which can be used for common error conditions.Language mappingThe Status message is the logical representation of the error model, but it is not necessarily the actual wire format. When the Status message is exposed in different client libraries and different wire protocols, it can be mapped differently. For example, it will likely be mapped to some exceptions in Java, but more likely mapped to some error codes in C.Other usesThe error model and the Status message can be used in a variety of environments, either with or without APIs, to provide a consistent developer experience across different environments.Example uses of this error model include: Partial errors. If a service needs to return partial errors to the client, it may embed the Status in the normal response to indicate the partial errors. Workflow errors. A typical workflow has multiple steps. Each step may have a Status message for error reporting purpose. Batch operations. If a client uses batch request and batch response, the Status message should be used directly inside batch response, one for each error sub-response. Asynchronous operations. If an API call embeds asynchronous operation results in its response, the status of those operations should be represented directly using the Status message. Logging. If some API errors are stored in logs, the message Status could be used directly after any stripping needed for security/privacy reasons. # The error result of the operation in case of failure or cancellation.
       "message": "A String", # A developer-facing error message, which should be in English. Any user-facing error message should be localized and sent in the google.rpc.Status.details field, or localized by the client.
       "code": 42, # The status code, which should be an enum value of google.rpc.Code.
       "details": [ # A list of messages that carry the error details. There will be a common set of message types for APIs to use.
@@ -143,8 +143,8 @@
         },
       ],
     },
-    "done": True or False, # If the value is `false`, it means the operation is still in progress. If true, the operation is completed, and either `error` or `response` is available.
-    "name": "A String", # The server-assigned name, which is only unique within the same service that originally returns it. If you use the default HTTP mapping, the `name` should have the format of `operations/some/unique/name`.
+    "done": True or False, # If the value is false, it means the operation is still in progress. If true, the operation is completed, and either error or response is available.
+    "name": "A String", # The server-assigned name, which is only unique within the same service that originally returns it. If you use the default HTTP mapping, the name should have the format of operations/some/unique/name.
     "metadata": { # Service-specific metadata associated with the operation. It typically contains progress information and common metadata such as create time. Some services might not provide such metadata. Any method that returns a long-running operation should document the metadata type, if any.
       "a_key": "", # Properties of the object. Contains field @type with type URL.
     },
@@ -156,57 +156,57 @@
   <pre>Gets information about an application.
 
 Args:
-  appsId: string, Part of `name`. Name of the application to get. Example: `apps/myapp`. (required)
+  appsId: string, Part of `name`. Name of the application to get. Example: apps/myapp. (required)
   x__xgafv: string, V1 error format.
-  ensureResourcesExist: boolean, Certain resources associated with an application are created on-demand. Controls whether these resources should be created when performing the `GET` operation. If specified and any resources could not be created, the request will fail with an error code. Additionally, this parameter can cause the request to take longer to complete. Note: This parameter will be deprecated in a future version of the API.
+  ensureResourcesExist: boolean, Certain resources associated with an application are created on-demand. Controls whether these resources should be created when performing the GET operation. If specified and any resources could not be created, the request will fail with an error code. Additionally, this parameter can cause the request to take longer to complete. Note: This parameter will be deprecated in a future version of the API.
 
 Returns:
   An object of the form:
 
     { # An Application resource contains the top-level configuration of an App Engine application.
-      "defaultHostname": "A String", # Hostname used to reach the application, as resolved by App Engine. @OutputOnly
-      "name": "A String", # Full path to the Application resource in the API. Example: `apps/myapp`. @OutputOnly
-      "codeBucket": "A String", # A Google Cloud Storage bucket that can be used for storing files associated with this application. This bucket is associated with the application and can be used by the gcloud deployment commands. @OutputOnly
-      "defaultBucket": "A String", # A Google Cloud Storage bucket that can be used by the application to store content. @OutputOnly
-      "dispatchRules": [ # HTTP path dispatch rules for requests to the application that do not explicitly target a service or version. Rules are order-dependent. @OutputOnly
+      "defaultHostname": "A String", # Hostname used to reach the application, as resolved by App Engine.@OutputOnly
+      "name": "A String", # Full path to the Application resource in the API. Example: apps/myapp.@OutputOnly
+      "codeBucket": "A String", # A Google Cloud Storage bucket that can be used for storing files associated with this application. This bucket is associated with the application and can be used by the gcloud deployment commands.@OutputOnly
+      "defaultBucket": "A String", # A Google Cloud Storage bucket that can be used by the application to store content.@OutputOnly
+      "dispatchRules": [ # HTTP path dispatch rules for requests to the application that do not explicitly target a service or version. Rules are order-dependent.@OutputOnly
         { # Rules to match an HTTP request and dispatch that request to a service.
-          "path": "A String", # Pathname within the host. Must start with a "`/`". A single "`*`" can be included at the end of the path. The sum of the lengths of the domain and path may not exceed 100 characters.
-          "domain": "A String", # Domain name to match against. The wildcard "`*`" is supported if specified before a period: "`*.`". Defaults to matching all domains: "`*`".
-          "service": "A String", # Resource id of a service in this application that should serve the matched request. The service must already exist. Example: `default`.
+          "path": "A String", # Pathname within the host. Must start with a "/". A single "*" can be included at the end of the path. The sum of the lengths of the domain and path may not exceed 100 characters.
+          "domain": "A String", # Domain name to match against. The wildcard "*" is supported if specified before a period: "*.".Defaults to matching all domains: "*".
+          "service": "A String", # Resource id of a service in this application that should serve the matched request. The service must already exist. Example: default.
         },
       ],
-      "defaultCookieExpiration": "A String", # Cookie expiration policy for this application. @OutputOnly
-      "location": "A String", # Location from which this application will be run. Application instances will run out of data centers in the chosen location, which is also where all of the application's end user content is stored. Defaults to `us-central`. Options are: `us-central` - Central US `europe-west` - Western Europe `us-east1` - Eastern US
-      "authDomain": "A String", # Google Apps authentication domain that controls which users can access this application. Defaults to open access for any Google Account.
-      "id": "A String", # Identifier of the Application resource. This identifier is equivalent to the project ID of the Google Cloud Platform project where you want to deploy your application. Example: `myapp`.
+      "defaultCookieExpiration": "A String", # Cookie expiration policy for this application.
+      "location": "A String", # Location from which this application will be run. Application instances will run out of data centers in the chosen location, which is also where all of the application's end user content is stored.Defaults to us-central.Options are:us-central - Central USeurope-west - Western Europeus-east1 - Eastern US
+      "authDomain": "A String", # Google Apps authentication domain that controls which users can access this application.Defaults to open access for any Google Account.
+      "id": "A String", # Identifier of the Application resource. This identifier is equivalent to the project ID of the Google Cloud Platform project where you want to deploy your application. Example: myapp.
     }</pre>
 </div>
 
 <div class="method">
     <code class="details" id="patch">patch(appsId, body, mask=None, x__xgafv=None)</code>
-  <pre>Updates application parameters.
+  <pre>Updates the specified Application resource. You can update the following fields: auth_domain (https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1beta5/apps#Application.FIELDS.auth_domain) default_cookie_expiration (https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1beta5/apps#Application.FIELDS.default_cookie_expiration)
 
 Args:
-  appsId: string, Part of `name`. Name of the application to update. Example: `apps/myapp`. (required)
+  appsId: string, Part of `name`. Name of the Application resource to update. Example: apps/myapp. (required)
   body: object, The request body. (required)
     The object takes the form of:
 
 { # An Application resource contains the top-level configuration of an App Engine application.
-    "defaultHostname": "A String", # Hostname used to reach the application, as resolved by App Engine. @OutputOnly
-    "name": "A String", # Full path to the Application resource in the API. Example: `apps/myapp`. @OutputOnly
-    "codeBucket": "A String", # A Google Cloud Storage bucket that can be used for storing files associated with this application. This bucket is associated with the application and can be used by the gcloud deployment commands. @OutputOnly
-    "defaultBucket": "A String", # A Google Cloud Storage bucket that can be used by the application to store content. @OutputOnly
-    "dispatchRules": [ # HTTP path dispatch rules for requests to the application that do not explicitly target a service or version. Rules are order-dependent. @OutputOnly
+    "defaultHostname": "A String", # Hostname used to reach the application, as resolved by App Engine.@OutputOnly
+    "name": "A String", # Full path to the Application resource in the API. Example: apps/myapp.@OutputOnly
+    "codeBucket": "A String", # A Google Cloud Storage bucket that can be used for storing files associated with this application. This bucket is associated with the application and can be used by the gcloud deployment commands.@OutputOnly
+    "defaultBucket": "A String", # A Google Cloud Storage bucket that can be used by the application to store content.@OutputOnly
+    "dispatchRules": [ # HTTP path dispatch rules for requests to the application that do not explicitly target a service or version. Rules are order-dependent.@OutputOnly
       { # Rules to match an HTTP request and dispatch that request to a service.
-        "path": "A String", # Pathname within the host. Must start with a "`/`". A single "`*`" can be included at the end of the path. The sum of the lengths of the domain and path may not exceed 100 characters.
-        "domain": "A String", # Domain name to match against. The wildcard "`*`" is supported if specified before a period: "`*.`". Defaults to matching all domains: "`*`".
-        "service": "A String", # Resource id of a service in this application that should serve the matched request. The service must already exist. Example: `default`.
+        "path": "A String", # Pathname within the host. Must start with a "/". A single "*" can be included at the end of the path. The sum of the lengths of the domain and path may not exceed 100 characters.
+        "domain": "A String", # Domain name to match against. The wildcard "*" is supported if specified before a period: "*.".Defaults to matching all domains: "*".
+        "service": "A String", # Resource id of a service in this application that should serve the matched request. The service must already exist. Example: default.
       },
     ],
-    "defaultCookieExpiration": "A String", # Cookie expiration policy for this application. @OutputOnly
-    "location": "A String", # Location from which this application will be run. Application instances will run out of data centers in the chosen location, which is also where all of the application's end user content is stored. Defaults to `us-central`. Options are: `us-central` - Central US `europe-west` - Western Europe `us-east1` - Eastern US
-    "authDomain": "A String", # Google Apps authentication domain that controls which users can access this application. Defaults to open access for any Google Account.
-    "id": "A String", # Identifier of the Application resource. This identifier is equivalent to the project ID of the Google Cloud Platform project where you want to deploy your application. Example: `myapp`.
+    "defaultCookieExpiration": "A String", # Cookie expiration policy for this application.
+    "location": "A String", # Location from which this application will be run. Application instances will run out of data centers in the chosen location, which is also where all of the application's end user content is stored.Defaults to us-central.Options are:us-central - Central USeurope-west - Western Europeus-east1 - Eastern US
+    "authDomain": "A String", # Google Apps authentication domain that controls which users can access this application.Defaults to open access for any Google Account.
+    "id": "A String", # Identifier of the Application resource. This identifier is equivalent to the project ID of the Google Cloud Platform project where you want to deploy your application. Example: myapp.
   }
 
   mask: string, Standard field mask for the set of fields to be updated.
@@ -216,10 +216,10 @@
   An object of the form:
 
     { # This resource represents a long-running operation that is the result of a network API call.
-    "response": { # The normal response of the operation in case of success. If the original method returns no data on success, such as `Delete`, the response is `google.protobuf.Empty`. If the original method is standard `Get`/`Create`/`Update`, the response should be the resource. For other methods, the response should have the type `XxxResponse`, where `Xxx` is the original method name. For example, if the original method name is `TakeSnapshot()`, the inferred response type is `TakeSnapshotResponse`.
+    "response": { # The normal response of the operation in case of success. If the original method returns no data on success, such as Delete, the response is google.protobuf.Empty. If the original method is standard Get/Create/Update, the response should be the resource. For other methods, the response should have the type XxxResponse, where Xxx is the original method name. For example, if the original method name is TakeSnapshot(), the inferred response type is TakeSnapshotResponse.
       "a_key": "", # Properties of the object. Contains field @type with type URL.
     },
-    "error": { # The `Status` type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by [gRPC](https://github.com/grpc). The error model is designed to be: - Simple to use and understand for most users - Flexible enough to meet unexpected needs # Overview The `Status` message contains three pieces of data: error code, error message, and error details. The error code should be an enum value of google.rpc.Code, but it may accept additional error codes if needed. The error message should be a developer-facing English message that helps developers *understand* and *resolve* the error. If a localized user-facing error message is needed, put the localized message in the error details or localize it in the client. The optional error details may contain arbitrary information about the error. There is a predefined set of error detail types in the package `google.rpc` which can be used for common error conditions. # Language mapping The `Status` message is the logical representation of the error model, but it is not necessarily the actual wire format. When the `Status` message is exposed in different client libraries and different wire protocols, it can be mapped differently. For example, it will likely be mapped to some exceptions in Java, but more likely mapped to some error codes in C. # Other uses The error model and the `Status` message can be used in a variety of environments, either with or without APIs, to provide a consistent developer experience across different environments. Example uses of this error model include: - Partial errors. If a service needs to return partial errors to the client, it may embed the `Status` in the normal response to indicate the partial errors. - Workflow errors. A typical workflow has multiple steps. Each step may have a `Status` message for error reporting purpose. - Batch operations. If a client uses batch request and batch response, the `Status` message should be used directly inside batch response, one for each error sub-response. - Asynchronous operations. If an API call embeds asynchronous operation results in its response, the status of those operations should be represented directly using the `Status` message. - Logging. If some API errors are stored in logs, the message `Status` could be used directly after any stripping needed for security/privacy reasons. # The error result of the operation in case of failure.
+    "error": { # The Status type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by gRPC (https://github.com/grpc). The error model is designed to be: Simple to use and understand for most users Flexible enough to meet unexpected needsOverviewThe Status message contains three pieces of data: error code, error message, and error details. The error code should be an enum value of google.rpc.Code, but it may accept additional error codes if needed. The error message should be a developer-facing English message that helps developers understand and resolve the error. If a localized user-facing error message is needed, put the localized message in the error details or localize it in the client. The optional error details may contain arbitrary information about the error. There is a predefined set of error detail types in the package google.rpc which can be used for common error conditions.Language mappingThe Status message is the logical representation of the error model, but it is not necessarily the actual wire format. When the Status message is exposed in different client libraries and different wire protocols, it can be mapped differently. For example, it will likely be mapped to some exceptions in Java, but more likely mapped to some error codes in C.Other usesThe error model and the Status message can be used in a variety of environments, either with or without APIs, to provide a consistent developer experience across different environments.Example uses of this error model include: Partial errors. If a service needs to return partial errors to the client, it may embed the Status in the normal response to indicate the partial errors. Workflow errors. A typical workflow has multiple steps. Each step may have a Status message for error reporting purpose. Batch operations. If a client uses batch request and batch response, the Status message should be used directly inside batch response, one for each error sub-response. Asynchronous operations. If an API call embeds asynchronous operation results in its response, the status of those operations should be represented directly using the Status message. Logging. If some API errors are stored in logs, the message Status could be used directly after any stripping needed for security/privacy reasons. # The error result of the operation in case of failure or cancellation.
       "message": "A String", # A developer-facing error message, which should be in English. Any user-facing error message should be localized and sent in the google.rpc.Status.details field, or localized by the client.
       "code": 42, # The status code, which should be an enum value of google.rpc.Code.
       "details": [ # A list of messages that carry the error details. There will be a common set of message types for APIs to use.
@@ -228,8 +228,8 @@
         },
       ],
     },
-    "done": True or False, # If the value is `false`, it means the operation is still in progress. If true, the operation is completed, and either `error` or `response` is available.
-    "name": "A String", # The server-assigned name, which is only unique within the same service that originally returns it. If you use the default HTTP mapping, the `name` should have the format of `operations/some/unique/name`.
+    "done": True or False, # If the value is false, it means the operation is still in progress. If true, the operation is completed, and either error or response is available.
+    "name": "A String", # The server-assigned name, which is only unique within the same service that originally returns it. If you use the default HTTP mapping, the name should have the format of operations/some/unique/name.
     "metadata": { # Service-specific metadata associated with the operation. It typically contains progress information and common metadata such as create time. Some services might not provide such metadata. Any method that returns a long-running operation should document the metadata type, if any.
       "a_key": "", # Properties of the object. Contains field @type with type URL.
     },
diff --git a/docs/dyn/appengine_v1beta5.apps.locations.html b/docs/dyn/appengine_v1beta5.apps.locations.html
index 9f5bc47..8692253 100644
--- a/docs/dyn/appengine_v1beta5.apps.locations.html
+++ b/docs/dyn/appengine_v1beta5.apps.locations.html
@@ -100,8 +100,8 @@
     "labels": { # Cross-service attributes for the location. For example {"cloud.googleapis.com/region": "us-east1"}
       "a_key": "A String",
     },
-    "locationId": "A String", # The canonical id for this location. For example: `"us-east1"`.
-    "name": "A String", # Resource name for the location, which may vary between implementations. For example: `"projects/example-project/locations/us-east1"`
+    "locationId": "A String", # The canonical id for this location. For example: "us-east1".
+    "name": "A String", # Resource name for the location, which may vary between implementations. For example: "projects/example-project/locations/us-east1"
     "metadata": { # Service-specific metadata. For example the available capacity at the given location.
       "a_key": "", # Properties of the object. Contains field @type with type URL.
     },
@@ -129,8 +129,8 @@
         "labels": { # Cross-service attributes for the location. For example {"cloud.googleapis.com/region": "us-east1"}
           "a_key": "A String",
         },
-        "locationId": "A String", # The canonical id for this location. For example: `"us-east1"`.
-        "name": "A String", # Resource name for the location, which may vary between implementations. For example: `"projects/example-project/locations/us-east1"`
+        "locationId": "A String", # The canonical id for this location. For example: "us-east1".
+        "name": "A String", # Resource name for the location, which may vary between implementations. For example: "projects/example-project/locations/us-east1"
         "metadata": { # Service-specific metadata. For example the available capacity at the given location.
           "a_key": "", # Properties of the object. Contains field @type with type URL.
         },
diff --git a/docs/dyn/appengine_v1beta5.apps.operations.html b/docs/dyn/appengine_v1beta5.apps.operations.html
index c16565f..7b8249c 100644
--- a/docs/dyn/appengine_v1beta5.apps.operations.html
+++ b/docs/dyn/appengine_v1beta5.apps.operations.html
@@ -79,7 +79,7 @@
 <p class="firstline">Gets the latest state of a long-running operation. Clients can use this method to poll the operation result at intervals as recommended by the API service.</p>
 <p class="toc_element">
   <code><a href="#list">list(appsId, pageSize=None, filter=None, pageToken=None, x__xgafv=None)</a></code></p>
-<p class="firstline">Lists operations that match the specified filter in the request. If the server doesn't support this method, it returns `UNIMPLEMENTED`. NOTE: the `name` binding below allows API services to override the binding to use different resource name schemes, such as `users/*/operations`.</p>
+<p class="firstline">Lists operations that match the specified filter in the request. If the server doesn't support this method, it returns UNIMPLEMENTED.NOTE: the name binding below allows API services to override the binding to use different resource name schemes, such as users/*/operations.</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>
@@ -97,10 +97,10 @@
   An object of the form:
 
     { # This resource represents a long-running operation that is the result of a network API call.
-    "response": { # The normal response of the operation in case of success. If the original method returns no data on success, such as `Delete`, the response is `google.protobuf.Empty`. If the original method is standard `Get`/`Create`/`Update`, the response should be the resource. For other methods, the response should have the type `XxxResponse`, where `Xxx` is the original method name. For example, if the original method name is `TakeSnapshot()`, the inferred response type is `TakeSnapshotResponse`.
+    "response": { # The normal response of the operation in case of success. If the original method returns no data on success, such as Delete, the response is google.protobuf.Empty. If the original method is standard Get/Create/Update, the response should be the resource. For other methods, the response should have the type XxxResponse, where Xxx is the original method name. For example, if the original method name is TakeSnapshot(), the inferred response type is TakeSnapshotResponse.
       "a_key": "", # Properties of the object. Contains field @type with type URL.
     },
-    "error": { # The `Status` type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by [gRPC](https://github.com/grpc). The error model is designed to be: - Simple to use and understand for most users - Flexible enough to meet unexpected needs # Overview The `Status` message contains three pieces of data: error code, error message, and error details. The error code should be an enum value of google.rpc.Code, but it may accept additional error codes if needed. The error message should be a developer-facing English message that helps developers *understand* and *resolve* the error. If a localized user-facing error message is needed, put the localized message in the error details or localize it in the client. The optional error details may contain arbitrary information about the error. There is a predefined set of error detail types in the package `google.rpc` which can be used for common error conditions. # Language mapping The `Status` message is the logical representation of the error model, but it is not necessarily the actual wire format. When the `Status` message is exposed in different client libraries and different wire protocols, it can be mapped differently. For example, it will likely be mapped to some exceptions in Java, but more likely mapped to some error codes in C. # Other uses The error model and the `Status` message can be used in a variety of environments, either with or without APIs, to provide a consistent developer experience across different environments. Example uses of this error model include: - Partial errors. If a service needs to return partial errors to the client, it may embed the `Status` in the normal response to indicate the partial errors. - Workflow errors. A typical workflow has multiple steps. Each step may have a `Status` message for error reporting purpose. - Batch operations. If a client uses batch request and batch response, the `Status` message should be used directly inside batch response, one for each error sub-response. - Asynchronous operations. If an API call embeds asynchronous operation results in its response, the status of those operations should be represented directly using the `Status` message. - Logging. If some API errors are stored in logs, the message `Status` could be used directly after any stripping needed for security/privacy reasons. # The error result of the operation in case of failure.
+    "error": { # The Status type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by gRPC (https://github.com/grpc). The error model is designed to be: Simple to use and understand for most users Flexible enough to meet unexpected needsOverviewThe Status message contains three pieces of data: error code, error message, and error details. The error code should be an enum value of google.rpc.Code, but it may accept additional error codes if needed. The error message should be a developer-facing English message that helps developers understand and resolve the error. If a localized user-facing error message is needed, put the localized message in the error details or localize it in the client. The optional error details may contain arbitrary information about the error. There is a predefined set of error detail types in the package google.rpc which can be used for common error conditions.Language mappingThe Status message is the logical representation of the error model, but it is not necessarily the actual wire format. When the Status message is exposed in different client libraries and different wire protocols, it can be mapped differently. For example, it will likely be mapped to some exceptions in Java, but more likely mapped to some error codes in C.Other usesThe error model and the Status message can be used in a variety of environments, either with or without APIs, to provide a consistent developer experience across different environments.Example uses of this error model include: Partial errors. If a service needs to return partial errors to the client, it may embed the Status in the normal response to indicate the partial errors. Workflow errors. A typical workflow has multiple steps. Each step may have a Status message for error reporting purpose. Batch operations. If a client uses batch request and batch response, the Status message should be used directly inside batch response, one for each error sub-response. Asynchronous operations. If an API call embeds asynchronous operation results in its response, the status of those operations should be represented directly using the Status message. Logging. If some API errors are stored in logs, the message Status could be used directly after any stripping needed for security/privacy reasons. # The error result of the operation in case of failure or cancellation.
       "message": "A String", # A developer-facing error message, which should be in English. Any user-facing error message should be localized and sent in the google.rpc.Status.details field, or localized by the client.
       "code": 42, # The status code, which should be an enum value of google.rpc.Code.
       "details": [ # A list of messages that carry the error details. There will be a common set of message types for APIs to use.
@@ -109,8 +109,8 @@
         },
       ],
     },
-    "done": True or False, # If the value is `false`, it means the operation is still in progress. If true, the operation is completed, and either `error` or `response` is available.
-    "name": "A String", # The server-assigned name, which is only unique within the same service that originally returns it. If you use the default HTTP mapping, the `name` should have the format of `operations/some/unique/name`.
+    "done": True or False, # If the value is false, it means the operation is still in progress. If true, the operation is completed, and either error or response is available.
+    "name": "A String", # The server-assigned name, which is only unique within the same service that originally returns it. If you use the default HTTP mapping, the name should have the format of operations/some/unique/name.
     "metadata": { # Service-specific metadata associated with the operation. It typically contains progress information and common metadata such as create time. Some services might not provide such metadata. Any method that returns a long-running operation should document the metadata type, if any.
       "a_key": "", # Properties of the object. Contains field @type with type URL.
     },
@@ -119,7 +119,7 @@
 
 <div class="method">
     <code class="details" id="list">list(appsId, pageSize=None, filter=None, pageToken=None, x__xgafv=None)</code>
-  <pre>Lists operations that match the specified filter in the request. If the server doesn't support this method, it returns `UNIMPLEMENTED`. NOTE: the `name` binding below allows API services to override the binding to use different resource name schemes, such as `users/*/operations`.
+  <pre>Lists operations that match the specified filter in the request. If the server doesn't support this method, it returns UNIMPLEMENTED.NOTE: the name binding below allows API services to override the binding to use different resource name schemes, such as users/*/operations.
 
 Args:
   appsId: string, Part of `name`. The name of the operation collection. (required)
@@ -134,10 +134,10 @@
     { # The response message for Operations.ListOperations.
     "operations": [ # A list of operations that matches the specified filter in the request.
       { # This resource represents a long-running operation that is the result of a network API call.
-        "response": { # The normal response of the operation in case of success. If the original method returns no data on success, such as `Delete`, the response is `google.protobuf.Empty`. If the original method is standard `Get`/`Create`/`Update`, the response should be the resource. For other methods, the response should have the type `XxxResponse`, where `Xxx` is the original method name. For example, if the original method name is `TakeSnapshot()`, the inferred response type is `TakeSnapshotResponse`.
+        "response": { # The normal response of the operation in case of success. If the original method returns no data on success, such as Delete, the response is google.protobuf.Empty. If the original method is standard Get/Create/Update, the response should be the resource. For other methods, the response should have the type XxxResponse, where Xxx is the original method name. For example, if the original method name is TakeSnapshot(), the inferred response type is TakeSnapshotResponse.
           "a_key": "", # Properties of the object. Contains field @type with type URL.
         },
-        "error": { # The `Status` type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by [gRPC](https://github.com/grpc). The error model is designed to be: - Simple to use and understand for most users - Flexible enough to meet unexpected needs # Overview The `Status` message contains three pieces of data: error code, error message, and error details. The error code should be an enum value of google.rpc.Code, but it may accept additional error codes if needed. The error message should be a developer-facing English message that helps developers *understand* and *resolve* the error. If a localized user-facing error message is needed, put the localized message in the error details or localize it in the client. The optional error details may contain arbitrary information about the error. There is a predefined set of error detail types in the package `google.rpc` which can be used for common error conditions. # Language mapping The `Status` message is the logical representation of the error model, but it is not necessarily the actual wire format. When the `Status` message is exposed in different client libraries and different wire protocols, it can be mapped differently. For example, it will likely be mapped to some exceptions in Java, but more likely mapped to some error codes in C. # Other uses The error model and the `Status` message can be used in a variety of environments, either with or without APIs, to provide a consistent developer experience across different environments. Example uses of this error model include: - Partial errors. If a service needs to return partial errors to the client, it may embed the `Status` in the normal response to indicate the partial errors. - Workflow errors. A typical workflow has multiple steps. Each step may have a `Status` message for error reporting purpose. - Batch operations. If a client uses batch request and batch response, the `Status` message should be used directly inside batch response, one for each error sub-response. - Asynchronous operations. If an API call embeds asynchronous operation results in its response, the status of those operations should be represented directly using the `Status` message. - Logging. If some API errors are stored in logs, the message `Status` could be used directly after any stripping needed for security/privacy reasons. # The error result of the operation in case of failure.
+        "error": { # The Status type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by gRPC (https://github.com/grpc). The error model is designed to be: Simple to use and understand for most users Flexible enough to meet unexpected needsOverviewThe Status message contains three pieces of data: error code, error message, and error details. The error code should be an enum value of google.rpc.Code, but it may accept additional error codes if needed. The error message should be a developer-facing English message that helps developers understand and resolve the error. If a localized user-facing error message is needed, put the localized message in the error details or localize it in the client. The optional error details may contain arbitrary information about the error. There is a predefined set of error detail types in the package google.rpc which can be used for common error conditions.Language mappingThe Status message is the logical representation of the error model, but it is not necessarily the actual wire format. When the Status message is exposed in different client libraries and different wire protocols, it can be mapped differently. For example, it will likely be mapped to some exceptions in Java, but more likely mapped to some error codes in C.Other usesThe error model and the Status message can be used in a variety of environments, either with or without APIs, to provide a consistent developer experience across different environments.Example uses of this error model include: Partial errors. If a service needs to return partial errors to the client, it may embed the Status in the normal response to indicate the partial errors. Workflow errors. A typical workflow has multiple steps. Each step may have a Status message for error reporting purpose. Batch operations. If a client uses batch request and batch response, the Status message should be used directly inside batch response, one for each error sub-response. Asynchronous operations. If an API call embeds asynchronous operation results in its response, the status of those operations should be represented directly using the Status message. Logging. If some API errors are stored in logs, the message Status could be used directly after any stripping needed for security/privacy reasons. # The error result of the operation in case of failure or cancellation.
           "message": "A String", # A developer-facing error message, which should be in English. Any user-facing error message should be localized and sent in the google.rpc.Status.details field, or localized by the client.
           "code": 42, # The status code, which should be an enum value of google.rpc.Code.
           "details": [ # A list of messages that carry the error details. There will be a common set of message types for APIs to use.
@@ -146,8 +146,8 @@
             },
           ],
         },
-        "done": True or False, # If the value is `false`, it means the operation is still in progress. If true, the operation is completed, and either `error` or `response` is available.
-        "name": "A String", # The server-assigned name, which is only unique within the same service that originally returns it. If you use the default HTTP mapping, the `name` should have the format of `operations/some/unique/name`.
+        "done": True or False, # If the value is false, it means the operation is still in progress. If true, the operation is completed, and either error or response is available.
+        "name": "A String", # The server-assigned name, which is only unique within the same service that originally returns it. If you use the default HTTP mapping, the name should have the format of operations/some/unique/name.
         "metadata": { # Service-specific metadata associated with the operation. It typically contains progress information and common metadata such as create time. Some services might not provide such metadata. Any method that returns a long-running operation should document the metadata type, if any.
           "a_key": "", # Properties of the object. Contains field @type with type URL.
         },
diff --git a/docs/dyn/appengine_v1beta5.apps.services.html b/docs/dyn/appengine_v1beta5.apps.services.html
index bfc93e0..1f5111a 100644
--- a/docs/dyn/appengine_v1beta5.apps.services.html
+++ b/docs/dyn/appengine_v1beta5.apps.services.html
@@ -100,7 +100,7 @@
   <pre>Deletes the specified service and all enclosed versions.
 
 Args:
-  appsId: string, Part of `name`. Name of the resource requested. Example: `apps/myapp/services/default`. (required)
+  appsId: string, Part of `name`. Name of the resource requested. Example: apps/myapp/services/default. (required)
   servicesId: string, Part of `name`. See documentation of `appsId`. (required)
   x__xgafv: string, V1 error format.
 
@@ -108,10 +108,10 @@
   An object of the form:
 
     { # This resource represents a long-running operation that is the result of a network API call.
-    "response": { # The normal response of the operation in case of success. If the original method returns no data on success, such as `Delete`, the response is `google.protobuf.Empty`. If the original method is standard `Get`/`Create`/`Update`, the response should be the resource. For other methods, the response should have the type `XxxResponse`, where `Xxx` is the original method name. For example, if the original method name is `TakeSnapshot()`, the inferred response type is `TakeSnapshotResponse`.
+    "response": { # The normal response of the operation in case of success. If the original method returns no data on success, such as Delete, the response is google.protobuf.Empty. If the original method is standard Get/Create/Update, the response should be the resource. For other methods, the response should have the type XxxResponse, where Xxx is the original method name. For example, if the original method name is TakeSnapshot(), the inferred response type is TakeSnapshotResponse.
       "a_key": "", # Properties of the object. Contains field @type with type URL.
     },
-    "error": { # The `Status` type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by [gRPC](https://github.com/grpc). The error model is designed to be: - Simple to use and understand for most users - Flexible enough to meet unexpected needs # Overview The `Status` message contains three pieces of data: error code, error message, and error details. The error code should be an enum value of google.rpc.Code, but it may accept additional error codes if needed. The error message should be a developer-facing English message that helps developers *understand* and *resolve* the error. If a localized user-facing error message is needed, put the localized message in the error details or localize it in the client. The optional error details may contain arbitrary information about the error. There is a predefined set of error detail types in the package `google.rpc` which can be used for common error conditions. # Language mapping The `Status` message is the logical representation of the error model, but it is not necessarily the actual wire format. When the `Status` message is exposed in different client libraries and different wire protocols, it can be mapped differently. For example, it will likely be mapped to some exceptions in Java, but more likely mapped to some error codes in C. # Other uses The error model and the `Status` message can be used in a variety of environments, either with or without APIs, to provide a consistent developer experience across different environments. Example uses of this error model include: - Partial errors. If a service needs to return partial errors to the client, it may embed the `Status` in the normal response to indicate the partial errors. - Workflow errors. A typical workflow has multiple steps. Each step may have a `Status` message for error reporting purpose. - Batch operations. If a client uses batch request and batch response, the `Status` message should be used directly inside batch response, one for each error sub-response. - Asynchronous operations. If an API call embeds asynchronous operation results in its response, the status of those operations should be represented directly using the `Status` message. - Logging. If some API errors are stored in logs, the message `Status` could be used directly after any stripping needed for security/privacy reasons. # The error result of the operation in case of failure.
+    "error": { # The Status type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by gRPC (https://github.com/grpc). The error model is designed to be: Simple to use and understand for most users Flexible enough to meet unexpected needsOverviewThe Status message contains three pieces of data: error code, error message, and error details. The error code should be an enum value of google.rpc.Code, but it may accept additional error codes if needed. The error message should be a developer-facing English message that helps developers understand and resolve the error. If a localized user-facing error message is needed, put the localized message in the error details or localize it in the client. The optional error details may contain arbitrary information about the error. There is a predefined set of error detail types in the package google.rpc which can be used for common error conditions.Language mappingThe Status message is the logical representation of the error model, but it is not necessarily the actual wire format. When the Status message is exposed in different client libraries and different wire protocols, it can be mapped differently. For example, it will likely be mapped to some exceptions in Java, but more likely mapped to some error codes in C.Other usesThe error model and the Status message can be used in a variety of environments, either with or without APIs, to provide a consistent developer experience across different environments.Example uses of this error model include: Partial errors. If a service needs to return partial errors to the client, it may embed the Status in the normal response to indicate the partial errors. Workflow errors. A typical workflow has multiple steps. Each step may have a Status message for error reporting purpose. Batch operations. If a client uses batch request and batch response, the Status message should be used directly inside batch response, one for each error sub-response. Asynchronous operations. If an API call embeds asynchronous operation results in its response, the status of those operations should be represented directly using the Status message. Logging. If some API errors are stored in logs, the message Status could be used directly after any stripping needed for security/privacy reasons. # The error result of the operation in case of failure or cancellation.
       "message": "A String", # A developer-facing error message, which should be in English. Any user-facing error message should be localized and sent in the google.rpc.Status.details field, or localized by the client.
       "code": 42, # The status code, which should be an enum value of google.rpc.Code.
       "details": [ # A list of messages that carry the error details. There will be a common set of message types for APIs to use.
@@ -120,8 +120,8 @@
         },
       ],
     },
-    "done": True or False, # If the value is `false`, it means the operation is still in progress. If true, the operation is completed, and either `error` or `response` is available.
-    "name": "A String", # The server-assigned name, which is only unique within the same service that originally returns it. If you use the default HTTP mapping, the `name` should have the format of `operations/some/unique/name`.
+    "done": True or False, # If the value is false, it means the operation is still in progress. If true, the operation is completed, and either error or response is available.
+    "name": "A String", # The server-assigned name, which is only unique within the same service that originally returns it. If you use the default HTTP mapping, the name should have the format of operations/some/unique/name.
     "metadata": { # Service-specific metadata associated with the operation. It typically contains progress information and common metadata such as create time. Some services might not provide such metadata. Any method that returns a long-running operation should document the metadata type, if any.
       "a_key": "", # Properties of the object. Contains field @type with type URL.
     },
@@ -133,7 +133,7 @@
   <pre>Gets the current configuration of the specified service.
 
 Args:
-  appsId: string, Part of `name`. Name of the resource requested. Example: `apps/myapp/services/default`. (required)
+  appsId: string, Part of `name`. Name of the resource requested. Example: apps/myapp/services/default. (required)
   servicesId: string, Part of `name`. See documentation of `appsId`. (required)
   x__xgafv: string, V1 error format.
 
@@ -147,8 +147,8 @@
           "a_key": 3.14,
         },
       },
-      "name": "A String", # Full path to the Service resource in the API. Example: `apps/myapp/services/default`. @OutputOnly
-      "id": "A String", # Relative name of the service within the application. Example: `default`. @OutputOnly
+      "name": "A String", # Full path to the Service resource in the API. Example: apps/myapp/services/default.@OutputOnly
+      "id": "A String", # Relative name of the service within the application. Example: default.@OutputOnly
     }</pre>
 </div>
 
@@ -157,7 +157,7 @@
   <pre>Lists all the services in the application.
 
 Args:
-  appsId: string, Part of `name`. Name of the resource requested. Example: `apps/myapp`. (required)
+  appsId: string, Part of `name`. Name of the resource requested. Example: apps/myapp. (required)
   pageSize: integer, Maximum results to return per page.
   pageToken: string, Continuation token for fetching the next page of results.
   x__xgafv: string, V1 error format.
@@ -165,7 +165,7 @@
 Returns:
   An object of the form:
 
-    { # Response message for `Services.ListServices`.
+    { # Response message for Services.ListServices.
     "services": [ # The services belonging to the requested application.
       { # A Service resource is a logical component of an application that can share state and communicate in a secure fashion with other services. For example, an application that handles customer requests might include separate services to handle other tasks such as API requests from mobile devices or backend data analysis. Each service has a collection of versions that define a specific set of code used to implement the functionality of that service.
           "split": { # Traffic routing configuration for versions within a single service. Traffic splits define how traffic directed to the service is assigned to versions. # Mapping that defines fractional HTTP traffic diversion to different versions within the service.
@@ -174,8 +174,8 @@
               "a_key": 3.14,
             },
           },
-          "name": "A String", # Full path to the Service resource in the API. Example: `apps/myapp/services/default`. @OutputOnly
-          "id": "A String", # Relative name of the service within the application. Example: `default`. @OutputOnly
+          "name": "A String", # Full path to the Service resource in the API. Example: apps/myapp/services/default.@OutputOnly
+          "id": "A String", # Relative name of the service within the application. Example: default.@OutputOnly
         },
     ],
     "nextPageToken": "A String", # Continuation token for fetching the next page of results.
@@ -201,7 +201,7 @@
   <pre>Updates the configuration of the specified service.
 
 Args:
-  appsId: string, Part of `name`. Name of the resource to update. Example: `apps/myapp/services/default`. (required)
+  appsId: string, Part of `name`. Name of the resource to update. Example: apps/myapp/services/default. (required)
   servicesId: string, Part of `name`. See documentation of `appsId`. (required)
   body: object, The request body. (required)
     The object takes the form of:
@@ -213,11 +213,11 @@
         "a_key": 3.14,
       },
     },
-    "name": "A String", # Full path to the Service resource in the API. Example: `apps/myapp/services/default`. @OutputOnly
-    "id": "A String", # Relative name of the service within the application. Example: `default`. @OutputOnly
+    "name": "A String", # Full path to the Service resource in the API. Example: apps/myapp/services/default.@OutputOnly
+    "id": "A String", # Relative name of the service within the application. Example: default.@OutputOnly
   }
 
-  migrateTraffic: boolean, Set to `true` to gradually shift traffic from one version to another single version. By default, traffic is shifted immediately. For gradual traffic migration, the target version must be located within instances that are configured for both [warmup requests](https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1beta5/apps.services.versions#inboundservicetype) and [automatic scaling](https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1beta5/apps.services.versions#automaticscaling). You must specify the [`shardBy`](https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1beta5/apps.services#shardby) field in the Service resource. Gradual traffic migration is not supported in the App Engine flexible environment. For examples, see [Migrating and Splitting Traffic](https://cloud.google.com/appengine/docs/admin-api/migrating-splitting-traffic).
+  migrateTraffic: boolean, Set to true to gradually shift traffic from one version to another single version. By default, traffic is shifted immediately. For gradual traffic migration, the target version must be located within instances that are configured for both warmup requests (https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1beta5/apps.services.versions#inboundservicetype) and automatic scaling (https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1beta5/apps.services.versions#automaticscaling). You must specify the shardBy (https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1beta5/apps.services#shardby) field in the Service resource. Gradual traffic migration is not supported in the App Engine flexible environment. For examples, see Migrating and Splitting Traffic (https://cloud.google.com/appengine/docs/admin-api/migrating-splitting-traffic).
   mask: string, Standard field mask for the set of fields to be updated.
   x__xgafv: string, V1 error format.
 
@@ -225,10 +225,10 @@
   An object of the form:
 
     { # This resource represents a long-running operation that is the result of a network API call.
-    "response": { # The normal response of the operation in case of success. If the original method returns no data on success, such as `Delete`, the response is `google.protobuf.Empty`. If the original method is standard `Get`/`Create`/`Update`, the response should be the resource. For other methods, the response should have the type `XxxResponse`, where `Xxx` is the original method name. For example, if the original method name is `TakeSnapshot()`, the inferred response type is `TakeSnapshotResponse`.
+    "response": { # The normal response of the operation in case of success. If the original method returns no data on success, such as Delete, the response is google.protobuf.Empty. If the original method is standard Get/Create/Update, the response should be the resource. For other methods, the response should have the type XxxResponse, where Xxx is the original method name. For example, if the original method name is TakeSnapshot(), the inferred response type is TakeSnapshotResponse.
       "a_key": "", # Properties of the object. Contains field @type with type URL.
     },
-    "error": { # The `Status` type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by [gRPC](https://github.com/grpc). The error model is designed to be: - Simple to use and understand for most users - Flexible enough to meet unexpected needs # Overview The `Status` message contains three pieces of data: error code, error message, and error details. The error code should be an enum value of google.rpc.Code, but it may accept additional error codes if needed. The error message should be a developer-facing English message that helps developers *understand* and *resolve* the error. If a localized user-facing error message is needed, put the localized message in the error details or localize it in the client. The optional error details may contain arbitrary information about the error. There is a predefined set of error detail types in the package `google.rpc` which can be used for common error conditions. # Language mapping The `Status` message is the logical representation of the error model, but it is not necessarily the actual wire format. When the `Status` message is exposed in different client libraries and different wire protocols, it can be mapped differently. For example, it will likely be mapped to some exceptions in Java, but more likely mapped to some error codes in C. # Other uses The error model and the `Status` message can be used in a variety of environments, either with or without APIs, to provide a consistent developer experience across different environments. Example uses of this error model include: - Partial errors. If a service needs to return partial errors to the client, it may embed the `Status` in the normal response to indicate the partial errors. - Workflow errors. A typical workflow has multiple steps. Each step may have a `Status` message for error reporting purpose. - Batch operations. If a client uses batch request and batch response, the `Status` message should be used directly inside batch response, one for each error sub-response. - Asynchronous operations. If an API call embeds asynchronous operation results in its response, the status of those operations should be represented directly using the `Status` message. - Logging. If some API errors are stored in logs, the message `Status` could be used directly after any stripping needed for security/privacy reasons. # The error result of the operation in case of failure.
+    "error": { # The Status type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by gRPC (https://github.com/grpc). The error model is designed to be: Simple to use and understand for most users Flexible enough to meet unexpected needsOverviewThe Status message contains three pieces of data: error code, error message, and error details. The error code should be an enum value of google.rpc.Code, but it may accept additional error codes if needed. The error message should be a developer-facing English message that helps developers understand and resolve the error. If a localized user-facing error message is needed, put the localized message in the error details or localize it in the client. The optional error details may contain arbitrary information about the error. There is a predefined set of error detail types in the package google.rpc which can be used for common error conditions.Language mappingThe Status message is the logical representation of the error model, but it is not necessarily the actual wire format. When the Status message is exposed in different client libraries and different wire protocols, it can be mapped differently. For example, it will likely be mapped to some exceptions in Java, but more likely mapped to some error codes in C.Other usesThe error model and the Status message can be used in a variety of environments, either with or without APIs, to provide a consistent developer experience across different environments.Example uses of this error model include: Partial errors. If a service needs to return partial errors to the client, it may embed the Status in the normal response to indicate the partial errors. Workflow errors. A typical workflow has multiple steps. Each step may have a Status message for error reporting purpose. Batch operations. If a client uses batch request and batch response, the Status message should be used directly inside batch response, one for each error sub-response. Asynchronous operations. If an API call embeds asynchronous operation results in its response, the status of those operations should be represented directly using the Status message. Logging. If some API errors are stored in logs, the message Status could be used directly after any stripping needed for security/privacy reasons. # The error result of the operation in case of failure or cancellation.
       "message": "A String", # A developer-facing error message, which should be in English. Any user-facing error message should be localized and sent in the google.rpc.Status.details field, or localized by the client.
       "code": 42, # The status code, which should be an enum value of google.rpc.Code.
       "details": [ # A list of messages that carry the error details. There will be a common set of message types for APIs to use.
@@ -237,8 +237,8 @@
         },
       ],
     },
-    "done": True or False, # If the value is `false`, it means the operation is still in progress. If true, the operation is completed, and either `error` or `response` is available.
-    "name": "A String", # The server-assigned name, which is only unique within the same service that originally returns it. If you use the default HTTP mapping, the `name` should have the format of `operations/some/unique/name`.
+    "done": True or False, # If the value is false, it means the operation is still in progress. If true, the operation is completed, and either error or response is available.
+    "name": "A String", # The server-assigned name, which is only unique within the same service that originally returns it. If you use the default HTTP mapping, the name should have the format of operations/some/unique/name.
     "metadata": { # Service-specific metadata associated with the operation. It typically contains progress information and common metadata such as create time. Some services might not provide such metadata. Any method that returns a long-running operation should document the metadata type, if any.
       "a_key": "", # Properties of the object. Contains field @type with type URL.
     },
diff --git a/docs/dyn/appengine_v1beta5.apps.services.versions.html b/docs/dyn/appengine_v1beta5.apps.services.versions.html
index 043b3eb..8a3c947 100644
--- a/docs/dyn/appengine_v1beta5.apps.services.versions.html
+++ b/docs/dyn/appengine_v1beta5.apps.services.versions.html
@@ -87,7 +87,7 @@
 <p class="firstline">Deletes an existing version.</p>
 <p class="toc_element">
   <code><a href="#get">get(appsId, servicesId, versionsId, x__xgafv=None, view=None)</a></code></p>
-<p class="firstline">Gets the specified Version resource. By default, only a `BASIC_VIEW` will be returned. Specify the `FULL_VIEW` parameter to get the full resource.</p>
+<p class="firstline">Gets the specified Version resource. By default, only a BASIC_VIEW will be returned. Specify the FULL_VIEW parameter to get the full resource.</p>
 <p class="toc_element">
   <code><a href="#list">list(appsId, servicesId, pageSize=None, x__xgafv=None, pageToken=None, view=None)</a></code></p>
 <p class="firstline">Lists the versions of a service.</p>
@@ -96,7 +96,7 @@
 <p class="firstline">Retrieves the next page of results.</p>
 <p class="toc_element">
   <code><a href="#patch">patch(appsId, servicesId, versionsId, body, mask=None, x__xgafv=None)</a></code></p>
-<p class="firstline">Updates the specified Version resource. You can specify the following fields depending on the App Engine environment and type of scaling that the version resource uses: * [`serving_status`](https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1beta5/apps.services.versions#Version.FIELDS.serving_status): For Version resources that use basic scaling, manual scaling, or run in the App Engine flexible environment. * [`instance_class`](https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1beta5/apps.services.versions#Version.FIELDS.instance_class): For Version resources that run in the App Engine standard environment. * [`automatic_scaling.min_idle_instances`](https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1beta5/apps.services.versions#Version.FIELDS.automatic_scaling): For Version resources that use automatic scaling and run in the App Engine standard environment. * [`automatic_scaling.max_idle_instances`](https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1beta5/apps.services.versions#Version.FIELDS.automatic_scaling): For Version resources that use automatic scaling and run in the App Engine standard environment.</p>
+<p class="firstline">Updates the specified Version resource. You can specify the following fields depending on the App Engine environment and type of scaling that the version resource uses: serving_status (https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1beta5/apps.services.versions#Version.FIELDS.serving_status): For Version resources that use basic scaling, manual scaling, or run in the App Engine flexible environment. instance_class (https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1beta5/apps.services.versions#Version.FIELDS.instance_class): For Version resources that run in the App Engine standard environment. automatic_scaling.min_idle_instances (https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1beta5/apps.services.versions#Version.FIELDS.automatic_scaling): For Version resources that use automatic scaling and run in the App Engine standard environment. automatic_scaling.max_idle_instances (https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1beta5/apps.services.versions#Version.FIELDS.automatic_scaling): For Version resources that use automatic scaling and run in the App Engine standard environment.</p>
 <h3>Method Details</h3>
 <div class="method">
     <code class="details" id="create">create(appsId, servicesId, body, x__xgafv=None)</code>
@@ -109,6 +109,10 @@
     The object takes the form of:
 
 { # A Version resource is a specific set of source code and configuration files that are deployed into a service.
+    "endpointsApiService": { # Cloud Endpoints (https://cloud.google.com/endpoints) configuration. The Endpoints API Service provides tooling for serving Open API and gRPC endpoints via an NGINX proxy.The fields here refer to the name and configuration id of a "service" resource in the Service Management API (https://cloud.google.com/service-management/overview). # Cloud Endpoints configuration.If endpoints_api_service is set, the Cloud Endpoints Extensible Service Proxy will be provided to serve the API implemented by the app.
+      "configId": "A String", # Endpoints service configuration id as specified by the Service Management API. For example "2016-09-19r1"
+      "name": "A String", # Endpoints service name which is the name of the "service" resource in the Service Management API. For example "myapi.endpoints.myproject.cloud.goog"
+    },
     "basicScaling": { # A service with basic scaling will create an instance when the application receives a request. The instance will be turned down when the app becomes idle. Basic scaling is ideal for work that is intermittent or driven by user activity. # A service with basic scaling will create an instance when the application receives a request. The instance will be turned down when the app becomes idle. Basic scaling is ideal for work that is intermittent or driven by user activity.
       "idleTimeout": "A String", # Duration of time after the last request that an instance must wait before the instance is shut down.
       "maxInstances": 42, # Maximum number of instances to create for this version.
@@ -117,24 +121,24 @@
       "a_key": "A String",
     },
     "vm": True or False, # Whether to deploy this version in a container on a virtual machine.
-    "instanceClass": "A String", # Instance class that is used to run this version. Valid values are: * AutomaticScaling: `F1`, `F2`, `F4`, `F4_1G` * ManualScaling or BasicScaling: `B1`, `B2`, `B4`, `B8`, `B4_1G` Defaults to `F1` for AutomaticScaling and `B1` for ManualScaling or BasicScaling.
-    "errorHandlers": [ # Custom static error pages. Limited to 10KB per page. Only returned in `GET` requests if `view=FULL` is set.
+    "instanceClass": "A String", # Instance class that is used to run this version. Valid values are: AutomaticScaling: F1, F2, F4, F4_1G ManualScaling or BasicScaling: B1, B2, B4, B8, B4_1GDefaults to F1 for AutomaticScaling and B1 for ManualScaling or BasicScaling.
+    "errorHandlers": [ # Custom static error pages. Limited to 10KB per page.Only returned in GET requests if view=FULL is set.
       { # Custom static error page to be served when an error occurs.
         "errorCode": "A String", # Error condition this handler applies to.
-        "mimeType": "A String", # MIME type of file. Defaults to `text/html`.
+        "mimeType": "A String", # MIME type of file. Defaults to text/html.
         "staticFile": "A String", # Static file content to be served for this error.
       },
     ],
-    "id": "A String", # Relative name of the version within the module. Example: `v1`. Version names can contain only lowercase letters, numbers, or hyphens. Reserved names: "default", "latest", and any name with the prefix "ah-".
-    "apiConfig": { # [Google Cloud Endpoints](https://cloud.google.com/appengine/docs/python/endpoints/) configuration for API handlers. # Serving configuration for [Google Cloud Endpoints](https://cloud.google.com/appengine/docs/python/endpoints/). Only returned in `GET` requests if `view=FULL` is set.
+    "id": "A String", # Relative name of the version within the module. Example: v1. Version names can contain only lowercase letters, numbers, or hyphens. Reserved names: "default", "latest", and any name with the prefix "ah-".
+    "apiConfig": { # Google Cloud Endpoints (https://cloud.google.com/appengine/docs/python/endpoints/) configuration for API handlers. # Serving configuration for Google Cloud Endpoints (https://cloud.google.com/appengine/docs/python/endpoints/).Only returned in GET requests if view=FULL is set.
       "url": "A String", # URL to serve the endpoint at.
       "securityLevel": "A String", # Security (HTTPS) enforcement for this URL.
-      "authFailAction": "A String", # Action to take when users access resources that require authentication. Defaults to `redirect`.
-      "login": "A String", # Level of login required to access this resource. Defaults to `optional`.
+      "authFailAction": "A String", # Action to take when users access resources that require authentication. Defaults to redirect.
+      "login": "A String", # Level of login required to access this resource. Defaults to optional.
       "script": "A String", # Path to the script from the application root directory.
     },
     "threadsafe": True or False, # Whether multiple requests can be dispatched to this version at once.
-    "healthCheck": { # Health checking configuration for VM instances. Unhealthy instances are killed and replaced with new instances. Only applicable for instances in App Engine flexible environment. # Configures health checking for VM instances. Unhealthy instances are be stopped and replaced with new instances. Only applicable for VM runtimes. Only returned in `GET` requests if `view=FULL` is set.
+    "healthCheck": { # Health checking configuration for VM instances. Unhealthy instances are killed and replaced with new instances. Only applicable for instances in App Engine flexible environment. # Configures health checking for VM instances. Unhealthy instances are be stopped and replaced with new instances. Only applicable for VM runtimes.Only returned in GET requests if view=FULL is set.
       "restartThreshold": 42, # Number of consecutive failed health checks required before an instance is restarted.
       "checkInterval": "A String", # Interval between health checks.
       "unhealthyThreshold": 42, # Number of consecutive failed health checks required before removing traffic.
@@ -143,16 +147,16 @@
       "timeout": "A String", # Time before the health check is considered failed.
       "disableHealthCheck": True or False, # Whether to explicitly disable health checks for this instance.
     },
-    "defaultExpiration": "A String", # Duration that static files should be cached by web proxies and browsers. Only applicable if the corresponding [StaticFilesHandler](https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1/apps.services.versions#staticfileshandler) does not specify its own expiration time. Only returned in `GET` requests if `view=FULL` is set.
-    "libraries": [ # Configuration for third-party Python runtime libraries required by the application. Only returned in `GET` requests if `view=FULL` is set.
+    "defaultExpiration": "A String", # Duration that static files should be cached by web proxies and browsers. Only applicable if the corresponding StaticFilesHandler (https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1/apps.services.versions#staticfileshandler) does not specify its own expiration time.Only returned in GET requests if view=FULL is set.
+    "libraries": [ # Configuration for third-party Python runtime libraries required by the application.Only returned in GET requests if view=FULL is set.
       { # Third-party Python runtime library that is required by the application.
         "version": "A String", # Version of the library to select, or "latest".
         "name": "A String", # Name of the library. Example: "django".
       },
     ],
-    "deployer": "A String", # Email address of the user who created this version. @OutputOnly
-    "env": "A String", # App Engine execution environment to use for this version. Defaults to `1`.
-    "diskUsageBytes": "A String", # Total size of version files hosted on App Engine disk in bytes. @OutputOnly
+    "deployer": "A String", # Email address of the user who created this version.@OutputOnly
+    "env": "A String", # App Engine execution environment to use for this version.Defaults to 1.
+    "diskUsageBytes": "A String", # Total size of version files hosted on App Engine disk in bytes.@OutputOnly
     "automaticScaling": { # Automatic scaling is based on request rate, response latencies, and other application metrics. # Automatic scaling is based on request rate, response latencies, and other application metrics.
       "minPendingLatency": "A String", # Minimum amount of time a request should wait in the pending queue before starting a new instance to handle it.
       "networkUtilization": { # Target scaling by network usage. Only applicable for VM runtimes. # Target scaling by network usage.
@@ -174,34 +178,41 @@
         "targetConcurrentRequests": 42, # Target number of concurrent requests.
         "targetRequestCountPerSec": 42, # Target requests per second.
       },
-      "coolDownPeriod": "A String", # Amount of time that the [Autoscaler](https://cloud.google.com/compute/docs/autoscaler/) should wait between changes to the number of virtual machines. Only applicable for VM runtimes.
+      "coolDownPeriod": "A String", # Amount of time that the Autoscaler (https://cloud.google.com/compute/docs/autoscaler/) should wait between changes to the number of virtual machines. Only applicable for VM runtimes.
       "maxTotalInstances": 42, # Maximum number of instances that should be started to handle requests.
-      "maxConcurrentRequests": 42, # Number of concurrent requests an automatic scaling instance can accept before the scheduler spawns a new instance. Defaults to a runtime-specific value.
+      "maxConcurrentRequests": 42, # Number of concurrent requests an automatic scaling instance can accept before the scheduler spawns a new instance.Defaults to a runtime-specific value.
       "minTotalInstances": 42, # Minimum number of instances that should be maintained for this version.
       "cpuUtilization": { # Target scaling by CPU usage. # Target scaling by CPU usage.
         "targetUtilization": 3.14, # Target CPU utilization ratio to maintain when scaling. Must be between 0 and 1.
         "aggregationWindowLength": "A String", # Period of time over which CPU utilization is calculated.
       },
     },
-    "envVariables": { # Environment variables made available to the application. Only returned in `GET` requests if `view=FULL` is set.
+    "envVariables": { # Environment variables made available to the application.Only returned in GET requests if view=FULL is set.
       "a_key": "A String",
     },
     "resources": { # Machine resources for a version. # Machine resources for this version. Only applicable for VM runtimes.
+      "volumes": [ # Volumes mounted within the app container.
+        { # Volumes mounted within the app container. Only applicable for VM runtimes.
+          "volumeType": "A String", # Underlying volume type, e.g. 'tmpfs'.
+          "name": "A String", # Unique name for the volume.
+          "sizeGb": 3.14, # Volume size in gigabytes.
+        },
+      ],
       "diskGb": 3.14, # Disk size (GB) needed.
       "cpu": 3.14, # Number of CPU cores needed.
       "memoryGb": 3.14, # Memory (GB) needed.
     },
     "manualScaling": { # A service with manual scaling runs continuously, allowing you to perform complex initialization and rely on the state of its memory over time. # A service with manual scaling runs continuously, allowing you to perform complex initialization and rely on the state of its memory over time.
-      "instances": 42, # Number of instances to assign to the service at the start. This number can later be altered by using the [Modules API](https://cloud.google.com/appengine/docs/python/modules/functions) `set_num_instances()` function.
+      "instances": 42, # Number of instances to assign to the service at the start. This number can later be altered by using the Modules API (https://cloud.google.com/appengine/docs/python/modules/functions) set_num_instances() function.
     },
     "inboundServices": [ # Before an application can receive email or XMPP messages, the application must be configured to enable the service.
       "A String",
     ],
-    "deployment": { # Code and application artifacts used to deploy a version to App Engine. # Code and application artifacts that make up this version. Only returned in `GET` requests if `view=FULL` is set.
+    "deployment": { # Code and application artifacts used to deploy a version to App Engine. # Code and application artifacts that make up this version.Only returned in GET requests if view=FULL is set.
       "files": { # Manifest of the files stored in Google Cloud Storage that are included as part of this version. All files must be readable using the credentials supplied with this call.
         "a_key": { # Single source file that is part of the version to be deployed. Each source file that is deployed must be specified separately.
-          "mimeType": "A String", # The MIME type of the file. Defaults to the value from Google Cloud Storage.
-          "sourceUrl": "A String", # URL source to use to fetch this file. Must be a URL to a resource in Google Cloud Storage in the form 'http(s)://storage.googleapis.com/\/\'.
+          "mimeType": "A String", # The MIME type of the file.Defaults to the value from Google Cloud Storage.
+          "sourceUrl": "A String", # URL source to use to fetch this file. Must be a URL to a resource in Google Cloud Storage in the form 'http(s)://storage.googleapis.com//'.
           "sha1Sum": "A String", # The SHA1 hash of the file, in hex.
         },
       },
@@ -220,14 +231,15 @@
       "forwardedPorts": [ # List of ports, or port pairs, to forward from the virtual machine to the application container.
         "A String",
       ],
-      "name": "A String", # Google Cloud Platform network where the virtual machines are created. Specify the short name, not the resource path. Defaults to `default`.
+      "name": "A String", # Google Cloud Platform network where the virtual machines are created. Specify the short name, not the resource path.Defaults to default.
+      "subnetworkName": "A String", # Google Cloud Platform sub-network where the virtual machines are created. Specify the short name, not the resource path.If a subnetwork name is specified, a network name will also be required unless it is for the default network. If the network the VM instance is being created in is a Legacy network, then the IP address is allocated from the IPv4Range. If the network the VM instance is being created in is an auto Subnet Mode Network, then only network name should be specified (not the subnetwork_name) and the IP address is created from the IPCidrRange of the subnetwork that exists in that zone for that network. If the network the VM instance is being created in is a custom Subnet Mode Network, then the subnetwork_name must be specified and the IP address is created from the IPCidrRange of the subnetwork.If specified, the subnetwork must exist in the same region as the Flex app.
     },
-    "nobuildFilesRegex": "A String", # Files that match this pattern will not be built into this version. Only applicable for Go runtimes. Only returned in `GET` requests if `view=FULL` is set.
-    "name": "A String", # Full path to the Version resource in the API. Example: `apps/myapp/services/default/versions/v1`. @OutputOnly
-    "handlers": [ # An ordered list of URL-matching patterns that should be applied to incoming requests. The first matching URL handles the request and other request handlers are not attempted. Only returned in `GET` requests if `view=FULL` is set.
+    "nobuildFilesRegex": "A String", # Files that match this pattern will not be built into this version. Only applicable for Go runtimes.Only returned in GET requests if view=FULL is set.
+    "name": "A String", # Full path to the Version resource in the API. Example: apps/myapp/services/default/versions/v1.@OutputOnly
+    "handlers": [ # An ordered list of URL-matching patterns that should be applied to incoming requests. The first matching URL handles the request and other request handlers are not attempted.Only returned in GET requests if view=FULL is set.
       { # URL pattern and description of how the URL should be handled. App Engine can handle URLs by executing application code, or by serving static files uploaded with the version, such as images, CSS, or JavaScript.
         "securityLevel": "A String", # Security (HTTPS) enforcement for this URL.
-        "authFailAction": "A String", # Action to take when users access resources that require authentication. Defaults to `redirect`.
+        "authFailAction": "A String", # Action to take when users access resources that require authentication. Defaults to redirect.
         "urlRegex": "A String", # A URL prefix. Uses regular expression syntax, which means regexp special characters must be escaped, but should not contain groupings. All URLs that begin with this prefix are handled by this handler, using the portion of the URL after the prefix as part of the file path.
         "script": { # Executes a script to handle the request that matches the URL pattern. # Executes a script to handle the request that matches this URL pattern.
           "scriptPath": "A String", # Path to the script from the application root directory.
@@ -247,12 +259,12 @@
           "scriptPath": "A String", # Path to the script from the application root directory.
         },
         "login": "A String", # Level of login required to access this resource.
-        "redirectHttpResponseCode": "A String", # `30x` code to use when performing redirects for the `secure` field. Defaults to `302`.
+        "redirectHttpResponseCode": "A String", # 30x code to use when performing redirects for the secure field. Defaults to 302.
       },
     ],
-    "creationTime": "A String", # Time that this version was created. @OutputOnly
-    "servingStatus": "A String", # Current serving status of this version. Only the versions with a `SERVING` status create instances and can be billed. `SERVING_STATUS_UNSPECIFIED` is an invalid value. Defaults to `SERVING`.
-    "runtime": "A String", # Desired runtime. Example: `python27`.
+    "creationTime": "A String", # Time that this version was created.@OutputOnly
+    "servingStatus": "A String", # Current serving status of this version. Only the versions with a SERVING status create instances and can be billed.SERVING_STATUS_UNSPECIFIED is an invalid value. Defaults to SERVING.
+    "runtime": "A String", # Desired runtime. Example: python27.
   }
 
   x__xgafv: string, V1 error format.
@@ -261,10 +273,10 @@
   An object of the form:
 
     { # This resource represents a long-running operation that is the result of a network API call.
-    "response": { # The normal response of the operation in case of success. If the original method returns no data on success, such as `Delete`, the response is `google.protobuf.Empty`. If the original method is standard `Get`/`Create`/`Update`, the response should be the resource. For other methods, the response should have the type `XxxResponse`, where `Xxx` is the original method name. For example, if the original method name is `TakeSnapshot()`, the inferred response type is `TakeSnapshotResponse`.
+    "response": { # The normal response of the operation in case of success. If the original method returns no data on success, such as Delete, the response is google.protobuf.Empty. If the original method is standard Get/Create/Update, the response should be the resource. For other methods, the response should have the type XxxResponse, where Xxx is the original method name. For example, if the original method name is TakeSnapshot(), the inferred response type is TakeSnapshotResponse.
       "a_key": "", # Properties of the object. Contains field @type with type URL.
     },
-    "error": { # The `Status` type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by [gRPC](https://github.com/grpc). The error model is designed to be: - Simple to use and understand for most users - Flexible enough to meet unexpected needs # Overview The `Status` message contains three pieces of data: error code, error message, and error details. The error code should be an enum value of google.rpc.Code, but it may accept additional error codes if needed. The error message should be a developer-facing English message that helps developers *understand* and *resolve* the error. If a localized user-facing error message is needed, put the localized message in the error details or localize it in the client. The optional error details may contain arbitrary information about the error. There is a predefined set of error detail types in the package `google.rpc` which can be used for common error conditions. # Language mapping The `Status` message is the logical representation of the error model, but it is not necessarily the actual wire format. When the `Status` message is exposed in different client libraries and different wire protocols, it can be mapped differently. For example, it will likely be mapped to some exceptions in Java, but more likely mapped to some error codes in C. # Other uses The error model and the `Status` message can be used in a variety of environments, either with or without APIs, to provide a consistent developer experience across different environments. Example uses of this error model include: - Partial errors. If a service needs to return partial errors to the client, it may embed the `Status` in the normal response to indicate the partial errors. - Workflow errors. A typical workflow has multiple steps. Each step may have a `Status` message for error reporting purpose. - Batch operations. If a client uses batch request and batch response, the `Status` message should be used directly inside batch response, one for each error sub-response. - Asynchronous operations. If an API call embeds asynchronous operation results in its response, the status of those operations should be represented directly using the `Status` message. - Logging. If some API errors are stored in logs, the message `Status` could be used directly after any stripping needed for security/privacy reasons. # The error result of the operation in case of failure.
+    "error": { # The Status type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by gRPC (https://github.com/grpc). The error model is designed to be: Simple to use and understand for most users Flexible enough to meet unexpected needsOverviewThe Status message contains three pieces of data: error code, error message, and error details. The error code should be an enum value of google.rpc.Code, but it may accept additional error codes if needed. The error message should be a developer-facing English message that helps developers understand and resolve the error. If a localized user-facing error message is needed, put the localized message in the error details or localize it in the client. The optional error details may contain arbitrary information about the error. There is a predefined set of error detail types in the package google.rpc which can be used for common error conditions.Language mappingThe Status message is the logical representation of the error model, but it is not necessarily the actual wire format. When the Status message is exposed in different client libraries and different wire protocols, it can be mapped differently. For example, it will likely be mapped to some exceptions in Java, but more likely mapped to some error codes in C.Other usesThe error model and the Status message can be used in a variety of environments, either with or without APIs, to provide a consistent developer experience across different environments.Example uses of this error model include: Partial errors. If a service needs to return partial errors to the client, it may embed the Status in the normal response to indicate the partial errors. Workflow errors. A typical workflow has multiple steps. Each step may have a Status message for error reporting purpose. Batch operations. If a client uses batch request and batch response, the Status message should be used directly inside batch response, one for each error sub-response. Asynchronous operations. If an API call embeds asynchronous operation results in its response, the status of those operations should be represented directly using the Status message. Logging. If some API errors are stored in logs, the message Status could be used directly after any stripping needed for security/privacy reasons. # The error result of the operation in case of failure or cancellation.
       "message": "A String", # A developer-facing error message, which should be in English. Any user-facing error message should be localized and sent in the google.rpc.Status.details field, or localized by the client.
       "code": 42, # The status code, which should be an enum value of google.rpc.Code.
       "details": [ # A list of messages that carry the error details. There will be a common set of message types for APIs to use.
@@ -273,8 +285,8 @@
         },
       ],
     },
-    "done": True or False, # If the value is `false`, it means the operation is still in progress. If true, the operation is completed, and either `error` or `response` is available.
-    "name": "A String", # The server-assigned name, which is only unique within the same service that originally returns it. If you use the default HTTP mapping, the `name` should have the format of `operations/some/unique/name`.
+    "done": True or False, # If the value is false, it means the operation is still in progress. If true, the operation is completed, and either error or response is available.
+    "name": "A String", # The server-assigned name, which is only unique within the same service that originally returns it. If you use the default HTTP mapping, the name should have the format of operations/some/unique/name.
     "metadata": { # Service-specific metadata associated with the operation. It typically contains progress information and common metadata such as create time. Some services might not provide such metadata. Any method that returns a long-running operation should document the metadata type, if any.
       "a_key": "", # Properties of the object. Contains field @type with type URL.
     },
@@ -286,7 +298,7 @@
   <pre>Deletes an existing version.
 
 Args:
-  appsId: string, Part of `name`. Name of the resource requested. Example: `apps/myapp/services/default/versions/v1`. (required)
+  appsId: string, Part of `name`. Name of the resource requested. Example: apps/myapp/services/default/versions/v1. (required)
   servicesId: string, Part of `name`. See documentation of `appsId`. (required)
   versionsId: string, Part of `name`. See documentation of `appsId`. (required)
   x__xgafv: string, V1 error format.
@@ -295,10 +307,10 @@
   An object of the form:
 
     { # This resource represents a long-running operation that is the result of a network API call.
-    "response": { # The normal response of the operation in case of success. If the original method returns no data on success, such as `Delete`, the response is `google.protobuf.Empty`. If the original method is standard `Get`/`Create`/`Update`, the response should be the resource. For other methods, the response should have the type `XxxResponse`, where `Xxx` is the original method name. For example, if the original method name is `TakeSnapshot()`, the inferred response type is `TakeSnapshotResponse`.
+    "response": { # The normal response of the operation in case of success. If the original method returns no data on success, such as Delete, the response is google.protobuf.Empty. If the original method is standard Get/Create/Update, the response should be the resource. For other methods, the response should have the type XxxResponse, where Xxx is the original method name. For example, if the original method name is TakeSnapshot(), the inferred response type is TakeSnapshotResponse.
       "a_key": "", # Properties of the object. Contains field @type with type URL.
     },
-    "error": { # The `Status` type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by [gRPC](https://github.com/grpc). The error model is designed to be: - Simple to use and understand for most users - Flexible enough to meet unexpected needs # Overview The `Status` message contains three pieces of data: error code, error message, and error details. The error code should be an enum value of google.rpc.Code, but it may accept additional error codes if needed. The error message should be a developer-facing English message that helps developers *understand* and *resolve* the error. If a localized user-facing error message is needed, put the localized message in the error details or localize it in the client. The optional error details may contain arbitrary information about the error. There is a predefined set of error detail types in the package `google.rpc` which can be used for common error conditions. # Language mapping The `Status` message is the logical representation of the error model, but it is not necessarily the actual wire format. When the `Status` message is exposed in different client libraries and different wire protocols, it can be mapped differently. For example, it will likely be mapped to some exceptions in Java, but more likely mapped to some error codes in C. # Other uses The error model and the `Status` message can be used in a variety of environments, either with or without APIs, to provide a consistent developer experience across different environments. Example uses of this error model include: - Partial errors. If a service needs to return partial errors to the client, it may embed the `Status` in the normal response to indicate the partial errors. - Workflow errors. A typical workflow has multiple steps. Each step may have a `Status` message for error reporting purpose. - Batch operations. If a client uses batch request and batch response, the `Status` message should be used directly inside batch response, one for each error sub-response. - Asynchronous operations. If an API call embeds asynchronous operation results in its response, the status of those operations should be represented directly using the `Status` message. - Logging. If some API errors are stored in logs, the message `Status` could be used directly after any stripping needed for security/privacy reasons. # The error result of the operation in case of failure.
+    "error": { # The Status type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by gRPC (https://github.com/grpc). The error model is designed to be: Simple to use and understand for most users Flexible enough to meet unexpected needsOverviewThe Status message contains three pieces of data: error code, error message, and error details. The error code should be an enum value of google.rpc.Code, but it may accept additional error codes if needed. The error message should be a developer-facing English message that helps developers understand and resolve the error. If a localized user-facing error message is needed, put the localized message in the error details or localize it in the client. The optional error details may contain arbitrary information about the error. There is a predefined set of error detail types in the package google.rpc which can be used for common error conditions.Language mappingThe Status message is the logical representation of the error model, but it is not necessarily the actual wire format. When the Status message is exposed in different client libraries and different wire protocols, it can be mapped differently. For example, it will likely be mapped to some exceptions in Java, but more likely mapped to some error codes in C.Other usesThe error model and the Status message can be used in a variety of environments, either with or without APIs, to provide a consistent developer experience across different environments.Example uses of this error model include: Partial errors. If a service needs to return partial errors to the client, it may embed the Status in the normal response to indicate the partial errors. Workflow errors. A typical workflow has multiple steps. Each step may have a Status message for error reporting purpose. Batch operations. If a client uses batch request and batch response, the Status message should be used directly inside batch response, one for each error sub-response. Asynchronous operations. If an API call embeds asynchronous operation results in its response, the status of those operations should be represented directly using the Status message. Logging. If some API errors are stored in logs, the message Status could be used directly after any stripping needed for security/privacy reasons. # The error result of the operation in case of failure or cancellation.
       "message": "A String", # A developer-facing error message, which should be in English. Any user-facing error message should be localized and sent in the google.rpc.Status.details field, or localized by the client.
       "code": 42, # The status code, which should be an enum value of google.rpc.Code.
       "details": [ # A list of messages that carry the error details. There will be a common set of message types for APIs to use.
@@ -307,8 +319,8 @@
         },
       ],
     },
-    "done": True or False, # If the value is `false`, it means the operation is still in progress. If true, the operation is completed, and either `error` or `response` is available.
-    "name": "A String", # The server-assigned name, which is only unique within the same service that originally returns it. If you use the default HTTP mapping, the `name` should have the format of `operations/some/unique/name`.
+    "done": True or False, # If the value is false, it means the operation is still in progress. If true, the operation is completed, and either error or response is available.
+    "name": "A String", # The server-assigned name, which is only unique within the same service that originally returns it. If you use the default HTTP mapping, the name should have the format of operations/some/unique/name.
     "metadata": { # Service-specific metadata associated with the operation. It typically contains progress information and common metadata such as create time. Some services might not provide such metadata. Any method that returns a long-running operation should document the metadata type, if any.
       "a_key": "", # Properties of the object. Contains field @type with type URL.
     },
@@ -317,19 +329,23 @@
 
 <div class="method">
     <code class="details" id="get">get(appsId, servicesId, versionsId, x__xgafv=None, view=None)</code>
-  <pre>Gets the specified Version resource. By default, only a `BASIC_VIEW` will be returned. Specify the `FULL_VIEW` parameter to get the full resource.
+  <pre>Gets the specified Version resource. By default, only a BASIC_VIEW will be returned. Specify the FULL_VIEW parameter to get the full resource.
 
 Args:
-  appsId: string, Part of `name`. Name of the resource requested. Example: `apps/myapp/services/default/versions/v1`. (required)
+  appsId: string, Part of `name`. Name of the resource requested. Example: apps/myapp/services/default/versions/v1. (required)
   servicesId: string, Part of `name`. See documentation of `appsId`. (required)
   versionsId: string, Part of `name`. See documentation of `appsId`. (required)
   x__xgafv: string, V1 error format.
-  view: string, Controls the set of fields returned in the `Get` response.
+  view: string, Controls the set of fields returned in the Get response.
 
 Returns:
   An object of the form:
 
     { # A Version resource is a specific set of source code and configuration files that are deployed into a service.
+      "endpointsApiService": { # Cloud Endpoints (https://cloud.google.com/endpoints) configuration. The Endpoints API Service provides tooling for serving Open API and gRPC endpoints via an NGINX proxy.The fields here refer to the name and configuration id of a "service" resource in the Service Management API (https://cloud.google.com/service-management/overview). # Cloud Endpoints configuration.If endpoints_api_service is set, the Cloud Endpoints Extensible Service Proxy will be provided to serve the API implemented by the app.
+        "configId": "A String", # Endpoints service configuration id as specified by the Service Management API. For example "2016-09-19r1"
+        "name": "A String", # Endpoints service name which is the name of the "service" resource in the Service Management API. For example "myapi.endpoints.myproject.cloud.goog"
+      },
       "basicScaling": { # A service with basic scaling will create an instance when the application receives a request. The instance will be turned down when the app becomes idle. Basic scaling is ideal for work that is intermittent or driven by user activity. # A service with basic scaling will create an instance when the application receives a request. The instance will be turned down when the app becomes idle. Basic scaling is ideal for work that is intermittent or driven by user activity.
         "idleTimeout": "A String", # Duration of time after the last request that an instance must wait before the instance is shut down.
         "maxInstances": 42, # Maximum number of instances to create for this version.
@@ -338,24 +354,24 @@
         "a_key": "A String",
       },
       "vm": True or False, # Whether to deploy this version in a container on a virtual machine.
-      "instanceClass": "A String", # Instance class that is used to run this version. Valid values are: * AutomaticScaling: `F1`, `F2`, `F4`, `F4_1G` * ManualScaling or BasicScaling: `B1`, `B2`, `B4`, `B8`, `B4_1G` Defaults to `F1` for AutomaticScaling and `B1` for ManualScaling or BasicScaling.
-      "errorHandlers": [ # Custom static error pages. Limited to 10KB per page. Only returned in `GET` requests if `view=FULL` is set.
+      "instanceClass": "A String", # Instance class that is used to run this version. Valid values are: AutomaticScaling: F1, F2, F4, F4_1G ManualScaling or BasicScaling: B1, B2, B4, B8, B4_1GDefaults to F1 for AutomaticScaling and B1 for ManualScaling or BasicScaling.
+      "errorHandlers": [ # Custom static error pages. Limited to 10KB per page.Only returned in GET requests if view=FULL is set.
         { # Custom static error page to be served when an error occurs.
           "errorCode": "A String", # Error condition this handler applies to.
-          "mimeType": "A String", # MIME type of file. Defaults to `text/html`.
+          "mimeType": "A String", # MIME type of file. Defaults to text/html.
           "staticFile": "A String", # Static file content to be served for this error.
         },
       ],
-      "id": "A String", # Relative name of the version within the module. Example: `v1`. Version names can contain only lowercase letters, numbers, or hyphens. Reserved names: "default", "latest", and any name with the prefix "ah-".
-      "apiConfig": { # [Google Cloud Endpoints](https://cloud.google.com/appengine/docs/python/endpoints/) configuration for API handlers. # Serving configuration for [Google Cloud Endpoints](https://cloud.google.com/appengine/docs/python/endpoints/). Only returned in `GET` requests if `view=FULL` is set.
+      "id": "A String", # Relative name of the version within the module. Example: v1. Version names can contain only lowercase letters, numbers, or hyphens. Reserved names: "default", "latest", and any name with the prefix "ah-".
+      "apiConfig": { # Google Cloud Endpoints (https://cloud.google.com/appengine/docs/python/endpoints/) configuration for API handlers. # Serving configuration for Google Cloud Endpoints (https://cloud.google.com/appengine/docs/python/endpoints/).Only returned in GET requests if view=FULL is set.
         "url": "A String", # URL to serve the endpoint at.
         "securityLevel": "A String", # Security (HTTPS) enforcement for this URL.
-        "authFailAction": "A String", # Action to take when users access resources that require authentication. Defaults to `redirect`.
-        "login": "A String", # Level of login required to access this resource. Defaults to `optional`.
+        "authFailAction": "A String", # Action to take when users access resources that require authentication. Defaults to redirect.
+        "login": "A String", # Level of login required to access this resource. Defaults to optional.
         "script": "A String", # Path to the script from the application root directory.
       },
       "threadsafe": True or False, # Whether multiple requests can be dispatched to this version at once.
-      "healthCheck": { # Health checking configuration for VM instances. Unhealthy instances are killed and replaced with new instances. Only applicable for instances in App Engine flexible environment. # Configures health checking for VM instances. Unhealthy instances are be stopped and replaced with new instances. Only applicable for VM runtimes. Only returned in `GET` requests if `view=FULL` is set.
+      "healthCheck": { # Health checking configuration for VM instances. Unhealthy instances are killed and replaced with new instances. Only applicable for instances in App Engine flexible environment. # Configures health checking for VM instances. Unhealthy instances are be stopped and replaced with new instances. Only applicable for VM runtimes.Only returned in GET requests if view=FULL is set.
         "restartThreshold": 42, # Number of consecutive failed health checks required before an instance is restarted.
         "checkInterval": "A String", # Interval between health checks.
         "unhealthyThreshold": 42, # Number of consecutive failed health checks required before removing traffic.
@@ -364,16 +380,16 @@
         "timeout": "A String", # Time before the health check is considered failed.
         "disableHealthCheck": True or False, # Whether to explicitly disable health checks for this instance.
       },
-      "defaultExpiration": "A String", # Duration that static files should be cached by web proxies and browsers. Only applicable if the corresponding [StaticFilesHandler](https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1/apps.services.versions#staticfileshandler) does not specify its own expiration time. Only returned in `GET` requests if `view=FULL` is set.
-      "libraries": [ # Configuration for third-party Python runtime libraries required by the application. Only returned in `GET` requests if `view=FULL` is set.
+      "defaultExpiration": "A String", # Duration that static files should be cached by web proxies and browsers. Only applicable if the corresponding StaticFilesHandler (https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1/apps.services.versions#staticfileshandler) does not specify its own expiration time.Only returned in GET requests if view=FULL is set.
+      "libraries": [ # Configuration for third-party Python runtime libraries required by the application.Only returned in GET requests if view=FULL is set.
         { # Third-party Python runtime library that is required by the application.
           "version": "A String", # Version of the library to select, or "latest".
           "name": "A String", # Name of the library. Example: "django".
         },
       ],
-      "deployer": "A String", # Email address of the user who created this version. @OutputOnly
-      "env": "A String", # App Engine execution environment to use for this version. Defaults to `1`.
-      "diskUsageBytes": "A String", # Total size of version files hosted on App Engine disk in bytes. @OutputOnly
+      "deployer": "A String", # Email address of the user who created this version.@OutputOnly
+      "env": "A String", # App Engine execution environment to use for this version.Defaults to 1.
+      "diskUsageBytes": "A String", # Total size of version files hosted on App Engine disk in bytes.@OutputOnly
       "automaticScaling": { # Automatic scaling is based on request rate, response latencies, and other application metrics. # Automatic scaling is based on request rate, response latencies, and other application metrics.
         "minPendingLatency": "A String", # Minimum amount of time a request should wait in the pending queue before starting a new instance to handle it.
         "networkUtilization": { # Target scaling by network usage. Only applicable for VM runtimes. # Target scaling by network usage.
@@ -395,34 +411,41 @@
           "targetConcurrentRequests": 42, # Target number of concurrent requests.
           "targetRequestCountPerSec": 42, # Target requests per second.
         },
-        "coolDownPeriod": "A String", # Amount of time that the [Autoscaler](https://cloud.google.com/compute/docs/autoscaler/) should wait between changes to the number of virtual machines. Only applicable for VM runtimes.
+        "coolDownPeriod": "A String", # Amount of time that the Autoscaler (https://cloud.google.com/compute/docs/autoscaler/) should wait between changes to the number of virtual machines. Only applicable for VM runtimes.
         "maxTotalInstances": 42, # Maximum number of instances that should be started to handle requests.
-        "maxConcurrentRequests": 42, # Number of concurrent requests an automatic scaling instance can accept before the scheduler spawns a new instance. Defaults to a runtime-specific value.
+        "maxConcurrentRequests": 42, # Number of concurrent requests an automatic scaling instance can accept before the scheduler spawns a new instance.Defaults to a runtime-specific value.
         "minTotalInstances": 42, # Minimum number of instances that should be maintained for this version.
         "cpuUtilization": { # Target scaling by CPU usage. # Target scaling by CPU usage.
           "targetUtilization": 3.14, # Target CPU utilization ratio to maintain when scaling. Must be between 0 and 1.
           "aggregationWindowLength": "A String", # Period of time over which CPU utilization is calculated.
         },
       },
-      "envVariables": { # Environment variables made available to the application. Only returned in `GET` requests if `view=FULL` is set.
+      "envVariables": { # Environment variables made available to the application.Only returned in GET requests if view=FULL is set.
         "a_key": "A String",
       },
       "resources": { # Machine resources for a version. # Machine resources for this version. Only applicable for VM runtimes.
+        "volumes": [ # Volumes mounted within the app container.
+          { # Volumes mounted within the app container. Only applicable for VM runtimes.
+            "volumeType": "A String", # Underlying volume type, e.g. 'tmpfs'.
+            "name": "A String", # Unique name for the volume.
+            "sizeGb": 3.14, # Volume size in gigabytes.
+          },
+        ],
         "diskGb": 3.14, # Disk size (GB) needed.
         "cpu": 3.14, # Number of CPU cores needed.
         "memoryGb": 3.14, # Memory (GB) needed.
       },
       "manualScaling": { # A service with manual scaling runs continuously, allowing you to perform complex initialization and rely on the state of its memory over time. # A service with manual scaling runs continuously, allowing you to perform complex initialization and rely on the state of its memory over time.
-        "instances": 42, # Number of instances to assign to the service at the start. This number can later be altered by using the [Modules API](https://cloud.google.com/appengine/docs/python/modules/functions) `set_num_instances()` function.
+        "instances": 42, # Number of instances to assign to the service at the start. This number can later be altered by using the Modules API (https://cloud.google.com/appengine/docs/python/modules/functions) set_num_instances() function.
       },
       "inboundServices": [ # Before an application can receive email or XMPP messages, the application must be configured to enable the service.
         "A String",
       ],
-      "deployment": { # Code and application artifacts used to deploy a version to App Engine. # Code and application artifacts that make up this version. Only returned in `GET` requests if `view=FULL` is set.
+      "deployment": { # Code and application artifacts used to deploy a version to App Engine. # Code and application artifacts that make up this version.Only returned in GET requests if view=FULL is set.
         "files": { # Manifest of the files stored in Google Cloud Storage that are included as part of this version. All files must be readable using the credentials supplied with this call.
           "a_key": { # Single source file that is part of the version to be deployed. Each source file that is deployed must be specified separately.
-            "mimeType": "A String", # The MIME type of the file. Defaults to the value from Google Cloud Storage.
-            "sourceUrl": "A String", # URL source to use to fetch this file. Must be a URL to a resource in Google Cloud Storage in the form 'http(s)://storage.googleapis.com/\/\'.
+            "mimeType": "A String", # The MIME type of the file.Defaults to the value from Google Cloud Storage.
+            "sourceUrl": "A String", # URL source to use to fetch this file. Must be a URL to a resource in Google Cloud Storage in the form 'http(s)://storage.googleapis.com//'.
             "sha1Sum": "A String", # The SHA1 hash of the file, in hex.
           },
         },
@@ -441,14 +464,15 @@
         "forwardedPorts": [ # List of ports, or port pairs, to forward from the virtual machine to the application container.
           "A String",
         ],
-        "name": "A String", # Google Cloud Platform network where the virtual machines are created. Specify the short name, not the resource path. Defaults to `default`.
+        "name": "A String", # Google Cloud Platform network where the virtual machines are created. Specify the short name, not the resource path.Defaults to default.
+        "subnetworkName": "A String", # Google Cloud Platform sub-network where the virtual machines are created. Specify the short name, not the resource path.If a subnetwork name is specified, a network name will also be required unless it is for the default network. If the network the VM instance is being created in is a Legacy network, then the IP address is allocated from the IPv4Range. If the network the VM instance is being created in is an auto Subnet Mode Network, then only network name should be specified (not the subnetwork_name) and the IP address is created from the IPCidrRange of the subnetwork that exists in that zone for that network. If the network the VM instance is being created in is a custom Subnet Mode Network, then the subnetwork_name must be specified and the IP address is created from the IPCidrRange of the subnetwork.If specified, the subnetwork must exist in the same region as the Flex app.
       },
-      "nobuildFilesRegex": "A String", # Files that match this pattern will not be built into this version. Only applicable for Go runtimes. Only returned in `GET` requests if `view=FULL` is set.
-      "name": "A String", # Full path to the Version resource in the API. Example: `apps/myapp/services/default/versions/v1`. @OutputOnly
-      "handlers": [ # An ordered list of URL-matching patterns that should be applied to incoming requests. The first matching URL handles the request and other request handlers are not attempted. Only returned in `GET` requests if `view=FULL` is set.
+      "nobuildFilesRegex": "A String", # Files that match this pattern will not be built into this version. Only applicable for Go runtimes.Only returned in GET requests if view=FULL is set.
+      "name": "A String", # Full path to the Version resource in the API. Example: apps/myapp/services/default/versions/v1.@OutputOnly
+      "handlers": [ # An ordered list of URL-matching patterns that should be applied to incoming requests. The first matching URL handles the request and other request handlers are not attempted.Only returned in GET requests if view=FULL is set.
         { # URL pattern and description of how the URL should be handled. App Engine can handle URLs by executing application code, or by serving static files uploaded with the version, such as images, CSS, or JavaScript.
           "securityLevel": "A String", # Security (HTTPS) enforcement for this URL.
-          "authFailAction": "A String", # Action to take when users access resources that require authentication. Defaults to `redirect`.
+          "authFailAction": "A String", # Action to take when users access resources that require authentication. Defaults to redirect.
           "urlRegex": "A String", # A URL prefix. Uses regular expression syntax, which means regexp special characters must be escaped, but should not contain groupings. All URLs that begin with this prefix are handled by this handler, using the portion of the URL after the prefix as part of the file path.
           "script": { # Executes a script to handle the request that matches the URL pattern. # Executes a script to handle the request that matches this URL pattern.
             "scriptPath": "A String", # Path to the script from the application root directory.
@@ -468,12 +492,12 @@
             "scriptPath": "A String", # Path to the script from the application root directory.
           },
           "login": "A String", # Level of login required to access this resource.
-          "redirectHttpResponseCode": "A String", # `30x` code to use when performing redirects for the `secure` field. Defaults to `302`.
+          "redirectHttpResponseCode": "A String", # 30x code to use when performing redirects for the secure field. Defaults to 302.
         },
       ],
-      "creationTime": "A String", # Time that this version was created. @OutputOnly
-      "servingStatus": "A String", # Current serving status of this version. Only the versions with a `SERVING` status create instances and can be billed. `SERVING_STATUS_UNSPECIFIED` is an invalid value. Defaults to `SERVING`.
-      "runtime": "A String", # Desired runtime. Example: `python27`.
+      "creationTime": "A String", # Time that this version was created.@OutputOnly
+      "servingStatus": "A String", # Current serving status of this version. Only the versions with a SERVING status create instances and can be billed.SERVING_STATUS_UNSPECIFIED is an invalid value. Defaults to SERVING.
+      "runtime": "A String", # Desired runtime. Example: python27.
     }</pre>
 </div>
 
@@ -482,20 +506,24 @@
   <pre>Lists the versions of a service.
 
 Args:
-  appsId: string, Part of `name`. Name of the resource requested. Example: `apps/myapp/services/default`. (required)
+  appsId: string, Part of `name`. Name of the resource requested. Example: apps/myapp/services/default. (required)
   servicesId: string, Part of `name`. See documentation of `appsId`. (required)
   pageSize: integer, Maximum results to return per page.
   x__xgafv: string, V1 error format.
   pageToken: string, Continuation token for fetching the next page of results.
-  view: string, Controls the set of fields returned in the `List` response.
+  view: string, Controls the set of fields returned in the List response.
 
 Returns:
   An object of the form:
 
-    { # Response message for `Versions.ListVersions`.
+    { # Response message for Versions.ListVersions.
     "nextPageToken": "A String", # Continuation token for fetching the next page of results.
     "versions": [ # The versions belonging to the requested service.
       { # A Version resource is a specific set of source code and configuration files that are deployed into a service.
+          "endpointsApiService": { # Cloud Endpoints (https://cloud.google.com/endpoints) configuration. The Endpoints API Service provides tooling for serving Open API and gRPC endpoints via an NGINX proxy.The fields here refer to the name and configuration id of a "service" resource in the Service Management API (https://cloud.google.com/service-management/overview). # Cloud Endpoints configuration.If endpoints_api_service is set, the Cloud Endpoints Extensible Service Proxy will be provided to serve the API implemented by the app.
+            "configId": "A String", # Endpoints service configuration id as specified by the Service Management API. For example "2016-09-19r1"
+            "name": "A String", # Endpoints service name which is the name of the "service" resource in the Service Management API. For example "myapi.endpoints.myproject.cloud.goog"
+          },
           "basicScaling": { # A service with basic scaling will create an instance when the application receives a request. The instance will be turned down when the app becomes idle. Basic scaling is ideal for work that is intermittent or driven by user activity. # A service with basic scaling will create an instance when the application receives a request. The instance will be turned down when the app becomes idle. Basic scaling is ideal for work that is intermittent or driven by user activity.
             "idleTimeout": "A String", # Duration of time after the last request that an instance must wait before the instance is shut down.
             "maxInstances": 42, # Maximum number of instances to create for this version.
@@ -504,24 +532,24 @@
             "a_key": "A String",
           },
           "vm": True or False, # Whether to deploy this version in a container on a virtual machine.
-          "instanceClass": "A String", # Instance class that is used to run this version. Valid values are: * AutomaticScaling: `F1`, `F2`, `F4`, `F4_1G` * ManualScaling or BasicScaling: `B1`, `B2`, `B4`, `B8`, `B4_1G` Defaults to `F1` for AutomaticScaling and `B1` for ManualScaling or BasicScaling.
-          "errorHandlers": [ # Custom static error pages. Limited to 10KB per page. Only returned in `GET` requests if `view=FULL` is set.
+          "instanceClass": "A String", # Instance class that is used to run this version. Valid values are: AutomaticScaling: F1, F2, F4, F4_1G ManualScaling or BasicScaling: B1, B2, B4, B8, B4_1GDefaults to F1 for AutomaticScaling and B1 for ManualScaling or BasicScaling.
+          "errorHandlers": [ # Custom static error pages. Limited to 10KB per page.Only returned in GET requests if view=FULL is set.
             { # Custom static error page to be served when an error occurs.
               "errorCode": "A String", # Error condition this handler applies to.
-              "mimeType": "A String", # MIME type of file. Defaults to `text/html`.
+              "mimeType": "A String", # MIME type of file. Defaults to text/html.
               "staticFile": "A String", # Static file content to be served for this error.
             },
           ],
-          "id": "A String", # Relative name of the version within the module. Example: `v1`. Version names can contain only lowercase letters, numbers, or hyphens. Reserved names: "default", "latest", and any name with the prefix "ah-".
-          "apiConfig": { # [Google Cloud Endpoints](https://cloud.google.com/appengine/docs/python/endpoints/) configuration for API handlers. # Serving configuration for [Google Cloud Endpoints](https://cloud.google.com/appengine/docs/python/endpoints/). Only returned in `GET` requests if `view=FULL` is set.
+          "id": "A String", # Relative name of the version within the module. Example: v1. Version names can contain only lowercase letters, numbers, or hyphens. Reserved names: "default", "latest", and any name with the prefix "ah-".
+          "apiConfig": { # Google Cloud Endpoints (https://cloud.google.com/appengine/docs/python/endpoints/) configuration for API handlers. # Serving configuration for Google Cloud Endpoints (https://cloud.google.com/appengine/docs/python/endpoints/).Only returned in GET requests if view=FULL is set.
             "url": "A String", # URL to serve the endpoint at.
             "securityLevel": "A String", # Security (HTTPS) enforcement for this URL.
-            "authFailAction": "A String", # Action to take when users access resources that require authentication. Defaults to `redirect`.
-            "login": "A String", # Level of login required to access this resource. Defaults to `optional`.
+            "authFailAction": "A String", # Action to take when users access resources that require authentication. Defaults to redirect.
+            "login": "A String", # Level of login required to access this resource. Defaults to optional.
             "script": "A String", # Path to the script from the application root directory.
           },
           "threadsafe": True or False, # Whether multiple requests can be dispatched to this version at once.
-          "healthCheck": { # Health checking configuration for VM instances. Unhealthy instances are killed and replaced with new instances. Only applicable for instances in App Engine flexible environment. # Configures health checking for VM instances. Unhealthy instances are be stopped and replaced with new instances. Only applicable for VM runtimes. Only returned in `GET` requests if `view=FULL` is set.
+          "healthCheck": { # Health checking configuration for VM instances. Unhealthy instances are killed and replaced with new instances. Only applicable for instances in App Engine flexible environment. # Configures health checking for VM instances. Unhealthy instances are be stopped and replaced with new instances. Only applicable for VM runtimes.Only returned in GET requests if view=FULL is set.
             "restartThreshold": 42, # Number of consecutive failed health checks required before an instance is restarted.
             "checkInterval": "A String", # Interval between health checks.
             "unhealthyThreshold": 42, # Number of consecutive failed health checks required before removing traffic.
@@ -530,16 +558,16 @@
             "timeout": "A String", # Time before the health check is considered failed.
             "disableHealthCheck": True or False, # Whether to explicitly disable health checks for this instance.
           },
-          "defaultExpiration": "A String", # Duration that static files should be cached by web proxies and browsers. Only applicable if the corresponding [StaticFilesHandler](https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1/apps.services.versions#staticfileshandler) does not specify its own expiration time. Only returned in `GET` requests if `view=FULL` is set.
-          "libraries": [ # Configuration for third-party Python runtime libraries required by the application. Only returned in `GET` requests if `view=FULL` is set.
+          "defaultExpiration": "A String", # Duration that static files should be cached by web proxies and browsers. Only applicable if the corresponding StaticFilesHandler (https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1/apps.services.versions#staticfileshandler) does not specify its own expiration time.Only returned in GET requests if view=FULL is set.
+          "libraries": [ # Configuration for third-party Python runtime libraries required by the application.Only returned in GET requests if view=FULL is set.
             { # Third-party Python runtime library that is required by the application.
               "version": "A String", # Version of the library to select, or "latest".
               "name": "A String", # Name of the library. Example: "django".
             },
           ],
-          "deployer": "A String", # Email address of the user who created this version. @OutputOnly
-          "env": "A String", # App Engine execution environment to use for this version. Defaults to `1`.
-          "diskUsageBytes": "A String", # Total size of version files hosted on App Engine disk in bytes. @OutputOnly
+          "deployer": "A String", # Email address of the user who created this version.@OutputOnly
+          "env": "A String", # App Engine execution environment to use for this version.Defaults to 1.
+          "diskUsageBytes": "A String", # Total size of version files hosted on App Engine disk in bytes.@OutputOnly
           "automaticScaling": { # Automatic scaling is based on request rate, response latencies, and other application metrics. # Automatic scaling is based on request rate, response latencies, and other application metrics.
             "minPendingLatency": "A String", # Minimum amount of time a request should wait in the pending queue before starting a new instance to handle it.
             "networkUtilization": { # Target scaling by network usage. Only applicable for VM runtimes. # Target scaling by network usage.
@@ -561,34 +589,41 @@
               "targetConcurrentRequests": 42, # Target number of concurrent requests.
               "targetRequestCountPerSec": 42, # Target requests per second.
             },
-            "coolDownPeriod": "A String", # Amount of time that the [Autoscaler](https://cloud.google.com/compute/docs/autoscaler/) should wait between changes to the number of virtual machines. Only applicable for VM runtimes.
+            "coolDownPeriod": "A String", # Amount of time that the Autoscaler (https://cloud.google.com/compute/docs/autoscaler/) should wait between changes to the number of virtual machines. Only applicable for VM runtimes.
             "maxTotalInstances": 42, # Maximum number of instances that should be started to handle requests.
-            "maxConcurrentRequests": 42, # Number of concurrent requests an automatic scaling instance can accept before the scheduler spawns a new instance. Defaults to a runtime-specific value.
+            "maxConcurrentRequests": 42, # Number of concurrent requests an automatic scaling instance can accept before the scheduler spawns a new instance.Defaults to a runtime-specific value.
             "minTotalInstances": 42, # Minimum number of instances that should be maintained for this version.
             "cpuUtilization": { # Target scaling by CPU usage. # Target scaling by CPU usage.
               "targetUtilization": 3.14, # Target CPU utilization ratio to maintain when scaling. Must be between 0 and 1.
               "aggregationWindowLength": "A String", # Period of time over which CPU utilization is calculated.
             },
           },
-          "envVariables": { # Environment variables made available to the application. Only returned in `GET` requests if `view=FULL` is set.
+          "envVariables": { # Environment variables made available to the application.Only returned in GET requests if view=FULL is set.
             "a_key": "A String",
           },
           "resources": { # Machine resources for a version. # Machine resources for this version. Only applicable for VM runtimes.
+            "volumes": [ # Volumes mounted within the app container.
+              { # Volumes mounted within the app container. Only applicable for VM runtimes.
+                "volumeType": "A String", # Underlying volume type, e.g. 'tmpfs'.
+                "name": "A String", # Unique name for the volume.
+                "sizeGb": 3.14, # Volume size in gigabytes.
+              },
+            ],
             "diskGb": 3.14, # Disk size (GB) needed.
             "cpu": 3.14, # Number of CPU cores needed.
             "memoryGb": 3.14, # Memory (GB) needed.
           },
           "manualScaling": { # A service with manual scaling runs continuously, allowing you to perform complex initialization and rely on the state of its memory over time. # A service with manual scaling runs continuously, allowing you to perform complex initialization and rely on the state of its memory over time.
-            "instances": 42, # Number of instances to assign to the service at the start. This number can later be altered by using the [Modules API](https://cloud.google.com/appengine/docs/python/modules/functions) `set_num_instances()` function.
+            "instances": 42, # Number of instances to assign to the service at the start. This number can later be altered by using the Modules API (https://cloud.google.com/appengine/docs/python/modules/functions) set_num_instances() function.
           },
           "inboundServices": [ # Before an application can receive email or XMPP messages, the application must be configured to enable the service.
             "A String",
           ],
-          "deployment": { # Code and application artifacts used to deploy a version to App Engine. # Code and application artifacts that make up this version. Only returned in `GET` requests if `view=FULL` is set.
+          "deployment": { # Code and application artifacts used to deploy a version to App Engine. # Code and application artifacts that make up this version.Only returned in GET requests if view=FULL is set.
             "files": { # Manifest of the files stored in Google Cloud Storage that are included as part of this version. All files must be readable using the credentials supplied with this call.
               "a_key": { # Single source file that is part of the version to be deployed. Each source file that is deployed must be specified separately.
-                "mimeType": "A String", # The MIME type of the file. Defaults to the value from Google Cloud Storage.
-                "sourceUrl": "A String", # URL source to use to fetch this file. Must be a URL to a resource in Google Cloud Storage in the form 'http(s)://storage.googleapis.com/\/\'.
+                "mimeType": "A String", # The MIME type of the file.Defaults to the value from Google Cloud Storage.
+                "sourceUrl": "A String", # URL source to use to fetch this file. Must be a URL to a resource in Google Cloud Storage in the form 'http(s)://storage.googleapis.com//'.
                 "sha1Sum": "A String", # The SHA1 hash of the file, in hex.
               },
             },
@@ -607,14 +642,15 @@
             "forwardedPorts": [ # List of ports, or port pairs, to forward from the virtual machine to the application container.
               "A String",
             ],
-            "name": "A String", # Google Cloud Platform network where the virtual machines are created. Specify the short name, not the resource path. Defaults to `default`.
+            "name": "A String", # Google Cloud Platform network where the virtual machines are created. Specify the short name, not the resource path.Defaults to default.
+            "subnetworkName": "A String", # Google Cloud Platform sub-network where the virtual machines are created. Specify the short name, not the resource path.If a subnetwork name is specified, a network name will also be required unless it is for the default network. If the network the VM instance is being created in is a Legacy network, then the IP address is allocated from the IPv4Range. If the network the VM instance is being created in is an auto Subnet Mode Network, then only network name should be specified (not the subnetwork_name) and the IP address is created from the IPCidrRange of the subnetwork that exists in that zone for that network. If the network the VM instance is being created in is a custom Subnet Mode Network, then the subnetwork_name must be specified and the IP address is created from the IPCidrRange of the subnetwork.If specified, the subnetwork must exist in the same region as the Flex app.
           },
-          "nobuildFilesRegex": "A String", # Files that match this pattern will not be built into this version. Only applicable for Go runtimes. Only returned in `GET` requests if `view=FULL` is set.
-          "name": "A String", # Full path to the Version resource in the API. Example: `apps/myapp/services/default/versions/v1`. @OutputOnly
-          "handlers": [ # An ordered list of URL-matching patterns that should be applied to incoming requests. The first matching URL handles the request and other request handlers are not attempted. Only returned in `GET` requests if `view=FULL` is set.
+          "nobuildFilesRegex": "A String", # Files that match this pattern will not be built into this version. Only applicable for Go runtimes.Only returned in GET requests if view=FULL is set.
+          "name": "A String", # Full path to the Version resource in the API. Example: apps/myapp/services/default/versions/v1.@OutputOnly
+          "handlers": [ # An ordered list of URL-matching patterns that should be applied to incoming requests. The first matching URL handles the request and other request handlers are not attempted.Only returned in GET requests if view=FULL is set.
             { # URL pattern and description of how the URL should be handled. App Engine can handle URLs by executing application code, or by serving static files uploaded with the version, such as images, CSS, or JavaScript.
               "securityLevel": "A String", # Security (HTTPS) enforcement for this URL.
-              "authFailAction": "A String", # Action to take when users access resources that require authentication. Defaults to `redirect`.
+              "authFailAction": "A String", # Action to take when users access resources that require authentication. Defaults to redirect.
               "urlRegex": "A String", # A URL prefix. Uses regular expression syntax, which means regexp special characters must be escaped, but should not contain groupings. All URLs that begin with this prefix are handled by this handler, using the portion of the URL after the prefix as part of the file path.
               "script": { # Executes a script to handle the request that matches the URL pattern. # Executes a script to handle the request that matches this URL pattern.
                 "scriptPath": "A String", # Path to the script from the application root directory.
@@ -634,12 +670,12 @@
                 "scriptPath": "A String", # Path to the script from the application root directory.
               },
               "login": "A String", # Level of login required to access this resource.
-              "redirectHttpResponseCode": "A String", # `30x` code to use when performing redirects for the `secure` field. Defaults to `302`.
+              "redirectHttpResponseCode": "A String", # 30x code to use when performing redirects for the secure field. Defaults to 302.
             },
           ],
-          "creationTime": "A String", # Time that this version was created. @OutputOnly
-          "servingStatus": "A String", # Current serving status of this version. Only the versions with a `SERVING` status create instances and can be billed. `SERVING_STATUS_UNSPECIFIED` is an invalid value. Defaults to `SERVING`.
-          "runtime": "A String", # Desired runtime. Example: `python27`.
+          "creationTime": "A String", # Time that this version was created.@OutputOnly
+          "servingStatus": "A String", # Current serving status of this version. Only the versions with a SERVING status create instances and can be billed.SERVING_STATUS_UNSPECIFIED is an invalid value. Defaults to SERVING.
+          "runtime": "A String", # Desired runtime. Example: python27.
         },
     ],
   }</pre>
@@ -661,16 +697,20 @@
 
 <div class="method">
     <code class="details" id="patch">patch(appsId, servicesId, versionsId, body, mask=None, x__xgafv=None)</code>
-  <pre>Updates the specified Version resource. You can specify the following fields depending on the App Engine environment and type of scaling that the version resource uses: * [`serving_status`](https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1beta5/apps.services.versions#Version.FIELDS.serving_status): For Version resources that use basic scaling, manual scaling, or run in the App Engine flexible environment. * [`instance_class`](https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1beta5/apps.services.versions#Version.FIELDS.instance_class): For Version resources that run in the App Engine standard environment. * [`automatic_scaling.min_idle_instances`](https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1beta5/apps.services.versions#Version.FIELDS.automatic_scaling): For Version resources that use automatic scaling and run in the App Engine standard environment. * [`automatic_scaling.max_idle_instances`](https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1beta5/apps.services.versions#Version.FIELDS.automatic_scaling): For Version resources that use automatic scaling and run in the App Engine standard environment.
+  <pre>Updates the specified Version resource. You can specify the following fields depending on the App Engine environment and type of scaling that the version resource uses: serving_status (https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1beta5/apps.services.versions#Version.FIELDS.serving_status): For Version resources that use basic scaling, manual scaling, or run in the App Engine flexible environment. instance_class (https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1beta5/apps.services.versions#Version.FIELDS.instance_class): For Version resources that run in the App Engine standard environment. automatic_scaling.min_idle_instances (https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1beta5/apps.services.versions#Version.FIELDS.automatic_scaling): For Version resources that use automatic scaling and run in the App Engine standard environment. automatic_scaling.max_idle_instances (https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1beta5/apps.services.versions#Version.FIELDS.automatic_scaling): For Version resources that use automatic scaling and run in the App Engine standard environment.
 
 Args:
-  appsId: string, Part of `name`. Name of the resource to update. Example: `apps/myapp/services/default/versions/1`. (required)
+  appsId: string, Part of `name`. Name of the resource to update. Example: apps/myapp/services/default/versions/1. (required)
   servicesId: string, Part of `name`. See documentation of `appsId`. (required)
   versionsId: string, Part of `name`. See documentation of `appsId`. (required)
   body: object, The request body. (required)
     The object takes the form of:
 
 { # A Version resource is a specific set of source code and configuration files that are deployed into a service.
+    "endpointsApiService": { # Cloud Endpoints (https://cloud.google.com/endpoints) configuration. The Endpoints API Service provides tooling for serving Open API and gRPC endpoints via an NGINX proxy.The fields here refer to the name and configuration id of a "service" resource in the Service Management API (https://cloud.google.com/service-management/overview). # Cloud Endpoints configuration.If endpoints_api_service is set, the Cloud Endpoints Extensible Service Proxy will be provided to serve the API implemented by the app.
+      "configId": "A String", # Endpoints service configuration id as specified by the Service Management API. For example "2016-09-19r1"
+      "name": "A String", # Endpoints service name which is the name of the "service" resource in the Service Management API. For example "myapi.endpoints.myproject.cloud.goog"
+    },
     "basicScaling": { # A service with basic scaling will create an instance when the application receives a request. The instance will be turned down when the app becomes idle. Basic scaling is ideal for work that is intermittent or driven by user activity. # A service with basic scaling will create an instance when the application receives a request. The instance will be turned down when the app becomes idle. Basic scaling is ideal for work that is intermittent or driven by user activity.
       "idleTimeout": "A String", # Duration of time after the last request that an instance must wait before the instance is shut down.
       "maxInstances": 42, # Maximum number of instances to create for this version.
@@ -679,24 +719,24 @@
       "a_key": "A String",
     },
     "vm": True or False, # Whether to deploy this version in a container on a virtual machine.
-    "instanceClass": "A String", # Instance class that is used to run this version. Valid values are: * AutomaticScaling: `F1`, `F2`, `F4`, `F4_1G` * ManualScaling or BasicScaling: `B1`, `B2`, `B4`, `B8`, `B4_1G` Defaults to `F1` for AutomaticScaling and `B1` for ManualScaling or BasicScaling.
-    "errorHandlers": [ # Custom static error pages. Limited to 10KB per page. Only returned in `GET` requests if `view=FULL` is set.
+    "instanceClass": "A String", # Instance class that is used to run this version. Valid values are: AutomaticScaling: F1, F2, F4, F4_1G ManualScaling or BasicScaling: B1, B2, B4, B8, B4_1GDefaults to F1 for AutomaticScaling and B1 for ManualScaling or BasicScaling.
+    "errorHandlers": [ # Custom static error pages. Limited to 10KB per page.Only returned in GET requests if view=FULL is set.
       { # Custom static error page to be served when an error occurs.
         "errorCode": "A String", # Error condition this handler applies to.
-        "mimeType": "A String", # MIME type of file. Defaults to `text/html`.
+        "mimeType": "A String", # MIME type of file. Defaults to text/html.
         "staticFile": "A String", # Static file content to be served for this error.
       },
     ],
-    "id": "A String", # Relative name of the version within the module. Example: `v1`. Version names can contain only lowercase letters, numbers, or hyphens. Reserved names: "default", "latest", and any name with the prefix "ah-".
-    "apiConfig": { # [Google Cloud Endpoints](https://cloud.google.com/appengine/docs/python/endpoints/) configuration for API handlers. # Serving configuration for [Google Cloud Endpoints](https://cloud.google.com/appengine/docs/python/endpoints/). Only returned in `GET` requests if `view=FULL` is set.
+    "id": "A String", # Relative name of the version within the module. Example: v1. Version names can contain only lowercase letters, numbers, or hyphens. Reserved names: "default", "latest", and any name with the prefix "ah-".
+    "apiConfig": { # Google Cloud Endpoints (https://cloud.google.com/appengine/docs/python/endpoints/) configuration for API handlers. # Serving configuration for Google Cloud Endpoints (https://cloud.google.com/appengine/docs/python/endpoints/).Only returned in GET requests if view=FULL is set.
       "url": "A String", # URL to serve the endpoint at.
       "securityLevel": "A String", # Security (HTTPS) enforcement for this URL.
-      "authFailAction": "A String", # Action to take when users access resources that require authentication. Defaults to `redirect`.
-      "login": "A String", # Level of login required to access this resource. Defaults to `optional`.
+      "authFailAction": "A String", # Action to take when users access resources that require authentication. Defaults to redirect.
+      "login": "A String", # Level of login required to access this resource. Defaults to optional.
       "script": "A String", # Path to the script from the application root directory.
     },
     "threadsafe": True or False, # Whether multiple requests can be dispatched to this version at once.
-    "healthCheck": { # Health checking configuration for VM instances. Unhealthy instances are killed and replaced with new instances. Only applicable for instances in App Engine flexible environment. # Configures health checking for VM instances. Unhealthy instances are be stopped and replaced with new instances. Only applicable for VM runtimes. Only returned in `GET` requests if `view=FULL` is set.
+    "healthCheck": { # Health checking configuration for VM instances. Unhealthy instances are killed and replaced with new instances. Only applicable for instances in App Engine flexible environment. # Configures health checking for VM instances. Unhealthy instances are be stopped and replaced with new instances. Only applicable for VM runtimes.Only returned in GET requests if view=FULL is set.
       "restartThreshold": 42, # Number of consecutive failed health checks required before an instance is restarted.
       "checkInterval": "A String", # Interval between health checks.
       "unhealthyThreshold": 42, # Number of consecutive failed health checks required before removing traffic.
@@ -705,16 +745,16 @@
       "timeout": "A String", # Time before the health check is considered failed.
       "disableHealthCheck": True or False, # Whether to explicitly disable health checks for this instance.
     },
-    "defaultExpiration": "A String", # Duration that static files should be cached by web proxies and browsers. Only applicable if the corresponding [StaticFilesHandler](https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1/apps.services.versions#staticfileshandler) does not specify its own expiration time. Only returned in `GET` requests if `view=FULL` is set.
-    "libraries": [ # Configuration for third-party Python runtime libraries required by the application. Only returned in `GET` requests if `view=FULL` is set.
+    "defaultExpiration": "A String", # Duration that static files should be cached by web proxies and browsers. Only applicable if the corresponding StaticFilesHandler (https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1/apps.services.versions#staticfileshandler) does not specify its own expiration time.Only returned in GET requests if view=FULL is set.
+    "libraries": [ # Configuration for third-party Python runtime libraries required by the application.Only returned in GET requests if view=FULL is set.
       { # Third-party Python runtime library that is required by the application.
         "version": "A String", # Version of the library to select, or "latest".
         "name": "A String", # Name of the library. Example: "django".
       },
     ],
-    "deployer": "A String", # Email address of the user who created this version. @OutputOnly
-    "env": "A String", # App Engine execution environment to use for this version. Defaults to `1`.
-    "diskUsageBytes": "A String", # Total size of version files hosted on App Engine disk in bytes. @OutputOnly
+    "deployer": "A String", # Email address of the user who created this version.@OutputOnly
+    "env": "A String", # App Engine execution environment to use for this version.Defaults to 1.
+    "diskUsageBytes": "A String", # Total size of version files hosted on App Engine disk in bytes.@OutputOnly
     "automaticScaling": { # Automatic scaling is based on request rate, response latencies, and other application metrics. # Automatic scaling is based on request rate, response latencies, and other application metrics.
       "minPendingLatency": "A String", # Minimum amount of time a request should wait in the pending queue before starting a new instance to handle it.
       "networkUtilization": { # Target scaling by network usage. Only applicable for VM runtimes. # Target scaling by network usage.
@@ -736,34 +776,41 @@
         "targetConcurrentRequests": 42, # Target number of concurrent requests.
         "targetRequestCountPerSec": 42, # Target requests per second.
       },
-      "coolDownPeriod": "A String", # Amount of time that the [Autoscaler](https://cloud.google.com/compute/docs/autoscaler/) should wait between changes to the number of virtual machines. Only applicable for VM runtimes.
+      "coolDownPeriod": "A String", # Amount of time that the Autoscaler (https://cloud.google.com/compute/docs/autoscaler/) should wait between changes to the number of virtual machines. Only applicable for VM runtimes.
       "maxTotalInstances": 42, # Maximum number of instances that should be started to handle requests.
-      "maxConcurrentRequests": 42, # Number of concurrent requests an automatic scaling instance can accept before the scheduler spawns a new instance. Defaults to a runtime-specific value.
+      "maxConcurrentRequests": 42, # Number of concurrent requests an automatic scaling instance can accept before the scheduler spawns a new instance.Defaults to a runtime-specific value.
       "minTotalInstances": 42, # Minimum number of instances that should be maintained for this version.
       "cpuUtilization": { # Target scaling by CPU usage. # Target scaling by CPU usage.
         "targetUtilization": 3.14, # Target CPU utilization ratio to maintain when scaling. Must be between 0 and 1.
         "aggregationWindowLength": "A String", # Period of time over which CPU utilization is calculated.
       },
     },
-    "envVariables": { # Environment variables made available to the application. Only returned in `GET` requests if `view=FULL` is set.
+    "envVariables": { # Environment variables made available to the application.Only returned in GET requests if view=FULL is set.
       "a_key": "A String",
     },
     "resources": { # Machine resources for a version. # Machine resources for this version. Only applicable for VM runtimes.
+      "volumes": [ # Volumes mounted within the app container.
+        { # Volumes mounted within the app container. Only applicable for VM runtimes.
+          "volumeType": "A String", # Underlying volume type, e.g. 'tmpfs'.
+          "name": "A String", # Unique name for the volume.
+          "sizeGb": 3.14, # Volume size in gigabytes.
+        },
+      ],
       "diskGb": 3.14, # Disk size (GB) needed.
       "cpu": 3.14, # Number of CPU cores needed.
       "memoryGb": 3.14, # Memory (GB) needed.
     },
     "manualScaling": { # A service with manual scaling runs continuously, allowing you to perform complex initialization and rely on the state of its memory over time. # A service with manual scaling runs continuously, allowing you to perform complex initialization and rely on the state of its memory over time.
-      "instances": 42, # Number of instances to assign to the service at the start. This number can later be altered by using the [Modules API](https://cloud.google.com/appengine/docs/python/modules/functions) `set_num_instances()` function.
+      "instances": 42, # Number of instances to assign to the service at the start. This number can later be altered by using the Modules API (https://cloud.google.com/appengine/docs/python/modules/functions) set_num_instances() function.
     },
     "inboundServices": [ # Before an application can receive email or XMPP messages, the application must be configured to enable the service.
       "A String",
     ],
-    "deployment": { # Code and application artifacts used to deploy a version to App Engine. # Code and application artifacts that make up this version. Only returned in `GET` requests if `view=FULL` is set.
+    "deployment": { # Code and application artifacts used to deploy a version to App Engine. # Code and application artifacts that make up this version.Only returned in GET requests if view=FULL is set.
       "files": { # Manifest of the files stored in Google Cloud Storage that are included as part of this version. All files must be readable using the credentials supplied with this call.
         "a_key": { # Single source file that is part of the version to be deployed. Each source file that is deployed must be specified separately.
-          "mimeType": "A String", # The MIME type of the file. Defaults to the value from Google Cloud Storage.
-          "sourceUrl": "A String", # URL source to use to fetch this file. Must be a URL to a resource in Google Cloud Storage in the form 'http(s)://storage.googleapis.com/\/\'.
+          "mimeType": "A String", # The MIME type of the file.Defaults to the value from Google Cloud Storage.
+          "sourceUrl": "A String", # URL source to use to fetch this file. Must be a URL to a resource in Google Cloud Storage in the form 'http(s)://storage.googleapis.com//'.
           "sha1Sum": "A String", # The SHA1 hash of the file, in hex.
         },
       },
@@ -782,14 +829,15 @@
       "forwardedPorts": [ # List of ports, or port pairs, to forward from the virtual machine to the application container.
         "A String",
       ],
-      "name": "A String", # Google Cloud Platform network where the virtual machines are created. Specify the short name, not the resource path. Defaults to `default`.
+      "name": "A String", # Google Cloud Platform network where the virtual machines are created. Specify the short name, not the resource path.Defaults to default.
+      "subnetworkName": "A String", # Google Cloud Platform sub-network where the virtual machines are created. Specify the short name, not the resource path.If a subnetwork name is specified, a network name will also be required unless it is for the default network. If the network the VM instance is being created in is a Legacy network, then the IP address is allocated from the IPv4Range. If the network the VM instance is being created in is an auto Subnet Mode Network, then only network name should be specified (not the subnetwork_name) and the IP address is created from the IPCidrRange of the subnetwork that exists in that zone for that network. If the network the VM instance is being created in is a custom Subnet Mode Network, then the subnetwork_name must be specified and the IP address is created from the IPCidrRange of the subnetwork.If specified, the subnetwork must exist in the same region as the Flex app.
     },
-    "nobuildFilesRegex": "A String", # Files that match this pattern will not be built into this version. Only applicable for Go runtimes. Only returned in `GET` requests if `view=FULL` is set.
-    "name": "A String", # Full path to the Version resource in the API. Example: `apps/myapp/services/default/versions/v1`. @OutputOnly
-    "handlers": [ # An ordered list of URL-matching patterns that should be applied to incoming requests. The first matching URL handles the request and other request handlers are not attempted. Only returned in `GET` requests if `view=FULL` is set.
+    "nobuildFilesRegex": "A String", # Files that match this pattern will not be built into this version. Only applicable for Go runtimes.Only returned in GET requests if view=FULL is set.
+    "name": "A String", # Full path to the Version resource in the API. Example: apps/myapp/services/default/versions/v1.@OutputOnly
+    "handlers": [ # An ordered list of URL-matching patterns that should be applied to incoming requests. The first matching URL handles the request and other request handlers are not attempted.Only returned in GET requests if view=FULL is set.
       { # URL pattern and description of how the URL should be handled. App Engine can handle URLs by executing application code, or by serving static files uploaded with the version, such as images, CSS, or JavaScript.
         "securityLevel": "A String", # Security (HTTPS) enforcement for this URL.
-        "authFailAction": "A String", # Action to take when users access resources that require authentication. Defaults to `redirect`.
+        "authFailAction": "A String", # Action to take when users access resources that require authentication. Defaults to redirect.
         "urlRegex": "A String", # A URL prefix. Uses regular expression syntax, which means regexp special characters must be escaped, but should not contain groupings. All URLs that begin with this prefix are handled by this handler, using the portion of the URL after the prefix as part of the file path.
         "script": { # Executes a script to handle the request that matches the URL pattern. # Executes a script to handle the request that matches this URL pattern.
           "scriptPath": "A String", # Path to the script from the application root directory.
@@ -809,12 +857,12 @@
           "scriptPath": "A String", # Path to the script from the application root directory.
         },
         "login": "A String", # Level of login required to access this resource.
-        "redirectHttpResponseCode": "A String", # `30x` code to use when performing redirects for the `secure` field. Defaults to `302`.
+        "redirectHttpResponseCode": "A String", # 30x code to use when performing redirects for the secure field. Defaults to 302.
       },
     ],
-    "creationTime": "A String", # Time that this version was created. @OutputOnly
-    "servingStatus": "A String", # Current serving status of this version. Only the versions with a `SERVING` status create instances and can be billed. `SERVING_STATUS_UNSPECIFIED` is an invalid value. Defaults to `SERVING`.
-    "runtime": "A String", # Desired runtime. Example: `python27`.
+    "creationTime": "A String", # Time that this version was created.@OutputOnly
+    "servingStatus": "A String", # Current serving status of this version. Only the versions with a SERVING status create instances and can be billed.SERVING_STATUS_UNSPECIFIED is an invalid value. Defaults to SERVING.
+    "runtime": "A String", # Desired runtime. Example: python27.
   }
 
   mask: string, Standard field mask for the set of fields to be updated.
@@ -824,10 +872,10 @@
   An object of the form:
 
     { # This resource represents a long-running operation that is the result of a network API call.
-    "response": { # The normal response of the operation in case of success. If the original method returns no data on success, such as `Delete`, the response is `google.protobuf.Empty`. If the original method is standard `Get`/`Create`/`Update`, the response should be the resource. For other methods, the response should have the type `XxxResponse`, where `Xxx` is the original method name. For example, if the original method name is `TakeSnapshot()`, the inferred response type is `TakeSnapshotResponse`.
+    "response": { # The normal response of the operation in case of success. If the original method returns no data on success, such as Delete, the response is google.protobuf.Empty. If the original method is standard Get/Create/Update, the response should be the resource. For other methods, the response should have the type XxxResponse, where Xxx is the original method name. For example, if the original method name is TakeSnapshot(), the inferred response type is TakeSnapshotResponse.
       "a_key": "", # Properties of the object. Contains field @type with type URL.
     },
-    "error": { # The `Status` type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by [gRPC](https://github.com/grpc). The error model is designed to be: - Simple to use and understand for most users - Flexible enough to meet unexpected needs # Overview The `Status` message contains three pieces of data: error code, error message, and error details. The error code should be an enum value of google.rpc.Code, but it may accept additional error codes if needed. The error message should be a developer-facing English message that helps developers *understand* and *resolve* the error. If a localized user-facing error message is needed, put the localized message in the error details or localize it in the client. The optional error details may contain arbitrary information about the error. There is a predefined set of error detail types in the package `google.rpc` which can be used for common error conditions. # Language mapping The `Status` message is the logical representation of the error model, but it is not necessarily the actual wire format. When the `Status` message is exposed in different client libraries and different wire protocols, it can be mapped differently. For example, it will likely be mapped to some exceptions in Java, but more likely mapped to some error codes in C. # Other uses The error model and the `Status` message can be used in a variety of environments, either with or without APIs, to provide a consistent developer experience across different environments. Example uses of this error model include: - Partial errors. If a service needs to return partial errors to the client, it may embed the `Status` in the normal response to indicate the partial errors. - Workflow errors. A typical workflow has multiple steps. Each step may have a `Status` message for error reporting purpose. - Batch operations. If a client uses batch request and batch response, the `Status` message should be used directly inside batch response, one for each error sub-response. - Asynchronous operations. If an API call embeds asynchronous operation results in its response, the status of those operations should be represented directly using the `Status` message. - Logging. If some API errors are stored in logs, the message `Status` could be used directly after any stripping needed for security/privacy reasons. # The error result of the operation in case of failure.
+    "error": { # The Status type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by gRPC (https://github.com/grpc). The error model is designed to be: Simple to use and understand for most users Flexible enough to meet unexpected needsOverviewThe Status message contains three pieces of data: error code, error message, and error details. The error code should be an enum value of google.rpc.Code, but it may accept additional error codes if needed. The error message should be a developer-facing English message that helps developers understand and resolve the error. If a localized user-facing error message is needed, put the localized message in the error details or localize it in the client. The optional error details may contain arbitrary information about the error. There is a predefined set of error detail types in the package google.rpc which can be used for common error conditions.Language mappingThe Status message is the logical representation of the error model, but it is not necessarily the actual wire format. When the Status message is exposed in different client libraries and different wire protocols, it can be mapped differently. For example, it will likely be mapped to some exceptions in Java, but more likely mapped to some error codes in C.Other usesThe error model and the Status message can be used in a variety of environments, either with or without APIs, to provide a consistent developer experience across different environments.Example uses of this error model include: Partial errors. If a service needs to return partial errors to the client, it may embed the Status in the normal response to indicate the partial errors. Workflow errors. A typical workflow has multiple steps. Each step may have a Status message for error reporting purpose. Batch operations. If a client uses batch request and batch response, the Status message should be used directly inside batch response, one for each error sub-response. Asynchronous operations. If an API call embeds asynchronous operation results in its response, the status of those operations should be represented directly using the Status message. Logging. If some API errors are stored in logs, the message Status could be used directly after any stripping needed for security/privacy reasons. # The error result of the operation in case of failure or cancellation.
       "message": "A String", # A developer-facing error message, which should be in English. Any user-facing error message should be localized and sent in the google.rpc.Status.details field, or localized by the client.
       "code": 42, # The status code, which should be an enum value of google.rpc.Code.
       "details": [ # A list of messages that carry the error details. There will be a common set of message types for APIs to use.
@@ -836,8 +884,8 @@
         },
       ],
     },
-    "done": True or False, # If the value is `false`, it means the operation is still in progress. If true, the operation is completed, and either `error` or `response` is available.
-    "name": "A String", # The server-assigned name, which is only unique within the same service that originally returns it. If you use the default HTTP mapping, the `name` should have the format of `operations/some/unique/name`.
+    "done": True or False, # If the value is false, it means the operation is still in progress. If true, the operation is completed, and either error or response is available.
+    "name": "A String", # The server-assigned name, which is only unique within the same service that originally returns it. If you use the default HTTP mapping, the name should have the format of operations/some/unique/name.
     "metadata": { # Service-specific metadata associated with the operation. It typically contains progress information and common metadata such as create time. Some services might not provide such metadata. Any method that returns a long-running operation should document the metadata type, if any.
       "a_key": "", # Properties of the object. Contains field @type with type URL.
     },
diff --git a/docs/dyn/appengine_v1beta5.apps.services.versions.instances.html b/docs/dyn/appengine_v1beta5.apps.services.versions.instances.html
index bbf7545..0e2a897 100644
--- a/docs/dyn/appengine_v1beta5.apps.services.versions.instances.html
+++ b/docs/dyn/appengine_v1beta5.apps.services.versions.instances.html
@@ -76,7 +76,7 @@
 <h2>Instance Methods</h2>
 <p class="toc_element">
   <code><a href="#debug">debug(appsId, servicesId, versionsId, instancesId, body, x__xgafv=None)</a></code></p>
-<p class="firstline">Enables debugging on a VM instance. This allows you to use the SSH command to connect to the virtual machine where the instance lives. While in "debug mode", the instance continues to serve live traffic. You should delete the instance when you are done debugging and then allow the system to take over and determine if another instance should be started. Only applicable for instances in App Engine flexible environment.</p>
+<p class="firstline">Enables debugging on a VM instance. This allows you to use the SSH command to connect to the virtual machine where the instance lives. While in "debug mode", the instance continues to serve live traffic. You should delete the instance when you are done debugging and then allow the system to take over and determine if another instance should be started.Only applicable for instances in App Engine flexible environment.</p>
 <p class="toc_element">
   <code><a href="#delete">delete(appsId, servicesId, versionsId, instancesId, x__xgafv=None)</a></code></p>
 <p class="firstline">Stops a running instance.</p>
@@ -92,17 +92,18 @@
 <h3>Method Details</h3>
 <div class="method">
     <code class="details" id="debug">debug(appsId, servicesId, versionsId, instancesId, body, x__xgafv=None)</code>
-  <pre>Enables debugging on a VM instance. This allows you to use the SSH command to connect to the virtual machine where the instance lives. While in "debug mode", the instance continues to serve live traffic. You should delete the instance when you are done debugging and then allow the system to take over and determine if another instance should be started. Only applicable for instances in App Engine flexible environment.
+  <pre>Enables debugging on a VM instance. This allows you to use the SSH command to connect to the virtual machine where the instance lives. While in "debug mode", the instance continues to serve live traffic. You should delete the instance when you are done debugging and then allow the system to take over and determine if another instance should be started.Only applicable for instances in App Engine flexible environment.
 
 Args:
-  appsId: string, Part of `name`. Name of the resource requested. Example: `apps/myapp/services/default/versions/v1/instances/instance-1`. (required)
+  appsId: string, Part of `name`. Name of the resource requested. Example: apps/myapp/services/default/versions/v1/instances/instance-1. (required)
   servicesId: string, Part of `name`. See documentation of `appsId`. (required)
   versionsId: string, Part of `name`. See documentation of `appsId`. (required)
   instancesId: string, Part of `name`. See documentation of `appsId`. (required)
   body: object, The request body. (required)
     The object takes the form of:
 
-{ # Request message for `Instances.DebugInstance`.
+{ # Request message for Instances.DebugInstance.
+    "sshKey": "A String", # Public SSH key to add to the instance. Examples: [USERNAME]:ssh-rsa [KEY_VALUE] [USERNAME] [USERNAME]:ssh-rsa [KEY_VALUE] google-ssh {"userName":"[USERNAME]","expireOn":"[EXPIRE_TIME]"}For more information, see Adding and Removing SSH Keys (https://cloud.google.com/compute/docs/instances/adding-removing-ssh-keys).
   }
 
   x__xgafv: string, V1 error format.
@@ -111,10 +112,10 @@
   An object of the form:
 
     { # This resource represents a long-running operation that is the result of a network API call.
-    "response": { # The normal response of the operation in case of success. If the original method returns no data on success, such as `Delete`, the response is `google.protobuf.Empty`. If the original method is standard `Get`/`Create`/`Update`, the response should be the resource. For other methods, the response should have the type `XxxResponse`, where `Xxx` is the original method name. For example, if the original method name is `TakeSnapshot()`, the inferred response type is `TakeSnapshotResponse`.
+    "response": { # The normal response of the operation in case of success. If the original method returns no data on success, such as Delete, the response is google.protobuf.Empty. If the original method is standard Get/Create/Update, the response should be the resource. For other methods, the response should have the type XxxResponse, where Xxx is the original method name. For example, if the original method name is TakeSnapshot(), the inferred response type is TakeSnapshotResponse.
       "a_key": "", # Properties of the object. Contains field @type with type URL.
     },
-    "error": { # The `Status` type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by [gRPC](https://github.com/grpc). The error model is designed to be: - Simple to use and understand for most users - Flexible enough to meet unexpected needs # Overview The `Status` message contains three pieces of data: error code, error message, and error details. The error code should be an enum value of google.rpc.Code, but it may accept additional error codes if needed. The error message should be a developer-facing English message that helps developers *understand* and *resolve* the error. If a localized user-facing error message is needed, put the localized message in the error details or localize it in the client. The optional error details may contain arbitrary information about the error. There is a predefined set of error detail types in the package `google.rpc` which can be used for common error conditions. # Language mapping The `Status` message is the logical representation of the error model, but it is not necessarily the actual wire format. When the `Status` message is exposed in different client libraries and different wire protocols, it can be mapped differently. For example, it will likely be mapped to some exceptions in Java, but more likely mapped to some error codes in C. # Other uses The error model and the `Status` message can be used in a variety of environments, either with or without APIs, to provide a consistent developer experience across different environments. Example uses of this error model include: - Partial errors. If a service needs to return partial errors to the client, it may embed the `Status` in the normal response to indicate the partial errors. - Workflow errors. A typical workflow has multiple steps. Each step may have a `Status` message for error reporting purpose. - Batch operations. If a client uses batch request and batch response, the `Status` message should be used directly inside batch response, one for each error sub-response. - Asynchronous operations. If an API call embeds asynchronous operation results in its response, the status of those operations should be represented directly using the `Status` message. - Logging. If some API errors are stored in logs, the message `Status` could be used directly after any stripping needed for security/privacy reasons. # The error result of the operation in case of failure.
+    "error": { # The Status type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by gRPC (https://github.com/grpc). The error model is designed to be: Simple to use and understand for most users Flexible enough to meet unexpected needsOverviewThe Status message contains three pieces of data: error code, error message, and error details. The error code should be an enum value of google.rpc.Code, but it may accept additional error codes if needed. The error message should be a developer-facing English message that helps developers understand and resolve the error. If a localized user-facing error message is needed, put the localized message in the error details or localize it in the client. The optional error details may contain arbitrary information about the error. There is a predefined set of error detail types in the package google.rpc which can be used for common error conditions.Language mappingThe Status message is the logical representation of the error model, but it is not necessarily the actual wire format. When the Status message is exposed in different client libraries and different wire protocols, it can be mapped differently. For example, it will likely be mapped to some exceptions in Java, but more likely mapped to some error codes in C.Other usesThe error model and the Status message can be used in a variety of environments, either with or without APIs, to provide a consistent developer experience across different environments.Example uses of this error model include: Partial errors. If a service needs to return partial errors to the client, it may embed the Status in the normal response to indicate the partial errors. Workflow errors. A typical workflow has multiple steps. Each step may have a Status message for error reporting purpose. Batch operations. If a client uses batch request and batch response, the Status message should be used directly inside batch response, one for each error sub-response. Asynchronous operations. If an API call embeds asynchronous operation results in its response, the status of those operations should be represented directly using the Status message. Logging. If some API errors are stored in logs, the message Status could be used directly after any stripping needed for security/privacy reasons. # The error result of the operation in case of failure or cancellation.
       "message": "A String", # A developer-facing error message, which should be in English. Any user-facing error message should be localized and sent in the google.rpc.Status.details field, or localized by the client.
       "code": 42, # The status code, which should be an enum value of google.rpc.Code.
       "details": [ # A list of messages that carry the error details. There will be a common set of message types for APIs to use.
@@ -123,8 +124,8 @@
         },
       ],
     },
-    "done": True or False, # If the value is `false`, it means the operation is still in progress. If true, the operation is completed, and either `error` or `response` is available.
-    "name": "A String", # The server-assigned name, which is only unique within the same service that originally returns it. If you use the default HTTP mapping, the `name` should have the format of `operations/some/unique/name`.
+    "done": True or False, # If the value is false, it means the operation is still in progress. If true, the operation is completed, and either error or response is available.
+    "name": "A String", # The server-assigned name, which is only unique within the same service that originally returns it. If you use the default HTTP mapping, the name should have the format of operations/some/unique/name.
     "metadata": { # Service-specific metadata associated with the operation. It typically contains progress information and common metadata such as create time. Some services might not provide such metadata. Any method that returns a long-running operation should document the metadata type, if any.
       "a_key": "", # Properties of the object. Contains field @type with type URL.
     },
@@ -146,10 +147,10 @@
   An object of the form:
 
     { # This resource represents a long-running operation that is the result of a network API call.
-    "response": { # The normal response of the operation in case of success. If the original method returns no data on success, such as `Delete`, the response is `google.protobuf.Empty`. If the original method is standard `Get`/`Create`/`Update`, the response should be the resource. For other methods, the response should have the type `XxxResponse`, where `Xxx` is the original method name. For example, if the original method name is `TakeSnapshot()`, the inferred response type is `TakeSnapshotResponse`.
+    "response": { # The normal response of the operation in case of success. If the original method returns no data on success, such as Delete, the response is google.protobuf.Empty. If the original method is standard Get/Create/Update, the response should be the resource. For other methods, the response should have the type XxxResponse, where Xxx is the original method name. For example, if the original method name is TakeSnapshot(), the inferred response type is TakeSnapshotResponse.
       "a_key": "", # Properties of the object. Contains field @type with type URL.
     },
-    "error": { # The `Status` type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by [gRPC](https://github.com/grpc). The error model is designed to be: - Simple to use and understand for most users - Flexible enough to meet unexpected needs # Overview The `Status` message contains three pieces of data: error code, error message, and error details. The error code should be an enum value of google.rpc.Code, but it may accept additional error codes if needed. The error message should be a developer-facing English message that helps developers *understand* and *resolve* the error. If a localized user-facing error message is needed, put the localized message in the error details or localize it in the client. The optional error details may contain arbitrary information about the error. There is a predefined set of error detail types in the package `google.rpc` which can be used for common error conditions. # Language mapping The `Status` message is the logical representation of the error model, but it is not necessarily the actual wire format. When the `Status` message is exposed in different client libraries and different wire protocols, it can be mapped differently. For example, it will likely be mapped to some exceptions in Java, but more likely mapped to some error codes in C. # Other uses The error model and the `Status` message can be used in a variety of environments, either with or without APIs, to provide a consistent developer experience across different environments. Example uses of this error model include: - Partial errors. If a service needs to return partial errors to the client, it may embed the `Status` in the normal response to indicate the partial errors. - Workflow errors. A typical workflow has multiple steps. Each step may have a `Status` message for error reporting purpose. - Batch operations. If a client uses batch request and batch response, the `Status` message should be used directly inside batch response, one for each error sub-response. - Asynchronous operations. If an API call embeds asynchronous operation results in its response, the status of those operations should be represented directly using the `Status` message. - Logging. If some API errors are stored in logs, the message `Status` could be used directly after any stripping needed for security/privacy reasons. # The error result of the operation in case of failure.
+    "error": { # The Status type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by gRPC (https://github.com/grpc). The error model is designed to be: Simple to use and understand for most users Flexible enough to meet unexpected needsOverviewThe Status message contains three pieces of data: error code, error message, and error details. The error code should be an enum value of google.rpc.Code, but it may accept additional error codes if needed. The error message should be a developer-facing English message that helps developers understand and resolve the error. If a localized user-facing error message is needed, put the localized message in the error details or localize it in the client. The optional error details may contain arbitrary information about the error. There is a predefined set of error detail types in the package google.rpc which can be used for common error conditions.Language mappingThe Status message is the logical representation of the error model, but it is not necessarily the actual wire format. When the Status message is exposed in different client libraries and different wire protocols, it can be mapped differently. For example, it will likely be mapped to some exceptions in Java, but more likely mapped to some error codes in C.Other usesThe error model and the Status message can be used in a variety of environments, either with or without APIs, to provide a consistent developer experience across different environments.Example uses of this error model include: Partial errors. If a service needs to return partial errors to the client, it may embed the Status in the normal response to indicate the partial errors. Workflow errors. A typical workflow has multiple steps. Each step may have a Status message for error reporting purpose. Batch operations. If a client uses batch request and batch response, the Status message should be used directly inside batch response, one for each error sub-response. Asynchronous operations. If an API call embeds asynchronous operation results in its response, the status of those operations should be represented directly using the Status message. Logging. If some API errors are stored in logs, the message Status could be used directly after any stripping needed for security/privacy reasons. # The error result of the operation in case of failure or cancellation.
       "message": "A String", # A developer-facing error message, which should be in English. Any user-facing error message should be localized and sent in the google.rpc.Status.details field, or localized by the client.
       "code": 42, # The status code, which should be an enum value of google.rpc.Code.
       "details": [ # A list of messages that carry the error details. There will be a common set of message types for APIs to use.
@@ -158,8 +159,8 @@
         },
       ],
     },
-    "done": True or False, # If the value is `false`, it means the operation is still in progress. If true, the operation is completed, and either `error` or `response` is available.
-    "name": "A String", # The server-assigned name, which is only unique within the same service that originally returns it. If you use the default HTTP mapping, the `name` should have the format of `operations/some/unique/name`.
+    "done": True or False, # If the value is false, it means the operation is still in progress. If true, the operation is completed, and either error or response is available.
+    "name": "A String", # The server-assigned name, which is only unique within the same service that originally returns it. If you use the default HTTP mapping, the name should have the format of operations/some/unique/name.
     "metadata": { # Service-specific metadata associated with the operation. It typically contains progress information and common metadata such as create time. Some services might not provide such metadata. Any method that returns a long-running operation should document the metadata type, if any.
       "a_key": "", # Properties of the object. Contains field @type with type URL.
     },
@@ -171,7 +172,7 @@
   <pre>Gets instance information.
 
 Args:
-  appsId: string, Part of `name`. Name of the resource requested. Example: `apps/myapp/services/default/versions/v1/instances/instance-1`. (required)
+  appsId: string, Part of `name`. Name of the resource requested. Example: apps/myapp/services/default/versions/v1/instances/instance-1. (required)
   servicesId: string, Part of `name`. See documentation of `appsId`. (required)
   versionsId: string, Part of `name`. See documentation of `appsId`. (required)
   instancesId: string, Part of `name`. See documentation of `appsId`. (required)
@@ -181,21 +182,22 @@
   An object of the form:
 
     { # An Instance resource is the computing unit that App Engine uses to automatically scale an application.
-    "errors": 42, # Number of errors since this instance was started. @OutputOnly
-    "name": "A String", # Full path to the Instance resource in the API. Example: `apps/myapp/services/default/versions/v1/instances/instance-1`. @OutputOnly
-    "startTimestamp": "A String", # Time that this instance was started. @OutputOnly
-    "appEngineRelease": "A String", # App Engine release this instance is running on. @OutputOnly
-    "vmId": "A String", # Virtual machine ID of this instance. Only applicable for instances in App Engine flexible environment. @OutputOnly
-    "memoryUsage": "A String", # Total memory in use (bytes). @OutputOnly
-    "id": "A String", # Relative name of the instance within the version. Example: `instance-1`. @OutputOnly
-    "vmUnlocked": True or False, # Whether this instance is in debug mode. Only applicable for instances in App Engine flexible environment. @OutputOnly
-    "averageLatency": 42, # Average latency (ms) over the last minute. @OutputOnly
-    "qps": 3.14, # Average queries per second (QPS) over the last minute. @OutputOnly
-    "requests": 42, # Number of requests since this instance was started. @OutputOnly
-    "vmName": "A String", # Name of the virtual machine where this instance lives. Only applicable for instances in App Engine flexible environment. @OutputOnly
-    "availability": "A String", # Availability of the instance. @OutputOnly
-    "vmZoneName": "A String", # Zone where the virtual machine is located. Only applicable for instances in App Engine flexible environment. @OutputOnly
-    "vmStatus": "A String", # Status of the virtual machine where this instance lives. Only applicable for instances in App Engine flexible environment. @OutputOnly
+    "errors": 42, # Number of errors since this instance was started.@OutputOnly
+    "name": "A String", # Full path to the Instance resource in the API. Example: apps/myapp/services/default/versions/v1/instances/instance-1.@OutputOnly
+    "startTimestamp": "A String", # Time that this instance was started.@OutputOnly
+    "appEngineRelease": "A String", # App Engine release this instance is running on.@OutputOnly
+    "vmId": "A String", # Virtual machine ID of this instance. Only applicable for instances in App Engine flexible environment.@OutputOnly
+    "memoryUsage": "A String", # Total memory in use (bytes).@OutputOnly
+    "id": "A String", # Relative name of the instance within the version. Example: instance-1.@OutputOnly
+    "vmUnlocked": True or False, # Whether this instance is in debug mode. Only applicable for instances in App Engine flexible environment.@OutputOnly
+    "averageLatency": 42, # Average latency (ms) over the last minute.@OutputOnly
+    "vmIp": "A String", # The IP address of this instance. Only applicable for instances in App Engine flexible environment.@OutputOnly
+    "qps": 3.14, # Average queries per second (QPS) over the last minute.@OutputOnly
+    "requests": 42, # Number of requests since this instance was started.@OutputOnly
+    "vmName": "A String", # Name of the virtual machine where this instance lives. Only applicable for instances in App Engine flexible environment.@OutputOnly
+    "availability": "A String", # Availability of the instance.@OutputOnly
+    "vmZoneName": "A String", # Zone where the virtual machine is located. Only applicable for instances in App Engine flexible environment.@OutputOnly
+    "vmStatus": "A String", # Status of the virtual machine where this instance lives. Only applicable for instances in App Engine flexible environment.@OutputOnly
   }</pre>
 </div>
 
@@ -204,7 +206,7 @@
   <pre>Lists the instances of a version.
 
 Args:
-  appsId: string, Part of `name`. Name of the resource requested. Example: `apps/myapp/services/default/versions/v1`. (required)
+  appsId: string, Part of `name`. Name of the resource requested. Example: apps/myapp/services/default/versions/v1. (required)
   servicesId: string, Part of `name`. See documentation of `appsId`. (required)
   versionsId: string, Part of `name`. See documentation of `appsId`. (required)
   pageSize: integer, Maximum results to return per page.
@@ -214,25 +216,26 @@
 Returns:
   An object of the form:
 
-    { # Response message for `Instances.ListInstances`.
+    { # Response message for Instances.ListInstances.
     "nextPageToken": "A String", # Continuation token for fetching the next page of results.
     "instances": [ # The instances belonging to the requested version.
       { # An Instance resource is the computing unit that App Engine uses to automatically scale an application.
-        "errors": 42, # Number of errors since this instance was started. @OutputOnly
-        "name": "A String", # Full path to the Instance resource in the API. Example: `apps/myapp/services/default/versions/v1/instances/instance-1`. @OutputOnly
-        "startTimestamp": "A String", # Time that this instance was started. @OutputOnly
-        "appEngineRelease": "A String", # App Engine release this instance is running on. @OutputOnly
-        "vmId": "A String", # Virtual machine ID of this instance. Only applicable for instances in App Engine flexible environment. @OutputOnly
-        "memoryUsage": "A String", # Total memory in use (bytes). @OutputOnly
-        "id": "A String", # Relative name of the instance within the version. Example: `instance-1`. @OutputOnly
-        "vmUnlocked": True or False, # Whether this instance is in debug mode. Only applicable for instances in App Engine flexible environment. @OutputOnly
-        "averageLatency": 42, # Average latency (ms) over the last minute. @OutputOnly
-        "qps": 3.14, # Average queries per second (QPS) over the last minute. @OutputOnly
-        "requests": 42, # Number of requests since this instance was started. @OutputOnly
-        "vmName": "A String", # Name of the virtual machine where this instance lives. Only applicable for instances in App Engine flexible environment. @OutputOnly
-        "availability": "A String", # Availability of the instance. @OutputOnly
-        "vmZoneName": "A String", # Zone where the virtual machine is located. Only applicable for instances in App Engine flexible environment. @OutputOnly
-        "vmStatus": "A String", # Status of the virtual machine where this instance lives. Only applicable for instances in App Engine flexible environment. @OutputOnly
+        "errors": 42, # Number of errors since this instance was started.@OutputOnly
+        "name": "A String", # Full path to the Instance resource in the API. Example: apps/myapp/services/default/versions/v1/instances/instance-1.@OutputOnly
+        "startTimestamp": "A String", # Time that this instance was started.@OutputOnly
+        "appEngineRelease": "A String", # App Engine release this instance is running on.@OutputOnly
+        "vmId": "A String", # Virtual machine ID of this instance. Only applicable for instances in App Engine flexible environment.@OutputOnly
+        "memoryUsage": "A String", # Total memory in use (bytes).@OutputOnly
+        "id": "A String", # Relative name of the instance within the version. Example: instance-1.@OutputOnly
+        "vmUnlocked": True or False, # Whether this instance is in debug mode. Only applicable for instances in App Engine flexible environment.@OutputOnly
+        "averageLatency": 42, # Average latency (ms) over the last minute.@OutputOnly
+        "vmIp": "A String", # The IP address of this instance. Only applicable for instances in App Engine flexible environment.@OutputOnly
+        "qps": 3.14, # Average queries per second (QPS) over the last minute.@OutputOnly
+        "requests": 42, # Number of requests since this instance was started.@OutputOnly
+        "vmName": "A String", # Name of the virtual machine where this instance lives. Only applicable for instances in App Engine flexible environment.@OutputOnly
+        "availability": "A String", # Availability of the instance.@OutputOnly
+        "vmZoneName": "A String", # Zone where the virtual machine is located. Only applicable for instances in App Engine flexible environment.@OutputOnly
+        "vmStatus": "A String", # Status of the virtual machine where this instance lives. Only applicable for instances in App Engine flexible environment.@OutputOnly
       },
     ],
   }</pre>
diff --git a/docs/dyn/appsactivity_v1.activities.html b/docs/dyn/appsactivity_v1.activities.html
index 4fceeae..3595478 100644
--- a/docs/dyn/appsactivity_v1.activities.html
+++ b/docs/dyn/appsactivity_v1.activities.html
@@ -147,8 +147,9 @@
                       "url": "A String", # The URL of the photo.
                     },
                     "permissionId": "A String", # The permission ID associated with this user. Equivalent to the Drive API's permission ID for this user, returned as part of the Drive Permissions resource.
-                    "name": "A String", # The displayable name of the user.
+                    "isMe": True or False, # Whether the user is the authenticated user.
                     "isDeleted": True or False, # A boolean which indicates whether the specified User was deleted. If true, name, photo and permission_id will be omitted.
+                    "name": "A String", # The displayable name of the user.
                   },
                   "type": "A String", # Indicates how widely permissions are granted.
                 },
@@ -164,8 +165,9 @@
                       "url": "A String", # The URL of the photo.
                     },
                     "permissionId": "A String", # The permission ID associated with this user. Equivalent to the Drive API's permission ID for this user, returned as part of the Drive Permissions resource.
-                    "name": "A String", # The displayable name of the user.
+                    "isMe": True or False, # Whether the user is the authenticated user.
                     "isDeleted": True or False, # A boolean which indicates whether the specified User was deleted. If true, name, photo and permission_id will be omitted.
+                    "name": "A String", # The displayable name of the user.
                   },
                   "type": "A String", # Indicates how widely permissions are granted.
                 },
@@ -177,8 +179,9 @@
               "url": "A String", # The URL of the photo.
             },
             "permissionId": "A String", # The permission ID associated with this user. Equivalent to the Drive API's permission ID for this user, returned as part of the Drive Permissions resource.
-            "name": "A String", # The displayable name of the user.
+            "isMe": True or False, # Whether the user is the authenticated user.
             "isDeleted": True or False, # A boolean which indicates whether the specified User was deleted. If true, name, photo and permission_id will be omitted.
+            "name": "A String", # The displayable name of the user.
           },
           "eventTimeMillis": "A String", # The time at which the event occurred formatted as Unix time in milliseconds.
           "primaryEventType": "A String", # The main type of event that occurred.
@@ -227,8 +230,9 @@
                         "url": "A String", # The URL of the photo.
                       },
                       "permissionId": "A String", # The permission ID associated with this user. Equivalent to the Drive API's permission ID for this user, returned as part of the Drive Permissions resource.
-                      "name": "A String", # The displayable name of the user.
+                      "isMe": True or False, # Whether the user is the authenticated user.
                       "isDeleted": True or False, # A boolean which indicates whether the specified User was deleted. If true, name, photo and permission_id will be omitted.
+                      "name": "A String", # The displayable name of the user.
                     },
                     "type": "A String", # Indicates how widely permissions are granted.
                   },
@@ -244,8 +248,9 @@
                         "url": "A String", # The URL of the photo.
                       },
                       "permissionId": "A String", # The permission ID associated with this user. Equivalent to the Drive API's permission ID for this user, returned as part of the Drive Permissions resource.
-                      "name": "A String", # The displayable name of the user.
+                      "isMe": True or False, # Whether the user is the authenticated user.
                       "isDeleted": True or False, # A boolean which indicates whether the specified User was deleted. If true, name, photo and permission_id will be omitted.
+                      "name": "A String", # The displayable name of the user.
                     },
                     "type": "A String", # Indicates how widely permissions are granted.
                   },
@@ -257,8 +262,9 @@
                 "url": "A String", # The URL of the photo.
               },
               "permissionId": "A String", # The permission ID associated with this user. Equivalent to the Drive API's permission ID for this user, returned as part of the Drive Permissions resource.
-              "name": "A String", # The displayable name of the user.
+              "isMe": True or False, # Whether the user is the authenticated user.
               "isDeleted": True or False, # A boolean which indicates whether the specified User was deleted. If true, name, photo and permission_id will be omitted.
+              "name": "A String", # The displayable name of the user.
             },
             "eventTimeMillis": "A String", # The time at which the event occurred formatted as Unix time in milliseconds.
             "primaryEventType": "A String", # The main type of event that occurred.
diff --git a/docs/dyn/bigquery_v2.jobs.html b/docs/dyn/bigquery_v2.jobs.html
index 647b13c..c2666aa 100644
--- a/docs/dyn/bigquery_v2.jobs.html
+++ b/docs/dyn/bigquery_v2.jobs.html
@@ -84,7 +84,7 @@
   <code><a href="#getQueryResults">getQueryResults(projectId, jobId, timeoutMs=None, pageToken=None, maxResults=None, startIndex=None)</a></code></p>
 <p class="firstline">Retrieves the results of a query job.</p>
 <p class="toc_element">
-  <code><a href="#insert">insert(projectId, body=None, media_body=None)</a></code></p>
+  <code><a href="#insert">insert(projectId, body=None, media_body=None, media_mime_type=None)</a></code></p>
 <p class="firstline">Starts a new asynchronous job. Requires the Can View project role.</p>
 <p class="toc_element">
   <code><a href="#list">list(projectId, projection=None, stateFilter=None, pageToken=None, allUsers=None, maxResults=None)</a></code></p>
@@ -162,6 +162,7 @@
                 "name": "A String", # Human-readable name for stage.
               },
             ],
+            "statementType": "A String", # [Output-only, Experimental] The type of query statement, if valid.
             "totalBytesBilled": "A String", # [Output-only] Total bytes billed for the job.
             "totalBytesProcessed": "A String", # [Output-only] Total bytes processed for the job.
             "cacheHit": True or False, # [Output-only] Whether the query result was fetched from the query cache.
@@ -205,7 +206,7 @@
                   "fields": [ # [Optional] Describes the nested schema fields if the type property is set to RECORD.
                     # Object with schema name: TableFieldSchema
                   ],
-                  "type": "A String", # [Required] The field data type. Possible values include STRING, BYTES, INTEGER, FLOAT, BOOLEAN, TIMESTAMP, DATE, TIME, DATETIME, or RECORD (where RECORD indicates that the field contains a nested schema).
+                  "type": "A String", # [Required] The field data type. Possible values include STRING, BYTES, INTEGER, INT64 (same as INTEGER), FLOAT, FLOAT64 (same as FLOAT), BOOLEAN, BOOL (same as BOOLEAN), TIMESTAMP, DATE, TIME, DATETIME, RECORD (where RECORD indicates that the field contains a nested schema) or STRUCT (same as RECORD).
                   "description": "A String", # [Optional] The field description. The maximum length is 16K characters.
                   "name": "A String", # [Required] The field name. The name must contain only letters (a-z, A-Z), numbers (0-9), or underscores (_), and must start with a letter or underscore. The maximum length is 128 characters.
                   "mode": "A String", # [Optional] The field mode. Possible values include NULLABLE, REQUIRED and REPEATED. The default value is NULLABLE.
@@ -228,10 +229,13 @@
         "user_email": "A String", # [Output-only] Email address of the user who ran the job.
         "configuration": { # [Required] Describes the job configuration.
           "load": { # [Pick one] Configures a load job.
-            "sourceFormat": "A String", # [Optional] The format of the data files. For CSV files, specify "CSV". For datastore backups, specify "DATASTORE_BACKUP". For newline-delimited JSON, specify "NEWLINE_DELIMITED_JSON". For Avro, specify "AVRO". The default value is CSV.
+            "schemaUpdateOptions": [ # [Experimental] Allows the schema of the desitination table to be updated as a side effect of the load job. Schema update options are supported in two cases: when writeDisposition is WRITE_APPEND; when writeDisposition is WRITE_TRUNCATE and the destination table is a partition of a table, specified by partition decorators. For normal tables, WRITE_TRUNCATE will always overwrite the schema. One or more of the following values are specified: ALLOW_FIELD_ADDITION: allow adding a nullable field to the schema. ALLOW_FIELD_RELAXATION: allow relaxing a required field in the original schema to nullable.
+              "A String",
+            ],
             "encoding": "A String", # [Optional] The character encoding of the data. The supported values are UTF-8 or ISO-8859-1. The default value is UTF-8. BigQuery decodes the data after the raw, binary data has been split using the values of the quote and fieldDelimiter properties.
             "fieldDelimiter": "A String", # [Optional] The separator for fields in a CSV file. The separator can be any ISO-8859-1 single-byte character. To use a character in the range 128-255, you must encode the character as UTF8. BigQuery converts the string to ISO-8859-1 encoding, and then uses the first byte of the encoded string to split the data in its raw, binary state. BigQuery also supports the escape sequence "\t" to specify a tab separator. The default value is a comma (',').
             "autodetect": True or False, # [Experimental] Indicates if we should automatically infer the options and schema for CSV and JSON sources.
+            "sourceFormat": "A String", # [Optional] The format of the data files. For CSV files, specify "CSV". For datastore backups, specify "DATASTORE_BACKUP". For newline-delimited JSON, specify "NEWLINE_DELIMITED_JSON". For Avro, specify "AVRO". The default value is CSV.
             "destinationTable": { # [Required] The destination table to load the data into.
               "projectId": "A String", # [Required] The ID of the project containing this table.
               "tableId": "A String", # [Required] The ID of the table. The ID must contain only letters (a-z, A-Z), numbers (0-9), or underscores (_). The maximum length is 1,024 characters.
@@ -239,9 +243,7 @@
             },
             "writeDisposition": "A String", # [Optional] Specifies the action that occurs if the destination table already exists. The following values are supported: WRITE_TRUNCATE: If the table already exists, BigQuery overwrites the table data. WRITE_APPEND: If the table already exists, BigQuery appends the data to the table. WRITE_EMPTY: If the table already exists and contains data, a 'duplicate' error is returned in the job result. The default value is WRITE_APPEND. Each action is atomic and only occurs if BigQuery is able to complete the job successfully. Creation, truncation and append actions occur as one atomic update upon job completion.
             "maxBadRecords": 42, # [Optional] The maximum number of bad records that BigQuery can ignore when running the job. If the number of bad records exceeds this value, an invalid error is returned in the job result. The default value is 0, which requires that all records are valid.
-            "schemaUpdateOptions": [ # [Experimental] Allows the schema of the desitination table to be updated as a side effect of the load job. Schema update options are supported in two cases: when writeDisposition is WRITE_APPEND; when writeDisposition is WRITE_TRUNCATE and the destination table is a partition of a table, specified by partition decorators. For normal tables, WRITE_TRUNCATE will always overwrite the schema. One or more of the following values are specified: ALLOW_FIELD_ADDITION: allow adding a nullable field to the schema. ALLOW_FIELD_RELAXATION: allow relaxing a required field in the original schema to nullable.
-              "A String",
-            ],
+            "nullMarker": "A String", # [Optional] This string will be interpreted as a null value when it appears in a CSV file. The default value is the empty string. Please refer to the documentation for further information.
             "allowJaggedRows": True or False, # [Optional] Accept rows that are missing trailing optional columns. The missing values are treated as nulls. If false, records with missing trailing columns are treated as bad records, and if there are too many bad records, an invalid error is returned in the job result. The default value is false. Only applicable to CSV, ignored for other formats.
             "skipLeadingRows": 42, # [Optional] The number of rows at the top of a CSV file that BigQuery will skip when loading the data. The default value is 0. This property is useful if you have header rows in the file that should be skipped.
             "sourceUris": [ # [Required] The fully-qualified URIs that point to your data in Google Cloud Storage. Each URI can contain one '*' wildcard character and it must come after the 'bucket' name.
@@ -262,7 +264,7 @@
                   "fields": [ # [Optional] Describes the nested schema fields if the type property is set to RECORD.
                     # Object with schema name: TableFieldSchema
                   ],
-                  "type": "A String", # [Required] The field data type. Possible values include STRING, BYTES, INTEGER, FLOAT, BOOLEAN, TIMESTAMP, DATE, TIME, DATETIME, or RECORD (where RECORD indicates that the field contains a nested schema).
+                  "type": "A String", # [Required] The field data type. Possible values include STRING, BYTES, INTEGER, INT64 (same as INTEGER), FLOAT, FLOAT64 (same as FLOAT), BOOLEAN, BOOL (same as BOOLEAN), TIMESTAMP, DATE, TIME, DATETIME, RECORD (where RECORD indicates that the field contains a nested schema) or STRUCT (same as RECORD).
                   "description": "A String", # [Optional] The field description. The maximum length is 16K characters.
                   "name": "A String", # [Required] The field name. The name must contain only letters (a-z, A-Z), numbers (0-9), or underscores (_), and must start with a letter or underscore. The maximum length is 128 characters.
                   "mode": "A String", # [Optional] The field mode. Possible values include NULLABLE, REQUIRED and REPEATED. The default value is NULLABLE.
@@ -282,7 +284,7 @@
               "projectId": "A String", # [Optional] The ID of the project containing this dataset.
               "datasetId": "A String", # [Required] A unique ID for this dataset, without the project name. The ID must contain only letters (a-z, A-Z), numbers (0-9), or underscores (_). The maximum length is 1,024 characters.
             },
-            "useLegacySql": True or False, # [Experimental] Specifies whether to use BigQuery's legacy SQL dialect for this query. The default value is true. If set to false, the query will use BigQuery's standard SQL: https://cloud.google.com/bigquery/sql-reference/ When useLegacySql is set to false, the values of allowLargeResults and flattenResults are ignored; query will be run as if allowLargeResults is true and flattenResults is false.
+            "useLegacySql": True or False, # Specifies whether to use BigQuery's legacy SQL dialect for this query. The default value is true. If set to false, the query will use BigQuery's standard SQL: https://cloud.google.com/bigquery/sql-reference/ When useLegacySql is set to false, the values of allowLargeResults and flattenResults are ignored; query will be run as if allowLargeResults is true and flattenResults is false.
             "destinationTable": { # [Optional] Describes the table where the query results should be stored. If not present, a new table will be created to store the results.
               "projectId": "A String", # [Required] The ID of the project containing this table.
               "tableId": "A String", # [Required] The ID of the table. The ID must contain only letters (a-z, A-Z), numbers (0-9), or underscores (_). The maximum length is 1,024 characters.
@@ -378,7 +380,7 @@
                       "fields": [ # [Optional] Describes the nested schema fields if the type property is set to RECORD.
                         # Object with schema name: TableFieldSchema
                       ],
-                      "type": "A String", # [Required] The field data type. Possible values include STRING, BYTES, INTEGER, FLOAT, BOOLEAN, TIMESTAMP, DATE, TIME, DATETIME, or RECORD (where RECORD indicates that the field contains a nested schema).
+                      "type": "A String", # [Required] The field data type. Possible values include STRING, BYTES, INTEGER, INT64 (same as INTEGER), FLOAT, FLOAT64 (same as FLOAT), BOOLEAN, BOOL (same as BOOLEAN), TIMESTAMP, DATE, TIME, DATETIME, RECORD (where RECORD indicates that the field contains a nested schema) or STRUCT (same as RECORD).
                       "description": "A String", # [Optional] The field description. The maximum length is 16K characters.
                       "name": "A String", # [Required] The field name. The name must contain only letters (a-z, A-Z), numbers (0-9), or underscores (_), and must start with a letter or underscore. The maximum length is 128 characters.
                       "mode": "A String", # [Optional] The field mode. Possible values include NULLABLE, REQUIRED and REPEATED. The default value is NULLABLE.
@@ -498,6 +500,7 @@
               "name": "A String", # Human-readable name for stage.
             },
           ],
+          "statementType": "A String", # [Output-only, Experimental] The type of query statement, if valid.
           "totalBytesBilled": "A String", # [Output-only] Total bytes billed for the job.
           "totalBytesProcessed": "A String", # [Output-only] Total bytes processed for the job.
           "cacheHit": True or False, # [Output-only] Whether the query result was fetched from the query cache.
@@ -541,7 +544,7 @@
                 "fields": [ # [Optional] Describes the nested schema fields if the type property is set to RECORD.
                   # Object with schema name: TableFieldSchema
                 ],
-                "type": "A String", # [Required] The field data type. Possible values include STRING, BYTES, INTEGER, FLOAT, BOOLEAN, TIMESTAMP, DATE, TIME, DATETIME, or RECORD (where RECORD indicates that the field contains a nested schema).
+                "type": "A String", # [Required] The field data type. Possible values include STRING, BYTES, INTEGER, INT64 (same as INTEGER), FLOAT, FLOAT64 (same as FLOAT), BOOLEAN, BOOL (same as BOOLEAN), TIMESTAMP, DATE, TIME, DATETIME, RECORD (where RECORD indicates that the field contains a nested schema) or STRUCT (same as RECORD).
                 "description": "A String", # [Optional] The field description. The maximum length is 16K characters.
                 "name": "A String", # [Required] The field name. The name must contain only letters (a-z, A-Z), numbers (0-9), or underscores (_), and must start with a letter or underscore. The maximum length is 128 characters.
                 "mode": "A String", # [Optional] The field mode. Possible values include NULLABLE, REQUIRED and REPEATED. The default value is NULLABLE.
@@ -564,10 +567,13 @@
       "user_email": "A String", # [Output-only] Email address of the user who ran the job.
       "configuration": { # [Required] Describes the job configuration.
         "load": { # [Pick one] Configures a load job.
-          "sourceFormat": "A String", # [Optional] The format of the data files. For CSV files, specify "CSV". For datastore backups, specify "DATASTORE_BACKUP". For newline-delimited JSON, specify "NEWLINE_DELIMITED_JSON". For Avro, specify "AVRO". The default value is CSV.
+          "schemaUpdateOptions": [ # [Experimental] Allows the schema of the desitination table to be updated as a side effect of the load job. Schema update options are supported in two cases: when writeDisposition is WRITE_APPEND; when writeDisposition is WRITE_TRUNCATE and the destination table is a partition of a table, specified by partition decorators. For normal tables, WRITE_TRUNCATE will always overwrite the schema. One or more of the following values are specified: ALLOW_FIELD_ADDITION: allow adding a nullable field to the schema. ALLOW_FIELD_RELAXATION: allow relaxing a required field in the original schema to nullable.
+            "A String",
+          ],
           "encoding": "A String", # [Optional] The character encoding of the data. The supported values are UTF-8 or ISO-8859-1. The default value is UTF-8. BigQuery decodes the data after the raw, binary data has been split using the values of the quote and fieldDelimiter properties.
           "fieldDelimiter": "A String", # [Optional] The separator for fields in a CSV file. The separator can be any ISO-8859-1 single-byte character. To use a character in the range 128-255, you must encode the character as UTF8. BigQuery converts the string to ISO-8859-1 encoding, and then uses the first byte of the encoded string to split the data in its raw, binary state. BigQuery also supports the escape sequence "\t" to specify a tab separator. The default value is a comma (',').
           "autodetect": True or False, # [Experimental] Indicates if we should automatically infer the options and schema for CSV and JSON sources.
+          "sourceFormat": "A String", # [Optional] The format of the data files. For CSV files, specify "CSV". For datastore backups, specify "DATASTORE_BACKUP". For newline-delimited JSON, specify "NEWLINE_DELIMITED_JSON". For Avro, specify "AVRO". The default value is CSV.
           "destinationTable": { # [Required] The destination table to load the data into.
             "projectId": "A String", # [Required] The ID of the project containing this table.
             "tableId": "A String", # [Required] The ID of the table. The ID must contain only letters (a-z, A-Z), numbers (0-9), or underscores (_). The maximum length is 1,024 characters.
@@ -575,9 +581,7 @@
           },
           "writeDisposition": "A String", # [Optional] Specifies the action that occurs if the destination table already exists. The following values are supported: WRITE_TRUNCATE: If the table already exists, BigQuery overwrites the table data. WRITE_APPEND: If the table already exists, BigQuery appends the data to the table. WRITE_EMPTY: If the table already exists and contains data, a 'duplicate' error is returned in the job result. The default value is WRITE_APPEND. Each action is atomic and only occurs if BigQuery is able to complete the job successfully. Creation, truncation and append actions occur as one atomic update upon job completion.
           "maxBadRecords": 42, # [Optional] The maximum number of bad records that BigQuery can ignore when running the job. If the number of bad records exceeds this value, an invalid error is returned in the job result. The default value is 0, which requires that all records are valid.
-          "schemaUpdateOptions": [ # [Experimental] Allows the schema of the desitination table to be updated as a side effect of the load job. Schema update options are supported in two cases: when writeDisposition is WRITE_APPEND; when writeDisposition is WRITE_TRUNCATE and the destination table is a partition of a table, specified by partition decorators. For normal tables, WRITE_TRUNCATE will always overwrite the schema. One or more of the following values are specified: ALLOW_FIELD_ADDITION: allow adding a nullable field to the schema. ALLOW_FIELD_RELAXATION: allow relaxing a required field in the original schema to nullable.
-            "A String",
-          ],
+          "nullMarker": "A String", # [Optional] This string will be interpreted as a null value when it appears in a CSV file. The default value is the empty string. Please refer to the documentation for further information.
           "allowJaggedRows": True or False, # [Optional] Accept rows that are missing trailing optional columns. The missing values are treated as nulls. If false, records with missing trailing columns are treated as bad records, and if there are too many bad records, an invalid error is returned in the job result. The default value is false. Only applicable to CSV, ignored for other formats.
           "skipLeadingRows": 42, # [Optional] The number of rows at the top of a CSV file that BigQuery will skip when loading the data. The default value is 0. This property is useful if you have header rows in the file that should be skipped.
           "sourceUris": [ # [Required] The fully-qualified URIs that point to your data in Google Cloud Storage. Each URI can contain one '*' wildcard character and it must come after the 'bucket' name.
@@ -598,7 +602,7 @@
                 "fields": [ # [Optional] Describes the nested schema fields if the type property is set to RECORD.
                   # Object with schema name: TableFieldSchema
                 ],
-                "type": "A String", # [Required] The field data type. Possible values include STRING, BYTES, INTEGER, FLOAT, BOOLEAN, TIMESTAMP, DATE, TIME, DATETIME, or RECORD (where RECORD indicates that the field contains a nested schema).
+                "type": "A String", # [Required] The field data type. Possible values include STRING, BYTES, INTEGER, INT64 (same as INTEGER), FLOAT, FLOAT64 (same as FLOAT), BOOLEAN, BOOL (same as BOOLEAN), TIMESTAMP, DATE, TIME, DATETIME, RECORD (where RECORD indicates that the field contains a nested schema) or STRUCT (same as RECORD).
                 "description": "A String", # [Optional] The field description. The maximum length is 16K characters.
                 "name": "A String", # [Required] The field name. The name must contain only letters (a-z, A-Z), numbers (0-9), or underscores (_), and must start with a letter or underscore. The maximum length is 128 characters.
                 "mode": "A String", # [Optional] The field mode. Possible values include NULLABLE, REQUIRED and REPEATED. The default value is NULLABLE.
@@ -618,7 +622,7 @@
             "projectId": "A String", # [Optional] The ID of the project containing this dataset.
             "datasetId": "A String", # [Required] A unique ID for this dataset, without the project name. The ID must contain only letters (a-z, A-Z), numbers (0-9), or underscores (_). The maximum length is 1,024 characters.
           },
-          "useLegacySql": True or False, # [Experimental] Specifies whether to use BigQuery's legacy SQL dialect for this query. The default value is true. If set to false, the query will use BigQuery's standard SQL: https://cloud.google.com/bigquery/sql-reference/ When useLegacySql is set to false, the values of allowLargeResults and flattenResults are ignored; query will be run as if allowLargeResults is true and flattenResults is false.
+          "useLegacySql": True or False, # Specifies whether to use BigQuery's legacy SQL dialect for this query. The default value is true. If set to false, the query will use BigQuery's standard SQL: https://cloud.google.com/bigquery/sql-reference/ When useLegacySql is set to false, the values of allowLargeResults and flattenResults are ignored; query will be run as if allowLargeResults is true and flattenResults is false.
           "destinationTable": { # [Optional] Describes the table where the query results should be stored. If not present, a new table will be created to store the results.
             "projectId": "A String", # [Required] The ID of the project containing this table.
             "tableId": "A String", # [Required] The ID of the table. The ID must contain only letters (a-z, A-Z), numbers (0-9), or underscores (_). The maximum length is 1,024 characters.
@@ -714,7 +718,7 @@
                     "fields": [ # [Optional] Describes the nested schema fields if the type property is set to RECORD.
                       # Object with schema name: TableFieldSchema
                     ],
-                    "type": "A String", # [Required] The field data type. Possible values include STRING, BYTES, INTEGER, FLOAT, BOOLEAN, TIMESTAMP, DATE, TIME, DATETIME, or RECORD (where RECORD indicates that the field contains a nested schema).
+                    "type": "A String", # [Required] The field data type. Possible values include STRING, BYTES, INTEGER, INT64 (same as INTEGER), FLOAT, FLOAT64 (same as FLOAT), BOOLEAN, BOOL (same as BOOLEAN), TIMESTAMP, DATE, TIME, DATETIME, RECORD (where RECORD indicates that the field contains a nested schema) or STRUCT (same as RECORD).
                     "description": "A String", # [Optional] The field description. The maximum length is 16K characters.
                     "name": "A String", # [Required] The field name. The name must contain only letters (a-z, A-Z), numbers (0-9), or underscores (_), and must start with a letter or underscore. The maximum length is 128 characters.
                     "mode": "A String", # [Optional] The field mode. Possible values include NULLABLE, REQUIRED and REPEATED. The default value is NULLABLE.
@@ -818,7 +822,7 @@
           "fields": [ # [Optional] Describes the nested schema fields if the type property is set to RECORD.
             # Object with schema name: TableFieldSchema
           ],
-          "type": "A String", # [Required] The field data type. Possible values include STRING, BYTES, INTEGER, FLOAT, BOOLEAN, TIMESTAMP, DATE, TIME, DATETIME, or RECORD (where RECORD indicates that the field contains a nested schema).
+          "type": "A String", # [Required] The field data type. Possible values include STRING, BYTES, INTEGER, INT64 (same as INTEGER), FLOAT, FLOAT64 (same as FLOAT), BOOLEAN, BOOL (same as BOOLEAN), TIMESTAMP, DATE, TIME, DATETIME, RECORD (where RECORD indicates that the field contains a nested schema) or STRUCT (same as RECORD).
           "description": "A String", # [Optional] The field description. The maximum length is 16K characters.
           "name": "A String", # [Required] The field name. The name must contain only letters (a-z, A-Z), numbers (0-9), or underscores (_), and must start with a letter or underscore. The maximum length is 128 characters.
           "mode": "A String", # [Optional] The field mode. Possible values include NULLABLE, REQUIRED and REPEATED. The default value is NULLABLE.
@@ -829,7 +833,7 @@
 </div>
 
 <div class="method">
-    <code class="details" id="insert">insert(projectId, body=None, media_body=None)</code>
+    <code class="details" id="insert">insert(projectId, body=None, media_body=None, media_mime_type=None)</code>
   <pre>Starts a new asynchronous job. Requires the Can View project role.
 
 Args:
@@ -891,6 +895,7 @@
             "name": "A String", # Human-readable name for stage.
           },
         ],
+        "statementType": "A String", # [Output-only, Experimental] The type of query statement, if valid.
         "totalBytesBilled": "A String", # [Output-only] Total bytes billed for the job.
         "totalBytesProcessed": "A String", # [Output-only] Total bytes processed for the job.
         "cacheHit": True or False, # [Output-only] Whether the query result was fetched from the query cache.
@@ -934,7 +939,7 @@
               "fields": [ # [Optional] Describes the nested schema fields if the type property is set to RECORD.
                 # Object with schema name: TableFieldSchema
               ],
-              "type": "A String", # [Required] The field data type. Possible values include STRING, BYTES, INTEGER, FLOAT, BOOLEAN, TIMESTAMP, DATE, TIME, DATETIME, or RECORD (where RECORD indicates that the field contains a nested schema).
+              "type": "A String", # [Required] The field data type. Possible values include STRING, BYTES, INTEGER, INT64 (same as INTEGER), FLOAT, FLOAT64 (same as FLOAT), BOOLEAN, BOOL (same as BOOLEAN), TIMESTAMP, DATE, TIME, DATETIME, RECORD (where RECORD indicates that the field contains a nested schema) or STRUCT (same as RECORD).
               "description": "A String", # [Optional] The field description. The maximum length is 16K characters.
               "name": "A String", # [Required] The field name. The name must contain only letters (a-z, A-Z), numbers (0-9), or underscores (_), and must start with a letter or underscore. The maximum length is 128 characters.
               "mode": "A String", # [Optional] The field mode. Possible values include NULLABLE, REQUIRED and REPEATED. The default value is NULLABLE.
@@ -957,10 +962,13 @@
     "user_email": "A String", # [Output-only] Email address of the user who ran the job.
     "configuration": { # [Required] Describes the job configuration.
       "load": { # [Pick one] Configures a load job.
-        "sourceFormat": "A String", # [Optional] The format of the data files. For CSV files, specify "CSV". For datastore backups, specify "DATASTORE_BACKUP". For newline-delimited JSON, specify "NEWLINE_DELIMITED_JSON". For Avro, specify "AVRO". The default value is CSV.
+        "schemaUpdateOptions": [ # [Experimental] Allows the schema of the desitination table to be updated as a side effect of the load job. Schema update options are supported in two cases: when writeDisposition is WRITE_APPEND; when writeDisposition is WRITE_TRUNCATE and the destination table is a partition of a table, specified by partition decorators. For normal tables, WRITE_TRUNCATE will always overwrite the schema. One or more of the following values are specified: ALLOW_FIELD_ADDITION: allow adding a nullable field to the schema. ALLOW_FIELD_RELAXATION: allow relaxing a required field in the original schema to nullable.
+          "A String",
+        ],
         "encoding": "A String", # [Optional] The character encoding of the data. The supported values are UTF-8 or ISO-8859-1. The default value is UTF-8. BigQuery decodes the data after the raw, binary data has been split using the values of the quote and fieldDelimiter properties.
         "fieldDelimiter": "A String", # [Optional] The separator for fields in a CSV file. The separator can be any ISO-8859-1 single-byte character. To use a character in the range 128-255, you must encode the character as UTF8. BigQuery converts the string to ISO-8859-1 encoding, and then uses the first byte of the encoded string to split the data in its raw, binary state. BigQuery also supports the escape sequence "\t" to specify a tab separator. The default value is a comma (',').
         "autodetect": True or False, # [Experimental] Indicates if we should automatically infer the options and schema for CSV and JSON sources.
+        "sourceFormat": "A String", # [Optional] The format of the data files. For CSV files, specify "CSV". For datastore backups, specify "DATASTORE_BACKUP". For newline-delimited JSON, specify "NEWLINE_DELIMITED_JSON". For Avro, specify "AVRO". The default value is CSV.
         "destinationTable": { # [Required] The destination table to load the data into.
           "projectId": "A String", # [Required] The ID of the project containing this table.
           "tableId": "A String", # [Required] The ID of the table. The ID must contain only letters (a-z, A-Z), numbers (0-9), or underscores (_). The maximum length is 1,024 characters.
@@ -968,9 +976,7 @@
         },
         "writeDisposition": "A String", # [Optional] Specifies the action that occurs if the destination table already exists. The following values are supported: WRITE_TRUNCATE: If the table already exists, BigQuery overwrites the table data. WRITE_APPEND: If the table already exists, BigQuery appends the data to the table. WRITE_EMPTY: If the table already exists and contains data, a 'duplicate' error is returned in the job result. The default value is WRITE_APPEND. Each action is atomic and only occurs if BigQuery is able to complete the job successfully. Creation, truncation and append actions occur as one atomic update upon job completion.
         "maxBadRecords": 42, # [Optional] The maximum number of bad records that BigQuery can ignore when running the job. If the number of bad records exceeds this value, an invalid error is returned in the job result. The default value is 0, which requires that all records are valid.
-        "schemaUpdateOptions": [ # [Experimental] Allows the schema of the desitination table to be updated as a side effect of the load job. Schema update options are supported in two cases: when writeDisposition is WRITE_APPEND; when writeDisposition is WRITE_TRUNCATE and the destination table is a partition of a table, specified by partition decorators. For normal tables, WRITE_TRUNCATE will always overwrite the schema. One or more of the following values are specified: ALLOW_FIELD_ADDITION: allow adding a nullable field to the schema. ALLOW_FIELD_RELAXATION: allow relaxing a required field in the original schema to nullable.
-          "A String",
-        ],
+        "nullMarker": "A String", # [Optional] This string will be interpreted as a null value when it appears in a CSV file. The default value is the empty string. Please refer to the documentation for further information.
         "allowJaggedRows": True or False, # [Optional] Accept rows that are missing trailing optional columns. The missing values are treated as nulls. If false, records with missing trailing columns are treated as bad records, and if there are too many bad records, an invalid error is returned in the job result. The default value is false. Only applicable to CSV, ignored for other formats.
         "skipLeadingRows": 42, # [Optional] The number of rows at the top of a CSV file that BigQuery will skip when loading the data. The default value is 0. This property is useful if you have header rows in the file that should be skipped.
         "sourceUris": [ # [Required] The fully-qualified URIs that point to your data in Google Cloud Storage. Each URI can contain one '*' wildcard character and it must come after the 'bucket' name.
@@ -991,7 +997,7 @@
               "fields": [ # [Optional] Describes the nested schema fields if the type property is set to RECORD.
                 # Object with schema name: TableFieldSchema
               ],
-              "type": "A String", # [Required] The field data type. Possible values include STRING, BYTES, INTEGER, FLOAT, BOOLEAN, TIMESTAMP, DATE, TIME, DATETIME, or RECORD (where RECORD indicates that the field contains a nested schema).
+              "type": "A String", # [Required] The field data type. Possible values include STRING, BYTES, INTEGER, INT64 (same as INTEGER), FLOAT, FLOAT64 (same as FLOAT), BOOLEAN, BOOL (same as BOOLEAN), TIMESTAMP, DATE, TIME, DATETIME, RECORD (where RECORD indicates that the field contains a nested schema) or STRUCT (same as RECORD).
               "description": "A String", # [Optional] The field description. The maximum length is 16K characters.
               "name": "A String", # [Required] The field name. The name must contain only letters (a-z, A-Z), numbers (0-9), or underscores (_), and must start with a letter or underscore. The maximum length is 128 characters.
               "mode": "A String", # [Optional] The field mode. Possible values include NULLABLE, REQUIRED and REPEATED. The default value is NULLABLE.
@@ -1011,7 +1017,7 @@
           "projectId": "A String", # [Optional] The ID of the project containing this dataset.
           "datasetId": "A String", # [Required] A unique ID for this dataset, without the project name. The ID must contain only letters (a-z, A-Z), numbers (0-9), or underscores (_). The maximum length is 1,024 characters.
         },
-        "useLegacySql": True or False, # [Experimental] Specifies whether to use BigQuery's legacy SQL dialect for this query. The default value is true. If set to false, the query will use BigQuery's standard SQL: https://cloud.google.com/bigquery/sql-reference/ When useLegacySql is set to false, the values of allowLargeResults and flattenResults are ignored; query will be run as if allowLargeResults is true and flattenResults is false.
+        "useLegacySql": True or False, # Specifies whether to use BigQuery's legacy SQL dialect for this query. The default value is true. If set to false, the query will use BigQuery's standard SQL: https://cloud.google.com/bigquery/sql-reference/ When useLegacySql is set to false, the values of allowLargeResults and flattenResults are ignored; query will be run as if allowLargeResults is true and flattenResults is false.
         "destinationTable": { # [Optional] Describes the table where the query results should be stored. If not present, a new table will be created to store the results.
           "projectId": "A String", # [Required] The ID of the project containing this table.
           "tableId": "A String", # [Required] The ID of the table. The ID must contain only letters (a-z, A-Z), numbers (0-9), or underscores (_). The maximum length is 1,024 characters.
@@ -1107,7 +1113,7 @@
                   "fields": [ # [Optional] Describes the nested schema fields if the type property is set to RECORD.
                     # Object with schema name: TableFieldSchema
                   ],
-                  "type": "A String", # [Required] The field data type. Possible values include STRING, BYTES, INTEGER, FLOAT, BOOLEAN, TIMESTAMP, DATE, TIME, DATETIME, or RECORD (where RECORD indicates that the field contains a nested schema).
+                  "type": "A String", # [Required] The field data type. Possible values include STRING, BYTES, INTEGER, INT64 (same as INTEGER), FLOAT, FLOAT64 (same as FLOAT), BOOLEAN, BOOL (same as BOOLEAN), TIMESTAMP, DATE, TIME, DATETIME, RECORD (where RECORD indicates that the field contains a nested schema) or STRUCT (same as RECORD).
                   "description": "A String", # [Optional] The field description. The maximum length is 16K characters.
                   "name": "A String", # [Required] The field name. The name must contain only letters (a-z, A-Z), numbers (0-9), or underscores (_), and must start with a letter or underscore. The maximum length is 128 characters.
                   "mode": "A String", # [Optional] The field mode. Possible values include NULLABLE, REQUIRED and REPEATED. The default value is NULLABLE.
@@ -1160,6 +1166,7 @@
   }
 
   media_body: string, The filename of the media request body, or an instance of a MediaUpload object.
+  media_mime_type: string, The MIME type of the media request body, or an instance of a MediaUpload object.
 
 Returns:
   An object of the form:
@@ -1218,6 +1225,7 @@
               "name": "A String", # Human-readable name for stage.
             },
           ],
+          "statementType": "A String", # [Output-only, Experimental] The type of query statement, if valid.
           "totalBytesBilled": "A String", # [Output-only] Total bytes billed for the job.
           "totalBytesProcessed": "A String", # [Output-only] Total bytes processed for the job.
           "cacheHit": True or False, # [Output-only] Whether the query result was fetched from the query cache.
@@ -1261,7 +1269,7 @@
                 "fields": [ # [Optional] Describes the nested schema fields if the type property is set to RECORD.
                   # Object with schema name: TableFieldSchema
                 ],
-                "type": "A String", # [Required] The field data type. Possible values include STRING, BYTES, INTEGER, FLOAT, BOOLEAN, TIMESTAMP, DATE, TIME, DATETIME, or RECORD (where RECORD indicates that the field contains a nested schema).
+                "type": "A String", # [Required] The field data type. Possible values include STRING, BYTES, INTEGER, INT64 (same as INTEGER), FLOAT, FLOAT64 (same as FLOAT), BOOLEAN, BOOL (same as BOOLEAN), TIMESTAMP, DATE, TIME, DATETIME, RECORD (where RECORD indicates that the field contains a nested schema) or STRUCT (same as RECORD).
                 "description": "A String", # [Optional] The field description. The maximum length is 16K characters.
                 "name": "A String", # [Required] The field name. The name must contain only letters (a-z, A-Z), numbers (0-9), or underscores (_), and must start with a letter or underscore. The maximum length is 128 characters.
                 "mode": "A String", # [Optional] The field mode. Possible values include NULLABLE, REQUIRED and REPEATED. The default value is NULLABLE.
@@ -1284,10 +1292,13 @@
       "user_email": "A String", # [Output-only] Email address of the user who ran the job.
       "configuration": { # [Required] Describes the job configuration.
         "load": { # [Pick one] Configures a load job.
-          "sourceFormat": "A String", # [Optional] The format of the data files. For CSV files, specify "CSV". For datastore backups, specify "DATASTORE_BACKUP". For newline-delimited JSON, specify "NEWLINE_DELIMITED_JSON". For Avro, specify "AVRO". The default value is CSV.
+          "schemaUpdateOptions": [ # [Experimental] Allows the schema of the desitination table to be updated as a side effect of the load job. Schema update options are supported in two cases: when writeDisposition is WRITE_APPEND; when writeDisposition is WRITE_TRUNCATE and the destination table is a partition of a table, specified by partition decorators. For normal tables, WRITE_TRUNCATE will always overwrite the schema. One or more of the following values are specified: ALLOW_FIELD_ADDITION: allow adding a nullable field to the schema. ALLOW_FIELD_RELAXATION: allow relaxing a required field in the original schema to nullable.
+            "A String",
+          ],
           "encoding": "A String", # [Optional] The character encoding of the data. The supported values are UTF-8 or ISO-8859-1. The default value is UTF-8. BigQuery decodes the data after the raw, binary data has been split using the values of the quote and fieldDelimiter properties.
           "fieldDelimiter": "A String", # [Optional] The separator for fields in a CSV file. The separator can be any ISO-8859-1 single-byte character. To use a character in the range 128-255, you must encode the character as UTF8. BigQuery converts the string to ISO-8859-1 encoding, and then uses the first byte of the encoded string to split the data in its raw, binary state. BigQuery also supports the escape sequence "\t" to specify a tab separator. The default value is a comma (',').
           "autodetect": True or False, # [Experimental] Indicates if we should automatically infer the options and schema for CSV and JSON sources.
+          "sourceFormat": "A String", # [Optional] The format of the data files. For CSV files, specify "CSV". For datastore backups, specify "DATASTORE_BACKUP". For newline-delimited JSON, specify "NEWLINE_DELIMITED_JSON". For Avro, specify "AVRO". The default value is CSV.
           "destinationTable": { # [Required] The destination table to load the data into.
             "projectId": "A String", # [Required] The ID of the project containing this table.
             "tableId": "A String", # [Required] The ID of the table. The ID must contain only letters (a-z, A-Z), numbers (0-9), or underscores (_). The maximum length is 1,024 characters.
@@ -1295,9 +1306,7 @@
           },
           "writeDisposition": "A String", # [Optional] Specifies the action that occurs if the destination table already exists. The following values are supported: WRITE_TRUNCATE: If the table already exists, BigQuery overwrites the table data. WRITE_APPEND: If the table already exists, BigQuery appends the data to the table. WRITE_EMPTY: If the table already exists and contains data, a 'duplicate' error is returned in the job result. The default value is WRITE_APPEND. Each action is atomic and only occurs if BigQuery is able to complete the job successfully. Creation, truncation and append actions occur as one atomic update upon job completion.
           "maxBadRecords": 42, # [Optional] The maximum number of bad records that BigQuery can ignore when running the job. If the number of bad records exceeds this value, an invalid error is returned in the job result. The default value is 0, which requires that all records are valid.
-          "schemaUpdateOptions": [ # [Experimental] Allows the schema of the desitination table to be updated as a side effect of the load job. Schema update options are supported in two cases: when writeDisposition is WRITE_APPEND; when writeDisposition is WRITE_TRUNCATE and the destination table is a partition of a table, specified by partition decorators. For normal tables, WRITE_TRUNCATE will always overwrite the schema. One or more of the following values are specified: ALLOW_FIELD_ADDITION: allow adding a nullable field to the schema. ALLOW_FIELD_RELAXATION: allow relaxing a required field in the original schema to nullable.
-            "A String",
-          ],
+          "nullMarker": "A String", # [Optional] This string will be interpreted as a null value when it appears in a CSV file. The default value is the empty string. Please refer to the documentation for further information.
           "allowJaggedRows": True or False, # [Optional] Accept rows that are missing trailing optional columns. The missing values are treated as nulls. If false, records with missing trailing columns are treated as bad records, and if there are too many bad records, an invalid error is returned in the job result. The default value is false. Only applicable to CSV, ignored for other formats.
           "skipLeadingRows": 42, # [Optional] The number of rows at the top of a CSV file that BigQuery will skip when loading the data. The default value is 0. This property is useful if you have header rows in the file that should be skipped.
           "sourceUris": [ # [Required] The fully-qualified URIs that point to your data in Google Cloud Storage. Each URI can contain one '*' wildcard character and it must come after the 'bucket' name.
@@ -1318,7 +1327,7 @@
                 "fields": [ # [Optional] Describes the nested schema fields if the type property is set to RECORD.
                   # Object with schema name: TableFieldSchema
                 ],
-                "type": "A String", # [Required] The field data type. Possible values include STRING, BYTES, INTEGER, FLOAT, BOOLEAN, TIMESTAMP, DATE, TIME, DATETIME, or RECORD (where RECORD indicates that the field contains a nested schema).
+                "type": "A String", # [Required] The field data type. Possible values include STRING, BYTES, INTEGER, INT64 (same as INTEGER), FLOAT, FLOAT64 (same as FLOAT), BOOLEAN, BOOL (same as BOOLEAN), TIMESTAMP, DATE, TIME, DATETIME, RECORD (where RECORD indicates that the field contains a nested schema) or STRUCT (same as RECORD).
                 "description": "A String", # [Optional] The field description. The maximum length is 16K characters.
                 "name": "A String", # [Required] The field name. The name must contain only letters (a-z, A-Z), numbers (0-9), or underscores (_), and must start with a letter or underscore. The maximum length is 128 characters.
                 "mode": "A String", # [Optional] The field mode. Possible values include NULLABLE, REQUIRED and REPEATED. The default value is NULLABLE.
@@ -1338,7 +1347,7 @@
             "projectId": "A String", # [Optional] The ID of the project containing this dataset.
             "datasetId": "A String", # [Required] A unique ID for this dataset, without the project name. The ID must contain only letters (a-z, A-Z), numbers (0-9), or underscores (_). The maximum length is 1,024 characters.
           },
-          "useLegacySql": True or False, # [Experimental] Specifies whether to use BigQuery's legacy SQL dialect for this query. The default value is true. If set to false, the query will use BigQuery's standard SQL: https://cloud.google.com/bigquery/sql-reference/ When useLegacySql is set to false, the values of allowLargeResults and flattenResults are ignored; query will be run as if allowLargeResults is true and flattenResults is false.
+          "useLegacySql": True or False, # Specifies whether to use BigQuery's legacy SQL dialect for this query. The default value is true. If set to false, the query will use BigQuery's standard SQL: https://cloud.google.com/bigquery/sql-reference/ When useLegacySql is set to false, the values of allowLargeResults and flattenResults are ignored; query will be run as if allowLargeResults is true and flattenResults is false.
           "destinationTable": { # [Optional] Describes the table where the query results should be stored. If not present, a new table will be created to store the results.
             "projectId": "A String", # [Required] The ID of the project containing this table.
             "tableId": "A String", # [Required] The ID of the table. The ID must contain only letters (a-z, A-Z), numbers (0-9), or underscores (_). The maximum length is 1,024 characters.
@@ -1434,7 +1443,7 @@
                     "fields": [ # [Optional] Describes the nested schema fields if the type property is set to RECORD.
                       # Object with schema name: TableFieldSchema
                     ],
-                    "type": "A String", # [Required] The field data type. Possible values include STRING, BYTES, INTEGER, FLOAT, BOOLEAN, TIMESTAMP, DATE, TIME, DATETIME, or RECORD (where RECORD indicates that the field contains a nested schema).
+                    "type": "A String", # [Required] The field data type. Possible values include STRING, BYTES, INTEGER, INT64 (same as INTEGER), FLOAT, FLOAT64 (same as FLOAT), BOOLEAN, BOOL (same as BOOLEAN), TIMESTAMP, DATE, TIME, DATETIME, RECORD (where RECORD indicates that the field contains a nested schema) or STRUCT (same as RECORD).
                     "description": "A String", # [Optional] The field description. The maximum length is 16K characters.
                     "name": "A String", # [Required] The field name. The name must contain only letters (a-z, A-Z), numbers (0-9), or underscores (_), and must start with a letter or underscore. The maximum length is 128 characters.
                     "mode": "A String", # [Optional] The field mode. Possible values include NULLABLE, REQUIRED and REPEATED. The default value is NULLABLE.
@@ -1568,6 +1577,7 @@
                 "name": "A String", # Human-readable name for stage.
               },
             ],
+            "statementType": "A String", # [Output-only, Experimental] The type of query statement, if valid.
             "totalBytesBilled": "A String", # [Output-only] Total bytes billed for the job.
             "totalBytesProcessed": "A String", # [Output-only] Total bytes processed for the job.
             "cacheHit": True or False, # [Output-only] Whether the query result was fetched from the query cache.
@@ -1611,7 +1621,7 @@
                   "fields": [ # [Optional] Describes the nested schema fields if the type property is set to RECORD.
                     # Object with schema name: TableFieldSchema
                   ],
-                  "type": "A String", # [Required] The field data type. Possible values include STRING, BYTES, INTEGER, FLOAT, BOOLEAN, TIMESTAMP, DATE, TIME, DATETIME, or RECORD (where RECORD indicates that the field contains a nested schema).
+                  "type": "A String", # [Required] The field data type. Possible values include STRING, BYTES, INTEGER, INT64 (same as INTEGER), FLOAT, FLOAT64 (same as FLOAT), BOOLEAN, BOOL (same as BOOLEAN), TIMESTAMP, DATE, TIME, DATETIME, RECORD (where RECORD indicates that the field contains a nested schema) or STRUCT (same as RECORD).
                   "description": "A String", # [Optional] The field description. The maximum length is 16K characters.
                   "name": "A String", # [Required] The field name. The name must contain only letters (a-z, A-Z), numbers (0-9), or underscores (_), and must start with a letter or underscore. The maximum length is 128 characters.
                   "mode": "A String", # [Optional] The field mode. Possible values include NULLABLE, REQUIRED and REPEATED. The default value is NULLABLE.
@@ -1634,10 +1644,13 @@
         "user_email": "A String", # [Full-projection-only] Email address of the user who ran the job.
         "configuration": { # [Full-projection-only] Specifies the job configuration.
           "load": { # [Pick one] Configures a load job.
-            "sourceFormat": "A String", # [Optional] The format of the data files. For CSV files, specify "CSV". For datastore backups, specify "DATASTORE_BACKUP". For newline-delimited JSON, specify "NEWLINE_DELIMITED_JSON". For Avro, specify "AVRO". The default value is CSV.
+            "schemaUpdateOptions": [ # [Experimental] Allows the schema of the desitination table to be updated as a side effect of the load job. Schema update options are supported in two cases: when writeDisposition is WRITE_APPEND; when writeDisposition is WRITE_TRUNCATE and the destination table is a partition of a table, specified by partition decorators. For normal tables, WRITE_TRUNCATE will always overwrite the schema. One or more of the following values are specified: ALLOW_FIELD_ADDITION: allow adding a nullable field to the schema. ALLOW_FIELD_RELAXATION: allow relaxing a required field in the original schema to nullable.
+              "A String",
+            ],
             "encoding": "A String", # [Optional] The character encoding of the data. The supported values are UTF-8 or ISO-8859-1. The default value is UTF-8. BigQuery decodes the data after the raw, binary data has been split using the values of the quote and fieldDelimiter properties.
             "fieldDelimiter": "A String", # [Optional] The separator for fields in a CSV file. The separator can be any ISO-8859-1 single-byte character. To use a character in the range 128-255, you must encode the character as UTF8. BigQuery converts the string to ISO-8859-1 encoding, and then uses the first byte of the encoded string to split the data in its raw, binary state. BigQuery also supports the escape sequence "\t" to specify a tab separator. The default value is a comma (',').
             "autodetect": True or False, # [Experimental] Indicates if we should automatically infer the options and schema for CSV and JSON sources.
+            "sourceFormat": "A String", # [Optional] The format of the data files. For CSV files, specify "CSV". For datastore backups, specify "DATASTORE_BACKUP". For newline-delimited JSON, specify "NEWLINE_DELIMITED_JSON". For Avro, specify "AVRO". The default value is CSV.
             "destinationTable": { # [Required] The destination table to load the data into.
               "projectId": "A String", # [Required] The ID of the project containing this table.
               "tableId": "A String", # [Required] The ID of the table. The ID must contain only letters (a-z, A-Z), numbers (0-9), or underscores (_). The maximum length is 1,024 characters.
@@ -1645,9 +1658,7 @@
             },
             "writeDisposition": "A String", # [Optional] Specifies the action that occurs if the destination table already exists. The following values are supported: WRITE_TRUNCATE: If the table already exists, BigQuery overwrites the table data. WRITE_APPEND: If the table already exists, BigQuery appends the data to the table. WRITE_EMPTY: If the table already exists and contains data, a 'duplicate' error is returned in the job result. The default value is WRITE_APPEND. Each action is atomic and only occurs if BigQuery is able to complete the job successfully. Creation, truncation and append actions occur as one atomic update upon job completion.
             "maxBadRecords": 42, # [Optional] The maximum number of bad records that BigQuery can ignore when running the job. If the number of bad records exceeds this value, an invalid error is returned in the job result. The default value is 0, which requires that all records are valid.
-            "schemaUpdateOptions": [ # [Experimental] Allows the schema of the desitination table to be updated as a side effect of the load job. Schema update options are supported in two cases: when writeDisposition is WRITE_APPEND; when writeDisposition is WRITE_TRUNCATE and the destination table is a partition of a table, specified by partition decorators. For normal tables, WRITE_TRUNCATE will always overwrite the schema. One or more of the following values are specified: ALLOW_FIELD_ADDITION: allow adding a nullable field to the schema. ALLOW_FIELD_RELAXATION: allow relaxing a required field in the original schema to nullable.
-              "A String",
-            ],
+            "nullMarker": "A String", # [Optional] This string will be interpreted as a null value when it appears in a CSV file. The default value is the empty string. Please refer to the documentation for further information.
             "allowJaggedRows": True or False, # [Optional] Accept rows that are missing trailing optional columns. The missing values are treated as nulls. If false, records with missing trailing columns are treated as bad records, and if there are too many bad records, an invalid error is returned in the job result. The default value is false. Only applicable to CSV, ignored for other formats.
             "skipLeadingRows": 42, # [Optional] The number of rows at the top of a CSV file that BigQuery will skip when loading the data. The default value is 0. This property is useful if you have header rows in the file that should be skipped.
             "sourceUris": [ # [Required] The fully-qualified URIs that point to your data in Google Cloud Storage. Each URI can contain one '*' wildcard character and it must come after the 'bucket' name.
@@ -1668,7 +1679,7 @@
                   "fields": [ # [Optional] Describes the nested schema fields if the type property is set to RECORD.
                     # Object with schema name: TableFieldSchema
                   ],
-                  "type": "A String", # [Required] The field data type. Possible values include STRING, BYTES, INTEGER, FLOAT, BOOLEAN, TIMESTAMP, DATE, TIME, DATETIME, or RECORD (where RECORD indicates that the field contains a nested schema).
+                  "type": "A String", # [Required] The field data type. Possible values include STRING, BYTES, INTEGER, INT64 (same as INTEGER), FLOAT, FLOAT64 (same as FLOAT), BOOLEAN, BOOL (same as BOOLEAN), TIMESTAMP, DATE, TIME, DATETIME, RECORD (where RECORD indicates that the field contains a nested schema) or STRUCT (same as RECORD).
                   "description": "A String", # [Optional] The field description. The maximum length is 16K characters.
                   "name": "A String", # [Required] The field name. The name must contain only letters (a-z, A-Z), numbers (0-9), or underscores (_), and must start with a letter or underscore. The maximum length is 128 characters.
                   "mode": "A String", # [Optional] The field mode. Possible values include NULLABLE, REQUIRED and REPEATED. The default value is NULLABLE.
@@ -1688,7 +1699,7 @@
               "projectId": "A String", # [Optional] The ID of the project containing this dataset.
               "datasetId": "A String", # [Required] A unique ID for this dataset, without the project name. The ID must contain only letters (a-z, A-Z), numbers (0-9), or underscores (_). The maximum length is 1,024 characters.
             },
-            "useLegacySql": True or False, # [Experimental] Specifies whether to use BigQuery's legacy SQL dialect for this query. The default value is true. If set to false, the query will use BigQuery's standard SQL: https://cloud.google.com/bigquery/sql-reference/ When useLegacySql is set to false, the values of allowLargeResults and flattenResults are ignored; query will be run as if allowLargeResults is true and flattenResults is false.
+            "useLegacySql": True or False, # Specifies whether to use BigQuery's legacy SQL dialect for this query. The default value is true. If set to false, the query will use BigQuery's standard SQL: https://cloud.google.com/bigquery/sql-reference/ When useLegacySql is set to false, the values of allowLargeResults and flattenResults are ignored; query will be run as if allowLargeResults is true and flattenResults is false.
             "destinationTable": { # [Optional] Describes the table where the query results should be stored. If not present, a new table will be created to store the results.
               "projectId": "A String", # [Required] The ID of the project containing this table.
               "tableId": "A String", # [Required] The ID of the table. The ID must contain only letters (a-z, A-Z), numbers (0-9), or underscores (_). The maximum length is 1,024 characters.
@@ -1784,7 +1795,7 @@
                       "fields": [ # [Optional] Describes the nested schema fields if the type property is set to RECORD.
                         # Object with schema name: TableFieldSchema
                       ],
-                      "type": "A String", # [Required] The field data type. Possible values include STRING, BYTES, INTEGER, FLOAT, BOOLEAN, TIMESTAMP, DATE, TIME, DATETIME, or RECORD (where RECORD indicates that the field contains a nested schema).
+                      "type": "A String", # [Required] The field data type. Possible values include STRING, BYTES, INTEGER, INT64 (same as INTEGER), FLOAT, FLOAT64 (same as FLOAT), BOOLEAN, BOOL (same as BOOLEAN), TIMESTAMP, DATE, TIME, DATETIME, RECORD (where RECORD indicates that the field contains a nested schema) or STRUCT (same as RECORD).
                       "description": "A String", # [Optional] The field description. The maximum length is 16K characters.
                       "name": "A String", # [Required] The field name. The name must contain only letters (a-z, A-Z), numbers (0-9), or underscores (_), and must start with a letter or underscore. The maximum length is 128 characters.
                       "mode": "A String", # [Optional] The field mode. Possible values include NULLABLE, REQUIRED and REPEATED. The default value is NULLABLE.
@@ -1877,7 +1888,7 @@
       "projectId": "A String", # [Optional] The ID of the project containing this dataset.
       "datasetId": "A String", # [Required] A unique ID for this dataset, without the project name. The ID must contain only letters (a-z, A-Z), numbers (0-9), or underscores (_). The maximum length is 1,024 characters.
     },
-    "useLegacySql": true, # [Experimental] Specifies whether to use BigQuery's legacy SQL dialect for this query. The default value is true. If set to false, the query will use BigQuery's standard SQL: https://cloud.google.com/bigquery/sql-reference/ When useLegacySql is set to false, the values of allowLargeResults and flattenResults are ignored; query will be run as if allowLargeResults is true and flattenResults is false.
+    "useLegacySql": true, # Specifies whether to use BigQuery's legacy SQL dialect for this query. The default value is true. If set to false, the query will use BigQuery's standard SQL: https://cloud.google.com/bigquery/sql-reference/ When useLegacySql is set to false, the values of allowLargeResults and flattenResults are ignored; query will be run as if allowLargeResults is true and flattenResults is false.
     "maxResults": 42, # [Optional] The maximum number of rows of data to return per page of results. Setting this flag to a small value such as 1000 and then paging through results might improve reliability when the query result set is large. In addition to this limit, responses are also limited to 10 MB. By default, there is no maximum row count, and only the byte limit applies.
     "queryParameters": [ # [Experimental] Query parameters for Standard SQL queries.
       {
@@ -1947,7 +1958,7 @@
           "fields": [ # [Optional] Describes the nested schema fields if the type property is set to RECORD.
             # Object with schema name: TableFieldSchema
           ],
-          "type": "A String", # [Required] The field data type. Possible values include STRING, BYTES, INTEGER, FLOAT, BOOLEAN, TIMESTAMP, DATE, TIME, DATETIME, or RECORD (where RECORD indicates that the field contains a nested schema).
+          "type": "A String", # [Required] The field data type. Possible values include STRING, BYTES, INTEGER, INT64 (same as INTEGER), FLOAT, FLOAT64 (same as FLOAT), BOOLEAN, BOOL (same as BOOLEAN), TIMESTAMP, DATE, TIME, DATETIME, RECORD (where RECORD indicates that the field contains a nested schema) or STRUCT (same as RECORD).
           "description": "A String", # [Optional] The field description. The maximum length is 16K characters.
           "name": "A String", # [Required] The field name. The name must contain only letters (a-z, A-Z), numbers (0-9), or underscores (_), and must start with a letter or underscore. The maximum length is 128 characters.
           "mode": "A String", # [Optional] The field mode. Possible values include NULLABLE, REQUIRED and REPEATED. The default value is NULLABLE.
diff --git a/docs/dyn/bigquery_v2.tables.html b/docs/dyn/bigquery_v2.tables.html
index d0906dc..091ae9a 100644
--- a/docs/dyn/bigquery_v2.tables.html
+++ b/docs/dyn/bigquery_v2.tables.html
@@ -124,15 +124,8 @@
       "lastModifiedTime": "A String", # [Output-only] The time when this table was last modified, in milliseconds since the epoch.
       "description": "A String", # [Optional] A user-friendly description of this table.
       "creationTime": "A String", # [Output-only] The time when this table was created, in milliseconds since the epoch.
-      "view": { # [Optional] The view definition.
-        "query": "A String", # [Required] A query that BigQuery executes when the view is referenced.
-        "useLegacySql": True or False, # [Experimental] Specifies whether to use BigQuery's legacy SQL for this view. The default value is true. If set to false, the view will use BigQuery's standard SQL: https://cloud.google.com/bigquery/sql-reference/ Queries and views that reference this view must use the same flag value.
-        "userDefinedFunctionResources": [ # [Experimental] Describes user-defined function resources used in the query.
-          {
-            "resourceUri": "A String", # [Pick one] A code resource to load from a Google Cloud Storage URI (gs://bucket/path).
-            "inlineCode": "A String", # [Pick one] An inline resource that contains code for a user-defined function (UDF). Providing a inline code resource is equivalent to providing a URI for a file containing the same code.
-          },
-        ],
+      "labels": { # [Experimental] The labels associated with this table. You can use these to organize and group your tables. Label keys and values can be no longer than 63 characters, can only contain letters, numeric characters, underscores and dashes. International characters are allowed. Label values are optional. Label keys must start with a letter and must be unique within a dataset. Both keys and values are additionally constrained to be <= 128 bytes in size.
+        "a_key": "A String",
       },
       "externalDataConfiguration": { # [Optional] Describes the data format, location, and other properties of a table stored outside of BigQuery. By defining these properties, the data source can then be queried as if it were a standard BigQuery table.
         "compression": "A String", # [Optional] The compression type of the data source. Possible values include GZIP and NONE. The default value is NONE. This setting is ignored for Google Cloud Bigtable, Google Cloud Datastore backups and Avro formats.
@@ -182,7 +175,7 @@
               "fields": [ # [Optional] Describes the nested schema fields if the type property is set to RECORD.
                 # Object with schema name: TableFieldSchema
               ],
-              "type": "A String", # [Required] The field data type. Possible values include STRING, BYTES, INTEGER, FLOAT, BOOLEAN, TIMESTAMP, DATE, TIME, DATETIME, or RECORD (where RECORD indicates that the field contains a nested schema).
+              "type": "A String", # [Required] The field data type. Possible values include STRING, BYTES, INTEGER, INT64 (same as INTEGER), FLOAT, FLOAT64 (same as FLOAT), BOOLEAN, BOOL (same as BOOLEAN), TIMESTAMP, DATE, TIME, DATETIME, RECORD (where RECORD indicates that the field contains a nested schema) or STRUCT (same as RECORD).
               "description": "A String", # [Optional] The field description. The maximum length is 16K characters.
               "name": "A String", # [Required] The field name. The name must contain only letters (a-z, A-Z), numbers (0-9), or underscores (_), and must start with a letter or underscore. The maximum length is 128 characters.
               "mode": "A String", # [Optional] The field mode. Possible values include NULLABLE, REQUIRED and REPEATED. The default value is NULLABLE.
@@ -198,6 +191,16 @@
       "numRows": "A String", # [Output-only] The number of rows of data in this table, excluding any data in the streaming buffer.
       "numBytes": "A String", # [Output-only] The size of this table in bytes, excluding any data in the streaming buffer.
       "etag": "A String", # [Output-only] A hash of this resource.
+      "view": { # [Optional] The view definition.
+        "query": "A String", # [Required] A query that BigQuery executes when the view is referenced.
+        "useLegacySql": True or False, # Specifies whether to use BigQuery's legacy SQL for this view. The default value is true. If set to false, the view will use BigQuery's standard SQL: https://cloud.google.com/bigquery/sql-reference/ Queries and views that reference this view must use the same flag value.
+        "userDefinedFunctionResources": [ # [Experimental] Describes user-defined function resources used in the query.
+          {
+            "resourceUri": "A String", # [Pick one] A code resource to load from a Google Cloud Storage URI (gs://bucket/path).
+            "inlineCode": "A String", # [Pick one] An inline resource that contains code for a user-defined function (UDF). Providing a inline code resource is equivalent to providing a URI for a file containing the same code.
+          },
+        ],
+      },
       "location": "A String", # [Output-only] The geographic location where the table resides. This value is inherited from the dataset.
       "streamingBuffer": { # [Output-only] Contains information regarding this table's streaming buffer, if one is present. This field will be absent if the table is not being streamed to or if there is no data in the streaming buffer.
         "estimatedBytes": "A String", # [Output-only] A lower-bound estimate of the number of bytes currently in the streaming buffer.
@@ -216,7 +219,7 @@
             "fields": [ # [Optional] Describes the nested schema fields if the type property is set to RECORD.
               # Object with schema name: TableFieldSchema
             ],
-            "type": "A String", # [Required] The field data type. Possible values include STRING, BYTES, INTEGER, FLOAT, BOOLEAN, TIMESTAMP, DATE, TIME, DATETIME, or RECORD (where RECORD indicates that the field contains a nested schema).
+            "type": "A String", # [Required] The field data type. Possible values include STRING, BYTES, INTEGER, INT64 (same as INTEGER), FLOAT, FLOAT64 (same as FLOAT), BOOLEAN, BOOL (same as BOOLEAN), TIMESTAMP, DATE, TIME, DATETIME, RECORD (where RECORD indicates that the field contains a nested schema) or STRUCT (same as RECORD).
             "description": "A String", # [Optional] The field description. The maximum length is 16K characters.
             "name": "A String", # [Required] The field name. The name must contain only letters (a-z, A-Z), numbers (0-9), or underscores (_), and must start with a letter or underscore. The maximum length is 128 characters.
             "mode": "A String", # [Optional] The field mode. Possible values include NULLABLE, REQUIRED and REPEATED. The default value is NULLABLE.
@@ -245,15 +248,8 @@
     "lastModifiedTime": "A String", # [Output-only] The time when this table was last modified, in milliseconds since the epoch.
     "description": "A String", # [Optional] A user-friendly description of this table.
     "creationTime": "A String", # [Output-only] The time when this table was created, in milliseconds since the epoch.
-    "view": { # [Optional] The view definition.
-      "query": "A String", # [Required] A query that BigQuery executes when the view is referenced.
-      "useLegacySql": True or False, # [Experimental] Specifies whether to use BigQuery's legacy SQL for this view. The default value is true. If set to false, the view will use BigQuery's standard SQL: https://cloud.google.com/bigquery/sql-reference/ Queries and views that reference this view must use the same flag value.
-      "userDefinedFunctionResources": [ # [Experimental] Describes user-defined function resources used in the query.
-        {
-          "resourceUri": "A String", # [Pick one] A code resource to load from a Google Cloud Storage URI (gs://bucket/path).
-          "inlineCode": "A String", # [Pick one] An inline resource that contains code for a user-defined function (UDF). Providing a inline code resource is equivalent to providing a URI for a file containing the same code.
-        },
-      ],
+    "labels": { # [Experimental] The labels associated with this table. You can use these to organize and group your tables. Label keys and values can be no longer than 63 characters, can only contain letters, numeric characters, underscores and dashes. International characters are allowed. Label values are optional. Label keys must start with a letter and must be unique within a dataset. Both keys and values are additionally constrained to be <= 128 bytes in size.
+      "a_key": "A String",
     },
     "externalDataConfiguration": { # [Optional] Describes the data format, location, and other properties of a table stored outside of BigQuery. By defining these properties, the data source can then be queried as if it were a standard BigQuery table.
       "compression": "A String", # [Optional] The compression type of the data source. Possible values include GZIP and NONE. The default value is NONE. This setting is ignored for Google Cloud Bigtable, Google Cloud Datastore backups and Avro formats.
@@ -303,7 +299,7 @@
             "fields": [ # [Optional] Describes the nested schema fields if the type property is set to RECORD.
               # Object with schema name: TableFieldSchema
             ],
-            "type": "A String", # [Required] The field data type. Possible values include STRING, BYTES, INTEGER, FLOAT, BOOLEAN, TIMESTAMP, DATE, TIME, DATETIME, or RECORD (where RECORD indicates that the field contains a nested schema).
+            "type": "A String", # [Required] The field data type. Possible values include STRING, BYTES, INTEGER, INT64 (same as INTEGER), FLOAT, FLOAT64 (same as FLOAT), BOOLEAN, BOOL (same as BOOLEAN), TIMESTAMP, DATE, TIME, DATETIME, RECORD (where RECORD indicates that the field contains a nested schema) or STRUCT (same as RECORD).
             "description": "A String", # [Optional] The field description. The maximum length is 16K characters.
             "name": "A String", # [Required] The field name. The name must contain only letters (a-z, A-Z), numbers (0-9), or underscores (_), and must start with a letter or underscore. The maximum length is 128 characters.
             "mode": "A String", # [Optional] The field mode. Possible values include NULLABLE, REQUIRED and REPEATED. The default value is NULLABLE.
@@ -319,6 +315,16 @@
     "numRows": "A String", # [Output-only] The number of rows of data in this table, excluding any data in the streaming buffer.
     "numBytes": "A String", # [Output-only] The size of this table in bytes, excluding any data in the streaming buffer.
     "etag": "A String", # [Output-only] A hash of this resource.
+    "view": { # [Optional] The view definition.
+      "query": "A String", # [Required] A query that BigQuery executes when the view is referenced.
+      "useLegacySql": True or False, # Specifies whether to use BigQuery's legacy SQL for this view. The default value is true. If set to false, the view will use BigQuery's standard SQL: https://cloud.google.com/bigquery/sql-reference/ Queries and views that reference this view must use the same flag value.
+      "userDefinedFunctionResources": [ # [Experimental] Describes user-defined function resources used in the query.
+        {
+          "resourceUri": "A String", # [Pick one] A code resource to load from a Google Cloud Storage URI (gs://bucket/path).
+          "inlineCode": "A String", # [Pick one] An inline resource that contains code for a user-defined function (UDF). Providing a inline code resource is equivalent to providing a URI for a file containing the same code.
+        },
+      ],
+    },
     "location": "A String", # [Output-only] The geographic location where the table resides. This value is inherited from the dataset.
     "streamingBuffer": { # [Output-only] Contains information regarding this table's streaming buffer, if one is present. This field will be absent if the table is not being streamed to or if there is no data in the streaming buffer.
       "estimatedBytes": "A String", # [Output-only] A lower-bound estimate of the number of bytes currently in the streaming buffer.
@@ -337,7 +343,7 @@
           "fields": [ # [Optional] Describes the nested schema fields if the type property is set to RECORD.
             # Object with schema name: TableFieldSchema
           ],
-          "type": "A String", # [Required] The field data type. Possible values include STRING, BYTES, INTEGER, FLOAT, BOOLEAN, TIMESTAMP, DATE, TIME, DATETIME, or RECORD (where RECORD indicates that the field contains a nested schema).
+          "type": "A String", # [Required] The field data type. Possible values include STRING, BYTES, INTEGER, INT64 (same as INTEGER), FLOAT, FLOAT64 (same as FLOAT), BOOLEAN, BOOL (same as BOOLEAN), TIMESTAMP, DATE, TIME, DATETIME, RECORD (where RECORD indicates that the field contains a nested schema) or STRUCT (same as RECORD).
           "description": "A String", # [Optional] The field description. The maximum length is 16K characters.
           "name": "A String", # [Required] The field name. The name must contain only letters (a-z, A-Z), numbers (0-9), or underscores (_), and must start with a letter or underscore. The maximum length is 128 characters.
           "mode": "A String", # [Optional] The field mode. Possible values include NULLABLE, REQUIRED and REPEATED. The default value is NULLABLE.
@@ -359,15 +365,8 @@
       "lastModifiedTime": "A String", # [Output-only] The time when this table was last modified, in milliseconds since the epoch.
       "description": "A String", # [Optional] A user-friendly description of this table.
       "creationTime": "A String", # [Output-only] The time when this table was created, in milliseconds since the epoch.
-      "view": { # [Optional] The view definition.
-        "query": "A String", # [Required] A query that BigQuery executes when the view is referenced.
-        "useLegacySql": True or False, # [Experimental] Specifies whether to use BigQuery's legacy SQL for this view. The default value is true. If set to false, the view will use BigQuery's standard SQL: https://cloud.google.com/bigquery/sql-reference/ Queries and views that reference this view must use the same flag value.
-        "userDefinedFunctionResources": [ # [Experimental] Describes user-defined function resources used in the query.
-          {
-            "resourceUri": "A String", # [Pick one] A code resource to load from a Google Cloud Storage URI (gs://bucket/path).
-            "inlineCode": "A String", # [Pick one] An inline resource that contains code for a user-defined function (UDF). Providing a inline code resource is equivalent to providing a URI for a file containing the same code.
-          },
-        ],
+      "labels": { # [Experimental] The labels associated with this table. You can use these to organize and group your tables. Label keys and values can be no longer than 63 characters, can only contain letters, numeric characters, underscores and dashes. International characters are allowed. Label values are optional. Label keys must start with a letter and must be unique within a dataset. Both keys and values are additionally constrained to be <= 128 bytes in size.
+        "a_key": "A String",
       },
       "externalDataConfiguration": { # [Optional] Describes the data format, location, and other properties of a table stored outside of BigQuery. By defining these properties, the data source can then be queried as if it were a standard BigQuery table.
         "compression": "A String", # [Optional] The compression type of the data source. Possible values include GZIP and NONE. The default value is NONE. This setting is ignored for Google Cloud Bigtable, Google Cloud Datastore backups and Avro formats.
@@ -417,7 +416,7 @@
               "fields": [ # [Optional] Describes the nested schema fields if the type property is set to RECORD.
                 # Object with schema name: TableFieldSchema
               ],
-              "type": "A String", # [Required] The field data type. Possible values include STRING, BYTES, INTEGER, FLOAT, BOOLEAN, TIMESTAMP, DATE, TIME, DATETIME, or RECORD (where RECORD indicates that the field contains a nested schema).
+              "type": "A String", # [Required] The field data type. Possible values include STRING, BYTES, INTEGER, INT64 (same as INTEGER), FLOAT, FLOAT64 (same as FLOAT), BOOLEAN, BOOL (same as BOOLEAN), TIMESTAMP, DATE, TIME, DATETIME, RECORD (where RECORD indicates that the field contains a nested schema) or STRUCT (same as RECORD).
               "description": "A String", # [Optional] The field description. The maximum length is 16K characters.
               "name": "A String", # [Required] The field name. The name must contain only letters (a-z, A-Z), numbers (0-9), or underscores (_), and must start with a letter or underscore. The maximum length is 128 characters.
               "mode": "A String", # [Optional] The field mode. Possible values include NULLABLE, REQUIRED and REPEATED. The default value is NULLABLE.
@@ -433,6 +432,16 @@
       "numRows": "A String", # [Output-only] The number of rows of data in this table, excluding any data in the streaming buffer.
       "numBytes": "A String", # [Output-only] The size of this table in bytes, excluding any data in the streaming buffer.
       "etag": "A String", # [Output-only] A hash of this resource.
+      "view": { # [Optional] The view definition.
+        "query": "A String", # [Required] A query that BigQuery executes when the view is referenced.
+        "useLegacySql": True or False, # Specifies whether to use BigQuery's legacy SQL for this view. The default value is true. If set to false, the view will use BigQuery's standard SQL: https://cloud.google.com/bigquery/sql-reference/ Queries and views that reference this view must use the same flag value.
+        "userDefinedFunctionResources": [ # [Experimental] Describes user-defined function resources used in the query.
+          {
+            "resourceUri": "A String", # [Pick one] A code resource to load from a Google Cloud Storage URI (gs://bucket/path).
+            "inlineCode": "A String", # [Pick one] An inline resource that contains code for a user-defined function (UDF). Providing a inline code resource is equivalent to providing a URI for a file containing the same code.
+          },
+        ],
+      },
       "location": "A String", # [Output-only] The geographic location where the table resides. This value is inherited from the dataset.
       "streamingBuffer": { # [Output-only] Contains information regarding this table's streaming buffer, if one is present. This field will be absent if the table is not being streamed to or if there is no data in the streaming buffer.
         "estimatedBytes": "A String", # [Output-only] A lower-bound estimate of the number of bytes currently in the streaming buffer.
@@ -451,7 +460,7 @@
             "fields": [ # [Optional] Describes the nested schema fields if the type property is set to RECORD.
               # Object with schema name: TableFieldSchema
             ],
-            "type": "A String", # [Required] The field data type. Possible values include STRING, BYTES, INTEGER, FLOAT, BOOLEAN, TIMESTAMP, DATE, TIME, DATETIME, or RECORD (where RECORD indicates that the field contains a nested schema).
+            "type": "A String", # [Required] The field data type. Possible values include STRING, BYTES, INTEGER, INT64 (same as INTEGER), FLOAT, FLOAT64 (same as FLOAT), BOOLEAN, BOOL (same as BOOLEAN), TIMESTAMP, DATE, TIME, DATETIME, RECORD (where RECORD indicates that the field contains a nested schema) or STRUCT (same as RECORD).
             "description": "A String", # [Optional] The field description. The maximum length is 16K characters.
             "name": "A String", # [Required] The field name. The name must contain only letters (a-z, A-Z), numbers (0-9), or underscores (_), and must start with a letter or underscore. The maximum length is 128 characters.
             "mode": "A String", # [Optional] The field mode. Possible values include NULLABLE, REQUIRED and REPEATED. The default value is NULLABLE.
@@ -482,15 +491,18 @@
     "nextPageToken": "A String", # A token to request the next page of results.
     "tables": [ # Tables in the requested dataset.
       {
-        "friendlyName": "A String", # The user-friendly name for this table.
         "kind": "bigquery#table", # The resource type.
-        "type": "A String", # The type of table. Possible values are: TABLE, VIEW.
-        "id": "A String", # An opaque ID of the table
+        "labels": { # [Experimental] The labels associated with this table. You can use these to organize and group your tables.
+          "a_key": "A String",
+        },
         "tableReference": { # A reference uniquely identifying the table.
           "projectId": "A String", # [Required] The ID of the project containing this table.
           "tableId": "A String", # [Required] The ID of the table. The ID must contain only letters (a-z, A-Z), numbers (0-9), or underscores (_). The maximum length is 1,024 characters.
           "datasetId": "A String", # [Required] The ID of the dataset containing this table.
         },
+        "friendlyName": "A String", # The user-friendly name for this table.
+        "type": "A String", # The type of table. Possible values are: TABLE, VIEW.
+        "id": "A String", # An opaque ID of the table
       },
     ],
     "kind": "bigquery#tableList", # The type of list.
@@ -529,15 +541,8 @@
     "lastModifiedTime": "A String", # [Output-only] The time when this table was last modified, in milliseconds since the epoch.
     "description": "A String", # [Optional] A user-friendly description of this table.
     "creationTime": "A String", # [Output-only] The time when this table was created, in milliseconds since the epoch.
-    "view": { # [Optional] The view definition.
-      "query": "A String", # [Required] A query that BigQuery executes when the view is referenced.
-      "useLegacySql": True or False, # [Experimental] Specifies whether to use BigQuery's legacy SQL for this view. The default value is true. If set to false, the view will use BigQuery's standard SQL: https://cloud.google.com/bigquery/sql-reference/ Queries and views that reference this view must use the same flag value.
-      "userDefinedFunctionResources": [ # [Experimental] Describes user-defined function resources used in the query.
-        {
-          "resourceUri": "A String", # [Pick one] A code resource to load from a Google Cloud Storage URI (gs://bucket/path).
-          "inlineCode": "A String", # [Pick one] An inline resource that contains code for a user-defined function (UDF). Providing a inline code resource is equivalent to providing a URI for a file containing the same code.
-        },
-      ],
+    "labels": { # [Experimental] The labels associated with this table. You can use these to organize and group your tables. Label keys and values can be no longer than 63 characters, can only contain letters, numeric characters, underscores and dashes. International characters are allowed. Label values are optional. Label keys must start with a letter and must be unique within a dataset. Both keys and values are additionally constrained to be <= 128 bytes in size.
+      "a_key": "A String",
     },
     "externalDataConfiguration": { # [Optional] Describes the data format, location, and other properties of a table stored outside of BigQuery. By defining these properties, the data source can then be queried as if it were a standard BigQuery table.
       "compression": "A String", # [Optional] The compression type of the data source. Possible values include GZIP and NONE. The default value is NONE. This setting is ignored for Google Cloud Bigtable, Google Cloud Datastore backups and Avro formats.
@@ -587,7 +592,7 @@
             "fields": [ # [Optional] Describes the nested schema fields if the type property is set to RECORD.
               # Object with schema name: TableFieldSchema
             ],
-            "type": "A String", # [Required] The field data type. Possible values include STRING, BYTES, INTEGER, FLOAT, BOOLEAN, TIMESTAMP, DATE, TIME, DATETIME, or RECORD (where RECORD indicates that the field contains a nested schema).
+            "type": "A String", # [Required] The field data type. Possible values include STRING, BYTES, INTEGER, INT64 (same as INTEGER), FLOAT, FLOAT64 (same as FLOAT), BOOLEAN, BOOL (same as BOOLEAN), TIMESTAMP, DATE, TIME, DATETIME, RECORD (where RECORD indicates that the field contains a nested schema) or STRUCT (same as RECORD).
             "description": "A String", # [Optional] The field description. The maximum length is 16K characters.
             "name": "A String", # [Required] The field name. The name must contain only letters (a-z, A-Z), numbers (0-9), or underscores (_), and must start with a letter or underscore. The maximum length is 128 characters.
             "mode": "A String", # [Optional] The field mode. Possible values include NULLABLE, REQUIRED and REPEATED. The default value is NULLABLE.
@@ -603,6 +608,16 @@
     "numRows": "A String", # [Output-only] The number of rows of data in this table, excluding any data in the streaming buffer.
     "numBytes": "A String", # [Output-only] The size of this table in bytes, excluding any data in the streaming buffer.
     "etag": "A String", # [Output-only] A hash of this resource.
+    "view": { # [Optional] The view definition.
+      "query": "A String", # [Required] A query that BigQuery executes when the view is referenced.
+      "useLegacySql": True or False, # Specifies whether to use BigQuery's legacy SQL for this view. The default value is true. If set to false, the view will use BigQuery's standard SQL: https://cloud.google.com/bigquery/sql-reference/ Queries and views that reference this view must use the same flag value.
+      "userDefinedFunctionResources": [ # [Experimental] Describes user-defined function resources used in the query.
+        {
+          "resourceUri": "A String", # [Pick one] A code resource to load from a Google Cloud Storage URI (gs://bucket/path).
+          "inlineCode": "A String", # [Pick one] An inline resource that contains code for a user-defined function (UDF). Providing a inline code resource is equivalent to providing a URI for a file containing the same code.
+        },
+      ],
+    },
     "location": "A String", # [Output-only] The geographic location where the table resides. This value is inherited from the dataset.
     "streamingBuffer": { # [Output-only] Contains information regarding this table's streaming buffer, if one is present. This field will be absent if the table is not being streamed to or if there is no data in the streaming buffer.
       "estimatedBytes": "A String", # [Output-only] A lower-bound estimate of the number of bytes currently in the streaming buffer.
@@ -621,7 +636,7 @@
           "fields": [ # [Optional] Describes the nested schema fields if the type property is set to RECORD.
             # Object with schema name: TableFieldSchema
           ],
-          "type": "A String", # [Required] The field data type. Possible values include STRING, BYTES, INTEGER, FLOAT, BOOLEAN, TIMESTAMP, DATE, TIME, DATETIME, or RECORD (where RECORD indicates that the field contains a nested schema).
+          "type": "A String", # [Required] The field data type. Possible values include STRING, BYTES, INTEGER, INT64 (same as INTEGER), FLOAT, FLOAT64 (same as FLOAT), BOOLEAN, BOOL (same as BOOLEAN), TIMESTAMP, DATE, TIME, DATETIME, RECORD (where RECORD indicates that the field contains a nested schema) or STRUCT (same as RECORD).
           "description": "A String", # [Optional] The field description. The maximum length is 16K characters.
           "name": "A String", # [Required] The field name. The name must contain only letters (a-z, A-Z), numbers (0-9), or underscores (_), and must start with a letter or underscore. The maximum length is 128 characters.
           "mode": "A String", # [Optional] The field mode. Possible values include NULLABLE, REQUIRED and REPEATED. The default value is NULLABLE.
@@ -643,15 +658,8 @@
       "lastModifiedTime": "A String", # [Output-only] The time when this table was last modified, in milliseconds since the epoch.
       "description": "A String", # [Optional] A user-friendly description of this table.
       "creationTime": "A String", # [Output-only] The time when this table was created, in milliseconds since the epoch.
-      "view": { # [Optional] The view definition.
-        "query": "A String", # [Required] A query that BigQuery executes when the view is referenced.
-        "useLegacySql": True or False, # [Experimental] Specifies whether to use BigQuery's legacy SQL for this view. The default value is true. If set to false, the view will use BigQuery's standard SQL: https://cloud.google.com/bigquery/sql-reference/ Queries and views that reference this view must use the same flag value.
-        "userDefinedFunctionResources": [ # [Experimental] Describes user-defined function resources used in the query.
-          {
-            "resourceUri": "A String", # [Pick one] A code resource to load from a Google Cloud Storage URI (gs://bucket/path).
-            "inlineCode": "A String", # [Pick one] An inline resource that contains code for a user-defined function (UDF). Providing a inline code resource is equivalent to providing a URI for a file containing the same code.
-          },
-        ],
+      "labels": { # [Experimental] The labels associated with this table. You can use these to organize and group your tables. Label keys and values can be no longer than 63 characters, can only contain letters, numeric characters, underscores and dashes. International characters are allowed. Label values are optional. Label keys must start with a letter and must be unique within a dataset. Both keys and values are additionally constrained to be <= 128 bytes in size.
+        "a_key": "A String",
       },
       "externalDataConfiguration": { # [Optional] Describes the data format, location, and other properties of a table stored outside of BigQuery. By defining these properties, the data source can then be queried as if it were a standard BigQuery table.
         "compression": "A String", # [Optional] The compression type of the data source. Possible values include GZIP and NONE. The default value is NONE. This setting is ignored for Google Cloud Bigtable, Google Cloud Datastore backups and Avro formats.
@@ -701,7 +709,7 @@
               "fields": [ # [Optional] Describes the nested schema fields if the type property is set to RECORD.
                 # Object with schema name: TableFieldSchema
               ],
-              "type": "A String", # [Required] The field data type. Possible values include STRING, BYTES, INTEGER, FLOAT, BOOLEAN, TIMESTAMP, DATE, TIME, DATETIME, or RECORD (where RECORD indicates that the field contains a nested schema).
+              "type": "A String", # [Required] The field data type. Possible values include STRING, BYTES, INTEGER, INT64 (same as INTEGER), FLOAT, FLOAT64 (same as FLOAT), BOOLEAN, BOOL (same as BOOLEAN), TIMESTAMP, DATE, TIME, DATETIME, RECORD (where RECORD indicates that the field contains a nested schema) or STRUCT (same as RECORD).
               "description": "A String", # [Optional] The field description. The maximum length is 16K characters.
               "name": "A String", # [Required] The field name. The name must contain only letters (a-z, A-Z), numbers (0-9), or underscores (_), and must start with a letter or underscore. The maximum length is 128 characters.
               "mode": "A String", # [Optional] The field mode. Possible values include NULLABLE, REQUIRED and REPEATED. The default value is NULLABLE.
@@ -717,6 +725,16 @@
       "numRows": "A String", # [Output-only] The number of rows of data in this table, excluding any data in the streaming buffer.
       "numBytes": "A String", # [Output-only] The size of this table in bytes, excluding any data in the streaming buffer.
       "etag": "A String", # [Output-only] A hash of this resource.
+      "view": { # [Optional] The view definition.
+        "query": "A String", # [Required] A query that BigQuery executes when the view is referenced.
+        "useLegacySql": True or False, # Specifies whether to use BigQuery's legacy SQL for this view. The default value is true. If set to false, the view will use BigQuery's standard SQL: https://cloud.google.com/bigquery/sql-reference/ Queries and views that reference this view must use the same flag value.
+        "userDefinedFunctionResources": [ # [Experimental] Describes user-defined function resources used in the query.
+          {
+            "resourceUri": "A String", # [Pick one] A code resource to load from a Google Cloud Storage URI (gs://bucket/path).
+            "inlineCode": "A String", # [Pick one] An inline resource that contains code for a user-defined function (UDF). Providing a inline code resource is equivalent to providing a URI for a file containing the same code.
+          },
+        ],
+      },
       "location": "A String", # [Output-only] The geographic location where the table resides. This value is inherited from the dataset.
       "streamingBuffer": { # [Output-only] Contains information regarding this table's streaming buffer, if one is present. This field will be absent if the table is not being streamed to or if there is no data in the streaming buffer.
         "estimatedBytes": "A String", # [Output-only] A lower-bound estimate of the number of bytes currently in the streaming buffer.
@@ -735,7 +753,7 @@
             "fields": [ # [Optional] Describes the nested schema fields if the type property is set to RECORD.
               # Object with schema name: TableFieldSchema
             ],
-            "type": "A String", # [Required] The field data type. Possible values include STRING, BYTES, INTEGER, FLOAT, BOOLEAN, TIMESTAMP, DATE, TIME, DATETIME, or RECORD (where RECORD indicates that the field contains a nested schema).
+            "type": "A String", # [Required] The field data type. Possible values include STRING, BYTES, INTEGER, INT64 (same as INTEGER), FLOAT, FLOAT64 (same as FLOAT), BOOLEAN, BOOL (same as BOOLEAN), TIMESTAMP, DATE, TIME, DATETIME, RECORD (where RECORD indicates that the field contains a nested schema) or STRUCT (same as RECORD).
             "description": "A String", # [Optional] The field description. The maximum length is 16K characters.
             "name": "A String", # [Required] The field name. The name must contain only letters (a-z, A-Z), numbers (0-9), or underscores (_), and must start with a letter or underscore. The maximum length is 128 characters.
             "mode": "A String", # [Optional] The field mode. Possible values include NULLABLE, REQUIRED and REPEATED. The default value is NULLABLE.
@@ -765,15 +783,8 @@
     "lastModifiedTime": "A String", # [Output-only] The time when this table was last modified, in milliseconds since the epoch.
     "description": "A String", # [Optional] A user-friendly description of this table.
     "creationTime": "A String", # [Output-only] The time when this table was created, in milliseconds since the epoch.
-    "view": { # [Optional] The view definition.
-      "query": "A String", # [Required] A query that BigQuery executes when the view is referenced.
-      "useLegacySql": True or False, # [Experimental] Specifies whether to use BigQuery's legacy SQL for this view. The default value is true. If set to false, the view will use BigQuery's standard SQL: https://cloud.google.com/bigquery/sql-reference/ Queries and views that reference this view must use the same flag value.
-      "userDefinedFunctionResources": [ # [Experimental] Describes user-defined function resources used in the query.
-        {
-          "resourceUri": "A String", # [Pick one] A code resource to load from a Google Cloud Storage URI (gs://bucket/path).
-          "inlineCode": "A String", # [Pick one] An inline resource that contains code for a user-defined function (UDF). Providing a inline code resource is equivalent to providing a URI for a file containing the same code.
-        },
-      ],
+    "labels": { # [Experimental] The labels associated with this table. You can use these to organize and group your tables. Label keys and values can be no longer than 63 characters, can only contain letters, numeric characters, underscores and dashes. International characters are allowed. Label values are optional. Label keys must start with a letter and must be unique within a dataset. Both keys and values are additionally constrained to be <= 128 bytes in size.
+      "a_key": "A String",
     },
     "externalDataConfiguration": { # [Optional] Describes the data format, location, and other properties of a table stored outside of BigQuery. By defining these properties, the data source can then be queried as if it were a standard BigQuery table.
       "compression": "A String", # [Optional] The compression type of the data source. Possible values include GZIP and NONE. The default value is NONE. This setting is ignored for Google Cloud Bigtable, Google Cloud Datastore backups and Avro formats.
@@ -823,7 +834,7 @@
             "fields": [ # [Optional] Describes the nested schema fields if the type property is set to RECORD.
               # Object with schema name: TableFieldSchema
             ],
-            "type": "A String", # [Required] The field data type. Possible values include STRING, BYTES, INTEGER, FLOAT, BOOLEAN, TIMESTAMP, DATE, TIME, DATETIME, or RECORD (where RECORD indicates that the field contains a nested schema).
+            "type": "A String", # [Required] The field data type. Possible values include STRING, BYTES, INTEGER, INT64 (same as INTEGER), FLOAT, FLOAT64 (same as FLOAT), BOOLEAN, BOOL (same as BOOLEAN), TIMESTAMP, DATE, TIME, DATETIME, RECORD (where RECORD indicates that the field contains a nested schema) or STRUCT (same as RECORD).
             "description": "A String", # [Optional] The field description. The maximum length is 16K characters.
             "name": "A String", # [Required] The field name. The name must contain only letters (a-z, A-Z), numbers (0-9), or underscores (_), and must start with a letter or underscore. The maximum length is 128 characters.
             "mode": "A String", # [Optional] The field mode. Possible values include NULLABLE, REQUIRED and REPEATED. The default value is NULLABLE.
@@ -839,6 +850,16 @@
     "numRows": "A String", # [Output-only] The number of rows of data in this table, excluding any data in the streaming buffer.
     "numBytes": "A String", # [Output-only] The size of this table in bytes, excluding any data in the streaming buffer.
     "etag": "A String", # [Output-only] A hash of this resource.
+    "view": { # [Optional] The view definition.
+      "query": "A String", # [Required] A query that BigQuery executes when the view is referenced.
+      "useLegacySql": True or False, # Specifies whether to use BigQuery's legacy SQL for this view. The default value is true. If set to false, the view will use BigQuery's standard SQL: https://cloud.google.com/bigquery/sql-reference/ Queries and views that reference this view must use the same flag value.
+      "userDefinedFunctionResources": [ # [Experimental] Describes user-defined function resources used in the query.
+        {
+          "resourceUri": "A String", # [Pick one] A code resource to load from a Google Cloud Storage URI (gs://bucket/path).
+          "inlineCode": "A String", # [Pick one] An inline resource that contains code for a user-defined function (UDF). Providing a inline code resource is equivalent to providing a URI for a file containing the same code.
+        },
+      ],
+    },
     "location": "A String", # [Output-only] The geographic location where the table resides. This value is inherited from the dataset.
     "streamingBuffer": { # [Output-only] Contains information regarding this table's streaming buffer, if one is present. This field will be absent if the table is not being streamed to or if there is no data in the streaming buffer.
       "estimatedBytes": "A String", # [Output-only] A lower-bound estimate of the number of bytes currently in the streaming buffer.
@@ -857,7 +878,7 @@
           "fields": [ # [Optional] Describes the nested schema fields if the type property is set to RECORD.
             # Object with schema name: TableFieldSchema
           ],
-          "type": "A String", # [Required] The field data type. Possible values include STRING, BYTES, INTEGER, FLOAT, BOOLEAN, TIMESTAMP, DATE, TIME, DATETIME, or RECORD (where RECORD indicates that the field contains a nested schema).
+          "type": "A String", # [Required] The field data type. Possible values include STRING, BYTES, INTEGER, INT64 (same as INTEGER), FLOAT, FLOAT64 (same as FLOAT), BOOLEAN, BOOL (same as BOOLEAN), TIMESTAMP, DATE, TIME, DATETIME, RECORD (where RECORD indicates that the field contains a nested schema) or STRUCT (same as RECORD).
           "description": "A String", # [Optional] The field description. The maximum length is 16K characters.
           "name": "A String", # [Required] The field name. The name must contain only letters (a-z, A-Z), numbers (0-9), or underscores (_), and must start with a letter or underscore. The maximum length is 128 characters.
           "mode": "A String", # [Optional] The field mode. Possible values include NULLABLE, REQUIRED and REPEATED. The default value is NULLABLE.
@@ -879,15 +900,8 @@
       "lastModifiedTime": "A String", # [Output-only] The time when this table was last modified, in milliseconds since the epoch.
       "description": "A String", # [Optional] A user-friendly description of this table.
       "creationTime": "A String", # [Output-only] The time when this table was created, in milliseconds since the epoch.
-      "view": { # [Optional] The view definition.
-        "query": "A String", # [Required] A query that BigQuery executes when the view is referenced.
-        "useLegacySql": True or False, # [Experimental] Specifies whether to use BigQuery's legacy SQL for this view. The default value is true. If set to false, the view will use BigQuery's standard SQL: https://cloud.google.com/bigquery/sql-reference/ Queries and views that reference this view must use the same flag value.
-        "userDefinedFunctionResources": [ # [Experimental] Describes user-defined function resources used in the query.
-          {
-            "resourceUri": "A String", # [Pick one] A code resource to load from a Google Cloud Storage URI (gs://bucket/path).
-            "inlineCode": "A String", # [Pick one] An inline resource that contains code for a user-defined function (UDF). Providing a inline code resource is equivalent to providing a URI for a file containing the same code.
-          },
-        ],
+      "labels": { # [Experimental] The labels associated with this table. You can use these to organize and group your tables. Label keys and values can be no longer than 63 characters, can only contain letters, numeric characters, underscores and dashes. International characters are allowed. Label values are optional. Label keys must start with a letter and must be unique within a dataset. Both keys and values are additionally constrained to be <= 128 bytes in size.
+        "a_key": "A String",
       },
       "externalDataConfiguration": { # [Optional] Describes the data format, location, and other properties of a table stored outside of BigQuery. By defining these properties, the data source can then be queried as if it were a standard BigQuery table.
         "compression": "A String", # [Optional] The compression type of the data source. Possible values include GZIP and NONE. The default value is NONE. This setting is ignored for Google Cloud Bigtable, Google Cloud Datastore backups and Avro formats.
@@ -937,7 +951,7 @@
               "fields": [ # [Optional] Describes the nested schema fields if the type property is set to RECORD.
                 # Object with schema name: TableFieldSchema
               ],
-              "type": "A String", # [Required] The field data type. Possible values include STRING, BYTES, INTEGER, FLOAT, BOOLEAN, TIMESTAMP, DATE, TIME, DATETIME, or RECORD (where RECORD indicates that the field contains a nested schema).
+              "type": "A String", # [Required] The field data type. Possible values include STRING, BYTES, INTEGER, INT64 (same as INTEGER), FLOAT, FLOAT64 (same as FLOAT), BOOLEAN, BOOL (same as BOOLEAN), TIMESTAMP, DATE, TIME, DATETIME, RECORD (where RECORD indicates that the field contains a nested schema) or STRUCT (same as RECORD).
               "description": "A String", # [Optional] The field description. The maximum length is 16K characters.
               "name": "A String", # [Required] The field name. The name must contain only letters (a-z, A-Z), numbers (0-9), or underscores (_), and must start with a letter or underscore. The maximum length is 128 characters.
               "mode": "A String", # [Optional] The field mode. Possible values include NULLABLE, REQUIRED and REPEATED. The default value is NULLABLE.
@@ -953,6 +967,16 @@
       "numRows": "A String", # [Output-only] The number of rows of data in this table, excluding any data in the streaming buffer.
       "numBytes": "A String", # [Output-only] The size of this table in bytes, excluding any data in the streaming buffer.
       "etag": "A String", # [Output-only] A hash of this resource.
+      "view": { # [Optional] The view definition.
+        "query": "A String", # [Required] A query that BigQuery executes when the view is referenced.
+        "useLegacySql": True or False, # Specifies whether to use BigQuery's legacy SQL for this view. The default value is true. If set to false, the view will use BigQuery's standard SQL: https://cloud.google.com/bigquery/sql-reference/ Queries and views that reference this view must use the same flag value.
+        "userDefinedFunctionResources": [ # [Experimental] Describes user-defined function resources used in the query.
+          {
+            "resourceUri": "A String", # [Pick one] A code resource to load from a Google Cloud Storage URI (gs://bucket/path).
+            "inlineCode": "A String", # [Pick one] An inline resource that contains code for a user-defined function (UDF). Providing a inline code resource is equivalent to providing a URI for a file containing the same code.
+          },
+        ],
+      },
       "location": "A String", # [Output-only] The geographic location where the table resides. This value is inherited from the dataset.
       "streamingBuffer": { # [Output-only] Contains information regarding this table's streaming buffer, if one is present. This field will be absent if the table is not being streamed to or if there is no data in the streaming buffer.
         "estimatedBytes": "A String", # [Output-only] A lower-bound estimate of the number of bytes currently in the streaming buffer.
@@ -971,7 +995,7 @@
             "fields": [ # [Optional] Describes the nested schema fields if the type property is set to RECORD.
               # Object with schema name: TableFieldSchema
             ],
-            "type": "A String", # [Required] The field data type. Possible values include STRING, BYTES, INTEGER, FLOAT, BOOLEAN, TIMESTAMP, DATE, TIME, DATETIME, or RECORD (where RECORD indicates that the field contains a nested schema).
+            "type": "A String", # [Required] The field data type. Possible values include STRING, BYTES, INTEGER, INT64 (same as INTEGER), FLOAT, FLOAT64 (same as FLOAT), BOOLEAN, BOOL (same as BOOLEAN), TIMESTAMP, DATE, TIME, DATETIME, RECORD (where RECORD indicates that the field contains a nested schema) or STRUCT (same as RECORD).
             "description": "A String", # [Optional] The field description. The maximum length is 16K characters.
             "name": "A String", # [Required] The field name. The name must contain only letters (a-z, A-Z), numbers (0-9), or underscores (_), and must start with a letter or underscore. The maximum length is 128 characters.
             "mode": "A String", # [Optional] The field mode. Possible values include NULLABLE, REQUIRED and REPEATED. The default value is NULLABLE.
diff --git a/docs/dyn/books_v1.notification.html b/docs/dyn/books_v1.notification.html
index 250a776..31252a0 100644
--- a/docs/dyn/books_v1.notification.html
+++ b/docs/dyn/books_v1.notification.html
@@ -102,6 +102,7 @@
       "A String",
     ],
     "reason": "A String",
+    "notificationGroup": "A String",
     "targetUrl": "A String",
     "notification_type": "A String",
     "pcampaign_id": "A String",
diff --git a/docs/dyn/books_v1.series.html b/docs/dyn/books_v1.series.html
index 52426c3..011b154 100644
--- a/docs/dyn/books_v1.series.html
+++ b/docs/dyn/books_v1.series.html
@@ -94,7 +94,7 @@
   An object of the form:
 
     {
-    "series": [ # Series info list. The client always expects this element in the JSON output, hence declared here as OutputAlways.
+    "series": [
       {
         "seriesId": "A String",
         "bannerImageUrl": "A String",
diff --git a/docs/dyn/cloudbuild_v1.operations.html b/docs/dyn/cloudbuild_v1.operations.html
index 493f9a6..88d0263 100644
--- a/docs/dyn/cloudbuild_v1.operations.html
+++ b/docs/dyn/cloudbuild_v1.operations.html
@@ -75,6 +75,9 @@
 <h1><a href="cloudbuild_v1.html">Google Cloud Container Builder API</a> . <a href="cloudbuild_v1.operations.html">operations</a></h1>
 <h2>Instance Methods</h2>
 <p class="toc_element">
+  <code><a href="#cancel">cancel(name, body, x__xgafv=None)</a></code></p>
+<p class="firstline">Starts asynchronous cancellation on a long-running operation.  The server</p>
+<p class="toc_element">
   <code><a href="#get">get(name, x__xgafv=None)</a></code></p>
 <p class="firstline">Gets the latest state of a long-running operation.  Clients can use this</p>
 <p class="toc_element">
@@ -85,6 +88,47 @@
 <p class="firstline">Retrieves the next page of results.</p>
 <h3>Method Details</h3>
 <div class="method">
+    <code class="details" id="cancel">cancel(name, body, x__xgafv=None)</code>
+  <pre>Starts asynchronous cancellation on a long-running operation.  The server
+makes a best effort to cancel the operation, but success is not
+guaranteed.  If the server doesn't support this method, it returns
+`google.rpc.Code.UNIMPLEMENTED`.  Clients can use
+Operations.GetOperation or
+other methods to check whether the cancellation succeeded or whether the
+operation completed despite cancellation. On successful cancellation,
+the operation is not deleted; instead, it becomes an operation with
+an Operation.error value with a google.rpc.Status.code of 1,
+corresponding to `Code.CANCELLED`.
+
+Args:
+  name: string, The name of the operation resource to be cancelled. (required)
+  body: object, The request body. (required)
+    The object takes the form of:
+
+{ # The request message for Operations.CancelOperation.
+  }
+
+  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(name, x__xgafv=None)</code>
   <pre>Gets the latest state of a long-running operation.  Clients can use this
 method to poll the operation result at intervals as recommended by the API
diff --git a/docs/dyn/cloudbuild_v1.projects.builds.html b/docs/dyn/cloudbuild_v1.projects.builds.html
index 1ab68eb..8ae8b6e 100644
--- a/docs/dyn/cloudbuild_v1.projects.builds.html
+++ b/docs/dyn/cloudbuild_v1.projects.builds.html
@@ -130,6 +130,9 @@
     "status": "A String", # Status of the build.
         # @OutputOnly
     "finishTime": "A String", # Time at which execution of the build was finished.
+        #
+        # The difference between finish_time and start_time is the duration of the
+        # build's execution.
         # @OutputOnly
     "timeout": "A String", # Amount of time that this build should be allowed to run, to second
         # granularity. If this amount of time elapses, work on the build will cease
@@ -157,7 +160,7 @@
         "A String",
       ],
     },
-    "createTime": "A String", # Time at which the build was created.
+    "createTime": "A String", # Time at which the request to create the build was received.
         # @OutputOnly
     "id": "A String", # Unique identifier of the build.
         # @OutputOnly
@@ -186,6 +189,9 @@
         "commitSha": "A String", # Explicit commit SHA to build.
       },
     },
+    "buildTriggerId": "A String", # The ID of the BuildTrigger that triggered this build, if it was
+        # triggered automatically.
+        # @OutputOnly
     "steps": [ # Describes the operations to be performed on the workspace.
       { # BuildStep describes a step to perform in the build pipeline.
         "waitFor": [ # The ID(s) of the step(s) that this build step depends on.
@@ -197,10 +203,9 @@
         ],
         "name": "A String", # The name of the container image that will run this particular build step.
             #
-            # If the image is already available in the host's
-            # Docker daemon's cache, it will be run directly. If not, the host will
-            # attempt to pull the image first, using the builder service account's
-            # credentials if necessary.
+            # If the image is already available in the host's Docker daemon's cache, it
+            # will be run directly. If not, the host will attempt to pull the image
+            # first, using the builder service account's credentials if necessary.
             #
             # The Docker daemon's cache will already have the latest versions of all of
             # the officially supported build steps
@@ -284,8 +289,7 @@
     "images": [ # A list of images to be pushed upon the successful completion of all build
         # steps.
         #
-        # The images will be pushed using the builder
-        # service account's credentials.
+        # The images will be pushed using the builder service account's credentials.
         #
         # The digests of the pushed images will be stored in the Build resource's
         # results field.
@@ -336,6 +340,9 @@
   "status": "A String", # Status of the build.
       # @OutputOnly
   "finishTime": "A String", # Time at which execution of the build was finished.
+      # 
+      # The difference between finish_time and start_time is the duration of the
+      # build's execution.
       # @OutputOnly
   "timeout": "A String", # Amount of time that this build should be allowed to run, to second
       # granularity. If this amount of time elapses, work on the build will cease
@@ -363,7 +370,7 @@
       "A String",
     ],
   },
-  "createTime": "A String", # Time at which the build was created.
+  "createTime": "A String", # Time at which the request to create the build was received.
       # @OutputOnly
   "id": "A String", # Unique identifier of the build.
       # @OutputOnly
@@ -392,6 +399,9 @@
       "commitSha": "A String", # Explicit commit SHA to build.
     },
   },
+  "buildTriggerId": "A String", # The ID of the BuildTrigger that triggered this build, if it was
+      # triggered automatically.
+      # @OutputOnly
   "steps": [ # Describes the operations to be performed on the workspace.
     { # BuildStep describes a step to perform in the build pipeline.
       "waitFor": [ # The ID(s) of the step(s) that this build step depends on.
@@ -403,10 +413,9 @@
       ],
       "name": "A String", # The name of the container image that will run this particular build step.
           #
-          # If the image is already available in the host's
-          # Docker daemon's cache, it will be run directly. If not, the host will
-          # attempt to pull the image first, using the builder service account's
-          # credentials if necessary.
+          # If the image is already available in the host's Docker daemon's cache, it
+          # will be run directly. If not, the host will attempt to pull the image
+          # first, using the builder service account's credentials if necessary.
           #
           # The Docker daemon's cache will already have the latest versions of all of
           # the officially supported build steps
@@ -490,8 +499,7 @@
   "images": [ # A list of images to be pushed upon the successful completion of all build
       # steps.
       # 
-      # The images will be pushed using the builder
-      # service account's credentials.
+      # The images will be pushed using the builder service account's credentials.
       # 
       # The digests of the pushed images will be stored in the Build resource's
       # results field.
@@ -644,6 +652,9 @@
     "status": "A String", # Status of the build.
         # @OutputOnly
     "finishTime": "A String", # Time at which execution of the build was finished.
+        #
+        # The difference between finish_time and start_time is the duration of the
+        # build's execution.
         # @OutputOnly
     "timeout": "A String", # Amount of time that this build should be allowed to run, to second
         # granularity. If this amount of time elapses, work on the build will cease
@@ -671,7 +682,7 @@
         "A String",
       ],
     },
-    "createTime": "A String", # Time at which the build was created.
+    "createTime": "A String", # Time at which the request to create the build was received.
         # @OutputOnly
     "id": "A String", # Unique identifier of the build.
         # @OutputOnly
@@ -700,6 +711,9 @@
         "commitSha": "A String", # Explicit commit SHA to build.
       },
     },
+    "buildTriggerId": "A String", # The ID of the BuildTrigger that triggered this build, if it was
+        # triggered automatically.
+        # @OutputOnly
     "steps": [ # Describes the operations to be performed on the workspace.
       { # BuildStep describes a step to perform in the build pipeline.
         "waitFor": [ # The ID(s) of the step(s) that this build step depends on.
@@ -711,10 +725,9 @@
         ],
         "name": "A String", # The name of the container image that will run this particular build step.
             #
-            # If the image is already available in the host's
-            # Docker daemon's cache, it will be run directly. If not, the host will
-            # attempt to pull the image first, using the builder service account's
-            # credentials if necessary.
+            # If the image is already available in the host's Docker daemon's cache, it
+            # will be run directly. If not, the host will attempt to pull the image
+            # first, using the builder service account's credentials if necessary.
             #
             # The Docker daemon's cache will already have the latest versions of all of
             # the officially supported build steps
@@ -798,8 +811,7 @@
     "images": [ # A list of images to be pushed upon the successful completion of all build
         # steps.
         #
-        # The images will be pushed using the builder
-        # service account's credentials.
+        # The images will be pushed using the builder service account's credentials.
         #
         # The digests of the pushed images will be stored in the Build resource's
         # results field.
@@ -860,6 +872,9 @@
         "status": "A String", # Status of the build.
             # @OutputOnly
         "finishTime": "A String", # Time at which execution of the build was finished.
+            #
+            # The difference between finish_time and start_time is the duration of the
+            # build's execution.
             # @OutputOnly
         "timeout": "A String", # Amount of time that this build should be allowed to run, to second
             # granularity. If this amount of time elapses, work on the build will cease
@@ -887,7 +902,7 @@
             "A String",
           ],
         },
-        "createTime": "A String", # Time at which the build was created.
+        "createTime": "A String", # Time at which the request to create the build was received.
             # @OutputOnly
         "id": "A String", # Unique identifier of the build.
             # @OutputOnly
@@ -916,6 +931,9 @@
             "commitSha": "A String", # Explicit commit SHA to build.
           },
         },
+        "buildTriggerId": "A String", # The ID of the BuildTrigger that triggered this build, if it was
+            # triggered automatically.
+            # @OutputOnly
         "steps": [ # Describes the operations to be performed on the workspace.
           { # BuildStep describes a step to perform in the build pipeline.
             "waitFor": [ # The ID(s) of the step(s) that this build step depends on.
@@ -927,10 +945,9 @@
             ],
             "name": "A String", # The name of the container image that will run this particular build step.
                 #
-                # If the image is already available in the host's
-                # Docker daemon's cache, it will be run directly. If not, the host will
-                # attempt to pull the image first, using the builder service account's
-                # credentials if necessary.
+                # If the image is already available in the host's Docker daemon's cache, it
+                # will be run directly. If not, the host will attempt to pull the image
+                # first, using the builder service account's credentials if necessary.
                 #
                 # The Docker daemon's cache will already have the latest versions of all of
                 # the officially supported build steps
@@ -1014,8 +1031,7 @@
         "images": [ # A list of images to be pushed upon the successful completion of all build
             # steps.
             #
-            # The images will be pushed using the builder
-            # service account's credentials.
+            # The images will be pushed using the builder service account's credentials.
             #
             # The digests of the pushed images will be stored in the Build resource's
             # results field.
diff --git a/docs/dyn/cloudbuild_v1.projects.triggers.html b/docs/dyn/cloudbuild_v1.projects.triggers.html
index 95aecd5..bf98749 100644
--- a/docs/dyn/cloudbuild_v1.projects.triggers.html
+++ b/docs/dyn/cloudbuild_v1.projects.triggers.html
@@ -129,6 +129,9 @@
       "status": "A String", # Status of the build.
           # @OutputOnly
       "finishTime": "A String", # Time at which execution of the build was finished.
+          #
+          # The difference between finish_time and start_time is the duration of the
+          # build's execution.
           # @OutputOnly
       "timeout": "A String", # Amount of time that this build should be allowed to run, to second
           # granularity. If this amount of time elapses, work on the build will cease
@@ -156,7 +159,7 @@
           "A String",
         ],
       },
-      "createTime": "A String", # Time at which the build was created.
+      "createTime": "A String", # Time at which the request to create the build was received.
           # @OutputOnly
       "id": "A String", # Unique identifier of the build.
           # @OutputOnly
@@ -185,6 +188,9 @@
           "commitSha": "A String", # Explicit commit SHA to build.
         },
       },
+      "buildTriggerId": "A String", # The ID of the BuildTrigger that triggered this build, if it was
+          # triggered automatically.
+          # @OutputOnly
       "steps": [ # Describes the operations to be performed on the workspace.
         { # BuildStep describes a step to perform in the build pipeline.
           "waitFor": [ # The ID(s) of the step(s) that this build step depends on.
@@ -196,10 +202,9 @@
           ],
           "name": "A String", # The name of the container image that will run this particular build step.
               #
-              # If the image is already available in the host's
-              # Docker daemon's cache, it will be run directly. If not, the host will
-              # attempt to pull the image first, using the builder service account's
-              # credentials if necessary.
+              # If the image is already available in the host's Docker daemon's cache, it
+              # will be run directly. If not, the host will attempt to pull the image
+              # first, using the builder service account's credentials if necessary.
               #
               # The Docker daemon's cache will already have the latest versions of all of
               # the officially supported build steps
@@ -283,8 +288,7 @@
       "images": [ # A list of images to be pushed upon the successful completion of all build
           # steps.
           #
-          # The images will be pushed using the builder
-          # service account's credentials.
+          # The images will be pushed using the builder service account's credentials.
           #
           # The digests of the pushed images will be stored in the Build resource's
           # results field.
@@ -355,6 +359,9 @@
         "status": "A String", # Status of the build.
             # @OutputOnly
         "finishTime": "A String", # Time at which execution of the build was finished.
+            #
+            # The difference between finish_time and start_time is the duration of the
+            # build's execution.
             # @OutputOnly
         "timeout": "A String", # Amount of time that this build should be allowed to run, to second
             # granularity. If this amount of time elapses, work on the build will cease
@@ -382,7 +389,7 @@
             "A String",
           ],
         },
-        "createTime": "A String", # Time at which the build was created.
+        "createTime": "A String", # Time at which the request to create the build was received.
             # @OutputOnly
         "id": "A String", # Unique identifier of the build.
             # @OutputOnly
@@ -411,6 +418,9 @@
             "commitSha": "A String", # Explicit commit SHA to build.
           },
         },
+        "buildTriggerId": "A String", # The ID of the BuildTrigger that triggered this build, if it was
+            # triggered automatically.
+            # @OutputOnly
         "steps": [ # Describes the operations to be performed on the workspace.
           { # BuildStep describes a step to perform in the build pipeline.
             "waitFor": [ # The ID(s) of the step(s) that this build step depends on.
@@ -422,10 +432,9 @@
             ],
             "name": "A String", # The name of the container image that will run this particular build step.
                 #
-                # If the image is already available in the host's
-                # Docker daemon's cache, it will be run directly. If not, the host will
-                # attempt to pull the image first, using the builder service account's
-                # credentials if necessary.
+                # If the image is already available in the host's Docker daemon's cache, it
+                # will be run directly. If not, the host will attempt to pull the image
+                # first, using the builder service account's credentials if necessary.
                 #
                 # The Docker daemon's cache will already have the latest versions of all of
                 # the officially supported build steps
@@ -509,8 +518,7 @@
         "images": [ # A list of images to be pushed upon the successful completion of all build
             # steps.
             #
-            # The images will be pushed using the builder
-            # service account's credentials.
+            # The images will be pushed using the builder service account's credentials.
             #
             # The digests of the pushed images will be stored in the Build resource's
             # results field.
@@ -620,6 +628,9 @@
         "status": "A String", # Status of the build.
             # @OutputOnly
         "finishTime": "A String", # Time at which execution of the build was finished.
+            #
+            # The difference between finish_time and start_time is the duration of the
+            # build's execution.
             # @OutputOnly
         "timeout": "A String", # Amount of time that this build should be allowed to run, to second
             # granularity. If this amount of time elapses, work on the build will cease
@@ -647,7 +658,7 @@
             "A String",
           ],
         },
-        "createTime": "A String", # Time at which the build was created.
+        "createTime": "A String", # Time at which the request to create the build was received.
             # @OutputOnly
         "id": "A String", # Unique identifier of the build.
             # @OutputOnly
@@ -676,6 +687,9 @@
             "commitSha": "A String", # Explicit commit SHA to build.
           },
         },
+        "buildTriggerId": "A String", # The ID of the BuildTrigger that triggered this build, if it was
+            # triggered automatically.
+            # @OutputOnly
         "steps": [ # Describes the operations to be performed on the workspace.
           { # BuildStep describes a step to perform in the build pipeline.
             "waitFor": [ # The ID(s) of the step(s) that this build step depends on.
@@ -687,10 +701,9 @@
             ],
             "name": "A String", # The name of the container image that will run this particular build step.
                 #
-                # If the image is already available in the host's
-                # Docker daemon's cache, it will be run directly. If not, the host will
-                # attempt to pull the image first, using the builder service account's
-                # credentials if necessary.
+                # If the image is already available in the host's Docker daemon's cache, it
+                # will be run directly. If not, the host will attempt to pull the image
+                # first, using the builder service account's credentials if necessary.
                 #
                 # The Docker daemon's cache will already have the latest versions of all of
                 # the officially supported build steps
@@ -774,8 +787,7 @@
         "images": [ # A list of images to be pushed upon the successful completion of all build
             # steps.
             #
-            # The images will be pushed using the builder
-            # service account's credentials.
+            # The images will be pushed using the builder service account's credentials.
             #
             # The digests of the pushed images will be stored in the Build resource's
             # results field.
@@ -857,6 +869,9 @@
             "status": "A String", # Status of the build.
                 # @OutputOnly
             "finishTime": "A String", # Time at which execution of the build was finished.
+                #
+                # The difference between finish_time and start_time is the duration of the
+                # build's execution.
                 # @OutputOnly
             "timeout": "A String", # Amount of time that this build should be allowed to run, to second
                 # granularity. If this amount of time elapses, work on the build will cease
@@ -884,7 +899,7 @@
                 "A String",
               ],
             },
-            "createTime": "A String", # Time at which the build was created.
+            "createTime": "A String", # Time at which the request to create the build was received.
                 # @OutputOnly
             "id": "A String", # Unique identifier of the build.
                 # @OutputOnly
@@ -913,6 +928,9 @@
                 "commitSha": "A String", # Explicit commit SHA to build.
               },
             },
+            "buildTriggerId": "A String", # The ID of the BuildTrigger that triggered this build, if it was
+                # triggered automatically.
+                # @OutputOnly
             "steps": [ # Describes the operations to be performed on the workspace.
               { # BuildStep describes a step to perform in the build pipeline.
                 "waitFor": [ # The ID(s) of the step(s) that this build step depends on.
@@ -924,10 +942,9 @@
                 ],
                 "name": "A String", # The name of the container image that will run this particular build step.
                     #
-                    # If the image is already available in the host's
-                    # Docker daemon's cache, it will be run directly. If not, the host will
-                    # attempt to pull the image first, using the builder service account's
-                    # credentials if necessary.
+                    # If the image is already available in the host's Docker daemon's cache, it
+                    # will be run directly. If not, the host will attempt to pull the image
+                    # first, using the builder service account's credentials if necessary.
                     #
                     # The Docker daemon's cache will already have the latest versions of all of
                     # the officially supported build steps
@@ -1011,8 +1028,7 @@
             "images": [ # A list of images to be pushed upon the successful completion of all build
                 # steps.
                 #
-                # The images will be pushed using the builder
-                # service account's credentials.
+                # The images will be pushed using the builder service account's credentials.
                 #
                 # The digests of the pushed images will be stored in the Build resource's
                 # results field.
@@ -1090,6 +1106,9 @@
       "status": "A String", # Status of the build.
           # @OutputOnly
       "finishTime": "A String", # Time at which execution of the build was finished.
+          #
+          # The difference between finish_time and start_time is the duration of the
+          # build's execution.
           # @OutputOnly
       "timeout": "A String", # Amount of time that this build should be allowed to run, to second
           # granularity. If this amount of time elapses, work on the build will cease
@@ -1117,7 +1136,7 @@
           "A String",
         ],
       },
-      "createTime": "A String", # Time at which the build was created.
+      "createTime": "A String", # Time at which the request to create the build was received.
           # @OutputOnly
       "id": "A String", # Unique identifier of the build.
           # @OutputOnly
@@ -1146,6 +1165,9 @@
           "commitSha": "A String", # Explicit commit SHA to build.
         },
       },
+      "buildTriggerId": "A String", # The ID of the BuildTrigger that triggered this build, if it was
+          # triggered automatically.
+          # @OutputOnly
       "steps": [ # Describes the operations to be performed on the workspace.
         { # BuildStep describes a step to perform in the build pipeline.
           "waitFor": [ # The ID(s) of the step(s) that this build step depends on.
@@ -1157,10 +1179,9 @@
           ],
           "name": "A String", # The name of the container image that will run this particular build step.
               #
-              # If the image is already available in the host's
-              # Docker daemon's cache, it will be run directly. If not, the host will
-              # attempt to pull the image first, using the builder service account's
-              # credentials if necessary.
+              # If the image is already available in the host's Docker daemon's cache, it
+              # will be run directly. If not, the host will attempt to pull the image
+              # first, using the builder service account's credentials if necessary.
               #
               # The Docker daemon's cache will already have the latest versions of all of
               # the officially supported build steps
@@ -1244,8 +1265,7 @@
       "images": [ # A list of images to be pushed upon the successful completion of all build
           # steps.
           #
-          # The images will be pushed using the builder
-          # service account's credentials.
+          # The images will be pushed using the builder service account's credentials.
           #
           # The digests of the pushed images will be stored in the Build resource's
           # results field.
@@ -1316,6 +1336,9 @@
         "status": "A String", # Status of the build.
             # @OutputOnly
         "finishTime": "A String", # Time at which execution of the build was finished.
+            #
+            # The difference between finish_time and start_time is the duration of the
+            # build's execution.
             # @OutputOnly
         "timeout": "A String", # Amount of time that this build should be allowed to run, to second
             # granularity. If this amount of time elapses, work on the build will cease
@@ -1343,7 +1366,7 @@
             "A String",
           ],
         },
-        "createTime": "A String", # Time at which the build was created.
+        "createTime": "A String", # Time at which the request to create the build was received.
             # @OutputOnly
         "id": "A String", # Unique identifier of the build.
             # @OutputOnly
@@ -1372,6 +1395,9 @@
             "commitSha": "A String", # Explicit commit SHA to build.
           },
         },
+        "buildTriggerId": "A String", # The ID of the BuildTrigger that triggered this build, if it was
+            # triggered automatically.
+            # @OutputOnly
         "steps": [ # Describes the operations to be performed on the workspace.
           { # BuildStep describes a step to perform in the build pipeline.
             "waitFor": [ # The ID(s) of the step(s) that this build step depends on.
@@ -1383,10 +1409,9 @@
             ],
             "name": "A String", # The name of the container image that will run this particular build step.
                 #
-                # If the image is already available in the host's
-                # Docker daemon's cache, it will be run directly. If not, the host will
-                # attempt to pull the image first, using the builder service account's
-                # credentials if necessary.
+                # If the image is already available in the host's Docker daemon's cache, it
+                # will be run directly. If not, the host will attempt to pull the image
+                # first, using the builder service account's credentials if necessary.
                 #
                 # The Docker daemon's cache will already have the latest versions of all of
                 # the officially supported build steps
@@ -1470,8 +1495,7 @@
         "images": [ # A list of images to be pushed upon the successful completion of all build
             # steps.
             #
-            # The images will be pushed using the builder
-            # service account's credentials.
+            # The images will be pushed using the builder service account's credentials.
             #
             # The digests of the pushed images will be stored in the Build resource's
             # results field.
diff --git a/docs/dyn/clouderrorreporting_v1beta1.projects.events.html b/docs/dyn/clouderrorreporting_v1beta1.projects.events.html
index 8867a95..36e1f85 100644
--- a/docs/dyn/clouderrorreporting_v1beta1.projects.events.html
+++ b/docs/dyn/clouderrorreporting_v1beta1.projects.events.html
@@ -75,7 +75,7 @@
 <h1><a href="clouderrorreporting_v1beta1.html">Stackdriver Error Reporting API</a> . <a href="clouderrorreporting_v1beta1.projects.html">projects</a> . <a href="clouderrorreporting_v1beta1.projects.events.html">events</a></h1>
 <h2>Instance Methods</h2>
 <p class="toc_element">
-  <code><a href="#list">list(projectName=None, pageSize=None, x__xgafv=None, timeRange_period=None, pageToken=None, serviceFilter_version=None, serviceFilter_service=None, groupId=None)</a></code></p>
+  <code><a href="#list">list(projectName=None, pageSize=None, x__xgafv=None, serviceFilter_resourceType=None, timeRange_period=None, serviceFilter_version=None, pageToken=None, serviceFilter_service=None, groupId=None)</a></code></p>
 <p class="firstline">Lists the specified events.</p>
 <p class="toc_element">
   <code><a href="#list_next">list_next(previous_request, previous_response)</a></code></p>
@@ -85,23 +85,26 @@
 <p class="firstline">Report an individual error event.</p>
 <h3>Method Details</h3>
 <div class="method">
-    <code class="details" id="list">list(projectName=None, pageSize=None, x__xgafv=None, timeRange_period=None, pageToken=None, serviceFilter_version=None, serviceFilter_service=None, groupId=None)</code>
+    <code class="details" id="list">list(projectName=None, pageSize=None, x__xgafv=None, serviceFilter_resourceType=None, timeRange_period=None, serviceFilter_version=None, pageToken=None, serviceFilter_service=None, groupId=None)</code>
   <pre>Lists the specified events.
 
 Args:
   projectName: string, [Required] The resource name of the Google Cloud Platform project. Written
 as `projects/` plus the
-[Google Cloud Platform project ID](https://support.google.com/cloud/answer/6158840).
+[Google Cloud Platform project
+ID](https://support.google.com/cloud/answer/6158840).
 Example: `projects/my-project-123`. (required)
   pageSize: integer, [Optional] The maximum number of results to return per response.
   x__xgafv: string, V1 error format.
     Allowed values
       1 - v1 error format
       2 - v2 error format
+  serviceFilter_resourceType: string, [Optional] The exact value to match against
+[`ServiceContext.resource_type`](/error-reporting/reference/rest/v1beta1/ServiceContext#FIELDS.resource_type).
   timeRange_period: string, Restricts the query to the specified time range.
-  pageToken: string, [Optional] A `next_page_token` provided by a previous response.
   serviceFilter_version: string, [Optional] The exact value to match against
 [`ServiceContext.version`](/error-reporting/reference/rest/v1beta1/ServiceContext#FIELDS.version).
+  pageToken: string, [Optional] A `next_page_token` provided by a previous response.
   serviceFilter_service: string, [Optional] The exact value to match against
 [`ServiceContext.service`](/error-reporting/reference/rest/v1beta1/ServiceContext#FIELDS.service).
   groupId: string, [Required] The group for which events shall be returned.
@@ -117,6 +120,11 @@
       { # An error event which is returned by the Error Reporting system.
         "serviceContext": { # Describes a running service that sends errors. # The `ServiceContext` for which this error was reported.
             # Its version changes over time and multiple versions can run in parallel.
+          "resourceType": "A String", # Type of the MonitoredResource. List of possible values:
+              # https://cloud.google.com/monitoring/api/resources
+              #
+              # Value is set automatically for incoming errors and must not be set when
+              # reporting errors.
           "version": "A String", # Represents the source code version that the developer provided,
               # which could represent a version label or a Git SHA-1 hash, for example.
           "service": "A String", # An identifier of the service, such as the name of the
@@ -178,6 +186,7 @@
         },
       },
     ],
+    "timeRangeBegin": "A String", # The timestamp specifies the start time to which the request was restricted.
   }</pre>
 </div>
 
@@ -217,6 +226,11 @@
 { # An error event which is reported to the Error Reporting system.
     "serviceContext": { # Describes a running service that sends errors. # [Required] The service context in which this error has occurred.
         # Its version changes over time and multiple versions can run in parallel.
+      "resourceType": "A String", # Type of the MonitoredResource. List of possible values:
+          # https://cloud.google.com/monitoring/api/resources
+          #
+          # Value is set automatically for incoming errors and must not be set when
+          # reporting errors.
       "version": "A String", # Represents the source code version that the developer provided,
           # which could represent a version label or a Git SHA-1 hash, for example.
       "service": "A String", # An identifier of the service, such as the name of the
diff --git a/docs/dyn/clouderrorreporting_v1beta1.projects.groupStats.html b/docs/dyn/clouderrorreporting_v1beta1.projects.groupStats.html
index 53bd6b3..65cc885 100644
--- a/docs/dyn/clouderrorreporting_v1beta1.projects.groupStats.html
+++ b/docs/dyn/clouderrorreporting_v1beta1.projects.groupStats.html
@@ -75,14 +75,14 @@
 <h1><a href="clouderrorreporting_v1beta1.html">Stackdriver Error Reporting API</a> . <a href="clouderrorreporting_v1beta1.projects.html">projects</a> . <a href="clouderrorreporting_v1beta1.projects.groupStats.html">groupStats</a></h1>
 <h2>Instance Methods</h2>
 <p class="toc_element">
-  <code><a href="#list">list(projectName=None, alignmentTime=None, pageSize=None, x__xgafv=None, alignment=None, timedCountDuration=None, timeRange_period=None, pageToken=None, serviceFilter_version=None, serviceFilter_service=None, groupId=None, order=None)</a></code></p>
+  <code><a href="#list">list(projectName=None, alignmentTime=None, pageSize=None, x__xgafv=None, alignment=None, serviceFilter_resourceType=None, timedCountDuration=None, timeRange_period=None, pageToken=None, serviceFilter_version=None, serviceFilter_service=None, groupId=None, order=None)</a></code></p>
 <p class="firstline">Lists the specified groups.</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>
 <h3>Method Details</h3>
 <div class="method">
-    <code class="details" id="list">list(projectName=None, alignmentTime=None, pageSize=None, x__xgafv=None, alignment=None, timedCountDuration=None, timeRange_period=None, pageToken=None, serviceFilter_version=None, serviceFilter_service=None, groupId=None, order=None)</code>
+    <code class="details" id="list">list(projectName=None, alignmentTime=None, pageSize=None, x__xgafv=None, alignment=None, serviceFilter_resourceType=None, timedCountDuration=None, timeRange_period=None, pageToken=None, serviceFilter_version=None, serviceFilter_service=None, groupId=None, order=None)</code>
   <pre>Lists the specified groups.
 
 Args:
@@ -102,6 +102,8 @@
       2 - v2 error format
   alignment: string, [Optional] The alignment of the timed counts to be returned.
 Default is `ALIGNMENT_EQUAL_AT_END`.
+  serviceFilter_resourceType: string, [Optional] The exact value to match against
+[`ServiceContext.resource_type`](/error-reporting/reference/rest/v1beta1/ServiceContext#FIELDS.resource_type).
   timedCountDuration: string, [Optional] The preferred duration for a single returned `TimedCount`.
 If not set, no timed counts are returned.
   timeRange_period: string, Restricts the query to the specified time range.
@@ -179,6 +181,11 @@
             # insight into the characteristics of the group as a whole.
           "serviceContext": { # Describes a running service that sends errors. # The `ServiceContext` for which this error was reported.
               # Its version changes over time and multiple versions can run in parallel.
+            "resourceType": "A String", # Type of the MonitoredResource. List of possible values:
+                # https://cloud.google.com/monitoring/api/resources
+                #
+                # Value is set automatically for incoming errors and must not be set when
+                # reporting errors.
             "version": "A String", # Represents the source code version that the developer provided,
                 # which could represent a version label or a Git SHA-1 hash, for example.
             "service": "A String", # An identifier of the service, such as the name of the
@@ -246,6 +253,11 @@
             # Refer to `num_affected_services` for the total count.
           { # Describes a running service that sends errors.
               # Its version changes over time and multiple versions can run in parallel.
+            "resourceType": "A String", # Type of the MonitoredResource. List of possible values:
+                # https://cloud.google.com/monitoring/api/resources
+                #
+                # Value is set automatically for incoming errors and must not be set when
+                # reporting errors.
             "version": "A String", # Represents the source code version that the developer provided,
                 # which could represent a version label or a Git SHA-1 hash, for example.
             "service": "A String", # An identifier of the service, such as the name of the
@@ -259,6 +271,10 @@
         ],
       },
     ],
+    "timeRangeBegin": "A String", # The timestamp specifies the start time to which the request was restricted.
+        # The start time is set based on the requested time range. It may be adjusted
+        # to a later time if a project has exceeded the storage quota and older data
+        # has been deleted.
   }</pre>
 </div>
 
diff --git a/docs/dyn/clouderrorreporting_v1beta1.projects.html b/docs/dyn/clouderrorreporting_v1beta1.projects.html
index ff6465f..7929c1f 100644
--- a/docs/dyn/clouderrorreporting_v1beta1.projects.html
+++ b/docs/dyn/clouderrorreporting_v1beta1.projects.html
@@ -100,7 +100,8 @@
 Args:
   projectName: string, [Required] The resource name of the Google Cloud Platform project. Written
 as `projects/` plus the
-[Google Cloud Platform project ID](https://support.google.com/cloud/answer/6158840).
+[Google Cloud Platform project
+ID](https://support.google.com/cloud/answer/6158840).
 Example: `projects/my-project-123`. (required)
   x__xgafv: string, V1 error format.
     Allowed values
diff --git a/docs/dyn/cloudresourcemanager_v1.operations.html b/docs/dyn/cloudresourcemanager_v1.operations.html
index 996cd92..c936baa 100644
--- a/docs/dyn/cloudresourcemanager_v1.operations.html
+++ b/docs/dyn/cloudresourcemanager_v1.operations.html
@@ -76,37 +76,111 @@
 <h2>Instance Methods</h2>
 <p class="toc_element">
   <code><a href="#get">get(name, x__xgafv=None)</a></code></p>
-<p class="firstline">Gets the latest state of a long-running operation. Clients can use this method to poll the operation result at intervals as recommended by the API service.</p>
+<p class="firstline">Gets the latest state of a long-running operation.  Clients can use this</p>
 <h3>Method Details</h3>
 <div class="method">
     <code class="details" id="get">get(name, x__xgafv=None)</code>
-  <pre>Gets the latest state of a long-running operation. Clients can use this method to poll the operation result at intervals as recommended by the API service.
+  <pre>Gets the latest state of a long-running operation.  Clients can use this
+method to poll the operation result at intervals as recommended by the API
+service.
 
 Args:
   name: string, The name of the operation resource. (required)
   x__xgafv: string, V1 error format.
+    Allowed values
+      1 - v1 error format
+      2 - v2 error format
 
 Returns:
   An object of the form:
 
-    { # This resource represents a long-running operation that is the result of a network API call.
-    "response": { # The normal response of the operation in case of success. If the original method returns no data on success, such as `Delete`, the response is `google.protobuf.Empty`. If the original method is standard `Get`/`Create`/`Update`, the response should be the resource. For other methods, the response should have the type `XxxResponse`, where `Xxx` is the original method name. For example, if the original method name is `TakeSnapshot()`, the inferred response type is `TakeSnapshotResponse`.
+    { # This resource represents a long-running operation that is the result of a
+      # network API call.
+    "metadata": { # Service-specific metadata associated with the operation.  It typically
+        # contains progress information and common metadata such as create time.
+        # Some services might not provide such metadata.  Any method that returns a
+        # long-running operation should document the metadata type, if any.
       "a_key": "", # Properties of the object. Contains field @type with type URL.
     },
-    "error": { # The `Status` type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by [gRPC](https://github.com/grpc). The error model is designed to be: - Simple to use and understand for most users - Flexible enough to meet unexpected needs # Overview The `Status` message contains three pieces of data: error code, error message, and error details. The error code should be an enum value of google.rpc.Code, but it may accept additional error codes if needed. The error message should be a developer-facing English message that helps developers *understand* and *resolve* the error. If a localized user-facing error message is needed, put the localized message in the error details or localize it in the client. The optional error details may contain arbitrary information about the error. There is a predefined set of error detail types in the package `google.rpc` which can be used for common error conditions. # Language mapping The `Status` message is the logical representation of the error model, but it is not necessarily the actual wire format. When the `Status` message is exposed in different client libraries and different wire protocols, it can be mapped differently. For example, it will likely be mapped to some exceptions in Java, but more likely mapped to some error codes in C. # Other uses The error model and the `Status` message can be used in a variety of environments, either with or without APIs, to provide a consistent developer experience across different environments. Example uses of this error model include: - Partial errors. If a service needs to return partial errors to the client, it may embed the `Status` in the normal response to indicate the partial errors. - Workflow errors. A typical workflow has multiple steps. Each step may have a `Status` message for error reporting purpose. - Batch operations. If a client uses batch request and batch response, the `Status` message should be used directly inside batch response, one for each error sub-response. - Asynchronous operations. If an API call embeds asynchronous operation results in its response, the status of those operations should be represented directly using the `Status` message. - Logging. If some API errors are stored in logs, the message `Status` could be used directly after any stripping needed for security/privacy reasons. # The error result of the operation in case of failure.
-      "message": "A String", # A developer-facing error message, which should be in English. Any user-facing error message should be localized and sent in the google.rpc.Status.details field, or localized by the client.
+    "done": True or False, # If the value is `false`, it means the operation is still in progress.
+        # If true, the operation is completed, and either `error` or `response` is
+        # available.
+    "response": { # The normal response of the operation in case of success.  If the original
+        # method returns no data on success, such as `Delete`, the response is
+        # `google.protobuf.Empty`.  If the original method is standard
+        # `Get`/`Create`/`Update`, the response should be the resource.  For other
+        # methods, the response should have the type `XxxResponse`, where `Xxx`
+        # is the original method name.  For example, if the original method name
+        # is `TakeSnapshot()`, the inferred response type is
+        # `TakeSnapshotResponse`.
+      "a_key": "", # Properties of the object. Contains field @type with type URL.
+    },
+    "name": "A String", # The server-assigned name, which is only unique within the same service that
+        # originally returns it. If you use the default HTTP mapping, the
+        # `name` should have the format of `operations/some/unique/name`.
+    "error": { # The `Status` type defines a logical error model that is suitable for different # The error result of the operation in case of failure or cancellation.
+        # programming environments, including REST APIs and RPC APIs. It is used by
+        # [gRPC](https://github.com/grpc). The error model is designed to be:
+        #
+        # - Simple to use and understand for most users
+        # - Flexible enough to meet unexpected needs
+        #
+        # # Overview
+        #
+        # The `Status` message contains three pieces of data: error code, error message,
+        # and error details. The error code should be an enum value of
+        # google.rpc.Code, but it may accept additional error codes if needed.  The
+        # error message should be a developer-facing English message that helps
+        # developers *understand* and *resolve* the error. If a localized user-facing
+        # error message is needed, put the localized message in the error details or
+        # localize it in the client. The optional error details may contain arbitrary
+        # information about the error. There is a predefined set of error detail types
+        # in the package `google.rpc` which can be used for common error conditions.
+        #
+        # # Language mapping
+        #
+        # The `Status` message is the logical representation of the error model, but it
+        # is not necessarily the actual wire format. When the `Status` message is
+        # exposed in different client libraries and different wire protocols, it can be
+        # mapped differently. For example, it will likely be mapped to some exceptions
+        # in Java, but more likely mapped to some error codes in C.
+        #
+        # # Other uses
+        #
+        # The error model and the `Status` message can be used in a variety of
+        # environments, either with or without APIs, to provide a
+        # consistent developer experience across different environments.
+        #
+        # Example uses of this error model include:
+        #
+        # - Partial errors. If a service needs to return partial errors to the client,
+        #     it may embed the `Status` in the normal response to indicate the partial
+        #     errors.
+        #
+        # - Workflow errors. A typical workflow has multiple steps. Each step may
+        #     have a `Status` message for error reporting purpose.
+        #
+        # - Batch operations. If a client uses batch request and batch response, the
+        #     `Status` message should be used directly inside batch response, one for
+        #     each error sub-response.
+        #
+        # - Asynchronous operations. If an API call embeds asynchronous operation
+        #     results in its response, the status of those operations should be
+        #     represented directly using the `Status` message.
+        #
+        # - Logging. If some API errors are stored in logs, the message `Status` could
+        #     be used directly after any stripping needed for security/privacy reasons.
+      "message": "A String", # A developer-facing error message, which should be in English. Any
+          # user-facing error message should be localized and sent in the
+          # google.rpc.Status.details field, or localized by the client.
       "code": 42, # The status code, which should be an enum value of google.rpc.Code.
-      "details": [ # A list of messages that carry the error details. There will be a common set of message types for APIs to use.
+      "details": [ # A list of messages that carry the error details.  There will be a
+          # common set of message types for APIs to use.
         {
           "a_key": "", # Properties of the object. Contains field @type with type URL.
         },
       ],
     },
-    "done": True or False, # If the value is `false`, it means the operation is still in progress. If true, the operation is completed, and either `error` or `response` is available.
-    "name": "A String", # The server-assigned name, which is only unique within the same service that originally returns it. If you use the default HTTP mapping, the `name` should have the format of `operations/some/unique/name`.
-    "metadata": { # Service-specific metadata associated with the operation. It typically contains progress information and common metadata such as create time. Some services might not provide such metadata. Any method that returns a long-running operation should document the metadata type, if any.
-      "a_key": "", # Properties of the object. Contains field @type with type URL.
-    },
   }</pre>
 </div>
 
diff --git a/docs/dyn/cloudresourcemanager_v1.organizations.html b/docs/dyn/cloudresourcemanager_v1.organizations.html
index 933fc5b..4cbe33a 100644
--- a/docs/dyn/cloudresourcemanager_v1.organizations.html
+++ b/docs/dyn/cloudresourcemanager_v1.organizations.html
@@ -78,17 +78,17 @@
   <code><a href="#get">get(name, x__xgafv=None)</a></code></p>
 <p class="firstline">Fetches an Organization resource identified by the specified resource name.</p>
 <p class="toc_element">
-  <code><a href="#getIamPolicy">getIamPolicy(resource, body, x__xgafv=None)</a></code></p>
-<p class="firstline">Gets the access control policy for an Organization resource. May be empty if no such policy or resource exists. The `resource` field should be the organization's resource name, e.g. "organizations/123".</p>
+  <code><a href="#getIamPolicy">getIamPolicy(resource=None, body, x__xgafv=None)</a></code></p>
+<p class="firstline">Gets the access control policy for an Organization resource. May be empty</p>
 <p class="toc_element">
   <code><a href="#search">search(body, x__xgafv=None)</a></code></p>
-<p class="firstline">Searches Organization resources that are visible to the user and satisfy the specified filter. This method returns Organizations in an unspecified order. New Organizations do not necessarily appear at the end of the results.</p>
+<p class="firstline">Searches Organization resources that are visible to the user and satisfy</p>
 <p class="toc_element">
-  <code><a href="#setIamPolicy">setIamPolicy(resource, body, x__xgafv=None)</a></code></p>
-<p class="firstline">Sets the access control policy on an Organization resource. Replaces any existing policy. The `resource` field should be the organization's resource name, e.g. "organizations/123".</p>
+  <code><a href="#setIamPolicy">setIamPolicy(resource=None, body, x__xgafv=None)</a></code></p>
+<p class="firstline">Sets the access control policy on an Organization resource. Replaces any</p>
 <p class="toc_element">
-  <code><a href="#testIamPermissions">testIamPermissions(resource, body, x__xgafv=None)</a></code></p>
-<p class="firstline">Returns permissions that a caller has on the specified Organization. The `resource` field should be the organization's resource name, e.g. "organizations/123".</p>
+  <code><a href="#testIamPermissions">testIamPermissions(resource=None, body, x__xgafv=None)</a></code></p>
+<p class="firstline">Returns permissions that a caller has on the specified Organization.</p>
 <h3>Method Details</h3>
 <div class="method">
     <code class="details" id="get">get(name, x__xgafv=None)</code>
@@ -97,27 +97,47 @@
 Args:
   name: string, The resource name of the Organization to fetch, e.g. "organizations/1234". (required)
   x__xgafv: string, V1 error format.
+    Allowed values
+      1 - v1 error format
+      2 - v2 error format
 
 Returns:
   An object of the form:
 
-    { # The root node in the resource hierarchy to which a particular entity's (e.g., company) resources belong.
-    "owner": { # The entity that owns an Organization. The lifetime of the Organization and all of its descendants are bound to the `OrganizationOwner`. If the `OrganizationOwner` is deleted, the Organization and all its descendants will be deleted. # The owner of this Organization. The owner should be specified on creation. Once set, it cannot be changed. This field is required.
+    { # The root node in the resource hierarchy to which a particular entity's
+      # (e.g., company) resources belong.
+    "owner": { # The entity that owns an Organization. The lifetime of the Organization and # The owner of this Organization. The owner should be specified on
+        # creation. Once set, it cannot be changed.
+        # This field is required.
+        # all of its descendants are bound to the `OrganizationOwner`. If the
+        # `OrganizationOwner` is deleted, the Organization and all its descendants will
+        # be deleted.
       "directoryCustomerId": "A String", # The Google for Work customer id used in the Directory API.
     },
-    "creationTime": "A String", # Timestamp when the Organization was created. Assigned by the server. @OutputOnly
-    "displayName": "A String", # A friendly string to be used to refer to the Organization in the UI. Assigned by the server, set to the firm name of the Google For Work customer that owns this organization. @OutputOnly
-    "name": "A String", # Output Only. The resource name of the organization. This is the organization's relative path in the API. Its format is "organizations/[organization_id]". For example, "organizations/1234".
-    "lifecycleState": "A String", # The organization's current lifecycle state. Assigned by the server. @OutputOnly
+    "creationTime": "A String", # Timestamp when the Organization was created. Assigned by the server.
+        # @OutputOnly
+    "displayName": "A String", # A friendly string to be used to refer to the Organization in the UI.
+        # Assigned by the server, set to the firm name of the Google For Work
+        # customer that owns this organization.
+        # @OutputOnly
+    "lifecycleState": "A String", # The organization's current lifecycle state. Assigned by the server.
+        # @OutputOnly
+    "name": "A String", # Output Only. The resource name of the organization. This is the
+        # organization's relative path in the API. Its format is
+        # "organizations/[organization_id]". For example, "organizations/1234".
   }</pre>
 </div>
 
 <div class="method">
-    <code class="details" id="getIamPolicy">getIamPolicy(resource, body, x__xgafv=None)</code>
-  <pre>Gets the access control policy for an Organization resource. May be empty if no such policy or resource exists. The `resource` field should be the organization's resource name, e.g. "organizations/123".
+    <code class="details" id="getIamPolicy">getIamPolicy(resource=None, body, x__xgafv=None)</code>
+  <pre>Gets the access control policy for an Organization resource. May be empty
+if no such policy or resource exists. The `resource` field should be the
+organization's resource name, e.g. "organizations/123".
 
 Args:
-  resource: string, REQUIRED: The resource for which the policy is being requested. `resource` is usually specified as a path. For example, a Project resource is specified as `projects/{project}`. (required)
+  resource: string, REQUIRED: The resource for which the policy is being requested.
+`resource` is usually specified as a path. For example, a Project
+resource is specified as `projects/{project}`. (required)
   body: object, The request body. (required)
     The object takes the form of:
 
@@ -125,124 +145,380 @@
   }
 
   x__xgafv: string, V1 error format.
+    Allowed values
+      1 - v1 error format
+      2 - v2 error format
 
 Returns:
   An object of the form:
 
-    { # Defines an Identity and Access Management (IAM) policy. It is used to specify access control policies for Cloud Platform resources. A `Policy` consists of a list of `bindings`. A `Binding` binds a list of `members` to a `role`, where the members can be user accounts, Google groups, Google domains, and service accounts. A `role` is a named list of permissions defined by IAM. **Example** { "bindings": [ { "role": "roles/owner", "members": [ "user:mike@example.com", "group:admins@example.com", "domain:google.com", "serviceAccount:my-other-app@appspot.gserviceaccount.com", ] }, { "role": "roles/viewer", "members": ["user:sean@example.com"] } ] } For a description of IAM and its features, see the [IAM developer's guide](https://cloud.google.com/iam).
-    "bindings": [ # Associates a list of `members` to a `role`. Multiple `bindings` must not be specified for the same `role`. `bindings` with no members will result in an error.
+    { # Defines an Identity and Access Management (IAM) policy. It is used to
+      # specify access control policies for Cloud Platform resources.
+      #
+      #
+      # A `Policy` consists of a list of `bindings`. A `Binding` binds a list of
+      # `members` to a `role`, where the members can be user accounts, Google groups,
+      # Google domains, and service accounts. A `role` is a named list of permissions
+      # defined by IAM.
+      #
+      # **Example**
+      #
+      #     {
+      #       "bindings": [
+      #         {
+      #           "role": "roles/owner",
+      #           "members": [
+      #             "user:mike@example.com",
+      #             "group:admins@example.com",
+      #             "domain:google.com",
+      #             "serviceAccount:my-other-app@appspot.gserviceaccount.com",
+      #           ]
+      #         },
+      #         {
+      #           "role": "roles/viewer",
+      #           "members": ["user:sean@example.com"]
+      #         }
+      #       ]
+      #     }
+      #
+      # For a description of IAM and its features, see the
+      # [IAM developer's guide](https://cloud.google.com/iam).
+    "bindings": [ # Associates a list of `members` to a `role`.
+        # Multiple `bindings` must not be specified for the same `role`.
+        # `bindings` with no members will result in an error.
       { # Associates `members` with a `role`.
-        "role": "A String", # Role that is assigned to `members`. For example, `roles/viewer`, `roles/editor`, or `roles/owner`. Required
-        "members": [ # Specifies the identities requesting access for a Cloud Platform resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@gmail.com` or `joe@example.com`. * `serviceAccount:{emailid}`: An email address that represents a service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: A Google Apps domain name that represents all the users of that domain. For example, `google.com` or `example.com`.
+        "role": "A String", # Role that is assigned to `members`.
+            # For example, `roles/viewer`, `roles/editor`, or `roles/owner`.
+            # Required
+        "members": [ # Specifies the identities requesting access for a Cloud Platform resource.
+            # `members` can have the following values:
+            #
+            # * `allUsers`: A special identifier that represents anyone who is
+            #    on the internet; with or without a Google account.
+            #
+            # * `allAuthenticatedUsers`: A special identifier that represents anyone
+            #    who is authenticated with a Google account or a service account.
+            #
+            # * `user:{emailid}`: An email address that represents a specific Google
+            #    account. For example, `alice@gmail.com` or `joe@example.com`.
+            #
+            #
+            # * `serviceAccount:{emailid}`: An email address that represents a service
+            #    account. For example, `my-other-app@appspot.gserviceaccount.com`.
+            #
+            # * `group:{emailid}`: An email address that represents a Google group.
+            #    For example, `admins@example.com`.
+            #
+            # * `domain:{domain}`: A Google Apps domain name that represents all the
+            #    users of that domain. For example, `google.com` or `example.com`.
+            #
           "A String",
         ],
       },
     ],
+    "etag": "A String", # `etag` is used for optimistic concurrency control as a way to help
+        # prevent simultaneous updates of a policy from overwriting each other.
+        # It is strongly suggested that systems make use of the `etag` in the
+        # read-modify-write cycle to perform policy updates in order to avoid race
+        # conditions: An `etag` is returned in the response to `getIamPolicy`, and
+        # systems are expected to put that etag in the request to `setIamPolicy` to
+        # ensure that their change will be applied to the same version of the policy.
+        #
+        # If no `etag` is provided in the call to `setIamPolicy`, then the existing
+        # policy is overwritten blindly.
     "version": 42, # Version of the `Policy`. The default version is 0.
-    "etag": "A String", # `etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. If no `etag` is provided in the call to `setIamPolicy`, then the existing policy is overwritten blindly.
   }</pre>
 </div>
 
 <div class="method">
     <code class="details" id="search">search(body, x__xgafv=None)</code>
-  <pre>Searches Organization resources that are visible to the user and satisfy the specified filter. This method returns Organizations in an unspecified order. New Organizations do not necessarily appear at the end of the results.
+  <pre>Searches Organization resources that are visible to the user and satisfy
+the specified filter. This method returns Organizations in an unspecified
+order. New Organizations do not necessarily appear at the end of the
+results.
 
 Args:
   body: object, The request body. (required)
     The object takes the form of:
 
 { # The request sent to the `SearchOrganizations` method.
-    "filter": "A String", # An optional query string used to filter the Organizations to return in the response. Filter rules are case-insensitive. Organizations may be filtered by `owner.directoryCustomerId` or by `domain`, where the domain is a Google for Work domain, for example: |Filter|Description| |------|-----------| |owner.directorycustomerid:123456789|Organizations with `owner.directory_customer_id` equal to `123456789`.| |domain:google.com|Organizations corresponding to the domain `google.com`.| This field is optional.
-    "pageToken": "A String", # A pagination token returned from a previous call to `SearchOrganizations` that indicates from where listing should continue. This field is optional.
-    "pageSize": 42, # The maximum number of Organizations to return in the response. This field is optional.
+    "filter": "A String", # An optional query string used to filter the Organizations to return in
+        # the response. Filter rules are case-insensitive.
+        # 
+        # 
+        # Organizations may be filtered by `owner.directoryCustomerId` or by
+        # `domain`, where the domain is a Google for Work domain, for example:
+        # 
+        # |Filter|Description|
+        # |------|-----------|
+        # |owner.directorycustomerid:123456789|Organizations with
+        # `owner.directory_customer_id` equal to `123456789`.|
+        # |domain:google.com|Organizations corresponding to the domain `google.com`.|
+        # 
+        # This field is optional.
+    "pageToken": "A String", # A pagination token returned from a previous call to `SearchOrganizations`
+        # that indicates from where listing should continue.
+        # This field is optional.
+    "pageSize": 42, # The maximum number of Organizations to return in the response.
+        # This field is optional.
   }
 
   x__xgafv: string, V1 error format.
+    Allowed values
+      1 - v1 error format
+      2 - v2 error format
 
 Returns:
   An object of the form:
 
     { # The response returned from the `SearchOrganizations` method.
-    "nextPageToken": "A String", # A pagination token to be used to retrieve the next page of results. If the result is too large to fit within the page size specified in the request, this field will be set with a token that can be used to fetch the next page of results. If this field is empty, it indicates that this response contains the last page of results.
-    "organizations": [ # The list of Organizations that matched the search query, possibly paginated.
-      { # The root node in the resource hierarchy to which a particular entity's (e.g., company) resources belong.
-        "owner": { # The entity that owns an Organization. The lifetime of the Organization and all of its descendants are bound to the `OrganizationOwner`. If the `OrganizationOwner` is deleted, the Organization and all its descendants will be deleted. # The owner of this Organization. The owner should be specified on creation. Once set, it cannot be changed. This field is required.
+    "nextPageToken": "A String", # A pagination token to be used to retrieve the next page of results. If the
+        # result is too large to fit within the page size specified in the request,
+        # this field will be set with a token that can be used to fetch the next page
+        # of results. If this field is empty, it indicates that this response
+        # contains the last page of results.
+    "organizations": [ # The list of Organizations that matched the search query, possibly
+        # paginated.
+      { # The root node in the resource hierarchy to which a particular entity's
+          # (e.g., company) resources belong.
+        "owner": { # The entity that owns an Organization. The lifetime of the Organization and # The owner of this Organization. The owner should be specified on
+            # creation. Once set, it cannot be changed.
+            # This field is required.
+            # all of its descendants are bound to the `OrganizationOwner`. If the
+            # `OrganizationOwner` is deleted, the Organization and all its descendants will
+            # be deleted.
           "directoryCustomerId": "A String", # The Google for Work customer id used in the Directory API.
         },
-        "creationTime": "A String", # Timestamp when the Organization was created. Assigned by the server. @OutputOnly
-        "displayName": "A String", # A friendly string to be used to refer to the Organization in the UI. Assigned by the server, set to the firm name of the Google For Work customer that owns this organization. @OutputOnly
-        "name": "A String", # Output Only. The resource name of the organization. This is the organization's relative path in the API. Its format is "organizations/[organization_id]". For example, "organizations/1234".
-        "lifecycleState": "A String", # The organization's current lifecycle state. Assigned by the server. @OutputOnly
+        "creationTime": "A String", # Timestamp when the Organization was created. Assigned by the server.
+            # @OutputOnly
+        "displayName": "A String", # A friendly string to be used to refer to the Organization in the UI.
+            # Assigned by the server, set to the firm name of the Google For Work
+            # customer that owns this organization.
+            # @OutputOnly
+        "lifecycleState": "A String", # The organization's current lifecycle state. Assigned by the server.
+            # @OutputOnly
+        "name": "A String", # Output Only. The resource name of the organization. This is the
+            # organization's relative path in the API. Its format is
+            # "organizations/[organization_id]". For example, "organizations/1234".
       },
     ],
   }</pre>
 </div>
 
 <div class="method">
-    <code class="details" id="setIamPolicy">setIamPolicy(resource, body, x__xgafv=None)</code>
-  <pre>Sets the access control policy on an Organization resource. Replaces any existing policy. The `resource` field should be the organization's resource name, e.g. "organizations/123".
+    <code class="details" id="setIamPolicy">setIamPolicy(resource=None, body, x__xgafv=None)</code>
+  <pre>Sets the access control policy on an Organization resource. Replaces any
+existing policy. The `resource` field should be the organization's resource
+name, e.g. "organizations/123".
 
 Args:
-  resource: string, REQUIRED: The resource for which the policy is being specified. `resource` is usually specified as a path. For example, a Project resource is specified as `projects/{project}`. (required)
+  resource: string, REQUIRED: The resource for which the policy is being specified.
+`resource` is usually specified as a path. For example, a Project
+resource is specified as `projects/{project}`. (required)
   body: object, The request body. (required)
     The object takes the form of:
 
 { # Request message for `SetIamPolicy` method.
-    "policy": { # Defines an Identity and Access Management (IAM) policy. It is used to specify access control policies for Cloud Platform resources. A `Policy` consists of a list of `bindings`. A `Binding` binds a list of `members` to a `role`, where the members can be user accounts, Google groups, Google domains, and service accounts. A `role` is a named list of permissions defined by IAM. **Example** { "bindings": [ { "role": "roles/owner", "members": [ "user:mike@example.com", "group:admins@example.com", "domain:google.com", "serviceAccount:my-other-app@appspot.gserviceaccount.com", ] }, { "role": "roles/viewer", "members": ["user:sean@example.com"] } ] } For a description of IAM and its features, see the [IAM developer's guide](https://cloud.google.com/iam). # REQUIRED: The complete policy to be applied to the `resource`. The size of the policy is limited to a few 10s of KB. An empty policy is a valid policy but certain Cloud Platform services (such as Projects) might reject them.
-      "bindings": [ # Associates a list of `members` to a `role`. Multiple `bindings` must not be specified for the same `role`. `bindings` with no members will result in an error.
+    "policy": { # Defines an Identity and Access Management (IAM) policy. It is used to # REQUIRED: The complete policy to be applied to the `resource`. The size of
+        # the policy is limited to a few 10s of KB. An empty policy is a
+        # valid policy but certain Cloud Platform services (such as Projects)
+        # might reject them.
+        # specify access control policies for Cloud Platform resources.
+        #
+        #
+        # A `Policy` consists of a list of `bindings`. A `Binding` binds a list of
+        # `members` to a `role`, where the members can be user accounts, Google groups,
+        # Google domains, and service accounts. A `role` is a named list of permissions
+        # defined by IAM.
+        #
+        # **Example**
+        #
+        #     {
+        #       "bindings": [
+        #         {
+        #           "role": "roles/owner",
+        #           "members": [
+        #             "user:mike@example.com",
+        #             "group:admins@example.com",
+        #             "domain:google.com",
+        #             "serviceAccount:my-other-app@appspot.gserviceaccount.com",
+        #           ]
+        #         },
+        #         {
+        #           "role": "roles/viewer",
+        #           "members": ["user:sean@example.com"]
+        #         }
+        #       ]
+        #     }
+        #
+        # For a description of IAM and its features, see the
+        # [IAM developer's guide](https://cloud.google.com/iam).
+      "bindings": [ # Associates a list of `members` to a `role`.
+          # Multiple `bindings` must not be specified for the same `role`.
+          # `bindings` with no members will result in an error.
         { # Associates `members` with a `role`.
-          "role": "A String", # Role that is assigned to `members`. For example, `roles/viewer`, `roles/editor`, or `roles/owner`. Required
-          "members": [ # Specifies the identities requesting access for a Cloud Platform resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@gmail.com` or `joe@example.com`. * `serviceAccount:{emailid}`: An email address that represents a service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: A Google Apps domain name that represents all the users of that domain. For example, `google.com` or `example.com`.
+          "role": "A String", # Role that is assigned to `members`.
+              # For example, `roles/viewer`, `roles/editor`, or `roles/owner`.
+              # Required
+          "members": [ # Specifies the identities requesting access for a Cloud Platform resource.
+              # `members` can have the following values:
+              #
+              # * `allUsers`: A special identifier that represents anyone who is
+              #    on the internet; with or without a Google account.
+              #
+              # * `allAuthenticatedUsers`: A special identifier that represents anyone
+              #    who is authenticated with a Google account or a service account.
+              #
+              # * `user:{emailid}`: An email address that represents a specific Google
+              #    account. For example, `alice@gmail.com` or `joe@example.com`.
+              #
+              #
+              # * `serviceAccount:{emailid}`: An email address that represents a service
+              #    account. For example, `my-other-app@appspot.gserviceaccount.com`.
+              #
+              # * `group:{emailid}`: An email address that represents a Google group.
+              #    For example, `admins@example.com`.
+              #
+              # * `domain:{domain}`: A Google Apps domain name that represents all the
+              #    users of that domain. For example, `google.com` or `example.com`.
+              #
             "A String",
           ],
         },
       ],
+      "etag": "A String", # `etag` is used for optimistic concurrency control as a way to help
+          # prevent simultaneous updates of a policy from overwriting each other.
+          # It is strongly suggested that systems make use of the `etag` in the
+          # read-modify-write cycle to perform policy updates in order to avoid race
+          # conditions: An `etag` is returned in the response to `getIamPolicy`, and
+          # systems are expected to put that etag in the request to `setIamPolicy` to
+          # ensure that their change will be applied to the same version of the policy.
+          #
+          # If no `etag` is provided in the call to `setIamPolicy`, then the existing
+          # policy is overwritten blindly.
       "version": 42, # Version of the `Policy`. The default version is 0.
-      "etag": "A String", # `etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. If no `etag` is provided in the call to `setIamPolicy`, then the existing policy is overwritten blindly.
     },
   }
 
   x__xgafv: string, V1 error format.
+    Allowed values
+      1 - v1 error format
+      2 - v2 error format
 
 Returns:
   An object of the form:
 
-    { # Defines an Identity and Access Management (IAM) policy. It is used to specify access control policies for Cloud Platform resources. A `Policy` consists of a list of `bindings`. A `Binding` binds a list of `members` to a `role`, where the members can be user accounts, Google groups, Google domains, and service accounts. A `role` is a named list of permissions defined by IAM. **Example** { "bindings": [ { "role": "roles/owner", "members": [ "user:mike@example.com", "group:admins@example.com", "domain:google.com", "serviceAccount:my-other-app@appspot.gserviceaccount.com", ] }, { "role": "roles/viewer", "members": ["user:sean@example.com"] } ] } For a description of IAM and its features, see the [IAM developer's guide](https://cloud.google.com/iam).
-    "bindings": [ # Associates a list of `members` to a `role`. Multiple `bindings` must not be specified for the same `role`. `bindings` with no members will result in an error.
+    { # Defines an Identity and Access Management (IAM) policy. It is used to
+      # specify access control policies for Cloud Platform resources.
+      #
+      #
+      # A `Policy` consists of a list of `bindings`. A `Binding` binds a list of
+      # `members` to a `role`, where the members can be user accounts, Google groups,
+      # Google domains, and service accounts. A `role` is a named list of permissions
+      # defined by IAM.
+      #
+      # **Example**
+      #
+      #     {
+      #       "bindings": [
+      #         {
+      #           "role": "roles/owner",
+      #           "members": [
+      #             "user:mike@example.com",
+      #             "group:admins@example.com",
+      #             "domain:google.com",
+      #             "serviceAccount:my-other-app@appspot.gserviceaccount.com",
+      #           ]
+      #         },
+      #         {
+      #           "role": "roles/viewer",
+      #           "members": ["user:sean@example.com"]
+      #         }
+      #       ]
+      #     }
+      #
+      # For a description of IAM and its features, see the
+      # [IAM developer's guide](https://cloud.google.com/iam).
+    "bindings": [ # Associates a list of `members` to a `role`.
+        # Multiple `bindings` must not be specified for the same `role`.
+        # `bindings` with no members will result in an error.
       { # Associates `members` with a `role`.
-        "role": "A String", # Role that is assigned to `members`. For example, `roles/viewer`, `roles/editor`, or `roles/owner`. Required
-        "members": [ # Specifies the identities requesting access for a Cloud Platform resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@gmail.com` or `joe@example.com`. * `serviceAccount:{emailid}`: An email address that represents a service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: A Google Apps domain name that represents all the users of that domain. For example, `google.com` or `example.com`.
+        "role": "A String", # Role that is assigned to `members`.
+            # For example, `roles/viewer`, `roles/editor`, or `roles/owner`.
+            # Required
+        "members": [ # Specifies the identities requesting access for a Cloud Platform resource.
+            # `members` can have the following values:
+            #
+            # * `allUsers`: A special identifier that represents anyone who is
+            #    on the internet; with or without a Google account.
+            #
+            # * `allAuthenticatedUsers`: A special identifier that represents anyone
+            #    who is authenticated with a Google account or a service account.
+            #
+            # * `user:{emailid}`: An email address that represents a specific Google
+            #    account. For example, `alice@gmail.com` or `joe@example.com`.
+            #
+            #
+            # * `serviceAccount:{emailid}`: An email address that represents a service
+            #    account. For example, `my-other-app@appspot.gserviceaccount.com`.
+            #
+            # * `group:{emailid}`: An email address that represents a Google group.
+            #    For example, `admins@example.com`.
+            #
+            # * `domain:{domain}`: A Google Apps domain name that represents all the
+            #    users of that domain. For example, `google.com` or `example.com`.
+            #
           "A String",
         ],
       },
     ],
+    "etag": "A String", # `etag` is used for optimistic concurrency control as a way to help
+        # prevent simultaneous updates of a policy from overwriting each other.
+        # It is strongly suggested that systems make use of the `etag` in the
+        # read-modify-write cycle to perform policy updates in order to avoid race
+        # conditions: An `etag` is returned in the response to `getIamPolicy`, and
+        # systems are expected to put that etag in the request to `setIamPolicy` to
+        # ensure that their change will be applied to the same version of the policy.
+        #
+        # If no `etag` is provided in the call to `setIamPolicy`, then the existing
+        # policy is overwritten blindly.
     "version": 42, # Version of the `Policy`. The default version is 0.
-    "etag": "A String", # `etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. If no `etag` is provided in the call to `setIamPolicy`, then the existing policy is overwritten blindly.
   }</pre>
 </div>
 
 <div class="method">
-    <code class="details" id="testIamPermissions">testIamPermissions(resource, body, x__xgafv=None)</code>
-  <pre>Returns permissions that a caller has on the specified Organization. The `resource` field should be the organization's resource name, e.g. "organizations/123".
+    <code class="details" id="testIamPermissions">testIamPermissions(resource=None, body, x__xgafv=None)</code>
+  <pre>Returns permissions that a caller has on the specified Organization.
+The `resource` field should be the organization's resource name,
+e.g. "organizations/123".
 
 Args:
-  resource: string, REQUIRED: The resource for which the policy detail is being requested. `resource` is usually specified as a path. For example, a Project resource is specified as `projects/{project}`. (required)
+  resource: string, REQUIRED: The resource for which the policy detail is being requested.
+`resource` is usually specified as a path. For example, a Project
+resource is specified as `projects/{project}`. (required)
   body: object, The request body. (required)
     The object takes the form of:
 
 { # Request message for `TestIamPermissions` method.
-    "permissions": [ # The set of permissions to check for the `resource`. Permissions with wildcards (such as '*' or 'storage.*') are not allowed. For more information see [IAM Overview](https://cloud.google.com/iam/docs/overview#permissions).
+    "permissions": [ # The set of permissions to check for the `resource`. Permissions with
+        # wildcards (such as '*' or 'storage.*') are not allowed. For more
+        # information see
+        # [IAM Overview](https://cloud.google.com/iam/docs/overview#permissions).
       "A String",
     ],
   }
 
   x__xgafv: string, V1 error format.
+    Allowed values
+      1 - v1 error format
+      2 - v2 error format
 
 Returns:
   An object of the form:
 
     { # Response message for `TestIamPermissions` method.
-    "permissions": [ # A subset of `TestPermissionsRequest.permissions` that the caller is allowed.
+    "permissions": [ # A subset of `TestPermissionsRequest.permissions` that the caller is
+        # allowed.
       "A String",
     ],
   }</pre>
diff --git a/docs/dyn/cloudresourcemanager_v1.projects.html b/docs/dyn/cloudresourcemanager_v1.projects.html
index faa247a..be4714c 100644
--- a/docs/dyn/cloudresourcemanager_v1.projects.html
+++ b/docs/dyn/cloudresourcemanager_v1.projects.html
@@ -76,132 +76,409 @@
 <h2>Instance Methods</h2>
 <p class="toc_element">
   <code><a href="#create">create(body, x__xgafv=None)</a></code></p>
-<p class="firstline">Request that a new Project be created. The result is an Operation which can be used to track the creation process. It is automatically deleted after a few hours, so there is no need to call DeleteOperation. Our SLO permits Project creation to take up to 30 seconds at the 90th percentile. As of 2016-08-29, we are observing 6 seconds 50th percentile latency. 95th percentile latency is around 11 seconds. We recommend polling at the 5th second with an exponential backoff.</p>
+<p class="firstline">Request that a new Project be created. The result is an Operation which</p>
 <p class="toc_element">
-  <code><a href="#delete">delete(projectId, x__xgafv=None)</a></code></p>
-<p class="firstline">Marks the Project identified by the specified `project_id` (for example, `my-project-123`) for deletion. This method will only affect the Project if the following criteria are met: + The Project does not have a billing account associated with it. + The Project has a lifecycle state of ACTIVE. This method changes the Project's lifecycle state from ACTIVE to DELETE_REQUESTED. The deletion starts at an unspecified time, at which point the Project is no longer accessible. Until the deletion completes, you can check the lifecycle state checked by retrieving the Project with GetProject, and the Project remains visible to ListProjects. However, you cannot update the project. After the deletion completes, the Project is not retrievable by the GetProject and ListProjects methods. The caller must have modify permissions for this Project.</p>
+  <code><a href="#delete">delete(projectId=None, x__xgafv=None)</a></code></p>
+<p class="firstline">Marks the Project identified by the specified</p>
 <p class="toc_element">
-  <code><a href="#get">get(projectId, x__xgafv=None)</a></code></p>
-<p class="firstline">Retrieves the Project identified by the specified `project_id` (for example, `my-project-123`). The caller must have read permissions for this Project.</p>
+  <code><a href="#get">get(projectId=None, x__xgafv=None)</a></code></p>
+<p class="firstline">Retrieves the Project identified by the specified</p>
 <p class="toc_element">
-  <code><a href="#getIamPolicy">getIamPolicy(resource, body, x__xgafv=None)</a></code></p>
-<p class="firstline">Returns the IAM access control policy for the specified Project. Permission is denied if the policy or the resource does not exist.</p>
+  <code><a href="#getAncestry">getAncestry(projectId=None, body, x__xgafv=None)</a></code></p>
+<p class="firstline">Gets a list of ancestors in the resource hierarchy for the Project</p>
+<p class="toc_element">
+  <code><a href="#getIamPolicy">getIamPolicy(resource=None, body, x__xgafv=None)</a></code></p>
+<p class="firstline">Returns the IAM access control policy for the specified Project.</p>
 <p class="toc_element">
   <code><a href="#list">list(pageSize=None, filter=None, pageToken=None, x__xgafv=None)</a></code></p>
-<p class="firstline">Lists Projects that are visible to the user and satisfy the specified filter. This method returns Projects in an unspecified order. New Projects do not necessarily appear at the end of the list.</p>
+<p class="firstline">Lists Projects that are visible to the user and satisfy the</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="#setIamPolicy">setIamPolicy(resource, body, x__xgafv=None)</a></code></p>
-<p class="firstline">Sets the IAM access control policy for the specified Project. Replaces any existing policy. The following constraints apply when using `setIamPolicy()`: + Project does not support `allUsers` and `allAuthenticatedUsers` as `members` in a `Binding` of a `Policy`. + The owner role can be granted only to `user` and `serviceAccount`. + Service accounts can be made owners of a project directly without any restrictions. However, to be added as an owner, a user must be invited via Cloud Platform console and must accept the invitation. + A user cannot be granted the owner role using `setIamPolicy()`. The user must be granted the owner role using the Cloud Platform Console and must explicitly accept the invitation. + Invitations to grant the owner role cannot be sent using `setIamPolicy()`; they must be sent only using the Cloud Platform Console. + Membership changes that leave the project without any owners that have accepted the Terms of Service (ToS) will be rejected. + There must be at least one owner who has accepted the Terms of Service (ToS) agreement in the policy. Calling `setIamPolicy()` to to remove the last ToS-accepted owner from the policy will fail. This restriction also applies to legacy projects that no longer have owners who have accepted the ToS. Edits to IAM policies will be rejected until the lack of a ToS-accepting owner is rectified. + Calling this method requires enabling the App Engine Admin API. Note: Removing service accounts from policies or changing their roles can render services completely inoperable. It is important to understand how the service account is being used before removing or updating its roles.</p>
+  <code><a href="#setIamPolicy">setIamPolicy(resource=None, body, x__xgafv=None)</a></code></p>
+<p class="firstline">Sets the IAM access control policy for the specified Project. Replaces</p>
 <p class="toc_element">
-  <code><a href="#testIamPermissions">testIamPermissions(resource, body, x__xgafv=None)</a></code></p>
+  <code><a href="#testIamPermissions">testIamPermissions(resource=None, body, x__xgafv=None)</a></code></p>
 <p class="firstline">Returns permissions that a caller has on the specified Project.</p>
 <p class="toc_element">
-  <code><a href="#undelete">undelete(projectId, body, x__xgafv=None)</a></code></p>
-<p class="firstline">Restores the Project identified by the specified `project_id` (for example, `my-project-123`). You can only use this method for a Project that has a lifecycle state of DELETE_REQUESTED. After deletion starts, the Project cannot be restored. The caller must have modify permissions for this Project.</p>
+  <code><a href="#undelete">undelete(projectId=None, body, x__xgafv=None)</a></code></p>
+<p class="firstline">Restores the Project identified by the specified</p>
 <p class="toc_element">
-  <code><a href="#update">update(projectId, body, x__xgafv=None)</a></code></p>
-<p class="firstline">Updates the attributes of the Project identified by the specified `project_id` (for example, `my-project-123`). The caller must have modify permissions for this Project.</p>
+  <code><a href="#update">update(projectId=None, body, x__xgafv=None)</a></code></p>
+<p class="firstline">Updates the attributes of the Project identified by the specified</p>
 <h3>Method Details</h3>
 <div class="method">
     <code class="details" id="create">create(body, x__xgafv=None)</code>
-  <pre>Request that a new Project be created. The result is an Operation which can be used to track the creation process. It is automatically deleted after a few hours, so there is no need to call DeleteOperation. Our SLO permits Project creation to take up to 30 seconds at the 90th percentile. As of 2016-08-29, we are observing 6 seconds 50th percentile latency. 95th percentile latency is around 11 seconds. We recommend polling at the 5th second with an exponential backoff.
+  <pre>Request that a new Project be created. The result is an Operation which
+can be used to track the creation process. It is automatically deleted
+after a few hours, so there is no need to call DeleteOperation.
+
+Our SLO permits Project creation to take up to 30 seconds at the 90th
+percentile. As of 2016-08-29, we are observing 6 seconds 50th percentile
+latency. 95th percentile latency is around 11 seconds. We recommend
+polling at the 5th second with an exponential backoff.
 
 Args:
   body: object, The request body. (required)
     The object takes the form of:
 
-{ # A Project is a high-level Google Cloud Platform entity. It is a container for ACLs, APIs, AppEngine Apps, VMs, and other Google Cloud Platform resources.
-  "name": "A String", # The user-assigned display name of the Project. It must be 4 to 30 characters. Allowed characters are: lowercase and uppercase letters, numbers, hyphen, single-quote, double-quote, space, and exclamation point. Example: My Project Read-write.
-  "parent": { # A container to reference an id for any resource type. A `resource` in Google Cloud Platform is a generic term for something you (a developer) may want to interact with through one of our API's. Some examples are an AppEngine app, a Compute Engine instance, a Cloud SQL database, and so on. # An optional reference to a parent Resource. The only supported parent type is "organization". Once set, the parent cannot be modified. Read-write.
-    "type": "A String", # Required field representing the resource type this id is for. At present, the only valid type is "organization".
-    "id": "A String", # Required field for the type-specific id. This should correspond to the id used in the type-specific API's.
+{ # A Project is a high-level Google Cloud Platform entity.  It is a
+    # container for ACLs, APIs, AppEngine Apps, VMs, and other
+    # Google Cloud Platform resources.
+  "name": "A String", # The user-assigned display name of the Project.
+      # It must be 4 to 30 characters.
+      # Allowed characters are: lowercase and uppercase letters, numbers,
+      # hyphen, single-quote, double-quote, space, and exclamation point.
+      # 
+      # Example: <code>My Project</code>
+      # 
+      # Read-write.
+  "parent": { # A container to reference an id for any resource type. A `resource` in Google # An optional reference to a parent Resource.
+      # 
+      # The only supported parent type is "organization". Once set, the parent
+      # cannot be modified. The `parent` can be set on creation or using the
+      # `UpdateProject` method; the end user must have the
+      # `resourcemanager.projects.create` permission on the parent.
+      # 
+      # Read-write.
+      # Cloud Platform is a generic term for something you (a developer) may want to
+      # interact with through one of our API's. Some examples are an AppEngine app,
+      # a Compute Engine instance, a Cloud SQL database, and so on.
+    "type": "A String", # Required field representing the resource type this id is for.
+        # At present, the only valid type is "organization".
+    "id": "A String", # Required field for the type-specific id. This should correspond to the id
+        # used in the type-specific API's.
   },
-  "projectId": "A String", # The unique, user-assigned ID of the Project. It must be 6 to 30 lowercase letters, digits, or hyphens. It must start with a letter. Trailing hyphens are prohibited. Example: tokyo-rain-123 Read-only after creation.
-  "labels": { # The labels associated with this Project. Label keys must be between 1 and 63 characters long and must conform to the following regular expression: \[a-z\](\[-a-z0-9\]*\[a-z0-9\])?. Label values must be between 0 and 63 characters long and must conform to the regular expression (\[a-z\](\[-a-z0-9\]*\[a-z0-9\])?)?. No more than 256 labels can be associated with a given resource. Clients should store labels in a representation such as JSON that does not depend on specific characters being disallowed. Example: "environment" : "dev" Read-write.
+  "projectId": "A String", # The unique, user-assigned ID of the Project.
+      # It must be 6 to 30 lowercase letters, digits, or hyphens.
+      # It must start with a letter.
+      # Trailing hyphens are prohibited.
+      # 
+      # Example: <code>tokyo-rain-123</code>
+      # 
+      # Read-only after creation.
+  "labels": { # The labels associated with this Project.
+      # 
+      # Label keys must be between 1 and 63 characters long and must conform
+      # to the following regular expression: \[a-z\](\[-a-z0-9\]*\[a-z0-9\])?.
+      # 
+      # Label values must be between 0 and 63 characters long and must conform
+      # to the regular expression (\[a-z\](\[-a-z0-9\]*\[a-z0-9\])?)?.
+      # 
+      # No more than 256 labels can be associated with a given resource.
+      # 
+      # Clients should store labels in a representation such as JSON that does not
+      # depend on specific characters being disallowed.
+      # 
+      # Example: <code>"environment" : "dev"</code>
+      # 
+      # Read-write.
     "a_key": "A String",
   },
-  "projectNumber": "A String", # The number uniquely identifying the project. Example: 415104041262 Read-only.
-  "lifecycleState": "A String", # The Project lifecycle state. Read-only.
-  "createTime": "A String", # Creation time. Read-only.
+  "createTime": "A String", # Creation time.
+      # 
+      # Read-only.
+  "lifecycleState": "A String", # The Project lifecycle state.
+      # 
+      # Read-only.
+  "projectNumber": "A String", # The number uniquely identifying the project.
+      # 
+      # Example: <code>415104041262</code>
+      # 
+      # Read-only.
 }
 
   x__xgafv: string, V1 error format.
+    Allowed values
+      1 - v1 error format
+      2 - v2 error format
 
 Returns:
   An object of the form:
 
-    { # This resource represents a long-running operation that is the result of a network API call.
-    "response": { # The normal response of the operation in case of success. If the original method returns no data on success, such as `Delete`, the response is `google.protobuf.Empty`. If the original method is standard `Get`/`Create`/`Update`, the response should be the resource. For other methods, the response should have the type `XxxResponse`, where `Xxx` is the original method name. For example, if the original method name is `TakeSnapshot()`, the inferred response type is `TakeSnapshotResponse`.
+    { # This resource represents a long-running operation that is the result of a
+      # network API call.
+    "metadata": { # Service-specific metadata associated with the operation.  It typically
+        # contains progress information and common metadata such as create time.
+        # Some services might not provide such metadata.  Any method that returns a
+        # long-running operation should document the metadata type, if any.
       "a_key": "", # Properties of the object. Contains field @type with type URL.
     },
-    "error": { # The `Status` type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by [gRPC](https://github.com/grpc). The error model is designed to be: - Simple to use and understand for most users - Flexible enough to meet unexpected needs # Overview The `Status` message contains three pieces of data: error code, error message, and error details. The error code should be an enum value of google.rpc.Code, but it may accept additional error codes if needed. The error message should be a developer-facing English message that helps developers *understand* and *resolve* the error. If a localized user-facing error message is needed, put the localized message in the error details or localize it in the client. The optional error details may contain arbitrary information about the error. There is a predefined set of error detail types in the package `google.rpc` which can be used for common error conditions. # Language mapping The `Status` message is the logical representation of the error model, but it is not necessarily the actual wire format. When the `Status` message is exposed in different client libraries and different wire protocols, it can be mapped differently. For example, it will likely be mapped to some exceptions in Java, but more likely mapped to some error codes in C. # Other uses The error model and the `Status` message can be used in a variety of environments, either with or without APIs, to provide a consistent developer experience across different environments. Example uses of this error model include: - Partial errors. If a service needs to return partial errors to the client, it may embed the `Status` in the normal response to indicate the partial errors. - Workflow errors. A typical workflow has multiple steps. Each step may have a `Status` message for error reporting purpose. - Batch operations. If a client uses batch request and batch response, the `Status` message should be used directly inside batch response, one for each error sub-response. - Asynchronous operations. If an API call embeds asynchronous operation results in its response, the status of those operations should be represented directly using the `Status` message. - Logging. If some API errors are stored in logs, the message `Status` could be used directly after any stripping needed for security/privacy reasons. # The error result of the operation in case of failure.
-      "message": "A String", # A developer-facing error message, which should be in English. Any user-facing error message should be localized and sent in the google.rpc.Status.details field, or localized by the client.
+    "done": True or False, # If the value is `false`, it means the operation is still in progress.
+        # If true, the operation is completed, and either `error` or `response` is
+        # available.
+    "response": { # The normal response of the operation in case of success.  If the original
+        # method returns no data on success, such as `Delete`, the response is
+        # `google.protobuf.Empty`.  If the original method is standard
+        # `Get`/`Create`/`Update`, the response should be the resource.  For other
+        # methods, the response should have the type `XxxResponse`, where `Xxx`
+        # is the original method name.  For example, if the original method name
+        # is `TakeSnapshot()`, the inferred response type is
+        # `TakeSnapshotResponse`.
+      "a_key": "", # Properties of the object. Contains field @type with type URL.
+    },
+    "name": "A String", # The server-assigned name, which is only unique within the same service that
+        # originally returns it. If you use the default HTTP mapping, the
+        # `name` should have the format of `operations/some/unique/name`.
+    "error": { # The `Status` type defines a logical error model that is suitable for different # The error result of the operation in case of failure or cancellation.
+        # programming environments, including REST APIs and RPC APIs. It is used by
+        # [gRPC](https://github.com/grpc). The error model is designed to be:
+        #
+        # - Simple to use and understand for most users
+        # - Flexible enough to meet unexpected needs
+        #
+        # # Overview
+        #
+        # The `Status` message contains three pieces of data: error code, error message,
+        # and error details. The error code should be an enum value of
+        # google.rpc.Code, but it may accept additional error codes if needed.  The
+        # error message should be a developer-facing English message that helps
+        # developers *understand* and *resolve* the error. If a localized user-facing
+        # error message is needed, put the localized message in the error details or
+        # localize it in the client. The optional error details may contain arbitrary
+        # information about the error. There is a predefined set of error detail types
+        # in the package `google.rpc` which can be used for common error conditions.
+        #
+        # # Language mapping
+        #
+        # The `Status` message is the logical representation of the error model, but it
+        # is not necessarily the actual wire format. When the `Status` message is
+        # exposed in different client libraries and different wire protocols, it can be
+        # mapped differently. For example, it will likely be mapped to some exceptions
+        # in Java, but more likely mapped to some error codes in C.
+        #
+        # # Other uses
+        #
+        # The error model and the `Status` message can be used in a variety of
+        # environments, either with or without APIs, to provide a
+        # consistent developer experience across different environments.
+        #
+        # Example uses of this error model include:
+        #
+        # - Partial errors. If a service needs to return partial errors to the client,
+        #     it may embed the `Status` in the normal response to indicate the partial
+        #     errors.
+        #
+        # - Workflow errors. A typical workflow has multiple steps. Each step may
+        #     have a `Status` message for error reporting purpose.
+        #
+        # - Batch operations. If a client uses batch request and batch response, the
+        #     `Status` message should be used directly inside batch response, one for
+        #     each error sub-response.
+        #
+        # - Asynchronous operations. If an API call embeds asynchronous operation
+        #     results in its response, the status of those operations should be
+        #     represented directly using the `Status` message.
+        #
+        # - Logging. If some API errors are stored in logs, the message `Status` could
+        #     be used directly after any stripping needed for security/privacy reasons.
+      "message": "A String", # A developer-facing error message, which should be in English. Any
+          # user-facing error message should be localized and sent in the
+          # google.rpc.Status.details field, or localized by the client.
       "code": 42, # The status code, which should be an enum value of google.rpc.Code.
-      "details": [ # A list of messages that carry the error details. There will be a common set of message types for APIs to use.
+      "details": [ # A list of messages that carry the error details.  There will be a
+          # common set of message types for APIs to use.
         {
           "a_key": "", # Properties of the object. Contains field @type with type URL.
         },
       ],
     },
-    "done": True or False, # If the value is `false`, it means the operation is still in progress. If true, the operation is completed, and either `error` or `response` is available.
-    "name": "A String", # The server-assigned name, which is only unique within the same service that originally returns it. If you use the default HTTP mapping, the `name` should have the format of `operations/some/unique/name`.
-    "metadata": { # Service-specific metadata associated with the operation. It typically contains progress information and common metadata such as create time. Some services might not provide such metadata. Any method that returns a long-running operation should document the metadata type, if any.
-      "a_key": "", # Properties of the object. Contains field @type with type URL.
-    },
   }</pre>
 </div>
 
 <div class="method">
-    <code class="details" id="delete">delete(projectId, x__xgafv=None)</code>
-  <pre>Marks the Project identified by the specified `project_id` (for example, `my-project-123`) for deletion. This method will only affect the Project if the following criteria are met: + The Project does not have a billing account associated with it. + The Project has a lifecycle state of ACTIVE. This method changes the Project's lifecycle state from ACTIVE to DELETE_REQUESTED. The deletion starts at an unspecified time, at which point the Project is no longer accessible. Until the deletion completes, you can check the lifecycle state checked by retrieving the Project with GetProject, and the Project remains visible to ListProjects. However, you cannot update the project. After the deletion completes, the Project is not retrievable by the GetProject and ListProjects methods. The caller must have modify permissions for this Project.
+    <code class="details" id="delete">delete(projectId=None, x__xgafv=None)</code>
+  <pre>Marks the Project identified by the specified
+`project_id` (for example, `my-project-123`) for deletion.
+This method will only affect the Project if the following criteria are met:
+
++ The Project does not have a billing account associated with it.
++ The Project has a lifecycle state of
+ACTIVE.
+
+This method changes the Project's lifecycle state from
+ACTIVE
+to DELETE_REQUESTED.
+The deletion starts at an unspecified time,
+at which point the Project is no longer accessible.
+
+Until the deletion completes, you can check the lifecycle state
+checked by retrieving the Project with GetProject,
+and the Project remains visible to ListProjects.
+However, you cannot update the project.
+
+After the deletion completes, the Project is not retrievable by
+the  GetProject and
+ListProjects methods.
+
+The caller must have modify permissions for this Project.
 
 Args:
-  projectId: string, The Project ID (for example, `foo-bar-123`). Required. (required)
+  projectId: string, The Project ID (for example, `foo-bar-123`).
+
+Required. (required)
   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 `{}`.
+    { # 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(projectId, x__xgafv=None)</code>
-  <pre>Retrieves the Project identified by the specified `project_id` (for example, `my-project-123`). The caller must have read permissions for this Project.
+    <code class="details" id="get">get(projectId=None, x__xgafv=None)</code>
+  <pre>Retrieves the Project identified by the specified
+`project_id` (for example, `my-project-123`).
+
+The caller must have read permissions for this Project.
 
 Args:
-  projectId: string, The Project ID (for example, `my-project-123`). Required. (required)
+  projectId: string, The Project ID (for example, `my-project-123`).
+
+Required. (required)
   x__xgafv: string, V1 error format.
+    Allowed values
+      1 - v1 error format
+      2 - v2 error format
 
 Returns:
   An object of the form:
 
-    { # A Project is a high-level Google Cloud Platform entity. It is a container for ACLs, APIs, AppEngine Apps, VMs, and other Google Cloud Platform resources.
-    "name": "A String", # The user-assigned display name of the Project. It must be 4 to 30 characters. Allowed characters are: lowercase and uppercase letters, numbers, hyphen, single-quote, double-quote, space, and exclamation point. Example: My Project Read-write.
-    "parent": { # A container to reference an id for any resource type. A `resource` in Google Cloud Platform is a generic term for something you (a developer) may want to interact with through one of our API's. Some examples are an AppEngine app, a Compute Engine instance, a Cloud SQL database, and so on. # An optional reference to a parent Resource. The only supported parent type is "organization". Once set, the parent cannot be modified. Read-write.
-      "type": "A String", # Required field representing the resource type this id is for. At present, the only valid type is "organization".
-      "id": "A String", # Required field for the type-specific id. This should correspond to the id used in the type-specific API's.
+    { # A Project is a high-level Google Cloud Platform entity.  It is a
+      # container for ACLs, APIs, AppEngine Apps, VMs, and other
+      # Google Cloud Platform resources.
+    "name": "A String", # The user-assigned display name of the Project.
+        # It must be 4 to 30 characters.
+        # Allowed characters are: lowercase and uppercase letters, numbers,
+        # hyphen, single-quote, double-quote, space, and exclamation point.
+        #
+        # Example: <code>My Project</code>
+        #
+        # Read-write.
+    "parent": { # A container to reference an id for any resource type. A `resource` in Google # An optional reference to a parent Resource.
+        #
+        # The only supported parent type is "organization". Once set, the parent
+        # cannot be modified. The `parent` can be set on creation or using the
+        # `UpdateProject` method; the end user must have the
+        # `resourcemanager.projects.create` permission on the parent.
+        #
+        # Read-write.
+        # Cloud Platform is a generic term for something you (a developer) may want to
+        # interact with through one of our API's. Some examples are an AppEngine app,
+        # a Compute Engine instance, a Cloud SQL database, and so on.
+      "type": "A String", # Required field representing the resource type this id is for.
+          # At present, the only valid type is "organization".
+      "id": "A String", # Required field for the type-specific id. This should correspond to the id
+          # used in the type-specific API's.
     },
-    "projectId": "A String", # The unique, user-assigned ID of the Project. It must be 6 to 30 lowercase letters, digits, or hyphens. It must start with a letter. Trailing hyphens are prohibited. Example: tokyo-rain-123 Read-only after creation.
-    "labels": { # The labels associated with this Project. Label keys must be between 1 and 63 characters long and must conform to the following regular expression: \[a-z\](\[-a-z0-9\]*\[a-z0-9\])?. Label values must be between 0 and 63 characters long and must conform to the regular expression (\[a-z\](\[-a-z0-9\]*\[a-z0-9\])?)?. No more than 256 labels can be associated with a given resource. Clients should store labels in a representation such as JSON that does not depend on specific characters being disallowed. Example: "environment" : "dev" Read-write.
+    "projectId": "A String", # The unique, user-assigned ID of the Project.
+        # It must be 6 to 30 lowercase letters, digits, or hyphens.
+        # It must start with a letter.
+        # Trailing hyphens are prohibited.
+        #
+        # Example: <code>tokyo-rain-123</code>
+        #
+        # Read-only after creation.
+    "labels": { # The labels associated with this Project.
+        #
+        # Label keys must be between 1 and 63 characters long and must conform
+        # to the following regular expression: \[a-z\](\[-a-z0-9\]*\[a-z0-9\])?.
+        #
+        # Label values must be between 0 and 63 characters long and must conform
+        # to the regular expression (\[a-z\](\[-a-z0-9\]*\[a-z0-9\])?)?.
+        #
+        # No more than 256 labels can be associated with a given resource.
+        #
+        # Clients should store labels in a representation such as JSON that does not
+        # depend on specific characters being disallowed.
+        #
+        # Example: <code>"environment" : "dev"</code>
+        #
+        # Read-write.
       "a_key": "A String",
     },
-    "projectNumber": "A String", # The number uniquely identifying the project. Example: 415104041262 Read-only.
-    "lifecycleState": "A String", # The Project lifecycle state. Read-only.
-    "createTime": "A String", # Creation time. Read-only.
+    "createTime": "A String", # Creation time.
+        #
+        # Read-only.
+    "lifecycleState": "A String", # The Project lifecycle state.
+        #
+        # Read-only.
+    "projectNumber": "A String", # The number uniquely identifying the project.
+        #
+        # Example: <code>415104041262</code>
+        #
+        # Read-only.
   }</pre>
 </div>
 
 <div class="method">
-    <code class="details" id="getIamPolicy">getIamPolicy(resource, body, x__xgafv=None)</code>
-  <pre>Returns the IAM access control policy for the specified Project. Permission is denied if the policy or the resource does not exist.
+    <code class="details" id="getAncestry">getAncestry(projectId=None, body, x__xgafv=None)</code>
+  <pre>Gets a list of ancestors in the resource hierarchy for the Project
+identified by the specified `project_id` (for example, `my-project-123`).
+
+The caller must have read permissions for this Project.
 
 Args:
-  resource: string, REQUIRED: The resource for which the policy is being requested. `resource` is usually specified as a path. For example, a Project resource is specified as `projects/{project}`. (required)
+  projectId: string, The Project ID (for example, `my-project-123`).
+
+Required. (required)
+  body: object, The request body. (required)
+    The object takes the form of:
+
+{ # The request sent to the
+      # GetAncestry
+      # method.
+  }
+
+  x__xgafv: string, V1 error format.
+    Allowed values
+      1 - v1 error format
+      2 - v2 error format
+
+Returns:
+  An object of the form:
+
+    { # Response from the GetAncestry method.
+    "ancestor": [ # Ancestors are ordered from bottom to top of the resource hierarchy. The
+        # first ancestor is the project itself, followed by the project's parent,
+        # etc.
+      { # Identifying information for a single ancestor of a project.
+        "resourceId": { # A container to reference an id for any resource type. A `resource` in Google # Resource id of the ancestor.
+            # Cloud Platform is a generic term for something you (a developer) may want to
+            # interact with through one of our API's. Some examples are an AppEngine app,
+            # a Compute Engine instance, a Cloud SQL database, and so on.
+          "type": "A String", # Required field representing the resource type this id is for.
+              # At present, the only valid type is "organization".
+          "id": "A String", # Required field for the type-specific id. This should correspond to the id
+              # used in the type-specific API's.
+        },
+      },
+    ],
+  }</pre>
+</div>
+
+<div class="method">
+    <code class="details" id="getIamPolicy">getIamPolicy(resource=None, body, x__xgafv=None)</code>
+  <pre>Returns the IAM access control policy for the specified Project.
+Permission is denied if the policy or the resource does not exist.
+
+Args:
+  resource: string, REQUIRED: The resource for which the policy is being requested.
+`resource` is usually specified as a path. For example, a Project
+resource is specified as `projects/{project}`. (required)
   body: object, The request body. (required)
     The object takes the form of:
 
@@ -209,53 +486,220 @@
   }
 
   x__xgafv: string, V1 error format.
+    Allowed values
+      1 - v1 error format
+      2 - v2 error format
 
 Returns:
   An object of the form:
 
-    { # Defines an Identity and Access Management (IAM) policy. It is used to specify access control policies for Cloud Platform resources. A `Policy` consists of a list of `bindings`. A `Binding` binds a list of `members` to a `role`, where the members can be user accounts, Google groups, Google domains, and service accounts. A `role` is a named list of permissions defined by IAM. **Example** { "bindings": [ { "role": "roles/owner", "members": [ "user:mike@example.com", "group:admins@example.com", "domain:google.com", "serviceAccount:my-other-app@appspot.gserviceaccount.com", ] }, { "role": "roles/viewer", "members": ["user:sean@example.com"] } ] } For a description of IAM and its features, see the [IAM developer's guide](https://cloud.google.com/iam).
-    "bindings": [ # Associates a list of `members` to a `role`. Multiple `bindings` must not be specified for the same `role`. `bindings` with no members will result in an error.
+    { # Defines an Identity and Access Management (IAM) policy. It is used to
+      # specify access control policies for Cloud Platform resources.
+      #
+      #
+      # A `Policy` consists of a list of `bindings`. A `Binding` binds a list of
+      # `members` to a `role`, where the members can be user accounts, Google groups,
+      # Google domains, and service accounts. A `role` is a named list of permissions
+      # defined by IAM.
+      #
+      # **Example**
+      #
+      #     {
+      #       "bindings": [
+      #         {
+      #           "role": "roles/owner",
+      #           "members": [
+      #             "user:mike@example.com",
+      #             "group:admins@example.com",
+      #             "domain:google.com",
+      #             "serviceAccount:my-other-app@appspot.gserviceaccount.com",
+      #           ]
+      #         },
+      #         {
+      #           "role": "roles/viewer",
+      #           "members": ["user:sean@example.com"]
+      #         }
+      #       ]
+      #     }
+      #
+      # For a description of IAM and its features, see the
+      # [IAM developer's guide](https://cloud.google.com/iam).
+    "bindings": [ # Associates a list of `members` to a `role`.
+        # Multiple `bindings` must not be specified for the same `role`.
+        # `bindings` with no members will result in an error.
       { # Associates `members` with a `role`.
-        "role": "A String", # Role that is assigned to `members`. For example, `roles/viewer`, `roles/editor`, or `roles/owner`. Required
-        "members": [ # Specifies the identities requesting access for a Cloud Platform resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@gmail.com` or `joe@example.com`. * `serviceAccount:{emailid}`: An email address that represents a service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: A Google Apps domain name that represents all the users of that domain. For example, `google.com` or `example.com`.
+        "role": "A String", # Role that is assigned to `members`.
+            # For example, `roles/viewer`, `roles/editor`, or `roles/owner`.
+            # Required
+        "members": [ # Specifies the identities requesting access for a Cloud Platform resource.
+            # `members` can have the following values:
+            #
+            # * `allUsers`: A special identifier that represents anyone who is
+            #    on the internet; with or without a Google account.
+            #
+            # * `allAuthenticatedUsers`: A special identifier that represents anyone
+            #    who is authenticated with a Google account or a service account.
+            #
+            # * `user:{emailid}`: An email address that represents a specific Google
+            #    account. For example, `alice@gmail.com` or `joe@example.com`.
+            #
+            #
+            # * `serviceAccount:{emailid}`: An email address that represents a service
+            #    account. For example, `my-other-app@appspot.gserviceaccount.com`.
+            #
+            # * `group:{emailid}`: An email address that represents a Google group.
+            #    For example, `admins@example.com`.
+            #
+            # * `domain:{domain}`: A Google Apps domain name that represents all the
+            #    users of that domain. For example, `google.com` or `example.com`.
+            #
           "A String",
         ],
       },
     ],
+    "etag": "A String", # `etag` is used for optimistic concurrency control as a way to help
+        # prevent simultaneous updates of a policy from overwriting each other.
+        # It is strongly suggested that systems make use of the `etag` in the
+        # read-modify-write cycle to perform policy updates in order to avoid race
+        # conditions: An `etag` is returned in the response to `getIamPolicy`, and
+        # systems are expected to put that etag in the request to `setIamPolicy` to
+        # ensure that their change will be applied to the same version of the policy.
+        #
+        # If no `etag` is provided in the call to `setIamPolicy`, then the existing
+        # policy is overwritten blindly.
     "version": 42, # Version of the `Policy`. The default version is 0.
-    "etag": "A String", # `etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. If no `etag` is provided in the call to `setIamPolicy`, then the existing policy is overwritten blindly.
   }</pre>
 </div>
 
 <div class="method">
     <code class="details" id="list">list(pageSize=None, filter=None, pageToken=None, x__xgafv=None)</code>
-  <pre>Lists Projects that are visible to the user and satisfy the specified filter. This method returns Projects in an unspecified order. New Projects do not necessarily appear at the end of the list.
+  <pre>Lists Projects that are visible to the user and satisfy the
+specified filter. This method returns Projects in an unspecified order.
+New Projects do not necessarily appear at the end of the list.
 
 Args:
-  pageSize: integer, The maximum number of Projects to return in the response. The server can return fewer Projects than requested. If unspecified, server picks an appropriate default. Optional.
-  filter: string, An expression for filtering the results of the request. Filter rules are case insensitive. The fields eligible for filtering are: + `name` + `id` + labels.key where *key* is the name of a label Some examples of using labels as filters: |Filter|Description| |------|-----------| |name:*|The project has a name.| |name:Howl|The project's name is `Howl` or `howl`.| |name:HOWL|Equivalent to above.| |NAME:howl|Equivalent to above.| |labels.color:*|The project has the label `color`.| |labels.color:red|The project's label `color` has the value `red`.| |labels.color:red label.size:big|The project's label `color` has the value `red` and its label `size` has the value `big`. Optional.
-  pageToken: string, A pagination token returned from a previous call to ListProjects that indicates from where listing should continue. Optional.
+  pageSize: integer, The maximum number of Projects to return in the response.
+The server can return fewer Projects than requested.
+If unspecified, server picks an appropriate default.
+
+Optional.
+  filter: string, An expression for filtering the results of the request.  Filter rules are
+case insensitive. The fields eligible for filtering are:
+
++ `name`
++ `id`
++ <code>labels.<em>key</em></code> where *key* is the name of a label
+
+Some examples of using labels as filters:
+
+|Filter|Description|
+|------|-----------|
+|name:*|The project has a name.|
+|name:Howl|The project's name is `Howl` or `howl`.|
+|name:HOWL|Equivalent to above.|
+|NAME:howl|Equivalent to above.|
+|labels.color:*|The project has the label `color`.|
+|labels.color:red|The project's label `color` has the value `red`.|
+|labels.color:red&nbsp;label.size:big|The project's label `color` has the
+value `red` and its label `size` has the value `big`.
+
+Optional.
+  pageToken: string, A pagination token returned from a previous call to ListProjects
+that indicates from where listing should continue.
+
+Optional.
   x__xgafv: string, V1 error format.
+    Allowed values
+      1 - v1 error format
+      2 - v2 error format
 
 Returns:
   An object of the form:
 
-    { # A page of the response received from the ListProjects method. A paginated response where more pages are available has `next_page_token` set. This token can be used in a subsequent request to retrieve the next request page.
-    "nextPageToken": "A String", # Pagination token. If the result set is too large to fit in a single response, this token is returned. It encodes the position of the current result cursor. Feeding this value into a new list request with the `page_token` parameter gives the next page of the results. When `next_page_token` is not filled in, there is no next page and the list returned is the last page in the result set. Pagination tokens have a limited lifetime.
-    "projects": [ # The list of Projects that matched the list filter. This list can be paginated.
-      { # A Project is a high-level Google Cloud Platform entity. It is a container for ACLs, APIs, AppEngine Apps, VMs, and other Google Cloud Platform resources.
-        "name": "A String", # The user-assigned display name of the Project. It must be 4 to 30 characters. Allowed characters are: lowercase and uppercase letters, numbers, hyphen, single-quote, double-quote, space, and exclamation point. Example: My Project Read-write.
-        "parent": { # A container to reference an id for any resource type. A `resource` in Google Cloud Platform is a generic term for something you (a developer) may want to interact with through one of our API's. Some examples are an AppEngine app, a Compute Engine instance, a Cloud SQL database, and so on. # An optional reference to a parent Resource. The only supported parent type is "organization". Once set, the parent cannot be modified. Read-write.
-          "type": "A String", # Required field representing the resource type this id is for. At present, the only valid type is "organization".
-          "id": "A String", # Required field for the type-specific id. This should correspond to the id used in the type-specific API's.
+    { # A page of the response received from the
+      # ListProjects
+      # method.
+      #
+      # A paginated response where more pages are available has
+      # `next_page_token` set. This token can be used in a subsequent request to
+      # retrieve the next request page.
+    "nextPageToken": "A String", # Pagination token.
+        #
+        # If the result set is too large to fit in a single response, this token
+        # is returned. It encodes the position of the current result cursor.
+        # Feeding this value into a new list request with the `page_token` parameter
+        # gives the next page of the results.
+        #
+        # When `next_page_token` is not filled in, there is no next page and
+        # the list returned is the last page in the result set.
+        #
+        # Pagination tokens have a limited lifetime.
+    "projects": [ # The list of Projects that matched the list filter. This list can
+        # be paginated.
+      { # A Project is a high-level Google Cloud Platform entity.  It is a
+          # container for ACLs, APIs, AppEngine Apps, VMs, and other
+          # Google Cloud Platform resources.
+        "name": "A String", # The user-assigned display name of the Project.
+            # It must be 4 to 30 characters.
+            # Allowed characters are: lowercase and uppercase letters, numbers,
+            # hyphen, single-quote, double-quote, space, and exclamation point.
+            #
+            # Example: <code>My Project</code>
+            #
+            # Read-write.
+        "parent": { # A container to reference an id for any resource type. A `resource` in Google # An optional reference to a parent Resource.
+            #
+            # The only supported parent type is "organization". Once set, the parent
+            # cannot be modified. The `parent` can be set on creation or using the
+            # `UpdateProject` method; the end user must have the
+            # `resourcemanager.projects.create` permission on the parent.
+            #
+            # Read-write.
+            # Cloud Platform is a generic term for something you (a developer) may want to
+            # interact with through one of our API's. Some examples are an AppEngine app,
+            # a Compute Engine instance, a Cloud SQL database, and so on.
+          "type": "A String", # Required field representing the resource type this id is for.
+              # At present, the only valid type is "organization".
+          "id": "A String", # Required field for the type-specific id. This should correspond to the id
+              # used in the type-specific API's.
         },
-        "projectId": "A String", # The unique, user-assigned ID of the Project. It must be 6 to 30 lowercase letters, digits, or hyphens. It must start with a letter. Trailing hyphens are prohibited. Example: tokyo-rain-123 Read-only after creation.
-        "labels": { # The labels associated with this Project. Label keys must be between 1 and 63 characters long and must conform to the following regular expression: \[a-z\](\[-a-z0-9\]*\[a-z0-9\])?. Label values must be between 0 and 63 characters long and must conform to the regular expression (\[a-z\](\[-a-z0-9\]*\[a-z0-9\])?)?. No more than 256 labels can be associated with a given resource. Clients should store labels in a representation such as JSON that does not depend on specific characters being disallowed. Example: "environment" : "dev" Read-write.
+        "projectId": "A String", # The unique, user-assigned ID of the Project.
+            # It must be 6 to 30 lowercase letters, digits, or hyphens.
+            # It must start with a letter.
+            # Trailing hyphens are prohibited.
+            #
+            # Example: <code>tokyo-rain-123</code>
+            #
+            # Read-only after creation.
+        "labels": { # The labels associated with this Project.
+            #
+            # Label keys must be between 1 and 63 characters long and must conform
+            # to the following regular expression: \[a-z\](\[-a-z0-9\]*\[a-z0-9\])?.
+            #
+            # Label values must be between 0 and 63 characters long and must conform
+            # to the regular expression (\[a-z\](\[-a-z0-9\]*\[a-z0-9\])?)?.
+            #
+            # No more than 256 labels can be associated with a given resource.
+            #
+            # Clients should store labels in a representation such as JSON that does not
+            # depend on specific characters being disallowed.
+            #
+            # Example: <code>"environment" : "dev"</code>
+            #
+            # Read-write.
           "a_key": "A String",
         },
-        "projectNumber": "A String", # The number uniquely identifying the project. Example: 415104041262 Read-only.
-        "lifecycleState": "A String", # The Project lifecycle state. Read-only.
-        "createTime": "A String", # Creation time. Read-only.
+        "createTime": "A String", # Creation time.
+            #
+            # Read-only.
+        "lifecycleState": "A String", # The Project lifecycle state.
+            #
+            # Read-only.
+        "projectNumber": "A String", # The number uniquely identifying the project.
+            #
+            # Example: <code>415104041262</code>
+            #
+            # Read-only.
       },
     ],
   }</pre>
@@ -276,138 +720,450 @@
 </div>
 
 <div class="method">
-    <code class="details" id="setIamPolicy">setIamPolicy(resource, body, x__xgafv=None)</code>
-  <pre>Sets the IAM access control policy for the specified Project. Replaces any existing policy. The following constraints apply when using `setIamPolicy()`: + Project does not support `allUsers` and `allAuthenticatedUsers` as `members` in a `Binding` of a `Policy`. + The owner role can be granted only to `user` and `serviceAccount`. + Service accounts can be made owners of a project directly without any restrictions. However, to be added as an owner, a user must be invited via Cloud Platform console and must accept the invitation. + A user cannot be granted the owner role using `setIamPolicy()`. The user must be granted the owner role using the Cloud Platform Console and must explicitly accept the invitation. + Invitations to grant the owner role cannot be sent using `setIamPolicy()`; they must be sent only using the Cloud Platform Console. + Membership changes that leave the project without any owners that have accepted the Terms of Service (ToS) will be rejected. + There must be at least one owner who has accepted the Terms of Service (ToS) agreement in the policy. Calling `setIamPolicy()` to to remove the last ToS-accepted owner from the policy will fail. This restriction also applies to legacy projects that no longer have owners who have accepted the ToS. Edits to IAM policies will be rejected until the lack of a ToS-accepting owner is rectified. + Calling this method requires enabling the App Engine Admin API. Note: Removing service accounts from policies or changing their roles can render services completely inoperable. It is important to understand how the service account is being used before removing or updating its roles.
+    <code class="details" id="setIamPolicy">setIamPolicy(resource=None, body, x__xgafv=None)</code>
+  <pre>Sets the IAM access control policy for the specified Project. Replaces
+any existing policy.
+
+The following constraints apply when using `setIamPolicy()`:
+
++ Project does not support `allUsers` and `allAuthenticatedUsers` as
+`members` in a `Binding` of a `Policy`.
+
++ The owner role can be granted only to `user` and `serviceAccount`.
+
++ Service accounts can be made owners of a project directly
+without any restrictions. However, to be added as an owner, a user must be
+invited via Cloud Platform console and must accept the invitation.
+
++ A user cannot be granted the owner role using `setIamPolicy()`. The user
+must be granted the owner role using the Cloud Platform Console and must
+explicitly accept the invitation.
+
++ Invitations to grant the owner role cannot be sent using
+`setIamPolicy()`;
+they must be sent only using the Cloud Platform Console.
+
++ Membership changes that leave the project without any owners that have
+accepted the Terms of Service (ToS) will be rejected.
+
++ There must be at least one owner who has accepted the Terms of
+Service (ToS) agreement in the policy. Calling `setIamPolicy()` to
+to remove the last ToS-accepted owner from the policy will fail. This
+restriction also applies to legacy projects that no longer have owners
+who have accepted the ToS. Edits to IAM policies will be rejected until
+the lack of a ToS-accepting owner is rectified.
+
++ Calling this method requires enabling the App Engine Admin API.
+
+Note: Removing service accounts from policies or changing their roles
+can render services completely inoperable. It is important to understand
+how the service account is being used before removing or updating its
+roles.
 
 Args:
-  resource: string, REQUIRED: The resource for which the policy is being specified. `resource` is usually specified as a path. For example, a Project resource is specified as `projects/{project}`. (required)
+  resource: string, REQUIRED: The resource for which the policy is being specified.
+`resource` is usually specified as a path. For example, a Project
+resource is specified as `projects/{project}`. (required)
   body: object, The request body. (required)
     The object takes the form of:
 
 { # Request message for `SetIamPolicy` method.
-    "policy": { # Defines an Identity and Access Management (IAM) policy. It is used to specify access control policies for Cloud Platform resources. A `Policy` consists of a list of `bindings`. A `Binding` binds a list of `members` to a `role`, where the members can be user accounts, Google groups, Google domains, and service accounts. A `role` is a named list of permissions defined by IAM. **Example** { "bindings": [ { "role": "roles/owner", "members": [ "user:mike@example.com", "group:admins@example.com", "domain:google.com", "serviceAccount:my-other-app@appspot.gserviceaccount.com", ] }, { "role": "roles/viewer", "members": ["user:sean@example.com"] } ] } For a description of IAM and its features, see the [IAM developer's guide](https://cloud.google.com/iam). # REQUIRED: The complete policy to be applied to the `resource`. The size of the policy is limited to a few 10s of KB. An empty policy is a valid policy but certain Cloud Platform services (such as Projects) might reject them.
-      "bindings": [ # Associates a list of `members` to a `role`. Multiple `bindings` must not be specified for the same `role`. `bindings` with no members will result in an error.
+    "policy": { # Defines an Identity and Access Management (IAM) policy. It is used to # REQUIRED: The complete policy to be applied to the `resource`. The size of
+        # the policy is limited to a few 10s of KB. An empty policy is a
+        # valid policy but certain Cloud Platform services (such as Projects)
+        # might reject them.
+        # specify access control policies for Cloud Platform resources.
+        #
+        #
+        # A `Policy` consists of a list of `bindings`. A `Binding` binds a list of
+        # `members` to a `role`, where the members can be user accounts, Google groups,
+        # Google domains, and service accounts. A `role` is a named list of permissions
+        # defined by IAM.
+        #
+        # **Example**
+        #
+        #     {
+        #       "bindings": [
+        #         {
+        #           "role": "roles/owner",
+        #           "members": [
+        #             "user:mike@example.com",
+        #             "group:admins@example.com",
+        #             "domain:google.com",
+        #             "serviceAccount:my-other-app@appspot.gserviceaccount.com",
+        #           ]
+        #         },
+        #         {
+        #           "role": "roles/viewer",
+        #           "members": ["user:sean@example.com"]
+        #         }
+        #       ]
+        #     }
+        #
+        # For a description of IAM and its features, see the
+        # [IAM developer's guide](https://cloud.google.com/iam).
+      "bindings": [ # Associates a list of `members` to a `role`.
+          # Multiple `bindings` must not be specified for the same `role`.
+          # `bindings` with no members will result in an error.
         { # Associates `members` with a `role`.
-          "role": "A String", # Role that is assigned to `members`. For example, `roles/viewer`, `roles/editor`, or `roles/owner`. Required
-          "members": [ # Specifies the identities requesting access for a Cloud Platform resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@gmail.com` or `joe@example.com`. * `serviceAccount:{emailid}`: An email address that represents a service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: A Google Apps domain name that represents all the users of that domain. For example, `google.com` or `example.com`.
+          "role": "A String", # Role that is assigned to `members`.
+              # For example, `roles/viewer`, `roles/editor`, or `roles/owner`.
+              # Required
+          "members": [ # Specifies the identities requesting access for a Cloud Platform resource.
+              # `members` can have the following values:
+              #
+              # * `allUsers`: A special identifier that represents anyone who is
+              #    on the internet; with or without a Google account.
+              #
+              # * `allAuthenticatedUsers`: A special identifier that represents anyone
+              #    who is authenticated with a Google account or a service account.
+              #
+              # * `user:{emailid}`: An email address that represents a specific Google
+              #    account. For example, `alice@gmail.com` or `joe@example.com`.
+              #
+              #
+              # * `serviceAccount:{emailid}`: An email address that represents a service
+              #    account. For example, `my-other-app@appspot.gserviceaccount.com`.
+              #
+              # * `group:{emailid}`: An email address that represents a Google group.
+              #    For example, `admins@example.com`.
+              #
+              # * `domain:{domain}`: A Google Apps domain name that represents all the
+              #    users of that domain. For example, `google.com` or `example.com`.
+              #
             "A String",
           ],
         },
       ],
+      "etag": "A String", # `etag` is used for optimistic concurrency control as a way to help
+          # prevent simultaneous updates of a policy from overwriting each other.
+          # It is strongly suggested that systems make use of the `etag` in the
+          # read-modify-write cycle to perform policy updates in order to avoid race
+          # conditions: An `etag` is returned in the response to `getIamPolicy`, and
+          # systems are expected to put that etag in the request to `setIamPolicy` to
+          # ensure that their change will be applied to the same version of the policy.
+          #
+          # If no `etag` is provided in the call to `setIamPolicy`, then the existing
+          # policy is overwritten blindly.
       "version": 42, # Version of the `Policy`. The default version is 0.
-      "etag": "A String", # `etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. If no `etag` is provided in the call to `setIamPolicy`, then the existing policy is overwritten blindly.
     },
   }
 
   x__xgafv: string, V1 error format.
+    Allowed values
+      1 - v1 error format
+      2 - v2 error format
 
 Returns:
   An object of the form:
 
-    { # Defines an Identity and Access Management (IAM) policy. It is used to specify access control policies for Cloud Platform resources. A `Policy` consists of a list of `bindings`. A `Binding` binds a list of `members` to a `role`, where the members can be user accounts, Google groups, Google domains, and service accounts. A `role` is a named list of permissions defined by IAM. **Example** { "bindings": [ { "role": "roles/owner", "members": [ "user:mike@example.com", "group:admins@example.com", "domain:google.com", "serviceAccount:my-other-app@appspot.gserviceaccount.com", ] }, { "role": "roles/viewer", "members": ["user:sean@example.com"] } ] } For a description of IAM and its features, see the [IAM developer's guide](https://cloud.google.com/iam).
-    "bindings": [ # Associates a list of `members` to a `role`. Multiple `bindings` must not be specified for the same `role`. `bindings` with no members will result in an error.
+    { # Defines an Identity and Access Management (IAM) policy. It is used to
+      # specify access control policies for Cloud Platform resources.
+      #
+      #
+      # A `Policy` consists of a list of `bindings`. A `Binding` binds a list of
+      # `members` to a `role`, where the members can be user accounts, Google groups,
+      # Google domains, and service accounts. A `role` is a named list of permissions
+      # defined by IAM.
+      #
+      # **Example**
+      #
+      #     {
+      #       "bindings": [
+      #         {
+      #           "role": "roles/owner",
+      #           "members": [
+      #             "user:mike@example.com",
+      #             "group:admins@example.com",
+      #             "domain:google.com",
+      #             "serviceAccount:my-other-app@appspot.gserviceaccount.com",
+      #           ]
+      #         },
+      #         {
+      #           "role": "roles/viewer",
+      #           "members": ["user:sean@example.com"]
+      #         }
+      #       ]
+      #     }
+      #
+      # For a description of IAM and its features, see the
+      # [IAM developer's guide](https://cloud.google.com/iam).
+    "bindings": [ # Associates a list of `members` to a `role`.
+        # Multiple `bindings` must not be specified for the same `role`.
+        # `bindings` with no members will result in an error.
       { # Associates `members` with a `role`.
-        "role": "A String", # Role that is assigned to `members`. For example, `roles/viewer`, `roles/editor`, or `roles/owner`. Required
-        "members": [ # Specifies the identities requesting access for a Cloud Platform resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@gmail.com` or `joe@example.com`. * `serviceAccount:{emailid}`: An email address that represents a service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: A Google Apps domain name that represents all the users of that domain. For example, `google.com` or `example.com`.
+        "role": "A String", # Role that is assigned to `members`.
+            # For example, `roles/viewer`, `roles/editor`, or `roles/owner`.
+            # Required
+        "members": [ # Specifies the identities requesting access for a Cloud Platform resource.
+            # `members` can have the following values:
+            #
+            # * `allUsers`: A special identifier that represents anyone who is
+            #    on the internet; with or without a Google account.
+            #
+            # * `allAuthenticatedUsers`: A special identifier that represents anyone
+            #    who is authenticated with a Google account or a service account.
+            #
+            # * `user:{emailid}`: An email address that represents a specific Google
+            #    account. For example, `alice@gmail.com` or `joe@example.com`.
+            #
+            #
+            # * `serviceAccount:{emailid}`: An email address that represents a service
+            #    account. For example, `my-other-app@appspot.gserviceaccount.com`.
+            #
+            # * `group:{emailid}`: An email address that represents a Google group.
+            #    For example, `admins@example.com`.
+            #
+            # * `domain:{domain}`: A Google Apps domain name that represents all the
+            #    users of that domain. For example, `google.com` or `example.com`.
+            #
           "A String",
         ],
       },
     ],
+    "etag": "A String", # `etag` is used for optimistic concurrency control as a way to help
+        # prevent simultaneous updates of a policy from overwriting each other.
+        # It is strongly suggested that systems make use of the `etag` in the
+        # read-modify-write cycle to perform policy updates in order to avoid race
+        # conditions: An `etag` is returned in the response to `getIamPolicy`, and
+        # systems are expected to put that etag in the request to `setIamPolicy` to
+        # ensure that their change will be applied to the same version of the policy.
+        #
+        # If no `etag` is provided in the call to `setIamPolicy`, then the existing
+        # policy is overwritten blindly.
     "version": 42, # Version of the `Policy`. The default version is 0.
-    "etag": "A String", # `etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. If no `etag` is provided in the call to `setIamPolicy`, then the existing policy is overwritten blindly.
   }</pre>
 </div>
 
 <div class="method">
-    <code class="details" id="testIamPermissions">testIamPermissions(resource, body, x__xgafv=None)</code>
+    <code class="details" id="testIamPermissions">testIamPermissions(resource=None, body, x__xgafv=None)</code>
   <pre>Returns permissions that a caller has on the specified Project.
 
 Args:
-  resource: string, REQUIRED: The resource for which the policy detail is being requested. `resource` is usually specified as a path. For example, a Project resource is specified as `projects/{project}`. (required)
+  resource: string, REQUIRED: The resource for which the policy detail is being requested.
+`resource` is usually specified as a path. For example, a Project
+resource is specified as `projects/{project}`. (required)
   body: object, The request body. (required)
     The object takes the form of:
 
 { # Request message for `TestIamPermissions` method.
-    "permissions": [ # The set of permissions to check for the `resource`. Permissions with wildcards (such as '*' or 'storage.*') are not allowed. For more information see [IAM Overview](https://cloud.google.com/iam/docs/overview#permissions).
+    "permissions": [ # The set of permissions to check for the `resource`. Permissions with
+        # wildcards (such as '*' or 'storage.*') are not allowed. For more
+        # information see
+        # [IAM Overview](https://cloud.google.com/iam/docs/overview#permissions).
       "A String",
     ],
   }
 
   x__xgafv: string, V1 error format.
+    Allowed values
+      1 - v1 error format
+      2 - v2 error format
 
 Returns:
   An object of the form:
 
     { # Response message for `TestIamPermissions` method.
-    "permissions": [ # A subset of `TestPermissionsRequest.permissions` that the caller is allowed.
+    "permissions": [ # A subset of `TestPermissionsRequest.permissions` that the caller is
+        # allowed.
       "A String",
     ],
   }</pre>
 </div>
 
 <div class="method">
-    <code class="details" id="undelete">undelete(projectId, body, x__xgafv=None)</code>
-  <pre>Restores the Project identified by the specified `project_id` (for example, `my-project-123`). You can only use this method for a Project that has a lifecycle state of DELETE_REQUESTED. After deletion starts, the Project cannot be restored. The caller must have modify permissions for this Project.
+    <code class="details" id="undelete">undelete(projectId=None, body, x__xgafv=None)</code>
+  <pre>Restores the Project identified by the specified
+`project_id` (for example, `my-project-123`).
+You can only use this method for a Project that has a lifecycle state of
+DELETE_REQUESTED.
+After deletion starts, the Project cannot be restored.
+
+The caller must have modify permissions for this Project.
 
 Args:
-  projectId: string, The project ID (for example, `foo-bar-123`). Required. (required)
+  projectId: string, The project ID (for example, `foo-bar-123`).
+
+Required. (required)
   body: object, The request body. (required)
     The object takes the form of:
 
-{ # The request sent to the UndeleteProject method.
+{ # The request sent to the UndeleteProject
+      # method.
   }
 
   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 `{}`.
+    { # 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="update">update(projectId, body, x__xgafv=None)</code>
-  <pre>Updates the attributes of the Project identified by the specified `project_id` (for example, `my-project-123`). The caller must have modify permissions for this Project.
+    <code class="details" id="update">update(projectId=None, body, x__xgafv=None)</code>
+  <pre>Updates the attributes of the Project identified by the specified
+`project_id` (for example, `my-project-123`).
+
+The caller must have modify permissions for this Project.
 
 Args:
-  projectId: string, The project ID (for example, `my-project-123`). Required. (required)
+  projectId: string, The project ID (for example, `my-project-123`).
+
+Required. (required)
   body: object, The request body. (required)
     The object takes the form of:
 
-{ # A Project is a high-level Google Cloud Platform entity. It is a container for ACLs, APIs, AppEngine Apps, VMs, and other Google Cloud Platform resources.
-  "name": "A String", # The user-assigned display name of the Project. It must be 4 to 30 characters. Allowed characters are: lowercase and uppercase letters, numbers, hyphen, single-quote, double-quote, space, and exclamation point. Example: My Project Read-write.
-  "parent": { # A container to reference an id for any resource type. A `resource` in Google Cloud Platform is a generic term for something you (a developer) may want to interact with through one of our API's. Some examples are an AppEngine app, a Compute Engine instance, a Cloud SQL database, and so on. # An optional reference to a parent Resource. The only supported parent type is "organization". Once set, the parent cannot be modified. Read-write.
-    "type": "A String", # Required field representing the resource type this id is for. At present, the only valid type is "organization".
-    "id": "A String", # Required field for the type-specific id. This should correspond to the id used in the type-specific API's.
+{ # A Project is a high-level Google Cloud Platform entity.  It is a
+    # container for ACLs, APIs, AppEngine Apps, VMs, and other
+    # Google Cloud Platform resources.
+  "name": "A String", # The user-assigned display name of the Project.
+      # It must be 4 to 30 characters.
+      # Allowed characters are: lowercase and uppercase letters, numbers,
+      # hyphen, single-quote, double-quote, space, and exclamation point.
+      # 
+      # Example: <code>My Project</code>
+      # 
+      # Read-write.
+  "parent": { # A container to reference an id for any resource type. A `resource` in Google # An optional reference to a parent Resource.
+      # 
+      # The only supported parent type is "organization". Once set, the parent
+      # cannot be modified. The `parent` can be set on creation or using the
+      # `UpdateProject` method; the end user must have the
+      # `resourcemanager.projects.create` permission on the parent.
+      # 
+      # Read-write.
+      # Cloud Platform is a generic term for something you (a developer) may want to
+      # interact with through one of our API's. Some examples are an AppEngine app,
+      # a Compute Engine instance, a Cloud SQL database, and so on.
+    "type": "A String", # Required field representing the resource type this id is for.
+        # At present, the only valid type is "organization".
+    "id": "A String", # Required field for the type-specific id. This should correspond to the id
+        # used in the type-specific API's.
   },
-  "projectId": "A String", # The unique, user-assigned ID of the Project. It must be 6 to 30 lowercase letters, digits, or hyphens. It must start with a letter. Trailing hyphens are prohibited. Example: tokyo-rain-123 Read-only after creation.
-  "labels": { # The labels associated with this Project. Label keys must be between 1 and 63 characters long and must conform to the following regular expression: \[a-z\](\[-a-z0-9\]*\[a-z0-9\])?. Label values must be between 0 and 63 characters long and must conform to the regular expression (\[a-z\](\[-a-z0-9\]*\[a-z0-9\])?)?. No more than 256 labels can be associated with a given resource. Clients should store labels in a representation such as JSON that does not depend on specific characters being disallowed. Example: "environment" : "dev" Read-write.
+  "projectId": "A String", # The unique, user-assigned ID of the Project.
+      # It must be 6 to 30 lowercase letters, digits, or hyphens.
+      # It must start with a letter.
+      # Trailing hyphens are prohibited.
+      # 
+      # Example: <code>tokyo-rain-123</code>
+      # 
+      # Read-only after creation.
+  "labels": { # The labels associated with this Project.
+      # 
+      # Label keys must be between 1 and 63 characters long and must conform
+      # to the following regular expression: \[a-z\](\[-a-z0-9\]*\[a-z0-9\])?.
+      # 
+      # Label values must be between 0 and 63 characters long and must conform
+      # to the regular expression (\[a-z\](\[-a-z0-9\]*\[a-z0-9\])?)?.
+      # 
+      # No more than 256 labels can be associated with a given resource.
+      # 
+      # Clients should store labels in a representation such as JSON that does not
+      # depend on specific characters being disallowed.
+      # 
+      # Example: <code>"environment" : "dev"</code>
+      # 
+      # Read-write.
     "a_key": "A String",
   },
-  "projectNumber": "A String", # The number uniquely identifying the project. Example: 415104041262 Read-only.
-  "lifecycleState": "A String", # The Project lifecycle state. Read-only.
-  "createTime": "A String", # Creation time. Read-only.
+  "createTime": "A String", # Creation time.
+      # 
+      # Read-only.
+  "lifecycleState": "A String", # The Project lifecycle state.
+      # 
+      # Read-only.
+  "projectNumber": "A String", # The number uniquely identifying the project.
+      # 
+      # Example: <code>415104041262</code>
+      # 
+      # Read-only.
 }
 
   x__xgafv: string, V1 error format.
+    Allowed values
+      1 - v1 error format
+      2 - v2 error format
 
 Returns:
   An object of the form:
 
-    { # A Project is a high-level Google Cloud Platform entity. It is a container for ACLs, APIs, AppEngine Apps, VMs, and other Google Cloud Platform resources.
-    "name": "A String", # The user-assigned display name of the Project. It must be 4 to 30 characters. Allowed characters are: lowercase and uppercase letters, numbers, hyphen, single-quote, double-quote, space, and exclamation point. Example: My Project Read-write.
-    "parent": { # A container to reference an id for any resource type. A `resource` in Google Cloud Platform is a generic term for something you (a developer) may want to interact with through one of our API's. Some examples are an AppEngine app, a Compute Engine instance, a Cloud SQL database, and so on. # An optional reference to a parent Resource. The only supported parent type is "organization". Once set, the parent cannot be modified. Read-write.
-      "type": "A String", # Required field representing the resource type this id is for. At present, the only valid type is "organization".
-      "id": "A String", # Required field for the type-specific id. This should correspond to the id used in the type-specific API's.
+    { # A Project is a high-level Google Cloud Platform entity.  It is a
+      # container for ACLs, APIs, AppEngine Apps, VMs, and other
+      # Google Cloud Platform resources.
+    "name": "A String", # The user-assigned display name of the Project.
+        # It must be 4 to 30 characters.
+        # Allowed characters are: lowercase and uppercase letters, numbers,
+        # hyphen, single-quote, double-quote, space, and exclamation point.
+        #
+        # Example: <code>My Project</code>
+        #
+        # Read-write.
+    "parent": { # A container to reference an id for any resource type. A `resource` in Google # An optional reference to a parent Resource.
+        #
+        # The only supported parent type is "organization". Once set, the parent
+        # cannot be modified. The `parent` can be set on creation or using the
+        # `UpdateProject` method; the end user must have the
+        # `resourcemanager.projects.create` permission on the parent.
+        #
+        # Read-write.
+        # Cloud Platform is a generic term for something you (a developer) may want to
+        # interact with through one of our API's. Some examples are an AppEngine app,
+        # a Compute Engine instance, a Cloud SQL database, and so on.
+      "type": "A String", # Required field representing the resource type this id is for.
+          # At present, the only valid type is "organization".
+      "id": "A String", # Required field for the type-specific id. This should correspond to the id
+          # used in the type-specific API's.
     },
-    "projectId": "A String", # The unique, user-assigned ID of the Project. It must be 6 to 30 lowercase letters, digits, or hyphens. It must start with a letter. Trailing hyphens are prohibited. Example: tokyo-rain-123 Read-only after creation.
-    "labels": { # The labels associated with this Project. Label keys must be between 1 and 63 characters long and must conform to the following regular expression: \[a-z\](\[-a-z0-9\]*\[a-z0-9\])?. Label values must be between 0 and 63 characters long and must conform to the regular expression (\[a-z\](\[-a-z0-9\]*\[a-z0-9\])?)?. No more than 256 labels can be associated with a given resource. Clients should store labels in a representation such as JSON that does not depend on specific characters being disallowed. Example: "environment" : "dev" Read-write.
+    "projectId": "A String", # The unique, user-assigned ID of the Project.
+        # It must be 6 to 30 lowercase letters, digits, or hyphens.
+        # It must start with a letter.
+        # Trailing hyphens are prohibited.
+        #
+        # Example: <code>tokyo-rain-123</code>
+        #
+        # Read-only after creation.
+    "labels": { # The labels associated with this Project.
+        #
+        # Label keys must be between 1 and 63 characters long and must conform
+        # to the following regular expression: \[a-z\](\[-a-z0-9\]*\[a-z0-9\])?.
+        #
+        # Label values must be between 0 and 63 characters long and must conform
+        # to the regular expression (\[a-z\](\[-a-z0-9\]*\[a-z0-9\])?)?.
+        #
+        # No more than 256 labels can be associated with a given resource.
+        #
+        # Clients should store labels in a representation such as JSON that does not
+        # depend on specific characters being disallowed.
+        #
+        # Example: <code>"environment" : "dev"</code>
+        #
+        # Read-write.
       "a_key": "A String",
     },
-    "projectNumber": "A String", # The number uniquely identifying the project. Example: 415104041262 Read-only.
-    "lifecycleState": "A String", # The Project lifecycle state. Read-only.
-    "createTime": "A String", # Creation time. Read-only.
+    "createTime": "A String", # Creation time.
+        #
+        # Read-only.
+    "lifecycleState": "A String", # The Project lifecycle state.
+        #
+        # Read-only.
+    "projectNumber": "A String", # The number uniquely identifying the project.
+        #
+        # Example: <code>415104041262</code>
+        #
+        # Read-only.
   }</pre>
 </div>
 
diff --git a/docs/dyn/cloudresourcemanager_v1beta1.organizations.html b/docs/dyn/cloudresourcemanager_v1beta1.organizations.html
index 5ba6cdc..ed08cef 100644
--- a/docs/dyn/cloudresourcemanager_v1beta1.organizations.html
+++ b/docs/dyn/cloudresourcemanager_v1beta1.organizations.html
@@ -78,22 +78,22 @@
   <code><a href="#get">get(name, organizationId=None, x__xgafv=None)</a></code></p>
 <p class="firstline">Fetches an Organization resource identified by the specified resource name.</p>
 <p class="toc_element">
-  <code><a href="#getIamPolicy">getIamPolicy(resource, body, x__xgafv=None)</a></code></p>
-<p class="firstline">Gets the access control policy for an Organization resource. May be empty if no such policy or resource exists. The `resource` field should be the organization's resource name, e.g. "organizations/123".</p>
+  <code><a href="#getIamPolicy">getIamPolicy(resource=None, body, x__xgafv=None)</a></code></p>
+<p class="firstline">Gets the access control policy for an Organization resource. May be empty</p>
 <p class="toc_element">
   <code><a href="#list">list(pageSize=None, filter=None, pageToken=None, x__xgafv=None)</a></code></p>
-<p class="firstline">Lists Organization resources that are visible to the user and satisfy the specified filter. This method returns Organizations in an unspecified order. New Organizations do not necessarily appear at the end of the list.</p>
+<p class="firstline">Lists Organization resources that are visible to the user and satisfy</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="#setIamPolicy">setIamPolicy(resource, body, x__xgafv=None)</a></code></p>
-<p class="firstline">Sets the access control policy on an Organization resource. Replaces any existing policy. The `resource` field should be the organization's resource name, e.g. "organizations/123".</p>
+  <code><a href="#setIamPolicy">setIamPolicy(resource=None, body, x__xgafv=None)</a></code></p>
+<p class="firstline">Sets the access control policy on an Organization resource. Replaces any</p>
 <p class="toc_element">
-  <code><a href="#testIamPermissions">testIamPermissions(resource, body, x__xgafv=None)</a></code></p>
-<p class="firstline">Returns permissions that a caller has on the specified Organization. The `resource` field should be the organization's resource name, e.g. "organizations/123".</p>
+  <code><a href="#testIamPermissions">testIamPermissions(resource=None, body, x__xgafv=None)</a></code></p>
+<p class="firstline">Returns permissions that a caller has on the specified Organization.</p>
 <p class="toc_element">
-  <code><a href="#update">update(name, body, x__xgafv=None)</a></code></p>
+  <code><a href="#update">update(name=None, body, x__xgafv=None)</a></code></p>
 <p class="firstline">Updates an Organization resource identified by the specified resource name.</p>
 <h3>Method Details</h3>
 <div class="method">
@@ -102,30 +102,54 @@
 
 Args:
   name: string, The resource name of the Organization to fetch, e.g. "organizations/1234". (required)
-  organizationId: string, The id of the Organization resource to fetch. This field is deprecated and will be removed in v1. Use name instead.
+  organizationId: string, The id of the Organization resource to fetch.
+This field is deprecated and will be removed in v1. Use name instead.
   x__xgafv: string, V1 error format.
+    Allowed values
+      1 - v1 error format
+      2 - v2 error format
 
 Returns:
   An object of the form:
 
-    { # The root node in the resource hierarchy to which a particular entity's (e.g., company) resources belong.
-    "displayName": "A String", # A friendly string to be used to refer to the Organization in the UI. Assigned by the server, set to the firm name of the Google For Work customer that owns this organization. @OutputOnly
-    "name": "A String", # Output Only. The resource name of the organization. This is the organization's relative path in the API. Its format is "organizations/[organization_id]". For example, "organizations/1234".
-    "organizationId": "A String", # An immutable id for the Organization that is assigned on creation. This should be omitted when creating a new Organization. This field is read-only. This field is deprecated and will be removed in v1. Use name instead.
-    "creationTime": "A String", # Timestamp when the Organization was created. Assigned by the server. @OutputOnly
-    "lifecycleState": "A String", # The organization's current lifecycle state. Assigned by the server. @OutputOnly
-    "owner": { # The entity that owns an Organization. The lifetime of the Organization and all of its descendants are bound to the `OrganizationOwner`. If the `OrganizationOwner` is deleted, the Organization and all its descendants will be deleted. # The owner of this Organization. The owner should be specified on creation. Once set, it cannot be changed. This field is required.
+    { # The root node in the resource hierarchy to which a particular entity's
+      # (e.g., company) resources belong.
+    "displayName": "A String", # A friendly string to be used to refer to the Organization in the UI.
+        # Assigned by the server, set to the firm name of the Google For Work
+        # customer that owns this organization.
+        # @OutputOnly
+    "name": "A String", # Output Only. The resource name of the organization. This is the
+        # organization's relative path in the API. Its format is
+        # "organizations/[organization_id]". For example, "organizations/1234".
+    "organizationId": "A String", # An immutable id for the Organization that is assigned on creation. This
+        # should be omitted when creating a new Organization.
+        # This field is read-only.
+        # This field is deprecated and will be removed in v1. Use name instead.
+    "creationTime": "A String", # Timestamp when the Organization was created. Assigned by the server.
+        # @OutputOnly
+    "lifecycleState": "A String", # The organization's current lifecycle state. Assigned by the server.
+        # @OutputOnly
+    "owner": { # The entity that owns an Organization. The lifetime of the Organization and # The owner of this Organization. The owner should be specified on
+        # creation. Once set, it cannot be changed.
+        # This field is required.
+        # all of its descendants are bound to the `OrganizationOwner`. If the
+        # `OrganizationOwner` is deleted, the Organization and all its descendants will
+        # be deleted.
       "directoryCustomerId": "A String", # The Google for Work customer id used in the Directory API.
     },
   }</pre>
 </div>
 
 <div class="method">
-    <code class="details" id="getIamPolicy">getIamPolicy(resource, body, x__xgafv=None)</code>
-  <pre>Gets the access control policy for an Organization resource. May be empty if no such policy or resource exists. The `resource` field should be the organization's resource name, e.g. "organizations/123".
+    <code class="details" id="getIamPolicy">getIamPolicy(resource=None, body, x__xgafv=None)</code>
+  <pre>Gets the access control policy for an Organization resource. May be empty
+if no such policy or resource exists. The `resource` field should be the
+organization's resource name, e.g. "organizations/123".
 
 Args:
-  resource: string, REQUIRED: The resource for which the policy is being requested. `resource` is usually specified as a path. For example, a Project resource is specified as `projects/{project}`. (required)
+  resource: string, REQUIRED: The resource for which the policy is being requested.
+`resource` is usually specified as a path. For example, a Project
+resource is specified as `projects/{project}`. (required)
   body: object, The request body. (required)
     The object takes the form of:
 
@@ -133,47 +157,154 @@
   }
 
   x__xgafv: string, V1 error format.
+    Allowed values
+      1 - v1 error format
+      2 - v2 error format
 
 Returns:
   An object of the form:
 
-    { # Defines an Identity and Access Management (IAM) policy. It is used to specify access control policies for Cloud Platform resources. A `Policy` consists of a list of `bindings`. A `Binding` binds a list of `members` to a `role`, where the members can be user accounts, Google groups, Google domains, and service accounts. A `role` is a named list of permissions defined by IAM. **Example** { "bindings": [ { "role": "roles/owner", "members": [ "user:mike@example.com", "group:admins@example.com", "domain:google.com", "serviceAccount:my-other-app@appspot.gserviceaccount.com", ] }, { "role": "roles/viewer", "members": ["user:sean@example.com"] } ] } For a description of IAM and its features, see the [IAM developer's guide](https://cloud.google.com/iam).
-    "bindings": [ # Associates a list of `members` to a `role`. Multiple `bindings` must not be specified for the same `role`. `bindings` with no members will result in an error.
+    { # Defines an Identity and Access Management (IAM) policy. It is used to
+      # specify access control policies for Cloud Platform resources.
+      #
+      #
+      # A `Policy` consists of a list of `bindings`. A `Binding` binds a list of
+      # `members` to a `role`, where the members can be user accounts, Google groups,
+      # Google domains, and service accounts. A `role` is a named list of permissions
+      # defined by IAM.
+      #
+      # **Example**
+      #
+      #     {
+      #       "bindings": [
+      #         {
+      #           "role": "roles/owner",
+      #           "members": [
+      #             "user:mike@example.com",
+      #             "group:admins@example.com",
+      #             "domain:google.com",
+      #             "serviceAccount:my-other-app@appspot.gserviceaccount.com",
+      #           ]
+      #         },
+      #         {
+      #           "role": "roles/viewer",
+      #           "members": ["user:sean@example.com"]
+      #         }
+      #       ]
+      #     }
+      #
+      # For a description of IAM and its features, see the
+      # [IAM developer's guide](https://cloud.google.com/iam).
+    "bindings": [ # Associates a list of `members` to a `role`.
+        # Multiple `bindings` must not be specified for the same `role`.
+        # `bindings` with no members will result in an error.
       { # Associates `members` with a `role`.
-        "role": "A String", # Role that is assigned to `members`. For example, `roles/viewer`, `roles/editor`, or `roles/owner`. Required
-        "members": [ # Specifies the identities requesting access for a Cloud Platform resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@gmail.com` or `joe@example.com`. * `serviceAccount:{emailid}`: An email address that represents a service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: A Google Apps domain name that represents all the users of that domain. For example, `google.com` or `example.com`.
+        "role": "A String", # Role that is assigned to `members`.
+            # For example, `roles/viewer`, `roles/editor`, or `roles/owner`.
+            # Required
+        "members": [ # Specifies the identities requesting access for a Cloud Platform resource.
+            # `members` can have the following values:
+            #
+            # * `allUsers`: A special identifier that represents anyone who is
+            #    on the internet; with or without a Google account.
+            #
+            # * `allAuthenticatedUsers`: A special identifier that represents anyone
+            #    who is authenticated with a Google account or a service account.
+            #
+            # * `user:{emailid}`: An email address that represents a specific Google
+            #    account. For example, `alice@gmail.com` or `joe@example.com`.
+            #
+            #
+            # * `serviceAccount:{emailid}`: An email address that represents a service
+            #    account. For example, `my-other-app@appspot.gserviceaccount.com`.
+            #
+            # * `group:{emailid}`: An email address that represents a Google group.
+            #    For example, `admins@example.com`.
+            #
+            # * `domain:{domain}`: A Google Apps domain name that represents all the
+            #    users of that domain. For example, `google.com` or `example.com`.
+            #
           "A String",
         ],
       },
     ],
+    "etag": "A String", # `etag` is used for optimistic concurrency control as a way to help
+        # prevent simultaneous updates of a policy from overwriting each other.
+        # It is strongly suggested that systems make use of the `etag` in the
+        # read-modify-write cycle to perform policy updates in order to avoid race
+        # conditions: An `etag` is returned in the response to `getIamPolicy`, and
+        # systems are expected to put that etag in the request to `setIamPolicy` to
+        # ensure that their change will be applied to the same version of the policy.
+        #
+        # If no `etag` is provided in the call to `setIamPolicy`, then the existing
+        # policy is overwritten blindly.
     "version": 42, # Version of the `Policy`. The default version is 0.
-    "etag": "A String", # `etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. If no `etag` is provided in the call to `setIamPolicy`, then the existing policy is overwritten blindly.
   }</pre>
 </div>
 
 <div class="method">
     <code class="details" id="list">list(pageSize=None, filter=None, pageToken=None, x__xgafv=None)</code>
-  <pre>Lists Organization resources that are visible to the user and satisfy the specified filter. This method returns Organizations in an unspecified order. New Organizations do not necessarily appear at the end of the list.
+  <pre>Lists Organization resources that are visible to the user and satisfy
+the specified filter. This method returns Organizations in an unspecified
+order. New Organizations do not necessarily appear at the end of the list.
 
 Args:
-  pageSize: integer, The maximum number of Organizations to return in the response. This field is optional.
-  filter: string, An optional query string used to filter the Organizations to return in the response. Filter rules are case-insensitive. Organizations may be filtered by `owner.directoryCustomerId` or by `domain`, where the domain is a Google for Work domain, for example: |Filter|Description| |------|-----------| |owner.directorycustomerid:123456789|Organizations with `owner.directory_customer_id` equal to `123456789`.| |domain:google.com|Organizations corresponding to the domain `google.com`.| This field is optional.
-  pageToken: string, A pagination token returned from a previous call to `ListOrganizations` that indicates from where listing should continue. This field is optional.
+  pageSize: integer, The maximum number of Organizations to return in the response.
+This field is optional.
+  filter: string, An optional query string used to filter the Organizations to return in
+the response. Filter rules are case-insensitive.
+
+
+Organizations may be filtered by `owner.directoryCustomerId` or by
+`domain`, where the domain is a Google for Work domain, for example:
+
+|Filter|Description|
+|------|-----------|
+|owner.directorycustomerid:123456789|Organizations with `owner.directory_customer_id` equal to `123456789`.|
+|domain:google.com|Organizations corresponding to the domain `google.com`.|
+
+This field is optional.
+  pageToken: string, A pagination token returned from a previous call to `ListOrganizations`
+that indicates from where listing should continue.
+This field is optional.
   x__xgafv: string, V1 error format.
+    Allowed values
+      1 - v1 error format
+      2 - v2 error format
 
 Returns:
   An object of the form:
 
     { # The response returned from the `ListOrganizations` method.
-    "nextPageToken": "A String", # A pagination token to be used to retrieve the next page of results. If the result is too large to fit within the page size specified in the request, this field will be set with a token that can be used to fetch the next page of results. If this field is empty, it indicates that this response contains the last page of results.
+    "nextPageToken": "A String", # A pagination token to be used to retrieve the next page of results. If the
+        # result is too large to fit within the page size specified in the request,
+        # this field will be set with a token that can be used to fetch the next page
+        # of results. If this field is empty, it indicates that this response
+        # contains the last page of results.
     "organizations": [ # The list of Organizations that matched the list query, possibly paginated.
-      { # The root node in the resource hierarchy to which a particular entity's (e.g., company) resources belong.
-        "displayName": "A String", # A friendly string to be used to refer to the Organization in the UI. Assigned by the server, set to the firm name of the Google For Work customer that owns this organization. @OutputOnly
-        "name": "A String", # Output Only. The resource name of the organization. This is the organization's relative path in the API. Its format is "organizations/[organization_id]". For example, "organizations/1234".
-        "organizationId": "A String", # An immutable id for the Organization that is assigned on creation. This should be omitted when creating a new Organization. This field is read-only. This field is deprecated and will be removed in v1. Use name instead.
-        "creationTime": "A String", # Timestamp when the Organization was created. Assigned by the server. @OutputOnly
-        "lifecycleState": "A String", # The organization's current lifecycle state. Assigned by the server. @OutputOnly
-        "owner": { # The entity that owns an Organization. The lifetime of the Organization and all of its descendants are bound to the `OrganizationOwner`. If the `OrganizationOwner` is deleted, the Organization and all its descendants will be deleted. # The owner of this Organization. The owner should be specified on creation. Once set, it cannot be changed. This field is required.
+      { # The root node in the resource hierarchy to which a particular entity's
+          # (e.g., company) resources belong.
+        "displayName": "A String", # A friendly string to be used to refer to the Organization in the UI.
+            # Assigned by the server, set to the firm name of the Google For Work
+            # customer that owns this organization.
+            # @OutputOnly
+        "name": "A String", # Output Only. The resource name of the organization. This is the
+            # organization's relative path in the API. Its format is
+            # "organizations/[organization_id]". For example, "organizations/1234".
+        "organizationId": "A String", # An immutable id for the Organization that is assigned on creation. This
+            # should be omitted when creating a new Organization.
+            # This field is read-only.
+            # This field is deprecated and will be removed in v1. Use name instead.
+        "creationTime": "A String", # Timestamp when the Organization was created. Assigned by the server.
+            # @OutputOnly
+        "lifecycleState": "A String", # The organization's current lifecycle state. Assigned by the server.
+            # @OutputOnly
+        "owner": { # The entity that owns an Organization. The lifetime of the Organization and # The owner of this Organization. The owner should be specified on
+            # creation. Once set, it cannot be changed.
+            # This field is required.
+            # all of its descendants are bound to the `OrganizationOwner`. If the
+            # `OrganizationOwner` is deleted, the Organization and all its descendants will
+            # be deleted.
           "directoryCustomerId": "A String", # The Google for Work customer id used in the Directory API.
         },
       },
@@ -196,107 +327,293 @@
 </div>
 
 <div class="method">
-    <code class="details" id="setIamPolicy">setIamPolicy(resource, body, x__xgafv=None)</code>
-  <pre>Sets the access control policy on an Organization resource. Replaces any existing policy. The `resource` field should be the organization's resource name, e.g. "organizations/123".
+    <code class="details" id="setIamPolicy">setIamPolicy(resource=None, body, x__xgafv=None)</code>
+  <pre>Sets the access control policy on an Organization resource. Replaces any
+existing policy. The `resource` field should be the organization's resource
+name, e.g. "organizations/123".
 
 Args:
-  resource: string, REQUIRED: The resource for which the policy is being specified. `resource` is usually specified as a path. For example, a Project resource is specified as `projects/{project}`. (required)
+  resource: string, REQUIRED: The resource for which the policy is being specified.
+`resource` is usually specified as a path. For example, a Project
+resource is specified as `projects/{project}`. (required)
   body: object, The request body. (required)
     The object takes the form of:
 
 { # Request message for `SetIamPolicy` method.
-    "policy": { # Defines an Identity and Access Management (IAM) policy. It is used to specify access control policies for Cloud Platform resources. A `Policy` consists of a list of `bindings`. A `Binding` binds a list of `members` to a `role`, where the members can be user accounts, Google groups, Google domains, and service accounts. A `role` is a named list of permissions defined by IAM. **Example** { "bindings": [ { "role": "roles/owner", "members": [ "user:mike@example.com", "group:admins@example.com", "domain:google.com", "serviceAccount:my-other-app@appspot.gserviceaccount.com", ] }, { "role": "roles/viewer", "members": ["user:sean@example.com"] } ] } For a description of IAM and its features, see the [IAM developer's guide](https://cloud.google.com/iam). # REQUIRED: The complete policy to be applied to the `resource`. The size of the policy is limited to a few 10s of KB. An empty policy is a valid policy but certain Cloud Platform services (such as Projects) might reject them.
-      "bindings": [ # Associates a list of `members` to a `role`. Multiple `bindings` must not be specified for the same `role`. `bindings` with no members will result in an error.
+    "policy": { # Defines an Identity and Access Management (IAM) policy. It is used to # REQUIRED: The complete policy to be applied to the `resource`. The size of
+        # the policy is limited to a few 10s of KB. An empty policy is a
+        # valid policy but certain Cloud Platform services (such as Projects)
+        # might reject them.
+        # specify access control policies for Cloud Platform resources.
+        #
+        #
+        # A `Policy` consists of a list of `bindings`. A `Binding` binds a list of
+        # `members` to a `role`, where the members can be user accounts, Google groups,
+        # Google domains, and service accounts. A `role` is a named list of permissions
+        # defined by IAM.
+        #
+        # **Example**
+        #
+        #     {
+        #       "bindings": [
+        #         {
+        #           "role": "roles/owner",
+        #           "members": [
+        #             "user:mike@example.com",
+        #             "group:admins@example.com",
+        #             "domain:google.com",
+        #             "serviceAccount:my-other-app@appspot.gserviceaccount.com",
+        #           ]
+        #         },
+        #         {
+        #           "role": "roles/viewer",
+        #           "members": ["user:sean@example.com"]
+        #         }
+        #       ]
+        #     }
+        #
+        # For a description of IAM and its features, see the
+        # [IAM developer's guide](https://cloud.google.com/iam).
+      "bindings": [ # Associates a list of `members` to a `role`.
+          # Multiple `bindings` must not be specified for the same `role`.
+          # `bindings` with no members will result in an error.
         { # Associates `members` with a `role`.
-          "role": "A String", # Role that is assigned to `members`. For example, `roles/viewer`, `roles/editor`, or `roles/owner`. Required
-          "members": [ # Specifies the identities requesting access for a Cloud Platform resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@gmail.com` or `joe@example.com`. * `serviceAccount:{emailid}`: An email address that represents a service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: A Google Apps domain name that represents all the users of that domain. For example, `google.com` or `example.com`.
+          "role": "A String", # Role that is assigned to `members`.
+              # For example, `roles/viewer`, `roles/editor`, or `roles/owner`.
+              # Required
+          "members": [ # Specifies the identities requesting access for a Cloud Platform resource.
+              # `members` can have the following values:
+              #
+              # * `allUsers`: A special identifier that represents anyone who is
+              #    on the internet; with or without a Google account.
+              #
+              # * `allAuthenticatedUsers`: A special identifier that represents anyone
+              #    who is authenticated with a Google account or a service account.
+              #
+              # * `user:{emailid}`: An email address that represents a specific Google
+              #    account. For example, `alice@gmail.com` or `joe@example.com`.
+              #
+              #
+              # * `serviceAccount:{emailid}`: An email address that represents a service
+              #    account. For example, `my-other-app@appspot.gserviceaccount.com`.
+              #
+              # * `group:{emailid}`: An email address that represents a Google group.
+              #    For example, `admins@example.com`.
+              #
+              # * `domain:{domain}`: A Google Apps domain name that represents all the
+              #    users of that domain. For example, `google.com` or `example.com`.
+              #
             "A String",
           ],
         },
       ],
+      "etag": "A String", # `etag` is used for optimistic concurrency control as a way to help
+          # prevent simultaneous updates of a policy from overwriting each other.
+          # It is strongly suggested that systems make use of the `etag` in the
+          # read-modify-write cycle to perform policy updates in order to avoid race
+          # conditions: An `etag` is returned in the response to `getIamPolicy`, and
+          # systems are expected to put that etag in the request to `setIamPolicy` to
+          # ensure that their change will be applied to the same version of the policy.
+          #
+          # If no `etag` is provided in the call to `setIamPolicy`, then the existing
+          # policy is overwritten blindly.
       "version": 42, # Version of the `Policy`. The default version is 0.
-      "etag": "A String", # `etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. If no `etag` is provided in the call to `setIamPolicy`, then the existing policy is overwritten blindly.
     },
   }
 
   x__xgafv: string, V1 error format.
+    Allowed values
+      1 - v1 error format
+      2 - v2 error format
 
 Returns:
   An object of the form:
 
-    { # Defines an Identity and Access Management (IAM) policy. It is used to specify access control policies for Cloud Platform resources. A `Policy` consists of a list of `bindings`. A `Binding` binds a list of `members` to a `role`, where the members can be user accounts, Google groups, Google domains, and service accounts. A `role` is a named list of permissions defined by IAM. **Example** { "bindings": [ { "role": "roles/owner", "members": [ "user:mike@example.com", "group:admins@example.com", "domain:google.com", "serviceAccount:my-other-app@appspot.gserviceaccount.com", ] }, { "role": "roles/viewer", "members": ["user:sean@example.com"] } ] } For a description of IAM and its features, see the [IAM developer's guide](https://cloud.google.com/iam).
-    "bindings": [ # Associates a list of `members` to a `role`. Multiple `bindings` must not be specified for the same `role`. `bindings` with no members will result in an error.
+    { # Defines an Identity and Access Management (IAM) policy. It is used to
+      # specify access control policies for Cloud Platform resources.
+      #
+      #
+      # A `Policy` consists of a list of `bindings`. A `Binding` binds a list of
+      # `members` to a `role`, where the members can be user accounts, Google groups,
+      # Google domains, and service accounts. A `role` is a named list of permissions
+      # defined by IAM.
+      #
+      # **Example**
+      #
+      #     {
+      #       "bindings": [
+      #         {
+      #           "role": "roles/owner",
+      #           "members": [
+      #             "user:mike@example.com",
+      #             "group:admins@example.com",
+      #             "domain:google.com",
+      #             "serviceAccount:my-other-app@appspot.gserviceaccount.com",
+      #           ]
+      #         },
+      #         {
+      #           "role": "roles/viewer",
+      #           "members": ["user:sean@example.com"]
+      #         }
+      #       ]
+      #     }
+      #
+      # For a description of IAM and its features, see the
+      # [IAM developer's guide](https://cloud.google.com/iam).
+    "bindings": [ # Associates a list of `members` to a `role`.
+        # Multiple `bindings` must not be specified for the same `role`.
+        # `bindings` with no members will result in an error.
       { # Associates `members` with a `role`.
-        "role": "A String", # Role that is assigned to `members`. For example, `roles/viewer`, `roles/editor`, or `roles/owner`. Required
-        "members": [ # Specifies the identities requesting access for a Cloud Platform resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@gmail.com` or `joe@example.com`. * `serviceAccount:{emailid}`: An email address that represents a service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: A Google Apps domain name that represents all the users of that domain. For example, `google.com` or `example.com`.
+        "role": "A String", # Role that is assigned to `members`.
+            # For example, `roles/viewer`, `roles/editor`, or `roles/owner`.
+            # Required
+        "members": [ # Specifies the identities requesting access for a Cloud Platform resource.
+            # `members` can have the following values:
+            #
+            # * `allUsers`: A special identifier that represents anyone who is
+            #    on the internet; with or without a Google account.
+            #
+            # * `allAuthenticatedUsers`: A special identifier that represents anyone
+            #    who is authenticated with a Google account or a service account.
+            #
+            # * `user:{emailid}`: An email address that represents a specific Google
+            #    account. For example, `alice@gmail.com` or `joe@example.com`.
+            #
+            #
+            # * `serviceAccount:{emailid}`: An email address that represents a service
+            #    account. For example, `my-other-app@appspot.gserviceaccount.com`.
+            #
+            # * `group:{emailid}`: An email address that represents a Google group.
+            #    For example, `admins@example.com`.
+            #
+            # * `domain:{domain}`: A Google Apps domain name that represents all the
+            #    users of that domain. For example, `google.com` or `example.com`.
+            #
           "A String",
         ],
       },
     ],
+    "etag": "A String", # `etag` is used for optimistic concurrency control as a way to help
+        # prevent simultaneous updates of a policy from overwriting each other.
+        # It is strongly suggested that systems make use of the `etag` in the
+        # read-modify-write cycle to perform policy updates in order to avoid race
+        # conditions: An `etag` is returned in the response to `getIamPolicy`, and
+        # systems are expected to put that etag in the request to `setIamPolicy` to
+        # ensure that their change will be applied to the same version of the policy.
+        #
+        # If no `etag` is provided in the call to `setIamPolicy`, then the existing
+        # policy is overwritten blindly.
     "version": 42, # Version of the `Policy`. The default version is 0.
-    "etag": "A String", # `etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. If no `etag` is provided in the call to `setIamPolicy`, then the existing policy is overwritten blindly.
   }</pre>
 </div>
 
 <div class="method">
-    <code class="details" id="testIamPermissions">testIamPermissions(resource, body, x__xgafv=None)</code>
-  <pre>Returns permissions that a caller has on the specified Organization. The `resource` field should be the organization's resource name, e.g. "organizations/123".
+    <code class="details" id="testIamPermissions">testIamPermissions(resource=None, body, x__xgafv=None)</code>
+  <pre>Returns permissions that a caller has on the specified Organization.
+The `resource` field should be the organization's resource name,
+e.g. "organizations/123".
 
 Args:
-  resource: string, REQUIRED: The resource for which the policy detail is being requested. `resource` is usually specified as a path. For example, a Project resource is specified as `projects/{project}`. (required)
+  resource: string, REQUIRED: The resource for which the policy detail is being requested.
+`resource` is usually specified as a path. For example, a Project
+resource is specified as `projects/{project}`. (required)
   body: object, The request body. (required)
     The object takes the form of:
 
 { # Request message for `TestIamPermissions` method.
-    "permissions": [ # The set of permissions to check for the `resource`. Permissions with wildcards (such as '*' or 'storage.*') are not allowed. For more information see [IAM Overview](https://cloud.google.com/iam/docs/overview#permissions).
+    "permissions": [ # The set of permissions to check for the `resource`. Permissions with
+        # wildcards (such as '*' or 'storage.*') are not allowed. For more
+        # information see
+        # [IAM Overview](https://cloud.google.com/iam/docs/overview#permissions).
       "A String",
     ],
   }
 
   x__xgafv: string, V1 error format.
+    Allowed values
+      1 - v1 error format
+      2 - v2 error format
 
 Returns:
   An object of the form:
 
     { # Response message for `TestIamPermissions` method.
-    "permissions": [ # A subset of `TestPermissionsRequest.permissions` that the caller is allowed.
+    "permissions": [ # A subset of `TestPermissionsRequest.permissions` that the caller is
+        # allowed.
       "A String",
     ],
   }</pre>
 </div>
 
 <div class="method">
-    <code class="details" id="update">update(name, body, x__xgafv=None)</code>
+    <code class="details" id="update">update(name=None, body, x__xgafv=None)</code>
   <pre>Updates an Organization resource identified by the specified resource name.
 
 Args:
-  name: string, Output Only. The resource name of the organization. This is the organization's relative path in the API. Its format is "organizations/[organization_id]". For example, "organizations/1234". (required)
+  name: string, Output Only. The resource name of the organization. This is the
+organization's relative path in the API. Its format is
+"organizations/[organization_id]". For example, "organizations/1234". (required)
   body: object, The request body. (required)
     The object takes the form of:
 
-{ # The root node in the resource hierarchy to which a particular entity's (e.g., company) resources belong.
-  "displayName": "A String", # A friendly string to be used to refer to the Organization in the UI. Assigned by the server, set to the firm name of the Google For Work customer that owns this organization. @OutputOnly
-  "name": "A String", # Output Only. The resource name of the organization. This is the organization's relative path in the API. Its format is "organizations/[organization_id]". For example, "organizations/1234".
-  "organizationId": "A String", # An immutable id for the Organization that is assigned on creation. This should be omitted when creating a new Organization. This field is read-only. This field is deprecated and will be removed in v1. Use name instead.
-  "creationTime": "A String", # Timestamp when the Organization was created. Assigned by the server. @OutputOnly
-  "lifecycleState": "A String", # The organization's current lifecycle state. Assigned by the server. @OutputOnly
-  "owner": { # The entity that owns an Organization. The lifetime of the Organization and all of its descendants are bound to the `OrganizationOwner`. If the `OrganizationOwner` is deleted, the Organization and all its descendants will be deleted. # The owner of this Organization. The owner should be specified on creation. Once set, it cannot be changed. This field is required.
+{ # The root node in the resource hierarchy to which a particular entity's
+    # (e.g., company) resources belong.
+  "displayName": "A String", # A friendly string to be used to refer to the Organization in the UI.
+      # Assigned by the server, set to the firm name of the Google For Work
+      # customer that owns this organization.
+      # @OutputOnly
+  "name": "A String", # Output Only. The resource name of the organization. This is the
+      # organization's relative path in the API. Its format is
+      # "organizations/[organization_id]". For example, "organizations/1234".
+  "organizationId": "A String", # An immutable id for the Organization that is assigned on creation. This
+      # should be omitted when creating a new Organization.
+      # This field is read-only.
+      # This field is deprecated and will be removed in v1. Use name instead.
+  "creationTime": "A String", # Timestamp when the Organization was created. Assigned by the server.
+      # @OutputOnly
+  "lifecycleState": "A String", # The organization's current lifecycle state. Assigned by the server.
+      # @OutputOnly
+  "owner": { # The entity that owns an Organization. The lifetime of the Organization and # The owner of this Organization. The owner should be specified on
+      # creation. Once set, it cannot be changed.
+      # This field is required.
+      # all of its descendants are bound to the `OrganizationOwner`. If the
+      # `OrganizationOwner` is deleted, the Organization and all its descendants will
+      # be deleted.
     "directoryCustomerId": "A String", # The Google for Work customer id used in the Directory API.
   },
 }
 
   x__xgafv: string, V1 error format.
+    Allowed values
+      1 - v1 error format
+      2 - v2 error format
 
 Returns:
   An object of the form:
 
-    { # The root node in the resource hierarchy to which a particular entity's (e.g., company) resources belong.
-    "displayName": "A String", # A friendly string to be used to refer to the Organization in the UI. Assigned by the server, set to the firm name of the Google For Work customer that owns this organization. @OutputOnly
-    "name": "A String", # Output Only. The resource name of the organization. This is the organization's relative path in the API. Its format is "organizations/[organization_id]". For example, "organizations/1234".
-    "organizationId": "A String", # An immutable id for the Organization that is assigned on creation. This should be omitted when creating a new Organization. This field is read-only. This field is deprecated and will be removed in v1. Use name instead.
-    "creationTime": "A String", # Timestamp when the Organization was created. Assigned by the server. @OutputOnly
-    "lifecycleState": "A String", # The organization's current lifecycle state. Assigned by the server. @OutputOnly
-    "owner": { # The entity that owns an Organization. The lifetime of the Organization and all of its descendants are bound to the `OrganizationOwner`. If the `OrganizationOwner` is deleted, the Organization and all its descendants will be deleted. # The owner of this Organization. The owner should be specified on creation. Once set, it cannot be changed. This field is required.
+    { # The root node in the resource hierarchy to which a particular entity's
+      # (e.g., company) resources belong.
+    "displayName": "A String", # A friendly string to be used to refer to the Organization in the UI.
+        # Assigned by the server, set to the firm name of the Google For Work
+        # customer that owns this organization.
+        # @OutputOnly
+    "name": "A String", # Output Only. The resource name of the organization. This is the
+        # organization's relative path in the API. Its format is
+        # "organizations/[organization_id]". For example, "organizations/1234".
+    "organizationId": "A String", # An immutable id for the Organization that is assigned on creation. This
+        # should be omitted when creating a new Organization.
+        # This field is read-only.
+        # This field is deprecated and will be removed in v1. Use name instead.
+    "creationTime": "A String", # Timestamp when the Organization was created. Assigned by the server.
+        # @OutputOnly
+    "lifecycleState": "A String", # The organization's current lifecycle state. Assigned by the server.
+        # @OutputOnly
+    "owner": { # The entity that owns an Organization. The lifetime of the Organization and # The owner of this Organization. The owner should be specified on
+        # creation. Once set, it cannot be changed.
+        # This field is required.
+        # all of its descendants are bound to the `OrganizationOwner`. If the
+        # `OrganizationOwner` is deleted, the Organization and all its descendants will
+        # be deleted.
       "directoryCustomerId": "A String", # The Google for Work customer id used in the Directory API.
     },
   }</pre>
diff --git a/docs/dyn/cloudresourcemanager_v1beta1.projects.html b/docs/dyn/cloudresourcemanager_v1beta1.projects.html
index 1c5be48..36afd11 100644
--- a/docs/dyn/cloudresourcemanager_v1beta1.projects.html
+++ b/docs/dyn/cloudresourcemanager_v1beta1.projects.html
@@ -76,148 +76,372 @@
 <h2>Instance Methods</h2>
 <p class="toc_element">
   <code><a href="#create">create(body, useLegacyStack=None, x__xgafv=None)</a></code></p>
-<p class="firstline">Creates a Project resource. Initially, the Project resource is owned by its creator exclusively. The creator can later grant permission to others to read or update the Project. Several APIs are activated automatically for the Project, including Google Cloud Storage.</p>
+<p class="firstline">Creates a Project resource.</p>
 <p class="toc_element">
-  <code><a href="#delete">delete(projectId, x__xgafv=None)</a></code></p>
-<p class="firstline">Marks the Project identified by the specified `project_id` (for example, `my-project-123`) for deletion. This method will only affect the Project if the following criteria are met: + The Project does not have a billing account associated with it. + The Project has a lifecycle state of ACTIVE. This method changes the Project's lifecycle state from ACTIVE to DELETE_REQUESTED. The deletion starts at an unspecified time, at which point the project is no longer accessible. Until the deletion completes, you can check the lifecycle state checked by retrieving the Project with GetProject, and the Project remains visible to ListProjects. However, you cannot update the project. After the deletion completes, the Project is not retrievable by the GetProject and ListProjects methods. The caller must have modify permissions for this Project.</p>
+  <code><a href="#delete">delete(projectId=None, x__xgafv=None)</a></code></p>
+<p class="firstline">Marks the Project identified by the specified</p>
 <p class="toc_element">
-  <code><a href="#get">get(projectId, x__xgafv=None)</a></code></p>
-<p class="firstline">Retrieves the Project identified by the specified `project_id` (for example, `my-project-123`). The caller must have read permissions for this Project.</p>
+  <code><a href="#get">get(projectId=None, x__xgafv=None)</a></code></p>
+<p class="firstline">Retrieves the Project identified by the specified</p>
 <p class="toc_element">
-  <code><a href="#getAncestry">getAncestry(projectId, body, x__xgafv=None)</a></code></p>
-<p class="firstline">Gets a list of ancestors in the resource hierarchy for the Project identified by the specified `project_id` (for example, `my-project-123`). The caller must have read permissions for this Project.</p>
+  <code><a href="#getAncestry">getAncestry(projectId=None, body, x__xgafv=None)</a></code></p>
+<p class="firstline">Gets a list of ancestors in the resource hierarchy for the Project</p>
 <p class="toc_element">
-  <code><a href="#getIamPolicy">getIamPolicy(resource, body, x__xgafv=None)</a></code></p>
-<p class="firstline">Returns the IAM access control policy for the specified Project. Permission is denied if the policy or the resource does not exist.</p>
+  <code><a href="#getIamPolicy">getIamPolicy(resource=None, body, x__xgafv=None)</a></code></p>
+<p class="firstline">Returns the IAM access control policy for the specified Project.</p>
 <p class="toc_element">
   <code><a href="#list">list(pageSize=None, filter=None, pageToken=None, x__xgafv=None)</a></code></p>
-<p class="firstline">Lists Projects that are visible to the user and satisfy the specified filter. This method returns Projects in an unspecified order. New Projects do not necessarily appear at the end of the list.</p>
+<p class="firstline">Lists Projects that are visible to the user and satisfy the</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="#setIamPolicy">setIamPolicy(resource, body, x__xgafv=None)</a></code></p>
-<p class="firstline">Sets the IAM access control policy for the specified Project. Replaces any existing policy. The following constraints apply when using `setIamPolicy()`: + Project does not support `allUsers` and `allAuthenticatedUsers` as `members` in a `Binding` of a `Policy`. + The owner role can be granted only to `user` and `serviceAccount`. + Service accounts can be made owners of a project directly without any restrictions. However, to be added as an owner, a user must be invited via Cloud Platform console and must accept the invitation. + A user cannot be granted the owner role using `setIamPolicy()`. The user must be granted the owner role using the Cloud Platform Console and must explicitly accept the invitation. + Invitations to grant the owner role cannot be sent using `setIamPolicy()`; they must be sent only using the Cloud Platform Console. + Membership changes that leave the project without any owners that have accepted the Terms of Service (ToS) will be rejected. + There must be at least one owner who has accepted the Terms of Service (ToS) agreement in the policy. Calling `setIamPolicy()` to to remove the last ToS-accepted owner from the policy will fail. This restriction also applies to legacy projects that no longer have owners who have accepted the ToS. Edits to IAM policies will be rejected until the lack of a ToS-accepting owner is rectified. + Calling this method requires enabling the App Engine Admin API. Note: Removing service accounts from policies or changing their roles can render services completely inoperable. It is important to understand how the service account is being used before removing or updating its roles.</p>
+  <code><a href="#setIamPolicy">setIamPolicy(resource=None, body, x__xgafv=None)</a></code></p>
+<p class="firstline">Sets the IAM access control policy for the specified Project. Replaces</p>
 <p class="toc_element">
-  <code><a href="#testIamPermissions">testIamPermissions(resource, body, x__xgafv=None)</a></code></p>
+  <code><a href="#testIamPermissions">testIamPermissions(resource=None, body, x__xgafv=None)</a></code></p>
 <p class="firstline">Returns permissions that a caller has on the specified Project.</p>
 <p class="toc_element">
-  <code><a href="#undelete">undelete(projectId, body, x__xgafv=None)</a></code></p>
-<p class="firstline">Restores the Project identified by the specified `project_id` (for example, `my-project-123`). You can only use this method for a Project that has a lifecycle state of DELETE_REQUESTED. After deletion starts, the Project cannot be restored. The caller must have modify permissions for this Project.</p>
+  <code><a href="#undelete">undelete(projectId=None, body, x__xgafv=None)</a></code></p>
+<p class="firstline">Restores the Project identified by the specified</p>
 <p class="toc_element">
-  <code><a href="#update">update(projectId, body, x__xgafv=None)</a></code></p>
-<p class="firstline">Updates the attributes of the Project identified by the specified `project_id` (for example, `my-project-123`). The caller must have modify permissions for this Project.</p>
+  <code><a href="#update">update(projectId=None, body, x__xgafv=None)</a></code></p>
+<p class="firstline">Updates the attributes of the Project identified by the specified</p>
 <h3>Method Details</h3>
 <div class="method">
     <code class="details" id="create">create(body, useLegacyStack=None, x__xgafv=None)</code>
-  <pre>Creates a Project resource. Initially, the Project resource is owned by its creator exclusively. The creator can later grant permission to others to read or update the Project. Several APIs are activated automatically for the Project, including Google Cloud Storage.
+  <pre>Creates a Project resource.
+
+Initially, the Project resource is owned by its creator exclusively.
+The creator can later grant permission to others to read or update the
+Project.
+
+Several APIs are activated automatically for the Project, including
+Google Cloud Storage.
 
 Args:
   body: object, The request body. (required)
     The object takes the form of:
 
-{ # A Project is a high-level Google Cloud Platform entity. It is a container for ACLs, APIs, AppEngine Apps, VMs, and other Google Cloud Platform resources.
-  "name": "A String", # The user-assigned display name of the Project. It must be 4 to 30 characters. Allowed characters are: lowercase and uppercase letters, numbers, hyphen, single-quote, double-quote, space, and exclamation point. Example: My Project Read-write.
-  "parent": { # A container to reference an id for any resource type. A `resource` in Google Cloud Platform is a generic term for something you (a developer) may want to interact with through one of our API's. Some examples are an AppEngine app, a Compute Engine instance, a Cloud SQL database, and so on. # An optional reference to a parent Resource. The only supported parent type is "organization". Once set, the parent cannot be modified. Read-write.
-    "type": "A String", # Required field representing the resource type this id is for. At present, the valid types are "project" and "organization".
-    "id": "A String", # Required field for the type-specific id. This should correspond to the id used in the type-specific API's.
+{ # A Project is a high-level Google Cloud Platform entity.  It is a
+    # container for ACLs, APIs, AppEngine Apps, VMs, and other
+    # Google Cloud Platform resources.
+  "name": "A String", # The user-assigned display name of the Project.
+      # It must be 4 to 30 characters.
+      # Allowed characters are: lowercase and uppercase letters, numbers,
+      # hyphen, single-quote, double-quote, space, and exclamation point.
+      # 
+      # Example: <code>My Project</code>
+      # 
+      # Read-write.
+  "parent": { # A container to reference an id for any resource type. A `resource` in Google # An optional reference to a parent Resource.
+      # 
+      # The only supported parent type is "organization". Once set, the parent
+      # cannot be modified. The `parent` can be set on creation or using the
+      # `UpdateProject` method; the end user must have the
+      # `resourcemanager.projects.create` permission on the parent.
+      # 
+      # Read-write.
+      # Cloud Platform is a generic term for something you (a developer) may want to
+      # interact with through one of our API's. Some examples are an AppEngine app,
+      # a Compute Engine instance, a Cloud SQL database, and so on.
+    "type": "A String", # Required field representing the resource type this id is for.
+        # At present, the valid types are "project" and "organization".
+    "id": "A String", # Required field for the type-specific id. This should correspond to the id
+        # used in the type-specific API's.
   },
-  "projectId": "A String", # The unique, user-assigned ID of the Project. It must be 6 to 30 lowercase letters, digits, or hyphens. It must start with a letter. Trailing hyphens are prohibited. Example: tokyo-rain-123 Read-only after creation.
-  "labels": { # The labels associated with this Project. Label keys must be between 1 and 63 characters long and must conform to the following regular expression: \[a-z\](\[-a-z0-9\]*\[a-z0-9\])?. Label values must be between 0 and 63 characters long and must conform to the regular expression (\[a-z\](\[-a-z0-9\]*\[a-z0-9\])?)?. No more than 256 labels can be associated with a given resource. Clients should store labels in a representation such as JSON that does not depend on specific characters being disallowed. Example: "environment" : "dev" Read-write.
+  "projectId": "A String", # The unique, user-assigned ID of the Project.
+      # It must be 6 to 30 lowercase letters, digits, or hyphens.
+      # It must start with a letter.
+      # Trailing hyphens are prohibited.
+      # 
+      # Example: <code>tokyo-rain-123</code>
+      # 
+      # Read-only after creation.
+  "labels": { # The labels associated with this Project.
+      # 
+      # Label keys must be between 1 and 63 characters long and must conform
+      # to the following regular expression: \[a-z\](\[-a-z0-9\]*\[a-z0-9\])?.
+      # 
+      # Label values must be between 0 and 63 characters long and must conform
+      # to the regular expression (\[a-z\](\[-a-z0-9\]*\[a-z0-9\])?)?.
+      # 
+      # No more than 256 labels can be associated with a given resource.
+      # 
+      # Clients should store labels in a representation such as JSON that does not
+      # depend on specific characters being disallowed.
+      # 
+      # Example: <code>"environment" : "dev"</code>
+      # 
+      # Read-write.
     "a_key": "A String",
   },
-  "projectNumber": "A String", # The number uniquely identifying the project. Example: 415104041262 Read-only.
-  "lifecycleState": "A String", # The Project lifecycle state. Read-only.
-  "createTime": "A String", # Creation time. Read-only.
+  "createTime": "A String", # Creation time.
+      # 
+      # Read-only.
+  "lifecycleState": "A String", # The Project lifecycle state.
+      # 
+      # Read-only.
+  "projectNumber": "A String", # The number uniquely identifying the project.
+      # 
+      # Example: <code>415104041262</code>
+      # 
+      # Read-only.
 }
 
   useLegacyStack: boolean, A safety hatch to opt out of the new reliable project creation process.
   x__xgafv: string, V1 error format.
+    Allowed values
+      1 - v1 error format
+      2 - v2 error format
 
 Returns:
   An object of the form:
 
-    { # A Project is a high-level Google Cloud Platform entity. It is a container for ACLs, APIs, AppEngine Apps, VMs, and other Google Cloud Platform resources.
-    "name": "A String", # The user-assigned display name of the Project. It must be 4 to 30 characters. Allowed characters are: lowercase and uppercase letters, numbers, hyphen, single-quote, double-quote, space, and exclamation point. Example: My Project Read-write.
-    "parent": { # A container to reference an id for any resource type. A `resource` in Google Cloud Platform is a generic term for something you (a developer) may want to interact with through one of our API's. Some examples are an AppEngine app, a Compute Engine instance, a Cloud SQL database, and so on. # An optional reference to a parent Resource. The only supported parent type is "organization". Once set, the parent cannot be modified. Read-write.
-      "type": "A String", # Required field representing the resource type this id is for. At present, the valid types are "project" and "organization".
-      "id": "A String", # Required field for the type-specific id. This should correspond to the id used in the type-specific API's.
+    { # A Project is a high-level Google Cloud Platform entity.  It is a
+      # container for ACLs, APIs, AppEngine Apps, VMs, and other
+      # Google Cloud Platform resources.
+    "name": "A String", # The user-assigned display name of the Project.
+        # It must be 4 to 30 characters.
+        # Allowed characters are: lowercase and uppercase letters, numbers,
+        # hyphen, single-quote, double-quote, space, and exclamation point.
+        #
+        # Example: <code>My Project</code>
+        #
+        # Read-write.
+    "parent": { # A container to reference an id for any resource type. A `resource` in Google # An optional reference to a parent Resource.
+        #
+        # The only supported parent type is "organization". Once set, the parent
+        # cannot be modified. The `parent` can be set on creation or using the
+        # `UpdateProject` method; the end user must have the
+        # `resourcemanager.projects.create` permission on the parent.
+        #
+        # Read-write.
+        # Cloud Platform is a generic term for something you (a developer) may want to
+        # interact with through one of our API's. Some examples are an AppEngine app,
+        # a Compute Engine instance, a Cloud SQL database, and so on.
+      "type": "A String", # Required field representing the resource type this id is for.
+          # At present, the valid types are "project" and "organization".
+      "id": "A String", # Required field for the type-specific id. This should correspond to the id
+          # used in the type-specific API's.
     },
-    "projectId": "A String", # The unique, user-assigned ID of the Project. It must be 6 to 30 lowercase letters, digits, or hyphens. It must start with a letter. Trailing hyphens are prohibited. Example: tokyo-rain-123 Read-only after creation.
-    "labels": { # The labels associated with this Project. Label keys must be between 1 and 63 characters long and must conform to the following regular expression: \[a-z\](\[-a-z0-9\]*\[a-z0-9\])?. Label values must be between 0 and 63 characters long and must conform to the regular expression (\[a-z\](\[-a-z0-9\]*\[a-z0-9\])?)?. No more than 256 labels can be associated with a given resource. Clients should store labels in a representation such as JSON that does not depend on specific characters being disallowed. Example: "environment" : "dev" Read-write.
+    "projectId": "A String", # The unique, user-assigned ID of the Project.
+        # It must be 6 to 30 lowercase letters, digits, or hyphens.
+        # It must start with a letter.
+        # Trailing hyphens are prohibited.
+        #
+        # Example: <code>tokyo-rain-123</code>
+        #
+        # Read-only after creation.
+    "labels": { # The labels associated with this Project.
+        #
+        # Label keys must be between 1 and 63 characters long and must conform
+        # to the following regular expression: \[a-z\](\[-a-z0-9\]*\[a-z0-9\])?.
+        #
+        # Label values must be between 0 and 63 characters long and must conform
+        # to the regular expression (\[a-z\](\[-a-z0-9\]*\[a-z0-9\])?)?.
+        #
+        # No more than 256 labels can be associated with a given resource.
+        #
+        # Clients should store labels in a representation such as JSON that does not
+        # depend on specific characters being disallowed.
+        #
+        # Example: <code>"environment" : "dev"</code>
+        #
+        # Read-write.
       "a_key": "A String",
     },
-    "projectNumber": "A String", # The number uniquely identifying the project. Example: 415104041262 Read-only.
-    "lifecycleState": "A String", # The Project lifecycle state. Read-only.
-    "createTime": "A String", # Creation time. Read-only.
+    "createTime": "A String", # Creation time.
+        #
+        # Read-only.
+    "lifecycleState": "A String", # The Project lifecycle state.
+        #
+        # Read-only.
+    "projectNumber": "A String", # The number uniquely identifying the project.
+        #
+        # Example: <code>415104041262</code>
+        #
+        # Read-only.
   }</pre>
 </div>
 
 <div class="method">
-    <code class="details" id="delete">delete(projectId, x__xgafv=None)</code>
-  <pre>Marks the Project identified by the specified `project_id` (for example, `my-project-123`) for deletion. This method will only affect the Project if the following criteria are met: + The Project does not have a billing account associated with it. + The Project has a lifecycle state of ACTIVE. This method changes the Project's lifecycle state from ACTIVE to DELETE_REQUESTED. The deletion starts at an unspecified time, at which point the project is no longer accessible. Until the deletion completes, you can check the lifecycle state checked by retrieving the Project with GetProject, and the Project remains visible to ListProjects. However, you cannot update the project. After the deletion completes, the Project is not retrievable by the GetProject and ListProjects methods. The caller must have modify permissions for this Project.
+    <code class="details" id="delete">delete(projectId=None, x__xgafv=None)</code>
+  <pre>Marks the Project identified by the specified
+`project_id` (for example, `my-project-123`) for deletion.
+This method will only affect the Project if the following criteria are met:
+
++ The Project does not have a billing account associated with it.
++ The Project has a lifecycle state of
+ACTIVE.
+
+This method changes the Project's lifecycle state from
+ACTIVE
+to DELETE_REQUESTED.
+The deletion starts at an unspecified time, at which point the project is
+no longer accessible.
+
+Until the deletion completes, you can check the lifecycle state
+checked by retrieving the Project with GetProject,
+and the Project remains visible to ListProjects.
+However, you cannot update the project.
+
+After the deletion completes, the Project is not retrievable by
+the  GetProject and
+ListProjects methods.
+
+The caller must have modify permissions for this Project.
 
 Args:
-  projectId: string, The Project ID (for example, `foo-bar-123`). Required. (required)
+  projectId: string, The Project ID (for example, `foo-bar-123`).
+
+Required. (required)
   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 `{}`.
+    { # 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(projectId, x__xgafv=None)</code>
-  <pre>Retrieves the Project identified by the specified `project_id` (for example, `my-project-123`). The caller must have read permissions for this Project.
+    <code class="details" id="get">get(projectId=None, x__xgafv=None)</code>
+  <pre>Retrieves the Project identified by the specified
+`project_id` (for example, `my-project-123`).
+
+The caller must have read permissions for this Project.
 
 Args:
-  projectId: string, The Project ID (for example, `my-project-123`). Required. (required)
+  projectId: string, The Project ID (for example, `my-project-123`).
+
+Required. (required)
   x__xgafv: string, V1 error format.
+    Allowed values
+      1 - v1 error format
+      2 - v2 error format
 
 Returns:
   An object of the form:
 
-    { # A Project is a high-level Google Cloud Platform entity. It is a container for ACLs, APIs, AppEngine Apps, VMs, and other Google Cloud Platform resources.
-    "name": "A String", # The user-assigned display name of the Project. It must be 4 to 30 characters. Allowed characters are: lowercase and uppercase letters, numbers, hyphen, single-quote, double-quote, space, and exclamation point. Example: My Project Read-write.
-    "parent": { # A container to reference an id for any resource type. A `resource` in Google Cloud Platform is a generic term for something you (a developer) may want to interact with through one of our API's. Some examples are an AppEngine app, a Compute Engine instance, a Cloud SQL database, and so on. # An optional reference to a parent Resource. The only supported parent type is "organization". Once set, the parent cannot be modified. Read-write.
-      "type": "A String", # Required field representing the resource type this id is for. At present, the valid types are "project" and "organization".
-      "id": "A String", # Required field for the type-specific id. This should correspond to the id used in the type-specific API's.
+    { # A Project is a high-level Google Cloud Platform entity.  It is a
+      # container for ACLs, APIs, AppEngine Apps, VMs, and other
+      # Google Cloud Platform resources.
+    "name": "A String", # The user-assigned display name of the Project.
+        # It must be 4 to 30 characters.
+        # Allowed characters are: lowercase and uppercase letters, numbers,
+        # hyphen, single-quote, double-quote, space, and exclamation point.
+        #
+        # Example: <code>My Project</code>
+        #
+        # Read-write.
+    "parent": { # A container to reference an id for any resource type. A `resource` in Google # An optional reference to a parent Resource.
+        #
+        # The only supported parent type is "organization". Once set, the parent
+        # cannot be modified. The `parent` can be set on creation or using the
+        # `UpdateProject` method; the end user must have the
+        # `resourcemanager.projects.create` permission on the parent.
+        #
+        # Read-write.
+        # Cloud Platform is a generic term for something you (a developer) may want to
+        # interact with through one of our API's. Some examples are an AppEngine app,
+        # a Compute Engine instance, a Cloud SQL database, and so on.
+      "type": "A String", # Required field representing the resource type this id is for.
+          # At present, the valid types are "project" and "organization".
+      "id": "A String", # Required field for the type-specific id. This should correspond to the id
+          # used in the type-specific API's.
     },
-    "projectId": "A String", # The unique, user-assigned ID of the Project. It must be 6 to 30 lowercase letters, digits, or hyphens. It must start with a letter. Trailing hyphens are prohibited. Example: tokyo-rain-123 Read-only after creation.
-    "labels": { # The labels associated with this Project. Label keys must be between 1 and 63 characters long and must conform to the following regular expression: \[a-z\](\[-a-z0-9\]*\[a-z0-9\])?. Label values must be between 0 and 63 characters long and must conform to the regular expression (\[a-z\](\[-a-z0-9\]*\[a-z0-9\])?)?. No more than 256 labels can be associated with a given resource. Clients should store labels in a representation such as JSON that does not depend on specific characters being disallowed. Example: "environment" : "dev" Read-write.
+    "projectId": "A String", # The unique, user-assigned ID of the Project.
+        # It must be 6 to 30 lowercase letters, digits, or hyphens.
+        # It must start with a letter.
+        # Trailing hyphens are prohibited.
+        #
+        # Example: <code>tokyo-rain-123</code>
+        #
+        # Read-only after creation.
+    "labels": { # The labels associated with this Project.
+        #
+        # Label keys must be between 1 and 63 characters long and must conform
+        # to the following regular expression: \[a-z\](\[-a-z0-9\]*\[a-z0-9\])?.
+        #
+        # Label values must be between 0 and 63 characters long and must conform
+        # to the regular expression (\[a-z\](\[-a-z0-9\]*\[a-z0-9\])?)?.
+        #
+        # No more than 256 labels can be associated with a given resource.
+        #
+        # Clients should store labels in a representation such as JSON that does not
+        # depend on specific characters being disallowed.
+        #
+        # Example: <code>"environment" : "dev"</code>
+        #
+        # Read-write.
       "a_key": "A String",
     },
-    "projectNumber": "A String", # The number uniquely identifying the project. Example: 415104041262 Read-only.
-    "lifecycleState": "A String", # The Project lifecycle state. Read-only.
-    "createTime": "A String", # Creation time. Read-only.
+    "createTime": "A String", # Creation time.
+        #
+        # Read-only.
+    "lifecycleState": "A String", # The Project lifecycle state.
+        #
+        # Read-only.
+    "projectNumber": "A String", # The number uniquely identifying the project.
+        #
+        # Example: <code>415104041262</code>
+        #
+        # Read-only.
   }</pre>
 </div>
 
 <div class="method">
-    <code class="details" id="getAncestry">getAncestry(projectId, body, x__xgafv=None)</code>
-  <pre>Gets a list of ancestors in the resource hierarchy for the Project identified by the specified `project_id` (for example, `my-project-123`). The caller must have read permissions for this Project.
+    <code class="details" id="getAncestry">getAncestry(projectId=None, body, x__xgafv=None)</code>
+  <pre>Gets a list of ancestors in the resource hierarchy for the Project
+identified by the specified `project_id` (for example, `my-project-123`).
+
+The caller must have read permissions for this Project.
 
 Args:
-  projectId: string, The Project ID (for example, `my-project-123`). Required. (required)
+  projectId: string, The Project ID (for example, `my-project-123`).
+
+Required. (required)
   body: object, The request body. (required)
     The object takes the form of:
 
-{ # The request sent to the GetAncestry method.
+{ # The request sent to the
+      # GetAncestry
+      # method.
   }
 
   x__xgafv: string, V1 error format.
+    Allowed values
+      1 - v1 error format
+      2 - v2 error format
 
 Returns:
   An object of the form:
 
     { # Response from the GetAncestry method.
-    "ancestor": [ # Ancestors are ordered from bottom to top of the resource hierarchy. The first ancestor is the project itself, followed by the project's parent, etc.
+    "ancestor": [ # Ancestors are ordered from bottom to top of the resource hierarchy. The
+        # first ancestor is the project itself, followed by the project's parent,
+        # etc.
       { # Identifying information for a single ancestor of a project.
-        "resourceId": { # A container to reference an id for any resource type. A `resource` in Google Cloud Platform is a generic term for something you (a developer) may want to interact with through one of our API's. Some examples are an AppEngine app, a Compute Engine instance, a Cloud SQL database, and so on. # Resource id of the ancestor.
-          "type": "A String", # Required field representing the resource type this id is for. At present, the valid types are "project" and "organization".
-          "id": "A String", # Required field for the type-specific id. This should correspond to the id used in the type-specific API's.
+        "resourceId": { # A container to reference an id for any resource type. A `resource` in Google # Resource id of the ancestor.
+            # Cloud Platform is a generic term for something you (a developer) may want to
+            # interact with through one of our API's. Some examples are an AppEngine app,
+            # a Compute Engine instance, a Cloud SQL database, and so on.
+          "type": "A String", # Required field representing the resource type this id is for.
+              # At present, the valid types are "project" and "organization".
+          "id": "A String", # Required field for the type-specific id. This should correspond to the id
+              # used in the type-specific API's.
         },
       },
     ],
@@ -225,11 +449,14 @@
 </div>
 
 <div class="method">
-    <code class="details" id="getIamPolicy">getIamPolicy(resource, body, x__xgafv=None)</code>
-  <pre>Returns the IAM access control policy for the specified Project. Permission is denied if the policy or the resource does not exist.
+    <code class="details" id="getIamPolicy">getIamPolicy(resource=None, body, x__xgafv=None)</code>
+  <pre>Returns the IAM access control policy for the specified Project.
+Permission is denied if the policy or the resource does not exist.
 
 Args:
-  resource: string, REQUIRED: The resource for which the policy is being requested. `resource` is usually specified as a path. For example, a Project resource is specified as `projects/{project}`. (required)
+  resource: string, REQUIRED: The resource for which the policy is being requested.
+`resource` is usually specified as a path. For example, a Project
+resource is specified as `projects/{project}`. (required)
   body: object, The request body. (required)
     The object takes the form of:
 
@@ -237,53 +464,219 @@
   }
 
   x__xgafv: string, V1 error format.
+    Allowed values
+      1 - v1 error format
+      2 - v2 error format
 
 Returns:
   An object of the form:
 
-    { # Defines an Identity and Access Management (IAM) policy. It is used to specify access control policies for Cloud Platform resources. A `Policy` consists of a list of `bindings`. A `Binding` binds a list of `members` to a `role`, where the members can be user accounts, Google groups, Google domains, and service accounts. A `role` is a named list of permissions defined by IAM. **Example** { "bindings": [ { "role": "roles/owner", "members": [ "user:mike@example.com", "group:admins@example.com", "domain:google.com", "serviceAccount:my-other-app@appspot.gserviceaccount.com", ] }, { "role": "roles/viewer", "members": ["user:sean@example.com"] } ] } For a description of IAM and its features, see the [IAM developer's guide](https://cloud.google.com/iam).
-    "bindings": [ # Associates a list of `members` to a `role`. Multiple `bindings` must not be specified for the same `role`. `bindings` with no members will result in an error.
+    { # Defines an Identity and Access Management (IAM) policy. It is used to
+      # specify access control policies for Cloud Platform resources.
+      #
+      #
+      # A `Policy` consists of a list of `bindings`. A `Binding` binds a list of
+      # `members` to a `role`, where the members can be user accounts, Google groups,
+      # Google domains, and service accounts. A `role` is a named list of permissions
+      # defined by IAM.
+      #
+      # **Example**
+      #
+      #     {
+      #       "bindings": [
+      #         {
+      #           "role": "roles/owner",
+      #           "members": [
+      #             "user:mike@example.com",
+      #             "group:admins@example.com",
+      #             "domain:google.com",
+      #             "serviceAccount:my-other-app@appspot.gserviceaccount.com",
+      #           ]
+      #         },
+      #         {
+      #           "role": "roles/viewer",
+      #           "members": ["user:sean@example.com"]
+      #         }
+      #       ]
+      #     }
+      #
+      # For a description of IAM and its features, see the
+      # [IAM developer's guide](https://cloud.google.com/iam).
+    "bindings": [ # Associates a list of `members` to a `role`.
+        # Multiple `bindings` must not be specified for the same `role`.
+        # `bindings` with no members will result in an error.
       { # Associates `members` with a `role`.
-        "role": "A String", # Role that is assigned to `members`. For example, `roles/viewer`, `roles/editor`, or `roles/owner`. Required
-        "members": [ # Specifies the identities requesting access for a Cloud Platform resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@gmail.com` or `joe@example.com`. * `serviceAccount:{emailid}`: An email address that represents a service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: A Google Apps domain name that represents all the users of that domain. For example, `google.com` or `example.com`.
+        "role": "A String", # Role that is assigned to `members`.
+            # For example, `roles/viewer`, `roles/editor`, or `roles/owner`.
+            # Required
+        "members": [ # Specifies the identities requesting access for a Cloud Platform resource.
+            # `members` can have the following values:
+            #
+            # * `allUsers`: A special identifier that represents anyone who is
+            #    on the internet; with or without a Google account.
+            #
+            # * `allAuthenticatedUsers`: A special identifier that represents anyone
+            #    who is authenticated with a Google account or a service account.
+            #
+            # * `user:{emailid}`: An email address that represents a specific Google
+            #    account. For example, `alice@gmail.com` or `joe@example.com`.
+            #
+            #
+            # * `serviceAccount:{emailid}`: An email address that represents a service
+            #    account. For example, `my-other-app@appspot.gserviceaccount.com`.
+            #
+            # * `group:{emailid}`: An email address that represents a Google group.
+            #    For example, `admins@example.com`.
+            #
+            # * `domain:{domain}`: A Google Apps domain name that represents all the
+            #    users of that domain. For example, `google.com` or `example.com`.
+            #
           "A String",
         ],
       },
     ],
+    "etag": "A String", # `etag` is used for optimistic concurrency control as a way to help
+        # prevent simultaneous updates of a policy from overwriting each other.
+        # It is strongly suggested that systems make use of the `etag` in the
+        # read-modify-write cycle to perform policy updates in order to avoid race
+        # conditions: An `etag` is returned in the response to `getIamPolicy`, and
+        # systems are expected to put that etag in the request to `setIamPolicy` to
+        # ensure that their change will be applied to the same version of the policy.
+        #
+        # If no `etag` is provided in the call to `setIamPolicy`, then the existing
+        # policy is overwritten blindly.
     "version": 42, # Version of the `Policy`. The default version is 0.
-    "etag": "A String", # `etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. If no `etag` is provided in the call to `setIamPolicy`, then the existing policy is overwritten blindly.
   }</pre>
 </div>
 
 <div class="method">
     <code class="details" id="list">list(pageSize=None, filter=None, pageToken=None, x__xgafv=None)</code>
-  <pre>Lists Projects that are visible to the user and satisfy the specified filter. This method returns Projects in an unspecified order. New Projects do not necessarily appear at the end of the list.
+  <pre>Lists Projects that are visible to the user and satisfy the
+specified filter. This method returns Projects in an unspecified order.
+New Projects do not necessarily appear at the end of the list.
 
 Args:
-  pageSize: integer, The maximum number of Projects to return in the response. The server can return fewer Projects than requested. If unspecified, server picks an appropriate default. Optional.
-  filter: string, An expression for filtering the results of the request. Filter rules are case insensitive. The fields eligible for filtering are: + `name` + `id` + labels.key where *key* is the name of a label Some examples of using labels as filters: |Filter|Description| |------|-----------| |name:*|The project has a name.| |name:Howl|The project's name is `Howl` or `howl`.| |name:HOWL|Equivalent to above.| |NAME:howl|Equivalent to above.| |labels.color:*|The project has the label `color`.| |labels.color:red|The project's label `color` has the value `red`.| |labels.color:red label.size:big|The project's label `color` has the value `red` and its label `size` has the value `big`. Optional.
-  pageToken: string, A pagination token returned from a previous call to ListProjects that indicates from where listing should continue. Optional.
+  pageSize: integer, The maximum number of Projects to return in the response.
+The server can return fewer Projects than requested.
+If unspecified, server picks an appropriate default.
+
+Optional.
+  filter: string, An expression for filtering the results of the request.  Filter rules are
+case insensitive. The fields eligible for filtering are:
+
++ `name`
++ `id`
++ <code>labels.<em>key</em></code> where *key* is the name of a label
+
+Some examples of using labels as filters:
+
+|Filter|Description|
+|------|-----------|
+|name:*|The project has a name.|
+|name:Howl|The project's name is `Howl` or `howl`.|
+|name:HOWL|Equivalent to above.|
+|NAME:howl|Equivalent to above.|
+|labels.color:*|The project has the label `color`.|
+|labels.color:red|The project's label `color` has the value `red`.|
+|labels.color:red&nbsp;label.size:big|The project's label `color` has the value `red` and its label `size` has the value `big`.
+
+Optional.
+  pageToken: string, A pagination token returned from a previous call to ListProjects
+that indicates from where listing should continue.
+
+Optional.
   x__xgafv: string, V1 error format.
+    Allowed values
+      1 - v1 error format
+      2 - v2 error format
 
 Returns:
   An object of the form:
 
-    { # A page of the response received from the ListProjects method. A paginated response where more pages are available has `next_page_token` set. This token can be used in a subsequent request to retrieve the next request page.
-    "nextPageToken": "A String", # Pagination token. If the result set is too large to fit in a single response, this token is returned. It encodes the position of the current result cursor. Feeding this value into a new list request with the `page_token` parameter gives the next page of the results. When `next_page_token` is not filled in, there is no next page and the list returned is the last page in the result set. Pagination tokens have a limited lifetime.
-    "projects": [ # The list of Projects that matched the list filter. This list can be paginated.
-      { # A Project is a high-level Google Cloud Platform entity. It is a container for ACLs, APIs, AppEngine Apps, VMs, and other Google Cloud Platform resources.
-        "name": "A String", # The user-assigned display name of the Project. It must be 4 to 30 characters. Allowed characters are: lowercase and uppercase letters, numbers, hyphen, single-quote, double-quote, space, and exclamation point. Example: My Project Read-write.
-        "parent": { # A container to reference an id for any resource type. A `resource` in Google Cloud Platform is a generic term for something you (a developer) may want to interact with through one of our API's. Some examples are an AppEngine app, a Compute Engine instance, a Cloud SQL database, and so on. # An optional reference to a parent Resource. The only supported parent type is "organization". Once set, the parent cannot be modified. Read-write.
-          "type": "A String", # Required field representing the resource type this id is for. At present, the valid types are "project" and "organization".
-          "id": "A String", # Required field for the type-specific id. This should correspond to the id used in the type-specific API's.
+    { # A page of the response received from the
+      # ListProjects
+      # method.
+      #
+      # A paginated response where more pages are available has
+      # `next_page_token` set. This token can be used in a subsequent request to
+      # retrieve the next request page.
+    "nextPageToken": "A String", # Pagination token.
+        #
+        # If the result set is too large to fit in a single response, this token
+        # is returned. It encodes the position of the current result cursor.
+        # Feeding this value into a new list request with the `page_token` parameter
+        # gives the next page of the results.
+        #
+        # When `next_page_token` is not filled in, there is no next page and
+        # the list returned is the last page in the result set.
+        #
+        # Pagination tokens have a limited lifetime.
+    "projects": [ # The list of Projects that matched the list filter. This list can
+        # be paginated.
+      { # A Project is a high-level Google Cloud Platform entity.  It is a
+          # container for ACLs, APIs, AppEngine Apps, VMs, and other
+          # Google Cloud Platform resources.
+        "name": "A String", # The user-assigned display name of the Project.
+            # It must be 4 to 30 characters.
+            # Allowed characters are: lowercase and uppercase letters, numbers,
+            # hyphen, single-quote, double-quote, space, and exclamation point.
+            #
+            # Example: <code>My Project</code>
+            #
+            # Read-write.
+        "parent": { # A container to reference an id for any resource type. A `resource` in Google # An optional reference to a parent Resource.
+            #
+            # The only supported parent type is "organization". Once set, the parent
+            # cannot be modified. The `parent` can be set on creation or using the
+            # `UpdateProject` method; the end user must have the
+            # `resourcemanager.projects.create` permission on the parent.
+            #
+            # Read-write.
+            # Cloud Platform is a generic term for something you (a developer) may want to
+            # interact with through one of our API's. Some examples are an AppEngine app,
+            # a Compute Engine instance, a Cloud SQL database, and so on.
+          "type": "A String", # Required field representing the resource type this id is for.
+              # At present, the valid types are "project" and "organization".
+          "id": "A String", # Required field for the type-specific id. This should correspond to the id
+              # used in the type-specific API's.
         },
-        "projectId": "A String", # The unique, user-assigned ID of the Project. It must be 6 to 30 lowercase letters, digits, or hyphens. It must start with a letter. Trailing hyphens are prohibited. Example: tokyo-rain-123 Read-only after creation.
-        "labels": { # The labels associated with this Project. Label keys must be between 1 and 63 characters long and must conform to the following regular expression: \[a-z\](\[-a-z0-9\]*\[a-z0-9\])?. Label values must be between 0 and 63 characters long and must conform to the regular expression (\[a-z\](\[-a-z0-9\]*\[a-z0-9\])?)?. No more than 256 labels can be associated with a given resource. Clients should store labels in a representation such as JSON that does not depend on specific characters being disallowed. Example: "environment" : "dev" Read-write.
+        "projectId": "A String", # The unique, user-assigned ID of the Project.
+            # It must be 6 to 30 lowercase letters, digits, or hyphens.
+            # It must start with a letter.
+            # Trailing hyphens are prohibited.
+            #
+            # Example: <code>tokyo-rain-123</code>
+            #
+            # Read-only after creation.
+        "labels": { # The labels associated with this Project.
+            #
+            # Label keys must be between 1 and 63 characters long and must conform
+            # to the following regular expression: \[a-z\](\[-a-z0-9\]*\[a-z0-9\])?.
+            #
+            # Label values must be between 0 and 63 characters long and must conform
+            # to the regular expression (\[a-z\](\[-a-z0-9\]*\[a-z0-9\])?)?.
+            #
+            # No more than 256 labels can be associated with a given resource.
+            #
+            # Clients should store labels in a representation such as JSON that does not
+            # depend on specific characters being disallowed.
+            #
+            # Example: <code>"environment" : "dev"</code>
+            #
+            # Read-write.
           "a_key": "A String",
         },
-        "projectNumber": "A String", # The number uniquely identifying the project. Example: 415104041262 Read-only.
-        "lifecycleState": "A String", # The Project lifecycle state. Read-only.
-        "createTime": "A String", # Creation time. Read-only.
+        "createTime": "A String", # Creation time.
+            #
+            # Read-only.
+        "lifecycleState": "A String", # The Project lifecycle state.
+            #
+            # Read-only.
+        "projectNumber": "A String", # The number uniquely identifying the project.
+            #
+            # Example: <code>415104041262</code>
+            #
+            # Read-only.
       },
     ],
   }</pre>
@@ -304,138 +697,448 @@
 </div>
 
 <div class="method">
-    <code class="details" id="setIamPolicy">setIamPolicy(resource, body, x__xgafv=None)</code>
-  <pre>Sets the IAM access control policy for the specified Project. Replaces any existing policy. The following constraints apply when using `setIamPolicy()`: + Project does not support `allUsers` and `allAuthenticatedUsers` as `members` in a `Binding` of a `Policy`. + The owner role can be granted only to `user` and `serviceAccount`. + Service accounts can be made owners of a project directly without any restrictions. However, to be added as an owner, a user must be invited via Cloud Platform console and must accept the invitation. + A user cannot be granted the owner role using `setIamPolicy()`. The user must be granted the owner role using the Cloud Platform Console and must explicitly accept the invitation. + Invitations to grant the owner role cannot be sent using `setIamPolicy()`; they must be sent only using the Cloud Platform Console. + Membership changes that leave the project without any owners that have accepted the Terms of Service (ToS) will be rejected. + There must be at least one owner who has accepted the Terms of Service (ToS) agreement in the policy. Calling `setIamPolicy()` to to remove the last ToS-accepted owner from the policy will fail. This restriction also applies to legacy projects that no longer have owners who have accepted the ToS. Edits to IAM policies will be rejected until the lack of a ToS-accepting owner is rectified. + Calling this method requires enabling the App Engine Admin API. Note: Removing service accounts from policies or changing their roles can render services completely inoperable. It is important to understand how the service account is being used before removing or updating its roles.
+    <code class="details" id="setIamPolicy">setIamPolicy(resource=None, body, x__xgafv=None)</code>
+  <pre>Sets the IAM access control policy for the specified Project. Replaces
+any existing policy.
+
+The following constraints apply when using `setIamPolicy()`:
+
++ Project does not support `allUsers` and `allAuthenticatedUsers` as
+`members` in a `Binding` of a `Policy`.
+
++ The owner role can be granted only to `user` and `serviceAccount`.
+
++ Service accounts can be made owners of a project directly
+without any restrictions. However, to be added as an owner, a user must be
+invited via Cloud Platform console and must accept the invitation.
+
++ A user cannot be granted the owner role using `setIamPolicy()`. The user
+must be granted the owner role using the Cloud Platform Console and must
+explicitly accept the invitation.
+
++ Invitations to grant the owner role cannot be sent using `setIamPolicy()`;
+they must be sent only using the Cloud Platform Console.
+
++ Membership changes that leave the project without any owners that have
+accepted the Terms of Service (ToS) will be rejected.
+
++ There must be at least one owner who has accepted the Terms of
+Service (ToS) agreement in the policy. Calling `setIamPolicy()` to
+to remove the last ToS-accepted owner from the policy will fail. This
+restriction also applies to legacy projects that no longer have owners
+who have accepted the ToS. Edits to IAM policies will be rejected until
+the lack of a ToS-accepting owner is rectified.
+
++ Calling this method requires enabling the App Engine Admin API.
+
+Note: Removing service accounts from policies or changing their roles
+can render services completely inoperable. It is important to understand
+how the service account is being used before removing or updating its roles.
 
 Args:
-  resource: string, REQUIRED: The resource for which the policy is being specified. `resource` is usually specified as a path. For example, a Project resource is specified as `projects/{project}`. (required)
+  resource: string, REQUIRED: The resource for which the policy is being specified.
+`resource` is usually specified as a path. For example, a Project
+resource is specified as `projects/{project}`. (required)
   body: object, The request body. (required)
     The object takes the form of:
 
 { # Request message for `SetIamPolicy` method.
-    "policy": { # Defines an Identity and Access Management (IAM) policy. It is used to specify access control policies for Cloud Platform resources. A `Policy` consists of a list of `bindings`. A `Binding` binds a list of `members` to a `role`, where the members can be user accounts, Google groups, Google domains, and service accounts. A `role` is a named list of permissions defined by IAM. **Example** { "bindings": [ { "role": "roles/owner", "members": [ "user:mike@example.com", "group:admins@example.com", "domain:google.com", "serviceAccount:my-other-app@appspot.gserviceaccount.com", ] }, { "role": "roles/viewer", "members": ["user:sean@example.com"] } ] } For a description of IAM and its features, see the [IAM developer's guide](https://cloud.google.com/iam). # REQUIRED: The complete policy to be applied to the `resource`. The size of the policy is limited to a few 10s of KB. An empty policy is a valid policy but certain Cloud Platform services (such as Projects) might reject them.
-      "bindings": [ # Associates a list of `members` to a `role`. Multiple `bindings` must not be specified for the same `role`. `bindings` with no members will result in an error.
+    "policy": { # Defines an Identity and Access Management (IAM) policy. It is used to # REQUIRED: The complete policy to be applied to the `resource`. The size of
+        # the policy is limited to a few 10s of KB. An empty policy is a
+        # valid policy but certain Cloud Platform services (such as Projects)
+        # might reject them.
+        # specify access control policies for Cloud Platform resources.
+        #
+        #
+        # A `Policy` consists of a list of `bindings`. A `Binding` binds a list of
+        # `members` to a `role`, where the members can be user accounts, Google groups,
+        # Google domains, and service accounts. A `role` is a named list of permissions
+        # defined by IAM.
+        #
+        # **Example**
+        #
+        #     {
+        #       "bindings": [
+        #         {
+        #           "role": "roles/owner",
+        #           "members": [
+        #             "user:mike@example.com",
+        #             "group:admins@example.com",
+        #             "domain:google.com",
+        #             "serviceAccount:my-other-app@appspot.gserviceaccount.com",
+        #           ]
+        #         },
+        #         {
+        #           "role": "roles/viewer",
+        #           "members": ["user:sean@example.com"]
+        #         }
+        #       ]
+        #     }
+        #
+        # For a description of IAM and its features, see the
+        # [IAM developer's guide](https://cloud.google.com/iam).
+      "bindings": [ # Associates a list of `members` to a `role`.
+          # Multiple `bindings` must not be specified for the same `role`.
+          # `bindings` with no members will result in an error.
         { # Associates `members` with a `role`.
-          "role": "A String", # Role that is assigned to `members`. For example, `roles/viewer`, `roles/editor`, or `roles/owner`. Required
-          "members": [ # Specifies the identities requesting access for a Cloud Platform resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@gmail.com` or `joe@example.com`. * `serviceAccount:{emailid}`: An email address that represents a service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: A Google Apps domain name that represents all the users of that domain. For example, `google.com` or `example.com`.
+          "role": "A String", # Role that is assigned to `members`.
+              # For example, `roles/viewer`, `roles/editor`, or `roles/owner`.
+              # Required
+          "members": [ # Specifies the identities requesting access for a Cloud Platform resource.
+              # `members` can have the following values:
+              #
+              # * `allUsers`: A special identifier that represents anyone who is
+              #    on the internet; with or without a Google account.
+              #
+              # * `allAuthenticatedUsers`: A special identifier that represents anyone
+              #    who is authenticated with a Google account or a service account.
+              #
+              # * `user:{emailid}`: An email address that represents a specific Google
+              #    account. For example, `alice@gmail.com` or `joe@example.com`.
+              #
+              #
+              # * `serviceAccount:{emailid}`: An email address that represents a service
+              #    account. For example, `my-other-app@appspot.gserviceaccount.com`.
+              #
+              # * `group:{emailid}`: An email address that represents a Google group.
+              #    For example, `admins@example.com`.
+              #
+              # * `domain:{domain}`: A Google Apps domain name that represents all the
+              #    users of that domain. For example, `google.com` or `example.com`.
+              #
             "A String",
           ],
         },
       ],
+      "etag": "A String", # `etag` is used for optimistic concurrency control as a way to help
+          # prevent simultaneous updates of a policy from overwriting each other.
+          # It is strongly suggested that systems make use of the `etag` in the
+          # read-modify-write cycle to perform policy updates in order to avoid race
+          # conditions: An `etag` is returned in the response to `getIamPolicy`, and
+          # systems are expected to put that etag in the request to `setIamPolicy` to
+          # ensure that their change will be applied to the same version of the policy.
+          #
+          # If no `etag` is provided in the call to `setIamPolicy`, then the existing
+          # policy is overwritten blindly.
       "version": 42, # Version of the `Policy`. The default version is 0.
-      "etag": "A String", # `etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. If no `etag` is provided in the call to `setIamPolicy`, then the existing policy is overwritten blindly.
     },
   }
 
   x__xgafv: string, V1 error format.
+    Allowed values
+      1 - v1 error format
+      2 - v2 error format
 
 Returns:
   An object of the form:
 
-    { # Defines an Identity and Access Management (IAM) policy. It is used to specify access control policies for Cloud Platform resources. A `Policy` consists of a list of `bindings`. A `Binding` binds a list of `members` to a `role`, where the members can be user accounts, Google groups, Google domains, and service accounts. A `role` is a named list of permissions defined by IAM. **Example** { "bindings": [ { "role": "roles/owner", "members": [ "user:mike@example.com", "group:admins@example.com", "domain:google.com", "serviceAccount:my-other-app@appspot.gserviceaccount.com", ] }, { "role": "roles/viewer", "members": ["user:sean@example.com"] } ] } For a description of IAM and its features, see the [IAM developer's guide](https://cloud.google.com/iam).
-    "bindings": [ # Associates a list of `members` to a `role`. Multiple `bindings` must not be specified for the same `role`. `bindings` with no members will result in an error.
+    { # Defines an Identity and Access Management (IAM) policy. It is used to
+      # specify access control policies for Cloud Platform resources.
+      #
+      #
+      # A `Policy` consists of a list of `bindings`. A `Binding` binds a list of
+      # `members` to a `role`, where the members can be user accounts, Google groups,
+      # Google domains, and service accounts. A `role` is a named list of permissions
+      # defined by IAM.
+      #
+      # **Example**
+      #
+      #     {
+      #       "bindings": [
+      #         {
+      #           "role": "roles/owner",
+      #           "members": [
+      #             "user:mike@example.com",
+      #             "group:admins@example.com",
+      #             "domain:google.com",
+      #             "serviceAccount:my-other-app@appspot.gserviceaccount.com",
+      #           ]
+      #         },
+      #         {
+      #           "role": "roles/viewer",
+      #           "members": ["user:sean@example.com"]
+      #         }
+      #       ]
+      #     }
+      #
+      # For a description of IAM and its features, see the
+      # [IAM developer's guide](https://cloud.google.com/iam).
+    "bindings": [ # Associates a list of `members` to a `role`.
+        # Multiple `bindings` must not be specified for the same `role`.
+        # `bindings` with no members will result in an error.
       { # Associates `members` with a `role`.
-        "role": "A String", # Role that is assigned to `members`. For example, `roles/viewer`, `roles/editor`, or `roles/owner`. Required
-        "members": [ # Specifies the identities requesting access for a Cloud Platform resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@gmail.com` or `joe@example.com`. * `serviceAccount:{emailid}`: An email address that represents a service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: A Google Apps domain name that represents all the users of that domain. For example, `google.com` or `example.com`.
+        "role": "A String", # Role that is assigned to `members`.
+            # For example, `roles/viewer`, `roles/editor`, or `roles/owner`.
+            # Required
+        "members": [ # Specifies the identities requesting access for a Cloud Platform resource.
+            # `members` can have the following values:
+            #
+            # * `allUsers`: A special identifier that represents anyone who is
+            #    on the internet; with or without a Google account.
+            #
+            # * `allAuthenticatedUsers`: A special identifier that represents anyone
+            #    who is authenticated with a Google account or a service account.
+            #
+            # * `user:{emailid}`: An email address that represents a specific Google
+            #    account. For example, `alice@gmail.com` or `joe@example.com`.
+            #
+            #
+            # * `serviceAccount:{emailid}`: An email address that represents a service
+            #    account. For example, `my-other-app@appspot.gserviceaccount.com`.
+            #
+            # * `group:{emailid}`: An email address that represents a Google group.
+            #    For example, `admins@example.com`.
+            #
+            # * `domain:{domain}`: A Google Apps domain name that represents all the
+            #    users of that domain. For example, `google.com` or `example.com`.
+            #
           "A String",
         ],
       },
     ],
+    "etag": "A String", # `etag` is used for optimistic concurrency control as a way to help
+        # prevent simultaneous updates of a policy from overwriting each other.
+        # It is strongly suggested that systems make use of the `etag` in the
+        # read-modify-write cycle to perform policy updates in order to avoid race
+        # conditions: An `etag` is returned in the response to `getIamPolicy`, and
+        # systems are expected to put that etag in the request to `setIamPolicy` to
+        # ensure that their change will be applied to the same version of the policy.
+        #
+        # If no `etag` is provided in the call to `setIamPolicy`, then the existing
+        # policy is overwritten blindly.
     "version": 42, # Version of the `Policy`. The default version is 0.
-    "etag": "A String", # `etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. If no `etag` is provided in the call to `setIamPolicy`, then the existing policy is overwritten blindly.
   }</pre>
 </div>
 
 <div class="method">
-    <code class="details" id="testIamPermissions">testIamPermissions(resource, body, x__xgafv=None)</code>
+    <code class="details" id="testIamPermissions">testIamPermissions(resource=None, body, x__xgafv=None)</code>
   <pre>Returns permissions that a caller has on the specified Project.
 
 Args:
-  resource: string, REQUIRED: The resource for which the policy detail is being requested. `resource` is usually specified as a path. For example, a Project resource is specified as `projects/{project}`. (required)
+  resource: string, REQUIRED: The resource for which the policy detail is being requested.
+`resource` is usually specified as a path. For example, a Project
+resource is specified as `projects/{project}`. (required)
   body: object, The request body. (required)
     The object takes the form of:
 
 { # Request message for `TestIamPermissions` method.
-    "permissions": [ # The set of permissions to check for the `resource`. Permissions with wildcards (such as '*' or 'storage.*') are not allowed. For more information see [IAM Overview](https://cloud.google.com/iam/docs/overview#permissions).
+    "permissions": [ # The set of permissions to check for the `resource`. Permissions with
+        # wildcards (such as '*' or 'storage.*') are not allowed. For more
+        # information see
+        # [IAM Overview](https://cloud.google.com/iam/docs/overview#permissions).
       "A String",
     ],
   }
 
   x__xgafv: string, V1 error format.
+    Allowed values
+      1 - v1 error format
+      2 - v2 error format
 
 Returns:
   An object of the form:
 
     { # Response message for `TestIamPermissions` method.
-    "permissions": [ # A subset of `TestPermissionsRequest.permissions` that the caller is allowed.
+    "permissions": [ # A subset of `TestPermissionsRequest.permissions` that the caller is
+        # allowed.
       "A String",
     ],
   }</pre>
 </div>
 
 <div class="method">
-    <code class="details" id="undelete">undelete(projectId, body, x__xgafv=None)</code>
-  <pre>Restores the Project identified by the specified `project_id` (for example, `my-project-123`). You can only use this method for a Project that has a lifecycle state of DELETE_REQUESTED. After deletion starts, the Project cannot be restored. The caller must have modify permissions for this Project.
+    <code class="details" id="undelete">undelete(projectId=None, body, x__xgafv=None)</code>
+  <pre>Restores the Project identified by the specified
+`project_id` (for example, `my-project-123`).
+You can only use this method for a Project that has a lifecycle state of
+DELETE_REQUESTED.
+After deletion starts, the Project cannot be restored.
+
+The caller must have modify permissions for this Project.
 
 Args:
-  projectId: string, The project ID (for example, `foo-bar-123`). Required. (required)
+  projectId: string, The project ID (for example, `foo-bar-123`).
+
+Required. (required)
   body: object, The request body. (required)
     The object takes the form of:
 
-{ # The request sent to the UndeleteProject method.
+{ # The request sent to the UndeleteProject
+      # method.
   }
 
   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 `{}`.
+    { # 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="update">update(projectId, body, x__xgafv=None)</code>
-  <pre>Updates the attributes of the Project identified by the specified `project_id` (for example, `my-project-123`). The caller must have modify permissions for this Project.
+    <code class="details" id="update">update(projectId=None, body, x__xgafv=None)</code>
+  <pre>Updates the attributes of the Project identified by the specified
+`project_id` (for example, `my-project-123`).
+
+The caller must have modify permissions for this Project.
 
 Args:
-  projectId: string, The project ID (for example, `my-project-123`). Required. (required)
+  projectId: string, The project ID (for example, `my-project-123`).
+
+Required. (required)
   body: object, The request body. (required)
     The object takes the form of:
 
-{ # A Project is a high-level Google Cloud Platform entity. It is a container for ACLs, APIs, AppEngine Apps, VMs, and other Google Cloud Platform resources.
-  "name": "A String", # The user-assigned display name of the Project. It must be 4 to 30 characters. Allowed characters are: lowercase and uppercase letters, numbers, hyphen, single-quote, double-quote, space, and exclamation point. Example: My Project Read-write.
-  "parent": { # A container to reference an id for any resource type. A `resource` in Google Cloud Platform is a generic term for something you (a developer) may want to interact with through one of our API's. Some examples are an AppEngine app, a Compute Engine instance, a Cloud SQL database, and so on. # An optional reference to a parent Resource. The only supported parent type is "organization". Once set, the parent cannot be modified. Read-write.
-    "type": "A String", # Required field representing the resource type this id is for. At present, the valid types are "project" and "organization".
-    "id": "A String", # Required field for the type-specific id. This should correspond to the id used in the type-specific API's.
+{ # A Project is a high-level Google Cloud Platform entity.  It is a
+    # container for ACLs, APIs, AppEngine Apps, VMs, and other
+    # Google Cloud Platform resources.
+  "name": "A String", # The user-assigned display name of the Project.
+      # It must be 4 to 30 characters.
+      # Allowed characters are: lowercase and uppercase letters, numbers,
+      # hyphen, single-quote, double-quote, space, and exclamation point.
+      # 
+      # Example: <code>My Project</code>
+      # 
+      # Read-write.
+  "parent": { # A container to reference an id for any resource type. A `resource` in Google # An optional reference to a parent Resource.
+      # 
+      # The only supported parent type is "organization". Once set, the parent
+      # cannot be modified. The `parent` can be set on creation or using the
+      # `UpdateProject` method; the end user must have the
+      # `resourcemanager.projects.create` permission on the parent.
+      # 
+      # Read-write.
+      # Cloud Platform is a generic term for something you (a developer) may want to
+      # interact with through one of our API's. Some examples are an AppEngine app,
+      # a Compute Engine instance, a Cloud SQL database, and so on.
+    "type": "A String", # Required field representing the resource type this id is for.
+        # At present, the valid types are "project" and "organization".
+    "id": "A String", # Required field for the type-specific id. This should correspond to the id
+        # used in the type-specific API's.
   },
-  "projectId": "A String", # The unique, user-assigned ID of the Project. It must be 6 to 30 lowercase letters, digits, or hyphens. It must start with a letter. Trailing hyphens are prohibited. Example: tokyo-rain-123 Read-only after creation.
-  "labels": { # The labels associated with this Project. Label keys must be between 1 and 63 characters long and must conform to the following regular expression: \[a-z\](\[-a-z0-9\]*\[a-z0-9\])?. Label values must be between 0 and 63 characters long and must conform to the regular expression (\[a-z\](\[-a-z0-9\]*\[a-z0-9\])?)?. No more than 256 labels can be associated with a given resource. Clients should store labels in a representation such as JSON that does not depend on specific characters being disallowed. Example: "environment" : "dev" Read-write.
+  "projectId": "A String", # The unique, user-assigned ID of the Project.
+      # It must be 6 to 30 lowercase letters, digits, or hyphens.
+      # It must start with a letter.
+      # Trailing hyphens are prohibited.
+      # 
+      # Example: <code>tokyo-rain-123</code>
+      # 
+      # Read-only after creation.
+  "labels": { # The labels associated with this Project.
+      # 
+      # Label keys must be between 1 and 63 characters long and must conform
+      # to the following regular expression: \[a-z\](\[-a-z0-9\]*\[a-z0-9\])?.
+      # 
+      # Label values must be between 0 and 63 characters long and must conform
+      # to the regular expression (\[a-z\](\[-a-z0-9\]*\[a-z0-9\])?)?.
+      # 
+      # No more than 256 labels can be associated with a given resource.
+      # 
+      # Clients should store labels in a representation such as JSON that does not
+      # depend on specific characters being disallowed.
+      # 
+      # Example: <code>"environment" : "dev"</code>
+      # 
+      # Read-write.
     "a_key": "A String",
   },
-  "projectNumber": "A String", # The number uniquely identifying the project. Example: 415104041262 Read-only.
-  "lifecycleState": "A String", # The Project lifecycle state. Read-only.
-  "createTime": "A String", # Creation time. Read-only.
+  "createTime": "A String", # Creation time.
+      # 
+      # Read-only.
+  "lifecycleState": "A String", # The Project lifecycle state.
+      # 
+      # Read-only.
+  "projectNumber": "A String", # The number uniquely identifying the project.
+      # 
+      # Example: <code>415104041262</code>
+      # 
+      # Read-only.
 }
 
   x__xgafv: string, V1 error format.
+    Allowed values
+      1 - v1 error format
+      2 - v2 error format
 
 Returns:
   An object of the form:
 
-    { # A Project is a high-level Google Cloud Platform entity. It is a container for ACLs, APIs, AppEngine Apps, VMs, and other Google Cloud Platform resources.
-    "name": "A String", # The user-assigned display name of the Project. It must be 4 to 30 characters. Allowed characters are: lowercase and uppercase letters, numbers, hyphen, single-quote, double-quote, space, and exclamation point. Example: My Project Read-write.
-    "parent": { # A container to reference an id for any resource type. A `resource` in Google Cloud Platform is a generic term for something you (a developer) may want to interact with through one of our API's. Some examples are an AppEngine app, a Compute Engine instance, a Cloud SQL database, and so on. # An optional reference to a parent Resource. The only supported parent type is "organization". Once set, the parent cannot be modified. Read-write.
-      "type": "A String", # Required field representing the resource type this id is for. At present, the valid types are "project" and "organization".
-      "id": "A String", # Required field for the type-specific id. This should correspond to the id used in the type-specific API's.
+    { # A Project is a high-level Google Cloud Platform entity.  It is a
+      # container for ACLs, APIs, AppEngine Apps, VMs, and other
+      # Google Cloud Platform resources.
+    "name": "A String", # The user-assigned display name of the Project.
+        # It must be 4 to 30 characters.
+        # Allowed characters are: lowercase and uppercase letters, numbers,
+        # hyphen, single-quote, double-quote, space, and exclamation point.
+        #
+        # Example: <code>My Project</code>
+        #
+        # Read-write.
+    "parent": { # A container to reference an id for any resource type. A `resource` in Google # An optional reference to a parent Resource.
+        #
+        # The only supported parent type is "organization". Once set, the parent
+        # cannot be modified. The `parent` can be set on creation or using the
+        # `UpdateProject` method; the end user must have the
+        # `resourcemanager.projects.create` permission on the parent.
+        #
+        # Read-write.
+        # Cloud Platform is a generic term for something you (a developer) may want to
+        # interact with through one of our API's. Some examples are an AppEngine app,
+        # a Compute Engine instance, a Cloud SQL database, and so on.
+      "type": "A String", # Required field representing the resource type this id is for.
+          # At present, the valid types are "project" and "organization".
+      "id": "A String", # Required field for the type-specific id. This should correspond to the id
+          # used in the type-specific API's.
     },
-    "projectId": "A String", # The unique, user-assigned ID of the Project. It must be 6 to 30 lowercase letters, digits, or hyphens. It must start with a letter. Trailing hyphens are prohibited. Example: tokyo-rain-123 Read-only after creation.
-    "labels": { # The labels associated with this Project. Label keys must be between 1 and 63 characters long and must conform to the following regular expression: \[a-z\](\[-a-z0-9\]*\[a-z0-9\])?. Label values must be between 0 and 63 characters long and must conform to the regular expression (\[a-z\](\[-a-z0-9\]*\[a-z0-9\])?)?. No more than 256 labels can be associated with a given resource. Clients should store labels in a representation such as JSON that does not depend on specific characters being disallowed. Example: "environment" : "dev" Read-write.
+    "projectId": "A String", # The unique, user-assigned ID of the Project.
+        # It must be 6 to 30 lowercase letters, digits, or hyphens.
+        # It must start with a letter.
+        # Trailing hyphens are prohibited.
+        #
+        # Example: <code>tokyo-rain-123</code>
+        #
+        # Read-only after creation.
+    "labels": { # The labels associated with this Project.
+        #
+        # Label keys must be between 1 and 63 characters long and must conform
+        # to the following regular expression: \[a-z\](\[-a-z0-9\]*\[a-z0-9\])?.
+        #
+        # Label values must be between 0 and 63 characters long and must conform
+        # to the regular expression (\[a-z\](\[-a-z0-9\]*\[a-z0-9\])?)?.
+        #
+        # No more than 256 labels can be associated with a given resource.
+        #
+        # Clients should store labels in a representation such as JSON that does not
+        # depend on specific characters being disallowed.
+        #
+        # Example: <code>"environment" : "dev"</code>
+        #
+        # Read-write.
       "a_key": "A String",
     },
-    "projectNumber": "A String", # The number uniquely identifying the project. Example: 415104041262 Read-only.
-    "lifecycleState": "A String", # The Project lifecycle state. Read-only.
-    "createTime": "A String", # Creation time. Read-only.
+    "createTime": "A String", # Creation time.
+        #
+        # Read-only.
+    "lifecycleState": "A String", # The Project lifecycle state.
+        #
+        # Read-only.
+    "projectNumber": "A String", # The number uniquely identifying the project.
+        #
+        # Example: <code>415104041262</code>
+        #
+        # Read-only.
   }</pre>
 </div>
 
diff --git a/docs/dyn/compute_alpha.addresses.html b/docs/dyn/compute_alpha.addresses.html
index 1387bf9..6910c09 100644
--- a/docs/dyn/compute_alpha.addresses.html
+++ b/docs/dyn/compute_alpha.addresses.html
@@ -151,7 +151,7 @@
               "labels": { # Labels to apply to this Address resource. These can be later modified by the setLabels method. Each label key/value must comply with RFC1035. Label values may be empty.
                 "a_key": "A String",
               },
-              "networkTier": "A String", # This signifies the networking tier used for configuring this Address and can only take the following values: PREMIUM , STANDARD. If this field is not specified, it is assumed to be PREMIUM.
+              "networkTier": "A String", # This signifies the networking tier used for configuring this Address and can only take the following values: CLOUD_NETWORK_PREMIUM , CLOUD_NETWORK_STANDARD. If this field is not specified, it is assumed to be CLOUD_NETWORK_PREMIUM.
               "address": "A String", # The static external IP address represented by this resource.
               "region": "A String", # [Output Only] URL of the region where the regional address resides. This field is not applicable to global addresses.
               "users": [ # [Output Only] The URLs of the resources that are using this address.
@@ -240,7 +240,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
@@ -266,7 +266,7 @@
       "labels": { # Labels to apply to this Address resource. These can be later modified by the setLabels method. Each label key/value must comply with RFC1035. Label values may be empty.
         "a_key": "A String",
       },
-      "networkTier": "A String", # This signifies the networking tier used for configuring this Address and can only take the following values: PREMIUM , STANDARD. If this field is not specified, it is assumed to be PREMIUM.
+      "networkTier": "A String", # This signifies the networking tier used for configuring this Address and can only take the following values: CLOUD_NETWORK_PREMIUM , CLOUD_NETWORK_STANDARD. If this field is not specified, it is assumed to be CLOUD_NETWORK_PREMIUM.
       "address": "A String", # The static external IP address represented by this resource.
       "region": "A String", # [Output Only] URL of the region where the regional address resides. This field is not applicable to global addresses.
       "users": [ # [Output Only] The URLs of the resources that are using this address.
@@ -299,7 +299,7 @@
     "labels": { # Labels to apply to this Address resource. These can be later modified by the setLabels method. Each label key/value must comply with RFC1035. Label values may be empty.
       "a_key": "A String",
     },
-    "networkTier": "A String", # This signifies the networking tier used for configuring this Address and can only take the following values: PREMIUM , STANDARD. If this field is not specified, it is assumed to be PREMIUM.
+    "networkTier": "A String", # This signifies the networking tier used for configuring this Address and can only take the following values: CLOUD_NETWORK_PREMIUM , CLOUD_NETWORK_STANDARD. If this field is not specified, it is assumed to be CLOUD_NETWORK_PREMIUM.
     "address": "A String", # The static external IP address represented by this resource.
     "region": "A String", # [Output Only] URL of the region where the regional address resides. This field is not applicable to global addresses.
     "users": [ # [Output Only] The URLs of the resources that are using this address.
@@ -358,7 +358,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
@@ -402,7 +402,7 @@
           "labels": { # Labels to apply to this Address resource. These can be later modified by the setLabels method. Each label key/value must comply with RFC1035. Label values may be empty.
             "a_key": "A String",
           },
-          "networkTier": "A String", # This signifies the networking tier used for configuring this Address and can only take the following values: PREMIUM , STANDARD. If this field is not specified, it is assumed to be PREMIUM.
+          "networkTier": "A String", # This signifies the networking tier used for configuring this Address and can only take the following values: CLOUD_NETWORK_PREMIUM , CLOUD_NETWORK_STANDARD. If this field is not specified, it is assumed to be CLOUD_NETWORK_PREMIUM.
           "address": "A String", # The static external IP address represented by this resource.
           "region": "A String", # [Output Only] URL of the region where the regional address resides. This field is not applicable to global addresses.
           "users": [ # [Output Only] The URLs of the resources that are using this address.
diff --git a/docs/dyn/compute_alpha.autoscalers.html b/docs/dyn/compute_alpha.autoscalers.html
index 368a11e..1217b56 100644
--- a/docs/dyn/compute_alpha.autoscalers.html
+++ b/docs/dyn/compute_alpha.autoscalers.html
@@ -282,7 +282,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
@@ -472,7 +472,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
@@ -700,7 +700,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
@@ -848,7 +848,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
diff --git a/docs/dyn/compute_alpha.backendBuckets.html b/docs/dyn/compute_alpha.backendBuckets.html
index a0bba70..b807d61 100644
--- a/docs/dyn/compute_alpha.backendBuckets.html
+++ b/docs/dyn/compute_alpha.backendBuckets.html
@@ -159,7 +159,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
@@ -211,11 +211,19 @@
     "auditConfigs": [ # Specifies audit logging configs for "data access". "data access": generally refers to data reads/writes and admin reads. "admin activity": generally refers to admin writes.
         #
         # Note: `AuditConfig` doesn't apply to "admin activity", which always enables audit logging.
-      { # Enables "data access" audit logging for a service and specifies a list of members that are log-exempted.
+      { # Provides the configuration for non-admin_activity logging for a service. Controls exemptions and specific log sub-types.
         "exemptedMembers": [ # Specifies the identities that are exempted from "data access" audit logging for the `service` specified above. Follows the same format of Binding.members.
           "A String",
         ],
-        "service": "A String", # Specifies a service that will be enabled for "data access" audit logging. For example, `resourcemanager`, `storage`, `compute`. `allServices` is a special value that covers all services.
+        "auditLogConfigs": [ # The configuration for each type of logging
+          { # Provides the configuration for a sub-type of logging.
+            "exemptedMembers": [ # Specifies the identities that are exempted from this type of logging Follows the same format of Binding.members.
+              "A String",
+            ],
+            "logType": "A String", # The log type that this config enables.
+          },
+        ],
+        "service": "A String", # Specifies a service that will be enabled for audit logging. For example, `resourcemanager`, `storage`, `compute`. `allServices` is a special value that covers all services.
       },
     ],
     "rules": [ # If more than one rule is specified, the rules are applied in the following manner: - All matching LOG rules are always applied. - If any DENY/DENY_WITH_LOG rule matches, permission is denied. Logging will be applied if one or more matching rule requires logging. - Otherwise, if any ALLOW/ALLOW_WITH_LOG rule matches, permission is granted. Logging will be applied if one or more matching rule requires logging. - Otherwise, if no rule applies, permission is denied.
@@ -268,6 +276,8 @@
             #
             # * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@gmail.com` or `joe@example.com`.
             #
+            #
+            #
             # * `serviceAccount:{emailid}`: An email address that represents a service account. For example, `my-other-app@appspot.gserviceaccount.com`.
             #
             # * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`.
@@ -348,7 +358,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
@@ -480,7 +490,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
@@ -508,11 +518,19 @@
   "auditConfigs": [ # Specifies audit logging configs for "data access". "data access": generally refers to data reads/writes and admin reads. "admin activity": generally refers to admin writes.
       # 
       # Note: `AuditConfig` doesn't apply to "admin activity", which always enables audit logging.
-    { # Enables "data access" audit logging for a service and specifies a list of members that are log-exempted.
+    { # Provides the configuration for non-admin_activity logging for a service. Controls exemptions and specific log sub-types.
       "exemptedMembers": [ # Specifies the identities that are exempted from "data access" audit logging for the `service` specified above. Follows the same format of Binding.members.
         "A String",
       ],
-      "service": "A String", # Specifies a service that will be enabled for "data access" audit logging. For example, `resourcemanager`, `storage`, `compute`. `allServices` is a special value that covers all services.
+      "auditLogConfigs": [ # The configuration for each type of logging
+        { # Provides the configuration for a sub-type of logging.
+          "exemptedMembers": [ # Specifies the identities that are exempted from this type of logging Follows the same format of Binding.members.
+            "A String",
+          ],
+          "logType": "A String", # The log type that this config enables.
+        },
+      ],
+      "service": "A String", # Specifies a service that will be enabled for audit logging. For example, `resourcemanager`, `storage`, `compute`. `allServices` is a special value that covers all services.
     },
   ],
   "rules": [ # If more than one rule is specified, the rules are applied in the following manner: - All matching LOG rules are always applied. - If any DENY/DENY_WITH_LOG rule matches, permission is denied. Logging will be applied if one or more matching rule requires logging. - Otherwise, if any ALLOW/ALLOW_WITH_LOG rule matches, permission is granted. Logging will be applied if one or more matching rule requires logging. - Otherwise, if no rule applies, permission is denied.
@@ -565,6 +583,8 @@
           #
           # * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@gmail.com` or `joe@example.com`.
           #
+          #
+          #
           # * `serviceAccount:{emailid}`: An email address that represents a service account. For example, `my-other-app@appspot.gserviceaccount.com`.
           #
           # * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`.
@@ -595,11 +615,19 @@
     "auditConfigs": [ # Specifies audit logging configs for "data access". "data access": generally refers to data reads/writes and admin reads. "admin activity": generally refers to admin writes.
         #
         # Note: `AuditConfig` doesn't apply to "admin activity", which always enables audit logging.
-      { # Enables "data access" audit logging for a service and specifies a list of members that are log-exempted.
+      { # Provides the configuration for non-admin_activity logging for a service. Controls exemptions and specific log sub-types.
         "exemptedMembers": [ # Specifies the identities that are exempted from "data access" audit logging for the `service` specified above. Follows the same format of Binding.members.
           "A String",
         ],
-        "service": "A String", # Specifies a service that will be enabled for "data access" audit logging. For example, `resourcemanager`, `storage`, `compute`. `allServices` is a special value that covers all services.
+        "auditLogConfigs": [ # The configuration for each type of logging
+          { # Provides the configuration for a sub-type of logging.
+            "exemptedMembers": [ # Specifies the identities that are exempted from this type of logging Follows the same format of Binding.members.
+              "A String",
+            ],
+            "logType": "A String", # The log type that this config enables.
+          },
+        ],
+        "service": "A String", # Specifies a service that will be enabled for audit logging. For example, `resourcemanager`, `storage`, `compute`. `allServices` is a special value that covers all services.
       },
     ],
     "rules": [ # If more than one rule is specified, the rules are applied in the following manner: - All matching LOG rules are always applied. - If any DENY/DENY_WITH_LOG rule matches, permission is denied. Logging will be applied if one or more matching rule requires logging. - Otherwise, if any ALLOW/ALLOW_WITH_LOG rule matches, permission is granted. Logging will be applied if one or more matching rule requires logging. - Otherwise, if no rule applies, permission is denied.
@@ -652,6 +680,8 @@
             #
             # * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@gmail.com` or `joe@example.com`.
             #
+            #
+            #
             # * `serviceAccount:{emailid}`: An email address that represents a service account. For example, `my-other-app@appspot.gserviceaccount.com`.
             #
             # * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`.
@@ -760,7 +790,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
diff --git a/docs/dyn/compute_alpha.backendServices.html b/docs/dyn/compute_alpha.backendServices.html
index f2dbbc4..10df0d3 100644
--- a/docs/dyn/compute_alpha.backendServices.html
+++ b/docs/dyn/compute_alpha.backendServices.html
@@ -179,7 +179,19 @@
                   # When the protocol is UDP, this field is not used.
               "creationTimestamp": "A String", # [Output Only] Creation timestamp in RFC3339 text format.
               "id": "A String", # [Output Only] The unique identifier for the resource. This identifier is defined by the server.
-              "timeoutSec": 42, # How many seconds to wait for the backend before considering it a failed request. Default is 30 seconds.
+              "cdnPolicy": { # Message containing Cloud CDN configuration for a backend service. # Cloud CDN configuration for this BackendService.
+                "cacheKeyPolicy": { # Message containing what to include in the cache key for a request for Cloud CDN. # The CacheKeyPolicy for this CdnPolicy.
+                  "includeQueryString": True or False, # If true, include query string parameters in the cache key according to query_string_whitelist and query_string_blacklist. If neither is set, the entire query string will be included. If false, the query string will be excluded from the cache key entirely.
+                  "includeHost": True or False, # If true, requests to different hosts will be cached separately.
+                  "queryStringBlacklist": [ # Names of query string parameters to exclude in cache keys. All other parameters will be included. Either specify query_string_whitelist or query_string_blacklist, not both. '&' and '=' will be percent encoded and not treated as delimiters.
+                    "A String",
+                  ],
+                  "queryStringWhitelist": [ # Names of query string parameters to include in cache keys. All other parameters will be excluded. Either specify query_string_whitelist or query_string_blacklist, not both. '&' and '=' will be percent encoded and not treated as delimiters.
+                    "A String",
+                  ],
+                  "includeProtocol": True or False, # If true, http and https requests will be cached separately.
+                },
+              },
               "enableCDN": True or False, # If true, enable Cloud CDN for this BackendService.
                   #
                   # When the load balancing scheme is INTERNAL, this field is not used.
@@ -200,6 +212,7 @@
                   "maxUtilization": 3.14, # Used when balancingMode is UTILIZATION. This ratio defines the CPU utilization target for the group. The default is 0.8. Valid range is [0.0, 1.0].
                       #
                       # This cannot be used for internal load balancing.
+                  "failover": True or False, # This field designates whether this is a failover backend. More than one failover backend can be configured for a given BackendService.
                   "maxRatePerInstance": 3.14, # The max requests per second (RPS) that a single backend instance can handle.This is used to calculate the capacity of the group. Can be used in either balancing mode. For RATE mode, either maxRate or maxRatePerInstance must be set.
                       #
                       # This cannot be used for internal load balancing.
@@ -227,19 +240,9 @@
                 "oauth2ClientSecretSha256": "A String",
               },
               "description": "A String", # An optional description of this resource. Provide this property when you create the resource.
-              "cdnPolicy": { # Message containing Cloud CDN configuration for a backend service. # Cloud CDN Coniguration for this BackendService.
-                "cacheKeyPolicy": { # Message containing what to include in the cache key for a request for Cloud CDN. # The CacheKeyPolicy for this CdnPolicy.
-                  "includeQueryString": True or False, # If true, include query string parameters in the cache key according to query_string_whitelist and query_string_blacklist. If neither is set, the entire query string will be included. If false, the query string will be excluded from the cache key entirely.
-                  "includeHost": True or False, # If true, requests to different hosts will be cached separately.
-                  "queryStringBlacklist": [ # Names of query string parameters to exclude in cache keys. All other parameters will be included. Either specify query_string_whitelist or query_string_blacklist, not both. '&' and '=' will be percent encoded and not treated as delimiters.
-                    "A String",
-                  ],
-                  "queryStringWhitelist": [ # Names of query string parameters to include in cache keys. All other parameters will be excluded. Either specify query_string_whitelist or query_string_blacklist, not both. '&' and '=' will be percent encoded and not treated as delimiters.
-                    "A String",
-                  ],
-                  "includeProtocol": True or False, # If true, http and https requests will be cached separately.
-                },
-              },
+              "customRequestHeaders": [ # Headers that the HTTP/S load balancer should add to proxied requests.
+                "A String",
+              ],
               "fingerprint": "A String", # Fingerprint of this resource. A hash of the contents stored in this object. This field is used in optimistic locking. This field will be ignored when inserting a BackendService. An up-to-date fingerprint must be provided in order to update the BackendService.
               "portName": "A String", # Name of backend port. The same name should appear in the instance groups referenced by this service. Required when the load balancing scheme is EXTERNAL.
                   #
@@ -247,6 +250,7 @@
               "kind": "compute#backendService", # [Output Only] Type of resource. Always compute#backendService for backend services.
               "name": "A String", # Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression [a-z]([-a-z0-9]*[a-z0-9])? which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.
               "region": "A String", # [Output Only] URL of the region where the regional backend service resides. This field is not applicable to global backend services.
+              "timeoutSec": 42, # How many seconds to wait for the backend before considering it a failed request. Default is 30 seconds.
               "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
             },
         ],
@@ -326,7 +330,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
@@ -370,7 +374,19 @@
           # When the protocol is UDP, this field is not used.
       "creationTimestamp": "A String", # [Output Only] Creation timestamp in RFC3339 text format.
       "id": "A String", # [Output Only] The unique identifier for the resource. This identifier is defined by the server.
-      "timeoutSec": 42, # How many seconds to wait for the backend before considering it a failed request. Default is 30 seconds.
+      "cdnPolicy": { # Message containing Cloud CDN configuration for a backend service. # Cloud CDN configuration for this BackendService.
+        "cacheKeyPolicy": { # Message containing what to include in the cache key for a request for Cloud CDN. # The CacheKeyPolicy for this CdnPolicy.
+          "includeQueryString": True or False, # If true, include query string parameters in the cache key according to query_string_whitelist and query_string_blacklist. If neither is set, the entire query string will be included. If false, the query string will be excluded from the cache key entirely.
+          "includeHost": True or False, # If true, requests to different hosts will be cached separately.
+          "queryStringBlacklist": [ # Names of query string parameters to exclude in cache keys. All other parameters will be included. Either specify query_string_whitelist or query_string_blacklist, not both. '&' and '=' will be percent encoded and not treated as delimiters.
+            "A String",
+          ],
+          "queryStringWhitelist": [ # Names of query string parameters to include in cache keys. All other parameters will be excluded. Either specify query_string_whitelist or query_string_blacklist, not both. '&' and '=' will be percent encoded and not treated as delimiters.
+            "A String",
+          ],
+          "includeProtocol": True or False, # If true, http and https requests will be cached separately.
+        },
+      },
       "enableCDN": True or False, # If true, enable Cloud CDN for this BackendService.
           #
           # When the load balancing scheme is INTERNAL, this field is not used.
@@ -391,6 +407,7 @@
           "maxUtilization": 3.14, # Used when balancingMode is UTILIZATION. This ratio defines the CPU utilization target for the group. The default is 0.8. Valid range is [0.0, 1.0].
               #
               # This cannot be used for internal load balancing.
+          "failover": True or False, # This field designates whether this is a failover backend. More than one failover backend can be configured for a given BackendService.
           "maxRatePerInstance": 3.14, # The max requests per second (RPS) that a single backend instance can handle.This is used to calculate the capacity of the group. Can be used in either balancing mode. For RATE mode, either maxRate or maxRatePerInstance must be set.
               #
               # This cannot be used for internal load balancing.
@@ -418,19 +435,9 @@
         "oauth2ClientSecretSha256": "A String",
       },
       "description": "A String", # An optional description of this resource. Provide this property when you create the resource.
-      "cdnPolicy": { # Message containing Cloud CDN configuration for a backend service. # Cloud CDN Coniguration for this BackendService.
-        "cacheKeyPolicy": { # Message containing what to include in the cache key for a request for Cloud CDN. # The CacheKeyPolicy for this CdnPolicy.
-          "includeQueryString": True or False, # If true, include query string parameters in the cache key according to query_string_whitelist and query_string_blacklist. If neither is set, the entire query string will be included. If false, the query string will be excluded from the cache key entirely.
-          "includeHost": True or False, # If true, requests to different hosts will be cached separately.
-          "queryStringBlacklist": [ # Names of query string parameters to exclude in cache keys. All other parameters will be included. Either specify query_string_whitelist or query_string_blacklist, not both. '&' and '=' will be percent encoded and not treated as delimiters.
-            "A String",
-          ],
-          "queryStringWhitelist": [ # Names of query string parameters to include in cache keys. All other parameters will be excluded. Either specify query_string_whitelist or query_string_blacklist, not both. '&' and '=' will be percent encoded and not treated as delimiters.
-            "A String",
-          ],
-          "includeProtocol": True or False, # If true, http and https requests will be cached separately.
-        },
-      },
+      "customRequestHeaders": [ # Headers that the HTTP/S load balancer should add to proxied requests.
+        "A String",
+      ],
       "fingerprint": "A String", # Fingerprint of this resource. A hash of the contents stored in this object. This field is used in optimistic locking. This field will be ignored when inserting a BackendService. An up-to-date fingerprint must be provided in order to update the BackendService.
       "portName": "A String", # Name of backend port. The same name should appear in the instance groups referenced by this service. Required when the load balancing scheme is EXTERNAL.
           #
@@ -438,6 +445,7 @@
       "kind": "compute#backendService", # [Output Only] Type of resource. Always compute#backendService for backend services.
       "name": "A String", # Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression [a-z]([-a-z0-9]*[a-z0-9])? which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.
       "region": "A String", # [Output Only] URL of the region where the regional backend service resides. This field is not applicable to global backend services.
+      "timeoutSec": 42, # How many seconds to wait for the backend before considering it a failed request. Default is 30 seconds.
       "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
     }</pre>
 </div>
@@ -511,7 +519,19 @@
         # When the protocol is UDP, this field is not used.
     "creationTimestamp": "A String", # [Output Only] Creation timestamp in RFC3339 text format.
     "id": "A String", # [Output Only] The unique identifier for the resource. This identifier is defined by the server.
-    "timeoutSec": 42, # How many seconds to wait for the backend before considering it a failed request. Default is 30 seconds.
+    "cdnPolicy": { # Message containing Cloud CDN configuration for a backend service. # Cloud CDN configuration for this BackendService.
+      "cacheKeyPolicy": { # Message containing what to include in the cache key for a request for Cloud CDN. # The CacheKeyPolicy for this CdnPolicy.
+        "includeQueryString": True or False, # If true, include query string parameters in the cache key according to query_string_whitelist and query_string_blacklist. If neither is set, the entire query string will be included. If false, the query string will be excluded from the cache key entirely.
+        "includeHost": True or False, # If true, requests to different hosts will be cached separately.
+        "queryStringBlacklist": [ # Names of query string parameters to exclude in cache keys. All other parameters will be included. Either specify query_string_whitelist or query_string_blacklist, not both. '&' and '=' will be percent encoded and not treated as delimiters.
+          "A String",
+        ],
+        "queryStringWhitelist": [ # Names of query string parameters to include in cache keys. All other parameters will be excluded. Either specify query_string_whitelist or query_string_blacklist, not both. '&' and '=' will be percent encoded and not treated as delimiters.
+          "A String",
+        ],
+        "includeProtocol": True or False, # If true, http and https requests will be cached separately.
+      },
+    },
     "enableCDN": True or False, # If true, enable Cloud CDN for this BackendService.
         # 
         # When the load balancing scheme is INTERNAL, this field is not used.
@@ -532,6 +552,7 @@
         "maxUtilization": 3.14, # Used when balancingMode is UTILIZATION. This ratio defines the CPU utilization target for the group. The default is 0.8. Valid range is [0.0, 1.0].
             #
             # This cannot be used for internal load balancing.
+        "failover": True or False, # This field designates whether this is a failover backend. More than one failover backend can be configured for a given BackendService.
         "maxRatePerInstance": 3.14, # The max requests per second (RPS) that a single backend instance can handle.This is used to calculate the capacity of the group. Can be used in either balancing mode. For RATE mode, either maxRate or maxRatePerInstance must be set.
             #
             # This cannot be used for internal load balancing.
@@ -559,19 +580,9 @@
       "oauth2ClientSecretSha256": "A String",
     },
     "description": "A String", # An optional description of this resource. Provide this property when you create the resource.
-    "cdnPolicy": { # Message containing Cloud CDN configuration for a backend service. # Cloud CDN Coniguration for this BackendService.
-      "cacheKeyPolicy": { # Message containing what to include in the cache key for a request for Cloud CDN. # The CacheKeyPolicy for this CdnPolicy.
-        "includeQueryString": True or False, # If true, include query string parameters in the cache key according to query_string_whitelist and query_string_blacklist. If neither is set, the entire query string will be included. If false, the query string will be excluded from the cache key entirely.
-        "includeHost": True or False, # If true, requests to different hosts will be cached separately.
-        "queryStringBlacklist": [ # Names of query string parameters to exclude in cache keys. All other parameters will be included. Either specify query_string_whitelist or query_string_blacklist, not both. '&' and '=' will be percent encoded and not treated as delimiters.
-          "A String",
-        ],
-        "queryStringWhitelist": [ # Names of query string parameters to include in cache keys. All other parameters will be excluded. Either specify query_string_whitelist or query_string_blacklist, not both. '&' and '=' will be percent encoded and not treated as delimiters.
-          "A String",
-        ],
-        "includeProtocol": True or False, # If true, http and https requests will be cached separately.
-      },
-    },
+    "customRequestHeaders": [ # Headers that the HTTP/S load balancer should add to proxied requests.
+      "A String",
+    ],
     "fingerprint": "A String", # Fingerprint of this resource. A hash of the contents stored in this object. This field is used in optimistic locking. This field will be ignored when inserting a BackendService. An up-to-date fingerprint must be provided in order to update the BackendService.
     "portName": "A String", # Name of backend port. The same name should appear in the instance groups referenced by this service. Required when the load balancing scheme is EXTERNAL.
         # 
@@ -579,6 +590,7 @@
     "kind": "compute#backendService", # [Output Only] Type of resource. Always compute#backendService for backend services.
     "name": "A String", # Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression [a-z]([-a-z0-9]*[a-z0-9])? which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.
     "region": "A String", # [Output Only] URL of the region where the regional backend service resides. This field is not applicable to global backend services.
+    "timeoutSec": 42, # How many seconds to wait for the backend before considering it a failed request. Default is 30 seconds.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
   }
 
@@ -629,7 +641,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
@@ -691,7 +703,19 @@
               # When the protocol is UDP, this field is not used.
           "creationTimestamp": "A String", # [Output Only] Creation timestamp in RFC3339 text format.
           "id": "A String", # [Output Only] The unique identifier for the resource. This identifier is defined by the server.
-          "timeoutSec": 42, # How many seconds to wait for the backend before considering it a failed request. Default is 30 seconds.
+          "cdnPolicy": { # Message containing Cloud CDN configuration for a backend service. # Cloud CDN configuration for this BackendService.
+            "cacheKeyPolicy": { # Message containing what to include in the cache key for a request for Cloud CDN. # The CacheKeyPolicy for this CdnPolicy.
+              "includeQueryString": True or False, # If true, include query string parameters in the cache key according to query_string_whitelist and query_string_blacklist. If neither is set, the entire query string will be included. If false, the query string will be excluded from the cache key entirely.
+              "includeHost": True or False, # If true, requests to different hosts will be cached separately.
+              "queryStringBlacklist": [ # Names of query string parameters to exclude in cache keys. All other parameters will be included. Either specify query_string_whitelist or query_string_blacklist, not both. '&' and '=' will be percent encoded and not treated as delimiters.
+                "A String",
+              ],
+              "queryStringWhitelist": [ # Names of query string parameters to include in cache keys. All other parameters will be excluded. Either specify query_string_whitelist or query_string_blacklist, not both. '&' and '=' will be percent encoded and not treated as delimiters.
+                "A String",
+              ],
+              "includeProtocol": True or False, # If true, http and https requests will be cached separately.
+            },
+          },
           "enableCDN": True or False, # If true, enable Cloud CDN for this BackendService.
               #
               # When the load balancing scheme is INTERNAL, this field is not used.
@@ -712,6 +736,7 @@
               "maxUtilization": 3.14, # Used when balancingMode is UTILIZATION. This ratio defines the CPU utilization target for the group. The default is 0.8. Valid range is [0.0, 1.0].
                   #
                   # This cannot be used for internal load balancing.
+              "failover": True or False, # This field designates whether this is a failover backend. More than one failover backend can be configured for a given BackendService.
               "maxRatePerInstance": 3.14, # The max requests per second (RPS) that a single backend instance can handle.This is used to calculate the capacity of the group. Can be used in either balancing mode. For RATE mode, either maxRate or maxRatePerInstance must be set.
                   #
                   # This cannot be used for internal load balancing.
@@ -739,19 +764,9 @@
             "oauth2ClientSecretSha256": "A String",
           },
           "description": "A String", # An optional description of this resource. Provide this property when you create the resource.
-          "cdnPolicy": { # Message containing Cloud CDN configuration for a backend service. # Cloud CDN Coniguration for this BackendService.
-            "cacheKeyPolicy": { # Message containing what to include in the cache key for a request for Cloud CDN. # The CacheKeyPolicy for this CdnPolicy.
-              "includeQueryString": True or False, # If true, include query string parameters in the cache key according to query_string_whitelist and query_string_blacklist. If neither is set, the entire query string will be included. If false, the query string will be excluded from the cache key entirely.
-              "includeHost": True or False, # If true, requests to different hosts will be cached separately.
-              "queryStringBlacklist": [ # Names of query string parameters to exclude in cache keys. All other parameters will be included. Either specify query_string_whitelist or query_string_blacklist, not both. '&' and '=' will be percent encoded and not treated as delimiters.
-                "A String",
-              ],
-              "queryStringWhitelist": [ # Names of query string parameters to include in cache keys. All other parameters will be excluded. Either specify query_string_whitelist or query_string_blacklist, not both. '&' and '=' will be percent encoded and not treated as delimiters.
-                "A String",
-              ],
-              "includeProtocol": True or False, # If true, http and https requests will be cached separately.
-            },
-          },
+          "customRequestHeaders": [ # Headers that the HTTP/S load balancer should add to proxied requests.
+            "A String",
+          ],
           "fingerprint": "A String", # Fingerprint of this resource. A hash of the contents stored in this object. This field is used in optimistic locking. This field will be ignored when inserting a BackendService. An up-to-date fingerprint must be provided in order to update the BackendService.
           "portName": "A String", # Name of backend port. The same name should appear in the instance groups referenced by this service. Required when the load balancing scheme is EXTERNAL.
               #
@@ -759,6 +774,7 @@
           "kind": "compute#backendService", # [Output Only] Type of resource. Always compute#backendService for backend services.
           "name": "A String", # Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression [a-z]([-a-z0-9]*[a-z0-9])? which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.
           "region": "A String", # [Output Only] URL of the region where the regional backend service resides. This field is not applicable to global backend services.
+          "timeoutSec": 42, # How many seconds to wait for the backend before considering it a failed request. Default is 30 seconds.
           "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
         },
     ],
@@ -821,7 +837,19 @@
         # When the protocol is UDP, this field is not used.
     "creationTimestamp": "A String", # [Output Only] Creation timestamp in RFC3339 text format.
     "id": "A String", # [Output Only] The unique identifier for the resource. This identifier is defined by the server.
-    "timeoutSec": 42, # How many seconds to wait for the backend before considering it a failed request. Default is 30 seconds.
+    "cdnPolicy": { # Message containing Cloud CDN configuration for a backend service. # Cloud CDN configuration for this BackendService.
+      "cacheKeyPolicy": { # Message containing what to include in the cache key for a request for Cloud CDN. # The CacheKeyPolicy for this CdnPolicy.
+        "includeQueryString": True or False, # If true, include query string parameters in the cache key according to query_string_whitelist and query_string_blacklist. If neither is set, the entire query string will be included. If false, the query string will be excluded from the cache key entirely.
+        "includeHost": True or False, # If true, requests to different hosts will be cached separately.
+        "queryStringBlacklist": [ # Names of query string parameters to exclude in cache keys. All other parameters will be included. Either specify query_string_whitelist or query_string_blacklist, not both. '&' and '=' will be percent encoded and not treated as delimiters.
+          "A String",
+        ],
+        "queryStringWhitelist": [ # Names of query string parameters to include in cache keys. All other parameters will be excluded. Either specify query_string_whitelist or query_string_blacklist, not both. '&' and '=' will be percent encoded and not treated as delimiters.
+          "A String",
+        ],
+        "includeProtocol": True or False, # If true, http and https requests will be cached separately.
+      },
+    },
     "enableCDN": True or False, # If true, enable Cloud CDN for this BackendService.
         # 
         # When the load balancing scheme is INTERNAL, this field is not used.
@@ -842,6 +870,7 @@
         "maxUtilization": 3.14, # Used when balancingMode is UTILIZATION. This ratio defines the CPU utilization target for the group. The default is 0.8. Valid range is [0.0, 1.0].
             #
             # This cannot be used for internal load balancing.
+        "failover": True or False, # This field designates whether this is a failover backend. More than one failover backend can be configured for a given BackendService.
         "maxRatePerInstance": 3.14, # The max requests per second (RPS) that a single backend instance can handle.This is used to calculate the capacity of the group. Can be used in either balancing mode. For RATE mode, either maxRate or maxRatePerInstance must be set.
             #
             # This cannot be used for internal load balancing.
@@ -869,19 +898,9 @@
       "oauth2ClientSecretSha256": "A String",
     },
     "description": "A String", # An optional description of this resource. Provide this property when you create the resource.
-    "cdnPolicy": { # Message containing Cloud CDN configuration for a backend service. # Cloud CDN Coniguration for this BackendService.
-      "cacheKeyPolicy": { # Message containing what to include in the cache key for a request for Cloud CDN. # The CacheKeyPolicy for this CdnPolicy.
-        "includeQueryString": True or False, # If true, include query string parameters in the cache key according to query_string_whitelist and query_string_blacklist. If neither is set, the entire query string will be included. If false, the query string will be excluded from the cache key entirely.
-        "includeHost": True or False, # If true, requests to different hosts will be cached separately.
-        "queryStringBlacklist": [ # Names of query string parameters to exclude in cache keys. All other parameters will be included. Either specify query_string_whitelist or query_string_blacklist, not both. '&' and '=' will be percent encoded and not treated as delimiters.
-          "A String",
-        ],
-        "queryStringWhitelist": [ # Names of query string parameters to include in cache keys. All other parameters will be excluded. Either specify query_string_whitelist or query_string_blacklist, not both. '&' and '=' will be percent encoded and not treated as delimiters.
-          "A String",
-        ],
-        "includeProtocol": True or False, # If true, http and https requests will be cached separately.
-      },
-    },
+    "customRequestHeaders": [ # Headers that the HTTP/S load balancer should add to proxied requests.
+      "A String",
+    ],
     "fingerprint": "A String", # Fingerprint of this resource. A hash of the contents stored in this object. This field is used in optimistic locking. This field will be ignored when inserting a BackendService. An up-to-date fingerprint must be provided in order to update the BackendService.
     "portName": "A String", # Name of backend port. The same name should appear in the instance groups referenced by this service. Required when the load balancing scheme is EXTERNAL.
         # 
@@ -889,6 +908,7 @@
     "kind": "compute#backendService", # [Output Only] Type of resource. Always compute#backendService for backend services.
     "name": "A String", # Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression [a-z]([-a-z0-9]*[a-z0-9])? which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.
     "region": "A String", # [Output Only] URL of the region where the regional backend service resides. This field is not applicable to global backend services.
+    "timeoutSec": 42, # How many seconds to wait for the backend before considering it a failed request. Default is 30 seconds.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
   }
 
@@ -939,7 +959,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
@@ -1009,7 +1029,19 @@
         # When the protocol is UDP, this field is not used.
     "creationTimestamp": "A String", # [Output Only] Creation timestamp in RFC3339 text format.
     "id": "A String", # [Output Only] The unique identifier for the resource. This identifier is defined by the server.
-    "timeoutSec": 42, # How many seconds to wait for the backend before considering it a failed request. Default is 30 seconds.
+    "cdnPolicy": { # Message containing Cloud CDN configuration for a backend service. # Cloud CDN configuration for this BackendService.
+      "cacheKeyPolicy": { # Message containing what to include in the cache key for a request for Cloud CDN. # The CacheKeyPolicy for this CdnPolicy.
+        "includeQueryString": True or False, # If true, include query string parameters in the cache key according to query_string_whitelist and query_string_blacklist. If neither is set, the entire query string will be included. If false, the query string will be excluded from the cache key entirely.
+        "includeHost": True or False, # If true, requests to different hosts will be cached separately.
+        "queryStringBlacklist": [ # Names of query string parameters to exclude in cache keys. All other parameters will be included. Either specify query_string_whitelist or query_string_blacklist, not both. '&' and '=' will be percent encoded and not treated as delimiters.
+          "A String",
+        ],
+        "queryStringWhitelist": [ # Names of query string parameters to include in cache keys. All other parameters will be excluded. Either specify query_string_whitelist or query_string_blacklist, not both. '&' and '=' will be percent encoded and not treated as delimiters.
+          "A String",
+        ],
+        "includeProtocol": True or False, # If true, http and https requests will be cached separately.
+      },
+    },
     "enableCDN": True or False, # If true, enable Cloud CDN for this BackendService.
         # 
         # When the load balancing scheme is INTERNAL, this field is not used.
@@ -1030,6 +1062,7 @@
         "maxUtilization": 3.14, # Used when balancingMode is UTILIZATION. This ratio defines the CPU utilization target for the group. The default is 0.8. Valid range is [0.0, 1.0].
             #
             # This cannot be used for internal load balancing.
+        "failover": True or False, # This field designates whether this is a failover backend. More than one failover backend can be configured for a given BackendService.
         "maxRatePerInstance": 3.14, # The max requests per second (RPS) that a single backend instance can handle.This is used to calculate the capacity of the group. Can be used in either balancing mode. For RATE mode, either maxRate or maxRatePerInstance must be set.
             #
             # This cannot be used for internal load balancing.
@@ -1057,19 +1090,9 @@
       "oauth2ClientSecretSha256": "A String",
     },
     "description": "A String", # An optional description of this resource. Provide this property when you create the resource.
-    "cdnPolicy": { # Message containing Cloud CDN configuration for a backend service. # Cloud CDN Coniguration for this BackendService.
-      "cacheKeyPolicy": { # Message containing what to include in the cache key for a request for Cloud CDN. # The CacheKeyPolicy for this CdnPolicy.
-        "includeQueryString": True or False, # If true, include query string parameters in the cache key according to query_string_whitelist and query_string_blacklist. If neither is set, the entire query string will be included. If false, the query string will be excluded from the cache key entirely.
-        "includeHost": True or False, # If true, requests to different hosts will be cached separately.
-        "queryStringBlacklist": [ # Names of query string parameters to exclude in cache keys. All other parameters will be included. Either specify query_string_whitelist or query_string_blacklist, not both. '&' and '=' will be percent encoded and not treated as delimiters.
-          "A String",
-        ],
-        "queryStringWhitelist": [ # Names of query string parameters to include in cache keys. All other parameters will be excluded. Either specify query_string_whitelist or query_string_blacklist, not both. '&' and '=' will be percent encoded and not treated as delimiters.
-          "A String",
-        ],
-        "includeProtocol": True or False, # If true, http and https requests will be cached separately.
-      },
-    },
+    "customRequestHeaders": [ # Headers that the HTTP/S load balancer should add to proxied requests.
+      "A String",
+    ],
     "fingerprint": "A String", # Fingerprint of this resource. A hash of the contents stored in this object. This field is used in optimistic locking. This field will be ignored when inserting a BackendService. An up-to-date fingerprint must be provided in order to update the BackendService.
     "portName": "A String", # Name of backend port. The same name should appear in the instance groups referenced by this service. Required when the load balancing scheme is EXTERNAL.
         # 
@@ -1077,6 +1100,7 @@
     "kind": "compute#backendService", # [Output Only] Type of resource. Always compute#backendService for backend services.
     "name": "A String", # Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression [a-z]([-a-z0-9]*[a-z0-9])? which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.
     "region": "A String", # [Output Only] URL of the region where the regional backend service resides. This field is not applicable to global backend services.
+    "timeoutSec": 42, # How many seconds to wait for the backend before considering it a failed request. Default is 30 seconds.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
   }
 
@@ -1127,7 +1151,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
diff --git a/docs/dyn/compute_alpha.commitments.html b/docs/dyn/compute_alpha.commitments.html
new file mode 100644
index 0000000..ed994d7
--- /dev/null
+++ b/docs/dyn/compute_alpha.commitments.html
@@ -0,0 +1,713 @@
+<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="compute_alpha.html">Compute Engine API</a> . <a href="compute_alpha.commitments.html">commitments</a></h1>
+<h2>Instance Methods</h2>
+<p class="toc_element">
+  <code><a href="#aggregatedList">aggregatedList(project, orderBy=None, maxResults=None, pageToken=None, filter=None)</a></code></p>
+<p class="firstline">Retrieves an aggregated list of commitments.</p>
+<p class="toc_element">
+  <code><a href="#aggregatedList_next">aggregatedList_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="#get">get(project, zone, commitment)</a></code></p>
+<p class="firstline">Returns the specified commitment resource. Get a list of available commitments by making a list() request.</p>
+<p class="toc_element">
+  <code><a href="#getIamPolicy">getIamPolicy(project, zone, resource)</a></code></p>
+<p class="firstline">Gets the access control policy for a resource. May be empty if no such policy or resource exists.</p>
+<p class="toc_element">
+  <code><a href="#insert">insert(project, zone, body)</a></code></p>
+<p class="firstline">Creates an commitment in the specified project using the data included in the request.</p>
+<p class="toc_element">
+  <code><a href="#list">list(project, zone, orderBy=None, maxResults=None, pageToken=None, filter=None)</a></code></p>
+<p class="firstline">Retrieves a list of commitments contained within the specified zone.</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="#setIamPolicy">setIamPolicy(project, zone, resource, body)</a></code></p>
+<p class="firstline">Sets the access control policy on the specified resource. Replaces any existing policy.</p>
+<p class="toc_element">
+  <code><a href="#testIamPermissions">testIamPermissions(project, zone, resource, body)</a></code></p>
+<p class="firstline">Returns permissions that a caller has on the specified resource.</p>
+<h3>Method Details</h3>
+<div class="method">
+    <code class="details" id="aggregatedList">aggregatedList(project, orderBy=None, maxResults=None, pageToken=None, filter=None)</code>
+  <pre>Retrieves an aggregated list of commitments.
+
+Args:
+  project: string, Project ID for this request. (required)
+  orderBy: string, Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.
+
+You can also sort results in descending order based on the creation timestamp using orderBy="creationTimestamp desc". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.
+
+Currently, only sorting by name or creationTimestamp desc is supported.
+  maxResults: integer, The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests.
+  pageToken: string, Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.
+  filter: string, Sets a filter expression for filtering listed resources, in the form filter={expression}. Your {expression} must be in the format: field_name comparison_string literal_string.
+
+The field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.
+
+For example, to filter for instances that do not have a name of example-instance, you would use filter=name ne example-instance.
+
+You can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.
+
+To filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.
+
+Returns:
+  An object of the form:
+
+    {
+    "nextPageToken": "A String", # [Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results.
+    "items": { # Commitments by scope.
+      "a_key": { # [Output Only] Name of the scope containing this set of commitments.
+        "warning": { # [Output Only] Informational warning which replaces the list of commitments when the list is empty.
+          "message": "A String", # [Output Only] A human-readable description of the warning code.
+          "code": "A String", # [Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.
+          "data": [ # [Output Only] Metadata about this warning in key: value format. For example:
+              # "data": [ { "key": "scope", "value": "zones/us-east1-d" }
+            {
+              "value": "A String", # [Output Only] A warning data value corresponding to the key.
+              "key": "A String", # [Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding).
+            },
+          ],
+        },
+        "commitments": [ # [Output Only] List of commitments contained in this scope.
+          { # A usage-commitment with a start / end time. Users create commitments for particular resources (e.g. memory). Actual usage is first deducted from available commitments made prior, perhaps at a reduced price (as laid out in the commitment).
+              "status": "A String", # [Output Only] Status of the commitment with regards to eventual expiration (each commitment has an end-date defined). One of the following values: NOT_YET_ACTIVE, ACTIVE, EXPIRED.
+              "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
+              "kind": "compute#commitment", # [Output Only] Type of the resource. Always compute#commitment for commitments.
+              "statusMessage": "A String", # [Output Only] An optional, human-readable explanation of the status.
+              "description": "A String", # An optional description of this resource. Provide this property when you create the resource.
+              "zone": "A String", # [Output Only] URL of the zone where this commitment may be used.
+              "startTimestamp": "A String", # [Output Only] Commitment start time in RFC3339 text format.
+              "endTimestamp": "A String", # [Output Only] Commitment end time in RFC3339 text format.
+              "plan": "A String", # The plan for this commitment, which determines duration and discount rate. The currently supported plans are TWELVE_MONTH (1 year), and THIRTY_SIX_MONTH (3 years).
+              "creationTimestamp": "A String", # [Output Only] Creation timestamp in RFC3339 text format.
+              "id": "A String", # [Output Only] The unique identifier for the resource. This identifier is defined by the server.
+              "resources": [ # List of commitment amounts for particular resources. Note that VCPU and MEMORY resource commitments must occur together.
+                { # Commitment for a particular resource (a Commitment is composed of one or more of these).
+                  "amount": "A String", # The amount of the resource purchased (in a type-dependent unit, such as bytes).
+                  "type": "A String", # Type of resource for which this commitment applies.
+                },
+              ],
+              "name": "A String", # Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression [a-z]([-a-z0-9]*[a-z0-9])? which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.
+            },
+        ],
+      },
+    },
+    "kind": "compute#commitmentAggregatedList", # [Output Only] Type of resource. Always compute#commitmentAggregatedList for aggregated lists of commitments.
+    "id": "A String", # [Output Only] The unique identifier for the resource. This identifier is defined by the server.
+    "selfLink": "A String", # [Output Only] Server-defined URL for this resource.
+  }</pre>
+</div>
+
+<div class="method">
+    <code class="details" id="aggregatedList_next">aggregatedList_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="get">get(project, zone, commitment)</code>
+  <pre>Returns the specified commitment resource. Get a list of available commitments by making a list() request.
+
+Args:
+  project: string, Project ID for this request. (required)
+  zone: string, Name of the zone for this request. (required)
+  commitment: string, Name of the commitment to return. (required)
+
+Returns:
+  An object of the form:
+
+    { # A usage-commitment with a start / end time. Users create commitments for particular resources (e.g. memory). Actual usage is first deducted from available commitments made prior, perhaps at a reduced price (as laid out in the commitment).
+      "status": "A String", # [Output Only] Status of the commitment with regards to eventual expiration (each commitment has an end-date defined). One of the following values: NOT_YET_ACTIVE, ACTIVE, EXPIRED.
+      "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
+      "kind": "compute#commitment", # [Output Only] Type of the resource. Always compute#commitment for commitments.
+      "statusMessage": "A String", # [Output Only] An optional, human-readable explanation of the status.
+      "description": "A String", # An optional description of this resource. Provide this property when you create the resource.
+      "zone": "A String", # [Output Only] URL of the zone where this commitment may be used.
+      "startTimestamp": "A String", # [Output Only] Commitment start time in RFC3339 text format.
+      "endTimestamp": "A String", # [Output Only] Commitment end time in RFC3339 text format.
+      "plan": "A String", # The plan for this commitment, which determines duration and discount rate. The currently supported plans are TWELVE_MONTH (1 year), and THIRTY_SIX_MONTH (3 years).
+      "creationTimestamp": "A String", # [Output Only] Creation timestamp in RFC3339 text format.
+      "id": "A String", # [Output Only] The unique identifier for the resource. This identifier is defined by the server.
+      "resources": [ # List of commitment amounts for particular resources. Note that VCPU and MEMORY resource commitments must occur together.
+        { # Commitment for a particular resource (a Commitment is composed of one or more of these).
+          "amount": "A String", # The amount of the resource purchased (in a type-dependent unit, such as bytes).
+          "type": "A String", # Type of resource for which this commitment applies.
+        },
+      ],
+      "name": "A String", # Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression [a-z]([-a-z0-9]*[a-z0-9])? which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.
+    }</pre>
+</div>
+
+<div class="method">
+    <code class="details" id="getIamPolicy">getIamPolicy(project, zone, resource)</code>
+  <pre>Gets the access control policy for a resource. May be empty if no such policy or resource exists.
+
+Args:
+  project: string, Project ID for this request. (required)
+  zone: string, The name of the zone for this request. (required)
+  resource: string, Name of the resource for this request. (required)
+
+Returns:
+  An object of the form:
+
+    { # Defines an Identity and Access Management (IAM) policy. It is used to specify access control policies for Cloud Platform resources.
+      #
+      #
+      #
+      # A `Policy` consists of a list of `bindings`. A `Binding` binds a list of `members` to a `role`, where the members can be user accounts, Google groups, Google domains, and service accounts. A `role` is a named list of permissions defined by IAM.
+      #
+      # **Example**
+      #
+      # { "bindings": [ { "role": "roles/owner", "members": [ "user:mike@example.com", "group:admins@example.com", "domain:google.com", "serviceAccount:my-other-app@appspot.gserviceaccount.com", ] }, { "role": "roles/viewer", "members": ["user:sean@example.com"] } ] }
+      #
+      # For a description of IAM and its features, see the [IAM developer's guide](https://cloud.google.com/iam).
+    "auditConfigs": [ # Specifies audit logging configs for "data access". "data access": generally refers to data reads/writes and admin reads. "admin activity": generally refers to admin writes.
+        #
+        # Note: `AuditConfig` doesn't apply to "admin activity", which always enables audit logging.
+      { # Provides the configuration for non-admin_activity logging for a service. Controls exemptions and specific log sub-types.
+        "exemptedMembers": [ # Specifies the identities that are exempted from "data access" audit logging for the `service` specified above. Follows the same format of Binding.members.
+          "A String",
+        ],
+        "auditLogConfigs": [ # The configuration for each type of logging
+          { # Provides the configuration for a sub-type of logging.
+            "exemptedMembers": [ # Specifies the identities that are exempted from this type of logging Follows the same format of Binding.members.
+              "A String",
+            ],
+            "logType": "A String", # The log type that this config enables.
+          },
+        ],
+        "service": "A String", # Specifies a service that will be enabled for audit logging. For example, `resourcemanager`, `storage`, `compute`. `allServices` is a special value that covers all services.
+      },
+    ],
+    "rules": [ # If more than one rule is specified, the rules are applied in the following manner: - All matching LOG rules are always applied. - If any DENY/DENY_WITH_LOG rule matches, permission is denied. Logging will be applied if one or more matching rule requires logging. - Otherwise, if any ALLOW/ALLOW_WITH_LOG rule matches, permission is granted. Logging will be applied if one or more matching rule requires logging. - Otherwise, if no rule applies, permission is denied.
+      { # A rule to be applied in a Policy.
+        "logConfigs": [ # The config returned to callers of tech.iam.IAM.CheckPolicy for any entries that match the LOG action.
+          { # Specifies what kind of log the caller must write
+            "counter": { # Options for counters # Counter options.
+              "field": "A String", # The field value to attribute.
+              "metric": "A String", # The metric to update.
+            },
+          },
+        ],
+        "notIns": [ # If one or more 'not_in' clauses are specified, the rule matches if the PRINCIPAL/AUTHORITY_SELECTOR is in none of the entries.
+          "A String",
+        ],
+        "ins": [ # If one or more 'in' clauses are specified, the rule matches if the PRINCIPAL/AUTHORITY_SELECTOR is in at least one of these entries.
+          "A String",
+        ],
+        "action": "A String", # Required
+        "permissions": [ # A permission is a string of form '..' (e.g., 'storage.buckets.list'). A value of '*' matches all permissions, and a verb part of '*' (e.g., 'storage.buckets.*') matches all verbs.
+          "A String",
+        ],
+        "conditions": [ # Additional restrictions that must be met
+          { # A condition to be met.
+            "iam": "A String", # Trusted attributes supplied by the IAM system.
+            "svc": "A String", # Trusted attributes discharged by the service.
+            "value": "A String", # DEPRECATED. Use 'values' instead.
+            "sys": "A String", # Trusted attributes supplied by any service that owns resources and uses the IAM system for access control.
+            "values": [ # The objects of the condition. This is mutually exclusive with 'value'.
+              "A String",
+            ],
+            "op": "A String", # An operator to apply the subject with.
+          },
+        ],
+        "description": "A String", # Human-readable description of the rule.
+      },
+    ],
+    "version": 42, # Version of the `Policy`. The default version is 0.
+    "etag": "A String", # `etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy.
+        #
+        # If no `etag` is provided in the call to `setIamPolicy`, then the existing policy is overwritten blindly.
+    "bindings": [ # Associates a list of `members` to a `role`. Multiple `bindings` must not be specified for the same `role`. `bindings` with no members will result in an error.
+      { # Associates `members` with a `role`.
+        "role": "A String", # Role that is assigned to `members`. For example, `roles/viewer`, `roles/editor`, or `roles/owner`.
+        "members": [ # Specifies the identities requesting access for a Cloud Platform resource. `members` can have the following values:
+            #
+            # * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account.
+            #
+            # * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account.
+            #
+            # * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@gmail.com` or `joe@example.com`.
+            #
+            #
+            #
+            # * `serviceAccount:{emailid}`: An email address that represents a service account. For example, `my-other-app@appspot.gserviceaccount.com`.
+            #
+            # * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`.
+            #
+            # * `domain:{domain}`: A Google Apps domain name that represents all the users of that domain. For example, `google.com` or `example.com`.
+          "A String",
+        ],
+      },
+    ],
+    "iamOwned": True or False,
+  }</pre>
+</div>
+
+<div class="method">
+    <code class="details" id="insert">insert(project, zone, body)</code>
+  <pre>Creates an commitment in the specified project using the data included in the request.
+
+Args:
+  project: string, Project ID for this request. (required)
+  zone: string, Name of the zone for this request. (required)
+  body: object, The request body. (required)
+    The object takes the form of:
+
+{ # A usage-commitment with a start / end time. Users create commitments for particular resources (e.g. memory). Actual usage is first deducted from available commitments made prior, perhaps at a reduced price (as laid out in the commitment).
+    "status": "A String", # [Output Only] Status of the commitment with regards to eventual expiration (each commitment has an end-date defined). One of the following values: NOT_YET_ACTIVE, ACTIVE, EXPIRED.
+    "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
+    "kind": "compute#commitment", # [Output Only] Type of the resource. Always compute#commitment for commitments.
+    "statusMessage": "A String", # [Output Only] An optional, human-readable explanation of the status.
+    "description": "A String", # An optional description of this resource. Provide this property when you create the resource.
+    "zone": "A String", # [Output Only] URL of the zone where this commitment may be used.
+    "startTimestamp": "A String", # [Output Only] Commitment start time in RFC3339 text format.
+    "endTimestamp": "A String", # [Output Only] Commitment end time in RFC3339 text format.
+    "plan": "A String", # The plan for this commitment, which determines duration and discount rate. The currently supported plans are TWELVE_MONTH (1 year), and THIRTY_SIX_MONTH (3 years).
+    "creationTimestamp": "A String", # [Output Only] Creation timestamp in RFC3339 text format.
+    "id": "A String", # [Output Only] The unique identifier for the resource. This identifier is defined by the server.
+    "resources": [ # List of commitment amounts for particular resources. Note that VCPU and MEMORY resource commitments must occur together.
+      { # Commitment for a particular resource (a Commitment is composed of one or more of these).
+        "amount": "A String", # The amount of the resource purchased (in a type-dependent unit, such as bytes).
+        "type": "A String", # Type of resource for which this commitment applies.
+      },
+    ],
+    "name": "A String", # Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression [a-z]([-a-z0-9]*[a-z0-9])? which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.
+  }
+
+
+Returns:
+  An object of the form:
+
+    { # An Operation resource, used to manage asynchronous API requests.
+    "targetId": "A String", # [Output Only] The unique target ID, which identifies a specific incarnation of the target resource.
+    "clientOperationId": "A String", # [Output Only] Reserved for future use.
+    "creationTimestamp": "A String", # [Output Only] Creation timestamp in RFC3339 text format.
+    "id": "A String", # [Output Only] The unique identifier for the resource. This identifier is defined by the server.
+    "zone": "A String", # [Output Only] The URL of the zone where the operation resides. Only available when performing per-zone operations.
+    "insertTime": "A String", # [Output Only] The time that this operation was requested. This value is in RFC3339 text format.
+    "operationType": "A String", # [Output Only] The type of operation, such as insert, update, or delete, and so on.
+    "httpErrorMessage": "A String", # [Output Only] If the operation fails, this field contains the HTTP error message that was returned, such as NOT FOUND.
+    "progress": 42, # [Output Only] An optional progress indicator that ranges from 0 to 100. There is no requirement that this be linear or support any granularity of operations. This should not be used to guess when the operation will be complete. This number should monotonically increase as the operation progresses.
+    "httpErrorStatusCode": 42, # [Output Only] If the operation fails, this field contains the HTTP error status code that was returned. For example, a 404 means the resource was not found.
+    "statusMessage": "A String", # [Output Only] An optional textual description of the current status of the operation.
+    "status": "A String", # [Output Only] The status of the operation, which can be one of the following: PENDING, RUNNING, or DONE.
+    "description": "A String", # [Output Only] A textual description of the operation, which is set when the operation is created.
+    "warnings": [ # [Output Only] If warning messages are generated during processing of the operation, this field will be populated.
+      {
+        "message": "A String", # [Output Only] A human-readable description of the warning code.
+        "code": "A String", # [Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.
+        "data": [ # [Output Only] Metadata about this warning in key: value format. For example:
+            # "data": [ { "key": "scope", "value": "zones/us-east1-d" }
+          {
+            "value": "A String", # [Output Only] A warning data value corresponding to the key.
+            "key": "A String", # [Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding).
+          },
+        ],
+      },
+    ],
+    "user": "A String", # [Output Only] User who requested the operation, for example: user@example.com.
+    "startTime": "A String", # [Output Only] The time that this operation was started by the server. This value is in RFC3339 text format.
+    "kind": "compute#operation", # [Output Only] Type of the resource. Always compute#operation for Operation resources.
+    "name": "A String", # [Output Only] Name of the resource.
+    "region": "A String", # [Output Only] The URL of the region where the operation resides. Only available when performing regional operations.
+    "error": { # [Output Only] If errors are generated during processing of the operation, this field will be populated.
+      "errors": [ # [Output Only] The array of errors encountered while processing this operation.
+        {
+          "message": "A String", # [Output Only] An optional, human-readable error message.
+          "code": "A String", # [Output Only] The error type identifier for this error.
+          "location": "A String", # [Output Only] Indicates the field in the request that caused the error. This property is optional.
+        },
+      ],
+    },
+    "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
+    "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
+  }</pre>
+</div>
+
+<div class="method">
+    <code class="details" id="list">list(project, zone, orderBy=None, maxResults=None, pageToken=None, filter=None)</code>
+  <pre>Retrieves a list of commitments contained within the specified zone.
+
+Args:
+  project: string, Project ID for this request. (required)
+  zone: string, Name of the zone for this request. (required)
+  orderBy: string, Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.
+
+You can also sort results in descending order based on the creation timestamp using orderBy="creationTimestamp desc". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.
+
+Currently, only sorting by name or creationTimestamp desc is supported.
+  maxResults: integer, The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests.
+  pageToken: string, Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.
+  filter: string, Sets a filter expression for filtering listed resources, in the form filter={expression}. Your {expression} must be in the format: field_name comparison_string literal_string.
+
+The field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.
+
+For example, to filter for instances that do not have a name of example-instance, you would use filter=name ne example-instance.
+
+You can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.
+
+To filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.
+
+Returns:
+  An object of the form:
+
+    { # Contains a list of Commitment resources.
+    "nextPageToken": "A String", # [Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results.
+    "items": [ # A list of Commitment resources.
+      { # A usage-commitment with a start / end time. Users create commitments for particular resources (e.g. memory). Actual usage is first deducted from available commitments made prior, perhaps at a reduced price (as laid out in the commitment).
+          "status": "A String", # [Output Only] Status of the commitment with regards to eventual expiration (each commitment has an end-date defined). One of the following values: NOT_YET_ACTIVE, ACTIVE, EXPIRED.
+          "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
+          "kind": "compute#commitment", # [Output Only] Type of the resource. Always compute#commitment for commitments.
+          "statusMessage": "A String", # [Output Only] An optional, human-readable explanation of the status.
+          "description": "A String", # An optional description of this resource. Provide this property when you create the resource.
+          "zone": "A String", # [Output Only] URL of the zone where this commitment may be used.
+          "startTimestamp": "A String", # [Output Only] Commitment start time in RFC3339 text format.
+          "endTimestamp": "A String", # [Output Only] Commitment end time in RFC3339 text format.
+          "plan": "A String", # The plan for this commitment, which determines duration and discount rate. The currently supported plans are TWELVE_MONTH (1 year), and THIRTY_SIX_MONTH (3 years).
+          "creationTimestamp": "A String", # [Output Only] Creation timestamp in RFC3339 text format.
+          "id": "A String", # [Output Only] The unique identifier for the resource. This identifier is defined by the server.
+          "resources": [ # List of commitment amounts for particular resources. Note that VCPU and MEMORY resource commitments must occur together.
+            { # Commitment for a particular resource (a Commitment is composed of one or more of these).
+              "amount": "A String", # The amount of the resource purchased (in a type-dependent unit, such as bytes).
+              "type": "A String", # Type of resource for which this commitment applies.
+            },
+          ],
+          "name": "A String", # Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression [a-z]([-a-z0-9]*[a-z0-9])? which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.
+        },
+    ],
+    "kind": "compute#commitmentList", # [Output Only] Type of resource. Always compute#commitmentList for lists of commitments.
+    "id": "A String", # [Output Only] The unique identifier for the resource. This identifier is defined by the server.
+    "selfLink": "A String", # [Output Only] Server-defined URL for this resource.
+  }</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="setIamPolicy">setIamPolicy(project, zone, resource, body)</code>
+  <pre>Sets the access control policy on the specified resource. Replaces any existing policy.
+
+Args:
+  project: string, Project ID for this request. (required)
+  zone: string, The name of the zone for this request. (required)
+  resource: string, Name of the resource for this request. (required)
+  body: object, The request body. (required)
+    The object takes the form of:
+
+{ # Defines an Identity and Access Management (IAM) policy. It is used to specify access control policies for Cloud Platform resources.
+    # 
+    # 
+    # 
+    # A `Policy` consists of a list of `bindings`. A `Binding` binds a list of `members` to a `role`, where the members can be user accounts, Google groups, Google domains, and service accounts. A `role` is a named list of permissions defined by IAM.
+    # 
+    # **Example**
+    # 
+    # { "bindings": [ { "role": "roles/owner", "members": [ "user:mike@example.com", "group:admins@example.com", "domain:google.com", "serviceAccount:my-other-app@appspot.gserviceaccount.com", ] }, { "role": "roles/viewer", "members": ["user:sean@example.com"] } ] }
+    # 
+    # For a description of IAM and its features, see the [IAM developer's guide](https://cloud.google.com/iam).
+  "auditConfigs": [ # Specifies audit logging configs for "data access". "data access": generally refers to data reads/writes and admin reads. "admin activity": generally refers to admin writes.
+      # 
+      # Note: `AuditConfig` doesn't apply to "admin activity", which always enables audit logging.
+    { # Provides the configuration for non-admin_activity logging for a service. Controls exemptions and specific log sub-types.
+      "exemptedMembers": [ # Specifies the identities that are exempted from "data access" audit logging for the `service` specified above. Follows the same format of Binding.members.
+        "A String",
+      ],
+      "auditLogConfigs": [ # The configuration for each type of logging
+        { # Provides the configuration for a sub-type of logging.
+          "exemptedMembers": [ # Specifies the identities that are exempted from this type of logging Follows the same format of Binding.members.
+            "A String",
+          ],
+          "logType": "A String", # The log type that this config enables.
+        },
+      ],
+      "service": "A String", # Specifies a service that will be enabled for audit logging. For example, `resourcemanager`, `storage`, `compute`. `allServices` is a special value that covers all services.
+    },
+  ],
+  "rules": [ # If more than one rule is specified, the rules are applied in the following manner: - All matching LOG rules are always applied. - If any DENY/DENY_WITH_LOG rule matches, permission is denied. Logging will be applied if one or more matching rule requires logging. - Otherwise, if any ALLOW/ALLOW_WITH_LOG rule matches, permission is granted. Logging will be applied if one or more matching rule requires logging. - Otherwise, if no rule applies, permission is denied.
+    { # A rule to be applied in a Policy.
+      "logConfigs": [ # The config returned to callers of tech.iam.IAM.CheckPolicy for any entries that match the LOG action.
+        { # Specifies what kind of log the caller must write
+          "counter": { # Options for counters # Counter options.
+            "field": "A String", # The field value to attribute.
+            "metric": "A String", # The metric to update.
+          },
+        },
+      ],
+      "notIns": [ # If one or more 'not_in' clauses are specified, the rule matches if the PRINCIPAL/AUTHORITY_SELECTOR is in none of the entries.
+        "A String",
+      ],
+      "ins": [ # If one or more 'in' clauses are specified, the rule matches if the PRINCIPAL/AUTHORITY_SELECTOR is in at least one of these entries.
+        "A String",
+      ],
+      "action": "A String", # Required
+      "permissions": [ # A permission is a string of form '..' (e.g., 'storage.buckets.list'). A value of '*' matches all permissions, and a verb part of '*' (e.g., 'storage.buckets.*') matches all verbs.
+        "A String",
+      ],
+      "conditions": [ # Additional restrictions that must be met
+        { # A condition to be met.
+          "iam": "A String", # Trusted attributes supplied by the IAM system.
+          "svc": "A String", # Trusted attributes discharged by the service.
+          "value": "A String", # DEPRECATED. Use 'values' instead.
+          "sys": "A String", # Trusted attributes supplied by any service that owns resources and uses the IAM system for access control.
+          "values": [ # The objects of the condition. This is mutually exclusive with 'value'.
+            "A String",
+          ],
+          "op": "A String", # An operator to apply the subject with.
+        },
+      ],
+      "description": "A String", # Human-readable description of the rule.
+    },
+  ],
+  "version": 42, # Version of the `Policy`. The default version is 0.
+  "etag": "A String", # `etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy.
+      # 
+      # If no `etag` is provided in the call to `setIamPolicy`, then the existing policy is overwritten blindly.
+  "bindings": [ # Associates a list of `members` to a `role`. Multiple `bindings` must not be specified for the same `role`. `bindings` with no members will result in an error.
+    { # Associates `members` with a `role`.
+      "role": "A String", # Role that is assigned to `members`. For example, `roles/viewer`, `roles/editor`, or `roles/owner`.
+      "members": [ # Specifies the identities requesting access for a Cloud Platform resource. `members` can have the following values:
+          #
+          # * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account.
+          #
+          # * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account.
+          #
+          # * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@gmail.com` or `joe@example.com`.
+          #
+          #
+          #
+          # * `serviceAccount:{emailid}`: An email address that represents a service account. For example, `my-other-app@appspot.gserviceaccount.com`.
+          #
+          # * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`.
+          #
+          # * `domain:{domain}`: A Google Apps domain name that represents all the users of that domain. For example, `google.com` or `example.com`.
+        "A String",
+      ],
+    },
+  ],
+  "iamOwned": True or False,
+}
+
+
+Returns:
+  An object of the form:
+
+    { # Defines an Identity and Access Management (IAM) policy. It is used to specify access control policies for Cloud Platform resources.
+      #
+      #
+      #
+      # A `Policy` consists of a list of `bindings`. A `Binding` binds a list of `members` to a `role`, where the members can be user accounts, Google groups, Google domains, and service accounts. A `role` is a named list of permissions defined by IAM.
+      #
+      # **Example**
+      #
+      # { "bindings": [ { "role": "roles/owner", "members": [ "user:mike@example.com", "group:admins@example.com", "domain:google.com", "serviceAccount:my-other-app@appspot.gserviceaccount.com", ] }, { "role": "roles/viewer", "members": ["user:sean@example.com"] } ] }
+      #
+      # For a description of IAM and its features, see the [IAM developer's guide](https://cloud.google.com/iam).
+    "auditConfigs": [ # Specifies audit logging configs for "data access". "data access": generally refers to data reads/writes and admin reads. "admin activity": generally refers to admin writes.
+        #
+        # Note: `AuditConfig` doesn't apply to "admin activity", which always enables audit logging.
+      { # Provides the configuration for non-admin_activity logging for a service. Controls exemptions and specific log sub-types.
+        "exemptedMembers": [ # Specifies the identities that are exempted from "data access" audit logging for the `service` specified above. Follows the same format of Binding.members.
+          "A String",
+        ],
+        "auditLogConfigs": [ # The configuration for each type of logging
+          { # Provides the configuration for a sub-type of logging.
+            "exemptedMembers": [ # Specifies the identities that are exempted from this type of logging Follows the same format of Binding.members.
+              "A String",
+            ],
+            "logType": "A String", # The log type that this config enables.
+          },
+        ],
+        "service": "A String", # Specifies a service that will be enabled for audit logging. For example, `resourcemanager`, `storage`, `compute`. `allServices` is a special value that covers all services.
+      },
+    ],
+    "rules": [ # If more than one rule is specified, the rules are applied in the following manner: - All matching LOG rules are always applied. - If any DENY/DENY_WITH_LOG rule matches, permission is denied. Logging will be applied if one or more matching rule requires logging. - Otherwise, if any ALLOW/ALLOW_WITH_LOG rule matches, permission is granted. Logging will be applied if one or more matching rule requires logging. - Otherwise, if no rule applies, permission is denied.
+      { # A rule to be applied in a Policy.
+        "logConfigs": [ # The config returned to callers of tech.iam.IAM.CheckPolicy for any entries that match the LOG action.
+          { # Specifies what kind of log the caller must write
+            "counter": { # Options for counters # Counter options.
+              "field": "A String", # The field value to attribute.
+              "metric": "A String", # The metric to update.
+            },
+          },
+        ],
+        "notIns": [ # If one or more 'not_in' clauses are specified, the rule matches if the PRINCIPAL/AUTHORITY_SELECTOR is in none of the entries.
+          "A String",
+        ],
+        "ins": [ # If one or more 'in' clauses are specified, the rule matches if the PRINCIPAL/AUTHORITY_SELECTOR is in at least one of these entries.
+          "A String",
+        ],
+        "action": "A String", # Required
+        "permissions": [ # A permission is a string of form '..' (e.g., 'storage.buckets.list'). A value of '*' matches all permissions, and a verb part of '*' (e.g., 'storage.buckets.*') matches all verbs.
+          "A String",
+        ],
+        "conditions": [ # Additional restrictions that must be met
+          { # A condition to be met.
+            "iam": "A String", # Trusted attributes supplied by the IAM system.
+            "svc": "A String", # Trusted attributes discharged by the service.
+            "value": "A String", # DEPRECATED. Use 'values' instead.
+            "sys": "A String", # Trusted attributes supplied by any service that owns resources and uses the IAM system for access control.
+            "values": [ # The objects of the condition. This is mutually exclusive with 'value'.
+              "A String",
+            ],
+            "op": "A String", # An operator to apply the subject with.
+          },
+        ],
+        "description": "A String", # Human-readable description of the rule.
+      },
+    ],
+    "version": 42, # Version of the `Policy`. The default version is 0.
+    "etag": "A String", # `etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy.
+        #
+        # If no `etag` is provided in the call to `setIamPolicy`, then the existing policy is overwritten blindly.
+    "bindings": [ # Associates a list of `members` to a `role`. Multiple `bindings` must not be specified for the same `role`. `bindings` with no members will result in an error.
+      { # Associates `members` with a `role`.
+        "role": "A String", # Role that is assigned to `members`. For example, `roles/viewer`, `roles/editor`, or `roles/owner`.
+        "members": [ # Specifies the identities requesting access for a Cloud Platform resource. `members` can have the following values:
+            #
+            # * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account.
+            #
+            # * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account.
+            #
+            # * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@gmail.com` or `joe@example.com`.
+            #
+            #
+            #
+            # * `serviceAccount:{emailid}`: An email address that represents a service account. For example, `my-other-app@appspot.gserviceaccount.com`.
+            #
+            # * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`.
+            #
+            # * `domain:{domain}`: A Google Apps domain name that represents all the users of that domain. For example, `google.com` or `example.com`.
+          "A String",
+        ],
+      },
+    ],
+    "iamOwned": True or False,
+  }</pre>
+</div>
+
+<div class="method">
+    <code class="details" id="testIamPermissions">testIamPermissions(project, zone, resource, body)</code>
+  <pre>Returns permissions that a caller has on the specified resource.
+
+Args:
+  project: string, Project ID for this request. (required)
+  zone: string, The name of the zone for this request. (required)
+  resource: string, Name of the resource for this request. (required)
+  body: object, The request body. (required)
+    The object takes the form of:
+
+{
+    "permissions": [ # The set of permissions to check for the 'resource'. Permissions with wildcards (such as '*' or 'storage.*') are not allowed.
+      "A String",
+    ],
+  }
+
+
+Returns:
+  An object of the form:
+
+    {
+    "permissions": [ # A subset of `TestPermissionsRequest.permissions` that the caller is allowed.
+      "A String",
+    ],
+  }</pre>
+</div>
+
+</body></html>
\ No newline at end of file
diff --git a/docs/dyn/compute_alpha.diskTypes.html b/docs/dyn/compute_alpha.diskTypes.html
index 4d1bd5a..72b81f1 100644
--- a/docs/dyn/compute_alpha.diskTypes.html
+++ b/docs/dyn/compute_alpha.diskTypes.html
@@ -138,10 +138,10 @@
             "zone": "A String", # [Output Only] URL of the zone where the disk type resides.
             "validDiskSize": "A String", # [Output Only] An optional textual description of the valid disk size, such as "10GB-10TB".
             "deprecated": { # Deprecation status for a public resource. # [Output Only] The deprecation status associated with this disk type.
-              "deleted": "A String", # An optional RFC3339 timestamp on or after which the deprecation state of this resource will be changed to DELETED.
-              "deprecated": "A String", # An optional RFC3339 timestamp on or after which the deprecation state of this resource will be changed to DEPRECATED.
+              "deleted": "A String", # An optional RFC3339 timestamp on or after which the state of this resource is intended to change to DELETED. This is only informational and the status will not change unless the client explicitly changes it.
+              "deprecated": "A String", # An optional RFC3339 timestamp on or after which the state of this resource is intended to change to DEPRECATED. This is only informational and the status will not change unless the client explicitly changes it.
               "state": "A String", # The deprecation state of this resource. This can be DEPRECATED, OBSOLETE, or DELETED. Operations which create a new resource using a DEPRECATED resource will return successfully, but with a warning indicating the deprecated resource and recommending its replacement. Operations which use OBSOLETE or DELETED resources will be rejected and result in an error.
-              "obsolete": "A String", # An optional RFC3339 timestamp on or after which the deprecation state of this resource will be changed to OBSOLETE.
+              "obsolete": "A String", # An optional RFC3339 timestamp on or after which the state of this resource is intended to change to OBSOLETE. This is only informational and the status will not change unless the client explicitly changes it.
               "replacement": "A String", # The URL of the suggested replacement for a deprecated resource. The suggested replacement resource must be the same kind of resource as the deprecated resource.
             },
             "defaultDiskSizeGb": "A String", # [Output Only] Server-defined default disk size in GB.
@@ -191,10 +191,10 @@
     "zone": "A String", # [Output Only] URL of the zone where the disk type resides.
     "validDiskSize": "A String", # [Output Only] An optional textual description of the valid disk size, such as "10GB-10TB".
     "deprecated": { # Deprecation status for a public resource. # [Output Only] The deprecation status associated with this disk type.
-      "deleted": "A String", # An optional RFC3339 timestamp on or after which the deprecation state of this resource will be changed to DELETED.
-      "deprecated": "A String", # An optional RFC3339 timestamp on or after which the deprecation state of this resource will be changed to DEPRECATED.
+      "deleted": "A String", # An optional RFC3339 timestamp on or after which the state of this resource is intended to change to DELETED. This is only informational and the status will not change unless the client explicitly changes it.
+      "deprecated": "A String", # An optional RFC3339 timestamp on or after which the state of this resource is intended to change to DEPRECATED. This is only informational and the status will not change unless the client explicitly changes it.
       "state": "A String", # The deprecation state of this resource. This can be DEPRECATED, OBSOLETE, or DELETED. Operations which create a new resource using a DEPRECATED resource will return successfully, but with a warning indicating the deprecated resource and recommending its replacement. Operations which use OBSOLETE or DELETED resources will be rejected and result in an error.
-      "obsolete": "A String", # An optional RFC3339 timestamp on or after which the deprecation state of this resource will be changed to OBSOLETE.
+      "obsolete": "A String", # An optional RFC3339 timestamp on or after which the state of this resource is intended to change to OBSOLETE. This is only informational and the status will not change unless the client explicitly changes it.
       "replacement": "A String", # The URL of the suggested replacement for a deprecated resource. The suggested replacement resource must be the same kind of resource as the deprecated resource.
     },
     "defaultDiskSizeGb": "A String", # [Output Only] Server-defined default disk size in GB.
@@ -241,10 +241,10 @@
         "zone": "A String", # [Output Only] URL of the zone where the disk type resides.
         "validDiskSize": "A String", # [Output Only] An optional textual description of the valid disk size, such as "10GB-10TB".
         "deprecated": { # Deprecation status for a public resource. # [Output Only] The deprecation status associated with this disk type.
-          "deleted": "A String", # An optional RFC3339 timestamp on or after which the deprecation state of this resource will be changed to DELETED.
-          "deprecated": "A String", # An optional RFC3339 timestamp on or after which the deprecation state of this resource will be changed to DEPRECATED.
+          "deleted": "A String", # An optional RFC3339 timestamp on or after which the state of this resource is intended to change to DELETED. This is only informational and the status will not change unless the client explicitly changes it.
+          "deprecated": "A String", # An optional RFC3339 timestamp on or after which the state of this resource is intended to change to DEPRECATED. This is only informational and the status will not change unless the client explicitly changes it.
           "state": "A String", # The deprecation state of this resource. This can be DEPRECATED, OBSOLETE, or DELETED. Operations which create a new resource using a DEPRECATED resource will return successfully, but with a warning indicating the deprecated resource and recommending its replacement. Operations which use OBSOLETE or DELETED resources will be rejected and result in an error.
-          "obsolete": "A String", # An optional RFC3339 timestamp on or after which the deprecation state of this resource will be changed to OBSOLETE.
+          "obsolete": "A String", # An optional RFC3339 timestamp on or after which the state of this resource is intended to change to OBSOLETE. This is only informational and the status will not change unless the client explicitly changes it.
           "replacement": "A String", # The URL of the suggested replacement for a deprecated resource. The suggested replacement resource must be the same kind of resource as the deprecated resource.
         },
         "defaultDiskSizeGb": "A String", # [Output Only] Server-defined default disk size in GB.
diff --git a/docs/dyn/compute_alpha.disks.html b/docs/dyn/compute_alpha.disks.html
index f87e107..19c8318 100644
--- a/docs/dyn/compute_alpha.disks.html
+++ b/docs/dyn/compute_alpha.disks.html
@@ -375,7 +375,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
@@ -434,7 +434,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
@@ -697,7 +697,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
@@ -907,7 +907,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
@@ -976,7 +976,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
diff --git a/docs/dyn/compute_alpha.firewalls.html b/docs/dyn/compute_alpha.firewalls.html
index 0e8d304..b6d73f5 100644
--- a/docs/dyn/compute_alpha.firewalls.html
+++ b/docs/dyn/compute_alpha.firewalls.html
@@ -153,7 +153,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
@@ -169,14 +169,29 @@
   An object of the form:
 
     { # Represents a Firewall resource.
-      "kind": "compute#firewall", # [Output Ony] Type of the resource. Always compute#firewall for firewall rules.
+      "direction": "A String", # Direction of traffic to which this firewall applies; default is INGRESS. Note: For INGRESS traffic, it is NOT supported to specify destinationRanges; For EGRESS traffic, it is NOT supported to specify sourceRanges OR sourceTags.
       "description": "A String", # An optional description of this resource. Provide this property when you create the resource.
+      "destinationRanges": [ # If destination ranges are specified, the firewall will apply only to traffic that has destination IP address in these ranges. These ranges must be expressed in CIDR format.
+        "A String",
+      ],
       "sourceTags": [ # If source tags are specified, the firewall will apply only to traffic with source IP that belongs to a tag listed in source tags. Source tags cannot be used to control traffic to an instance's external IP address. Because tags are associated with an instance, not an IP address. One or both of sourceRanges and sourceTags may be set. If both properties are set, the firewall will apply to traffic that has source IP address within sourceRanges OR the source IP that belongs to a tag listed in the sourceTags property. The connection does not need to match both properties for the firewall to apply.
         "A String",
       ],
+      "allowed": [ # The list of ALLOW rules specified by this firewall. Each rule specifies a protocol and port-range tuple that describes a permitted connection.
+        {
+          "IPProtocol": "A String", # The IP protocol to which this rule applies. The protocol type is required when creating a firewall rule. This value can either be one of the following well known protocol strings (tcp, udp, icmp, esp, ah, sctp), or the IP protocol number.
+          "ports": [ # An optional list of ports to which this rule applies. This field is only applicable for UDP or TCP protocol. Each entry must be either an integer or a range. If not specified, this rule applies to connections through any port.
+              #
+              # Example inputs include: ["22"], ["80","443"], and ["12345-12349"].
+            "A String",
+          ],
+        },
+      ],
+      "kind": "compute#firewall", # [Output Ony] Type of the resource. Always compute#firewall for firewall rules.
       "sourceRanges": [ # If source ranges are specified, the firewall will apply only to traffic that has source IP address in these ranges. These ranges must be expressed in CIDR format. One or both of sourceRanges and sourceTags may be set. If both properties are set, the firewall will apply to traffic that has source IP address within sourceRanges OR the source IP that belongs to a tag listed in the sourceTags property. The connection does not need to match both properties for the firewall to apply.
         "A String",
       ],
+      "priority": 42, # Priority for this rule. This is an integer between 0 and 65535, both inclusive. When not specified, the value assumed is 1000. Relative priorities determine precedence of conflicting rules. Lower value of priority implies higher precedence (eg, a rule with priority 0 has higher precedence than a rule with priority 1). DENY rules take precedence over ALLOW rules having equal priority.
       "network": "A String", # URL of the network resource for this firewall rule. If not specified when creating a firewall rule, the default network is used:
           # global/networks/default
           # If you choose to specify this property, you can specify the network as a full or partial URL. For example, the following are all valid URLs:
@@ -186,7 +201,7 @@
       "targetTags": [ # A list of instance tags indicating sets of instances located in the network that may make network connections as specified in allowed[]. If no targetTags are specified, the firewall rule applies to all instances on the specified network.
         "A String",
       ],
-      "allowed": [ # The list of ALLOW rules specified by this firewall. Each rule specifies a protocol and port-range tuple that describes a permitted connection.
+      "denied": [ # The list of DENY rules specified by this firewall. Each rule specifies a protocol and port-range tuple that describes a permitted connection.
         {
           "IPProtocol": "A String", # The IP protocol to which this rule applies. The protocol type is required when creating a firewall rule. This value can either be one of the following well known protocol strings (tcp, udp, icmp, esp, ah, sctp), or the IP protocol number.
           "ports": [ # An optional list of ports to which this rule applies. This field is only applicable for UDP or TCP protocol. Each entry must be either an integer or a range. If not specified, this rule applies to connections through any port.
@@ -213,14 +228,29 @@
     The object takes the form of:
 
 { # Represents a Firewall resource.
-    "kind": "compute#firewall", # [Output Ony] Type of the resource. Always compute#firewall for firewall rules.
+    "direction": "A String", # Direction of traffic to which this firewall applies; default is INGRESS. Note: For INGRESS traffic, it is NOT supported to specify destinationRanges; For EGRESS traffic, it is NOT supported to specify sourceRanges OR sourceTags.
     "description": "A String", # An optional description of this resource. Provide this property when you create the resource.
+    "destinationRanges": [ # If destination ranges are specified, the firewall will apply only to traffic that has destination IP address in these ranges. These ranges must be expressed in CIDR format.
+      "A String",
+    ],
     "sourceTags": [ # If source tags are specified, the firewall will apply only to traffic with source IP that belongs to a tag listed in source tags. Source tags cannot be used to control traffic to an instance's external IP address. Because tags are associated with an instance, not an IP address. One or both of sourceRanges and sourceTags may be set. If both properties are set, the firewall will apply to traffic that has source IP address within sourceRanges OR the source IP that belongs to a tag listed in the sourceTags property. The connection does not need to match both properties for the firewall to apply.
       "A String",
     ],
+    "allowed": [ # The list of ALLOW rules specified by this firewall. Each rule specifies a protocol and port-range tuple that describes a permitted connection.
+      {
+        "IPProtocol": "A String", # The IP protocol to which this rule applies. The protocol type is required when creating a firewall rule. This value can either be one of the following well known protocol strings (tcp, udp, icmp, esp, ah, sctp), or the IP protocol number.
+        "ports": [ # An optional list of ports to which this rule applies. This field is only applicable for UDP or TCP protocol. Each entry must be either an integer or a range. If not specified, this rule applies to connections through any port.
+            # 
+            # Example inputs include: ["22"], ["80","443"], and ["12345-12349"].
+          "A String",
+        ],
+      },
+    ],
+    "kind": "compute#firewall", # [Output Ony] Type of the resource. Always compute#firewall for firewall rules.
     "sourceRanges": [ # If source ranges are specified, the firewall will apply only to traffic that has source IP address in these ranges. These ranges must be expressed in CIDR format. One or both of sourceRanges and sourceTags may be set. If both properties are set, the firewall will apply to traffic that has source IP address within sourceRanges OR the source IP that belongs to a tag listed in the sourceTags property. The connection does not need to match both properties for the firewall to apply.
       "A String",
     ],
+    "priority": 42, # Priority for this rule. This is an integer between 0 and 65535, both inclusive. When not specified, the value assumed is 1000. Relative priorities determine precedence of conflicting rules. Lower value of priority implies higher precedence (eg, a rule with priority 0 has higher precedence than a rule with priority 1). DENY rules take precedence over ALLOW rules having equal priority.
     "network": "A String", # URL of the network resource for this firewall rule. If not specified when creating a firewall rule, the default network is used:
         # global/networks/default
         # If you choose to specify this property, you can specify the network as a full or partial URL. For example, the following are all valid URLs:
@@ -230,7 +260,7 @@
     "targetTags": [ # A list of instance tags indicating sets of instances located in the network that may make network connections as specified in allowed[]. If no targetTags are specified, the firewall rule applies to all instances on the specified network.
       "A String",
     ],
-    "allowed": [ # The list of ALLOW rules specified by this firewall. Each rule specifies a protocol and port-range tuple that describes a permitted connection.
+    "denied": [ # The list of DENY rules specified by this firewall. Each rule specifies a protocol and port-range tuple that describes a permitted connection.
       {
         "IPProtocol": "A String", # The IP protocol to which this rule applies. The protocol type is required when creating a firewall rule. This value can either be one of the following well known protocol strings (tcp, udp, icmp, esp, ah, sctp), or the IP protocol number.
         "ports": [ # An optional list of ports to which this rule applies. This field is only applicable for UDP or TCP protocol. Each entry must be either an integer or a range. If not specified, this rule applies to connections through any port.
@@ -293,7 +323,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
@@ -327,14 +357,29 @@
     "nextPageToken": "A String", # [Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results.
     "items": [ # [Output Only] A list of Firewall resources.
       { # Represents a Firewall resource.
-          "kind": "compute#firewall", # [Output Ony] Type of the resource. Always compute#firewall for firewall rules.
+          "direction": "A String", # Direction of traffic to which this firewall applies; default is INGRESS. Note: For INGRESS traffic, it is NOT supported to specify destinationRanges; For EGRESS traffic, it is NOT supported to specify sourceRanges OR sourceTags.
           "description": "A String", # An optional description of this resource. Provide this property when you create the resource.
+          "destinationRanges": [ # If destination ranges are specified, the firewall will apply only to traffic that has destination IP address in these ranges. These ranges must be expressed in CIDR format.
+            "A String",
+          ],
           "sourceTags": [ # If source tags are specified, the firewall will apply only to traffic with source IP that belongs to a tag listed in source tags. Source tags cannot be used to control traffic to an instance's external IP address. Because tags are associated with an instance, not an IP address. One or both of sourceRanges and sourceTags may be set. If both properties are set, the firewall will apply to traffic that has source IP address within sourceRanges OR the source IP that belongs to a tag listed in the sourceTags property. The connection does not need to match both properties for the firewall to apply.
             "A String",
           ],
+          "allowed": [ # The list of ALLOW rules specified by this firewall. Each rule specifies a protocol and port-range tuple that describes a permitted connection.
+            {
+              "IPProtocol": "A String", # The IP protocol to which this rule applies. The protocol type is required when creating a firewall rule. This value can either be one of the following well known protocol strings (tcp, udp, icmp, esp, ah, sctp), or the IP protocol number.
+              "ports": [ # An optional list of ports to which this rule applies. This field is only applicable for UDP or TCP protocol. Each entry must be either an integer or a range. If not specified, this rule applies to connections through any port.
+                  #
+                  # Example inputs include: ["22"], ["80","443"], and ["12345-12349"].
+                "A String",
+              ],
+            },
+          ],
+          "kind": "compute#firewall", # [Output Ony] Type of the resource. Always compute#firewall for firewall rules.
           "sourceRanges": [ # If source ranges are specified, the firewall will apply only to traffic that has source IP address in these ranges. These ranges must be expressed in CIDR format. One or both of sourceRanges and sourceTags may be set. If both properties are set, the firewall will apply to traffic that has source IP address within sourceRanges OR the source IP that belongs to a tag listed in the sourceTags property. The connection does not need to match both properties for the firewall to apply.
             "A String",
           ],
+          "priority": 42, # Priority for this rule. This is an integer between 0 and 65535, both inclusive. When not specified, the value assumed is 1000. Relative priorities determine precedence of conflicting rules. Lower value of priority implies higher precedence (eg, a rule with priority 0 has higher precedence than a rule with priority 1). DENY rules take precedence over ALLOW rules having equal priority.
           "network": "A String", # URL of the network resource for this firewall rule. If not specified when creating a firewall rule, the default network is used:
               # global/networks/default
               # If you choose to specify this property, you can specify the network as a full or partial URL. For example, the following are all valid URLs:
@@ -344,7 +389,7 @@
           "targetTags": [ # A list of instance tags indicating sets of instances located in the network that may make network connections as specified in allowed[]. If no targetTags are specified, the firewall rule applies to all instances on the specified network.
             "A String",
           ],
-          "allowed": [ # The list of ALLOW rules specified by this firewall. Each rule specifies a protocol and port-range tuple that describes a permitted connection.
+          "denied": [ # The list of DENY rules specified by this firewall. Each rule specifies a protocol and port-range tuple that describes a permitted connection.
             {
               "IPProtocol": "A String", # The IP protocol to which this rule applies. The protocol type is required when creating a firewall rule. This value can either be one of the following well known protocol strings (tcp, udp, icmp, esp, ah, sctp), or the IP protocol number.
               "ports": [ # An optional list of ports to which this rule applies. This field is only applicable for UDP or TCP protocol. Each entry must be either an integer or a range. If not specified, this rule applies to connections through any port.
@@ -391,14 +436,29 @@
     The object takes the form of:
 
 { # Represents a Firewall resource.
-    "kind": "compute#firewall", # [Output Ony] Type of the resource. Always compute#firewall for firewall rules.
+    "direction": "A String", # Direction of traffic to which this firewall applies; default is INGRESS. Note: For INGRESS traffic, it is NOT supported to specify destinationRanges; For EGRESS traffic, it is NOT supported to specify sourceRanges OR sourceTags.
     "description": "A String", # An optional description of this resource. Provide this property when you create the resource.
+    "destinationRanges": [ # If destination ranges are specified, the firewall will apply only to traffic that has destination IP address in these ranges. These ranges must be expressed in CIDR format.
+      "A String",
+    ],
     "sourceTags": [ # If source tags are specified, the firewall will apply only to traffic with source IP that belongs to a tag listed in source tags. Source tags cannot be used to control traffic to an instance's external IP address. Because tags are associated with an instance, not an IP address. One or both of sourceRanges and sourceTags may be set. If both properties are set, the firewall will apply to traffic that has source IP address within sourceRanges OR the source IP that belongs to a tag listed in the sourceTags property. The connection does not need to match both properties for the firewall to apply.
       "A String",
     ],
+    "allowed": [ # The list of ALLOW rules specified by this firewall. Each rule specifies a protocol and port-range tuple that describes a permitted connection.
+      {
+        "IPProtocol": "A String", # The IP protocol to which this rule applies. The protocol type is required when creating a firewall rule. This value can either be one of the following well known protocol strings (tcp, udp, icmp, esp, ah, sctp), or the IP protocol number.
+        "ports": [ # An optional list of ports to which this rule applies. This field is only applicable for UDP or TCP protocol. Each entry must be either an integer or a range. If not specified, this rule applies to connections through any port.
+            # 
+            # Example inputs include: ["22"], ["80","443"], and ["12345-12349"].
+          "A String",
+        ],
+      },
+    ],
+    "kind": "compute#firewall", # [Output Ony] Type of the resource. Always compute#firewall for firewall rules.
     "sourceRanges": [ # If source ranges are specified, the firewall will apply only to traffic that has source IP address in these ranges. These ranges must be expressed in CIDR format. One or both of sourceRanges and sourceTags may be set. If both properties are set, the firewall will apply to traffic that has source IP address within sourceRanges OR the source IP that belongs to a tag listed in the sourceTags property. The connection does not need to match both properties for the firewall to apply.
       "A String",
     ],
+    "priority": 42, # Priority for this rule. This is an integer between 0 and 65535, both inclusive. When not specified, the value assumed is 1000. Relative priorities determine precedence of conflicting rules. Lower value of priority implies higher precedence (eg, a rule with priority 0 has higher precedence than a rule with priority 1). DENY rules take precedence over ALLOW rules having equal priority.
     "network": "A String", # URL of the network resource for this firewall rule. If not specified when creating a firewall rule, the default network is used:
         # global/networks/default
         # If you choose to specify this property, you can specify the network as a full or partial URL. For example, the following are all valid URLs:
@@ -408,7 +468,7 @@
     "targetTags": [ # A list of instance tags indicating sets of instances located in the network that may make network connections as specified in allowed[]. If no targetTags are specified, the firewall rule applies to all instances on the specified network.
       "A String",
     ],
-    "allowed": [ # The list of ALLOW rules specified by this firewall. Each rule specifies a protocol and port-range tuple that describes a permitted connection.
+    "denied": [ # The list of DENY rules specified by this firewall. Each rule specifies a protocol and port-range tuple that describes a permitted connection.
       {
         "IPProtocol": "A String", # The IP protocol to which this rule applies. The protocol type is required when creating a firewall rule. This value can either be one of the following well known protocol strings (tcp, udp, icmp, esp, ah, sctp), or the IP protocol number.
         "ports": [ # An optional list of ports to which this rule applies. This field is only applicable for UDP or TCP protocol. Each entry must be either an integer or a range. If not specified, this rule applies to connections through any port.
@@ -471,7 +531,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
@@ -513,14 +573,29 @@
     The object takes the form of:
 
 { # Represents a Firewall resource.
-    "kind": "compute#firewall", # [Output Ony] Type of the resource. Always compute#firewall for firewall rules.
+    "direction": "A String", # Direction of traffic to which this firewall applies; default is INGRESS. Note: For INGRESS traffic, it is NOT supported to specify destinationRanges; For EGRESS traffic, it is NOT supported to specify sourceRanges OR sourceTags.
     "description": "A String", # An optional description of this resource. Provide this property when you create the resource.
+    "destinationRanges": [ # If destination ranges are specified, the firewall will apply only to traffic that has destination IP address in these ranges. These ranges must be expressed in CIDR format.
+      "A String",
+    ],
     "sourceTags": [ # If source tags are specified, the firewall will apply only to traffic with source IP that belongs to a tag listed in source tags. Source tags cannot be used to control traffic to an instance's external IP address. Because tags are associated with an instance, not an IP address. One or both of sourceRanges and sourceTags may be set. If both properties are set, the firewall will apply to traffic that has source IP address within sourceRanges OR the source IP that belongs to a tag listed in the sourceTags property. The connection does not need to match both properties for the firewall to apply.
       "A String",
     ],
+    "allowed": [ # The list of ALLOW rules specified by this firewall. Each rule specifies a protocol and port-range tuple that describes a permitted connection.
+      {
+        "IPProtocol": "A String", # The IP protocol to which this rule applies. The protocol type is required when creating a firewall rule. This value can either be one of the following well known protocol strings (tcp, udp, icmp, esp, ah, sctp), or the IP protocol number.
+        "ports": [ # An optional list of ports to which this rule applies. This field is only applicable for UDP or TCP protocol. Each entry must be either an integer or a range. If not specified, this rule applies to connections through any port.
+            # 
+            # Example inputs include: ["22"], ["80","443"], and ["12345-12349"].
+          "A String",
+        ],
+      },
+    ],
+    "kind": "compute#firewall", # [Output Ony] Type of the resource. Always compute#firewall for firewall rules.
     "sourceRanges": [ # If source ranges are specified, the firewall will apply only to traffic that has source IP address in these ranges. These ranges must be expressed in CIDR format. One or both of sourceRanges and sourceTags may be set. If both properties are set, the firewall will apply to traffic that has source IP address within sourceRanges OR the source IP that belongs to a tag listed in the sourceTags property. The connection does not need to match both properties for the firewall to apply.
       "A String",
     ],
+    "priority": 42, # Priority for this rule. This is an integer between 0 and 65535, both inclusive. When not specified, the value assumed is 1000. Relative priorities determine precedence of conflicting rules. Lower value of priority implies higher precedence (eg, a rule with priority 0 has higher precedence than a rule with priority 1). DENY rules take precedence over ALLOW rules having equal priority.
     "network": "A String", # URL of the network resource for this firewall rule. If not specified when creating a firewall rule, the default network is used:
         # global/networks/default
         # If you choose to specify this property, you can specify the network as a full or partial URL. For example, the following are all valid URLs:
@@ -530,7 +605,7 @@
     "targetTags": [ # A list of instance tags indicating sets of instances located in the network that may make network connections as specified in allowed[]. If no targetTags are specified, the firewall rule applies to all instances on the specified network.
       "A String",
     ],
-    "allowed": [ # The list of ALLOW rules specified by this firewall. Each rule specifies a protocol and port-range tuple that describes a permitted connection.
+    "denied": [ # The list of DENY rules specified by this firewall. Each rule specifies a protocol and port-range tuple that describes a permitted connection.
       {
         "IPProtocol": "A String", # The IP protocol to which this rule applies. The protocol type is required when creating a firewall rule. This value can either be one of the following well known protocol strings (tcp, udp, icmp, esp, ah, sctp), or the IP protocol number.
         "ports": [ # An optional list of ports to which this rule applies. This field is only applicable for UDP or TCP protocol. Each entry must be either an integer or a range. If not specified, this rule applies to connections through any port.
@@ -593,7 +668,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
diff --git a/docs/dyn/compute_alpha.forwardingRules.html b/docs/dyn/compute_alpha.forwardingRules.html
index ef3d29f..9a1a574 100644
--- a/docs/dyn/compute_alpha.forwardingRules.html
+++ b/docs/dyn/compute_alpha.forwardingRules.html
@@ -136,7 +136,10 @@
           { # A ForwardingRule resource. A ForwardingRule resource specifies which pool of target virtual machines to forward a packet to if it matches the given [IPAddress, IPProtocol, portRange] tuple.
               "kind": "compute#forwardingRule", # [Output Only] Type of the resource. Always compute#forwardingRule for Forwarding Rule resources.
               "description": "A String", # An optional description of this resource. Provide this property when you create the resource.
-              "networkTier": "A String", # This signifies the networking tier used for configuring this load balancer and can only take the following values: PREMIUM , STANDARD. If this field is not specified, it is assumed to be PREMIUM.
+              "serviceName": "A String", # [Output Only] The internal fully qualified service name for this Forwarding Rule.
+                  #
+                  # This field is only used for internal load balancing.
+              "networkTier": "A String", # This signifies the networking tier used for configuring this load balancer and can only take the following values: CLOUD_NETWORK_PREMIUM , CLOUD_NETWORK_STANDARD. If this field is not specified, it is assumed to be CLOUD_NETWORK_PREMIUM.
               "IPAddress": "A String", # The IP address that this forwarding rule is serving on behalf of.
                   #
                   # For global forwarding rules, the address must be a global IP; for regional forwarding rules, the address must live in the same region as the forwarding rule. By default, this field is empty and an ephemeral IP from the same scope (global or regional) will be assigned.
@@ -148,7 +151,6 @@
               "labels": { # Labels to apply to this resource. These can be later modified by the setLabels method. Each label key/value pair must comply with RFC1035. Label values may be empty.
                 "a_key": "A String",
               },
-              "loadBalancingScheme": "A String", # This signifies what the ForwardingRule will be used for and can only take the following values: INTERNAL EXTERNAL The value of INTERNAL means that this will be used for Internal Network Load Balancing (TCP, UDP). The value of EXTERNAL means that this will be used for External Load Balancing (HTTP(S) LB, External TCP/UDP LB, SSL Proxy)
               "ports": [ # This field is not used for external load balancing.
                   #
                   # When the load balancing scheme is INTERNAL, a single port or a comma separated list of ports can be configured. Only packets addressed to these ports will be forwarded to the backends configured with this forwarding rule. If the port list is not provided then all ports are allowed to pass through.
@@ -162,17 +164,15 @@
               "network": "A String", # This field is not used for external load balancing.
                   #
                   # For internal load balancing, this field identifies the network that the load balanced IP should belong to for this Forwarding Rule. If this field is not specified, the default network will be used.
-              "dnsName": "A String", # [Output Only] The internal fully qualified domain name for this Forwarding Rule.
+              "loadBalancingScheme": "A String", # This signifies what the ForwardingRule will be used for and can only take the following values: INTERNAL EXTERNAL The value of INTERNAL means that this will be used for Internal Network Load Balancing (TCP, UDP). The value of EXTERNAL means that this will be used for External Load Balancing (HTTP(S) LB, External TCP/UDP LB, SSL Proxy)
+              "serviceLabel": "A String", # An optional prefix to the service name for this Forwarding Rule. If specified, will be the first label of the fully qualified service name.
+                  #
+                  # The label must be 1-63 characters long, and comply with RFC1035. Specifically, the label must be 1-63 characters long and match the regular expression [a-z]([-a-z0-9]*[a-z0-9])? which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.
                   #
                   # This field is only used for internal load balancing.
               "portRange": "A String", # Applicable only when IPProtocol is TCP, UDP, or SCTP, only packets addressed to ports in the specified range will be forwarded to target. Forwarding rules with the same [IPAddress, IPProtocol] pair must have disjoint port ranges.
                   #
                   # This field is not used for internal load balancing.
-              "dnsLabel": "A String", # An optional prefix to the DNS name for this Forwarding Rule. If specified, will be the first label of the fully qualified domain name.
-                  #
-                  # The label must be 1-63 characters long, and comply with RFC1035. Specifically, the label must be 1-63 characters long and match the regular expression [a-z]([-a-z0-9]*[a-z0-9])? which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.
-                  #
-                  # This field is only used for internal load balancing.
               "backendService": "A String", # This field is not used for external load balancing.
                   #
                   # For internal load balancing, this field identifies the BackendService resource to receive the matched traffic.
@@ -279,7 +279,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
@@ -298,7 +298,10 @@
     { # A ForwardingRule resource. A ForwardingRule resource specifies which pool of target virtual machines to forward a packet to if it matches the given [IPAddress, IPProtocol, portRange] tuple.
       "kind": "compute#forwardingRule", # [Output Only] Type of the resource. Always compute#forwardingRule for Forwarding Rule resources.
       "description": "A String", # An optional description of this resource. Provide this property when you create the resource.
-      "networkTier": "A String", # This signifies the networking tier used for configuring this load balancer and can only take the following values: PREMIUM , STANDARD. If this field is not specified, it is assumed to be PREMIUM.
+      "serviceName": "A String", # [Output Only] The internal fully qualified service name for this Forwarding Rule.
+          #
+          # This field is only used for internal load balancing.
+      "networkTier": "A String", # This signifies the networking tier used for configuring this load balancer and can only take the following values: CLOUD_NETWORK_PREMIUM , CLOUD_NETWORK_STANDARD. If this field is not specified, it is assumed to be CLOUD_NETWORK_PREMIUM.
       "IPAddress": "A String", # The IP address that this forwarding rule is serving on behalf of.
           #
           # For global forwarding rules, the address must be a global IP; for regional forwarding rules, the address must live in the same region as the forwarding rule. By default, this field is empty and an ephemeral IP from the same scope (global or regional) will be assigned.
@@ -310,7 +313,6 @@
       "labels": { # Labels to apply to this resource. These can be later modified by the setLabels method. Each label key/value pair must comply with RFC1035. Label values may be empty.
         "a_key": "A String",
       },
-      "loadBalancingScheme": "A String", # This signifies what the ForwardingRule will be used for and can only take the following values: INTERNAL EXTERNAL The value of INTERNAL means that this will be used for Internal Network Load Balancing (TCP, UDP). The value of EXTERNAL means that this will be used for External Load Balancing (HTTP(S) LB, External TCP/UDP LB, SSL Proxy)
       "ports": [ # This field is not used for external load balancing.
           #
           # When the load balancing scheme is INTERNAL, a single port or a comma separated list of ports can be configured. Only packets addressed to these ports will be forwarded to the backends configured with this forwarding rule. If the port list is not provided then all ports are allowed to pass through.
@@ -324,17 +326,15 @@
       "network": "A String", # This field is not used for external load balancing.
           #
           # For internal load balancing, this field identifies the network that the load balanced IP should belong to for this Forwarding Rule. If this field is not specified, the default network will be used.
-      "dnsName": "A String", # [Output Only] The internal fully qualified domain name for this Forwarding Rule.
+      "loadBalancingScheme": "A String", # This signifies what the ForwardingRule will be used for and can only take the following values: INTERNAL EXTERNAL The value of INTERNAL means that this will be used for Internal Network Load Balancing (TCP, UDP). The value of EXTERNAL means that this will be used for External Load Balancing (HTTP(S) LB, External TCP/UDP LB, SSL Proxy)
+      "serviceLabel": "A String", # An optional prefix to the service name for this Forwarding Rule. If specified, will be the first label of the fully qualified service name.
+          #
+          # The label must be 1-63 characters long, and comply with RFC1035. Specifically, the label must be 1-63 characters long and match the regular expression [a-z]([-a-z0-9]*[a-z0-9])? which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.
           #
           # This field is only used for internal load balancing.
       "portRange": "A String", # Applicable only when IPProtocol is TCP, UDP, or SCTP, only packets addressed to ports in the specified range will be forwarded to target. Forwarding rules with the same [IPAddress, IPProtocol] pair must have disjoint port ranges.
           #
           # This field is not used for internal load balancing.
-      "dnsLabel": "A String", # An optional prefix to the DNS name for this Forwarding Rule. If specified, will be the first label of the fully qualified domain name.
-          #
-          # The label must be 1-63 characters long, and comply with RFC1035. Specifically, the label must be 1-63 characters long and match the regular expression [a-z]([-a-z0-9]*[a-z0-9])? which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.
-          #
-          # This field is only used for internal load balancing.
       "backendService": "A String", # This field is not used for external load balancing.
           #
           # For internal load balancing, this field identifies the BackendService resource to receive the matched traffic.
@@ -367,7 +367,10 @@
 { # A ForwardingRule resource. A ForwardingRule resource specifies which pool of target virtual machines to forward a packet to if it matches the given [IPAddress, IPProtocol, portRange] tuple.
     "kind": "compute#forwardingRule", # [Output Only] Type of the resource. Always compute#forwardingRule for Forwarding Rule resources.
     "description": "A String", # An optional description of this resource. Provide this property when you create the resource.
-    "networkTier": "A String", # This signifies the networking tier used for configuring this load balancer and can only take the following values: PREMIUM , STANDARD. If this field is not specified, it is assumed to be PREMIUM.
+    "serviceName": "A String", # [Output Only] The internal fully qualified service name for this Forwarding Rule.
+        # 
+        # This field is only used for internal load balancing.
+    "networkTier": "A String", # This signifies the networking tier used for configuring this load balancer and can only take the following values: CLOUD_NETWORK_PREMIUM , CLOUD_NETWORK_STANDARD. If this field is not specified, it is assumed to be CLOUD_NETWORK_PREMIUM.
     "IPAddress": "A String", # The IP address that this forwarding rule is serving on behalf of.
         # 
         # For global forwarding rules, the address must be a global IP; for regional forwarding rules, the address must live in the same region as the forwarding rule. By default, this field is empty and an ephemeral IP from the same scope (global or regional) will be assigned.
@@ -379,7 +382,6 @@
     "labels": { # Labels to apply to this resource. These can be later modified by the setLabels method. Each label key/value pair must comply with RFC1035. Label values may be empty.
       "a_key": "A String",
     },
-    "loadBalancingScheme": "A String", # This signifies what the ForwardingRule will be used for and can only take the following values: INTERNAL EXTERNAL The value of INTERNAL means that this will be used for Internal Network Load Balancing (TCP, UDP). The value of EXTERNAL means that this will be used for External Load Balancing (HTTP(S) LB, External TCP/UDP LB, SSL Proxy)
     "ports": [ # This field is not used for external load balancing.
         # 
         # When the load balancing scheme is INTERNAL, a single port or a comma separated list of ports can be configured. Only packets addressed to these ports will be forwarded to the backends configured with this forwarding rule. If the port list is not provided then all ports are allowed to pass through.
@@ -393,17 +395,15 @@
     "network": "A String", # This field is not used for external load balancing.
         # 
         # For internal load balancing, this field identifies the network that the load balanced IP should belong to for this Forwarding Rule. If this field is not specified, the default network will be used.
-    "dnsName": "A String", # [Output Only] The internal fully qualified domain name for this Forwarding Rule.
+    "loadBalancingScheme": "A String", # This signifies what the ForwardingRule will be used for and can only take the following values: INTERNAL EXTERNAL The value of INTERNAL means that this will be used for Internal Network Load Balancing (TCP, UDP). The value of EXTERNAL means that this will be used for External Load Balancing (HTTP(S) LB, External TCP/UDP LB, SSL Proxy)
+    "serviceLabel": "A String", # An optional prefix to the service name for this Forwarding Rule. If specified, will be the first label of the fully qualified service name.
+        # 
+        # The label must be 1-63 characters long, and comply with RFC1035. Specifically, the label must be 1-63 characters long and match the regular expression [a-z]([-a-z0-9]*[a-z0-9])? which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.
         # 
         # This field is only used for internal load balancing.
     "portRange": "A String", # Applicable only when IPProtocol is TCP, UDP, or SCTP, only packets addressed to ports in the specified range will be forwarded to target. Forwarding rules with the same [IPAddress, IPProtocol] pair must have disjoint port ranges.
         # 
         # This field is not used for internal load balancing.
-    "dnsLabel": "A String", # An optional prefix to the DNS name for this Forwarding Rule. If specified, will be the first label of the fully qualified domain name.
-        # 
-        # The label must be 1-63 characters long, and comply with RFC1035. Specifically, the label must be 1-63 characters long and match the regular expression [a-z]([-a-z0-9]*[a-z0-9])? which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.
-        # 
-        # This field is only used for internal load balancing.
     "backendService": "A String", # This field is not used for external load balancing.
         # 
         # For internal load balancing, this field identifies the BackendService resource to receive the matched traffic.
@@ -469,7 +469,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
@@ -506,7 +506,10 @@
       { # A ForwardingRule resource. A ForwardingRule resource specifies which pool of target virtual machines to forward a packet to if it matches the given [IPAddress, IPProtocol, portRange] tuple.
           "kind": "compute#forwardingRule", # [Output Only] Type of the resource. Always compute#forwardingRule for Forwarding Rule resources.
           "description": "A String", # An optional description of this resource. Provide this property when you create the resource.
-          "networkTier": "A String", # This signifies the networking tier used for configuring this load balancer and can only take the following values: PREMIUM , STANDARD. If this field is not specified, it is assumed to be PREMIUM.
+          "serviceName": "A String", # [Output Only] The internal fully qualified service name for this Forwarding Rule.
+              #
+              # This field is only used for internal load balancing.
+          "networkTier": "A String", # This signifies the networking tier used for configuring this load balancer and can only take the following values: CLOUD_NETWORK_PREMIUM , CLOUD_NETWORK_STANDARD. If this field is not specified, it is assumed to be CLOUD_NETWORK_PREMIUM.
           "IPAddress": "A String", # The IP address that this forwarding rule is serving on behalf of.
               #
               # For global forwarding rules, the address must be a global IP; for regional forwarding rules, the address must live in the same region as the forwarding rule. By default, this field is empty and an ephemeral IP from the same scope (global or regional) will be assigned.
@@ -518,7 +521,6 @@
           "labels": { # Labels to apply to this resource. These can be later modified by the setLabels method. Each label key/value pair must comply with RFC1035. Label values may be empty.
             "a_key": "A String",
           },
-          "loadBalancingScheme": "A String", # This signifies what the ForwardingRule will be used for and can only take the following values: INTERNAL EXTERNAL The value of INTERNAL means that this will be used for Internal Network Load Balancing (TCP, UDP). The value of EXTERNAL means that this will be used for External Load Balancing (HTTP(S) LB, External TCP/UDP LB, SSL Proxy)
           "ports": [ # This field is not used for external load balancing.
               #
               # When the load balancing scheme is INTERNAL, a single port or a comma separated list of ports can be configured. Only packets addressed to these ports will be forwarded to the backends configured with this forwarding rule. If the port list is not provided then all ports are allowed to pass through.
@@ -532,17 +534,15 @@
           "network": "A String", # This field is not used for external load balancing.
               #
               # For internal load balancing, this field identifies the network that the load balanced IP should belong to for this Forwarding Rule. If this field is not specified, the default network will be used.
-          "dnsName": "A String", # [Output Only] The internal fully qualified domain name for this Forwarding Rule.
+          "loadBalancingScheme": "A String", # This signifies what the ForwardingRule will be used for and can only take the following values: INTERNAL EXTERNAL The value of INTERNAL means that this will be used for Internal Network Load Balancing (TCP, UDP). The value of EXTERNAL means that this will be used for External Load Balancing (HTTP(S) LB, External TCP/UDP LB, SSL Proxy)
+          "serviceLabel": "A String", # An optional prefix to the service name for this Forwarding Rule. If specified, will be the first label of the fully qualified service name.
+              #
+              # The label must be 1-63 characters long, and comply with RFC1035. Specifically, the label must be 1-63 characters long and match the regular expression [a-z]([-a-z0-9]*[a-z0-9])? which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.
               #
               # This field is only used for internal load balancing.
           "portRange": "A String", # Applicable only when IPProtocol is TCP, UDP, or SCTP, only packets addressed to ports in the specified range will be forwarded to target. Forwarding rules with the same [IPAddress, IPProtocol] pair must have disjoint port ranges.
               #
               # This field is not used for internal load balancing.
-          "dnsLabel": "A String", # An optional prefix to the DNS name for this Forwarding Rule. If specified, will be the first label of the fully qualified domain name.
-              #
-              # The label must be 1-63 characters long, and comply with RFC1035. Specifically, the label must be 1-63 characters long and match the regular expression [a-z]([-a-z0-9]*[a-z0-9])? which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.
-              #
-              # This field is only used for internal load balancing.
           "backendService": "A String", # This field is not used for external load balancing.
               #
               # For internal load balancing, this field identifies the BackendService resource to receive the matched traffic.
@@ -643,7 +643,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
diff --git a/docs/dyn/compute_alpha.globalAddresses.html b/docs/dyn/compute_alpha.globalAddresses.html
index aab6a3c..f0fb837 100644
--- a/docs/dyn/compute_alpha.globalAddresses.html
+++ b/docs/dyn/compute_alpha.globalAddresses.html
@@ -147,7 +147,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
@@ -172,7 +172,7 @@
       "labels": { # Labels to apply to this Address resource. These can be later modified by the setLabels method. Each label key/value must comply with RFC1035. Label values may be empty.
         "a_key": "A String",
       },
-      "networkTier": "A String", # This signifies the networking tier used for configuring this Address and can only take the following values: PREMIUM , STANDARD. If this field is not specified, it is assumed to be PREMIUM.
+      "networkTier": "A String", # This signifies the networking tier used for configuring this Address and can only take the following values: CLOUD_NETWORK_PREMIUM , CLOUD_NETWORK_STANDARD. If this field is not specified, it is assumed to be CLOUD_NETWORK_PREMIUM.
       "address": "A String", # The static external IP address represented by this resource.
       "region": "A String", # [Output Only] URL of the region where the regional address resides. This field is not applicable to global addresses.
       "users": [ # [Output Only] The URLs of the resources that are using this address.
@@ -204,7 +204,7 @@
     "labels": { # Labels to apply to this Address resource. These can be later modified by the setLabels method. Each label key/value must comply with RFC1035. Label values may be empty.
       "a_key": "A String",
     },
-    "networkTier": "A String", # This signifies the networking tier used for configuring this Address and can only take the following values: PREMIUM , STANDARD. If this field is not specified, it is assumed to be PREMIUM.
+    "networkTier": "A String", # This signifies the networking tier used for configuring this Address and can only take the following values: CLOUD_NETWORK_PREMIUM , CLOUD_NETWORK_STANDARD. If this field is not specified, it is assumed to be CLOUD_NETWORK_PREMIUM.
     "address": "A String", # The static external IP address represented by this resource.
     "region": "A String", # [Output Only] URL of the region where the regional address resides. This field is not applicable to global addresses.
     "users": [ # [Output Only] The URLs of the resources that are using this address.
@@ -263,7 +263,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
@@ -306,7 +306,7 @@
           "labels": { # Labels to apply to this Address resource. These can be later modified by the setLabels method. Each label key/value must comply with RFC1035. Label values may be empty.
             "a_key": "A String",
           },
-          "networkTier": "A String", # This signifies the networking tier used for configuring this Address and can only take the following values: PREMIUM , STANDARD. If this field is not specified, it is assumed to be PREMIUM.
+          "networkTier": "A String", # This signifies the networking tier used for configuring this Address and can only take the following values: CLOUD_NETWORK_PREMIUM , CLOUD_NETWORK_STANDARD. If this field is not specified, it is assumed to be CLOUD_NETWORK_PREMIUM.
           "address": "A String", # The static external IP address represented by this resource.
           "region": "A String", # [Output Only] URL of the region where the regional address resides. This field is not applicable to global addresses.
           "users": [ # [Output Only] The URLs of the resources that are using this address.
diff --git a/docs/dyn/compute_alpha.globalForwardingRules.html b/docs/dyn/compute_alpha.globalForwardingRules.html
index 60e49b4..5d3254d 100644
--- a/docs/dyn/compute_alpha.globalForwardingRules.html
+++ b/docs/dyn/compute_alpha.globalForwardingRules.html
@@ -150,7 +150,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
@@ -168,7 +168,10 @@
     { # A ForwardingRule resource. A ForwardingRule resource specifies which pool of target virtual machines to forward a packet to if it matches the given [IPAddress, IPProtocol, portRange] tuple.
       "kind": "compute#forwardingRule", # [Output Only] Type of the resource. Always compute#forwardingRule for Forwarding Rule resources.
       "description": "A String", # An optional description of this resource. Provide this property when you create the resource.
-      "networkTier": "A String", # This signifies the networking tier used for configuring this load balancer and can only take the following values: PREMIUM , STANDARD. If this field is not specified, it is assumed to be PREMIUM.
+      "serviceName": "A String", # [Output Only] The internal fully qualified service name for this Forwarding Rule.
+          #
+          # This field is only used for internal load balancing.
+      "networkTier": "A String", # This signifies the networking tier used for configuring this load balancer and can only take the following values: CLOUD_NETWORK_PREMIUM , CLOUD_NETWORK_STANDARD. If this field is not specified, it is assumed to be CLOUD_NETWORK_PREMIUM.
       "IPAddress": "A String", # The IP address that this forwarding rule is serving on behalf of.
           #
           # For global forwarding rules, the address must be a global IP; for regional forwarding rules, the address must live in the same region as the forwarding rule. By default, this field is empty and an ephemeral IP from the same scope (global or regional) will be assigned.
@@ -180,7 +183,6 @@
       "labels": { # Labels to apply to this resource. These can be later modified by the setLabels method. Each label key/value pair must comply with RFC1035. Label values may be empty.
         "a_key": "A String",
       },
-      "loadBalancingScheme": "A String", # This signifies what the ForwardingRule will be used for and can only take the following values: INTERNAL EXTERNAL The value of INTERNAL means that this will be used for Internal Network Load Balancing (TCP, UDP). The value of EXTERNAL means that this will be used for External Load Balancing (HTTP(S) LB, External TCP/UDP LB, SSL Proxy)
       "ports": [ # This field is not used for external load balancing.
           #
           # When the load balancing scheme is INTERNAL, a single port or a comma separated list of ports can be configured. Only packets addressed to these ports will be forwarded to the backends configured with this forwarding rule. If the port list is not provided then all ports are allowed to pass through.
@@ -194,17 +196,15 @@
       "network": "A String", # This field is not used for external load balancing.
           #
           # For internal load balancing, this field identifies the network that the load balanced IP should belong to for this Forwarding Rule. If this field is not specified, the default network will be used.
-      "dnsName": "A String", # [Output Only] The internal fully qualified domain name for this Forwarding Rule.
+      "loadBalancingScheme": "A String", # This signifies what the ForwardingRule will be used for and can only take the following values: INTERNAL EXTERNAL The value of INTERNAL means that this will be used for Internal Network Load Balancing (TCP, UDP). The value of EXTERNAL means that this will be used for External Load Balancing (HTTP(S) LB, External TCP/UDP LB, SSL Proxy)
+      "serviceLabel": "A String", # An optional prefix to the service name for this Forwarding Rule. If specified, will be the first label of the fully qualified service name.
+          #
+          # The label must be 1-63 characters long, and comply with RFC1035. Specifically, the label must be 1-63 characters long and match the regular expression [a-z]([-a-z0-9]*[a-z0-9])? which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.
           #
           # This field is only used for internal load balancing.
       "portRange": "A String", # Applicable only when IPProtocol is TCP, UDP, or SCTP, only packets addressed to ports in the specified range will be forwarded to target. Forwarding rules with the same [IPAddress, IPProtocol] pair must have disjoint port ranges.
           #
           # This field is not used for internal load balancing.
-      "dnsLabel": "A String", # An optional prefix to the DNS name for this Forwarding Rule. If specified, will be the first label of the fully qualified domain name.
-          #
-          # The label must be 1-63 characters long, and comply with RFC1035. Specifically, the label must be 1-63 characters long and match the regular expression [a-z]([-a-z0-9]*[a-z0-9])? which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.
-          #
-          # This field is only used for internal load balancing.
       "backendService": "A String", # This field is not used for external load balancing.
           #
           # For internal load balancing, this field identifies the BackendService resource to receive the matched traffic.
@@ -236,7 +236,10 @@
 { # A ForwardingRule resource. A ForwardingRule resource specifies which pool of target virtual machines to forward a packet to if it matches the given [IPAddress, IPProtocol, portRange] tuple.
     "kind": "compute#forwardingRule", # [Output Only] Type of the resource. Always compute#forwardingRule for Forwarding Rule resources.
     "description": "A String", # An optional description of this resource. Provide this property when you create the resource.
-    "networkTier": "A String", # This signifies the networking tier used for configuring this load balancer and can only take the following values: PREMIUM , STANDARD. If this field is not specified, it is assumed to be PREMIUM.
+    "serviceName": "A String", # [Output Only] The internal fully qualified service name for this Forwarding Rule.
+        # 
+        # This field is only used for internal load balancing.
+    "networkTier": "A String", # This signifies the networking tier used for configuring this load balancer and can only take the following values: CLOUD_NETWORK_PREMIUM , CLOUD_NETWORK_STANDARD. If this field is not specified, it is assumed to be CLOUD_NETWORK_PREMIUM.
     "IPAddress": "A String", # The IP address that this forwarding rule is serving on behalf of.
         # 
         # For global forwarding rules, the address must be a global IP; for regional forwarding rules, the address must live in the same region as the forwarding rule. By default, this field is empty and an ephemeral IP from the same scope (global or regional) will be assigned.
@@ -248,7 +251,6 @@
     "labels": { # Labels to apply to this resource. These can be later modified by the setLabels method. Each label key/value pair must comply with RFC1035. Label values may be empty.
       "a_key": "A String",
     },
-    "loadBalancingScheme": "A String", # This signifies what the ForwardingRule will be used for and can only take the following values: INTERNAL EXTERNAL The value of INTERNAL means that this will be used for Internal Network Load Balancing (TCP, UDP). The value of EXTERNAL means that this will be used for External Load Balancing (HTTP(S) LB, External TCP/UDP LB, SSL Proxy)
     "ports": [ # This field is not used for external load balancing.
         # 
         # When the load balancing scheme is INTERNAL, a single port or a comma separated list of ports can be configured. Only packets addressed to these ports will be forwarded to the backends configured with this forwarding rule. If the port list is not provided then all ports are allowed to pass through.
@@ -262,17 +264,15 @@
     "network": "A String", # This field is not used for external load balancing.
         # 
         # For internal load balancing, this field identifies the network that the load balanced IP should belong to for this Forwarding Rule. If this field is not specified, the default network will be used.
-    "dnsName": "A String", # [Output Only] The internal fully qualified domain name for this Forwarding Rule.
+    "loadBalancingScheme": "A String", # This signifies what the ForwardingRule will be used for and can only take the following values: INTERNAL EXTERNAL The value of INTERNAL means that this will be used for Internal Network Load Balancing (TCP, UDP). The value of EXTERNAL means that this will be used for External Load Balancing (HTTP(S) LB, External TCP/UDP LB, SSL Proxy)
+    "serviceLabel": "A String", # An optional prefix to the service name for this Forwarding Rule. If specified, will be the first label of the fully qualified service name.
+        # 
+        # The label must be 1-63 characters long, and comply with RFC1035. Specifically, the label must be 1-63 characters long and match the regular expression [a-z]([-a-z0-9]*[a-z0-9])? which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.
         # 
         # This field is only used for internal load balancing.
     "portRange": "A String", # Applicable only when IPProtocol is TCP, UDP, or SCTP, only packets addressed to ports in the specified range will be forwarded to target. Forwarding rules with the same [IPAddress, IPProtocol] pair must have disjoint port ranges.
         # 
         # This field is not used for internal load balancing.
-    "dnsLabel": "A String", # An optional prefix to the DNS name for this Forwarding Rule. If specified, will be the first label of the fully qualified domain name.
-        # 
-        # The label must be 1-63 characters long, and comply with RFC1035. Specifically, the label must be 1-63 characters long and match the regular expression [a-z]([-a-z0-9]*[a-z0-9])? which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.
-        # 
-        # This field is only used for internal load balancing.
     "backendService": "A String", # This field is not used for external load balancing.
         # 
         # For internal load balancing, this field identifies the BackendService resource to receive the matched traffic.
@@ -338,7 +338,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
@@ -374,7 +374,10 @@
       { # A ForwardingRule resource. A ForwardingRule resource specifies which pool of target virtual machines to forward a packet to if it matches the given [IPAddress, IPProtocol, portRange] tuple.
           "kind": "compute#forwardingRule", # [Output Only] Type of the resource. Always compute#forwardingRule for Forwarding Rule resources.
           "description": "A String", # An optional description of this resource. Provide this property when you create the resource.
-          "networkTier": "A String", # This signifies the networking tier used for configuring this load balancer and can only take the following values: PREMIUM , STANDARD. If this field is not specified, it is assumed to be PREMIUM.
+          "serviceName": "A String", # [Output Only] The internal fully qualified service name for this Forwarding Rule.
+              #
+              # This field is only used for internal load balancing.
+          "networkTier": "A String", # This signifies the networking tier used for configuring this load balancer and can only take the following values: CLOUD_NETWORK_PREMIUM , CLOUD_NETWORK_STANDARD. If this field is not specified, it is assumed to be CLOUD_NETWORK_PREMIUM.
           "IPAddress": "A String", # The IP address that this forwarding rule is serving on behalf of.
               #
               # For global forwarding rules, the address must be a global IP; for regional forwarding rules, the address must live in the same region as the forwarding rule. By default, this field is empty and an ephemeral IP from the same scope (global or regional) will be assigned.
@@ -386,7 +389,6 @@
           "labels": { # Labels to apply to this resource. These can be later modified by the setLabels method. Each label key/value pair must comply with RFC1035. Label values may be empty.
             "a_key": "A String",
           },
-          "loadBalancingScheme": "A String", # This signifies what the ForwardingRule will be used for and can only take the following values: INTERNAL EXTERNAL The value of INTERNAL means that this will be used for Internal Network Load Balancing (TCP, UDP). The value of EXTERNAL means that this will be used for External Load Balancing (HTTP(S) LB, External TCP/UDP LB, SSL Proxy)
           "ports": [ # This field is not used for external load balancing.
               #
               # When the load balancing scheme is INTERNAL, a single port or a comma separated list of ports can be configured. Only packets addressed to these ports will be forwarded to the backends configured with this forwarding rule. If the port list is not provided then all ports are allowed to pass through.
@@ -400,17 +402,15 @@
           "network": "A String", # This field is not used for external load balancing.
               #
               # For internal load balancing, this field identifies the network that the load balanced IP should belong to for this Forwarding Rule. If this field is not specified, the default network will be used.
-          "dnsName": "A String", # [Output Only] The internal fully qualified domain name for this Forwarding Rule.
+          "loadBalancingScheme": "A String", # This signifies what the ForwardingRule will be used for and can only take the following values: INTERNAL EXTERNAL The value of INTERNAL means that this will be used for Internal Network Load Balancing (TCP, UDP). The value of EXTERNAL means that this will be used for External Load Balancing (HTTP(S) LB, External TCP/UDP LB, SSL Proxy)
+          "serviceLabel": "A String", # An optional prefix to the service name for this Forwarding Rule. If specified, will be the first label of the fully qualified service name.
+              #
+              # The label must be 1-63 characters long, and comply with RFC1035. Specifically, the label must be 1-63 characters long and match the regular expression [a-z]([-a-z0-9]*[a-z0-9])? which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.
               #
               # This field is only used for internal load balancing.
           "portRange": "A String", # Applicable only when IPProtocol is TCP, UDP, or SCTP, only packets addressed to ports in the specified range will be forwarded to target. Forwarding rules with the same [IPAddress, IPProtocol] pair must have disjoint port ranges.
               #
               # This field is not used for internal load balancing.
-          "dnsLabel": "A String", # An optional prefix to the DNS name for this Forwarding Rule. If specified, will be the first label of the fully qualified domain name.
-              #
-              # The label must be 1-63 characters long, and comply with RFC1035. Specifically, the label must be 1-63 characters long and match the regular expression [a-z]([-a-z0-9]*[a-z0-9])? which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.
-              #
-              # This field is only used for internal load balancing.
           "backendService": "A String", # This field is not used for external load balancing.
               #
               # For internal load balancing, this field identifies the BackendService resource to receive the matched traffic.
@@ -510,7 +510,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
diff --git a/docs/dyn/compute_alpha.globalOperations.html b/docs/dyn/compute_alpha.globalOperations.html
index 534e1f6..093b01e 100644
--- a/docs/dyn/compute_alpha.globalOperations.html
+++ b/docs/dyn/compute_alpha.globalOperations.html
@@ -167,7 +167,7 @@
             },
             "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
             "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-            "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+            "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
           },
         ],
         "warning": { # [Output Only] Informational warning which replaces the list of operations when the list is empty.
@@ -267,7 +267,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
@@ -343,7 +343,7 @@
         },
         "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
         "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-        "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+        "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
       },
     ],
     "kind": "compute#operationList", # [Output Only] Type of resource. Always compute#operations for Operations resource.
diff --git a/docs/dyn/compute_alpha.healthChecks.html b/docs/dyn/compute_alpha.healthChecks.html
index 221e16d..708bd9c 100644
--- a/docs/dyn/compute_alpha.healthChecks.html
+++ b/docs/dyn/compute_alpha.healthChecks.html
@@ -153,7 +153,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
@@ -178,7 +178,7 @@
       },
       "description": "A String", # An optional description of this resource. Provide this property when you create the resource.
       "timeoutSec": 42, # How long (in seconds) to wait before claiming failure. The default value is 5 seconds. It is invalid for timeoutSec to have greater value than checkIntervalSec.
-      "type": "A String", # Specifies the type of the healthCheck, either TCP, UDP, SSL, HTTP, HTTPS or HTTP2. If not specified, the default is TCP. Exactly one of the protocol-specific health check field must be specified, which must match type field.
+      "type": "A String", # Specifies the type of the healthCheck, either TCP, SSL, HTTP or HTTPS. If not specified, the default is TCP. Exactly one of the protocol-specific health check field must be specified, which must match type field.
       "checkIntervalSec": 42, # How often (in seconds) to send a health check. The default value is 5 seconds.
       "tcpHealthCheck": {
         "portName": "A String", # Port name as defined in InstanceGroup#NamedPort#name. If both port and port_name are defined, port takes precedence.
@@ -246,7 +246,7 @@
     },
     "description": "A String", # An optional description of this resource. Provide this property when you create the resource.
     "timeoutSec": 42, # How long (in seconds) to wait before claiming failure. The default value is 5 seconds. It is invalid for timeoutSec to have greater value than checkIntervalSec.
-    "type": "A String", # Specifies the type of the healthCheck, either TCP, UDP, SSL, HTTP, HTTPS or HTTP2. If not specified, the default is TCP. Exactly one of the protocol-specific health check field must be specified, which must match type field.
+    "type": "A String", # Specifies the type of the healthCheck, either TCP, SSL, HTTP or HTTPS. If not specified, the default is TCP. Exactly one of the protocol-specific health check field must be specified, which must match type field.
     "checkIntervalSec": 42, # How often (in seconds) to send a health check. The default value is 5 seconds.
     "tcpHealthCheck": {
       "portName": "A String", # Port name as defined in InstanceGroup#NamedPort#name. If both port and port_name are defined, port takes precedence.
@@ -341,7 +341,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
@@ -384,7 +384,7 @@
           },
           "description": "A String", # An optional description of this resource. Provide this property when you create the resource.
           "timeoutSec": 42, # How long (in seconds) to wait before claiming failure. The default value is 5 seconds. It is invalid for timeoutSec to have greater value than checkIntervalSec.
-          "type": "A String", # Specifies the type of the healthCheck, either TCP, UDP, SSL, HTTP, HTTPS or HTTP2. If not specified, the default is TCP. Exactly one of the protocol-specific health check field must be specified, which must match type field.
+          "type": "A String", # Specifies the type of the healthCheck, either TCP, SSL, HTTP or HTTPS. If not specified, the default is TCP. Exactly one of the protocol-specific health check field must be specified, which must match type field.
           "checkIntervalSec": 42, # How often (in seconds) to send a health check. The default value is 5 seconds.
           "tcpHealthCheck": {
             "portName": "A String", # Port name as defined in InstanceGroup#NamedPort#name. If both port and port_name are defined, port takes precedence.
@@ -472,7 +472,7 @@
     },
     "description": "A String", # An optional description of this resource. Provide this property when you create the resource.
     "timeoutSec": 42, # How long (in seconds) to wait before claiming failure. The default value is 5 seconds. It is invalid for timeoutSec to have greater value than checkIntervalSec.
-    "type": "A String", # Specifies the type of the healthCheck, either TCP, UDP, SSL, HTTP, HTTPS or HTTP2. If not specified, the default is TCP. Exactly one of the protocol-specific health check field must be specified, which must match type field.
+    "type": "A String", # Specifies the type of the healthCheck, either TCP, SSL, HTTP or HTTPS. If not specified, the default is TCP. Exactly one of the protocol-specific health check field must be specified, which must match type field.
     "checkIntervalSec": 42, # How often (in seconds) to send a health check. The default value is 5 seconds.
     "tcpHealthCheck": {
       "portName": "A String", # Port name as defined in InstanceGroup#NamedPort#name. If both port and port_name are defined, port takes precedence.
@@ -567,7 +567,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
@@ -618,7 +618,7 @@
     },
     "description": "A String", # An optional description of this resource. Provide this property when you create the resource.
     "timeoutSec": 42, # How long (in seconds) to wait before claiming failure. The default value is 5 seconds. It is invalid for timeoutSec to have greater value than checkIntervalSec.
-    "type": "A String", # Specifies the type of the healthCheck, either TCP, UDP, SSL, HTTP, HTTPS or HTTP2. If not specified, the default is TCP. Exactly one of the protocol-specific health check field must be specified, which must match type field.
+    "type": "A String", # Specifies the type of the healthCheck, either TCP, SSL, HTTP or HTTPS. If not specified, the default is TCP. Exactly one of the protocol-specific health check field must be specified, which must match type field.
     "checkIntervalSec": 42, # How often (in seconds) to send a health check. The default value is 5 seconds.
     "tcpHealthCheck": {
       "portName": "A String", # Port name as defined in InstanceGroup#NamedPort#name. If both port and port_name are defined, port takes precedence.
@@ -713,7 +713,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
diff --git a/docs/dyn/compute_alpha.hosts.html b/docs/dyn/compute_alpha.hosts.html
index 0dfcd97..1b258d8 100644
--- a/docs/dyn/compute_alpha.hosts.html
+++ b/docs/dyn/compute_alpha.hosts.html
@@ -75,9 +75,30 @@
 <h1><a href="compute_alpha.html">Compute Engine API</a> . <a href="compute_alpha.hosts.html">hosts</a></h1>
 <h2>Instance Methods</h2>
 <p class="toc_element">
+  <code><a href="#aggregatedList">aggregatedList(project, orderBy=None, maxResults=None, pageToken=None, filter=None)</a></code></p>
+<p class="firstline">Retrieves an aggregated list of hosts.</p>
+<p class="toc_element">
+  <code><a href="#aggregatedList_next">aggregatedList_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="#delete">delete(project, zone, host)</a></code></p>
+<p class="firstline">Deletes the specified Host resource.</p>
+<p class="toc_element">
+  <code><a href="#get">get(project, zone, host)</a></code></p>
+<p class="firstline">Returns the specified host. Get a list of available hosts by making a list() request.</p>
+<p class="toc_element">
   <code><a href="#getIamPolicy">getIamPolicy(project, zone, resource)</a></code></p>
 <p class="firstline">Gets the access control policy for a resource. May be empty if no such policy or resource exists.</p>
 <p class="toc_element">
+  <code><a href="#insert">insert(project, zone, body)</a></code></p>
+<p class="firstline">Creates a host resource in the specified project using the data included in the request.</p>
+<p class="toc_element">
+  <code><a href="#list">list(project, zone, orderBy=None, maxResults=None, pageToken=None, filter=None)</a></code></p>
+<p class="firstline">Retrieves a list of hosts available to the specified project.</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="#setIamPolicy">setIamPolicy(project, zone, resource, body)</a></code></p>
 <p class="firstline">Sets the access control policy on the specified resource. Replaces any existing policy.</p>
 <p class="toc_element">
@@ -85,6 +106,178 @@
 <p class="firstline">Returns permissions that a caller has on the specified resource.</p>
 <h3>Method Details</h3>
 <div class="method">
+    <code class="details" id="aggregatedList">aggregatedList(project, orderBy=None, maxResults=None, pageToken=None, filter=None)</code>
+  <pre>Retrieves an aggregated list of hosts.
+
+Args:
+  project: string, Project ID for this request. (required)
+  orderBy: string, Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.
+
+You can also sort results in descending order based on the creation timestamp using orderBy="creationTimestamp desc". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.
+
+Currently, only sorting by name or creationTimestamp desc is supported.
+  maxResults: integer, The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests.
+  pageToken: string, Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.
+  filter: string, Sets a filter expression for filtering listed resources, in the form filter={expression}. Your {expression} must be in the format: field_name comparison_string literal_string.
+
+The field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.
+
+For example, to filter for instances that do not have a name of example-instance, you would use filter=name ne example-instance.
+
+You can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.
+
+To filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.
+
+Returns:
+  An object of the form:
+
+    {
+    "nextPageToken": "A String", # [Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results.
+    "items": { # [Output Only] A map of scoped host lists.
+      "a_key": { # [Output Only] Name of the scope containing this set of hosts.
+        "warning": { # [Output Only] An informational warning that appears when the host list is empty.
+          "message": "A String", # [Output Only] A human-readable description of the warning code.
+          "code": "A String", # [Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.
+          "data": [ # [Output Only] Metadata about this warning in key: value format. For example:
+              # "data": [ { "key": "scope", "value": "zones/us-east1-d" }
+            {
+              "value": "A String", # [Output Only] A warning data value corresponding to the key.
+              "key": "A String", # [Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding).
+            },
+          ],
+        },
+        "hosts": [ # [Output Only] List of hosts contained in this scope.
+          {
+              "status": "A String", # [Output Only] The status of the host. One of the following values: CREATING, READY, REPAIR, and DELETING.
+              "kind": "compute#host", # [Output Only] The type of the resource. Always compute#host for host.
+              "description": "A String", # [Output Only] An optional textual description of the resource.
+              "zone": "A String", # [Output Only] The name of the zone where the host resides, such as us-central1-a.
+              "hostType": "A String", # Full or partial URL of the host type resource to use for this host, in the format: zones/zone/hostTypes/host-type. This is provided by the client when the host is created. For example, the following is a valid partial url to a predefined host type:
+                  #
+                  # zones/us-central1-f/hostTypes/n1-host-64-416
+              "instances": [ # A list of resource URLs to the virtual machine instances in this host. They must live in zones contained in the same region as this host.
+                "A String",
+              ],
+              "statusMessage": "A String", # [Output Only] An optional, human-readable explanation of the status.
+              "creationTimestamp": "A String", # [Output Only] Creation timestamp in RFC3339 text format.
+              "id": "A String", # [Output Only] The unique identifier for the resource. This identifier is defined by the server.
+              "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
+              "name": "A String", # The name of the resource, provided by the client when initially creating the resource. The resource name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression [a-z]([-a-z0-9]*[a-z0-9])? which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.
+            },
+        ],
+      },
+    },
+    "kind": "compute#hostAggregatedList", # [Output Only] Type of resource. Always compute#hostAggregatedList for aggregated lists of hosts.
+    "id": "A String", # [Output Only] The unique identifier for the resource. This identifier is defined by the server.
+    "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
+  }</pre>
+</div>
+
+<div class="method">
+    <code class="details" id="aggregatedList_next">aggregatedList_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="delete">delete(project, zone, host)</code>
+  <pre>Deletes the specified Host resource.
+
+Args:
+  project: string, Project ID for this request. (required)
+  zone: string, The name of the zone for this request. (required)
+  host: string, Name of the Host resource to delete. (required)
+
+Returns:
+  An object of the form:
+
+    { # An Operation resource, used to manage asynchronous API requests.
+    "targetId": "A String", # [Output Only] The unique target ID, which identifies a specific incarnation of the target resource.
+    "clientOperationId": "A String", # [Output Only] Reserved for future use.
+    "creationTimestamp": "A String", # [Output Only] Creation timestamp in RFC3339 text format.
+    "id": "A String", # [Output Only] The unique identifier for the resource. This identifier is defined by the server.
+    "zone": "A String", # [Output Only] The URL of the zone where the operation resides. Only available when performing per-zone operations.
+    "insertTime": "A String", # [Output Only] The time that this operation was requested. This value is in RFC3339 text format.
+    "operationType": "A String", # [Output Only] The type of operation, such as insert, update, or delete, and so on.
+    "httpErrorMessage": "A String", # [Output Only] If the operation fails, this field contains the HTTP error message that was returned, such as NOT FOUND.
+    "progress": 42, # [Output Only] An optional progress indicator that ranges from 0 to 100. There is no requirement that this be linear or support any granularity of operations. This should not be used to guess when the operation will be complete. This number should monotonically increase as the operation progresses.
+    "httpErrorStatusCode": 42, # [Output Only] If the operation fails, this field contains the HTTP error status code that was returned. For example, a 404 means the resource was not found.
+    "statusMessage": "A String", # [Output Only] An optional textual description of the current status of the operation.
+    "status": "A String", # [Output Only] The status of the operation, which can be one of the following: PENDING, RUNNING, or DONE.
+    "description": "A String", # [Output Only] A textual description of the operation, which is set when the operation is created.
+    "warnings": [ # [Output Only] If warning messages are generated during processing of the operation, this field will be populated.
+      {
+        "message": "A String", # [Output Only] A human-readable description of the warning code.
+        "code": "A String", # [Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.
+        "data": [ # [Output Only] Metadata about this warning in key: value format. For example:
+            # "data": [ { "key": "scope", "value": "zones/us-east1-d" }
+          {
+            "value": "A String", # [Output Only] A warning data value corresponding to the key.
+            "key": "A String", # [Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding).
+          },
+        ],
+      },
+    ],
+    "user": "A String", # [Output Only] User who requested the operation, for example: user@example.com.
+    "startTime": "A String", # [Output Only] The time that this operation was started by the server. This value is in RFC3339 text format.
+    "kind": "compute#operation", # [Output Only] Type of the resource. Always compute#operation for Operation resources.
+    "name": "A String", # [Output Only] Name of the resource.
+    "region": "A String", # [Output Only] The URL of the region where the operation resides. Only available when performing regional operations.
+    "error": { # [Output Only] If errors are generated during processing of the operation, this field will be populated.
+      "errors": [ # [Output Only] The array of errors encountered while processing this operation.
+        {
+          "message": "A String", # [Output Only] An optional, human-readable error message.
+          "code": "A String", # [Output Only] The error type identifier for this error.
+          "location": "A String", # [Output Only] Indicates the field in the request that caused the error. This property is optional.
+        },
+      ],
+    },
+    "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
+    "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
+  }</pre>
+</div>
+
+<div class="method">
+    <code class="details" id="get">get(project, zone, host)</code>
+  <pre>Returns the specified host. Get a list of available hosts by making a list() request.
+
+Args:
+  project: string, Project ID for this request. (required)
+  zone: string, The name of the zone for this request. (required)
+  host: string, Name of the host to return. (required)
+
+Returns:
+  An object of the form:
+
+    {
+      "status": "A String", # [Output Only] The status of the host. One of the following values: CREATING, READY, REPAIR, and DELETING.
+      "kind": "compute#host", # [Output Only] The type of the resource. Always compute#host for host.
+      "description": "A String", # [Output Only] An optional textual description of the resource.
+      "zone": "A String", # [Output Only] The name of the zone where the host resides, such as us-central1-a.
+      "hostType": "A String", # Full or partial URL of the host type resource to use for this host, in the format: zones/zone/hostTypes/host-type. This is provided by the client when the host is created. For example, the following is a valid partial url to a predefined host type:
+          #
+          # zones/us-central1-f/hostTypes/n1-host-64-416
+      "instances": [ # A list of resource URLs to the virtual machine instances in this host. They must live in zones contained in the same region as this host.
+        "A String",
+      ],
+      "statusMessage": "A String", # [Output Only] An optional, human-readable explanation of the status.
+      "creationTimestamp": "A String", # [Output Only] Creation timestamp in RFC3339 text format.
+      "id": "A String", # [Output Only] The unique identifier for the resource. This identifier is defined by the server.
+      "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
+      "name": "A String", # The name of the resource, provided by the client when initially creating the resource. The resource name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression [a-z]([-a-z0-9]*[a-z0-9])? which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.
+    }</pre>
+</div>
+
+<div class="method">
     <code class="details" id="getIamPolicy">getIamPolicy(project, zone, resource)</code>
   <pre>Gets the access control policy for a resource. May be empty if no such policy or resource exists.
 
@@ -110,11 +303,19 @@
     "auditConfigs": [ # Specifies audit logging configs for "data access". "data access": generally refers to data reads/writes and admin reads. "admin activity": generally refers to admin writes.
         #
         # Note: `AuditConfig` doesn't apply to "admin activity", which always enables audit logging.
-      { # Enables "data access" audit logging for a service and specifies a list of members that are log-exempted.
+      { # Provides the configuration for non-admin_activity logging for a service. Controls exemptions and specific log sub-types.
         "exemptedMembers": [ # Specifies the identities that are exempted from "data access" audit logging for the `service` specified above. Follows the same format of Binding.members.
           "A String",
         ],
-        "service": "A String", # Specifies a service that will be enabled for "data access" audit logging. For example, `resourcemanager`, `storage`, `compute`. `allServices` is a special value that covers all services.
+        "auditLogConfigs": [ # The configuration for each type of logging
+          { # Provides the configuration for a sub-type of logging.
+            "exemptedMembers": [ # Specifies the identities that are exempted from this type of logging Follows the same format of Binding.members.
+              "A String",
+            ],
+            "logType": "A String", # The log type that this config enables.
+          },
+        ],
+        "service": "A String", # Specifies a service that will be enabled for audit logging. For example, `resourcemanager`, `storage`, `compute`. `allServices` is a special value that covers all services.
       },
     ],
     "rules": [ # If more than one rule is specified, the rules are applied in the following manner: - All matching LOG rules are always applied. - If any DENY/DENY_WITH_LOG rule matches, permission is denied. Logging will be applied if one or more matching rule requires logging. - Otherwise, if any ALLOW/ALLOW_WITH_LOG rule matches, permission is granted. Logging will be applied if one or more matching rule requires logging. - Otherwise, if no rule applies, permission is denied.
@@ -167,6 +368,8 @@
             #
             # * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@gmail.com` or `joe@example.com`.
             #
+            #
+            #
             # * `serviceAccount:{emailid}`: An email address that represents a service account. For example, `my-other-app@appspot.gserviceaccount.com`.
             #
             # * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`.
@@ -181,6 +384,153 @@
 </div>
 
 <div class="method">
+    <code class="details" id="insert">insert(project, zone, body)</code>
+  <pre>Creates a host resource in the specified project using the data included in the request.
+
+Args:
+  project: string, Project ID for this request. (required)
+  zone: string, The name of the zone for this request. (required)
+  body: object, The request body. (required)
+    The object takes the form of:
+
+{
+    "status": "A String", # [Output Only] The status of the host. One of the following values: CREATING, READY, REPAIR, and DELETING.
+    "kind": "compute#host", # [Output Only] The type of the resource. Always compute#host for host.
+    "description": "A String", # [Output Only] An optional textual description of the resource.
+    "zone": "A String", # [Output Only] The name of the zone where the host resides, such as us-central1-a.
+    "hostType": "A String", # Full or partial URL of the host type resource to use for this host, in the format: zones/zone/hostTypes/host-type. This is provided by the client when the host is created. For example, the following is a valid partial url to a predefined host type:
+        # 
+        # zones/us-central1-f/hostTypes/n1-host-64-416
+    "instances": [ # A list of resource URLs to the virtual machine instances in this host. They must live in zones contained in the same region as this host.
+      "A String",
+    ],
+    "statusMessage": "A String", # [Output Only] An optional, human-readable explanation of the status.
+    "creationTimestamp": "A String", # [Output Only] Creation timestamp in RFC3339 text format.
+    "id": "A String", # [Output Only] The unique identifier for the resource. This identifier is defined by the server.
+    "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
+    "name": "A String", # The name of the resource, provided by the client when initially creating the resource. The resource name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression [a-z]([-a-z0-9]*[a-z0-9])? which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.
+  }
+
+
+Returns:
+  An object of the form:
+
+    { # An Operation resource, used to manage asynchronous API requests.
+    "targetId": "A String", # [Output Only] The unique target ID, which identifies a specific incarnation of the target resource.
+    "clientOperationId": "A String", # [Output Only] Reserved for future use.
+    "creationTimestamp": "A String", # [Output Only] Creation timestamp in RFC3339 text format.
+    "id": "A String", # [Output Only] The unique identifier for the resource. This identifier is defined by the server.
+    "zone": "A String", # [Output Only] The URL of the zone where the operation resides. Only available when performing per-zone operations.
+    "insertTime": "A String", # [Output Only] The time that this operation was requested. This value is in RFC3339 text format.
+    "operationType": "A String", # [Output Only] The type of operation, such as insert, update, or delete, and so on.
+    "httpErrorMessage": "A String", # [Output Only] If the operation fails, this field contains the HTTP error message that was returned, such as NOT FOUND.
+    "progress": 42, # [Output Only] An optional progress indicator that ranges from 0 to 100. There is no requirement that this be linear or support any granularity of operations. This should not be used to guess when the operation will be complete. This number should monotonically increase as the operation progresses.
+    "httpErrorStatusCode": 42, # [Output Only] If the operation fails, this field contains the HTTP error status code that was returned. For example, a 404 means the resource was not found.
+    "statusMessage": "A String", # [Output Only] An optional textual description of the current status of the operation.
+    "status": "A String", # [Output Only] The status of the operation, which can be one of the following: PENDING, RUNNING, or DONE.
+    "description": "A String", # [Output Only] A textual description of the operation, which is set when the operation is created.
+    "warnings": [ # [Output Only] If warning messages are generated during processing of the operation, this field will be populated.
+      {
+        "message": "A String", # [Output Only] A human-readable description of the warning code.
+        "code": "A String", # [Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.
+        "data": [ # [Output Only] Metadata about this warning in key: value format. For example:
+            # "data": [ { "key": "scope", "value": "zones/us-east1-d" }
+          {
+            "value": "A String", # [Output Only] A warning data value corresponding to the key.
+            "key": "A String", # [Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding).
+          },
+        ],
+      },
+    ],
+    "user": "A String", # [Output Only] User who requested the operation, for example: user@example.com.
+    "startTime": "A String", # [Output Only] The time that this operation was started by the server. This value is in RFC3339 text format.
+    "kind": "compute#operation", # [Output Only] Type of the resource. Always compute#operation for Operation resources.
+    "name": "A String", # [Output Only] Name of the resource.
+    "region": "A String", # [Output Only] The URL of the region where the operation resides. Only available when performing regional operations.
+    "error": { # [Output Only] If errors are generated during processing of the operation, this field will be populated.
+      "errors": [ # [Output Only] The array of errors encountered while processing this operation.
+        {
+          "message": "A String", # [Output Only] An optional, human-readable error message.
+          "code": "A String", # [Output Only] The error type identifier for this error.
+          "location": "A String", # [Output Only] Indicates the field in the request that caused the error. This property is optional.
+        },
+      ],
+    },
+    "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
+    "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
+  }</pre>
+</div>
+
+<div class="method">
+    <code class="details" id="list">list(project, zone, orderBy=None, maxResults=None, pageToken=None, filter=None)</code>
+  <pre>Retrieves a list of hosts available to the specified project.
+
+Args:
+  project: string, Project ID for this request. (required)
+  zone: string, The name of the zone for this request. (required)
+  orderBy: string, Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.
+
+You can also sort results in descending order based on the creation timestamp using orderBy="creationTimestamp desc". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.
+
+Currently, only sorting by name or creationTimestamp desc is supported.
+  maxResults: integer, The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests.
+  pageToken: string, Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.
+  filter: string, Sets a filter expression for filtering listed resources, in the form filter={expression}. Your {expression} must be in the format: field_name comparison_string literal_string.
+
+The field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.
+
+For example, to filter for instances that do not have a name of example-instance, you would use filter=name ne example-instance.
+
+You can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.
+
+To filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.
+
+Returns:
+  An object of the form:
+
+    { # Contains a list of hosts.
+    "nextPageToken": "A String", # [Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results.
+    "items": [ # [Output Only] A list of Host resources.
+      {
+          "status": "A String", # [Output Only] The status of the host. One of the following values: CREATING, READY, REPAIR, and DELETING.
+          "kind": "compute#host", # [Output Only] The type of the resource. Always compute#host for host.
+          "description": "A String", # [Output Only] An optional textual description of the resource.
+          "zone": "A String", # [Output Only] The name of the zone where the host resides, such as us-central1-a.
+          "hostType": "A String", # Full or partial URL of the host type resource to use for this host, in the format: zones/zone/hostTypes/host-type. This is provided by the client when the host is created. For example, the following is a valid partial url to a predefined host type:
+              #
+              # zones/us-central1-f/hostTypes/n1-host-64-416
+          "instances": [ # A list of resource URLs to the virtual machine instances in this host. They must live in zones contained in the same region as this host.
+            "A String",
+          ],
+          "statusMessage": "A String", # [Output Only] An optional, human-readable explanation of the status.
+          "creationTimestamp": "A String", # [Output Only] Creation timestamp in RFC3339 text format.
+          "id": "A String", # [Output Only] The unique identifier for the resource. This identifier is defined by the server.
+          "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
+          "name": "A String", # The name of the resource, provided by the client when initially creating the resource. The resource name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression [a-z]([-a-z0-9]*[a-z0-9])? which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.
+        },
+    ],
+    "kind": "compute#hostList", # [Output Only] Type of resource. Always compute#hostList for lists of hosts.
+    "id": "A String", # [Output Only] The unique identifier for the resource. This identifier is defined by the server.
+    "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
+  }</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="setIamPolicy">setIamPolicy(project, zone, resource, body)</code>
   <pre>Sets the access control policy on the specified resource. Replaces any existing policy.
 
@@ -205,11 +555,19 @@
   "auditConfigs": [ # Specifies audit logging configs for "data access". "data access": generally refers to data reads/writes and admin reads. "admin activity": generally refers to admin writes.
       # 
       # Note: `AuditConfig` doesn't apply to "admin activity", which always enables audit logging.
-    { # Enables "data access" audit logging for a service and specifies a list of members that are log-exempted.
+    { # Provides the configuration for non-admin_activity logging for a service. Controls exemptions and specific log sub-types.
       "exemptedMembers": [ # Specifies the identities that are exempted from "data access" audit logging for the `service` specified above. Follows the same format of Binding.members.
         "A String",
       ],
-      "service": "A String", # Specifies a service that will be enabled for "data access" audit logging. For example, `resourcemanager`, `storage`, `compute`. `allServices` is a special value that covers all services.
+      "auditLogConfigs": [ # The configuration for each type of logging
+        { # Provides the configuration for a sub-type of logging.
+          "exemptedMembers": [ # Specifies the identities that are exempted from this type of logging Follows the same format of Binding.members.
+            "A String",
+          ],
+          "logType": "A String", # The log type that this config enables.
+        },
+      ],
+      "service": "A String", # Specifies a service that will be enabled for audit logging. For example, `resourcemanager`, `storage`, `compute`. `allServices` is a special value that covers all services.
     },
   ],
   "rules": [ # If more than one rule is specified, the rules are applied in the following manner: - All matching LOG rules are always applied. - If any DENY/DENY_WITH_LOG rule matches, permission is denied. Logging will be applied if one or more matching rule requires logging. - Otherwise, if any ALLOW/ALLOW_WITH_LOG rule matches, permission is granted. Logging will be applied if one or more matching rule requires logging. - Otherwise, if no rule applies, permission is denied.
@@ -262,6 +620,8 @@
           #
           # * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@gmail.com` or `joe@example.com`.
           #
+          #
+          #
           # * `serviceAccount:{emailid}`: An email address that represents a service account. For example, `my-other-app@appspot.gserviceaccount.com`.
           #
           # * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`.
@@ -292,11 +652,19 @@
     "auditConfigs": [ # Specifies audit logging configs for "data access". "data access": generally refers to data reads/writes and admin reads. "admin activity": generally refers to admin writes.
         #
         # Note: `AuditConfig` doesn't apply to "admin activity", which always enables audit logging.
-      { # Enables "data access" audit logging for a service and specifies a list of members that are log-exempted.
+      { # Provides the configuration for non-admin_activity logging for a service. Controls exemptions and specific log sub-types.
         "exemptedMembers": [ # Specifies the identities that are exempted from "data access" audit logging for the `service` specified above. Follows the same format of Binding.members.
           "A String",
         ],
-        "service": "A String", # Specifies a service that will be enabled for "data access" audit logging. For example, `resourcemanager`, `storage`, `compute`. `allServices` is a special value that covers all services.
+        "auditLogConfigs": [ # The configuration for each type of logging
+          { # Provides the configuration for a sub-type of logging.
+            "exemptedMembers": [ # Specifies the identities that are exempted from this type of logging Follows the same format of Binding.members.
+              "A String",
+            ],
+            "logType": "A String", # The log type that this config enables.
+          },
+        ],
+        "service": "A String", # Specifies a service that will be enabled for audit logging. For example, `resourcemanager`, `storage`, `compute`. `allServices` is a special value that covers all services.
       },
     ],
     "rules": [ # If more than one rule is specified, the rules are applied in the following manner: - All matching LOG rules are always applied. - If any DENY/DENY_WITH_LOG rule matches, permission is denied. Logging will be applied if one or more matching rule requires logging. - Otherwise, if any ALLOW/ALLOW_WITH_LOG rule matches, permission is granted. Logging will be applied if one or more matching rule requires logging. - Otherwise, if no rule applies, permission is denied.
@@ -349,6 +717,8 @@
             #
             # * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@gmail.com` or `joe@example.com`.
             #
+            #
+            #
             # * `serviceAccount:{emailid}`: An email address that represents a service account. For example, `my-other-app@appspot.gserviceaccount.com`.
             #
             # * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`.
diff --git a/docs/dyn/compute_alpha.html b/docs/dyn/compute_alpha.html
index b5c668d..6b3f08d 100644
--- a/docs/dyn/compute_alpha.html
+++ b/docs/dyn/compute_alpha.html
@@ -100,6 +100,11 @@
 <p class="firstline">Returns the clientSslPolicies Resource.</p>
 
 <p class="toc_element">
+  <code><a href="compute_alpha.commitments.html">commitments()</a></code>
+</p>
+<p class="firstline">Returns the commitments Resource.</p>
+
+<p class="toc_element">
   <code><a href="compute_alpha.diskTypes.html">diskTypes()</a></code>
 </p>
 <p class="firstline">Returns the diskTypes Resource.</p>
diff --git a/docs/dyn/compute_alpha.httpHealthChecks.html b/docs/dyn/compute_alpha.httpHealthChecks.html
index f780cf0..5b4fe35 100644
--- a/docs/dyn/compute_alpha.httpHealthChecks.html
+++ b/docs/dyn/compute_alpha.httpHealthChecks.html
@@ -153,7 +153,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
@@ -257,7 +257,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
@@ -399,7 +399,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
@@ -503,7 +503,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
diff --git a/docs/dyn/compute_alpha.httpsHealthChecks.html b/docs/dyn/compute_alpha.httpsHealthChecks.html
index c08250a..6bc3d7b 100644
--- a/docs/dyn/compute_alpha.httpsHealthChecks.html
+++ b/docs/dyn/compute_alpha.httpsHealthChecks.html
@@ -153,7 +153,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
@@ -257,7 +257,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
@@ -399,7 +399,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
@@ -503,7 +503,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
diff --git a/docs/dyn/compute_alpha.images.html b/docs/dyn/compute_alpha.images.html
index c568428..6898bf4 100644
--- a/docs/dyn/compute_alpha.images.html
+++ b/docs/dyn/compute_alpha.images.html
@@ -156,7 +156,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
@@ -173,10 +173,10 @@
     The object takes the form of:
 
 { # Deprecation status for a public resource.
-  "deleted": "A String", # An optional RFC3339 timestamp on or after which the deprecation state of this resource will be changed to DELETED.
-  "deprecated": "A String", # An optional RFC3339 timestamp on or after which the deprecation state of this resource will be changed to DEPRECATED.
+  "deleted": "A String", # An optional RFC3339 timestamp on or after which the state of this resource is intended to change to DELETED. This is only informational and the status will not change unless the client explicitly changes it.
+  "deprecated": "A String", # An optional RFC3339 timestamp on or after which the state of this resource is intended to change to DEPRECATED. This is only informational and the status will not change unless the client explicitly changes it.
   "state": "A String", # The deprecation state of this resource. This can be DEPRECATED, OBSOLETE, or DELETED. Operations which create a new resource using a DEPRECATED resource will return successfully, but with a warning indicating the deprecated resource and recommending its replacement. Operations which use OBSOLETE or DELETED resources will be rejected and result in an error.
-  "obsolete": "A String", # An optional RFC3339 timestamp on or after which the deprecation state of this resource will be changed to OBSOLETE.
+  "obsolete": "A String", # An optional RFC3339 timestamp on or after which the state of this resource is intended to change to OBSOLETE. This is only informational and the status will not change unless the client explicitly changes it.
   "replacement": "A String", # The URL of the suggested replacement for a deprecated resource. The suggested replacement resource must be the same kind of resource as the deprecated resource.
 }
 
@@ -227,7 +227,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
@@ -243,7 +243,7 @@
   An object of the form:
 
     { # An Image resource.
-      "sourceDisk": "A String", # URL of the The source disk used to create this image. This can be a full or valid partial URL. You must provide either this property or the rawDisk.source property but not both to create an image. For example, the following are valid values:
+      "sourceDisk": "A String", # URL of the source disk used to create this image. This can be a full or valid partial URL. You must provide either this property or the rawDisk.source property but not both to create an image. For example, the following are valid values:
           # - https://www.googleapis.com/compute/v1/projects/project/zones/zone/disks/disk
           # - projects/project/zones/zone/disks/disk
           # - zones/zone/disks/disk
@@ -262,10 +262,10 @@
       "description": "A String", # An optional description of this resource. Provide this property when you create the resource.
       "family": "A String", # The name of the image family to which this image belongs. You can create disks by specifying an image family instead of a specific image name. The image family always returns its latest image that is not deprecated. The name of the image family must comply with RFC1035.
       "deprecated": { # Deprecation status for a public resource. # The deprecation status associated with this image.
-        "deleted": "A String", # An optional RFC3339 timestamp on or after which the deprecation state of this resource will be changed to DELETED.
-        "deprecated": "A String", # An optional RFC3339 timestamp on or after which the deprecation state of this resource will be changed to DEPRECATED.
+        "deleted": "A String", # An optional RFC3339 timestamp on or after which the state of this resource is intended to change to DELETED. This is only informational and the status will not change unless the client explicitly changes it.
+        "deprecated": "A String", # An optional RFC3339 timestamp on or after which the state of this resource is intended to change to DEPRECATED. This is only informational and the status will not change unless the client explicitly changes it.
         "state": "A String", # The deprecation state of this resource. This can be DEPRECATED, OBSOLETE, or DELETED. Operations which create a new resource using a DEPRECATED resource will return successfully, but with a warning indicating the deprecated resource and recommending its replacement. Operations which use OBSOLETE or DELETED resources will be rejected and result in an error.
-        "obsolete": "A String", # An optional RFC3339 timestamp on or after which the deprecation state of this resource will be changed to OBSOLETE.
+        "obsolete": "A String", # An optional RFC3339 timestamp on or after which the state of this resource is intended to change to OBSOLETE. This is only informational and the status will not change unless the client explicitly changes it.
         "replacement": "A String", # The URL of the suggested replacement for a deprecated resource. The suggested replacement resource must be the same kind of resource as the deprecated resource.
       },
       "labelFingerprint": "A String", # A fingerprint for the labels being applied to this image, which is essentially a hash of the labels used for optimistic locking. The fingerprint is initially generated by Compute Engine and changes after every request to modify or update labels. You must always provide an up-to-date fingerprint hash in order to update or change labels.
@@ -276,9 +276,11 @@
       },
       "archiveSizeBytes": "A String", # Size of the image tar.gz archive stored in Google Cloud Storage (in bytes).
       "sourceDiskId": "A String", # The ID value of the disk used to create this image. This value may be used to determine whether the image was taken from the current or a previous instance of a given disk name.
-      "guestOsFeatures": [ # A list of features to enable on the guest OS. Applicable for bootable images only. Currently, only one feature is supported, VIRTIO_SCSCI_MULTIQUEUE, which allows each virtual CPU to have its own queue. For Windows images, you can only enable VIRTIO_SCSCI_MULTIQUEUE on images with driver version 1.2.0.1621 or higher. Linux images with kernel versions 3.17 and higher will support VIRTIO_SCSCI_MULTIQUEUE.
+      "guestOsFeatures": [ # A list of features to enable on the guest OS. Applicable for bootable images only. Currently, only one feature can be enabled, VIRTIO_SCSCI_MULTIQUEUE, which allows each virtual CPU to have its own queue. For Windows images, you can only enable VIRTIO_SCSCI_MULTIQUEUE on images with driver version 1.2.0.1621 or higher. Linux images with kernel versions 3.17 and higher will support VIRTIO_SCSCI_MULTIQUEUE.
+          #
+          # For new Windows images, the server might also populate this field with the value WINDOWS, to indicate that this is a Windows image. This value is purely informational and does not enable or disable any features.
         { # Guest OS features.
-          "type": "A String", # The type of supported feature. Currenty only VIRTIO_SCSI_MULTIQUEUE is supported.
+          "type": "A String", # The type of supported feature. Currenty only VIRTIO_SCSI_MULTIQUEUE is supported. For newer Windows images, the server might also populate this property with the value WINDOWS to indicate that this is a Windows image. This value is purely informational and does not enable or disable any features.
         },
       ],
       "diskSizeGb": "A String", # Size of the image when restored onto a persistent disk (in GB).
@@ -326,7 +328,7 @@
   An object of the form:
 
     { # An Image resource.
-      "sourceDisk": "A String", # URL of the The source disk used to create this image. This can be a full or valid partial URL. You must provide either this property or the rawDisk.source property but not both to create an image. For example, the following are valid values:
+      "sourceDisk": "A String", # URL of the source disk used to create this image. This can be a full or valid partial URL. You must provide either this property or the rawDisk.source property but not both to create an image. For example, the following are valid values:
           # - https://www.googleapis.com/compute/v1/projects/project/zones/zone/disks/disk
           # - projects/project/zones/zone/disks/disk
           # - zones/zone/disks/disk
@@ -345,10 +347,10 @@
       "description": "A String", # An optional description of this resource. Provide this property when you create the resource.
       "family": "A String", # The name of the image family to which this image belongs. You can create disks by specifying an image family instead of a specific image name. The image family always returns its latest image that is not deprecated. The name of the image family must comply with RFC1035.
       "deprecated": { # Deprecation status for a public resource. # The deprecation status associated with this image.
-        "deleted": "A String", # An optional RFC3339 timestamp on or after which the deprecation state of this resource will be changed to DELETED.
-        "deprecated": "A String", # An optional RFC3339 timestamp on or after which the deprecation state of this resource will be changed to DEPRECATED.
+        "deleted": "A String", # An optional RFC3339 timestamp on or after which the state of this resource is intended to change to DELETED. This is only informational and the status will not change unless the client explicitly changes it.
+        "deprecated": "A String", # An optional RFC3339 timestamp on or after which the state of this resource is intended to change to DEPRECATED. This is only informational and the status will not change unless the client explicitly changes it.
         "state": "A String", # The deprecation state of this resource. This can be DEPRECATED, OBSOLETE, or DELETED. Operations which create a new resource using a DEPRECATED resource will return successfully, but with a warning indicating the deprecated resource and recommending its replacement. Operations which use OBSOLETE or DELETED resources will be rejected and result in an error.
-        "obsolete": "A String", # An optional RFC3339 timestamp on or after which the deprecation state of this resource will be changed to OBSOLETE.
+        "obsolete": "A String", # An optional RFC3339 timestamp on or after which the state of this resource is intended to change to OBSOLETE. This is only informational and the status will not change unless the client explicitly changes it.
         "replacement": "A String", # The URL of the suggested replacement for a deprecated resource. The suggested replacement resource must be the same kind of resource as the deprecated resource.
       },
       "labelFingerprint": "A String", # A fingerprint for the labels being applied to this image, which is essentially a hash of the labels used for optimistic locking. The fingerprint is initially generated by Compute Engine and changes after every request to modify or update labels. You must always provide an up-to-date fingerprint hash in order to update or change labels.
@@ -359,9 +361,11 @@
       },
       "archiveSizeBytes": "A String", # Size of the image tar.gz archive stored in Google Cloud Storage (in bytes).
       "sourceDiskId": "A String", # The ID value of the disk used to create this image. This value may be used to determine whether the image was taken from the current or a previous instance of a given disk name.
-      "guestOsFeatures": [ # A list of features to enable on the guest OS. Applicable for bootable images only. Currently, only one feature is supported, VIRTIO_SCSCI_MULTIQUEUE, which allows each virtual CPU to have its own queue. For Windows images, you can only enable VIRTIO_SCSCI_MULTIQUEUE on images with driver version 1.2.0.1621 or higher. Linux images with kernel versions 3.17 and higher will support VIRTIO_SCSCI_MULTIQUEUE.
+      "guestOsFeatures": [ # A list of features to enable on the guest OS. Applicable for bootable images only. Currently, only one feature can be enabled, VIRTIO_SCSCI_MULTIQUEUE, which allows each virtual CPU to have its own queue. For Windows images, you can only enable VIRTIO_SCSCI_MULTIQUEUE on images with driver version 1.2.0.1621 or higher. Linux images with kernel versions 3.17 and higher will support VIRTIO_SCSCI_MULTIQUEUE.
+          #
+          # For new Windows images, the server might also populate this field with the value WINDOWS, to indicate that this is a Windows image. This value is purely informational and does not enable or disable any features.
         { # Guest OS features.
-          "type": "A String", # The type of supported feature. Currenty only VIRTIO_SCSI_MULTIQUEUE is supported.
+          "type": "A String", # The type of supported feature. Currenty only VIRTIO_SCSI_MULTIQUEUE is supported. For newer Windows images, the server might also populate this property with the value WINDOWS to indicate that this is a Windows image. This value is purely informational and does not enable or disable any features.
         },
       ],
       "diskSizeGb": "A String", # Size of the image when restored onto a persistent disk (in GB).
@@ -407,7 +411,7 @@
     The object takes the form of:
 
 { # An Image resource.
-    "sourceDisk": "A String", # URL of the The source disk used to create this image. This can be a full or valid partial URL. You must provide either this property or the rawDisk.source property but not both to create an image. For example, the following are valid values:
+    "sourceDisk": "A String", # URL of the source disk used to create this image. This can be a full or valid partial URL. You must provide either this property or the rawDisk.source property but not both to create an image. For example, the following are valid values:
         # - https://www.googleapis.com/compute/v1/projects/project/zones/zone/disks/disk
         # - projects/project/zones/zone/disks/disk
         # - zones/zone/disks/disk
@@ -426,10 +430,10 @@
     "description": "A String", # An optional description of this resource. Provide this property when you create the resource.
     "family": "A String", # The name of the image family to which this image belongs. You can create disks by specifying an image family instead of a specific image name. The image family always returns its latest image that is not deprecated. The name of the image family must comply with RFC1035.
     "deprecated": { # Deprecation status for a public resource. # The deprecation status associated with this image.
-      "deleted": "A String", # An optional RFC3339 timestamp on or after which the deprecation state of this resource will be changed to DELETED.
-      "deprecated": "A String", # An optional RFC3339 timestamp on or after which the deprecation state of this resource will be changed to DEPRECATED.
+      "deleted": "A String", # An optional RFC3339 timestamp on or after which the state of this resource is intended to change to DELETED. This is only informational and the status will not change unless the client explicitly changes it.
+      "deprecated": "A String", # An optional RFC3339 timestamp on or after which the state of this resource is intended to change to DEPRECATED. This is only informational and the status will not change unless the client explicitly changes it.
       "state": "A String", # The deprecation state of this resource. This can be DEPRECATED, OBSOLETE, or DELETED. Operations which create a new resource using a DEPRECATED resource will return successfully, but with a warning indicating the deprecated resource and recommending its replacement. Operations which use OBSOLETE or DELETED resources will be rejected and result in an error.
-      "obsolete": "A String", # An optional RFC3339 timestamp on or after which the deprecation state of this resource will be changed to OBSOLETE.
+      "obsolete": "A String", # An optional RFC3339 timestamp on or after which the state of this resource is intended to change to OBSOLETE. This is only informational and the status will not change unless the client explicitly changes it.
       "replacement": "A String", # The URL of the suggested replacement for a deprecated resource. The suggested replacement resource must be the same kind of resource as the deprecated resource.
     },
     "labelFingerprint": "A String", # A fingerprint for the labels being applied to this image, which is essentially a hash of the labels used for optimistic locking. The fingerprint is initially generated by Compute Engine and changes after every request to modify or update labels. You must always provide an up-to-date fingerprint hash in order to update or change labels.
@@ -440,9 +444,11 @@
     },
     "archiveSizeBytes": "A String", # Size of the image tar.gz archive stored in Google Cloud Storage (in bytes).
     "sourceDiskId": "A String", # The ID value of the disk used to create this image. This value may be used to determine whether the image was taken from the current or a previous instance of a given disk name.
-    "guestOsFeatures": [ # A list of features to enable on the guest OS. Applicable for bootable images only. Currently, only one feature is supported, VIRTIO_SCSCI_MULTIQUEUE, which allows each virtual CPU to have its own queue. For Windows images, you can only enable VIRTIO_SCSCI_MULTIQUEUE on images with driver version 1.2.0.1621 or higher. Linux images with kernel versions 3.17 and higher will support VIRTIO_SCSCI_MULTIQUEUE.
+    "guestOsFeatures": [ # A list of features to enable on the guest OS. Applicable for bootable images only. Currently, only one feature can be enabled, VIRTIO_SCSCI_MULTIQUEUE, which allows each virtual CPU to have its own queue. For Windows images, you can only enable VIRTIO_SCSCI_MULTIQUEUE on images with driver version 1.2.0.1621 or higher. Linux images with kernel versions 3.17 and higher will support VIRTIO_SCSCI_MULTIQUEUE.
+        # 
+        # For new Windows images, the server might also populate this field with the value WINDOWS, to indicate that this is a Windows image. This value is purely informational and does not enable or disable any features.
       { # Guest OS features.
-        "type": "A String", # The type of supported feature. Currenty only VIRTIO_SCSI_MULTIQUEUE is supported.
+        "type": "A String", # The type of supported feature. Currenty only VIRTIO_SCSI_MULTIQUEUE is supported. For newer Windows images, the server might also populate this property with the value WINDOWS to indicate that this is a Windows image. This value is purely informational and does not enable or disable any features.
       },
     ],
     "diskSizeGb": "A String", # Size of the image when restored onto a persistent disk (in GB).
@@ -524,7 +530,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
@@ -558,7 +564,7 @@
     "nextPageToken": "A String", # [Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results.
     "items": [ # [Output Only] A list of Image resources.
       { # An Image resource.
-          "sourceDisk": "A String", # URL of the The source disk used to create this image. This can be a full or valid partial URL. You must provide either this property or the rawDisk.source property but not both to create an image. For example, the following are valid values:
+          "sourceDisk": "A String", # URL of the source disk used to create this image. This can be a full or valid partial URL. You must provide either this property or the rawDisk.source property but not both to create an image. For example, the following are valid values:
               # - https://www.googleapis.com/compute/v1/projects/project/zones/zone/disks/disk
               # - projects/project/zones/zone/disks/disk
               # - zones/zone/disks/disk
@@ -577,10 +583,10 @@
           "description": "A String", # An optional description of this resource. Provide this property when you create the resource.
           "family": "A String", # The name of the image family to which this image belongs. You can create disks by specifying an image family instead of a specific image name. The image family always returns its latest image that is not deprecated. The name of the image family must comply with RFC1035.
           "deprecated": { # Deprecation status for a public resource. # The deprecation status associated with this image.
-            "deleted": "A String", # An optional RFC3339 timestamp on or after which the deprecation state of this resource will be changed to DELETED.
-            "deprecated": "A String", # An optional RFC3339 timestamp on or after which the deprecation state of this resource will be changed to DEPRECATED.
+            "deleted": "A String", # An optional RFC3339 timestamp on or after which the state of this resource is intended to change to DELETED. This is only informational and the status will not change unless the client explicitly changes it.
+            "deprecated": "A String", # An optional RFC3339 timestamp on or after which the state of this resource is intended to change to DEPRECATED. This is only informational and the status will not change unless the client explicitly changes it.
             "state": "A String", # The deprecation state of this resource. This can be DEPRECATED, OBSOLETE, or DELETED. Operations which create a new resource using a DEPRECATED resource will return successfully, but with a warning indicating the deprecated resource and recommending its replacement. Operations which use OBSOLETE or DELETED resources will be rejected and result in an error.
-            "obsolete": "A String", # An optional RFC3339 timestamp on or after which the deprecation state of this resource will be changed to OBSOLETE.
+            "obsolete": "A String", # An optional RFC3339 timestamp on or after which the state of this resource is intended to change to OBSOLETE. This is only informational and the status will not change unless the client explicitly changes it.
             "replacement": "A String", # The URL of the suggested replacement for a deprecated resource. The suggested replacement resource must be the same kind of resource as the deprecated resource.
           },
           "labelFingerprint": "A String", # A fingerprint for the labels being applied to this image, which is essentially a hash of the labels used for optimistic locking. The fingerprint is initially generated by Compute Engine and changes after every request to modify or update labels. You must always provide an up-to-date fingerprint hash in order to update or change labels.
@@ -591,9 +597,11 @@
           },
           "archiveSizeBytes": "A String", # Size of the image tar.gz archive stored in Google Cloud Storage (in bytes).
           "sourceDiskId": "A String", # The ID value of the disk used to create this image. This value may be used to determine whether the image was taken from the current or a previous instance of a given disk name.
-          "guestOsFeatures": [ # A list of features to enable on the guest OS. Applicable for bootable images only. Currently, only one feature is supported, VIRTIO_SCSCI_MULTIQUEUE, which allows each virtual CPU to have its own queue. For Windows images, you can only enable VIRTIO_SCSCI_MULTIQUEUE on images with driver version 1.2.0.1621 or higher. Linux images with kernel versions 3.17 and higher will support VIRTIO_SCSCI_MULTIQUEUE.
+          "guestOsFeatures": [ # A list of features to enable on the guest OS. Applicable for bootable images only. Currently, only one feature can be enabled, VIRTIO_SCSCI_MULTIQUEUE, which allows each virtual CPU to have its own queue. For Windows images, you can only enable VIRTIO_SCSCI_MULTIQUEUE on images with driver version 1.2.0.1621 or higher. Linux images with kernel versions 3.17 and higher will support VIRTIO_SCSCI_MULTIQUEUE.
+              #
+              # For new Windows images, the server might also populate this field with the value WINDOWS, to indicate that this is a Windows image. This value is purely informational and does not enable or disable any features.
             { # Guest OS features.
-              "type": "A String", # The type of supported feature. Currenty only VIRTIO_SCSI_MULTIQUEUE is supported.
+              "type": "A String", # The type of supported feature. Currenty only VIRTIO_SCSI_MULTIQUEUE is supported. For newer Windows images, the server might also populate this property with the value WINDOWS to indicate that this is a Windows image. This value is purely informational and does not enable or disable any features.
             },
           ],
           "diskSizeGb": "A String", # Size of the image when restored onto a persistent disk (in GB).
@@ -712,7 +720,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
diff --git a/docs/dyn/compute_alpha.instanceGroupManagers.html b/docs/dyn/compute_alpha.instanceGroupManagers.html
index 21847ff..5980cf7 100644
--- a/docs/dyn/compute_alpha.instanceGroupManagers.html
+++ b/docs/dyn/compute_alpha.instanceGroupManagers.html
@@ -99,7 +99,7 @@
   <code><a href="#list">list(project, zone, orderBy=None, maxResults=None, pageToken=None, filter=None)</a></code></p>
 <p class="firstline">Retrieves a list of managed instance groups that are contained within the specified project and zone.</p>
 <p class="toc_element">
-  <code><a href="#listManagedInstances">listManagedInstances(project, zone, instanceGroupManager)</a></code></p>
+  <code><a href="#listManagedInstances">listManagedInstances(project, zone, instanceGroupManager, order_by=None, maxResults=None, pageToken=None, filter=None)</a></code></p>
 <p class="firstline">Lists all of the instances in the managed instance group. Each instance in the list has a currentAction, which indicates the action that the managed instance group is performing on the instance. For example, if the group is still creating an instance, the currentAction is CREATING. If a previous action failed, the list displays the errors for that failed action.</p>
 <p class="toc_element">
   <code><a href="#list_next">list_next(previous_request, previous_response)</a></code></p>
@@ -196,7 +196,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
@@ -243,56 +243,19 @@
         },
         "instanceGroupManagers": [ # [Output Only] The list of managed instance groups that are contained in the specified project and zone.
           { # An Instance Group Manager resource.
-              "currentActions": { # [Output Only] The list of instance actions and the number of instances in this managed instance group that are scheduled for each of those actions.
-                "none": 42, # [Output Only] The number of instances in the managed instance group that are running and have no scheduled actions.
-                "recreating": 42, # [Output Only] The number of instances in the managed instance group that are scheduled to be recreated or are currently being being recreated. Recreating an instance deletes the existing root persistent disk and creates a new disk from the image that is defined in the instance template.
-                "creating": 42, # [Output Only] The number of instances in the managed instance group that are scheduled to be created or are currently being created. If the group fails to create any of these instances, it tries again until it creates the instance successfully.
-                    #
-                    # If you have disabled creation retries, this field will not be populated; instead, the creatingWithoutRetries field will be populated.
-                "restarting": 42, # [Output Only] The number of instances in the managed instance group that are scheduled to be restarted or are currently being restarted.
-                "abandoning": 42, # [Output Only] The total number of instances in the managed instance group that are scheduled to be abandoned. Abandoning an instance removes it from the managed instance group without deleting it.
-                "deleting": 42, # [Output Only] The number of instances in the managed instance group that are scheduled to be deleted or are currently being deleted.
-                "creatingWithoutRetries": 42, # [Output Only] The number of instances that the managed instance group will attempt to create. The group attempts to create each instance only once. If the group fails to create any of these instances, it decreases the group's targetSize value accordingly.
-                "refreshing": 42, # [Output Only] The number of instances in the managed instance group that are being reconfigured with properties that do not require a restart or a recreate action. For example, setting or removing target pools for the instance.
-              },
-              "description": "A String", # An optional description of this resource. Provide this property when you create the resource.
-              "zone": "A String", # [Output Only] The URL of the zone where the managed instance group is located (for zonal resources).
-              "versions": [ # Versions supported by this IGM. User should set this field if they need fine-grained control over how many instances in each version are run by this IGM. Versions are keyed by instanceTemplate. Every instanceTemplate can appear at most once. This field overrides instanceTemplate field. If both instanceTemplate and versions are set, the user receives a warning. "instanceTemplate: X" is semantically equivalent to "versions [ { instanceTemplate: X } ]". Exactly one version must have targetSize field left unset. Size of such a version will be calculated automatically.
-                {
-                  "targetSize": { # Encapsulates numeric value that can be either absolute or relative. # Intended number of instances that are created from instanceTemplate. The final number of instances created from instanceTemplate will be equal to: * if expressed as fixed number: min(targetSize.fixed, instanceGroupManager.targetSize), * if expressed as percent: ceiling(targetSize.percent * InstanceGroupManager.targetSize). If unset, this version will handle all the remaining instances.
-                    "calculated": 42, # [Output Only] Absolute value calculated based on mode: mode = fixed -> calculated = fixed = percent -> calculated = ceiling(percent/100 * base_value)
-                    "fixed": 42, # fixed must be non-negative.
-                    "percent": 42, # percent must belong to [0, 100].
-                  },
-                  "instanceTemplate": "A String",
-                  "tag": "A String", # Tag describing the version. Used to trigger rollout of a target version even if instance_template remains unchanged.
-                },
-              ],
-              "autoHealingPolicies": [ # The autohealing policy for this managed instance group. You can specify only one value.
-                {
-                  "healthCheck": "A String", # The URL for the HealthCheck that signals autohealing.
-                  "initialDelaySec": 42, # The number of seconds that the managed instance group waits before it applies autohealing policies to new instances or recently recreated instances. This initial delay allows instances to initialize and run their startup scripts before the instance group determines that they are UNHEALTHY. This prevents the managed instance group from recreating its instances prematurely. This value must be from range [0, 3600].
-                  "maxUnavailable": { # Encapsulates numeric value that can be either absolute or relative. # Maximum number of instances that can be unavailable when auto-healing. The instance is considered available if all of the following conditions are satisfied: 1. instance's status is RUNNING 2. instance's liveness health check result was observed to be HEALTHY at least once By default, a percent value of 100% is used.
-                    "calculated": 42, # [Output Only] Absolute value calculated based on mode: mode = fixed -> calculated = fixed = percent -> calculated = ceiling(percent/100 * base_value)
-                    "fixed": 42, # fixed must be non-negative.
-                    "percent": 42, # percent must belong to [0, 100].
-                  },
-                },
-              ],
-              "targetSize": 42, # The target number of running instances for this managed instance group. Deleting or abandoning instances reduces this number. Resizing the group changes this number.
               "failoverAction": "A String", # The action to perform in case of zone failure. Only one value is supported, NO_FAILOVER. The default is NO_FAILOVER.
-              "instanceGroup": "A String", # [Output Only] The URL of the Instance Group resource.
-              "kind": "compute#instanceGroupManager", # [Output Only] The resource type, which is always compute#instanceGroupManager for managed instance groups.
-              "targetPools": [ # The URLs for all TargetPool resources to which instances in the instanceGroup field are added. The target pools automatically apply to all of the instances in the managed instance group.
-                "A String",
-              ],
-              "baseInstanceName": "A String", # The base instance name to use for instances in this group. The value must be 1-58 characters long. Instances are named by appending a hyphen and a random four-character string to the base instance name. The base instance name must comply with RFC1035.
               "pendingActions": { # [Output Only] The list of instance actions and the number of instances in this managed instance group that are pending for each of those actions.
                 "recreating": 42, # [Output Only] The number of instances in the managed instance group that are pending to be recreated.
                 "deleting": 42, # [Output Only] The number of instances in the managed instance group that are pending to be deleted.
                 "creating": 42, # [Output Only] The number of instances in the managed instance group that are pending to be created.
                 "restarting": 42, # [Output Only] The number of instances in the managed instance group that are pending to be restarted.
               },
+              "creationTimestamp": "A String", # [Output Only] The creation timestamp for this managed instance group in RFC3339 text format.
+              "kind": "compute#instanceGroupManager", # [Output Only] The resource type, which is always compute#instanceGroupManager for managed instance groups.
+              "zone": "A String", # [Output Only] The URL of the zone where the managed instance group is located (for zonal resources).
+              "serviceAccount": "A String", # Service account will be used as credentials for all operations performed by managed instance group on instances. The service accounts needs all permissions required to create and delete instances. When not specified, the service account {projectNumber}@cloudservices.gserviceaccount.com will be used.
+              "id": "A String", # [Output Only] A unique identifier for this resource type. The server generates this identifier.
+              "baseInstanceName": "A String", # The base instance name to use for instances in this group. The value must be 1-58 characters long. Instances are named by appending a hyphen and a random four-character string to the base instance name. The base instance name must comply with RFC1035.
               "updatePolicy": { # The update policy for this managed instance group.
                 "type": "A String",
                 "maxSurge": { # Encapsulates numeric value that can be either absolute or relative. # Maximum number of instances that can be created above the InstanceGroupManager.targetSize during the update process. By default, a fixed value of 1 is used. Using maxSurge > 0 will cause instance names to change during the update process. At least one of { maxSurge, maxUnavailable } must be greater than 0.
@@ -308,19 +271,58 @@
                 },
                 "minReadySec": 42, # Minimum number of seconds to wait for after a newly created instance becomes available. This value must be from range [0, 3600].
               },
-              "fingerprint": "A String", # [Output Only] The fingerprint of the resource data. You can use this optional field for optimistic locking when you update the resource.
-              "region": "A String", # [Output Only] The URL of the region where the managed instance group resides (for regional resources).
-              "instanceTemplate": "A String", # The URL of the instance template that is specified for this managed instance group. The group uses this template to create all new instances in the managed instance group.
+              "targetPools": [ # The URLs for all TargetPool resources to which instances in the instanceGroup field are added. The target pools automatically apply to all of the instances in the managed instance group.
+                "A String",
+              ],
               "namedPorts": [ # Named ports configured for the Instance Groups complementary to this Instance Group Manager.
                 { # The named port. For example: .
                   "name": "A String", # The name for this named port. The name must be 1-63 characters long, and comply with RFC1035.
                   "port": 42, # The port number, which can be a value between 1 and 65535.
                 },
               ],
-              "creationTimestamp": "A String", # [Output Only] The creation timestamp for this managed instance group in RFC3339 text format.
-              "id": "A String", # [Output Only] A unique identifier for this resource type. The server generates this identifier.
-              "selfLink": "A String", # [Output Only] The URL for this managed instance group. The server defines this URL.
+              "description": "A String", # An optional description of this resource. Provide this property when you create the resource.
+              "autoHealingPolicies": [ # The autohealing policy for this managed instance group. You can specify only one value.
+                {
+                  "healthCheck": "A String", # The URL for the health check that signals autohealing.
+                  "initialDelaySec": 42, # The number of seconds that the managed instance group waits before it applies autohealing policies to new instances or recently recreated instances. This initial delay allows instances to initialize and run their startup scripts before the instance group determines that they are UNHEALTHY. This prevents the managed instance group from recreating its instances prematurely. This value must be from range [0, 3600].
+                  "maxUnavailable": { # Encapsulates numeric value that can be either absolute or relative. # Maximum number of instances that can be unavailable when auto-healing. The instance is considered available if all of the following conditions are satisfied: 1. instance's status is RUNNING 2. instance's liveness health check result was observed to be HEALTHY at least once By default, a percent value of 100% is used.
+                    "calculated": 42, # [Output Only] Absolute value calculated based on mode: mode = fixed -> calculated = fixed = percent -> calculated = ceiling(percent/100 * base_value)
+                    "fixed": 42, # fixed must be non-negative.
+                    "percent": 42, # percent must belong to [0, 100].
+                  },
+                },
+              ],
+              "instanceGroup": "A String", # [Output Only] The URL of the Instance Group resource.
+              "targetSize": 42, # The target number of running instances for this managed instance group. Deleting or abandoning instances reduces this number. Resizing the group changes this number.
+              "instanceTemplate": "A String", # The URL of the instance template that is specified for this managed instance group. The group uses this template to create all new instances in the managed instance group.
+              "fingerprint": "A String", # [Output Only] The fingerprint of the resource data. You can use this optional field for optimistic locking when you update the resource.
+              "currentActions": { # [Output Only] The list of instance actions and the number of instances in this managed instance group that are scheduled for each of those actions.
+                "none": 42, # [Output Only] The number of instances in the managed instance group that are running and have no scheduled actions.
+                "recreating": 42, # [Output Only] The number of instances in the managed instance group that are scheduled to be recreated or are currently being being recreated. Recreating an instance deletes the existing root persistent disk and creates a new disk from the image that is defined in the instance template.
+                "creating": 42, # [Output Only] The number of instances in the managed instance group that are scheduled to be created or are currently being created. If the group fails to create any of these instances, it tries again until it creates the instance successfully.
+                    #
+                    # If you have disabled creation retries, this field will not be populated; instead, the creatingWithoutRetries field will be populated.
+                "verifying": 42, # [Output Only] The number of instances in the managed instance group that are being verified.
+                "restarting": 42, # [Output Only] The number of instances in the managed instance group that are scheduled to be restarted or are currently being restarted.
+                "abandoning": 42, # [Output Only] The total number of instances in the managed instance group that are scheduled to be abandoned. Abandoning an instance removes it from the managed instance group without deleting it.
+                "deleting": 42, # [Output Only] The number of instances in the managed instance group that are scheduled to be deleted or are currently being deleted.
+                "creatingWithoutRetries": 42, # [Output Only] The number of instances that the managed instance group will attempt to create. The group attempts to create each instance only once. If the group fails to create any of these instances, it decreases the group's targetSize value accordingly.
+                "refreshing": 42, # [Output Only] The number of instances in the managed instance group that are being reconfigured with properties that do not require a restart or a recreate action. For example, setting or removing target pools for the instance.
+              },
               "name": "A String", # The name of the managed instance group. The name must be 1-63 characters long, and comply with RFC1035.
+              "versions": [ # Versions supported by this IGM. User should set this field if they need fine-grained control over how many instances in each version are run by this IGM. Versions are keyed by instanceTemplate. Every instanceTemplate can appear at most once. This field overrides instanceTemplate field. If both instanceTemplate and versions are set, the user receives a warning. "instanceTemplate: X" is semantically equivalent to "versions [ { instanceTemplate: X } ]". Exactly one version must have targetSize field left unset. Size of such a version will be calculated automatically.
+                {
+                  "targetSize": { # Encapsulates numeric value that can be either absolute or relative. # Intended number of instances that are created from instanceTemplate. The final number of instances created from instanceTemplate will be equal to: * if expressed as fixed number: min(targetSize.fixed, instanceGroupManager.targetSize), * if expressed as percent: ceiling(targetSize.percent * InstanceGroupManager.targetSize). If unset, this version will handle all the remaining instances.
+                    "calculated": 42, # [Output Only] Absolute value calculated based on mode: mode = fixed -> calculated = fixed = percent -> calculated = ceiling(percent/100 * base_value)
+                    "fixed": 42, # fixed must be non-negative.
+                    "percent": 42, # percent must belong to [0, 100].
+                  },
+                  "instanceTemplate": "A String",
+                  "tag": "A String", # Tag describing the version. Used to trigger rollout of a target version even if instance_template remains unchanged.
+                },
+              ],
+              "region": "A String", # [Output Only] The URL of the region where the managed instance group resides (for regional resources).
+              "selfLink": "A String", # [Output Only] The URL for this managed instance group. The server defines this URL.
             },
         ],
       },
@@ -400,7 +402,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
@@ -468,7 +470,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
@@ -485,56 +487,19 @@
   An object of the form:
 
     { # An Instance Group Manager resource.
-      "currentActions": { # [Output Only] The list of instance actions and the number of instances in this managed instance group that are scheduled for each of those actions.
-        "none": 42, # [Output Only] The number of instances in the managed instance group that are running and have no scheduled actions.
-        "recreating": 42, # [Output Only] The number of instances in the managed instance group that are scheduled to be recreated or are currently being being recreated. Recreating an instance deletes the existing root persistent disk and creates a new disk from the image that is defined in the instance template.
-        "creating": 42, # [Output Only] The number of instances in the managed instance group that are scheduled to be created or are currently being created. If the group fails to create any of these instances, it tries again until it creates the instance successfully.
-            #
-            # If you have disabled creation retries, this field will not be populated; instead, the creatingWithoutRetries field will be populated.
-        "restarting": 42, # [Output Only] The number of instances in the managed instance group that are scheduled to be restarted or are currently being restarted.
-        "abandoning": 42, # [Output Only] The total number of instances in the managed instance group that are scheduled to be abandoned. Abandoning an instance removes it from the managed instance group without deleting it.
-        "deleting": 42, # [Output Only] The number of instances in the managed instance group that are scheduled to be deleted or are currently being deleted.
-        "creatingWithoutRetries": 42, # [Output Only] The number of instances that the managed instance group will attempt to create. The group attempts to create each instance only once. If the group fails to create any of these instances, it decreases the group's targetSize value accordingly.
-        "refreshing": 42, # [Output Only] The number of instances in the managed instance group that are being reconfigured with properties that do not require a restart or a recreate action. For example, setting or removing target pools for the instance.
-      },
-      "description": "A String", # An optional description of this resource. Provide this property when you create the resource.
-      "zone": "A String", # [Output Only] The URL of the zone where the managed instance group is located (for zonal resources).
-      "versions": [ # Versions supported by this IGM. User should set this field if they need fine-grained control over how many instances in each version are run by this IGM. Versions are keyed by instanceTemplate. Every instanceTemplate can appear at most once. This field overrides instanceTemplate field. If both instanceTemplate and versions are set, the user receives a warning. "instanceTemplate: X" is semantically equivalent to "versions [ { instanceTemplate: X } ]". Exactly one version must have targetSize field left unset. Size of such a version will be calculated automatically.
-        {
-          "targetSize": { # Encapsulates numeric value that can be either absolute or relative. # Intended number of instances that are created from instanceTemplate. The final number of instances created from instanceTemplate will be equal to: * if expressed as fixed number: min(targetSize.fixed, instanceGroupManager.targetSize), * if expressed as percent: ceiling(targetSize.percent * InstanceGroupManager.targetSize). If unset, this version will handle all the remaining instances.
-            "calculated": 42, # [Output Only] Absolute value calculated based on mode: mode = fixed -> calculated = fixed = percent -> calculated = ceiling(percent/100 * base_value)
-            "fixed": 42, # fixed must be non-negative.
-            "percent": 42, # percent must belong to [0, 100].
-          },
-          "instanceTemplate": "A String",
-          "tag": "A String", # Tag describing the version. Used to trigger rollout of a target version even if instance_template remains unchanged.
-        },
-      ],
-      "autoHealingPolicies": [ # The autohealing policy for this managed instance group. You can specify only one value.
-        {
-          "healthCheck": "A String", # The URL for the HealthCheck that signals autohealing.
-          "initialDelaySec": 42, # The number of seconds that the managed instance group waits before it applies autohealing policies to new instances or recently recreated instances. This initial delay allows instances to initialize and run their startup scripts before the instance group determines that they are UNHEALTHY. This prevents the managed instance group from recreating its instances prematurely. This value must be from range [0, 3600].
-          "maxUnavailable": { # Encapsulates numeric value that can be either absolute or relative. # Maximum number of instances that can be unavailable when auto-healing. The instance is considered available if all of the following conditions are satisfied: 1. instance's status is RUNNING 2. instance's liveness health check result was observed to be HEALTHY at least once By default, a percent value of 100% is used.
-            "calculated": 42, # [Output Only] Absolute value calculated based on mode: mode = fixed -> calculated = fixed = percent -> calculated = ceiling(percent/100 * base_value)
-            "fixed": 42, # fixed must be non-negative.
-            "percent": 42, # percent must belong to [0, 100].
-          },
-        },
-      ],
-      "targetSize": 42, # The target number of running instances for this managed instance group. Deleting or abandoning instances reduces this number. Resizing the group changes this number.
       "failoverAction": "A String", # The action to perform in case of zone failure. Only one value is supported, NO_FAILOVER. The default is NO_FAILOVER.
-      "instanceGroup": "A String", # [Output Only] The URL of the Instance Group resource.
-      "kind": "compute#instanceGroupManager", # [Output Only] The resource type, which is always compute#instanceGroupManager for managed instance groups.
-      "targetPools": [ # The URLs for all TargetPool resources to which instances in the instanceGroup field are added. The target pools automatically apply to all of the instances in the managed instance group.
-        "A String",
-      ],
-      "baseInstanceName": "A String", # The base instance name to use for instances in this group. The value must be 1-58 characters long. Instances are named by appending a hyphen and a random four-character string to the base instance name. The base instance name must comply with RFC1035.
       "pendingActions": { # [Output Only] The list of instance actions and the number of instances in this managed instance group that are pending for each of those actions.
         "recreating": 42, # [Output Only] The number of instances in the managed instance group that are pending to be recreated.
         "deleting": 42, # [Output Only] The number of instances in the managed instance group that are pending to be deleted.
         "creating": 42, # [Output Only] The number of instances in the managed instance group that are pending to be created.
         "restarting": 42, # [Output Only] The number of instances in the managed instance group that are pending to be restarted.
       },
+      "creationTimestamp": "A String", # [Output Only] The creation timestamp for this managed instance group in RFC3339 text format.
+      "kind": "compute#instanceGroupManager", # [Output Only] The resource type, which is always compute#instanceGroupManager for managed instance groups.
+      "zone": "A String", # [Output Only] The URL of the zone where the managed instance group is located (for zonal resources).
+      "serviceAccount": "A String", # Service account will be used as credentials for all operations performed by managed instance group on instances. The service accounts needs all permissions required to create and delete instances. When not specified, the service account {projectNumber}@cloudservices.gserviceaccount.com will be used.
+      "id": "A String", # [Output Only] A unique identifier for this resource type. The server generates this identifier.
+      "baseInstanceName": "A String", # The base instance name to use for instances in this group. The value must be 1-58 characters long. Instances are named by appending a hyphen and a random four-character string to the base instance name. The base instance name must comply with RFC1035.
       "updatePolicy": { # The update policy for this managed instance group.
         "type": "A String",
         "maxSurge": { # Encapsulates numeric value that can be either absolute or relative. # Maximum number of instances that can be created above the InstanceGroupManager.targetSize during the update process. By default, a fixed value of 1 is used. Using maxSurge > 0 will cause instance names to change during the update process. At least one of { maxSurge, maxUnavailable } must be greater than 0.
@@ -550,19 +515,58 @@
         },
         "minReadySec": 42, # Minimum number of seconds to wait for after a newly created instance becomes available. This value must be from range [0, 3600].
       },
-      "fingerprint": "A String", # [Output Only] The fingerprint of the resource data. You can use this optional field for optimistic locking when you update the resource.
-      "region": "A String", # [Output Only] The URL of the region where the managed instance group resides (for regional resources).
-      "instanceTemplate": "A String", # The URL of the instance template that is specified for this managed instance group. The group uses this template to create all new instances in the managed instance group.
+      "targetPools": [ # The URLs for all TargetPool resources to which instances in the instanceGroup field are added. The target pools automatically apply to all of the instances in the managed instance group.
+        "A String",
+      ],
       "namedPorts": [ # Named ports configured for the Instance Groups complementary to this Instance Group Manager.
         { # The named port. For example: .
           "name": "A String", # The name for this named port. The name must be 1-63 characters long, and comply with RFC1035.
           "port": 42, # The port number, which can be a value between 1 and 65535.
         },
       ],
-      "creationTimestamp": "A String", # [Output Only] The creation timestamp for this managed instance group in RFC3339 text format.
-      "id": "A String", # [Output Only] A unique identifier for this resource type. The server generates this identifier.
-      "selfLink": "A String", # [Output Only] The URL for this managed instance group. The server defines this URL.
+      "description": "A String", # An optional description of this resource. Provide this property when you create the resource.
+      "autoHealingPolicies": [ # The autohealing policy for this managed instance group. You can specify only one value.
+        {
+          "healthCheck": "A String", # The URL for the health check that signals autohealing.
+          "initialDelaySec": 42, # The number of seconds that the managed instance group waits before it applies autohealing policies to new instances or recently recreated instances. This initial delay allows instances to initialize and run their startup scripts before the instance group determines that they are UNHEALTHY. This prevents the managed instance group from recreating its instances prematurely. This value must be from range [0, 3600].
+          "maxUnavailable": { # Encapsulates numeric value that can be either absolute or relative. # Maximum number of instances that can be unavailable when auto-healing. The instance is considered available if all of the following conditions are satisfied: 1. instance's status is RUNNING 2. instance's liveness health check result was observed to be HEALTHY at least once By default, a percent value of 100% is used.
+            "calculated": 42, # [Output Only] Absolute value calculated based on mode: mode = fixed -> calculated = fixed = percent -> calculated = ceiling(percent/100 * base_value)
+            "fixed": 42, # fixed must be non-negative.
+            "percent": 42, # percent must belong to [0, 100].
+          },
+        },
+      ],
+      "instanceGroup": "A String", # [Output Only] The URL of the Instance Group resource.
+      "targetSize": 42, # The target number of running instances for this managed instance group. Deleting or abandoning instances reduces this number. Resizing the group changes this number.
+      "instanceTemplate": "A String", # The URL of the instance template that is specified for this managed instance group. The group uses this template to create all new instances in the managed instance group.
+      "fingerprint": "A String", # [Output Only] The fingerprint of the resource data. You can use this optional field for optimistic locking when you update the resource.
+      "currentActions": { # [Output Only] The list of instance actions and the number of instances in this managed instance group that are scheduled for each of those actions.
+        "none": 42, # [Output Only] The number of instances in the managed instance group that are running and have no scheduled actions.
+        "recreating": 42, # [Output Only] The number of instances in the managed instance group that are scheduled to be recreated or are currently being being recreated. Recreating an instance deletes the existing root persistent disk and creates a new disk from the image that is defined in the instance template.
+        "creating": 42, # [Output Only] The number of instances in the managed instance group that are scheduled to be created or are currently being created. If the group fails to create any of these instances, it tries again until it creates the instance successfully.
+            #
+            # If you have disabled creation retries, this field will not be populated; instead, the creatingWithoutRetries field will be populated.
+        "verifying": 42, # [Output Only] The number of instances in the managed instance group that are being verified.
+        "restarting": 42, # [Output Only] The number of instances in the managed instance group that are scheduled to be restarted or are currently being restarted.
+        "abandoning": 42, # [Output Only] The total number of instances in the managed instance group that are scheduled to be abandoned. Abandoning an instance removes it from the managed instance group without deleting it.
+        "deleting": 42, # [Output Only] The number of instances in the managed instance group that are scheduled to be deleted or are currently being deleted.
+        "creatingWithoutRetries": 42, # [Output Only] The number of instances that the managed instance group will attempt to create. The group attempts to create each instance only once. If the group fails to create any of these instances, it decreases the group's targetSize value accordingly.
+        "refreshing": 42, # [Output Only] The number of instances in the managed instance group that are being reconfigured with properties that do not require a restart or a recreate action. For example, setting or removing target pools for the instance.
+      },
       "name": "A String", # The name of the managed instance group. The name must be 1-63 characters long, and comply with RFC1035.
+      "versions": [ # Versions supported by this IGM. User should set this field if they need fine-grained control over how many instances in each version are run by this IGM. Versions are keyed by instanceTemplate. Every instanceTemplate can appear at most once. This field overrides instanceTemplate field. If both instanceTemplate and versions are set, the user receives a warning. "instanceTemplate: X" is semantically equivalent to "versions [ { instanceTemplate: X } ]". Exactly one version must have targetSize field left unset. Size of such a version will be calculated automatically.
+        {
+          "targetSize": { # Encapsulates numeric value that can be either absolute or relative. # Intended number of instances that are created from instanceTemplate. The final number of instances created from instanceTemplate will be equal to: * if expressed as fixed number: min(targetSize.fixed, instanceGroupManager.targetSize), * if expressed as percent: ceiling(targetSize.percent * InstanceGroupManager.targetSize). If unset, this version will handle all the remaining instances.
+            "calculated": 42, # [Output Only] Absolute value calculated based on mode: mode = fixed -> calculated = fixed = percent -> calculated = ceiling(percent/100 * base_value)
+            "fixed": 42, # fixed must be non-negative.
+            "percent": 42, # percent must belong to [0, 100].
+          },
+          "instanceTemplate": "A String",
+          "tag": "A String", # Tag describing the version. Used to trigger rollout of a target version even if instance_template remains unchanged.
+        },
+      ],
+      "region": "A String", # [Output Only] The URL of the region where the managed instance group resides (for regional resources).
+      "selfLink": "A String", # [Output Only] The URL for this managed instance group. The server defines this URL.
     }</pre>
 </div>
 
@@ -577,56 +581,19 @@
     The object takes the form of:
 
 { # An Instance Group Manager resource.
-    "currentActions": { # [Output Only] The list of instance actions and the number of instances in this managed instance group that are scheduled for each of those actions.
-      "none": 42, # [Output Only] The number of instances in the managed instance group that are running and have no scheduled actions.
-      "recreating": 42, # [Output Only] The number of instances in the managed instance group that are scheduled to be recreated or are currently being being recreated. Recreating an instance deletes the existing root persistent disk and creates a new disk from the image that is defined in the instance template.
-      "creating": 42, # [Output Only] The number of instances in the managed instance group that are scheduled to be created or are currently being created. If the group fails to create any of these instances, it tries again until it creates the instance successfully.
-          #
-          # If you have disabled creation retries, this field will not be populated; instead, the creatingWithoutRetries field will be populated.
-      "restarting": 42, # [Output Only] The number of instances in the managed instance group that are scheduled to be restarted or are currently being restarted.
-      "abandoning": 42, # [Output Only] The total number of instances in the managed instance group that are scheduled to be abandoned. Abandoning an instance removes it from the managed instance group without deleting it.
-      "deleting": 42, # [Output Only] The number of instances in the managed instance group that are scheduled to be deleted or are currently being deleted.
-      "creatingWithoutRetries": 42, # [Output Only] The number of instances that the managed instance group will attempt to create. The group attempts to create each instance only once. If the group fails to create any of these instances, it decreases the group's targetSize value accordingly.
-      "refreshing": 42, # [Output Only] The number of instances in the managed instance group that are being reconfigured with properties that do not require a restart or a recreate action. For example, setting or removing target pools for the instance.
-    },
-    "description": "A String", # An optional description of this resource. Provide this property when you create the resource.
-    "zone": "A String", # [Output Only] The URL of the zone where the managed instance group is located (for zonal resources).
-    "versions": [ # Versions supported by this IGM. User should set this field if they need fine-grained control over how many instances in each version are run by this IGM. Versions are keyed by instanceTemplate. Every instanceTemplate can appear at most once. This field overrides instanceTemplate field. If both instanceTemplate and versions are set, the user receives a warning. "instanceTemplate: X" is semantically equivalent to "versions [ { instanceTemplate: X } ]". Exactly one version must have targetSize field left unset. Size of such a version will be calculated automatically.
-      {
-        "targetSize": { # Encapsulates numeric value that can be either absolute or relative. # Intended number of instances that are created from instanceTemplate. The final number of instances created from instanceTemplate will be equal to: * if expressed as fixed number: min(targetSize.fixed, instanceGroupManager.targetSize), * if expressed as percent: ceiling(targetSize.percent * InstanceGroupManager.targetSize). If unset, this version will handle all the remaining instances.
-          "calculated": 42, # [Output Only] Absolute value calculated based on mode: mode = fixed -> calculated = fixed = percent -> calculated = ceiling(percent/100 * base_value)
-          "fixed": 42, # fixed must be non-negative.
-          "percent": 42, # percent must belong to [0, 100].
-        },
-        "instanceTemplate": "A String",
-        "tag": "A String", # Tag describing the version. Used to trigger rollout of a target version even if instance_template remains unchanged.
-      },
-    ],
-    "autoHealingPolicies": [ # The autohealing policy for this managed instance group. You can specify only one value.
-      {
-        "healthCheck": "A String", # The URL for the HealthCheck that signals autohealing.
-        "initialDelaySec": 42, # The number of seconds that the managed instance group waits before it applies autohealing policies to new instances or recently recreated instances. This initial delay allows instances to initialize and run their startup scripts before the instance group determines that they are UNHEALTHY. This prevents the managed instance group from recreating its instances prematurely. This value must be from range [0, 3600].
-        "maxUnavailable": { # Encapsulates numeric value that can be either absolute or relative. # Maximum number of instances that can be unavailable when auto-healing. The instance is considered available if all of the following conditions are satisfied: 1. instance's status is RUNNING 2. instance's liveness health check result was observed to be HEALTHY at least once By default, a percent value of 100% is used.
-          "calculated": 42, # [Output Only] Absolute value calculated based on mode: mode = fixed -> calculated = fixed = percent -> calculated = ceiling(percent/100 * base_value)
-          "fixed": 42, # fixed must be non-negative.
-          "percent": 42, # percent must belong to [0, 100].
-        },
-      },
-    ],
-    "targetSize": 42, # The target number of running instances for this managed instance group. Deleting or abandoning instances reduces this number. Resizing the group changes this number.
     "failoverAction": "A String", # The action to perform in case of zone failure. Only one value is supported, NO_FAILOVER. The default is NO_FAILOVER.
-    "instanceGroup": "A String", # [Output Only] The URL of the Instance Group resource.
-    "kind": "compute#instanceGroupManager", # [Output Only] The resource type, which is always compute#instanceGroupManager for managed instance groups.
-    "targetPools": [ # The URLs for all TargetPool resources to which instances in the instanceGroup field are added. The target pools automatically apply to all of the instances in the managed instance group.
-      "A String",
-    ],
-    "baseInstanceName": "A String", # The base instance name to use for instances in this group. The value must be 1-58 characters long. Instances are named by appending a hyphen and a random four-character string to the base instance name. The base instance name must comply with RFC1035.
     "pendingActions": { # [Output Only] The list of instance actions and the number of instances in this managed instance group that are pending for each of those actions.
       "recreating": 42, # [Output Only] The number of instances in the managed instance group that are pending to be recreated.
       "deleting": 42, # [Output Only] The number of instances in the managed instance group that are pending to be deleted.
       "creating": 42, # [Output Only] The number of instances in the managed instance group that are pending to be created.
       "restarting": 42, # [Output Only] The number of instances in the managed instance group that are pending to be restarted.
     },
+    "creationTimestamp": "A String", # [Output Only] The creation timestamp for this managed instance group in RFC3339 text format.
+    "kind": "compute#instanceGroupManager", # [Output Only] The resource type, which is always compute#instanceGroupManager for managed instance groups.
+    "zone": "A String", # [Output Only] The URL of the zone where the managed instance group is located (for zonal resources).
+    "serviceAccount": "A String", # Service account will be used as credentials for all operations performed by managed instance group on instances. The service accounts needs all permissions required to create and delete instances. When not specified, the service account {projectNumber}@cloudservices.gserviceaccount.com will be used.
+    "id": "A String", # [Output Only] A unique identifier for this resource type. The server generates this identifier.
+    "baseInstanceName": "A String", # The base instance name to use for instances in this group. The value must be 1-58 characters long. Instances are named by appending a hyphen and a random four-character string to the base instance name. The base instance name must comply with RFC1035.
     "updatePolicy": { # The update policy for this managed instance group.
       "type": "A String",
       "maxSurge": { # Encapsulates numeric value that can be either absolute or relative. # Maximum number of instances that can be created above the InstanceGroupManager.targetSize during the update process. By default, a fixed value of 1 is used. Using maxSurge > 0 will cause instance names to change during the update process. At least one of { maxSurge, maxUnavailable } must be greater than 0.
@@ -642,19 +609,58 @@
       },
       "minReadySec": 42, # Minimum number of seconds to wait for after a newly created instance becomes available. This value must be from range [0, 3600].
     },
-    "fingerprint": "A String", # [Output Only] The fingerprint of the resource data. You can use this optional field for optimistic locking when you update the resource.
-    "region": "A String", # [Output Only] The URL of the region where the managed instance group resides (for regional resources).
-    "instanceTemplate": "A String", # The URL of the instance template that is specified for this managed instance group. The group uses this template to create all new instances in the managed instance group.
+    "targetPools": [ # The URLs for all TargetPool resources to which instances in the instanceGroup field are added. The target pools automatically apply to all of the instances in the managed instance group.
+      "A String",
+    ],
     "namedPorts": [ # Named ports configured for the Instance Groups complementary to this Instance Group Manager.
       { # The named port. For example: .
         "name": "A String", # The name for this named port. The name must be 1-63 characters long, and comply with RFC1035.
         "port": 42, # The port number, which can be a value between 1 and 65535.
       },
     ],
-    "creationTimestamp": "A String", # [Output Only] The creation timestamp for this managed instance group in RFC3339 text format.
-    "id": "A String", # [Output Only] A unique identifier for this resource type. The server generates this identifier.
-    "selfLink": "A String", # [Output Only] The URL for this managed instance group. The server defines this URL.
+    "description": "A String", # An optional description of this resource. Provide this property when you create the resource.
+    "autoHealingPolicies": [ # The autohealing policy for this managed instance group. You can specify only one value.
+      {
+        "healthCheck": "A String", # The URL for the health check that signals autohealing.
+        "initialDelaySec": 42, # The number of seconds that the managed instance group waits before it applies autohealing policies to new instances or recently recreated instances. This initial delay allows instances to initialize and run their startup scripts before the instance group determines that they are UNHEALTHY. This prevents the managed instance group from recreating its instances prematurely. This value must be from range [0, 3600].
+        "maxUnavailable": { # Encapsulates numeric value that can be either absolute or relative. # Maximum number of instances that can be unavailable when auto-healing. The instance is considered available if all of the following conditions are satisfied: 1. instance's status is RUNNING 2. instance's liveness health check result was observed to be HEALTHY at least once By default, a percent value of 100% is used.
+          "calculated": 42, # [Output Only] Absolute value calculated based on mode: mode = fixed -> calculated = fixed = percent -> calculated = ceiling(percent/100 * base_value)
+          "fixed": 42, # fixed must be non-negative.
+          "percent": 42, # percent must belong to [0, 100].
+        },
+      },
+    ],
+    "instanceGroup": "A String", # [Output Only] The URL of the Instance Group resource.
+    "targetSize": 42, # The target number of running instances for this managed instance group. Deleting or abandoning instances reduces this number. Resizing the group changes this number.
+    "instanceTemplate": "A String", # The URL of the instance template that is specified for this managed instance group. The group uses this template to create all new instances in the managed instance group.
+    "fingerprint": "A String", # [Output Only] The fingerprint of the resource data. You can use this optional field for optimistic locking when you update the resource.
+    "currentActions": { # [Output Only] The list of instance actions and the number of instances in this managed instance group that are scheduled for each of those actions.
+      "none": 42, # [Output Only] The number of instances in the managed instance group that are running and have no scheduled actions.
+      "recreating": 42, # [Output Only] The number of instances in the managed instance group that are scheduled to be recreated or are currently being being recreated. Recreating an instance deletes the existing root persistent disk and creates a new disk from the image that is defined in the instance template.
+      "creating": 42, # [Output Only] The number of instances in the managed instance group that are scheduled to be created or are currently being created. If the group fails to create any of these instances, it tries again until it creates the instance successfully.
+          #
+          # If you have disabled creation retries, this field will not be populated; instead, the creatingWithoutRetries field will be populated.
+      "verifying": 42, # [Output Only] The number of instances in the managed instance group that are being verified.
+      "restarting": 42, # [Output Only] The number of instances in the managed instance group that are scheduled to be restarted or are currently being restarted.
+      "abandoning": 42, # [Output Only] The total number of instances in the managed instance group that are scheduled to be abandoned. Abandoning an instance removes it from the managed instance group without deleting it.
+      "deleting": 42, # [Output Only] The number of instances in the managed instance group that are scheduled to be deleted or are currently being deleted.
+      "creatingWithoutRetries": 42, # [Output Only] The number of instances that the managed instance group will attempt to create. The group attempts to create each instance only once. If the group fails to create any of these instances, it decreases the group's targetSize value accordingly.
+      "refreshing": 42, # [Output Only] The number of instances in the managed instance group that are being reconfigured with properties that do not require a restart or a recreate action. For example, setting or removing target pools for the instance.
+    },
     "name": "A String", # The name of the managed instance group. The name must be 1-63 characters long, and comply with RFC1035.
+    "versions": [ # Versions supported by this IGM. User should set this field if they need fine-grained control over how many instances in each version are run by this IGM. Versions are keyed by instanceTemplate. Every instanceTemplate can appear at most once. This field overrides instanceTemplate field. If both instanceTemplate and versions are set, the user receives a warning. "instanceTemplate: X" is semantically equivalent to "versions [ { instanceTemplate: X } ]". Exactly one version must have targetSize field left unset. Size of such a version will be calculated automatically.
+      {
+        "targetSize": { # Encapsulates numeric value that can be either absolute or relative. # Intended number of instances that are created from instanceTemplate. The final number of instances created from instanceTemplate will be equal to: * if expressed as fixed number: min(targetSize.fixed, instanceGroupManager.targetSize), * if expressed as percent: ceiling(targetSize.percent * InstanceGroupManager.targetSize). If unset, this version will handle all the remaining instances.
+          "calculated": 42, # [Output Only] Absolute value calculated based on mode: mode = fixed -> calculated = fixed = percent -> calculated = ceiling(percent/100 * base_value)
+          "fixed": 42, # fixed must be non-negative.
+          "percent": 42, # percent must belong to [0, 100].
+        },
+        "instanceTemplate": "A String",
+        "tag": "A String", # Tag describing the version. Used to trigger rollout of a target version even if instance_template remains unchanged.
+      },
+    ],
+    "region": "A String", # [Output Only] The URL of the region where the managed instance group resides (for regional resources).
+    "selfLink": "A String", # [Output Only] The URL for this managed instance group. The server defines this URL.
   }
 
 
@@ -704,7 +710,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
@@ -739,56 +745,19 @@
     "nextPageToken": "A String", # [Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results.
     "items": [ # [Output Only] A list of managed instance groups.
       { # An Instance Group Manager resource.
-          "currentActions": { # [Output Only] The list of instance actions and the number of instances in this managed instance group that are scheduled for each of those actions.
-            "none": 42, # [Output Only] The number of instances in the managed instance group that are running and have no scheduled actions.
-            "recreating": 42, # [Output Only] The number of instances in the managed instance group that are scheduled to be recreated or are currently being being recreated. Recreating an instance deletes the existing root persistent disk and creates a new disk from the image that is defined in the instance template.
-            "creating": 42, # [Output Only] The number of instances in the managed instance group that are scheduled to be created or are currently being created. If the group fails to create any of these instances, it tries again until it creates the instance successfully.
-                #
-                # If you have disabled creation retries, this field will not be populated; instead, the creatingWithoutRetries field will be populated.
-            "restarting": 42, # [Output Only] The number of instances in the managed instance group that are scheduled to be restarted or are currently being restarted.
-            "abandoning": 42, # [Output Only] The total number of instances in the managed instance group that are scheduled to be abandoned. Abandoning an instance removes it from the managed instance group without deleting it.
-            "deleting": 42, # [Output Only] The number of instances in the managed instance group that are scheduled to be deleted or are currently being deleted.
-            "creatingWithoutRetries": 42, # [Output Only] The number of instances that the managed instance group will attempt to create. The group attempts to create each instance only once. If the group fails to create any of these instances, it decreases the group's targetSize value accordingly.
-            "refreshing": 42, # [Output Only] The number of instances in the managed instance group that are being reconfigured with properties that do not require a restart or a recreate action. For example, setting or removing target pools for the instance.
-          },
-          "description": "A String", # An optional description of this resource. Provide this property when you create the resource.
-          "zone": "A String", # [Output Only] The URL of the zone where the managed instance group is located (for zonal resources).
-          "versions": [ # Versions supported by this IGM. User should set this field if they need fine-grained control over how many instances in each version are run by this IGM. Versions are keyed by instanceTemplate. Every instanceTemplate can appear at most once. This field overrides instanceTemplate field. If both instanceTemplate and versions are set, the user receives a warning. "instanceTemplate: X" is semantically equivalent to "versions [ { instanceTemplate: X } ]". Exactly one version must have targetSize field left unset. Size of such a version will be calculated automatically.
-            {
-              "targetSize": { # Encapsulates numeric value that can be either absolute or relative. # Intended number of instances that are created from instanceTemplate. The final number of instances created from instanceTemplate will be equal to: * if expressed as fixed number: min(targetSize.fixed, instanceGroupManager.targetSize), * if expressed as percent: ceiling(targetSize.percent * InstanceGroupManager.targetSize). If unset, this version will handle all the remaining instances.
-                "calculated": 42, # [Output Only] Absolute value calculated based on mode: mode = fixed -> calculated = fixed = percent -> calculated = ceiling(percent/100 * base_value)
-                "fixed": 42, # fixed must be non-negative.
-                "percent": 42, # percent must belong to [0, 100].
-              },
-              "instanceTemplate": "A String",
-              "tag": "A String", # Tag describing the version. Used to trigger rollout of a target version even if instance_template remains unchanged.
-            },
-          ],
-          "autoHealingPolicies": [ # The autohealing policy for this managed instance group. You can specify only one value.
-            {
-              "healthCheck": "A String", # The URL for the HealthCheck that signals autohealing.
-              "initialDelaySec": 42, # The number of seconds that the managed instance group waits before it applies autohealing policies to new instances or recently recreated instances. This initial delay allows instances to initialize and run their startup scripts before the instance group determines that they are UNHEALTHY. This prevents the managed instance group from recreating its instances prematurely. This value must be from range [0, 3600].
-              "maxUnavailable": { # Encapsulates numeric value that can be either absolute or relative. # Maximum number of instances that can be unavailable when auto-healing. The instance is considered available if all of the following conditions are satisfied: 1. instance's status is RUNNING 2. instance's liveness health check result was observed to be HEALTHY at least once By default, a percent value of 100% is used.
-                "calculated": 42, # [Output Only] Absolute value calculated based on mode: mode = fixed -> calculated = fixed = percent -> calculated = ceiling(percent/100 * base_value)
-                "fixed": 42, # fixed must be non-negative.
-                "percent": 42, # percent must belong to [0, 100].
-              },
-            },
-          ],
-          "targetSize": 42, # The target number of running instances for this managed instance group. Deleting or abandoning instances reduces this number. Resizing the group changes this number.
           "failoverAction": "A String", # The action to perform in case of zone failure. Only one value is supported, NO_FAILOVER. The default is NO_FAILOVER.
-          "instanceGroup": "A String", # [Output Only] The URL of the Instance Group resource.
-          "kind": "compute#instanceGroupManager", # [Output Only] The resource type, which is always compute#instanceGroupManager for managed instance groups.
-          "targetPools": [ # The URLs for all TargetPool resources to which instances in the instanceGroup field are added. The target pools automatically apply to all of the instances in the managed instance group.
-            "A String",
-          ],
-          "baseInstanceName": "A String", # The base instance name to use for instances in this group. The value must be 1-58 characters long. Instances are named by appending a hyphen and a random four-character string to the base instance name. The base instance name must comply with RFC1035.
           "pendingActions": { # [Output Only] The list of instance actions and the number of instances in this managed instance group that are pending for each of those actions.
             "recreating": 42, # [Output Only] The number of instances in the managed instance group that are pending to be recreated.
             "deleting": 42, # [Output Only] The number of instances in the managed instance group that are pending to be deleted.
             "creating": 42, # [Output Only] The number of instances in the managed instance group that are pending to be created.
             "restarting": 42, # [Output Only] The number of instances in the managed instance group that are pending to be restarted.
           },
+          "creationTimestamp": "A String", # [Output Only] The creation timestamp for this managed instance group in RFC3339 text format.
+          "kind": "compute#instanceGroupManager", # [Output Only] The resource type, which is always compute#instanceGroupManager for managed instance groups.
+          "zone": "A String", # [Output Only] The URL of the zone where the managed instance group is located (for zonal resources).
+          "serviceAccount": "A String", # Service account will be used as credentials for all operations performed by managed instance group on instances. The service accounts needs all permissions required to create and delete instances. When not specified, the service account {projectNumber}@cloudservices.gserviceaccount.com will be used.
+          "id": "A String", # [Output Only] A unique identifier for this resource type. The server generates this identifier.
+          "baseInstanceName": "A String", # The base instance name to use for instances in this group. The value must be 1-58 characters long. Instances are named by appending a hyphen and a random four-character string to the base instance name. The base instance name must comply with RFC1035.
           "updatePolicy": { # The update policy for this managed instance group.
             "type": "A String",
             "maxSurge": { # Encapsulates numeric value that can be either absolute or relative. # Maximum number of instances that can be created above the InstanceGroupManager.targetSize during the update process. By default, a fixed value of 1 is used. Using maxSurge > 0 will cause instance names to change during the update process. At least one of { maxSurge, maxUnavailable } must be greater than 0.
@@ -804,19 +773,58 @@
             },
             "minReadySec": 42, # Minimum number of seconds to wait for after a newly created instance becomes available. This value must be from range [0, 3600].
           },
-          "fingerprint": "A String", # [Output Only] The fingerprint of the resource data. You can use this optional field for optimistic locking when you update the resource.
-          "region": "A String", # [Output Only] The URL of the region where the managed instance group resides (for regional resources).
-          "instanceTemplate": "A String", # The URL of the instance template that is specified for this managed instance group. The group uses this template to create all new instances in the managed instance group.
+          "targetPools": [ # The URLs for all TargetPool resources to which instances in the instanceGroup field are added. The target pools automatically apply to all of the instances in the managed instance group.
+            "A String",
+          ],
           "namedPorts": [ # Named ports configured for the Instance Groups complementary to this Instance Group Manager.
             { # The named port. For example: .
               "name": "A String", # The name for this named port. The name must be 1-63 characters long, and comply with RFC1035.
               "port": 42, # The port number, which can be a value between 1 and 65535.
             },
           ],
-          "creationTimestamp": "A String", # [Output Only] The creation timestamp for this managed instance group in RFC3339 text format.
-          "id": "A String", # [Output Only] A unique identifier for this resource type. The server generates this identifier.
-          "selfLink": "A String", # [Output Only] The URL for this managed instance group. The server defines this URL.
+          "description": "A String", # An optional description of this resource. Provide this property when you create the resource.
+          "autoHealingPolicies": [ # The autohealing policy for this managed instance group. You can specify only one value.
+            {
+              "healthCheck": "A String", # The URL for the health check that signals autohealing.
+              "initialDelaySec": 42, # The number of seconds that the managed instance group waits before it applies autohealing policies to new instances or recently recreated instances. This initial delay allows instances to initialize and run their startup scripts before the instance group determines that they are UNHEALTHY. This prevents the managed instance group from recreating its instances prematurely. This value must be from range [0, 3600].
+              "maxUnavailable": { # Encapsulates numeric value that can be either absolute or relative. # Maximum number of instances that can be unavailable when auto-healing. The instance is considered available if all of the following conditions are satisfied: 1. instance's status is RUNNING 2. instance's liveness health check result was observed to be HEALTHY at least once By default, a percent value of 100% is used.
+                "calculated": 42, # [Output Only] Absolute value calculated based on mode: mode = fixed -> calculated = fixed = percent -> calculated = ceiling(percent/100 * base_value)
+                "fixed": 42, # fixed must be non-negative.
+                "percent": 42, # percent must belong to [0, 100].
+              },
+            },
+          ],
+          "instanceGroup": "A String", # [Output Only] The URL of the Instance Group resource.
+          "targetSize": 42, # The target number of running instances for this managed instance group. Deleting or abandoning instances reduces this number. Resizing the group changes this number.
+          "instanceTemplate": "A String", # The URL of the instance template that is specified for this managed instance group. The group uses this template to create all new instances in the managed instance group.
+          "fingerprint": "A String", # [Output Only] The fingerprint of the resource data. You can use this optional field for optimistic locking when you update the resource.
+          "currentActions": { # [Output Only] The list of instance actions and the number of instances in this managed instance group that are scheduled for each of those actions.
+            "none": 42, # [Output Only] The number of instances in the managed instance group that are running and have no scheduled actions.
+            "recreating": 42, # [Output Only] The number of instances in the managed instance group that are scheduled to be recreated or are currently being being recreated. Recreating an instance deletes the existing root persistent disk and creates a new disk from the image that is defined in the instance template.
+            "creating": 42, # [Output Only] The number of instances in the managed instance group that are scheduled to be created or are currently being created. If the group fails to create any of these instances, it tries again until it creates the instance successfully.
+                #
+                # If you have disabled creation retries, this field will not be populated; instead, the creatingWithoutRetries field will be populated.
+            "verifying": 42, # [Output Only] The number of instances in the managed instance group that are being verified.
+            "restarting": 42, # [Output Only] The number of instances in the managed instance group that are scheduled to be restarted or are currently being restarted.
+            "abandoning": 42, # [Output Only] The total number of instances in the managed instance group that are scheduled to be abandoned. Abandoning an instance removes it from the managed instance group without deleting it.
+            "deleting": 42, # [Output Only] The number of instances in the managed instance group that are scheduled to be deleted or are currently being deleted.
+            "creatingWithoutRetries": 42, # [Output Only] The number of instances that the managed instance group will attempt to create. The group attempts to create each instance only once. If the group fails to create any of these instances, it decreases the group's targetSize value accordingly.
+            "refreshing": 42, # [Output Only] The number of instances in the managed instance group that are being reconfigured with properties that do not require a restart or a recreate action. For example, setting or removing target pools for the instance.
+          },
           "name": "A String", # The name of the managed instance group. The name must be 1-63 characters long, and comply with RFC1035.
+          "versions": [ # Versions supported by this IGM. User should set this field if they need fine-grained control over how many instances in each version are run by this IGM. Versions are keyed by instanceTemplate. Every instanceTemplate can appear at most once. This field overrides instanceTemplate field. If both instanceTemplate and versions are set, the user receives a warning. "instanceTemplate: X" is semantically equivalent to "versions [ { instanceTemplate: X } ]". Exactly one version must have targetSize field left unset. Size of such a version will be calculated automatically.
+            {
+              "targetSize": { # Encapsulates numeric value that can be either absolute or relative. # Intended number of instances that are created from instanceTemplate. The final number of instances created from instanceTemplate will be equal to: * if expressed as fixed number: min(targetSize.fixed, instanceGroupManager.targetSize), * if expressed as percent: ceiling(targetSize.percent * InstanceGroupManager.targetSize). If unset, this version will handle all the remaining instances.
+                "calculated": 42, # [Output Only] Absolute value calculated based on mode: mode = fixed -> calculated = fixed = percent -> calculated = ceiling(percent/100 * base_value)
+                "fixed": 42, # fixed must be non-negative.
+                "percent": 42, # percent must belong to [0, 100].
+              },
+              "instanceTemplate": "A String",
+              "tag": "A String", # Tag describing the version. Used to trigger rollout of a target version even if instance_template remains unchanged.
+            },
+          ],
+          "region": "A String", # [Output Only] The URL of the region where the managed instance group resides (for regional resources).
+          "selfLink": "A String", # [Output Only] The URL for this managed instance group. The server defines this URL.
         },
     ],
     "kind": "compute#instanceGroupManagerList", # [Output Only] The resource type, which is always compute#instanceGroupManagerList for a list of managed instance groups.
@@ -826,13 +834,17 @@
 </div>
 
 <div class="method">
-    <code class="details" id="listManagedInstances">listManagedInstances(project, zone, instanceGroupManager)</code>
+    <code class="details" id="listManagedInstances">listManagedInstances(project, zone, instanceGroupManager, order_by=None, maxResults=None, pageToken=None, filter=None)</code>
   <pre>Lists all of the instances in the managed instance group. Each instance in the list has a currentAction, which indicates the action that the managed instance group is performing on the instance. For example, if the group is still creating an instance, the currentAction is CREATING. If a previous action failed, the list displays the errors for that failed action.
 
 Args:
   project: string, Project ID for this request. (required)
   zone: string, The name of the zone where the managed instance group is located. (required)
   instanceGroupManager: string, The name of the managed instance group. (required)
+  order_by: string, A parameter
+  maxResults: integer, A parameter
+  pageToken: string, A parameter
+  filter: string, A parameter
 
 Returns:
   An object of the form:
@@ -897,56 +909,19 @@
     The object takes the form of:
 
 { # An Instance Group Manager resource.
-    "currentActions": { # [Output Only] The list of instance actions and the number of instances in this managed instance group that are scheduled for each of those actions.
-      "none": 42, # [Output Only] The number of instances in the managed instance group that are running and have no scheduled actions.
-      "recreating": 42, # [Output Only] The number of instances in the managed instance group that are scheduled to be recreated or are currently being being recreated. Recreating an instance deletes the existing root persistent disk and creates a new disk from the image that is defined in the instance template.
-      "creating": 42, # [Output Only] The number of instances in the managed instance group that are scheduled to be created or are currently being created. If the group fails to create any of these instances, it tries again until it creates the instance successfully.
-          #
-          # If you have disabled creation retries, this field will not be populated; instead, the creatingWithoutRetries field will be populated.
-      "restarting": 42, # [Output Only] The number of instances in the managed instance group that are scheduled to be restarted or are currently being restarted.
-      "abandoning": 42, # [Output Only] The total number of instances in the managed instance group that are scheduled to be abandoned. Abandoning an instance removes it from the managed instance group without deleting it.
-      "deleting": 42, # [Output Only] The number of instances in the managed instance group that are scheduled to be deleted or are currently being deleted.
-      "creatingWithoutRetries": 42, # [Output Only] The number of instances that the managed instance group will attempt to create. The group attempts to create each instance only once. If the group fails to create any of these instances, it decreases the group's targetSize value accordingly.
-      "refreshing": 42, # [Output Only] The number of instances in the managed instance group that are being reconfigured with properties that do not require a restart or a recreate action. For example, setting or removing target pools for the instance.
-    },
-    "description": "A String", # An optional description of this resource. Provide this property when you create the resource.
-    "zone": "A String", # [Output Only] The URL of the zone where the managed instance group is located (for zonal resources).
-    "versions": [ # Versions supported by this IGM. User should set this field if they need fine-grained control over how many instances in each version are run by this IGM. Versions are keyed by instanceTemplate. Every instanceTemplate can appear at most once. This field overrides instanceTemplate field. If both instanceTemplate and versions are set, the user receives a warning. "instanceTemplate: X" is semantically equivalent to "versions [ { instanceTemplate: X } ]". Exactly one version must have targetSize field left unset. Size of such a version will be calculated automatically.
-      {
-        "targetSize": { # Encapsulates numeric value that can be either absolute or relative. # Intended number of instances that are created from instanceTemplate. The final number of instances created from instanceTemplate will be equal to: * if expressed as fixed number: min(targetSize.fixed, instanceGroupManager.targetSize), * if expressed as percent: ceiling(targetSize.percent * InstanceGroupManager.targetSize). If unset, this version will handle all the remaining instances.
-          "calculated": 42, # [Output Only] Absolute value calculated based on mode: mode = fixed -> calculated = fixed = percent -> calculated = ceiling(percent/100 * base_value)
-          "fixed": 42, # fixed must be non-negative.
-          "percent": 42, # percent must belong to [0, 100].
-        },
-        "instanceTemplate": "A String",
-        "tag": "A String", # Tag describing the version. Used to trigger rollout of a target version even if instance_template remains unchanged.
-      },
-    ],
-    "autoHealingPolicies": [ # The autohealing policy for this managed instance group. You can specify only one value.
-      {
-        "healthCheck": "A String", # The URL for the HealthCheck that signals autohealing.
-        "initialDelaySec": 42, # The number of seconds that the managed instance group waits before it applies autohealing policies to new instances or recently recreated instances. This initial delay allows instances to initialize and run their startup scripts before the instance group determines that they are UNHEALTHY. This prevents the managed instance group from recreating its instances prematurely. This value must be from range [0, 3600].
-        "maxUnavailable": { # Encapsulates numeric value that can be either absolute or relative. # Maximum number of instances that can be unavailable when auto-healing. The instance is considered available if all of the following conditions are satisfied: 1. instance's status is RUNNING 2. instance's liveness health check result was observed to be HEALTHY at least once By default, a percent value of 100% is used.
-          "calculated": 42, # [Output Only] Absolute value calculated based on mode: mode = fixed -> calculated = fixed = percent -> calculated = ceiling(percent/100 * base_value)
-          "fixed": 42, # fixed must be non-negative.
-          "percent": 42, # percent must belong to [0, 100].
-        },
-      },
-    ],
-    "targetSize": 42, # The target number of running instances for this managed instance group. Deleting or abandoning instances reduces this number. Resizing the group changes this number.
     "failoverAction": "A String", # The action to perform in case of zone failure. Only one value is supported, NO_FAILOVER. The default is NO_FAILOVER.
-    "instanceGroup": "A String", # [Output Only] The URL of the Instance Group resource.
-    "kind": "compute#instanceGroupManager", # [Output Only] The resource type, which is always compute#instanceGroupManager for managed instance groups.
-    "targetPools": [ # The URLs for all TargetPool resources to which instances in the instanceGroup field are added. The target pools automatically apply to all of the instances in the managed instance group.
-      "A String",
-    ],
-    "baseInstanceName": "A String", # The base instance name to use for instances in this group. The value must be 1-58 characters long. Instances are named by appending a hyphen and a random four-character string to the base instance name. The base instance name must comply with RFC1035.
     "pendingActions": { # [Output Only] The list of instance actions and the number of instances in this managed instance group that are pending for each of those actions.
       "recreating": 42, # [Output Only] The number of instances in the managed instance group that are pending to be recreated.
       "deleting": 42, # [Output Only] The number of instances in the managed instance group that are pending to be deleted.
       "creating": 42, # [Output Only] The number of instances in the managed instance group that are pending to be created.
       "restarting": 42, # [Output Only] The number of instances in the managed instance group that are pending to be restarted.
     },
+    "creationTimestamp": "A String", # [Output Only] The creation timestamp for this managed instance group in RFC3339 text format.
+    "kind": "compute#instanceGroupManager", # [Output Only] The resource type, which is always compute#instanceGroupManager for managed instance groups.
+    "zone": "A String", # [Output Only] The URL of the zone where the managed instance group is located (for zonal resources).
+    "serviceAccount": "A String", # Service account will be used as credentials for all operations performed by managed instance group on instances. The service accounts needs all permissions required to create and delete instances. When not specified, the service account {projectNumber}@cloudservices.gserviceaccount.com will be used.
+    "id": "A String", # [Output Only] A unique identifier for this resource type. The server generates this identifier.
+    "baseInstanceName": "A String", # The base instance name to use for instances in this group. The value must be 1-58 characters long. Instances are named by appending a hyphen and a random four-character string to the base instance name. The base instance name must comply with RFC1035.
     "updatePolicy": { # The update policy for this managed instance group.
       "type": "A String",
       "maxSurge": { # Encapsulates numeric value that can be either absolute or relative. # Maximum number of instances that can be created above the InstanceGroupManager.targetSize during the update process. By default, a fixed value of 1 is used. Using maxSurge > 0 will cause instance names to change during the update process. At least one of { maxSurge, maxUnavailable } must be greater than 0.
@@ -962,19 +937,58 @@
       },
       "minReadySec": 42, # Minimum number of seconds to wait for after a newly created instance becomes available. This value must be from range [0, 3600].
     },
-    "fingerprint": "A String", # [Output Only] The fingerprint of the resource data. You can use this optional field for optimistic locking when you update the resource.
-    "region": "A String", # [Output Only] The URL of the region where the managed instance group resides (for regional resources).
-    "instanceTemplate": "A String", # The URL of the instance template that is specified for this managed instance group. The group uses this template to create all new instances in the managed instance group.
+    "targetPools": [ # The URLs for all TargetPool resources to which instances in the instanceGroup field are added. The target pools automatically apply to all of the instances in the managed instance group.
+      "A String",
+    ],
     "namedPorts": [ # Named ports configured for the Instance Groups complementary to this Instance Group Manager.
       { # The named port. For example: .
         "name": "A String", # The name for this named port. The name must be 1-63 characters long, and comply with RFC1035.
         "port": 42, # The port number, which can be a value between 1 and 65535.
       },
     ],
-    "creationTimestamp": "A String", # [Output Only] The creation timestamp for this managed instance group in RFC3339 text format.
-    "id": "A String", # [Output Only] A unique identifier for this resource type. The server generates this identifier.
-    "selfLink": "A String", # [Output Only] The URL for this managed instance group. The server defines this URL.
+    "description": "A String", # An optional description of this resource. Provide this property when you create the resource.
+    "autoHealingPolicies": [ # The autohealing policy for this managed instance group. You can specify only one value.
+      {
+        "healthCheck": "A String", # The URL for the health check that signals autohealing.
+        "initialDelaySec": 42, # The number of seconds that the managed instance group waits before it applies autohealing policies to new instances or recently recreated instances. This initial delay allows instances to initialize and run their startup scripts before the instance group determines that they are UNHEALTHY. This prevents the managed instance group from recreating its instances prematurely. This value must be from range [0, 3600].
+        "maxUnavailable": { # Encapsulates numeric value that can be either absolute or relative. # Maximum number of instances that can be unavailable when auto-healing. The instance is considered available if all of the following conditions are satisfied: 1. instance's status is RUNNING 2. instance's liveness health check result was observed to be HEALTHY at least once By default, a percent value of 100% is used.
+          "calculated": 42, # [Output Only] Absolute value calculated based on mode: mode = fixed -> calculated = fixed = percent -> calculated = ceiling(percent/100 * base_value)
+          "fixed": 42, # fixed must be non-negative.
+          "percent": 42, # percent must belong to [0, 100].
+        },
+      },
+    ],
+    "instanceGroup": "A String", # [Output Only] The URL of the Instance Group resource.
+    "targetSize": 42, # The target number of running instances for this managed instance group. Deleting or abandoning instances reduces this number. Resizing the group changes this number.
+    "instanceTemplate": "A String", # The URL of the instance template that is specified for this managed instance group. The group uses this template to create all new instances in the managed instance group.
+    "fingerprint": "A String", # [Output Only] The fingerprint of the resource data. You can use this optional field for optimistic locking when you update the resource.
+    "currentActions": { # [Output Only] The list of instance actions and the number of instances in this managed instance group that are scheduled for each of those actions.
+      "none": 42, # [Output Only] The number of instances in the managed instance group that are running and have no scheduled actions.
+      "recreating": 42, # [Output Only] The number of instances in the managed instance group that are scheduled to be recreated or are currently being being recreated. Recreating an instance deletes the existing root persistent disk and creates a new disk from the image that is defined in the instance template.
+      "creating": 42, # [Output Only] The number of instances in the managed instance group that are scheduled to be created or are currently being created. If the group fails to create any of these instances, it tries again until it creates the instance successfully.
+          #
+          # If you have disabled creation retries, this field will not be populated; instead, the creatingWithoutRetries field will be populated.
+      "verifying": 42, # [Output Only] The number of instances in the managed instance group that are being verified.
+      "restarting": 42, # [Output Only] The number of instances in the managed instance group that are scheduled to be restarted or are currently being restarted.
+      "abandoning": 42, # [Output Only] The total number of instances in the managed instance group that are scheduled to be abandoned. Abandoning an instance removes it from the managed instance group without deleting it.
+      "deleting": 42, # [Output Only] The number of instances in the managed instance group that are scheduled to be deleted or are currently being deleted.
+      "creatingWithoutRetries": 42, # [Output Only] The number of instances that the managed instance group will attempt to create. The group attempts to create each instance only once. If the group fails to create any of these instances, it decreases the group's targetSize value accordingly.
+      "refreshing": 42, # [Output Only] The number of instances in the managed instance group that are being reconfigured with properties that do not require a restart or a recreate action. For example, setting or removing target pools for the instance.
+    },
     "name": "A String", # The name of the managed instance group. The name must be 1-63 characters long, and comply with RFC1035.
+    "versions": [ # Versions supported by this IGM. User should set this field if they need fine-grained control over how many instances in each version are run by this IGM. Versions are keyed by instanceTemplate. Every instanceTemplate can appear at most once. This field overrides instanceTemplate field. If both instanceTemplate and versions are set, the user receives a warning. "instanceTemplate: X" is semantically equivalent to "versions [ { instanceTemplate: X } ]". Exactly one version must have targetSize field left unset. Size of such a version will be calculated automatically.
+      {
+        "targetSize": { # Encapsulates numeric value that can be either absolute or relative. # Intended number of instances that are created from instanceTemplate. The final number of instances created from instanceTemplate will be equal to: * if expressed as fixed number: min(targetSize.fixed, instanceGroupManager.targetSize), * if expressed as percent: ceiling(targetSize.percent * InstanceGroupManager.targetSize). If unset, this version will handle all the remaining instances.
+          "calculated": 42, # [Output Only] Absolute value calculated based on mode: mode = fixed -> calculated = fixed = percent -> calculated = ceiling(percent/100 * base_value)
+          "fixed": 42, # fixed must be non-negative.
+          "percent": 42, # percent must belong to [0, 100].
+        },
+        "instanceTemplate": "A String",
+        "tag": "A String", # Tag describing the version. Used to trigger rollout of a target version even if instance_template remains unchanged.
+      },
+    ],
+    "region": "A String", # [Output Only] The URL of the region where the managed instance group resides (for regional resources).
+    "selfLink": "A String", # [Output Only] The URL for this managed instance group. The server defines this URL.
   }
 
 
@@ -1024,7 +1038,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
@@ -1092,7 +1106,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
@@ -1152,7 +1166,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
@@ -1227,7 +1241,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
@@ -1245,7 +1259,7 @@
 {
     "autoHealingPolicies": [
       {
-        "healthCheck": "A String", # The URL for the HealthCheck that signals autohealing.
+        "healthCheck": "A String", # The URL for the health check that signals autohealing.
         "initialDelaySec": 42, # The number of seconds that the managed instance group waits before it applies autohealing policies to new instances or recently recreated instances. This initial delay allows instances to initialize and run their startup scripts before the instance group determines that they are UNHEALTHY. This prevents the managed instance group from recreating its instances prematurely. This value must be from range [0, 3600].
         "maxUnavailable": { # Encapsulates numeric value that can be either absolute or relative. # Maximum number of instances that can be unavailable when auto-healing. The instance is considered available if all of the following conditions are satisfied: 1. instance's status is RUNNING 2. instance's liveness health check result was observed to be HEALTHY at least once By default, a percent value of 100% is used.
           "calculated": 42, # [Output Only] Absolute value calculated based on mode: mode = fixed -> calculated = fixed = percent -> calculated = ceiling(percent/100 * base_value)
@@ -1303,7 +1317,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
@@ -1369,7 +1383,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
@@ -1438,7 +1452,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
@@ -1482,56 +1496,19 @@
     The object takes the form of:
 
 { # An Instance Group Manager resource.
-    "currentActions": { # [Output Only] The list of instance actions and the number of instances in this managed instance group that are scheduled for each of those actions.
-      "none": 42, # [Output Only] The number of instances in the managed instance group that are running and have no scheduled actions.
-      "recreating": 42, # [Output Only] The number of instances in the managed instance group that are scheduled to be recreated or are currently being being recreated. Recreating an instance deletes the existing root persistent disk and creates a new disk from the image that is defined in the instance template.
-      "creating": 42, # [Output Only] The number of instances in the managed instance group that are scheduled to be created or are currently being created. If the group fails to create any of these instances, it tries again until it creates the instance successfully.
-          #
-          # If you have disabled creation retries, this field will not be populated; instead, the creatingWithoutRetries field will be populated.
-      "restarting": 42, # [Output Only] The number of instances in the managed instance group that are scheduled to be restarted or are currently being restarted.
-      "abandoning": 42, # [Output Only] The total number of instances in the managed instance group that are scheduled to be abandoned. Abandoning an instance removes it from the managed instance group without deleting it.
-      "deleting": 42, # [Output Only] The number of instances in the managed instance group that are scheduled to be deleted or are currently being deleted.
-      "creatingWithoutRetries": 42, # [Output Only] The number of instances that the managed instance group will attempt to create. The group attempts to create each instance only once. If the group fails to create any of these instances, it decreases the group's targetSize value accordingly.
-      "refreshing": 42, # [Output Only] The number of instances in the managed instance group that are being reconfigured with properties that do not require a restart or a recreate action. For example, setting or removing target pools for the instance.
-    },
-    "description": "A String", # An optional description of this resource. Provide this property when you create the resource.
-    "zone": "A String", # [Output Only] The URL of the zone where the managed instance group is located (for zonal resources).
-    "versions": [ # Versions supported by this IGM. User should set this field if they need fine-grained control over how many instances in each version are run by this IGM. Versions are keyed by instanceTemplate. Every instanceTemplate can appear at most once. This field overrides instanceTemplate field. If both instanceTemplate and versions are set, the user receives a warning. "instanceTemplate: X" is semantically equivalent to "versions [ { instanceTemplate: X } ]". Exactly one version must have targetSize field left unset. Size of such a version will be calculated automatically.
-      {
-        "targetSize": { # Encapsulates numeric value that can be either absolute or relative. # Intended number of instances that are created from instanceTemplate. The final number of instances created from instanceTemplate will be equal to: * if expressed as fixed number: min(targetSize.fixed, instanceGroupManager.targetSize), * if expressed as percent: ceiling(targetSize.percent * InstanceGroupManager.targetSize). If unset, this version will handle all the remaining instances.
-          "calculated": 42, # [Output Only] Absolute value calculated based on mode: mode = fixed -> calculated = fixed = percent -> calculated = ceiling(percent/100 * base_value)
-          "fixed": 42, # fixed must be non-negative.
-          "percent": 42, # percent must belong to [0, 100].
-        },
-        "instanceTemplate": "A String",
-        "tag": "A String", # Tag describing the version. Used to trigger rollout of a target version even if instance_template remains unchanged.
-      },
-    ],
-    "autoHealingPolicies": [ # The autohealing policy for this managed instance group. You can specify only one value.
-      {
-        "healthCheck": "A String", # The URL for the HealthCheck that signals autohealing.
-        "initialDelaySec": 42, # The number of seconds that the managed instance group waits before it applies autohealing policies to new instances or recently recreated instances. This initial delay allows instances to initialize and run their startup scripts before the instance group determines that they are UNHEALTHY. This prevents the managed instance group from recreating its instances prematurely. This value must be from range [0, 3600].
-        "maxUnavailable": { # Encapsulates numeric value that can be either absolute or relative. # Maximum number of instances that can be unavailable when auto-healing. The instance is considered available if all of the following conditions are satisfied: 1. instance's status is RUNNING 2. instance's liveness health check result was observed to be HEALTHY at least once By default, a percent value of 100% is used.
-          "calculated": 42, # [Output Only] Absolute value calculated based on mode: mode = fixed -> calculated = fixed = percent -> calculated = ceiling(percent/100 * base_value)
-          "fixed": 42, # fixed must be non-negative.
-          "percent": 42, # percent must belong to [0, 100].
-        },
-      },
-    ],
-    "targetSize": 42, # The target number of running instances for this managed instance group. Deleting or abandoning instances reduces this number. Resizing the group changes this number.
     "failoverAction": "A String", # The action to perform in case of zone failure. Only one value is supported, NO_FAILOVER. The default is NO_FAILOVER.
-    "instanceGroup": "A String", # [Output Only] The URL of the Instance Group resource.
-    "kind": "compute#instanceGroupManager", # [Output Only] The resource type, which is always compute#instanceGroupManager for managed instance groups.
-    "targetPools": [ # The URLs for all TargetPool resources to which instances in the instanceGroup field are added. The target pools automatically apply to all of the instances in the managed instance group.
-      "A String",
-    ],
-    "baseInstanceName": "A String", # The base instance name to use for instances in this group. The value must be 1-58 characters long. Instances are named by appending a hyphen and a random four-character string to the base instance name. The base instance name must comply with RFC1035.
     "pendingActions": { # [Output Only] The list of instance actions and the number of instances in this managed instance group that are pending for each of those actions.
       "recreating": 42, # [Output Only] The number of instances in the managed instance group that are pending to be recreated.
       "deleting": 42, # [Output Only] The number of instances in the managed instance group that are pending to be deleted.
       "creating": 42, # [Output Only] The number of instances in the managed instance group that are pending to be created.
       "restarting": 42, # [Output Only] The number of instances in the managed instance group that are pending to be restarted.
     },
+    "creationTimestamp": "A String", # [Output Only] The creation timestamp for this managed instance group in RFC3339 text format.
+    "kind": "compute#instanceGroupManager", # [Output Only] The resource type, which is always compute#instanceGroupManager for managed instance groups.
+    "zone": "A String", # [Output Only] The URL of the zone where the managed instance group is located (for zonal resources).
+    "serviceAccount": "A String", # Service account will be used as credentials for all operations performed by managed instance group on instances. The service accounts needs all permissions required to create and delete instances. When not specified, the service account {projectNumber}@cloudservices.gserviceaccount.com will be used.
+    "id": "A String", # [Output Only] A unique identifier for this resource type. The server generates this identifier.
+    "baseInstanceName": "A String", # The base instance name to use for instances in this group. The value must be 1-58 characters long. Instances are named by appending a hyphen and a random four-character string to the base instance name. The base instance name must comply with RFC1035.
     "updatePolicy": { # The update policy for this managed instance group.
       "type": "A String",
       "maxSurge": { # Encapsulates numeric value that can be either absolute or relative. # Maximum number of instances that can be created above the InstanceGroupManager.targetSize during the update process. By default, a fixed value of 1 is used. Using maxSurge > 0 will cause instance names to change during the update process. At least one of { maxSurge, maxUnavailable } must be greater than 0.
@@ -1547,19 +1524,58 @@
       },
       "minReadySec": 42, # Minimum number of seconds to wait for after a newly created instance becomes available. This value must be from range [0, 3600].
     },
-    "fingerprint": "A String", # [Output Only] The fingerprint of the resource data. You can use this optional field for optimistic locking when you update the resource.
-    "region": "A String", # [Output Only] The URL of the region where the managed instance group resides (for regional resources).
-    "instanceTemplate": "A String", # The URL of the instance template that is specified for this managed instance group. The group uses this template to create all new instances in the managed instance group.
+    "targetPools": [ # The URLs for all TargetPool resources to which instances in the instanceGroup field are added. The target pools automatically apply to all of the instances in the managed instance group.
+      "A String",
+    ],
     "namedPorts": [ # Named ports configured for the Instance Groups complementary to this Instance Group Manager.
       { # The named port. For example: .
         "name": "A String", # The name for this named port. The name must be 1-63 characters long, and comply with RFC1035.
         "port": 42, # The port number, which can be a value between 1 and 65535.
       },
     ],
-    "creationTimestamp": "A String", # [Output Only] The creation timestamp for this managed instance group in RFC3339 text format.
-    "id": "A String", # [Output Only] A unique identifier for this resource type. The server generates this identifier.
-    "selfLink": "A String", # [Output Only] The URL for this managed instance group. The server defines this URL.
+    "description": "A String", # An optional description of this resource. Provide this property when you create the resource.
+    "autoHealingPolicies": [ # The autohealing policy for this managed instance group. You can specify only one value.
+      {
+        "healthCheck": "A String", # The URL for the health check that signals autohealing.
+        "initialDelaySec": 42, # The number of seconds that the managed instance group waits before it applies autohealing policies to new instances or recently recreated instances. This initial delay allows instances to initialize and run their startup scripts before the instance group determines that they are UNHEALTHY. This prevents the managed instance group from recreating its instances prematurely. This value must be from range [0, 3600].
+        "maxUnavailable": { # Encapsulates numeric value that can be either absolute or relative. # Maximum number of instances that can be unavailable when auto-healing. The instance is considered available if all of the following conditions are satisfied: 1. instance's status is RUNNING 2. instance's liveness health check result was observed to be HEALTHY at least once By default, a percent value of 100% is used.
+          "calculated": 42, # [Output Only] Absolute value calculated based on mode: mode = fixed -> calculated = fixed = percent -> calculated = ceiling(percent/100 * base_value)
+          "fixed": 42, # fixed must be non-negative.
+          "percent": 42, # percent must belong to [0, 100].
+        },
+      },
+    ],
+    "instanceGroup": "A String", # [Output Only] The URL of the Instance Group resource.
+    "targetSize": 42, # The target number of running instances for this managed instance group. Deleting or abandoning instances reduces this number. Resizing the group changes this number.
+    "instanceTemplate": "A String", # The URL of the instance template that is specified for this managed instance group. The group uses this template to create all new instances in the managed instance group.
+    "fingerprint": "A String", # [Output Only] The fingerprint of the resource data. You can use this optional field for optimistic locking when you update the resource.
+    "currentActions": { # [Output Only] The list of instance actions and the number of instances in this managed instance group that are scheduled for each of those actions.
+      "none": 42, # [Output Only] The number of instances in the managed instance group that are running and have no scheduled actions.
+      "recreating": 42, # [Output Only] The number of instances in the managed instance group that are scheduled to be recreated or are currently being being recreated. Recreating an instance deletes the existing root persistent disk and creates a new disk from the image that is defined in the instance template.
+      "creating": 42, # [Output Only] The number of instances in the managed instance group that are scheduled to be created or are currently being created. If the group fails to create any of these instances, it tries again until it creates the instance successfully.
+          #
+          # If you have disabled creation retries, this field will not be populated; instead, the creatingWithoutRetries field will be populated.
+      "verifying": 42, # [Output Only] The number of instances in the managed instance group that are being verified.
+      "restarting": 42, # [Output Only] The number of instances in the managed instance group that are scheduled to be restarted or are currently being restarted.
+      "abandoning": 42, # [Output Only] The total number of instances in the managed instance group that are scheduled to be abandoned. Abandoning an instance removes it from the managed instance group without deleting it.
+      "deleting": 42, # [Output Only] The number of instances in the managed instance group that are scheduled to be deleted or are currently being deleted.
+      "creatingWithoutRetries": 42, # [Output Only] The number of instances that the managed instance group will attempt to create. The group attempts to create each instance only once. If the group fails to create any of these instances, it decreases the group's targetSize value accordingly.
+      "refreshing": 42, # [Output Only] The number of instances in the managed instance group that are being reconfigured with properties that do not require a restart or a recreate action. For example, setting or removing target pools for the instance.
+    },
     "name": "A String", # The name of the managed instance group. The name must be 1-63 characters long, and comply with RFC1035.
+    "versions": [ # Versions supported by this IGM. User should set this field if they need fine-grained control over how many instances in each version are run by this IGM. Versions are keyed by instanceTemplate. Every instanceTemplate can appear at most once. This field overrides instanceTemplate field. If both instanceTemplate and versions are set, the user receives a warning. "instanceTemplate: X" is semantically equivalent to "versions [ { instanceTemplate: X } ]". Exactly one version must have targetSize field left unset. Size of such a version will be calculated automatically.
+      {
+        "targetSize": { # Encapsulates numeric value that can be either absolute or relative. # Intended number of instances that are created from instanceTemplate. The final number of instances created from instanceTemplate will be equal to: * if expressed as fixed number: min(targetSize.fixed, instanceGroupManager.targetSize), * if expressed as percent: ceiling(targetSize.percent * InstanceGroupManager.targetSize). If unset, this version will handle all the remaining instances.
+          "calculated": 42, # [Output Only] Absolute value calculated based on mode: mode = fixed -> calculated = fixed = percent -> calculated = ceiling(percent/100 * base_value)
+          "fixed": 42, # fixed must be non-negative.
+          "percent": 42, # percent must belong to [0, 100].
+        },
+        "instanceTemplate": "A String",
+        "tag": "A String", # Tag describing the version. Used to trigger rollout of a target version even if instance_template remains unchanged.
+      },
+    ],
+    "region": "A String", # [Output Only] The URL of the region where the managed instance group resides (for regional resources).
+    "selfLink": "A String", # [Output Only] The URL for this managed instance group. The server defines this URL.
   }
 
 
@@ -1609,7 +1625,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
diff --git a/docs/dyn/compute_alpha.instanceGroups.html b/docs/dyn/compute_alpha.instanceGroups.html
index 076c149..3eb135a 100644
--- a/docs/dyn/compute_alpha.instanceGroups.html
+++ b/docs/dyn/compute_alpha.instanceGroups.html
@@ -180,7 +180,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
@@ -328,7 +328,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
@@ -452,7 +452,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
@@ -666,7 +666,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
@@ -738,7 +738,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
diff --git a/docs/dyn/compute_alpha.instanceTemplates.html b/docs/dyn/compute_alpha.instanceTemplates.html
index f33d6eb..889a99a 100644
--- a/docs/dyn/compute_alpha.instanceTemplates.html
+++ b/docs/dyn/compute_alpha.instanceTemplates.html
@@ -147,7 +147,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
@@ -222,7 +222,7 @@
                   # - projects/project/zones/zone/diskTypes/diskType
                   # - zones/zone/diskTypes/diskType  Note that for InstanceTemplate, this is the name of the disk type, not URL.
               "diskSizeGb": "A String", # Specifies the size of the disk in base-2 GB.
-              "sourceImage": "A String", # The source image used to create this disk. If the source image is deleted, this field will not be set.
+              "sourceImage": "A String", # The source image to create this disk. When creating a new instance, one of initializeParams.sourceImage or disks.source is required.
                   #
                   # To create a disk with one of the public operating system images, specify the image by its family name. For example, specify family/debian-8 to use the latest Debian 8 image:
                   #
@@ -239,18 +239,25 @@
                   # You can also specify a private image by its image family, which returns the latest version of the image in that family. Replace the image name with family/family-name:
                   #
                   # global/images/family/my-private-family
+                  #
+                  # If the source image is deleted later, this field will not be set.
               "diskStorageType": "A String", # [Deprecated] Storage type of the disk.
             },
             "autoDelete": True or False, # Specifies whether the disk will be auto-deleted when the instance is deleted (but not when the disk is detached from the instance).
             "index": 42, # Assigns a zero-based index to this disk, where 0 is reserved for the boot disk. For example, if you have many disks attached to an instance, each disk would have a unique index number. If not specified, the server will choose an appropriate value.
             "boot": True or False, # Indicates that this is a boot disk. The virtual machine will use the first partition of the disk for its root filesystem.
+            "diskSizeGb": "A String", # The size of the disk in base-2 GB. This supersedes disk_size_gb in InitializeParams.
+            "mode": "A String", # The mode in which to attach this disk, either READ_WRITE or READ_ONLY. If not specified, the default is to attach the disk in READ_WRITE mode.
+            "interface": "A String", # Specifies the disk interface to use for attaching this disk, which is either SCSI or NVME. The default is SCSI. Persistent disks must always use SCSI and the request will fail if you attempt to attach a persistent disk in any other format than SCSI. Local SSDs can use either NVME or SCSI. For performance characteristics of SCSI over NVMe, see Local SSD performance.
             "licenses": [ # [Output Only] Any valid publicly visible licenses.
               "A String",
             ],
-            "mode": "A String", # The mode in which to attach this disk, either READ_WRITE or READ_ONLY. If not specified, the default is to attach the disk in READ_WRITE mode.
-            "interface": "A String", # Specifies the disk interface to use for attaching this disk, which is either SCSI or NVME. The default is SCSI. Persistent disks must always use SCSI and the request will fail if you attempt to attach a persistent disk in any other format than SCSI. Local SSDs can use either NVME or SCSI. For performance characteristics of SCSI over NVMe, see Local SSD performance.
             "type": "A String", # Specifies the type of the disk, either SCRATCH or PERSISTENT. If not specified, the default is PERSISTENT.
-            "source": "A String", # Specifies a valid partial or full URL to an existing Persistent Disk resource. This field is only applicable for persistent disks. Note that for InstanceTemplate, it is just disk name, not URL for the disk.
+            "source": "A String", # Specifies a valid partial or full URL to an existing Persistent Disk resource. When creating a new instance, one of initializeParams.sourceImage or disks.source is required.
+                #
+                # If desired, you can also attach existing non-root persistent disks using this property. This field is only applicable for persistent disks.
+                #
+                # Note that for InstanceTemplate, specify the disk name, not the URL for the disk.
           },
         ],
         "machineType": "A String", # The machine type to use for instances that are created from this template.
@@ -294,7 +301,7 @@
                 "kind": "compute#accessConfig", # [Output Only] Type of the resource. Always compute#accessConfig for access configs.
                 "name": "A String", # Name of this access configuration.
                 "setPublicDns": True or False, # Specifies whether a public DNS ?A? record should be created for the external IP address of this access configuration.
-                "networkTier": "A String", # This signifies the networking tier used for configuring this access configuration and can only take the following values: PREMIUM , STANDARD. If this field is not specified, it is assumed to be PREMIUM.
+                "networkTier": "A String", # This signifies the networking tier used for configuring this access configuration and can only take the following values: CLOUD_NETWORK_PREMIUM , CLOUD_NETWORK_STANDARD. If this field is not specified, it is assumed to be CLOUD_NETWORK_PREMIUM.
                 "ptrDomainName": "A String", # The DNS domain name for the public PTR record. This field can only be set when the set_ptr field is enabled.
                 "dnsName": "A String", # [Output Only] The public DNS domain name for the instance.
                 "natIP": "A String", # An external IP address associated with this instance. Specify an unused static external IP address available to the project or leave this field undefined to use an IP from a shared ephemeral IP address pool. If you specify a static external IP address, it must live in the same region as the zone of the instance.
@@ -401,7 +408,7 @@
                 # - projects/project/zones/zone/diskTypes/diskType
                 # - zones/zone/diskTypes/diskType  Note that for InstanceTemplate, this is the name of the disk type, not URL.
             "diskSizeGb": "A String", # Specifies the size of the disk in base-2 GB.
-            "sourceImage": "A String", # The source image used to create this disk. If the source image is deleted, this field will not be set.
+            "sourceImage": "A String", # The source image to create this disk. When creating a new instance, one of initializeParams.sourceImage or disks.source is required.
                 #
                 # To create a disk with one of the public operating system images, specify the image by its family name. For example, specify family/debian-8 to use the latest Debian 8 image:
                 #
@@ -418,18 +425,25 @@
                 # You can also specify a private image by its image family, which returns the latest version of the image in that family. Replace the image name with family/family-name:
                 #
                 # global/images/family/my-private-family
+                #
+                # If the source image is deleted later, this field will not be set.
             "diskStorageType": "A String", # [Deprecated] Storage type of the disk.
           },
           "autoDelete": True or False, # Specifies whether the disk will be auto-deleted when the instance is deleted (but not when the disk is detached from the instance).
           "index": 42, # Assigns a zero-based index to this disk, where 0 is reserved for the boot disk. For example, if you have many disks attached to an instance, each disk would have a unique index number. If not specified, the server will choose an appropriate value.
           "boot": True or False, # Indicates that this is a boot disk. The virtual machine will use the first partition of the disk for its root filesystem.
+          "diskSizeGb": "A String", # The size of the disk in base-2 GB. This supersedes disk_size_gb in InitializeParams.
+          "mode": "A String", # The mode in which to attach this disk, either READ_WRITE or READ_ONLY. If not specified, the default is to attach the disk in READ_WRITE mode.
+          "interface": "A String", # Specifies the disk interface to use for attaching this disk, which is either SCSI or NVME. The default is SCSI. Persistent disks must always use SCSI and the request will fail if you attempt to attach a persistent disk in any other format than SCSI. Local SSDs can use either NVME or SCSI. For performance characteristics of SCSI over NVMe, see Local SSD performance.
           "licenses": [ # [Output Only] Any valid publicly visible licenses.
             "A String",
           ],
-          "mode": "A String", # The mode in which to attach this disk, either READ_WRITE or READ_ONLY. If not specified, the default is to attach the disk in READ_WRITE mode.
-          "interface": "A String", # Specifies the disk interface to use for attaching this disk, which is either SCSI or NVME. The default is SCSI. Persistent disks must always use SCSI and the request will fail if you attempt to attach a persistent disk in any other format than SCSI. Local SSDs can use either NVME or SCSI. For performance characteristics of SCSI over NVMe, see Local SSD performance.
           "type": "A String", # Specifies the type of the disk, either SCRATCH or PERSISTENT. If not specified, the default is PERSISTENT.
-          "source": "A String", # Specifies a valid partial or full URL to an existing Persistent Disk resource. This field is only applicable for persistent disks. Note that for InstanceTemplate, it is just disk name, not URL for the disk.
+          "source": "A String", # Specifies a valid partial or full URL to an existing Persistent Disk resource. When creating a new instance, one of initializeParams.sourceImage or disks.source is required.
+              #
+              # If desired, you can also attach existing non-root persistent disks using this property. This field is only applicable for persistent disks.
+              #
+              # Note that for InstanceTemplate, specify the disk name, not the URL for the disk.
         },
       ],
       "machineType": "A String", # The machine type to use for instances that are created from this template.
@@ -473,7 +487,7 @@
               "kind": "compute#accessConfig", # [Output Only] Type of the resource. Always compute#accessConfig for access configs.
               "name": "A String", # Name of this access configuration.
               "setPublicDns": True or False, # Specifies whether a public DNS ?A? record should be created for the external IP address of this access configuration.
-              "networkTier": "A String", # This signifies the networking tier used for configuring this access configuration and can only take the following values: PREMIUM , STANDARD. If this field is not specified, it is assumed to be PREMIUM.
+              "networkTier": "A String", # This signifies the networking tier used for configuring this access configuration and can only take the following values: CLOUD_NETWORK_PREMIUM , CLOUD_NETWORK_STANDARD. If this field is not specified, it is assumed to be CLOUD_NETWORK_PREMIUM.
               "ptrDomainName": "A String", # The DNS domain name for the public PTR record. This field can only be set when the set_ptr field is enabled.
               "dnsName": "A String", # [Output Only] The public DNS domain name for the instance.
               "natIP": "A String", # An external IP address associated with this instance. Specify an unused static external IP address available to the project or leave this field undefined to use an IP from a shared ephemeral IP address pool. If you specify a static external IP address, it must live in the same region as the zone of the instance.
@@ -557,7 +571,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
@@ -650,7 +664,7 @@
                       # - projects/project/zones/zone/diskTypes/diskType
                       # - zones/zone/diskTypes/diskType  Note that for InstanceTemplate, this is the name of the disk type, not URL.
                   "diskSizeGb": "A String", # Specifies the size of the disk in base-2 GB.
-                  "sourceImage": "A String", # The source image used to create this disk. If the source image is deleted, this field will not be set.
+                  "sourceImage": "A String", # The source image to create this disk. When creating a new instance, one of initializeParams.sourceImage or disks.source is required.
                       #
                       # To create a disk with one of the public operating system images, specify the image by its family name. For example, specify family/debian-8 to use the latest Debian 8 image:
                       #
@@ -667,18 +681,25 @@
                       # You can also specify a private image by its image family, which returns the latest version of the image in that family. Replace the image name with family/family-name:
                       #
                       # global/images/family/my-private-family
+                      #
+                      # If the source image is deleted later, this field will not be set.
                   "diskStorageType": "A String", # [Deprecated] Storage type of the disk.
                 },
                 "autoDelete": True or False, # Specifies whether the disk will be auto-deleted when the instance is deleted (but not when the disk is detached from the instance).
                 "index": 42, # Assigns a zero-based index to this disk, where 0 is reserved for the boot disk. For example, if you have many disks attached to an instance, each disk would have a unique index number. If not specified, the server will choose an appropriate value.
                 "boot": True or False, # Indicates that this is a boot disk. The virtual machine will use the first partition of the disk for its root filesystem.
+                "diskSizeGb": "A String", # The size of the disk in base-2 GB. This supersedes disk_size_gb in InitializeParams.
+                "mode": "A String", # The mode in which to attach this disk, either READ_WRITE or READ_ONLY. If not specified, the default is to attach the disk in READ_WRITE mode.
+                "interface": "A String", # Specifies the disk interface to use for attaching this disk, which is either SCSI or NVME. The default is SCSI. Persistent disks must always use SCSI and the request will fail if you attempt to attach a persistent disk in any other format than SCSI. Local SSDs can use either NVME or SCSI. For performance characteristics of SCSI over NVMe, see Local SSD performance.
                 "licenses": [ # [Output Only] Any valid publicly visible licenses.
                   "A String",
                 ],
-                "mode": "A String", # The mode in which to attach this disk, either READ_WRITE or READ_ONLY. If not specified, the default is to attach the disk in READ_WRITE mode.
-                "interface": "A String", # Specifies the disk interface to use for attaching this disk, which is either SCSI or NVME. The default is SCSI. Persistent disks must always use SCSI and the request will fail if you attempt to attach a persistent disk in any other format than SCSI. Local SSDs can use either NVME or SCSI. For performance characteristics of SCSI over NVMe, see Local SSD performance.
                 "type": "A String", # Specifies the type of the disk, either SCRATCH or PERSISTENT. If not specified, the default is PERSISTENT.
-                "source": "A String", # Specifies a valid partial or full URL to an existing Persistent Disk resource. This field is only applicable for persistent disks. Note that for InstanceTemplate, it is just disk name, not URL for the disk.
+                "source": "A String", # Specifies a valid partial or full URL to an existing Persistent Disk resource. When creating a new instance, one of initializeParams.sourceImage or disks.source is required.
+                    #
+                    # If desired, you can also attach existing non-root persistent disks using this property. This field is only applicable for persistent disks.
+                    #
+                    # Note that for InstanceTemplate, specify the disk name, not the URL for the disk.
               },
             ],
             "machineType": "A String", # The machine type to use for instances that are created from this template.
@@ -722,7 +743,7 @@
                     "kind": "compute#accessConfig", # [Output Only] Type of the resource. Always compute#accessConfig for access configs.
                     "name": "A String", # Name of this access configuration.
                     "setPublicDns": True or False, # Specifies whether a public DNS ?A? record should be created for the external IP address of this access configuration.
-                    "networkTier": "A String", # This signifies the networking tier used for configuring this access configuration and can only take the following values: PREMIUM , STANDARD. If this field is not specified, it is assumed to be PREMIUM.
+                    "networkTier": "A String", # This signifies the networking tier used for configuring this access configuration and can only take the following values: CLOUD_NETWORK_PREMIUM , CLOUD_NETWORK_STANDARD. If this field is not specified, it is assumed to be CLOUD_NETWORK_PREMIUM.
                     "ptrDomainName": "A String", # The DNS domain name for the public PTR record. This field can only be set when the set_ptr field is enabled.
                     "dnsName": "A String", # [Output Only] The public DNS domain name for the instance.
                     "natIP": "A String", # An external IP address associated with this instance. Specify an unused static external IP address available to the project or leave this field undefined to use an IP from a shared ephemeral IP address pool. If you specify a static external IP address, it must live in the same region as the zone of the instance.
diff --git a/docs/dyn/compute_alpha.instances.html b/docs/dyn/compute_alpha.instances.html
index 4359b5b..e5104a9 100644
--- a/docs/dyn/compute_alpha.instances.html
+++ b/docs/dyn/compute_alpha.instances.html
@@ -175,7 +175,7 @@
   "kind": "compute#accessConfig", # [Output Only] Type of the resource. Always compute#accessConfig for access configs.
   "name": "A String", # Name of this access configuration.
   "setPublicDns": True or False, # Specifies whether a public DNS ?A? record should be created for the external IP address of this access configuration.
-  "networkTier": "A String", # This signifies the networking tier used for configuring this access configuration and can only take the following values: PREMIUM , STANDARD. If this field is not specified, it is assumed to be PREMIUM.
+  "networkTier": "A String", # This signifies the networking tier used for configuring this access configuration and can only take the following values: CLOUD_NETWORK_PREMIUM , CLOUD_NETWORK_STANDARD. If this field is not specified, it is assumed to be CLOUD_NETWORK_PREMIUM.
   "ptrDomainName": "A String", # The DNS domain name for the public PTR record. This field can only be set when the set_ptr field is enabled.
   "dnsName": "A String", # [Output Only] The public DNS domain name for the instance.
   "natIP": "A String", # An external IP address associated with this instance. Specify an unused static external IP address available to the project or leave this field undefined to use an IP from a shared ephemeral IP address pool. If you specify a static external IP address, it must live in the same region as the zone of the instance.
@@ -230,7 +230,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
@@ -310,7 +310,7 @@
                     "kind": "compute#accessConfig", # [Output Only] Type of the resource. Always compute#accessConfig for access configs.
                     "name": "A String", # Name of this access configuration.
                     "setPublicDns": True or False, # Specifies whether a public DNS ?A? record should be created for the external IP address of this access configuration.
-                    "networkTier": "A String", # This signifies the networking tier used for configuring this access configuration and can only take the following values: PREMIUM , STANDARD. If this field is not specified, it is assumed to be PREMIUM.
+                    "networkTier": "A String", # This signifies the networking tier used for configuring this access configuration and can only take the following values: CLOUD_NETWORK_PREMIUM , CLOUD_NETWORK_STANDARD. If this field is not specified, it is assumed to be CLOUD_NETWORK_PREMIUM.
                     "ptrDomainName": "A String", # The DNS domain name for the public PTR record. This field can only be set when the set_ptr field is enabled.
                     "dnsName": "A String", # [Output Only] The public DNS domain name for the instance.
                     "natIP": "A String", # An external IP address associated with this instance. Specify an unused static external IP address available to the project or leave this field undefined to use an IP from a shared ephemeral IP address pool. If you specify a static external IP address, it must live in the same region as the zone of the instance.
@@ -434,7 +434,7 @@
                       # - projects/project/zones/zone/diskTypes/diskType
                       # - zones/zone/diskTypes/diskType  Note that for InstanceTemplate, this is the name of the disk type, not URL.
                   "diskSizeGb": "A String", # Specifies the size of the disk in base-2 GB.
-                  "sourceImage": "A String", # The source image used to create this disk. If the source image is deleted, this field will not be set.
+                  "sourceImage": "A String", # The source image to create this disk. When creating a new instance, one of initializeParams.sourceImage or disks.source is required.
                       #
                       # To create a disk with one of the public operating system images, specify the image by its family name. For example, specify family/debian-8 to use the latest Debian 8 image:
                       #
@@ -451,18 +451,25 @@
                       # You can also specify a private image by its image family, which returns the latest version of the image in that family. Replace the image name with family/family-name:
                       #
                       # global/images/family/my-private-family
+                      #
+                      # If the source image is deleted later, this field will not be set.
                   "diskStorageType": "A String", # [Deprecated] Storage type of the disk.
                 },
                 "autoDelete": True or False, # Specifies whether the disk will be auto-deleted when the instance is deleted (but not when the disk is detached from the instance).
                 "index": 42, # Assigns a zero-based index to this disk, where 0 is reserved for the boot disk. For example, if you have many disks attached to an instance, each disk would have a unique index number. If not specified, the server will choose an appropriate value.
                 "boot": True or False, # Indicates that this is a boot disk. The virtual machine will use the first partition of the disk for its root filesystem.
+                "diskSizeGb": "A String", # The size of the disk in base-2 GB. This supersedes disk_size_gb in InitializeParams.
+                "mode": "A String", # The mode in which to attach this disk, either READ_WRITE or READ_ONLY. If not specified, the default is to attach the disk in READ_WRITE mode.
+                "interface": "A String", # Specifies the disk interface to use for attaching this disk, which is either SCSI or NVME. The default is SCSI. Persistent disks must always use SCSI and the request will fail if you attempt to attach a persistent disk in any other format than SCSI. Local SSDs can use either NVME or SCSI. For performance characteristics of SCSI over NVMe, see Local SSD performance.
                 "licenses": [ # [Output Only] Any valid publicly visible licenses.
                   "A String",
                 ],
-                "mode": "A String", # The mode in which to attach this disk, either READ_WRITE or READ_ONLY. If not specified, the default is to attach the disk in READ_WRITE mode.
-                "interface": "A String", # Specifies the disk interface to use for attaching this disk, which is either SCSI or NVME. The default is SCSI. Persistent disks must always use SCSI and the request will fail if you attempt to attach a persistent disk in any other format than SCSI. Local SSDs can use either NVME or SCSI. For performance characteristics of SCSI over NVMe, see Local SSD performance.
                 "type": "A String", # Specifies the type of the disk, either SCRATCH or PERSISTENT. If not specified, the default is PERSISTENT.
-                "source": "A String", # Specifies a valid partial or full URL to an existing Persistent Disk resource. This field is only applicable for persistent disks. Note that for InstanceTemplate, it is just disk name, not URL for the disk.
+                "source": "A String", # Specifies a valid partial or full URL to an existing Persistent Disk resource. When creating a new instance, one of initializeParams.sourceImage or disks.source is required.
+                    #
+                    # If desired, you can also attach existing non-root persistent disks using this property. This field is only applicable for persistent disks.
+                    #
+                    # Note that for InstanceTemplate, specify the disk name, not the URL for the disk.
               },
             ],
             "selfLink": "A String", # [Output Only] Server-defined URL for this resource.
@@ -562,7 +569,7 @@
         # - projects/project/zones/zone/diskTypes/diskType
         # - zones/zone/diskTypes/diskType  Note that for InstanceTemplate, this is the name of the disk type, not URL.
     "diskSizeGb": "A String", # Specifies the size of the disk in base-2 GB.
-    "sourceImage": "A String", # The source image used to create this disk. If the source image is deleted, this field will not be set.
+    "sourceImage": "A String", # The source image to create this disk. When creating a new instance, one of initializeParams.sourceImage or disks.source is required.
         #
         # To create a disk with one of the public operating system images, specify the image by its family name. For example, specify family/debian-8 to use the latest Debian 8 image:
         #
@@ -579,18 +586,25 @@
         # You can also specify a private image by its image family, which returns the latest version of the image in that family. Replace the image name with family/family-name:
         #
         # global/images/family/my-private-family
+        #
+        # If the source image is deleted later, this field will not be set.
     "diskStorageType": "A String", # [Deprecated] Storage type of the disk.
   },
   "autoDelete": True or False, # Specifies whether the disk will be auto-deleted when the instance is deleted (but not when the disk is detached from the instance).
   "index": 42, # Assigns a zero-based index to this disk, where 0 is reserved for the boot disk. For example, if you have many disks attached to an instance, each disk would have a unique index number. If not specified, the server will choose an appropriate value.
   "boot": True or False, # Indicates that this is a boot disk. The virtual machine will use the first partition of the disk for its root filesystem.
+  "diskSizeGb": "A String", # The size of the disk in base-2 GB. This supersedes disk_size_gb in InitializeParams.
+  "mode": "A String", # The mode in which to attach this disk, either READ_WRITE or READ_ONLY. If not specified, the default is to attach the disk in READ_WRITE mode.
+  "interface": "A String", # Specifies the disk interface to use for attaching this disk, which is either SCSI or NVME. The default is SCSI. Persistent disks must always use SCSI and the request will fail if you attempt to attach a persistent disk in any other format than SCSI. Local SSDs can use either NVME or SCSI. For performance characteristics of SCSI over NVMe, see Local SSD performance.
   "licenses": [ # [Output Only] Any valid publicly visible licenses.
     "A String",
   ],
-  "mode": "A String", # The mode in which to attach this disk, either READ_WRITE or READ_ONLY. If not specified, the default is to attach the disk in READ_WRITE mode.
-  "interface": "A String", # Specifies the disk interface to use for attaching this disk, which is either SCSI or NVME. The default is SCSI. Persistent disks must always use SCSI and the request will fail if you attempt to attach a persistent disk in any other format than SCSI. Local SSDs can use either NVME or SCSI. For performance characteristics of SCSI over NVMe, see Local SSD performance.
   "type": "A String", # Specifies the type of the disk, either SCRATCH or PERSISTENT. If not specified, the default is PERSISTENT.
-  "source": "A String", # Specifies a valid partial or full URL to an existing Persistent Disk resource. This field is only applicable for persistent disks. Note that for InstanceTemplate, it is just disk name, not URL for the disk.
+  "source": "A String", # Specifies a valid partial or full URL to an existing Persistent Disk resource. When creating a new instance, one of initializeParams.sourceImage or disks.source is required.
+      # 
+      # If desired, you can also attach existing non-root persistent disks using this property. This field is only applicable for persistent disks.
+      # 
+      # Note that for InstanceTemplate, specify the disk name, not the URL for the disk.
 }
 
   forceAttach: boolean, Whether to force attach the disk even if it's currently attached to another instance. This is only available for regional disks.
@@ -641,7 +655,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
@@ -700,7 +714,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
@@ -761,7 +775,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
@@ -821,7 +835,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
@@ -882,7 +896,7 @@
             "kind": "compute#accessConfig", # [Output Only] Type of the resource. Always compute#accessConfig for access configs.
             "name": "A String", # Name of this access configuration.
             "setPublicDns": True or False, # Specifies whether a public DNS ?A? record should be created for the external IP address of this access configuration.
-            "networkTier": "A String", # This signifies the networking tier used for configuring this access configuration and can only take the following values: PREMIUM , STANDARD. If this field is not specified, it is assumed to be PREMIUM.
+            "networkTier": "A String", # This signifies the networking tier used for configuring this access configuration and can only take the following values: CLOUD_NETWORK_PREMIUM , CLOUD_NETWORK_STANDARD. If this field is not specified, it is assumed to be CLOUD_NETWORK_PREMIUM.
             "ptrDomainName": "A String", # The DNS domain name for the public PTR record. This field can only be set when the set_ptr field is enabled.
             "dnsName": "A String", # [Output Only] The public DNS domain name for the instance.
             "natIP": "A String", # An external IP address associated with this instance. Specify an unused static external IP address available to the project or leave this field undefined to use an IP from a shared ephemeral IP address pool. If you specify a static external IP address, it must live in the same region as the zone of the instance.
@@ -1006,7 +1020,7 @@
               # - projects/project/zones/zone/diskTypes/diskType
               # - zones/zone/diskTypes/diskType  Note that for InstanceTemplate, this is the name of the disk type, not URL.
           "diskSizeGb": "A String", # Specifies the size of the disk in base-2 GB.
-          "sourceImage": "A String", # The source image used to create this disk. If the source image is deleted, this field will not be set.
+          "sourceImage": "A String", # The source image to create this disk. When creating a new instance, one of initializeParams.sourceImage or disks.source is required.
               #
               # To create a disk with one of the public operating system images, specify the image by its family name. For example, specify family/debian-8 to use the latest Debian 8 image:
               #
@@ -1023,18 +1037,25 @@
               # You can also specify a private image by its image family, which returns the latest version of the image in that family. Replace the image name with family/family-name:
               #
               # global/images/family/my-private-family
+              #
+              # If the source image is deleted later, this field will not be set.
           "diskStorageType": "A String", # [Deprecated] Storage type of the disk.
         },
         "autoDelete": True or False, # Specifies whether the disk will be auto-deleted when the instance is deleted (but not when the disk is detached from the instance).
         "index": 42, # Assigns a zero-based index to this disk, where 0 is reserved for the boot disk. For example, if you have many disks attached to an instance, each disk would have a unique index number. If not specified, the server will choose an appropriate value.
         "boot": True or False, # Indicates that this is a boot disk. The virtual machine will use the first partition of the disk for its root filesystem.
+        "diskSizeGb": "A String", # The size of the disk in base-2 GB. This supersedes disk_size_gb in InitializeParams.
+        "mode": "A String", # The mode in which to attach this disk, either READ_WRITE or READ_ONLY. If not specified, the default is to attach the disk in READ_WRITE mode.
+        "interface": "A String", # Specifies the disk interface to use for attaching this disk, which is either SCSI or NVME. The default is SCSI. Persistent disks must always use SCSI and the request will fail if you attempt to attach a persistent disk in any other format than SCSI. Local SSDs can use either NVME or SCSI. For performance characteristics of SCSI over NVMe, see Local SSD performance.
         "licenses": [ # [Output Only] Any valid publicly visible licenses.
           "A String",
         ],
-        "mode": "A String", # The mode in which to attach this disk, either READ_WRITE or READ_ONLY. If not specified, the default is to attach the disk in READ_WRITE mode.
-        "interface": "A String", # Specifies the disk interface to use for attaching this disk, which is either SCSI or NVME. The default is SCSI. Persistent disks must always use SCSI and the request will fail if you attempt to attach a persistent disk in any other format than SCSI. Local SSDs can use either NVME or SCSI. For performance characteristics of SCSI over NVMe, see Local SSD performance.
         "type": "A String", # Specifies the type of the disk, either SCRATCH or PERSISTENT. If not specified, the default is PERSISTENT.
-        "source": "A String", # Specifies a valid partial or full URL to an existing Persistent Disk resource. This field is only applicable for persistent disks. Note that for InstanceTemplate, it is just disk name, not URL for the disk.
+        "source": "A String", # Specifies a valid partial or full URL to an existing Persistent Disk resource. When creating a new instance, one of initializeParams.sourceImage or disks.source is required.
+            #
+            # If desired, you can also attach existing non-root persistent disks using this property. This field is only applicable for persistent disks.
+            #
+            # Note that for InstanceTemplate, specify the disk name, not the URL for the disk.
       },
     ],
     "selfLink": "A String", # [Output Only] Server-defined URL for this resource.
@@ -1067,11 +1088,19 @@
     "auditConfigs": [ # Specifies audit logging configs for "data access". "data access": generally refers to data reads/writes and admin reads. "admin activity": generally refers to admin writes.
         #
         # Note: `AuditConfig` doesn't apply to "admin activity", which always enables audit logging.
-      { # Enables "data access" audit logging for a service and specifies a list of members that are log-exempted.
+      { # Provides the configuration for non-admin_activity logging for a service. Controls exemptions and specific log sub-types.
         "exemptedMembers": [ # Specifies the identities that are exempted from "data access" audit logging for the `service` specified above. Follows the same format of Binding.members.
           "A String",
         ],
-        "service": "A String", # Specifies a service that will be enabled for "data access" audit logging. For example, `resourcemanager`, `storage`, `compute`. `allServices` is a special value that covers all services.
+        "auditLogConfigs": [ # The configuration for each type of logging
+          { # Provides the configuration for a sub-type of logging.
+            "exemptedMembers": [ # Specifies the identities that are exempted from this type of logging Follows the same format of Binding.members.
+              "A String",
+            ],
+            "logType": "A String", # The log type that this config enables.
+          },
+        ],
+        "service": "A String", # Specifies a service that will be enabled for audit logging. For example, `resourcemanager`, `storage`, `compute`. `allServices` is a special value that covers all services.
       },
     ],
     "rules": [ # If more than one rule is specified, the rules are applied in the following manner: - All matching LOG rules are always applied. - If any DENY/DENY_WITH_LOG rule matches, permission is denied. Logging will be applied if one or more matching rule requires logging. - Otherwise, if any ALLOW/ALLOW_WITH_LOG rule matches, permission is granted. Logging will be applied if one or more matching rule requires logging. - Otherwise, if no rule applies, permission is denied.
@@ -1124,6 +1153,8 @@
             #
             # * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@gmail.com` or `joe@example.com`.
             #
+            #
+            #
             # * `serviceAccount:{emailid}`: An email address that represents a service account. For example, `my-other-app@appspot.gserviceaccount.com`.
             #
             # * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`.
@@ -1215,7 +1246,7 @@
           "kind": "compute#accessConfig", # [Output Only] Type of the resource. Always compute#accessConfig for access configs.
           "name": "A String", # Name of this access configuration.
           "setPublicDns": True or False, # Specifies whether a public DNS ?A? record should be created for the external IP address of this access configuration.
-          "networkTier": "A String", # This signifies the networking tier used for configuring this access configuration and can only take the following values: PREMIUM , STANDARD. If this field is not specified, it is assumed to be PREMIUM.
+          "networkTier": "A String", # This signifies the networking tier used for configuring this access configuration and can only take the following values: CLOUD_NETWORK_PREMIUM , CLOUD_NETWORK_STANDARD. If this field is not specified, it is assumed to be CLOUD_NETWORK_PREMIUM.
           "ptrDomainName": "A String", # The DNS domain name for the public PTR record. This field can only be set when the set_ptr field is enabled.
           "dnsName": "A String", # [Output Only] The public DNS domain name for the instance.
           "natIP": "A String", # An external IP address associated with this instance. Specify an unused static external IP address available to the project or leave this field undefined to use an IP from a shared ephemeral IP address pool. If you specify a static external IP address, it must live in the same region as the zone of the instance.
@@ -1339,7 +1370,7 @@
             # - projects/project/zones/zone/diskTypes/diskType
             # - zones/zone/diskTypes/diskType  Note that for InstanceTemplate, this is the name of the disk type, not URL.
         "diskSizeGb": "A String", # Specifies the size of the disk in base-2 GB.
-        "sourceImage": "A String", # The source image used to create this disk. If the source image is deleted, this field will not be set.
+        "sourceImage": "A String", # The source image to create this disk. When creating a new instance, one of initializeParams.sourceImage or disks.source is required.
             #
             # To create a disk with one of the public operating system images, specify the image by its family name. For example, specify family/debian-8 to use the latest Debian 8 image:
             #
@@ -1356,18 +1387,25 @@
             # You can also specify a private image by its image family, which returns the latest version of the image in that family. Replace the image name with family/family-name:
             #
             # global/images/family/my-private-family
+            #
+            # If the source image is deleted later, this field will not be set.
         "diskStorageType": "A String", # [Deprecated] Storage type of the disk.
       },
       "autoDelete": True or False, # Specifies whether the disk will be auto-deleted when the instance is deleted (but not when the disk is detached from the instance).
       "index": 42, # Assigns a zero-based index to this disk, where 0 is reserved for the boot disk. For example, if you have many disks attached to an instance, each disk would have a unique index number. If not specified, the server will choose an appropriate value.
       "boot": True or False, # Indicates that this is a boot disk. The virtual machine will use the first partition of the disk for its root filesystem.
+      "diskSizeGb": "A String", # The size of the disk in base-2 GB. This supersedes disk_size_gb in InitializeParams.
+      "mode": "A String", # The mode in which to attach this disk, either READ_WRITE or READ_ONLY. If not specified, the default is to attach the disk in READ_WRITE mode.
+      "interface": "A String", # Specifies the disk interface to use for attaching this disk, which is either SCSI or NVME. The default is SCSI. Persistent disks must always use SCSI and the request will fail if you attempt to attach a persistent disk in any other format than SCSI. Local SSDs can use either NVME or SCSI. For performance characteristics of SCSI over NVMe, see Local SSD performance.
       "licenses": [ # [Output Only] Any valid publicly visible licenses.
         "A String",
       ],
-      "mode": "A String", # The mode in which to attach this disk, either READ_WRITE or READ_ONLY. If not specified, the default is to attach the disk in READ_WRITE mode.
-      "interface": "A String", # Specifies the disk interface to use for attaching this disk, which is either SCSI or NVME. The default is SCSI. Persistent disks must always use SCSI and the request will fail if you attempt to attach a persistent disk in any other format than SCSI. Local SSDs can use either NVME or SCSI. For performance characteristics of SCSI over NVMe, see Local SSD performance.
       "type": "A String", # Specifies the type of the disk, either SCRATCH or PERSISTENT. If not specified, the default is PERSISTENT.
-      "source": "A String", # Specifies a valid partial or full URL to an existing Persistent Disk resource. This field is only applicable for persistent disks. Note that for InstanceTemplate, it is just disk name, not URL for the disk.
+      "source": "A String", # Specifies a valid partial or full URL to an existing Persistent Disk resource. When creating a new instance, one of initializeParams.sourceImage or disks.source is required.
+          #
+          # If desired, you can also attach existing non-root persistent disks using this property. This field is only applicable for persistent disks.
+          #
+          # Note that for InstanceTemplate, specify the disk name, not the URL for the disk.
     },
   ],
   "selfLink": "A String", # [Output Only] Server-defined URL for this resource.
@@ -1420,7 +1458,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
@@ -1499,7 +1537,7 @@
                 "kind": "compute#accessConfig", # [Output Only] Type of the resource. Always compute#accessConfig for access configs.
                 "name": "A String", # Name of this access configuration.
                 "setPublicDns": True or False, # Specifies whether a public DNS ?A? record should be created for the external IP address of this access configuration.
-                "networkTier": "A String", # This signifies the networking tier used for configuring this access configuration and can only take the following values: PREMIUM , STANDARD. If this field is not specified, it is assumed to be PREMIUM.
+                "networkTier": "A String", # This signifies the networking tier used for configuring this access configuration and can only take the following values: CLOUD_NETWORK_PREMIUM , CLOUD_NETWORK_STANDARD. If this field is not specified, it is assumed to be CLOUD_NETWORK_PREMIUM.
                 "ptrDomainName": "A String", # The DNS domain name for the public PTR record. This field can only be set when the set_ptr field is enabled.
                 "dnsName": "A String", # [Output Only] The public DNS domain name for the instance.
                 "natIP": "A String", # An external IP address associated with this instance. Specify an unused static external IP address available to the project or leave this field undefined to use an IP from a shared ephemeral IP address pool. If you specify a static external IP address, it must live in the same region as the zone of the instance.
@@ -1623,7 +1661,7 @@
                   # - projects/project/zones/zone/diskTypes/diskType
                   # - zones/zone/diskTypes/diskType  Note that for InstanceTemplate, this is the name of the disk type, not URL.
               "diskSizeGb": "A String", # Specifies the size of the disk in base-2 GB.
-              "sourceImage": "A String", # The source image used to create this disk. If the source image is deleted, this field will not be set.
+              "sourceImage": "A String", # The source image to create this disk. When creating a new instance, one of initializeParams.sourceImage or disks.source is required.
                   #
                   # To create a disk with one of the public operating system images, specify the image by its family name. For example, specify family/debian-8 to use the latest Debian 8 image:
                   #
@@ -1640,18 +1678,25 @@
                   # You can also specify a private image by its image family, which returns the latest version of the image in that family. Replace the image name with family/family-name:
                   #
                   # global/images/family/my-private-family
+                  #
+                  # If the source image is deleted later, this field will not be set.
               "diskStorageType": "A String", # [Deprecated] Storage type of the disk.
             },
             "autoDelete": True or False, # Specifies whether the disk will be auto-deleted when the instance is deleted (but not when the disk is detached from the instance).
             "index": 42, # Assigns a zero-based index to this disk, where 0 is reserved for the boot disk. For example, if you have many disks attached to an instance, each disk would have a unique index number. If not specified, the server will choose an appropriate value.
             "boot": True or False, # Indicates that this is a boot disk. The virtual machine will use the first partition of the disk for its root filesystem.
+            "diskSizeGb": "A String", # The size of the disk in base-2 GB. This supersedes disk_size_gb in InitializeParams.
+            "mode": "A String", # The mode in which to attach this disk, either READ_WRITE or READ_ONLY. If not specified, the default is to attach the disk in READ_WRITE mode.
+            "interface": "A String", # Specifies the disk interface to use for attaching this disk, which is either SCSI or NVME. The default is SCSI. Persistent disks must always use SCSI and the request will fail if you attempt to attach a persistent disk in any other format than SCSI. Local SSDs can use either NVME or SCSI. For performance characteristics of SCSI over NVMe, see Local SSD performance.
             "licenses": [ # [Output Only] Any valid publicly visible licenses.
               "A String",
             ],
-            "mode": "A String", # The mode in which to attach this disk, either READ_WRITE or READ_ONLY. If not specified, the default is to attach the disk in READ_WRITE mode.
-            "interface": "A String", # Specifies the disk interface to use for attaching this disk, which is either SCSI or NVME. The default is SCSI. Persistent disks must always use SCSI and the request will fail if you attempt to attach a persistent disk in any other format than SCSI. Local SSDs can use either NVME or SCSI. For performance characteristics of SCSI over NVMe, see Local SSD performance.
             "type": "A String", # Specifies the type of the disk, either SCRATCH or PERSISTENT. If not specified, the default is PERSISTENT.
-            "source": "A String", # Specifies a valid partial or full URL to an existing Persistent Disk resource. This field is only applicable for persistent disks. Note that for InstanceTemplate, it is just disk name, not URL for the disk.
+            "source": "A String", # Specifies a valid partial or full URL to an existing Persistent Disk resource. When creating a new instance, one of initializeParams.sourceImage or disks.source is required.
+                #
+                # If desired, you can also attach existing non-root persistent disks using this property. This field is only applicable for persistent disks.
+                #
+                # Note that for InstanceTemplate, specify the disk name, not the URL for the disk.
           },
         ],
         "selfLink": "A String", # [Output Only] Server-defined URL for this resource.
@@ -1732,7 +1777,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
@@ -1793,7 +1838,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
@@ -1822,11 +1867,19 @@
   "auditConfigs": [ # Specifies audit logging configs for "data access". "data access": generally refers to data reads/writes and admin reads. "admin activity": generally refers to admin writes.
       # 
       # Note: `AuditConfig` doesn't apply to "admin activity", which always enables audit logging.
-    { # Enables "data access" audit logging for a service and specifies a list of members that are log-exempted.
+    { # Provides the configuration for non-admin_activity logging for a service. Controls exemptions and specific log sub-types.
       "exemptedMembers": [ # Specifies the identities that are exempted from "data access" audit logging for the `service` specified above. Follows the same format of Binding.members.
         "A String",
       ],
-      "service": "A String", # Specifies a service that will be enabled for "data access" audit logging. For example, `resourcemanager`, `storage`, `compute`. `allServices` is a special value that covers all services.
+      "auditLogConfigs": [ # The configuration for each type of logging
+        { # Provides the configuration for a sub-type of logging.
+          "exemptedMembers": [ # Specifies the identities that are exempted from this type of logging Follows the same format of Binding.members.
+            "A String",
+          ],
+          "logType": "A String", # The log type that this config enables.
+        },
+      ],
+      "service": "A String", # Specifies a service that will be enabled for audit logging. For example, `resourcemanager`, `storage`, `compute`. `allServices` is a special value that covers all services.
     },
   ],
   "rules": [ # If more than one rule is specified, the rules are applied in the following manner: - All matching LOG rules are always applied. - If any DENY/DENY_WITH_LOG rule matches, permission is denied. Logging will be applied if one or more matching rule requires logging. - Otherwise, if any ALLOW/ALLOW_WITH_LOG rule matches, permission is granted. Logging will be applied if one or more matching rule requires logging. - Otherwise, if no rule applies, permission is denied.
@@ -1879,6 +1932,8 @@
           #
           # * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@gmail.com` or `joe@example.com`.
           #
+          #
+          #
           # * `serviceAccount:{emailid}`: An email address that represents a service account. For example, `my-other-app@appspot.gserviceaccount.com`.
           #
           # * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`.
@@ -1909,11 +1964,19 @@
     "auditConfigs": [ # Specifies audit logging configs for "data access". "data access": generally refers to data reads/writes and admin reads. "admin activity": generally refers to admin writes.
         #
         # Note: `AuditConfig` doesn't apply to "admin activity", which always enables audit logging.
-      { # Enables "data access" audit logging for a service and specifies a list of members that are log-exempted.
+      { # Provides the configuration for non-admin_activity logging for a service. Controls exemptions and specific log sub-types.
         "exemptedMembers": [ # Specifies the identities that are exempted from "data access" audit logging for the `service` specified above. Follows the same format of Binding.members.
           "A String",
         ],
-        "service": "A String", # Specifies a service that will be enabled for "data access" audit logging. For example, `resourcemanager`, `storage`, `compute`. `allServices` is a special value that covers all services.
+        "auditLogConfigs": [ # The configuration for each type of logging
+          { # Provides the configuration for a sub-type of logging.
+            "exemptedMembers": [ # Specifies the identities that are exempted from this type of logging Follows the same format of Binding.members.
+              "A String",
+            ],
+            "logType": "A String", # The log type that this config enables.
+          },
+        ],
+        "service": "A String", # Specifies a service that will be enabled for audit logging. For example, `resourcemanager`, `storage`, `compute`. `allServices` is a special value that covers all services.
       },
     ],
     "rules": [ # If more than one rule is specified, the rules are applied in the following manner: - All matching LOG rules are always applied. - If any DENY/DENY_WITH_LOG rule matches, permission is denied. Logging will be applied if one or more matching rule requires logging. - Otherwise, if any ALLOW/ALLOW_WITH_LOG rule matches, permission is granted. Logging will be applied if one or more matching rule requires logging. - Otherwise, if no rule applies, permission is denied.
@@ -1966,6 +2029,8 @@
             #
             # * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@gmail.com` or `joe@example.com`.
             #
+            #
+            #
             # * `serviceAccount:{emailid}`: An email address that represents a service account. For example, `my-other-app@appspot.gserviceaccount.com`.
             #
             # * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`.
@@ -2046,7 +2111,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
@@ -2112,7 +2177,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
@@ -2185,7 +2250,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
@@ -2253,7 +2318,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
@@ -2322,7 +2387,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
@@ -2393,7 +2458,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
@@ -2452,7 +2517,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
@@ -2548,7 +2613,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
@@ -2608,7 +2673,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
@@ -2668,7 +2733,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
@@ -2716,7 +2781,7 @@
   "kind": "compute#accessConfig", # [Output Only] Type of the resource. Always compute#accessConfig for access configs.
   "name": "A String", # Name of this access configuration.
   "setPublicDns": True or False, # Specifies whether a public DNS ?A? record should be created for the external IP address of this access configuration.
-  "networkTier": "A String", # This signifies the networking tier used for configuring this access configuration and can only take the following values: PREMIUM , STANDARD. If this field is not specified, it is assumed to be PREMIUM.
+  "networkTier": "A String", # This signifies the networking tier used for configuring this access configuration and can only take the following values: CLOUD_NETWORK_PREMIUM , CLOUD_NETWORK_STANDARD. If this field is not specified, it is assumed to be CLOUD_NETWORK_PREMIUM.
   "ptrDomainName": "A String", # The DNS domain name for the public PTR record. This field can only be set when the set_ptr field is enabled.
   "dnsName": "A String", # [Output Only] The public DNS domain name for the instance.
   "natIP": "A String", # An external IP address associated with this instance. Specify an unused static external IP address available to the project or leave this field undefined to use an IP from a shared ephemeral IP address pool. If you specify a static external IP address, it must live in the same region as the zone of the instance.
@@ -2771,7 +2836,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
diff --git a/docs/dyn/compute_alpha.licenses.html b/docs/dyn/compute_alpha.licenses.html
index 6bce5b6..3195be3 100644
--- a/docs/dyn/compute_alpha.licenses.html
+++ b/docs/dyn/compute_alpha.licenses.html
@@ -90,9 +90,11 @@
   An object of the form:
 
     { # A license resource.
-    "chargesUseFee": True or False, # [Output Only] If true, the customer will be charged license fee for running software that contains this license on an instance.
     "kind": "compute#license", # [Output Only] Type of resource. Always compute#license for licenses.
     "name": "A String", # [Output Only] Name of the resource. The name is 1-63 characters long and complies with RFC1035.
+    "chargesUseFee": True or False, # [Output Only] If true, the customer will be charged license fee for running software that contains this license on an instance.
+    "licenseCode": "A String", # [Output Only] The unique code used to attach this license to images, snapshots, and disks.
+    "transferable": True or False, # If false, licenses will not be copied from the source resource when creating an image from a disk, disk from snapshot, or snapshot from disk.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
   }</pre>
 </div>
diff --git a/docs/dyn/compute_alpha.machineTypes.html b/docs/dyn/compute_alpha.machineTypes.html
index 4fdc60e..cfe0ee5 100644
--- a/docs/dyn/compute_alpha.machineTypes.html
+++ b/docs/dyn/compute_alpha.machineTypes.html
@@ -129,10 +129,10 @@
             "zone": "A String", # [Output Only] The name of the zone where the machine type resides, such as us-central1-a.
             "maximumPersistentDisks": 42, # [Output Only] Maximum persistent disks allowed.
             "deprecated": { # Deprecation status for a public resource. # [Output Only] The deprecation status associated with this machine type.
-              "deleted": "A String", # An optional RFC3339 timestamp on or after which the deprecation state of this resource will be changed to DELETED.
-              "deprecated": "A String", # An optional RFC3339 timestamp on or after which the deprecation state of this resource will be changed to DEPRECATED.
+              "deleted": "A String", # An optional RFC3339 timestamp on or after which the state of this resource is intended to change to DELETED. This is only informational and the status will not change unless the client explicitly changes it.
+              "deprecated": "A String", # An optional RFC3339 timestamp on or after which the state of this resource is intended to change to DEPRECATED. This is only informational and the status will not change unless the client explicitly changes it.
               "state": "A String", # The deprecation state of this resource. This can be DEPRECATED, OBSOLETE, or DELETED. Operations which create a new resource using a DEPRECATED resource will return successfully, but with a warning indicating the deprecated resource and recommending its replacement. Operations which use OBSOLETE or DELETED resources will be rejected and result in an error.
-              "obsolete": "A String", # An optional RFC3339 timestamp on or after which the deprecation state of this resource will be changed to OBSOLETE.
+              "obsolete": "A String", # An optional RFC3339 timestamp on or after which the state of this resource is intended to change to OBSOLETE. This is only informational and the status will not change unless the client explicitly changes it.
               "replacement": "A String", # The URL of the suggested replacement for a deprecated resource. The suggested replacement resource must be the same kind of resource as the deprecated resource.
             },
             "memoryMb": 42, # [Output Only] The amount of physical memory available to the instance, defined in MB.
@@ -196,10 +196,10 @@
     "zone": "A String", # [Output Only] The name of the zone where the machine type resides, such as us-central1-a.
     "maximumPersistentDisks": 42, # [Output Only] Maximum persistent disks allowed.
     "deprecated": { # Deprecation status for a public resource. # [Output Only] The deprecation status associated with this machine type.
-      "deleted": "A String", # An optional RFC3339 timestamp on or after which the deprecation state of this resource will be changed to DELETED.
-      "deprecated": "A String", # An optional RFC3339 timestamp on or after which the deprecation state of this resource will be changed to DEPRECATED.
+      "deleted": "A String", # An optional RFC3339 timestamp on or after which the state of this resource is intended to change to DELETED. This is only informational and the status will not change unless the client explicitly changes it.
+      "deprecated": "A String", # An optional RFC3339 timestamp on or after which the state of this resource is intended to change to DEPRECATED. This is only informational and the status will not change unless the client explicitly changes it.
       "state": "A String", # The deprecation state of this resource. This can be DEPRECATED, OBSOLETE, or DELETED. Operations which create a new resource using a DEPRECATED resource will return successfully, but with a warning indicating the deprecated resource and recommending its replacement. Operations which use OBSOLETE or DELETED resources will be rejected and result in an error.
-      "obsolete": "A String", # An optional RFC3339 timestamp on or after which the deprecation state of this resource will be changed to OBSOLETE.
+      "obsolete": "A String", # An optional RFC3339 timestamp on or after which the state of this resource is intended to change to OBSOLETE. This is only informational and the status will not change unless the client explicitly changes it.
       "replacement": "A String", # The URL of the suggested replacement for a deprecated resource. The suggested replacement resource must be the same kind of resource as the deprecated resource.
     },
     "memoryMb": 42, # [Output Only] The amount of physical memory available to the instance, defined in MB.
@@ -249,10 +249,10 @@
         "zone": "A String", # [Output Only] The name of the zone where the machine type resides, such as us-central1-a.
         "maximumPersistentDisks": 42, # [Output Only] Maximum persistent disks allowed.
         "deprecated": { # Deprecation status for a public resource. # [Output Only] The deprecation status associated with this machine type.
-          "deleted": "A String", # An optional RFC3339 timestamp on or after which the deprecation state of this resource will be changed to DELETED.
-          "deprecated": "A String", # An optional RFC3339 timestamp on or after which the deprecation state of this resource will be changed to DEPRECATED.
+          "deleted": "A String", # An optional RFC3339 timestamp on or after which the state of this resource is intended to change to DELETED. This is only informational and the status will not change unless the client explicitly changes it.
+          "deprecated": "A String", # An optional RFC3339 timestamp on or after which the state of this resource is intended to change to DEPRECATED. This is only informational and the status will not change unless the client explicitly changes it.
           "state": "A String", # The deprecation state of this resource. This can be DEPRECATED, OBSOLETE, or DELETED. Operations which create a new resource using a DEPRECATED resource will return successfully, but with a warning indicating the deprecated resource and recommending its replacement. Operations which use OBSOLETE or DELETED resources will be rejected and result in an error.
-          "obsolete": "A String", # An optional RFC3339 timestamp on or after which the deprecation state of this resource will be changed to OBSOLETE.
+          "obsolete": "A String", # An optional RFC3339 timestamp on or after which the state of this resource is intended to change to OBSOLETE. This is only informational and the status will not change unless the client explicitly changes it.
           "replacement": "A String", # The URL of the suggested replacement for a deprecated resource. The suggested replacement resource must be the same kind of resource as the deprecated resource.
         },
         "memoryMb": 42, # [Output Only] The amount of physical memory available to the instance, defined in MB.
diff --git a/docs/dyn/compute_alpha.networks.html b/docs/dyn/compute_alpha.networks.html
index 86c9db0..509bf29 100644
--- a/docs/dyn/compute_alpha.networks.html
+++ b/docs/dyn/compute_alpha.networks.html
@@ -75,6 +75,9 @@
 <h1><a href="compute_alpha.html">Compute Engine API</a> . <a href="compute_alpha.networks.html">networks</a></h1>
 <h2>Instance Methods</h2>
 <p class="toc_element">
+  <code><a href="#addPeering">addPeering(project, network, body)</a></code></p>
+<p class="firstline">Adds a peering to the specified network.</p>
+<p class="toc_element">
   <code><a href="#delete">delete(project, network)</a></code></p>
 <p class="firstline">Deletes the specified network.</p>
 <p class="toc_element">
@@ -90,6 +93,9 @@
   <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="#removePeering">removePeering(project, network, body)</a></code></p>
+<p class="firstline">Removes a peering from the specified network.</p>
+<p class="toc_element">
   <code><a href="#switchToCustomMode">switchToCustomMode(project, network)</a></code></p>
 <p class="firstline">Switches the network mode from auto subnet mode to custom subnet mode.</p>
 <p class="toc_element">
@@ -97,6 +103,73 @@
 <p class="firstline">Returns permissions that a caller has on the specified resource.</p>
 <h3>Method Details</h3>
 <div class="method">
+    <code class="details" id="addPeering">addPeering(project, network, body)</code>
+  <pre>Adds a peering to the specified network.
+
+Args:
+  project: string, Project ID for this request. (required)
+  network: string, Name of the network resource to add peering to. (required)
+  body: object, The request body. (required)
+    The object takes the form of:
+
+{
+    "peerNetwork": "A String", # URL of the peer network. It can be either full URL or partial URL. The peer network may belong to a different project. If the partial URL does not contain project, it is assumed that the peer network is in the same project as the current network.
+    "name": "A String", # Name of the peering, which should conform to RFC1035.
+    "autoCreateRoutes": True or False, # Whether Google Compute Engine manages the routes automatically.
+  }
+
+
+Returns:
+  An object of the form:
+
+    { # An Operation resource, used to manage asynchronous API requests.
+    "targetId": "A String", # [Output Only] The unique target ID, which identifies a specific incarnation of the target resource.
+    "clientOperationId": "A String", # [Output Only] Reserved for future use.
+    "creationTimestamp": "A String", # [Output Only] Creation timestamp in RFC3339 text format.
+    "id": "A String", # [Output Only] The unique identifier for the resource. This identifier is defined by the server.
+    "zone": "A String", # [Output Only] The URL of the zone where the operation resides. Only available when performing per-zone operations.
+    "insertTime": "A String", # [Output Only] The time that this operation was requested. This value is in RFC3339 text format.
+    "operationType": "A String", # [Output Only] The type of operation, such as insert, update, or delete, and so on.
+    "httpErrorMessage": "A String", # [Output Only] If the operation fails, this field contains the HTTP error message that was returned, such as NOT FOUND.
+    "progress": 42, # [Output Only] An optional progress indicator that ranges from 0 to 100. There is no requirement that this be linear or support any granularity of operations. This should not be used to guess when the operation will be complete. This number should monotonically increase as the operation progresses.
+    "httpErrorStatusCode": 42, # [Output Only] If the operation fails, this field contains the HTTP error status code that was returned. For example, a 404 means the resource was not found.
+    "statusMessage": "A String", # [Output Only] An optional textual description of the current status of the operation.
+    "status": "A String", # [Output Only] The status of the operation, which can be one of the following: PENDING, RUNNING, or DONE.
+    "description": "A String", # [Output Only] A textual description of the operation, which is set when the operation is created.
+    "warnings": [ # [Output Only] If warning messages are generated during processing of the operation, this field will be populated.
+      {
+        "message": "A String", # [Output Only] A human-readable description of the warning code.
+        "code": "A String", # [Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.
+        "data": [ # [Output Only] Metadata about this warning in key: value format. For example:
+            # "data": [ { "key": "scope", "value": "zones/us-east1-d" }
+          {
+            "value": "A String", # [Output Only] A warning data value corresponding to the key.
+            "key": "A String", # [Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding).
+          },
+        ],
+      },
+    ],
+    "user": "A String", # [Output Only] User who requested the operation, for example: user@example.com.
+    "startTime": "A String", # [Output Only] The time that this operation was started by the server. This value is in RFC3339 text format.
+    "kind": "compute#operation", # [Output Only] Type of the resource. Always compute#operation for Operation resources.
+    "name": "A String", # [Output Only] Name of the resource.
+    "region": "A String", # [Output Only] The URL of the region where the operation resides. Only available when performing regional operations.
+    "error": { # [Output Only] If errors are generated during processing of the operation, this field will be populated.
+      "errors": [ # [Output Only] The array of errors encountered while processing this operation.
+        {
+          "message": "A String", # [Output Only] An optional, human-readable error message.
+          "code": "A String", # [Output Only] The error type identifier for this error.
+          "location": "A String", # [Output Only] Indicates the field in the request that caused the error. This property is optional.
+        },
+      ],
+    },
+    "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
+    "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
+  }</pre>
+</div>
+
+<div class="method">
     <code class="details" id="delete">delete(project, network)</code>
   <pre>Deletes the specified network.
 
@@ -150,7 +223,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
@@ -176,6 +249,15 @@
       "id": "A String", # [Output Only] The unique identifier for the resource. This identifier is defined by the server.
       "IPv4Range": "A String", # The range of internal addresses that are legal on this network. This range is a CIDR specification, for example: 192.168.0.0/16. Provided by the client when the network is created.
       "gatewayIPv4": "A String", # A gateway address for default routing to other networks. This value is read only and is selected by the Google Compute Engine, typically as the first usable address in the IPv4Range.
+      "peerings": [ # [Output Only] List of network peerings for the resource.
+        { # A network peering attached to a network resource. The message includes the peering name, peer network, peering state, and a flag indicating whether Google Compute Engine should automatically create routes for the peering.
+          "network": "A String", # The URL of the peer network. It can be either full URL or partial URL. The peer network may belong to a different project. If the partial URL does not contain project, it is assumed that the peer network is in the same project as the current network.
+          "state": "A String", # [Output Only] State for the peering.
+          "stateDetails": "A String", # [Output Only] Details about the current state of the peering.
+          "name": "A String", # Name of this peering. Provided by the client when the peering is created. The name must comply with RFC1035. Specifically, the name must be 1-63 characters long and match regular expression [a-z]([-a-z0-9]*[a-z0-9])? which means the first character must be a lowercase letter, and all the following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.
+          "autoCreateRoutes": True or False, # Whether full mesh connectivity is created and managed automatically. When it is set to true, Google Compute Engine will automatically create and manage the routes between two networks when the state is ACTIVE. Otherwise, user needs to create routes manually to route packets to peer network.
+        },
+      ],
       "creationTimestamp": "A String", # [Output Only] Creation timestamp in RFC3339 text format.
       "autoCreateSubnetworks": True or False, # When set to true, the network is created in "auto subnet mode". When set to false, the network is in "custom subnet mode".
           #
@@ -205,6 +287,15 @@
     "id": "A String", # [Output Only] The unique identifier for the resource. This identifier is defined by the server.
     "IPv4Range": "A String", # The range of internal addresses that are legal on this network. This range is a CIDR specification, for example: 192.168.0.0/16. Provided by the client when the network is created.
     "gatewayIPv4": "A String", # A gateway address for default routing to other networks. This value is read only and is selected by the Google Compute Engine, typically as the first usable address in the IPv4Range.
+    "peerings": [ # [Output Only] List of network peerings for the resource.
+      { # A network peering attached to a network resource. The message includes the peering name, peer network, peering state, and a flag indicating whether Google Compute Engine should automatically create routes for the peering.
+        "network": "A String", # The URL of the peer network. It can be either full URL or partial URL. The peer network may belong to a different project. If the partial URL does not contain project, it is assumed that the peer network is in the same project as the current network.
+        "state": "A String", # [Output Only] State for the peering.
+        "stateDetails": "A String", # [Output Only] Details about the current state of the peering.
+        "name": "A String", # Name of this peering. Provided by the client when the peering is created. The name must comply with RFC1035. Specifically, the name must be 1-63 characters long and match regular expression [a-z]([-a-z0-9]*[a-z0-9])? which means the first character must be a lowercase letter, and all the following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.
+        "autoCreateRoutes": True or False, # Whether full mesh connectivity is created and managed automatically. When it is set to true, Google Compute Engine will automatically create and manage the routes between two networks when the state is ACTIVE. Otherwise, user needs to create routes manually to route packets to peer network.
+      },
+    ],
     "creationTimestamp": "A String", # [Output Only] Creation timestamp in RFC3339 text format.
     "autoCreateSubnetworks": True or False, # When set to true, the network is created in "auto subnet mode". When set to false, the network is in "custom subnet mode".
         # 
@@ -260,7 +351,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
@@ -304,6 +395,15 @@
           "id": "A String", # [Output Only] The unique identifier for the resource. This identifier is defined by the server.
           "IPv4Range": "A String", # The range of internal addresses that are legal on this network. This range is a CIDR specification, for example: 192.168.0.0/16. Provided by the client when the network is created.
           "gatewayIPv4": "A String", # A gateway address for default routing to other networks. This value is read only and is selected by the Google Compute Engine, typically as the first usable address in the IPv4Range.
+          "peerings": [ # [Output Only] List of network peerings for the resource.
+            { # A network peering attached to a network resource. The message includes the peering name, peer network, peering state, and a flag indicating whether Google Compute Engine should automatically create routes for the peering.
+              "network": "A String", # The URL of the peer network. It can be either full URL or partial URL. The peer network may belong to a different project. If the partial URL does not contain project, it is assumed that the peer network is in the same project as the current network.
+              "state": "A String", # [Output Only] State for the peering.
+              "stateDetails": "A String", # [Output Only] Details about the current state of the peering.
+              "name": "A String", # Name of this peering. Provided by the client when the peering is created. The name must comply with RFC1035. Specifically, the name must be 1-63 characters long and match regular expression [a-z]([-a-z0-9]*[a-z0-9])? which means the first character must be a lowercase letter, and all the following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.
+              "autoCreateRoutes": True or False, # Whether full mesh connectivity is created and managed automatically. When it is set to true, Google Compute Engine will automatically create and manage the routes between two networks when the state is ACTIVE. Otherwise, user needs to create routes manually to route packets to peer network.
+            },
+          ],
           "creationTimestamp": "A String", # [Output Only] Creation timestamp in RFC3339 text format.
           "autoCreateSubnetworks": True or False, # When set to true, the network is created in "auto subnet mode". When set to false, the network is in "custom subnet mode".
               #
@@ -333,6 +433,71 @@
 </div>
 
 <div class="method">
+    <code class="details" id="removePeering">removePeering(project, network, body)</code>
+  <pre>Removes a peering from the specified network.
+
+Args:
+  project: string, Project ID for this request. (required)
+  network: string, Name of the network resource to remove peering from. (required)
+  body: object, The request body. (required)
+    The object takes the form of:
+
+{
+    "name": "A String", # Name of the peering, which should conform to RFC1035.
+  }
+
+
+Returns:
+  An object of the form:
+
+    { # An Operation resource, used to manage asynchronous API requests.
+    "targetId": "A String", # [Output Only] The unique target ID, which identifies a specific incarnation of the target resource.
+    "clientOperationId": "A String", # [Output Only] Reserved for future use.
+    "creationTimestamp": "A String", # [Output Only] Creation timestamp in RFC3339 text format.
+    "id": "A String", # [Output Only] The unique identifier for the resource. This identifier is defined by the server.
+    "zone": "A String", # [Output Only] The URL of the zone where the operation resides. Only available when performing per-zone operations.
+    "insertTime": "A String", # [Output Only] The time that this operation was requested. This value is in RFC3339 text format.
+    "operationType": "A String", # [Output Only] The type of operation, such as insert, update, or delete, and so on.
+    "httpErrorMessage": "A String", # [Output Only] If the operation fails, this field contains the HTTP error message that was returned, such as NOT FOUND.
+    "progress": 42, # [Output Only] An optional progress indicator that ranges from 0 to 100. There is no requirement that this be linear or support any granularity of operations. This should not be used to guess when the operation will be complete. This number should monotonically increase as the operation progresses.
+    "httpErrorStatusCode": 42, # [Output Only] If the operation fails, this field contains the HTTP error status code that was returned. For example, a 404 means the resource was not found.
+    "statusMessage": "A String", # [Output Only] An optional textual description of the current status of the operation.
+    "status": "A String", # [Output Only] The status of the operation, which can be one of the following: PENDING, RUNNING, or DONE.
+    "description": "A String", # [Output Only] A textual description of the operation, which is set when the operation is created.
+    "warnings": [ # [Output Only] If warning messages are generated during processing of the operation, this field will be populated.
+      {
+        "message": "A String", # [Output Only] A human-readable description of the warning code.
+        "code": "A String", # [Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.
+        "data": [ # [Output Only] Metadata about this warning in key: value format. For example:
+            # "data": [ { "key": "scope", "value": "zones/us-east1-d" }
+          {
+            "value": "A String", # [Output Only] A warning data value corresponding to the key.
+            "key": "A String", # [Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding).
+          },
+        ],
+      },
+    ],
+    "user": "A String", # [Output Only] User who requested the operation, for example: user@example.com.
+    "startTime": "A String", # [Output Only] The time that this operation was started by the server. This value is in RFC3339 text format.
+    "kind": "compute#operation", # [Output Only] Type of the resource. Always compute#operation for Operation resources.
+    "name": "A String", # [Output Only] Name of the resource.
+    "region": "A String", # [Output Only] The URL of the region where the operation resides. Only available when performing regional operations.
+    "error": { # [Output Only] If errors are generated during processing of the operation, this field will be populated.
+      "errors": [ # [Output Only] The array of errors encountered while processing this operation.
+        {
+          "message": "A String", # [Output Only] An optional, human-readable error message.
+          "code": "A String", # [Output Only] The error type identifier for this error.
+          "location": "A String", # [Output Only] Indicates the field in the request that caused the error. This property is optional.
+        },
+      ],
+    },
+    "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
+    "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
+  }</pre>
+</div>
+
+<div class="method">
     <code class="details" id="switchToCustomMode">switchToCustomMode(project, network)</code>
   <pre>Switches the network mode from auto subnet mode to custom subnet mode.
 
@@ -386,7 +551,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
diff --git a/docs/dyn/compute_alpha.projects.html b/docs/dyn/compute_alpha.projects.html
index a7080a9..8b431f9 100644
--- a/docs/dyn/compute_alpha.projects.html
+++ b/docs/dyn/compute_alpha.projects.html
@@ -167,7 +167,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
@@ -234,7 +234,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
@@ -291,7 +291,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
@@ -358,7 +358,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
@@ -603,7 +603,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
@@ -674,7 +674,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
@@ -745,7 +745,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
@@ -809,7 +809,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
@@ -874,7 +874,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
diff --git a/docs/dyn/compute_alpha.regionAutoscalers.html b/docs/dyn/compute_alpha.regionAutoscalers.html
index e50baf9..031b48b 100644
--- a/docs/dyn/compute_alpha.regionAutoscalers.html
+++ b/docs/dyn/compute_alpha.regionAutoscalers.html
@@ -154,7 +154,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
@@ -344,7 +344,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
@@ -572,7 +572,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
@@ -720,7 +720,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
diff --git a/docs/dyn/compute_alpha.regionBackendServices.html b/docs/dyn/compute_alpha.regionBackendServices.html
index 29aa718..5551a1e 100644
--- a/docs/dyn/compute_alpha.regionBackendServices.html
+++ b/docs/dyn/compute_alpha.regionBackendServices.html
@@ -157,7 +157,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
@@ -202,7 +202,19 @@
           # When the protocol is UDP, this field is not used.
       "creationTimestamp": "A String", # [Output Only] Creation timestamp in RFC3339 text format.
       "id": "A String", # [Output Only] The unique identifier for the resource. This identifier is defined by the server.
-      "timeoutSec": 42, # How many seconds to wait for the backend before considering it a failed request. Default is 30 seconds.
+      "cdnPolicy": { # Message containing Cloud CDN configuration for a backend service. # Cloud CDN configuration for this BackendService.
+        "cacheKeyPolicy": { # Message containing what to include in the cache key for a request for Cloud CDN. # The CacheKeyPolicy for this CdnPolicy.
+          "includeQueryString": True or False, # If true, include query string parameters in the cache key according to query_string_whitelist and query_string_blacklist. If neither is set, the entire query string will be included. If false, the query string will be excluded from the cache key entirely.
+          "includeHost": True or False, # If true, requests to different hosts will be cached separately.
+          "queryStringBlacklist": [ # Names of query string parameters to exclude in cache keys. All other parameters will be included. Either specify query_string_whitelist or query_string_blacklist, not both. '&' and '=' will be percent encoded and not treated as delimiters.
+            "A String",
+          ],
+          "queryStringWhitelist": [ # Names of query string parameters to include in cache keys. All other parameters will be excluded. Either specify query_string_whitelist or query_string_blacklist, not both. '&' and '=' will be percent encoded and not treated as delimiters.
+            "A String",
+          ],
+          "includeProtocol": True or False, # If true, http and https requests will be cached separately.
+        },
+      },
       "enableCDN": True or False, # If true, enable Cloud CDN for this BackendService.
           #
           # When the load balancing scheme is INTERNAL, this field is not used.
@@ -223,6 +235,7 @@
           "maxUtilization": 3.14, # Used when balancingMode is UTILIZATION. This ratio defines the CPU utilization target for the group. The default is 0.8. Valid range is [0.0, 1.0].
               #
               # This cannot be used for internal load balancing.
+          "failover": True or False, # This field designates whether this is a failover backend. More than one failover backend can be configured for a given BackendService.
           "maxRatePerInstance": 3.14, # The max requests per second (RPS) that a single backend instance can handle.This is used to calculate the capacity of the group. Can be used in either balancing mode. For RATE mode, either maxRate or maxRatePerInstance must be set.
               #
               # This cannot be used for internal load balancing.
@@ -250,19 +263,9 @@
         "oauth2ClientSecretSha256": "A String",
       },
       "description": "A String", # An optional description of this resource. Provide this property when you create the resource.
-      "cdnPolicy": { # Message containing Cloud CDN configuration for a backend service. # Cloud CDN Coniguration for this BackendService.
-        "cacheKeyPolicy": { # Message containing what to include in the cache key for a request for Cloud CDN. # The CacheKeyPolicy for this CdnPolicy.
-          "includeQueryString": True or False, # If true, include query string parameters in the cache key according to query_string_whitelist and query_string_blacklist. If neither is set, the entire query string will be included. If false, the query string will be excluded from the cache key entirely.
-          "includeHost": True or False, # If true, requests to different hosts will be cached separately.
-          "queryStringBlacklist": [ # Names of query string parameters to exclude in cache keys. All other parameters will be included. Either specify query_string_whitelist or query_string_blacklist, not both. '&' and '=' will be percent encoded and not treated as delimiters.
-            "A String",
-          ],
-          "queryStringWhitelist": [ # Names of query string parameters to include in cache keys. All other parameters will be excluded. Either specify query_string_whitelist or query_string_blacklist, not both. '&' and '=' will be percent encoded and not treated as delimiters.
-            "A String",
-          ],
-          "includeProtocol": True or False, # If true, http and https requests will be cached separately.
-        },
-      },
+      "customRequestHeaders": [ # Headers that the HTTP/S load balancer should add to proxied requests.
+        "A String",
+      ],
       "fingerprint": "A String", # Fingerprint of this resource. A hash of the contents stored in this object. This field is used in optimistic locking. This field will be ignored when inserting a BackendService. An up-to-date fingerprint must be provided in order to update the BackendService.
       "portName": "A String", # Name of backend port. The same name should appear in the instance groups referenced by this service. Required when the load balancing scheme is EXTERNAL.
           #
@@ -270,6 +273,7 @@
       "kind": "compute#backendService", # [Output Only] Type of resource. Always compute#backendService for backend services.
       "name": "A String", # Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression [a-z]([-a-z0-9]*[a-z0-9])? which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.
       "region": "A String", # [Output Only] URL of the region where the regional backend service resides. This field is not applicable to global backend services.
+      "timeoutSec": 42, # How many seconds to wait for the backend before considering it a failed request. Default is 30 seconds.
       "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
     }</pre>
 </div>
@@ -345,7 +349,19 @@
         # When the protocol is UDP, this field is not used.
     "creationTimestamp": "A String", # [Output Only] Creation timestamp in RFC3339 text format.
     "id": "A String", # [Output Only] The unique identifier for the resource. This identifier is defined by the server.
-    "timeoutSec": 42, # How many seconds to wait for the backend before considering it a failed request. Default is 30 seconds.
+    "cdnPolicy": { # Message containing Cloud CDN configuration for a backend service. # Cloud CDN configuration for this BackendService.
+      "cacheKeyPolicy": { # Message containing what to include in the cache key for a request for Cloud CDN. # The CacheKeyPolicy for this CdnPolicy.
+        "includeQueryString": True or False, # If true, include query string parameters in the cache key according to query_string_whitelist and query_string_blacklist. If neither is set, the entire query string will be included. If false, the query string will be excluded from the cache key entirely.
+        "includeHost": True or False, # If true, requests to different hosts will be cached separately.
+        "queryStringBlacklist": [ # Names of query string parameters to exclude in cache keys. All other parameters will be included. Either specify query_string_whitelist or query_string_blacklist, not both. '&' and '=' will be percent encoded and not treated as delimiters.
+          "A String",
+        ],
+        "queryStringWhitelist": [ # Names of query string parameters to include in cache keys. All other parameters will be excluded. Either specify query_string_whitelist or query_string_blacklist, not both. '&' and '=' will be percent encoded and not treated as delimiters.
+          "A String",
+        ],
+        "includeProtocol": True or False, # If true, http and https requests will be cached separately.
+      },
+    },
     "enableCDN": True or False, # If true, enable Cloud CDN for this BackendService.
         # 
         # When the load balancing scheme is INTERNAL, this field is not used.
@@ -366,6 +382,7 @@
         "maxUtilization": 3.14, # Used when balancingMode is UTILIZATION. This ratio defines the CPU utilization target for the group. The default is 0.8. Valid range is [0.0, 1.0].
             #
             # This cannot be used for internal load balancing.
+        "failover": True or False, # This field designates whether this is a failover backend. More than one failover backend can be configured for a given BackendService.
         "maxRatePerInstance": 3.14, # The max requests per second (RPS) that a single backend instance can handle.This is used to calculate the capacity of the group. Can be used in either balancing mode. For RATE mode, either maxRate or maxRatePerInstance must be set.
             #
             # This cannot be used for internal load balancing.
@@ -393,19 +410,9 @@
       "oauth2ClientSecretSha256": "A String",
     },
     "description": "A String", # An optional description of this resource. Provide this property when you create the resource.
-    "cdnPolicy": { # Message containing Cloud CDN configuration for a backend service. # Cloud CDN Coniguration for this BackendService.
-      "cacheKeyPolicy": { # Message containing what to include in the cache key for a request for Cloud CDN. # The CacheKeyPolicy for this CdnPolicy.
-        "includeQueryString": True or False, # If true, include query string parameters in the cache key according to query_string_whitelist and query_string_blacklist. If neither is set, the entire query string will be included. If false, the query string will be excluded from the cache key entirely.
-        "includeHost": True or False, # If true, requests to different hosts will be cached separately.
-        "queryStringBlacklist": [ # Names of query string parameters to exclude in cache keys. All other parameters will be included. Either specify query_string_whitelist or query_string_blacklist, not both. '&' and '=' will be percent encoded and not treated as delimiters.
-          "A String",
-        ],
-        "queryStringWhitelist": [ # Names of query string parameters to include in cache keys. All other parameters will be excluded. Either specify query_string_whitelist or query_string_blacklist, not both. '&' and '=' will be percent encoded and not treated as delimiters.
-          "A String",
-        ],
-        "includeProtocol": True or False, # If true, http and https requests will be cached separately.
-      },
-    },
+    "customRequestHeaders": [ # Headers that the HTTP/S load balancer should add to proxied requests.
+      "A String",
+    ],
     "fingerprint": "A String", # Fingerprint of this resource. A hash of the contents stored in this object. This field is used in optimistic locking. This field will be ignored when inserting a BackendService. An up-to-date fingerprint must be provided in order to update the BackendService.
     "portName": "A String", # Name of backend port. The same name should appear in the instance groups referenced by this service. Required when the load balancing scheme is EXTERNAL.
         # 
@@ -413,6 +420,7 @@
     "kind": "compute#backendService", # [Output Only] Type of resource. Always compute#backendService for backend services.
     "name": "A String", # Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression [a-z]([-a-z0-9]*[a-z0-9])? which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.
     "region": "A String", # [Output Only] URL of the region where the regional backend service resides. This field is not applicable to global backend services.
+    "timeoutSec": 42, # How many seconds to wait for the backend before considering it a failed request. Default is 30 seconds.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
   }
 
@@ -463,7 +471,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
@@ -526,7 +534,19 @@
               # When the protocol is UDP, this field is not used.
           "creationTimestamp": "A String", # [Output Only] Creation timestamp in RFC3339 text format.
           "id": "A String", # [Output Only] The unique identifier for the resource. This identifier is defined by the server.
-          "timeoutSec": 42, # How many seconds to wait for the backend before considering it a failed request. Default is 30 seconds.
+          "cdnPolicy": { # Message containing Cloud CDN configuration for a backend service. # Cloud CDN configuration for this BackendService.
+            "cacheKeyPolicy": { # Message containing what to include in the cache key for a request for Cloud CDN. # The CacheKeyPolicy for this CdnPolicy.
+              "includeQueryString": True or False, # If true, include query string parameters in the cache key according to query_string_whitelist and query_string_blacklist. If neither is set, the entire query string will be included. If false, the query string will be excluded from the cache key entirely.
+              "includeHost": True or False, # If true, requests to different hosts will be cached separately.
+              "queryStringBlacklist": [ # Names of query string parameters to exclude in cache keys. All other parameters will be included. Either specify query_string_whitelist or query_string_blacklist, not both. '&' and '=' will be percent encoded and not treated as delimiters.
+                "A String",
+              ],
+              "queryStringWhitelist": [ # Names of query string parameters to include in cache keys. All other parameters will be excluded. Either specify query_string_whitelist or query_string_blacklist, not both. '&' and '=' will be percent encoded and not treated as delimiters.
+                "A String",
+              ],
+              "includeProtocol": True or False, # If true, http and https requests will be cached separately.
+            },
+          },
           "enableCDN": True or False, # If true, enable Cloud CDN for this BackendService.
               #
               # When the load balancing scheme is INTERNAL, this field is not used.
@@ -547,6 +567,7 @@
               "maxUtilization": 3.14, # Used when balancingMode is UTILIZATION. This ratio defines the CPU utilization target for the group. The default is 0.8. Valid range is [0.0, 1.0].
                   #
                   # This cannot be used for internal load balancing.
+              "failover": True or False, # This field designates whether this is a failover backend. More than one failover backend can be configured for a given BackendService.
               "maxRatePerInstance": 3.14, # The max requests per second (RPS) that a single backend instance can handle.This is used to calculate the capacity of the group. Can be used in either balancing mode. For RATE mode, either maxRate or maxRatePerInstance must be set.
                   #
                   # This cannot be used for internal load balancing.
@@ -574,19 +595,9 @@
             "oauth2ClientSecretSha256": "A String",
           },
           "description": "A String", # An optional description of this resource. Provide this property when you create the resource.
-          "cdnPolicy": { # Message containing Cloud CDN configuration for a backend service. # Cloud CDN Coniguration for this BackendService.
-            "cacheKeyPolicy": { # Message containing what to include in the cache key for a request for Cloud CDN. # The CacheKeyPolicy for this CdnPolicy.
-              "includeQueryString": True or False, # If true, include query string parameters in the cache key according to query_string_whitelist and query_string_blacklist. If neither is set, the entire query string will be included. If false, the query string will be excluded from the cache key entirely.
-              "includeHost": True or False, # If true, requests to different hosts will be cached separately.
-              "queryStringBlacklist": [ # Names of query string parameters to exclude in cache keys. All other parameters will be included. Either specify query_string_whitelist or query_string_blacklist, not both. '&' and '=' will be percent encoded and not treated as delimiters.
-                "A String",
-              ],
-              "queryStringWhitelist": [ # Names of query string parameters to include in cache keys. All other parameters will be excluded. Either specify query_string_whitelist or query_string_blacklist, not both. '&' and '=' will be percent encoded and not treated as delimiters.
-                "A String",
-              ],
-              "includeProtocol": True or False, # If true, http and https requests will be cached separately.
-            },
-          },
+          "customRequestHeaders": [ # Headers that the HTTP/S load balancer should add to proxied requests.
+            "A String",
+          ],
           "fingerprint": "A String", # Fingerprint of this resource. A hash of the contents stored in this object. This field is used in optimistic locking. This field will be ignored when inserting a BackendService. An up-to-date fingerprint must be provided in order to update the BackendService.
           "portName": "A String", # Name of backend port. The same name should appear in the instance groups referenced by this service. Required when the load balancing scheme is EXTERNAL.
               #
@@ -594,6 +605,7 @@
           "kind": "compute#backendService", # [Output Only] Type of resource. Always compute#backendService for backend services.
           "name": "A String", # Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression [a-z]([-a-z0-9]*[a-z0-9])? which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.
           "region": "A String", # [Output Only] URL of the region where the regional backend service resides. This field is not applicable to global backend services.
+          "timeoutSec": 42, # How many seconds to wait for the backend before considering it a failed request. Default is 30 seconds.
           "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
         },
     ],
@@ -657,7 +669,19 @@
         # When the protocol is UDP, this field is not used.
     "creationTimestamp": "A String", # [Output Only] Creation timestamp in RFC3339 text format.
     "id": "A String", # [Output Only] The unique identifier for the resource. This identifier is defined by the server.
-    "timeoutSec": 42, # How many seconds to wait for the backend before considering it a failed request. Default is 30 seconds.
+    "cdnPolicy": { # Message containing Cloud CDN configuration for a backend service. # Cloud CDN configuration for this BackendService.
+      "cacheKeyPolicy": { # Message containing what to include in the cache key for a request for Cloud CDN. # The CacheKeyPolicy for this CdnPolicy.
+        "includeQueryString": True or False, # If true, include query string parameters in the cache key according to query_string_whitelist and query_string_blacklist. If neither is set, the entire query string will be included. If false, the query string will be excluded from the cache key entirely.
+        "includeHost": True or False, # If true, requests to different hosts will be cached separately.
+        "queryStringBlacklist": [ # Names of query string parameters to exclude in cache keys. All other parameters will be included. Either specify query_string_whitelist or query_string_blacklist, not both. '&' and '=' will be percent encoded and not treated as delimiters.
+          "A String",
+        ],
+        "queryStringWhitelist": [ # Names of query string parameters to include in cache keys. All other parameters will be excluded. Either specify query_string_whitelist or query_string_blacklist, not both. '&' and '=' will be percent encoded and not treated as delimiters.
+          "A String",
+        ],
+        "includeProtocol": True or False, # If true, http and https requests will be cached separately.
+      },
+    },
     "enableCDN": True or False, # If true, enable Cloud CDN for this BackendService.
         # 
         # When the load balancing scheme is INTERNAL, this field is not used.
@@ -678,6 +702,7 @@
         "maxUtilization": 3.14, # Used when balancingMode is UTILIZATION. This ratio defines the CPU utilization target for the group. The default is 0.8. Valid range is [0.0, 1.0].
             #
             # This cannot be used for internal load balancing.
+        "failover": True or False, # This field designates whether this is a failover backend. More than one failover backend can be configured for a given BackendService.
         "maxRatePerInstance": 3.14, # The max requests per second (RPS) that a single backend instance can handle.This is used to calculate the capacity of the group. Can be used in either balancing mode. For RATE mode, either maxRate or maxRatePerInstance must be set.
             #
             # This cannot be used for internal load balancing.
@@ -705,19 +730,9 @@
       "oauth2ClientSecretSha256": "A String",
     },
     "description": "A String", # An optional description of this resource. Provide this property when you create the resource.
-    "cdnPolicy": { # Message containing Cloud CDN configuration for a backend service. # Cloud CDN Coniguration for this BackendService.
-      "cacheKeyPolicy": { # Message containing what to include in the cache key for a request for Cloud CDN. # The CacheKeyPolicy for this CdnPolicy.
-        "includeQueryString": True or False, # If true, include query string parameters in the cache key according to query_string_whitelist and query_string_blacklist. If neither is set, the entire query string will be included. If false, the query string will be excluded from the cache key entirely.
-        "includeHost": True or False, # If true, requests to different hosts will be cached separately.
-        "queryStringBlacklist": [ # Names of query string parameters to exclude in cache keys. All other parameters will be included. Either specify query_string_whitelist or query_string_blacklist, not both. '&' and '=' will be percent encoded and not treated as delimiters.
-          "A String",
-        ],
-        "queryStringWhitelist": [ # Names of query string parameters to include in cache keys. All other parameters will be excluded. Either specify query_string_whitelist or query_string_blacklist, not both. '&' and '=' will be percent encoded and not treated as delimiters.
-          "A String",
-        ],
-        "includeProtocol": True or False, # If true, http and https requests will be cached separately.
-      },
-    },
+    "customRequestHeaders": [ # Headers that the HTTP/S load balancer should add to proxied requests.
+      "A String",
+    ],
     "fingerprint": "A String", # Fingerprint of this resource. A hash of the contents stored in this object. This field is used in optimistic locking. This field will be ignored when inserting a BackendService. An up-to-date fingerprint must be provided in order to update the BackendService.
     "portName": "A String", # Name of backend port. The same name should appear in the instance groups referenced by this service. Required when the load balancing scheme is EXTERNAL.
         # 
@@ -725,6 +740,7 @@
     "kind": "compute#backendService", # [Output Only] Type of resource. Always compute#backendService for backend services.
     "name": "A String", # Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression [a-z]([-a-z0-9]*[a-z0-9])? which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.
     "region": "A String", # [Output Only] URL of the region where the regional backend service resides. This field is not applicable to global backend services.
+    "timeoutSec": 42, # How many seconds to wait for the backend before considering it a failed request. Default is 30 seconds.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
   }
 
@@ -775,7 +791,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
@@ -847,7 +863,19 @@
         # When the protocol is UDP, this field is not used.
     "creationTimestamp": "A String", # [Output Only] Creation timestamp in RFC3339 text format.
     "id": "A String", # [Output Only] The unique identifier for the resource. This identifier is defined by the server.
-    "timeoutSec": 42, # How many seconds to wait for the backend before considering it a failed request. Default is 30 seconds.
+    "cdnPolicy": { # Message containing Cloud CDN configuration for a backend service. # Cloud CDN configuration for this BackendService.
+      "cacheKeyPolicy": { # Message containing what to include in the cache key for a request for Cloud CDN. # The CacheKeyPolicy for this CdnPolicy.
+        "includeQueryString": True or False, # If true, include query string parameters in the cache key according to query_string_whitelist and query_string_blacklist. If neither is set, the entire query string will be included. If false, the query string will be excluded from the cache key entirely.
+        "includeHost": True or False, # If true, requests to different hosts will be cached separately.
+        "queryStringBlacklist": [ # Names of query string parameters to exclude in cache keys. All other parameters will be included. Either specify query_string_whitelist or query_string_blacklist, not both. '&' and '=' will be percent encoded and not treated as delimiters.
+          "A String",
+        ],
+        "queryStringWhitelist": [ # Names of query string parameters to include in cache keys. All other parameters will be excluded. Either specify query_string_whitelist or query_string_blacklist, not both. '&' and '=' will be percent encoded and not treated as delimiters.
+          "A String",
+        ],
+        "includeProtocol": True or False, # If true, http and https requests will be cached separately.
+      },
+    },
     "enableCDN": True or False, # If true, enable Cloud CDN for this BackendService.
         # 
         # When the load balancing scheme is INTERNAL, this field is not used.
@@ -868,6 +896,7 @@
         "maxUtilization": 3.14, # Used when balancingMode is UTILIZATION. This ratio defines the CPU utilization target for the group. The default is 0.8. Valid range is [0.0, 1.0].
             #
             # This cannot be used for internal load balancing.
+        "failover": True or False, # This field designates whether this is a failover backend. More than one failover backend can be configured for a given BackendService.
         "maxRatePerInstance": 3.14, # The max requests per second (RPS) that a single backend instance can handle.This is used to calculate the capacity of the group. Can be used in either balancing mode. For RATE mode, either maxRate or maxRatePerInstance must be set.
             #
             # This cannot be used for internal load balancing.
@@ -895,19 +924,9 @@
       "oauth2ClientSecretSha256": "A String",
     },
     "description": "A String", # An optional description of this resource. Provide this property when you create the resource.
-    "cdnPolicy": { # Message containing Cloud CDN configuration for a backend service. # Cloud CDN Coniguration for this BackendService.
-      "cacheKeyPolicy": { # Message containing what to include in the cache key for a request for Cloud CDN. # The CacheKeyPolicy for this CdnPolicy.
-        "includeQueryString": True or False, # If true, include query string parameters in the cache key according to query_string_whitelist and query_string_blacklist. If neither is set, the entire query string will be included. If false, the query string will be excluded from the cache key entirely.
-        "includeHost": True or False, # If true, requests to different hosts will be cached separately.
-        "queryStringBlacklist": [ # Names of query string parameters to exclude in cache keys. All other parameters will be included. Either specify query_string_whitelist or query_string_blacklist, not both. '&' and '=' will be percent encoded and not treated as delimiters.
-          "A String",
-        ],
-        "queryStringWhitelist": [ # Names of query string parameters to include in cache keys. All other parameters will be excluded. Either specify query_string_whitelist or query_string_blacklist, not both. '&' and '=' will be percent encoded and not treated as delimiters.
-          "A String",
-        ],
-        "includeProtocol": True or False, # If true, http and https requests will be cached separately.
-      },
-    },
+    "customRequestHeaders": [ # Headers that the HTTP/S load balancer should add to proxied requests.
+      "A String",
+    ],
     "fingerprint": "A String", # Fingerprint of this resource. A hash of the contents stored in this object. This field is used in optimistic locking. This field will be ignored when inserting a BackendService. An up-to-date fingerprint must be provided in order to update the BackendService.
     "portName": "A String", # Name of backend port. The same name should appear in the instance groups referenced by this service. Required when the load balancing scheme is EXTERNAL.
         # 
@@ -915,6 +934,7 @@
     "kind": "compute#backendService", # [Output Only] Type of resource. Always compute#backendService for backend services.
     "name": "A String", # Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression [a-z]([-a-z0-9]*[a-z0-9])? which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.
     "region": "A String", # [Output Only] URL of the region where the regional backend service resides. This field is not applicable to global backend services.
+    "timeoutSec": 42, # How many seconds to wait for the backend before considering it a failed request. Default is 30 seconds.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
   }
 
@@ -965,7 +985,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
diff --git a/docs/dyn/compute_alpha.regionDiskTypes.html b/docs/dyn/compute_alpha.regionDiskTypes.html
index 83f856f..edb0390 100644
--- a/docs/dyn/compute_alpha.regionDiskTypes.html
+++ b/docs/dyn/compute_alpha.regionDiskTypes.html
@@ -102,10 +102,10 @@
     "zone": "A String", # [Output Only] URL of the zone where the disk type resides.
     "validDiskSize": "A String", # [Output Only] An optional textual description of the valid disk size, such as "10GB-10TB".
     "deprecated": { # Deprecation status for a public resource. # [Output Only] The deprecation status associated with this disk type.
-      "deleted": "A String", # An optional RFC3339 timestamp on or after which the deprecation state of this resource will be changed to DELETED.
-      "deprecated": "A String", # An optional RFC3339 timestamp on or after which the deprecation state of this resource will be changed to DEPRECATED.
+      "deleted": "A String", # An optional RFC3339 timestamp on or after which the state of this resource is intended to change to DELETED. This is only informational and the status will not change unless the client explicitly changes it.
+      "deprecated": "A String", # An optional RFC3339 timestamp on or after which the state of this resource is intended to change to DEPRECATED. This is only informational and the status will not change unless the client explicitly changes it.
       "state": "A String", # The deprecation state of this resource. This can be DEPRECATED, OBSOLETE, or DELETED. Operations which create a new resource using a DEPRECATED resource will return successfully, but with a warning indicating the deprecated resource and recommending its replacement. Operations which use OBSOLETE or DELETED resources will be rejected and result in an error.
-      "obsolete": "A String", # An optional RFC3339 timestamp on or after which the deprecation state of this resource will be changed to OBSOLETE.
+      "obsolete": "A String", # An optional RFC3339 timestamp on or after which the state of this resource is intended to change to OBSOLETE. This is only informational and the status will not change unless the client explicitly changes it.
       "replacement": "A String", # The URL of the suggested replacement for a deprecated resource. The suggested replacement resource must be the same kind of resource as the deprecated resource.
     },
     "defaultDiskSizeGb": "A String", # [Output Only] Server-defined default disk size in GB.
@@ -152,10 +152,10 @@
         "zone": "A String", # [Output Only] URL of the zone where the disk type resides.
         "validDiskSize": "A String", # [Output Only] An optional textual description of the valid disk size, such as "10GB-10TB".
         "deprecated": { # Deprecation status for a public resource. # [Output Only] The deprecation status associated with this disk type.
-          "deleted": "A String", # An optional RFC3339 timestamp on or after which the deprecation state of this resource will be changed to DELETED.
-          "deprecated": "A String", # An optional RFC3339 timestamp on or after which the deprecation state of this resource will be changed to DEPRECATED.
+          "deleted": "A String", # An optional RFC3339 timestamp on or after which the state of this resource is intended to change to DELETED. This is only informational and the status will not change unless the client explicitly changes it.
+          "deprecated": "A String", # An optional RFC3339 timestamp on or after which the state of this resource is intended to change to DEPRECATED. This is only informational and the status will not change unless the client explicitly changes it.
           "state": "A String", # The deprecation state of this resource. This can be DEPRECATED, OBSOLETE, or DELETED. Operations which create a new resource using a DEPRECATED resource will return successfully, but with a warning indicating the deprecated resource and recommending its replacement. Operations which use OBSOLETE or DELETED resources will be rejected and result in an error.
-          "obsolete": "A String", # An optional RFC3339 timestamp on or after which the deprecation state of this resource will be changed to OBSOLETE.
+          "obsolete": "A String", # An optional RFC3339 timestamp on or after which the state of this resource is intended to change to OBSOLETE. This is only informational and the status will not change unless the client explicitly changes it.
           "replacement": "A String", # The URL of the suggested replacement for a deprecated resource. The suggested replacement resource must be the same kind of resource as the deprecated resource.
         },
         "defaultDiskSizeGb": "A String", # [Output Only] Server-defined default disk size in GB.
diff --git a/docs/dyn/compute_alpha.regionDisks.html b/docs/dyn/compute_alpha.regionDisks.html
index a1dd0c2..6bcc0b1 100644
--- a/docs/dyn/compute_alpha.regionDisks.html
+++ b/docs/dyn/compute_alpha.regionDisks.html
@@ -211,7 +211,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
@@ -270,7 +270,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
@@ -533,7 +533,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
@@ -564,7 +564,7 @@
 Returns:
   An object of the form:
 
-    {
+    { # A list of Disk resources.
     "nextPageToken": "A String", # [Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results.
     "items": [ # [Output Only] A list of persistent disks.
       { # A Disk resource.
@@ -661,7 +661,7 @@
               # global/images/family/my-private-family
         },
     ],
-    "kind": "compute#regionDiskList", # [Output Only] Type of resource. Always compute#regionDiskList for lists of region disks.
+    "kind": "compute#diskList", # [Output Only] Type of resource. Always compute#diskList for lists of disks.
     "id": "A String", # [Output Only] The unique identifier for the resource. This identifier is defined by the server.
     "selfLink": "A String", # [Output Only] Server-defined URL for this resource.
   }</pre>
@@ -743,7 +743,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
@@ -812,7 +812,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
diff --git a/docs/dyn/compute_alpha.regionInstanceGroupManagers.html b/docs/dyn/compute_alpha.regionInstanceGroupManagers.html
index bcd6d5c..a1e9d37 100644
--- a/docs/dyn/compute_alpha.regionInstanceGroupManagers.html
+++ b/docs/dyn/compute_alpha.regionInstanceGroupManagers.html
@@ -93,7 +93,7 @@
   <code><a href="#list">list(project, region, orderBy=None, maxResults=None, pageToken=None, filter=None)</a></code></p>
 <p class="firstline">Retrieves the list of managed instance groups that are contained within the specified region.</p>
 <p class="toc_element">
-  <code><a href="#listManagedInstances">listManagedInstances(project, region, instanceGroupManager)</a></code></p>
+  <code><a href="#listManagedInstances">listManagedInstances(project, region, instanceGroupManager, order_by=None, maxResults=None, pageToken=None, filter=None)</a></code></p>
 <p class="firstline">Lists the instances in the managed instance group and instances that are scheduled to be created. The list includes any current actions that the group has scheduled for its instances.</p>
 <p class="toc_element">
   <code><a href="#list_next">list_next(previous_request, previous_response)</a></code></p>
@@ -187,7 +187,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
@@ -246,7 +246,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
@@ -314,7 +314,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
@@ -331,56 +331,19 @@
   An object of the form:
 
     { # An Instance Group Manager resource.
-      "currentActions": { # [Output Only] The list of instance actions and the number of instances in this managed instance group that are scheduled for each of those actions.
-        "none": 42, # [Output Only] The number of instances in the managed instance group that are running and have no scheduled actions.
-        "recreating": 42, # [Output Only] The number of instances in the managed instance group that are scheduled to be recreated or are currently being being recreated. Recreating an instance deletes the existing root persistent disk and creates a new disk from the image that is defined in the instance template.
-        "creating": 42, # [Output Only] The number of instances in the managed instance group that are scheduled to be created or are currently being created. If the group fails to create any of these instances, it tries again until it creates the instance successfully.
-            #
-            # If you have disabled creation retries, this field will not be populated; instead, the creatingWithoutRetries field will be populated.
-        "restarting": 42, # [Output Only] The number of instances in the managed instance group that are scheduled to be restarted or are currently being restarted.
-        "abandoning": 42, # [Output Only] The total number of instances in the managed instance group that are scheduled to be abandoned. Abandoning an instance removes it from the managed instance group without deleting it.
-        "deleting": 42, # [Output Only] The number of instances in the managed instance group that are scheduled to be deleted or are currently being deleted.
-        "creatingWithoutRetries": 42, # [Output Only] The number of instances that the managed instance group will attempt to create. The group attempts to create each instance only once. If the group fails to create any of these instances, it decreases the group's targetSize value accordingly.
-        "refreshing": 42, # [Output Only] The number of instances in the managed instance group that are being reconfigured with properties that do not require a restart or a recreate action. For example, setting or removing target pools for the instance.
-      },
-      "description": "A String", # An optional description of this resource. Provide this property when you create the resource.
-      "zone": "A String", # [Output Only] The URL of the zone where the managed instance group is located (for zonal resources).
-      "versions": [ # Versions supported by this IGM. User should set this field if they need fine-grained control over how many instances in each version are run by this IGM. Versions are keyed by instanceTemplate. Every instanceTemplate can appear at most once. This field overrides instanceTemplate field. If both instanceTemplate and versions are set, the user receives a warning. "instanceTemplate: X" is semantically equivalent to "versions [ { instanceTemplate: X } ]". Exactly one version must have targetSize field left unset. Size of such a version will be calculated automatically.
-        {
-          "targetSize": { # Encapsulates numeric value that can be either absolute or relative. # Intended number of instances that are created from instanceTemplate. The final number of instances created from instanceTemplate will be equal to: * if expressed as fixed number: min(targetSize.fixed, instanceGroupManager.targetSize), * if expressed as percent: ceiling(targetSize.percent * InstanceGroupManager.targetSize). If unset, this version will handle all the remaining instances.
-            "calculated": 42, # [Output Only] Absolute value calculated based on mode: mode = fixed -> calculated = fixed = percent -> calculated = ceiling(percent/100 * base_value)
-            "fixed": 42, # fixed must be non-negative.
-            "percent": 42, # percent must belong to [0, 100].
-          },
-          "instanceTemplate": "A String",
-          "tag": "A String", # Tag describing the version. Used to trigger rollout of a target version even if instance_template remains unchanged.
-        },
-      ],
-      "autoHealingPolicies": [ # The autohealing policy for this managed instance group. You can specify only one value.
-        {
-          "healthCheck": "A String", # The URL for the HealthCheck that signals autohealing.
-          "initialDelaySec": 42, # The number of seconds that the managed instance group waits before it applies autohealing policies to new instances or recently recreated instances. This initial delay allows instances to initialize and run their startup scripts before the instance group determines that they are UNHEALTHY. This prevents the managed instance group from recreating its instances prematurely. This value must be from range [0, 3600].
-          "maxUnavailable": { # Encapsulates numeric value that can be either absolute or relative. # Maximum number of instances that can be unavailable when auto-healing. The instance is considered available if all of the following conditions are satisfied: 1. instance's status is RUNNING 2. instance's liveness health check result was observed to be HEALTHY at least once By default, a percent value of 100% is used.
-            "calculated": 42, # [Output Only] Absolute value calculated based on mode: mode = fixed -> calculated = fixed = percent -> calculated = ceiling(percent/100 * base_value)
-            "fixed": 42, # fixed must be non-negative.
-            "percent": 42, # percent must belong to [0, 100].
-          },
-        },
-      ],
-      "targetSize": 42, # The target number of running instances for this managed instance group. Deleting or abandoning instances reduces this number. Resizing the group changes this number.
       "failoverAction": "A String", # The action to perform in case of zone failure. Only one value is supported, NO_FAILOVER. The default is NO_FAILOVER.
-      "instanceGroup": "A String", # [Output Only] The URL of the Instance Group resource.
-      "kind": "compute#instanceGroupManager", # [Output Only] The resource type, which is always compute#instanceGroupManager for managed instance groups.
-      "targetPools": [ # The URLs for all TargetPool resources to which instances in the instanceGroup field are added. The target pools automatically apply to all of the instances in the managed instance group.
-        "A String",
-      ],
-      "baseInstanceName": "A String", # The base instance name to use for instances in this group. The value must be 1-58 characters long. Instances are named by appending a hyphen and a random four-character string to the base instance name. The base instance name must comply with RFC1035.
       "pendingActions": { # [Output Only] The list of instance actions and the number of instances in this managed instance group that are pending for each of those actions.
         "recreating": 42, # [Output Only] The number of instances in the managed instance group that are pending to be recreated.
         "deleting": 42, # [Output Only] The number of instances in the managed instance group that are pending to be deleted.
         "creating": 42, # [Output Only] The number of instances in the managed instance group that are pending to be created.
         "restarting": 42, # [Output Only] The number of instances in the managed instance group that are pending to be restarted.
       },
+      "creationTimestamp": "A String", # [Output Only] The creation timestamp for this managed instance group in RFC3339 text format.
+      "kind": "compute#instanceGroupManager", # [Output Only] The resource type, which is always compute#instanceGroupManager for managed instance groups.
+      "zone": "A String", # [Output Only] The URL of the zone where the managed instance group is located (for zonal resources).
+      "serviceAccount": "A String", # Service account will be used as credentials for all operations performed by managed instance group on instances. The service accounts needs all permissions required to create and delete instances. When not specified, the service account {projectNumber}@cloudservices.gserviceaccount.com will be used.
+      "id": "A String", # [Output Only] A unique identifier for this resource type. The server generates this identifier.
+      "baseInstanceName": "A String", # The base instance name to use for instances in this group. The value must be 1-58 characters long. Instances are named by appending a hyphen and a random four-character string to the base instance name. The base instance name must comply with RFC1035.
       "updatePolicy": { # The update policy for this managed instance group.
         "type": "A String",
         "maxSurge": { # Encapsulates numeric value that can be either absolute or relative. # Maximum number of instances that can be created above the InstanceGroupManager.targetSize during the update process. By default, a fixed value of 1 is used. Using maxSurge > 0 will cause instance names to change during the update process. At least one of { maxSurge, maxUnavailable } must be greater than 0.
@@ -396,19 +359,58 @@
         },
         "minReadySec": 42, # Minimum number of seconds to wait for after a newly created instance becomes available. This value must be from range [0, 3600].
       },
-      "fingerprint": "A String", # [Output Only] The fingerprint of the resource data. You can use this optional field for optimistic locking when you update the resource.
-      "region": "A String", # [Output Only] The URL of the region where the managed instance group resides (for regional resources).
-      "instanceTemplate": "A String", # The URL of the instance template that is specified for this managed instance group. The group uses this template to create all new instances in the managed instance group.
+      "targetPools": [ # The URLs for all TargetPool resources to which instances in the instanceGroup field are added. The target pools automatically apply to all of the instances in the managed instance group.
+        "A String",
+      ],
       "namedPorts": [ # Named ports configured for the Instance Groups complementary to this Instance Group Manager.
         { # The named port. For example: .
           "name": "A String", # The name for this named port. The name must be 1-63 characters long, and comply with RFC1035.
           "port": 42, # The port number, which can be a value between 1 and 65535.
         },
       ],
-      "creationTimestamp": "A String", # [Output Only] The creation timestamp for this managed instance group in RFC3339 text format.
-      "id": "A String", # [Output Only] A unique identifier for this resource type. The server generates this identifier.
-      "selfLink": "A String", # [Output Only] The URL for this managed instance group. The server defines this URL.
+      "description": "A String", # An optional description of this resource. Provide this property when you create the resource.
+      "autoHealingPolicies": [ # The autohealing policy for this managed instance group. You can specify only one value.
+        {
+          "healthCheck": "A String", # The URL for the health check that signals autohealing.
+          "initialDelaySec": 42, # The number of seconds that the managed instance group waits before it applies autohealing policies to new instances or recently recreated instances. This initial delay allows instances to initialize and run their startup scripts before the instance group determines that they are UNHEALTHY. This prevents the managed instance group from recreating its instances prematurely. This value must be from range [0, 3600].
+          "maxUnavailable": { # Encapsulates numeric value that can be either absolute or relative. # Maximum number of instances that can be unavailable when auto-healing. The instance is considered available if all of the following conditions are satisfied: 1. instance's status is RUNNING 2. instance's liveness health check result was observed to be HEALTHY at least once By default, a percent value of 100% is used.
+            "calculated": 42, # [Output Only] Absolute value calculated based on mode: mode = fixed -> calculated = fixed = percent -> calculated = ceiling(percent/100 * base_value)
+            "fixed": 42, # fixed must be non-negative.
+            "percent": 42, # percent must belong to [0, 100].
+          },
+        },
+      ],
+      "instanceGroup": "A String", # [Output Only] The URL of the Instance Group resource.
+      "targetSize": 42, # The target number of running instances for this managed instance group. Deleting or abandoning instances reduces this number. Resizing the group changes this number.
+      "instanceTemplate": "A String", # The URL of the instance template that is specified for this managed instance group. The group uses this template to create all new instances in the managed instance group.
+      "fingerprint": "A String", # [Output Only] The fingerprint of the resource data. You can use this optional field for optimistic locking when you update the resource.
+      "currentActions": { # [Output Only] The list of instance actions and the number of instances in this managed instance group that are scheduled for each of those actions.
+        "none": 42, # [Output Only] The number of instances in the managed instance group that are running and have no scheduled actions.
+        "recreating": 42, # [Output Only] The number of instances in the managed instance group that are scheduled to be recreated or are currently being being recreated. Recreating an instance deletes the existing root persistent disk and creates a new disk from the image that is defined in the instance template.
+        "creating": 42, # [Output Only] The number of instances in the managed instance group that are scheduled to be created or are currently being created. If the group fails to create any of these instances, it tries again until it creates the instance successfully.
+            #
+            # If you have disabled creation retries, this field will not be populated; instead, the creatingWithoutRetries field will be populated.
+        "verifying": 42, # [Output Only] The number of instances in the managed instance group that are being verified.
+        "restarting": 42, # [Output Only] The number of instances in the managed instance group that are scheduled to be restarted or are currently being restarted.
+        "abandoning": 42, # [Output Only] The total number of instances in the managed instance group that are scheduled to be abandoned. Abandoning an instance removes it from the managed instance group without deleting it.
+        "deleting": 42, # [Output Only] The number of instances in the managed instance group that are scheduled to be deleted or are currently being deleted.
+        "creatingWithoutRetries": 42, # [Output Only] The number of instances that the managed instance group will attempt to create. The group attempts to create each instance only once. If the group fails to create any of these instances, it decreases the group's targetSize value accordingly.
+        "refreshing": 42, # [Output Only] The number of instances in the managed instance group that are being reconfigured with properties that do not require a restart or a recreate action. For example, setting or removing target pools for the instance.
+      },
       "name": "A String", # The name of the managed instance group. The name must be 1-63 characters long, and comply with RFC1035.
+      "versions": [ # Versions supported by this IGM. User should set this field if they need fine-grained control over how many instances in each version are run by this IGM. Versions are keyed by instanceTemplate. Every instanceTemplate can appear at most once. This field overrides instanceTemplate field. If both instanceTemplate and versions are set, the user receives a warning. "instanceTemplate: X" is semantically equivalent to "versions [ { instanceTemplate: X } ]". Exactly one version must have targetSize field left unset. Size of such a version will be calculated automatically.
+        {
+          "targetSize": { # Encapsulates numeric value that can be either absolute or relative. # Intended number of instances that are created from instanceTemplate. The final number of instances created from instanceTemplate will be equal to: * if expressed as fixed number: min(targetSize.fixed, instanceGroupManager.targetSize), * if expressed as percent: ceiling(targetSize.percent * InstanceGroupManager.targetSize). If unset, this version will handle all the remaining instances.
+            "calculated": 42, # [Output Only] Absolute value calculated based on mode: mode = fixed -> calculated = fixed = percent -> calculated = ceiling(percent/100 * base_value)
+            "fixed": 42, # fixed must be non-negative.
+            "percent": 42, # percent must belong to [0, 100].
+          },
+          "instanceTemplate": "A String",
+          "tag": "A String", # Tag describing the version. Used to trigger rollout of a target version even if instance_template remains unchanged.
+        },
+      ],
+      "region": "A String", # [Output Only] The URL of the region where the managed instance group resides (for regional resources).
+      "selfLink": "A String", # [Output Only] The URL for this managed instance group. The server defines this URL.
     }</pre>
 </div>
 
@@ -423,56 +425,19 @@
     The object takes the form of:
 
 { # An Instance Group Manager resource.
-    "currentActions": { # [Output Only] The list of instance actions and the number of instances in this managed instance group that are scheduled for each of those actions.
-      "none": 42, # [Output Only] The number of instances in the managed instance group that are running and have no scheduled actions.
-      "recreating": 42, # [Output Only] The number of instances in the managed instance group that are scheduled to be recreated or are currently being being recreated. Recreating an instance deletes the existing root persistent disk and creates a new disk from the image that is defined in the instance template.
-      "creating": 42, # [Output Only] The number of instances in the managed instance group that are scheduled to be created or are currently being created. If the group fails to create any of these instances, it tries again until it creates the instance successfully.
-          #
-          # If you have disabled creation retries, this field will not be populated; instead, the creatingWithoutRetries field will be populated.
-      "restarting": 42, # [Output Only] The number of instances in the managed instance group that are scheduled to be restarted or are currently being restarted.
-      "abandoning": 42, # [Output Only] The total number of instances in the managed instance group that are scheduled to be abandoned. Abandoning an instance removes it from the managed instance group without deleting it.
-      "deleting": 42, # [Output Only] The number of instances in the managed instance group that are scheduled to be deleted or are currently being deleted.
-      "creatingWithoutRetries": 42, # [Output Only] The number of instances that the managed instance group will attempt to create. The group attempts to create each instance only once. If the group fails to create any of these instances, it decreases the group's targetSize value accordingly.
-      "refreshing": 42, # [Output Only] The number of instances in the managed instance group that are being reconfigured with properties that do not require a restart or a recreate action. For example, setting or removing target pools for the instance.
-    },
-    "description": "A String", # An optional description of this resource. Provide this property when you create the resource.
-    "zone": "A String", # [Output Only] The URL of the zone where the managed instance group is located (for zonal resources).
-    "versions": [ # Versions supported by this IGM. User should set this field if they need fine-grained control over how many instances in each version are run by this IGM. Versions are keyed by instanceTemplate. Every instanceTemplate can appear at most once. This field overrides instanceTemplate field. If both instanceTemplate and versions are set, the user receives a warning. "instanceTemplate: X" is semantically equivalent to "versions [ { instanceTemplate: X } ]". Exactly one version must have targetSize field left unset. Size of such a version will be calculated automatically.
-      {
-        "targetSize": { # Encapsulates numeric value that can be either absolute or relative. # Intended number of instances that are created from instanceTemplate. The final number of instances created from instanceTemplate will be equal to: * if expressed as fixed number: min(targetSize.fixed, instanceGroupManager.targetSize), * if expressed as percent: ceiling(targetSize.percent * InstanceGroupManager.targetSize). If unset, this version will handle all the remaining instances.
-          "calculated": 42, # [Output Only] Absolute value calculated based on mode: mode = fixed -> calculated = fixed = percent -> calculated = ceiling(percent/100 * base_value)
-          "fixed": 42, # fixed must be non-negative.
-          "percent": 42, # percent must belong to [0, 100].
-        },
-        "instanceTemplate": "A String",
-        "tag": "A String", # Tag describing the version. Used to trigger rollout of a target version even if instance_template remains unchanged.
-      },
-    ],
-    "autoHealingPolicies": [ # The autohealing policy for this managed instance group. You can specify only one value.
-      {
-        "healthCheck": "A String", # The URL for the HealthCheck that signals autohealing.
-        "initialDelaySec": 42, # The number of seconds that the managed instance group waits before it applies autohealing policies to new instances or recently recreated instances. This initial delay allows instances to initialize and run their startup scripts before the instance group determines that they are UNHEALTHY. This prevents the managed instance group from recreating its instances prematurely. This value must be from range [0, 3600].
-        "maxUnavailable": { # Encapsulates numeric value that can be either absolute or relative. # Maximum number of instances that can be unavailable when auto-healing. The instance is considered available if all of the following conditions are satisfied: 1. instance's status is RUNNING 2. instance's liveness health check result was observed to be HEALTHY at least once By default, a percent value of 100% is used.
-          "calculated": 42, # [Output Only] Absolute value calculated based on mode: mode = fixed -> calculated = fixed = percent -> calculated = ceiling(percent/100 * base_value)
-          "fixed": 42, # fixed must be non-negative.
-          "percent": 42, # percent must belong to [0, 100].
-        },
-      },
-    ],
-    "targetSize": 42, # The target number of running instances for this managed instance group. Deleting or abandoning instances reduces this number. Resizing the group changes this number.
     "failoverAction": "A String", # The action to perform in case of zone failure. Only one value is supported, NO_FAILOVER. The default is NO_FAILOVER.
-    "instanceGroup": "A String", # [Output Only] The URL of the Instance Group resource.
-    "kind": "compute#instanceGroupManager", # [Output Only] The resource type, which is always compute#instanceGroupManager for managed instance groups.
-    "targetPools": [ # The URLs for all TargetPool resources to which instances in the instanceGroup field are added. The target pools automatically apply to all of the instances in the managed instance group.
-      "A String",
-    ],
-    "baseInstanceName": "A String", # The base instance name to use for instances in this group. The value must be 1-58 characters long. Instances are named by appending a hyphen and a random four-character string to the base instance name. The base instance name must comply with RFC1035.
     "pendingActions": { # [Output Only] The list of instance actions and the number of instances in this managed instance group that are pending for each of those actions.
       "recreating": 42, # [Output Only] The number of instances in the managed instance group that are pending to be recreated.
       "deleting": 42, # [Output Only] The number of instances in the managed instance group that are pending to be deleted.
       "creating": 42, # [Output Only] The number of instances in the managed instance group that are pending to be created.
       "restarting": 42, # [Output Only] The number of instances in the managed instance group that are pending to be restarted.
     },
+    "creationTimestamp": "A String", # [Output Only] The creation timestamp for this managed instance group in RFC3339 text format.
+    "kind": "compute#instanceGroupManager", # [Output Only] The resource type, which is always compute#instanceGroupManager for managed instance groups.
+    "zone": "A String", # [Output Only] The URL of the zone where the managed instance group is located (for zonal resources).
+    "serviceAccount": "A String", # Service account will be used as credentials for all operations performed by managed instance group on instances. The service accounts needs all permissions required to create and delete instances. When not specified, the service account {projectNumber}@cloudservices.gserviceaccount.com will be used.
+    "id": "A String", # [Output Only] A unique identifier for this resource type. The server generates this identifier.
+    "baseInstanceName": "A String", # The base instance name to use for instances in this group. The value must be 1-58 characters long. Instances are named by appending a hyphen and a random four-character string to the base instance name. The base instance name must comply with RFC1035.
     "updatePolicy": { # The update policy for this managed instance group.
       "type": "A String",
       "maxSurge": { # Encapsulates numeric value that can be either absolute or relative. # Maximum number of instances that can be created above the InstanceGroupManager.targetSize during the update process. By default, a fixed value of 1 is used. Using maxSurge > 0 will cause instance names to change during the update process. At least one of { maxSurge, maxUnavailable } must be greater than 0.
@@ -488,19 +453,58 @@
       },
       "minReadySec": 42, # Minimum number of seconds to wait for after a newly created instance becomes available. This value must be from range [0, 3600].
     },
-    "fingerprint": "A String", # [Output Only] The fingerprint of the resource data. You can use this optional field for optimistic locking when you update the resource.
-    "region": "A String", # [Output Only] The URL of the region where the managed instance group resides (for regional resources).
-    "instanceTemplate": "A String", # The URL of the instance template that is specified for this managed instance group. The group uses this template to create all new instances in the managed instance group.
+    "targetPools": [ # The URLs for all TargetPool resources to which instances in the instanceGroup field are added. The target pools automatically apply to all of the instances in the managed instance group.
+      "A String",
+    ],
     "namedPorts": [ # Named ports configured for the Instance Groups complementary to this Instance Group Manager.
       { # The named port. For example: .
         "name": "A String", # The name for this named port. The name must be 1-63 characters long, and comply with RFC1035.
         "port": 42, # The port number, which can be a value between 1 and 65535.
       },
     ],
-    "creationTimestamp": "A String", # [Output Only] The creation timestamp for this managed instance group in RFC3339 text format.
-    "id": "A String", # [Output Only] A unique identifier for this resource type. The server generates this identifier.
-    "selfLink": "A String", # [Output Only] The URL for this managed instance group. The server defines this URL.
+    "description": "A String", # An optional description of this resource. Provide this property when you create the resource.
+    "autoHealingPolicies": [ # The autohealing policy for this managed instance group. You can specify only one value.
+      {
+        "healthCheck": "A String", # The URL for the health check that signals autohealing.
+        "initialDelaySec": 42, # The number of seconds that the managed instance group waits before it applies autohealing policies to new instances or recently recreated instances. This initial delay allows instances to initialize and run their startup scripts before the instance group determines that they are UNHEALTHY. This prevents the managed instance group from recreating its instances prematurely. This value must be from range [0, 3600].
+        "maxUnavailable": { # Encapsulates numeric value that can be either absolute or relative. # Maximum number of instances that can be unavailable when auto-healing. The instance is considered available if all of the following conditions are satisfied: 1. instance's status is RUNNING 2. instance's liveness health check result was observed to be HEALTHY at least once By default, a percent value of 100% is used.
+          "calculated": 42, # [Output Only] Absolute value calculated based on mode: mode = fixed -> calculated = fixed = percent -> calculated = ceiling(percent/100 * base_value)
+          "fixed": 42, # fixed must be non-negative.
+          "percent": 42, # percent must belong to [0, 100].
+        },
+      },
+    ],
+    "instanceGroup": "A String", # [Output Only] The URL of the Instance Group resource.
+    "targetSize": 42, # The target number of running instances for this managed instance group. Deleting or abandoning instances reduces this number. Resizing the group changes this number.
+    "instanceTemplate": "A String", # The URL of the instance template that is specified for this managed instance group. The group uses this template to create all new instances in the managed instance group.
+    "fingerprint": "A String", # [Output Only] The fingerprint of the resource data. You can use this optional field for optimistic locking when you update the resource.
+    "currentActions": { # [Output Only] The list of instance actions and the number of instances in this managed instance group that are scheduled for each of those actions.
+      "none": 42, # [Output Only] The number of instances in the managed instance group that are running and have no scheduled actions.
+      "recreating": 42, # [Output Only] The number of instances in the managed instance group that are scheduled to be recreated or are currently being being recreated. Recreating an instance deletes the existing root persistent disk and creates a new disk from the image that is defined in the instance template.
+      "creating": 42, # [Output Only] The number of instances in the managed instance group that are scheduled to be created or are currently being created. If the group fails to create any of these instances, it tries again until it creates the instance successfully.
+          #
+          # If you have disabled creation retries, this field will not be populated; instead, the creatingWithoutRetries field will be populated.
+      "verifying": 42, # [Output Only] The number of instances in the managed instance group that are being verified.
+      "restarting": 42, # [Output Only] The number of instances in the managed instance group that are scheduled to be restarted or are currently being restarted.
+      "abandoning": 42, # [Output Only] The total number of instances in the managed instance group that are scheduled to be abandoned. Abandoning an instance removes it from the managed instance group without deleting it.
+      "deleting": 42, # [Output Only] The number of instances in the managed instance group that are scheduled to be deleted or are currently being deleted.
+      "creatingWithoutRetries": 42, # [Output Only] The number of instances that the managed instance group will attempt to create. The group attempts to create each instance only once. If the group fails to create any of these instances, it decreases the group's targetSize value accordingly.
+      "refreshing": 42, # [Output Only] The number of instances in the managed instance group that are being reconfigured with properties that do not require a restart or a recreate action. For example, setting or removing target pools for the instance.
+    },
     "name": "A String", # The name of the managed instance group. The name must be 1-63 characters long, and comply with RFC1035.
+    "versions": [ # Versions supported by this IGM. User should set this field if they need fine-grained control over how many instances in each version are run by this IGM. Versions are keyed by instanceTemplate. Every instanceTemplate can appear at most once. This field overrides instanceTemplate field. If both instanceTemplate and versions are set, the user receives a warning. "instanceTemplate: X" is semantically equivalent to "versions [ { instanceTemplate: X } ]". Exactly one version must have targetSize field left unset. Size of such a version will be calculated automatically.
+      {
+        "targetSize": { # Encapsulates numeric value that can be either absolute or relative. # Intended number of instances that are created from instanceTemplate. The final number of instances created from instanceTemplate will be equal to: * if expressed as fixed number: min(targetSize.fixed, instanceGroupManager.targetSize), * if expressed as percent: ceiling(targetSize.percent * InstanceGroupManager.targetSize). If unset, this version will handle all the remaining instances.
+          "calculated": 42, # [Output Only] Absolute value calculated based on mode: mode = fixed -> calculated = fixed = percent -> calculated = ceiling(percent/100 * base_value)
+          "fixed": 42, # fixed must be non-negative.
+          "percent": 42, # percent must belong to [0, 100].
+        },
+        "instanceTemplate": "A String",
+        "tag": "A String", # Tag describing the version. Used to trigger rollout of a target version even if instance_template remains unchanged.
+      },
+    ],
+    "region": "A String", # [Output Only] The URL of the region where the managed instance group resides (for regional resources).
+    "selfLink": "A String", # [Output Only] The URL for this managed instance group. The server defines this URL.
   }
 
 
@@ -550,7 +554,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
@@ -585,56 +589,19 @@
     "nextPageToken": "A String", # [Output only] A token used to continue a truncated list request.
     "items": [ # A list of managed instance groups.
       { # An Instance Group Manager resource.
-          "currentActions": { # [Output Only] The list of instance actions and the number of instances in this managed instance group that are scheduled for each of those actions.
-            "none": 42, # [Output Only] The number of instances in the managed instance group that are running and have no scheduled actions.
-            "recreating": 42, # [Output Only] The number of instances in the managed instance group that are scheduled to be recreated or are currently being being recreated. Recreating an instance deletes the existing root persistent disk and creates a new disk from the image that is defined in the instance template.
-            "creating": 42, # [Output Only] The number of instances in the managed instance group that are scheduled to be created or are currently being created. If the group fails to create any of these instances, it tries again until it creates the instance successfully.
-                #
-                # If you have disabled creation retries, this field will not be populated; instead, the creatingWithoutRetries field will be populated.
-            "restarting": 42, # [Output Only] The number of instances in the managed instance group that are scheduled to be restarted or are currently being restarted.
-            "abandoning": 42, # [Output Only] The total number of instances in the managed instance group that are scheduled to be abandoned. Abandoning an instance removes it from the managed instance group without deleting it.
-            "deleting": 42, # [Output Only] The number of instances in the managed instance group that are scheduled to be deleted or are currently being deleted.
-            "creatingWithoutRetries": 42, # [Output Only] The number of instances that the managed instance group will attempt to create. The group attempts to create each instance only once. If the group fails to create any of these instances, it decreases the group's targetSize value accordingly.
-            "refreshing": 42, # [Output Only] The number of instances in the managed instance group that are being reconfigured with properties that do not require a restart or a recreate action. For example, setting or removing target pools for the instance.
-          },
-          "description": "A String", # An optional description of this resource. Provide this property when you create the resource.
-          "zone": "A String", # [Output Only] The URL of the zone where the managed instance group is located (for zonal resources).
-          "versions": [ # Versions supported by this IGM. User should set this field if they need fine-grained control over how many instances in each version are run by this IGM. Versions are keyed by instanceTemplate. Every instanceTemplate can appear at most once. This field overrides instanceTemplate field. If both instanceTemplate and versions are set, the user receives a warning. "instanceTemplate: X" is semantically equivalent to "versions [ { instanceTemplate: X } ]". Exactly one version must have targetSize field left unset. Size of such a version will be calculated automatically.
-            {
-              "targetSize": { # Encapsulates numeric value that can be either absolute or relative. # Intended number of instances that are created from instanceTemplate. The final number of instances created from instanceTemplate will be equal to: * if expressed as fixed number: min(targetSize.fixed, instanceGroupManager.targetSize), * if expressed as percent: ceiling(targetSize.percent * InstanceGroupManager.targetSize). If unset, this version will handle all the remaining instances.
-                "calculated": 42, # [Output Only] Absolute value calculated based on mode: mode = fixed -> calculated = fixed = percent -> calculated = ceiling(percent/100 * base_value)
-                "fixed": 42, # fixed must be non-negative.
-                "percent": 42, # percent must belong to [0, 100].
-              },
-              "instanceTemplate": "A String",
-              "tag": "A String", # Tag describing the version. Used to trigger rollout of a target version even if instance_template remains unchanged.
-            },
-          ],
-          "autoHealingPolicies": [ # The autohealing policy for this managed instance group. You can specify only one value.
-            {
-              "healthCheck": "A String", # The URL for the HealthCheck that signals autohealing.
-              "initialDelaySec": 42, # The number of seconds that the managed instance group waits before it applies autohealing policies to new instances or recently recreated instances. This initial delay allows instances to initialize and run their startup scripts before the instance group determines that they are UNHEALTHY. This prevents the managed instance group from recreating its instances prematurely. This value must be from range [0, 3600].
-              "maxUnavailable": { # Encapsulates numeric value that can be either absolute or relative. # Maximum number of instances that can be unavailable when auto-healing. The instance is considered available if all of the following conditions are satisfied: 1. instance's status is RUNNING 2. instance's liveness health check result was observed to be HEALTHY at least once By default, a percent value of 100% is used.
-                "calculated": 42, # [Output Only] Absolute value calculated based on mode: mode = fixed -> calculated = fixed = percent -> calculated = ceiling(percent/100 * base_value)
-                "fixed": 42, # fixed must be non-negative.
-                "percent": 42, # percent must belong to [0, 100].
-              },
-            },
-          ],
-          "targetSize": 42, # The target number of running instances for this managed instance group. Deleting or abandoning instances reduces this number. Resizing the group changes this number.
           "failoverAction": "A String", # The action to perform in case of zone failure. Only one value is supported, NO_FAILOVER. The default is NO_FAILOVER.
-          "instanceGroup": "A String", # [Output Only] The URL of the Instance Group resource.
-          "kind": "compute#instanceGroupManager", # [Output Only] The resource type, which is always compute#instanceGroupManager for managed instance groups.
-          "targetPools": [ # The URLs for all TargetPool resources to which instances in the instanceGroup field are added. The target pools automatically apply to all of the instances in the managed instance group.
-            "A String",
-          ],
-          "baseInstanceName": "A String", # The base instance name to use for instances in this group. The value must be 1-58 characters long. Instances are named by appending a hyphen and a random four-character string to the base instance name. The base instance name must comply with RFC1035.
           "pendingActions": { # [Output Only] The list of instance actions and the number of instances in this managed instance group that are pending for each of those actions.
             "recreating": 42, # [Output Only] The number of instances in the managed instance group that are pending to be recreated.
             "deleting": 42, # [Output Only] The number of instances in the managed instance group that are pending to be deleted.
             "creating": 42, # [Output Only] The number of instances in the managed instance group that are pending to be created.
             "restarting": 42, # [Output Only] The number of instances in the managed instance group that are pending to be restarted.
           },
+          "creationTimestamp": "A String", # [Output Only] The creation timestamp for this managed instance group in RFC3339 text format.
+          "kind": "compute#instanceGroupManager", # [Output Only] The resource type, which is always compute#instanceGroupManager for managed instance groups.
+          "zone": "A String", # [Output Only] The URL of the zone where the managed instance group is located (for zonal resources).
+          "serviceAccount": "A String", # Service account will be used as credentials for all operations performed by managed instance group on instances. The service accounts needs all permissions required to create and delete instances. When not specified, the service account {projectNumber}@cloudservices.gserviceaccount.com will be used.
+          "id": "A String", # [Output Only] A unique identifier for this resource type. The server generates this identifier.
+          "baseInstanceName": "A String", # The base instance name to use for instances in this group. The value must be 1-58 characters long. Instances are named by appending a hyphen and a random four-character string to the base instance name. The base instance name must comply with RFC1035.
           "updatePolicy": { # The update policy for this managed instance group.
             "type": "A String",
             "maxSurge": { # Encapsulates numeric value that can be either absolute or relative. # Maximum number of instances that can be created above the InstanceGroupManager.targetSize during the update process. By default, a fixed value of 1 is used. Using maxSurge > 0 will cause instance names to change during the update process. At least one of { maxSurge, maxUnavailable } must be greater than 0.
@@ -650,19 +617,58 @@
             },
             "minReadySec": 42, # Minimum number of seconds to wait for after a newly created instance becomes available. This value must be from range [0, 3600].
           },
-          "fingerprint": "A String", # [Output Only] The fingerprint of the resource data. You can use this optional field for optimistic locking when you update the resource.
-          "region": "A String", # [Output Only] The URL of the region where the managed instance group resides (for regional resources).
-          "instanceTemplate": "A String", # The URL of the instance template that is specified for this managed instance group. The group uses this template to create all new instances in the managed instance group.
+          "targetPools": [ # The URLs for all TargetPool resources to which instances in the instanceGroup field are added. The target pools automatically apply to all of the instances in the managed instance group.
+            "A String",
+          ],
           "namedPorts": [ # Named ports configured for the Instance Groups complementary to this Instance Group Manager.
             { # The named port. For example: .
               "name": "A String", # The name for this named port. The name must be 1-63 characters long, and comply with RFC1035.
               "port": 42, # The port number, which can be a value between 1 and 65535.
             },
           ],
-          "creationTimestamp": "A String", # [Output Only] The creation timestamp for this managed instance group in RFC3339 text format.
-          "id": "A String", # [Output Only] A unique identifier for this resource type. The server generates this identifier.
-          "selfLink": "A String", # [Output Only] The URL for this managed instance group. The server defines this URL.
+          "description": "A String", # An optional description of this resource. Provide this property when you create the resource.
+          "autoHealingPolicies": [ # The autohealing policy for this managed instance group. You can specify only one value.
+            {
+              "healthCheck": "A String", # The URL for the health check that signals autohealing.
+              "initialDelaySec": 42, # The number of seconds that the managed instance group waits before it applies autohealing policies to new instances or recently recreated instances. This initial delay allows instances to initialize and run their startup scripts before the instance group determines that they are UNHEALTHY. This prevents the managed instance group from recreating its instances prematurely. This value must be from range [0, 3600].
+              "maxUnavailable": { # Encapsulates numeric value that can be either absolute or relative. # Maximum number of instances that can be unavailable when auto-healing. The instance is considered available if all of the following conditions are satisfied: 1. instance's status is RUNNING 2. instance's liveness health check result was observed to be HEALTHY at least once By default, a percent value of 100% is used.
+                "calculated": 42, # [Output Only] Absolute value calculated based on mode: mode = fixed -> calculated = fixed = percent -> calculated = ceiling(percent/100 * base_value)
+                "fixed": 42, # fixed must be non-negative.
+                "percent": 42, # percent must belong to [0, 100].
+              },
+            },
+          ],
+          "instanceGroup": "A String", # [Output Only] The URL of the Instance Group resource.
+          "targetSize": 42, # The target number of running instances for this managed instance group. Deleting or abandoning instances reduces this number. Resizing the group changes this number.
+          "instanceTemplate": "A String", # The URL of the instance template that is specified for this managed instance group. The group uses this template to create all new instances in the managed instance group.
+          "fingerprint": "A String", # [Output Only] The fingerprint of the resource data. You can use this optional field for optimistic locking when you update the resource.
+          "currentActions": { # [Output Only] The list of instance actions and the number of instances in this managed instance group that are scheduled for each of those actions.
+            "none": 42, # [Output Only] The number of instances in the managed instance group that are running and have no scheduled actions.
+            "recreating": 42, # [Output Only] The number of instances in the managed instance group that are scheduled to be recreated or are currently being being recreated. Recreating an instance deletes the existing root persistent disk and creates a new disk from the image that is defined in the instance template.
+            "creating": 42, # [Output Only] The number of instances in the managed instance group that are scheduled to be created or are currently being created. If the group fails to create any of these instances, it tries again until it creates the instance successfully.
+                #
+                # If you have disabled creation retries, this field will not be populated; instead, the creatingWithoutRetries field will be populated.
+            "verifying": 42, # [Output Only] The number of instances in the managed instance group that are being verified.
+            "restarting": 42, # [Output Only] The number of instances in the managed instance group that are scheduled to be restarted or are currently being restarted.
+            "abandoning": 42, # [Output Only] The total number of instances in the managed instance group that are scheduled to be abandoned. Abandoning an instance removes it from the managed instance group without deleting it.
+            "deleting": 42, # [Output Only] The number of instances in the managed instance group that are scheduled to be deleted or are currently being deleted.
+            "creatingWithoutRetries": 42, # [Output Only] The number of instances that the managed instance group will attempt to create. The group attempts to create each instance only once. If the group fails to create any of these instances, it decreases the group's targetSize value accordingly.
+            "refreshing": 42, # [Output Only] The number of instances in the managed instance group that are being reconfigured with properties that do not require a restart or a recreate action. For example, setting or removing target pools for the instance.
+          },
           "name": "A String", # The name of the managed instance group. The name must be 1-63 characters long, and comply with RFC1035.
+          "versions": [ # Versions supported by this IGM. User should set this field if they need fine-grained control over how many instances in each version are run by this IGM. Versions are keyed by instanceTemplate. Every instanceTemplate can appear at most once. This field overrides instanceTemplate field. If both instanceTemplate and versions are set, the user receives a warning. "instanceTemplate: X" is semantically equivalent to "versions [ { instanceTemplate: X } ]". Exactly one version must have targetSize field left unset. Size of such a version will be calculated automatically.
+            {
+              "targetSize": { # Encapsulates numeric value that can be either absolute or relative. # Intended number of instances that are created from instanceTemplate. The final number of instances created from instanceTemplate will be equal to: * if expressed as fixed number: min(targetSize.fixed, instanceGroupManager.targetSize), * if expressed as percent: ceiling(targetSize.percent * InstanceGroupManager.targetSize). If unset, this version will handle all the remaining instances.
+                "calculated": 42, # [Output Only] Absolute value calculated based on mode: mode = fixed -> calculated = fixed = percent -> calculated = ceiling(percent/100 * base_value)
+                "fixed": 42, # fixed must be non-negative.
+                "percent": 42, # percent must belong to [0, 100].
+              },
+              "instanceTemplate": "A String",
+              "tag": "A String", # Tag describing the version. Used to trigger rollout of a target version even if instance_template remains unchanged.
+            },
+          ],
+          "region": "A String", # [Output Only] The URL of the region where the managed instance group resides (for regional resources).
+          "selfLink": "A String", # [Output Only] The URL for this managed instance group. The server defines this URL.
         },
     ],
     "kind": "compute#regionInstanceGroupManagerList", # [Output Only] The resource type, which is always compute#instanceGroupManagerList for a list of managed instance groups that exist in th regional scope.
@@ -672,13 +678,17 @@
 </div>
 
 <div class="method">
-    <code class="details" id="listManagedInstances">listManagedInstances(project, region, instanceGroupManager)</code>
+    <code class="details" id="listManagedInstances">listManagedInstances(project, region, instanceGroupManager, order_by=None, maxResults=None, pageToken=None, filter=None)</code>
   <pre>Lists the instances in the managed instance group and instances that are scheduled to be created. The list includes any current actions that the group has scheduled for its instances.
 
 Args:
   project: string, Project ID for this request. (required)
   region: string, Name of the region scoping this request. (required)
   instanceGroupManager: string, The name of the managed instance group. (required)
+  order_by: string, A parameter
+  maxResults: integer, A parameter
+  pageToken: string, A parameter
+  filter: string, A parameter
 
 Returns:
   An object of the form:
@@ -743,56 +753,19 @@
     The object takes the form of:
 
 { # An Instance Group Manager resource.
-    "currentActions": { # [Output Only] The list of instance actions and the number of instances in this managed instance group that are scheduled for each of those actions.
-      "none": 42, # [Output Only] The number of instances in the managed instance group that are running and have no scheduled actions.
-      "recreating": 42, # [Output Only] The number of instances in the managed instance group that are scheduled to be recreated or are currently being being recreated. Recreating an instance deletes the existing root persistent disk and creates a new disk from the image that is defined in the instance template.
-      "creating": 42, # [Output Only] The number of instances in the managed instance group that are scheduled to be created or are currently being created. If the group fails to create any of these instances, it tries again until it creates the instance successfully.
-          #
-          # If you have disabled creation retries, this field will not be populated; instead, the creatingWithoutRetries field will be populated.
-      "restarting": 42, # [Output Only] The number of instances in the managed instance group that are scheduled to be restarted or are currently being restarted.
-      "abandoning": 42, # [Output Only] The total number of instances in the managed instance group that are scheduled to be abandoned. Abandoning an instance removes it from the managed instance group without deleting it.
-      "deleting": 42, # [Output Only] The number of instances in the managed instance group that are scheduled to be deleted or are currently being deleted.
-      "creatingWithoutRetries": 42, # [Output Only] The number of instances that the managed instance group will attempt to create. The group attempts to create each instance only once. If the group fails to create any of these instances, it decreases the group's targetSize value accordingly.
-      "refreshing": 42, # [Output Only] The number of instances in the managed instance group that are being reconfigured with properties that do not require a restart or a recreate action. For example, setting or removing target pools for the instance.
-    },
-    "description": "A String", # An optional description of this resource. Provide this property when you create the resource.
-    "zone": "A String", # [Output Only] The URL of the zone where the managed instance group is located (for zonal resources).
-    "versions": [ # Versions supported by this IGM. User should set this field if they need fine-grained control over how many instances in each version are run by this IGM. Versions are keyed by instanceTemplate. Every instanceTemplate can appear at most once. This field overrides instanceTemplate field. If both instanceTemplate and versions are set, the user receives a warning. "instanceTemplate: X" is semantically equivalent to "versions [ { instanceTemplate: X } ]". Exactly one version must have targetSize field left unset. Size of such a version will be calculated automatically.
-      {
-        "targetSize": { # Encapsulates numeric value that can be either absolute or relative. # Intended number of instances that are created from instanceTemplate. The final number of instances created from instanceTemplate will be equal to: * if expressed as fixed number: min(targetSize.fixed, instanceGroupManager.targetSize), * if expressed as percent: ceiling(targetSize.percent * InstanceGroupManager.targetSize). If unset, this version will handle all the remaining instances.
-          "calculated": 42, # [Output Only] Absolute value calculated based on mode: mode = fixed -> calculated = fixed = percent -> calculated = ceiling(percent/100 * base_value)
-          "fixed": 42, # fixed must be non-negative.
-          "percent": 42, # percent must belong to [0, 100].
-        },
-        "instanceTemplate": "A String",
-        "tag": "A String", # Tag describing the version. Used to trigger rollout of a target version even if instance_template remains unchanged.
-      },
-    ],
-    "autoHealingPolicies": [ # The autohealing policy for this managed instance group. You can specify only one value.
-      {
-        "healthCheck": "A String", # The URL for the HealthCheck that signals autohealing.
-        "initialDelaySec": 42, # The number of seconds that the managed instance group waits before it applies autohealing policies to new instances or recently recreated instances. This initial delay allows instances to initialize and run their startup scripts before the instance group determines that they are UNHEALTHY. This prevents the managed instance group from recreating its instances prematurely. This value must be from range [0, 3600].
-        "maxUnavailable": { # Encapsulates numeric value that can be either absolute or relative. # Maximum number of instances that can be unavailable when auto-healing. The instance is considered available if all of the following conditions are satisfied: 1. instance's status is RUNNING 2. instance's liveness health check result was observed to be HEALTHY at least once By default, a percent value of 100% is used.
-          "calculated": 42, # [Output Only] Absolute value calculated based on mode: mode = fixed -> calculated = fixed = percent -> calculated = ceiling(percent/100 * base_value)
-          "fixed": 42, # fixed must be non-negative.
-          "percent": 42, # percent must belong to [0, 100].
-        },
-      },
-    ],
-    "targetSize": 42, # The target number of running instances for this managed instance group. Deleting or abandoning instances reduces this number. Resizing the group changes this number.
     "failoverAction": "A String", # The action to perform in case of zone failure. Only one value is supported, NO_FAILOVER. The default is NO_FAILOVER.
-    "instanceGroup": "A String", # [Output Only] The URL of the Instance Group resource.
-    "kind": "compute#instanceGroupManager", # [Output Only] The resource type, which is always compute#instanceGroupManager for managed instance groups.
-    "targetPools": [ # The URLs for all TargetPool resources to which instances in the instanceGroup field are added. The target pools automatically apply to all of the instances in the managed instance group.
-      "A String",
-    ],
-    "baseInstanceName": "A String", # The base instance name to use for instances in this group. The value must be 1-58 characters long. Instances are named by appending a hyphen and a random four-character string to the base instance name. The base instance name must comply with RFC1035.
     "pendingActions": { # [Output Only] The list of instance actions and the number of instances in this managed instance group that are pending for each of those actions.
       "recreating": 42, # [Output Only] The number of instances in the managed instance group that are pending to be recreated.
       "deleting": 42, # [Output Only] The number of instances in the managed instance group that are pending to be deleted.
       "creating": 42, # [Output Only] The number of instances in the managed instance group that are pending to be created.
       "restarting": 42, # [Output Only] The number of instances in the managed instance group that are pending to be restarted.
     },
+    "creationTimestamp": "A String", # [Output Only] The creation timestamp for this managed instance group in RFC3339 text format.
+    "kind": "compute#instanceGroupManager", # [Output Only] The resource type, which is always compute#instanceGroupManager for managed instance groups.
+    "zone": "A String", # [Output Only] The URL of the zone where the managed instance group is located (for zonal resources).
+    "serviceAccount": "A String", # Service account will be used as credentials for all operations performed by managed instance group on instances. The service accounts needs all permissions required to create and delete instances. When not specified, the service account {projectNumber}@cloudservices.gserviceaccount.com will be used.
+    "id": "A String", # [Output Only] A unique identifier for this resource type. The server generates this identifier.
+    "baseInstanceName": "A String", # The base instance name to use for instances in this group. The value must be 1-58 characters long. Instances are named by appending a hyphen and a random four-character string to the base instance name. The base instance name must comply with RFC1035.
     "updatePolicy": { # The update policy for this managed instance group.
       "type": "A String",
       "maxSurge": { # Encapsulates numeric value that can be either absolute or relative. # Maximum number of instances that can be created above the InstanceGroupManager.targetSize during the update process. By default, a fixed value of 1 is used. Using maxSurge > 0 will cause instance names to change during the update process. At least one of { maxSurge, maxUnavailable } must be greater than 0.
@@ -808,19 +781,58 @@
       },
       "minReadySec": 42, # Minimum number of seconds to wait for after a newly created instance becomes available. This value must be from range [0, 3600].
     },
-    "fingerprint": "A String", # [Output Only] The fingerprint of the resource data. You can use this optional field for optimistic locking when you update the resource.
-    "region": "A String", # [Output Only] The URL of the region where the managed instance group resides (for regional resources).
-    "instanceTemplate": "A String", # The URL of the instance template that is specified for this managed instance group. The group uses this template to create all new instances in the managed instance group.
+    "targetPools": [ # The URLs for all TargetPool resources to which instances in the instanceGroup field are added. The target pools automatically apply to all of the instances in the managed instance group.
+      "A String",
+    ],
     "namedPorts": [ # Named ports configured for the Instance Groups complementary to this Instance Group Manager.
       { # The named port. For example: .
         "name": "A String", # The name for this named port. The name must be 1-63 characters long, and comply with RFC1035.
         "port": 42, # The port number, which can be a value between 1 and 65535.
       },
     ],
-    "creationTimestamp": "A String", # [Output Only] The creation timestamp for this managed instance group in RFC3339 text format.
-    "id": "A String", # [Output Only] A unique identifier for this resource type. The server generates this identifier.
-    "selfLink": "A String", # [Output Only] The URL for this managed instance group. The server defines this URL.
+    "description": "A String", # An optional description of this resource. Provide this property when you create the resource.
+    "autoHealingPolicies": [ # The autohealing policy for this managed instance group. You can specify only one value.
+      {
+        "healthCheck": "A String", # The URL for the health check that signals autohealing.
+        "initialDelaySec": 42, # The number of seconds that the managed instance group waits before it applies autohealing policies to new instances or recently recreated instances. This initial delay allows instances to initialize and run their startup scripts before the instance group determines that they are UNHEALTHY. This prevents the managed instance group from recreating its instances prematurely. This value must be from range [0, 3600].
+        "maxUnavailable": { # Encapsulates numeric value that can be either absolute or relative. # Maximum number of instances that can be unavailable when auto-healing. The instance is considered available if all of the following conditions are satisfied: 1. instance's status is RUNNING 2. instance's liveness health check result was observed to be HEALTHY at least once By default, a percent value of 100% is used.
+          "calculated": 42, # [Output Only] Absolute value calculated based on mode: mode = fixed -> calculated = fixed = percent -> calculated = ceiling(percent/100 * base_value)
+          "fixed": 42, # fixed must be non-negative.
+          "percent": 42, # percent must belong to [0, 100].
+        },
+      },
+    ],
+    "instanceGroup": "A String", # [Output Only] The URL of the Instance Group resource.
+    "targetSize": 42, # The target number of running instances for this managed instance group. Deleting or abandoning instances reduces this number. Resizing the group changes this number.
+    "instanceTemplate": "A String", # The URL of the instance template that is specified for this managed instance group. The group uses this template to create all new instances in the managed instance group.
+    "fingerprint": "A String", # [Output Only] The fingerprint of the resource data. You can use this optional field for optimistic locking when you update the resource.
+    "currentActions": { # [Output Only] The list of instance actions and the number of instances in this managed instance group that are scheduled for each of those actions.
+      "none": 42, # [Output Only] The number of instances in the managed instance group that are running and have no scheduled actions.
+      "recreating": 42, # [Output Only] The number of instances in the managed instance group that are scheduled to be recreated or are currently being being recreated. Recreating an instance deletes the existing root persistent disk and creates a new disk from the image that is defined in the instance template.
+      "creating": 42, # [Output Only] The number of instances in the managed instance group that are scheduled to be created or are currently being created. If the group fails to create any of these instances, it tries again until it creates the instance successfully.
+          #
+          # If you have disabled creation retries, this field will not be populated; instead, the creatingWithoutRetries field will be populated.
+      "verifying": 42, # [Output Only] The number of instances in the managed instance group that are being verified.
+      "restarting": 42, # [Output Only] The number of instances in the managed instance group that are scheduled to be restarted or are currently being restarted.
+      "abandoning": 42, # [Output Only] The total number of instances in the managed instance group that are scheduled to be abandoned. Abandoning an instance removes it from the managed instance group without deleting it.
+      "deleting": 42, # [Output Only] The number of instances in the managed instance group that are scheduled to be deleted or are currently being deleted.
+      "creatingWithoutRetries": 42, # [Output Only] The number of instances that the managed instance group will attempt to create. The group attempts to create each instance only once. If the group fails to create any of these instances, it decreases the group's targetSize value accordingly.
+      "refreshing": 42, # [Output Only] The number of instances in the managed instance group that are being reconfigured with properties that do not require a restart or a recreate action. For example, setting or removing target pools for the instance.
+    },
     "name": "A String", # The name of the managed instance group. The name must be 1-63 characters long, and comply with RFC1035.
+    "versions": [ # Versions supported by this IGM. User should set this field if they need fine-grained control over how many instances in each version are run by this IGM. Versions are keyed by instanceTemplate. Every instanceTemplate can appear at most once. This field overrides instanceTemplate field. If both instanceTemplate and versions are set, the user receives a warning. "instanceTemplate: X" is semantically equivalent to "versions [ { instanceTemplate: X } ]". Exactly one version must have targetSize field left unset. Size of such a version will be calculated automatically.
+      {
+        "targetSize": { # Encapsulates numeric value that can be either absolute or relative. # Intended number of instances that are created from instanceTemplate. The final number of instances created from instanceTemplate will be equal to: * if expressed as fixed number: min(targetSize.fixed, instanceGroupManager.targetSize), * if expressed as percent: ceiling(targetSize.percent * InstanceGroupManager.targetSize). If unset, this version will handle all the remaining instances.
+          "calculated": 42, # [Output Only] Absolute value calculated based on mode: mode = fixed -> calculated = fixed = percent -> calculated = ceiling(percent/100 * base_value)
+          "fixed": 42, # fixed must be non-negative.
+          "percent": 42, # percent must belong to [0, 100].
+        },
+        "instanceTemplate": "A String",
+        "tag": "A String", # Tag describing the version. Used to trigger rollout of a target version even if instance_template remains unchanged.
+      },
+    ],
+    "region": "A String", # [Output Only] The URL of the region where the managed instance group resides (for regional resources).
+    "selfLink": "A String", # [Output Only] The URL for this managed instance group. The server defines this URL.
   }
 
 
@@ -870,7 +882,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
@@ -938,7 +950,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
@@ -998,7 +1010,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
@@ -1016,7 +1028,7 @@
 {
     "autoHealingPolicies": [
       {
-        "healthCheck": "A String", # The URL for the HealthCheck that signals autohealing.
+        "healthCheck": "A String", # The URL for the health check that signals autohealing.
         "initialDelaySec": 42, # The number of seconds that the managed instance group waits before it applies autohealing policies to new instances or recently recreated instances. This initial delay allows instances to initialize and run their startup scripts before the instance group determines that they are UNHEALTHY. This prevents the managed instance group from recreating its instances prematurely. This value must be from range [0, 3600].
         "maxUnavailable": { # Encapsulates numeric value that can be either absolute or relative. # Maximum number of instances that can be unavailable when auto-healing. The instance is considered available if all of the following conditions are satisfied: 1. instance's status is RUNNING 2. instance's liveness health check result was observed to be HEALTHY at least once By default, a percent value of 100% is used.
           "calculated": 42, # [Output Only] Absolute value calculated based on mode: mode = fixed -> calculated = fixed = percent -> calculated = ceiling(percent/100 * base_value)
@@ -1074,7 +1086,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
@@ -1140,7 +1152,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
@@ -1209,7 +1221,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
@@ -1253,56 +1265,19 @@
     The object takes the form of:
 
 { # An Instance Group Manager resource.
-    "currentActions": { # [Output Only] The list of instance actions and the number of instances in this managed instance group that are scheduled for each of those actions.
-      "none": 42, # [Output Only] The number of instances in the managed instance group that are running and have no scheduled actions.
-      "recreating": 42, # [Output Only] The number of instances in the managed instance group that are scheduled to be recreated or are currently being being recreated. Recreating an instance deletes the existing root persistent disk and creates a new disk from the image that is defined in the instance template.
-      "creating": 42, # [Output Only] The number of instances in the managed instance group that are scheduled to be created or are currently being created. If the group fails to create any of these instances, it tries again until it creates the instance successfully.
-          #
-          # If you have disabled creation retries, this field will not be populated; instead, the creatingWithoutRetries field will be populated.
-      "restarting": 42, # [Output Only] The number of instances in the managed instance group that are scheduled to be restarted or are currently being restarted.
-      "abandoning": 42, # [Output Only] The total number of instances in the managed instance group that are scheduled to be abandoned. Abandoning an instance removes it from the managed instance group without deleting it.
-      "deleting": 42, # [Output Only] The number of instances in the managed instance group that are scheduled to be deleted or are currently being deleted.
-      "creatingWithoutRetries": 42, # [Output Only] The number of instances that the managed instance group will attempt to create. The group attempts to create each instance only once. If the group fails to create any of these instances, it decreases the group's targetSize value accordingly.
-      "refreshing": 42, # [Output Only] The number of instances in the managed instance group that are being reconfigured with properties that do not require a restart or a recreate action. For example, setting or removing target pools for the instance.
-    },
-    "description": "A String", # An optional description of this resource. Provide this property when you create the resource.
-    "zone": "A String", # [Output Only] The URL of the zone where the managed instance group is located (for zonal resources).
-    "versions": [ # Versions supported by this IGM. User should set this field if they need fine-grained control over how many instances in each version are run by this IGM. Versions are keyed by instanceTemplate. Every instanceTemplate can appear at most once. This field overrides instanceTemplate field. If both instanceTemplate and versions are set, the user receives a warning. "instanceTemplate: X" is semantically equivalent to "versions [ { instanceTemplate: X } ]". Exactly one version must have targetSize field left unset. Size of such a version will be calculated automatically.
-      {
-        "targetSize": { # Encapsulates numeric value that can be either absolute or relative. # Intended number of instances that are created from instanceTemplate. The final number of instances created from instanceTemplate will be equal to: * if expressed as fixed number: min(targetSize.fixed, instanceGroupManager.targetSize), * if expressed as percent: ceiling(targetSize.percent * InstanceGroupManager.targetSize). If unset, this version will handle all the remaining instances.
-          "calculated": 42, # [Output Only] Absolute value calculated based on mode: mode = fixed -> calculated = fixed = percent -> calculated = ceiling(percent/100 * base_value)
-          "fixed": 42, # fixed must be non-negative.
-          "percent": 42, # percent must belong to [0, 100].
-        },
-        "instanceTemplate": "A String",
-        "tag": "A String", # Tag describing the version. Used to trigger rollout of a target version even if instance_template remains unchanged.
-      },
-    ],
-    "autoHealingPolicies": [ # The autohealing policy for this managed instance group. You can specify only one value.
-      {
-        "healthCheck": "A String", # The URL for the HealthCheck that signals autohealing.
-        "initialDelaySec": 42, # The number of seconds that the managed instance group waits before it applies autohealing policies to new instances or recently recreated instances. This initial delay allows instances to initialize and run their startup scripts before the instance group determines that they are UNHEALTHY. This prevents the managed instance group from recreating its instances prematurely. This value must be from range [0, 3600].
-        "maxUnavailable": { # Encapsulates numeric value that can be either absolute or relative. # Maximum number of instances that can be unavailable when auto-healing. The instance is considered available if all of the following conditions are satisfied: 1. instance's status is RUNNING 2. instance's liveness health check result was observed to be HEALTHY at least once By default, a percent value of 100% is used.
-          "calculated": 42, # [Output Only] Absolute value calculated based on mode: mode = fixed -> calculated = fixed = percent -> calculated = ceiling(percent/100 * base_value)
-          "fixed": 42, # fixed must be non-negative.
-          "percent": 42, # percent must belong to [0, 100].
-        },
-      },
-    ],
-    "targetSize": 42, # The target number of running instances for this managed instance group. Deleting or abandoning instances reduces this number. Resizing the group changes this number.
     "failoverAction": "A String", # The action to perform in case of zone failure. Only one value is supported, NO_FAILOVER. The default is NO_FAILOVER.
-    "instanceGroup": "A String", # [Output Only] The URL of the Instance Group resource.
-    "kind": "compute#instanceGroupManager", # [Output Only] The resource type, which is always compute#instanceGroupManager for managed instance groups.
-    "targetPools": [ # The URLs for all TargetPool resources to which instances in the instanceGroup field are added. The target pools automatically apply to all of the instances in the managed instance group.
-      "A String",
-    ],
-    "baseInstanceName": "A String", # The base instance name to use for instances in this group. The value must be 1-58 characters long. Instances are named by appending a hyphen and a random four-character string to the base instance name. The base instance name must comply with RFC1035.
     "pendingActions": { # [Output Only] The list of instance actions and the number of instances in this managed instance group that are pending for each of those actions.
       "recreating": 42, # [Output Only] The number of instances in the managed instance group that are pending to be recreated.
       "deleting": 42, # [Output Only] The number of instances in the managed instance group that are pending to be deleted.
       "creating": 42, # [Output Only] The number of instances in the managed instance group that are pending to be created.
       "restarting": 42, # [Output Only] The number of instances in the managed instance group that are pending to be restarted.
     },
+    "creationTimestamp": "A String", # [Output Only] The creation timestamp for this managed instance group in RFC3339 text format.
+    "kind": "compute#instanceGroupManager", # [Output Only] The resource type, which is always compute#instanceGroupManager for managed instance groups.
+    "zone": "A String", # [Output Only] The URL of the zone where the managed instance group is located (for zonal resources).
+    "serviceAccount": "A String", # Service account will be used as credentials for all operations performed by managed instance group on instances. The service accounts needs all permissions required to create and delete instances. When not specified, the service account {projectNumber}@cloudservices.gserviceaccount.com will be used.
+    "id": "A String", # [Output Only] A unique identifier for this resource type. The server generates this identifier.
+    "baseInstanceName": "A String", # The base instance name to use for instances in this group. The value must be 1-58 characters long. Instances are named by appending a hyphen and a random four-character string to the base instance name. The base instance name must comply with RFC1035.
     "updatePolicy": { # The update policy for this managed instance group.
       "type": "A String",
       "maxSurge": { # Encapsulates numeric value that can be either absolute or relative. # Maximum number of instances that can be created above the InstanceGroupManager.targetSize during the update process. By default, a fixed value of 1 is used. Using maxSurge > 0 will cause instance names to change during the update process. At least one of { maxSurge, maxUnavailable } must be greater than 0.
@@ -1318,19 +1293,58 @@
       },
       "minReadySec": 42, # Minimum number of seconds to wait for after a newly created instance becomes available. This value must be from range [0, 3600].
     },
-    "fingerprint": "A String", # [Output Only] The fingerprint of the resource data. You can use this optional field for optimistic locking when you update the resource.
-    "region": "A String", # [Output Only] The URL of the region where the managed instance group resides (for regional resources).
-    "instanceTemplate": "A String", # The URL of the instance template that is specified for this managed instance group. The group uses this template to create all new instances in the managed instance group.
+    "targetPools": [ # The URLs for all TargetPool resources to which instances in the instanceGroup field are added. The target pools automatically apply to all of the instances in the managed instance group.
+      "A String",
+    ],
     "namedPorts": [ # Named ports configured for the Instance Groups complementary to this Instance Group Manager.
       { # The named port. For example: .
         "name": "A String", # The name for this named port. The name must be 1-63 characters long, and comply with RFC1035.
         "port": 42, # The port number, which can be a value between 1 and 65535.
       },
     ],
-    "creationTimestamp": "A String", # [Output Only] The creation timestamp for this managed instance group in RFC3339 text format.
-    "id": "A String", # [Output Only] A unique identifier for this resource type. The server generates this identifier.
-    "selfLink": "A String", # [Output Only] The URL for this managed instance group. The server defines this URL.
+    "description": "A String", # An optional description of this resource. Provide this property when you create the resource.
+    "autoHealingPolicies": [ # The autohealing policy for this managed instance group. You can specify only one value.
+      {
+        "healthCheck": "A String", # The URL for the health check that signals autohealing.
+        "initialDelaySec": 42, # The number of seconds that the managed instance group waits before it applies autohealing policies to new instances or recently recreated instances. This initial delay allows instances to initialize and run their startup scripts before the instance group determines that they are UNHEALTHY. This prevents the managed instance group from recreating its instances prematurely. This value must be from range [0, 3600].
+        "maxUnavailable": { # Encapsulates numeric value that can be either absolute or relative. # Maximum number of instances that can be unavailable when auto-healing. The instance is considered available if all of the following conditions are satisfied: 1. instance's status is RUNNING 2. instance's liveness health check result was observed to be HEALTHY at least once By default, a percent value of 100% is used.
+          "calculated": 42, # [Output Only] Absolute value calculated based on mode: mode = fixed -> calculated = fixed = percent -> calculated = ceiling(percent/100 * base_value)
+          "fixed": 42, # fixed must be non-negative.
+          "percent": 42, # percent must belong to [0, 100].
+        },
+      },
+    ],
+    "instanceGroup": "A String", # [Output Only] The URL of the Instance Group resource.
+    "targetSize": 42, # The target number of running instances for this managed instance group. Deleting or abandoning instances reduces this number. Resizing the group changes this number.
+    "instanceTemplate": "A String", # The URL of the instance template that is specified for this managed instance group. The group uses this template to create all new instances in the managed instance group.
+    "fingerprint": "A String", # [Output Only] The fingerprint of the resource data. You can use this optional field for optimistic locking when you update the resource.
+    "currentActions": { # [Output Only] The list of instance actions and the number of instances in this managed instance group that are scheduled for each of those actions.
+      "none": 42, # [Output Only] The number of instances in the managed instance group that are running and have no scheduled actions.
+      "recreating": 42, # [Output Only] The number of instances in the managed instance group that are scheduled to be recreated or are currently being being recreated. Recreating an instance deletes the existing root persistent disk and creates a new disk from the image that is defined in the instance template.
+      "creating": 42, # [Output Only] The number of instances in the managed instance group that are scheduled to be created or are currently being created. If the group fails to create any of these instances, it tries again until it creates the instance successfully.
+          #
+          # If you have disabled creation retries, this field will not be populated; instead, the creatingWithoutRetries field will be populated.
+      "verifying": 42, # [Output Only] The number of instances in the managed instance group that are being verified.
+      "restarting": 42, # [Output Only] The number of instances in the managed instance group that are scheduled to be restarted or are currently being restarted.
+      "abandoning": 42, # [Output Only] The total number of instances in the managed instance group that are scheduled to be abandoned. Abandoning an instance removes it from the managed instance group without deleting it.
+      "deleting": 42, # [Output Only] The number of instances in the managed instance group that are scheduled to be deleted or are currently being deleted.
+      "creatingWithoutRetries": 42, # [Output Only] The number of instances that the managed instance group will attempt to create. The group attempts to create each instance only once. If the group fails to create any of these instances, it decreases the group's targetSize value accordingly.
+      "refreshing": 42, # [Output Only] The number of instances in the managed instance group that are being reconfigured with properties that do not require a restart or a recreate action. For example, setting or removing target pools for the instance.
+    },
     "name": "A String", # The name of the managed instance group. The name must be 1-63 characters long, and comply with RFC1035.
+    "versions": [ # Versions supported by this IGM. User should set this field if they need fine-grained control over how many instances in each version are run by this IGM. Versions are keyed by instanceTemplate. Every instanceTemplate can appear at most once. This field overrides instanceTemplate field. If both instanceTemplate and versions are set, the user receives a warning. "instanceTemplate: X" is semantically equivalent to "versions [ { instanceTemplate: X } ]". Exactly one version must have targetSize field left unset. Size of such a version will be calculated automatically.
+      {
+        "targetSize": { # Encapsulates numeric value that can be either absolute or relative. # Intended number of instances that are created from instanceTemplate. The final number of instances created from instanceTemplate will be equal to: * if expressed as fixed number: min(targetSize.fixed, instanceGroupManager.targetSize), * if expressed as percent: ceiling(targetSize.percent * InstanceGroupManager.targetSize). If unset, this version will handle all the remaining instances.
+          "calculated": 42, # [Output Only] Absolute value calculated based on mode: mode = fixed -> calculated = fixed = percent -> calculated = ceiling(percent/100 * base_value)
+          "fixed": 42, # fixed must be non-negative.
+          "percent": 42, # percent must belong to [0, 100].
+        },
+        "instanceTemplate": "A String",
+        "tag": "A String", # Tag describing the version. Used to trigger rollout of a target version even if instance_template remains unchanged.
+      },
+    ],
+    "region": "A String", # [Output Only] The URL of the region where the managed instance group resides (for regional resources).
+    "selfLink": "A String", # [Output Only] The URL for this managed instance group. The server defines this URL.
   }
 
 
@@ -1380,7 +1394,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
diff --git a/docs/dyn/compute_alpha.regionInstanceGroups.html b/docs/dyn/compute_alpha.regionInstanceGroups.html
index e5beafd..4dbba65 100644
--- a/docs/dyn/compute_alpha.regionInstanceGroups.html
+++ b/docs/dyn/compute_alpha.regionInstanceGroups.html
@@ -347,7 +347,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
diff --git a/docs/dyn/compute_alpha.regionOperations.html b/docs/dyn/compute_alpha.regionOperations.html
index f4d6d08..b2d8dc2 100644
--- a/docs/dyn/compute_alpha.regionOperations.html
+++ b/docs/dyn/compute_alpha.regionOperations.html
@@ -153,7 +153,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
@@ -230,7 +230,7 @@
         },
         "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
         "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-        "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+        "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
       },
     ],
     "kind": "compute#operationList", # [Output Only] Type of resource. Always compute#operations for Operations resource.
diff --git a/docs/dyn/compute_alpha.regions.html b/docs/dyn/compute_alpha.regions.html
index 5fe9c44..557afce 100644
--- a/docs/dyn/compute_alpha.regions.html
+++ b/docs/dyn/compute_alpha.regions.html
@@ -100,10 +100,10 @@
     "kind": "compute#region", # [Output Only] Type of the resource. Always compute#region for regions.
     "description": "A String", # [Output Only] Textual description of the resource.
     "deprecated": { # Deprecation status for a public resource. # [Output Only] The deprecation status associated with this region.
-      "deleted": "A String", # An optional RFC3339 timestamp on or after which the deprecation state of this resource will be changed to DELETED.
-      "deprecated": "A String", # An optional RFC3339 timestamp on or after which the deprecation state of this resource will be changed to DEPRECATED.
+      "deleted": "A String", # An optional RFC3339 timestamp on or after which the state of this resource is intended to change to DELETED. This is only informational and the status will not change unless the client explicitly changes it.
+      "deprecated": "A String", # An optional RFC3339 timestamp on or after which the state of this resource is intended to change to DEPRECATED. This is only informational and the status will not change unless the client explicitly changes it.
       "state": "A String", # The deprecation state of this resource. This can be DEPRECATED, OBSOLETE, or DELETED. Operations which create a new resource using a DEPRECATED resource will return successfully, but with a warning indicating the deprecated resource and recommending its replacement. Operations which use OBSOLETE or DELETED resources will be rejected and result in an error.
-      "obsolete": "A String", # An optional RFC3339 timestamp on or after which the deprecation state of this resource will be changed to OBSOLETE.
+      "obsolete": "A String", # An optional RFC3339 timestamp on or after which the state of this resource is intended to change to OBSOLETE. This is only informational and the status will not change unless the client explicitly changes it.
       "replacement": "A String", # The URL of the suggested replacement for a deprecated resource. The suggested replacement resource must be the same kind of resource as the deprecated resource.
     },
     "quotas": [ # [Output Only] Quotas assigned to this region.
@@ -157,10 +157,10 @@
         "kind": "compute#region", # [Output Only] Type of the resource. Always compute#region for regions.
         "description": "A String", # [Output Only] Textual description of the resource.
         "deprecated": { # Deprecation status for a public resource. # [Output Only] The deprecation status associated with this region.
-          "deleted": "A String", # An optional RFC3339 timestamp on or after which the deprecation state of this resource will be changed to DELETED.
-          "deprecated": "A String", # An optional RFC3339 timestamp on or after which the deprecation state of this resource will be changed to DEPRECATED.
+          "deleted": "A String", # An optional RFC3339 timestamp on or after which the state of this resource is intended to change to DELETED. This is only informational and the status will not change unless the client explicitly changes it.
+          "deprecated": "A String", # An optional RFC3339 timestamp on or after which the state of this resource is intended to change to DEPRECATED. This is only informational and the status will not change unless the client explicitly changes it.
           "state": "A String", # The deprecation state of this resource. This can be DEPRECATED, OBSOLETE, or DELETED. Operations which create a new resource using a DEPRECATED resource will return successfully, but with a warning indicating the deprecated resource and recommending its replacement. Operations which use OBSOLETE or DELETED resources will be rejected and result in an error.
-          "obsolete": "A String", # An optional RFC3339 timestamp on or after which the deprecation state of this resource will be changed to OBSOLETE.
+          "obsolete": "A String", # An optional RFC3339 timestamp on or after which the state of this resource is intended to change to OBSOLETE. This is only informational and the status will not change unless the client explicitly changes it.
           "replacement": "A String", # The URL of the suggested replacement for a deprecated resource. The suggested replacement resource must be the same kind of resource as the deprecated resource.
         },
         "quotas": [ # [Output Only] Quotas assigned to this region.
diff --git a/docs/dyn/compute_alpha.routers.html b/docs/dyn/compute_alpha.routers.html
index c1af5cf..a38474f 100644
--- a/docs/dyn/compute_alpha.routers.html
+++ b/docs/dyn/compute_alpha.routers.html
@@ -261,7 +261,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
@@ -348,6 +348,7 @@
               "nextHopInstance": "A String", # The URL to an instance that should handle matching packets. You can specify this as a full or partial URL. For example:
                   # https://www.googleapis.com/compute/v1/projects/project/zones/zone/instances/
               "priority": 42, # The priority of this route. Priority is used to break ties in cases where there is more than one matching route of equal prefix length. In the case of two routes with equal prefix length, the one with the lowest-numbered priority value wins. Default value is 1000. Valid range is 0 through 65535.
+              "nextHopPeering": "A String", # [Output Only] The network peering name that should handle matching packets, which should conform to RFC1035.
               "nextHopNetwork": "A String", # The URL of the local network if it should handle matching packets.
               "network": "A String", # Fully-qualified URL of the network that this route applies to.
               "selfLink": "A String", # [Output Only] Server-defined fully-qualified URL for this resource.
@@ -393,6 +394,7 @@
           "nextHopInstance": "A String", # The URL to an instance that should handle matching packets. You can specify this as a full or partial URL. For example:
               # https://www.googleapis.com/compute/v1/projects/project/zones/zone/instances/
           "priority": 42, # The priority of this route. Priority is used to break ties in cases where there is more than one matching route of equal prefix length. In the case of two routes with equal prefix length, the one with the lowest-numbered priority value wins. Default value is 1000. Valid range is 0 through 65535.
+          "nextHopPeering": "A String", # [Output Only] The network peering name that should handle matching packets, which should conform to RFC1035.
           "nextHopNetwork": "A String", # The URL of the local network if it should handle matching packets.
           "network": "A String", # Fully-qualified URL of the network that this route applies to.
           "selfLink": "A String", # [Output Only] Server-defined fully-qualified URL for this resource.
@@ -508,7 +510,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
@@ -682,7 +684,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
@@ -883,7 +885,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
diff --git a/docs/dyn/compute_alpha.routes.html b/docs/dyn/compute_alpha.routes.html
index 1101173..7220a8e 100644
--- a/docs/dyn/compute_alpha.routes.html
+++ b/docs/dyn/compute_alpha.routes.html
@@ -147,7 +147,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
@@ -177,6 +177,7 @@
     "nextHopInstance": "A String", # The URL to an instance that should handle matching packets. You can specify this as a full or partial URL. For example:
         # https://www.googleapis.com/compute/v1/projects/project/zones/zone/instances/
     "priority": 42, # The priority of this route. Priority is used to break ties in cases where there is more than one matching route of equal prefix length. In the case of two routes with equal prefix length, the one with the lowest-numbered priority value wins. Default value is 1000. Valid range is 0 through 65535.
+    "nextHopPeering": "A String", # [Output Only] The network peering name that should handle matching packets, which should conform to RFC1035.
     "nextHopNetwork": "A String", # The URL of the local network if it should handle matching packets.
     "network": "A String", # Fully-qualified URL of the network that this route applies to.
     "selfLink": "A String", # [Output Only] Server-defined fully-qualified URL for this resource.
@@ -225,6 +226,7 @@
   "nextHopInstance": "A String", # The URL to an instance that should handle matching packets. You can specify this as a full or partial URL. For example:
       # https://www.googleapis.com/compute/v1/projects/project/zones/zone/instances/
   "priority": 42, # The priority of this route. Priority is used to break ties in cases where there is more than one matching route of equal prefix length. In the case of two routes with equal prefix length, the one with the lowest-numbered priority value wins. Default value is 1000. Valid range is 0 through 65535.
+  "nextHopPeering": "A String", # [Output Only] The network peering name that should handle matching packets, which should conform to RFC1035.
   "nextHopNetwork": "A String", # The URL of the local network if it should handle matching packets.
   "network": "A String", # Fully-qualified URL of the network that this route applies to.
   "selfLink": "A String", # [Output Only] Server-defined fully-qualified URL for this resource.
@@ -295,7 +297,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
@@ -343,6 +345,7 @@
         "nextHopInstance": "A String", # The URL to an instance that should handle matching packets. You can specify this as a full or partial URL. For example:
             # https://www.googleapis.com/compute/v1/projects/project/zones/zone/instances/
         "priority": 42, # The priority of this route. Priority is used to break ties in cases where there is more than one matching route of equal prefix length. In the case of two routes with equal prefix length, the one with the lowest-numbered priority value wins. Default value is 1000. Valid range is 0 through 65535.
+        "nextHopPeering": "A String", # [Output Only] The network peering name that should handle matching packets, which should conform to RFC1035.
         "nextHopNetwork": "A String", # The URL of the local network if it should handle matching packets.
         "network": "A String", # Fully-qualified URL of the network that this route applies to.
         "selfLink": "A String", # [Output Only] Server-defined fully-qualified URL for this resource.
diff --git a/docs/dyn/compute_alpha.snapshots.html b/docs/dyn/compute_alpha.snapshots.html
index d0288fd..eca6c94 100644
--- a/docs/dyn/compute_alpha.snapshots.html
+++ b/docs/dyn/compute_alpha.snapshots.html
@@ -149,7 +149,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
@@ -378,7 +378,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
diff --git a/docs/dyn/compute_alpha.sslCertificates.html b/docs/dyn/compute_alpha.sslCertificates.html
index 94f3a58..0a07b53 100644
--- a/docs/dyn/compute_alpha.sslCertificates.html
+++ b/docs/dyn/compute_alpha.sslCertificates.html
@@ -147,7 +147,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
@@ -166,7 +166,7 @@
       "kind": "compute#sslCertificate", # [Output Only] Type of the resource. Always compute#sslCertificate for SSL certificates.
       "name": "A String", # Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression [a-z]([-a-z0-9]*[a-z0-9])? which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.
       "certificate": "A String", # A local certificate file. The certificate must be in PEM format. The certificate chain must be no greater than 5 certs long. The chain must include at least one intermediate cert.
-      "privateKey": "A String", # A write-only private key in PEM format. Only insert RPCs will include this field.
+      "privateKey": "A String", # A write-only private key in PEM format. Only insert requests will include this field.
       "creationTimestamp": "A String", # [Output Only] Creation timestamp in RFC3339 text format.
       "id": "A String", # [Output Only] The unique identifier for the resource. This identifier is defined by the server.
       "selfLink": "A String", # [Output only] Server-defined URL for the resource.
@@ -187,7 +187,7 @@
     "kind": "compute#sslCertificate", # [Output Only] Type of the resource. Always compute#sslCertificate for SSL certificates.
     "name": "A String", # Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression [a-z]([-a-z0-9]*[a-z0-9])? which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.
     "certificate": "A String", # A local certificate file. The certificate must be in PEM format. The certificate chain must be no greater than 5 certs long. The chain must include at least one intermediate cert.
-    "privateKey": "A String", # A write-only private key in PEM format. Only insert RPCs will include this field.
+    "privateKey": "A String", # A write-only private key in PEM format. Only insert requests will include this field.
     "creationTimestamp": "A String", # [Output Only] Creation timestamp in RFC3339 text format.
     "id": "A String", # [Output Only] The unique identifier for the resource. This identifier is defined by the server.
     "selfLink": "A String", # [Output only] Server-defined URL for the resource.
@@ -241,7 +241,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
@@ -278,7 +278,7 @@
           "kind": "compute#sslCertificate", # [Output Only] Type of the resource. Always compute#sslCertificate for SSL certificates.
           "name": "A String", # Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression [a-z]([-a-z0-9]*[a-z0-9])? which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.
           "certificate": "A String", # A local certificate file. The certificate must be in PEM format. The certificate chain must be no greater than 5 certs long. The chain must include at least one intermediate cert.
-          "privateKey": "A String", # A write-only private key in PEM format. Only insert RPCs will include this field.
+          "privateKey": "A String", # A write-only private key in PEM format. Only insert requests will include this field.
           "creationTimestamp": "A String", # [Output Only] Creation timestamp in RFC3339 text format.
           "id": "A String", # [Output Only] The unique identifier for the resource. This identifier is defined by the server.
           "selfLink": "A String", # [Output only] Server-defined URL for the resource.
diff --git a/docs/dyn/compute_alpha.subnetworks.html b/docs/dyn/compute_alpha.subnetworks.html
index 400c72e..e217f75 100644
--- a/docs/dyn/compute_alpha.subnetworks.html
+++ b/docs/dyn/compute_alpha.subnetworks.html
@@ -250,7 +250,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
@@ -316,7 +316,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
@@ -379,11 +379,19 @@
     "auditConfigs": [ # Specifies audit logging configs for "data access". "data access": generally refers to data reads/writes and admin reads. "admin activity": generally refers to admin writes.
         #
         # Note: `AuditConfig` doesn't apply to "admin activity", which always enables audit logging.
-      { # Enables "data access" audit logging for a service and specifies a list of members that are log-exempted.
+      { # Provides the configuration for non-admin_activity logging for a service. Controls exemptions and specific log sub-types.
         "exemptedMembers": [ # Specifies the identities that are exempted from "data access" audit logging for the `service` specified above. Follows the same format of Binding.members.
           "A String",
         ],
-        "service": "A String", # Specifies a service that will be enabled for "data access" audit logging. For example, `resourcemanager`, `storage`, `compute`. `allServices` is a special value that covers all services.
+        "auditLogConfigs": [ # The configuration for each type of logging
+          { # Provides the configuration for a sub-type of logging.
+            "exemptedMembers": [ # Specifies the identities that are exempted from this type of logging Follows the same format of Binding.members.
+              "A String",
+            ],
+            "logType": "A String", # The log type that this config enables.
+          },
+        ],
+        "service": "A String", # Specifies a service that will be enabled for audit logging. For example, `resourcemanager`, `storage`, `compute`. `allServices` is a special value that covers all services.
       },
     ],
     "rules": [ # If more than one rule is specified, the rules are applied in the following manner: - All matching LOG rules are always applied. - If any DENY/DENY_WITH_LOG rule matches, permission is denied. Logging will be applied if one or more matching rule requires logging. - Otherwise, if any ALLOW/ALLOW_WITH_LOG rule matches, permission is granted. Logging will be applied if one or more matching rule requires logging. - Otherwise, if no rule applies, permission is denied.
@@ -436,6 +444,8 @@
             #
             # * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@gmail.com` or `joe@example.com`.
             #
+            #
+            #
             # * `serviceAccount:{emailid}`: An email address that represents a service account. For example, `my-other-app@appspot.gserviceaccount.com`.
             #
             # * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`.
@@ -526,7 +536,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
@@ -625,11 +635,19 @@
   "auditConfigs": [ # Specifies audit logging configs for "data access". "data access": generally refers to data reads/writes and admin reads. "admin activity": generally refers to admin writes.
       # 
       # Note: `AuditConfig` doesn't apply to "admin activity", which always enables audit logging.
-    { # Enables "data access" audit logging for a service and specifies a list of members that are log-exempted.
+    { # Provides the configuration for non-admin_activity logging for a service. Controls exemptions and specific log sub-types.
       "exemptedMembers": [ # Specifies the identities that are exempted from "data access" audit logging for the `service` specified above. Follows the same format of Binding.members.
         "A String",
       ],
-      "service": "A String", # Specifies a service that will be enabled for "data access" audit logging. For example, `resourcemanager`, `storage`, `compute`. `allServices` is a special value that covers all services.
+      "auditLogConfigs": [ # The configuration for each type of logging
+        { # Provides the configuration for a sub-type of logging.
+          "exemptedMembers": [ # Specifies the identities that are exempted from this type of logging Follows the same format of Binding.members.
+            "A String",
+          ],
+          "logType": "A String", # The log type that this config enables.
+        },
+      ],
+      "service": "A String", # Specifies a service that will be enabled for audit logging. For example, `resourcemanager`, `storage`, `compute`. `allServices` is a special value that covers all services.
     },
   ],
   "rules": [ # If more than one rule is specified, the rules are applied in the following manner: - All matching LOG rules are always applied. - If any DENY/DENY_WITH_LOG rule matches, permission is denied. Logging will be applied if one or more matching rule requires logging. - Otherwise, if any ALLOW/ALLOW_WITH_LOG rule matches, permission is granted. Logging will be applied if one or more matching rule requires logging. - Otherwise, if no rule applies, permission is denied.
@@ -682,6 +700,8 @@
           #
           # * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@gmail.com` or `joe@example.com`.
           #
+          #
+          #
           # * `serviceAccount:{emailid}`: An email address that represents a service account. For example, `my-other-app@appspot.gserviceaccount.com`.
           #
           # * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`.
@@ -712,11 +732,19 @@
     "auditConfigs": [ # Specifies audit logging configs for "data access". "data access": generally refers to data reads/writes and admin reads. "admin activity": generally refers to admin writes.
         #
         # Note: `AuditConfig` doesn't apply to "admin activity", which always enables audit logging.
-      { # Enables "data access" audit logging for a service and specifies a list of members that are log-exempted.
+      { # Provides the configuration for non-admin_activity logging for a service. Controls exemptions and specific log sub-types.
         "exemptedMembers": [ # Specifies the identities that are exempted from "data access" audit logging for the `service` specified above. Follows the same format of Binding.members.
           "A String",
         ],
-        "service": "A String", # Specifies a service that will be enabled for "data access" audit logging. For example, `resourcemanager`, `storage`, `compute`. `allServices` is a special value that covers all services.
+        "auditLogConfigs": [ # The configuration for each type of logging
+          { # Provides the configuration for a sub-type of logging.
+            "exemptedMembers": [ # Specifies the identities that are exempted from this type of logging Follows the same format of Binding.members.
+              "A String",
+            ],
+            "logType": "A String", # The log type that this config enables.
+          },
+        ],
+        "service": "A String", # Specifies a service that will be enabled for audit logging. For example, `resourcemanager`, `storage`, `compute`. `allServices` is a special value that covers all services.
       },
     ],
     "rules": [ # If more than one rule is specified, the rules are applied in the following manner: - All matching LOG rules are always applied. - If any DENY/DENY_WITH_LOG rule matches, permission is denied. Logging will be applied if one or more matching rule requires logging. - Otherwise, if any ALLOW/ALLOW_WITH_LOG rule matches, permission is granted. Logging will be applied if one or more matching rule requires logging. - Otherwise, if no rule applies, permission is denied.
@@ -769,6 +797,8 @@
             #
             # * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@gmail.com` or `joe@example.com`.
             #
+            #
+            #
             # * `serviceAccount:{emailid}`: An email address that represents a service account. For example, `my-other-app@appspot.gserviceaccount.com`.
             #
             # * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`.
@@ -844,7 +874,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
diff --git a/docs/dyn/compute_alpha.targetHttpProxies.html b/docs/dyn/compute_alpha.targetHttpProxies.html
index eb211c6..10a0d18 100644
--- a/docs/dyn/compute_alpha.targetHttpProxies.html
+++ b/docs/dyn/compute_alpha.targetHttpProxies.html
@@ -150,7 +150,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
@@ -242,7 +242,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
@@ -366,7 +366,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
diff --git a/docs/dyn/compute_alpha.targetHttpsProxies.html b/docs/dyn/compute_alpha.targetHttpsProxies.html
index c53bc13..5faeb04 100644
--- a/docs/dyn/compute_alpha.targetHttpsProxies.html
+++ b/docs/dyn/compute_alpha.targetHttpsProxies.html
@@ -153,7 +153,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
@@ -259,7 +259,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
@@ -392,7 +392,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
@@ -457,7 +457,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
diff --git a/docs/dyn/compute_alpha.targetInstances.html b/docs/dyn/compute_alpha.targetInstances.html
index 37ad245..217e65b 100644
--- a/docs/dyn/compute_alpha.targetInstances.html
+++ b/docs/dyn/compute_alpha.targetInstances.html
@@ -233,7 +233,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
@@ -337,7 +337,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
diff --git a/docs/dyn/compute_alpha.targetPools.html b/docs/dyn/compute_alpha.targetPools.html
index de82b7e..a76c463 100644
--- a/docs/dyn/compute_alpha.targetPools.html
+++ b/docs/dyn/compute_alpha.targetPools.html
@@ -186,7 +186,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
@@ -259,7 +259,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
@@ -412,7 +412,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
@@ -578,7 +578,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
@@ -734,7 +734,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
@@ -804,7 +804,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
@@ -871,7 +871,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
diff --git a/docs/dyn/compute_alpha.targetSslProxies.html b/docs/dyn/compute_alpha.targetSslProxies.html
index dee0a2b..6568e02 100644
--- a/docs/dyn/compute_alpha.targetSslProxies.html
+++ b/docs/dyn/compute_alpha.targetSslProxies.html
@@ -156,7 +156,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
@@ -258,7 +258,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
@@ -387,7 +387,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
@@ -452,7 +452,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
@@ -519,7 +519,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
diff --git a/docs/dyn/compute_alpha.targetTcpProxies.html b/docs/dyn/compute_alpha.targetTcpProxies.html
index 95db661..6b2b031 100644
--- a/docs/dyn/compute_alpha.targetTcpProxies.html
+++ b/docs/dyn/compute_alpha.targetTcpProxies.html
@@ -153,7 +153,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
@@ -247,7 +247,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
@@ -372,7 +372,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
@@ -437,7 +437,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
diff --git a/docs/dyn/compute_alpha.targetVpnGateways.html b/docs/dyn/compute_alpha.targetVpnGateways.html
index 3453a1d..1f75644 100644
--- a/docs/dyn/compute_alpha.targetVpnGateways.html
+++ b/docs/dyn/compute_alpha.targetVpnGateways.html
@@ -236,7 +236,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
@@ -346,7 +346,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
diff --git a/docs/dyn/compute_alpha.urlMaps.html b/docs/dyn/compute_alpha.urlMaps.html
index 8c44b76..fc172a9 100644
--- a/docs/dyn/compute_alpha.urlMaps.html
+++ b/docs/dyn/compute_alpha.urlMaps.html
@@ -159,7 +159,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
@@ -323,7 +323,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
@@ -389,7 +389,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
@@ -591,7 +591,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
@@ -725,7 +725,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
diff --git a/docs/dyn/compute_alpha.vpnTunnels.html b/docs/dyn/compute_alpha.vpnTunnels.html
index 8e153ba..db21a8f 100644
--- a/docs/dyn/compute_alpha.vpnTunnels.html
+++ b/docs/dyn/compute_alpha.vpnTunnels.html
@@ -248,7 +248,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
@@ -382,7 +382,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
diff --git a/docs/dyn/compute_alpha.zoneOperations.html b/docs/dyn/compute_alpha.zoneOperations.html
index 6a5cb37..4feaca1 100644
--- a/docs/dyn/compute_alpha.zoneOperations.html
+++ b/docs/dyn/compute_alpha.zoneOperations.html
@@ -153,7 +153,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
@@ -230,7 +230,7 @@
         },
         "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
         "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-        "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+        "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
       },
     ],
     "kind": "compute#operationList", # [Output Only] Type of resource. Always compute#operations for Operations resource.
diff --git a/docs/dyn/compute_alpha.zones.html b/docs/dyn/compute_alpha.zones.html
index 7f366de..ef4e4c3 100644
--- a/docs/dyn/compute_alpha.zones.html
+++ b/docs/dyn/compute_alpha.zones.html
@@ -100,10 +100,10 @@
     "kind": "compute#zone", # [Output Only] Type of the resource. Always compute#zone for zones.
     "description": "A String", # [Output Only] Textual description of the resource.
     "deprecated": { # Deprecation status for a public resource. # [Output Only] The deprecation status associated with this zone.
-      "deleted": "A String", # An optional RFC3339 timestamp on or after which the deprecation state of this resource will be changed to DELETED.
-      "deprecated": "A String", # An optional RFC3339 timestamp on or after which the deprecation state of this resource will be changed to DEPRECATED.
+      "deleted": "A String", # An optional RFC3339 timestamp on or after which the state of this resource is intended to change to DELETED. This is only informational and the status will not change unless the client explicitly changes it.
+      "deprecated": "A String", # An optional RFC3339 timestamp on or after which the state of this resource is intended to change to DEPRECATED. This is only informational and the status will not change unless the client explicitly changes it.
       "state": "A String", # The deprecation state of this resource. This can be DEPRECATED, OBSOLETE, or DELETED. Operations which create a new resource using a DEPRECATED resource will return successfully, but with a warning indicating the deprecated resource and recommending its replacement. Operations which use OBSOLETE or DELETED resources will be rejected and result in an error.
-      "obsolete": "A String", # An optional RFC3339 timestamp on or after which the deprecation state of this resource will be changed to OBSOLETE.
+      "obsolete": "A String", # An optional RFC3339 timestamp on or after which the state of this resource is intended to change to OBSOLETE. This is only informational and the status will not change unless the client explicitly changes it.
       "replacement": "A String", # The URL of the suggested replacement for a deprecated resource. The suggested replacement resource must be the same kind of resource as the deprecated resource.
     },
     "region": "A String", # [Output Only] Full URL reference to the region which hosts the zone.
@@ -148,10 +148,10 @@
         "kind": "compute#zone", # [Output Only] Type of the resource. Always compute#zone for zones.
         "description": "A String", # [Output Only] Textual description of the resource.
         "deprecated": { # Deprecation status for a public resource. # [Output Only] The deprecation status associated with this zone.
-          "deleted": "A String", # An optional RFC3339 timestamp on or after which the deprecation state of this resource will be changed to DELETED.
-          "deprecated": "A String", # An optional RFC3339 timestamp on or after which the deprecation state of this resource will be changed to DEPRECATED.
+          "deleted": "A String", # An optional RFC3339 timestamp on or after which the state of this resource is intended to change to DELETED. This is only informational and the status will not change unless the client explicitly changes it.
+          "deprecated": "A String", # An optional RFC3339 timestamp on or after which the state of this resource is intended to change to DEPRECATED. This is only informational and the status will not change unless the client explicitly changes it.
           "state": "A String", # The deprecation state of this resource. This can be DEPRECATED, OBSOLETE, or DELETED. Operations which create a new resource using a DEPRECATED resource will return successfully, but with a warning indicating the deprecated resource and recommending its replacement. Operations which use OBSOLETE or DELETED resources will be rejected and result in an error.
-          "obsolete": "A String", # An optional RFC3339 timestamp on or after which the deprecation state of this resource will be changed to OBSOLETE.
+          "obsolete": "A String", # An optional RFC3339 timestamp on or after which the state of this resource is intended to change to OBSOLETE. This is only informational and the status will not change unless the client explicitly changes it.
           "replacement": "A String", # The URL of the suggested replacement for a deprecated resource. The suggested replacement resource must be the same kind of resource as the deprecated resource.
         },
         "region": "A String", # [Output Only] Full URL reference to the region which hosts the zone.
diff --git a/docs/dyn/compute_beta.addresses.html b/docs/dyn/compute_beta.addresses.html
index 5fd99ba..320cd50 100644
--- a/docs/dyn/compute_beta.addresses.html
+++ b/docs/dyn/compute_beta.addresses.html
@@ -233,7 +233,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
@@ -337,7 +337,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
diff --git a/docs/dyn/compute_beta.autoscalers.html b/docs/dyn/compute_beta.autoscalers.html
index 961db44..130e876 100644
--- a/docs/dyn/compute_beta.autoscalers.html
+++ b/docs/dyn/compute_beta.autoscalers.html
@@ -274,7 +274,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
@@ -448,7 +448,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
@@ -660,7 +660,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
@@ -800,7 +800,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
diff --git a/docs/dyn/compute_beta.backendBuckets.html b/docs/dyn/compute_beta.backendBuckets.html
new file mode 100644
index 0000000..666fb95
--- /dev/null
+++ b/docs/dyn/compute_beta.backendBuckets.html
@@ -0,0 +1,455 @@
+<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="compute_beta.html">Compute Engine API</a> . <a href="compute_beta.backendBuckets.html">backendBuckets</a></h1>
+<h2>Instance Methods</h2>
+<p class="toc_element">
+  <code><a href="#delete">delete(project, backendBucket)</a></code></p>
+<p class="firstline">Deletes the specified BackendBucket resource.</p>
+<p class="toc_element">
+  <code><a href="#get">get(project, backendBucket)</a></code></p>
+<p class="firstline">Returns the specified BackendBucket resource. Get a list of available backend buckets by making a list() request.</p>
+<p class="toc_element">
+  <code><a href="#insert">insert(project, body)</a></code></p>
+<p class="firstline">Creates a BackendBucket resource in the specified project using the data included in the request.</p>
+<p class="toc_element">
+  <code><a href="#list">list(project, orderBy=None, maxResults=None, pageToken=None, filter=None)</a></code></p>
+<p class="firstline">Retrieves the list of BackendBucket resources available to the specified project.</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="#patch">patch(project, backendBucket, body)</a></code></p>
+<p class="firstline">Updates the specified BackendBucket resource with the data included in the request. This method supports patch semantics.</p>
+<p class="toc_element">
+  <code><a href="#update">update(project, backendBucket, body)</a></code></p>
+<p class="firstline">Updates the specified BackendBucket resource with the data included in the request.</p>
+<h3>Method Details</h3>
+<div class="method">
+    <code class="details" id="delete">delete(project, backendBucket)</code>
+  <pre>Deletes the specified BackendBucket resource.
+
+Args:
+  project: string, Project ID for this request. (required)
+  backendBucket: string, Name of the BackendBucket resource to delete. (required)
+
+Returns:
+  An object of the form:
+
+    { # An Operation resource, used to manage asynchronous API requests.
+    "targetId": "A String", # [Output Only] The unique target ID, which identifies a specific incarnation of the target resource.
+    "clientOperationId": "A String", # [Output Only] Reserved for future use.
+    "creationTimestamp": "A String", # [Output Only] Creation timestamp in RFC3339 text format.
+    "id": "A String", # [Output Only] The unique identifier for the resource. This identifier is defined by the server.
+    "zone": "A String", # [Output Only] The URL of the zone where the operation resides. Only available when performing per-zone operations.
+    "insertTime": "A String", # [Output Only] The time that this operation was requested. This value is in RFC3339 text format.
+    "operationType": "A String", # [Output Only] The type of operation, such as insert, update, or delete, and so on.
+    "httpErrorMessage": "A String", # [Output Only] If the operation fails, this field contains the HTTP error message that was returned, such as NOT FOUND.
+    "progress": 42, # [Output Only] An optional progress indicator that ranges from 0 to 100. There is no requirement that this be linear or support any granularity of operations. This should not be used to guess when the operation will be complete. This number should monotonically increase as the operation progresses.
+    "httpErrorStatusCode": 42, # [Output Only] If the operation fails, this field contains the HTTP error status code that was returned. For example, a 404 means the resource was not found.
+    "statusMessage": "A String", # [Output Only] An optional textual description of the current status of the operation.
+    "status": "A String", # [Output Only] The status of the operation, which can be one of the following: PENDING, RUNNING, or DONE.
+    "description": "A String", # [Output Only] A textual description of the operation, which is set when the operation is created.
+    "warnings": [ # [Output Only] If warning messages are generated during processing of the operation, this field will be populated.
+      {
+        "message": "A String", # [Output Only] A human-readable description of the warning code.
+        "code": "A String", # [Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.
+        "data": [ # [Output Only] Metadata about this warning in key: value format. For example:
+            # "data": [ { "key": "scope", "value": "zones/us-east1-d" }
+          {
+            "value": "A String", # [Output Only] A warning data value corresponding to the key.
+            "key": "A String", # [Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding).
+          },
+        ],
+      },
+    ],
+    "user": "A String", # [Output Only] User who requested the operation, for example: user@example.com.
+    "startTime": "A String", # [Output Only] The time that this operation was started by the server. This value is in RFC3339 text format.
+    "kind": "compute#operation", # [Output Only] Type of the resource. Always compute#operation for Operation resources.
+    "name": "A String", # [Output Only] Name of the resource.
+    "region": "A String", # [Output Only] The URL of the region where the operation resides. Only available when performing regional operations.
+    "error": { # [Output Only] If errors are generated during processing of the operation, this field will be populated.
+      "errors": [ # [Output Only] The array of errors encountered while processing this operation.
+        {
+          "message": "A String", # [Output Only] An optional, human-readable error message.
+          "code": "A String", # [Output Only] The error type identifier for this error.
+          "location": "A String", # [Output Only] Indicates the field in the request that caused the error. This property is optional.
+        },
+      ],
+    },
+    "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
+    "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
+  }</pre>
+</div>
+
+<div class="method">
+    <code class="details" id="get">get(project, backendBucket)</code>
+  <pre>Returns the specified BackendBucket resource. Get a list of available backend buckets by making a list() request.
+
+Args:
+  project: string, Project ID for this request. (required)
+  backendBucket: string, Name of the BackendBucket resource to return. (required)
+
+Returns:
+  An object of the form:
+
+    { # A BackendBucket resource. This resource defines a Cloud Storage bucket.
+      "kind": "compute#backendBucket", # Type of the resource.
+      "description": "A String", # An optional textual description of the resource; provided by the client when the resource is created.
+      "enableCdn": True or False, # If true, enable Cloud CDN for this BackendBucket.
+      "bucketName": "A String", # Cloud Storage bucket name.
+      "creationTimestamp": "A String", # [Output Only] Creation timestamp in RFC3339 text format.
+      "id": "A String", # [Output Only] Unique identifier for the resource; defined by the server.
+      "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
+      "name": "A String", # Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression [a-z]([-a-z0-9]*[a-z0-9])? which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.
+    }</pre>
+</div>
+
+<div class="method">
+    <code class="details" id="insert">insert(project, body)</code>
+  <pre>Creates a BackendBucket resource in the specified project using the data included in the request.
+
+Args:
+  project: string, Project ID for this request. (required)
+  body: object, The request body. (required)
+    The object takes the form of:
+
+{ # A BackendBucket resource. This resource defines a Cloud Storage bucket.
+    "kind": "compute#backendBucket", # Type of the resource.
+    "description": "A String", # An optional textual description of the resource; provided by the client when the resource is created.
+    "enableCdn": True or False, # If true, enable Cloud CDN for this BackendBucket.
+    "bucketName": "A String", # Cloud Storage bucket name.
+    "creationTimestamp": "A String", # [Output Only] Creation timestamp in RFC3339 text format.
+    "id": "A String", # [Output Only] Unique identifier for the resource; defined by the server.
+    "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
+    "name": "A String", # Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression [a-z]([-a-z0-9]*[a-z0-9])? which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.
+  }
+
+
+Returns:
+  An object of the form:
+
+    { # An Operation resource, used to manage asynchronous API requests.
+    "targetId": "A String", # [Output Only] The unique target ID, which identifies a specific incarnation of the target resource.
+    "clientOperationId": "A String", # [Output Only] Reserved for future use.
+    "creationTimestamp": "A String", # [Output Only] Creation timestamp in RFC3339 text format.
+    "id": "A String", # [Output Only] The unique identifier for the resource. This identifier is defined by the server.
+    "zone": "A String", # [Output Only] The URL of the zone where the operation resides. Only available when performing per-zone operations.
+    "insertTime": "A String", # [Output Only] The time that this operation was requested. This value is in RFC3339 text format.
+    "operationType": "A String", # [Output Only] The type of operation, such as insert, update, or delete, and so on.
+    "httpErrorMessage": "A String", # [Output Only] If the operation fails, this field contains the HTTP error message that was returned, such as NOT FOUND.
+    "progress": 42, # [Output Only] An optional progress indicator that ranges from 0 to 100. There is no requirement that this be linear or support any granularity of operations. This should not be used to guess when the operation will be complete. This number should monotonically increase as the operation progresses.
+    "httpErrorStatusCode": 42, # [Output Only] If the operation fails, this field contains the HTTP error status code that was returned. For example, a 404 means the resource was not found.
+    "statusMessage": "A String", # [Output Only] An optional textual description of the current status of the operation.
+    "status": "A String", # [Output Only] The status of the operation, which can be one of the following: PENDING, RUNNING, or DONE.
+    "description": "A String", # [Output Only] A textual description of the operation, which is set when the operation is created.
+    "warnings": [ # [Output Only] If warning messages are generated during processing of the operation, this field will be populated.
+      {
+        "message": "A String", # [Output Only] A human-readable description of the warning code.
+        "code": "A String", # [Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.
+        "data": [ # [Output Only] Metadata about this warning in key: value format. For example:
+            # "data": [ { "key": "scope", "value": "zones/us-east1-d" }
+          {
+            "value": "A String", # [Output Only] A warning data value corresponding to the key.
+            "key": "A String", # [Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding).
+          },
+        ],
+      },
+    ],
+    "user": "A String", # [Output Only] User who requested the operation, for example: user@example.com.
+    "startTime": "A String", # [Output Only] The time that this operation was started by the server. This value is in RFC3339 text format.
+    "kind": "compute#operation", # [Output Only] Type of the resource. Always compute#operation for Operation resources.
+    "name": "A String", # [Output Only] Name of the resource.
+    "region": "A String", # [Output Only] The URL of the region where the operation resides. Only available when performing regional operations.
+    "error": { # [Output Only] If errors are generated during processing of the operation, this field will be populated.
+      "errors": [ # [Output Only] The array of errors encountered while processing this operation.
+        {
+          "message": "A String", # [Output Only] An optional, human-readable error message.
+          "code": "A String", # [Output Only] The error type identifier for this error.
+          "location": "A String", # [Output Only] Indicates the field in the request that caused the error. This property is optional.
+        },
+      ],
+    },
+    "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
+    "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
+  }</pre>
+</div>
+
+<div class="method">
+    <code class="details" id="list">list(project, orderBy=None, maxResults=None, pageToken=None, filter=None)</code>
+  <pre>Retrieves the list of BackendBucket resources available to the specified project.
+
+Args:
+  project: string, Project ID for this request. (required)
+  orderBy: string, Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.
+
+You can also sort results in descending order based on the creation timestamp using orderBy="creationTimestamp desc". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.
+
+Currently, only sorting by name or creationTimestamp desc is supported.
+  maxResults: integer, The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests.
+  pageToken: string, Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.
+  filter: string, Sets a filter expression for filtering listed resources, in the form filter={expression}. Your {expression} must be in the format: field_name comparison_string literal_string.
+
+The field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.
+
+For example, to filter for instances that do not have a name of example-instance, you would use filter=name ne example-instance.
+
+You can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.
+
+To filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.
+
+Returns:
+  An object of the form:
+
+    { # Contains a list of BackendBucket resources.
+    "nextPageToken": "A String", # [Output Only] A token used to continue a truncated list request.
+    "items": [ # A list of BackendBucket resources.
+      { # A BackendBucket resource. This resource defines a Cloud Storage bucket.
+          "kind": "compute#backendBucket", # Type of the resource.
+          "description": "A String", # An optional textual description of the resource; provided by the client when the resource is created.
+          "enableCdn": True or False, # If true, enable Cloud CDN for this BackendBucket.
+          "bucketName": "A String", # Cloud Storage bucket name.
+          "creationTimestamp": "A String", # [Output Only] Creation timestamp in RFC3339 text format.
+          "id": "A String", # [Output Only] Unique identifier for the resource; defined by the server.
+          "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
+          "name": "A String", # Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression [a-z]([-a-z0-9]*[a-z0-9])? which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.
+        },
+    ],
+    "kind": "compute#backendBucketList", # Type of resource.
+    "id": "A String", # [Output Only] Unique identifier for the resource; defined by the server.
+    "selfLink": "A String", # [Output Only] Server-defined URL for this resource.
+  }</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="patch">patch(project, backendBucket, body)</code>
+  <pre>Updates the specified BackendBucket resource with the data included in the request. This method supports patch semantics.
+
+Args:
+  project: string, Project ID for this request. (required)
+  backendBucket: string, Name of the BackendBucket resource to update. (required)
+  body: object, The request body. (required)
+    The object takes the form of:
+
+{ # A BackendBucket resource. This resource defines a Cloud Storage bucket.
+    "kind": "compute#backendBucket", # Type of the resource.
+    "description": "A String", # An optional textual description of the resource; provided by the client when the resource is created.
+    "enableCdn": True or False, # If true, enable Cloud CDN for this BackendBucket.
+    "bucketName": "A String", # Cloud Storage bucket name.
+    "creationTimestamp": "A String", # [Output Only] Creation timestamp in RFC3339 text format.
+    "id": "A String", # [Output Only] Unique identifier for the resource; defined by the server.
+    "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
+    "name": "A String", # Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression [a-z]([-a-z0-9]*[a-z0-9])? which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.
+  }
+
+
+Returns:
+  An object of the form:
+
+    { # An Operation resource, used to manage asynchronous API requests.
+    "targetId": "A String", # [Output Only] The unique target ID, which identifies a specific incarnation of the target resource.
+    "clientOperationId": "A String", # [Output Only] Reserved for future use.
+    "creationTimestamp": "A String", # [Output Only] Creation timestamp in RFC3339 text format.
+    "id": "A String", # [Output Only] The unique identifier for the resource. This identifier is defined by the server.
+    "zone": "A String", # [Output Only] The URL of the zone where the operation resides. Only available when performing per-zone operations.
+    "insertTime": "A String", # [Output Only] The time that this operation was requested. This value is in RFC3339 text format.
+    "operationType": "A String", # [Output Only] The type of operation, such as insert, update, or delete, and so on.
+    "httpErrorMessage": "A String", # [Output Only] If the operation fails, this field contains the HTTP error message that was returned, such as NOT FOUND.
+    "progress": 42, # [Output Only] An optional progress indicator that ranges from 0 to 100. There is no requirement that this be linear or support any granularity of operations. This should not be used to guess when the operation will be complete. This number should monotonically increase as the operation progresses.
+    "httpErrorStatusCode": 42, # [Output Only] If the operation fails, this field contains the HTTP error status code that was returned. For example, a 404 means the resource was not found.
+    "statusMessage": "A String", # [Output Only] An optional textual description of the current status of the operation.
+    "status": "A String", # [Output Only] The status of the operation, which can be one of the following: PENDING, RUNNING, or DONE.
+    "description": "A String", # [Output Only] A textual description of the operation, which is set when the operation is created.
+    "warnings": [ # [Output Only] If warning messages are generated during processing of the operation, this field will be populated.
+      {
+        "message": "A String", # [Output Only] A human-readable description of the warning code.
+        "code": "A String", # [Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.
+        "data": [ # [Output Only] Metadata about this warning in key: value format. For example:
+            # "data": [ { "key": "scope", "value": "zones/us-east1-d" }
+          {
+            "value": "A String", # [Output Only] A warning data value corresponding to the key.
+            "key": "A String", # [Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding).
+          },
+        ],
+      },
+    ],
+    "user": "A String", # [Output Only] User who requested the operation, for example: user@example.com.
+    "startTime": "A String", # [Output Only] The time that this operation was started by the server. This value is in RFC3339 text format.
+    "kind": "compute#operation", # [Output Only] Type of the resource. Always compute#operation for Operation resources.
+    "name": "A String", # [Output Only] Name of the resource.
+    "region": "A String", # [Output Only] The URL of the region where the operation resides. Only available when performing regional operations.
+    "error": { # [Output Only] If errors are generated during processing of the operation, this field will be populated.
+      "errors": [ # [Output Only] The array of errors encountered while processing this operation.
+        {
+          "message": "A String", # [Output Only] An optional, human-readable error message.
+          "code": "A String", # [Output Only] The error type identifier for this error.
+          "location": "A String", # [Output Only] Indicates the field in the request that caused the error. This property is optional.
+        },
+      ],
+    },
+    "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
+    "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
+  }</pre>
+</div>
+
+<div class="method">
+    <code class="details" id="update">update(project, backendBucket, body)</code>
+  <pre>Updates the specified BackendBucket resource with the data included in the request.
+
+Args:
+  project: string, Project ID for this request. (required)
+  backendBucket: string, Name of the BackendBucket resource to update. (required)
+  body: object, The request body. (required)
+    The object takes the form of:
+
+{ # A BackendBucket resource. This resource defines a Cloud Storage bucket.
+    "kind": "compute#backendBucket", # Type of the resource.
+    "description": "A String", # An optional textual description of the resource; provided by the client when the resource is created.
+    "enableCdn": True or False, # If true, enable Cloud CDN for this BackendBucket.
+    "bucketName": "A String", # Cloud Storage bucket name.
+    "creationTimestamp": "A String", # [Output Only] Creation timestamp in RFC3339 text format.
+    "id": "A String", # [Output Only] Unique identifier for the resource; defined by the server.
+    "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
+    "name": "A String", # Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression [a-z]([-a-z0-9]*[a-z0-9])? which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.
+  }
+
+
+Returns:
+  An object of the form:
+
+    { # An Operation resource, used to manage asynchronous API requests.
+    "targetId": "A String", # [Output Only] The unique target ID, which identifies a specific incarnation of the target resource.
+    "clientOperationId": "A String", # [Output Only] Reserved for future use.
+    "creationTimestamp": "A String", # [Output Only] Creation timestamp in RFC3339 text format.
+    "id": "A String", # [Output Only] The unique identifier for the resource. This identifier is defined by the server.
+    "zone": "A String", # [Output Only] The URL of the zone where the operation resides. Only available when performing per-zone operations.
+    "insertTime": "A String", # [Output Only] The time that this operation was requested. This value is in RFC3339 text format.
+    "operationType": "A String", # [Output Only] The type of operation, such as insert, update, or delete, and so on.
+    "httpErrorMessage": "A String", # [Output Only] If the operation fails, this field contains the HTTP error message that was returned, such as NOT FOUND.
+    "progress": 42, # [Output Only] An optional progress indicator that ranges from 0 to 100. There is no requirement that this be linear or support any granularity of operations. This should not be used to guess when the operation will be complete. This number should monotonically increase as the operation progresses.
+    "httpErrorStatusCode": 42, # [Output Only] If the operation fails, this field contains the HTTP error status code that was returned. For example, a 404 means the resource was not found.
+    "statusMessage": "A String", # [Output Only] An optional textual description of the current status of the operation.
+    "status": "A String", # [Output Only] The status of the operation, which can be one of the following: PENDING, RUNNING, or DONE.
+    "description": "A String", # [Output Only] A textual description of the operation, which is set when the operation is created.
+    "warnings": [ # [Output Only] If warning messages are generated during processing of the operation, this field will be populated.
+      {
+        "message": "A String", # [Output Only] A human-readable description of the warning code.
+        "code": "A String", # [Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.
+        "data": [ # [Output Only] Metadata about this warning in key: value format. For example:
+            # "data": [ { "key": "scope", "value": "zones/us-east1-d" }
+          {
+            "value": "A String", # [Output Only] A warning data value corresponding to the key.
+            "key": "A String", # [Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding).
+          },
+        ],
+      },
+    ],
+    "user": "A String", # [Output Only] User who requested the operation, for example: user@example.com.
+    "startTime": "A String", # [Output Only] The time that this operation was started by the server. This value is in RFC3339 text format.
+    "kind": "compute#operation", # [Output Only] Type of the resource. Always compute#operation for Operation resources.
+    "name": "A String", # [Output Only] Name of the resource.
+    "region": "A String", # [Output Only] The URL of the region where the operation resides. Only available when performing regional operations.
+    "error": { # [Output Only] If errors are generated during processing of the operation, this field will be populated.
+      "errors": [ # [Output Only] The array of errors encountered while processing this operation.
+        {
+          "message": "A String", # [Output Only] An optional, human-readable error message.
+          "code": "A String", # [Output Only] The error type identifier for this error.
+          "location": "A String", # [Output Only] Indicates the field in the request that caused the error. This property is optional.
+        },
+      ],
+    },
+    "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
+    "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
+  }</pre>
+</div>
+
+</body></html>
\ No newline at end of file
diff --git a/docs/dyn/compute_beta.backendServices.html b/docs/dyn/compute_beta.backendServices.html
index 43e35c1..7132a80 100644
--- a/docs/dyn/compute_beta.backendServices.html
+++ b/docs/dyn/compute_beta.backendServices.html
@@ -170,6 +170,7 @@
               "affinityCookieTtlSec": 42, # Lifetime of cookies in seconds if session_affinity is GENERATED_COOKIE. If set to 0, the cookie is non-persistent and lasts only until the end of the browser session (or equivalent). The maximum allowed value for TTL is one day.
                   #
                   # When the load balancing scheme is INTERNAL, this field is not used.
+              "id": "A String", # [Output Only] The unique identifier for the resource. This identifier is defined by the server.
               "port": 42, # Deprecated in favor of portName. The TCP port to connect on the backend. The default value is 80.
                   #
                   # This cannot be used for internal load balancing.
@@ -221,7 +222,12 @@
                   #
                   # When the protocol is UDP, this field is not used.
               "creationTimestamp": "A String", # [Output Only] Creation timestamp in RFC3339 text format.
-              "id": "A String", # [Output Only] The unique identifier for the resource. This identifier is defined by the server.
+              "iap": { # Identity-Aware Proxy (Cloud Gatekeeper)
+                "oauth2ClientId": "A String",
+                "enabled": True or False,
+                "oauth2ClientSecret": "A String",
+                "oauth2ClientSecretSha256": "A String",
+              },
               "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
               "name": "A String", # Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression [a-z]([-a-z0-9]*[a-z0-9])? which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.
             },
@@ -302,7 +308,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
@@ -337,6 +343,7 @@
       "affinityCookieTtlSec": 42, # Lifetime of cookies in seconds if session_affinity is GENERATED_COOKIE. If set to 0, the cookie is non-persistent and lasts only until the end of the browser session (or equivalent). The maximum allowed value for TTL is one day.
           #
           # When the load balancing scheme is INTERNAL, this field is not used.
+      "id": "A String", # [Output Only] The unique identifier for the resource. This identifier is defined by the server.
       "port": 42, # Deprecated in favor of portName. The TCP port to connect on the backend. The default value is 80.
           #
           # This cannot be used for internal load balancing.
@@ -388,7 +395,12 @@
           #
           # When the protocol is UDP, this field is not used.
       "creationTimestamp": "A String", # [Output Only] Creation timestamp in RFC3339 text format.
-      "id": "A String", # [Output Only] The unique identifier for the resource. This identifier is defined by the server.
+      "iap": { # Identity-Aware Proxy (Cloud Gatekeeper)
+        "oauth2ClientId": "A String",
+        "enabled": True or False,
+        "oauth2ClientSecret": "A String",
+        "oauth2ClientSecretSha256": "A String",
+      },
       "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
       "name": "A String", # Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression [a-z]([-a-z0-9]*[a-z0-9])? which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.
     }</pre>
@@ -454,6 +466,7 @@
     "affinityCookieTtlSec": 42, # Lifetime of cookies in seconds if session_affinity is GENERATED_COOKIE. If set to 0, the cookie is non-persistent and lasts only until the end of the browser session (or equivalent). The maximum allowed value for TTL is one day.
         # 
         # When the load balancing scheme is INTERNAL, this field is not used.
+    "id": "A String", # [Output Only] The unique identifier for the resource. This identifier is defined by the server.
     "port": 42, # Deprecated in favor of portName. The TCP port to connect on the backend. The default value is 80.
         # 
         # This cannot be used for internal load balancing.
@@ -505,7 +518,12 @@
         # 
         # When the protocol is UDP, this field is not used.
     "creationTimestamp": "A String", # [Output Only] Creation timestamp in RFC3339 text format.
-    "id": "A String", # [Output Only] The unique identifier for the resource. This identifier is defined by the server.
+    "iap": { # Identity-Aware Proxy (Cloud Gatekeeper)
+      "oauth2ClientId": "A String",
+      "enabled": True or False,
+      "oauth2ClientSecret": "A String",
+      "oauth2ClientSecretSha256": "A String",
+    },
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
     "name": "A String", # Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression [a-z]([-a-z0-9]*[a-z0-9])? which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.
   }
@@ -557,7 +575,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
@@ -610,6 +628,7 @@
           "affinityCookieTtlSec": 42, # Lifetime of cookies in seconds if session_affinity is GENERATED_COOKIE. If set to 0, the cookie is non-persistent and lasts only until the end of the browser session (or equivalent). The maximum allowed value for TTL is one day.
               #
               # When the load balancing scheme is INTERNAL, this field is not used.
+          "id": "A String", # [Output Only] The unique identifier for the resource. This identifier is defined by the server.
           "port": 42, # Deprecated in favor of portName. The TCP port to connect on the backend. The default value is 80.
               #
               # This cannot be used for internal load balancing.
@@ -661,7 +680,12 @@
               #
               # When the protocol is UDP, this field is not used.
           "creationTimestamp": "A String", # [Output Only] Creation timestamp in RFC3339 text format.
-          "id": "A String", # [Output Only] The unique identifier for the resource. This identifier is defined by the server.
+          "iap": { # Identity-Aware Proxy (Cloud Gatekeeper)
+            "oauth2ClientId": "A String",
+            "enabled": True or False,
+            "oauth2ClientSecret": "A String",
+            "oauth2ClientSecretSha256": "A String",
+          },
           "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
           "name": "A String", # Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression [a-z]([-a-z0-9]*[a-z0-9])? which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.
         },
@@ -716,6 +740,7 @@
     "affinityCookieTtlSec": 42, # Lifetime of cookies in seconds if session_affinity is GENERATED_COOKIE. If set to 0, the cookie is non-persistent and lasts only until the end of the browser session (or equivalent). The maximum allowed value for TTL is one day.
         # 
         # When the load balancing scheme is INTERNAL, this field is not used.
+    "id": "A String", # [Output Only] The unique identifier for the resource. This identifier is defined by the server.
     "port": 42, # Deprecated in favor of portName. The TCP port to connect on the backend. The default value is 80.
         # 
         # This cannot be used for internal load balancing.
@@ -767,7 +792,12 @@
         # 
         # When the protocol is UDP, this field is not used.
     "creationTimestamp": "A String", # [Output Only] Creation timestamp in RFC3339 text format.
-    "id": "A String", # [Output Only] The unique identifier for the resource. This identifier is defined by the server.
+    "iap": { # Identity-Aware Proxy (Cloud Gatekeeper)
+      "oauth2ClientId": "A String",
+      "enabled": True or False,
+      "oauth2ClientSecret": "A String",
+      "oauth2ClientSecretSha256": "A String",
+    },
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
     "name": "A String", # Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression [a-z]([-a-z0-9]*[a-z0-9])? which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.
   }
@@ -819,7 +849,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
@@ -880,6 +910,7 @@
     "affinityCookieTtlSec": 42, # Lifetime of cookies in seconds if session_affinity is GENERATED_COOKIE. If set to 0, the cookie is non-persistent and lasts only until the end of the browser session (or equivalent). The maximum allowed value for TTL is one day.
         # 
         # When the load balancing scheme is INTERNAL, this field is not used.
+    "id": "A String", # [Output Only] The unique identifier for the resource. This identifier is defined by the server.
     "port": 42, # Deprecated in favor of portName. The TCP port to connect on the backend. The default value is 80.
         # 
         # This cannot be used for internal load balancing.
@@ -931,7 +962,12 @@
         # 
         # When the protocol is UDP, this field is not used.
     "creationTimestamp": "A String", # [Output Only] Creation timestamp in RFC3339 text format.
-    "id": "A String", # [Output Only] The unique identifier for the resource. This identifier is defined by the server.
+    "iap": { # Identity-Aware Proxy (Cloud Gatekeeper)
+      "oauth2ClientId": "A String",
+      "enabled": True or False,
+      "oauth2ClientSecret": "A String",
+      "oauth2ClientSecretSha256": "A String",
+    },
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
     "name": "A String", # Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression [a-z]([-a-z0-9]*[a-z0-9])? which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.
   }
@@ -983,7 +1019,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
diff --git a/docs/dyn/compute_beta.diskTypes.html b/docs/dyn/compute_beta.diskTypes.html
index d9dcd1f..d720f4c 100644
--- a/docs/dyn/compute_beta.diskTypes.html
+++ b/docs/dyn/compute_beta.diskTypes.html
@@ -138,10 +138,10 @@
             "zone": "A String", # [Output Only] URL of the zone where the disk type resides.
             "validDiskSize": "A String", # [Output Only] An optional textual description of the valid disk size, such as "10GB-10TB".
             "deprecated": { # Deprecation status for a public resource. # [Output Only] The deprecation status associated with this disk type.
-              "deleted": "A String", # An optional RFC3339 timestamp on or after which the deprecation state of this resource will be changed to DELETED.
-              "deprecated": "A String", # An optional RFC3339 timestamp on or after which the deprecation state of this resource will be changed to DEPRECATED.
+              "deleted": "A String", # An optional RFC3339 timestamp on or after which the state of this resource is intended to change to DELETED. This is only informational and the status will not change unless the client explicitly changes it.
+              "deprecated": "A String", # An optional RFC3339 timestamp on or after which the state of this resource is intended to change to DEPRECATED. This is only informational and the status will not change unless the client explicitly changes it.
               "state": "A String", # The deprecation state of this resource. This can be DEPRECATED, OBSOLETE, or DELETED. Operations which create a new resource using a DEPRECATED resource will return successfully, but with a warning indicating the deprecated resource and recommending its replacement. Operations which use OBSOLETE or DELETED resources will be rejected and result in an error.
-              "obsolete": "A String", # An optional RFC3339 timestamp on or after which the deprecation state of this resource will be changed to OBSOLETE.
+              "obsolete": "A String", # An optional RFC3339 timestamp on or after which the state of this resource is intended to change to OBSOLETE. This is only informational and the status will not change unless the client explicitly changes it.
               "replacement": "A String", # The URL of the suggested replacement for a deprecated resource. The suggested replacement resource must be the same kind of resource as the deprecated resource.
             },
             "defaultDiskSizeGb": "A String", # [Output Only] Server-defined default disk size in GB.
@@ -191,10 +191,10 @@
     "zone": "A String", # [Output Only] URL of the zone where the disk type resides.
     "validDiskSize": "A String", # [Output Only] An optional textual description of the valid disk size, such as "10GB-10TB".
     "deprecated": { # Deprecation status for a public resource. # [Output Only] The deprecation status associated with this disk type.
-      "deleted": "A String", # An optional RFC3339 timestamp on or after which the deprecation state of this resource will be changed to DELETED.
-      "deprecated": "A String", # An optional RFC3339 timestamp on or after which the deprecation state of this resource will be changed to DEPRECATED.
+      "deleted": "A String", # An optional RFC3339 timestamp on or after which the state of this resource is intended to change to DELETED. This is only informational and the status will not change unless the client explicitly changes it.
+      "deprecated": "A String", # An optional RFC3339 timestamp on or after which the state of this resource is intended to change to DEPRECATED. This is only informational and the status will not change unless the client explicitly changes it.
       "state": "A String", # The deprecation state of this resource. This can be DEPRECATED, OBSOLETE, or DELETED. Operations which create a new resource using a DEPRECATED resource will return successfully, but with a warning indicating the deprecated resource and recommending its replacement. Operations which use OBSOLETE or DELETED resources will be rejected and result in an error.
-      "obsolete": "A String", # An optional RFC3339 timestamp on or after which the deprecation state of this resource will be changed to OBSOLETE.
+      "obsolete": "A String", # An optional RFC3339 timestamp on or after which the state of this resource is intended to change to OBSOLETE. This is only informational and the status will not change unless the client explicitly changes it.
       "replacement": "A String", # The URL of the suggested replacement for a deprecated resource. The suggested replacement resource must be the same kind of resource as the deprecated resource.
     },
     "defaultDiskSizeGb": "A String", # [Output Only] Server-defined default disk size in GB.
@@ -241,10 +241,10 @@
         "zone": "A String", # [Output Only] URL of the zone where the disk type resides.
         "validDiskSize": "A String", # [Output Only] An optional textual description of the valid disk size, such as "10GB-10TB".
         "deprecated": { # Deprecation status for a public resource. # [Output Only] The deprecation status associated with this disk type.
-          "deleted": "A String", # An optional RFC3339 timestamp on or after which the deprecation state of this resource will be changed to DELETED.
-          "deprecated": "A String", # An optional RFC3339 timestamp on or after which the deprecation state of this resource will be changed to DEPRECATED.
+          "deleted": "A String", # An optional RFC3339 timestamp on or after which the state of this resource is intended to change to DELETED. This is only informational and the status will not change unless the client explicitly changes it.
+          "deprecated": "A String", # An optional RFC3339 timestamp on or after which the state of this resource is intended to change to DEPRECATED. This is only informational and the status will not change unless the client explicitly changes it.
           "state": "A String", # The deprecation state of this resource. This can be DEPRECATED, OBSOLETE, or DELETED. Operations which create a new resource using a DEPRECATED resource will return successfully, but with a warning indicating the deprecated resource and recommending its replacement. Operations which use OBSOLETE or DELETED resources will be rejected and result in an error.
-          "obsolete": "A String", # An optional RFC3339 timestamp on or after which the deprecation state of this resource will be changed to OBSOLETE.
+          "obsolete": "A String", # An optional RFC3339 timestamp on or after which the state of this resource is intended to change to OBSOLETE. This is only informational and the status will not change unless the client explicitly changes it.
           "replacement": "A String", # The URL of the suggested replacement for a deprecated resource. The suggested replacement resource must be the same kind of resource as the deprecated resource.
         },
         "defaultDiskSizeGb": "A String", # [Output Only] Server-defined default disk size in GB.
diff --git a/docs/dyn/compute_beta.disks.html b/docs/dyn/compute_beta.disks.html
index f4b58b6..a81f87b 100644
--- a/docs/dyn/compute_beta.disks.html
+++ b/docs/dyn/compute_beta.disks.html
@@ -371,7 +371,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
@@ -430,7 +430,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
@@ -685,7 +685,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
@@ -891,7 +891,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
@@ -960,7 +960,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
diff --git a/docs/dyn/compute_beta.firewalls.html b/docs/dyn/compute_beta.firewalls.html
index 5a71457..f073024 100644
--- a/docs/dyn/compute_beta.firewalls.html
+++ b/docs/dyn/compute_beta.firewalls.html
@@ -153,7 +153,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
@@ -293,7 +293,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
@@ -471,7 +471,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
@@ -593,7 +593,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
diff --git a/docs/dyn/compute_beta.forwardingRules.html b/docs/dyn/compute_beta.forwardingRules.html
index efbd737..152f94c 100644
--- a/docs/dyn/compute_beta.forwardingRules.html
+++ b/docs/dyn/compute_beta.forwardingRules.html
@@ -264,7 +264,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
@@ -424,7 +424,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
@@ -583,7 +583,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
diff --git a/docs/dyn/compute_beta.globalAddresses.html b/docs/dyn/compute_beta.globalAddresses.html
index 8302599..92f4ba7 100644
--- a/docs/dyn/compute_beta.globalAddresses.html
+++ b/docs/dyn/compute_beta.globalAddresses.html
@@ -147,7 +147,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
@@ -249,7 +249,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
diff --git a/docs/dyn/compute_beta.globalForwardingRules.html b/docs/dyn/compute_beta.globalForwardingRules.html
index d8b3670..9f2ca84 100644
--- a/docs/dyn/compute_beta.globalForwardingRules.html
+++ b/docs/dyn/compute_beta.globalForwardingRules.html
@@ -150,7 +150,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
@@ -308,7 +308,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
@@ -465,7 +465,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
diff --git a/docs/dyn/compute_beta.globalOperations.html b/docs/dyn/compute_beta.globalOperations.html
index 8983a9d..0655a21 100644
--- a/docs/dyn/compute_beta.globalOperations.html
+++ b/docs/dyn/compute_beta.globalOperations.html
@@ -167,7 +167,7 @@
             },
             "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
             "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-            "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+            "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
           },
         ],
         "warning": { # [Output Only] Informational warning which replaces the list of operations when the list is empty.
@@ -267,7 +267,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
@@ -343,7 +343,7 @@
         },
         "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
         "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-        "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+        "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
       },
     ],
     "kind": "compute#operationList", # [Output Only] Type of resource. Always compute#operations for Operations resource.
diff --git a/docs/dyn/compute_beta.healthChecks.html b/docs/dyn/compute_beta.healthChecks.html
index 58ecb90..ca4fc9f 100644
--- a/docs/dyn/compute_beta.healthChecks.html
+++ b/docs/dyn/compute_beta.healthChecks.html
@@ -153,7 +153,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
@@ -170,9 +170,15 @@
 
     { # An HealthCheck resource. This resource defines a template for how individual virtual machines should be checked for health, via one of the supported protocols.
       "kind": "compute#healthCheck", # Type of the resource.
+      "udpHealthCheck": {
+        "portName": "A String", # Port name as defined in InstanceGroup#NamedPort#name. If both port and port_name are defined, port takes precedence.
+        "request": "A String", # Raw data of request to send in payload of UDP packet. It is an error if this is empty. The request data can only be ASCII.
+        "port": 42, # The UDP port number for the health check request.
+        "response": "A String", # The bytes to match against the beginning of the response data. It is an error if this is empty. The response data can only be ASCII.
+      },
       "description": "A String", # An optional description of this resource. Provide this property when you create the resource.
       "timeoutSec": 42, # How long (in seconds) to wait before claiming failure. The default value is 5 seconds. It is invalid for timeoutSec to have greater value than checkIntervalSec.
-      "type": "A String", # Specifies the type of the healthCheck, either TCP, UDP, SSL, HTTP, HTTPS or HTTP2. If not specified, the default is TCP. Exactly one of the protocol-specific health check field must be specified, which must match type field.
+      "type": "A String", # Specifies the type of the healthCheck, either TCP, SSL, HTTP or HTTPS. If not specified, the default is TCP. Exactly one of the protocol-specific health check field must be specified, which must match type field.
       "checkIntervalSec": 42, # How often (in seconds) to send a health check. The default value is 5 seconds.
       "tcpHealthCheck": {
         "portName": "A String", # Port name as defined in InstanceGroup#NamedPort#name. If both port and port_name are defined, port takes precedence.
@@ -196,13 +202,6 @@
         "requestPath": "A String", # The request path of the HTTPS health check request. The default value is /.
       },
       "healthyThreshold": 42, # A so-far unhealthy instance will be marked healthy after this many consecutive successes. The default value is 2.
-      "http2HealthCheck": {
-        "portName": "A String", # Port name as defined in InstanceGroup#NamedPort#name. If both port and port_name are defined, port takes precedence.
-        "host": "A String", # The value of the host header in the HTTP/2 health check request. If left empty (default value), the IP on behalf of which this health check is performed will be used.
-        "proxyHeader": "A String", # Specifies the type of proxy header to append before sending data to the backend, either NONE or PROXY_V1. The default is NONE.
-        "port": 42, # The TCP port number for the health check request. The default value is 443.
-        "requestPath": "A String", # The request path of the HTTP/2 health check request. The default value is /.
-      },
       "unhealthyThreshold": 42, # A so-far healthy instance will be marked unhealthy after this many consecutive failures. The default value is 2.
       "sslHealthCheck": {
         "portName": "A String", # Port name as defined in InstanceGroup#NamedPort#name. If both port and port_name are defined, port takes precedence.
@@ -229,9 +228,15 @@
 
 { # An HealthCheck resource. This resource defines a template for how individual virtual machines should be checked for health, via one of the supported protocols.
     "kind": "compute#healthCheck", # Type of the resource.
+    "udpHealthCheck": {
+      "portName": "A String", # Port name as defined in InstanceGroup#NamedPort#name. If both port and port_name are defined, port takes precedence.
+      "request": "A String", # Raw data of request to send in payload of UDP packet. It is an error if this is empty. The request data can only be ASCII.
+      "port": 42, # The UDP port number for the health check request.
+      "response": "A String", # The bytes to match against the beginning of the response data. It is an error if this is empty. The response data can only be ASCII.
+    },
     "description": "A String", # An optional description of this resource. Provide this property when you create the resource.
     "timeoutSec": 42, # How long (in seconds) to wait before claiming failure. The default value is 5 seconds. It is invalid for timeoutSec to have greater value than checkIntervalSec.
-    "type": "A String", # Specifies the type of the healthCheck, either TCP, UDP, SSL, HTTP, HTTPS or HTTP2. If not specified, the default is TCP. Exactly one of the protocol-specific health check field must be specified, which must match type field.
+    "type": "A String", # Specifies the type of the healthCheck, either TCP, SSL, HTTP or HTTPS. If not specified, the default is TCP. Exactly one of the protocol-specific health check field must be specified, which must match type field.
     "checkIntervalSec": 42, # How often (in seconds) to send a health check. The default value is 5 seconds.
     "tcpHealthCheck": {
       "portName": "A String", # Port name as defined in InstanceGroup#NamedPort#name. If both port and port_name are defined, port takes precedence.
@@ -255,13 +260,6 @@
       "requestPath": "A String", # The request path of the HTTPS health check request. The default value is /.
     },
     "healthyThreshold": 42, # A so-far unhealthy instance will be marked healthy after this many consecutive successes. The default value is 2.
-    "http2HealthCheck": {
-      "portName": "A String", # Port name as defined in InstanceGroup#NamedPort#name. If both port and port_name are defined, port takes precedence.
-      "host": "A String", # The value of the host header in the HTTP/2 health check request. If left empty (default value), the IP on behalf of which this health check is performed will be used.
-      "proxyHeader": "A String", # Specifies the type of proxy header to append before sending data to the backend, either NONE or PROXY_V1. The default is NONE.
-      "port": 42, # The TCP port number for the health check request. The default value is 443.
-      "requestPath": "A String", # The request path of the HTTP/2 health check request. The default value is /.
-    },
     "unhealthyThreshold": 42, # A so-far healthy instance will be marked unhealthy after this many consecutive failures. The default value is 2.
     "sslHealthCheck": {
       "portName": "A String", # Port name as defined in InstanceGroup#NamedPort#name. If both port and port_name are defined, port takes precedence.
@@ -323,7 +321,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
@@ -358,9 +356,15 @@
     "items": [ # A list of HealthCheck resources.
       { # An HealthCheck resource. This resource defines a template for how individual virtual machines should be checked for health, via one of the supported protocols.
           "kind": "compute#healthCheck", # Type of the resource.
+          "udpHealthCheck": {
+            "portName": "A String", # Port name as defined in InstanceGroup#NamedPort#name. If both port and port_name are defined, port takes precedence.
+            "request": "A String", # Raw data of request to send in payload of UDP packet. It is an error if this is empty. The request data can only be ASCII.
+            "port": 42, # The UDP port number for the health check request.
+            "response": "A String", # The bytes to match against the beginning of the response data. It is an error if this is empty. The response data can only be ASCII.
+          },
           "description": "A String", # An optional description of this resource. Provide this property when you create the resource.
           "timeoutSec": 42, # How long (in seconds) to wait before claiming failure. The default value is 5 seconds. It is invalid for timeoutSec to have greater value than checkIntervalSec.
-          "type": "A String", # Specifies the type of the healthCheck, either TCP, UDP, SSL, HTTP, HTTPS or HTTP2. If not specified, the default is TCP. Exactly one of the protocol-specific health check field must be specified, which must match type field.
+          "type": "A String", # Specifies the type of the healthCheck, either TCP, SSL, HTTP or HTTPS. If not specified, the default is TCP. Exactly one of the protocol-specific health check field must be specified, which must match type field.
           "checkIntervalSec": 42, # How often (in seconds) to send a health check. The default value is 5 seconds.
           "tcpHealthCheck": {
             "portName": "A String", # Port name as defined in InstanceGroup#NamedPort#name. If both port and port_name are defined, port takes precedence.
@@ -384,13 +388,6 @@
             "requestPath": "A String", # The request path of the HTTPS health check request. The default value is /.
           },
           "healthyThreshold": 42, # A so-far unhealthy instance will be marked healthy after this many consecutive successes. The default value is 2.
-          "http2HealthCheck": {
-            "portName": "A String", # Port name as defined in InstanceGroup#NamedPort#name. If both port and port_name are defined, port takes precedence.
-            "host": "A String", # The value of the host header in the HTTP/2 health check request. If left empty (default value), the IP on behalf of which this health check is performed will be used.
-            "proxyHeader": "A String", # Specifies the type of proxy header to append before sending data to the backend, either NONE or PROXY_V1. The default is NONE.
-            "port": 42, # The TCP port number for the health check request. The default value is 443.
-            "requestPath": "A String", # The request path of the HTTP/2 health check request. The default value is /.
-          },
           "unhealthyThreshold": 42, # A so-far healthy instance will be marked unhealthy after this many consecutive failures. The default value is 2.
           "sslHealthCheck": {
             "portName": "A String", # Port name as defined in InstanceGroup#NamedPort#name. If both port and port_name are defined, port takes precedence.
@@ -437,9 +434,15 @@
 
 { # An HealthCheck resource. This resource defines a template for how individual virtual machines should be checked for health, via one of the supported protocols.
     "kind": "compute#healthCheck", # Type of the resource.
+    "udpHealthCheck": {
+      "portName": "A String", # Port name as defined in InstanceGroup#NamedPort#name. If both port and port_name are defined, port takes precedence.
+      "request": "A String", # Raw data of request to send in payload of UDP packet. It is an error if this is empty. The request data can only be ASCII.
+      "port": 42, # The UDP port number for the health check request.
+      "response": "A String", # The bytes to match against the beginning of the response data. It is an error if this is empty. The response data can only be ASCII.
+    },
     "description": "A String", # An optional description of this resource. Provide this property when you create the resource.
     "timeoutSec": 42, # How long (in seconds) to wait before claiming failure. The default value is 5 seconds. It is invalid for timeoutSec to have greater value than checkIntervalSec.
-    "type": "A String", # Specifies the type of the healthCheck, either TCP, UDP, SSL, HTTP, HTTPS or HTTP2. If not specified, the default is TCP. Exactly one of the protocol-specific health check field must be specified, which must match type field.
+    "type": "A String", # Specifies the type of the healthCheck, either TCP, SSL, HTTP or HTTPS. If not specified, the default is TCP. Exactly one of the protocol-specific health check field must be specified, which must match type field.
     "checkIntervalSec": 42, # How often (in seconds) to send a health check. The default value is 5 seconds.
     "tcpHealthCheck": {
       "portName": "A String", # Port name as defined in InstanceGroup#NamedPort#name. If both port and port_name are defined, port takes precedence.
@@ -463,13 +466,6 @@
       "requestPath": "A String", # The request path of the HTTPS health check request. The default value is /.
     },
     "healthyThreshold": 42, # A so-far unhealthy instance will be marked healthy after this many consecutive successes. The default value is 2.
-    "http2HealthCheck": {
-      "portName": "A String", # Port name as defined in InstanceGroup#NamedPort#name. If both port and port_name are defined, port takes precedence.
-      "host": "A String", # The value of the host header in the HTTP/2 health check request. If left empty (default value), the IP on behalf of which this health check is performed will be used.
-      "proxyHeader": "A String", # Specifies the type of proxy header to append before sending data to the backend, either NONE or PROXY_V1. The default is NONE.
-      "port": 42, # The TCP port number for the health check request. The default value is 443.
-      "requestPath": "A String", # The request path of the HTTP/2 health check request. The default value is /.
-    },
     "unhealthyThreshold": 42, # A so-far healthy instance will be marked unhealthy after this many consecutive failures. The default value is 2.
     "sslHealthCheck": {
       "portName": "A String", # Port name as defined in InstanceGroup#NamedPort#name. If both port and port_name are defined, port takes precedence.
@@ -531,7 +527,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
@@ -574,9 +570,15 @@
 
 { # An HealthCheck resource. This resource defines a template for how individual virtual machines should be checked for health, via one of the supported protocols.
     "kind": "compute#healthCheck", # Type of the resource.
+    "udpHealthCheck": {
+      "portName": "A String", # Port name as defined in InstanceGroup#NamedPort#name. If both port and port_name are defined, port takes precedence.
+      "request": "A String", # Raw data of request to send in payload of UDP packet. It is an error if this is empty. The request data can only be ASCII.
+      "port": 42, # The UDP port number for the health check request.
+      "response": "A String", # The bytes to match against the beginning of the response data. It is an error if this is empty. The response data can only be ASCII.
+    },
     "description": "A String", # An optional description of this resource. Provide this property when you create the resource.
     "timeoutSec": 42, # How long (in seconds) to wait before claiming failure. The default value is 5 seconds. It is invalid for timeoutSec to have greater value than checkIntervalSec.
-    "type": "A String", # Specifies the type of the healthCheck, either TCP, UDP, SSL, HTTP, HTTPS or HTTP2. If not specified, the default is TCP. Exactly one of the protocol-specific health check field must be specified, which must match type field.
+    "type": "A String", # Specifies the type of the healthCheck, either TCP, SSL, HTTP or HTTPS. If not specified, the default is TCP. Exactly one of the protocol-specific health check field must be specified, which must match type field.
     "checkIntervalSec": 42, # How often (in seconds) to send a health check. The default value is 5 seconds.
     "tcpHealthCheck": {
       "portName": "A String", # Port name as defined in InstanceGroup#NamedPort#name. If both port and port_name are defined, port takes precedence.
@@ -600,13 +602,6 @@
       "requestPath": "A String", # The request path of the HTTPS health check request. The default value is /.
     },
     "healthyThreshold": 42, # A so-far unhealthy instance will be marked healthy after this many consecutive successes. The default value is 2.
-    "http2HealthCheck": {
-      "portName": "A String", # Port name as defined in InstanceGroup#NamedPort#name. If both port and port_name are defined, port takes precedence.
-      "host": "A String", # The value of the host header in the HTTP/2 health check request. If left empty (default value), the IP on behalf of which this health check is performed will be used.
-      "proxyHeader": "A String", # Specifies the type of proxy header to append before sending data to the backend, either NONE or PROXY_V1. The default is NONE.
-      "port": 42, # The TCP port number for the health check request. The default value is 443.
-      "requestPath": "A String", # The request path of the HTTP/2 health check request. The default value is /.
-    },
     "unhealthyThreshold": 42, # A so-far healthy instance will be marked unhealthy after this many consecutive failures. The default value is 2.
     "sslHealthCheck": {
       "portName": "A String", # Port name as defined in InstanceGroup#NamedPort#name. If both port and port_name are defined, port takes precedence.
@@ -668,7 +663,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
diff --git a/docs/dyn/compute_beta.html b/docs/dyn/compute_beta.html
index 025623f..00a78a4 100644
--- a/docs/dyn/compute_beta.html
+++ b/docs/dyn/compute_beta.html
@@ -85,6 +85,11 @@
 <p class="firstline">Returns the autoscalers Resource.</p>
 
 <p class="toc_element">
+  <code><a href="compute_beta.backendBuckets.html">backendBuckets()</a></code>
+</p>
+<p class="firstline">Returns the backendBuckets Resource.</p>
+
+<p class="toc_element">
   <code><a href="compute_beta.backendServices.html">backendServices()</a></code>
 </p>
 <p class="firstline">Returns the backendServices Resource.</p>
diff --git a/docs/dyn/compute_beta.httpHealthChecks.html b/docs/dyn/compute_beta.httpHealthChecks.html
index 22298ff..32ac2f3 100644
--- a/docs/dyn/compute_beta.httpHealthChecks.html
+++ b/docs/dyn/compute_beta.httpHealthChecks.html
@@ -153,7 +153,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
@@ -257,7 +257,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
@@ -399,7 +399,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
@@ -503,7 +503,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
diff --git a/docs/dyn/compute_beta.httpsHealthChecks.html b/docs/dyn/compute_beta.httpsHealthChecks.html
index 47edcb7..87cae5f 100644
--- a/docs/dyn/compute_beta.httpsHealthChecks.html
+++ b/docs/dyn/compute_beta.httpsHealthChecks.html
@@ -153,7 +153,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
@@ -257,7 +257,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
@@ -399,7 +399,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
@@ -503,7 +503,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
diff --git a/docs/dyn/compute_beta.images.html b/docs/dyn/compute_beta.images.html
index f2c5997..1f3efe3 100644
--- a/docs/dyn/compute_beta.images.html
+++ b/docs/dyn/compute_beta.images.html
@@ -156,7 +156,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
@@ -173,10 +173,10 @@
     The object takes the form of:
 
 { # Deprecation status for a public resource.
-  "deleted": "A String", # An optional RFC3339 timestamp on or after which the deprecation state of this resource will be changed to DELETED.
-  "deprecated": "A String", # An optional RFC3339 timestamp on or after which the deprecation state of this resource will be changed to DEPRECATED.
+  "deleted": "A String", # An optional RFC3339 timestamp on or after which the state of this resource is intended to change to DELETED. This is only informational and the status will not change unless the client explicitly changes it.
+  "deprecated": "A String", # An optional RFC3339 timestamp on or after which the state of this resource is intended to change to DEPRECATED. This is only informational and the status will not change unless the client explicitly changes it.
   "state": "A String", # The deprecation state of this resource. This can be DEPRECATED, OBSOLETE, or DELETED. Operations which create a new resource using a DEPRECATED resource will return successfully, but with a warning indicating the deprecated resource and recommending its replacement. Operations which use OBSOLETE or DELETED resources will be rejected and result in an error.
-  "obsolete": "A String", # An optional RFC3339 timestamp on or after which the deprecation state of this resource will be changed to OBSOLETE.
+  "obsolete": "A String", # An optional RFC3339 timestamp on or after which the state of this resource is intended to change to OBSOLETE. This is only informational and the status will not change unless the client explicitly changes it.
   "replacement": "A String", # The URL of the suggested replacement for a deprecated resource. The suggested replacement resource must be the same kind of resource as the deprecated resource.
 }
 
@@ -227,7 +227,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
@@ -243,7 +243,7 @@
   An object of the form:
 
     { # An Image resource.
-      "sourceDisk": "A String", # URL of the The source disk used to create this image. This can be a full or valid partial URL. You must provide either this property or the rawDisk.source property but not both to create an image. For example, the following are valid values:
+      "sourceDisk": "A String", # URL of the source disk used to create this image. This can be a full or valid partial URL. You must provide either this property or the rawDisk.source property but not both to create an image. For example, the following are valid values:
           # - https://www.googleapis.com/compute/v1/projects/project/zones/zone/disks/disk
           # - projects/project/zones/zone/disks/disk
           # - zones/zone/disks/disk
@@ -262,10 +262,10 @@
       "description": "A String", # An optional description of this resource. Provide this property when you create the resource.
       "family": "A String", # The name of the image family to which this image belongs. You can create disks by specifying an image family instead of a specific image name. The image family always returns its latest image that is not deprecated. The name of the image family must comply with RFC1035.
       "deprecated": { # Deprecation status for a public resource. # The deprecation status associated with this image.
-        "deleted": "A String", # An optional RFC3339 timestamp on or after which the deprecation state of this resource will be changed to DELETED.
-        "deprecated": "A String", # An optional RFC3339 timestamp on or after which the deprecation state of this resource will be changed to DEPRECATED.
+        "deleted": "A String", # An optional RFC3339 timestamp on or after which the state of this resource is intended to change to DELETED. This is only informational and the status will not change unless the client explicitly changes it.
+        "deprecated": "A String", # An optional RFC3339 timestamp on or after which the state of this resource is intended to change to DEPRECATED. This is only informational and the status will not change unless the client explicitly changes it.
         "state": "A String", # The deprecation state of this resource. This can be DEPRECATED, OBSOLETE, or DELETED. Operations which create a new resource using a DEPRECATED resource will return successfully, but with a warning indicating the deprecated resource and recommending its replacement. Operations which use OBSOLETE or DELETED resources will be rejected and result in an error.
-        "obsolete": "A String", # An optional RFC3339 timestamp on or after which the deprecation state of this resource will be changed to OBSOLETE.
+        "obsolete": "A String", # An optional RFC3339 timestamp on or after which the state of this resource is intended to change to OBSOLETE. This is only informational and the status will not change unless the client explicitly changes it.
         "replacement": "A String", # The URL of the suggested replacement for a deprecated resource. The suggested replacement resource must be the same kind of resource as the deprecated resource.
       },
       "labelFingerprint": "A String", # A fingerprint for the labels being applied to this image, which is essentially a hash of the labels used for optimistic locking. The fingerprint is initially generated by Compute Engine and changes after every request to modify or update labels. You must always provide an up-to-date fingerprint hash in order to update or change labels.
@@ -276,9 +276,11 @@
       },
       "archiveSizeBytes": "A String", # Size of the image tar.gz archive stored in Google Cloud Storage (in bytes).
       "sourceDiskId": "A String", # The ID value of the disk used to create this image. This value may be used to determine whether the image was taken from the current or a previous instance of a given disk name.
-      "guestOsFeatures": [ # A list of features to enable on the guest OS. Applicable for bootable images only. Currently, only one feature is supported, VIRTIO_SCSCI_MULTIQUEUE, which allows each virtual CPU to have its own queue. For Windows images, you can only enable VIRTIO_SCSCI_MULTIQUEUE on images with driver version 1.2.0.1621 or higher. Linux images with kernel versions 3.17 and higher will support VIRTIO_SCSCI_MULTIQUEUE.
+      "guestOsFeatures": [ # A list of features to enable on the guest OS. Applicable for bootable images only. Currently, only one feature can be enabled, VIRTIO_SCSCI_MULTIQUEUE, which allows each virtual CPU to have its own queue. For Windows images, you can only enable VIRTIO_SCSCI_MULTIQUEUE on images with driver version 1.2.0.1621 or higher. Linux images with kernel versions 3.17 and higher will support VIRTIO_SCSCI_MULTIQUEUE.
+          #
+          # For new Windows images, the server might also populate this field with the value WINDOWS, to indicate that this is a Windows image. This value is purely informational and does not enable or disable any features.
         { # Guest OS features.
-          "type": "A String", # The type of supported feature. Currenty only VIRTIO_SCSI_MULTIQUEUE is supported.
+          "type": "A String", # The type of supported feature. Currenty only VIRTIO_SCSI_MULTIQUEUE is supported. For newer Windows images, the server might also populate this property with the value WINDOWS to indicate that this is a Windows image. This value is purely informational and does not enable or disable any features.
         },
       ],
       "diskSizeGb": "A String", # Size of the image when restored onto a persistent disk (in GB).
@@ -326,7 +328,7 @@
   An object of the form:
 
     { # An Image resource.
-      "sourceDisk": "A String", # URL of the The source disk used to create this image. This can be a full or valid partial URL. You must provide either this property or the rawDisk.source property but not both to create an image. For example, the following are valid values:
+      "sourceDisk": "A String", # URL of the source disk used to create this image. This can be a full or valid partial URL. You must provide either this property or the rawDisk.source property but not both to create an image. For example, the following are valid values:
           # - https://www.googleapis.com/compute/v1/projects/project/zones/zone/disks/disk
           # - projects/project/zones/zone/disks/disk
           # - zones/zone/disks/disk
@@ -345,10 +347,10 @@
       "description": "A String", # An optional description of this resource. Provide this property when you create the resource.
       "family": "A String", # The name of the image family to which this image belongs. You can create disks by specifying an image family instead of a specific image name. The image family always returns its latest image that is not deprecated. The name of the image family must comply with RFC1035.
       "deprecated": { # Deprecation status for a public resource. # The deprecation status associated with this image.
-        "deleted": "A String", # An optional RFC3339 timestamp on or after which the deprecation state of this resource will be changed to DELETED.
-        "deprecated": "A String", # An optional RFC3339 timestamp on or after which the deprecation state of this resource will be changed to DEPRECATED.
+        "deleted": "A String", # An optional RFC3339 timestamp on or after which the state of this resource is intended to change to DELETED. This is only informational and the status will not change unless the client explicitly changes it.
+        "deprecated": "A String", # An optional RFC3339 timestamp on or after which the state of this resource is intended to change to DEPRECATED. This is only informational and the status will not change unless the client explicitly changes it.
         "state": "A String", # The deprecation state of this resource. This can be DEPRECATED, OBSOLETE, or DELETED. Operations which create a new resource using a DEPRECATED resource will return successfully, but with a warning indicating the deprecated resource and recommending its replacement. Operations which use OBSOLETE or DELETED resources will be rejected and result in an error.
-        "obsolete": "A String", # An optional RFC3339 timestamp on or after which the deprecation state of this resource will be changed to OBSOLETE.
+        "obsolete": "A String", # An optional RFC3339 timestamp on or after which the state of this resource is intended to change to OBSOLETE. This is only informational and the status will not change unless the client explicitly changes it.
         "replacement": "A String", # The URL of the suggested replacement for a deprecated resource. The suggested replacement resource must be the same kind of resource as the deprecated resource.
       },
       "labelFingerprint": "A String", # A fingerprint for the labels being applied to this image, which is essentially a hash of the labels used for optimistic locking. The fingerprint is initially generated by Compute Engine and changes after every request to modify or update labels. You must always provide an up-to-date fingerprint hash in order to update or change labels.
@@ -359,9 +361,11 @@
       },
       "archiveSizeBytes": "A String", # Size of the image tar.gz archive stored in Google Cloud Storage (in bytes).
       "sourceDiskId": "A String", # The ID value of the disk used to create this image. This value may be used to determine whether the image was taken from the current or a previous instance of a given disk name.
-      "guestOsFeatures": [ # A list of features to enable on the guest OS. Applicable for bootable images only. Currently, only one feature is supported, VIRTIO_SCSCI_MULTIQUEUE, which allows each virtual CPU to have its own queue. For Windows images, you can only enable VIRTIO_SCSCI_MULTIQUEUE on images with driver version 1.2.0.1621 or higher. Linux images with kernel versions 3.17 and higher will support VIRTIO_SCSCI_MULTIQUEUE.
+      "guestOsFeatures": [ # A list of features to enable on the guest OS. Applicable for bootable images only. Currently, only one feature can be enabled, VIRTIO_SCSCI_MULTIQUEUE, which allows each virtual CPU to have its own queue. For Windows images, you can only enable VIRTIO_SCSCI_MULTIQUEUE on images with driver version 1.2.0.1621 or higher. Linux images with kernel versions 3.17 and higher will support VIRTIO_SCSCI_MULTIQUEUE.
+          #
+          # For new Windows images, the server might also populate this field with the value WINDOWS, to indicate that this is a Windows image. This value is purely informational and does not enable or disable any features.
         { # Guest OS features.
-          "type": "A String", # The type of supported feature. Currenty only VIRTIO_SCSI_MULTIQUEUE is supported.
+          "type": "A String", # The type of supported feature. Currenty only VIRTIO_SCSI_MULTIQUEUE is supported. For newer Windows images, the server might also populate this property with the value WINDOWS to indicate that this is a Windows image. This value is purely informational and does not enable or disable any features.
         },
       ],
       "diskSizeGb": "A String", # Size of the image when restored onto a persistent disk (in GB).
@@ -407,7 +411,7 @@
     The object takes the form of:
 
 { # An Image resource.
-    "sourceDisk": "A String", # URL of the The source disk used to create this image. This can be a full or valid partial URL. You must provide either this property or the rawDisk.source property but not both to create an image. For example, the following are valid values:
+    "sourceDisk": "A String", # URL of the source disk used to create this image. This can be a full or valid partial URL. You must provide either this property or the rawDisk.source property but not both to create an image. For example, the following are valid values:
         # - https://www.googleapis.com/compute/v1/projects/project/zones/zone/disks/disk
         # - projects/project/zones/zone/disks/disk
         # - zones/zone/disks/disk
@@ -426,10 +430,10 @@
     "description": "A String", # An optional description of this resource. Provide this property when you create the resource.
     "family": "A String", # The name of the image family to which this image belongs. You can create disks by specifying an image family instead of a specific image name. The image family always returns its latest image that is not deprecated. The name of the image family must comply with RFC1035.
     "deprecated": { # Deprecation status for a public resource. # The deprecation status associated with this image.
-      "deleted": "A String", # An optional RFC3339 timestamp on or after which the deprecation state of this resource will be changed to DELETED.
-      "deprecated": "A String", # An optional RFC3339 timestamp on or after which the deprecation state of this resource will be changed to DEPRECATED.
+      "deleted": "A String", # An optional RFC3339 timestamp on or after which the state of this resource is intended to change to DELETED. This is only informational and the status will not change unless the client explicitly changes it.
+      "deprecated": "A String", # An optional RFC3339 timestamp on or after which the state of this resource is intended to change to DEPRECATED. This is only informational and the status will not change unless the client explicitly changes it.
       "state": "A String", # The deprecation state of this resource. This can be DEPRECATED, OBSOLETE, or DELETED. Operations which create a new resource using a DEPRECATED resource will return successfully, but with a warning indicating the deprecated resource and recommending its replacement. Operations which use OBSOLETE or DELETED resources will be rejected and result in an error.
-      "obsolete": "A String", # An optional RFC3339 timestamp on or after which the deprecation state of this resource will be changed to OBSOLETE.
+      "obsolete": "A String", # An optional RFC3339 timestamp on or after which the state of this resource is intended to change to OBSOLETE. This is only informational and the status will not change unless the client explicitly changes it.
       "replacement": "A String", # The URL of the suggested replacement for a deprecated resource. The suggested replacement resource must be the same kind of resource as the deprecated resource.
     },
     "labelFingerprint": "A String", # A fingerprint for the labels being applied to this image, which is essentially a hash of the labels used for optimistic locking. The fingerprint is initially generated by Compute Engine and changes after every request to modify or update labels. You must always provide an up-to-date fingerprint hash in order to update or change labels.
@@ -440,9 +444,11 @@
     },
     "archiveSizeBytes": "A String", # Size of the image tar.gz archive stored in Google Cloud Storage (in bytes).
     "sourceDiskId": "A String", # The ID value of the disk used to create this image. This value may be used to determine whether the image was taken from the current or a previous instance of a given disk name.
-    "guestOsFeatures": [ # A list of features to enable on the guest OS. Applicable for bootable images only. Currently, only one feature is supported, VIRTIO_SCSCI_MULTIQUEUE, which allows each virtual CPU to have its own queue. For Windows images, you can only enable VIRTIO_SCSCI_MULTIQUEUE on images with driver version 1.2.0.1621 or higher. Linux images with kernel versions 3.17 and higher will support VIRTIO_SCSCI_MULTIQUEUE.
+    "guestOsFeatures": [ # A list of features to enable on the guest OS. Applicable for bootable images only. Currently, only one feature can be enabled, VIRTIO_SCSCI_MULTIQUEUE, which allows each virtual CPU to have its own queue. For Windows images, you can only enable VIRTIO_SCSCI_MULTIQUEUE on images with driver version 1.2.0.1621 or higher. Linux images with kernel versions 3.17 and higher will support VIRTIO_SCSCI_MULTIQUEUE.
+        # 
+        # For new Windows images, the server might also populate this field with the value WINDOWS, to indicate that this is a Windows image. This value is purely informational and does not enable or disable any features.
       { # Guest OS features.
-        "type": "A String", # The type of supported feature. Currenty only VIRTIO_SCSI_MULTIQUEUE is supported.
+        "type": "A String", # The type of supported feature. Currenty only VIRTIO_SCSI_MULTIQUEUE is supported. For newer Windows images, the server might also populate this property with the value WINDOWS to indicate that this is a Windows image. This value is purely informational and does not enable or disable any features.
       },
     ],
     "diskSizeGb": "A String", # Size of the image when restored onto a persistent disk (in GB).
@@ -524,7 +530,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
@@ -558,7 +564,7 @@
     "nextPageToken": "A String", # [Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results.
     "items": [ # [Output Only] A list of Image resources.
       { # An Image resource.
-          "sourceDisk": "A String", # URL of the The source disk used to create this image. This can be a full or valid partial URL. You must provide either this property or the rawDisk.source property but not both to create an image. For example, the following are valid values:
+          "sourceDisk": "A String", # URL of the source disk used to create this image. This can be a full or valid partial URL. You must provide either this property or the rawDisk.source property but not both to create an image. For example, the following are valid values:
               # - https://www.googleapis.com/compute/v1/projects/project/zones/zone/disks/disk
               # - projects/project/zones/zone/disks/disk
               # - zones/zone/disks/disk
@@ -577,10 +583,10 @@
           "description": "A String", # An optional description of this resource. Provide this property when you create the resource.
           "family": "A String", # The name of the image family to which this image belongs. You can create disks by specifying an image family instead of a specific image name. The image family always returns its latest image that is not deprecated. The name of the image family must comply with RFC1035.
           "deprecated": { # Deprecation status for a public resource. # The deprecation status associated with this image.
-            "deleted": "A String", # An optional RFC3339 timestamp on or after which the deprecation state of this resource will be changed to DELETED.
-            "deprecated": "A String", # An optional RFC3339 timestamp on or after which the deprecation state of this resource will be changed to DEPRECATED.
+            "deleted": "A String", # An optional RFC3339 timestamp on or after which the state of this resource is intended to change to DELETED. This is only informational and the status will not change unless the client explicitly changes it.
+            "deprecated": "A String", # An optional RFC3339 timestamp on or after which the state of this resource is intended to change to DEPRECATED. This is only informational and the status will not change unless the client explicitly changes it.
             "state": "A String", # The deprecation state of this resource. This can be DEPRECATED, OBSOLETE, or DELETED. Operations which create a new resource using a DEPRECATED resource will return successfully, but with a warning indicating the deprecated resource and recommending its replacement. Operations which use OBSOLETE or DELETED resources will be rejected and result in an error.
-            "obsolete": "A String", # An optional RFC3339 timestamp on or after which the deprecation state of this resource will be changed to OBSOLETE.
+            "obsolete": "A String", # An optional RFC3339 timestamp on or after which the state of this resource is intended to change to OBSOLETE. This is only informational and the status will not change unless the client explicitly changes it.
             "replacement": "A String", # The URL of the suggested replacement for a deprecated resource. The suggested replacement resource must be the same kind of resource as the deprecated resource.
           },
           "labelFingerprint": "A String", # A fingerprint for the labels being applied to this image, which is essentially a hash of the labels used for optimistic locking. The fingerprint is initially generated by Compute Engine and changes after every request to modify or update labels. You must always provide an up-to-date fingerprint hash in order to update or change labels.
@@ -591,9 +597,11 @@
           },
           "archiveSizeBytes": "A String", # Size of the image tar.gz archive stored in Google Cloud Storage (in bytes).
           "sourceDiskId": "A String", # The ID value of the disk used to create this image. This value may be used to determine whether the image was taken from the current or a previous instance of a given disk name.
-          "guestOsFeatures": [ # A list of features to enable on the guest OS. Applicable for bootable images only. Currently, only one feature is supported, VIRTIO_SCSCI_MULTIQUEUE, which allows each virtual CPU to have its own queue. For Windows images, you can only enable VIRTIO_SCSCI_MULTIQUEUE on images with driver version 1.2.0.1621 or higher. Linux images with kernel versions 3.17 and higher will support VIRTIO_SCSCI_MULTIQUEUE.
+          "guestOsFeatures": [ # A list of features to enable on the guest OS. Applicable for bootable images only. Currently, only one feature can be enabled, VIRTIO_SCSCI_MULTIQUEUE, which allows each virtual CPU to have its own queue. For Windows images, you can only enable VIRTIO_SCSCI_MULTIQUEUE on images with driver version 1.2.0.1621 or higher. Linux images with kernel versions 3.17 and higher will support VIRTIO_SCSCI_MULTIQUEUE.
+              #
+              # For new Windows images, the server might also populate this field with the value WINDOWS, to indicate that this is a Windows image. This value is purely informational and does not enable or disable any features.
             { # Guest OS features.
-              "type": "A String", # The type of supported feature. Currenty only VIRTIO_SCSI_MULTIQUEUE is supported.
+              "type": "A String", # The type of supported feature. Currenty only VIRTIO_SCSI_MULTIQUEUE is supported. For newer Windows images, the server might also populate this property with the value WINDOWS to indicate that this is a Windows image. This value is purely informational and does not enable or disable any features.
             },
           ],
           "diskSizeGb": "A String", # Size of the image when restored onto a persistent disk (in GB).
@@ -712,7 +720,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
diff --git a/docs/dyn/compute_beta.instanceGroupManagers.html b/docs/dyn/compute_beta.instanceGroupManagers.html
index 8c93a0e..1cb21a2 100644
--- a/docs/dyn/compute_beta.instanceGroupManagers.html
+++ b/docs/dyn/compute_beta.instanceGroupManagers.html
@@ -99,7 +99,7 @@
   <code><a href="#list">list(project, zone, orderBy=None, maxResults=None, pageToken=None, filter=None)</a></code></p>
 <p class="firstline">Retrieves a list of managed instance groups that are contained within the specified project and zone.</p>
 <p class="toc_element">
-  <code><a href="#listManagedInstances">listManagedInstances(project, zone, instanceGroupManager)</a></code></p>
+  <code><a href="#listManagedInstances">listManagedInstances(project, zone, instanceGroupManager, order_by=None, maxResults=None, pageToken=None, filter=None)</a></code></p>
 <p class="firstline">Lists all of the instances in the managed instance group. Each instance in the list has a currentAction, which indicates the action that the managed instance group is performing on the instance. For example, if the group is still creating an instance, the currentAction is CREATING. If a previous action failed, the list displays the errors for that failed action.</p>
 <p class="toc_element">
   <code><a href="#list_next">list_next(previous_request, previous_response)</a></code></p>
@@ -190,7 +190,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
@@ -253,13 +253,14 @@
               "zone": "A String", # [Output Only] The URL of the zone where the managed instance group is located (for zonal resources).
               "autoHealingPolicies": [ # The autohealing policy for this managed instance group. You can specify only one value.
                 {
-                  "healthCheck": "A String", # The URL for the HealthCheck that signals autohealing.
+                  "healthCheck": "A String", # The URL for the health check that signals autohealing.
                   "initialDelaySec": 42, # The number of seconds that the managed instance group waits before it applies autohealing policies to new instances or recently recreated instances. This initial delay allows instances to initialize and run their startup scripts before the instance group determines that they are UNHEALTHY. This prevents the managed instance group from recreating its instances prematurely. This value must be from range [0, 3600].
                 },
               ],
               "targetSize": 42, # The target number of running instances for this managed instance group. Deleting or abandoning instances reduces this number. Resizing the group changes this number.
               "failoverAction": "A String", # The action to perform in case of zone failure. Only one value is supported, NO_FAILOVER. The default is NO_FAILOVER.
               "instanceGroup": "A String", # [Output Only] The URL of the Instance Group resource.
+              "serviceAccount": "A String", # Service account will be used as credentials for all operations performed by managed instance group on instances. The service accounts needs all permissions required to create and delete instances. When not specified, the service account {projectNumber}@cloudservices.gserviceaccount.com will be used.
               "kind": "compute#instanceGroupManager", # [Output Only] The resource type, which is always compute#instanceGroupManager for managed instance groups.
               "targetPools": [ # The URLs for all TargetPool resources to which instances in the instanceGroup field are added. The target pools automatically apply to all of the instances in the managed instance group.
                 "A String",
@@ -357,7 +358,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
@@ -425,7 +426,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
@@ -458,13 +459,14 @@
       "zone": "A String", # [Output Only] The URL of the zone where the managed instance group is located (for zonal resources).
       "autoHealingPolicies": [ # The autohealing policy for this managed instance group. You can specify only one value.
         {
-          "healthCheck": "A String", # The URL for the HealthCheck that signals autohealing.
+          "healthCheck": "A String", # The URL for the health check that signals autohealing.
           "initialDelaySec": 42, # The number of seconds that the managed instance group waits before it applies autohealing policies to new instances or recently recreated instances. This initial delay allows instances to initialize and run their startup scripts before the instance group determines that they are UNHEALTHY. This prevents the managed instance group from recreating its instances prematurely. This value must be from range [0, 3600].
         },
       ],
       "targetSize": 42, # The target number of running instances for this managed instance group. Deleting or abandoning instances reduces this number. Resizing the group changes this number.
       "failoverAction": "A String", # The action to perform in case of zone failure. Only one value is supported, NO_FAILOVER. The default is NO_FAILOVER.
       "instanceGroup": "A String", # [Output Only] The URL of the Instance Group resource.
+      "serviceAccount": "A String", # Service account will be used as credentials for all operations performed by managed instance group on instances. The service accounts needs all permissions required to create and delete instances. When not specified, the service account {projectNumber}@cloudservices.gserviceaccount.com will be used.
       "kind": "compute#instanceGroupManager", # [Output Only] The resource type, which is always compute#instanceGroupManager for managed instance groups.
       "targetPools": [ # The URLs for all TargetPool resources to which instances in the instanceGroup field are added. The target pools automatically apply to all of the instances in the managed instance group.
         "A String",
@@ -513,13 +515,14 @@
     "zone": "A String", # [Output Only] The URL of the zone where the managed instance group is located (for zonal resources).
     "autoHealingPolicies": [ # The autohealing policy for this managed instance group. You can specify only one value.
       {
-        "healthCheck": "A String", # The URL for the HealthCheck that signals autohealing.
+        "healthCheck": "A String", # The URL for the health check that signals autohealing.
         "initialDelaySec": 42, # The number of seconds that the managed instance group waits before it applies autohealing policies to new instances or recently recreated instances. This initial delay allows instances to initialize and run their startup scripts before the instance group determines that they are UNHEALTHY. This prevents the managed instance group from recreating its instances prematurely. This value must be from range [0, 3600].
       },
     ],
     "targetSize": 42, # The target number of running instances for this managed instance group. Deleting or abandoning instances reduces this number. Resizing the group changes this number.
     "failoverAction": "A String", # The action to perform in case of zone failure. Only one value is supported, NO_FAILOVER. The default is NO_FAILOVER.
     "instanceGroup": "A String", # [Output Only] The URL of the Instance Group resource.
+    "serviceAccount": "A String", # Service account will be used as credentials for all operations performed by managed instance group on instances. The service accounts needs all permissions required to create and delete instances. When not specified, the service account {projectNumber}@cloudservices.gserviceaccount.com will be used.
     "kind": "compute#instanceGroupManager", # [Output Only] The resource type, which is always compute#instanceGroupManager for managed instance groups.
     "targetPools": [ # The URLs for all TargetPool resources to which instances in the instanceGroup field are added. The target pools automatically apply to all of the instances in the managed instance group.
       "A String",
@@ -587,7 +590,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
@@ -638,13 +641,14 @@
           "zone": "A String", # [Output Only] The URL of the zone where the managed instance group is located (for zonal resources).
           "autoHealingPolicies": [ # The autohealing policy for this managed instance group. You can specify only one value.
             {
-              "healthCheck": "A String", # The URL for the HealthCheck that signals autohealing.
+              "healthCheck": "A String", # The URL for the health check that signals autohealing.
               "initialDelaySec": 42, # The number of seconds that the managed instance group waits before it applies autohealing policies to new instances or recently recreated instances. This initial delay allows instances to initialize and run their startup scripts before the instance group determines that they are UNHEALTHY. This prevents the managed instance group from recreating its instances prematurely. This value must be from range [0, 3600].
             },
           ],
           "targetSize": 42, # The target number of running instances for this managed instance group. Deleting or abandoning instances reduces this number. Resizing the group changes this number.
           "failoverAction": "A String", # The action to perform in case of zone failure. Only one value is supported, NO_FAILOVER. The default is NO_FAILOVER.
           "instanceGroup": "A String", # [Output Only] The URL of the Instance Group resource.
+          "serviceAccount": "A String", # Service account will be used as credentials for all operations performed by managed instance group on instances. The service accounts needs all permissions required to create and delete instances. When not specified, the service account {projectNumber}@cloudservices.gserviceaccount.com will be used.
           "kind": "compute#instanceGroupManager", # [Output Only] The resource type, which is always compute#instanceGroupManager for managed instance groups.
           "targetPools": [ # The URLs for all TargetPool resources to which instances in the instanceGroup field are added. The target pools automatically apply to all of the instances in the managed instance group.
             "A String",
@@ -672,13 +676,17 @@
 </div>
 
 <div class="method">
-    <code class="details" id="listManagedInstances">listManagedInstances(project, zone, instanceGroupManager)</code>
+    <code class="details" id="listManagedInstances">listManagedInstances(project, zone, instanceGroupManager, order_by=None, maxResults=None, pageToken=None, filter=None)</code>
   <pre>Lists all of the instances in the managed instance group. Each instance in the list has a currentAction, which indicates the action that the managed instance group is performing on the instance. For example, if the group is still creating an instance, the currentAction is CREATING. If a previous action failed, the list displays the errors for that failed action.
 
 Args:
   project: string, Project ID for this request. (required)
   zone: string, The name of the zone where the managed instance group is located. (required)
   instanceGroupManager: string, The name of the managed instance group. (required)
+  order_by: string, A parameter
+  maxResults: integer, A parameter
+  pageToken: string, A parameter
+  filter: string, A parameter
 
 Returns:
   An object of the form:
@@ -792,7 +800,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
@@ -852,7 +860,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
@@ -927,7 +935,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
@@ -945,7 +953,7 @@
 {
     "autoHealingPolicies": [
       {
-        "healthCheck": "A String", # The URL for the HealthCheck that signals autohealing.
+        "healthCheck": "A String", # The URL for the health check that signals autohealing.
         "initialDelaySec": 42, # The number of seconds that the managed instance group waits before it applies autohealing policies to new instances or recently recreated instances. This initial delay allows instances to initialize and run their startup scripts before the instance group determines that they are UNHEALTHY. This prevents the managed instance group from recreating its instances prematurely. This value must be from range [0, 3600].
       },
     ],
@@ -998,7 +1006,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
@@ -1064,7 +1072,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
@@ -1133,7 +1141,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
diff --git a/docs/dyn/compute_beta.instanceGroups.html b/docs/dyn/compute_beta.instanceGroups.html
index a604006..a2bcfac 100644
--- a/docs/dyn/compute_beta.instanceGroups.html
+++ b/docs/dyn/compute_beta.instanceGroups.html
@@ -180,7 +180,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
@@ -328,7 +328,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
@@ -452,7 +452,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
@@ -666,7 +666,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
@@ -738,7 +738,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
diff --git a/docs/dyn/compute_beta.instanceTemplates.html b/docs/dyn/compute_beta.instanceTemplates.html
index 1212738..9810019 100644
--- a/docs/dyn/compute_beta.instanceTemplates.html
+++ b/docs/dyn/compute_beta.instanceTemplates.html
@@ -147,7 +147,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
@@ -219,7 +219,7 @@
                   # - projects/project/zones/zone/diskTypes/diskType
                   # - zones/zone/diskTypes/diskType  Note that for InstanceTemplate, this is the name of the disk type, not URL.
               "diskSizeGb": "A String", # Specifies the size of the disk in base-2 GB.
-              "sourceImage": "A String", # The source image used to create this disk. If the source image is deleted, this field will not be set.
+              "sourceImage": "A String", # The source image to create this disk. When creating a new instance, one of initializeParams.sourceImage or disks.source is required.
                   #
                   # To create a disk with one of the public operating system images, specify the image by its family name. For example, specify family/debian-8 to use the latest Debian 8 image:
                   #
@@ -236,6 +236,8 @@
                   # You can also specify a private image by its image family, which returns the latest version of the image in that family. Replace the image name with family/family-name:
                   #
                   # global/images/family/my-private-family
+                  #
+                  # If the source image is deleted later, this field will not be set.
               "diskStorageType": "A String", # [Deprecated] Storage type of the disk.
             },
             "autoDelete": True or False, # Specifies whether the disk will be auto-deleted when the instance is deleted (but not when the disk is detached from the instance).
@@ -247,7 +249,11 @@
             "mode": "A String", # The mode in which to attach this disk, either READ_WRITE or READ_ONLY. If not specified, the default is to attach the disk in READ_WRITE mode.
             "interface": "A String", # Specifies the disk interface to use for attaching this disk, which is either SCSI or NVME. The default is SCSI. Persistent disks must always use SCSI and the request will fail if you attempt to attach a persistent disk in any other format than SCSI. Local SSDs can use either NVME or SCSI. For performance characteristics of SCSI over NVMe, see Local SSD performance.
             "type": "A String", # Specifies the type of the disk, either SCRATCH or PERSISTENT. If not specified, the default is PERSISTENT.
-            "source": "A String", # Specifies a valid partial or full URL to an existing Persistent Disk resource. This field is only applicable for persistent disks. Note that for InstanceTemplate, it is just disk name, not URL for the disk.
+            "source": "A String", # Specifies a valid partial or full URL to an existing Persistent Disk resource. When creating a new instance, one of initializeParams.sourceImage or disks.source is required.
+                #
+                # If desired, you can also attach existing non-root persistent disks using this property. This field is only applicable for persistent disks.
+                #
+                # Note that for InstanceTemplate, specify the disk name, not the URL for the disk.
           },
         ],
         "machineType": "A String", # The machine type to use for instances that are created from this template.
@@ -384,7 +390,7 @@
                 # - projects/project/zones/zone/diskTypes/diskType
                 # - zones/zone/diskTypes/diskType  Note that for InstanceTemplate, this is the name of the disk type, not URL.
             "diskSizeGb": "A String", # Specifies the size of the disk in base-2 GB.
-            "sourceImage": "A String", # The source image used to create this disk. If the source image is deleted, this field will not be set.
+            "sourceImage": "A String", # The source image to create this disk. When creating a new instance, one of initializeParams.sourceImage or disks.source is required.
                 #
                 # To create a disk with one of the public operating system images, specify the image by its family name. For example, specify family/debian-8 to use the latest Debian 8 image:
                 #
@@ -401,6 +407,8 @@
                 # You can also specify a private image by its image family, which returns the latest version of the image in that family. Replace the image name with family/family-name:
                 #
                 # global/images/family/my-private-family
+                #
+                # If the source image is deleted later, this field will not be set.
             "diskStorageType": "A String", # [Deprecated] Storage type of the disk.
           },
           "autoDelete": True or False, # Specifies whether the disk will be auto-deleted when the instance is deleted (but not when the disk is detached from the instance).
@@ -412,7 +420,11 @@
           "mode": "A String", # The mode in which to attach this disk, either READ_WRITE or READ_ONLY. If not specified, the default is to attach the disk in READ_WRITE mode.
           "interface": "A String", # Specifies the disk interface to use for attaching this disk, which is either SCSI or NVME. The default is SCSI. Persistent disks must always use SCSI and the request will fail if you attempt to attach a persistent disk in any other format than SCSI. Local SSDs can use either NVME or SCSI. For performance characteristics of SCSI over NVMe, see Local SSD performance.
           "type": "A String", # Specifies the type of the disk, either SCRATCH or PERSISTENT. If not specified, the default is PERSISTENT.
-          "source": "A String", # Specifies a valid partial or full URL to an existing Persistent Disk resource. This field is only applicable for persistent disks. Note that for InstanceTemplate, it is just disk name, not URL for the disk.
+          "source": "A String", # Specifies a valid partial or full URL to an existing Persistent Disk resource. When creating a new instance, one of initializeParams.sourceImage or disks.source is required.
+              #
+              # If desired, you can also attach existing non-root persistent disks using this property. This field is only applicable for persistent disks.
+              #
+              # Note that for InstanceTemplate, specify the disk name, not the URL for the disk.
         },
       ],
       "machineType": "A String", # The machine type to use for instances that are created from this template.
@@ -529,7 +541,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
@@ -619,7 +631,7 @@
                       # - projects/project/zones/zone/diskTypes/diskType
                       # - zones/zone/diskTypes/diskType  Note that for InstanceTemplate, this is the name of the disk type, not URL.
                   "diskSizeGb": "A String", # Specifies the size of the disk in base-2 GB.
-                  "sourceImage": "A String", # The source image used to create this disk. If the source image is deleted, this field will not be set.
+                  "sourceImage": "A String", # The source image to create this disk. When creating a new instance, one of initializeParams.sourceImage or disks.source is required.
                       #
                       # To create a disk with one of the public operating system images, specify the image by its family name. For example, specify family/debian-8 to use the latest Debian 8 image:
                       #
@@ -636,6 +648,8 @@
                       # You can also specify a private image by its image family, which returns the latest version of the image in that family. Replace the image name with family/family-name:
                       #
                       # global/images/family/my-private-family
+                      #
+                      # If the source image is deleted later, this field will not be set.
                   "diskStorageType": "A String", # [Deprecated] Storage type of the disk.
                 },
                 "autoDelete": True or False, # Specifies whether the disk will be auto-deleted when the instance is deleted (but not when the disk is detached from the instance).
@@ -647,7 +661,11 @@
                 "mode": "A String", # The mode in which to attach this disk, either READ_WRITE or READ_ONLY. If not specified, the default is to attach the disk in READ_WRITE mode.
                 "interface": "A String", # Specifies the disk interface to use for attaching this disk, which is either SCSI or NVME. The default is SCSI. Persistent disks must always use SCSI and the request will fail if you attempt to attach a persistent disk in any other format than SCSI. Local SSDs can use either NVME or SCSI. For performance characteristics of SCSI over NVMe, see Local SSD performance.
                 "type": "A String", # Specifies the type of the disk, either SCRATCH or PERSISTENT. If not specified, the default is PERSISTENT.
-                "source": "A String", # Specifies a valid partial or full URL to an existing Persistent Disk resource. This field is only applicable for persistent disks. Note that for InstanceTemplate, it is just disk name, not URL for the disk.
+                "source": "A String", # Specifies a valid partial or full URL to an existing Persistent Disk resource. When creating a new instance, one of initializeParams.sourceImage or disks.source is required.
+                    #
+                    # If desired, you can also attach existing non-root persistent disks using this property. This field is only applicable for persistent disks.
+                    #
+                    # Note that for InstanceTemplate, specify the disk name, not the URL for the disk.
               },
             ],
             "machineType": "A String", # The machine type to use for instances that are created from this template.
diff --git a/docs/dyn/compute_beta.instances.html b/docs/dyn/compute_beta.instances.html
index 9d6834e..2b85832 100644
--- a/docs/dyn/compute_beta.instances.html
+++ b/docs/dyn/compute_beta.instances.html
@@ -129,6 +129,9 @@
   <code><a href="#setScheduling">setScheduling(project, zone, instance, body)</a></code></p>
 <p class="firstline">Sets an instance's scheduling options.</p>
 <p class="toc_element">
+  <code><a href="#setServiceAccount">setServiceAccount(project, zone, instance, body)</a></code></p>
+<p class="firstline">Sets the service account on the instance.</p>
+<p class="toc_element">
   <code><a href="#setTags">setTags(project, zone, instance, body)</a></code></p>
 <p class="firstline">Sets tags for the specified instance to the data included in the request.</p>
 <p class="toc_element">
@@ -210,7 +213,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
@@ -317,7 +320,7 @@
                       # - projects/project/zones/zone/diskTypes/diskType
                       # - zones/zone/diskTypes/diskType  Note that for InstanceTemplate, this is the name of the disk type, not URL.
                   "diskSizeGb": "A String", # Specifies the size of the disk in base-2 GB.
-                  "sourceImage": "A String", # The source image used to create this disk. If the source image is deleted, this field will not be set.
+                  "sourceImage": "A String", # The source image to create this disk. When creating a new instance, one of initializeParams.sourceImage or disks.source is required.
                       #
                       # To create a disk with one of the public operating system images, specify the image by its family name. For example, specify family/debian-8 to use the latest Debian 8 image:
                       #
@@ -334,6 +337,8 @@
                       # You can also specify a private image by its image family, which returns the latest version of the image in that family. Replace the image name with family/family-name:
                       #
                       # global/images/family/my-private-family
+                      #
+                      # If the source image is deleted later, this field will not be set.
                   "diskStorageType": "A String", # [Deprecated] Storage type of the disk.
                 },
                 "autoDelete": True or False, # Specifies whether the disk will be auto-deleted when the instance is deleted (but not when the disk is detached from the instance).
@@ -345,7 +350,11 @@
                 "mode": "A String", # The mode in which to attach this disk, either READ_WRITE or READ_ONLY. If not specified, the default is to attach the disk in READ_WRITE mode.
                 "interface": "A String", # Specifies the disk interface to use for attaching this disk, which is either SCSI or NVME. The default is SCSI. Persistent disks must always use SCSI and the request will fail if you attempt to attach a persistent disk in any other format than SCSI. Local SSDs can use either NVME or SCSI. For performance characteristics of SCSI over NVMe, see Local SSD performance.
                 "type": "A String", # Specifies the type of the disk, either SCRATCH or PERSISTENT. If not specified, the default is PERSISTENT.
-                "source": "A String", # Specifies a valid partial or full URL to an existing Persistent Disk resource. This field is only applicable for persistent disks. Note that for InstanceTemplate, it is just disk name, not URL for the disk.
+                "source": "A String", # Specifies a valid partial or full URL to an existing Persistent Disk resource. When creating a new instance, one of initializeParams.sourceImage or disks.source is required.
+                    #
+                    # If desired, you can also attach existing non-root persistent disks using this property. This field is only applicable for persistent disks.
+                    #
+                    # Note that for InstanceTemplate, specify the disk name, not the URL for the disk.
               },
             ],
             "name": "A String", # The name of the resource, provided by the client when initially creating the resource. The resource name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression [a-z]([-a-z0-9]*[a-z0-9])? which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.
@@ -508,7 +517,7 @@
         # - projects/project/zones/zone/diskTypes/diskType
         # - zones/zone/diskTypes/diskType  Note that for InstanceTemplate, this is the name of the disk type, not URL.
     "diskSizeGb": "A String", # Specifies the size of the disk in base-2 GB.
-    "sourceImage": "A String", # The source image used to create this disk. If the source image is deleted, this field will not be set.
+    "sourceImage": "A String", # The source image to create this disk. When creating a new instance, one of initializeParams.sourceImage or disks.source is required.
         #
         # To create a disk with one of the public operating system images, specify the image by its family name. For example, specify family/debian-8 to use the latest Debian 8 image:
         #
@@ -525,6 +534,8 @@
         # You can also specify a private image by its image family, which returns the latest version of the image in that family. Replace the image name with family/family-name:
         #
         # global/images/family/my-private-family
+        #
+        # If the source image is deleted later, this field will not be set.
     "diskStorageType": "A String", # [Deprecated] Storage type of the disk.
   },
   "autoDelete": True or False, # Specifies whether the disk will be auto-deleted when the instance is deleted (but not when the disk is detached from the instance).
@@ -536,7 +547,11 @@
   "mode": "A String", # The mode in which to attach this disk, either READ_WRITE or READ_ONLY. If not specified, the default is to attach the disk in READ_WRITE mode.
   "interface": "A String", # Specifies the disk interface to use for attaching this disk, which is either SCSI or NVME. The default is SCSI. Persistent disks must always use SCSI and the request will fail if you attempt to attach a persistent disk in any other format than SCSI. Local SSDs can use either NVME or SCSI. For performance characteristics of SCSI over NVMe, see Local SSD performance.
   "type": "A String", # Specifies the type of the disk, either SCRATCH or PERSISTENT. If not specified, the default is PERSISTENT.
-  "source": "A String", # Specifies a valid partial or full URL to an existing Persistent Disk resource. This field is only applicable for persistent disks. Note that for InstanceTemplate, it is just disk name, not URL for the disk.
+  "source": "A String", # Specifies a valid partial or full URL to an existing Persistent Disk resource. When creating a new instance, one of initializeParams.sourceImage or disks.source is required.
+      # 
+      # If desired, you can also attach existing non-root persistent disks using this property. This field is only applicable for persistent disks.
+      # 
+      # Note that for InstanceTemplate, specify the disk name, not the URL for the disk.
 }
 
 
@@ -586,7 +601,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
@@ -645,7 +660,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
@@ -706,7 +721,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
@@ -766,7 +781,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
@@ -854,7 +869,7 @@
               # - projects/project/zones/zone/diskTypes/diskType
               # - zones/zone/diskTypes/diskType  Note that for InstanceTemplate, this is the name of the disk type, not URL.
           "diskSizeGb": "A String", # Specifies the size of the disk in base-2 GB.
-          "sourceImage": "A String", # The source image used to create this disk. If the source image is deleted, this field will not be set.
+          "sourceImage": "A String", # The source image to create this disk. When creating a new instance, one of initializeParams.sourceImage or disks.source is required.
               #
               # To create a disk with one of the public operating system images, specify the image by its family name. For example, specify family/debian-8 to use the latest Debian 8 image:
               #
@@ -871,6 +886,8 @@
               # You can also specify a private image by its image family, which returns the latest version of the image in that family. Replace the image name with family/family-name:
               #
               # global/images/family/my-private-family
+              #
+              # If the source image is deleted later, this field will not be set.
           "diskStorageType": "A String", # [Deprecated] Storage type of the disk.
         },
         "autoDelete": True or False, # Specifies whether the disk will be auto-deleted when the instance is deleted (but not when the disk is detached from the instance).
@@ -882,7 +899,11 @@
         "mode": "A String", # The mode in which to attach this disk, either READ_WRITE or READ_ONLY. If not specified, the default is to attach the disk in READ_WRITE mode.
         "interface": "A String", # Specifies the disk interface to use for attaching this disk, which is either SCSI or NVME. The default is SCSI. Persistent disks must always use SCSI and the request will fail if you attempt to attach a persistent disk in any other format than SCSI. Local SSDs can use either NVME or SCSI. For performance characteristics of SCSI over NVMe, see Local SSD performance.
         "type": "A String", # Specifies the type of the disk, either SCRATCH or PERSISTENT. If not specified, the default is PERSISTENT.
-        "source": "A String", # Specifies a valid partial or full URL to an existing Persistent Disk resource. This field is only applicable for persistent disks. Note that for InstanceTemplate, it is just disk name, not URL for the disk.
+        "source": "A String", # Specifies a valid partial or full URL to an existing Persistent Disk resource. When creating a new instance, one of initializeParams.sourceImage or disks.source is required.
+            #
+            # If desired, you can also attach existing non-root persistent disks using this property. This field is only applicable for persistent disks.
+            #
+            # Note that for InstanceTemplate, specify the disk name, not the URL for the disk.
       },
     ],
     "name": "A String", # The name of the resource, provided by the client when initially creating the resource. The resource name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression [a-z]([-a-z0-9]*[a-z0-9])? which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.
@@ -1057,7 +1078,7 @@
             # - projects/project/zones/zone/diskTypes/diskType
             # - zones/zone/diskTypes/diskType  Note that for InstanceTemplate, this is the name of the disk type, not URL.
         "diskSizeGb": "A String", # Specifies the size of the disk in base-2 GB.
-        "sourceImage": "A String", # The source image used to create this disk. If the source image is deleted, this field will not be set.
+        "sourceImage": "A String", # The source image to create this disk. When creating a new instance, one of initializeParams.sourceImage or disks.source is required.
             #
             # To create a disk with one of the public operating system images, specify the image by its family name. For example, specify family/debian-8 to use the latest Debian 8 image:
             #
@@ -1074,6 +1095,8 @@
             # You can also specify a private image by its image family, which returns the latest version of the image in that family. Replace the image name with family/family-name:
             #
             # global/images/family/my-private-family
+            #
+            # If the source image is deleted later, this field will not be set.
         "diskStorageType": "A String", # [Deprecated] Storage type of the disk.
       },
       "autoDelete": True or False, # Specifies whether the disk will be auto-deleted when the instance is deleted (but not when the disk is detached from the instance).
@@ -1085,7 +1108,11 @@
       "mode": "A String", # The mode in which to attach this disk, either READ_WRITE or READ_ONLY. If not specified, the default is to attach the disk in READ_WRITE mode.
       "interface": "A String", # Specifies the disk interface to use for attaching this disk, which is either SCSI or NVME. The default is SCSI. Persistent disks must always use SCSI and the request will fail if you attempt to attach a persistent disk in any other format than SCSI. Local SSDs can use either NVME or SCSI. For performance characteristics of SCSI over NVMe, see Local SSD performance.
       "type": "A String", # Specifies the type of the disk, either SCRATCH or PERSISTENT. If not specified, the default is PERSISTENT.
-      "source": "A String", # Specifies a valid partial or full URL to an existing Persistent Disk resource. This field is only applicable for persistent disks. Note that for InstanceTemplate, it is just disk name, not URL for the disk.
+      "source": "A String", # Specifies a valid partial or full URL to an existing Persistent Disk resource. When creating a new instance, one of initializeParams.sourceImage or disks.source is required.
+          #
+          # If desired, you can also attach existing non-root persistent disks using this property. This field is only applicable for persistent disks.
+          #
+          # Note that for InstanceTemplate, specify the disk name, not the URL for the disk.
     },
   ],
   "name": "A String", # The name of the resource, provided by the client when initially creating the resource. The resource name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression [a-z]([-a-z0-9]*[a-z0-9])? which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.
@@ -1201,7 +1228,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
@@ -1307,7 +1334,7 @@
                   # - projects/project/zones/zone/diskTypes/diskType
                   # - zones/zone/diskTypes/diskType  Note that for InstanceTemplate, this is the name of the disk type, not URL.
               "diskSizeGb": "A String", # Specifies the size of the disk in base-2 GB.
-              "sourceImage": "A String", # The source image used to create this disk. If the source image is deleted, this field will not be set.
+              "sourceImage": "A String", # The source image to create this disk. When creating a new instance, one of initializeParams.sourceImage or disks.source is required.
                   #
                   # To create a disk with one of the public operating system images, specify the image by its family name. For example, specify family/debian-8 to use the latest Debian 8 image:
                   #
@@ -1324,6 +1351,8 @@
                   # You can also specify a private image by its image family, which returns the latest version of the image in that family. Replace the image name with family/family-name:
                   #
                   # global/images/family/my-private-family
+                  #
+                  # If the source image is deleted later, this field will not be set.
               "diskStorageType": "A String", # [Deprecated] Storage type of the disk.
             },
             "autoDelete": True or False, # Specifies whether the disk will be auto-deleted when the instance is deleted (but not when the disk is detached from the instance).
@@ -1335,7 +1364,11 @@
             "mode": "A String", # The mode in which to attach this disk, either READ_WRITE or READ_ONLY. If not specified, the default is to attach the disk in READ_WRITE mode.
             "interface": "A String", # Specifies the disk interface to use for attaching this disk, which is either SCSI or NVME. The default is SCSI. Persistent disks must always use SCSI and the request will fail if you attempt to attach a persistent disk in any other format than SCSI. Local SSDs can use either NVME or SCSI. For performance characteristics of SCSI over NVMe, see Local SSD performance.
             "type": "A String", # Specifies the type of the disk, either SCRATCH or PERSISTENT. If not specified, the default is PERSISTENT.
-            "source": "A String", # Specifies a valid partial or full URL to an existing Persistent Disk resource. This field is only applicable for persistent disks. Note that for InstanceTemplate, it is just disk name, not URL for the disk.
+            "source": "A String", # Specifies a valid partial or full URL to an existing Persistent Disk resource. When creating a new instance, one of initializeParams.sourceImage or disks.source is required.
+                #
+                # If desired, you can also attach existing non-root persistent disks using this property. This field is only applicable for persistent disks.
+                #
+                # Note that for InstanceTemplate, specify the disk name, not the URL for the disk.
           },
         ],
         "name": "A String", # The name of the resource, provided by the client when initially creating the resource. The resource name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression [a-z]([-a-z0-9]*[a-z0-9])? which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.
@@ -1479,7 +1512,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
@@ -1540,7 +1573,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
@@ -1611,7 +1644,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
@@ -1677,7 +1710,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
@@ -1750,7 +1783,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
@@ -1818,7 +1851,76 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
+  }</pre>
+</div>
+
+<div class="method">
+    <code class="details" id="setServiceAccount">setServiceAccount(project, zone, instance, body)</code>
+  <pre>Sets the service account on the instance.
+
+Args:
+  project: string, Project ID for this request. (required)
+  zone: string, The name of the zone for this request. (required)
+  instance: string, Name of the instance resource to start. (required)
+  body: object, The request body. (required)
+    The object takes the form of:
+
+{
+    "scopes": [ # The list of scopes to be made available for this service account.
+      "A String",
+    ],
+    "email": "A String", # Email address of the service account.
+  }
+
+
+Returns:
+  An object of the form:
+
+    { # An Operation resource, used to manage asynchronous API requests.
+    "targetId": "A String", # [Output Only] The unique target ID, which identifies a specific incarnation of the target resource.
+    "clientOperationId": "A String", # [Output Only] Reserved for future use.
+    "creationTimestamp": "A String", # [Output Only] Creation timestamp in RFC3339 text format.
+    "id": "A String", # [Output Only] The unique identifier for the resource. This identifier is defined by the server.
+    "zone": "A String", # [Output Only] The URL of the zone where the operation resides. Only available when performing per-zone operations.
+    "insertTime": "A String", # [Output Only] The time that this operation was requested. This value is in RFC3339 text format.
+    "operationType": "A String", # [Output Only] The type of operation, such as insert, update, or delete, and so on.
+    "httpErrorMessage": "A String", # [Output Only] If the operation fails, this field contains the HTTP error message that was returned, such as NOT FOUND.
+    "progress": 42, # [Output Only] An optional progress indicator that ranges from 0 to 100. There is no requirement that this be linear or support any granularity of operations. This should not be used to guess when the operation will be complete. This number should monotonically increase as the operation progresses.
+    "httpErrorStatusCode": 42, # [Output Only] If the operation fails, this field contains the HTTP error status code that was returned. For example, a 404 means the resource was not found.
+    "statusMessage": "A String", # [Output Only] An optional textual description of the current status of the operation.
+    "status": "A String", # [Output Only] The status of the operation, which can be one of the following: PENDING, RUNNING, or DONE.
+    "description": "A String", # [Output Only] A textual description of the operation, which is set when the operation is created.
+    "warnings": [ # [Output Only] If warning messages are generated during processing of the operation, this field will be populated.
+      {
+        "message": "A String", # [Output Only] A human-readable description of the warning code.
+        "code": "A String", # [Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.
+        "data": [ # [Output Only] Metadata about this warning in key: value format. For example:
+            # "data": [ { "key": "scope", "value": "zones/us-east1-d" }
+          {
+            "value": "A String", # [Output Only] A warning data value corresponding to the key.
+            "key": "A String", # [Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding).
+          },
+        ],
+      },
+    ],
+    "user": "A String", # [Output Only] User who requested the operation, for example: user@example.com.
+    "startTime": "A String", # [Output Only] The time that this operation was started by the server. This value is in RFC3339 text format.
+    "kind": "compute#operation", # [Output Only] Type of the resource. Always compute#operation for Operation resources.
+    "name": "A String", # [Output Only] Name of the resource.
+    "region": "A String", # [Output Only] The URL of the region where the operation resides. Only available when performing regional operations.
+    "error": { # [Output Only] If errors are generated during processing of the operation, this field will be populated.
+      "errors": [ # [Output Only] The array of errors encountered while processing this operation.
+        {
+          "message": "A String", # [Output Only] An optional, human-readable error message.
+          "code": "A String", # [Output Only] The error type identifier for this error.
+          "location": "A String", # [Output Only] Indicates the field in the request that caused the error. This property is optional.
+        },
+      ],
+    },
+    "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
+    "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
@@ -1889,7 +1991,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
@@ -1948,7 +2050,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
@@ -2032,7 +2134,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
@@ -2091,7 +2193,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
diff --git a/docs/dyn/compute_beta.machineTypes.html b/docs/dyn/compute_beta.machineTypes.html
index decdd48..573ca47 100644
--- a/docs/dyn/compute_beta.machineTypes.html
+++ b/docs/dyn/compute_beta.machineTypes.html
@@ -129,10 +129,10 @@
             "zone": "A String", # [Output Only] The name of the zone where the machine type resides, such as us-central1-a.
             "maximumPersistentDisks": 42, # [Output Only] Maximum persistent disks allowed.
             "deprecated": { # Deprecation status for a public resource. # [Output Only] The deprecation status associated with this machine type.
-              "deleted": "A String", # An optional RFC3339 timestamp on or after which the deprecation state of this resource will be changed to DELETED.
-              "deprecated": "A String", # An optional RFC3339 timestamp on or after which the deprecation state of this resource will be changed to DEPRECATED.
+              "deleted": "A String", # An optional RFC3339 timestamp on or after which the state of this resource is intended to change to DELETED. This is only informational and the status will not change unless the client explicitly changes it.
+              "deprecated": "A String", # An optional RFC3339 timestamp on or after which the state of this resource is intended to change to DEPRECATED. This is only informational and the status will not change unless the client explicitly changes it.
               "state": "A String", # The deprecation state of this resource. This can be DEPRECATED, OBSOLETE, or DELETED. Operations which create a new resource using a DEPRECATED resource will return successfully, but with a warning indicating the deprecated resource and recommending its replacement. Operations which use OBSOLETE or DELETED resources will be rejected and result in an error.
-              "obsolete": "A String", # An optional RFC3339 timestamp on or after which the deprecation state of this resource will be changed to OBSOLETE.
+              "obsolete": "A String", # An optional RFC3339 timestamp on or after which the state of this resource is intended to change to OBSOLETE. This is only informational and the status will not change unless the client explicitly changes it.
               "replacement": "A String", # The URL of the suggested replacement for a deprecated resource. The suggested replacement resource must be the same kind of resource as the deprecated resource.
             },
             "memoryMb": 42, # [Output Only] The amount of physical memory available to the instance, defined in MB.
@@ -196,10 +196,10 @@
     "zone": "A String", # [Output Only] The name of the zone where the machine type resides, such as us-central1-a.
     "maximumPersistentDisks": 42, # [Output Only] Maximum persistent disks allowed.
     "deprecated": { # Deprecation status for a public resource. # [Output Only] The deprecation status associated with this machine type.
-      "deleted": "A String", # An optional RFC3339 timestamp on or after which the deprecation state of this resource will be changed to DELETED.
-      "deprecated": "A String", # An optional RFC3339 timestamp on or after which the deprecation state of this resource will be changed to DEPRECATED.
+      "deleted": "A String", # An optional RFC3339 timestamp on or after which the state of this resource is intended to change to DELETED. This is only informational and the status will not change unless the client explicitly changes it.
+      "deprecated": "A String", # An optional RFC3339 timestamp on or after which the state of this resource is intended to change to DEPRECATED. This is only informational and the status will not change unless the client explicitly changes it.
       "state": "A String", # The deprecation state of this resource. This can be DEPRECATED, OBSOLETE, or DELETED. Operations which create a new resource using a DEPRECATED resource will return successfully, but with a warning indicating the deprecated resource and recommending its replacement. Operations which use OBSOLETE or DELETED resources will be rejected and result in an error.
-      "obsolete": "A String", # An optional RFC3339 timestamp on or after which the deprecation state of this resource will be changed to OBSOLETE.
+      "obsolete": "A String", # An optional RFC3339 timestamp on or after which the state of this resource is intended to change to OBSOLETE. This is only informational and the status will not change unless the client explicitly changes it.
       "replacement": "A String", # The URL of the suggested replacement for a deprecated resource. The suggested replacement resource must be the same kind of resource as the deprecated resource.
     },
     "memoryMb": 42, # [Output Only] The amount of physical memory available to the instance, defined in MB.
@@ -249,10 +249,10 @@
         "zone": "A String", # [Output Only] The name of the zone where the machine type resides, such as us-central1-a.
         "maximumPersistentDisks": 42, # [Output Only] Maximum persistent disks allowed.
         "deprecated": { # Deprecation status for a public resource. # [Output Only] The deprecation status associated with this machine type.
-          "deleted": "A String", # An optional RFC3339 timestamp on or after which the deprecation state of this resource will be changed to DELETED.
-          "deprecated": "A String", # An optional RFC3339 timestamp on or after which the deprecation state of this resource will be changed to DEPRECATED.
+          "deleted": "A String", # An optional RFC3339 timestamp on or after which the state of this resource is intended to change to DELETED. This is only informational and the status will not change unless the client explicitly changes it.
+          "deprecated": "A String", # An optional RFC3339 timestamp on or after which the state of this resource is intended to change to DEPRECATED. This is only informational and the status will not change unless the client explicitly changes it.
           "state": "A String", # The deprecation state of this resource. This can be DEPRECATED, OBSOLETE, or DELETED. Operations which create a new resource using a DEPRECATED resource will return successfully, but with a warning indicating the deprecated resource and recommending its replacement. Operations which use OBSOLETE or DELETED resources will be rejected and result in an error.
-          "obsolete": "A String", # An optional RFC3339 timestamp on or after which the deprecation state of this resource will be changed to OBSOLETE.
+          "obsolete": "A String", # An optional RFC3339 timestamp on or after which the state of this resource is intended to change to OBSOLETE. This is only informational and the status will not change unless the client explicitly changes it.
           "replacement": "A String", # The URL of the suggested replacement for a deprecated resource. The suggested replacement resource must be the same kind of resource as the deprecated resource.
         },
         "memoryMb": 42, # [Output Only] The amount of physical memory available to the instance, defined in MB.
diff --git a/docs/dyn/compute_beta.networks.html b/docs/dyn/compute_beta.networks.html
index b04bd48..419f3c8 100644
--- a/docs/dyn/compute_beta.networks.html
+++ b/docs/dyn/compute_beta.networks.html
@@ -150,7 +150,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
@@ -256,7 +256,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
@@ -380,7 +380,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
diff --git a/docs/dyn/compute_beta.projects.html b/docs/dyn/compute_beta.projects.html
index 4dda76f..11caddc 100644
--- a/docs/dyn/compute_beta.projects.html
+++ b/docs/dyn/compute_beta.projects.html
@@ -78,6 +78,12 @@
   <code><a href="#get">get(project)</a></code></p>
 <p class="firstline">Returns the specified Project resource.</p>
 <p class="toc_element">
+  <code><a href="#getXpnHost">getXpnHost(project)</a></code></p>
+<p class="firstline">Get the XPN host project that this project links to. May be empty if no link exists.</p>
+<p class="toc_element">
+  <code><a href="#listXpnHosts">listXpnHosts(project, body)</a></code></p>
+<p class="firstline">List all XPN host projects visible to the user in an organization.</p>
+<p class="toc_element">
   <code><a href="#moveDisk">moveDisk(project, body)</a></code></p>
 <p class="firstline">Moves a persistent disk from one zone to another.</p>
 <p class="toc_element">
@@ -125,9 +131,9 @@
     ],
     "name": "A String", # The project ID. For example: my-example-project. Use the project ID to make requests to Compute Engine.
     "usageExportLocation": { # The location in Cloud Storage and naming method of the daily usage report. Contains bucket_name and report_name prefix. # The naming prefix for daily usage reports and the Google Cloud Storage bucket where they are stored.
-        "bucketName": "A String", # The name of an existing bucket in Cloud Storage where the usage report object is stored. The Google Service Account is granted write access to this bucket. This can either be the bucket name by itself, such as example-bucket, or the bucket name with gs:// or https://storage.googleapis.com/ in front of it, such as gs://example-bucket.
-        "reportNamePrefix": "A String", # An optional prefix for the name of the usage report object stored in bucketName. If not supplied, defaults to usage. The report is stored as a CSV file named report_name_prefix_gce_YYYYMMDD.csv where YYYYMMDD is the day of the usage according to Pacific Time. If you supply a prefix, it should conform to Cloud Storage object naming conventions.
-      },
+      "bucketName": "A String", # The name of an existing bucket in Cloud Storage where the usage report object is stored. The Google Service Account is granted write access to this bucket. This can either be the bucket name by itself, such as example-bucket, or the bucket name with gs:// or https://storage.googleapis.com/ in front of it, such as gs://example-bucket.
+      "reportNamePrefix": "A String", # An optional prefix for the name of the usage report object stored in bucketName. If not supplied, defaults to usage. The report is stored as a CSV file named report_name_prefix_gce_YYYYMMDD.csv where YYYYMMDD is the day of the usage according to Pacific Time. If you supply a prefix, it should conform to Cloud Storage object naming conventions.
+    },
     "xpnProjectStatus": "A String", # [Output Only] The role this project has in a Cross Project Network (XPN) configuration. Currently only HOST projects are differentiated.
     "creationTimestamp": "A String", # [Output Only] Creation timestamp in RFC3339 text format.
     "id": "A String", # [Output Only] The unique identifier for the resource. This identifier is defined by the server. This is not the project ID, and is just a unique ID used by Compute Engine to identify resources.
@@ -137,6 +143,113 @@
 </div>
 
 <div class="method">
+    <code class="details" id="getXpnHost">getXpnHost(project)</code>
+  <pre>Get the XPN host project that this project links to. May be empty if no link exists.
+
+Args:
+  project: string, Project ID for this request. (required)
+
+Returns:
+  An object of the form:
+
+    { # A Project resource. Projects can only be created in the Google Cloud Platform Console. Unless marked otherwise, values can only be modified in the console.
+    "kind": "compute#project", # [Output Only] Type of the resource. Always compute#project for projects.
+    "defaultServiceAccount": "A String", # [Output Only] Default service account used by VMs running in this project.
+    "enabledFeatures": [ # Restricted features enabled for use on this project.
+      "A String",
+    ],
+    "commonInstanceMetadata": { # A metadata key/value entry. # Metadata key/value pairs available to all instances contained in this project. See Custom metadata for more information.
+      "items": [ # Array of key/value pairs. The total size of all keys and values must be less than 512 KB.
+        {
+          "value": "A String", # Value for the metadata entry. These are free-form strings, and only have meaning as interpreted by the image running in the instance. The only restriction placed on values is that their size must be less than or equal to 32768 bytes.
+          "key": "A String", # Key for the metadata entry. Keys must conform to the following regexp: [a-zA-Z0-9-_]+, and be less than 128 bytes in length. This is reflected as part of a URL in the metadata server. Additionally, to avoid ambiguity, keys must not conflict with any other metadata keys for the project.
+        },
+      ],
+      "kind": "compute#metadata", # [Output Only] Type of the resource. Always compute#metadata for metadata.
+      "fingerprint": "A String", # Specifies a fingerprint for this request, which is essentially a hash of the metadata's contents and used for optimistic locking. The fingerprint is initially generated by Compute Engine and changes after every request to modify or update metadata. You must always provide an up-to-date fingerprint hash in order to update or change metadata.
+    },
+    "quotas": [ # [Output Only] Quotas assigned to this project.
+      { # A quotas entry.
+        "usage": 3.14, # [Output Only] Current usage of this metric.
+        "metric": "A String", # [Output Only] Name of the quota metric.
+        "limit": 3.14, # [Output Only] Quota limit for this metric.
+      },
+    ],
+    "name": "A String", # The project ID. For example: my-example-project. Use the project ID to make requests to Compute Engine.
+    "usageExportLocation": { # The location in Cloud Storage and naming method of the daily usage report. Contains bucket_name and report_name prefix. # The naming prefix for daily usage reports and the Google Cloud Storage bucket where they are stored.
+      "bucketName": "A String", # The name of an existing bucket in Cloud Storage where the usage report object is stored. The Google Service Account is granted write access to this bucket. This can either be the bucket name by itself, such as example-bucket, or the bucket name with gs:// or https://storage.googleapis.com/ in front of it, such as gs://example-bucket.
+      "reportNamePrefix": "A String", # An optional prefix for the name of the usage report object stored in bucketName. If not supplied, defaults to usage. The report is stored as a CSV file named report_name_prefix_gce_YYYYMMDD.csv where YYYYMMDD is the day of the usage according to Pacific Time. If you supply a prefix, it should conform to Cloud Storage object naming conventions.
+    },
+    "xpnProjectStatus": "A String", # [Output Only] The role this project has in a Cross Project Network (XPN) configuration. Currently only HOST projects are differentiated.
+    "creationTimestamp": "A String", # [Output Only] Creation timestamp in RFC3339 text format.
+    "id": "A String", # [Output Only] The unique identifier for the resource. This identifier is defined by the server. This is not the project ID, and is just a unique ID used by Compute Engine to identify resources.
+    "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
+    "description": "A String", # An optional textual description of the resource.
+  }</pre>
+</div>
+
+<div class="method">
+    <code class="details" id="listXpnHosts">listXpnHosts(project, body)</code>
+  <pre>List all XPN host projects visible to the user in an organization.
+
+Args:
+  project: string, Project ID for this request. (required)
+  body: object, The request body. (required)
+    The object takes the form of:
+
+{
+    "organization": "A String", # Optional organization ID managed by Cloud Resource Manager, for which to list XPN host projects. If not specified, the organization will be inferred from the project.
+  }
+
+
+Returns:
+  An object of the form:
+
+    {
+    "nextPageToken": "A String", # [Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results.
+    "items": [ # [Output Only] A list of XPN host project URLs.
+      { # A Project resource. Projects can only be created in the Google Cloud Platform Console. Unless marked otherwise, values can only be modified in the console.
+        "kind": "compute#project", # [Output Only] Type of the resource. Always compute#project for projects.
+        "defaultServiceAccount": "A String", # [Output Only] Default service account used by VMs running in this project.
+        "enabledFeatures": [ # Restricted features enabled for use on this project.
+          "A String",
+        ],
+        "commonInstanceMetadata": { # A metadata key/value entry. # Metadata key/value pairs available to all instances contained in this project. See Custom metadata for more information.
+          "items": [ # Array of key/value pairs. The total size of all keys and values must be less than 512 KB.
+            {
+              "value": "A String", # Value for the metadata entry. These are free-form strings, and only have meaning as interpreted by the image running in the instance. The only restriction placed on values is that their size must be less than or equal to 32768 bytes.
+              "key": "A String", # Key for the metadata entry. Keys must conform to the following regexp: [a-zA-Z0-9-_]+, and be less than 128 bytes in length. This is reflected as part of a URL in the metadata server. Additionally, to avoid ambiguity, keys must not conflict with any other metadata keys for the project.
+            },
+          ],
+          "kind": "compute#metadata", # [Output Only] Type of the resource. Always compute#metadata for metadata.
+          "fingerprint": "A String", # Specifies a fingerprint for this request, which is essentially a hash of the metadata's contents and used for optimistic locking. The fingerprint is initially generated by Compute Engine and changes after every request to modify or update metadata. You must always provide an up-to-date fingerprint hash in order to update or change metadata.
+        },
+        "quotas": [ # [Output Only] Quotas assigned to this project.
+          { # A quotas entry.
+            "usage": 3.14, # [Output Only] Current usage of this metric.
+            "metric": "A String", # [Output Only] Name of the quota metric.
+            "limit": 3.14, # [Output Only] Quota limit for this metric.
+          },
+        ],
+        "name": "A String", # The project ID. For example: my-example-project. Use the project ID to make requests to Compute Engine.
+        "usageExportLocation": { # The location in Cloud Storage and naming method of the daily usage report. Contains bucket_name and report_name prefix. # The naming prefix for daily usage reports and the Google Cloud Storage bucket where they are stored.
+          "bucketName": "A String", # The name of an existing bucket in Cloud Storage where the usage report object is stored. The Google Service Account is granted write access to this bucket. This can either be the bucket name by itself, such as example-bucket, or the bucket name with gs:// or https://storage.googleapis.com/ in front of it, such as gs://example-bucket.
+          "reportNamePrefix": "A String", # An optional prefix for the name of the usage report object stored in bucketName. If not supplied, defaults to usage. The report is stored as a CSV file named report_name_prefix_gce_YYYYMMDD.csv where YYYYMMDD is the day of the usage according to Pacific Time. If you supply a prefix, it should conform to Cloud Storage object naming conventions.
+        },
+        "xpnProjectStatus": "A String", # [Output Only] The role this project has in a Cross Project Network (XPN) configuration. Currently only HOST projects are differentiated.
+        "creationTimestamp": "A String", # [Output Only] Creation timestamp in RFC3339 text format.
+        "id": "A String", # [Output Only] The unique identifier for the resource. This identifier is defined by the server. This is not the project ID, and is just a unique ID used by Compute Engine to identify resources.
+        "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
+        "description": "A String", # An optional textual description of the resource.
+      },
+    ],
+    "kind": "compute#xpnHostList", # [Output Only] Type of resource. Always compute#xpnHostList for lists of XPN hosts.
+    "id": "A String", # [Output Only] The unique identifier for the resource. This identifier is defined by the server.
+    "selfLink": "A String", # [Output Only] Server-defined URL for this resource.
+  }</pre>
+</div>
+
+<div class="method">
     <code class="details" id="moveDisk">moveDisk(project, body)</code>
   <pre>Moves a persistent disk from one zone to another.
 
@@ -203,7 +316,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
@@ -274,7 +387,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
@@ -345,7 +458,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
@@ -359,9 +472,9 @@
     The object takes the form of:
 
 { # The location in Cloud Storage and naming method of the daily usage report. Contains bucket_name and report_name prefix.
-    "bucketName": "A String", # The name of an existing bucket in Cloud Storage where the usage report object is stored. The Google Service Account is granted write access to this bucket. This can either be the bucket name by itself, such as example-bucket, or the bucket name with gs:// or https://storage.googleapis.com/ in front of it, such as gs://example-bucket.
-    "reportNamePrefix": "A String", # An optional prefix for the name of the usage report object stored in bucketName. If not supplied, defaults to usage. The report is stored as a CSV file named report_name_prefix_gce_YYYYMMDD.csv where YYYYMMDD is the day of the usage according to Pacific Time. If you supply a prefix, it should conform to Cloud Storage object naming conventions.
-  }
+  "bucketName": "A String", # The name of an existing bucket in Cloud Storage where the usage report object is stored. The Google Service Account is granted write access to this bucket. This can either be the bucket name by itself, such as example-bucket, or the bucket name with gs:// or https://storage.googleapis.com/ in front of it, such as gs://example-bucket.
+  "reportNamePrefix": "A String", # An optional prefix for the name of the usage report object stored in bucketName. If not supplied, defaults to usage. The report is stored as a CSV file named report_name_prefix_gce_YYYYMMDD.csv where YYYYMMDD is the day of the usage according to Pacific Time. If you supply a prefix, it should conform to Cloud Storage object naming conventions.
+}
 
 
 Returns:
@@ -410,7 +523,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
diff --git a/docs/dyn/compute_beta.regionAutoscalers.html b/docs/dyn/compute_beta.regionAutoscalers.html
index 5f54f7e..25815e6 100644
--- a/docs/dyn/compute_beta.regionAutoscalers.html
+++ b/docs/dyn/compute_beta.regionAutoscalers.html
@@ -154,7 +154,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
@@ -328,7 +328,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
@@ -540,7 +540,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
@@ -680,7 +680,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
diff --git a/docs/dyn/compute_beta.regionBackendServices.html b/docs/dyn/compute_beta.regionBackendServices.html
index 0420489..c3ad5ee 100644
--- a/docs/dyn/compute_beta.regionBackendServices.html
+++ b/docs/dyn/compute_beta.regionBackendServices.html
@@ -157,7 +157,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
@@ -193,6 +193,7 @@
       "affinityCookieTtlSec": 42, # Lifetime of cookies in seconds if session_affinity is GENERATED_COOKIE. If set to 0, the cookie is non-persistent and lasts only until the end of the browser session (or equivalent). The maximum allowed value for TTL is one day.
           #
           # When the load balancing scheme is INTERNAL, this field is not used.
+      "id": "A String", # [Output Only] The unique identifier for the resource. This identifier is defined by the server.
       "port": 42, # Deprecated in favor of portName. The TCP port to connect on the backend. The default value is 80.
           #
           # This cannot be used for internal load balancing.
@@ -244,7 +245,12 @@
           #
           # When the protocol is UDP, this field is not used.
       "creationTimestamp": "A String", # [Output Only] Creation timestamp in RFC3339 text format.
-      "id": "A String", # [Output Only] The unique identifier for the resource. This identifier is defined by the server.
+      "iap": { # Identity-Aware Proxy (Cloud Gatekeeper)
+        "oauth2ClientId": "A String",
+        "enabled": True or False,
+        "oauth2ClientSecret": "A String",
+        "oauth2ClientSecretSha256": "A String",
+      },
       "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
       "name": "A String", # Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression [a-z]([-a-z0-9]*[a-z0-9])? which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.
     }</pre>
@@ -312,6 +318,7 @@
     "affinityCookieTtlSec": 42, # Lifetime of cookies in seconds if session_affinity is GENERATED_COOKIE. If set to 0, the cookie is non-persistent and lasts only until the end of the browser session (or equivalent). The maximum allowed value for TTL is one day.
         # 
         # When the load balancing scheme is INTERNAL, this field is not used.
+    "id": "A String", # [Output Only] The unique identifier for the resource. This identifier is defined by the server.
     "port": 42, # Deprecated in favor of portName. The TCP port to connect on the backend. The default value is 80.
         # 
         # This cannot be used for internal load balancing.
@@ -363,7 +370,12 @@
         # 
         # When the protocol is UDP, this field is not used.
     "creationTimestamp": "A String", # [Output Only] Creation timestamp in RFC3339 text format.
-    "id": "A String", # [Output Only] The unique identifier for the resource. This identifier is defined by the server.
+    "iap": { # Identity-Aware Proxy (Cloud Gatekeeper)
+      "oauth2ClientId": "A String",
+      "enabled": True or False,
+      "oauth2ClientSecret": "A String",
+      "oauth2ClientSecretSha256": "A String",
+    },
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
     "name": "A String", # Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression [a-z]([-a-z0-9]*[a-z0-9])? which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.
   }
@@ -415,7 +427,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
@@ -469,6 +481,7 @@
           "affinityCookieTtlSec": 42, # Lifetime of cookies in seconds if session_affinity is GENERATED_COOKIE. If set to 0, the cookie is non-persistent and lasts only until the end of the browser session (or equivalent). The maximum allowed value for TTL is one day.
               #
               # When the load balancing scheme is INTERNAL, this field is not used.
+          "id": "A String", # [Output Only] The unique identifier for the resource. This identifier is defined by the server.
           "port": 42, # Deprecated in favor of portName. The TCP port to connect on the backend. The default value is 80.
               #
               # This cannot be used for internal load balancing.
@@ -520,7 +533,12 @@
               #
               # When the protocol is UDP, this field is not used.
           "creationTimestamp": "A String", # [Output Only] Creation timestamp in RFC3339 text format.
-          "id": "A String", # [Output Only] The unique identifier for the resource. This identifier is defined by the server.
+          "iap": { # Identity-Aware Proxy (Cloud Gatekeeper)
+            "oauth2ClientId": "A String",
+            "enabled": True or False,
+            "oauth2ClientSecret": "A String",
+            "oauth2ClientSecretSha256": "A String",
+          },
           "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
           "name": "A String", # Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression [a-z]([-a-z0-9]*[a-z0-9])? which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.
         },
@@ -576,6 +594,7 @@
     "affinityCookieTtlSec": 42, # Lifetime of cookies in seconds if session_affinity is GENERATED_COOKIE. If set to 0, the cookie is non-persistent and lasts only until the end of the browser session (or equivalent). The maximum allowed value for TTL is one day.
         # 
         # When the load balancing scheme is INTERNAL, this field is not used.
+    "id": "A String", # [Output Only] The unique identifier for the resource. This identifier is defined by the server.
     "port": 42, # Deprecated in favor of portName. The TCP port to connect on the backend. The default value is 80.
         # 
         # This cannot be used for internal load balancing.
@@ -627,7 +646,12 @@
         # 
         # When the protocol is UDP, this field is not used.
     "creationTimestamp": "A String", # [Output Only] Creation timestamp in RFC3339 text format.
-    "id": "A String", # [Output Only] The unique identifier for the resource. This identifier is defined by the server.
+    "iap": { # Identity-Aware Proxy (Cloud Gatekeeper)
+      "oauth2ClientId": "A String",
+      "enabled": True or False,
+      "oauth2ClientSecret": "A String",
+      "oauth2ClientSecretSha256": "A String",
+    },
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
     "name": "A String", # Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression [a-z]([-a-z0-9]*[a-z0-9])? which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.
   }
@@ -679,7 +703,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
@@ -742,6 +766,7 @@
     "affinityCookieTtlSec": 42, # Lifetime of cookies in seconds if session_affinity is GENERATED_COOKIE. If set to 0, the cookie is non-persistent and lasts only until the end of the browser session (or equivalent). The maximum allowed value for TTL is one day.
         # 
         # When the load balancing scheme is INTERNAL, this field is not used.
+    "id": "A String", # [Output Only] The unique identifier for the resource. This identifier is defined by the server.
     "port": 42, # Deprecated in favor of portName. The TCP port to connect on the backend. The default value is 80.
         # 
         # This cannot be used for internal load balancing.
@@ -793,7 +818,12 @@
         # 
         # When the protocol is UDP, this field is not used.
     "creationTimestamp": "A String", # [Output Only] Creation timestamp in RFC3339 text format.
-    "id": "A String", # [Output Only] The unique identifier for the resource. This identifier is defined by the server.
+    "iap": { # Identity-Aware Proxy (Cloud Gatekeeper)
+      "oauth2ClientId": "A String",
+      "enabled": True or False,
+      "oauth2ClientSecret": "A String",
+      "oauth2ClientSecretSha256": "A String",
+    },
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
     "name": "A String", # Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression [a-z]([-a-z0-9]*[a-z0-9])? which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.
   }
@@ -845,7 +875,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
diff --git a/docs/dyn/compute_beta.regionInstanceGroupManagers.html b/docs/dyn/compute_beta.regionInstanceGroupManagers.html
index d481d29..d2f56b6 100644
--- a/docs/dyn/compute_beta.regionInstanceGroupManagers.html
+++ b/docs/dyn/compute_beta.regionInstanceGroupManagers.html
@@ -93,7 +93,7 @@
   <code><a href="#list">list(project, region, orderBy=None, maxResults=None, pageToken=None, filter=None)</a></code></p>
 <p class="firstline">Retrieves the list of managed instance groups that are contained within the specified region.</p>
 <p class="toc_element">
-  <code><a href="#listManagedInstances">listManagedInstances(project, region, instanceGroupManager)</a></code></p>
+  <code><a href="#listManagedInstances">listManagedInstances(project, region, instanceGroupManager, order_by=None, maxResults=None, pageToken=None, filter=None)</a></code></p>
 <p class="firstline">Lists the instances in the managed instance group and instances that are scheduled to be created. The list includes any current actions that the group has scheduled for its instances.</p>
 <p class="toc_element">
   <code><a href="#list_next">list_next(previous_request, previous_response)</a></code></p>
@@ -187,7 +187,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
@@ -246,7 +246,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
@@ -314,7 +314,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
@@ -347,13 +347,14 @@
       "zone": "A String", # [Output Only] The URL of the zone where the managed instance group is located (for zonal resources).
       "autoHealingPolicies": [ # The autohealing policy for this managed instance group. You can specify only one value.
         {
-          "healthCheck": "A String", # The URL for the HealthCheck that signals autohealing.
+          "healthCheck": "A String", # The URL for the health check that signals autohealing.
           "initialDelaySec": 42, # The number of seconds that the managed instance group waits before it applies autohealing policies to new instances or recently recreated instances. This initial delay allows instances to initialize and run their startup scripts before the instance group determines that they are UNHEALTHY. This prevents the managed instance group from recreating its instances prematurely. This value must be from range [0, 3600].
         },
       ],
       "targetSize": 42, # The target number of running instances for this managed instance group. Deleting or abandoning instances reduces this number. Resizing the group changes this number.
       "failoverAction": "A String", # The action to perform in case of zone failure. Only one value is supported, NO_FAILOVER. The default is NO_FAILOVER.
       "instanceGroup": "A String", # [Output Only] The URL of the Instance Group resource.
+      "serviceAccount": "A String", # Service account will be used as credentials for all operations performed by managed instance group on instances. The service accounts needs all permissions required to create and delete instances. When not specified, the service account {projectNumber}@cloudservices.gserviceaccount.com will be used.
       "kind": "compute#instanceGroupManager", # [Output Only] The resource type, which is always compute#instanceGroupManager for managed instance groups.
       "targetPools": [ # The URLs for all TargetPool resources to which instances in the instanceGroup field are added. The target pools automatically apply to all of the instances in the managed instance group.
         "A String",
@@ -402,13 +403,14 @@
     "zone": "A String", # [Output Only] The URL of the zone where the managed instance group is located (for zonal resources).
     "autoHealingPolicies": [ # The autohealing policy for this managed instance group. You can specify only one value.
       {
-        "healthCheck": "A String", # The URL for the HealthCheck that signals autohealing.
+        "healthCheck": "A String", # The URL for the health check that signals autohealing.
         "initialDelaySec": 42, # The number of seconds that the managed instance group waits before it applies autohealing policies to new instances or recently recreated instances. This initial delay allows instances to initialize and run their startup scripts before the instance group determines that they are UNHEALTHY. This prevents the managed instance group from recreating its instances prematurely. This value must be from range [0, 3600].
       },
     ],
     "targetSize": 42, # The target number of running instances for this managed instance group. Deleting or abandoning instances reduces this number. Resizing the group changes this number.
     "failoverAction": "A String", # The action to perform in case of zone failure. Only one value is supported, NO_FAILOVER. The default is NO_FAILOVER.
     "instanceGroup": "A String", # [Output Only] The URL of the Instance Group resource.
+    "serviceAccount": "A String", # Service account will be used as credentials for all operations performed by managed instance group on instances. The service accounts needs all permissions required to create and delete instances. When not specified, the service account {projectNumber}@cloudservices.gserviceaccount.com will be used.
     "kind": "compute#instanceGroupManager", # [Output Only] The resource type, which is always compute#instanceGroupManager for managed instance groups.
     "targetPools": [ # The URLs for all TargetPool resources to which instances in the instanceGroup field are added. The target pools automatically apply to all of the instances in the managed instance group.
       "A String",
@@ -476,7 +478,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
@@ -527,13 +529,14 @@
           "zone": "A String", # [Output Only] The URL of the zone where the managed instance group is located (for zonal resources).
           "autoHealingPolicies": [ # The autohealing policy for this managed instance group. You can specify only one value.
             {
-              "healthCheck": "A String", # The URL for the HealthCheck that signals autohealing.
+              "healthCheck": "A String", # The URL for the health check that signals autohealing.
               "initialDelaySec": 42, # The number of seconds that the managed instance group waits before it applies autohealing policies to new instances or recently recreated instances. This initial delay allows instances to initialize and run their startup scripts before the instance group determines that they are UNHEALTHY. This prevents the managed instance group from recreating its instances prematurely. This value must be from range [0, 3600].
             },
           ],
           "targetSize": 42, # The target number of running instances for this managed instance group. Deleting or abandoning instances reduces this number. Resizing the group changes this number.
           "failoverAction": "A String", # The action to perform in case of zone failure. Only one value is supported, NO_FAILOVER. The default is NO_FAILOVER.
           "instanceGroup": "A String", # [Output Only] The URL of the Instance Group resource.
+          "serviceAccount": "A String", # Service account will be used as credentials for all operations performed by managed instance group on instances. The service accounts needs all permissions required to create and delete instances. When not specified, the service account {projectNumber}@cloudservices.gserviceaccount.com will be used.
           "kind": "compute#instanceGroupManager", # [Output Only] The resource type, which is always compute#instanceGroupManager for managed instance groups.
           "targetPools": [ # The URLs for all TargetPool resources to which instances in the instanceGroup field are added. The target pools automatically apply to all of the instances in the managed instance group.
             "A String",
@@ -561,13 +564,17 @@
 </div>
 
 <div class="method">
-    <code class="details" id="listManagedInstances">listManagedInstances(project, region, instanceGroupManager)</code>
+    <code class="details" id="listManagedInstances">listManagedInstances(project, region, instanceGroupManager, order_by=None, maxResults=None, pageToken=None, filter=None)</code>
   <pre>Lists the instances in the managed instance group and instances that are scheduled to be created. The list includes any current actions that the group has scheduled for its instances.
 
 Args:
   project: string, Project ID for this request. (required)
   region: string, Name of the region scoping this request. (required)
   instanceGroupManager: string, The name of the managed instance group. (required)
+  order_by: string, A parameter
+  maxResults: integer, A parameter
+  pageToken: string, A parameter
+  filter: string, A parameter
 
 Returns:
   An object of the form:
@@ -645,13 +652,14 @@
     "zone": "A String", # [Output Only] The URL of the zone where the managed instance group is located (for zonal resources).
     "autoHealingPolicies": [ # The autohealing policy for this managed instance group. You can specify only one value.
       {
-        "healthCheck": "A String", # The URL for the HealthCheck that signals autohealing.
+        "healthCheck": "A String", # The URL for the health check that signals autohealing.
         "initialDelaySec": 42, # The number of seconds that the managed instance group waits before it applies autohealing policies to new instances or recently recreated instances. This initial delay allows instances to initialize and run their startup scripts before the instance group determines that they are UNHEALTHY. This prevents the managed instance group from recreating its instances prematurely. This value must be from range [0, 3600].
       },
     ],
     "targetSize": 42, # The target number of running instances for this managed instance group. Deleting or abandoning instances reduces this number. Resizing the group changes this number.
     "failoverAction": "A String", # The action to perform in case of zone failure. Only one value is supported, NO_FAILOVER. The default is NO_FAILOVER.
     "instanceGroup": "A String", # [Output Only] The URL of the Instance Group resource.
+    "serviceAccount": "A String", # Service account will be used as credentials for all operations performed by managed instance group on instances. The service accounts needs all permissions required to create and delete instances. When not specified, the service account {projectNumber}@cloudservices.gserviceaccount.com will be used.
     "kind": "compute#instanceGroupManager", # [Output Only] The resource type, which is always compute#instanceGroupManager for managed instance groups.
     "targetPools": [ # The URLs for all TargetPool resources to which instances in the instanceGroup field are added. The target pools automatically apply to all of the instances in the managed instance group.
       "A String",
@@ -719,7 +727,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
@@ -787,7 +795,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
@@ -847,7 +855,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
@@ -865,7 +873,7 @@
 {
     "autoHealingPolicies": [
       {
-        "healthCheck": "A String", # The URL for the HealthCheck that signals autohealing.
+        "healthCheck": "A String", # The URL for the health check that signals autohealing.
         "initialDelaySec": 42, # The number of seconds that the managed instance group waits before it applies autohealing policies to new instances or recently recreated instances. This initial delay allows instances to initialize and run their startup scripts before the instance group determines that they are UNHEALTHY. This prevents the managed instance group from recreating its instances prematurely. This value must be from range [0, 3600].
       },
     ],
@@ -918,7 +926,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
@@ -984,7 +992,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
@@ -1053,7 +1061,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
@@ -1113,13 +1121,14 @@
     "zone": "A String", # [Output Only] The URL of the zone where the managed instance group is located (for zonal resources).
     "autoHealingPolicies": [ # The autohealing policy for this managed instance group. You can specify only one value.
       {
-        "healthCheck": "A String", # The URL for the HealthCheck that signals autohealing.
+        "healthCheck": "A String", # The URL for the health check that signals autohealing.
         "initialDelaySec": 42, # The number of seconds that the managed instance group waits before it applies autohealing policies to new instances or recently recreated instances. This initial delay allows instances to initialize and run their startup scripts before the instance group determines that they are UNHEALTHY. This prevents the managed instance group from recreating its instances prematurely. This value must be from range [0, 3600].
       },
     ],
     "targetSize": 42, # The target number of running instances for this managed instance group. Deleting or abandoning instances reduces this number. Resizing the group changes this number.
     "failoverAction": "A String", # The action to perform in case of zone failure. Only one value is supported, NO_FAILOVER. The default is NO_FAILOVER.
     "instanceGroup": "A String", # [Output Only] The URL of the Instance Group resource.
+    "serviceAccount": "A String", # Service account will be used as credentials for all operations performed by managed instance group on instances. The service accounts needs all permissions required to create and delete instances. When not specified, the service account {projectNumber}@cloudservices.gserviceaccount.com will be used.
     "kind": "compute#instanceGroupManager", # [Output Only] The resource type, which is always compute#instanceGroupManager for managed instance groups.
     "targetPools": [ # The URLs for all TargetPool resources to which instances in the instanceGroup field are added. The target pools automatically apply to all of the instances in the managed instance group.
       "A String",
@@ -1187,7 +1196,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
diff --git a/docs/dyn/compute_beta.regionInstanceGroups.html b/docs/dyn/compute_beta.regionInstanceGroups.html
index 6710238..bee2fa4 100644
--- a/docs/dyn/compute_beta.regionInstanceGroups.html
+++ b/docs/dyn/compute_beta.regionInstanceGroups.html
@@ -347,7 +347,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
diff --git a/docs/dyn/compute_beta.regionOperations.html b/docs/dyn/compute_beta.regionOperations.html
index d63320d..c5c5eb5 100644
--- a/docs/dyn/compute_beta.regionOperations.html
+++ b/docs/dyn/compute_beta.regionOperations.html
@@ -153,7 +153,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
@@ -230,7 +230,7 @@
         },
         "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
         "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-        "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+        "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
       },
     ],
     "kind": "compute#operationList", # [Output Only] Type of resource. Always compute#operations for Operations resource.
diff --git a/docs/dyn/compute_beta.regions.html b/docs/dyn/compute_beta.regions.html
index a64166b..f4021c0 100644
--- a/docs/dyn/compute_beta.regions.html
+++ b/docs/dyn/compute_beta.regions.html
@@ -100,10 +100,10 @@
     "kind": "compute#region", # [Output Only] Type of the resource. Always compute#region for regions.
     "description": "A String", # [Output Only] Textual description of the resource.
     "deprecated": { # Deprecation status for a public resource. # [Output Only] The deprecation status associated with this region.
-      "deleted": "A String", # An optional RFC3339 timestamp on or after which the deprecation state of this resource will be changed to DELETED.
-      "deprecated": "A String", # An optional RFC3339 timestamp on or after which the deprecation state of this resource will be changed to DEPRECATED.
+      "deleted": "A String", # An optional RFC3339 timestamp on or after which the state of this resource is intended to change to DELETED. This is only informational and the status will not change unless the client explicitly changes it.
+      "deprecated": "A String", # An optional RFC3339 timestamp on or after which the state of this resource is intended to change to DEPRECATED. This is only informational and the status will not change unless the client explicitly changes it.
       "state": "A String", # The deprecation state of this resource. This can be DEPRECATED, OBSOLETE, or DELETED. Operations which create a new resource using a DEPRECATED resource will return successfully, but with a warning indicating the deprecated resource and recommending its replacement. Operations which use OBSOLETE or DELETED resources will be rejected and result in an error.
-      "obsolete": "A String", # An optional RFC3339 timestamp on or after which the deprecation state of this resource will be changed to OBSOLETE.
+      "obsolete": "A String", # An optional RFC3339 timestamp on or after which the state of this resource is intended to change to OBSOLETE. This is only informational and the status will not change unless the client explicitly changes it.
       "replacement": "A String", # The URL of the suggested replacement for a deprecated resource. The suggested replacement resource must be the same kind of resource as the deprecated resource.
     },
     "quotas": [ # [Output Only] Quotas assigned to this region.
@@ -157,10 +157,10 @@
         "kind": "compute#region", # [Output Only] Type of the resource. Always compute#region for regions.
         "description": "A String", # [Output Only] Textual description of the resource.
         "deprecated": { # Deprecation status for a public resource. # [Output Only] The deprecation status associated with this region.
-          "deleted": "A String", # An optional RFC3339 timestamp on or after which the deprecation state of this resource will be changed to DELETED.
-          "deprecated": "A String", # An optional RFC3339 timestamp on or after which the deprecation state of this resource will be changed to DEPRECATED.
+          "deleted": "A String", # An optional RFC3339 timestamp on or after which the state of this resource is intended to change to DELETED. This is only informational and the status will not change unless the client explicitly changes it.
+          "deprecated": "A String", # An optional RFC3339 timestamp on or after which the state of this resource is intended to change to DEPRECATED. This is only informational and the status will not change unless the client explicitly changes it.
           "state": "A String", # The deprecation state of this resource. This can be DEPRECATED, OBSOLETE, or DELETED. Operations which create a new resource using a DEPRECATED resource will return successfully, but with a warning indicating the deprecated resource and recommending its replacement. Operations which use OBSOLETE or DELETED resources will be rejected and result in an error.
-          "obsolete": "A String", # An optional RFC3339 timestamp on or after which the deprecation state of this resource will be changed to OBSOLETE.
+          "obsolete": "A String", # An optional RFC3339 timestamp on or after which the state of this resource is intended to change to OBSOLETE. This is only informational and the status will not change unless the client explicitly changes it.
           "replacement": "A String", # The URL of the suggested replacement for a deprecated resource. The suggested replacement resource must be the same kind of resource as the deprecated resource.
         },
         "quotas": [ # [Output Only] Quotas assigned to this region.
diff --git a/docs/dyn/compute_beta.routers.html b/docs/dyn/compute_beta.routers.html
index 67e9b94..487170d 100644
--- a/docs/dyn/compute_beta.routers.html
+++ b/docs/dyn/compute_beta.routers.html
@@ -261,7 +261,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
@@ -508,7 +508,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
@@ -682,7 +682,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
@@ -883,7 +883,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
diff --git a/docs/dyn/compute_beta.routes.html b/docs/dyn/compute_beta.routes.html
index 716a9c3..df70554 100644
--- a/docs/dyn/compute_beta.routes.html
+++ b/docs/dyn/compute_beta.routes.html
@@ -147,7 +147,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
@@ -295,7 +295,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
diff --git a/docs/dyn/compute_beta.snapshots.html b/docs/dyn/compute_beta.snapshots.html
index 939724b..f3e7e7b 100644
--- a/docs/dyn/compute_beta.snapshots.html
+++ b/docs/dyn/compute_beta.snapshots.html
@@ -149,7 +149,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
@@ -378,7 +378,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
diff --git a/docs/dyn/compute_beta.sslCertificates.html b/docs/dyn/compute_beta.sslCertificates.html
index 8802b04..3fe340f 100644
--- a/docs/dyn/compute_beta.sslCertificates.html
+++ b/docs/dyn/compute_beta.sslCertificates.html
@@ -147,7 +147,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
@@ -166,7 +166,7 @@
       "kind": "compute#sslCertificate", # [Output Only] Type of the resource. Always compute#sslCertificate for SSL certificates.
       "name": "A String", # Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression [a-z]([-a-z0-9]*[a-z0-9])? which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.
       "certificate": "A String", # A local certificate file. The certificate must be in PEM format. The certificate chain must be no greater than 5 certs long. The chain must include at least one intermediate cert.
-      "privateKey": "A String", # A write-only private key in PEM format. Only insert RPCs will include this field.
+      "privateKey": "A String", # A write-only private key in PEM format. Only insert requests will include this field.
       "creationTimestamp": "A String", # [Output Only] Creation timestamp in RFC3339 text format.
       "id": "A String", # [Output Only] The unique identifier for the resource. This identifier is defined by the server.
       "selfLink": "A String", # [Output only] Server-defined URL for the resource.
@@ -187,7 +187,7 @@
     "kind": "compute#sslCertificate", # [Output Only] Type of the resource. Always compute#sslCertificate for SSL certificates.
     "name": "A String", # Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression [a-z]([-a-z0-9]*[a-z0-9])? which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.
     "certificate": "A String", # A local certificate file. The certificate must be in PEM format. The certificate chain must be no greater than 5 certs long. The chain must include at least one intermediate cert.
-    "privateKey": "A String", # A write-only private key in PEM format. Only insert RPCs will include this field.
+    "privateKey": "A String", # A write-only private key in PEM format. Only insert requests will include this field.
     "creationTimestamp": "A String", # [Output Only] Creation timestamp in RFC3339 text format.
     "id": "A String", # [Output Only] The unique identifier for the resource. This identifier is defined by the server.
     "selfLink": "A String", # [Output only] Server-defined URL for the resource.
@@ -241,7 +241,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
@@ -278,7 +278,7 @@
           "kind": "compute#sslCertificate", # [Output Only] Type of the resource. Always compute#sslCertificate for SSL certificates.
           "name": "A String", # Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression [a-z]([-a-z0-9]*[a-z0-9])? which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.
           "certificate": "A String", # A local certificate file. The certificate must be in PEM format. The certificate chain must be no greater than 5 certs long. The chain must include at least one intermediate cert.
-          "privateKey": "A String", # A write-only private key in PEM format. Only insert RPCs will include this field.
+          "privateKey": "A String", # A write-only private key in PEM format. Only insert requests will include this field.
           "creationTimestamp": "A String", # [Output Only] Creation timestamp in RFC3339 text format.
           "id": "A String", # [Output Only] The unique identifier for the resource. This identifier is defined by the server.
           "selfLink": "A String", # [Output only] Server-defined URL for the resource.
diff --git a/docs/dyn/compute_beta.subnetworks.html b/docs/dyn/compute_beta.subnetworks.html
index 8190ee3..cf8e71b 100644
--- a/docs/dyn/compute_beta.subnetworks.html
+++ b/docs/dyn/compute_beta.subnetworks.html
@@ -90,6 +90,9 @@
   <code><a href="#get">get(project, region, subnetwork)</a></code></p>
 <p class="firstline">Returns the specified subnetwork. Get a list of available subnetworks list() request.</p>
 <p class="toc_element">
+  <code><a href="#getIamPolicy">getIamPolicy(project, region, resource)</a></code></p>
+<p class="firstline">Gets the access control policy for a resource. May be empty if no such policy or resource exists.</p>
+<p class="toc_element">
   <code><a href="#insert">insert(project, region, body)</a></code></p>
 <p class="firstline">Creates a subnetwork in the specified project using the data included in the request.</p>
 <p class="toc_element">
@@ -99,6 +102,9 @@
   <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="#setIamPolicy">setIamPolicy(project, region, resource, body)</a></code></p>
+<p class="firstline">Sets the access control policy on the specified resource. Replaces any existing policy.</p>
+<p class="toc_element">
   <code><a href="#testIamPermissions">testIamPermissions(project, region, resource, body)</a></code></p>
 <p class="firstline">Returns permissions that a caller has on the specified resource.</p>
 <h3>Method Details</h3>
@@ -234,7 +240,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
@@ -300,7 +306,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
@@ -331,6 +337,112 @@
 </div>
 
 <div class="method">
+    <code class="details" id="getIamPolicy">getIamPolicy(project, region, resource)</code>
+  <pre>Gets the access control policy for a resource. May be empty if no such policy or resource exists.
+
+Args:
+  project: string, Project ID for this request. (required)
+  region: string, The name of the region for this request. (required)
+  resource: string, Name of the resource for this request. (required)
+
+Returns:
+  An object of the form:
+
+    { # Defines an Identity and Access Management (IAM) policy. It is used to specify access control policies for Cloud Platform resources.
+      #
+      #
+      #
+      # A `Policy` consists of a list of `bindings`. A `Binding` binds a list of `members` to a `role`, where the members can be user accounts, Google groups, Google domains, and service accounts. A `role` is a named list of permissions defined by IAM.
+      #
+      # **Example**
+      #
+      # { "bindings": [ { "role": "roles/owner", "members": [ "user:mike@example.com", "group:admins@example.com", "domain:google.com", "serviceAccount:my-other-app@appspot.gserviceaccount.com", ] }, { "role": "roles/viewer", "members": ["user:sean@example.com"] } ] }
+      #
+      # For a description of IAM and its features, see the [IAM developer's guide](https://cloud.google.com/iam).
+    "auditConfigs": [ # Specifies audit logging configs for "data access". "data access": generally refers to data reads/writes and admin reads. "admin activity": generally refers to admin writes.
+        #
+        # Note: `AuditConfig` doesn't apply to "admin activity", which always enables audit logging.
+      { # Provides the configuration for non-admin_activity logging for a service. Controls exemptions and specific log sub-types.
+        "exemptedMembers": [ # Specifies the identities that are exempted from "data access" audit logging for the `service` specified above. Follows the same format of Binding.members.
+          "A String",
+        ],
+        "auditLogConfigs": [ # The configuration for each type of logging
+          { # Provides the configuration for a sub-type of logging.
+            "exemptedMembers": [ # Specifies the identities that are exempted from this type of logging Follows the same format of Binding.members.
+              "A String",
+            ],
+            "logType": "A String", # The log type that this config enables.
+          },
+        ],
+        "service": "A String", # Specifies a service that will be enabled for audit logging. For example, `resourcemanager`, `storage`, `compute`. `allServices` is a special value that covers all services.
+      },
+    ],
+    "rules": [ # If more than one rule is specified, the rules are applied in the following manner: - All matching LOG rules are always applied. - If any DENY/DENY_WITH_LOG rule matches, permission is denied. Logging will be applied if one or more matching rule requires logging. - Otherwise, if any ALLOW/ALLOW_WITH_LOG rule matches, permission is granted. Logging will be applied if one or more matching rule requires logging. - Otherwise, if no rule applies, permission is denied.
+      { # A rule to be applied in a Policy.
+        "logConfigs": [ # The config returned to callers of tech.iam.IAM.CheckPolicy for any entries that match the LOG action.
+          { # Specifies what kind of log the caller must write
+            "counter": { # Options for counters # Counter options.
+              "field": "A String", # The field value to attribute.
+              "metric": "A String", # The metric to update.
+            },
+          },
+        ],
+        "notIns": [ # If one or more 'not_in' clauses are specified, the rule matches if the PRINCIPAL/AUTHORITY_SELECTOR is in none of the entries.
+          "A String",
+        ],
+        "ins": [ # If one or more 'in' clauses are specified, the rule matches if the PRINCIPAL/AUTHORITY_SELECTOR is in at least one of these entries.
+          "A String",
+        ],
+        "action": "A String", # Required
+        "permissions": [ # A permission is a string of form '..' (e.g., 'storage.buckets.list'). A value of '*' matches all permissions, and a verb part of '*' (e.g., 'storage.buckets.*') matches all verbs.
+          "A String",
+        ],
+        "conditions": [ # Additional restrictions that must be met
+          { # A condition to be met.
+            "iam": "A String", # Trusted attributes supplied by the IAM system.
+            "svc": "A String", # Trusted attributes discharged by the service.
+            "value": "A String", # DEPRECATED. Use 'values' instead.
+            "sys": "A String", # Trusted attributes supplied by any service that owns resources and uses the IAM system for access control.
+            "values": [ # The objects of the condition. This is mutually exclusive with 'value'.
+              "A String",
+            ],
+            "op": "A String", # An operator to apply the subject with.
+          },
+        ],
+        "description": "A String", # Human-readable description of the rule.
+      },
+    ],
+    "version": 42, # Version of the `Policy`. The default version is 0.
+    "etag": "A String", # `etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy.
+        #
+        # If no `etag` is provided in the call to `setIamPolicy`, then the existing policy is overwritten blindly.
+    "bindings": [ # Associates a list of `members` to a `role`. Multiple `bindings` must not be specified for the same `role`. `bindings` with no members will result in an error.
+      { # Associates `members` with a `role`.
+        "role": "A String", # Role that is assigned to `members`. For example, `roles/viewer`, `roles/editor`, or `roles/owner`.
+        "members": [ # Specifies the identities requesting access for a Cloud Platform resource. `members` can have the following values:
+            #
+            # * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account.
+            #
+            # * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account.
+            #
+            # * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@gmail.com` or `joe@example.com`.
+            #
+            #
+            #
+            # * `serviceAccount:{emailid}`: An email address that represents a service account. For example, `my-other-app@appspot.gserviceaccount.com`.
+            #
+            # * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`.
+            #
+            # * `domain:{domain}`: A Google Apps domain name that represents all the users of that domain. For example, `google.com` or `example.com`.
+          "A String",
+        ],
+      },
+    ],
+    "iamOwned": True or False,
+  }</pre>
+</div>
+
+<div class="method">
     <code class="details" id="insert">insert(project, region, body)</code>
   <pre>Creates a subnetwork in the specified project using the data included in the request.
 
@@ -400,7 +512,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
@@ -468,6 +580,208 @@
 </div>
 
 <div class="method">
+    <code class="details" id="setIamPolicy">setIamPolicy(project, region, resource, body)</code>
+  <pre>Sets the access control policy on the specified resource. Replaces any existing policy.
+
+Args:
+  project: string, Project ID for this request. (required)
+  region: string, The name of the region for this request. (required)
+  resource: string, Name of the resource for this request. (required)
+  body: object, The request body. (required)
+    The object takes the form of:
+
+{ # Defines an Identity and Access Management (IAM) policy. It is used to specify access control policies for Cloud Platform resources.
+    # 
+    # 
+    # 
+    # A `Policy` consists of a list of `bindings`. A `Binding` binds a list of `members` to a `role`, where the members can be user accounts, Google groups, Google domains, and service accounts. A `role` is a named list of permissions defined by IAM.
+    # 
+    # **Example**
+    # 
+    # { "bindings": [ { "role": "roles/owner", "members": [ "user:mike@example.com", "group:admins@example.com", "domain:google.com", "serviceAccount:my-other-app@appspot.gserviceaccount.com", ] }, { "role": "roles/viewer", "members": ["user:sean@example.com"] } ] }
+    # 
+    # For a description of IAM and its features, see the [IAM developer's guide](https://cloud.google.com/iam).
+  "auditConfigs": [ # Specifies audit logging configs for "data access". "data access": generally refers to data reads/writes and admin reads. "admin activity": generally refers to admin writes.
+      # 
+      # Note: `AuditConfig` doesn't apply to "admin activity", which always enables audit logging.
+    { # Provides the configuration for non-admin_activity logging for a service. Controls exemptions and specific log sub-types.
+      "exemptedMembers": [ # Specifies the identities that are exempted from "data access" audit logging for the `service` specified above. Follows the same format of Binding.members.
+        "A String",
+      ],
+      "auditLogConfigs": [ # The configuration for each type of logging
+        { # Provides the configuration for a sub-type of logging.
+          "exemptedMembers": [ # Specifies the identities that are exempted from this type of logging Follows the same format of Binding.members.
+            "A String",
+          ],
+          "logType": "A String", # The log type that this config enables.
+        },
+      ],
+      "service": "A String", # Specifies a service that will be enabled for audit logging. For example, `resourcemanager`, `storage`, `compute`. `allServices` is a special value that covers all services.
+    },
+  ],
+  "rules": [ # If more than one rule is specified, the rules are applied in the following manner: - All matching LOG rules are always applied. - If any DENY/DENY_WITH_LOG rule matches, permission is denied. Logging will be applied if one or more matching rule requires logging. - Otherwise, if any ALLOW/ALLOW_WITH_LOG rule matches, permission is granted. Logging will be applied if one or more matching rule requires logging. - Otherwise, if no rule applies, permission is denied.
+    { # A rule to be applied in a Policy.
+      "logConfigs": [ # The config returned to callers of tech.iam.IAM.CheckPolicy for any entries that match the LOG action.
+        { # Specifies what kind of log the caller must write
+          "counter": { # Options for counters # Counter options.
+            "field": "A String", # The field value to attribute.
+            "metric": "A String", # The metric to update.
+          },
+        },
+      ],
+      "notIns": [ # If one or more 'not_in' clauses are specified, the rule matches if the PRINCIPAL/AUTHORITY_SELECTOR is in none of the entries.
+        "A String",
+      ],
+      "ins": [ # If one or more 'in' clauses are specified, the rule matches if the PRINCIPAL/AUTHORITY_SELECTOR is in at least one of these entries.
+        "A String",
+      ],
+      "action": "A String", # Required
+      "permissions": [ # A permission is a string of form '..' (e.g., 'storage.buckets.list'). A value of '*' matches all permissions, and a verb part of '*' (e.g., 'storage.buckets.*') matches all verbs.
+        "A String",
+      ],
+      "conditions": [ # Additional restrictions that must be met
+        { # A condition to be met.
+          "iam": "A String", # Trusted attributes supplied by the IAM system.
+          "svc": "A String", # Trusted attributes discharged by the service.
+          "value": "A String", # DEPRECATED. Use 'values' instead.
+          "sys": "A String", # Trusted attributes supplied by any service that owns resources and uses the IAM system for access control.
+          "values": [ # The objects of the condition. This is mutually exclusive with 'value'.
+            "A String",
+          ],
+          "op": "A String", # An operator to apply the subject with.
+        },
+      ],
+      "description": "A String", # Human-readable description of the rule.
+    },
+  ],
+  "version": 42, # Version of the `Policy`. The default version is 0.
+  "etag": "A String", # `etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy.
+      # 
+      # If no `etag` is provided in the call to `setIamPolicy`, then the existing policy is overwritten blindly.
+  "bindings": [ # Associates a list of `members` to a `role`. Multiple `bindings` must not be specified for the same `role`. `bindings` with no members will result in an error.
+    { # Associates `members` with a `role`.
+      "role": "A String", # Role that is assigned to `members`. For example, `roles/viewer`, `roles/editor`, or `roles/owner`.
+      "members": [ # Specifies the identities requesting access for a Cloud Platform resource. `members` can have the following values:
+          #
+          # * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account.
+          #
+          # * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account.
+          #
+          # * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@gmail.com` or `joe@example.com`.
+          #
+          #
+          #
+          # * `serviceAccount:{emailid}`: An email address that represents a service account. For example, `my-other-app@appspot.gserviceaccount.com`.
+          #
+          # * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`.
+          #
+          # * `domain:{domain}`: A Google Apps domain name that represents all the users of that domain. For example, `google.com` or `example.com`.
+        "A String",
+      ],
+    },
+  ],
+  "iamOwned": True or False,
+}
+
+
+Returns:
+  An object of the form:
+
+    { # Defines an Identity and Access Management (IAM) policy. It is used to specify access control policies for Cloud Platform resources.
+      #
+      #
+      #
+      # A `Policy` consists of a list of `bindings`. A `Binding` binds a list of `members` to a `role`, where the members can be user accounts, Google groups, Google domains, and service accounts. A `role` is a named list of permissions defined by IAM.
+      #
+      # **Example**
+      #
+      # { "bindings": [ { "role": "roles/owner", "members": [ "user:mike@example.com", "group:admins@example.com", "domain:google.com", "serviceAccount:my-other-app@appspot.gserviceaccount.com", ] }, { "role": "roles/viewer", "members": ["user:sean@example.com"] } ] }
+      #
+      # For a description of IAM and its features, see the [IAM developer's guide](https://cloud.google.com/iam).
+    "auditConfigs": [ # Specifies audit logging configs for "data access". "data access": generally refers to data reads/writes and admin reads. "admin activity": generally refers to admin writes.
+        #
+        # Note: `AuditConfig` doesn't apply to "admin activity", which always enables audit logging.
+      { # Provides the configuration for non-admin_activity logging for a service. Controls exemptions and specific log sub-types.
+        "exemptedMembers": [ # Specifies the identities that are exempted from "data access" audit logging for the `service` specified above. Follows the same format of Binding.members.
+          "A String",
+        ],
+        "auditLogConfigs": [ # The configuration for each type of logging
+          { # Provides the configuration for a sub-type of logging.
+            "exemptedMembers": [ # Specifies the identities that are exempted from this type of logging Follows the same format of Binding.members.
+              "A String",
+            ],
+            "logType": "A String", # The log type that this config enables.
+          },
+        ],
+        "service": "A String", # Specifies a service that will be enabled for audit logging. For example, `resourcemanager`, `storage`, `compute`. `allServices` is a special value that covers all services.
+      },
+    ],
+    "rules": [ # If more than one rule is specified, the rules are applied in the following manner: - All matching LOG rules are always applied. - If any DENY/DENY_WITH_LOG rule matches, permission is denied. Logging will be applied if one or more matching rule requires logging. - Otherwise, if any ALLOW/ALLOW_WITH_LOG rule matches, permission is granted. Logging will be applied if one or more matching rule requires logging. - Otherwise, if no rule applies, permission is denied.
+      { # A rule to be applied in a Policy.
+        "logConfigs": [ # The config returned to callers of tech.iam.IAM.CheckPolicy for any entries that match the LOG action.
+          { # Specifies what kind of log the caller must write
+            "counter": { # Options for counters # Counter options.
+              "field": "A String", # The field value to attribute.
+              "metric": "A String", # The metric to update.
+            },
+          },
+        ],
+        "notIns": [ # If one or more 'not_in' clauses are specified, the rule matches if the PRINCIPAL/AUTHORITY_SELECTOR is in none of the entries.
+          "A String",
+        ],
+        "ins": [ # If one or more 'in' clauses are specified, the rule matches if the PRINCIPAL/AUTHORITY_SELECTOR is in at least one of these entries.
+          "A String",
+        ],
+        "action": "A String", # Required
+        "permissions": [ # A permission is a string of form '..' (e.g., 'storage.buckets.list'). A value of '*' matches all permissions, and a verb part of '*' (e.g., 'storage.buckets.*') matches all verbs.
+          "A String",
+        ],
+        "conditions": [ # Additional restrictions that must be met
+          { # A condition to be met.
+            "iam": "A String", # Trusted attributes supplied by the IAM system.
+            "svc": "A String", # Trusted attributes discharged by the service.
+            "value": "A String", # DEPRECATED. Use 'values' instead.
+            "sys": "A String", # Trusted attributes supplied by any service that owns resources and uses the IAM system for access control.
+            "values": [ # The objects of the condition. This is mutually exclusive with 'value'.
+              "A String",
+            ],
+            "op": "A String", # An operator to apply the subject with.
+          },
+        ],
+        "description": "A String", # Human-readable description of the rule.
+      },
+    ],
+    "version": 42, # Version of the `Policy`. The default version is 0.
+    "etag": "A String", # `etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy.
+        #
+        # If no `etag` is provided in the call to `setIamPolicy`, then the existing policy is overwritten blindly.
+    "bindings": [ # Associates a list of `members` to a `role`. Multiple `bindings` must not be specified for the same `role`. `bindings` with no members will result in an error.
+      { # Associates `members` with a `role`.
+        "role": "A String", # Role that is assigned to `members`. For example, `roles/viewer`, `roles/editor`, or `roles/owner`.
+        "members": [ # Specifies the identities requesting access for a Cloud Platform resource. `members` can have the following values:
+            #
+            # * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account.
+            #
+            # * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account.
+            #
+            # * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@gmail.com` or `joe@example.com`.
+            #
+            #
+            #
+            # * `serviceAccount:{emailid}`: An email address that represents a service account. For example, `my-other-app@appspot.gserviceaccount.com`.
+            #
+            # * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`.
+            #
+            # * `domain:{domain}`: A Google Apps domain name that represents all the users of that domain. For example, `google.com` or `example.com`.
+          "A String",
+        ],
+      },
+    ],
+    "iamOwned": True or False,
+  }</pre>
+</div>
+
+<div class="method">
     <code class="details" id="testIamPermissions">testIamPermissions(project, region, resource, body)</code>
   <pre>Returns permissions that a caller has on the specified resource.
 
diff --git a/docs/dyn/compute_beta.targetHttpProxies.html b/docs/dyn/compute_beta.targetHttpProxies.html
index 5afb30d..8198d37 100644
--- a/docs/dyn/compute_beta.targetHttpProxies.html
+++ b/docs/dyn/compute_beta.targetHttpProxies.html
@@ -150,7 +150,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
@@ -242,7 +242,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
@@ -366,7 +366,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
diff --git a/docs/dyn/compute_beta.targetHttpsProxies.html b/docs/dyn/compute_beta.targetHttpsProxies.html
index 0a10a21..e449963 100644
--- a/docs/dyn/compute_beta.targetHttpsProxies.html
+++ b/docs/dyn/compute_beta.targetHttpsProxies.html
@@ -153,7 +153,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
@@ -257,7 +257,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
@@ -389,7 +389,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
@@ -454,7 +454,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
diff --git a/docs/dyn/compute_beta.targetInstances.html b/docs/dyn/compute_beta.targetInstances.html
index ebf0ab1..b444c55 100644
--- a/docs/dyn/compute_beta.targetInstances.html
+++ b/docs/dyn/compute_beta.targetInstances.html
@@ -233,7 +233,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
@@ -337,7 +337,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
diff --git a/docs/dyn/compute_beta.targetPools.html b/docs/dyn/compute_beta.targetPools.html
index 600684f..5d4d2a1 100644
--- a/docs/dyn/compute_beta.targetPools.html
+++ b/docs/dyn/compute_beta.targetPools.html
@@ -186,7 +186,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
@@ -259,7 +259,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
@@ -412,7 +412,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
@@ -578,7 +578,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
@@ -734,7 +734,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
@@ -804,7 +804,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
@@ -871,7 +871,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
diff --git a/docs/dyn/compute_beta.targetSslProxies.html b/docs/dyn/compute_beta.targetSslProxies.html
index a6b2724..c44d4ee 100644
--- a/docs/dyn/compute_beta.targetSslProxies.html
+++ b/docs/dyn/compute_beta.targetSslProxies.html
@@ -156,7 +156,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
@@ -256,7 +256,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
@@ -384,7 +384,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
@@ -449,7 +449,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
@@ -516,7 +516,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
diff --git a/docs/dyn/compute_beta.targetVpnGateways.html b/docs/dyn/compute_beta.targetVpnGateways.html
index b883dcc..9cbcf15 100644
--- a/docs/dyn/compute_beta.targetVpnGateways.html
+++ b/docs/dyn/compute_beta.targetVpnGateways.html
@@ -236,7 +236,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
@@ -346,7 +346,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
diff --git a/docs/dyn/compute_beta.urlMaps.html b/docs/dyn/compute_beta.urlMaps.html
index bfa777b..4ca0cb4 100644
--- a/docs/dyn/compute_beta.urlMaps.html
+++ b/docs/dyn/compute_beta.urlMaps.html
@@ -159,7 +159,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
@@ -323,7 +323,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
@@ -339,6 +339,7 @@
 
 {
     "path": "A String",
+    "host": "A String", # If set, this invalidation rule will only apply to requests with a Host header matching host.
   }
 
 
@@ -388,7 +389,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
@@ -590,7 +591,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
@@ -724,7 +725,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
diff --git a/docs/dyn/compute_beta.vpnTunnels.html b/docs/dyn/compute_beta.vpnTunnels.html
index aca6af1..beae6b9 100644
--- a/docs/dyn/compute_beta.vpnTunnels.html
+++ b/docs/dyn/compute_beta.vpnTunnels.html
@@ -242,7 +242,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
@@ -364,7 +364,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
diff --git a/docs/dyn/compute_beta.zoneOperations.html b/docs/dyn/compute_beta.zoneOperations.html
index f049ccb..7de36ce 100644
--- a/docs/dyn/compute_beta.zoneOperations.html
+++ b/docs/dyn/compute_beta.zoneOperations.html
@@ -153,7 +153,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
@@ -230,7 +230,7 @@
         },
         "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
         "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-        "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+        "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
       },
     ],
     "kind": "compute#operationList", # [Output Only] Type of resource. Always compute#operations for Operations resource.
diff --git a/docs/dyn/compute_beta.zones.html b/docs/dyn/compute_beta.zones.html
index 7e1e359..a3eedd1 100644
--- a/docs/dyn/compute_beta.zones.html
+++ b/docs/dyn/compute_beta.zones.html
@@ -100,10 +100,10 @@
     "kind": "compute#zone", # [Output Only] Type of the resource. Always compute#zone for zones.
     "description": "A String", # [Output Only] Textual description of the resource.
     "deprecated": { # Deprecation status for a public resource. # [Output Only] The deprecation status associated with this zone.
-      "deleted": "A String", # An optional RFC3339 timestamp on or after which the deprecation state of this resource will be changed to DELETED.
-      "deprecated": "A String", # An optional RFC3339 timestamp on or after which the deprecation state of this resource will be changed to DEPRECATED.
+      "deleted": "A String", # An optional RFC3339 timestamp on or after which the state of this resource is intended to change to DELETED. This is only informational and the status will not change unless the client explicitly changes it.
+      "deprecated": "A String", # An optional RFC3339 timestamp on or after which the state of this resource is intended to change to DEPRECATED. This is only informational and the status will not change unless the client explicitly changes it.
       "state": "A String", # The deprecation state of this resource. This can be DEPRECATED, OBSOLETE, or DELETED. Operations which create a new resource using a DEPRECATED resource will return successfully, but with a warning indicating the deprecated resource and recommending its replacement. Operations which use OBSOLETE or DELETED resources will be rejected and result in an error.
-      "obsolete": "A String", # An optional RFC3339 timestamp on or after which the deprecation state of this resource will be changed to OBSOLETE.
+      "obsolete": "A String", # An optional RFC3339 timestamp on or after which the state of this resource is intended to change to OBSOLETE. This is only informational and the status will not change unless the client explicitly changes it.
       "replacement": "A String", # The URL of the suggested replacement for a deprecated resource. The suggested replacement resource must be the same kind of resource as the deprecated resource.
     },
     "region": "A String", # [Output Only] Full URL reference to the region which hosts the zone.
@@ -148,10 +148,10 @@
         "kind": "compute#zone", # [Output Only] Type of the resource. Always compute#zone for zones.
         "description": "A String", # [Output Only] Textual description of the resource.
         "deprecated": { # Deprecation status for a public resource. # [Output Only] The deprecation status associated with this zone.
-          "deleted": "A String", # An optional RFC3339 timestamp on or after which the deprecation state of this resource will be changed to DELETED.
-          "deprecated": "A String", # An optional RFC3339 timestamp on or after which the deprecation state of this resource will be changed to DEPRECATED.
+          "deleted": "A String", # An optional RFC3339 timestamp on or after which the state of this resource is intended to change to DELETED. This is only informational and the status will not change unless the client explicitly changes it.
+          "deprecated": "A String", # An optional RFC3339 timestamp on or after which the state of this resource is intended to change to DEPRECATED. This is only informational and the status will not change unless the client explicitly changes it.
           "state": "A String", # The deprecation state of this resource. This can be DEPRECATED, OBSOLETE, or DELETED. Operations which create a new resource using a DEPRECATED resource will return successfully, but with a warning indicating the deprecated resource and recommending its replacement. Operations which use OBSOLETE or DELETED resources will be rejected and result in an error.
-          "obsolete": "A String", # An optional RFC3339 timestamp on or after which the deprecation state of this resource will be changed to OBSOLETE.
+          "obsolete": "A String", # An optional RFC3339 timestamp on or after which the state of this resource is intended to change to OBSOLETE. This is only informational and the status will not change unless the client explicitly changes it.
           "replacement": "A String", # The URL of the suggested replacement for a deprecated resource. The suggested replacement resource must be the same kind of resource as the deprecated resource.
         },
         "region": "A String", # [Output Only] Full URL reference to the region which hosts the zone.
diff --git a/docs/dyn/compute_v1.addresses.html b/docs/dyn/compute_v1.addresses.html
index ec6feb6..21b9c76 100644
--- a/docs/dyn/compute_v1.addresses.html
+++ b/docs/dyn/compute_v1.addresses.html
@@ -230,7 +230,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
@@ -334,7 +334,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
diff --git a/docs/dyn/compute_v1.autoscalers.html b/docs/dyn/compute_v1.autoscalers.html
index 81f36dd..d552a2f 100644
--- a/docs/dyn/compute_v1.autoscalers.html
+++ b/docs/dyn/compute_v1.autoscalers.html
@@ -264,7 +264,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
@@ -424,7 +424,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
@@ -622,7 +622,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
@@ -727,7 +727,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
diff --git a/docs/dyn/compute_v1.backendServices.html b/docs/dyn/compute_v1.backendServices.html
index dc04bc5..91d93db 100644
--- a/docs/dyn/compute_v1.backendServices.html
+++ b/docs/dyn/compute_v1.backendServices.html
@@ -75,6 +75,12 @@
 <h1><a href="compute_v1.html">Compute Engine API</a> . <a href="compute_v1.backendServices.html">backendServices</a></h1>
 <h2>Instance Methods</h2>
 <p class="toc_element">
+  <code><a href="#aggregatedList">aggregatedList(project, orderBy=None, maxResults=None, pageToken=None, filter=None)</a></code></p>
+<p class="firstline">Retrieves the list of all BackendService resources, regional and global, available to the specified project.</p>
+<p class="toc_element">
+  <code><a href="#aggregatedList_next">aggregatedList_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="#delete">delete(project, backendService)</a></code></p>
 <p class="firstline">Deletes the specified BackendService resource.</p>
 <p class="toc_element">
@@ -100,6 +106,146 @@
 <p class="firstline">Updates the specified BackendService resource with the data included in the request. There are several restrictions and guidelines to keep in mind when updating a backend service. Read  Restrictions and Guidelines for more information.</p>
 <h3>Method Details</h3>
 <div class="method">
+    <code class="details" id="aggregatedList">aggregatedList(project, orderBy=None, maxResults=None, pageToken=None, filter=None)</code>
+  <pre>Retrieves the list of all BackendService resources, regional and global, available to the specified project.
+
+Args:
+  project: string, Name of the project scoping this request. (required)
+  orderBy: string, Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.
+
+You can also sort results in descending order based on the creation timestamp using orderBy="creationTimestamp desc". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.
+
+Currently, only sorting by name or creationTimestamp desc is supported.
+  maxResults: integer, The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests.
+  pageToken: string, Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.
+  filter: string, Sets a filter expression for filtering listed resources, in the form filter={expression}. Your {expression} must be in the format: field_name comparison_string literal_string.
+
+The field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.
+
+For example, to filter for instances that do not have a name of example-instance, you would use filter=name ne example-instance.
+
+You can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.
+
+To filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.
+
+Returns:
+  An object of the form:
+
+    { # Contains a list of BackendServicesScopedList.
+    "nextPageToken": "A String", # [Output Only] A token used to continue a truncated list request.
+    "items": { # A map of scoped BackendService lists.
+      "a_key": { # Name of the scope containing this set of BackendServices.
+        "warning": { # Informational warning which replaces the list of backend services when the list is empty.
+          "message": "A String", # [Output Only] A human-readable description of the warning code.
+          "code": "A String", # [Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.
+          "data": [ # [Output Only] Metadata about this warning in key: value format. For example:
+              # "data": [ { "key": "scope", "value": "zones/us-east1-d" }
+            {
+              "value": "A String", # [Output Only] A warning data value corresponding to the key.
+              "key": "A String", # [Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding).
+            },
+          ],
+        },
+        "backendServices": [ # List of BackendServices contained in this scope.
+          { # A BackendService resource. This resource defines a group of backend virtual machines and their serving capacity.
+              "connectionDraining": { # Message containing connection draining configuration.
+                "drainingTimeoutSec": 42, # Time for which instance will be drained (not accept new connections, but still work to finish started).
+              },
+              "kind": "compute#backendService", # [Output Only] Type of resource. Always compute#backendService for backend services.
+              "protocol": "A String", # The protocol this BackendService uses to communicate with backends.
+                  #
+                  # Possible values are HTTP, HTTPS, HTTP2, TCP and SSL. The default is HTTP.
+                  #
+                  # For internal load balancing, the possible values are TCP and UDP, and the default is TCP.
+              "description": "A String", # An optional description of this resource. Provide this property when you create the resource.
+              "timeoutSec": 42, # How many seconds to wait for the backend before considering it a failed request. Default is 30 seconds.
+              "enableCDN": True or False, # If true, enable Cloud CDN for this BackendService.
+                  #
+                  # When the load balancing scheme is INTERNAL, this field is not used.
+              "region": "A String", # [Output Only] URL of the region where the regional backend service resides. This field is not applicable to global backend services.
+              "loadBalancingScheme": "A String",
+              "affinityCookieTtlSec": 42, # Lifetime of cookies in seconds if session_affinity is GENERATED_COOKIE. If set to 0, the cookie is non-persistent and lasts only until the end of the browser session (or equivalent). The maximum allowed value for TTL is one day.
+                  #
+                  # When the load balancing scheme is INTERNAL, this field is not used.
+              "port": 42, # Deprecated in favor of portName. The TCP port to connect on the backend. The default value is 80.
+                  #
+                  # This cannot be used for internal load balancing.
+              "backends": [ # The list of backends that serve this BackendService.
+                { # Message containing information of one individual backend.
+                  "group": "A String", # The fully-qualified URL of a zonal Instance Group resource. This instance group defines the list of instances that serve traffic. Member virtual machine instances from each instance group must live in the same zone as the instance group itself. No two backends in a backend service are allowed to use same Instance Group resource.
+                      #
+                      # Note that you must specify an Instance Group resource using the fully-qualified URL, rather than a partial URL.
+                      #
+                      # When the BackendService has load balancing scheme INTERNAL, the instance group must be in a zone within the same region as the BackendService.
+                  "description": "A String", # An optional description of this resource. Provide this property when you create the resource.
+                  "maxUtilization": 3.14, # Used when balancingMode is UTILIZATION. This ratio defines the CPU utilization target for the group. The default is 0.8. Valid range is [0.0, 1.0].
+                      #
+                      # This cannot be used for internal load balancing.
+                  "maxRatePerInstance": 3.14, # The max requests per second (RPS) that a single backend instance can handle.This is used to calculate the capacity of the group. Can be used in either balancing mode. For RATE mode, either maxRate or maxRatePerInstance must be set.
+                      #
+                      # This cannot be used for internal load balancing.
+                  "maxConnectionsPerInstance": 42, # The max number of simultaneous connections that a single backend instance can handle. This is used to calculate the capacity of the group. Can be used in either CONNECTION or UTILIZATION balancing modes. For CONNECTION mode, either maxConnections or maxConnectionsPerInstance must be set.
+                      #
+                      # This cannot be used for internal load balancing.
+                  "capacityScaler": 3.14, # A multiplier applied to the group's maximum servicing capacity (based on UTILIZATION, RATE or CONNECTION). Default value is 1, which means the group will serve up to 100% of its configured capacity (depending on balancingMode). A setting of 0 means the group is completely drained, offering 0% of its available Capacity. Valid range is [0.0,1.0].
+                      #
+                      # This cannot be used for internal load balancing.
+                  "maxRate": 42, # The max requests per second (RPS) of the group. Can be used with either RATE or UTILIZATION balancing modes, but required if RATE mode. For RATE mode, either maxRate or maxRatePerInstance must be set.
+                      #
+                      # This cannot be used for internal load balancing.
+                  "maxConnections": 42, # The max number of simultaneous connections for the group. Can be used with either CONNECTION or UTILIZATION balancing modes. For CONNECTION mode, either maxConnections or maxConnectionsPerInstance must be set.
+                      #
+                      # This cannot be used for internal load balancing.
+                  "balancingMode": "A String", # Specifies the balancing mode for this backend. For global HTTP(S) or TCP/SSL load balancing, the default is UTILIZATION. Valid values are UTILIZATION, RATE (for HTTP(S)) and CONNECTION (for TCP/SSL).
+                      #
+                      # This cannot be used for internal load balancing.
+                },
+              ],
+              "fingerprint": "A String", # Fingerprint of this resource. A hash of the contents stored in this object. This field is used in optimistic locking. This field will be ignored when inserting a BackendService. An up-to-date fingerprint must be provided in order to update the BackendService.
+              "portName": "A String", # Name of backend port. The same name should appear in the instance groups referenced by this service. Required when the load balancing scheme is EXTERNAL.
+                  #
+                  # When the load balancing scheme is INTERNAL, this field is not used.
+              "healthChecks": [ # The list of URLs to the HttpHealthCheck or HttpsHealthCheck resource for health checking this BackendService. Currently at most one health check can be specified, and a health check is required.
+                  #
+                  # For internal load balancing, a URL to a HealthCheck resource must be specified instead.
+                "A String",
+              ],
+              "sessionAffinity": "A String", # Type of session affinity to use. The default is NONE.
+                  #
+                  # When the load balancing scheme is EXTERNAL, can be NONE, CLIENT_IP, or GENERATED_COOKIE.
+                  #
+                  # When the load balancing scheme is INTERNAL, can be NONE, CLIENT_IP, CLIENT_IP_PROTO, or CLIENT_IP_PORT_PROTO.
+                  #
+                  # When the protocol is UDP, this field is not used.
+              "creationTimestamp": "A String", # [Output Only] Creation timestamp in RFC3339 text format.
+              "id": "A String", # [Output Only] The unique identifier for the resource. This identifier is defined by the server.
+              "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
+              "name": "A String", # Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression [a-z]([-a-z0-9]*[a-z0-9])? which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.
+            },
+        ],
+      },
+    },
+    "kind": "compute#backendServiceAggregatedList", # Type of resource.
+    "id": "A String", # [Output Only] Unique identifier for the resource; defined by the server.
+    "selfLink": "A String", # [Output Only] Server-defined URL for this resource.
+  }</pre>
+</div>
+
+<div class="method">
+    <code class="details" id="aggregatedList_next">aggregatedList_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="delete">delete(project, backendService)</code>
   <pre>Deletes the specified BackendService resource.
 
@@ -153,7 +299,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
@@ -184,6 +330,7 @@
           #
           # When the load balancing scheme is INTERNAL, this field is not used.
       "region": "A String", # [Output Only] URL of the region where the regional backend service resides. This field is not applicable to global backend services.
+      "loadBalancingScheme": "A String",
       "affinityCookieTtlSec": 42, # Lifetime of cookies in seconds if session_affinity is GENERATED_COOKIE. If set to 0, the cookie is non-persistent and lasts only until the end of the browser session (or equivalent). The maximum allowed value for TTL is one day.
           #
           # When the load balancing scheme is INTERNAL, this field is not used.
@@ -300,6 +447,7 @@
         # 
         # When the load balancing scheme is INTERNAL, this field is not used.
     "region": "A String", # [Output Only] URL of the region where the regional backend service resides. This field is not applicable to global backend services.
+    "loadBalancingScheme": "A String",
     "affinityCookieTtlSec": 42, # Lifetime of cookies in seconds if session_affinity is GENERATED_COOKIE. If set to 0, the cookie is non-persistent and lasts only until the end of the browser session (or equivalent). The maximum allowed value for TTL is one day.
         # 
         # When the load balancing scheme is INTERNAL, this field is not used.
@@ -406,7 +554,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
@@ -455,6 +603,7 @@
               #
               # When the load balancing scheme is INTERNAL, this field is not used.
           "region": "A String", # [Output Only] URL of the region where the regional backend service resides. This field is not applicable to global backend services.
+          "loadBalancingScheme": "A String",
           "affinityCookieTtlSec": 42, # Lifetime of cookies in seconds if session_affinity is GENERATED_COOKIE. If set to 0, the cookie is non-persistent and lasts only until the end of the browser session (or equivalent). The maximum allowed value for TTL is one day.
               #
               # When the load balancing scheme is INTERNAL, this field is not used.
@@ -560,6 +709,7 @@
         # 
         # When the load balancing scheme is INTERNAL, this field is not used.
     "region": "A String", # [Output Only] URL of the region where the regional backend service resides. This field is not applicable to global backend services.
+    "loadBalancingScheme": "A String",
     "affinityCookieTtlSec": 42, # Lifetime of cookies in seconds if session_affinity is GENERATED_COOKIE. If set to 0, the cookie is non-persistent and lasts only until the end of the browser session (or equivalent). The maximum allowed value for TTL is one day.
         # 
         # When the load balancing scheme is INTERNAL, this field is not used.
@@ -666,7 +816,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
@@ -696,6 +846,7 @@
         # 
         # When the load balancing scheme is INTERNAL, this field is not used.
     "region": "A String", # [Output Only] URL of the region where the regional backend service resides. This field is not applicable to global backend services.
+    "loadBalancingScheme": "A String",
     "affinityCookieTtlSec": 42, # Lifetime of cookies in seconds if session_affinity is GENERATED_COOKIE. If set to 0, the cookie is non-persistent and lasts only until the end of the browser session (or equivalent). The maximum allowed value for TTL is one day.
         # 
         # When the load balancing scheme is INTERNAL, this field is not used.
@@ -802,7 +953,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
diff --git a/docs/dyn/compute_v1.diskTypes.html b/docs/dyn/compute_v1.diskTypes.html
index 0cdac34..a5aeed4 100644
--- a/docs/dyn/compute_v1.diskTypes.html
+++ b/docs/dyn/compute_v1.diskTypes.html
@@ -138,10 +138,10 @@
             "zone": "A String", # [Output Only] URL of the zone where the disk type resides.
             "validDiskSize": "A String", # [Output Only] An optional textual description of the valid disk size, such as "10GB-10TB".
             "deprecated": { # Deprecation status for a public resource. # [Output Only] The deprecation status associated with this disk type.
-              "deleted": "A String", # An optional RFC3339 timestamp on or after which the deprecation state of this resource will be changed to DELETED.
-              "deprecated": "A String", # An optional RFC3339 timestamp on or after which the deprecation state of this resource will be changed to DEPRECATED.
+              "deleted": "A String", # An optional RFC3339 timestamp on or after which the state of this resource is intended to change to DELETED. This is only informational and the status will not change unless the client explicitly changes it.
+              "deprecated": "A String", # An optional RFC3339 timestamp on or after which the state of this resource is intended to change to DEPRECATED. This is only informational and the status will not change unless the client explicitly changes it.
               "state": "A String", # The deprecation state of this resource. This can be DEPRECATED, OBSOLETE, or DELETED. Operations which create a new resource using a DEPRECATED resource will return successfully, but with a warning indicating the deprecated resource and recommending its replacement. Operations which use OBSOLETE or DELETED resources will be rejected and result in an error.
-              "obsolete": "A String", # An optional RFC3339 timestamp on or after which the deprecation state of this resource will be changed to OBSOLETE.
+              "obsolete": "A String", # An optional RFC3339 timestamp on or after which the state of this resource is intended to change to OBSOLETE. This is only informational and the status will not change unless the client explicitly changes it.
               "replacement": "A String", # The URL of the suggested replacement for a deprecated resource. The suggested replacement resource must be the same kind of resource as the deprecated resource.
             },
             "defaultDiskSizeGb": "A String", # [Output Only] Server-defined default disk size in GB.
@@ -191,10 +191,10 @@
     "zone": "A String", # [Output Only] URL of the zone where the disk type resides.
     "validDiskSize": "A String", # [Output Only] An optional textual description of the valid disk size, such as "10GB-10TB".
     "deprecated": { # Deprecation status for a public resource. # [Output Only] The deprecation status associated with this disk type.
-      "deleted": "A String", # An optional RFC3339 timestamp on or after which the deprecation state of this resource will be changed to DELETED.
-      "deprecated": "A String", # An optional RFC3339 timestamp on or after which the deprecation state of this resource will be changed to DEPRECATED.
+      "deleted": "A String", # An optional RFC3339 timestamp on or after which the state of this resource is intended to change to DELETED. This is only informational and the status will not change unless the client explicitly changes it.
+      "deprecated": "A String", # An optional RFC3339 timestamp on or after which the state of this resource is intended to change to DEPRECATED. This is only informational and the status will not change unless the client explicitly changes it.
       "state": "A String", # The deprecation state of this resource. This can be DEPRECATED, OBSOLETE, or DELETED. Operations which create a new resource using a DEPRECATED resource will return successfully, but with a warning indicating the deprecated resource and recommending its replacement. Operations which use OBSOLETE or DELETED resources will be rejected and result in an error.
-      "obsolete": "A String", # An optional RFC3339 timestamp on or after which the deprecation state of this resource will be changed to OBSOLETE.
+      "obsolete": "A String", # An optional RFC3339 timestamp on or after which the state of this resource is intended to change to OBSOLETE. This is only informational and the status will not change unless the client explicitly changes it.
       "replacement": "A String", # The URL of the suggested replacement for a deprecated resource. The suggested replacement resource must be the same kind of resource as the deprecated resource.
     },
     "defaultDiskSizeGb": "A String", # [Output Only] Server-defined default disk size in GB.
@@ -241,10 +241,10 @@
         "zone": "A String", # [Output Only] URL of the zone where the disk type resides.
         "validDiskSize": "A String", # [Output Only] An optional textual description of the valid disk size, such as "10GB-10TB".
         "deprecated": { # Deprecation status for a public resource. # [Output Only] The deprecation status associated with this disk type.
-          "deleted": "A String", # An optional RFC3339 timestamp on or after which the deprecation state of this resource will be changed to DELETED.
-          "deprecated": "A String", # An optional RFC3339 timestamp on or after which the deprecation state of this resource will be changed to DEPRECATED.
+          "deleted": "A String", # An optional RFC3339 timestamp on or after which the state of this resource is intended to change to DELETED. This is only informational and the status will not change unless the client explicitly changes it.
+          "deprecated": "A String", # An optional RFC3339 timestamp on or after which the state of this resource is intended to change to DEPRECATED. This is only informational and the status will not change unless the client explicitly changes it.
           "state": "A String", # The deprecation state of this resource. This can be DEPRECATED, OBSOLETE, or DELETED. Operations which create a new resource using a DEPRECATED resource will return successfully, but with a warning indicating the deprecated resource and recommending its replacement. Operations which use OBSOLETE or DELETED resources will be rejected and result in an error.
-          "obsolete": "A String", # An optional RFC3339 timestamp on or after which the deprecation state of this resource will be changed to OBSOLETE.
+          "obsolete": "A String", # An optional RFC3339 timestamp on or after which the state of this resource is intended to change to OBSOLETE. This is only informational and the status will not change unless the client explicitly changes it.
           "replacement": "A String", # The URL of the suggested replacement for a deprecated resource. The suggested replacement resource must be the same kind of resource as the deprecated resource.
         },
         "defaultDiskSizeGb": "A String", # [Output Only] Server-defined default disk size in GB.
diff --git a/docs/dyn/compute_v1.disks.html b/docs/dyn/compute_v1.disks.html
index c431128..c3eeade 100644
--- a/docs/dyn/compute_v1.disks.html
+++ b/docs/dyn/compute_v1.disks.html
@@ -321,7 +321,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
@@ -380,7 +380,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
@@ -585,7 +585,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
@@ -766,7 +766,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
diff --git a/docs/dyn/compute_v1.firewalls.html b/docs/dyn/compute_v1.firewalls.html
index ae9b0d1..219dd84 100644
--- a/docs/dyn/compute_v1.firewalls.html
+++ b/docs/dyn/compute_v1.firewalls.html
@@ -150,7 +150,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
@@ -290,7 +290,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
@@ -468,7 +468,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
@@ -563,7 +563,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
diff --git a/docs/dyn/compute_v1.forwardingRules.html b/docs/dyn/compute_v1.forwardingRules.html
index 0302baf..d82fd34 100644
--- a/docs/dyn/compute_v1.forwardingRules.html
+++ b/docs/dyn/compute_v1.forwardingRules.html
@@ -139,15 +139,34 @@
                   #
                   # When the load balancing scheme is INTERNAL, this can only be an RFC 1918 IP address belonging to the network/subnetwork configured for the forwarding rule. A reserved address cannot be used. If the field is empty, the IP address will be automatically allocated from the internal IP range of the subnetwork or network configured for this forwarding rule.
               "region": "A String", # [Output Only] URL of the region where the regional forwarding rule resides. This field is not applicable to global forwarding rules.
+              "ports": [ # This field is not used for external load balancing.
+                  #
+                  # When the load balancing scheme is INTERNAL, a single port or a comma separated list of ports can be configured. Only packets addressed to these ports will be forwarded to the backends configured with this forwarding rule. If the port list is not provided then all ports are allowed to pass through.
+                  #
+                  # You may specify a maximum of up to 5 ports.
+                "A String",
+              ],
+              "network": "A String", # This field is not used for external load balancing.
+                  #
+                  # For internal load balancing, this field identifies the network that the load balanced IP should belong to for this Forwarding Rule. If this field is not specified, the default network will be used.
+              "loadBalancingScheme": "A String", # This signifies what the ForwardingRule will be used for and can only take the following values: INTERNAL EXTERNAL The value of INTERNAL means that this will be used for Internal Network Load Balancing (TCP, UDP). The value of EXTERNAL means that this will be used for External Load Balancing (HTTP(S) LB, External TCP/UDP LB, SSL Proxy)
               "target": "A String", # The URL of the target resource to receive the matched traffic. For regional forwarding rules, this target must live in the same region as the forwarding rule. For global forwarding rules, this target must be a global TargetHttpProxy or TargetHttpsProxy resource. The forwarded traffic must be of a type appropriate to the target object. For example, TargetHttpProxy requires HTTP traffic, and TargetHttpsProxy requires HTTPS traffic.
                   #
                   # This field is not used for internal load balancing.
               "portRange": "A String", # Applicable only when IPProtocol is TCP, UDP, or SCTP, only packets addressed to ports in the specified range will be forwarded to target. Forwarding rules with the same [IPAddress, IPProtocol] pair must have disjoint port ranges.
                   #
                   # This field is not used for internal load balancing.
+              "backendService": "A String", # This field is not used for external load balancing.
+                  #
+                  # For internal load balancing, this field identifies the BackendService resource to receive the matched traffic.
               "IPProtocol": "A String", # The IP protocol to which this rule applies. Valid options are TCP, UDP, ESP, AH, SCTP or ICMP.
                   #
                   # When the load balancing scheme is INTERNAL</code, only TCP and UDP are valid.
+              "subnetwork": "A String", # This field is not used for external load balancing.
+                  #
+                  # For internal load balancing, this field identifies the subnetwork that the load balanced IP should belong to for this Forwarding Rule.
+                  #
+                  # If the network specified is in auto subnet mode, this field is optional. However, if the network is in custom subnet mode, a subnetwork must be specified.
               "creationTimestamp": "A String", # [Output Only] Creation timestamp in RFC3339 text format.
               "id": "A String", # [Output Only] The unique identifier for the resource. This identifier is defined by the server.
               "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
@@ -242,7 +261,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
@@ -267,15 +286,34 @@
           #
           # When the load balancing scheme is INTERNAL, this can only be an RFC 1918 IP address belonging to the network/subnetwork configured for the forwarding rule. A reserved address cannot be used. If the field is empty, the IP address will be automatically allocated from the internal IP range of the subnetwork or network configured for this forwarding rule.
       "region": "A String", # [Output Only] URL of the region where the regional forwarding rule resides. This field is not applicable to global forwarding rules.
+      "ports": [ # This field is not used for external load balancing.
+          #
+          # When the load balancing scheme is INTERNAL, a single port or a comma separated list of ports can be configured. Only packets addressed to these ports will be forwarded to the backends configured with this forwarding rule. If the port list is not provided then all ports are allowed to pass through.
+          #
+          # You may specify a maximum of up to 5 ports.
+        "A String",
+      ],
+      "network": "A String", # This field is not used for external load balancing.
+          #
+          # For internal load balancing, this field identifies the network that the load balanced IP should belong to for this Forwarding Rule. If this field is not specified, the default network will be used.
+      "loadBalancingScheme": "A String", # This signifies what the ForwardingRule will be used for and can only take the following values: INTERNAL EXTERNAL The value of INTERNAL means that this will be used for Internal Network Load Balancing (TCP, UDP). The value of EXTERNAL means that this will be used for External Load Balancing (HTTP(S) LB, External TCP/UDP LB, SSL Proxy)
       "target": "A String", # The URL of the target resource to receive the matched traffic. For regional forwarding rules, this target must live in the same region as the forwarding rule. For global forwarding rules, this target must be a global TargetHttpProxy or TargetHttpsProxy resource. The forwarded traffic must be of a type appropriate to the target object. For example, TargetHttpProxy requires HTTP traffic, and TargetHttpsProxy requires HTTPS traffic.
           #
           # This field is not used for internal load balancing.
       "portRange": "A String", # Applicable only when IPProtocol is TCP, UDP, or SCTP, only packets addressed to ports in the specified range will be forwarded to target. Forwarding rules with the same [IPAddress, IPProtocol] pair must have disjoint port ranges.
           #
           # This field is not used for internal load balancing.
+      "backendService": "A String", # This field is not used for external load balancing.
+          #
+          # For internal load balancing, this field identifies the BackendService resource to receive the matched traffic.
       "IPProtocol": "A String", # The IP protocol to which this rule applies. Valid options are TCP, UDP, ESP, AH, SCTP or ICMP.
           #
           # When the load balancing scheme is INTERNAL</code, only TCP and UDP are valid.
+      "subnetwork": "A String", # This field is not used for external load balancing.
+          #
+          # For internal load balancing, this field identifies the subnetwork that the load balanced IP should belong to for this Forwarding Rule.
+          #
+          # If the network specified is in auto subnet mode, this field is optional. However, if the network is in custom subnet mode, a subnetwork must be specified.
       "creationTimestamp": "A String", # [Output Only] Creation timestamp in RFC3339 text format.
       "id": "A String", # [Output Only] The unique identifier for the resource. This identifier is defined by the server.
       "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
@@ -302,15 +340,34 @@
         # 
         # When the load balancing scheme is INTERNAL, this can only be an RFC 1918 IP address belonging to the network/subnetwork configured for the forwarding rule. A reserved address cannot be used. If the field is empty, the IP address will be automatically allocated from the internal IP range of the subnetwork or network configured for this forwarding rule.
     "region": "A String", # [Output Only] URL of the region where the regional forwarding rule resides. This field is not applicable to global forwarding rules.
+    "ports": [ # This field is not used for external load balancing.
+        # 
+        # When the load balancing scheme is INTERNAL, a single port or a comma separated list of ports can be configured. Only packets addressed to these ports will be forwarded to the backends configured with this forwarding rule. If the port list is not provided then all ports are allowed to pass through.
+        # 
+        # You may specify a maximum of up to 5 ports.
+      "A String",
+    ],
+    "network": "A String", # This field is not used for external load balancing.
+        # 
+        # For internal load balancing, this field identifies the network that the load balanced IP should belong to for this Forwarding Rule. If this field is not specified, the default network will be used.
+    "loadBalancingScheme": "A String", # This signifies what the ForwardingRule will be used for and can only take the following values: INTERNAL EXTERNAL The value of INTERNAL means that this will be used for Internal Network Load Balancing (TCP, UDP). The value of EXTERNAL means that this will be used for External Load Balancing (HTTP(S) LB, External TCP/UDP LB, SSL Proxy)
     "target": "A String", # The URL of the target resource to receive the matched traffic. For regional forwarding rules, this target must live in the same region as the forwarding rule. For global forwarding rules, this target must be a global TargetHttpProxy or TargetHttpsProxy resource. The forwarded traffic must be of a type appropriate to the target object. For example, TargetHttpProxy requires HTTP traffic, and TargetHttpsProxy requires HTTPS traffic.
         # 
         # This field is not used for internal load balancing.
     "portRange": "A String", # Applicable only when IPProtocol is TCP, UDP, or SCTP, only packets addressed to ports in the specified range will be forwarded to target. Forwarding rules with the same [IPAddress, IPProtocol] pair must have disjoint port ranges.
         # 
         # This field is not used for internal load balancing.
+    "backendService": "A String", # This field is not used for external load balancing.
+        # 
+        # For internal load balancing, this field identifies the BackendService resource to receive the matched traffic.
     "IPProtocol": "A String", # The IP protocol to which this rule applies. Valid options are TCP, UDP, ESP, AH, SCTP or ICMP.
         # 
         # When the load balancing scheme is INTERNAL</code, only TCP and UDP are valid.
+    "subnetwork": "A String", # This field is not used for external load balancing.
+        # 
+        # For internal load balancing, this field identifies the subnetwork that the load balanced IP should belong to for this Forwarding Rule.
+        # 
+        # If the network specified is in auto subnet mode, this field is optional. However, if the network is in custom subnet mode, a subnetwork must be specified.
     "creationTimestamp": "A String", # [Output Only] Creation timestamp in RFC3339 text format.
     "id": "A String", # [Output Only] The unique identifier for the resource. This identifier is defined by the server.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
@@ -364,7 +421,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
@@ -407,15 +464,34 @@
               #
               # When the load balancing scheme is INTERNAL, this can only be an RFC 1918 IP address belonging to the network/subnetwork configured for the forwarding rule. A reserved address cannot be used. If the field is empty, the IP address will be automatically allocated from the internal IP range of the subnetwork or network configured for this forwarding rule.
           "region": "A String", # [Output Only] URL of the region where the regional forwarding rule resides. This field is not applicable to global forwarding rules.
+          "ports": [ # This field is not used for external load balancing.
+              #
+              # When the load balancing scheme is INTERNAL, a single port or a comma separated list of ports can be configured. Only packets addressed to these ports will be forwarded to the backends configured with this forwarding rule. If the port list is not provided then all ports are allowed to pass through.
+              #
+              # You may specify a maximum of up to 5 ports.
+            "A String",
+          ],
+          "network": "A String", # This field is not used for external load balancing.
+              #
+              # For internal load balancing, this field identifies the network that the load balanced IP should belong to for this Forwarding Rule. If this field is not specified, the default network will be used.
+          "loadBalancingScheme": "A String", # This signifies what the ForwardingRule will be used for and can only take the following values: INTERNAL EXTERNAL The value of INTERNAL means that this will be used for Internal Network Load Balancing (TCP, UDP). The value of EXTERNAL means that this will be used for External Load Balancing (HTTP(S) LB, External TCP/UDP LB, SSL Proxy)
           "target": "A String", # The URL of the target resource to receive the matched traffic. For regional forwarding rules, this target must live in the same region as the forwarding rule. For global forwarding rules, this target must be a global TargetHttpProxy or TargetHttpsProxy resource. The forwarded traffic must be of a type appropriate to the target object. For example, TargetHttpProxy requires HTTP traffic, and TargetHttpsProxy requires HTTPS traffic.
               #
               # This field is not used for internal load balancing.
           "portRange": "A String", # Applicable only when IPProtocol is TCP, UDP, or SCTP, only packets addressed to ports in the specified range will be forwarded to target. Forwarding rules with the same [IPAddress, IPProtocol] pair must have disjoint port ranges.
               #
               # This field is not used for internal load balancing.
+          "backendService": "A String", # This field is not used for external load balancing.
+              #
+              # For internal load balancing, this field identifies the BackendService resource to receive the matched traffic.
           "IPProtocol": "A String", # The IP protocol to which this rule applies. Valid options are TCP, UDP, ESP, AH, SCTP or ICMP.
               #
               # When the load balancing scheme is INTERNAL</code, only TCP and UDP are valid.
+          "subnetwork": "A String", # This field is not used for external load balancing.
+              #
+              # For internal load balancing, this field identifies the subnetwork that the load balanced IP should belong to for this Forwarding Rule.
+              #
+              # If the network specified is in auto subnet mode, this field is optional. However, if the network is in custom subnet mode, a subnetwork must be specified.
           "creationTimestamp": "A String", # [Output Only] Creation timestamp in RFC3339 text format.
           "id": "A String", # [Output Only] The unique identifier for the resource. This identifier is defined by the server.
           "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
@@ -504,7 +580,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
diff --git a/docs/dyn/compute_v1.globalAddresses.html b/docs/dyn/compute_v1.globalAddresses.html
index 77b4128..7c89c24 100644
--- a/docs/dyn/compute_v1.globalAddresses.html
+++ b/docs/dyn/compute_v1.globalAddresses.html
@@ -144,7 +144,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
@@ -246,7 +246,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
diff --git a/docs/dyn/compute_v1.globalForwardingRules.html b/docs/dyn/compute_v1.globalForwardingRules.html
index 377a561..48f2db3 100644
--- a/docs/dyn/compute_v1.globalForwardingRules.html
+++ b/docs/dyn/compute_v1.globalForwardingRules.html
@@ -147,7 +147,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
@@ -171,15 +171,34 @@
           #
           # When the load balancing scheme is INTERNAL, this can only be an RFC 1918 IP address belonging to the network/subnetwork configured for the forwarding rule. A reserved address cannot be used. If the field is empty, the IP address will be automatically allocated from the internal IP range of the subnetwork or network configured for this forwarding rule.
       "region": "A String", # [Output Only] URL of the region where the regional forwarding rule resides. This field is not applicable to global forwarding rules.
+      "ports": [ # This field is not used for external load balancing.
+          #
+          # When the load balancing scheme is INTERNAL, a single port or a comma separated list of ports can be configured. Only packets addressed to these ports will be forwarded to the backends configured with this forwarding rule. If the port list is not provided then all ports are allowed to pass through.
+          #
+          # You may specify a maximum of up to 5 ports.
+        "A String",
+      ],
+      "network": "A String", # This field is not used for external load balancing.
+          #
+          # For internal load balancing, this field identifies the network that the load balanced IP should belong to for this Forwarding Rule. If this field is not specified, the default network will be used.
+      "loadBalancingScheme": "A String", # This signifies what the ForwardingRule will be used for and can only take the following values: INTERNAL EXTERNAL The value of INTERNAL means that this will be used for Internal Network Load Balancing (TCP, UDP). The value of EXTERNAL means that this will be used for External Load Balancing (HTTP(S) LB, External TCP/UDP LB, SSL Proxy)
       "target": "A String", # The URL of the target resource to receive the matched traffic. For regional forwarding rules, this target must live in the same region as the forwarding rule. For global forwarding rules, this target must be a global TargetHttpProxy or TargetHttpsProxy resource. The forwarded traffic must be of a type appropriate to the target object. For example, TargetHttpProxy requires HTTP traffic, and TargetHttpsProxy requires HTTPS traffic.
           #
           # This field is not used for internal load balancing.
       "portRange": "A String", # Applicable only when IPProtocol is TCP, UDP, or SCTP, only packets addressed to ports in the specified range will be forwarded to target. Forwarding rules with the same [IPAddress, IPProtocol] pair must have disjoint port ranges.
           #
           # This field is not used for internal load balancing.
+      "backendService": "A String", # This field is not used for external load balancing.
+          #
+          # For internal load balancing, this field identifies the BackendService resource to receive the matched traffic.
       "IPProtocol": "A String", # The IP protocol to which this rule applies. Valid options are TCP, UDP, ESP, AH, SCTP or ICMP.
           #
           # When the load balancing scheme is INTERNAL</code, only TCP and UDP are valid.
+      "subnetwork": "A String", # This field is not used for external load balancing.
+          #
+          # For internal load balancing, this field identifies the subnetwork that the load balanced IP should belong to for this Forwarding Rule.
+          #
+          # If the network specified is in auto subnet mode, this field is optional. However, if the network is in custom subnet mode, a subnetwork must be specified.
       "creationTimestamp": "A String", # [Output Only] Creation timestamp in RFC3339 text format.
       "id": "A String", # [Output Only] The unique identifier for the resource. This identifier is defined by the server.
       "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
@@ -205,15 +224,34 @@
         # 
         # When the load balancing scheme is INTERNAL, this can only be an RFC 1918 IP address belonging to the network/subnetwork configured for the forwarding rule. A reserved address cannot be used. If the field is empty, the IP address will be automatically allocated from the internal IP range of the subnetwork or network configured for this forwarding rule.
     "region": "A String", # [Output Only] URL of the region where the regional forwarding rule resides. This field is not applicable to global forwarding rules.
+    "ports": [ # This field is not used for external load balancing.
+        # 
+        # When the load balancing scheme is INTERNAL, a single port or a comma separated list of ports can be configured. Only packets addressed to these ports will be forwarded to the backends configured with this forwarding rule. If the port list is not provided then all ports are allowed to pass through.
+        # 
+        # You may specify a maximum of up to 5 ports.
+      "A String",
+    ],
+    "network": "A String", # This field is not used for external load balancing.
+        # 
+        # For internal load balancing, this field identifies the network that the load balanced IP should belong to for this Forwarding Rule. If this field is not specified, the default network will be used.
+    "loadBalancingScheme": "A String", # This signifies what the ForwardingRule will be used for and can only take the following values: INTERNAL EXTERNAL The value of INTERNAL means that this will be used for Internal Network Load Balancing (TCP, UDP). The value of EXTERNAL means that this will be used for External Load Balancing (HTTP(S) LB, External TCP/UDP LB, SSL Proxy)
     "target": "A String", # The URL of the target resource to receive the matched traffic. For regional forwarding rules, this target must live in the same region as the forwarding rule. For global forwarding rules, this target must be a global TargetHttpProxy or TargetHttpsProxy resource. The forwarded traffic must be of a type appropriate to the target object. For example, TargetHttpProxy requires HTTP traffic, and TargetHttpsProxy requires HTTPS traffic.
         # 
         # This field is not used for internal load balancing.
     "portRange": "A String", # Applicable only when IPProtocol is TCP, UDP, or SCTP, only packets addressed to ports in the specified range will be forwarded to target. Forwarding rules with the same [IPAddress, IPProtocol] pair must have disjoint port ranges.
         # 
         # This field is not used for internal load balancing.
+    "backendService": "A String", # This field is not used for external load balancing.
+        # 
+        # For internal load balancing, this field identifies the BackendService resource to receive the matched traffic.
     "IPProtocol": "A String", # The IP protocol to which this rule applies. Valid options are TCP, UDP, ESP, AH, SCTP or ICMP.
         # 
         # When the load balancing scheme is INTERNAL</code, only TCP and UDP are valid.
+    "subnetwork": "A String", # This field is not used for external load balancing.
+        # 
+        # For internal load balancing, this field identifies the subnetwork that the load balanced IP should belong to for this Forwarding Rule.
+        # 
+        # If the network specified is in auto subnet mode, this field is optional. However, if the network is in custom subnet mode, a subnetwork must be specified.
     "creationTimestamp": "A String", # [Output Only] Creation timestamp in RFC3339 text format.
     "id": "A String", # [Output Only] The unique identifier for the resource. This identifier is defined by the server.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
@@ -267,7 +305,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
@@ -309,15 +347,34 @@
               #
               # When the load balancing scheme is INTERNAL, this can only be an RFC 1918 IP address belonging to the network/subnetwork configured for the forwarding rule. A reserved address cannot be used. If the field is empty, the IP address will be automatically allocated from the internal IP range of the subnetwork or network configured for this forwarding rule.
           "region": "A String", # [Output Only] URL of the region where the regional forwarding rule resides. This field is not applicable to global forwarding rules.
+          "ports": [ # This field is not used for external load balancing.
+              #
+              # When the load balancing scheme is INTERNAL, a single port or a comma separated list of ports can be configured. Only packets addressed to these ports will be forwarded to the backends configured with this forwarding rule. If the port list is not provided then all ports are allowed to pass through.
+              #
+              # You may specify a maximum of up to 5 ports.
+            "A String",
+          ],
+          "network": "A String", # This field is not used for external load balancing.
+              #
+              # For internal load balancing, this field identifies the network that the load balanced IP should belong to for this Forwarding Rule. If this field is not specified, the default network will be used.
+          "loadBalancingScheme": "A String", # This signifies what the ForwardingRule will be used for and can only take the following values: INTERNAL EXTERNAL The value of INTERNAL means that this will be used for Internal Network Load Balancing (TCP, UDP). The value of EXTERNAL means that this will be used for External Load Balancing (HTTP(S) LB, External TCP/UDP LB, SSL Proxy)
           "target": "A String", # The URL of the target resource to receive the matched traffic. For regional forwarding rules, this target must live in the same region as the forwarding rule. For global forwarding rules, this target must be a global TargetHttpProxy or TargetHttpsProxy resource. The forwarded traffic must be of a type appropriate to the target object. For example, TargetHttpProxy requires HTTP traffic, and TargetHttpsProxy requires HTTPS traffic.
               #
               # This field is not used for internal load balancing.
           "portRange": "A String", # Applicable only when IPProtocol is TCP, UDP, or SCTP, only packets addressed to ports in the specified range will be forwarded to target. Forwarding rules with the same [IPAddress, IPProtocol] pair must have disjoint port ranges.
               #
               # This field is not used for internal load balancing.
+          "backendService": "A String", # This field is not used for external load balancing.
+              #
+              # For internal load balancing, this field identifies the BackendService resource to receive the matched traffic.
           "IPProtocol": "A String", # The IP protocol to which this rule applies. Valid options are TCP, UDP, ESP, AH, SCTP or ICMP.
               #
               # When the load balancing scheme is INTERNAL</code, only TCP and UDP are valid.
+          "subnetwork": "A String", # This field is not used for external load balancing.
+              #
+              # For internal load balancing, this field identifies the subnetwork that the load balanced IP should belong to for this Forwarding Rule.
+              #
+              # If the network specified is in auto subnet mode, this field is optional. However, if the network is in custom subnet mode, a subnetwork must be specified.
           "creationTimestamp": "A String", # [Output Only] Creation timestamp in RFC3339 text format.
           "id": "A String", # [Output Only] The unique identifier for the resource. This identifier is defined by the server.
           "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
@@ -405,7 +462,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
diff --git a/docs/dyn/compute_v1.globalOperations.html b/docs/dyn/compute_v1.globalOperations.html
index eaa759b..2a6bca8 100644
--- a/docs/dyn/compute_v1.globalOperations.html
+++ b/docs/dyn/compute_v1.globalOperations.html
@@ -167,7 +167,7 @@
             },
             "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
             "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-            "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+            "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
           },
         ],
         "warning": { # [Output Only] Informational warning which replaces the list of operations when the list is empty.
@@ -267,7 +267,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
@@ -343,7 +343,7 @@
         },
         "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
         "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-        "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+        "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
       },
     ],
     "kind": "compute#operationList", # [Output Only] Type of resource. Always compute#operations for Operations resource.
diff --git a/docs/dyn/compute_v1.healthChecks.html b/docs/dyn/compute_v1.healthChecks.html
index 34872cd..c5f73d6 100644
--- a/docs/dyn/compute_v1.healthChecks.html
+++ b/docs/dyn/compute_v1.healthChecks.html
@@ -150,7 +150,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
@@ -169,7 +169,7 @@
       "kind": "compute#healthCheck", # Type of the resource.
       "description": "A String", # An optional description of this resource. Provide this property when you create the resource.
       "timeoutSec": 42, # How long (in seconds) to wait before claiming failure. The default value is 5 seconds. It is invalid for timeoutSec to have greater value than checkIntervalSec.
-      "type": "A String", # Specifies the type of the healthCheck, either TCP, UDP, SSL, HTTP, HTTPS or HTTP2. If not specified, the default is TCP. Exactly one of the protocol-specific health check field must be specified, which must match type field.
+      "type": "A String", # Specifies the type of the healthCheck, either TCP, SSL, HTTP or HTTPS. If not specified, the default is TCP. Exactly one of the protocol-specific health check field must be specified, which must match type field.
       "checkIntervalSec": 42, # How often (in seconds) to send a health check. The default value is 5 seconds.
       "tcpHealthCheck": {
         "portName": "A String", # Port name as defined in InstanceGroup#NamedPort#name. If both port and port_name are defined, port takes precedence.
@@ -193,13 +193,6 @@
         "requestPath": "A String", # The request path of the HTTPS health check request. The default value is /.
       },
       "healthyThreshold": 42, # A so-far unhealthy instance will be marked healthy after this many consecutive successes. The default value is 2.
-      "http2HealthCheck": {
-        "portName": "A String", # Port name as defined in InstanceGroup#NamedPort#name. If both port and port_name are defined, port takes precedence.
-        "host": "A String", # The value of the host header in the HTTP/2 health check request. If left empty (default value), the IP on behalf of which this health check is performed will be used.
-        "proxyHeader": "A String", # Specifies the type of proxy header to append before sending data to the backend, either NONE or PROXY_V1. The default is NONE.
-        "port": 42, # The TCP port number for the health check request. The default value is 443.
-        "requestPath": "A String", # The request path of the HTTP/2 health check request. The default value is /.
-      },
       "unhealthyThreshold": 42, # A so-far healthy instance will be marked unhealthy after this many consecutive failures. The default value is 2.
       "sslHealthCheck": {
         "portName": "A String", # Port name as defined in InstanceGroup#NamedPort#name. If both port and port_name are defined, port takes precedence.
@@ -228,7 +221,7 @@
     "kind": "compute#healthCheck", # Type of the resource.
     "description": "A String", # An optional description of this resource. Provide this property when you create the resource.
     "timeoutSec": 42, # How long (in seconds) to wait before claiming failure. The default value is 5 seconds. It is invalid for timeoutSec to have greater value than checkIntervalSec.
-    "type": "A String", # Specifies the type of the healthCheck, either TCP, UDP, SSL, HTTP, HTTPS or HTTP2. If not specified, the default is TCP. Exactly one of the protocol-specific health check field must be specified, which must match type field.
+    "type": "A String", # Specifies the type of the healthCheck, either TCP, SSL, HTTP or HTTPS. If not specified, the default is TCP. Exactly one of the protocol-specific health check field must be specified, which must match type field.
     "checkIntervalSec": 42, # How often (in seconds) to send a health check. The default value is 5 seconds.
     "tcpHealthCheck": {
       "portName": "A String", # Port name as defined in InstanceGroup#NamedPort#name. If both port and port_name are defined, port takes precedence.
@@ -252,13 +245,6 @@
       "requestPath": "A String", # The request path of the HTTPS health check request. The default value is /.
     },
     "healthyThreshold": 42, # A so-far unhealthy instance will be marked healthy after this many consecutive successes. The default value is 2.
-    "http2HealthCheck": {
-      "portName": "A String", # Port name as defined in InstanceGroup#NamedPort#name. If both port and port_name are defined, port takes precedence.
-      "host": "A String", # The value of the host header in the HTTP/2 health check request. If left empty (default value), the IP on behalf of which this health check is performed will be used.
-      "proxyHeader": "A String", # Specifies the type of proxy header to append before sending data to the backend, either NONE or PROXY_V1. The default is NONE.
-      "port": 42, # The TCP port number for the health check request. The default value is 443.
-      "requestPath": "A String", # The request path of the HTTP/2 health check request. The default value is /.
-    },
     "unhealthyThreshold": 42, # A so-far healthy instance will be marked unhealthy after this many consecutive failures. The default value is 2.
     "sslHealthCheck": {
       "portName": "A String", # Port name as defined in InstanceGroup#NamedPort#name. If both port and port_name are defined, port takes precedence.
@@ -320,7 +306,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
@@ -357,7 +343,7 @@
           "kind": "compute#healthCheck", # Type of the resource.
           "description": "A String", # An optional description of this resource. Provide this property when you create the resource.
           "timeoutSec": 42, # How long (in seconds) to wait before claiming failure. The default value is 5 seconds. It is invalid for timeoutSec to have greater value than checkIntervalSec.
-          "type": "A String", # Specifies the type of the healthCheck, either TCP, UDP, SSL, HTTP, HTTPS or HTTP2. If not specified, the default is TCP. Exactly one of the protocol-specific health check field must be specified, which must match type field.
+          "type": "A String", # Specifies the type of the healthCheck, either TCP, SSL, HTTP or HTTPS. If not specified, the default is TCP. Exactly one of the protocol-specific health check field must be specified, which must match type field.
           "checkIntervalSec": 42, # How often (in seconds) to send a health check. The default value is 5 seconds.
           "tcpHealthCheck": {
             "portName": "A String", # Port name as defined in InstanceGroup#NamedPort#name. If both port and port_name are defined, port takes precedence.
@@ -381,13 +367,6 @@
             "requestPath": "A String", # The request path of the HTTPS health check request. The default value is /.
           },
           "healthyThreshold": 42, # A so-far unhealthy instance will be marked healthy after this many consecutive successes. The default value is 2.
-          "http2HealthCheck": {
-            "portName": "A String", # Port name as defined in InstanceGroup#NamedPort#name. If both port and port_name are defined, port takes precedence.
-            "host": "A String", # The value of the host header in the HTTP/2 health check request. If left empty (default value), the IP on behalf of which this health check is performed will be used.
-            "proxyHeader": "A String", # Specifies the type of proxy header to append before sending data to the backend, either NONE or PROXY_V1. The default is NONE.
-            "port": 42, # The TCP port number for the health check request. The default value is 443.
-            "requestPath": "A String", # The request path of the HTTP/2 health check request. The default value is /.
-          },
           "unhealthyThreshold": 42, # A so-far healthy instance will be marked unhealthy after this many consecutive failures. The default value is 2.
           "sslHealthCheck": {
             "portName": "A String", # Port name as defined in InstanceGroup#NamedPort#name. If both port and port_name are defined, port takes precedence.
@@ -436,7 +415,7 @@
     "kind": "compute#healthCheck", # Type of the resource.
     "description": "A String", # An optional description of this resource. Provide this property when you create the resource.
     "timeoutSec": 42, # How long (in seconds) to wait before claiming failure. The default value is 5 seconds. It is invalid for timeoutSec to have greater value than checkIntervalSec.
-    "type": "A String", # Specifies the type of the healthCheck, either TCP, UDP, SSL, HTTP, HTTPS or HTTP2. If not specified, the default is TCP. Exactly one of the protocol-specific health check field must be specified, which must match type field.
+    "type": "A String", # Specifies the type of the healthCheck, either TCP, SSL, HTTP or HTTPS. If not specified, the default is TCP. Exactly one of the protocol-specific health check field must be specified, which must match type field.
     "checkIntervalSec": 42, # How often (in seconds) to send a health check. The default value is 5 seconds.
     "tcpHealthCheck": {
       "portName": "A String", # Port name as defined in InstanceGroup#NamedPort#name. If both port and port_name are defined, port takes precedence.
@@ -460,13 +439,6 @@
       "requestPath": "A String", # The request path of the HTTPS health check request. The default value is /.
     },
     "healthyThreshold": 42, # A so-far unhealthy instance will be marked healthy after this many consecutive successes. The default value is 2.
-    "http2HealthCheck": {
-      "portName": "A String", # Port name as defined in InstanceGroup#NamedPort#name. If both port and port_name are defined, port takes precedence.
-      "host": "A String", # The value of the host header in the HTTP/2 health check request. If left empty (default value), the IP on behalf of which this health check is performed will be used.
-      "proxyHeader": "A String", # Specifies the type of proxy header to append before sending data to the backend, either NONE or PROXY_V1. The default is NONE.
-      "port": 42, # The TCP port number for the health check request. The default value is 443.
-      "requestPath": "A String", # The request path of the HTTP/2 health check request. The default value is /.
-    },
     "unhealthyThreshold": 42, # A so-far healthy instance will be marked unhealthy after this many consecutive failures. The default value is 2.
     "sslHealthCheck": {
       "portName": "A String", # Port name as defined in InstanceGroup#NamedPort#name. If both port and port_name are defined, port takes precedence.
@@ -528,7 +500,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
@@ -546,7 +518,7 @@
     "kind": "compute#healthCheck", # Type of the resource.
     "description": "A String", # An optional description of this resource. Provide this property when you create the resource.
     "timeoutSec": 42, # How long (in seconds) to wait before claiming failure. The default value is 5 seconds. It is invalid for timeoutSec to have greater value than checkIntervalSec.
-    "type": "A String", # Specifies the type of the healthCheck, either TCP, UDP, SSL, HTTP, HTTPS or HTTP2. If not specified, the default is TCP. Exactly one of the protocol-specific health check field must be specified, which must match type field.
+    "type": "A String", # Specifies the type of the healthCheck, either TCP, SSL, HTTP or HTTPS. If not specified, the default is TCP. Exactly one of the protocol-specific health check field must be specified, which must match type field.
     "checkIntervalSec": 42, # How often (in seconds) to send a health check. The default value is 5 seconds.
     "tcpHealthCheck": {
       "portName": "A String", # Port name as defined in InstanceGroup#NamedPort#name. If both port and port_name are defined, port takes precedence.
@@ -570,13 +542,6 @@
       "requestPath": "A String", # The request path of the HTTPS health check request. The default value is /.
     },
     "healthyThreshold": 42, # A so-far unhealthy instance will be marked healthy after this many consecutive successes. The default value is 2.
-    "http2HealthCheck": {
-      "portName": "A String", # Port name as defined in InstanceGroup#NamedPort#name. If both port and port_name are defined, port takes precedence.
-      "host": "A String", # The value of the host header in the HTTP/2 health check request. If left empty (default value), the IP on behalf of which this health check is performed will be used.
-      "proxyHeader": "A String", # Specifies the type of proxy header to append before sending data to the backend, either NONE or PROXY_V1. The default is NONE.
-      "port": 42, # The TCP port number for the health check request. The default value is 443.
-      "requestPath": "A String", # The request path of the HTTP/2 health check request. The default value is /.
-    },
     "unhealthyThreshold": 42, # A so-far healthy instance will be marked unhealthy after this many consecutive failures. The default value is 2.
     "sslHealthCheck": {
       "portName": "A String", # Port name as defined in InstanceGroup#NamedPort#name. If both port and port_name are defined, port takes precedence.
@@ -638,7 +603,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
diff --git a/docs/dyn/compute_v1.html b/docs/dyn/compute_v1.html
index 9b64698..f0e6886 100644
--- a/docs/dyn/compute_v1.html
+++ b/docs/dyn/compute_v1.html
@@ -185,6 +185,26 @@
 <p class="firstline">Returns the projects Resource.</p>
 
 <p class="toc_element">
+  <code><a href="compute_v1.regionAutoscalers.html">regionAutoscalers()</a></code>
+</p>
+<p class="firstline">Returns the regionAutoscalers Resource.</p>
+
+<p class="toc_element">
+  <code><a href="compute_v1.regionBackendServices.html">regionBackendServices()</a></code>
+</p>
+<p class="firstline">Returns the regionBackendServices Resource.</p>
+
+<p class="toc_element">
+  <code><a href="compute_v1.regionInstanceGroupManagers.html">regionInstanceGroupManagers()</a></code>
+</p>
+<p class="firstline">Returns the regionInstanceGroupManagers Resource.</p>
+
+<p class="toc_element">
+  <code><a href="compute_v1.regionInstanceGroups.html">regionInstanceGroups()</a></code>
+</p>
+<p class="firstline">Returns the regionInstanceGroups Resource.</p>
+
+<p class="toc_element">
   <code><a href="compute_v1.regionOperations.html">regionOperations()</a></code>
 </p>
 <p class="firstline">Returns the regionOperations Resource.</p>
diff --git a/docs/dyn/compute_v1.httpHealthChecks.html b/docs/dyn/compute_v1.httpHealthChecks.html
index 0d247e4..28a7e49 100644
--- a/docs/dyn/compute_v1.httpHealthChecks.html
+++ b/docs/dyn/compute_v1.httpHealthChecks.html
@@ -150,7 +150,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
@@ -254,7 +254,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
@@ -396,7 +396,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
@@ -473,7 +473,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
diff --git a/docs/dyn/compute_v1.httpsHealthChecks.html b/docs/dyn/compute_v1.httpsHealthChecks.html
index 2d7bf59..d9abfd6 100644
--- a/docs/dyn/compute_v1.httpsHealthChecks.html
+++ b/docs/dyn/compute_v1.httpsHealthChecks.html
@@ -150,7 +150,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
@@ -254,7 +254,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
@@ -396,7 +396,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
@@ -473,7 +473,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
diff --git a/docs/dyn/compute_v1.images.html b/docs/dyn/compute_v1.images.html
index 5a85a9e..9a98b3f 100644
--- a/docs/dyn/compute_v1.images.html
+++ b/docs/dyn/compute_v1.images.html
@@ -150,7 +150,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
@@ -167,10 +167,10 @@
     The object takes the form of:
 
 { # Deprecation status for a public resource.
-  "deleted": "A String", # An optional RFC3339 timestamp on or after which the deprecation state of this resource will be changed to DELETED.
-  "deprecated": "A String", # An optional RFC3339 timestamp on or after which the deprecation state of this resource will be changed to DEPRECATED.
+  "deleted": "A String", # An optional RFC3339 timestamp on or after which the state of this resource is intended to change to DELETED. This is only informational and the status will not change unless the client explicitly changes it.
+  "deprecated": "A String", # An optional RFC3339 timestamp on or after which the state of this resource is intended to change to DEPRECATED. This is only informational and the status will not change unless the client explicitly changes it.
   "state": "A String", # The deprecation state of this resource. This can be DEPRECATED, OBSOLETE, or DELETED. Operations which create a new resource using a DEPRECATED resource will return successfully, but with a warning indicating the deprecated resource and recommending its replacement. Operations which use OBSOLETE or DELETED resources will be rejected and result in an error.
-  "obsolete": "A String", # An optional RFC3339 timestamp on or after which the deprecation state of this resource will be changed to OBSOLETE.
+  "obsolete": "A String", # An optional RFC3339 timestamp on or after which the state of this resource is intended to change to OBSOLETE. This is only informational and the status will not change unless the client explicitly changes it.
   "replacement": "A String", # The URL of the suggested replacement for a deprecated resource. The suggested replacement resource must be the same kind of resource as the deprecated resource.
 }
 
@@ -221,7 +221,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
@@ -237,7 +237,7 @@
   An object of the form:
 
     { # An Image resource.
-      "sourceDisk": "A String", # URL of the The source disk used to create this image. This can be a full or valid partial URL. You must provide either this property or the rawDisk.source property but not both to create an image. For example, the following are valid values:
+      "sourceDisk": "A String", # URL of the source disk used to create this image. This can be a full or valid partial URL. You must provide either this property or the rawDisk.source property but not both to create an image. For example, the following are valid values:
           # - https://www.googleapis.com/compute/v1/projects/project/zones/zone/disks/disk
           # - projects/project/zones/zone/disks/disk
           # - zones/zone/disks/disk
@@ -250,10 +250,10 @@
       "description": "A String", # An optional description of this resource. Provide this property when you create the resource.
       "family": "A String", # The name of the image family to which this image belongs. You can create disks by specifying an image family instead of a specific image name. The image family always returns its latest image that is not deprecated. The name of the image family must comply with RFC1035.
       "deprecated": { # Deprecation status for a public resource. # The deprecation status associated with this image.
-        "deleted": "A String", # An optional RFC3339 timestamp on or after which the deprecation state of this resource will be changed to DELETED.
-        "deprecated": "A String", # An optional RFC3339 timestamp on or after which the deprecation state of this resource will be changed to DEPRECATED.
+        "deleted": "A String", # An optional RFC3339 timestamp on or after which the state of this resource is intended to change to DELETED. This is only informational and the status will not change unless the client explicitly changes it.
+        "deprecated": "A String", # An optional RFC3339 timestamp on or after which the state of this resource is intended to change to DEPRECATED. This is only informational and the status will not change unless the client explicitly changes it.
         "state": "A String", # The deprecation state of this resource. This can be DEPRECATED, OBSOLETE, or DELETED. Operations which create a new resource using a DEPRECATED resource will return successfully, but with a warning indicating the deprecated resource and recommending its replacement. Operations which use OBSOLETE or DELETED resources will be rejected and result in an error.
-        "obsolete": "A String", # An optional RFC3339 timestamp on or after which the deprecation state of this resource will be changed to OBSOLETE.
+        "obsolete": "A String", # An optional RFC3339 timestamp on or after which the state of this resource is intended to change to OBSOLETE. This is only informational and the status will not change unless the client explicitly changes it.
         "replacement": "A String", # The URL of the suggested replacement for a deprecated resource. The suggested replacement resource must be the same kind of resource as the deprecated resource.
       },
       "rawDisk": { # The parameters of the raw disk image.
@@ -263,6 +263,13 @@
       },
       "archiveSizeBytes": "A String", # Size of the image tar.gz archive stored in Google Cloud Storage (in bytes).
       "sourceDiskId": "A String", # The ID value of the disk used to create this image. This value may be used to determine whether the image was taken from the current or a previous instance of a given disk name.
+      "guestOsFeatures": [ # A list of features to enable on the guest OS. Applicable for bootable images only. Currently, only one feature can be enabled, VIRTIO_SCSCI_MULTIQUEUE, which allows each virtual CPU to have its own queue. For Windows images, you can only enable VIRTIO_SCSCI_MULTIQUEUE on images with driver version 1.2.0.1621 or higher. Linux images with kernel versions 3.17 and higher will support VIRTIO_SCSCI_MULTIQUEUE.
+          #
+          # For new Windows images, the server might also populate this field with the value WINDOWS, to indicate that this is a Windows image. This value is purely informational and does not enable or disable any features.
+        { # Guest OS features.
+          "type": "A String", # The type of supported feature. Currenty only VIRTIO_SCSI_MULTIQUEUE is supported. For newer Windows images, the server might also populate this property with the value WINDOWS to indicate that this is a Windows image. This value is purely informational and does not enable or disable any features.
+        },
+      ],
       "diskSizeGb": "A String", # Size of the image when restored onto a persistent disk (in GB).
       "imageEncryptionKey": { # Represents a customer-supplied encryption key # Encrypts the image using a customer-supplied encryption key.
           #
@@ -297,7 +304,7 @@
   An object of the form:
 
     { # An Image resource.
-      "sourceDisk": "A String", # URL of the The source disk used to create this image. This can be a full or valid partial URL. You must provide either this property or the rawDisk.source property but not both to create an image. For example, the following are valid values:
+      "sourceDisk": "A String", # URL of the source disk used to create this image. This can be a full or valid partial URL. You must provide either this property or the rawDisk.source property but not both to create an image. For example, the following are valid values:
           # - https://www.googleapis.com/compute/v1/projects/project/zones/zone/disks/disk
           # - projects/project/zones/zone/disks/disk
           # - zones/zone/disks/disk
@@ -310,10 +317,10 @@
       "description": "A String", # An optional description of this resource. Provide this property when you create the resource.
       "family": "A String", # The name of the image family to which this image belongs. You can create disks by specifying an image family instead of a specific image name. The image family always returns its latest image that is not deprecated. The name of the image family must comply with RFC1035.
       "deprecated": { # Deprecation status for a public resource. # The deprecation status associated with this image.
-        "deleted": "A String", # An optional RFC3339 timestamp on or after which the deprecation state of this resource will be changed to DELETED.
-        "deprecated": "A String", # An optional RFC3339 timestamp on or after which the deprecation state of this resource will be changed to DEPRECATED.
+        "deleted": "A String", # An optional RFC3339 timestamp on or after which the state of this resource is intended to change to DELETED. This is only informational and the status will not change unless the client explicitly changes it.
+        "deprecated": "A String", # An optional RFC3339 timestamp on or after which the state of this resource is intended to change to DEPRECATED. This is only informational and the status will not change unless the client explicitly changes it.
         "state": "A String", # The deprecation state of this resource. This can be DEPRECATED, OBSOLETE, or DELETED. Operations which create a new resource using a DEPRECATED resource will return successfully, but with a warning indicating the deprecated resource and recommending its replacement. Operations which use OBSOLETE or DELETED resources will be rejected and result in an error.
-        "obsolete": "A String", # An optional RFC3339 timestamp on or after which the deprecation state of this resource will be changed to OBSOLETE.
+        "obsolete": "A String", # An optional RFC3339 timestamp on or after which the state of this resource is intended to change to OBSOLETE. This is only informational and the status will not change unless the client explicitly changes it.
         "replacement": "A String", # The URL of the suggested replacement for a deprecated resource. The suggested replacement resource must be the same kind of resource as the deprecated resource.
       },
       "rawDisk": { # The parameters of the raw disk image.
@@ -323,6 +330,13 @@
       },
       "archiveSizeBytes": "A String", # Size of the image tar.gz archive stored in Google Cloud Storage (in bytes).
       "sourceDiskId": "A String", # The ID value of the disk used to create this image. This value may be used to determine whether the image was taken from the current or a previous instance of a given disk name.
+      "guestOsFeatures": [ # A list of features to enable on the guest OS. Applicable for bootable images only. Currently, only one feature can be enabled, VIRTIO_SCSCI_MULTIQUEUE, which allows each virtual CPU to have its own queue. For Windows images, you can only enable VIRTIO_SCSCI_MULTIQUEUE on images with driver version 1.2.0.1621 or higher. Linux images with kernel versions 3.17 and higher will support VIRTIO_SCSCI_MULTIQUEUE.
+          #
+          # For new Windows images, the server might also populate this field with the value WINDOWS, to indicate that this is a Windows image. This value is purely informational and does not enable or disable any features.
+        { # Guest OS features.
+          "type": "A String", # The type of supported feature. Currenty only VIRTIO_SCSI_MULTIQUEUE is supported. For newer Windows images, the server might also populate this property with the value WINDOWS to indicate that this is a Windows image. This value is purely informational and does not enable or disable any features.
+        },
+      ],
       "diskSizeGb": "A String", # Size of the image when restored onto a persistent disk (in GB).
       "imageEncryptionKey": { # Represents a customer-supplied encryption key # Encrypts the image using a customer-supplied encryption key.
           #
@@ -355,7 +369,7 @@
     The object takes the form of:
 
 { # An Image resource.
-    "sourceDisk": "A String", # URL of the The source disk used to create this image. This can be a full or valid partial URL. You must provide either this property or the rawDisk.source property but not both to create an image. For example, the following are valid values:
+    "sourceDisk": "A String", # URL of the source disk used to create this image. This can be a full or valid partial URL. You must provide either this property or the rawDisk.source property but not both to create an image. For example, the following are valid values:
         # - https://www.googleapis.com/compute/v1/projects/project/zones/zone/disks/disk
         # - projects/project/zones/zone/disks/disk
         # - zones/zone/disks/disk
@@ -368,10 +382,10 @@
     "description": "A String", # An optional description of this resource. Provide this property when you create the resource.
     "family": "A String", # The name of the image family to which this image belongs. You can create disks by specifying an image family instead of a specific image name. The image family always returns its latest image that is not deprecated. The name of the image family must comply with RFC1035.
     "deprecated": { # Deprecation status for a public resource. # The deprecation status associated with this image.
-      "deleted": "A String", # An optional RFC3339 timestamp on or after which the deprecation state of this resource will be changed to DELETED.
-      "deprecated": "A String", # An optional RFC3339 timestamp on or after which the deprecation state of this resource will be changed to DEPRECATED.
+      "deleted": "A String", # An optional RFC3339 timestamp on or after which the state of this resource is intended to change to DELETED. This is only informational and the status will not change unless the client explicitly changes it.
+      "deprecated": "A String", # An optional RFC3339 timestamp on or after which the state of this resource is intended to change to DEPRECATED. This is only informational and the status will not change unless the client explicitly changes it.
       "state": "A String", # The deprecation state of this resource. This can be DEPRECATED, OBSOLETE, or DELETED. Operations which create a new resource using a DEPRECATED resource will return successfully, but with a warning indicating the deprecated resource and recommending its replacement. Operations which use OBSOLETE or DELETED resources will be rejected and result in an error.
-      "obsolete": "A String", # An optional RFC3339 timestamp on or after which the deprecation state of this resource will be changed to OBSOLETE.
+      "obsolete": "A String", # An optional RFC3339 timestamp on or after which the state of this resource is intended to change to OBSOLETE. This is only informational and the status will not change unless the client explicitly changes it.
       "replacement": "A String", # The URL of the suggested replacement for a deprecated resource. The suggested replacement resource must be the same kind of resource as the deprecated resource.
     },
     "rawDisk": { # The parameters of the raw disk image.
@@ -381,6 +395,13 @@
     },
     "archiveSizeBytes": "A String", # Size of the image tar.gz archive stored in Google Cloud Storage (in bytes).
     "sourceDiskId": "A String", # The ID value of the disk used to create this image. This value may be used to determine whether the image was taken from the current or a previous instance of a given disk name.
+    "guestOsFeatures": [ # A list of features to enable on the guest OS. Applicable for bootable images only. Currently, only one feature can be enabled, VIRTIO_SCSCI_MULTIQUEUE, which allows each virtual CPU to have its own queue. For Windows images, you can only enable VIRTIO_SCSCI_MULTIQUEUE on images with driver version 1.2.0.1621 or higher. Linux images with kernel versions 3.17 and higher will support VIRTIO_SCSCI_MULTIQUEUE.
+        # 
+        # For new Windows images, the server might also populate this field with the value WINDOWS, to indicate that this is a Windows image. This value is purely informational and does not enable or disable any features.
+      { # Guest OS features.
+        "type": "A String", # The type of supported feature. Currenty only VIRTIO_SCSI_MULTIQUEUE is supported. For newer Windows images, the server might also populate this property with the value WINDOWS to indicate that this is a Windows image. This value is purely informational and does not enable or disable any features.
+      },
+    ],
     "diskSizeGb": "A String", # Size of the image when restored onto a persistent disk (in GB).
     "imageEncryptionKey": { # Represents a customer-supplied encryption key # Encrypts the image using a customer-supplied encryption key.
         # 
@@ -449,7 +470,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
@@ -483,7 +504,7 @@
     "nextPageToken": "A String", # [Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results.
     "items": [ # [Output Only] A list of Image resources.
       { # An Image resource.
-          "sourceDisk": "A String", # URL of the The source disk used to create this image. This can be a full or valid partial URL. You must provide either this property or the rawDisk.source property but not both to create an image. For example, the following are valid values:
+          "sourceDisk": "A String", # URL of the source disk used to create this image. This can be a full or valid partial URL. You must provide either this property or the rawDisk.source property but not both to create an image. For example, the following are valid values:
               # - https://www.googleapis.com/compute/v1/projects/project/zones/zone/disks/disk
               # - projects/project/zones/zone/disks/disk
               # - zones/zone/disks/disk
@@ -496,10 +517,10 @@
           "description": "A String", # An optional description of this resource. Provide this property when you create the resource.
           "family": "A String", # The name of the image family to which this image belongs. You can create disks by specifying an image family instead of a specific image name. The image family always returns its latest image that is not deprecated. The name of the image family must comply with RFC1035.
           "deprecated": { # Deprecation status for a public resource. # The deprecation status associated with this image.
-            "deleted": "A String", # An optional RFC3339 timestamp on or after which the deprecation state of this resource will be changed to DELETED.
-            "deprecated": "A String", # An optional RFC3339 timestamp on or after which the deprecation state of this resource will be changed to DEPRECATED.
+            "deleted": "A String", # An optional RFC3339 timestamp on or after which the state of this resource is intended to change to DELETED. This is only informational and the status will not change unless the client explicitly changes it.
+            "deprecated": "A String", # An optional RFC3339 timestamp on or after which the state of this resource is intended to change to DEPRECATED. This is only informational and the status will not change unless the client explicitly changes it.
             "state": "A String", # The deprecation state of this resource. This can be DEPRECATED, OBSOLETE, or DELETED. Operations which create a new resource using a DEPRECATED resource will return successfully, but with a warning indicating the deprecated resource and recommending its replacement. Operations which use OBSOLETE or DELETED resources will be rejected and result in an error.
-            "obsolete": "A String", # An optional RFC3339 timestamp on or after which the deprecation state of this resource will be changed to OBSOLETE.
+            "obsolete": "A String", # An optional RFC3339 timestamp on or after which the state of this resource is intended to change to OBSOLETE. This is only informational and the status will not change unless the client explicitly changes it.
             "replacement": "A String", # The URL of the suggested replacement for a deprecated resource. The suggested replacement resource must be the same kind of resource as the deprecated resource.
           },
           "rawDisk": { # The parameters of the raw disk image.
@@ -509,6 +530,13 @@
           },
           "archiveSizeBytes": "A String", # Size of the image tar.gz archive stored in Google Cloud Storage (in bytes).
           "sourceDiskId": "A String", # The ID value of the disk used to create this image. This value may be used to determine whether the image was taken from the current or a previous instance of a given disk name.
+          "guestOsFeatures": [ # A list of features to enable on the guest OS. Applicable for bootable images only. Currently, only one feature can be enabled, VIRTIO_SCSCI_MULTIQUEUE, which allows each virtual CPU to have its own queue. For Windows images, you can only enable VIRTIO_SCSCI_MULTIQUEUE on images with driver version 1.2.0.1621 or higher. Linux images with kernel versions 3.17 and higher will support VIRTIO_SCSCI_MULTIQUEUE.
+              #
+              # For new Windows images, the server might also populate this field with the value WINDOWS, to indicate that this is a Windows image. This value is purely informational and does not enable or disable any features.
+            { # Guest OS features.
+              "type": "A String", # The type of supported feature. Currenty only VIRTIO_SCSI_MULTIQUEUE is supported. For newer Windows images, the server might also populate this property with the value WINDOWS to indicate that this is a Windows image. This value is purely informational and does not enable or disable any features.
+            },
+          ],
           "diskSizeGb": "A String", # Size of the image when restored onto a persistent disk (in GB).
           "imageEncryptionKey": { # Represents a customer-supplied encryption key # Encrypts the image using a customer-supplied encryption key.
               #
diff --git a/docs/dyn/compute_v1.instanceGroupManagers.html b/docs/dyn/compute_v1.instanceGroupManagers.html
index 3068e0b..3b92f3c 100644
--- a/docs/dyn/compute_v1.instanceGroupManagers.html
+++ b/docs/dyn/compute_v1.instanceGroupManagers.html
@@ -99,7 +99,7 @@
   <code><a href="#list">list(project, zone, orderBy=None, maxResults=None, pageToken=None, filter=None)</a></code></p>
 <p class="firstline">Retrieves a list of managed instance groups that are contained within the specified project and zone.</p>
 <p class="toc_element">
-  <code><a href="#listManagedInstances">listManagedInstances(project, zone, instanceGroupManager)</a></code></p>
+  <code><a href="#listManagedInstances">listManagedInstances(project, zone, instanceGroupManager, order_by=None, maxResults=None, pageToken=None, filter=None)</a></code></p>
 <p class="firstline">Lists all of the instances in the managed instance group. Each instance in the list has a currentAction, which indicates the action that the managed instance group is performing on the instance. For example, if the group is still creating an instance, the currentAction is CREATING. If a previous action failed, the list displays the errors for that failed action.</p>
 <p class="toc_element">
   <code><a href="#list_next">list_next(previous_request, previous_response)</a></code></p>
@@ -181,7 +181,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
@@ -341,7 +341,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
@@ -409,7 +409,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
@@ -557,7 +557,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
@@ -635,13 +635,17 @@
 </div>
 
 <div class="method">
-    <code class="details" id="listManagedInstances">listManagedInstances(project, zone, instanceGroupManager)</code>
+    <code class="details" id="listManagedInstances">listManagedInstances(project, zone, instanceGroupManager, order_by=None, maxResults=None, pageToken=None, filter=None)</code>
   <pre>Lists all of the instances in the managed instance group. Each instance in the list has a currentAction, which indicates the action that the managed instance group is performing on the instance. For example, if the group is still creating an instance, the currentAction is CREATING. If a previous action failed, the list displays the errors for that failed action.
 
 Args:
   project: string, Project ID for this request. (required)
   zone: string, The name of the zone where the managed instance group is located. (required)
   instanceGroupManager: string, The name of the managed instance group. (required)
+  order_by: string, A parameter
+  maxResults: integer, A parameter
+  pageToken: string, A parameter
+  filter: string, A parameter
 
 Returns:
   An object of the form:
@@ -755,7 +759,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
@@ -815,7 +819,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
@@ -881,7 +885,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
@@ -950,7 +954,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
diff --git a/docs/dyn/compute_v1.instanceGroups.html b/docs/dyn/compute_v1.instanceGroups.html
index 85fc2a3..9c294f6 100644
--- a/docs/dyn/compute_v1.instanceGroups.html
+++ b/docs/dyn/compute_v1.instanceGroups.html
@@ -177,7 +177,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
@@ -325,7 +325,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
@@ -449,7 +449,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
@@ -663,7 +663,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
@@ -735,7 +735,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
diff --git a/docs/dyn/compute_v1.instanceTemplates.html b/docs/dyn/compute_v1.instanceTemplates.html
index 05075d4..1d04178 100644
--- a/docs/dyn/compute_v1.instanceTemplates.html
+++ b/docs/dyn/compute_v1.instanceTemplates.html
@@ -144,7 +144,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
@@ -206,7 +206,7 @@
               },
               "diskSizeGb": "A String", # Specifies the size of the disk in base-2 GB.
               "diskName": "A String", # Specifies the disk name. If not specified, the default is to use the name of the instance.
-              "sourceImage": "A String", # The source image used to create this disk. If the source image is deleted, this field will not be set.
+              "sourceImage": "A String", # The source image to create this disk. When creating a new instance, one of initializeParams.sourceImage or disks.source is required.
                   #
                   # To create a disk with one of the public operating system images, specify the image by its family name. For example, specify family/debian-8 to use the latest Debian 8 image:
                   #
@@ -223,6 +223,8 @@
                   # You can also specify a private image by its image family, which returns the latest version of the image in that family. Replace the image name with family/family-name:
                   #
                   # global/images/family/my-private-family
+                  #
+                  # If the source image is deleted later, this field will not be set.
               "diskType": "A String", # Specifies the disk type to use to create the instance. If not specified, the default is pd-standard, specified using the full URL. For example:
                   #
                   # https://www.googleapis.com/compute/v1/projects/project/zones/zone/diskTypes/pd-standard
@@ -241,7 +243,11 @@
             "mode": "A String", # The mode in which to attach this disk, either READ_WRITE or READ_ONLY. If not specified, the default is to attach the disk in READ_WRITE mode.
             "interface": "A String", # Specifies the disk interface to use for attaching this disk, which is either SCSI or NVME. The default is SCSI. Persistent disks must always use SCSI and the request will fail if you attempt to attach a persistent disk in any other format than SCSI. Local SSDs can use either NVME or SCSI. For performance characteristics of SCSI over NVMe, see Local SSD performance.
             "type": "A String", # Specifies the type of the disk, either SCRATCH or PERSISTENT. If not specified, the default is PERSISTENT.
-            "source": "A String", # Specifies a valid partial or full URL to an existing Persistent Disk resource. This field is only applicable for persistent disks. Note that for InstanceTemplate, it is just disk name, not URL for the disk.
+            "source": "A String", # Specifies a valid partial or full URL to an existing Persistent Disk resource. When creating a new instance, one of initializeParams.sourceImage or disks.source is required.
+                #
+                # If desired, you can also attach existing non-root persistent disks using this property. This field is only applicable for persistent disks.
+                #
+                # Note that for InstanceTemplate, specify the disk name, not the URL for the disk.
           },
         ],
         "scheduling": { # Sets the scheduling options for an Instance. # Specifies the scheduling options for the instances that are created from this template.
@@ -355,7 +361,7 @@
             },
             "diskSizeGb": "A String", # Specifies the size of the disk in base-2 GB.
             "diskName": "A String", # Specifies the disk name. If not specified, the default is to use the name of the instance.
-            "sourceImage": "A String", # The source image used to create this disk. If the source image is deleted, this field will not be set.
+            "sourceImage": "A String", # The source image to create this disk. When creating a new instance, one of initializeParams.sourceImage or disks.source is required.
                 #
                 # To create a disk with one of the public operating system images, specify the image by its family name. For example, specify family/debian-8 to use the latest Debian 8 image:
                 #
@@ -372,6 +378,8 @@
                 # You can also specify a private image by its image family, which returns the latest version of the image in that family. Replace the image name with family/family-name:
                 #
                 # global/images/family/my-private-family
+                #
+                # If the source image is deleted later, this field will not be set.
             "diskType": "A String", # Specifies the disk type to use to create the instance. If not specified, the default is pd-standard, specified using the full URL. For example:
                 #
                 # https://www.googleapis.com/compute/v1/projects/project/zones/zone/diskTypes/pd-standard
@@ -390,7 +398,11 @@
           "mode": "A String", # The mode in which to attach this disk, either READ_WRITE or READ_ONLY. If not specified, the default is to attach the disk in READ_WRITE mode.
           "interface": "A String", # Specifies the disk interface to use for attaching this disk, which is either SCSI or NVME. The default is SCSI. Persistent disks must always use SCSI and the request will fail if you attempt to attach a persistent disk in any other format than SCSI. Local SSDs can use either NVME or SCSI. For performance characteristics of SCSI over NVMe, see Local SSD performance.
           "type": "A String", # Specifies the type of the disk, either SCRATCH or PERSISTENT. If not specified, the default is PERSISTENT.
-          "source": "A String", # Specifies a valid partial or full URL to an existing Persistent Disk resource. This field is only applicable for persistent disks. Note that for InstanceTemplate, it is just disk name, not URL for the disk.
+          "source": "A String", # Specifies a valid partial or full URL to an existing Persistent Disk resource. When creating a new instance, one of initializeParams.sourceImage or disks.source is required.
+              #
+              # If desired, you can also attach existing non-root persistent disks using this property. This field is only applicable for persistent disks.
+              #
+              # Note that for InstanceTemplate, specify the disk name, not the URL for the disk.
         },
       ],
       "scheduling": { # Sets the scheduling options for an Instance. # Specifies the scheduling options for the instances that are created from this template.
@@ -494,7 +506,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
@@ -574,7 +586,7 @@
                   },
                   "diskSizeGb": "A String", # Specifies the size of the disk in base-2 GB.
                   "diskName": "A String", # Specifies the disk name. If not specified, the default is to use the name of the instance.
-                  "sourceImage": "A String", # The source image used to create this disk. If the source image is deleted, this field will not be set.
+                  "sourceImage": "A String", # The source image to create this disk. When creating a new instance, one of initializeParams.sourceImage or disks.source is required.
                       #
                       # To create a disk with one of the public operating system images, specify the image by its family name. For example, specify family/debian-8 to use the latest Debian 8 image:
                       #
@@ -591,6 +603,8 @@
                       # You can also specify a private image by its image family, which returns the latest version of the image in that family. Replace the image name with family/family-name:
                       #
                       # global/images/family/my-private-family
+                      #
+                      # If the source image is deleted later, this field will not be set.
                   "diskType": "A String", # Specifies the disk type to use to create the instance. If not specified, the default is pd-standard, specified using the full URL. For example:
                       #
                       # https://www.googleapis.com/compute/v1/projects/project/zones/zone/diskTypes/pd-standard
@@ -609,7 +623,11 @@
                 "mode": "A String", # The mode in which to attach this disk, either READ_WRITE or READ_ONLY. If not specified, the default is to attach the disk in READ_WRITE mode.
                 "interface": "A String", # Specifies the disk interface to use for attaching this disk, which is either SCSI or NVME. The default is SCSI. Persistent disks must always use SCSI and the request will fail if you attempt to attach a persistent disk in any other format than SCSI. Local SSDs can use either NVME or SCSI. For performance characteristics of SCSI over NVMe, see Local SSD performance.
                 "type": "A String", # Specifies the type of the disk, either SCRATCH or PERSISTENT. If not specified, the default is PERSISTENT.
-                "source": "A String", # Specifies a valid partial or full URL to an existing Persistent Disk resource. This field is only applicable for persistent disks. Note that for InstanceTemplate, it is just disk name, not URL for the disk.
+                "source": "A String", # Specifies a valid partial or full URL to an existing Persistent Disk resource. When creating a new instance, one of initializeParams.sourceImage or disks.source is required.
+                    #
+                    # If desired, you can also attach existing non-root persistent disks using this property. This field is only applicable for persistent disks.
+                    #
+                    # Note that for InstanceTemplate, specify the disk name, not the URL for the disk.
               },
             ],
             "scheduling": { # Sets the scheduling options for an Instance. # Specifies the scheduling options for the instances that are created from this template.
diff --git a/docs/dyn/compute_v1.instances.html b/docs/dyn/compute_v1.instances.html
index f3db40d..340a16f 100644
--- a/docs/dyn/compute_v1.instances.html
+++ b/docs/dyn/compute_v1.instances.html
@@ -99,7 +99,7 @@
   <code><a href="#get">get(project, zone, instance)</a></code></p>
 <p class="firstline">Returns the specified Instance resource. Get a list of available instances by making a list() request.</p>
 <p class="toc_element">
-  <code><a href="#getSerialPortOutput">getSerialPortOutput(project, zone, instance, port=None)</a></code></p>
+  <code><a href="#getSerialPortOutput">getSerialPortOutput(project, zone, instance, start=None, port=None)</a></code></p>
 <p class="firstline">Returns the specified instance's serial port output.</p>
 <p class="toc_element">
   <code><a href="#insert">insert(project, zone, body)</a></code></p>
@@ -204,7 +204,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
@@ -285,7 +285,7 @@
                   },
                   "diskSizeGb": "A String", # Specifies the size of the disk in base-2 GB.
                   "diskName": "A String", # Specifies the disk name. If not specified, the default is to use the name of the instance.
-                  "sourceImage": "A String", # The source image used to create this disk. If the source image is deleted, this field will not be set.
+                  "sourceImage": "A String", # The source image to create this disk. When creating a new instance, one of initializeParams.sourceImage or disks.source is required.
                       #
                       # To create a disk with one of the public operating system images, specify the image by its family name. For example, specify family/debian-8 to use the latest Debian 8 image:
                       #
@@ -302,6 +302,8 @@
                       # You can also specify a private image by its image family, which returns the latest version of the image in that family. Replace the image name with family/family-name:
                       #
                       # global/images/family/my-private-family
+                      #
+                      # If the source image is deleted later, this field will not be set.
                   "diskType": "A String", # Specifies the disk type to use to create the instance. If not specified, the default is pd-standard, specified using the full URL. For example:
                       #
                       # https://www.googleapis.com/compute/v1/projects/project/zones/zone/diskTypes/pd-standard
@@ -320,7 +322,11 @@
                 "mode": "A String", # The mode in which to attach this disk, either READ_WRITE or READ_ONLY. If not specified, the default is to attach the disk in READ_WRITE mode.
                 "interface": "A String", # Specifies the disk interface to use for attaching this disk, which is either SCSI or NVME. The default is SCSI. Persistent disks must always use SCSI and the request will fail if you attempt to attach a persistent disk in any other format than SCSI. Local SSDs can use either NVME or SCSI. For performance characteristics of SCSI over NVMe, see Local SSD performance.
                 "type": "A String", # Specifies the type of the disk, either SCRATCH or PERSISTENT. If not specified, the default is PERSISTENT.
-                "source": "A String", # Specifies a valid partial or full URL to an existing Persistent Disk resource. This field is only applicable for persistent disks. Note that for InstanceTemplate, it is just disk name, not URL for the disk.
+                "source": "A String", # Specifies a valid partial or full URL to an existing Persistent Disk resource. When creating a new instance, one of initializeParams.sourceImage or disks.source is required.
+                    #
+                    # If desired, you can also attach existing non-root persistent disks using this property. This field is only applicable for persistent disks.
+                    #
+                    # Note that for InstanceTemplate, specify the disk name, not the URL for the disk.
               },
             ],
             "name": "A String", # The name of the resource, provided by the client when initially creating the resource. The resource name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression [a-z]([-a-z0-9]*[a-z0-9])? which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.
@@ -463,7 +469,7 @@
     },
     "diskSizeGb": "A String", # Specifies the size of the disk in base-2 GB.
     "diskName": "A String", # Specifies the disk name. If not specified, the default is to use the name of the instance.
-    "sourceImage": "A String", # The source image used to create this disk. If the source image is deleted, this field will not be set.
+    "sourceImage": "A String", # The source image to create this disk. When creating a new instance, one of initializeParams.sourceImage or disks.source is required.
         #
         # To create a disk with one of the public operating system images, specify the image by its family name. For example, specify family/debian-8 to use the latest Debian 8 image:
         #
@@ -480,6 +486,8 @@
         # You can also specify a private image by its image family, which returns the latest version of the image in that family. Replace the image name with family/family-name:
         #
         # global/images/family/my-private-family
+        #
+        # If the source image is deleted later, this field will not be set.
     "diskType": "A String", # Specifies the disk type to use to create the instance. If not specified, the default is pd-standard, specified using the full URL. For example:
         #
         # https://www.googleapis.com/compute/v1/projects/project/zones/zone/diskTypes/pd-standard
@@ -498,7 +506,11 @@
   "mode": "A String", # The mode in which to attach this disk, either READ_WRITE or READ_ONLY. If not specified, the default is to attach the disk in READ_WRITE mode.
   "interface": "A String", # Specifies the disk interface to use for attaching this disk, which is either SCSI or NVME. The default is SCSI. Persistent disks must always use SCSI and the request will fail if you attempt to attach a persistent disk in any other format than SCSI. Local SSDs can use either NVME or SCSI. For performance characteristics of SCSI over NVMe, see Local SSD performance.
   "type": "A String", # Specifies the type of the disk, either SCRATCH or PERSISTENT. If not specified, the default is PERSISTENT.
-  "source": "A String", # Specifies a valid partial or full URL to an existing Persistent Disk resource. This field is only applicable for persistent disks. Note that for InstanceTemplate, it is just disk name, not URL for the disk.
+  "source": "A String", # Specifies a valid partial or full URL to an existing Persistent Disk resource. When creating a new instance, one of initializeParams.sourceImage or disks.source is required.
+      # 
+      # If desired, you can also attach existing non-root persistent disks using this property. This field is only applicable for persistent disks.
+      # 
+      # Note that for InstanceTemplate, specify the disk name, not the URL for the disk.
 }
 
 
@@ -548,7 +560,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
@@ -607,7 +619,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
@@ -668,7 +680,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
@@ -728,7 +740,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
@@ -790,7 +802,7 @@
           },
           "diskSizeGb": "A String", # Specifies the size of the disk in base-2 GB.
           "diskName": "A String", # Specifies the disk name. If not specified, the default is to use the name of the instance.
-          "sourceImage": "A String", # The source image used to create this disk. If the source image is deleted, this field will not be set.
+          "sourceImage": "A String", # The source image to create this disk. When creating a new instance, one of initializeParams.sourceImage or disks.source is required.
               #
               # To create a disk with one of the public operating system images, specify the image by its family name. For example, specify family/debian-8 to use the latest Debian 8 image:
               #
@@ -807,6 +819,8 @@
               # You can also specify a private image by its image family, which returns the latest version of the image in that family. Replace the image name with family/family-name:
               #
               # global/images/family/my-private-family
+              #
+              # If the source image is deleted later, this field will not be set.
           "diskType": "A String", # Specifies the disk type to use to create the instance. If not specified, the default is pd-standard, specified using the full URL. For example:
               #
               # https://www.googleapis.com/compute/v1/projects/project/zones/zone/diskTypes/pd-standard
@@ -825,7 +839,11 @@
         "mode": "A String", # The mode in which to attach this disk, either READ_WRITE or READ_ONLY. If not specified, the default is to attach the disk in READ_WRITE mode.
         "interface": "A String", # Specifies the disk interface to use for attaching this disk, which is either SCSI or NVME. The default is SCSI. Persistent disks must always use SCSI and the request will fail if you attempt to attach a persistent disk in any other format than SCSI. Local SSDs can use either NVME or SCSI. For performance characteristics of SCSI over NVMe, see Local SSD performance.
         "type": "A String", # Specifies the type of the disk, either SCRATCH or PERSISTENT. If not specified, the default is PERSISTENT.
-        "source": "A String", # Specifies a valid partial or full URL to an existing Persistent Disk resource. This field is only applicable for persistent disks. Note that for InstanceTemplate, it is just disk name, not URL for the disk.
+        "source": "A String", # Specifies a valid partial or full URL to an existing Persistent Disk resource. When creating a new instance, one of initializeParams.sourceImage or disks.source is required.
+            #
+            # If desired, you can also attach existing non-root persistent disks using this property. This field is only applicable for persistent disks.
+            #
+            # Note that for InstanceTemplate, specify the disk name, not the URL for the disk.
       },
     ],
     "name": "A String", # The name of the resource, provided by the client when initially creating the resource. The resource name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression [a-z]([-a-z0-9]*[a-z0-9])? which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.
@@ -896,22 +914,25 @@
 </div>
 
 <div class="method">
-    <code class="details" id="getSerialPortOutput">getSerialPortOutput(project, zone, instance, port=None)</code>
+    <code class="details" id="getSerialPortOutput">getSerialPortOutput(project, zone, instance, start=None, port=None)</code>
   <pre>Returns the specified instance's serial port output.
 
 Args:
   project: string, Project ID for this request. (required)
   zone: string, The name of the zone for this request. (required)
   instance: string, Name of the instance scoping this request. (required)
+  start: string, For the initial request, leave this field unspecified. For subsequent calls, this field should be set to the next value that was returned in the previous call.
   port: integer, Specifies which COM or serial port to retrieve data from.
 
 Returns:
   An object of the form:
 
     { # An instance's serial console output.
+    "start": "A String", # [Output Only] The starting byte position of the output that was returned. This should match the start parameter sent with the request. If the serial console output exceeds the size of the buffer, older output will be overwritten by newer content and the start values will be mismatched.
     "kind": "compute#serialPortOutput", # [Output Only] Type of the resource. Always compute#serialPortOutput for serial port output.
     "selfLink": "A String", # [Output Only] Server-defined URL for this resource.
     "contents": "A String", # [Output Only] The contents of the console output.
+    "next": "A String", # [Output Only] The position of the next byte of content from the serial console output. Use this value in the next request as the start parameter.
   }</pre>
 </div>
 
@@ -971,7 +992,7 @@
         },
         "diskSizeGb": "A String", # Specifies the size of the disk in base-2 GB.
         "diskName": "A String", # Specifies the disk name. If not specified, the default is to use the name of the instance.
-        "sourceImage": "A String", # The source image used to create this disk. If the source image is deleted, this field will not be set.
+        "sourceImage": "A String", # The source image to create this disk. When creating a new instance, one of initializeParams.sourceImage or disks.source is required.
             #
             # To create a disk with one of the public operating system images, specify the image by its family name. For example, specify family/debian-8 to use the latest Debian 8 image:
             #
@@ -988,6 +1009,8 @@
             # You can also specify a private image by its image family, which returns the latest version of the image in that family. Replace the image name with family/family-name:
             #
             # global/images/family/my-private-family
+            #
+            # If the source image is deleted later, this field will not be set.
         "diskType": "A String", # Specifies the disk type to use to create the instance. If not specified, the default is pd-standard, specified using the full URL. For example:
             #
             # https://www.googleapis.com/compute/v1/projects/project/zones/zone/diskTypes/pd-standard
@@ -1006,7 +1029,11 @@
       "mode": "A String", # The mode in which to attach this disk, either READ_WRITE or READ_ONLY. If not specified, the default is to attach the disk in READ_WRITE mode.
       "interface": "A String", # Specifies the disk interface to use for attaching this disk, which is either SCSI or NVME. The default is SCSI. Persistent disks must always use SCSI and the request will fail if you attempt to attach a persistent disk in any other format than SCSI. Local SSDs can use either NVME or SCSI. For performance characteristics of SCSI over NVMe, see Local SSD performance.
       "type": "A String", # Specifies the type of the disk, either SCRATCH or PERSISTENT. If not specified, the default is PERSISTENT.
-      "source": "A String", # Specifies a valid partial or full URL to an existing Persistent Disk resource. This field is only applicable for persistent disks. Note that for InstanceTemplate, it is just disk name, not URL for the disk.
+      "source": "A String", # Specifies a valid partial or full URL to an existing Persistent Disk resource. When creating a new instance, one of initializeParams.sourceImage or disks.source is required.
+          #
+          # If desired, you can also attach existing non-root persistent disks using this property. This field is only applicable for persistent disks.
+          #
+          # Note that for InstanceTemplate, specify the disk name, not the URL for the disk.
     },
   ],
   "name": "A String", # The name of the resource, provided by the client when initially creating the resource. The resource name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression [a-z]([-a-z0-9]*[a-z0-9])? which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.
@@ -1122,7 +1149,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
@@ -1202,7 +1229,7 @@
               },
               "diskSizeGb": "A String", # Specifies the size of the disk in base-2 GB.
               "diskName": "A String", # Specifies the disk name. If not specified, the default is to use the name of the instance.
-              "sourceImage": "A String", # The source image used to create this disk. If the source image is deleted, this field will not be set.
+              "sourceImage": "A String", # The source image to create this disk. When creating a new instance, one of initializeParams.sourceImage or disks.source is required.
                   #
                   # To create a disk with one of the public operating system images, specify the image by its family name. For example, specify family/debian-8 to use the latest Debian 8 image:
                   #
@@ -1219,6 +1246,8 @@
                   # You can also specify a private image by its image family, which returns the latest version of the image in that family. Replace the image name with family/family-name:
                   #
                   # global/images/family/my-private-family
+                  #
+                  # If the source image is deleted later, this field will not be set.
               "diskType": "A String", # Specifies the disk type to use to create the instance. If not specified, the default is pd-standard, specified using the full URL. For example:
                   #
                   # https://www.googleapis.com/compute/v1/projects/project/zones/zone/diskTypes/pd-standard
@@ -1237,7 +1266,11 @@
             "mode": "A String", # The mode in which to attach this disk, either READ_WRITE or READ_ONLY. If not specified, the default is to attach the disk in READ_WRITE mode.
             "interface": "A String", # Specifies the disk interface to use for attaching this disk, which is either SCSI or NVME. The default is SCSI. Persistent disks must always use SCSI and the request will fail if you attempt to attach a persistent disk in any other format than SCSI. Local SSDs can use either NVME or SCSI. For performance characteristics of SCSI over NVMe, see Local SSD performance.
             "type": "A String", # Specifies the type of the disk, either SCRATCH or PERSISTENT. If not specified, the default is PERSISTENT.
-            "source": "A String", # Specifies a valid partial or full URL to an existing Persistent Disk resource. This field is only applicable for persistent disks. Note that for InstanceTemplate, it is just disk name, not URL for the disk.
+            "source": "A String", # Specifies a valid partial or full URL to an existing Persistent Disk resource. When creating a new instance, one of initializeParams.sourceImage or disks.source is required.
+                #
+                # If desired, you can also attach existing non-root persistent disks using this property. This field is only applicable for persistent disks.
+                #
+                # Note that for InstanceTemplate, specify the disk name, not the URL for the disk.
           },
         ],
         "name": "A String", # The name of the resource, provided by the client when initially creating the resource. The resource name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression [a-z]([-a-z0-9]*[a-z0-9])? which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.
@@ -1381,7 +1414,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
@@ -1442,7 +1475,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
@@ -1508,7 +1541,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
@@ -1581,7 +1614,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
@@ -1649,7 +1682,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
@@ -1720,7 +1753,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
@@ -1779,7 +1812,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
@@ -1857,7 +1890,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
@@ -1916,7 +1949,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
diff --git a/docs/dyn/compute_v1.machineTypes.html b/docs/dyn/compute_v1.machineTypes.html
index e213d7c..c1d797e 100644
--- a/docs/dyn/compute_v1.machineTypes.html
+++ b/docs/dyn/compute_v1.machineTypes.html
@@ -130,10 +130,10 @@
             "zone": "A String", # [Output Only] The name of the zone where the machine type resides, such as us-central1-a.
             "maximumPersistentDisks": 42, # [Output Only] Maximum persistent disks allowed.
             "deprecated": { # Deprecation status for a public resource. # [Output Only] The deprecation status associated with this machine type.
-              "deleted": "A String", # An optional RFC3339 timestamp on or after which the deprecation state of this resource will be changed to DELETED.
-              "deprecated": "A String", # An optional RFC3339 timestamp on or after which the deprecation state of this resource will be changed to DEPRECATED.
+              "deleted": "A String", # An optional RFC3339 timestamp on or after which the state of this resource is intended to change to DELETED. This is only informational and the status will not change unless the client explicitly changes it.
+              "deprecated": "A String", # An optional RFC3339 timestamp on or after which the state of this resource is intended to change to DEPRECATED. This is only informational and the status will not change unless the client explicitly changes it.
               "state": "A String", # The deprecation state of this resource. This can be DEPRECATED, OBSOLETE, or DELETED. Operations which create a new resource using a DEPRECATED resource will return successfully, but with a warning indicating the deprecated resource and recommending its replacement. Operations which use OBSOLETE or DELETED resources will be rejected and result in an error.
-              "obsolete": "A String", # An optional RFC3339 timestamp on or after which the deprecation state of this resource will be changed to OBSOLETE.
+              "obsolete": "A String", # An optional RFC3339 timestamp on or after which the state of this resource is intended to change to OBSOLETE. This is only informational and the status will not change unless the client explicitly changes it.
               "replacement": "A String", # The URL of the suggested replacement for a deprecated resource. The suggested replacement resource must be the same kind of resource as the deprecated resource.
             },
             "memoryMb": 42, # [Output Only] The amount of physical memory available to the instance, defined in MB.
@@ -203,10 +203,10 @@
     "zone": "A String", # [Output Only] The name of the zone where the machine type resides, such as us-central1-a.
     "maximumPersistentDisks": 42, # [Output Only] Maximum persistent disks allowed.
     "deprecated": { # Deprecation status for a public resource. # [Output Only] The deprecation status associated with this machine type.
-      "deleted": "A String", # An optional RFC3339 timestamp on or after which the deprecation state of this resource will be changed to DELETED.
-      "deprecated": "A String", # An optional RFC3339 timestamp on or after which the deprecation state of this resource will be changed to DEPRECATED.
+      "deleted": "A String", # An optional RFC3339 timestamp on or after which the state of this resource is intended to change to DELETED. This is only informational and the status will not change unless the client explicitly changes it.
+      "deprecated": "A String", # An optional RFC3339 timestamp on or after which the state of this resource is intended to change to DEPRECATED. This is only informational and the status will not change unless the client explicitly changes it.
       "state": "A String", # The deprecation state of this resource. This can be DEPRECATED, OBSOLETE, or DELETED. Operations which create a new resource using a DEPRECATED resource will return successfully, but with a warning indicating the deprecated resource and recommending its replacement. Operations which use OBSOLETE or DELETED resources will be rejected and result in an error.
-      "obsolete": "A String", # An optional RFC3339 timestamp on or after which the deprecation state of this resource will be changed to OBSOLETE.
+      "obsolete": "A String", # An optional RFC3339 timestamp on or after which the state of this resource is intended to change to OBSOLETE. This is only informational and the status will not change unless the client explicitly changes it.
       "replacement": "A String", # The URL of the suggested replacement for a deprecated resource. The suggested replacement resource must be the same kind of resource as the deprecated resource.
     },
     "memoryMb": 42, # [Output Only] The amount of physical memory available to the instance, defined in MB.
@@ -262,10 +262,10 @@
         "zone": "A String", # [Output Only] The name of the zone where the machine type resides, such as us-central1-a.
         "maximumPersistentDisks": 42, # [Output Only] Maximum persistent disks allowed.
         "deprecated": { # Deprecation status for a public resource. # [Output Only] The deprecation status associated with this machine type.
-          "deleted": "A String", # An optional RFC3339 timestamp on or after which the deprecation state of this resource will be changed to DELETED.
-          "deprecated": "A String", # An optional RFC3339 timestamp on or after which the deprecation state of this resource will be changed to DEPRECATED.
+          "deleted": "A String", # An optional RFC3339 timestamp on or after which the state of this resource is intended to change to DELETED. This is only informational and the status will not change unless the client explicitly changes it.
+          "deprecated": "A String", # An optional RFC3339 timestamp on or after which the state of this resource is intended to change to DEPRECATED. This is only informational and the status will not change unless the client explicitly changes it.
           "state": "A String", # The deprecation state of this resource. This can be DEPRECATED, OBSOLETE, or DELETED. Operations which create a new resource using a DEPRECATED resource will return successfully, but with a warning indicating the deprecated resource and recommending its replacement. Operations which use OBSOLETE or DELETED resources will be rejected and result in an error.
-          "obsolete": "A String", # An optional RFC3339 timestamp on or after which the deprecation state of this resource will be changed to OBSOLETE.
+          "obsolete": "A String", # An optional RFC3339 timestamp on or after which the state of this resource is intended to change to OBSOLETE. This is only informational and the status will not change unless the client explicitly changes it.
           "replacement": "A String", # The URL of the suggested replacement for a deprecated resource. The suggested replacement resource must be the same kind of resource as the deprecated resource.
         },
         "memoryMb": 42, # [Output Only] The amount of physical memory available to the instance, defined in MB.
diff --git a/docs/dyn/compute_v1.networks.html b/docs/dyn/compute_v1.networks.html
index 383e07b..3e01b03 100644
--- a/docs/dyn/compute_v1.networks.html
+++ b/docs/dyn/compute_v1.networks.html
@@ -89,6 +89,9 @@
 <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="#switchToCustomMode">switchToCustomMode(project, network)</a></code></p>
+<p class="firstline">Switches the network mode from auto subnet mode to custom subnet mode.</p>
 <h3>Method Details</h3>
 <div class="method">
     <code class="details" id="delete">delete(project, network)</code>
@@ -144,7 +147,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
@@ -250,7 +253,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
@@ -320,4 +323,62 @@
     </pre>
 </div>
 
+<div class="method">
+    <code class="details" id="switchToCustomMode">switchToCustomMode(project, network)</code>
+  <pre>Switches the network mode from auto subnet mode to custom subnet mode.
+
+Args:
+  project: string, Project ID for this request. (required)
+  network: string, Name of the network to be updated. (required)
+
+Returns:
+  An object of the form:
+
+    { # An Operation resource, used to manage asynchronous API requests.
+    "targetId": "A String", # [Output Only] The unique target ID, which identifies a specific incarnation of the target resource.
+    "clientOperationId": "A String", # [Output Only] Reserved for future use.
+    "creationTimestamp": "A String", # [Output Only] Creation timestamp in RFC3339 text format.
+    "id": "A String", # [Output Only] The unique identifier for the resource. This identifier is defined by the server.
+    "zone": "A String", # [Output Only] The URL of the zone where the operation resides. Only available when performing per-zone operations.
+    "insertTime": "A String", # [Output Only] The time that this operation was requested. This value is in RFC3339 text format.
+    "operationType": "A String", # [Output Only] The type of operation, such as insert, update, or delete, and so on.
+    "httpErrorMessage": "A String", # [Output Only] If the operation fails, this field contains the HTTP error message that was returned, such as NOT FOUND.
+    "progress": 42, # [Output Only] An optional progress indicator that ranges from 0 to 100. There is no requirement that this be linear or support any granularity of operations. This should not be used to guess when the operation will be complete. This number should monotonically increase as the operation progresses.
+    "httpErrorStatusCode": 42, # [Output Only] If the operation fails, this field contains the HTTP error status code that was returned. For example, a 404 means the resource was not found.
+    "statusMessage": "A String", # [Output Only] An optional textual description of the current status of the operation.
+    "status": "A String", # [Output Only] The status of the operation, which can be one of the following: PENDING, RUNNING, or DONE.
+    "description": "A String", # [Output Only] A textual description of the operation, which is set when the operation is created.
+    "warnings": [ # [Output Only] If warning messages are generated during processing of the operation, this field will be populated.
+      {
+        "message": "A String", # [Output Only] A human-readable description of the warning code.
+        "code": "A String", # [Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.
+        "data": [ # [Output Only] Metadata about this warning in key: value format. For example:
+            # "data": [ { "key": "scope", "value": "zones/us-east1-d" }
+          {
+            "value": "A String", # [Output Only] A warning data value corresponding to the key.
+            "key": "A String", # [Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding).
+          },
+        ],
+      },
+    ],
+    "user": "A String", # [Output Only] User who requested the operation, for example: user@example.com.
+    "startTime": "A String", # [Output Only] The time that this operation was started by the server. This value is in RFC3339 text format.
+    "kind": "compute#operation", # [Output Only] Type of the resource. Always compute#operation for Operation resources.
+    "name": "A String", # [Output Only] Name of the resource.
+    "region": "A String", # [Output Only] The URL of the region where the operation resides. Only available when performing regional operations.
+    "error": { # [Output Only] If errors are generated during processing of the operation, this field will be populated.
+      "errors": [ # [Output Only] The array of errors encountered while processing this operation.
+        {
+          "message": "A String", # [Output Only] An optional, human-readable error message.
+          "code": "A String", # [Output Only] The error type identifier for this error.
+          "location": "A String", # [Output Only] Indicates the field in the request that caused the error. This property is optional.
+        },
+      ],
+    },
+    "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
+    "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
+  }</pre>
+</div>
+
 </body></html>
\ No newline at end of file
diff --git a/docs/dyn/compute_v1.projects.html b/docs/dyn/compute_v1.projects.html
index 8bc5d12..a446ec9 100644
--- a/docs/dyn/compute_v1.projects.html
+++ b/docs/dyn/compute_v1.projects.html
@@ -202,7 +202,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
@@ -273,7 +273,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
@@ -344,7 +344,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
@@ -409,7 +409,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
diff --git a/docs/dyn/compute_v1.regionAutoscalers.html b/docs/dyn/compute_v1.regionAutoscalers.html
new file mode 100644
index 0000000..c97c18b
--- /dev/null
+++ b/docs/dyn/compute_v1.regionAutoscalers.html
@@ -0,0 +1,621 @@
+<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="compute_v1.html">Compute Engine API</a> . <a href="compute_v1.regionAutoscalers.html">regionAutoscalers</a></h1>
+<h2>Instance Methods</h2>
+<p class="toc_element">
+  <code><a href="#delete">delete(project, region, autoscaler)</a></code></p>
+<p class="firstline">Deletes the specified autoscaler.</p>
+<p class="toc_element">
+  <code><a href="#get">get(project, region, autoscaler)</a></code></p>
+<p class="firstline">Returns the specified autoscaler.</p>
+<p class="toc_element">
+  <code><a href="#insert">insert(project, region, body)</a></code></p>
+<p class="firstline">Creates an autoscaler in the specified project using the data included in the request.</p>
+<p class="toc_element">
+  <code><a href="#list">list(project, region, orderBy=None, maxResults=None, pageToken=None, filter=None)</a></code></p>
+<p class="firstline">Retrieves a list of autoscalers contained within the specified region.</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="#patch">patch(project, region, autoscaler, body)</a></code></p>
+<p class="firstline">Updates an autoscaler in the specified project using the data included in the request. This method supports patch semantics.</p>
+<p class="toc_element">
+  <code><a href="#update">update(project, region, body, autoscaler=None)</a></code></p>
+<p class="firstline">Updates an autoscaler in the specified project using the data included in the request.</p>
+<h3>Method Details</h3>
+<div class="method">
+    <code class="details" id="delete">delete(project, region, autoscaler)</code>
+  <pre>Deletes the specified autoscaler.
+
+Args:
+  project: string, Project ID for this request. (required)
+  region: string, Name of the region scoping this request. (required)
+  autoscaler: string, Name of the autoscaler to delete. (required)
+
+Returns:
+  An object of the form:
+
+    { # An Operation resource, used to manage asynchronous API requests.
+    "targetId": "A String", # [Output Only] The unique target ID, which identifies a specific incarnation of the target resource.
+    "clientOperationId": "A String", # [Output Only] Reserved for future use.
+    "creationTimestamp": "A String", # [Output Only] Creation timestamp in RFC3339 text format.
+    "id": "A String", # [Output Only] The unique identifier for the resource. This identifier is defined by the server.
+    "zone": "A String", # [Output Only] The URL of the zone where the operation resides. Only available when performing per-zone operations.
+    "insertTime": "A String", # [Output Only] The time that this operation was requested. This value is in RFC3339 text format.
+    "operationType": "A String", # [Output Only] The type of operation, such as insert, update, or delete, and so on.
+    "httpErrorMessage": "A String", # [Output Only] If the operation fails, this field contains the HTTP error message that was returned, such as NOT FOUND.
+    "progress": 42, # [Output Only] An optional progress indicator that ranges from 0 to 100. There is no requirement that this be linear or support any granularity of operations. This should not be used to guess when the operation will be complete. This number should monotonically increase as the operation progresses.
+    "httpErrorStatusCode": 42, # [Output Only] If the operation fails, this field contains the HTTP error status code that was returned. For example, a 404 means the resource was not found.
+    "statusMessage": "A String", # [Output Only] An optional textual description of the current status of the operation.
+    "status": "A String", # [Output Only] The status of the operation, which can be one of the following: PENDING, RUNNING, or DONE.
+    "description": "A String", # [Output Only] A textual description of the operation, which is set when the operation is created.
+    "warnings": [ # [Output Only] If warning messages are generated during processing of the operation, this field will be populated.
+      {
+        "message": "A String", # [Output Only] A human-readable description of the warning code.
+        "code": "A String", # [Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.
+        "data": [ # [Output Only] Metadata about this warning in key: value format. For example:
+            # "data": [ { "key": "scope", "value": "zones/us-east1-d" }
+          {
+            "value": "A String", # [Output Only] A warning data value corresponding to the key.
+            "key": "A String", # [Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding).
+          },
+        ],
+      },
+    ],
+    "user": "A String", # [Output Only] User who requested the operation, for example: user@example.com.
+    "startTime": "A String", # [Output Only] The time that this operation was started by the server. This value is in RFC3339 text format.
+    "kind": "compute#operation", # [Output Only] Type of the resource. Always compute#operation for Operation resources.
+    "name": "A String", # [Output Only] Name of the resource.
+    "region": "A String", # [Output Only] The URL of the region where the operation resides. Only available when performing regional operations.
+    "error": { # [Output Only] If errors are generated during processing of the operation, this field will be populated.
+      "errors": [ # [Output Only] The array of errors encountered while processing this operation.
+        {
+          "message": "A String", # [Output Only] An optional, human-readable error message.
+          "code": "A String", # [Output Only] The error type identifier for this error.
+          "location": "A String", # [Output Only] Indicates the field in the request that caused the error. This property is optional.
+        },
+      ],
+    },
+    "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
+    "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
+  }</pre>
+</div>
+
+<div class="method">
+    <code class="details" id="get">get(project, region, autoscaler)</code>
+  <pre>Returns the specified autoscaler.
+
+Args:
+  project: string, Project ID for this request. (required)
+  region: string, Name of the region scoping this request. (required)
+  autoscaler: string, Name of the autoscaler to return. (required)
+
+Returns:
+  An object of the form:
+
+    { # Represents an Autoscaler resource. Autoscalers allow you to automatically scale virtual machine instances in managed instance groups according to an autoscaling policy that you define. For more information, read Autoscaling Groups of Instances.
+      "kind": "compute#autoscaler", # [Output Only] Type of the resource. Always compute#autoscaler for autoscalers.
+      "description": "A String", # An optional description of this resource. Provide this property when you create the resource.
+      "zone": "A String", # [Output Only] URL of the zone where the instance group resides (for autoscalers living in zonal scope).
+      "region": "A String", # [Output Only] URL of the region where the instance group resides (for autoscalers living in regional scope).
+      "autoscalingPolicy": { # Cloud Autoscaler policy. # The configuration parameters for the autoscaling algorithm. You can define one or more of the policies for an autoscaler: cpuUtilization, customMetricUtilizations, and loadBalancingUtilization.
+          #
+          # If none of these are specified, the default will be to autoscale based on cpuUtilization to 0.6 or 60%.
+        "maxNumReplicas": 42, # The maximum number of instances that the autoscaler can scale up to. This is required when creating or updating an autoscaler. The maximum number of replicas should not be lower than minimal number of replicas.
+        "coolDownPeriodSec": 42, # The number of seconds that the autoscaler should wait before it starts collecting information from a new instance. This prevents the autoscaler from collecting information when the instance is initializing, during which the collected usage would not be reliable. The default time autoscaler waits is 60 seconds.
+            #
+            # Virtual machine initialization times might vary because of numerous factors. We recommend that you test how long an instance may take to initialize. To do this, create an instance and time the startup process.
+        "loadBalancingUtilization": { # Configuration parameters of autoscaling based on load balancing. # Configuration parameters of autoscaling based on load balancer.
+          "utilizationTarget": 3.14, # Fraction of backend capacity utilization (set in HTTP(s) load balancing configuration) that autoscaler should maintain. Must be a positive float value. If not defined, the default is 0.8.
+        },
+        "customMetricUtilizations": [ # Configuration parameters of autoscaling based on a custom metric.
+          { # Custom utilization metric policy.
+            "metric": "A String", # The identifier of the Stackdriver Monitoring metric. The metric cannot have negative values and should be a utilization metric, which means that the number of virtual machines handling requests should increase or decrease proportionally to the metric. The metric must also have a label of compute.googleapis.com/resource_id with the value of the instance's unique ID, although this alone does not guarantee that the metric is valid.
+                #
+                # For example, the following is a valid metric:
+                # compute.googleapis.com/instance/network/received_bytes_count
+                # The following is not a valid metric because it does not increase or decrease based on usage:
+                # compute.googleapis.com/instance/cpu/reserved_cores
+            "utilizationTargetType": "A String", # Defines how target utilization value is expressed for a Stackdriver Monitoring metric. Either GAUGE, DELTA_PER_SECOND, or DELTA_PER_MINUTE. If not specified, the default is GAUGE.
+            "utilizationTarget": 3.14, # Target value of the metric which autoscaler should maintain. Must be a positive value.
+          },
+        ],
+        "cpuUtilization": { # CPU utilization policy. # Defines the CPU utilization policy that allows the autoscaler to scale based on the average CPU utilization of a managed instance group.
+          "utilizationTarget": 3.14, # The target CPU utilization that the autoscaler should maintain. Must be a float value in the range (0, 1]. If not specified, the default is 0.6.
+              #
+              # If the CPU level is below the target utilization, the autoscaler scales down the number of instances until it reaches the minimum number of instances you specified or until the average CPU of your instances reaches the target utilization.
+              #
+              # If the average CPU is above the target utilization, the autoscaler scales up until it reaches the maximum number of instances you specified or until the average utilization reaches the target utilization.
+        },
+        "minNumReplicas": 42, # The minimum number of replicas that the autoscaler can scale down to. This cannot be less than 0. If not provided, autoscaler will choose a default value depending on maximum number of instances allowed.
+      },
+      "target": "A String", # URL of the managed instance group that this autoscaler will scale.
+      "creationTimestamp": "A String", # [Output Only] Creation timestamp in RFC3339 text format.
+      "id": "A String", # [Output Only] The unique identifier for the resource. This identifier is defined by the server.
+      "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
+      "name": "A String", # Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression [a-z]([-a-z0-9]*[a-z0-9])? which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.
+    }</pre>
+</div>
+
+<div class="method">
+    <code class="details" id="insert">insert(project, region, body)</code>
+  <pre>Creates an autoscaler in the specified project using the data included in the request.
+
+Args:
+  project: string, Project ID for this request. (required)
+  region: string, Name of the region scoping this request. (required)
+  body: object, The request body. (required)
+    The object takes the form of:
+
+{ # Represents an Autoscaler resource. Autoscalers allow you to automatically scale virtual machine instances in managed instance groups according to an autoscaling policy that you define. For more information, read Autoscaling Groups of Instances.
+    "kind": "compute#autoscaler", # [Output Only] Type of the resource. Always compute#autoscaler for autoscalers.
+    "description": "A String", # An optional description of this resource. Provide this property when you create the resource.
+    "zone": "A String", # [Output Only] URL of the zone where the instance group resides (for autoscalers living in zonal scope).
+    "region": "A String", # [Output Only] URL of the region where the instance group resides (for autoscalers living in regional scope).
+    "autoscalingPolicy": { # Cloud Autoscaler policy. # The configuration parameters for the autoscaling algorithm. You can define one or more of the policies for an autoscaler: cpuUtilization, customMetricUtilizations, and loadBalancingUtilization.
+        # 
+        # If none of these are specified, the default will be to autoscale based on cpuUtilization to 0.6 or 60%.
+      "maxNumReplicas": 42, # The maximum number of instances that the autoscaler can scale up to. This is required when creating or updating an autoscaler. The maximum number of replicas should not be lower than minimal number of replicas.
+      "coolDownPeriodSec": 42, # The number of seconds that the autoscaler should wait before it starts collecting information from a new instance. This prevents the autoscaler from collecting information when the instance is initializing, during which the collected usage would not be reliable. The default time autoscaler waits is 60 seconds.
+          #
+          # Virtual machine initialization times might vary because of numerous factors. We recommend that you test how long an instance may take to initialize. To do this, create an instance and time the startup process.
+      "loadBalancingUtilization": { # Configuration parameters of autoscaling based on load balancing. # Configuration parameters of autoscaling based on load balancer.
+        "utilizationTarget": 3.14, # Fraction of backend capacity utilization (set in HTTP(s) load balancing configuration) that autoscaler should maintain. Must be a positive float value. If not defined, the default is 0.8.
+      },
+      "customMetricUtilizations": [ # Configuration parameters of autoscaling based on a custom metric.
+        { # Custom utilization metric policy.
+          "metric": "A String", # The identifier of the Stackdriver Monitoring metric. The metric cannot have negative values and should be a utilization metric, which means that the number of virtual machines handling requests should increase or decrease proportionally to the metric. The metric must also have a label of compute.googleapis.com/resource_id with the value of the instance's unique ID, although this alone does not guarantee that the metric is valid.
+              #
+              # For example, the following is a valid metric:
+              # compute.googleapis.com/instance/network/received_bytes_count
+              # The following is not a valid metric because it does not increase or decrease based on usage:
+              # compute.googleapis.com/instance/cpu/reserved_cores
+          "utilizationTargetType": "A String", # Defines how target utilization value is expressed for a Stackdriver Monitoring metric. Either GAUGE, DELTA_PER_SECOND, or DELTA_PER_MINUTE. If not specified, the default is GAUGE.
+          "utilizationTarget": 3.14, # Target value of the metric which autoscaler should maintain. Must be a positive value.
+        },
+      ],
+      "cpuUtilization": { # CPU utilization policy. # Defines the CPU utilization policy that allows the autoscaler to scale based on the average CPU utilization of a managed instance group.
+        "utilizationTarget": 3.14, # The target CPU utilization that the autoscaler should maintain. Must be a float value in the range (0, 1]. If not specified, the default is 0.6.
+            #
+            # If the CPU level is below the target utilization, the autoscaler scales down the number of instances until it reaches the minimum number of instances you specified or until the average CPU of your instances reaches the target utilization.
+            #
+            # If the average CPU is above the target utilization, the autoscaler scales up until it reaches the maximum number of instances you specified or until the average utilization reaches the target utilization.
+      },
+      "minNumReplicas": 42, # The minimum number of replicas that the autoscaler can scale down to. This cannot be less than 0. If not provided, autoscaler will choose a default value depending on maximum number of instances allowed.
+    },
+    "target": "A String", # URL of the managed instance group that this autoscaler will scale.
+    "creationTimestamp": "A String", # [Output Only] Creation timestamp in RFC3339 text format.
+    "id": "A String", # [Output Only] The unique identifier for the resource. This identifier is defined by the server.
+    "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
+    "name": "A String", # Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression [a-z]([-a-z0-9]*[a-z0-9])? which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.
+  }
+
+
+Returns:
+  An object of the form:
+
+    { # An Operation resource, used to manage asynchronous API requests.
+    "targetId": "A String", # [Output Only] The unique target ID, which identifies a specific incarnation of the target resource.
+    "clientOperationId": "A String", # [Output Only] Reserved for future use.
+    "creationTimestamp": "A String", # [Output Only] Creation timestamp in RFC3339 text format.
+    "id": "A String", # [Output Only] The unique identifier for the resource. This identifier is defined by the server.
+    "zone": "A String", # [Output Only] The URL of the zone where the operation resides. Only available when performing per-zone operations.
+    "insertTime": "A String", # [Output Only] The time that this operation was requested. This value is in RFC3339 text format.
+    "operationType": "A String", # [Output Only] The type of operation, such as insert, update, or delete, and so on.
+    "httpErrorMessage": "A String", # [Output Only] If the operation fails, this field contains the HTTP error message that was returned, such as NOT FOUND.
+    "progress": 42, # [Output Only] An optional progress indicator that ranges from 0 to 100. There is no requirement that this be linear or support any granularity of operations. This should not be used to guess when the operation will be complete. This number should monotonically increase as the operation progresses.
+    "httpErrorStatusCode": 42, # [Output Only] If the operation fails, this field contains the HTTP error status code that was returned. For example, a 404 means the resource was not found.
+    "statusMessage": "A String", # [Output Only] An optional textual description of the current status of the operation.
+    "status": "A String", # [Output Only] The status of the operation, which can be one of the following: PENDING, RUNNING, or DONE.
+    "description": "A String", # [Output Only] A textual description of the operation, which is set when the operation is created.
+    "warnings": [ # [Output Only] If warning messages are generated during processing of the operation, this field will be populated.
+      {
+        "message": "A String", # [Output Only] A human-readable description of the warning code.
+        "code": "A String", # [Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.
+        "data": [ # [Output Only] Metadata about this warning in key: value format. For example:
+            # "data": [ { "key": "scope", "value": "zones/us-east1-d" }
+          {
+            "value": "A String", # [Output Only] A warning data value corresponding to the key.
+            "key": "A String", # [Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding).
+          },
+        ],
+      },
+    ],
+    "user": "A String", # [Output Only] User who requested the operation, for example: user@example.com.
+    "startTime": "A String", # [Output Only] The time that this operation was started by the server. This value is in RFC3339 text format.
+    "kind": "compute#operation", # [Output Only] Type of the resource. Always compute#operation for Operation resources.
+    "name": "A String", # [Output Only] Name of the resource.
+    "region": "A String", # [Output Only] The URL of the region where the operation resides. Only available when performing regional operations.
+    "error": { # [Output Only] If errors are generated during processing of the operation, this field will be populated.
+      "errors": [ # [Output Only] The array of errors encountered while processing this operation.
+        {
+          "message": "A String", # [Output Only] An optional, human-readable error message.
+          "code": "A String", # [Output Only] The error type identifier for this error.
+          "location": "A String", # [Output Only] Indicates the field in the request that caused the error. This property is optional.
+        },
+      ],
+    },
+    "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
+    "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
+  }</pre>
+</div>
+
+<div class="method">
+    <code class="details" id="list">list(project, region, orderBy=None, maxResults=None, pageToken=None, filter=None)</code>
+  <pre>Retrieves a list of autoscalers contained within the specified region.
+
+Args:
+  project: string, Project ID for this request. (required)
+  region: string, Name of the region scoping this request. (required)
+  orderBy: string, Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.
+
+You can also sort results in descending order based on the creation timestamp using orderBy="creationTimestamp desc". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.
+
+Currently, only sorting by name or creationTimestamp desc is supported.
+  maxResults: integer, The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests.
+  pageToken: string, Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.
+  filter: string, Sets a filter expression for filtering listed resources, in the form filter={expression}. Your {expression} must be in the format: field_name comparison_string literal_string.
+
+The field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.
+
+For example, to filter for instances that do not have a name of example-instance, you would use filter=name ne example-instance.
+
+You can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.
+
+To filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.
+
+Returns:
+  An object of the form:
+
+    { # Contains a list of autoscalers.
+    "nextPageToken": "A String", # [Output Only] A token used to continue a truncated list request.
+    "items": [ # A list of autoscalers.
+      { # Represents an Autoscaler resource. Autoscalers allow you to automatically scale virtual machine instances in managed instance groups according to an autoscaling policy that you define. For more information, read Autoscaling Groups of Instances.
+          "kind": "compute#autoscaler", # [Output Only] Type of the resource. Always compute#autoscaler for autoscalers.
+          "description": "A String", # An optional description of this resource. Provide this property when you create the resource.
+          "zone": "A String", # [Output Only] URL of the zone where the instance group resides (for autoscalers living in zonal scope).
+          "region": "A String", # [Output Only] URL of the region where the instance group resides (for autoscalers living in regional scope).
+          "autoscalingPolicy": { # Cloud Autoscaler policy. # The configuration parameters for the autoscaling algorithm. You can define one or more of the policies for an autoscaler: cpuUtilization, customMetricUtilizations, and loadBalancingUtilization.
+              #
+              # If none of these are specified, the default will be to autoscale based on cpuUtilization to 0.6 or 60%.
+            "maxNumReplicas": 42, # The maximum number of instances that the autoscaler can scale up to. This is required when creating or updating an autoscaler. The maximum number of replicas should not be lower than minimal number of replicas.
+            "coolDownPeriodSec": 42, # The number of seconds that the autoscaler should wait before it starts collecting information from a new instance. This prevents the autoscaler from collecting information when the instance is initializing, during which the collected usage would not be reliable. The default time autoscaler waits is 60 seconds.
+                #
+                # Virtual machine initialization times might vary because of numerous factors. We recommend that you test how long an instance may take to initialize. To do this, create an instance and time the startup process.
+            "loadBalancingUtilization": { # Configuration parameters of autoscaling based on load balancing. # Configuration parameters of autoscaling based on load balancer.
+              "utilizationTarget": 3.14, # Fraction of backend capacity utilization (set in HTTP(s) load balancing configuration) that autoscaler should maintain. Must be a positive float value. If not defined, the default is 0.8.
+            },
+            "customMetricUtilizations": [ # Configuration parameters of autoscaling based on a custom metric.
+              { # Custom utilization metric policy.
+                "metric": "A String", # The identifier of the Stackdriver Monitoring metric. The metric cannot have negative values and should be a utilization metric, which means that the number of virtual machines handling requests should increase or decrease proportionally to the metric. The metric must also have a label of compute.googleapis.com/resource_id with the value of the instance's unique ID, although this alone does not guarantee that the metric is valid.
+                    #
+                    # For example, the following is a valid metric:
+                    # compute.googleapis.com/instance/network/received_bytes_count
+                    # The following is not a valid metric because it does not increase or decrease based on usage:
+                    # compute.googleapis.com/instance/cpu/reserved_cores
+                "utilizationTargetType": "A String", # Defines how target utilization value is expressed for a Stackdriver Monitoring metric. Either GAUGE, DELTA_PER_SECOND, or DELTA_PER_MINUTE. If not specified, the default is GAUGE.
+                "utilizationTarget": 3.14, # Target value of the metric which autoscaler should maintain. Must be a positive value.
+              },
+            ],
+            "cpuUtilization": { # CPU utilization policy. # Defines the CPU utilization policy that allows the autoscaler to scale based on the average CPU utilization of a managed instance group.
+              "utilizationTarget": 3.14, # The target CPU utilization that the autoscaler should maintain. Must be a float value in the range (0, 1]. If not specified, the default is 0.6.
+                  #
+                  # If the CPU level is below the target utilization, the autoscaler scales down the number of instances until it reaches the minimum number of instances you specified or until the average CPU of your instances reaches the target utilization.
+                  #
+                  # If the average CPU is above the target utilization, the autoscaler scales up until it reaches the maximum number of instances you specified or until the average utilization reaches the target utilization.
+            },
+            "minNumReplicas": 42, # The minimum number of replicas that the autoscaler can scale down to. This cannot be less than 0. If not provided, autoscaler will choose a default value depending on maximum number of instances allowed.
+          },
+          "target": "A String", # URL of the managed instance group that this autoscaler will scale.
+          "creationTimestamp": "A String", # [Output Only] Creation timestamp in RFC3339 text format.
+          "id": "A String", # [Output Only] The unique identifier for the resource. This identifier is defined by the server.
+          "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
+          "name": "A String", # Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression [a-z]([-a-z0-9]*[a-z0-9])? which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.
+        },
+    ],
+    "kind": "compute#regionAutoscalerList", # Type of resource.
+    "id": "A String", # [Output Only] The unique identifier for the resource. This identifier is defined by the server.
+    "selfLink": "A String", # [Output Only] Server-defined URL for this resource.
+  }</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="patch">patch(project, region, autoscaler, body)</code>
+  <pre>Updates an autoscaler in the specified project using the data included in the request. This method supports patch semantics.
+
+Args:
+  project: string, Project ID for this request. (required)
+  region: string, Name of the region scoping this request. (required)
+  autoscaler: string, Name of the autoscaler to update. (required)
+  body: object, The request body. (required)
+    The object takes the form of:
+
+{ # Represents an Autoscaler resource. Autoscalers allow you to automatically scale virtual machine instances in managed instance groups according to an autoscaling policy that you define. For more information, read Autoscaling Groups of Instances.
+    "kind": "compute#autoscaler", # [Output Only] Type of the resource. Always compute#autoscaler for autoscalers.
+    "description": "A String", # An optional description of this resource. Provide this property when you create the resource.
+    "zone": "A String", # [Output Only] URL of the zone where the instance group resides (for autoscalers living in zonal scope).
+    "region": "A String", # [Output Only] URL of the region where the instance group resides (for autoscalers living in regional scope).
+    "autoscalingPolicy": { # Cloud Autoscaler policy. # The configuration parameters for the autoscaling algorithm. You can define one or more of the policies for an autoscaler: cpuUtilization, customMetricUtilizations, and loadBalancingUtilization.
+        # 
+        # If none of these are specified, the default will be to autoscale based on cpuUtilization to 0.6 or 60%.
+      "maxNumReplicas": 42, # The maximum number of instances that the autoscaler can scale up to. This is required when creating or updating an autoscaler. The maximum number of replicas should not be lower than minimal number of replicas.
+      "coolDownPeriodSec": 42, # The number of seconds that the autoscaler should wait before it starts collecting information from a new instance. This prevents the autoscaler from collecting information when the instance is initializing, during which the collected usage would not be reliable. The default time autoscaler waits is 60 seconds.
+          #
+          # Virtual machine initialization times might vary because of numerous factors. We recommend that you test how long an instance may take to initialize. To do this, create an instance and time the startup process.
+      "loadBalancingUtilization": { # Configuration parameters of autoscaling based on load balancing. # Configuration parameters of autoscaling based on load balancer.
+        "utilizationTarget": 3.14, # Fraction of backend capacity utilization (set in HTTP(s) load balancing configuration) that autoscaler should maintain. Must be a positive float value. If not defined, the default is 0.8.
+      },
+      "customMetricUtilizations": [ # Configuration parameters of autoscaling based on a custom metric.
+        { # Custom utilization metric policy.
+          "metric": "A String", # The identifier of the Stackdriver Monitoring metric. The metric cannot have negative values and should be a utilization metric, which means that the number of virtual machines handling requests should increase or decrease proportionally to the metric. The metric must also have a label of compute.googleapis.com/resource_id with the value of the instance's unique ID, although this alone does not guarantee that the metric is valid.
+              #
+              # For example, the following is a valid metric:
+              # compute.googleapis.com/instance/network/received_bytes_count
+              # The following is not a valid metric because it does not increase or decrease based on usage:
+              # compute.googleapis.com/instance/cpu/reserved_cores
+          "utilizationTargetType": "A String", # Defines how target utilization value is expressed for a Stackdriver Monitoring metric. Either GAUGE, DELTA_PER_SECOND, or DELTA_PER_MINUTE. If not specified, the default is GAUGE.
+          "utilizationTarget": 3.14, # Target value of the metric which autoscaler should maintain. Must be a positive value.
+        },
+      ],
+      "cpuUtilization": { # CPU utilization policy. # Defines the CPU utilization policy that allows the autoscaler to scale based on the average CPU utilization of a managed instance group.
+        "utilizationTarget": 3.14, # The target CPU utilization that the autoscaler should maintain. Must be a float value in the range (0, 1]. If not specified, the default is 0.6.
+            #
+            # If the CPU level is below the target utilization, the autoscaler scales down the number of instances until it reaches the minimum number of instances you specified or until the average CPU of your instances reaches the target utilization.
+            #
+            # If the average CPU is above the target utilization, the autoscaler scales up until it reaches the maximum number of instances you specified or until the average utilization reaches the target utilization.
+      },
+      "minNumReplicas": 42, # The minimum number of replicas that the autoscaler can scale down to. This cannot be less than 0. If not provided, autoscaler will choose a default value depending on maximum number of instances allowed.
+    },
+    "target": "A String", # URL of the managed instance group that this autoscaler will scale.
+    "creationTimestamp": "A String", # [Output Only] Creation timestamp in RFC3339 text format.
+    "id": "A String", # [Output Only] The unique identifier for the resource. This identifier is defined by the server.
+    "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
+    "name": "A String", # Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression [a-z]([-a-z0-9]*[a-z0-9])? which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.
+  }
+
+
+Returns:
+  An object of the form:
+
+    { # An Operation resource, used to manage asynchronous API requests.
+    "targetId": "A String", # [Output Only] The unique target ID, which identifies a specific incarnation of the target resource.
+    "clientOperationId": "A String", # [Output Only] Reserved for future use.
+    "creationTimestamp": "A String", # [Output Only] Creation timestamp in RFC3339 text format.
+    "id": "A String", # [Output Only] The unique identifier for the resource. This identifier is defined by the server.
+    "zone": "A String", # [Output Only] The URL of the zone where the operation resides. Only available when performing per-zone operations.
+    "insertTime": "A String", # [Output Only] The time that this operation was requested. This value is in RFC3339 text format.
+    "operationType": "A String", # [Output Only] The type of operation, such as insert, update, or delete, and so on.
+    "httpErrorMessage": "A String", # [Output Only] If the operation fails, this field contains the HTTP error message that was returned, such as NOT FOUND.
+    "progress": 42, # [Output Only] An optional progress indicator that ranges from 0 to 100. There is no requirement that this be linear or support any granularity of operations. This should not be used to guess when the operation will be complete. This number should monotonically increase as the operation progresses.
+    "httpErrorStatusCode": 42, # [Output Only] If the operation fails, this field contains the HTTP error status code that was returned. For example, a 404 means the resource was not found.
+    "statusMessage": "A String", # [Output Only] An optional textual description of the current status of the operation.
+    "status": "A String", # [Output Only] The status of the operation, which can be one of the following: PENDING, RUNNING, or DONE.
+    "description": "A String", # [Output Only] A textual description of the operation, which is set when the operation is created.
+    "warnings": [ # [Output Only] If warning messages are generated during processing of the operation, this field will be populated.
+      {
+        "message": "A String", # [Output Only] A human-readable description of the warning code.
+        "code": "A String", # [Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.
+        "data": [ # [Output Only] Metadata about this warning in key: value format. For example:
+            # "data": [ { "key": "scope", "value": "zones/us-east1-d" }
+          {
+            "value": "A String", # [Output Only] A warning data value corresponding to the key.
+            "key": "A String", # [Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding).
+          },
+        ],
+      },
+    ],
+    "user": "A String", # [Output Only] User who requested the operation, for example: user@example.com.
+    "startTime": "A String", # [Output Only] The time that this operation was started by the server. This value is in RFC3339 text format.
+    "kind": "compute#operation", # [Output Only] Type of the resource. Always compute#operation for Operation resources.
+    "name": "A String", # [Output Only] Name of the resource.
+    "region": "A String", # [Output Only] The URL of the region where the operation resides. Only available when performing regional operations.
+    "error": { # [Output Only] If errors are generated during processing of the operation, this field will be populated.
+      "errors": [ # [Output Only] The array of errors encountered while processing this operation.
+        {
+          "message": "A String", # [Output Only] An optional, human-readable error message.
+          "code": "A String", # [Output Only] The error type identifier for this error.
+          "location": "A String", # [Output Only] Indicates the field in the request that caused the error. This property is optional.
+        },
+      ],
+    },
+    "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
+    "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
+  }</pre>
+</div>
+
+<div class="method">
+    <code class="details" id="update">update(project, region, body, autoscaler=None)</code>
+  <pre>Updates an autoscaler in the specified project using the data included in the request.
+
+Args:
+  project: string, Project ID for this request. (required)
+  region: string, Name of the region scoping this request. (required)
+  body: object, The request body. (required)
+    The object takes the form of:
+
+{ # Represents an Autoscaler resource. Autoscalers allow you to automatically scale virtual machine instances in managed instance groups according to an autoscaling policy that you define. For more information, read Autoscaling Groups of Instances.
+    "kind": "compute#autoscaler", # [Output Only] Type of the resource. Always compute#autoscaler for autoscalers.
+    "description": "A String", # An optional description of this resource. Provide this property when you create the resource.
+    "zone": "A String", # [Output Only] URL of the zone where the instance group resides (for autoscalers living in zonal scope).
+    "region": "A String", # [Output Only] URL of the region where the instance group resides (for autoscalers living in regional scope).
+    "autoscalingPolicy": { # Cloud Autoscaler policy. # The configuration parameters for the autoscaling algorithm. You can define one or more of the policies for an autoscaler: cpuUtilization, customMetricUtilizations, and loadBalancingUtilization.
+        # 
+        # If none of these are specified, the default will be to autoscale based on cpuUtilization to 0.6 or 60%.
+      "maxNumReplicas": 42, # The maximum number of instances that the autoscaler can scale up to. This is required when creating or updating an autoscaler. The maximum number of replicas should not be lower than minimal number of replicas.
+      "coolDownPeriodSec": 42, # The number of seconds that the autoscaler should wait before it starts collecting information from a new instance. This prevents the autoscaler from collecting information when the instance is initializing, during which the collected usage would not be reliable. The default time autoscaler waits is 60 seconds.
+          #
+          # Virtual machine initialization times might vary because of numerous factors. We recommend that you test how long an instance may take to initialize. To do this, create an instance and time the startup process.
+      "loadBalancingUtilization": { # Configuration parameters of autoscaling based on load balancing. # Configuration parameters of autoscaling based on load balancer.
+        "utilizationTarget": 3.14, # Fraction of backend capacity utilization (set in HTTP(s) load balancing configuration) that autoscaler should maintain. Must be a positive float value. If not defined, the default is 0.8.
+      },
+      "customMetricUtilizations": [ # Configuration parameters of autoscaling based on a custom metric.
+        { # Custom utilization metric policy.
+          "metric": "A String", # The identifier of the Stackdriver Monitoring metric. The metric cannot have negative values and should be a utilization metric, which means that the number of virtual machines handling requests should increase or decrease proportionally to the metric. The metric must also have a label of compute.googleapis.com/resource_id with the value of the instance's unique ID, although this alone does not guarantee that the metric is valid.
+              #
+              # For example, the following is a valid metric:
+              # compute.googleapis.com/instance/network/received_bytes_count
+              # The following is not a valid metric because it does not increase or decrease based on usage:
+              # compute.googleapis.com/instance/cpu/reserved_cores
+          "utilizationTargetType": "A String", # Defines how target utilization value is expressed for a Stackdriver Monitoring metric. Either GAUGE, DELTA_PER_SECOND, or DELTA_PER_MINUTE. If not specified, the default is GAUGE.
+          "utilizationTarget": 3.14, # Target value of the metric which autoscaler should maintain. Must be a positive value.
+        },
+      ],
+      "cpuUtilization": { # CPU utilization policy. # Defines the CPU utilization policy that allows the autoscaler to scale based on the average CPU utilization of a managed instance group.
+        "utilizationTarget": 3.14, # The target CPU utilization that the autoscaler should maintain. Must be a float value in the range (0, 1]. If not specified, the default is 0.6.
+            #
+            # If the CPU level is below the target utilization, the autoscaler scales down the number of instances until it reaches the minimum number of instances you specified or until the average CPU of your instances reaches the target utilization.
+            #
+            # If the average CPU is above the target utilization, the autoscaler scales up until it reaches the maximum number of instances you specified or until the average utilization reaches the target utilization.
+      },
+      "minNumReplicas": 42, # The minimum number of replicas that the autoscaler can scale down to. This cannot be less than 0. If not provided, autoscaler will choose a default value depending on maximum number of instances allowed.
+    },
+    "target": "A String", # URL of the managed instance group that this autoscaler will scale.
+    "creationTimestamp": "A String", # [Output Only] Creation timestamp in RFC3339 text format.
+    "id": "A String", # [Output Only] The unique identifier for the resource. This identifier is defined by the server.
+    "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
+    "name": "A String", # Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression [a-z]([-a-z0-9]*[a-z0-9])? which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.
+  }
+
+  autoscaler: string, Name of the autoscaler to update.
+
+Returns:
+  An object of the form:
+
+    { # An Operation resource, used to manage asynchronous API requests.
+    "targetId": "A String", # [Output Only] The unique target ID, which identifies a specific incarnation of the target resource.
+    "clientOperationId": "A String", # [Output Only] Reserved for future use.
+    "creationTimestamp": "A String", # [Output Only] Creation timestamp in RFC3339 text format.
+    "id": "A String", # [Output Only] The unique identifier for the resource. This identifier is defined by the server.
+    "zone": "A String", # [Output Only] The URL of the zone where the operation resides. Only available when performing per-zone operations.
+    "insertTime": "A String", # [Output Only] The time that this operation was requested. This value is in RFC3339 text format.
+    "operationType": "A String", # [Output Only] The type of operation, such as insert, update, or delete, and so on.
+    "httpErrorMessage": "A String", # [Output Only] If the operation fails, this field contains the HTTP error message that was returned, such as NOT FOUND.
+    "progress": 42, # [Output Only] An optional progress indicator that ranges from 0 to 100. There is no requirement that this be linear or support any granularity of operations. This should not be used to guess when the operation will be complete. This number should monotonically increase as the operation progresses.
+    "httpErrorStatusCode": 42, # [Output Only] If the operation fails, this field contains the HTTP error status code that was returned. For example, a 404 means the resource was not found.
+    "statusMessage": "A String", # [Output Only] An optional textual description of the current status of the operation.
+    "status": "A String", # [Output Only] The status of the operation, which can be one of the following: PENDING, RUNNING, or DONE.
+    "description": "A String", # [Output Only] A textual description of the operation, which is set when the operation is created.
+    "warnings": [ # [Output Only] If warning messages are generated during processing of the operation, this field will be populated.
+      {
+        "message": "A String", # [Output Only] A human-readable description of the warning code.
+        "code": "A String", # [Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.
+        "data": [ # [Output Only] Metadata about this warning in key: value format. For example:
+            # "data": [ { "key": "scope", "value": "zones/us-east1-d" }
+          {
+            "value": "A String", # [Output Only] A warning data value corresponding to the key.
+            "key": "A String", # [Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding).
+          },
+        ],
+      },
+    ],
+    "user": "A String", # [Output Only] User who requested the operation, for example: user@example.com.
+    "startTime": "A String", # [Output Only] The time that this operation was started by the server. This value is in RFC3339 text format.
+    "kind": "compute#operation", # [Output Only] Type of the resource. Always compute#operation for Operation resources.
+    "name": "A String", # [Output Only] Name of the resource.
+    "region": "A String", # [Output Only] The URL of the region where the operation resides. Only available when performing regional operations.
+    "error": { # [Output Only] If errors are generated during processing of the operation, this field will be populated.
+      "errors": [ # [Output Only] The array of errors encountered while processing this operation.
+        {
+          "message": "A String", # [Output Only] An optional, human-readable error message.
+          "code": "A String", # [Output Only] The error type identifier for this error.
+          "location": "A String", # [Output Only] Indicates the field in the request that caused the error. This property is optional.
+        },
+      ],
+    },
+    "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
+    "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
+  }</pre>
+</div>
+
+</body></html>
\ No newline at end of file
diff --git a/docs/dyn/compute_v1.regionBackendServices.html b/docs/dyn/compute_v1.regionBackendServices.html
new file mode 100644
index 0000000..b5f6eba
--- /dev/null
+++ b/docs/dyn/compute_v1.regionBackendServices.html
@@ -0,0 +1,821 @@
+<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="compute_v1.html">Compute Engine API</a> . <a href="compute_v1.regionBackendServices.html">regionBackendServices</a></h1>
+<h2>Instance Methods</h2>
+<p class="toc_element">
+  <code><a href="#delete">delete(project, region, backendService)</a></code></p>
+<p class="firstline">Deletes the specified regional BackendService resource.</p>
+<p class="toc_element">
+  <code><a href="#get">get(project, region, backendService)</a></code></p>
+<p class="firstline">Returns the specified regional BackendService resource.</p>
+<p class="toc_element">
+  <code><a href="#getHealth">getHealth(project, region, backendService, body)</a></code></p>
+<p class="firstline">Gets the most recent health check results for this regional BackendService.</p>
+<p class="toc_element">
+  <code><a href="#insert">insert(project, region, body)</a></code></p>
+<p class="firstline">Creates a regional BackendService resource in the specified project using the data included in the request. There are several restrictions and guidelines to keep in mind when creating a regional backend service. Read  Restrictions and Guidelines for more information.</p>
+<p class="toc_element">
+  <code><a href="#list">list(project, region, orderBy=None, maxResults=None, pageToken=None, filter=None)</a></code></p>
+<p class="firstline">Retrieves the list of regional BackendService resources available to the specified project in the given region.</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="#patch">patch(project, region, backendService, body)</a></code></p>
+<p class="firstline">Updates the specified regional BackendService resource with the data included in the request. There are several restrictions and guidelines to keep in mind when updating a backend service. Read  Restrictions and Guidelines for more information. This method supports patch semantics.</p>
+<p class="toc_element">
+  <code><a href="#update">update(project, region, backendService, body)</a></code></p>
+<p class="firstline">Updates the specified regional BackendService resource with the data included in the request. There are several restrictions and guidelines to keep in mind when updating a backend service. Read  Restrictions and Guidelines for more information.</p>
+<h3>Method Details</h3>
+<div class="method">
+    <code class="details" id="delete">delete(project, region, backendService)</code>
+  <pre>Deletes the specified regional BackendService resource.
+
+Args:
+  project: string, Project ID for this request. (required)
+  region: string, Name of the region scoping this request. (required)
+  backendService: string, Name of the BackendService resource to delete. (required)
+
+Returns:
+  An object of the form:
+
+    { # An Operation resource, used to manage asynchronous API requests.
+    "targetId": "A String", # [Output Only] The unique target ID, which identifies a specific incarnation of the target resource.
+    "clientOperationId": "A String", # [Output Only] Reserved for future use.
+    "creationTimestamp": "A String", # [Output Only] Creation timestamp in RFC3339 text format.
+    "id": "A String", # [Output Only] The unique identifier for the resource. This identifier is defined by the server.
+    "zone": "A String", # [Output Only] The URL of the zone where the operation resides. Only available when performing per-zone operations.
+    "insertTime": "A String", # [Output Only] The time that this operation was requested. This value is in RFC3339 text format.
+    "operationType": "A String", # [Output Only] The type of operation, such as insert, update, or delete, and so on.
+    "httpErrorMessage": "A String", # [Output Only] If the operation fails, this field contains the HTTP error message that was returned, such as NOT FOUND.
+    "progress": 42, # [Output Only] An optional progress indicator that ranges from 0 to 100. There is no requirement that this be linear or support any granularity of operations. This should not be used to guess when the operation will be complete. This number should monotonically increase as the operation progresses.
+    "httpErrorStatusCode": 42, # [Output Only] If the operation fails, this field contains the HTTP error status code that was returned. For example, a 404 means the resource was not found.
+    "statusMessage": "A String", # [Output Only] An optional textual description of the current status of the operation.
+    "status": "A String", # [Output Only] The status of the operation, which can be one of the following: PENDING, RUNNING, or DONE.
+    "description": "A String", # [Output Only] A textual description of the operation, which is set when the operation is created.
+    "warnings": [ # [Output Only] If warning messages are generated during processing of the operation, this field will be populated.
+      {
+        "message": "A String", # [Output Only] A human-readable description of the warning code.
+        "code": "A String", # [Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.
+        "data": [ # [Output Only] Metadata about this warning in key: value format. For example:
+            # "data": [ { "key": "scope", "value": "zones/us-east1-d" }
+          {
+            "value": "A String", # [Output Only] A warning data value corresponding to the key.
+            "key": "A String", # [Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding).
+          },
+        ],
+      },
+    ],
+    "user": "A String", # [Output Only] User who requested the operation, for example: user@example.com.
+    "startTime": "A String", # [Output Only] The time that this operation was started by the server. This value is in RFC3339 text format.
+    "kind": "compute#operation", # [Output Only] Type of the resource. Always compute#operation for Operation resources.
+    "name": "A String", # [Output Only] Name of the resource.
+    "region": "A String", # [Output Only] The URL of the region where the operation resides. Only available when performing regional operations.
+    "error": { # [Output Only] If errors are generated during processing of the operation, this field will be populated.
+      "errors": [ # [Output Only] The array of errors encountered while processing this operation.
+        {
+          "message": "A String", # [Output Only] An optional, human-readable error message.
+          "code": "A String", # [Output Only] The error type identifier for this error.
+          "location": "A String", # [Output Only] Indicates the field in the request that caused the error. This property is optional.
+        },
+      ],
+    },
+    "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
+    "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
+  }</pre>
+</div>
+
+<div class="method">
+    <code class="details" id="get">get(project, region, backendService)</code>
+  <pre>Returns the specified regional BackendService resource.
+
+Args:
+  project: string, Project ID for this request. (required)
+  region: string, Name of the region scoping this request. (required)
+  backendService: string, Name of the BackendService resource to return. (required)
+
+Returns:
+  An object of the form:
+
+    { # A BackendService resource. This resource defines a group of backend virtual machines and their serving capacity.
+      "connectionDraining": { # Message containing connection draining configuration.
+        "drainingTimeoutSec": 42, # Time for which instance will be drained (not accept new connections, but still work to finish started).
+      },
+      "kind": "compute#backendService", # [Output Only] Type of resource. Always compute#backendService for backend services.
+      "protocol": "A String", # The protocol this BackendService uses to communicate with backends.
+          #
+          # Possible values are HTTP, HTTPS, HTTP2, TCP and SSL. The default is HTTP.
+          #
+          # For internal load balancing, the possible values are TCP and UDP, and the default is TCP.
+      "description": "A String", # An optional description of this resource. Provide this property when you create the resource.
+      "timeoutSec": 42, # How many seconds to wait for the backend before considering it a failed request. Default is 30 seconds.
+      "enableCDN": True or False, # If true, enable Cloud CDN for this BackendService.
+          #
+          # When the load balancing scheme is INTERNAL, this field is not used.
+      "region": "A String", # [Output Only] URL of the region where the regional backend service resides. This field is not applicable to global backend services.
+      "loadBalancingScheme": "A String",
+      "affinityCookieTtlSec": 42, # Lifetime of cookies in seconds if session_affinity is GENERATED_COOKIE. If set to 0, the cookie is non-persistent and lasts only until the end of the browser session (or equivalent). The maximum allowed value for TTL is one day.
+          #
+          # When the load balancing scheme is INTERNAL, this field is not used.
+      "port": 42, # Deprecated in favor of portName. The TCP port to connect on the backend. The default value is 80.
+          #
+          # This cannot be used for internal load balancing.
+      "backends": [ # The list of backends that serve this BackendService.
+        { # Message containing information of one individual backend.
+          "group": "A String", # The fully-qualified URL of a zonal Instance Group resource. This instance group defines the list of instances that serve traffic. Member virtual machine instances from each instance group must live in the same zone as the instance group itself. No two backends in a backend service are allowed to use same Instance Group resource.
+              #
+              # Note that you must specify an Instance Group resource using the fully-qualified URL, rather than a partial URL.
+              #
+              # When the BackendService has load balancing scheme INTERNAL, the instance group must be in a zone within the same region as the BackendService.
+          "description": "A String", # An optional description of this resource. Provide this property when you create the resource.
+          "maxUtilization": 3.14, # Used when balancingMode is UTILIZATION. This ratio defines the CPU utilization target for the group. The default is 0.8. Valid range is [0.0, 1.0].
+              #
+              # This cannot be used for internal load balancing.
+          "maxRatePerInstance": 3.14, # The max requests per second (RPS) that a single backend instance can handle.This is used to calculate the capacity of the group. Can be used in either balancing mode. For RATE mode, either maxRate or maxRatePerInstance must be set.
+              #
+              # This cannot be used for internal load balancing.
+          "maxConnectionsPerInstance": 42, # The max number of simultaneous connections that a single backend instance can handle. This is used to calculate the capacity of the group. Can be used in either CONNECTION or UTILIZATION balancing modes. For CONNECTION mode, either maxConnections or maxConnectionsPerInstance must be set.
+              #
+              # This cannot be used for internal load balancing.
+          "capacityScaler": 3.14, # A multiplier applied to the group's maximum servicing capacity (based on UTILIZATION, RATE or CONNECTION). Default value is 1, which means the group will serve up to 100% of its configured capacity (depending on balancingMode). A setting of 0 means the group is completely drained, offering 0% of its available Capacity. Valid range is [0.0,1.0].
+              #
+              # This cannot be used for internal load balancing.
+          "maxRate": 42, # The max requests per second (RPS) of the group. Can be used with either RATE or UTILIZATION balancing modes, but required if RATE mode. For RATE mode, either maxRate or maxRatePerInstance must be set.
+              #
+              # This cannot be used for internal load balancing.
+          "maxConnections": 42, # The max number of simultaneous connections for the group. Can be used with either CONNECTION or UTILIZATION balancing modes. For CONNECTION mode, either maxConnections or maxConnectionsPerInstance must be set.
+              #
+              # This cannot be used for internal load balancing.
+          "balancingMode": "A String", # Specifies the balancing mode for this backend. For global HTTP(S) or TCP/SSL load balancing, the default is UTILIZATION. Valid values are UTILIZATION, RATE (for HTTP(S)) and CONNECTION (for TCP/SSL).
+              #
+              # This cannot be used for internal load balancing.
+        },
+      ],
+      "fingerprint": "A String", # Fingerprint of this resource. A hash of the contents stored in this object. This field is used in optimistic locking. This field will be ignored when inserting a BackendService. An up-to-date fingerprint must be provided in order to update the BackendService.
+      "portName": "A String", # Name of backend port. The same name should appear in the instance groups referenced by this service. Required when the load balancing scheme is EXTERNAL.
+          #
+          # When the load balancing scheme is INTERNAL, this field is not used.
+      "healthChecks": [ # The list of URLs to the HttpHealthCheck or HttpsHealthCheck resource for health checking this BackendService. Currently at most one health check can be specified, and a health check is required.
+          #
+          # For internal load balancing, a URL to a HealthCheck resource must be specified instead.
+        "A String",
+      ],
+      "sessionAffinity": "A String", # Type of session affinity to use. The default is NONE.
+          #
+          # When the load balancing scheme is EXTERNAL, can be NONE, CLIENT_IP, or GENERATED_COOKIE.
+          #
+          # When the load balancing scheme is INTERNAL, can be NONE, CLIENT_IP, CLIENT_IP_PROTO, or CLIENT_IP_PORT_PROTO.
+          #
+          # When the protocol is UDP, this field is not used.
+      "creationTimestamp": "A String", # [Output Only] Creation timestamp in RFC3339 text format.
+      "id": "A String", # [Output Only] The unique identifier for the resource. This identifier is defined by the server.
+      "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
+      "name": "A String", # Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression [a-z]([-a-z0-9]*[a-z0-9])? which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.
+    }</pre>
+</div>
+
+<div class="method">
+    <code class="details" id="getHealth">getHealth(project, region, backendService, body)</code>
+  <pre>Gets the most recent health check results for this regional BackendService.
+
+Args:
+  project: string, A parameter (required)
+  region: string, Name of the region scoping this request. (required)
+  backendService: string, Name of the BackendService resource to which the queried instance belongs. (required)
+  body: object, The request body. (required)
+    The object takes the form of:
+
+{
+    "group": "A String", # A URI referencing one of the instance groups listed in the backend service.
+  }
+
+
+Returns:
+  An object of the form:
+
+    {
+    "kind": "compute#backendServiceGroupHealth", # [Output Only] Type of resource. Always compute#backendServiceGroupHealth for the health of backend services.
+    "healthStatus": [
+      {
+        "instance": "A String", # URL of the instance resource.
+        "healthState": "A String", # Health state of the instance.
+        "ipAddress": "A String", # The IP address represented by this resource.
+        "port": 42, # The port on the instance.
+      },
+    ],
+  }</pre>
+</div>
+
+<div class="method">
+    <code class="details" id="insert">insert(project, region, body)</code>
+  <pre>Creates a regional BackendService resource in the specified project using the data included in the request. There are several restrictions and guidelines to keep in mind when creating a regional backend service. Read  Restrictions and Guidelines for more information.
+
+Args:
+  project: string, Project ID for this request. (required)
+  region: string, Name of the region scoping this request. (required)
+  body: object, The request body. (required)
+    The object takes the form of:
+
+{ # A BackendService resource. This resource defines a group of backend virtual machines and their serving capacity.
+    "connectionDraining": { # Message containing connection draining configuration.
+      "drainingTimeoutSec": 42, # Time for which instance will be drained (not accept new connections, but still work to finish started).
+    },
+    "kind": "compute#backendService", # [Output Only] Type of resource. Always compute#backendService for backend services.
+    "protocol": "A String", # The protocol this BackendService uses to communicate with backends.
+        # 
+        # Possible values are HTTP, HTTPS, HTTP2, TCP and SSL. The default is HTTP.
+        # 
+        # For internal load balancing, the possible values are TCP and UDP, and the default is TCP.
+    "description": "A String", # An optional description of this resource. Provide this property when you create the resource.
+    "timeoutSec": 42, # How many seconds to wait for the backend before considering it a failed request. Default is 30 seconds.
+    "enableCDN": True or False, # If true, enable Cloud CDN for this BackendService.
+        # 
+        # When the load balancing scheme is INTERNAL, this field is not used.
+    "region": "A String", # [Output Only] URL of the region where the regional backend service resides. This field is not applicable to global backend services.
+    "loadBalancingScheme": "A String",
+    "affinityCookieTtlSec": 42, # Lifetime of cookies in seconds if session_affinity is GENERATED_COOKIE. If set to 0, the cookie is non-persistent and lasts only until the end of the browser session (or equivalent). The maximum allowed value for TTL is one day.
+        # 
+        # When the load balancing scheme is INTERNAL, this field is not used.
+    "port": 42, # Deprecated in favor of portName. The TCP port to connect on the backend. The default value is 80.
+        # 
+        # This cannot be used for internal load balancing.
+    "backends": [ # The list of backends that serve this BackendService.
+      { # Message containing information of one individual backend.
+        "group": "A String", # The fully-qualified URL of a zonal Instance Group resource. This instance group defines the list of instances that serve traffic. Member virtual machine instances from each instance group must live in the same zone as the instance group itself. No two backends in a backend service are allowed to use same Instance Group resource.
+            #
+            # Note that you must specify an Instance Group resource using the fully-qualified URL, rather than a partial URL.
+            #
+            # When the BackendService has load balancing scheme INTERNAL, the instance group must be in a zone within the same region as the BackendService.
+        "description": "A String", # An optional description of this resource. Provide this property when you create the resource.
+        "maxUtilization": 3.14, # Used when balancingMode is UTILIZATION. This ratio defines the CPU utilization target for the group. The default is 0.8. Valid range is [0.0, 1.0].
+            #
+            # This cannot be used for internal load balancing.
+        "maxRatePerInstance": 3.14, # The max requests per second (RPS) that a single backend instance can handle.This is used to calculate the capacity of the group. Can be used in either balancing mode. For RATE mode, either maxRate or maxRatePerInstance must be set.
+            #
+            # This cannot be used for internal load balancing.
+        "maxConnectionsPerInstance": 42, # The max number of simultaneous connections that a single backend instance can handle. This is used to calculate the capacity of the group. Can be used in either CONNECTION or UTILIZATION balancing modes. For CONNECTION mode, either maxConnections or maxConnectionsPerInstance must be set.
+            #
+            # This cannot be used for internal load balancing.
+        "capacityScaler": 3.14, # A multiplier applied to the group's maximum servicing capacity (based on UTILIZATION, RATE or CONNECTION). Default value is 1, which means the group will serve up to 100% of its configured capacity (depending on balancingMode). A setting of 0 means the group is completely drained, offering 0% of its available Capacity. Valid range is [0.0,1.0].
+            #
+            # This cannot be used for internal load balancing.
+        "maxRate": 42, # The max requests per second (RPS) of the group. Can be used with either RATE or UTILIZATION balancing modes, but required if RATE mode. For RATE mode, either maxRate or maxRatePerInstance must be set.
+            #
+            # This cannot be used for internal load balancing.
+        "maxConnections": 42, # The max number of simultaneous connections for the group. Can be used with either CONNECTION or UTILIZATION balancing modes. For CONNECTION mode, either maxConnections or maxConnectionsPerInstance must be set.
+            #
+            # This cannot be used for internal load balancing.
+        "balancingMode": "A String", # Specifies the balancing mode for this backend. For global HTTP(S) or TCP/SSL load balancing, the default is UTILIZATION. Valid values are UTILIZATION, RATE (for HTTP(S)) and CONNECTION (for TCP/SSL).
+            #
+            # This cannot be used for internal load balancing.
+      },
+    ],
+    "fingerprint": "A String", # Fingerprint of this resource. A hash of the contents stored in this object. This field is used in optimistic locking. This field will be ignored when inserting a BackendService. An up-to-date fingerprint must be provided in order to update the BackendService.
+    "portName": "A String", # Name of backend port. The same name should appear in the instance groups referenced by this service. Required when the load balancing scheme is EXTERNAL.
+        # 
+        # When the load balancing scheme is INTERNAL, this field is not used.
+    "healthChecks": [ # The list of URLs to the HttpHealthCheck or HttpsHealthCheck resource for health checking this BackendService. Currently at most one health check can be specified, and a health check is required.
+        # 
+        # For internal load balancing, a URL to a HealthCheck resource must be specified instead.
+      "A String",
+    ],
+    "sessionAffinity": "A String", # Type of session affinity to use. The default is NONE.
+        # 
+        # When the load balancing scheme is EXTERNAL, can be NONE, CLIENT_IP, or GENERATED_COOKIE.
+        # 
+        # When the load balancing scheme is INTERNAL, can be NONE, CLIENT_IP, CLIENT_IP_PROTO, or CLIENT_IP_PORT_PROTO.
+        # 
+        # When the protocol is UDP, this field is not used.
+    "creationTimestamp": "A String", # [Output Only] Creation timestamp in RFC3339 text format.
+    "id": "A String", # [Output Only] The unique identifier for the resource. This identifier is defined by the server.
+    "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
+    "name": "A String", # Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression [a-z]([-a-z0-9]*[a-z0-9])? which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.
+  }
+
+
+Returns:
+  An object of the form:
+
+    { # An Operation resource, used to manage asynchronous API requests.
+    "targetId": "A String", # [Output Only] The unique target ID, which identifies a specific incarnation of the target resource.
+    "clientOperationId": "A String", # [Output Only] Reserved for future use.
+    "creationTimestamp": "A String", # [Output Only] Creation timestamp in RFC3339 text format.
+    "id": "A String", # [Output Only] The unique identifier for the resource. This identifier is defined by the server.
+    "zone": "A String", # [Output Only] The URL of the zone where the operation resides. Only available when performing per-zone operations.
+    "insertTime": "A String", # [Output Only] The time that this operation was requested. This value is in RFC3339 text format.
+    "operationType": "A String", # [Output Only] The type of operation, such as insert, update, or delete, and so on.
+    "httpErrorMessage": "A String", # [Output Only] If the operation fails, this field contains the HTTP error message that was returned, such as NOT FOUND.
+    "progress": 42, # [Output Only] An optional progress indicator that ranges from 0 to 100. There is no requirement that this be linear or support any granularity of operations. This should not be used to guess when the operation will be complete. This number should monotonically increase as the operation progresses.
+    "httpErrorStatusCode": 42, # [Output Only] If the operation fails, this field contains the HTTP error status code that was returned. For example, a 404 means the resource was not found.
+    "statusMessage": "A String", # [Output Only] An optional textual description of the current status of the operation.
+    "status": "A String", # [Output Only] The status of the operation, which can be one of the following: PENDING, RUNNING, or DONE.
+    "description": "A String", # [Output Only] A textual description of the operation, which is set when the operation is created.
+    "warnings": [ # [Output Only] If warning messages are generated during processing of the operation, this field will be populated.
+      {
+        "message": "A String", # [Output Only] A human-readable description of the warning code.
+        "code": "A String", # [Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.
+        "data": [ # [Output Only] Metadata about this warning in key: value format. For example:
+            # "data": [ { "key": "scope", "value": "zones/us-east1-d" }
+          {
+            "value": "A String", # [Output Only] A warning data value corresponding to the key.
+            "key": "A String", # [Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding).
+          },
+        ],
+      },
+    ],
+    "user": "A String", # [Output Only] User who requested the operation, for example: user@example.com.
+    "startTime": "A String", # [Output Only] The time that this operation was started by the server. This value is in RFC3339 text format.
+    "kind": "compute#operation", # [Output Only] Type of the resource. Always compute#operation for Operation resources.
+    "name": "A String", # [Output Only] Name of the resource.
+    "region": "A String", # [Output Only] The URL of the region where the operation resides. Only available when performing regional operations.
+    "error": { # [Output Only] If errors are generated during processing of the operation, this field will be populated.
+      "errors": [ # [Output Only] The array of errors encountered while processing this operation.
+        {
+          "message": "A String", # [Output Only] An optional, human-readable error message.
+          "code": "A String", # [Output Only] The error type identifier for this error.
+          "location": "A String", # [Output Only] Indicates the field in the request that caused the error. This property is optional.
+        },
+      ],
+    },
+    "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
+    "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
+  }</pre>
+</div>
+
+<div class="method">
+    <code class="details" id="list">list(project, region, orderBy=None, maxResults=None, pageToken=None, filter=None)</code>
+  <pre>Retrieves the list of regional BackendService resources available to the specified project in the given region.
+
+Args:
+  project: string, Project ID for this request. (required)
+  region: string, Name of the region scoping this request. (required)
+  orderBy: string, Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.
+
+You can also sort results in descending order based on the creation timestamp using orderBy="creationTimestamp desc". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.
+
+Currently, only sorting by name or creationTimestamp desc is supported.
+  maxResults: integer, The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests.
+  pageToken: string, Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.
+  filter: string, Sets a filter expression for filtering listed resources, in the form filter={expression}. Your {expression} must be in the format: field_name comparison_string literal_string.
+
+The field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.
+
+For example, to filter for instances that do not have a name of example-instance, you would use filter=name ne example-instance.
+
+You can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.
+
+To filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.
+
+Returns:
+  An object of the form:
+
+    { # Contains a list of BackendService resources.
+    "nextPageToken": "A String", # [Output Only] A token used to continue a truncated list request.
+    "items": [ # A list of BackendService resources.
+      { # A BackendService resource. This resource defines a group of backend virtual machines and their serving capacity.
+          "connectionDraining": { # Message containing connection draining configuration.
+            "drainingTimeoutSec": 42, # Time for which instance will be drained (not accept new connections, but still work to finish started).
+          },
+          "kind": "compute#backendService", # [Output Only] Type of resource. Always compute#backendService for backend services.
+          "protocol": "A String", # The protocol this BackendService uses to communicate with backends.
+              #
+              # Possible values are HTTP, HTTPS, HTTP2, TCP and SSL. The default is HTTP.
+              #
+              # For internal load balancing, the possible values are TCP and UDP, and the default is TCP.
+          "description": "A String", # An optional description of this resource. Provide this property when you create the resource.
+          "timeoutSec": 42, # How many seconds to wait for the backend before considering it a failed request. Default is 30 seconds.
+          "enableCDN": True or False, # If true, enable Cloud CDN for this BackendService.
+              #
+              # When the load balancing scheme is INTERNAL, this field is not used.
+          "region": "A String", # [Output Only] URL of the region where the regional backend service resides. This field is not applicable to global backend services.
+          "loadBalancingScheme": "A String",
+          "affinityCookieTtlSec": 42, # Lifetime of cookies in seconds if session_affinity is GENERATED_COOKIE. If set to 0, the cookie is non-persistent and lasts only until the end of the browser session (or equivalent). The maximum allowed value for TTL is one day.
+              #
+              # When the load balancing scheme is INTERNAL, this field is not used.
+          "port": 42, # Deprecated in favor of portName. The TCP port to connect on the backend. The default value is 80.
+              #
+              # This cannot be used for internal load balancing.
+          "backends": [ # The list of backends that serve this BackendService.
+            { # Message containing information of one individual backend.
+              "group": "A String", # The fully-qualified URL of a zonal Instance Group resource. This instance group defines the list of instances that serve traffic. Member virtual machine instances from each instance group must live in the same zone as the instance group itself. No two backends in a backend service are allowed to use same Instance Group resource.
+                  #
+                  # Note that you must specify an Instance Group resource using the fully-qualified URL, rather than a partial URL.
+                  #
+                  # When the BackendService has load balancing scheme INTERNAL, the instance group must be in a zone within the same region as the BackendService.
+              "description": "A String", # An optional description of this resource. Provide this property when you create the resource.
+              "maxUtilization": 3.14, # Used when balancingMode is UTILIZATION. This ratio defines the CPU utilization target for the group. The default is 0.8. Valid range is [0.0, 1.0].
+                  #
+                  # This cannot be used for internal load balancing.
+              "maxRatePerInstance": 3.14, # The max requests per second (RPS) that a single backend instance can handle.This is used to calculate the capacity of the group. Can be used in either balancing mode. For RATE mode, either maxRate or maxRatePerInstance must be set.
+                  #
+                  # This cannot be used for internal load balancing.
+              "maxConnectionsPerInstance": 42, # The max number of simultaneous connections that a single backend instance can handle. This is used to calculate the capacity of the group. Can be used in either CONNECTION or UTILIZATION balancing modes. For CONNECTION mode, either maxConnections or maxConnectionsPerInstance must be set.
+                  #
+                  # This cannot be used for internal load balancing.
+              "capacityScaler": 3.14, # A multiplier applied to the group's maximum servicing capacity (based on UTILIZATION, RATE or CONNECTION). Default value is 1, which means the group will serve up to 100% of its configured capacity (depending on balancingMode). A setting of 0 means the group is completely drained, offering 0% of its available Capacity. Valid range is [0.0,1.0].
+                  #
+                  # This cannot be used for internal load balancing.
+              "maxRate": 42, # The max requests per second (RPS) of the group. Can be used with either RATE or UTILIZATION balancing modes, but required if RATE mode. For RATE mode, either maxRate or maxRatePerInstance must be set.
+                  #
+                  # This cannot be used for internal load balancing.
+              "maxConnections": 42, # The max number of simultaneous connections for the group. Can be used with either CONNECTION or UTILIZATION balancing modes. For CONNECTION mode, either maxConnections or maxConnectionsPerInstance must be set.
+                  #
+                  # This cannot be used for internal load balancing.
+              "balancingMode": "A String", # Specifies the balancing mode for this backend. For global HTTP(S) or TCP/SSL load balancing, the default is UTILIZATION. Valid values are UTILIZATION, RATE (for HTTP(S)) and CONNECTION (for TCP/SSL).
+                  #
+                  # This cannot be used for internal load balancing.
+            },
+          ],
+          "fingerprint": "A String", # Fingerprint of this resource. A hash of the contents stored in this object. This field is used in optimistic locking. This field will be ignored when inserting a BackendService. An up-to-date fingerprint must be provided in order to update the BackendService.
+          "portName": "A String", # Name of backend port. The same name should appear in the instance groups referenced by this service. Required when the load balancing scheme is EXTERNAL.
+              #
+              # When the load balancing scheme is INTERNAL, this field is not used.
+          "healthChecks": [ # The list of URLs to the HttpHealthCheck or HttpsHealthCheck resource for health checking this BackendService. Currently at most one health check can be specified, and a health check is required.
+              #
+              # For internal load balancing, a URL to a HealthCheck resource must be specified instead.
+            "A String",
+          ],
+          "sessionAffinity": "A String", # Type of session affinity to use. The default is NONE.
+              #
+              # When the load balancing scheme is EXTERNAL, can be NONE, CLIENT_IP, or GENERATED_COOKIE.
+              #
+              # When the load balancing scheme is INTERNAL, can be NONE, CLIENT_IP, CLIENT_IP_PROTO, or CLIENT_IP_PORT_PROTO.
+              #
+              # When the protocol is UDP, this field is not used.
+          "creationTimestamp": "A String", # [Output Only] Creation timestamp in RFC3339 text format.
+          "id": "A String", # [Output Only] The unique identifier for the resource. This identifier is defined by the server.
+          "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
+          "name": "A String", # Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression [a-z]([-a-z0-9]*[a-z0-9])? which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.
+        },
+    ],
+    "kind": "compute#backendServiceList", # [Output Only] Type of resource. Always compute#backendServiceList for lists of backend services.
+    "id": "A String", # [Output Only] Unique identifier for the resource; defined by the server.
+    "selfLink": "A String", # [Output Only] Server-defined URL for this resource.
+  }</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="patch">patch(project, region, backendService, body)</code>
+  <pre>Updates the specified regional BackendService resource with the data included in the request. There are several restrictions and guidelines to keep in mind when updating a backend service. Read  Restrictions and Guidelines for more information. This method supports patch semantics.
+
+Args:
+  project: string, Project ID for this request. (required)
+  region: string, Name of the region scoping this request. (required)
+  backendService: string, Name of the BackendService resource to update. (required)
+  body: object, The request body. (required)
+    The object takes the form of:
+
+{ # A BackendService resource. This resource defines a group of backend virtual machines and their serving capacity.
+    "connectionDraining": { # Message containing connection draining configuration.
+      "drainingTimeoutSec": 42, # Time for which instance will be drained (not accept new connections, but still work to finish started).
+    },
+    "kind": "compute#backendService", # [Output Only] Type of resource. Always compute#backendService for backend services.
+    "protocol": "A String", # The protocol this BackendService uses to communicate with backends.
+        # 
+        # Possible values are HTTP, HTTPS, HTTP2, TCP and SSL. The default is HTTP.
+        # 
+        # For internal load balancing, the possible values are TCP and UDP, and the default is TCP.
+    "description": "A String", # An optional description of this resource. Provide this property when you create the resource.
+    "timeoutSec": 42, # How many seconds to wait for the backend before considering it a failed request. Default is 30 seconds.
+    "enableCDN": True or False, # If true, enable Cloud CDN for this BackendService.
+        # 
+        # When the load balancing scheme is INTERNAL, this field is not used.
+    "region": "A String", # [Output Only] URL of the region where the regional backend service resides. This field is not applicable to global backend services.
+    "loadBalancingScheme": "A String",
+    "affinityCookieTtlSec": 42, # Lifetime of cookies in seconds if session_affinity is GENERATED_COOKIE. If set to 0, the cookie is non-persistent and lasts only until the end of the browser session (or equivalent). The maximum allowed value for TTL is one day.
+        # 
+        # When the load balancing scheme is INTERNAL, this field is not used.
+    "port": 42, # Deprecated in favor of portName. The TCP port to connect on the backend. The default value is 80.
+        # 
+        # This cannot be used for internal load balancing.
+    "backends": [ # The list of backends that serve this BackendService.
+      { # Message containing information of one individual backend.
+        "group": "A String", # The fully-qualified URL of a zonal Instance Group resource. This instance group defines the list of instances that serve traffic. Member virtual machine instances from each instance group must live in the same zone as the instance group itself. No two backends in a backend service are allowed to use same Instance Group resource.
+            #
+            # Note that you must specify an Instance Group resource using the fully-qualified URL, rather than a partial URL.
+            #
+            # When the BackendService has load balancing scheme INTERNAL, the instance group must be in a zone within the same region as the BackendService.
+        "description": "A String", # An optional description of this resource. Provide this property when you create the resource.
+        "maxUtilization": 3.14, # Used when balancingMode is UTILIZATION. This ratio defines the CPU utilization target for the group. The default is 0.8. Valid range is [0.0, 1.0].
+            #
+            # This cannot be used for internal load balancing.
+        "maxRatePerInstance": 3.14, # The max requests per second (RPS) that a single backend instance can handle.This is used to calculate the capacity of the group. Can be used in either balancing mode. For RATE mode, either maxRate or maxRatePerInstance must be set.
+            #
+            # This cannot be used for internal load balancing.
+        "maxConnectionsPerInstance": 42, # The max number of simultaneous connections that a single backend instance can handle. This is used to calculate the capacity of the group. Can be used in either CONNECTION or UTILIZATION balancing modes. For CONNECTION mode, either maxConnections or maxConnectionsPerInstance must be set.
+            #
+            # This cannot be used for internal load balancing.
+        "capacityScaler": 3.14, # A multiplier applied to the group's maximum servicing capacity (based on UTILIZATION, RATE or CONNECTION). Default value is 1, which means the group will serve up to 100% of its configured capacity (depending on balancingMode). A setting of 0 means the group is completely drained, offering 0% of its available Capacity. Valid range is [0.0,1.0].
+            #
+            # This cannot be used for internal load balancing.
+        "maxRate": 42, # The max requests per second (RPS) of the group. Can be used with either RATE or UTILIZATION balancing modes, but required if RATE mode. For RATE mode, either maxRate or maxRatePerInstance must be set.
+            #
+            # This cannot be used for internal load balancing.
+        "maxConnections": 42, # The max number of simultaneous connections for the group. Can be used with either CONNECTION or UTILIZATION balancing modes. For CONNECTION mode, either maxConnections or maxConnectionsPerInstance must be set.
+            #
+            # This cannot be used for internal load balancing.
+        "balancingMode": "A String", # Specifies the balancing mode for this backend. For global HTTP(S) or TCP/SSL load balancing, the default is UTILIZATION. Valid values are UTILIZATION, RATE (for HTTP(S)) and CONNECTION (for TCP/SSL).
+            #
+            # This cannot be used for internal load balancing.
+      },
+    ],
+    "fingerprint": "A String", # Fingerprint of this resource. A hash of the contents stored in this object. This field is used in optimistic locking. This field will be ignored when inserting a BackendService. An up-to-date fingerprint must be provided in order to update the BackendService.
+    "portName": "A String", # Name of backend port. The same name should appear in the instance groups referenced by this service. Required when the load balancing scheme is EXTERNAL.
+        # 
+        # When the load balancing scheme is INTERNAL, this field is not used.
+    "healthChecks": [ # The list of URLs to the HttpHealthCheck or HttpsHealthCheck resource for health checking this BackendService. Currently at most one health check can be specified, and a health check is required.
+        # 
+        # For internal load balancing, a URL to a HealthCheck resource must be specified instead.
+      "A String",
+    ],
+    "sessionAffinity": "A String", # Type of session affinity to use. The default is NONE.
+        # 
+        # When the load balancing scheme is EXTERNAL, can be NONE, CLIENT_IP, or GENERATED_COOKIE.
+        # 
+        # When the load balancing scheme is INTERNAL, can be NONE, CLIENT_IP, CLIENT_IP_PROTO, or CLIENT_IP_PORT_PROTO.
+        # 
+        # When the protocol is UDP, this field is not used.
+    "creationTimestamp": "A String", # [Output Only] Creation timestamp in RFC3339 text format.
+    "id": "A String", # [Output Only] The unique identifier for the resource. This identifier is defined by the server.
+    "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
+    "name": "A String", # Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression [a-z]([-a-z0-9]*[a-z0-9])? which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.
+  }
+
+
+Returns:
+  An object of the form:
+
+    { # An Operation resource, used to manage asynchronous API requests.
+    "targetId": "A String", # [Output Only] The unique target ID, which identifies a specific incarnation of the target resource.
+    "clientOperationId": "A String", # [Output Only] Reserved for future use.
+    "creationTimestamp": "A String", # [Output Only] Creation timestamp in RFC3339 text format.
+    "id": "A String", # [Output Only] The unique identifier for the resource. This identifier is defined by the server.
+    "zone": "A String", # [Output Only] The URL of the zone where the operation resides. Only available when performing per-zone operations.
+    "insertTime": "A String", # [Output Only] The time that this operation was requested. This value is in RFC3339 text format.
+    "operationType": "A String", # [Output Only] The type of operation, such as insert, update, or delete, and so on.
+    "httpErrorMessage": "A String", # [Output Only] If the operation fails, this field contains the HTTP error message that was returned, such as NOT FOUND.
+    "progress": 42, # [Output Only] An optional progress indicator that ranges from 0 to 100. There is no requirement that this be linear or support any granularity of operations. This should not be used to guess when the operation will be complete. This number should monotonically increase as the operation progresses.
+    "httpErrorStatusCode": 42, # [Output Only] If the operation fails, this field contains the HTTP error status code that was returned. For example, a 404 means the resource was not found.
+    "statusMessage": "A String", # [Output Only] An optional textual description of the current status of the operation.
+    "status": "A String", # [Output Only] The status of the operation, which can be one of the following: PENDING, RUNNING, or DONE.
+    "description": "A String", # [Output Only] A textual description of the operation, which is set when the operation is created.
+    "warnings": [ # [Output Only] If warning messages are generated during processing of the operation, this field will be populated.
+      {
+        "message": "A String", # [Output Only] A human-readable description of the warning code.
+        "code": "A String", # [Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.
+        "data": [ # [Output Only] Metadata about this warning in key: value format. For example:
+            # "data": [ { "key": "scope", "value": "zones/us-east1-d" }
+          {
+            "value": "A String", # [Output Only] A warning data value corresponding to the key.
+            "key": "A String", # [Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding).
+          },
+        ],
+      },
+    ],
+    "user": "A String", # [Output Only] User who requested the operation, for example: user@example.com.
+    "startTime": "A String", # [Output Only] The time that this operation was started by the server. This value is in RFC3339 text format.
+    "kind": "compute#operation", # [Output Only] Type of the resource. Always compute#operation for Operation resources.
+    "name": "A String", # [Output Only] Name of the resource.
+    "region": "A String", # [Output Only] The URL of the region where the operation resides. Only available when performing regional operations.
+    "error": { # [Output Only] If errors are generated during processing of the operation, this field will be populated.
+      "errors": [ # [Output Only] The array of errors encountered while processing this operation.
+        {
+          "message": "A String", # [Output Only] An optional, human-readable error message.
+          "code": "A String", # [Output Only] The error type identifier for this error.
+          "location": "A String", # [Output Only] Indicates the field in the request that caused the error. This property is optional.
+        },
+      ],
+    },
+    "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
+    "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
+  }</pre>
+</div>
+
+<div class="method">
+    <code class="details" id="update">update(project, region, backendService, body)</code>
+  <pre>Updates the specified regional BackendService resource with the data included in the request. There are several restrictions and guidelines to keep in mind when updating a backend service. Read  Restrictions and Guidelines for more information.
+
+Args:
+  project: string, Project ID for this request. (required)
+  region: string, Name of the region scoping this request. (required)
+  backendService: string, Name of the BackendService resource to update. (required)
+  body: object, The request body. (required)
+    The object takes the form of:
+
+{ # A BackendService resource. This resource defines a group of backend virtual machines and their serving capacity.
+    "connectionDraining": { # Message containing connection draining configuration.
+      "drainingTimeoutSec": 42, # Time for which instance will be drained (not accept new connections, but still work to finish started).
+    },
+    "kind": "compute#backendService", # [Output Only] Type of resource. Always compute#backendService for backend services.
+    "protocol": "A String", # The protocol this BackendService uses to communicate with backends.
+        # 
+        # Possible values are HTTP, HTTPS, HTTP2, TCP and SSL. The default is HTTP.
+        # 
+        # For internal load balancing, the possible values are TCP and UDP, and the default is TCP.
+    "description": "A String", # An optional description of this resource. Provide this property when you create the resource.
+    "timeoutSec": 42, # How many seconds to wait for the backend before considering it a failed request. Default is 30 seconds.
+    "enableCDN": True or False, # If true, enable Cloud CDN for this BackendService.
+        # 
+        # When the load balancing scheme is INTERNAL, this field is not used.
+    "region": "A String", # [Output Only] URL of the region where the regional backend service resides. This field is not applicable to global backend services.
+    "loadBalancingScheme": "A String",
+    "affinityCookieTtlSec": 42, # Lifetime of cookies in seconds if session_affinity is GENERATED_COOKIE. If set to 0, the cookie is non-persistent and lasts only until the end of the browser session (or equivalent). The maximum allowed value for TTL is one day.
+        # 
+        # When the load balancing scheme is INTERNAL, this field is not used.
+    "port": 42, # Deprecated in favor of portName. The TCP port to connect on the backend. The default value is 80.
+        # 
+        # This cannot be used for internal load balancing.
+    "backends": [ # The list of backends that serve this BackendService.
+      { # Message containing information of one individual backend.
+        "group": "A String", # The fully-qualified URL of a zonal Instance Group resource. This instance group defines the list of instances that serve traffic. Member virtual machine instances from each instance group must live in the same zone as the instance group itself. No two backends in a backend service are allowed to use same Instance Group resource.
+            #
+            # Note that you must specify an Instance Group resource using the fully-qualified URL, rather than a partial URL.
+            #
+            # When the BackendService has load balancing scheme INTERNAL, the instance group must be in a zone within the same region as the BackendService.
+        "description": "A String", # An optional description of this resource. Provide this property when you create the resource.
+        "maxUtilization": 3.14, # Used when balancingMode is UTILIZATION. This ratio defines the CPU utilization target for the group. The default is 0.8. Valid range is [0.0, 1.0].
+            #
+            # This cannot be used for internal load balancing.
+        "maxRatePerInstance": 3.14, # The max requests per second (RPS) that a single backend instance can handle.This is used to calculate the capacity of the group. Can be used in either balancing mode. For RATE mode, either maxRate or maxRatePerInstance must be set.
+            #
+            # This cannot be used for internal load balancing.
+        "maxConnectionsPerInstance": 42, # The max number of simultaneous connections that a single backend instance can handle. This is used to calculate the capacity of the group. Can be used in either CONNECTION or UTILIZATION balancing modes. For CONNECTION mode, either maxConnections or maxConnectionsPerInstance must be set.
+            #
+            # This cannot be used for internal load balancing.
+        "capacityScaler": 3.14, # A multiplier applied to the group's maximum servicing capacity (based on UTILIZATION, RATE or CONNECTION). Default value is 1, which means the group will serve up to 100% of its configured capacity (depending on balancingMode). A setting of 0 means the group is completely drained, offering 0% of its available Capacity. Valid range is [0.0,1.0].
+            #
+            # This cannot be used for internal load balancing.
+        "maxRate": 42, # The max requests per second (RPS) of the group. Can be used with either RATE or UTILIZATION balancing modes, but required if RATE mode. For RATE mode, either maxRate or maxRatePerInstance must be set.
+            #
+            # This cannot be used for internal load balancing.
+        "maxConnections": 42, # The max number of simultaneous connections for the group. Can be used with either CONNECTION or UTILIZATION balancing modes. For CONNECTION mode, either maxConnections or maxConnectionsPerInstance must be set.
+            #
+            # This cannot be used for internal load balancing.
+        "balancingMode": "A String", # Specifies the balancing mode for this backend. For global HTTP(S) or TCP/SSL load balancing, the default is UTILIZATION. Valid values are UTILIZATION, RATE (for HTTP(S)) and CONNECTION (for TCP/SSL).
+            #
+            # This cannot be used for internal load balancing.
+      },
+    ],
+    "fingerprint": "A String", # Fingerprint of this resource. A hash of the contents stored in this object. This field is used in optimistic locking. This field will be ignored when inserting a BackendService. An up-to-date fingerprint must be provided in order to update the BackendService.
+    "portName": "A String", # Name of backend port. The same name should appear in the instance groups referenced by this service. Required when the load balancing scheme is EXTERNAL.
+        # 
+        # When the load balancing scheme is INTERNAL, this field is not used.
+    "healthChecks": [ # The list of URLs to the HttpHealthCheck or HttpsHealthCheck resource for health checking this BackendService. Currently at most one health check can be specified, and a health check is required.
+        # 
+        # For internal load balancing, a URL to a HealthCheck resource must be specified instead.
+      "A String",
+    ],
+    "sessionAffinity": "A String", # Type of session affinity to use. The default is NONE.
+        # 
+        # When the load balancing scheme is EXTERNAL, can be NONE, CLIENT_IP, or GENERATED_COOKIE.
+        # 
+        # When the load balancing scheme is INTERNAL, can be NONE, CLIENT_IP, CLIENT_IP_PROTO, or CLIENT_IP_PORT_PROTO.
+        # 
+        # When the protocol is UDP, this field is not used.
+    "creationTimestamp": "A String", # [Output Only] Creation timestamp in RFC3339 text format.
+    "id": "A String", # [Output Only] The unique identifier for the resource. This identifier is defined by the server.
+    "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
+    "name": "A String", # Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression [a-z]([-a-z0-9]*[a-z0-9])? which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.
+  }
+
+
+Returns:
+  An object of the form:
+
+    { # An Operation resource, used to manage asynchronous API requests.
+    "targetId": "A String", # [Output Only] The unique target ID, which identifies a specific incarnation of the target resource.
+    "clientOperationId": "A String", # [Output Only] Reserved for future use.
+    "creationTimestamp": "A String", # [Output Only] Creation timestamp in RFC3339 text format.
+    "id": "A String", # [Output Only] The unique identifier for the resource. This identifier is defined by the server.
+    "zone": "A String", # [Output Only] The URL of the zone where the operation resides. Only available when performing per-zone operations.
+    "insertTime": "A String", # [Output Only] The time that this operation was requested. This value is in RFC3339 text format.
+    "operationType": "A String", # [Output Only] The type of operation, such as insert, update, or delete, and so on.
+    "httpErrorMessage": "A String", # [Output Only] If the operation fails, this field contains the HTTP error message that was returned, such as NOT FOUND.
+    "progress": 42, # [Output Only] An optional progress indicator that ranges from 0 to 100. There is no requirement that this be linear or support any granularity of operations. This should not be used to guess when the operation will be complete. This number should monotonically increase as the operation progresses.
+    "httpErrorStatusCode": 42, # [Output Only] If the operation fails, this field contains the HTTP error status code that was returned. For example, a 404 means the resource was not found.
+    "statusMessage": "A String", # [Output Only] An optional textual description of the current status of the operation.
+    "status": "A String", # [Output Only] The status of the operation, which can be one of the following: PENDING, RUNNING, or DONE.
+    "description": "A String", # [Output Only] A textual description of the operation, which is set when the operation is created.
+    "warnings": [ # [Output Only] If warning messages are generated during processing of the operation, this field will be populated.
+      {
+        "message": "A String", # [Output Only] A human-readable description of the warning code.
+        "code": "A String", # [Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.
+        "data": [ # [Output Only] Metadata about this warning in key: value format. For example:
+            # "data": [ { "key": "scope", "value": "zones/us-east1-d" }
+          {
+            "value": "A String", # [Output Only] A warning data value corresponding to the key.
+            "key": "A String", # [Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding).
+          },
+        ],
+      },
+    ],
+    "user": "A String", # [Output Only] User who requested the operation, for example: user@example.com.
+    "startTime": "A String", # [Output Only] The time that this operation was started by the server. This value is in RFC3339 text format.
+    "kind": "compute#operation", # [Output Only] Type of the resource. Always compute#operation for Operation resources.
+    "name": "A String", # [Output Only] Name of the resource.
+    "region": "A String", # [Output Only] The URL of the region where the operation resides. Only available when performing regional operations.
+    "error": { # [Output Only] If errors are generated during processing of the operation, this field will be populated.
+      "errors": [ # [Output Only] The array of errors encountered while processing this operation.
+        {
+          "message": "A String", # [Output Only] An optional, human-readable error message.
+          "code": "A String", # [Output Only] The error type identifier for this error.
+          "location": "A String", # [Output Only] Indicates the field in the request that caused the error. This property is optional.
+        },
+      ],
+    },
+    "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
+    "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
+  }</pre>
+</div>
+
+</body></html>
\ No newline at end of file
diff --git a/docs/dyn/compute_v1.regionInstanceGroupManagers.html b/docs/dyn/compute_v1.regionInstanceGroupManagers.html
new file mode 100644
index 0000000..a73e04c
--- /dev/null
+++ b/docs/dyn/compute_v1.regionInstanceGroupManagers.html
@@ -0,0 +1,854 @@
+<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="compute_v1.html">Compute Engine API</a> . <a href="compute_v1.regionInstanceGroupManagers.html">regionInstanceGroupManagers</a></h1>
+<h2>Instance Methods</h2>
+<p class="toc_element">
+  <code><a href="#abandonInstances">abandonInstances(project, region, instanceGroupManager, body)</a></code></p>
+<p class="firstline">Schedules a group action to remove the specified instances from the managed instance group. Abandoning an instance does not delete the instance, but it does remove the instance from any target pools that are applied by the managed instance group. This method reduces the targetSize of the managed instance group by the number of instances that you abandon. This operation is marked as DONE when the action is scheduled even if the instances have not yet been removed from the group. You must separately verify the status of the abandoning action with the listmanagedinstances method.</p>
+<p class="toc_element">
+  <code><a href="#delete">delete(project, region, instanceGroupManager)</a></code></p>
+<p class="firstline">Deletes the specified managed instance group and all of the instances in that group.</p>
+<p class="toc_element">
+  <code><a href="#deleteInstances">deleteInstances(project, region, instanceGroupManager, body)</a></code></p>
+<p class="firstline">Schedules a group action to delete the specified instances in the managed instance group. The instances are also removed from any target pools of which they were a member. This method reduces the targetSize of the managed instance group by the number of instances that you delete. This operation is marked as DONE when the action is scheduled even if the instances are still being deleted. You must separately verify the status of the deleting action with the listmanagedinstances method.</p>
+<p class="toc_element">
+  <code><a href="#get">get(project, region, instanceGroupManager)</a></code></p>
+<p class="firstline">Returns all of the details about the specified managed instance group.</p>
+<p class="toc_element">
+  <code><a href="#insert">insert(project, region, body)</a></code></p>
+<p class="firstline">Creates a managed instance group using the information that you specify in the request. After the group is created, it schedules an action to create instances in the group using the specified instance template. This operation is marked as DONE when the group is created even if the instances in the group have not yet been created. You must separately verify the status of the individual instances with the listmanagedinstances method.</p>
+<p class="toc_element">
+  <code><a href="#list">list(project, region, orderBy=None, maxResults=None, pageToken=None, filter=None)</a></code></p>
+<p class="firstline">Retrieves the list of managed instance groups that are contained within the specified region.</p>
+<p class="toc_element">
+  <code><a href="#listManagedInstances">listManagedInstances(project, region, instanceGroupManager, order_by=None, maxResults=None, pageToken=None, filter=None)</a></code></p>
+<p class="firstline">Lists the instances in the managed instance group and instances that are scheduled to be created. The list includes any current actions that the group has scheduled for its instances.</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="#recreateInstances">recreateInstances(project, region, instanceGroupManager, body)</a></code></p>
+<p class="firstline">Schedules a group action to recreate the specified instances in the managed instance group. The instances are deleted and recreated using the current instance template for the managed instance group. This operation is marked as DONE when the action is scheduled even if the instances have not yet been recreated. You must separately verify the status of the recreating action with the listmanagedinstances method.</p>
+<p class="toc_element">
+  <code><a href="#resize">resize(project, region, instanceGroupManager, size)</a></code></p>
+<p class="firstline">Changes the intended size for the managed instance group. If you increase the size, the group schedules actions to create new instances using the current instance template. If you decrease the size, the group schedules delete actions on one or more instances. The resize operation is marked DONE when the resize actions are scheduled even if the group has not yet added or deleted any instances. You must separately verify the status of the creating or deleting actions with the listmanagedinstances method.</p>
+<p class="toc_element">
+  <code><a href="#setInstanceTemplate">setInstanceTemplate(project, region, instanceGroupManager, body)</a></code></p>
+<p class="firstline">Sets the instance template to use when creating new instances or recreating instances in this group. Existing instances are not affected.</p>
+<p class="toc_element">
+  <code><a href="#setTargetPools">setTargetPools(project, region, instanceGroupManager, body)</a></code></p>
+<p class="firstline">Modifies the target pools to which all new instances in this group are assigned. Existing instances in the group are not affected.</p>
+<h3>Method Details</h3>
+<div class="method">
+    <code class="details" id="abandonInstances">abandonInstances(project, region, instanceGroupManager, body)</code>
+  <pre>Schedules a group action to remove the specified instances from the managed instance group. Abandoning an instance does not delete the instance, but it does remove the instance from any target pools that are applied by the managed instance group. This method reduces the targetSize of the managed instance group by the number of instances that you abandon. This operation is marked as DONE when the action is scheduled even if the instances have not yet been removed from the group. You must separately verify the status of the abandoning action with the listmanagedinstances method.
+
+Args:
+  project: string, Project ID for this request. (required)
+  region: string, Name of the region scoping this request. (required)
+  instanceGroupManager: string, Name of the managed instance group. (required)
+  body: object, The request body. (required)
+    The object takes the form of:
+
+{
+    "instances": [ # The names of one or more instances to abandon.
+      "A String",
+    ],
+  }
+
+
+Returns:
+  An object of the form:
+
+    { # An Operation resource, used to manage asynchronous API requests.
+    "targetId": "A String", # [Output Only] The unique target ID, which identifies a specific incarnation of the target resource.
+    "clientOperationId": "A String", # [Output Only] Reserved for future use.
+    "creationTimestamp": "A String", # [Output Only] Creation timestamp in RFC3339 text format.
+    "id": "A String", # [Output Only] The unique identifier for the resource. This identifier is defined by the server.
+    "zone": "A String", # [Output Only] The URL of the zone where the operation resides. Only available when performing per-zone operations.
+    "insertTime": "A String", # [Output Only] The time that this operation was requested. This value is in RFC3339 text format.
+    "operationType": "A String", # [Output Only] The type of operation, such as insert, update, or delete, and so on.
+    "httpErrorMessage": "A String", # [Output Only] If the operation fails, this field contains the HTTP error message that was returned, such as NOT FOUND.
+    "progress": 42, # [Output Only] An optional progress indicator that ranges from 0 to 100. There is no requirement that this be linear or support any granularity of operations. This should not be used to guess when the operation will be complete. This number should monotonically increase as the operation progresses.
+    "httpErrorStatusCode": 42, # [Output Only] If the operation fails, this field contains the HTTP error status code that was returned. For example, a 404 means the resource was not found.
+    "statusMessage": "A String", # [Output Only] An optional textual description of the current status of the operation.
+    "status": "A String", # [Output Only] The status of the operation, which can be one of the following: PENDING, RUNNING, or DONE.
+    "description": "A String", # [Output Only] A textual description of the operation, which is set when the operation is created.
+    "warnings": [ # [Output Only] If warning messages are generated during processing of the operation, this field will be populated.
+      {
+        "message": "A String", # [Output Only] A human-readable description of the warning code.
+        "code": "A String", # [Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.
+        "data": [ # [Output Only] Metadata about this warning in key: value format. For example:
+            # "data": [ { "key": "scope", "value": "zones/us-east1-d" }
+          {
+            "value": "A String", # [Output Only] A warning data value corresponding to the key.
+            "key": "A String", # [Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding).
+          },
+        ],
+      },
+    ],
+    "user": "A String", # [Output Only] User who requested the operation, for example: user@example.com.
+    "startTime": "A String", # [Output Only] The time that this operation was started by the server. This value is in RFC3339 text format.
+    "kind": "compute#operation", # [Output Only] Type of the resource. Always compute#operation for Operation resources.
+    "name": "A String", # [Output Only] Name of the resource.
+    "region": "A String", # [Output Only] The URL of the region where the operation resides. Only available when performing regional operations.
+    "error": { # [Output Only] If errors are generated during processing of the operation, this field will be populated.
+      "errors": [ # [Output Only] The array of errors encountered while processing this operation.
+        {
+          "message": "A String", # [Output Only] An optional, human-readable error message.
+          "code": "A String", # [Output Only] The error type identifier for this error.
+          "location": "A String", # [Output Only] Indicates the field in the request that caused the error. This property is optional.
+        },
+      ],
+    },
+    "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
+    "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
+  }</pre>
+</div>
+
+<div class="method">
+    <code class="details" id="delete">delete(project, region, instanceGroupManager)</code>
+  <pre>Deletes the specified managed instance group and all of the instances in that group.
+
+Args:
+  project: string, Project ID for this request. (required)
+  region: string, Name of the region scoping this request. (required)
+  instanceGroupManager: string, Name of the managed instance group to delete. (required)
+
+Returns:
+  An object of the form:
+
+    { # An Operation resource, used to manage asynchronous API requests.
+    "targetId": "A String", # [Output Only] The unique target ID, which identifies a specific incarnation of the target resource.
+    "clientOperationId": "A String", # [Output Only] Reserved for future use.
+    "creationTimestamp": "A String", # [Output Only] Creation timestamp in RFC3339 text format.
+    "id": "A String", # [Output Only] The unique identifier for the resource. This identifier is defined by the server.
+    "zone": "A String", # [Output Only] The URL of the zone where the operation resides. Only available when performing per-zone operations.
+    "insertTime": "A String", # [Output Only] The time that this operation was requested. This value is in RFC3339 text format.
+    "operationType": "A String", # [Output Only] The type of operation, such as insert, update, or delete, and so on.
+    "httpErrorMessage": "A String", # [Output Only] If the operation fails, this field contains the HTTP error message that was returned, such as NOT FOUND.
+    "progress": 42, # [Output Only] An optional progress indicator that ranges from 0 to 100. There is no requirement that this be linear or support any granularity of operations. This should not be used to guess when the operation will be complete. This number should monotonically increase as the operation progresses.
+    "httpErrorStatusCode": 42, # [Output Only] If the operation fails, this field contains the HTTP error status code that was returned. For example, a 404 means the resource was not found.
+    "statusMessage": "A String", # [Output Only] An optional textual description of the current status of the operation.
+    "status": "A String", # [Output Only] The status of the operation, which can be one of the following: PENDING, RUNNING, or DONE.
+    "description": "A String", # [Output Only] A textual description of the operation, which is set when the operation is created.
+    "warnings": [ # [Output Only] If warning messages are generated during processing of the operation, this field will be populated.
+      {
+        "message": "A String", # [Output Only] A human-readable description of the warning code.
+        "code": "A String", # [Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.
+        "data": [ # [Output Only] Metadata about this warning in key: value format. For example:
+            # "data": [ { "key": "scope", "value": "zones/us-east1-d" }
+          {
+            "value": "A String", # [Output Only] A warning data value corresponding to the key.
+            "key": "A String", # [Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding).
+          },
+        ],
+      },
+    ],
+    "user": "A String", # [Output Only] User who requested the operation, for example: user@example.com.
+    "startTime": "A String", # [Output Only] The time that this operation was started by the server. This value is in RFC3339 text format.
+    "kind": "compute#operation", # [Output Only] Type of the resource. Always compute#operation for Operation resources.
+    "name": "A String", # [Output Only] Name of the resource.
+    "region": "A String", # [Output Only] The URL of the region where the operation resides. Only available when performing regional operations.
+    "error": { # [Output Only] If errors are generated during processing of the operation, this field will be populated.
+      "errors": [ # [Output Only] The array of errors encountered while processing this operation.
+        {
+          "message": "A String", # [Output Only] An optional, human-readable error message.
+          "code": "A String", # [Output Only] The error type identifier for this error.
+          "location": "A String", # [Output Only] Indicates the field in the request that caused the error. This property is optional.
+        },
+      ],
+    },
+    "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
+    "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
+  }</pre>
+</div>
+
+<div class="method">
+    <code class="details" id="deleteInstances">deleteInstances(project, region, instanceGroupManager, body)</code>
+  <pre>Schedules a group action to delete the specified instances in the managed instance group. The instances are also removed from any target pools of which they were a member. This method reduces the targetSize of the managed instance group by the number of instances that you delete. This operation is marked as DONE when the action is scheduled even if the instances are still being deleted. You must separately verify the status of the deleting action with the listmanagedinstances method.
+
+Args:
+  project: string, Project ID for this request. (required)
+  region: string, Name of the region scoping this request. (required)
+  instanceGroupManager: string, Name of the managed instance group. (required)
+  body: object, The request body. (required)
+    The object takes the form of:
+
+{
+    "instances": [ # The names of one or more instances to delete.
+      "A String",
+    ],
+  }
+
+
+Returns:
+  An object of the form:
+
+    { # An Operation resource, used to manage asynchronous API requests.
+    "targetId": "A String", # [Output Only] The unique target ID, which identifies a specific incarnation of the target resource.
+    "clientOperationId": "A String", # [Output Only] Reserved for future use.
+    "creationTimestamp": "A String", # [Output Only] Creation timestamp in RFC3339 text format.
+    "id": "A String", # [Output Only] The unique identifier for the resource. This identifier is defined by the server.
+    "zone": "A String", # [Output Only] The URL of the zone where the operation resides. Only available when performing per-zone operations.
+    "insertTime": "A String", # [Output Only] The time that this operation was requested. This value is in RFC3339 text format.
+    "operationType": "A String", # [Output Only] The type of operation, such as insert, update, or delete, and so on.
+    "httpErrorMessage": "A String", # [Output Only] If the operation fails, this field contains the HTTP error message that was returned, such as NOT FOUND.
+    "progress": 42, # [Output Only] An optional progress indicator that ranges from 0 to 100. There is no requirement that this be linear or support any granularity of operations. This should not be used to guess when the operation will be complete. This number should monotonically increase as the operation progresses.
+    "httpErrorStatusCode": 42, # [Output Only] If the operation fails, this field contains the HTTP error status code that was returned. For example, a 404 means the resource was not found.
+    "statusMessage": "A String", # [Output Only] An optional textual description of the current status of the operation.
+    "status": "A String", # [Output Only] The status of the operation, which can be one of the following: PENDING, RUNNING, or DONE.
+    "description": "A String", # [Output Only] A textual description of the operation, which is set when the operation is created.
+    "warnings": [ # [Output Only] If warning messages are generated during processing of the operation, this field will be populated.
+      {
+        "message": "A String", # [Output Only] A human-readable description of the warning code.
+        "code": "A String", # [Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.
+        "data": [ # [Output Only] Metadata about this warning in key: value format. For example:
+            # "data": [ { "key": "scope", "value": "zones/us-east1-d" }
+          {
+            "value": "A String", # [Output Only] A warning data value corresponding to the key.
+            "key": "A String", # [Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding).
+          },
+        ],
+      },
+    ],
+    "user": "A String", # [Output Only] User who requested the operation, for example: user@example.com.
+    "startTime": "A String", # [Output Only] The time that this operation was started by the server. This value is in RFC3339 text format.
+    "kind": "compute#operation", # [Output Only] Type of the resource. Always compute#operation for Operation resources.
+    "name": "A String", # [Output Only] Name of the resource.
+    "region": "A String", # [Output Only] The URL of the region where the operation resides. Only available when performing regional operations.
+    "error": { # [Output Only] If errors are generated during processing of the operation, this field will be populated.
+      "errors": [ # [Output Only] The array of errors encountered while processing this operation.
+        {
+          "message": "A String", # [Output Only] An optional, human-readable error message.
+          "code": "A String", # [Output Only] The error type identifier for this error.
+          "location": "A String", # [Output Only] Indicates the field in the request that caused the error. This property is optional.
+        },
+      ],
+    },
+    "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
+    "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
+  }</pre>
+</div>
+
+<div class="method">
+    <code class="details" id="get">get(project, region, instanceGroupManager)</code>
+  <pre>Returns all of the details about the specified managed instance group.
+
+Args:
+  project: string, Project ID for this request. (required)
+  region: string, Name of the region scoping this request. (required)
+  instanceGroupManager: string, Name of the managed instance group to return. (required)
+
+Returns:
+  An object of the form:
+
+    { # An Instance Group Manager resource.
+      "currentActions": { # [Output Only] The list of instance actions and the number of instances in this managed instance group that are scheduled for each of those actions.
+        "none": 42, # [Output Only] The number of instances in the managed instance group that are running and have no scheduled actions.
+        "recreating": 42, # [Output Only] The number of instances in the managed instance group that are scheduled to be recreated or are currently being being recreated. Recreating an instance deletes the existing root persistent disk and creates a new disk from the image that is defined in the instance template.
+        "creating": 42, # [Output Only] The number of instances in the managed instance group that are scheduled to be created or are currently being created. If the group fails to create any of these instances, it tries again until it creates the instance successfully.
+            #
+            # If you have disabled creation retries, this field will not be populated; instead, the creatingWithoutRetries field will be populated.
+        "restarting": 42, # [Output Only] The number of instances in the managed instance group that are scheduled to be restarted or are currently being restarted.
+        "abandoning": 42, # [Output Only] The total number of instances in the managed instance group that are scheduled to be abandoned. Abandoning an instance removes it from the managed instance group without deleting it.
+        "deleting": 42, # [Output Only] The number of instances in the managed instance group that are scheduled to be deleted or are currently being deleted.
+        "creatingWithoutRetries": 42, # [Output Only] The number of instances that the managed instance group will attempt to create. The group attempts to create each instance only once. If the group fails to create any of these instances, it decreases the group's targetSize value accordingly.
+        "refreshing": 42, # [Output Only] The number of instances in the managed instance group that are being reconfigured with properties that do not require a restart or a recreate action. For example, setting or removing target pools for the instance.
+      },
+      "description": "A String", # An optional description of this resource. Provide this property when you create the resource.
+      "zone": "A String", # [Output Only] The URL of the zone where the managed instance group is located (for zonal resources).
+      "targetSize": 42, # The target number of running instances for this managed instance group. Deleting or abandoning instances reduces this number. Resizing the group changes this number.
+      "region": "A String", # [Output Only] The URL of the region where the managed instance group resides (for regional resources).
+      "instanceGroup": "A String", # [Output Only] The URL of the Instance Group resource.
+      "kind": "compute#instanceGroupManager", # [Output Only] The resource type, which is always compute#instanceGroupManager for managed instance groups.
+      "targetPools": [ # The URLs for all TargetPool resources to which instances in the instanceGroup field are added. The target pools automatically apply to all of the instances in the managed instance group.
+        "A String",
+      ],
+      "baseInstanceName": "A String", # The base instance name to use for instances in this group. The value must be 1-58 characters long. Instances are named by appending a hyphen and a random four-character string to the base instance name. The base instance name must comply with RFC1035.
+      "fingerprint": "A String", # [Output Only] The fingerprint of the resource data. You can use this optional field for optimistic locking when you update the resource.
+      "instanceTemplate": "A String", # The URL of the instance template that is specified for this managed instance group. The group uses this template to create all new instances in the managed instance group.
+      "namedPorts": [ # Named ports configured for the Instance Groups complementary to this Instance Group Manager.
+        { # The named port. For example: .
+          "name": "A String", # The name for this named port. The name must be 1-63 characters long, and comply with RFC1035.
+          "port": 42, # The port number, which can be a value between 1 and 65535.
+        },
+      ],
+      "creationTimestamp": "A String", # [Output Only] The creation timestamp for this managed instance group in RFC3339 text format.
+      "id": "A String", # [Output Only] A unique identifier for this resource type. The server generates this identifier.
+      "selfLink": "A String", # [Output Only] The URL for this managed instance group. The server defines this URL.
+      "name": "A String", # The name of the managed instance group. The name must be 1-63 characters long, and comply with RFC1035.
+    }</pre>
+</div>
+
+<div class="method">
+    <code class="details" id="insert">insert(project, region, body)</code>
+  <pre>Creates a managed instance group using the information that you specify in the request. After the group is created, it schedules an action to create instances in the group using the specified instance template. This operation is marked as DONE when the group is created even if the instances in the group have not yet been created. You must separately verify the status of the individual instances with the listmanagedinstances method.
+
+Args:
+  project: string, Project ID for this request. (required)
+  region: string, Name of the region scoping this request. (required)
+  body: object, The request body. (required)
+    The object takes the form of:
+
+{ # An Instance Group Manager resource.
+    "currentActions": { # [Output Only] The list of instance actions and the number of instances in this managed instance group that are scheduled for each of those actions.
+      "none": 42, # [Output Only] The number of instances in the managed instance group that are running and have no scheduled actions.
+      "recreating": 42, # [Output Only] The number of instances in the managed instance group that are scheduled to be recreated or are currently being being recreated. Recreating an instance deletes the existing root persistent disk and creates a new disk from the image that is defined in the instance template.
+      "creating": 42, # [Output Only] The number of instances in the managed instance group that are scheduled to be created or are currently being created. If the group fails to create any of these instances, it tries again until it creates the instance successfully.
+          #
+          # If you have disabled creation retries, this field will not be populated; instead, the creatingWithoutRetries field will be populated.
+      "restarting": 42, # [Output Only] The number of instances in the managed instance group that are scheduled to be restarted or are currently being restarted.
+      "abandoning": 42, # [Output Only] The total number of instances in the managed instance group that are scheduled to be abandoned. Abandoning an instance removes it from the managed instance group without deleting it.
+      "deleting": 42, # [Output Only] The number of instances in the managed instance group that are scheduled to be deleted or are currently being deleted.
+      "creatingWithoutRetries": 42, # [Output Only] The number of instances that the managed instance group will attempt to create. The group attempts to create each instance only once. If the group fails to create any of these instances, it decreases the group's targetSize value accordingly.
+      "refreshing": 42, # [Output Only] The number of instances in the managed instance group that are being reconfigured with properties that do not require a restart or a recreate action. For example, setting or removing target pools for the instance.
+    },
+    "description": "A String", # An optional description of this resource. Provide this property when you create the resource.
+    "zone": "A String", # [Output Only] The URL of the zone where the managed instance group is located (for zonal resources).
+    "targetSize": 42, # The target number of running instances for this managed instance group. Deleting or abandoning instances reduces this number. Resizing the group changes this number.
+    "region": "A String", # [Output Only] The URL of the region where the managed instance group resides (for regional resources).
+    "instanceGroup": "A String", # [Output Only] The URL of the Instance Group resource.
+    "kind": "compute#instanceGroupManager", # [Output Only] The resource type, which is always compute#instanceGroupManager for managed instance groups.
+    "targetPools": [ # The URLs for all TargetPool resources to which instances in the instanceGroup field are added. The target pools automatically apply to all of the instances in the managed instance group.
+      "A String",
+    ],
+    "baseInstanceName": "A String", # The base instance name to use for instances in this group. The value must be 1-58 characters long. Instances are named by appending a hyphen and a random four-character string to the base instance name. The base instance name must comply with RFC1035.
+    "fingerprint": "A String", # [Output Only] The fingerprint of the resource data. You can use this optional field for optimistic locking when you update the resource.
+    "instanceTemplate": "A String", # The URL of the instance template that is specified for this managed instance group. The group uses this template to create all new instances in the managed instance group.
+    "namedPorts": [ # Named ports configured for the Instance Groups complementary to this Instance Group Manager.
+      { # The named port. For example: .
+        "name": "A String", # The name for this named port. The name must be 1-63 characters long, and comply with RFC1035.
+        "port": 42, # The port number, which can be a value between 1 and 65535.
+      },
+    ],
+    "creationTimestamp": "A String", # [Output Only] The creation timestamp for this managed instance group in RFC3339 text format.
+    "id": "A String", # [Output Only] A unique identifier for this resource type. The server generates this identifier.
+    "selfLink": "A String", # [Output Only] The URL for this managed instance group. The server defines this URL.
+    "name": "A String", # The name of the managed instance group. The name must be 1-63 characters long, and comply with RFC1035.
+  }
+
+
+Returns:
+  An object of the form:
+
+    { # An Operation resource, used to manage asynchronous API requests.
+    "targetId": "A String", # [Output Only] The unique target ID, which identifies a specific incarnation of the target resource.
+    "clientOperationId": "A String", # [Output Only] Reserved for future use.
+    "creationTimestamp": "A String", # [Output Only] Creation timestamp in RFC3339 text format.
+    "id": "A String", # [Output Only] The unique identifier for the resource. This identifier is defined by the server.
+    "zone": "A String", # [Output Only] The URL of the zone where the operation resides. Only available when performing per-zone operations.
+    "insertTime": "A String", # [Output Only] The time that this operation was requested. This value is in RFC3339 text format.
+    "operationType": "A String", # [Output Only] The type of operation, such as insert, update, or delete, and so on.
+    "httpErrorMessage": "A String", # [Output Only] If the operation fails, this field contains the HTTP error message that was returned, such as NOT FOUND.
+    "progress": 42, # [Output Only] An optional progress indicator that ranges from 0 to 100. There is no requirement that this be linear or support any granularity of operations. This should not be used to guess when the operation will be complete. This number should monotonically increase as the operation progresses.
+    "httpErrorStatusCode": 42, # [Output Only] If the operation fails, this field contains the HTTP error status code that was returned. For example, a 404 means the resource was not found.
+    "statusMessage": "A String", # [Output Only] An optional textual description of the current status of the operation.
+    "status": "A String", # [Output Only] The status of the operation, which can be one of the following: PENDING, RUNNING, or DONE.
+    "description": "A String", # [Output Only] A textual description of the operation, which is set when the operation is created.
+    "warnings": [ # [Output Only] If warning messages are generated during processing of the operation, this field will be populated.
+      {
+        "message": "A String", # [Output Only] A human-readable description of the warning code.
+        "code": "A String", # [Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.
+        "data": [ # [Output Only] Metadata about this warning in key: value format. For example:
+            # "data": [ { "key": "scope", "value": "zones/us-east1-d" }
+          {
+            "value": "A String", # [Output Only] A warning data value corresponding to the key.
+            "key": "A String", # [Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding).
+          },
+        ],
+      },
+    ],
+    "user": "A String", # [Output Only] User who requested the operation, for example: user@example.com.
+    "startTime": "A String", # [Output Only] The time that this operation was started by the server. This value is in RFC3339 text format.
+    "kind": "compute#operation", # [Output Only] Type of the resource. Always compute#operation for Operation resources.
+    "name": "A String", # [Output Only] Name of the resource.
+    "region": "A String", # [Output Only] The URL of the region where the operation resides. Only available when performing regional operations.
+    "error": { # [Output Only] If errors are generated during processing of the operation, this field will be populated.
+      "errors": [ # [Output Only] The array of errors encountered while processing this operation.
+        {
+          "message": "A String", # [Output Only] An optional, human-readable error message.
+          "code": "A String", # [Output Only] The error type identifier for this error.
+          "location": "A String", # [Output Only] Indicates the field in the request that caused the error. This property is optional.
+        },
+      ],
+    },
+    "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
+    "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
+  }</pre>
+</div>
+
+<div class="method">
+    <code class="details" id="list">list(project, region, orderBy=None, maxResults=None, pageToken=None, filter=None)</code>
+  <pre>Retrieves the list of managed instance groups that are contained within the specified region.
+
+Args:
+  project: string, Project ID for this request. (required)
+  region: string, Name of the region scoping this request. (required)
+  orderBy: string, Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.
+
+You can also sort results in descending order based on the creation timestamp using orderBy="creationTimestamp desc". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.
+
+Currently, only sorting by name or creationTimestamp desc is supported.
+  maxResults: integer, The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests.
+  pageToken: string, Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.
+  filter: string, Sets a filter expression for filtering listed resources, in the form filter={expression}. Your {expression} must be in the format: field_name comparison_string literal_string.
+
+The field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.
+
+For example, to filter for instances that do not have a name of example-instance, you would use filter=name ne example-instance.
+
+You can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.
+
+To filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.
+
+Returns:
+  An object of the form:
+
+    { # Contains a list of managed instance groups.
+    "nextPageToken": "A String", # [Output only] A token used to continue a truncated list request.
+    "items": [ # A list of managed instance groups.
+      { # An Instance Group Manager resource.
+          "currentActions": { # [Output Only] The list of instance actions and the number of instances in this managed instance group that are scheduled for each of those actions.
+            "none": 42, # [Output Only] The number of instances in the managed instance group that are running and have no scheduled actions.
+            "recreating": 42, # [Output Only] The number of instances in the managed instance group that are scheduled to be recreated or are currently being being recreated. Recreating an instance deletes the existing root persistent disk and creates a new disk from the image that is defined in the instance template.
+            "creating": 42, # [Output Only] The number of instances in the managed instance group that are scheduled to be created or are currently being created. If the group fails to create any of these instances, it tries again until it creates the instance successfully.
+                #
+                # If you have disabled creation retries, this field will not be populated; instead, the creatingWithoutRetries field will be populated.
+            "restarting": 42, # [Output Only] The number of instances in the managed instance group that are scheduled to be restarted or are currently being restarted.
+            "abandoning": 42, # [Output Only] The total number of instances in the managed instance group that are scheduled to be abandoned. Abandoning an instance removes it from the managed instance group without deleting it.
+            "deleting": 42, # [Output Only] The number of instances in the managed instance group that are scheduled to be deleted or are currently being deleted.
+            "creatingWithoutRetries": 42, # [Output Only] The number of instances that the managed instance group will attempt to create. The group attempts to create each instance only once. If the group fails to create any of these instances, it decreases the group's targetSize value accordingly.
+            "refreshing": 42, # [Output Only] The number of instances in the managed instance group that are being reconfigured with properties that do not require a restart or a recreate action. For example, setting or removing target pools for the instance.
+          },
+          "description": "A String", # An optional description of this resource. Provide this property when you create the resource.
+          "zone": "A String", # [Output Only] The URL of the zone where the managed instance group is located (for zonal resources).
+          "targetSize": 42, # The target number of running instances for this managed instance group. Deleting or abandoning instances reduces this number. Resizing the group changes this number.
+          "region": "A String", # [Output Only] The URL of the region where the managed instance group resides (for regional resources).
+          "instanceGroup": "A String", # [Output Only] The URL of the Instance Group resource.
+          "kind": "compute#instanceGroupManager", # [Output Only] The resource type, which is always compute#instanceGroupManager for managed instance groups.
+          "targetPools": [ # The URLs for all TargetPool resources to which instances in the instanceGroup field are added. The target pools automatically apply to all of the instances in the managed instance group.
+            "A String",
+          ],
+          "baseInstanceName": "A String", # The base instance name to use for instances in this group. The value must be 1-58 characters long. Instances are named by appending a hyphen and a random four-character string to the base instance name. The base instance name must comply with RFC1035.
+          "fingerprint": "A String", # [Output Only] The fingerprint of the resource data. You can use this optional field for optimistic locking when you update the resource.
+          "instanceTemplate": "A String", # The URL of the instance template that is specified for this managed instance group. The group uses this template to create all new instances in the managed instance group.
+          "namedPorts": [ # Named ports configured for the Instance Groups complementary to this Instance Group Manager.
+            { # The named port. For example: .
+              "name": "A String", # The name for this named port. The name must be 1-63 characters long, and comply with RFC1035.
+              "port": 42, # The port number, which can be a value between 1 and 65535.
+            },
+          ],
+          "creationTimestamp": "A String", # [Output Only] The creation timestamp for this managed instance group in RFC3339 text format.
+          "id": "A String", # [Output Only] A unique identifier for this resource type. The server generates this identifier.
+          "selfLink": "A String", # [Output Only] The URL for this managed instance group. The server defines this URL.
+          "name": "A String", # The name of the managed instance group. The name must be 1-63 characters long, and comply with RFC1035.
+        },
+    ],
+    "kind": "compute#regionInstanceGroupManagerList", # [Output Only] The resource type, which is always compute#instanceGroupManagerList for a list of managed instance groups that exist in th regional scope.
+    "id": "A String", # [Output Only] The unique identifier for the resource. This identifier is defined by the server.
+    "selfLink": "A String", # [Output only] The URL for this resource type. The server generates this URL.
+  }</pre>
+</div>
+
+<div class="method">
+    <code class="details" id="listManagedInstances">listManagedInstances(project, region, instanceGroupManager, order_by=None, maxResults=None, pageToken=None, filter=None)</code>
+  <pre>Lists the instances in the managed instance group and instances that are scheduled to be created. The list includes any current actions that the group has scheduled for its instances.
+
+Args:
+  project: string, Project ID for this request. (required)
+  region: string, Name of the region scoping this request. (required)
+  instanceGroupManager: string, The name of the managed instance group. (required)
+  order_by: string, A parameter
+  maxResults: integer, A parameter
+  pageToken: string, A parameter
+  filter: string, A parameter
+
+Returns:
+  An object of the form:
+
+    {
+    "managedInstances": [ # List of managed instances.
+      {
+        "currentAction": "A String", # [Output Only] The current action that the managed instance group has scheduled for the instance. Possible values:
+            # - NONE The instance is running, and the managed instance group does not have any scheduled actions for this instance.
+            # - CREATING The managed instance group is creating this instance. If the group fails to create this instance, it will try again until it is successful.
+            # - CREATING_WITHOUT_RETRIES The managed instance group is attempting to create this instance only once. If the group fails to create this instance, it does not try again and the group's targetSize value is decreased instead.
+            # - RECREATING The managed instance group is recreating this instance.
+            # - DELETING The managed instance group is permanently deleting this instance.
+            # - ABANDONING The managed instance group is abandoning this instance. The instance will be removed from the instance group and from any target pools that are associated with this group.
+            # - RESTARTING The managed instance group is restarting the instance.
+            # - REFRESHING The managed instance group is applying configuration changes to the instance without stopping it. For example, the group can update the target pool list for an instance without stopping that instance.
+        "instance": "A String", # [Output Only] The URL of the instance. The URL can exist even if the instance has not yet been created.
+        "lastAttempt": { # [Output Only] Information about the last attempt to create or delete the instance.
+          "errors": { # [Output Only] Encountered errors during the last attempt to create or delete the instance.
+            "errors": [ # [Output Only] The array of errors encountered while processing this operation.
+              {
+                "message": "A String", # [Output Only] An optional, human-readable error message.
+                "code": "A String", # [Output Only] The error type identifier for this error.
+                "location": "A String", # [Output Only] Indicates the field in the request that caused the error. This property is optional.
+              },
+            ],
+          },
+        },
+        "id": "A String", # [Output only] The unique identifier for this resource. This field is empty when instance does not exist.
+        "instanceStatus": "A String", # [Output Only] The status of the instance. This field is empty when the instance does not exist.
+      },
+    ],
+  }</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="recreateInstances">recreateInstances(project, region, instanceGroupManager, body)</code>
+  <pre>Schedules a group action to recreate the specified instances in the managed instance group. The instances are deleted and recreated using the current instance template for the managed instance group. This operation is marked as DONE when the action is scheduled even if the instances have not yet been recreated. You must separately verify the status of the recreating action with the listmanagedinstances method.
+
+Args:
+  project: string, Project ID for this request. (required)
+  region: string, Name of the region scoping this request. (required)
+  instanceGroupManager: string, Name of the managed instance group. (required)
+  body: object, The request body. (required)
+    The object takes the form of:
+
+{
+    "instances": [ # The URL for one or more instances to recreate.
+      "A String",
+    ],
+  }
+
+
+Returns:
+  An object of the form:
+
+    { # An Operation resource, used to manage asynchronous API requests.
+    "targetId": "A String", # [Output Only] The unique target ID, which identifies a specific incarnation of the target resource.
+    "clientOperationId": "A String", # [Output Only] Reserved for future use.
+    "creationTimestamp": "A String", # [Output Only] Creation timestamp in RFC3339 text format.
+    "id": "A String", # [Output Only] The unique identifier for the resource. This identifier is defined by the server.
+    "zone": "A String", # [Output Only] The URL of the zone where the operation resides. Only available when performing per-zone operations.
+    "insertTime": "A String", # [Output Only] The time that this operation was requested. This value is in RFC3339 text format.
+    "operationType": "A String", # [Output Only] The type of operation, such as insert, update, or delete, and so on.
+    "httpErrorMessage": "A String", # [Output Only] If the operation fails, this field contains the HTTP error message that was returned, such as NOT FOUND.
+    "progress": 42, # [Output Only] An optional progress indicator that ranges from 0 to 100. There is no requirement that this be linear or support any granularity of operations. This should not be used to guess when the operation will be complete. This number should monotonically increase as the operation progresses.
+    "httpErrorStatusCode": 42, # [Output Only] If the operation fails, this field contains the HTTP error status code that was returned. For example, a 404 means the resource was not found.
+    "statusMessage": "A String", # [Output Only] An optional textual description of the current status of the operation.
+    "status": "A String", # [Output Only] The status of the operation, which can be one of the following: PENDING, RUNNING, or DONE.
+    "description": "A String", # [Output Only] A textual description of the operation, which is set when the operation is created.
+    "warnings": [ # [Output Only] If warning messages are generated during processing of the operation, this field will be populated.
+      {
+        "message": "A String", # [Output Only] A human-readable description of the warning code.
+        "code": "A String", # [Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.
+        "data": [ # [Output Only] Metadata about this warning in key: value format. For example:
+            # "data": [ { "key": "scope", "value": "zones/us-east1-d" }
+          {
+            "value": "A String", # [Output Only] A warning data value corresponding to the key.
+            "key": "A String", # [Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding).
+          },
+        ],
+      },
+    ],
+    "user": "A String", # [Output Only] User who requested the operation, for example: user@example.com.
+    "startTime": "A String", # [Output Only] The time that this operation was started by the server. This value is in RFC3339 text format.
+    "kind": "compute#operation", # [Output Only] Type of the resource. Always compute#operation for Operation resources.
+    "name": "A String", # [Output Only] Name of the resource.
+    "region": "A String", # [Output Only] The URL of the region where the operation resides. Only available when performing regional operations.
+    "error": { # [Output Only] If errors are generated during processing of the operation, this field will be populated.
+      "errors": [ # [Output Only] The array of errors encountered while processing this operation.
+        {
+          "message": "A String", # [Output Only] An optional, human-readable error message.
+          "code": "A String", # [Output Only] The error type identifier for this error.
+          "location": "A String", # [Output Only] Indicates the field in the request that caused the error. This property is optional.
+        },
+      ],
+    },
+    "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
+    "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
+  }</pre>
+</div>
+
+<div class="method">
+    <code class="details" id="resize">resize(project, region, instanceGroupManager, size)</code>
+  <pre>Changes the intended size for the managed instance group. If you increase the size, the group schedules actions to create new instances using the current instance template. If you decrease the size, the group schedules delete actions on one or more instances. The resize operation is marked DONE when the resize actions are scheduled even if the group has not yet added or deleted any instances. You must separately verify the status of the creating or deleting actions with the listmanagedinstances method.
+
+Args:
+  project: string, Project ID for this request. (required)
+  region: string, Name of the region scoping this request. (required)
+  instanceGroupManager: string, Name of the managed instance group. (required)
+  size: integer, Number of instances that should exist in this instance group manager. (required)
+
+Returns:
+  An object of the form:
+
+    { # An Operation resource, used to manage asynchronous API requests.
+    "targetId": "A String", # [Output Only] The unique target ID, which identifies a specific incarnation of the target resource.
+    "clientOperationId": "A String", # [Output Only] Reserved for future use.
+    "creationTimestamp": "A String", # [Output Only] Creation timestamp in RFC3339 text format.
+    "id": "A String", # [Output Only] The unique identifier for the resource. This identifier is defined by the server.
+    "zone": "A String", # [Output Only] The URL of the zone where the operation resides. Only available when performing per-zone operations.
+    "insertTime": "A String", # [Output Only] The time that this operation was requested. This value is in RFC3339 text format.
+    "operationType": "A String", # [Output Only] The type of operation, such as insert, update, or delete, and so on.
+    "httpErrorMessage": "A String", # [Output Only] If the operation fails, this field contains the HTTP error message that was returned, such as NOT FOUND.
+    "progress": 42, # [Output Only] An optional progress indicator that ranges from 0 to 100. There is no requirement that this be linear or support any granularity of operations. This should not be used to guess when the operation will be complete. This number should monotonically increase as the operation progresses.
+    "httpErrorStatusCode": 42, # [Output Only] If the operation fails, this field contains the HTTP error status code that was returned. For example, a 404 means the resource was not found.
+    "statusMessage": "A String", # [Output Only] An optional textual description of the current status of the operation.
+    "status": "A String", # [Output Only] The status of the operation, which can be one of the following: PENDING, RUNNING, or DONE.
+    "description": "A String", # [Output Only] A textual description of the operation, which is set when the operation is created.
+    "warnings": [ # [Output Only] If warning messages are generated during processing of the operation, this field will be populated.
+      {
+        "message": "A String", # [Output Only] A human-readable description of the warning code.
+        "code": "A String", # [Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.
+        "data": [ # [Output Only] Metadata about this warning in key: value format. For example:
+            # "data": [ { "key": "scope", "value": "zones/us-east1-d" }
+          {
+            "value": "A String", # [Output Only] A warning data value corresponding to the key.
+            "key": "A String", # [Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding).
+          },
+        ],
+      },
+    ],
+    "user": "A String", # [Output Only] User who requested the operation, for example: user@example.com.
+    "startTime": "A String", # [Output Only] The time that this operation was started by the server. This value is in RFC3339 text format.
+    "kind": "compute#operation", # [Output Only] Type of the resource. Always compute#operation for Operation resources.
+    "name": "A String", # [Output Only] Name of the resource.
+    "region": "A String", # [Output Only] The URL of the region where the operation resides. Only available when performing regional operations.
+    "error": { # [Output Only] If errors are generated during processing of the operation, this field will be populated.
+      "errors": [ # [Output Only] The array of errors encountered while processing this operation.
+        {
+          "message": "A String", # [Output Only] An optional, human-readable error message.
+          "code": "A String", # [Output Only] The error type identifier for this error.
+          "location": "A String", # [Output Only] Indicates the field in the request that caused the error. This property is optional.
+        },
+      ],
+    },
+    "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
+    "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
+  }</pre>
+</div>
+
+<div class="method">
+    <code class="details" id="setInstanceTemplate">setInstanceTemplate(project, region, instanceGroupManager, body)</code>
+  <pre>Sets the instance template to use when creating new instances or recreating instances in this group. Existing instances are not affected.
+
+Args:
+  project: string, Project ID for this request. (required)
+  region: string, Name of the region scoping this request. (required)
+  instanceGroupManager: string, The name of the managed instance group. (required)
+  body: object, The request body. (required)
+    The object takes the form of:
+
+{
+    "instanceTemplate": "A String", # URL of the InstanceTemplate resource from which all new instances will be created.
+  }
+
+
+Returns:
+  An object of the form:
+
+    { # An Operation resource, used to manage asynchronous API requests.
+    "targetId": "A String", # [Output Only] The unique target ID, which identifies a specific incarnation of the target resource.
+    "clientOperationId": "A String", # [Output Only] Reserved for future use.
+    "creationTimestamp": "A String", # [Output Only] Creation timestamp in RFC3339 text format.
+    "id": "A String", # [Output Only] The unique identifier for the resource. This identifier is defined by the server.
+    "zone": "A String", # [Output Only] The URL of the zone where the operation resides. Only available when performing per-zone operations.
+    "insertTime": "A String", # [Output Only] The time that this operation was requested. This value is in RFC3339 text format.
+    "operationType": "A String", # [Output Only] The type of operation, such as insert, update, or delete, and so on.
+    "httpErrorMessage": "A String", # [Output Only] If the operation fails, this field contains the HTTP error message that was returned, such as NOT FOUND.
+    "progress": 42, # [Output Only] An optional progress indicator that ranges from 0 to 100. There is no requirement that this be linear or support any granularity of operations. This should not be used to guess when the operation will be complete. This number should monotonically increase as the operation progresses.
+    "httpErrorStatusCode": 42, # [Output Only] If the operation fails, this field contains the HTTP error status code that was returned. For example, a 404 means the resource was not found.
+    "statusMessage": "A String", # [Output Only] An optional textual description of the current status of the operation.
+    "status": "A String", # [Output Only] The status of the operation, which can be one of the following: PENDING, RUNNING, or DONE.
+    "description": "A String", # [Output Only] A textual description of the operation, which is set when the operation is created.
+    "warnings": [ # [Output Only] If warning messages are generated during processing of the operation, this field will be populated.
+      {
+        "message": "A String", # [Output Only] A human-readable description of the warning code.
+        "code": "A String", # [Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.
+        "data": [ # [Output Only] Metadata about this warning in key: value format. For example:
+            # "data": [ { "key": "scope", "value": "zones/us-east1-d" }
+          {
+            "value": "A String", # [Output Only] A warning data value corresponding to the key.
+            "key": "A String", # [Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding).
+          },
+        ],
+      },
+    ],
+    "user": "A String", # [Output Only] User who requested the operation, for example: user@example.com.
+    "startTime": "A String", # [Output Only] The time that this operation was started by the server. This value is in RFC3339 text format.
+    "kind": "compute#operation", # [Output Only] Type of the resource. Always compute#operation for Operation resources.
+    "name": "A String", # [Output Only] Name of the resource.
+    "region": "A String", # [Output Only] The URL of the region where the operation resides. Only available when performing regional operations.
+    "error": { # [Output Only] If errors are generated during processing of the operation, this field will be populated.
+      "errors": [ # [Output Only] The array of errors encountered while processing this operation.
+        {
+          "message": "A String", # [Output Only] An optional, human-readable error message.
+          "code": "A String", # [Output Only] The error type identifier for this error.
+          "location": "A String", # [Output Only] Indicates the field in the request that caused the error. This property is optional.
+        },
+      ],
+    },
+    "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
+    "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
+  }</pre>
+</div>
+
+<div class="method">
+    <code class="details" id="setTargetPools">setTargetPools(project, region, instanceGroupManager, body)</code>
+  <pre>Modifies the target pools to which all new instances in this group are assigned. Existing instances in the group are not affected.
+
+Args:
+  project: string, Project ID for this request. (required)
+  region: string, Name of the region scoping this request. (required)
+  instanceGroupManager: string, Name of the managed instance group. (required)
+  body: object, The request body. (required)
+    The object takes the form of:
+
+{
+    "targetPools": [ # The URL of all TargetPool resources to which instances in the instanceGroup field are added. The target pools automatically apply to all of the instances in the managed instance group.
+      "A String",
+    ],
+    "fingerprint": "A String", # Fingerprint of the target pools information, which is a hash of the contents. This field is used for optimistic locking when you update the target pool entries. This field is optional.
+  }
+
+
+Returns:
+  An object of the form:
+
+    { # An Operation resource, used to manage asynchronous API requests.
+    "targetId": "A String", # [Output Only] The unique target ID, which identifies a specific incarnation of the target resource.
+    "clientOperationId": "A String", # [Output Only] Reserved for future use.
+    "creationTimestamp": "A String", # [Output Only] Creation timestamp in RFC3339 text format.
+    "id": "A String", # [Output Only] The unique identifier for the resource. This identifier is defined by the server.
+    "zone": "A String", # [Output Only] The URL of the zone where the operation resides. Only available when performing per-zone operations.
+    "insertTime": "A String", # [Output Only] The time that this operation was requested. This value is in RFC3339 text format.
+    "operationType": "A String", # [Output Only] The type of operation, such as insert, update, or delete, and so on.
+    "httpErrorMessage": "A String", # [Output Only] If the operation fails, this field contains the HTTP error message that was returned, such as NOT FOUND.
+    "progress": 42, # [Output Only] An optional progress indicator that ranges from 0 to 100. There is no requirement that this be linear or support any granularity of operations. This should not be used to guess when the operation will be complete. This number should monotonically increase as the operation progresses.
+    "httpErrorStatusCode": 42, # [Output Only] If the operation fails, this field contains the HTTP error status code that was returned. For example, a 404 means the resource was not found.
+    "statusMessage": "A String", # [Output Only] An optional textual description of the current status of the operation.
+    "status": "A String", # [Output Only] The status of the operation, which can be one of the following: PENDING, RUNNING, or DONE.
+    "description": "A String", # [Output Only] A textual description of the operation, which is set when the operation is created.
+    "warnings": [ # [Output Only] If warning messages are generated during processing of the operation, this field will be populated.
+      {
+        "message": "A String", # [Output Only] A human-readable description of the warning code.
+        "code": "A String", # [Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.
+        "data": [ # [Output Only] Metadata about this warning in key: value format. For example:
+            # "data": [ { "key": "scope", "value": "zones/us-east1-d" }
+          {
+            "value": "A String", # [Output Only] A warning data value corresponding to the key.
+            "key": "A String", # [Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding).
+          },
+        ],
+      },
+    ],
+    "user": "A String", # [Output Only] User who requested the operation, for example: user@example.com.
+    "startTime": "A String", # [Output Only] The time that this operation was started by the server. This value is in RFC3339 text format.
+    "kind": "compute#operation", # [Output Only] Type of the resource. Always compute#operation for Operation resources.
+    "name": "A String", # [Output Only] Name of the resource.
+    "region": "A String", # [Output Only] The URL of the region where the operation resides. Only available when performing regional operations.
+    "error": { # [Output Only] If errors are generated during processing of the operation, this field will be populated.
+      "errors": [ # [Output Only] The array of errors encountered while processing this operation.
+        {
+          "message": "A String", # [Output Only] An optional, human-readable error message.
+          "code": "A String", # [Output Only] The error type identifier for this error.
+          "location": "A String", # [Output Only] Indicates the field in the request that caused the error. This property is optional.
+        },
+      ],
+    },
+    "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
+    "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
+  }</pre>
+</div>
+
+</body></html>
\ No newline at end of file
diff --git a/docs/dyn/compute_v1.regionInstanceGroups.html b/docs/dyn/compute_v1.regionInstanceGroups.html
new file mode 100644
index 0000000..e098086
--- /dev/null
+++ b/docs/dyn/compute_v1.regionInstanceGroups.html
@@ -0,0 +1,351 @@
+<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="compute_v1.html">Compute Engine API</a> . <a href="compute_v1.regionInstanceGroups.html">regionInstanceGroups</a></h1>
+<h2>Instance Methods</h2>
+<p class="toc_element">
+  <code><a href="#get">get(project, region, instanceGroup)</a></code></p>
+<p class="firstline">Returns the specified instance group resource.</p>
+<p class="toc_element">
+  <code><a href="#list">list(project, region, orderBy=None, maxResults=None, pageToken=None, filter=None)</a></code></p>
+<p class="firstline">Retrieves the list of instance group resources contained within the specified region.</p>
+<p class="toc_element">
+  <code><a href="#listInstances">listInstances(project, region, instanceGroup, body, orderBy=None, maxResults=None, pageToken=None, filter=None)</a></code></p>
+<p class="firstline">Lists the instances in the specified instance group and displays information about the named ports. Depending on the specified options, this method can list all instances or only the instances that are running.</p>
+<p class="toc_element">
+  <code><a href="#listInstances_next">listInstances_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="#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="#setNamedPorts">setNamedPorts(project, region, instanceGroup, body)</a></code></p>
+<p class="firstline">Sets the named ports for the specified regional instance group.</p>
+<h3>Method Details</h3>
+<div class="method">
+    <code class="details" id="get">get(project, region, instanceGroup)</code>
+  <pre>Returns the specified instance group resource.
+
+Args:
+  project: string, Project ID for this request. (required)
+  region: string, Name of the region scoping this request. (required)
+  instanceGroup: string, Name of the instance group resource to return. (required)
+
+Returns:
+  An object of the form:
+
+    {
+      "size": 42, # [Output Only] The total number of instances in the instance group.
+      "kind": "compute#instanceGroup", # [Output Only] The resource type, which is always compute#instanceGroup for instance groups.
+      "description": "A String", # An optional description of this resource. Provide this property when you create the resource.
+      "zone": "A String", # [Output Only] The URL of the zone where the instance group is located (for zonal resources).
+      "region": "A String", # The URL of the region where the instance group is located (for regional resources).
+      "network": "A String", # The URL of the network to which all instances in the instance group belong.
+      "fingerprint": "A String", # [Output Only] The fingerprint of the named ports. The system uses this fingerprint to detect conflicts when multiple users change the named ports concurrently.
+      "subnetwork": "A String", # The URL of the subnetwork to which all instances in the instance group belong.
+      "namedPorts": [ # Assigns a name to a port number. For example: {name: "http", port: 80}
+          #
+          # This allows the system to reference ports by the assigned name instead of a port number. Named ports can also contain multiple ports. For example: [{name: "http", port: 80},{name: "http", port: 8080}]
+          #
+          # Named ports apply to all instances in this instance group.
+        { # The named port. For example: .
+          "name": "A String", # The name for this named port. The name must be 1-63 characters long, and comply with RFC1035.
+          "port": 42, # The port number, which can be a value between 1 and 65535.
+        },
+      ],
+      "creationTimestamp": "A String", # [Output Only] The creation timestamp for this instance group in RFC3339 text format.
+      "id": "A String", # [Output Only] A unique identifier for this instance group, generated by the server.
+      "selfLink": "A String", # [Output Only] The URL for this instance group. The server generates this URL.
+      "name": "A String", # The name of the instance group. The name must be 1-63 characters long, and comply with RFC1035.
+    }</pre>
+</div>
+
+<div class="method">
+    <code class="details" id="list">list(project, region, orderBy=None, maxResults=None, pageToken=None, filter=None)</code>
+  <pre>Retrieves the list of instance group resources contained within the specified region.
+
+Args:
+  project: string, Project ID for this request. (required)
+  region: string, Name of the region scoping this request. (required)
+  orderBy: string, Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.
+
+You can also sort results in descending order based on the creation timestamp using orderBy="creationTimestamp desc". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.
+
+Currently, only sorting by name or creationTimestamp desc is supported.
+  maxResults: integer, The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests.
+  pageToken: string, Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.
+  filter: string, Sets a filter expression for filtering listed resources, in the form filter={expression}. Your {expression} must be in the format: field_name comparison_string literal_string.
+
+The field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.
+
+For example, to filter for instances that do not have a name of example-instance, you would use filter=name ne example-instance.
+
+You can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.
+
+To filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.
+
+Returns:
+  An object of the form:
+
+    { # Contains a list of InstanceGroup resources.
+    "nextPageToken": "A String", # [Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results.
+    "items": [ # A list of InstanceGroup resources.
+      {
+          "size": 42, # [Output Only] The total number of instances in the instance group.
+          "kind": "compute#instanceGroup", # [Output Only] The resource type, which is always compute#instanceGroup for instance groups.
+          "description": "A String", # An optional description of this resource. Provide this property when you create the resource.
+          "zone": "A String", # [Output Only] The URL of the zone where the instance group is located (for zonal resources).
+          "region": "A String", # The URL of the region where the instance group is located (for regional resources).
+          "network": "A String", # The URL of the network to which all instances in the instance group belong.
+          "fingerprint": "A String", # [Output Only] The fingerprint of the named ports. The system uses this fingerprint to detect conflicts when multiple users change the named ports concurrently.
+          "subnetwork": "A String", # The URL of the subnetwork to which all instances in the instance group belong.
+          "namedPorts": [ # Assigns a name to a port number. For example: {name: "http", port: 80}
+              #
+              # This allows the system to reference ports by the assigned name instead of a port number. Named ports can also contain multiple ports. For example: [{name: "http", port: 80},{name: "http", port: 8080}]
+              #
+              # Named ports apply to all instances in this instance group.
+            { # The named port. For example: .
+              "name": "A String", # The name for this named port. The name must be 1-63 characters long, and comply with RFC1035.
+              "port": 42, # The port number, which can be a value between 1 and 65535.
+            },
+          ],
+          "creationTimestamp": "A String", # [Output Only] The creation timestamp for this instance group in RFC3339 text format.
+          "id": "A String", # [Output Only] A unique identifier for this instance group, generated by the server.
+          "selfLink": "A String", # [Output Only] The URL for this instance group. The server generates this URL.
+          "name": "A String", # The name of the instance group. The name must be 1-63 characters long, and comply with RFC1035.
+        },
+    ],
+    "kind": "compute#regionInstanceGroupList", # The resource type.
+    "id": "A String", # [Output Only] The unique identifier for the resource. This identifier is defined by the server.
+    "selfLink": "A String", # [Output Only] The URL for this resource type. The server generates this URL.
+  }</pre>
+</div>
+
+<div class="method">
+    <code class="details" id="listInstances">listInstances(project, region, instanceGroup, body, orderBy=None, maxResults=None, pageToken=None, filter=None)</code>
+  <pre>Lists the instances in the specified instance group and displays information about the named ports. Depending on the specified options, this method can list all instances or only the instances that are running.
+
+Args:
+  project: string, Project ID for this request. (required)
+  region: string, Name of the region scoping this request. (required)
+  instanceGroup: string, Name of the regional instance group for which we want to list the instances. (required)
+  body: object, The request body. (required)
+    The object takes the form of:
+
+{
+    "portName": "A String", # Name of port user is interested in. It is optional. If it is set, only information about this ports will be returned. If it is not set, all the named ports will be returned. Always lists all instances.
+    "instanceState": "A String", # Instances in which state should be returned. Valid options are: 'ALL', 'RUNNING'. By default, it lists all instances.
+  }
+
+  orderBy: string, Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.
+
+You can also sort results in descending order based on the creation timestamp using orderBy="creationTimestamp desc". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.
+
+Currently, only sorting by name or creationTimestamp desc is supported.
+  maxResults: integer, The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests.
+  pageToken: string, Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.
+  filter: string, Sets a filter expression for filtering listed resources, in the form filter={expression}. Your {expression} must be in the format: field_name comparison_string literal_string.
+
+The field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.
+
+For example, to filter for instances that do not have a name of example-instance, you would use filter=name ne example-instance.
+
+You can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.
+
+To filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.
+
+Returns:
+  An object of the form:
+
+    {
+    "nextPageToken": "A String", # [Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results.
+    "items": [ # A list of instances and any named ports that are assigned to those instances.
+      {
+        "status": "A String", # [Output Only] The status of the instance.
+        "instance": "A String", # [Output Only] The URL of the instance.
+        "namedPorts": [ # [Output Only] The named ports that belong to this instance group.
+          { # The named port. For example: .
+            "name": "A String", # The name for this named port. The name must be 1-63 characters long, and comply with RFC1035.
+            "port": 42, # The port number, which can be a value between 1 and 65535.
+          },
+        ],
+      },
+    ],
+    "kind": "compute#regionInstanceGroupsListInstances", # The resource type.
+    "id": "A String", # [Output Only] Unique identifier for the resource. Defined by the server.
+    "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
+  }</pre>
+</div>
+
+<div class="method">
+    <code class="details" id="listInstances_next">listInstances_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="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="setNamedPorts">setNamedPorts(project, region, instanceGroup, body)</code>
+  <pre>Sets the named ports for the specified regional instance group.
+
+Args:
+  project: string, Project ID for this request. (required)
+  region: string, Name of the region scoping this request. (required)
+  instanceGroup: string, The name of the regional instance group where the named ports are updated. (required)
+  body: object, The request body. (required)
+    The object takes the form of:
+
+{
+    "namedPorts": [ # The list of named ports to set for this instance group.
+      { # The named port. For example: .
+        "name": "A String", # The name for this named port. The name must be 1-63 characters long, and comply with RFC1035.
+        "port": 42, # The port number, which can be a value between 1 and 65535.
+      },
+    ],
+    "fingerprint": "A String", # The fingerprint of the named ports information for this instance group. Use this optional property to prevent conflicts when multiple users change the named ports settings concurrently. Obtain the fingerprint with the instanceGroups.get method. Then, include the fingerprint in your request to ensure that you do not overwrite changes that were applied from another concurrent request.
+  }
+
+
+Returns:
+  An object of the form:
+
+    { # An Operation resource, used to manage asynchronous API requests.
+    "targetId": "A String", # [Output Only] The unique target ID, which identifies a specific incarnation of the target resource.
+    "clientOperationId": "A String", # [Output Only] Reserved for future use.
+    "creationTimestamp": "A String", # [Output Only] Creation timestamp in RFC3339 text format.
+    "id": "A String", # [Output Only] The unique identifier for the resource. This identifier is defined by the server.
+    "zone": "A String", # [Output Only] The URL of the zone where the operation resides. Only available when performing per-zone operations.
+    "insertTime": "A String", # [Output Only] The time that this operation was requested. This value is in RFC3339 text format.
+    "operationType": "A String", # [Output Only] The type of operation, such as insert, update, or delete, and so on.
+    "httpErrorMessage": "A String", # [Output Only] If the operation fails, this field contains the HTTP error message that was returned, such as NOT FOUND.
+    "progress": 42, # [Output Only] An optional progress indicator that ranges from 0 to 100. There is no requirement that this be linear or support any granularity of operations. This should not be used to guess when the operation will be complete. This number should monotonically increase as the operation progresses.
+    "httpErrorStatusCode": 42, # [Output Only] If the operation fails, this field contains the HTTP error status code that was returned. For example, a 404 means the resource was not found.
+    "statusMessage": "A String", # [Output Only] An optional textual description of the current status of the operation.
+    "status": "A String", # [Output Only] The status of the operation, which can be one of the following: PENDING, RUNNING, or DONE.
+    "description": "A String", # [Output Only] A textual description of the operation, which is set when the operation is created.
+    "warnings": [ # [Output Only] If warning messages are generated during processing of the operation, this field will be populated.
+      {
+        "message": "A String", # [Output Only] A human-readable description of the warning code.
+        "code": "A String", # [Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.
+        "data": [ # [Output Only] Metadata about this warning in key: value format. For example:
+            # "data": [ { "key": "scope", "value": "zones/us-east1-d" }
+          {
+            "value": "A String", # [Output Only] A warning data value corresponding to the key.
+            "key": "A String", # [Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding).
+          },
+        ],
+      },
+    ],
+    "user": "A String", # [Output Only] User who requested the operation, for example: user@example.com.
+    "startTime": "A String", # [Output Only] The time that this operation was started by the server. This value is in RFC3339 text format.
+    "kind": "compute#operation", # [Output Only] Type of the resource. Always compute#operation for Operation resources.
+    "name": "A String", # [Output Only] Name of the resource.
+    "region": "A String", # [Output Only] The URL of the region where the operation resides. Only available when performing regional operations.
+    "error": { # [Output Only] If errors are generated during processing of the operation, this field will be populated.
+      "errors": [ # [Output Only] The array of errors encountered while processing this operation.
+        {
+          "message": "A String", # [Output Only] An optional, human-readable error message.
+          "code": "A String", # [Output Only] The error type identifier for this error.
+          "location": "A String", # [Output Only] Indicates the field in the request that caused the error. This property is optional.
+        },
+      ],
+    },
+    "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
+    "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
+  }</pre>
+</div>
+
+</body></html>
\ No newline at end of file
diff --git a/docs/dyn/compute_v1.regionOperations.html b/docs/dyn/compute_v1.regionOperations.html
index 1f37609..53f83c5 100644
--- a/docs/dyn/compute_v1.regionOperations.html
+++ b/docs/dyn/compute_v1.regionOperations.html
@@ -153,7 +153,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
@@ -230,7 +230,7 @@
         },
         "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
         "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-        "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+        "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
       },
     ],
     "kind": "compute#operationList", # [Output Only] Type of resource. Always compute#operations for Operations resource.
diff --git a/docs/dyn/compute_v1.regions.html b/docs/dyn/compute_v1.regions.html
index a89d89e..5945c8e 100644
--- a/docs/dyn/compute_v1.regions.html
+++ b/docs/dyn/compute_v1.regions.html
@@ -100,10 +100,10 @@
     "kind": "compute#region", # [Output Only] Type of the resource. Always compute#region for regions.
     "description": "A String", # [Output Only] Textual description of the resource.
     "deprecated": { # Deprecation status for a public resource. # [Output Only] The deprecation status associated with this region.
-      "deleted": "A String", # An optional RFC3339 timestamp on or after which the deprecation state of this resource will be changed to DELETED.
-      "deprecated": "A String", # An optional RFC3339 timestamp on or after which the deprecation state of this resource will be changed to DEPRECATED.
+      "deleted": "A String", # An optional RFC3339 timestamp on or after which the state of this resource is intended to change to DELETED. This is only informational and the status will not change unless the client explicitly changes it.
+      "deprecated": "A String", # An optional RFC3339 timestamp on or after which the state of this resource is intended to change to DEPRECATED. This is only informational and the status will not change unless the client explicitly changes it.
       "state": "A String", # The deprecation state of this resource. This can be DEPRECATED, OBSOLETE, or DELETED. Operations which create a new resource using a DEPRECATED resource will return successfully, but with a warning indicating the deprecated resource and recommending its replacement. Operations which use OBSOLETE or DELETED resources will be rejected and result in an error.
-      "obsolete": "A String", # An optional RFC3339 timestamp on or after which the deprecation state of this resource will be changed to OBSOLETE.
+      "obsolete": "A String", # An optional RFC3339 timestamp on or after which the state of this resource is intended to change to OBSOLETE. This is only informational and the status will not change unless the client explicitly changes it.
       "replacement": "A String", # The URL of the suggested replacement for a deprecated resource. The suggested replacement resource must be the same kind of resource as the deprecated resource.
     },
     "quotas": [ # [Output Only] Quotas assigned to this region.
@@ -157,10 +157,10 @@
         "kind": "compute#region", # [Output Only] Type of the resource. Always compute#region for regions.
         "description": "A String", # [Output Only] Textual description of the resource.
         "deprecated": { # Deprecation status for a public resource. # [Output Only] The deprecation status associated with this region.
-          "deleted": "A String", # An optional RFC3339 timestamp on or after which the deprecation state of this resource will be changed to DELETED.
-          "deprecated": "A String", # An optional RFC3339 timestamp on or after which the deprecation state of this resource will be changed to DEPRECATED.
+          "deleted": "A String", # An optional RFC3339 timestamp on or after which the state of this resource is intended to change to DELETED. This is only informational and the status will not change unless the client explicitly changes it.
+          "deprecated": "A String", # An optional RFC3339 timestamp on or after which the state of this resource is intended to change to DEPRECATED. This is only informational and the status will not change unless the client explicitly changes it.
           "state": "A String", # The deprecation state of this resource. This can be DEPRECATED, OBSOLETE, or DELETED. Operations which create a new resource using a DEPRECATED resource will return successfully, but with a warning indicating the deprecated resource and recommending its replacement. Operations which use OBSOLETE or DELETED resources will be rejected and result in an error.
-          "obsolete": "A String", # An optional RFC3339 timestamp on or after which the deprecation state of this resource will be changed to OBSOLETE.
+          "obsolete": "A String", # An optional RFC3339 timestamp on or after which the state of this resource is intended to change to OBSOLETE. This is only informational and the status will not change unless the client explicitly changes it.
           "replacement": "A String", # The URL of the suggested replacement for a deprecated resource. The suggested replacement resource must be the same kind of resource as the deprecated resource.
         },
         "quotas": [ # [Output Only] Quotas assigned to this region.
diff --git a/docs/dyn/compute_v1.routers.html b/docs/dyn/compute_v1.routers.html
index 155ca21..7466d4c 100644
--- a/docs/dyn/compute_v1.routers.html
+++ b/docs/dyn/compute_v1.routers.html
@@ -258,7 +258,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
@@ -505,7 +505,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
@@ -679,7 +679,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
@@ -852,7 +852,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
diff --git a/docs/dyn/compute_v1.routes.html b/docs/dyn/compute_v1.routes.html
index c42e09e..aafc04c 100644
--- a/docs/dyn/compute_v1.routes.html
+++ b/docs/dyn/compute_v1.routes.html
@@ -144,7 +144,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
@@ -292,7 +292,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
diff --git a/docs/dyn/compute_v1.snapshots.html b/docs/dyn/compute_v1.snapshots.html
index e038b1f..5eeeb5c 100644
--- a/docs/dyn/compute_v1.snapshots.html
+++ b/docs/dyn/compute_v1.snapshots.html
@@ -143,7 +143,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
diff --git a/docs/dyn/compute_v1.sslCertificates.html b/docs/dyn/compute_v1.sslCertificates.html
index e2fec84..79fe9fd 100644
--- a/docs/dyn/compute_v1.sslCertificates.html
+++ b/docs/dyn/compute_v1.sslCertificates.html
@@ -144,7 +144,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
@@ -163,7 +163,7 @@
       "kind": "compute#sslCertificate", # [Output Only] Type of the resource. Always compute#sslCertificate for SSL certificates.
       "name": "A String", # Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression [a-z]([-a-z0-9]*[a-z0-9])? which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.
       "certificate": "A String", # A local certificate file. The certificate must be in PEM format. The certificate chain must be no greater than 5 certs long. The chain must include at least one intermediate cert.
-      "privateKey": "A String", # A write-only private key in PEM format. Only insert RPCs will include this field.
+      "privateKey": "A String", # A write-only private key in PEM format. Only insert requests will include this field.
       "creationTimestamp": "A String", # [Output Only] Creation timestamp in RFC3339 text format.
       "id": "A String", # [Output Only] The unique identifier for the resource. This identifier is defined by the server.
       "selfLink": "A String", # [Output only] Server-defined URL for the resource.
@@ -184,7 +184,7 @@
     "kind": "compute#sslCertificate", # [Output Only] Type of the resource. Always compute#sslCertificate for SSL certificates.
     "name": "A String", # Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression [a-z]([-a-z0-9]*[a-z0-9])? which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.
     "certificate": "A String", # A local certificate file. The certificate must be in PEM format. The certificate chain must be no greater than 5 certs long. The chain must include at least one intermediate cert.
-    "privateKey": "A String", # A write-only private key in PEM format. Only insert RPCs will include this field.
+    "privateKey": "A String", # A write-only private key in PEM format. Only insert requests will include this field.
     "creationTimestamp": "A String", # [Output Only] Creation timestamp in RFC3339 text format.
     "id": "A String", # [Output Only] The unique identifier for the resource. This identifier is defined by the server.
     "selfLink": "A String", # [Output only] Server-defined URL for the resource.
@@ -238,7 +238,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
@@ -275,7 +275,7 @@
           "kind": "compute#sslCertificate", # [Output Only] Type of the resource. Always compute#sslCertificate for SSL certificates.
           "name": "A String", # Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression [a-z]([-a-z0-9]*[a-z0-9])? which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.
           "certificate": "A String", # A local certificate file. The certificate must be in PEM format. The certificate chain must be no greater than 5 certs long. The chain must include at least one intermediate cert.
-          "privateKey": "A String", # A write-only private key in PEM format. Only insert RPCs will include this field.
+          "privateKey": "A String", # A write-only private key in PEM format. Only insert requests will include this field.
           "creationTimestamp": "A String", # [Output Only] Creation timestamp in RFC3339 text format.
           "id": "A String", # [Output Only] The unique identifier for the resource. This identifier is defined by the server.
           "selfLink": "A String", # [Output only] Server-defined URL for the resource.
diff --git a/docs/dyn/compute_v1.subnetworks.html b/docs/dyn/compute_v1.subnetworks.html
index 4d52f0f..9ff1e95 100644
--- a/docs/dyn/compute_v1.subnetworks.html
+++ b/docs/dyn/compute_v1.subnetworks.html
@@ -84,6 +84,9 @@
   <code><a href="#delete">delete(project, region, subnetwork)</a></code></p>
 <p class="firstline">Deletes the specified subnetwork.</p>
 <p class="toc_element">
+  <code><a href="#expandIpCidrRange">expandIpCidrRange(project, region, subnetwork, body)</a></code></p>
+<p class="firstline">Expands the IP CIDR range of the subnetwork to a specified value.</p>
+<p class="toc_element">
   <code><a href="#get">get(project, region, subnetwork)</a></code></p>
 <p class="firstline">Returns the specified subnetwork. Get a list of available subnetworks list() request.</p>
 <p class="toc_element">
@@ -228,7 +231,73 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
+  }</pre>
+</div>
+
+<div class="method">
+    <code class="details" id="expandIpCidrRange">expandIpCidrRange(project, region, subnetwork, body)</code>
+  <pre>Expands the IP CIDR range of the subnetwork to a specified value.
+
+Args:
+  project: string, Project ID for this request. (required)
+  region: string, Name of the region scoping this request. (required)
+  subnetwork: string, Name of the Subnetwork resource to update. (required)
+  body: object, The request body. (required)
+    The object takes the form of:
+
+{
+    "ipCidrRange": "A String", # The IP (in CIDR format or netmask) of internal addresses that are legal on this Subnetwork. This range should be disjoint from other subnetworks within this network. This range can only be larger than (i.e. a superset of) the range previously defined before the update.
+  }
+
+
+Returns:
+  An object of the form:
+
+    { # An Operation resource, used to manage asynchronous API requests.
+    "targetId": "A String", # [Output Only] The unique target ID, which identifies a specific incarnation of the target resource.
+    "clientOperationId": "A String", # [Output Only] Reserved for future use.
+    "creationTimestamp": "A String", # [Output Only] Creation timestamp in RFC3339 text format.
+    "id": "A String", # [Output Only] The unique identifier for the resource. This identifier is defined by the server.
+    "zone": "A String", # [Output Only] The URL of the zone where the operation resides. Only available when performing per-zone operations.
+    "insertTime": "A String", # [Output Only] The time that this operation was requested. This value is in RFC3339 text format.
+    "operationType": "A String", # [Output Only] The type of operation, such as insert, update, or delete, and so on.
+    "httpErrorMessage": "A String", # [Output Only] If the operation fails, this field contains the HTTP error message that was returned, such as NOT FOUND.
+    "progress": 42, # [Output Only] An optional progress indicator that ranges from 0 to 100. There is no requirement that this be linear or support any granularity of operations. This should not be used to guess when the operation will be complete. This number should monotonically increase as the operation progresses.
+    "httpErrorStatusCode": 42, # [Output Only] If the operation fails, this field contains the HTTP error status code that was returned. For example, a 404 means the resource was not found.
+    "statusMessage": "A String", # [Output Only] An optional textual description of the current status of the operation.
+    "status": "A String", # [Output Only] The status of the operation, which can be one of the following: PENDING, RUNNING, or DONE.
+    "description": "A String", # [Output Only] A textual description of the operation, which is set when the operation is created.
+    "warnings": [ # [Output Only] If warning messages are generated during processing of the operation, this field will be populated.
+      {
+        "message": "A String", # [Output Only] A human-readable description of the warning code.
+        "code": "A String", # [Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.
+        "data": [ # [Output Only] Metadata about this warning in key: value format. For example:
+            # "data": [ { "key": "scope", "value": "zones/us-east1-d" }
+          {
+            "value": "A String", # [Output Only] A warning data value corresponding to the key.
+            "key": "A String", # [Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding).
+          },
+        ],
+      },
+    ],
+    "user": "A String", # [Output Only] User who requested the operation, for example: user@example.com.
+    "startTime": "A String", # [Output Only] The time that this operation was started by the server. This value is in RFC3339 text format.
+    "kind": "compute#operation", # [Output Only] Type of the resource. Always compute#operation for Operation resources.
+    "name": "A String", # [Output Only] Name of the resource.
+    "region": "A String", # [Output Only] The URL of the region where the operation resides. Only available when performing regional operations.
+    "error": { # [Output Only] If errors are generated during processing of the operation, this field will be populated.
+      "errors": [ # [Output Only] The array of errors encountered while processing this operation.
+        {
+          "message": "A String", # [Output Only] An optional, human-readable error message.
+          "code": "A String", # [Output Only] The error type identifier for this error.
+          "location": "A String", # [Output Only] Indicates the field in the request that caused the error. This property is optional.
+        },
+      ],
+    },
+    "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
+    "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
@@ -328,7 +397,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
diff --git a/docs/dyn/compute_v1.targetHttpProxies.html b/docs/dyn/compute_v1.targetHttpProxies.html
index 75d76ff..a5f3379 100644
--- a/docs/dyn/compute_v1.targetHttpProxies.html
+++ b/docs/dyn/compute_v1.targetHttpProxies.html
@@ -147,7 +147,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
@@ -239,7 +239,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
@@ -363,7 +363,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
diff --git a/docs/dyn/compute_v1.targetHttpsProxies.html b/docs/dyn/compute_v1.targetHttpsProxies.html
index f252cf0..c3b8cae 100644
--- a/docs/dyn/compute_v1.targetHttpsProxies.html
+++ b/docs/dyn/compute_v1.targetHttpsProxies.html
@@ -150,7 +150,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
@@ -254,7 +254,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
@@ -386,7 +386,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
@@ -451,7 +451,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
diff --git a/docs/dyn/compute_v1.targetInstances.html b/docs/dyn/compute_v1.targetInstances.html
index c8c9882..b89ef3d 100644
--- a/docs/dyn/compute_v1.targetInstances.html
+++ b/docs/dyn/compute_v1.targetInstances.html
@@ -230,7 +230,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
@@ -334,7 +334,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
diff --git a/docs/dyn/compute_v1.targetPools.html b/docs/dyn/compute_v1.targetPools.html
index a2272ad..dd70efb 100644
--- a/docs/dyn/compute_v1.targetPools.html
+++ b/docs/dyn/compute_v1.targetPools.html
@@ -183,7 +183,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
@@ -256,7 +256,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
@@ -409,7 +409,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
@@ -575,7 +575,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
@@ -731,7 +731,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
@@ -801,7 +801,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
@@ -868,7 +868,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
diff --git a/docs/dyn/compute_v1.targetSslProxies.html b/docs/dyn/compute_v1.targetSslProxies.html
index 91e8850..3002135 100644
--- a/docs/dyn/compute_v1.targetSslProxies.html
+++ b/docs/dyn/compute_v1.targetSslProxies.html
@@ -153,7 +153,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
@@ -253,7 +253,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
@@ -381,7 +381,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
@@ -446,7 +446,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
@@ -513,7 +513,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
diff --git a/docs/dyn/compute_v1.targetVpnGateways.html b/docs/dyn/compute_v1.targetVpnGateways.html
index 781e38e..5f8f834 100644
--- a/docs/dyn/compute_v1.targetVpnGateways.html
+++ b/docs/dyn/compute_v1.targetVpnGateways.html
@@ -233,7 +233,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
@@ -343,7 +343,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
diff --git a/docs/dyn/compute_v1.urlMaps.html b/docs/dyn/compute_v1.urlMaps.html
index 9857a33..f41378a 100644
--- a/docs/dyn/compute_v1.urlMaps.html
+++ b/docs/dyn/compute_v1.urlMaps.html
@@ -156,7 +156,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
@@ -320,7 +320,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
@@ -336,6 +336,7 @@
 
 {
     "path": "A String",
+    "host": "A String", # If set, this invalidation rule will only apply to requests with a Host header matching host.
   }
 
 
@@ -385,7 +386,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
@@ -587,7 +588,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
@@ -694,7 +695,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
diff --git a/docs/dyn/compute_v1.vpnTunnels.html b/docs/dyn/compute_v1.vpnTunnels.html
index 1198a10..31541f7 100644
--- a/docs/dyn/compute_v1.vpnTunnels.html
+++ b/docs/dyn/compute_v1.vpnTunnels.html
@@ -239,7 +239,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
@@ -361,7 +361,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
diff --git a/docs/dyn/compute_v1.zoneOperations.html b/docs/dyn/compute_v1.zoneOperations.html
index e056a11..7988522 100644
--- a/docs/dyn/compute_v1.zoneOperations.html
+++ b/docs/dyn/compute_v1.zoneOperations.html
@@ -153,7 +153,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
@@ -230,7 +230,7 @@
         },
         "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
         "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-        "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+        "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
       },
     ],
     "kind": "compute#operationList", # [Output Only] Type of resource. Always compute#operations for Operations resource.
diff --git a/docs/dyn/compute_v1.zones.html b/docs/dyn/compute_v1.zones.html
index 5981a1a..f34034f 100644
--- a/docs/dyn/compute_v1.zones.html
+++ b/docs/dyn/compute_v1.zones.html
@@ -100,10 +100,10 @@
     "kind": "compute#zone", # [Output Only] Type of the resource. Always compute#zone for zones.
     "description": "A String", # [Output Only] Textual description of the resource.
     "deprecated": { # Deprecation status for a public resource. # [Output Only] The deprecation status associated with this zone.
-      "deleted": "A String", # An optional RFC3339 timestamp on or after which the deprecation state of this resource will be changed to DELETED.
-      "deprecated": "A String", # An optional RFC3339 timestamp on or after which the deprecation state of this resource will be changed to DEPRECATED.
+      "deleted": "A String", # An optional RFC3339 timestamp on or after which the state of this resource is intended to change to DELETED. This is only informational and the status will not change unless the client explicitly changes it.
+      "deprecated": "A String", # An optional RFC3339 timestamp on or after which the state of this resource is intended to change to DEPRECATED. This is only informational and the status will not change unless the client explicitly changes it.
       "state": "A String", # The deprecation state of this resource. This can be DEPRECATED, OBSOLETE, or DELETED. Operations which create a new resource using a DEPRECATED resource will return successfully, but with a warning indicating the deprecated resource and recommending its replacement. Operations which use OBSOLETE or DELETED resources will be rejected and result in an error.
-      "obsolete": "A String", # An optional RFC3339 timestamp on or after which the deprecation state of this resource will be changed to OBSOLETE.
+      "obsolete": "A String", # An optional RFC3339 timestamp on or after which the state of this resource is intended to change to OBSOLETE. This is only informational and the status will not change unless the client explicitly changes it.
       "replacement": "A String", # The URL of the suggested replacement for a deprecated resource. The suggested replacement resource must be the same kind of resource as the deprecated resource.
     },
     "region": "A String", # [Output Only] Full URL reference to the region which hosts the zone.
@@ -148,10 +148,10 @@
         "kind": "compute#zone", # [Output Only] Type of the resource. Always compute#zone for zones.
         "description": "A String", # [Output Only] Textual description of the resource.
         "deprecated": { # Deprecation status for a public resource. # [Output Only] The deprecation status associated with this zone.
-          "deleted": "A String", # An optional RFC3339 timestamp on or after which the deprecation state of this resource will be changed to DELETED.
-          "deprecated": "A String", # An optional RFC3339 timestamp on or after which the deprecation state of this resource will be changed to DEPRECATED.
+          "deleted": "A String", # An optional RFC3339 timestamp on or after which the state of this resource is intended to change to DELETED. This is only informational and the status will not change unless the client explicitly changes it.
+          "deprecated": "A String", # An optional RFC3339 timestamp on or after which the state of this resource is intended to change to DEPRECATED. This is only informational and the status will not change unless the client explicitly changes it.
           "state": "A String", # The deprecation state of this resource. This can be DEPRECATED, OBSOLETE, or DELETED. Operations which create a new resource using a DEPRECATED resource will return successfully, but with a warning indicating the deprecated resource and recommending its replacement. Operations which use OBSOLETE or DELETED resources will be rejected and result in an error.
-          "obsolete": "A String", # An optional RFC3339 timestamp on or after which the deprecation state of this resource will be changed to OBSOLETE.
+          "obsolete": "A String", # An optional RFC3339 timestamp on or after which the state of this resource is intended to change to OBSOLETE. This is only informational and the status will not change unless the client explicitly changes it.
           "replacement": "A String", # The URL of the suggested replacement for a deprecated resource. The suggested replacement resource must be the same kind of resource as the deprecated resource.
         },
         "region": "A String", # [Output Only] Full URL reference to the region which hosts the zone.
diff --git a/docs/dyn/consumersurveys_v2.mobileapppanels.html b/docs/dyn/consumersurveys_v2.mobileapppanels.html
index da0d114..79a74e7 100644
--- a/docs/dyn/consumersurveys_v2.mobileapppanels.html
+++ b/docs/dyn/consumersurveys_v2.mobileapppanels.html
@@ -94,15 +94,15 @@
 Returns:
   An object of the form:
 
-    { # Representation of an individual pre-defined panel object defining a targeted audience of opinion rewards mobile app users.
-    "owners": [ # List of email addresses for users who can target members of this panel. Must contain at least the address of the user making the API call for panels that are not public. This field will be empty for public panels.
+    {
+    "owners": [
       "A String",
     ],
-    "mobileAppPanelId": "A String", # Unique panel ID string. This corresponds to the mobile_app_panel_id used in Survey Insert requests.
-    "name": "A String", # Human readable name of the audience panel.
-    "language": "A String", # Language code that the panel can target. For instance, 'en-US'. Uses standard BCP47 language codes. See specification. Any survey created targeting this panel must also target the corresponding language.
-    "country": "A String", # Country code for the country of the users that the panel contains. Uses standard ISO 3166-1 2-character language codes. For instance, 'US' for the United States, and 'GB' for the United Kingdom. Any survey created targeting this panel must also target the corresponding country.
-    "isPublicPanel": True or False, # Whether or not the panel is accessible to all API users.
+    "mobileAppPanelId": "A String",
+    "name": "A String",
+    "language": "A String",
+    "country": "A String",
+    "isPublicPanel": True or False,
   }</pre>
 </div>
 
@@ -129,15 +129,15 @@
       "resultPerPage": 42,
     },
     "resources": [ # An individual predefined panel of Opinion Rewards mobile users.
-      { # Representation of an individual pre-defined panel object defining a targeted audience of opinion rewards mobile app users.
-        "owners": [ # List of email addresses for users who can target members of this panel. Must contain at least the address of the user making the API call for panels that are not public. This field will be empty for public panels.
+      {
+        "owners": [
           "A String",
         ],
-        "mobileAppPanelId": "A String", # Unique panel ID string. This corresponds to the mobile_app_panel_id used in Survey Insert requests.
-        "name": "A String", # Human readable name of the audience panel.
-        "language": "A String", # Language code that the panel can target. For instance, 'en-US'. Uses standard BCP47 language codes. See specification. Any survey created targeting this panel must also target the corresponding language.
-        "country": "A String", # Country code for the country of the users that the panel contains. Uses standard ISO 3166-1 2-character language codes. For instance, 'US' for the United States, and 'GB' for the United Kingdom. Any survey created targeting this panel must also target the corresponding country.
-        "isPublicPanel": True or False, # Whether or not the panel is accessible to all API users.
+        "mobileAppPanelId": "A String",
+        "name": "A String",
+        "language": "A String",
+        "country": "A String",
+        "isPublicPanel": True or False,
       },
     ],
     "requestId": "A String", # Unique request ID used for logging and debugging. Please include in any error reporting or troubleshooting requests.
@@ -153,30 +153,30 @@
   body: object, The request body. (required)
     The object takes the form of:
 
-{ # Representation of an individual pre-defined panel object defining a targeted audience of opinion rewards mobile app users.
-  "owners": [ # List of email addresses for users who can target members of this panel. Must contain at least the address of the user making the API call for panels that are not public. This field will be empty for public panels.
+{
+  "owners": [
     "A String",
   ],
-  "mobileAppPanelId": "A String", # Unique panel ID string. This corresponds to the mobile_app_panel_id used in Survey Insert requests.
-  "name": "A String", # Human readable name of the audience panel.
-  "language": "A String", # Language code that the panel can target. For instance, 'en-US'. Uses standard BCP47 language codes. See specification. Any survey created targeting this panel must also target the corresponding language.
-  "country": "A String", # Country code for the country of the users that the panel contains. Uses standard ISO 3166-1 2-character language codes. For instance, 'US' for the United States, and 'GB' for the United Kingdom. Any survey created targeting this panel must also target the corresponding country.
-  "isPublicPanel": True or False, # Whether or not the panel is accessible to all API users.
+  "mobileAppPanelId": "A String",
+  "name": "A String",
+  "language": "A String",
+  "country": "A String",
+  "isPublicPanel": True or False,
 }
 
 
 Returns:
   An object of the form:
 
-    { # Representation of an individual pre-defined panel object defining a targeted audience of opinion rewards mobile app users.
-    "owners": [ # List of email addresses for users who can target members of this panel. Must contain at least the address of the user making the API call for panels that are not public. This field will be empty for public panels.
+    {
+    "owners": [
       "A String",
     ],
-    "mobileAppPanelId": "A String", # Unique panel ID string. This corresponds to the mobile_app_panel_id used in Survey Insert requests.
-    "name": "A String", # Human readable name of the audience panel.
-    "language": "A String", # Language code that the panel can target. For instance, 'en-US'. Uses standard BCP47 language codes. See specification. Any survey created targeting this panel must also target the corresponding language.
-    "country": "A String", # Country code for the country of the users that the panel contains. Uses standard ISO 3166-1 2-character language codes. For instance, 'US' for the United States, and 'GB' for the United Kingdom. Any survey created targeting this panel must also target the corresponding country.
-    "isPublicPanel": True or False, # Whether or not the panel is accessible to all API users.
+    "mobileAppPanelId": "A String",
+    "name": "A String",
+    "language": "A String",
+    "country": "A String",
+    "isPublicPanel": True or False,
   }</pre>
 </div>
 
diff --git a/docs/dyn/consumersurveys_v2.results.html b/docs/dyn/consumersurveys_v2.results.html
index 713ea0a..1cfc415 100644
--- a/docs/dyn/consumersurveys_v2.results.html
+++ b/docs/dyn/consumersurveys_v2.results.html
@@ -91,9 +91,9 @@
 Returns:
   An object of the form:
 
-    { # Reference to the current results for a given survey.
-    "status": "A String", # Human readable string describing the status of the request.
-    "surveyUrlId": "A String", # External survey ID as viewable by survey owners in the editor view.
+    {
+    "status": "A String",
+    "surveyUrlId": "A String",
   }</pre>
 </div>
 
diff --git a/docs/dyn/consumersurveys_v2.surveys.html b/docs/dyn/consumersurveys_v2.surveys.html
index 35155c7..1bfcda4 100644
--- a/docs/dyn/consumersurveys_v2.surveys.html
+++ b/docs/dyn/consumersurveys_v2.surveys.html
@@ -121,72 +121,72 @@
 Returns:
   An object of the form:
 
-    { # Representation of an individual survey object.
-      "owners": [ # List of email addresses for survey owners. Must contain at least the address of the user making the API call.
+    {
+      "owners": [
         "A String",
       ],
-      "description": "A String", # Text description of the survey.
-      "title": "A String", # Optional name that will be given to the survey.
-      "customerData": "A String", # Additional information to store on behalf of the API consumer and associate with this question. This binary blob is treated as opaque. This field is limited to 64K bytes.
-      "state": "A String", # State that the survey is in.
-      "audience": { # Specifications for the target audience of a survey run through the API. # Targeting-criteria message containing demographic information
-        "countrySubdivision": "A String", # Country subdivision (states/provinces/etc) that surveys should be targeted to. For all countries except GB, ISO-3166-2 subdivision code is required (eg. 'US-OH' for Ohio, United States). For GB, NUTS 1 statistical region codes for the United Kingdom is required (eg. 'UK-UKC' for North East England).
-        "mobileAppPanelId": "A String", # Key for predefined panel that causes survey to be sent to a predefined set of Opinion Rewards App users. You must set PopulationSource to ANDROID_APP_PANEL to use this field.
-        "country": "A String", # Required country code that surveys should be targeted to. Accepts standard ISO 3166-1 2 character language codes. For instance, 'US' for the United States, and 'GB' for the United Kingdom.
-        "ages": [ # Optional list of age buckets to target. Supported age buckets are: ['18-24', '25-34', '35-44', '45-54', '55-64', '65+']
+      "description": "A String",
+      "title": "A String",
+      "customerData": "A String",
+      "state": "A String",
+      "audience": {
+        "countrySubdivision": "A String",
+        "mobileAppPanelId": "A String",
+        "country": "A String",
+        "ages": [
           "A String",
         ],
-        "populationSource": "A String", # Online population source where the respondents are sampled from.
-        "languages": [ # Language code that surveys should be targeted to. For instance, 'en-US'. Surveys may target bilingual users by specifying a list of language codes (for example, 'de' and 'en-US'). In that case, all languages will be used for targeting users but the survey content (which is displayed) must match the first language listed. Accepts standard BCP47 language codes. See specification.
+        "populationSource": "A String",
+        "languages": [
           "A String",
         ],
-        "gender": "A String", # Optional gender to target.
+        "gender": "A String",
       },
-      "cost": { # Message defining the cost to run a given survey through API. # Cost to run the survey and collect the necessary number of responses.
-        "nanos": "A String", # Cost of survey in nano units of the given currency. DEPRECATED in favor of cost_per_response_nanos
-        "currencyCode": "A String", # Currency code that the cost is given in.
-        "costPerResponseNanos": "A String", # Cost per survey response in nano units of the given currency. To get the total cost for a survey, multiply this value by wanted_response_count.
-        "maxCostPerResponseNanos": "A String", # Threshold to start a survey automatically if the quoted price is at most this value. When a survey has a Screener (threshold) question, it must go through an incidence pricing test to determine the final cost per response. Typically you will have to make a followup call to start the survey giving the final computed cost per response. If the survey has no threshold_answers, setting this property will return an error. By specifying this property, you indicate the max price per response you are willing to pay in advance of the incidence test. If the price turns out to be lower than the specified value, the survey will begin immediately and you will be charged at the rate determined by the incidence pricing test. If the price turns out to be greater than the specified value the survey will not be started and you will instead be notified what price was determined by the incidence test. At that point, you must raise the value of this property to be greater than or equal to that cost before attempting to start the survey again. This will immediately start the survey as long the incidence test was run within the last 21 days.
+      "cost": {
+        "nanos": "A String",
+        "currencyCode": "A String",
+        "costPerResponseNanos": "A String",
+        "maxCostPerResponseNanos": "A String",
       },
-      "surveyUrlId": "A String", # Unique survey ID, that is viewable in the URL of the Survey Creator UI
-      "questions": [ # List of questions defining the survey.
-        { # Message defining the question specifications.
-          "highValueLabel": "A String", # For rating questions, the text for the higher end of the scale, such as 'Best'. For numeric questions, a string representing a floating-point that is the maximum allowed number for a response.
-          "mustPickSuggestion": True or False, # Option to force the user to pick one of the open text suggestions. This requires that suggestions are provided for this question.
-          "thresholdAnswers": [ # The threshold/screener answer options, which will screen a user into the rest of the survey. These will be a subset of the answer option strings.
+      "surveyUrlId": "A String",
+      "questions": [
+        {
+          "highValueLabel": "A String",
+          "mustPickSuggestion": True or False,
+          "thresholdAnswers": [
             "A String",
           ],
-          "sentimentText": "A String", # Used by the Rating Scale with Text question type. This text goes along with the question field that is presented to the respondent, and is the actual text that the respondent is asked to rate.
-          "question": "A String", # Required question text shown to the respondent.
-          "numStars": "A String", # Number of stars to use for ratings questions.
-          "lowValueLabel": "A String", # For rating questions, the text for the lower end of the scale, such as 'Worst'. For numeric questions, a string representing a floating-point that is the minimum allowed number for a response.
-          "videoId": "A String", # The YouTube video ID to be show in video questions.
-          "answers": [ # Required list of answer options for a question.
+          "sentimentText": "A String",
+          "question": "A String",
+          "numStars": "A String",
+          "lowValueLabel": "A String",
+          "videoId": "A String",
+          "answers": [
             "A String",
           ],
-          "lastAnswerPositionPinned": True or False, # Currently only support pinning an answer option to the last position.
-          "hasOther": True or False, # Option to allow open-ended text box for Single Answer and Multiple Answer question types. This can be used with SINGLE_ANSWER, SINGLE_ANSWER_WITH_IMAGE, MULTIPLE_ANSWERS, and MULTIPLE_ANSWERS_WITH_IMAGE question types.
-          "unitOfMeasurementLabel": "A String", # Optional unit of measurement for display (for example: hours, people, miles).
+          "lastAnswerPositionPinned": True or False,
+          "hasOther": True or False,
+          "unitOfMeasurementLabel": "A String",
           "images": [
-            { # Container object for image data and alt_text.
-              "url": "A String", # The read-only URL for the hosted images.
-              "altText": "A String", # The alt text property used in image tags is required for all images.
-              "data": "A String", # Inline jpeg, gif, tiff, bmp, or png image raw bytes for an image question types.
+            {
+              "url": "A String",
+              "altText": "A String",
+              "data": "A String",
             },
           ],
-          "singleLineResponse": True or False, # Option to allow multiple line open text responses instead of a single line response. Note that we don't show auto-complete suggestions with multiple line responses.
-          "openTextSuggestions": [ # A list of suggested answers for open text question auto-complete. This is only valid if single_line_response is true.
+          "singleLineResponse": True or False,
+          "openTextSuggestions": [
             "A String",
           ],
-          "type": "A String", # Required field defining the question type. For details about configuring different type of questions, consult the question configuration guide.
-          "answerOrder": "A String", # The randomization option for multiple choice and multi-select questions. If not specified, this option defaults to randomize.
-          "openTextPlaceholder": "A String", # Placeholder text for an open text question.
+          "type": "A String",
+          "answerOrder": "A String",
+          "openTextPlaceholder": "A String",
         },
       ],
-      "wantedResponseCount": 42, # Number of responses desired for the survey.
-      "rejectionReason": { # Message representing why the survey was rejected from review, if it was. # Reason for the survey being rejected. Only present if the survey state is 'rejected'.
-        "explanation": "A String", # A human-readable explanation of what was wrong with the survey.
-        "type": "A String", # Which category of rejection this was. See the GCS Help Center for additional details on each category.
+      "wantedResponseCount": 42,
+      "rejectionReason": {
+        "explanation": "A String",
+        "type": "A String",
       },
     }</pre>
 </div>
@@ -199,72 +199,72 @@
   body: object, The request body. (required)
     The object takes the form of:
 
-{ # Representation of an individual survey object.
-    "owners": [ # List of email addresses for survey owners. Must contain at least the address of the user making the API call.
+{
+    "owners": [
       "A String",
     ],
-    "description": "A String", # Text description of the survey.
-    "title": "A String", # Optional name that will be given to the survey.
-    "customerData": "A String", # Additional information to store on behalf of the API consumer and associate with this question. This binary blob is treated as opaque. This field is limited to 64K bytes.
-    "state": "A String", # State that the survey is in.
-    "audience": { # Specifications for the target audience of a survey run through the API. # Targeting-criteria message containing demographic information
-      "countrySubdivision": "A String", # Country subdivision (states/provinces/etc) that surveys should be targeted to. For all countries except GB, ISO-3166-2 subdivision code is required (eg. 'US-OH' for Ohio, United States). For GB, NUTS 1 statistical region codes for the United Kingdom is required (eg. 'UK-UKC' for North East England).
-      "mobileAppPanelId": "A String", # Key for predefined panel that causes survey to be sent to a predefined set of Opinion Rewards App users. You must set PopulationSource to ANDROID_APP_PANEL to use this field.
-      "country": "A String", # Required country code that surveys should be targeted to. Accepts standard ISO 3166-1 2 character language codes. For instance, 'US' for the United States, and 'GB' for the United Kingdom.
-      "ages": [ # Optional list of age buckets to target. Supported age buckets are: ['18-24', '25-34', '35-44', '45-54', '55-64', '65+']
+    "description": "A String",
+    "title": "A String",
+    "customerData": "A String",
+    "state": "A String",
+    "audience": {
+      "countrySubdivision": "A String",
+      "mobileAppPanelId": "A String",
+      "country": "A String",
+      "ages": [
         "A String",
       ],
-      "populationSource": "A String", # Online population source where the respondents are sampled from.
-      "languages": [ # Language code that surveys should be targeted to. For instance, 'en-US'. Surveys may target bilingual users by specifying a list of language codes (for example, 'de' and 'en-US'). In that case, all languages will be used for targeting users but the survey content (which is displayed) must match the first language listed. Accepts standard BCP47 language codes. See specification.
+      "populationSource": "A String",
+      "languages": [
         "A String",
       ],
-      "gender": "A String", # Optional gender to target.
+      "gender": "A String",
     },
-    "cost": { # Message defining the cost to run a given survey through API. # Cost to run the survey and collect the necessary number of responses.
-      "nanos": "A String", # Cost of survey in nano units of the given currency. DEPRECATED in favor of cost_per_response_nanos
-      "currencyCode": "A String", # Currency code that the cost is given in.
-      "costPerResponseNanos": "A String", # Cost per survey response in nano units of the given currency. To get the total cost for a survey, multiply this value by wanted_response_count.
-      "maxCostPerResponseNanos": "A String", # Threshold to start a survey automatically if the quoted price is at most this value. When a survey has a Screener (threshold) question, it must go through an incidence pricing test to determine the final cost per response. Typically you will have to make a followup call to start the survey giving the final computed cost per response. If the survey has no threshold_answers, setting this property will return an error. By specifying this property, you indicate the max price per response you are willing to pay in advance of the incidence test. If the price turns out to be lower than the specified value, the survey will begin immediately and you will be charged at the rate determined by the incidence pricing test. If the price turns out to be greater than the specified value the survey will not be started and you will instead be notified what price was determined by the incidence test. At that point, you must raise the value of this property to be greater than or equal to that cost before attempting to start the survey again. This will immediately start the survey as long the incidence test was run within the last 21 days.
+    "cost": {
+      "nanos": "A String",
+      "currencyCode": "A String",
+      "costPerResponseNanos": "A String",
+      "maxCostPerResponseNanos": "A String",
     },
-    "surveyUrlId": "A String", # Unique survey ID, that is viewable in the URL of the Survey Creator UI
-    "questions": [ # List of questions defining the survey.
-      { # Message defining the question specifications.
-        "highValueLabel": "A String", # For rating questions, the text for the higher end of the scale, such as 'Best'. For numeric questions, a string representing a floating-point that is the maximum allowed number for a response.
-        "mustPickSuggestion": True or False, # Option to force the user to pick one of the open text suggestions. This requires that suggestions are provided for this question.
-        "thresholdAnswers": [ # The threshold/screener answer options, which will screen a user into the rest of the survey. These will be a subset of the answer option strings.
+    "surveyUrlId": "A String",
+    "questions": [
+      {
+        "highValueLabel": "A String",
+        "mustPickSuggestion": True or False,
+        "thresholdAnswers": [
           "A String",
         ],
-        "sentimentText": "A String", # Used by the Rating Scale with Text question type. This text goes along with the question field that is presented to the respondent, and is the actual text that the respondent is asked to rate.
-        "question": "A String", # Required question text shown to the respondent.
-        "numStars": "A String", # Number of stars to use for ratings questions.
-        "lowValueLabel": "A String", # For rating questions, the text for the lower end of the scale, such as 'Worst'. For numeric questions, a string representing a floating-point that is the minimum allowed number for a response.
-        "videoId": "A String", # The YouTube video ID to be show in video questions.
-        "answers": [ # Required list of answer options for a question.
+        "sentimentText": "A String",
+        "question": "A String",
+        "numStars": "A String",
+        "lowValueLabel": "A String",
+        "videoId": "A String",
+        "answers": [
           "A String",
         ],
-        "lastAnswerPositionPinned": True or False, # Currently only support pinning an answer option to the last position.
-        "hasOther": True or False, # Option to allow open-ended text box for Single Answer and Multiple Answer question types. This can be used with SINGLE_ANSWER, SINGLE_ANSWER_WITH_IMAGE, MULTIPLE_ANSWERS, and MULTIPLE_ANSWERS_WITH_IMAGE question types.
-        "unitOfMeasurementLabel": "A String", # Optional unit of measurement for display (for example: hours, people, miles).
+        "lastAnswerPositionPinned": True or False,
+        "hasOther": True or False,
+        "unitOfMeasurementLabel": "A String",
         "images": [
-          { # Container object for image data and alt_text.
-            "url": "A String", # The read-only URL for the hosted images.
-            "altText": "A String", # The alt text property used in image tags is required for all images.
-            "data": "A String", # Inline jpeg, gif, tiff, bmp, or png image raw bytes for an image question types.
+          {
+            "url": "A String",
+            "altText": "A String",
+            "data": "A String",
           },
         ],
-        "singleLineResponse": True or False, # Option to allow multiple line open text responses instead of a single line response. Note that we don't show auto-complete suggestions with multiple line responses.
-        "openTextSuggestions": [ # A list of suggested answers for open text question auto-complete. This is only valid if single_line_response is true.
+        "singleLineResponse": True or False,
+        "openTextSuggestions": [
           "A String",
         ],
-        "type": "A String", # Required field defining the question type. For details about configuring different type of questions, consult the question configuration guide.
-        "answerOrder": "A String", # The randomization option for multiple choice and multi-select questions. If not specified, this option defaults to randomize.
-        "openTextPlaceholder": "A String", # Placeholder text for an open text question.
+        "type": "A String",
+        "answerOrder": "A String",
+        "openTextPlaceholder": "A String",
       },
     ],
-    "wantedResponseCount": 42, # Number of responses desired for the survey.
-    "rejectionReason": { # Message representing why the survey was rejected from review, if it was. # Reason for the survey being rejected. Only present if the survey state is 'rejected'.
-      "explanation": "A String", # A human-readable explanation of what was wrong with the survey.
-      "type": "A String", # Which category of rejection this was. See the GCS Help Center for additional details on each category.
+    "wantedResponseCount": 42,
+    "rejectionReason": {
+      "explanation": "A String",
+      "type": "A String",
     },
   }
 
@@ -272,72 +272,72 @@
 Returns:
   An object of the form:
 
-    { # Representation of an individual survey object.
-      "owners": [ # List of email addresses for survey owners. Must contain at least the address of the user making the API call.
+    {
+      "owners": [
         "A String",
       ],
-      "description": "A String", # Text description of the survey.
-      "title": "A String", # Optional name that will be given to the survey.
-      "customerData": "A String", # Additional information to store on behalf of the API consumer and associate with this question. This binary blob is treated as opaque. This field is limited to 64K bytes.
-      "state": "A String", # State that the survey is in.
-      "audience": { # Specifications for the target audience of a survey run through the API. # Targeting-criteria message containing demographic information
-        "countrySubdivision": "A String", # Country subdivision (states/provinces/etc) that surveys should be targeted to. For all countries except GB, ISO-3166-2 subdivision code is required (eg. 'US-OH' for Ohio, United States). For GB, NUTS 1 statistical region codes for the United Kingdom is required (eg. 'UK-UKC' for North East England).
-        "mobileAppPanelId": "A String", # Key for predefined panel that causes survey to be sent to a predefined set of Opinion Rewards App users. You must set PopulationSource to ANDROID_APP_PANEL to use this field.
-        "country": "A String", # Required country code that surveys should be targeted to. Accepts standard ISO 3166-1 2 character language codes. For instance, 'US' for the United States, and 'GB' for the United Kingdom.
-        "ages": [ # Optional list of age buckets to target. Supported age buckets are: ['18-24', '25-34', '35-44', '45-54', '55-64', '65+']
+      "description": "A String",
+      "title": "A String",
+      "customerData": "A String",
+      "state": "A String",
+      "audience": {
+        "countrySubdivision": "A String",
+        "mobileAppPanelId": "A String",
+        "country": "A String",
+        "ages": [
           "A String",
         ],
-        "populationSource": "A String", # Online population source where the respondents are sampled from.
-        "languages": [ # Language code that surveys should be targeted to. For instance, 'en-US'. Surveys may target bilingual users by specifying a list of language codes (for example, 'de' and 'en-US'). In that case, all languages will be used for targeting users but the survey content (which is displayed) must match the first language listed. Accepts standard BCP47 language codes. See specification.
+        "populationSource": "A String",
+        "languages": [
           "A String",
         ],
-        "gender": "A String", # Optional gender to target.
+        "gender": "A String",
       },
-      "cost": { # Message defining the cost to run a given survey through API. # Cost to run the survey and collect the necessary number of responses.
-        "nanos": "A String", # Cost of survey in nano units of the given currency. DEPRECATED in favor of cost_per_response_nanos
-        "currencyCode": "A String", # Currency code that the cost is given in.
-        "costPerResponseNanos": "A String", # Cost per survey response in nano units of the given currency. To get the total cost for a survey, multiply this value by wanted_response_count.
-        "maxCostPerResponseNanos": "A String", # Threshold to start a survey automatically if the quoted price is at most this value. When a survey has a Screener (threshold) question, it must go through an incidence pricing test to determine the final cost per response. Typically you will have to make a followup call to start the survey giving the final computed cost per response. If the survey has no threshold_answers, setting this property will return an error. By specifying this property, you indicate the max price per response you are willing to pay in advance of the incidence test. If the price turns out to be lower than the specified value, the survey will begin immediately and you will be charged at the rate determined by the incidence pricing test. If the price turns out to be greater than the specified value the survey will not be started and you will instead be notified what price was determined by the incidence test. At that point, you must raise the value of this property to be greater than or equal to that cost before attempting to start the survey again. This will immediately start the survey as long the incidence test was run within the last 21 days.
+      "cost": {
+        "nanos": "A String",
+        "currencyCode": "A String",
+        "costPerResponseNanos": "A String",
+        "maxCostPerResponseNanos": "A String",
       },
-      "surveyUrlId": "A String", # Unique survey ID, that is viewable in the URL of the Survey Creator UI
-      "questions": [ # List of questions defining the survey.
-        { # Message defining the question specifications.
-          "highValueLabel": "A String", # For rating questions, the text for the higher end of the scale, such as 'Best'. For numeric questions, a string representing a floating-point that is the maximum allowed number for a response.
-          "mustPickSuggestion": True or False, # Option to force the user to pick one of the open text suggestions. This requires that suggestions are provided for this question.
-          "thresholdAnswers": [ # The threshold/screener answer options, which will screen a user into the rest of the survey. These will be a subset of the answer option strings.
+      "surveyUrlId": "A String",
+      "questions": [
+        {
+          "highValueLabel": "A String",
+          "mustPickSuggestion": True or False,
+          "thresholdAnswers": [
             "A String",
           ],
-          "sentimentText": "A String", # Used by the Rating Scale with Text question type. This text goes along with the question field that is presented to the respondent, and is the actual text that the respondent is asked to rate.
-          "question": "A String", # Required question text shown to the respondent.
-          "numStars": "A String", # Number of stars to use for ratings questions.
-          "lowValueLabel": "A String", # For rating questions, the text for the lower end of the scale, such as 'Worst'. For numeric questions, a string representing a floating-point that is the minimum allowed number for a response.
-          "videoId": "A String", # The YouTube video ID to be show in video questions.
-          "answers": [ # Required list of answer options for a question.
+          "sentimentText": "A String",
+          "question": "A String",
+          "numStars": "A String",
+          "lowValueLabel": "A String",
+          "videoId": "A String",
+          "answers": [
             "A String",
           ],
-          "lastAnswerPositionPinned": True or False, # Currently only support pinning an answer option to the last position.
-          "hasOther": True or False, # Option to allow open-ended text box for Single Answer and Multiple Answer question types. This can be used with SINGLE_ANSWER, SINGLE_ANSWER_WITH_IMAGE, MULTIPLE_ANSWERS, and MULTIPLE_ANSWERS_WITH_IMAGE question types.
-          "unitOfMeasurementLabel": "A String", # Optional unit of measurement for display (for example: hours, people, miles).
+          "lastAnswerPositionPinned": True or False,
+          "hasOther": True or False,
+          "unitOfMeasurementLabel": "A String",
           "images": [
-            { # Container object for image data and alt_text.
-              "url": "A String", # The read-only URL for the hosted images.
-              "altText": "A String", # The alt text property used in image tags is required for all images.
-              "data": "A String", # Inline jpeg, gif, tiff, bmp, or png image raw bytes for an image question types.
+            {
+              "url": "A String",
+              "altText": "A String",
+              "data": "A String",
             },
           ],
-          "singleLineResponse": True or False, # Option to allow multiple line open text responses instead of a single line response. Note that we don't show auto-complete suggestions with multiple line responses.
-          "openTextSuggestions": [ # A list of suggested answers for open text question auto-complete. This is only valid if single_line_response is true.
+          "singleLineResponse": True or False,
+          "openTextSuggestions": [
             "A String",
           ],
-          "type": "A String", # Required field defining the question type. For details about configuring different type of questions, consult the question configuration guide.
-          "answerOrder": "A String", # The randomization option for multiple choice and multi-select questions. If not specified, this option defaults to randomize.
-          "openTextPlaceholder": "A String", # Placeholder text for an open text question.
+          "type": "A String",
+          "answerOrder": "A String",
+          "openTextPlaceholder": "A String",
         },
       ],
-      "wantedResponseCount": 42, # Number of responses desired for the survey.
-      "rejectionReason": { # Message representing why the survey was rejected from review, if it was. # Reason for the survey being rejected. Only present if the survey state is 'rejected'.
-        "explanation": "A String", # A human-readable explanation of what was wrong with the survey.
-        "type": "A String", # Which category of rejection this was. See the GCS Help Center for additional details on each category.
+      "wantedResponseCount": 42,
+      "rejectionReason": {
+        "explanation": "A String",
+        "type": "A String",
       },
     }</pre>
 </div>
@@ -365,72 +365,72 @@
       "resultPerPage": 42,
     },
     "resources": [ # An individual survey resource.
-      { # Representation of an individual survey object.
-          "owners": [ # List of email addresses for survey owners. Must contain at least the address of the user making the API call.
+      {
+          "owners": [
             "A String",
           ],
-          "description": "A String", # Text description of the survey.
-          "title": "A String", # Optional name that will be given to the survey.
-          "customerData": "A String", # Additional information to store on behalf of the API consumer and associate with this question. This binary blob is treated as opaque. This field is limited to 64K bytes.
-          "state": "A String", # State that the survey is in.
-          "audience": { # Specifications for the target audience of a survey run through the API. # Targeting-criteria message containing demographic information
-            "countrySubdivision": "A String", # Country subdivision (states/provinces/etc) that surveys should be targeted to. For all countries except GB, ISO-3166-2 subdivision code is required (eg. 'US-OH' for Ohio, United States). For GB, NUTS 1 statistical region codes for the United Kingdom is required (eg. 'UK-UKC' for North East England).
-            "mobileAppPanelId": "A String", # Key for predefined panel that causes survey to be sent to a predefined set of Opinion Rewards App users. You must set PopulationSource to ANDROID_APP_PANEL to use this field.
-            "country": "A String", # Required country code that surveys should be targeted to. Accepts standard ISO 3166-1 2 character language codes. For instance, 'US' for the United States, and 'GB' for the United Kingdom.
-            "ages": [ # Optional list of age buckets to target. Supported age buckets are: ['18-24', '25-34', '35-44', '45-54', '55-64', '65+']
+          "description": "A String",
+          "title": "A String",
+          "customerData": "A String",
+          "state": "A String",
+          "audience": {
+            "countrySubdivision": "A String",
+            "mobileAppPanelId": "A String",
+            "country": "A String",
+            "ages": [
               "A String",
             ],
-            "populationSource": "A String", # Online population source where the respondents are sampled from.
-            "languages": [ # Language code that surveys should be targeted to. For instance, 'en-US'. Surveys may target bilingual users by specifying a list of language codes (for example, 'de' and 'en-US'). In that case, all languages will be used for targeting users but the survey content (which is displayed) must match the first language listed. Accepts standard BCP47 language codes. See specification.
+            "populationSource": "A String",
+            "languages": [
               "A String",
             ],
-            "gender": "A String", # Optional gender to target.
+            "gender": "A String",
           },
-          "cost": { # Message defining the cost to run a given survey through API. # Cost to run the survey and collect the necessary number of responses.
-            "nanos": "A String", # Cost of survey in nano units of the given currency. DEPRECATED in favor of cost_per_response_nanos
-            "currencyCode": "A String", # Currency code that the cost is given in.
-            "costPerResponseNanos": "A String", # Cost per survey response in nano units of the given currency. To get the total cost for a survey, multiply this value by wanted_response_count.
-            "maxCostPerResponseNanos": "A String", # Threshold to start a survey automatically if the quoted price is at most this value. When a survey has a Screener (threshold) question, it must go through an incidence pricing test to determine the final cost per response. Typically you will have to make a followup call to start the survey giving the final computed cost per response. If the survey has no threshold_answers, setting this property will return an error. By specifying this property, you indicate the max price per response you are willing to pay in advance of the incidence test. If the price turns out to be lower than the specified value, the survey will begin immediately and you will be charged at the rate determined by the incidence pricing test. If the price turns out to be greater than the specified value the survey will not be started and you will instead be notified what price was determined by the incidence test. At that point, you must raise the value of this property to be greater than or equal to that cost before attempting to start the survey again. This will immediately start the survey as long the incidence test was run within the last 21 days.
+          "cost": {
+            "nanos": "A String",
+            "currencyCode": "A String",
+            "costPerResponseNanos": "A String",
+            "maxCostPerResponseNanos": "A String",
           },
-          "surveyUrlId": "A String", # Unique survey ID, that is viewable in the URL of the Survey Creator UI
-          "questions": [ # List of questions defining the survey.
-            { # Message defining the question specifications.
-              "highValueLabel": "A String", # For rating questions, the text for the higher end of the scale, such as 'Best'. For numeric questions, a string representing a floating-point that is the maximum allowed number for a response.
-              "mustPickSuggestion": True or False, # Option to force the user to pick one of the open text suggestions. This requires that suggestions are provided for this question.
-              "thresholdAnswers": [ # The threshold/screener answer options, which will screen a user into the rest of the survey. These will be a subset of the answer option strings.
+          "surveyUrlId": "A String",
+          "questions": [
+            {
+              "highValueLabel": "A String",
+              "mustPickSuggestion": True or False,
+              "thresholdAnswers": [
                 "A String",
               ],
-              "sentimentText": "A String", # Used by the Rating Scale with Text question type. This text goes along with the question field that is presented to the respondent, and is the actual text that the respondent is asked to rate.
-              "question": "A String", # Required question text shown to the respondent.
-              "numStars": "A String", # Number of stars to use for ratings questions.
-              "lowValueLabel": "A String", # For rating questions, the text for the lower end of the scale, such as 'Worst'. For numeric questions, a string representing a floating-point that is the minimum allowed number for a response.
-              "videoId": "A String", # The YouTube video ID to be show in video questions.
-              "answers": [ # Required list of answer options for a question.
+              "sentimentText": "A String",
+              "question": "A String",
+              "numStars": "A String",
+              "lowValueLabel": "A String",
+              "videoId": "A String",
+              "answers": [
                 "A String",
               ],
-              "lastAnswerPositionPinned": True or False, # Currently only support pinning an answer option to the last position.
-              "hasOther": True or False, # Option to allow open-ended text box for Single Answer and Multiple Answer question types. This can be used with SINGLE_ANSWER, SINGLE_ANSWER_WITH_IMAGE, MULTIPLE_ANSWERS, and MULTIPLE_ANSWERS_WITH_IMAGE question types.
-              "unitOfMeasurementLabel": "A String", # Optional unit of measurement for display (for example: hours, people, miles).
+              "lastAnswerPositionPinned": True or False,
+              "hasOther": True or False,
+              "unitOfMeasurementLabel": "A String",
               "images": [
-                { # Container object for image data and alt_text.
-                  "url": "A String", # The read-only URL for the hosted images.
-                  "altText": "A String", # The alt text property used in image tags is required for all images.
-                  "data": "A String", # Inline jpeg, gif, tiff, bmp, or png image raw bytes for an image question types.
+                {
+                  "url": "A String",
+                  "altText": "A String",
+                  "data": "A String",
                 },
               ],
-              "singleLineResponse": True or False, # Option to allow multiple line open text responses instead of a single line response. Note that we don't show auto-complete suggestions with multiple line responses.
-              "openTextSuggestions": [ # A list of suggested answers for open text question auto-complete. This is only valid if single_line_response is true.
+              "singleLineResponse": True or False,
+              "openTextSuggestions": [
                 "A String",
               ],
-              "type": "A String", # Required field defining the question type. For details about configuring different type of questions, consult the question configuration guide.
-              "answerOrder": "A String", # The randomization option for multiple choice and multi-select questions. If not specified, this option defaults to randomize.
-              "openTextPlaceholder": "A String", # Placeholder text for an open text question.
+              "type": "A String",
+              "answerOrder": "A String",
+              "openTextPlaceholder": "A String",
             },
           ],
-          "wantedResponseCount": 42, # Number of responses desired for the survey.
-          "rejectionReason": { # Message representing why the survey was rejected from review, if it was. # Reason for the survey being rejected. Only present if the survey state is 'rejected'.
-            "explanation": "A String", # A human-readable explanation of what was wrong with the survey.
-            "type": "A String", # Which category of rejection this was. See the GCS Help Center for additional details on each category.
+          "wantedResponseCount": 42,
+          "rejectionReason": {
+            "explanation": "A String",
+            "type": "A String",
           },
         },
     ],
@@ -456,72 +456,72 @@
   An object of the form:
 
     {
-    "resource": { # Representation of an individual survey object. # Survey object containing the specification of the started Survey.
-        "owners": [ # List of email addresses for survey owners. Must contain at least the address of the user making the API call.
+    "resource": { # Survey object containing the specification of the started Survey.
+        "owners": [
           "A String",
         ],
-        "description": "A String", # Text description of the survey.
-        "title": "A String", # Optional name that will be given to the survey.
-        "customerData": "A String", # Additional information to store on behalf of the API consumer and associate with this question. This binary blob is treated as opaque. This field is limited to 64K bytes.
-        "state": "A String", # State that the survey is in.
-        "audience": { # Specifications for the target audience of a survey run through the API. # Targeting-criteria message containing demographic information
-          "countrySubdivision": "A String", # Country subdivision (states/provinces/etc) that surveys should be targeted to. For all countries except GB, ISO-3166-2 subdivision code is required (eg. 'US-OH' for Ohio, United States). For GB, NUTS 1 statistical region codes for the United Kingdom is required (eg. 'UK-UKC' for North East England).
-          "mobileAppPanelId": "A String", # Key for predefined panel that causes survey to be sent to a predefined set of Opinion Rewards App users. You must set PopulationSource to ANDROID_APP_PANEL to use this field.
-          "country": "A String", # Required country code that surveys should be targeted to. Accepts standard ISO 3166-1 2 character language codes. For instance, 'US' for the United States, and 'GB' for the United Kingdom.
-          "ages": [ # Optional list of age buckets to target. Supported age buckets are: ['18-24', '25-34', '35-44', '45-54', '55-64', '65+']
+        "description": "A String",
+        "title": "A String",
+        "customerData": "A String",
+        "state": "A String",
+        "audience": {
+          "countrySubdivision": "A String",
+          "mobileAppPanelId": "A String",
+          "country": "A String",
+          "ages": [
             "A String",
           ],
-          "populationSource": "A String", # Online population source where the respondents are sampled from.
-          "languages": [ # Language code that surveys should be targeted to. For instance, 'en-US'. Surveys may target bilingual users by specifying a list of language codes (for example, 'de' and 'en-US'). In that case, all languages will be used for targeting users but the survey content (which is displayed) must match the first language listed. Accepts standard BCP47 language codes. See specification.
+          "populationSource": "A String",
+          "languages": [
             "A String",
           ],
-          "gender": "A String", # Optional gender to target.
+          "gender": "A String",
         },
-        "cost": { # Message defining the cost to run a given survey through API. # Cost to run the survey and collect the necessary number of responses.
-          "nanos": "A String", # Cost of survey in nano units of the given currency. DEPRECATED in favor of cost_per_response_nanos
-          "currencyCode": "A String", # Currency code that the cost is given in.
-          "costPerResponseNanos": "A String", # Cost per survey response in nano units of the given currency. To get the total cost for a survey, multiply this value by wanted_response_count.
-          "maxCostPerResponseNanos": "A String", # Threshold to start a survey automatically if the quoted price is at most this value. When a survey has a Screener (threshold) question, it must go through an incidence pricing test to determine the final cost per response. Typically you will have to make a followup call to start the survey giving the final computed cost per response. If the survey has no threshold_answers, setting this property will return an error. By specifying this property, you indicate the max price per response you are willing to pay in advance of the incidence test. If the price turns out to be lower than the specified value, the survey will begin immediately and you will be charged at the rate determined by the incidence pricing test. If the price turns out to be greater than the specified value the survey will not be started and you will instead be notified what price was determined by the incidence test. At that point, you must raise the value of this property to be greater than or equal to that cost before attempting to start the survey again. This will immediately start the survey as long the incidence test was run within the last 21 days.
+        "cost": {
+          "nanos": "A String",
+          "currencyCode": "A String",
+          "costPerResponseNanos": "A String",
+          "maxCostPerResponseNanos": "A String",
         },
-        "surveyUrlId": "A String", # Unique survey ID, that is viewable in the URL of the Survey Creator UI
-        "questions": [ # List of questions defining the survey.
-          { # Message defining the question specifications.
-            "highValueLabel": "A String", # For rating questions, the text for the higher end of the scale, such as 'Best'. For numeric questions, a string representing a floating-point that is the maximum allowed number for a response.
-            "mustPickSuggestion": True or False, # Option to force the user to pick one of the open text suggestions. This requires that suggestions are provided for this question.
-            "thresholdAnswers": [ # The threshold/screener answer options, which will screen a user into the rest of the survey. These will be a subset of the answer option strings.
+        "surveyUrlId": "A String",
+        "questions": [
+          {
+            "highValueLabel": "A String",
+            "mustPickSuggestion": True or False,
+            "thresholdAnswers": [
               "A String",
             ],
-            "sentimentText": "A String", # Used by the Rating Scale with Text question type. This text goes along with the question field that is presented to the respondent, and is the actual text that the respondent is asked to rate.
-            "question": "A String", # Required question text shown to the respondent.
-            "numStars": "A String", # Number of stars to use for ratings questions.
-            "lowValueLabel": "A String", # For rating questions, the text for the lower end of the scale, such as 'Worst'. For numeric questions, a string representing a floating-point that is the minimum allowed number for a response.
-            "videoId": "A String", # The YouTube video ID to be show in video questions.
-            "answers": [ # Required list of answer options for a question.
+            "sentimentText": "A String",
+            "question": "A String",
+            "numStars": "A String",
+            "lowValueLabel": "A String",
+            "videoId": "A String",
+            "answers": [
               "A String",
             ],
-            "lastAnswerPositionPinned": True or False, # Currently only support pinning an answer option to the last position.
-            "hasOther": True or False, # Option to allow open-ended text box for Single Answer and Multiple Answer question types. This can be used with SINGLE_ANSWER, SINGLE_ANSWER_WITH_IMAGE, MULTIPLE_ANSWERS, and MULTIPLE_ANSWERS_WITH_IMAGE question types.
-            "unitOfMeasurementLabel": "A String", # Optional unit of measurement for display (for example: hours, people, miles).
+            "lastAnswerPositionPinned": True or False,
+            "hasOther": True or False,
+            "unitOfMeasurementLabel": "A String",
             "images": [
-              { # Container object for image data and alt_text.
-                "url": "A String", # The read-only URL for the hosted images.
-                "altText": "A String", # The alt text property used in image tags is required for all images.
-                "data": "A String", # Inline jpeg, gif, tiff, bmp, or png image raw bytes for an image question types.
+              {
+                "url": "A String",
+                "altText": "A String",
+                "data": "A String",
               },
             ],
-            "singleLineResponse": True or False, # Option to allow multiple line open text responses instead of a single line response. Note that we don't show auto-complete suggestions with multiple line responses.
-            "openTextSuggestions": [ # A list of suggested answers for open text question auto-complete. This is only valid if single_line_response is true.
+            "singleLineResponse": True or False,
+            "openTextSuggestions": [
               "A String",
             ],
-            "type": "A String", # Required field defining the question type. For details about configuring different type of questions, consult the question configuration guide.
-            "answerOrder": "A String", # The randomization option for multiple choice and multi-select questions. If not specified, this option defaults to randomize.
-            "openTextPlaceholder": "A String", # Placeholder text for an open text question.
+            "type": "A String",
+            "answerOrder": "A String",
+            "openTextPlaceholder": "A String",
           },
         ],
-        "wantedResponseCount": 42, # Number of responses desired for the survey.
-        "rejectionReason": { # Message representing why the survey was rejected from review, if it was. # Reason for the survey being rejected. Only present if the survey state is 'rejected'.
-          "explanation": "A String", # A human-readable explanation of what was wrong with the survey.
-          "type": "A String", # Which category of rejection this was. See the GCS Help Center for additional details on each category.
+        "wantedResponseCount": 42,
+        "rejectionReason": {
+          "explanation": "A String",
+          "type": "A String",
         },
       },
     "requestId": "A String", # Unique request ID used for logging and debugging. Please include in any error reporting or troubleshooting requests.
@@ -539,72 +539,72 @@
   An object of the form:
 
     {
-    "resource": { # Representation of an individual survey object. # Survey object containing the specification of the stopped Survey.
-        "owners": [ # List of email addresses for survey owners. Must contain at least the address of the user making the API call.
+    "resource": { # Survey object containing the specification of the stopped Survey.
+        "owners": [
           "A String",
         ],
-        "description": "A String", # Text description of the survey.
-        "title": "A String", # Optional name that will be given to the survey.
-        "customerData": "A String", # Additional information to store on behalf of the API consumer and associate with this question. This binary blob is treated as opaque. This field is limited to 64K bytes.
-        "state": "A String", # State that the survey is in.
-        "audience": { # Specifications for the target audience of a survey run through the API. # Targeting-criteria message containing demographic information
-          "countrySubdivision": "A String", # Country subdivision (states/provinces/etc) that surveys should be targeted to. For all countries except GB, ISO-3166-2 subdivision code is required (eg. 'US-OH' for Ohio, United States). For GB, NUTS 1 statistical region codes for the United Kingdom is required (eg. 'UK-UKC' for North East England).
-          "mobileAppPanelId": "A String", # Key for predefined panel that causes survey to be sent to a predefined set of Opinion Rewards App users. You must set PopulationSource to ANDROID_APP_PANEL to use this field.
-          "country": "A String", # Required country code that surveys should be targeted to. Accepts standard ISO 3166-1 2 character language codes. For instance, 'US' for the United States, and 'GB' for the United Kingdom.
-          "ages": [ # Optional list of age buckets to target. Supported age buckets are: ['18-24', '25-34', '35-44', '45-54', '55-64', '65+']
+        "description": "A String",
+        "title": "A String",
+        "customerData": "A String",
+        "state": "A String",
+        "audience": {
+          "countrySubdivision": "A String",
+          "mobileAppPanelId": "A String",
+          "country": "A String",
+          "ages": [
             "A String",
           ],
-          "populationSource": "A String", # Online population source where the respondents are sampled from.
-          "languages": [ # Language code that surveys should be targeted to. For instance, 'en-US'. Surveys may target bilingual users by specifying a list of language codes (for example, 'de' and 'en-US'). In that case, all languages will be used for targeting users but the survey content (which is displayed) must match the first language listed. Accepts standard BCP47 language codes. See specification.
+          "populationSource": "A String",
+          "languages": [
             "A String",
           ],
-          "gender": "A String", # Optional gender to target.
+          "gender": "A String",
         },
-        "cost": { # Message defining the cost to run a given survey through API. # Cost to run the survey and collect the necessary number of responses.
-          "nanos": "A String", # Cost of survey in nano units of the given currency. DEPRECATED in favor of cost_per_response_nanos
-          "currencyCode": "A String", # Currency code that the cost is given in.
-          "costPerResponseNanos": "A String", # Cost per survey response in nano units of the given currency. To get the total cost for a survey, multiply this value by wanted_response_count.
-          "maxCostPerResponseNanos": "A String", # Threshold to start a survey automatically if the quoted price is at most this value. When a survey has a Screener (threshold) question, it must go through an incidence pricing test to determine the final cost per response. Typically you will have to make a followup call to start the survey giving the final computed cost per response. If the survey has no threshold_answers, setting this property will return an error. By specifying this property, you indicate the max price per response you are willing to pay in advance of the incidence test. If the price turns out to be lower than the specified value, the survey will begin immediately and you will be charged at the rate determined by the incidence pricing test. If the price turns out to be greater than the specified value the survey will not be started and you will instead be notified what price was determined by the incidence test. At that point, you must raise the value of this property to be greater than or equal to that cost before attempting to start the survey again. This will immediately start the survey as long the incidence test was run within the last 21 days.
+        "cost": {
+          "nanos": "A String",
+          "currencyCode": "A String",
+          "costPerResponseNanos": "A String",
+          "maxCostPerResponseNanos": "A String",
         },
-        "surveyUrlId": "A String", # Unique survey ID, that is viewable in the URL of the Survey Creator UI
-        "questions": [ # List of questions defining the survey.
-          { # Message defining the question specifications.
-            "highValueLabel": "A String", # For rating questions, the text for the higher end of the scale, such as 'Best'. For numeric questions, a string representing a floating-point that is the maximum allowed number for a response.
-            "mustPickSuggestion": True or False, # Option to force the user to pick one of the open text suggestions. This requires that suggestions are provided for this question.
-            "thresholdAnswers": [ # The threshold/screener answer options, which will screen a user into the rest of the survey. These will be a subset of the answer option strings.
+        "surveyUrlId": "A String",
+        "questions": [
+          {
+            "highValueLabel": "A String",
+            "mustPickSuggestion": True or False,
+            "thresholdAnswers": [
               "A String",
             ],
-            "sentimentText": "A String", # Used by the Rating Scale with Text question type. This text goes along with the question field that is presented to the respondent, and is the actual text that the respondent is asked to rate.
-            "question": "A String", # Required question text shown to the respondent.
-            "numStars": "A String", # Number of stars to use for ratings questions.
-            "lowValueLabel": "A String", # For rating questions, the text for the lower end of the scale, such as 'Worst'. For numeric questions, a string representing a floating-point that is the minimum allowed number for a response.
-            "videoId": "A String", # The YouTube video ID to be show in video questions.
-            "answers": [ # Required list of answer options for a question.
+            "sentimentText": "A String",
+            "question": "A String",
+            "numStars": "A String",
+            "lowValueLabel": "A String",
+            "videoId": "A String",
+            "answers": [
               "A String",
             ],
-            "lastAnswerPositionPinned": True or False, # Currently only support pinning an answer option to the last position.
-            "hasOther": True or False, # Option to allow open-ended text box for Single Answer and Multiple Answer question types. This can be used with SINGLE_ANSWER, SINGLE_ANSWER_WITH_IMAGE, MULTIPLE_ANSWERS, and MULTIPLE_ANSWERS_WITH_IMAGE question types.
-            "unitOfMeasurementLabel": "A String", # Optional unit of measurement for display (for example: hours, people, miles).
+            "lastAnswerPositionPinned": True or False,
+            "hasOther": True or False,
+            "unitOfMeasurementLabel": "A String",
             "images": [
-              { # Container object for image data and alt_text.
-                "url": "A String", # The read-only URL for the hosted images.
-                "altText": "A String", # The alt text property used in image tags is required for all images.
-                "data": "A String", # Inline jpeg, gif, tiff, bmp, or png image raw bytes for an image question types.
+              {
+                "url": "A String",
+                "altText": "A String",
+                "data": "A String",
               },
             ],
-            "singleLineResponse": True or False, # Option to allow multiple line open text responses instead of a single line response. Note that we don't show auto-complete suggestions with multiple line responses.
-            "openTextSuggestions": [ # A list of suggested answers for open text question auto-complete. This is only valid if single_line_response is true.
+            "singleLineResponse": True or False,
+            "openTextSuggestions": [
               "A String",
             ],
-            "type": "A String", # Required field defining the question type. For details about configuring different type of questions, consult the question configuration guide.
-            "answerOrder": "A String", # The randomization option for multiple choice and multi-select questions. If not specified, this option defaults to randomize.
-            "openTextPlaceholder": "A String", # Placeholder text for an open text question.
+            "type": "A String",
+            "answerOrder": "A String",
+            "openTextPlaceholder": "A String",
           },
         ],
-        "wantedResponseCount": 42, # Number of responses desired for the survey.
-        "rejectionReason": { # Message representing why the survey was rejected from review, if it was. # Reason for the survey being rejected. Only present if the survey state is 'rejected'.
-          "explanation": "A String", # A human-readable explanation of what was wrong with the survey.
-          "type": "A String", # Which category of rejection this was. See the GCS Help Center for additional details on each category.
+        "wantedResponseCount": 42,
+        "rejectionReason": {
+          "explanation": "A String",
+          "type": "A String",
         },
       },
     "requestId": "A String", # Unique request ID used for logging and debugging. Please include in any error reporting or troubleshooting requests.
@@ -620,72 +620,72 @@
   body: object, The request body. (required)
     The object takes the form of:
 
-{ # Representation of an individual survey object.
-    "owners": [ # List of email addresses for survey owners. Must contain at least the address of the user making the API call.
+{
+    "owners": [
       "A String",
     ],
-    "description": "A String", # Text description of the survey.
-    "title": "A String", # Optional name that will be given to the survey.
-    "customerData": "A String", # Additional information to store on behalf of the API consumer and associate with this question. This binary blob is treated as opaque. This field is limited to 64K bytes.
-    "state": "A String", # State that the survey is in.
-    "audience": { # Specifications for the target audience of a survey run through the API. # Targeting-criteria message containing demographic information
-      "countrySubdivision": "A String", # Country subdivision (states/provinces/etc) that surveys should be targeted to. For all countries except GB, ISO-3166-2 subdivision code is required (eg. 'US-OH' for Ohio, United States). For GB, NUTS 1 statistical region codes for the United Kingdom is required (eg. 'UK-UKC' for North East England).
-      "mobileAppPanelId": "A String", # Key for predefined panel that causes survey to be sent to a predefined set of Opinion Rewards App users. You must set PopulationSource to ANDROID_APP_PANEL to use this field.
-      "country": "A String", # Required country code that surveys should be targeted to. Accepts standard ISO 3166-1 2 character language codes. For instance, 'US' for the United States, and 'GB' for the United Kingdom.
-      "ages": [ # Optional list of age buckets to target. Supported age buckets are: ['18-24', '25-34', '35-44', '45-54', '55-64', '65+']
+    "description": "A String",
+    "title": "A String",
+    "customerData": "A String",
+    "state": "A String",
+    "audience": {
+      "countrySubdivision": "A String",
+      "mobileAppPanelId": "A String",
+      "country": "A String",
+      "ages": [
         "A String",
       ],
-      "populationSource": "A String", # Online population source where the respondents are sampled from.
-      "languages": [ # Language code that surveys should be targeted to. For instance, 'en-US'. Surveys may target bilingual users by specifying a list of language codes (for example, 'de' and 'en-US'). In that case, all languages will be used for targeting users but the survey content (which is displayed) must match the first language listed. Accepts standard BCP47 language codes. See specification.
+      "populationSource": "A String",
+      "languages": [
         "A String",
       ],
-      "gender": "A String", # Optional gender to target.
+      "gender": "A String",
     },
-    "cost": { # Message defining the cost to run a given survey through API. # Cost to run the survey and collect the necessary number of responses.
-      "nanos": "A String", # Cost of survey in nano units of the given currency. DEPRECATED in favor of cost_per_response_nanos
-      "currencyCode": "A String", # Currency code that the cost is given in.
-      "costPerResponseNanos": "A String", # Cost per survey response in nano units of the given currency. To get the total cost for a survey, multiply this value by wanted_response_count.
-      "maxCostPerResponseNanos": "A String", # Threshold to start a survey automatically if the quoted price is at most this value. When a survey has a Screener (threshold) question, it must go through an incidence pricing test to determine the final cost per response. Typically you will have to make a followup call to start the survey giving the final computed cost per response. If the survey has no threshold_answers, setting this property will return an error. By specifying this property, you indicate the max price per response you are willing to pay in advance of the incidence test. If the price turns out to be lower than the specified value, the survey will begin immediately and you will be charged at the rate determined by the incidence pricing test. If the price turns out to be greater than the specified value the survey will not be started and you will instead be notified what price was determined by the incidence test. At that point, you must raise the value of this property to be greater than or equal to that cost before attempting to start the survey again. This will immediately start the survey as long the incidence test was run within the last 21 days.
+    "cost": {
+      "nanos": "A String",
+      "currencyCode": "A String",
+      "costPerResponseNanos": "A String",
+      "maxCostPerResponseNanos": "A String",
     },
-    "surveyUrlId": "A String", # Unique survey ID, that is viewable in the URL of the Survey Creator UI
-    "questions": [ # List of questions defining the survey.
-      { # Message defining the question specifications.
-        "highValueLabel": "A String", # For rating questions, the text for the higher end of the scale, such as 'Best'. For numeric questions, a string representing a floating-point that is the maximum allowed number for a response.
-        "mustPickSuggestion": True or False, # Option to force the user to pick one of the open text suggestions. This requires that suggestions are provided for this question.
-        "thresholdAnswers": [ # The threshold/screener answer options, which will screen a user into the rest of the survey. These will be a subset of the answer option strings.
+    "surveyUrlId": "A String",
+    "questions": [
+      {
+        "highValueLabel": "A String",
+        "mustPickSuggestion": True or False,
+        "thresholdAnswers": [
           "A String",
         ],
-        "sentimentText": "A String", # Used by the Rating Scale with Text question type. This text goes along with the question field that is presented to the respondent, and is the actual text that the respondent is asked to rate.
-        "question": "A String", # Required question text shown to the respondent.
-        "numStars": "A String", # Number of stars to use for ratings questions.
-        "lowValueLabel": "A String", # For rating questions, the text for the lower end of the scale, such as 'Worst'. For numeric questions, a string representing a floating-point that is the minimum allowed number for a response.
-        "videoId": "A String", # The YouTube video ID to be show in video questions.
-        "answers": [ # Required list of answer options for a question.
+        "sentimentText": "A String",
+        "question": "A String",
+        "numStars": "A String",
+        "lowValueLabel": "A String",
+        "videoId": "A String",
+        "answers": [
           "A String",
         ],
-        "lastAnswerPositionPinned": True or False, # Currently only support pinning an answer option to the last position.
-        "hasOther": True or False, # Option to allow open-ended text box for Single Answer and Multiple Answer question types. This can be used with SINGLE_ANSWER, SINGLE_ANSWER_WITH_IMAGE, MULTIPLE_ANSWERS, and MULTIPLE_ANSWERS_WITH_IMAGE question types.
-        "unitOfMeasurementLabel": "A String", # Optional unit of measurement for display (for example: hours, people, miles).
+        "lastAnswerPositionPinned": True or False,
+        "hasOther": True or False,
+        "unitOfMeasurementLabel": "A String",
         "images": [
-          { # Container object for image data and alt_text.
-            "url": "A String", # The read-only URL for the hosted images.
-            "altText": "A String", # The alt text property used in image tags is required for all images.
-            "data": "A String", # Inline jpeg, gif, tiff, bmp, or png image raw bytes for an image question types.
+          {
+            "url": "A String",
+            "altText": "A String",
+            "data": "A String",
           },
         ],
-        "singleLineResponse": True or False, # Option to allow multiple line open text responses instead of a single line response. Note that we don't show auto-complete suggestions with multiple line responses.
-        "openTextSuggestions": [ # A list of suggested answers for open text question auto-complete. This is only valid if single_line_response is true.
+        "singleLineResponse": True or False,
+        "openTextSuggestions": [
           "A String",
         ],
-        "type": "A String", # Required field defining the question type. For details about configuring different type of questions, consult the question configuration guide.
-        "answerOrder": "A String", # The randomization option for multiple choice and multi-select questions. If not specified, this option defaults to randomize.
-        "openTextPlaceholder": "A String", # Placeholder text for an open text question.
+        "type": "A String",
+        "answerOrder": "A String",
+        "openTextPlaceholder": "A String",
       },
     ],
-    "wantedResponseCount": 42, # Number of responses desired for the survey.
-    "rejectionReason": { # Message representing why the survey was rejected from review, if it was. # Reason for the survey being rejected. Only present if the survey state is 'rejected'.
-      "explanation": "A String", # A human-readable explanation of what was wrong with the survey.
-      "type": "A String", # Which category of rejection this was. See the GCS Help Center for additional details on each category.
+    "wantedResponseCount": 42,
+    "rejectionReason": {
+      "explanation": "A String",
+      "type": "A String",
     },
   }
 
@@ -693,72 +693,72 @@
 Returns:
   An object of the form:
 
-    { # Representation of an individual survey object.
-      "owners": [ # List of email addresses for survey owners. Must contain at least the address of the user making the API call.
+    {
+      "owners": [
         "A String",
       ],
-      "description": "A String", # Text description of the survey.
-      "title": "A String", # Optional name that will be given to the survey.
-      "customerData": "A String", # Additional information to store on behalf of the API consumer and associate with this question. This binary blob is treated as opaque. This field is limited to 64K bytes.
-      "state": "A String", # State that the survey is in.
-      "audience": { # Specifications for the target audience of a survey run through the API. # Targeting-criteria message containing demographic information
-        "countrySubdivision": "A String", # Country subdivision (states/provinces/etc) that surveys should be targeted to. For all countries except GB, ISO-3166-2 subdivision code is required (eg. 'US-OH' for Ohio, United States). For GB, NUTS 1 statistical region codes for the United Kingdom is required (eg. 'UK-UKC' for North East England).
-        "mobileAppPanelId": "A String", # Key for predefined panel that causes survey to be sent to a predefined set of Opinion Rewards App users. You must set PopulationSource to ANDROID_APP_PANEL to use this field.
-        "country": "A String", # Required country code that surveys should be targeted to. Accepts standard ISO 3166-1 2 character language codes. For instance, 'US' for the United States, and 'GB' for the United Kingdom.
-        "ages": [ # Optional list of age buckets to target. Supported age buckets are: ['18-24', '25-34', '35-44', '45-54', '55-64', '65+']
+      "description": "A String",
+      "title": "A String",
+      "customerData": "A String",
+      "state": "A String",
+      "audience": {
+        "countrySubdivision": "A String",
+        "mobileAppPanelId": "A String",
+        "country": "A String",
+        "ages": [
           "A String",
         ],
-        "populationSource": "A String", # Online population source where the respondents are sampled from.
-        "languages": [ # Language code that surveys should be targeted to. For instance, 'en-US'. Surveys may target bilingual users by specifying a list of language codes (for example, 'de' and 'en-US'). In that case, all languages will be used for targeting users but the survey content (which is displayed) must match the first language listed. Accepts standard BCP47 language codes. See specification.
+        "populationSource": "A String",
+        "languages": [
           "A String",
         ],
-        "gender": "A String", # Optional gender to target.
+        "gender": "A String",
       },
-      "cost": { # Message defining the cost to run a given survey through API. # Cost to run the survey and collect the necessary number of responses.
-        "nanos": "A String", # Cost of survey in nano units of the given currency. DEPRECATED in favor of cost_per_response_nanos
-        "currencyCode": "A String", # Currency code that the cost is given in.
-        "costPerResponseNanos": "A String", # Cost per survey response in nano units of the given currency. To get the total cost for a survey, multiply this value by wanted_response_count.
-        "maxCostPerResponseNanos": "A String", # Threshold to start a survey automatically if the quoted price is at most this value. When a survey has a Screener (threshold) question, it must go through an incidence pricing test to determine the final cost per response. Typically you will have to make a followup call to start the survey giving the final computed cost per response. If the survey has no threshold_answers, setting this property will return an error. By specifying this property, you indicate the max price per response you are willing to pay in advance of the incidence test. If the price turns out to be lower than the specified value, the survey will begin immediately and you will be charged at the rate determined by the incidence pricing test. If the price turns out to be greater than the specified value the survey will not be started and you will instead be notified what price was determined by the incidence test. At that point, you must raise the value of this property to be greater than or equal to that cost before attempting to start the survey again. This will immediately start the survey as long the incidence test was run within the last 21 days.
+      "cost": {
+        "nanos": "A String",
+        "currencyCode": "A String",
+        "costPerResponseNanos": "A String",
+        "maxCostPerResponseNanos": "A String",
       },
-      "surveyUrlId": "A String", # Unique survey ID, that is viewable in the URL of the Survey Creator UI
-      "questions": [ # List of questions defining the survey.
-        { # Message defining the question specifications.
-          "highValueLabel": "A String", # For rating questions, the text for the higher end of the scale, such as 'Best'. For numeric questions, a string representing a floating-point that is the maximum allowed number for a response.
-          "mustPickSuggestion": True or False, # Option to force the user to pick one of the open text suggestions. This requires that suggestions are provided for this question.
-          "thresholdAnswers": [ # The threshold/screener answer options, which will screen a user into the rest of the survey. These will be a subset of the answer option strings.
+      "surveyUrlId": "A String",
+      "questions": [
+        {
+          "highValueLabel": "A String",
+          "mustPickSuggestion": True or False,
+          "thresholdAnswers": [
             "A String",
           ],
-          "sentimentText": "A String", # Used by the Rating Scale with Text question type. This text goes along with the question field that is presented to the respondent, and is the actual text that the respondent is asked to rate.
-          "question": "A String", # Required question text shown to the respondent.
-          "numStars": "A String", # Number of stars to use for ratings questions.
-          "lowValueLabel": "A String", # For rating questions, the text for the lower end of the scale, such as 'Worst'. For numeric questions, a string representing a floating-point that is the minimum allowed number for a response.
-          "videoId": "A String", # The YouTube video ID to be show in video questions.
-          "answers": [ # Required list of answer options for a question.
+          "sentimentText": "A String",
+          "question": "A String",
+          "numStars": "A String",
+          "lowValueLabel": "A String",
+          "videoId": "A String",
+          "answers": [
             "A String",
           ],
-          "lastAnswerPositionPinned": True or False, # Currently only support pinning an answer option to the last position.
-          "hasOther": True or False, # Option to allow open-ended text box for Single Answer and Multiple Answer question types. This can be used with SINGLE_ANSWER, SINGLE_ANSWER_WITH_IMAGE, MULTIPLE_ANSWERS, and MULTIPLE_ANSWERS_WITH_IMAGE question types.
-          "unitOfMeasurementLabel": "A String", # Optional unit of measurement for display (for example: hours, people, miles).
+          "lastAnswerPositionPinned": True or False,
+          "hasOther": True or False,
+          "unitOfMeasurementLabel": "A String",
           "images": [
-            { # Container object for image data and alt_text.
-              "url": "A String", # The read-only URL for the hosted images.
-              "altText": "A String", # The alt text property used in image tags is required for all images.
-              "data": "A String", # Inline jpeg, gif, tiff, bmp, or png image raw bytes for an image question types.
+            {
+              "url": "A String",
+              "altText": "A String",
+              "data": "A String",
             },
           ],
-          "singleLineResponse": True or False, # Option to allow multiple line open text responses instead of a single line response. Note that we don't show auto-complete suggestions with multiple line responses.
-          "openTextSuggestions": [ # A list of suggested answers for open text question auto-complete. This is only valid if single_line_response is true.
+          "singleLineResponse": True or False,
+          "openTextSuggestions": [
             "A String",
           ],
-          "type": "A String", # Required field defining the question type. For details about configuring different type of questions, consult the question configuration guide.
-          "answerOrder": "A String", # The randomization option for multiple choice and multi-select questions. If not specified, this option defaults to randomize.
-          "openTextPlaceholder": "A String", # Placeholder text for an open text question.
+          "type": "A String",
+          "answerOrder": "A String",
+          "openTextPlaceholder": "A String",
         },
       ],
-      "wantedResponseCount": 42, # Number of responses desired for the survey.
-      "rejectionReason": { # Message representing why the survey was rejected from review, if it was. # Reason for the survey being rejected. Only present if the survey state is 'rejected'.
-        "explanation": "A String", # A human-readable explanation of what was wrong with the survey.
-        "type": "A String", # Which category of rejection this was. See the GCS Help Center for additional details on each category.
+      "wantedResponseCount": 42,
+      "rejectionReason": {
+        "explanation": "A String",
+        "type": "A String",
       },
     }</pre>
 </div>
diff --git a/docs/dyn/content_v2.accounts.html b/docs/dyn/content_v2.accounts.html
index ea13e2f..0a01c5f 100644
--- a/docs/dyn/content_v2.accounts.html
+++ b/docs/dyn/content_v2.accounts.html
@@ -82,25 +82,25 @@
 <p class="firstline">Retrieves, inserts, updates, and deletes multiple Merchant Center (sub-)accounts in a single request.</p>
 <p class="toc_element">
   <code><a href="#delete">delete(merchantId, accountId, dryRun=None)</a></code></p>
-<p class="firstline">Deletes a Merchant Center sub-account.</p>
+<p class="firstline">Deletes a Merchant Center sub-account. This method can only be called for multi-client accounts.</p>
 <p class="toc_element">
   <code><a href="#get">get(merchantId, accountId)</a></code></p>
-<p class="firstline">Retrieves a Merchant Center account.</p>
+<p class="firstline">Retrieves a Merchant Center account. This method can only be called for accounts to which the managing account has access: either the managing account itself or sub-accounts if the managing account is a multi-client account.</p>
 <p class="toc_element">
   <code><a href="#insert">insert(merchantId, body, dryRun=None)</a></code></p>
-<p class="firstline">Creates a Merchant Center sub-account.</p>
+<p class="firstline">Creates a Merchant Center sub-account. This method can only be called for multi-client accounts.</p>
 <p class="toc_element">
   <code><a href="#list">list(merchantId, pageToken=None, maxResults=None)</a></code></p>
-<p class="firstline">Lists the sub-accounts in your Merchant Center account.</p>
+<p class="firstline">Lists the sub-accounts in your Merchant Center account. This method can only be called for multi-client accounts.</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="#patch">patch(merchantId, accountId, body, dryRun=None)</a></code></p>
-<p class="firstline">Updates a Merchant Center account. This method supports patch semantics.</p>
+<p class="firstline">Updates a Merchant Center account. This method can only be called for multi-client accounts. This method supports patch semantics.</p>
 <p class="toc_element">
   <code><a href="#update">update(merchantId, accountId, body, dryRun=None)</a></code></p>
-<p class="firstline">Updates a Merchant Center account.</p>
+<p class="firstline">Updates a Merchant Center account. This method can only be called for multi-client accounts.</p>
 <h3>Method Details</h3>
 <div class="method">
     <code class="details" id="authinfo">authinfo()</code>
@@ -215,7 +215,7 @@
 
 <div class="method">
     <code class="details" id="delete">delete(merchantId, accountId, dryRun=None)</code>
-  <pre>Deletes a Merchant Center sub-account.
+  <pre>Deletes a Merchant Center sub-account. This method can only be called for multi-client accounts.
 
 Args:
   merchantId: string, The ID of the managing account. (required)
@@ -226,7 +226,7 @@
 
 <div class="method">
     <code class="details" id="get">get(merchantId, accountId)</code>
-  <pre>Retrieves a Merchant Center account.
+  <pre>Retrieves a Merchant Center account. This method can only be called for accounts to which the managing account has access: either the managing account itself or sub-accounts if the managing account is a multi-client account.
 
 Args:
   merchantId: string, The ID of the managing account. (required)
@@ -260,7 +260,7 @@
 
 <div class="method">
     <code class="details" id="insert">insert(merchantId, body, dryRun=None)</code>
-  <pre>Creates a Merchant Center sub-account.
+  <pre>Creates a Merchant Center sub-account. This method can only be called for multi-client accounts.
 
 Args:
   merchantId: string, The ID of the managing account. (required)
@@ -319,7 +319,7 @@
 
 <div class="method">
     <code class="details" id="list">list(merchantId, pageToken=None, maxResults=None)</code>
-  <pre>Lists the sub-accounts in your Merchant Center account.
+  <pre>Lists the sub-accounts in your Merchant Center account. This method can only be called for multi-client accounts.
 
 Args:
   merchantId: string, The ID of the managing account. (required)
@@ -374,7 +374,7 @@
 
 <div class="method">
     <code class="details" id="patch">patch(merchantId, accountId, body, dryRun=None)</code>
-  <pre>Updates a Merchant Center account. This method supports patch semantics.
+  <pre>Updates a Merchant Center account. This method can only be called for multi-client accounts. This method supports patch semantics.
 
 Args:
   merchantId: string, The ID of the managing account. (required)
@@ -434,7 +434,7 @@
 
 <div class="method">
     <code class="details" id="update">update(merchantId, accountId, body, dryRun=None)</code>
-  <pre>Updates a Merchant Center account.
+  <pre>Updates a Merchant Center account. This method can only be called for multi-client accounts.
 
 Args:
   merchantId: string, The ID of the managing account. (required)
diff --git a/docs/dyn/content_v2.accountshipping.html b/docs/dyn/content_v2.accountshipping.html
index 40ba27f..e5e11b6 100644
--- a/docs/dyn/content_v2.accountshipping.html
+++ b/docs/dyn/content_v2.accountshipping.html
@@ -79,19 +79,19 @@
 <p class="firstline">Retrieves and updates the shipping settings of multiple accounts in a single request.</p>
 <p class="toc_element">
   <code><a href="#get">get(merchantId, accountId)</a></code></p>
-<p class="firstline">Retrieves the shipping settings of the account.</p>
+<p class="firstline">Retrieves the shipping settings of the account. This method can only be called for accounts to which the managing account has access: either the managing account itself or sub-accounts if the managing account is a multi-client account.</p>
 <p class="toc_element">
   <code><a href="#list">list(merchantId, pageToken=None, maxResults=None)</a></code></p>
-<p class="firstline">Lists the shipping settings of the sub-accounts in your Merchant Center account.</p>
+<p class="firstline">Lists the shipping settings of the sub-accounts in your Merchant Center account. This method can only be called for multi-client accounts.</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="#patch">patch(merchantId, accountId, body, dryRun=None)</a></code></p>
-<p class="firstline">Updates the shipping settings of the account. This method supports patch semantics.</p>
+<p class="firstline">Updates the shipping settings of the account. This method can only be called for accounts to which the managing account has access: either the managing account itself or sub-accounts if the managing account is a multi-client account. This method supports patch semantics.</p>
 <p class="toc_element">
   <code><a href="#update">update(merchantId, accountId, body, dryRun=None)</a></code></p>
-<p class="firstline">Updates the shipping settings of the account.</p>
+<p class="firstline">Updates the shipping settings of the account. This method can only be called for accounts to which the managing account has access: either the managing account itself or sub-accounts if the managing account is a multi-client account.</p>
 <h3>Method Details</h3>
 <div class="method">
     <code class="details" id="custombatch">custombatch(body, dryRun=None)</code>
@@ -405,7 +405,7 @@
 
 <div class="method">
     <code class="details" id="get">get(merchantId, accountId)</code>
-  <pre>Retrieves the shipping settings of the account.
+  <pre>Retrieves the shipping settings of the account. This method can only be called for accounts to which the managing account has access: either the managing account itself or sub-accounts if the managing account is a multi-client account.
 
 Args:
   merchantId: string, The ID of the managing account. (required)
@@ -550,7 +550,7 @@
 
 <div class="method">
     <code class="details" id="list">list(merchantId, pageToken=None, maxResults=None)</code>
-  <pre>Lists the shipping settings of the sub-accounts in your Merchant Center account.
+  <pre>Lists the shipping settings of the sub-accounts in your Merchant Center account. This method can only be called for multi-client accounts.
 
 Args:
   merchantId: string, The ID of the managing account. (required)
@@ -716,7 +716,7 @@
 
 <div class="method">
     <code class="details" id="patch">patch(merchantId, accountId, body, dryRun=None)</code>
-  <pre>Updates the shipping settings of the account. This method supports patch semantics.
+  <pre>Updates the shipping settings of the account. This method can only be called for accounts to which the managing account has access: either the managing account itself or sub-accounts if the managing account is a multi-client account. This method supports patch semantics.
 
 Args:
   merchantId: string, The ID of the managing account. (required)
@@ -998,7 +998,7 @@
 
 <div class="method">
     <code class="details" id="update">update(merchantId, accountId, body, dryRun=None)</code>
-  <pre>Updates the shipping settings of the account.
+  <pre>Updates the shipping settings of the account. This method can only be called for accounts to which the managing account has access: either the managing account itself or sub-accounts if the managing account is a multi-client account.
 
 Args:
   merchantId: string, The ID of the managing account. (required)
diff --git a/docs/dyn/content_v2.accountstatuses.html b/docs/dyn/content_v2.accountstatuses.html
index c8d2ad1..88fcdd3 100644
--- a/docs/dyn/content_v2.accountstatuses.html
+++ b/docs/dyn/content_v2.accountstatuses.html
@@ -79,10 +79,10 @@
 <p class="firstline">A description of how to use this function</p>
 <p class="toc_element">
   <code><a href="#get">get(merchantId, accountId)</a></code></p>
-<p class="firstline">Retrieves the status of a Merchant Center account.</p>
+<p class="firstline">Retrieves the status of a Merchant Center account. This method can only be called for accounts to which the managing account has access: either the managing account itself or sub-accounts if the managing account is a multi-client account.</p>
 <p class="toc_element">
   <code><a href="#list">list(merchantId, pageToken=None, maxResults=None)</a></code></p>
-<p class="firstline">Lists the statuses of the sub-accounts in your Merchant Center account.</p>
+<p class="firstline">Lists the statuses of the sub-accounts in your Merchant Center account. This method can only be called for multi-client accounts.</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>
@@ -157,7 +157,7 @@
 
 <div class="method">
     <code class="details" id="get">get(merchantId, accountId)</code>
-  <pre>Retrieves the status of a Merchant Center account.
+  <pre>Retrieves the status of a Merchant Center account. This method can only be called for accounts to which the managing account has access: either the managing account itself or sub-accounts if the managing account is a multi-client account.
 
 Args:
   merchantId: string, The ID of the managing account. (required)
@@ -194,7 +194,7 @@
 
 <div class="method">
     <code class="details" id="list">list(merchantId, pageToken=None, maxResults=None)</code>
-  <pre>Lists the statuses of the sub-accounts in your Merchant Center account.
+  <pre>Lists the statuses of the sub-accounts in your Merchant Center account. This method can only be called for multi-client accounts.
 
 Args:
   merchantId: string, The ID of the managing account. (required)
diff --git a/docs/dyn/content_v2.accounttax.html b/docs/dyn/content_v2.accounttax.html
index aa93539..4f4c97d 100644
--- a/docs/dyn/content_v2.accounttax.html
+++ b/docs/dyn/content_v2.accounttax.html
@@ -79,19 +79,19 @@
 <p class="firstline">Retrieves and updates tax settings of multiple accounts in a single request.</p>
 <p class="toc_element">
   <code><a href="#get">get(merchantId, accountId)</a></code></p>
-<p class="firstline">Retrieves the tax settings of the account.</p>
+<p class="firstline">Retrieves the tax settings of the account. This method can only be called for accounts to which the managing account has access: either the managing account itself or sub-accounts if the managing account is a multi-client account.</p>
 <p class="toc_element">
   <code><a href="#list">list(merchantId, pageToken=None, maxResults=None)</a></code></p>
-<p class="firstline">Lists the tax settings of the sub-accounts in your Merchant Center account.</p>
+<p class="firstline">Lists the tax settings of the sub-accounts in your Merchant Center account. This method can only be called for multi-client accounts.</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="#patch">patch(merchantId, accountId, body, dryRun=None)</a></code></p>
-<p class="firstline">Updates the tax settings of the account. This method supports patch semantics.</p>
+<p class="firstline">Updates the tax settings of the account. This method can only be called for accounts to which the managing account has access: either the managing account itself or sub-accounts if the managing account is a multi-client account. This method supports patch semantics.</p>
 <p class="toc_element">
   <code><a href="#update">update(merchantId, accountId, body, dryRun=None)</a></code></p>
-<p class="firstline">Updates the tax settings of the account.</p>
+<p class="firstline">Updates the tax settings of the account. This method can only be called for accounts to which the managing account has access: either the managing account itself or sub-accounts if the managing account is a multi-client account.</p>
 <h3>Method Details</h3>
 <div class="method">
     <code class="details" id="custombatch">custombatch(body, dryRun=None)</code>
@@ -167,7 +167,7 @@
 
 <div class="method">
     <code class="details" id="get">get(merchantId, accountId)</code>
-  <pre>Retrieves the tax settings of the account.
+  <pre>Retrieves the tax settings of the account. This method can only be called for accounts to which the managing account has access: either the managing account itself or sub-accounts if the managing account is a multi-client account.
 
 Args:
   merchantId: string, The ID of the managing account. (required)
@@ -193,7 +193,7 @@
 
 <div class="method">
     <code class="details" id="list">list(merchantId, pageToken=None, maxResults=None)</code>
-  <pre>Lists the tax settings of the sub-accounts in your Merchant Center account.
+  <pre>Lists the tax settings of the sub-accounts in your Merchant Center account. This method can only be called for multi-client accounts.
 
 Args:
   merchantId: string, The ID of the managing account. (required)
@@ -240,7 +240,7 @@
 
 <div class="method">
     <code class="details" id="patch">patch(merchantId, accountId, body, dryRun=None)</code>
-  <pre>Updates the tax settings of the account. This method supports patch semantics.
+  <pre>Updates the tax settings of the account. This method can only be called for accounts to which the managing account has access: either the managing account itself or sub-accounts if the managing account is a multi-client account. This method supports patch semantics.
 
 Args:
   merchantId: string, The ID of the managing account. (required)
@@ -284,7 +284,7 @@
 
 <div class="method">
     <code class="details" id="update">update(merchantId, accountId, body, dryRun=None)</code>
-  <pre>Updates the tax settings of the account.
+  <pre>Updates the tax settings of the account. This method can only be called for accounts to which the managing account has access: either the managing account itself or sub-accounts if the managing account is a multi-client account.
 
 Args:
   merchantId: string, The ID of the managing account. (required)
diff --git a/docs/dyn/content_v2.datafeeds.html b/docs/dyn/content_v2.datafeeds.html
index e1c5769..7af9439 100644
--- a/docs/dyn/content_v2.datafeeds.html
+++ b/docs/dyn/content_v2.datafeeds.html
@@ -79,25 +79,25 @@
 <p class="firstline">A description of how to use this function</p>
 <p class="toc_element">
   <code><a href="#delete">delete(merchantId, datafeedId, dryRun=None)</a></code></p>
-<p class="firstline">Deletes a datafeed from your Merchant Center account.</p>
+<p class="firstline">Deletes a datafeed from your Merchant Center account. This method can only be called for non-multi-client accounts.</p>
 <p class="toc_element">
   <code><a href="#get">get(merchantId, datafeedId)</a></code></p>
-<p class="firstline">Retrieves a datafeed from your Merchant Center account.</p>
+<p class="firstline">Retrieves a datafeed from your Merchant Center account. This method can only be called for non-multi-client accounts.</p>
 <p class="toc_element">
   <code><a href="#insert">insert(merchantId, body, dryRun=None)</a></code></p>
-<p class="firstline">Registers a datafeed with your Merchant Center account.</p>
+<p class="firstline">Registers a datafeed with your Merchant Center account. This method can only be called for non-multi-client accounts.</p>
 <p class="toc_element">
   <code><a href="#list">list(merchantId, pageToken=None, maxResults=None)</a></code></p>
-<p class="firstline">Lists the datafeeds in your Merchant Center account.</p>
+<p class="firstline">Lists the datafeeds in your Merchant Center account. This method can only be called for non-multi-client accounts.</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="#patch">patch(merchantId, datafeedId, body, dryRun=None)</a></code></p>
-<p class="firstline">Updates a datafeed of your Merchant Center account. This method supports patch semantics.</p>
+<p class="firstline">Updates a datafeed of your Merchant Center account. This method can only be called for non-multi-client accounts. This method supports patch semantics.</p>
 <p class="toc_element">
   <code><a href="#update">update(merchantId, datafeedId, body, dryRun=None)</a></code></p>
-<p class="firstline">Updates a datafeed of your Merchant Center account.</p>
+<p class="firstline">Updates a datafeed of your Merchant Center account. This method can only be called for non-multi-client accounts.</p>
 <h3>Method Details</h3>
 <div class="method">
     <code class="details" id="custombatch">custombatch(body, dryRun=None)</code>
@@ -202,7 +202,7 @@
 
 <div class="method">
     <code class="details" id="delete">delete(merchantId, datafeedId, dryRun=None)</code>
-  <pre>Deletes a datafeed from your Merchant Center account.
+  <pre>Deletes a datafeed from your Merchant Center account. This method can only be called for non-multi-client accounts.
 
 Args:
   merchantId: string, A parameter (required)
@@ -213,7 +213,7 @@
 
 <div class="method">
     <code class="details" id="get">get(merchantId, datafeedId)</code>
-  <pre>Retrieves a datafeed from your Merchant Center account.
+  <pre>Retrieves a datafeed from your Merchant Center account. This method can only be called for non-multi-client accounts.
 
 Args:
   merchantId: string, A parameter (required)
@@ -254,7 +254,7 @@
 
 <div class="method">
     <code class="details" id="insert">insert(merchantId, body, dryRun=None)</code>
-  <pre>Registers a datafeed with your Merchant Center account.
+  <pre>Registers a datafeed with your Merchant Center account. This method can only be called for non-multi-client accounts.
 
 Args:
   merchantId: string, A parameter (required)
@@ -327,7 +327,7 @@
 
 <div class="method">
     <code class="details" id="list">list(merchantId, pageToken=None, maxResults=None)</code>
-  <pre>Lists the datafeeds in your Merchant Center account.
+  <pre>Lists the datafeeds in your Merchant Center account. This method can only be called for non-multi-client accounts.
 
 Args:
   merchantId: string, The ID of the managing account. (required)
@@ -389,7 +389,7 @@
 
 <div class="method">
     <code class="details" id="patch">patch(merchantId, datafeedId, body, dryRun=None)</code>
-  <pre>Updates a datafeed of your Merchant Center account. This method supports patch semantics.
+  <pre>Updates a datafeed of your Merchant Center account. This method can only be called for non-multi-client accounts. This method supports patch semantics.
 
 Args:
   merchantId: string, A parameter (required)
@@ -463,7 +463,7 @@
 
 <div class="method">
     <code class="details" id="update">update(merchantId, datafeedId, body, dryRun=None)</code>
-  <pre>Updates a datafeed of your Merchant Center account.
+  <pre>Updates a datafeed of your Merchant Center account. This method can only be called for non-multi-client accounts.
 
 Args:
   merchantId: string, A parameter (required)
diff --git a/docs/dyn/content_v2.datafeedstatuses.html b/docs/dyn/content_v2.datafeedstatuses.html
index 1221ee7..529185b 100644
--- a/docs/dyn/content_v2.datafeedstatuses.html
+++ b/docs/dyn/content_v2.datafeedstatuses.html
@@ -79,10 +79,10 @@
 <p class="firstline">A description of how to use this function</p>
 <p class="toc_element">
   <code><a href="#get">get(merchantId, datafeedId)</a></code></p>
-<p class="firstline">Retrieves the status of a datafeed from your Merchant Center account.</p>
+<p class="firstline">Retrieves the status of a datafeed from your Merchant Center account. This method can only be called for non-multi-client accounts.</p>
 <p class="toc_element">
   <code><a href="#list">list(merchantId, pageToken=None, maxResults=None)</a></code></p>
-<p class="firstline">Lists the statuses of the datafeeds in your Merchant Center account.</p>
+<p class="firstline">Lists the statuses of the datafeeds in your Merchant Center account. This method can only be called for non-multi-client accounts.</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>
@@ -169,7 +169,7 @@
 
 <div class="method">
     <code class="details" id="get">get(merchantId, datafeedId)</code>
-  <pre>Retrieves the status of a datafeed from your Merchant Center account.
+  <pre>Retrieves the status of a datafeed from your Merchant Center account. This method can only be called for non-multi-client accounts.
 
 Args:
   merchantId: string, A parameter (required)
@@ -218,7 +218,7 @@
 
 <div class="method">
     <code class="details" id="list">list(merchantId, pageToken=None, maxResults=None)</code>
-  <pre>Lists the statuses of the datafeeds in your Merchant Center account.
+  <pre>Lists the statuses of the datafeeds in your Merchant Center account. This method can only be called for non-multi-client accounts.
 
 Args:
   merchantId: string, The ID of the managing account. (required)
diff --git a/docs/dyn/content_v2.inventory.html b/docs/dyn/content_v2.inventory.html
index fe84a24..f543ed2 100644
--- a/docs/dyn/content_v2.inventory.html
+++ b/docs/dyn/content_v2.inventory.html
@@ -76,14 +76,14 @@
 <h2>Instance Methods</h2>
 <p class="toc_element">
   <code><a href="#custombatch">custombatch(body, dryRun=None)</a></code></p>
-<p class="firstline">Updates price and availability for multiple products or stores in a single request. This operation does not update the expiration date of the products.</p>
+<p class="firstline">Updates price and availability for multiple products or stores in a single request. This operation does not update the expiration date of the products. This method can only be called for non-multi-client accounts.</p>
 <p class="toc_element">
   <code><a href="#set">set(merchantId, storeCode, productId, body, dryRun=None)</a></code></p>
-<p class="firstline">Updates price and availability of a product in your Merchant Center account. This operation does not update the expiration date of the product.</p>
+<p class="firstline">Updates price and availability of a product in your Merchant Center account. This operation does not update the expiration date of the product. This method can only be called for non-multi-client accounts.</p>
 <h3>Method Details</h3>
 <div class="method">
     <code class="details" id="custombatch">custombatch(body, dryRun=None)</code>
-  <pre>Updates price and availability for multiple products or stores in a single request. This operation does not update the expiration date of the products.
+  <pre>Updates price and availability for multiple products or stores in a single request. This operation does not update the expiration date of the products. This method can only be called for non-multi-client accounts.
 
 Args:
   body: object, The request body. (required)
@@ -110,6 +110,10 @@
             "value": "A String", # The price represented as a number.
           },
           "sellOnGoogleQuantity": 42, # The quantity of the product that is reserved for sell-on-google ads. Supported only for online products.
+          "pickup": { # Store pickup information. Only supported for local inventory. Not setting pickup means "don't update" while setting it to the empty value ({} in JSON) means "delete". Otherwise, pickupMethod and pickupSla must be set together, unless pickupMethod is "not supported".
+            "pickupMethod": "A String", # Whether store pickup is available for this offer and whether the pickup option should be shown as buy, reserve, or not supported. Only supported for local inventory. Unless the value is "not supported", must be submitted together with pickupSla.
+            "pickupSla": "A String", # The expected date that an order will be ready for pickup, relative to when the order is placed. Only supported for local inventory. Must be submitted together with pickupMethod.
+          },
           "salePrice": { # The sale price of the product. Mandatory if sale_price_effective_date is defined.
             "currency": "A String", # The currency of the price.
             "value": "A String", # The price represented as a number.
@@ -156,7 +160,7 @@
 
 <div class="method">
     <code class="details" id="set">set(merchantId, storeCode, productId, body, dryRun=None)</code>
-  <pre>Updates price and availability of a product in your Merchant Center account. This operation does not update the expiration date of the product.
+  <pre>Updates price and availability of a product in your Merchant Center account. This operation does not update the expiration date of the product. This method can only be called for non-multi-client accounts.
 
 Args:
   merchantId: string, The ID of the managing account. (required)
@@ -179,6 +183,10 @@
       "value": "A String", # The price represented as a number.
     },
     "sellOnGoogleQuantity": 42, # The quantity of the product that is reserved for sell-on-google ads. Supported only for online products.
+    "pickup": { # Store pickup information. Only supported for local inventory. Not setting pickup means "don't update" while setting it to the empty value ({} in JSON) means "delete". Otherwise, pickupMethod and pickupSla must be set together, unless pickupMethod is "not supported".
+      "pickupMethod": "A String", # Whether store pickup is available for this offer and whether the pickup option should be shown as buy, reserve, or not supported. Only supported for local inventory. Unless the value is "not supported", must be submitted together with pickupSla.
+      "pickupSla": "A String", # The expected date that an order will be ready for pickup, relative to when the order is placed. Only supported for local inventory. Must be submitted together with pickupMethod.
+    },
     "salePrice": { # The sale price of the product. Mandatory if sale_price_effective_date is defined.
       "currency": "A String", # The currency of the price.
       "value": "A String", # The price represented as a number.
diff --git a/docs/dyn/content_v2.orders.html b/docs/dyn/content_v2.orders.html
index 84b800e..e5fad2d 100644
--- a/docs/dyn/content_v2.orders.html
+++ b/docs/dyn/content_v2.orders.html
@@ -76,56 +76,56 @@
 <h2>Instance Methods</h2>
 <p class="toc_element">
   <code><a href="#acknowledge">acknowledge(merchantId, orderId, body)</a></code></p>
-<p class="firstline">Marks an order as acknowledged.</p>
+<p class="firstline">Marks an order as acknowledged. This method can only be called for non-multi-client accounts.</p>
 <p class="toc_element">
   <code><a href="#advancetestorder">advancetestorder(merchantId, orderId)</a></code></p>
-<p class="firstline">Sandbox only. Moves a test order from state "inProgress" to state "pendingShipment".</p>
+<p class="firstline">Sandbox only. Moves a test order from state "inProgress" to state "pendingShipment". This method can only be called for non-multi-client accounts.</p>
 <p class="toc_element">
   <code><a href="#cancel">cancel(merchantId, orderId, body)</a></code></p>
-<p class="firstline">Cancels all line items in an order.</p>
+<p class="firstline">Cancels all line items in an order. This method can only be called for non-multi-client accounts.</p>
 <p class="toc_element">
   <code><a href="#cancellineitem">cancellineitem(merchantId, orderId, body)</a></code></p>
-<p class="firstline">Cancels a line item.</p>
+<p class="firstline">Cancels a line item. This method can only be called for non-multi-client accounts.</p>
 <p class="toc_element">
   <code><a href="#createtestorder">createtestorder(merchantId, body)</a></code></p>
-<p class="firstline">Sandbox only. Creates a test order.</p>
+<p class="firstline">Sandbox only. Creates a test order. This method can only be called for non-multi-client accounts.</p>
 <p class="toc_element">
   <code><a href="#custombatch">custombatch(body)</a></code></p>
-<p class="firstline">Retrieves or modifies multiple orders in a single request.</p>
+<p class="firstline">Retrieves or modifies multiple orders in a single request. This method can only be called for non-multi-client accounts.</p>
 <p class="toc_element">
   <code><a href="#get">get(merchantId, orderId)</a></code></p>
-<p class="firstline">Retrieves an order from your Merchant Center account.</p>
+<p class="firstline">Retrieves an order from your Merchant Center account. This method can only be called for non-multi-client accounts.</p>
 <p class="toc_element">
   <code><a href="#getbymerchantorderid">getbymerchantorderid(merchantId, merchantOrderId)</a></code></p>
-<p class="firstline">Retrieves an order using merchant order id.</p>
+<p class="firstline">Retrieves an order using merchant order id. This method can only be called for non-multi-client accounts.</p>
 <p class="toc_element">
   <code><a href="#gettestordertemplate">gettestordertemplate(merchantId, templateName)</a></code></p>
-<p class="firstline">Sandbox only. Retrieves an order template that can be used to quickly create a new order in sandbox.</p>
+<p class="firstline">Sandbox only. Retrieves an order template that can be used to quickly create a new order in sandbox. This method can only be called for non-multi-client accounts.</p>
 <p class="toc_element">
   <code><a href="#list">list(merchantId, orderBy=None, pageToken=None, placedDateEnd=None, acknowledged=None, maxResults=None, placedDateStart=None, statuses=None)</a></code></p>
-<p class="firstline">Lists the orders in your Merchant Center account.</p>
+<p class="firstline">Lists the orders in your Merchant Center account. This method can only be called for non-multi-client accounts.</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="#refund">refund(merchantId, orderId, body)</a></code></p>
-<p class="firstline">Refund a portion of the order, up to the full amount paid.</p>
+<p class="firstline">Refund a portion of the order, up to the full amount paid. This method can only be called for non-multi-client accounts.</p>
 <p class="toc_element">
   <code><a href="#returnlineitem">returnlineitem(merchantId, orderId, body)</a></code></p>
-<p class="firstline">Returns a line item.</p>
+<p class="firstline">Returns a line item. This method can only be called for non-multi-client accounts.</p>
 <p class="toc_element">
   <code><a href="#shiplineitems">shiplineitems(merchantId, orderId, body)</a></code></p>
-<p class="firstline">Marks line item(s) as shipped.</p>
+<p class="firstline">Marks line item(s) as shipped. This method can only be called for non-multi-client accounts.</p>
 <p class="toc_element">
   <code><a href="#updatemerchantorderid">updatemerchantorderid(merchantId, orderId, body)</a></code></p>
-<p class="firstline">Updates the merchant order ID for a given order.</p>
+<p class="firstline">Updates the merchant order ID for a given order. This method can only be called for non-multi-client accounts.</p>
 <p class="toc_element">
   <code><a href="#updateshipment">updateshipment(merchantId, orderId, body)</a></code></p>
-<p class="firstline">Updates a shipment's status, carrier, and/or tracking ID.</p>
+<p class="firstline">Updates a shipment's status, carrier, and/or tracking ID. This method can only be called for non-multi-client accounts.</p>
 <h3>Method Details</h3>
 <div class="method">
     <code class="details" id="acknowledge">acknowledge(merchantId, orderId, body)</code>
-  <pre>Marks an order as acknowledged.
+  <pre>Marks an order as acknowledged. This method can only be called for non-multi-client accounts.
 
 Args:
   merchantId: string, The ID of the managing account. (required)
@@ -149,7 +149,7 @@
 
 <div class="method">
     <code class="details" id="advancetestorder">advancetestorder(merchantId, orderId)</code>
-  <pre>Sandbox only. Moves a test order from state "inProgress" to state "pendingShipment".
+  <pre>Sandbox only. Moves a test order from state "inProgress" to state "pendingShipment". This method can only be called for non-multi-client accounts.
 
 Args:
   merchantId: string, The ID of the managing account. (required)
@@ -165,7 +165,7 @@
 
 <div class="method">
     <code class="details" id="cancel">cancel(merchantId, orderId, body)</code>
-  <pre>Cancels all line items in an order.
+  <pre>Cancels all line items in an order. This method can only be called for non-multi-client accounts.
 
 Args:
   merchantId: string, The ID of the managing account. (required)
@@ -191,7 +191,7 @@
 
 <div class="method">
     <code class="details" id="cancellineitem">cancellineitem(merchantId, orderId, body)</code>
-  <pre>Cancels a line item.
+  <pre>Cancels a line item. This method can only be called for non-multi-client accounts.
 
 Args:
   merchantId: string, The ID of the managing account. (required)
@@ -223,7 +223,7 @@
 
 <div class="method">
     <code class="details" id="createtestorder">createtestorder(merchantId, body)</code>
-  <pre>Sandbox only. Creates a test order.
+  <pre>Sandbox only. Creates a test order. This method can only be called for non-multi-client accounts.
 
 Args:
   merchantId: string, The ID of the managing account. (required)
@@ -233,7 +233,7 @@
 {
     "testOrder": { # The test order to create.
       "customer": { # The details of the customer who placed the order.
-        "explicitMarketingPreference": True or False, # If set, this indicates the user explicitly chose to opt in or out of providing marketing rights to the merchant. If unset, this indicates the user has already made this choice in a previous purchase, and was thus not shown the marketing right opt in/out checkbox during the Purchases on Google checkout flow. Optional.
+        "explicitMarketingPreference": True or False, # If set, this indicates the user explicitly chose to opt in or out of providing marketing rights to the merchant. If unset, this indicates the user has already made this choice in a previous purchase, and was thus not shown the marketing right opt in/out checkbox during the checkout flow. Optional.
         "fullName": "A String", # Full name of the customer.
         "email": "A String", # Email address of the customer.
       },
@@ -346,7 +346,7 @@
 
 <div class="method">
     <code class="details" id="custombatch">custombatch(body)</code>
-  <pre>Retrieves or modifies multiple orders in a single request.
+  <pre>Retrieves or modifies multiple orders in a single request. This method can only be called for non-multi-client accounts.
 
 Args:
   body: object, The request body. (required)
@@ -433,7 +433,7 @@
         },
         "order": { # The retrieved order. Only defined if the method is get and if the request was successful.
           "customer": { # The details of the customer who placed the order.
-            "explicitMarketingPreference": True or False, # If set, this indicates the user explicitly chose to opt in or out of providing marketing rights to the merchant. If unset, this indicates the user has already made this choice in a previous purchase, and was thus not shown the marketing right opt in/out checkbox during the Purchases on Google checkout flow.
+            "explicitMarketingPreference": True or False, # If set, this indicates the user explicitly chose to opt in or out of providing marketing rights to the merchant. If unset, this indicates the user has already made this choice in a previous purchase, and was thus not shown the marketing right opt in/out checkbox during the checkout flow.
             "fullName": "A String", # Full name of the customer.
             "email": "A String", # Email address of the customer.
           },
@@ -647,7 +647,7 @@
 
 <div class="method">
     <code class="details" id="get">get(merchantId, orderId)</code>
-  <pre>Retrieves an order from your Merchant Center account.
+  <pre>Retrieves an order from your Merchant Center account. This method can only be called for non-multi-client accounts.
 
 Args:
   merchantId: string, The ID of the managing account. (required)
@@ -658,7 +658,7 @@
 
     {
     "customer": { # The details of the customer who placed the order.
-      "explicitMarketingPreference": True or False, # If set, this indicates the user explicitly chose to opt in or out of providing marketing rights to the merchant. If unset, this indicates the user has already made this choice in a previous purchase, and was thus not shown the marketing right opt in/out checkbox during the Purchases on Google checkout flow.
+      "explicitMarketingPreference": True or False, # If set, this indicates the user explicitly chose to opt in or out of providing marketing rights to the merchant. If unset, this indicates the user has already made this choice in a previous purchase, and was thus not shown the marketing right opt in/out checkbox during the checkout flow.
       "fullName": "A String", # Full name of the customer.
       "email": "A String", # Email address of the customer.
     },
@@ -868,7 +868,7 @@
 
 <div class="method">
     <code class="details" id="getbymerchantorderid">getbymerchantorderid(merchantId, merchantOrderId)</code>
-  <pre>Retrieves an order using merchant order id.
+  <pre>Retrieves an order using merchant order id. This method can only be called for non-multi-client accounts.
 
 Args:
   merchantId: string, The ID of the managing account. (required)
@@ -881,7 +881,7 @@
     "kind": "content#ordersGetByMerchantOrderIdResponse", # Identifies what kind of resource this is. Value: the fixed string "content#ordersGetByMerchantOrderIdResponse".
     "order": { # The requested order.
       "customer": { # The details of the customer who placed the order.
-        "explicitMarketingPreference": True or False, # If set, this indicates the user explicitly chose to opt in or out of providing marketing rights to the merchant. If unset, this indicates the user has already made this choice in a previous purchase, and was thus not shown the marketing right opt in/out checkbox during the Purchases on Google checkout flow.
+        "explicitMarketingPreference": True or False, # If set, this indicates the user explicitly chose to opt in or out of providing marketing rights to the merchant. If unset, this indicates the user has already made this choice in a previous purchase, and was thus not shown the marketing right opt in/out checkbox during the checkout flow.
         "fullName": "A String", # Full name of the customer.
         "email": "A String", # Email address of the customer.
       },
@@ -1092,7 +1092,7 @@
 
 <div class="method">
     <code class="details" id="gettestordertemplate">gettestordertemplate(merchantId, templateName)</code>
-  <pre>Sandbox only. Retrieves an order template that can be used to quickly create a new order in sandbox.
+  <pre>Sandbox only. Retrieves an order template that can be used to quickly create a new order in sandbox. This method can only be called for non-multi-client accounts.
 
 Args:
   merchantId: string, The ID of the managing account. (required)
@@ -1110,7 +1110,7 @@
     "kind": "content#ordersGetTestOrderTemplateResponse", # Identifies what kind of resource this is. Value: the fixed string "content#ordersGetTestOrderTemplateResponse".
     "template": { # The requested test order template.
       "customer": { # The details of the customer who placed the order.
-        "explicitMarketingPreference": True or False, # If set, this indicates the user explicitly chose to opt in or out of providing marketing rights to the merchant. If unset, this indicates the user has already made this choice in a previous purchase, and was thus not shown the marketing right opt in/out checkbox during the Purchases on Google checkout flow. Optional.
+        "explicitMarketingPreference": True or False, # If set, this indicates the user explicitly chose to opt in or out of providing marketing rights to the merchant. If unset, this indicates the user has already made this choice in a previous purchase, and was thus not shown the marketing right opt in/out checkbox during the checkout flow. Optional.
         "fullName": "A String", # Full name of the customer.
         "email": "A String", # Email address of the customer.
       },
@@ -1213,7 +1213,7 @@
 
 <div class="method">
     <code class="details" id="list">list(merchantId, orderBy=None, pageToken=None, placedDateEnd=None, acknowledged=None, maxResults=None, placedDateStart=None, statuses=None)</code>
-  <pre>Lists the orders in your Merchant Center account.
+  <pre>Lists the orders in your Merchant Center account. This method can only be called for non-multi-client accounts.
 
 Args:
   merchantId: string, The ID of the managing account. (required)
@@ -1251,7 +1251,7 @@
     "resources": [
       {
         "customer": { # The details of the customer who placed the order.
-          "explicitMarketingPreference": True or False, # If set, this indicates the user explicitly chose to opt in or out of providing marketing rights to the merchant. If unset, this indicates the user has already made this choice in a previous purchase, and was thus not shown the marketing right opt in/out checkbox during the Purchases on Google checkout flow.
+          "explicitMarketingPreference": True or False, # If set, this indicates the user explicitly chose to opt in or out of providing marketing rights to the merchant. If unset, this indicates the user has already made this choice in a previous purchase, and was thus not shown the marketing right opt in/out checkbox during the checkout flow.
           "fullName": "A String", # Full name of the customer.
           "email": "A String", # Email address of the customer.
         },
@@ -1477,7 +1477,7 @@
 
 <div class="method">
     <code class="details" id="refund">refund(merchantId, orderId, body)</code>
-  <pre>Refund a portion of the order, up to the full amount paid.
+  <pre>Refund a portion of the order, up to the full amount paid. This method can only be called for non-multi-client accounts.
 
 Args:
   merchantId: string, The ID of the managing account. (required)
@@ -1507,7 +1507,7 @@
 
 <div class="method">
     <code class="details" id="returnlineitem">returnlineitem(merchantId, orderId, body)</code>
-  <pre>Returns a line item.
+  <pre>Returns a line item. This method can only be called for non-multi-client accounts.
 
 Args:
   merchantId: string, The ID of the managing account. (required)
@@ -1535,7 +1535,7 @@
 
 <div class="method">
     <code class="details" id="shiplineitems">shiplineitems(merchantId, orderId, body)</code>
-  <pre>Marks line item(s) as shipped.
+  <pre>Marks line item(s) as shipped. This method can only be called for non-multi-client accounts.
 
 Args:
   merchantId: string, The ID of the managing account. (required)
@@ -1568,7 +1568,7 @@
 
 <div class="method">
     <code class="details" id="updatemerchantorderid">updatemerchantorderid(merchantId, orderId, body)</code>
-  <pre>Updates the merchant order ID for a given order.
+  <pre>Updates the merchant order ID for a given order. This method can only be called for non-multi-client accounts.
 
 Args:
   merchantId: string, The ID of the managing account. (required)
@@ -1593,7 +1593,7 @@
 
 <div class="method">
     <code class="details" id="updateshipment">updateshipment(merchantId, orderId, body)</code>
-  <pre>Updates a shipment's status, carrier, and/or tracking ID.
+  <pre>Updates a shipment's status, carrier, and/or tracking ID. This method can only be called for non-multi-client accounts.
 
 Args:
   merchantId: string, The ID of the managing account. (required)
diff --git a/docs/dyn/content_v2.products.html b/docs/dyn/content_v2.products.html
index 6ce9b32..e6fbeec 100644
--- a/docs/dyn/content_v2.products.html
+++ b/docs/dyn/content_v2.products.html
@@ -76,26 +76,26 @@
 <h2>Instance Methods</h2>
 <p class="toc_element">
   <code><a href="#custombatch">custombatch(body, dryRun=None)</a></code></p>
-<p class="firstline">Retrieves, inserts, and deletes multiple products in a single request.</p>
+<p class="firstline">Retrieves, inserts, and deletes multiple products in a single request. This method can only be called for non-multi-client accounts.</p>
 <p class="toc_element">
   <code><a href="#delete">delete(merchantId, productId, dryRun=None)</a></code></p>
-<p class="firstline">Deletes a product from your Merchant Center account.</p>
+<p class="firstline">Deletes a product from your Merchant Center account. This method can only be called for non-multi-client accounts.</p>
 <p class="toc_element">
   <code><a href="#get">get(merchantId, productId)</a></code></p>
-<p class="firstline">Retrieves a product from your Merchant Center account.</p>
+<p class="firstline">Retrieves a product from your Merchant Center account. This method can only be called for non-multi-client accounts.</p>
 <p class="toc_element">
   <code><a href="#insert">insert(merchantId, body, dryRun=None)</a></code></p>
-<p class="firstline">Uploads a product to your Merchant Center account.</p>
+<p class="firstline">Uploads a product to your Merchant Center account. If an item with the same channel, contentLanguage, offerId, and targetCountry already exists, this method updates that entry. This method can only be called for non-multi-client accounts.</p>
 <p class="toc_element">
   <code><a href="#list">list(merchantId, includeInvalidInsertedItems=None, pageToken=None, maxResults=None)</a></code></p>
-<p class="firstline">Lists the products in your Merchant Center account.</p>
+<p class="firstline">Lists the products in your Merchant Center account. This method can only be called for non-multi-client accounts.</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>
 <h3>Method Details</h3>
 <div class="method">
     <code class="details" id="custombatch">custombatch(body, dryRun=None)</code>
-  <pre>Retrieves, inserts, and deletes multiple products in a single request.
+  <pre>Retrieves, inserts, and deletes multiple products in a single request. This method can only be called for non-multi-client accounts.
 
 Args:
   body: object, The request body. (required)
@@ -525,7 +525,7 @@
 
 <div class="method">
     <code class="details" id="delete">delete(merchantId, productId, dryRun=None)</code>
-  <pre>Deletes a product from your Merchant Center account.
+  <pre>Deletes a product from your Merchant Center account. This method can only be called for non-multi-client accounts.
 
 Args:
   merchantId: string, The ID of the managing account. (required)
@@ -536,7 +536,7 @@
 
 <div class="method">
     <code class="details" id="get">get(merchantId, productId)</code>
-  <pre>Retrieves a product from your Merchant Center account.
+  <pre>Retrieves a product from your Merchant Center account. This method can only be called for non-multi-client accounts.
 
 Args:
   merchantId: string, The ID of the managing account. (required)
@@ -741,7 +741,7 @@
 
 <div class="method">
     <code class="details" id="insert">insert(merchantId, body, dryRun=None)</code>
-  <pre>Uploads a product to your Merchant Center account.
+  <pre>Uploads a product to your Merchant Center account. If an item with the same channel, contentLanguage, offerId, and targetCountry already exists, this method updates that entry. This method can only be called for non-multi-client accounts.
 
 Args:
   merchantId: string, The ID of the managing account. (required)
@@ -1142,7 +1142,7 @@
 
 <div class="method">
     <code class="details" id="list">list(merchantId, includeInvalidInsertedItems=None, pageToken=None, maxResults=None)</code>
-  <pre>Lists the products in your Merchant Center account.
+  <pre>Lists the products in your Merchant Center account. This method can only be called for non-multi-client accounts.
 
 Args:
   merchantId: string, The ID of the managing account. (required)
diff --git a/docs/dyn/content_v2.productstatuses.html b/docs/dyn/content_v2.productstatuses.html
index 3b2cc96..7977fd4 100644
--- a/docs/dyn/content_v2.productstatuses.html
+++ b/docs/dyn/content_v2.productstatuses.html
@@ -76,20 +76,20 @@
 <h2>Instance Methods</h2>
 <p class="toc_element">
   <code><a href="#custombatch">custombatch(body)</a></code></p>
-<p class="firstline">Gets the statuses of multiple products in a single request.</p>
+<p class="firstline">Gets the statuses of multiple products in a single request. This method can only be called for non-multi-client accounts.</p>
 <p class="toc_element">
   <code><a href="#get">get(merchantId, productId)</a></code></p>
-<p class="firstline">Gets the status of a product from your Merchant Center account.</p>
+<p class="firstline">Gets the status of a product from your Merchant Center account. This method can only be called for non-multi-client accounts.</p>
 <p class="toc_element">
   <code><a href="#list">list(merchantId, includeInvalidInsertedItems=None, pageToken=None, maxResults=None)</a></code></p>
-<p class="firstline">Lists the statuses of the products in your Merchant Center account.</p>
+<p class="firstline">Lists the statuses of the products in your Merchant Center account. This method can only be called for non-multi-client accounts.</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>
 <h3>Method Details</h3>
 <div class="method">
     <code class="details" id="custombatch">custombatch(body)</code>
-  <pre>Gets the statuses of multiple products in a single request.
+  <pre>Gets the statuses of multiple products in a single request. This method can only be called for non-multi-client accounts.
 
 Args:
   body: object, The request body. (required)
@@ -162,7 +162,7 @@
 
 <div class="method">
     <code class="details" id="get">get(merchantId, productId)</code>
-  <pre>Gets the status of a product from your Merchant Center account.
+  <pre>Gets the status of a product from your Merchant Center account. This method can only be called for non-multi-client accounts.
 
 Args:
   merchantId: string, The ID of the managing account. (required)
@@ -203,7 +203,7 @@
 
 <div class="method">
     <code class="details" id="list">list(merchantId, includeInvalidInsertedItems=None, pageToken=None, maxResults=None)</code>
-  <pre>Lists the statuses of the products in your Merchant Center account.
+  <pre>Lists the statuses of the products in your Merchant Center account. This method can only be called for non-multi-client accounts.
 
 Args:
   merchantId: string, The ID of the managing account. (required)
diff --git a/docs/dyn/content_v2.shippingsettings.html b/docs/dyn/content_v2.shippingsettings.html
index e846056..bf4e978 100644
--- a/docs/dyn/content_v2.shippingsettings.html
+++ b/docs/dyn/content_v2.shippingsettings.html
@@ -79,22 +79,22 @@
 <p class="firstline">Retrieves and updates the shipping settings of multiple accounts in a single request.</p>
 <p class="toc_element">
   <code><a href="#get">get(merchantId, accountId)</a></code></p>
-<p class="firstline">Retrieves the shipping settings of the account.</p>
+<p class="firstline">Retrieves the shipping settings of the account. This method can only be called for accounts to which the managing account has access: either the managing account itself or sub-accounts if the managing account is a multi-client account.</p>
 <p class="toc_element">
   <code><a href="#getsupportedcarriers">getsupportedcarriers(merchantId)</a></code></p>
 <p class="firstline">Retrieves supported carriers and carrier services for an account.</p>
 <p class="toc_element">
   <code><a href="#list">list(merchantId, pageToken=None, maxResults=None)</a></code></p>
-<p class="firstline">Lists the shipping settings of the sub-accounts in your Merchant Center account.</p>
+<p class="firstline">Lists the shipping settings of the sub-accounts in your Merchant Center account. This method can only be called for multi-client accounts.</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="#patch">patch(merchantId, accountId, body, dryRun=None)</a></code></p>
-<p class="firstline">Updates the shipping settings of the account. This method supports patch semantics.</p>
+<p class="firstline">Updates the shipping settings of the account. This method can only be called for accounts to which the managing account has access: either the managing account itself or sub-accounts if the managing account is a multi-client account. This method supports patch semantics.</p>
 <p class="toc_element">
   <code><a href="#update">update(merchantId, accountId, body, dryRun=None)</a></code></p>
-<p class="firstline">Updates the shipping settings of the account.</p>
+<p class="firstline">Updates the shipping settings of the account. This method can only be called for accounts to which the managing account has access: either the managing account itself or sub-accounts if the managing account is a multi-client account.</p>
 <h3>Method Details</h3>
 <div class="method">
     <code class="details" id="custombatch">custombatch(body, dryRun=None)</code>
@@ -554,7 +554,7 @@
 
 <div class="method">
     <code class="details" id="get">get(merchantId, accountId)</code>
-  <pre>Retrieves the shipping settings of the account.
+  <pre>Retrieves the shipping settings of the account. This method can only be called for accounts to which the managing account has access: either the managing account itself or sub-accounts if the managing account is a multi-client account.
 
 Args:
   merchantId: string, The ID of the managing account. (required)
@@ -796,7 +796,7 @@
 
 <div class="method">
     <code class="details" id="list">list(merchantId, pageToken=None, maxResults=None)</code>
-  <pre>Lists the shipping settings of the sub-accounts in your Merchant Center account.
+  <pre>Lists the shipping settings of the sub-accounts in your Merchant Center account. This method can only be called for multi-client accounts.
 
 Args:
   merchantId: string, The ID of the managing account. (required)
@@ -1035,7 +1035,7 @@
 
 <div class="method">
     <code class="details" id="patch">patch(merchantId, accountId, body, dryRun=None)</code>
-  <pre>Updates the shipping settings of the account. This method supports patch semantics.
+  <pre>Updates the shipping settings of the account. This method can only be called for accounts to which the managing account has access: either the managing account itself or sub-accounts if the managing account is a multi-client account. This method supports patch semantics.
 
 Args:
   merchantId: string, The ID of the managing account. (required)
@@ -1463,7 +1463,7 @@
 
 <div class="method">
     <code class="details" id="update">update(merchantId, accountId, body, dryRun=None)</code>
-  <pre>Updates the shipping settings of the account.
+  <pre>Updates the shipping settings of the account. This method can only be called for accounts to which the managing account has access: either the managing account itself or sub-accounts if the managing account is a multi-client account.
 
 Args:
   merchantId: string, The ID of the managing account. (required)
diff --git a/docs/dyn/content_v2sandbox.orders.html b/docs/dyn/content_v2sandbox.orders.html
index dc30f33..f11416e 100644
--- a/docs/dyn/content_v2sandbox.orders.html
+++ b/docs/dyn/content_v2sandbox.orders.html
@@ -76,56 +76,56 @@
 <h2>Instance Methods</h2>
 <p class="toc_element">
   <code><a href="#acknowledge">acknowledge(merchantId, orderId, body)</a></code></p>
-<p class="firstline">Marks an order as acknowledged.</p>
+<p class="firstline">Marks an order as acknowledged. This method can only be called for non-multi-client accounts.</p>
 <p class="toc_element">
   <code><a href="#advancetestorder">advancetestorder(merchantId, orderId)</a></code></p>
-<p class="firstline">Sandbox only. Moves a test order from state "inProgress" to state "pendingShipment".</p>
+<p class="firstline">Sandbox only. Moves a test order from state "inProgress" to state "pendingShipment". This method can only be called for non-multi-client accounts.</p>
 <p class="toc_element">
   <code><a href="#cancel">cancel(merchantId, orderId, body)</a></code></p>
-<p class="firstline">Cancels all line items in an order.</p>
+<p class="firstline">Cancels all line items in an order. This method can only be called for non-multi-client accounts.</p>
 <p class="toc_element">
   <code><a href="#cancellineitem">cancellineitem(merchantId, orderId, body)</a></code></p>
-<p class="firstline">Cancels a line item.</p>
+<p class="firstline">Cancels a line item. This method can only be called for non-multi-client accounts.</p>
 <p class="toc_element">
   <code><a href="#createtestorder">createtestorder(merchantId, body)</a></code></p>
-<p class="firstline">Sandbox only. Creates a test order.</p>
+<p class="firstline">Sandbox only. Creates a test order. This method can only be called for non-multi-client accounts.</p>
 <p class="toc_element">
   <code><a href="#custombatch">custombatch(body)</a></code></p>
-<p class="firstline">Retrieves or modifies multiple orders in a single request.</p>
+<p class="firstline">Retrieves or modifies multiple orders in a single request. This method can only be called for non-multi-client accounts.</p>
 <p class="toc_element">
   <code><a href="#get">get(merchantId, orderId)</a></code></p>
-<p class="firstline">Retrieves an order from your Merchant Center account.</p>
+<p class="firstline">Retrieves an order from your Merchant Center account. This method can only be called for non-multi-client accounts.</p>
 <p class="toc_element">
   <code><a href="#getbymerchantorderid">getbymerchantorderid(merchantId, merchantOrderId)</a></code></p>
-<p class="firstline">Retrieves an order using merchant order id.</p>
+<p class="firstline">Retrieves an order using merchant order id. This method can only be called for non-multi-client accounts.</p>
 <p class="toc_element">
   <code><a href="#gettestordertemplate">gettestordertemplate(merchantId, templateName)</a></code></p>
-<p class="firstline">Sandbox only. Retrieves an order template that can be used to quickly create a new order in sandbox.</p>
+<p class="firstline">Sandbox only. Retrieves an order template that can be used to quickly create a new order in sandbox. This method can only be called for non-multi-client accounts.</p>
 <p class="toc_element">
   <code><a href="#list">list(merchantId, orderBy=None, pageToken=None, placedDateEnd=None, acknowledged=None, maxResults=None, placedDateStart=None, statuses=None)</a></code></p>
-<p class="firstline">Lists the orders in your Merchant Center account.</p>
+<p class="firstline">Lists the orders in your Merchant Center account. This method can only be called for non-multi-client accounts.</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="#refund">refund(merchantId, orderId, body)</a></code></p>
-<p class="firstline">Refund a portion of the order, up to the full amount paid.</p>
+<p class="firstline">Refund a portion of the order, up to the full amount paid. This method can only be called for non-multi-client accounts.</p>
 <p class="toc_element">
   <code><a href="#returnlineitem">returnlineitem(merchantId, orderId, body)</a></code></p>
-<p class="firstline">Returns a line item.</p>
+<p class="firstline">Returns a line item. This method can only be called for non-multi-client accounts.</p>
 <p class="toc_element">
   <code><a href="#shiplineitems">shiplineitems(merchantId, orderId, body)</a></code></p>
-<p class="firstline">Marks line item(s) as shipped.</p>
+<p class="firstline">Marks line item(s) as shipped. This method can only be called for non-multi-client accounts.</p>
 <p class="toc_element">
   <code><a href="#updatemerchantorderid">updatemerchantorderid(merchantId, orderId, body)</a></code></p>
-<p class="firstline">Updates the merchant order ID for a given order.</p>
+<p class="firstline">Updates the merchant order ID for a given order. This method can only be called for non-multi-client accounts.</p>
 <p class="toc_element">
   <code><a href="#updateshipment">updateshipment(merchantId, orderId, body)</a></code></p>
-<p class="firstline">Updates a shipment's status, carrier, and/or tracking ID.</p>
+<p class="firstline">Updates a shipment's status, carrier, and/or tracking ID. This method can only be called for non-multi-client accounts.</p>
 <h3>Method Details</h3>
 <div class="method">
     <code class="details" id="acknowledge">acknowledge(merchantId, orderId, body)</code>
-  <pre>Marks an order as acknowledged.
+  <pre>Marks an order as acknowledged. This method can only be called for non-multi-client accounts.
 
 Args:
   merchantId: string, The ID of the managing account. (required)
@@ -149,7 +149,7 @@
 
 <div class="method">
     <code class="details" id="advancetestorder">advancetestorder(merchantId, orderId)</code>
-  <pre>Sandbox only. Moves a test order from state "inProgress" to state "pendingShipment".
+  <pre>Sandbox only. Moves a test order from state "inProgress" to state "pendingShipment". This method can only be called for non-multi-client accounts.
 
 Args:
   merchantId: string, The ID of the managing account. (required)
@@ -165,7 +165,7 @@
 
 <div class="method">
     <code class="details" id="cancel">cancel(merchantId, orderId, body)</code>
-  <pre>Cancels all line items in an order.
+  <pre>Cancels all line items in an order. This method can only be called for non-multi-client accounts.
 
 Args:
   merchantId: string, The ID of the managing account. (required)
@@ -191,7 +191,7 @@
 
 <div class="method">
     <code class="details" id="cancellineitem">cancellineitem(merchantId, orderId, body)</code>
-  <pre>Cancels a line item.
+  <pre>Cancels a line item. This method can only be called for non-multi-client accounts.
 
 Args:
   merchantId: string, The ID of the managing account. (required)
@@ -223,7 +223,7 @@
 
 <div class="method">
     <code class="details" id="createtestorder">createtestorder(merchantId, body)</code>
-  <pre>Sandbox only. Creates a test order.
+  <pre>Sandbox only. Creates a test order. This method can only be called for non-multi-client accounts.
 
 Args:
   merchantId: string, The ID of the managing account. (required)
@@ -233,7 +233,7 @@
 {
     "testOrder": { # The test order to create.
       "customer": { # The details of the customer who placed the order.
-        "explicitMarketingPreference": True or False, # If set, this indicates the user explicitly chose to opt in or out of providing marketing rights to the merchant. If unset, this indicates the user has already made this choice in a previous purchase, and was thus not shown the marketing right opt in/out checkbox during the Purchases on Google checkout flow. Optional.
+        "explicitMarketingPreference": True or False, # If set, this indicates the user explicitly chose to opt in or out of providing marketing rights to the merchant. If unset, this indicates the user has already made this choice in a previous purchase, and was thus not shown the marketing right opt in/out checkbox during the checkout flow. Optional.
         "fullName": "A String", # Full name of the customer.
         "email": "A String", # Email address of the customer.
       },
@@ -346,7 +346,7 @@
 
 <div class="method">
     <code class="details" id="custombatch">custombatch(body)</code>
-  <pre>Retrieves or modifies multiple orders in a single request.
+  <pre>Retrieves or modifies multiple orders in a single request. This method can only be called for non-multi-client accounts.
 
 Args:
   body: object, The request body. (required)
@@ -433,7 +433,7 @@
         },
         "order": { # The retrieved order. Only defined if the method is get and if the request was successful.
           "customer": { # The details of the customer who placed the order.
-            "explicitMarketingPreference": True or False, # If set, this indicates the user explicitly chose to opt in or out of providing marketing rights to the merchant. If unset, this indicates the user has already made this choice in a previous purchase, and was thus not shown the marketing right opt in/out checkbox during the Purchases on Google checkout flow.
+            "explicitMarketingPreference": True or False, # If set, this indicates the user explicitly chose to opt in or out of providing marketing rights to the merchant. If unset, this indicates the user has already made this choice in a previous purchase, and was thus not shown the marketing right opt in/out checkbox during the checkout flow.
             "fullName": "A String", # Full name of the customer.
             "email": "A String", # Email address of the customer.
           },
@@ -647,7 +647,7 @@
 
 <div class="method">
     <code class="details" id="get">get(merchantId, orderId)</code>
-  <pre>Retrieves an order from your Merchant Center account.
+  <pre>Retrieves an order from your Merchant Center account. This method can only be called for non-multi-client accounts.
 
 Args:
   merchantId: string, The ID of the managing account. (required)
@@ -658,7 +658,7 @@
 
     {
     "customer": { # The details of the customer who placed the order.
-      "explicitMarketingPreference": True or False, # If set, this indicates the user explicitly chose to opt in or out of providing marketing rights to the merchant. If unset, this indicates the user has already made this choice in a previous purchase, and was thus not shown the marketing right opt in/out checkbox during the Purchases on Google checkout flow.
+      "explicitMarketingPreference": True or False, # If set, this indicates the user explicitly chose to opt in or out of providing marketing rights to the merchant. If unset, this indicates the user has already made this choice in a previous purchase, and was thus not shown the marketing right opt in/out checkbox during the checkout flow.
       "fullName": "A String", # Full name of the customer.
       "email": "A String", # Email address of the customer.
     },
@@ -868,7 +868,7 @@
 
 <div class="method">
     <code class="details" id="getbymerchantorderid">getbymerchantorderid(merchantId, merchantOrderId)</code>
-  <pre>Retrieves an order using merchant order id.
+  <pre>Retrieves an order using merchant order id. This method can only be called for non-multi-client accounts.
 
 Args:
   merchantId: string, The ID of the managing account. (required)
@@ -881,7 +881,7 @@
     "kind": "content#ordersGetByMerchantOrderIdResponse", # Identifies what kind of resource this is. Value: the fixed string "content#ordersGetByMerchantOrderIdResponse".
     "order": { # The requested order.
       "customer": { # The details of the customer who placed the order.
-        "explicitMarketingPreference": True or False, # If set, this indicates the user explicitly chose to opt in or out of providing marketing rights to the merchant. If unset, this indicates the user has already made this choice in a previous purchase, and was thus not shown the marketing right opt in/out checkbox during the Purchases on Google checkout flow.
+        "explicitMarketingPreference": True or False, # If set, this indicates the user explicitly chose to opt in or out of providing marketing rights to the merchant. If unset, this indicates the user has already made this choice in a previous purchase, and was thus not shown the marketing right opt in/out checkbox during the checkout flow.
         "fullName": "A String", # Full name of the customer.
         "email": "A String", # Email address of the customer.
       },
@@ -1092,7 +1092,7 @@
 
 <div class="method">
     <code class="details" id="gettestordertemplate">gettestordertemplate(merchantId, templateName)</code>
-  <pre>Sandbox only. Retrieves an order template that can be used to quickly create a new order in sandbox.
+  <pre>Sandbox only. Retrieves an order template that can be used to quickly create a new order in sandbox. This method can only be called for non-multi-client accounts.
 
 Args:
   merchantId: string, The ID of the managing account. (required)
@@ -1110,7 +1110,7 @@
     "kind": "content#ordersGetTestOrderTemplateResponse", # Identifies what kind of resource this is. Value: the fixed string "content#ordersGetTestOrderTemplateResponse".
     "template": { # The requested test order template.
       "customer": { # The details of the customer who placed the order.
-        "explicitMarketingPreference": True or False, # If set, this indicates the user explicitly chose to opt in or out of providing marketing rights to the merchant. If unset, this indicates the user has already made this choice in a previous purchase, and was thus not shown the marketing right opt in/out checkbox during the Purchases on Google checkout flow. Optional.
+        "explicitMarketingPreference": True or False, # If set, this indicates the user explicitly chose to opt in or out of providing marketing rights to the merchant. If unset, this indicates the user has already made this choice in a previous purchase, and was thus not shown the marketing right opt in/out checkbox during the checkout flow. Optional.
         "fullName": "A String", # Full name of the customer.
         "email": "A String", # Email address of the customer.
       },
@@ -1213,7 +1213,7 @@
 
 <div class="method">
     <code class="details" id="list">list(merchantId, orderBy=None, pageToken=None, placedDateEnd=None, acknowledged=None, maxResults=None, placedDateStart=None, statuses=None)</code>
-  <pre>Lists the orders in your Merchant Center account.
+  <pre>Lists the orders in your Merchant Center account. This method can only be called for non-multi-client accounts.
 
 Args:
   merchantId: string, The ID of the managing account. (required)
@@ -1251,7 +1251,7 @@
     "resources": [
       {
         "customer": { # The details of the customer who placed the order.
-          "explicitMarketingPreference": True or False, # If set, this indicates the user explicitly chose to opt in or out of providing marketing rights to the merchant. If unset, this indicates the user has already made this choice in a previous purchase, and was thus not shown the marketing right opt in/out checkbox during the Purchases on Google checkout flow.
+          "explicitMarketingPreference": True or False, # If set, this indicates the user explicitly chose to opt in or out of providing marketing rights to the merchant. If unset, this indicates the user has already made this choice in a previous purchase, and was thus not shown the marketing right opt in/out checkbox during the checkout flow.
           "fullName": "A String", # Full name of the customer.
           "email": "A String", # Email address of the customer.
         },
@@ -1477,7 +1477,7 @@
 
 <div class="method">
     <code class="details" id="refund">refund(merchantId, orderId, body)</code>
-  <pre>Refund a portion of the order, up to the full amount paid.
+  <pre>Refund a portion of the order, up to the full amount paid. This method can only be called for non-multi-client accounts.
 
 Args:
   merchantId: string, The ID of the managing account. (required)
@@ -1507,7 +1507,7 @@
 
 <div class="method">
     <code class="details" id="returnlineitem">returnlineitem(merchantId, orderId, body)</code>
-  <pre>Returns a line item.
+  <pre>Returns a line item. This method can only be called for non-multi-client accounts.
 
 Args:
   merchantId: string, The ID of the managing account. (required)
@@ -1535,7 +1535,7 @@
 
 <div class="method">
     <code class="details" id="shiplineitems">shiplineitems(merchantId, orderId, body)</code>
-  <pre>Marks line item(s) as shipped.
+  <pre>Marks line item(s) as shipped. This method can only be called for non-multi-client accounts.
 
 Args:
   merchantId: string, The ID of the managing account. (required)
@@ -1568,7 +1568,7 @@
 
 <div class="method">
     <code class="details" id="updatemerchantorderid">updatemerchantorderid(merchantId, orderId, body)</code>
-  <pre>Updates the merchant order ID for a given order.
+  <pre>Updates the merchant order ID for a given order. This method can only be called for non-multi-client accounts.
 
 Args:
   merchantId: string, The ID of the managing account. (required)
@@ -1593,7 +1593,7 @@
 
 <div class="method">
     <code class="details" id="updateshipment">updateshipment(merchantId, orderId, body)</code>
-  <pre>Updates a shipment's status, carrier, and/or tracking ID.
+  <pre>Updates a shipment's status, carrier, and/or tracking ID. This method can only be called for non-multi-client accounts.
 
 Args:
   merchantId: string, The ID of the managing account. (required)
diff --git a/docs/dyn/dataflow_v1b3.projects.html b/docs/dyn/dataflow_v1b3.projects.html
index 341d3ef..6323230 100644
--- a/docs/dyn/dataflow_v1b3.projects.html
+++ b/docs/dyn/dataflow_v1b3.projects.html
@@ -80,6 +80,11 @@
 <p class="firstline">Returns the jobs Resource.</p>
 
 <p class="toc_element">
+  <code><a href="dataflow_v1b3.projects.locations.html">locations()</a></code>
+</p>
+<p class="firstline">Returns the locations Resource.</p>
+
+<p class="toc_element">
   <code><a href="dataflow_v1b3.projects.templates.html">templates()</a></code>
 </p>
 <p class="firstline">Returns the templates Resource.</p>
diff --git a/docs/dyn/dataflow_v1b3.projects.jobs.html b/docs/dyn/dataflow_v1b3.projects.jobs.html
index 40bf964..767ca76 100644
--- a/docs/dyn/dataflow_v1b3.projects.jobs.html
+++ b/docs/dyn/dataflow_v1b3.projects.jobs.html
@@ -90,26 +90,26 @@
 <p class="firstline">Returns the workItems Resource.</p>
 
 <p class="toc_element">
-  <code><a href="#create">create(projectId, body, x__xgafv=None, replaceJobId=None, view=None)</a></code></p>
+  <code><a href="#create">create(projectId, body, location=None, x__xgafv=None, replaceJobId=None, view=None)</a></code></p>
 <p class="firstline">Creates a dataflow job.</p>
 <p class="toc_element">
-  <code><a href="#get">get(projectId, jobId, x__xgafv=None, view=None)</a></code></p>
+  <code><a href="#get">get(projectId, jobId, location=None, x__xgafv=None, view=None)</a></code></p>
 <p class="firstline">Gets the state of the specified dataflow job.</p>
 <p class="toc_element">
-  <code><a href="#getMetrics">getMetrics(projectId, jobId, startTime=None, x__xgafv=None)</a></code></p>
+  <code><a href="#getMetrics">getMetrics(projectId, jobId, startTime=None, location=None, x__xgafv=None)</a></code></p>
 <p class="firstline">Request the job status.</p>
 <p class="toc_element">
-  <code><a href="#list">list(projectId, pageSize=None, filter=None, pageToken=None, x__xgafv=None, view=None)</a></code></p>
+  <code><a href="#list">list(projectId, pageSize=None, x__xgafv=None, pageToken=None, location=None, filter=None, view=None)</a></code></p>
 <p class="firstline">List the jobs of a project</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="#update">update(projectId, jobId, body, x__xgafv=None)</a></code></p>
+  <code><a href="#update">update(projectId, jobId, body, location=None, x__xgafv=None)</a></code></p>
 <p class="firstline">Updates the state of an existing dataflow job.</p>
 <h3>Method Details</h3>
 <div class="method">
-    <code class="details" id="create">create(projectId, body, x__xgafv=None, replaceJobId=None, view=None)</code>
+    <code class="details" id="create">create(projectId, body, location=None, x__xgafv=None, replaceJobId=None, view=None)</code>
   <pre>Creates a dataflow job.
 
 Args:
@@ -121,6 +121,7 @@
     "clientRequestId": "A String", # Client's unique identifier of the job, re-used by SDK across retried attempts. If this field is set, the service will ensure its uniqueness. That is, the request to create a job will fail if the service has knowledge of a previously submitted job with the same client's id and job name. The caller may, for example, use this field to ensure idempotence of job creation across retried attempts to create a job. By default, the field is empty and, in that case, the service ignores it.
     "requestedState": "A String", # The job's requested state. UpdateJob may be used to switch between the JOB_STATE_STOPPED and JOB_STATE_RUNNING states, by setting requested_state. UpdateJob may also be used to directly set a job's requested state to JOB_STATE_CANCELLED or JOB_STATE_DONE, irrevocably terminating the job if it has not already reached a terminal state.
     "name": "A String", # The user-specified Dataflow job name. Only one Job with a given name may exist in a project at any given time. If a caller attempts to create a Job with the same name as an already-existing Job, the attempt will return the existing Job. The name must match the regular expression [a-z]([-a-z0-9]{0,38}[a-z0-9])?
+    "location": "A String", # The location which contains this job.
     "replacedByJobId": "A String", # If another job is an update of this job (and thus, this job is in JOB_STATE_UPDATED), this field will contain the ID of that job.
     "projectId": "A String", # The project which owns the job.
     "labels": { # User-defined labels for this job. The labels map can contain no more than 64 entries. Entries of the labels map are UTF8 strings that comply with the following restrictions: * Keys must conform to regexp: \p{Ll}\p{Lo}{0,62} * Values must conform to regexp: [\p{Ll}\p{Lo}\p{N}_-]{0,63} * Both keys and values are additionally constrained to be <= 128 bytes in size.
@@ -252,6 +253,7 @@
     },
   }
 
+  location: string, The location which contains this job.
   x__xgafv: string, V1 error format.
   replaceJobId: string, DEPRECATED. This field is now on the Job message.
   view: string, Level of information requested in response.
@@ -263,6 +265,7 @@
       "clientRequestId": "A String", # Client's unique identifier of the job, re-used by SDK across retried attempts. If this field is set, the service will ensure its uniqueness. That is, the request to create a job will fail if the service has knowledge of a previously submitted job with the same client's id and job name. The caller may, for example, use this field to ensure idempotence of job creation across retried attempts to create a job. By default, the field is empty and, in that case, the service ignores it.
       "requestedState": "A String", # The job's requested state. UpdateJob may be used to switch between the JOB_STATE_STOPPED and JOB_STATE_RUNNING states, by setting requested_state. UpdateJob may also be used to directly set a job's requested state to JOB_STATE_CANCELLED or JOB_STATE_DONE, irrevocably terminating the job if it has not already reached a terminal state.
       "name": "A String", # The user-specified Dataflow job name. Only one Job with a given name may exist in a project at any given time. If a caller attempts to create a Job with the same name as an already-existing Job, the attempt will return the existing Job. The name must match the regular expression [a-z]([-a-z0-9]{0,38}[a-z0-9])?
+      "location": "A String", # The location which contains this job.
       "replacedByJobId": "A String", # If another job is an update of this job (and thus, this job is in JOB_STATE_UPDATED), this field will contain the ID of that job.
       "projectId": "A String", # The project which owns the job.
       "labels": { # User-defined labels for this job. The labels map can contain no more than 64 entries. Entries of the labels map are UTF8 strings that comply with the following restrictions: * Keys must conform to regexp: \p{Ll}\p{Lo}{0,62} * Values must conform to regexp: [\p{Ll}\p{Lo}\p{N}_-]{0,63} * Both keys and values are additionally constrained to be <= 128 bytes in size.
@@ -396,12 +399,13 @@
 </div>
 
 <div class="method">
-    <code class="details" id="get">get(projectId, jobId, x__xgafv=None, view=None)</code>
+    <code class="details" id="get">get(projectId, jobId, location=None, x__xgafv=None, view=None)</code>
   <pre>Gets the state of the specified dataflow job.
 
 Args:
   projectId: string, The project which owns the job. (required)
   jobId: string, Identifies a single job. (required)
+  location: string, The location which contains this job.
   x__xgafv: string, V1 error format.
   view: string, Level of information requested in response.
 
@@ -412,6 +416,7 @@
       "clientRequestId": "A String", # Client's unique identifier of the job, re-used by SDK across retried attempts. If this field is set, the service will ensure its uniqueness. That is, the request to create a job will fail if the service has knowledge of a previously submitted job with the same client's id and job name. The caller may, for example, use this field to ensure idempotence of job creation across retried attempts to create a job. By default, the field is empty and, in that case, the service ignores it.
       "requestedState": "A String", # The job's requested state. UpdateJob may be used to switch between the JOB_STATE_STOPPED and JOB_STATE_RUNNING states, by setting requested_state. UpdateJob may also be used to directly set a job's requested state to JOB_STATE_CANCELLED or JOB_STATE_DONE, irrevocably terminating the job if it has not already reached a terminal state.
       "name": "A String", # The user-specified Dataflow job name. Only one Job with a given name may exist in a project at any given time. If a caller attempts to create a Job with the same name as an already-existing Job, the attempt will return the existing Job. The name must match the regular expression [a-z]([-a-z0-9]{0,38}[a-z0-9])?
+      "location": "A String", # The location which contains this job.
       "replacedByJobId": "A String", # If another job is an update of this job (and thus, this job is in JOB_STATE_UPDATED), this field will contain the ID of that job.
       "projectId": "A String", # The project which owns the job.
       "labels": { # User-defined labels for this job. The labels map can contain no more than 64 entries. Entries of the labels map are UTF8 strings that comply with the following restrictions: * Keys must conform to regexp: \p{Ll}\p{Lo}{0,62} * Values must conform to regexp: [\p{Ll}\p{Lo}\p{N}_-]{0,63} * Both keys and values are additionally constrained to be <= 128 bytes in size.
@@ -545,13 +550,14 @@
 </div>
 
 <div class="method">
-    <code class="details" id="getMetrics">getMetrics(projectId, jobId, startTime=None, x__xgafv=None)</code>
+    <code class="details" id="getMetrics">getMetrics(projectId, jobId, startTime=None, location=None, x__xgafv=None)</code>
   <pre>Request the job status.
 
 Args:
   projectId: string, A project id. (required)
   jobId: string, The job to get messages for. (required)
   startTime: string, Return only metric data that has changed since this time. Default is to return all information about all metrics for the job.
+  location: string, The location which contains the job specified by job_id.
   x__xgafv: string, V1 error format.
 
 Returns:
@@ -583,15 +589,16 @@
 </div>
 
 <div class="method">
-    <code class="details" id="list">list(projectId, pageSize=None, filter=None, pageToken=None, x__xgafv=None, view=None)</code>
+    <code class="details" id="list">list(projectId, pageSize=None, x__xgafv=None, pageToken=None, location=None, filter=None, view=None)</code>
   <pre>List the jobs of a project
 
 Args:
   projectId: string, The project which owns the jobs. (required)
   pageSize: integer, If there are many jobs, limit response to at most this many. The actual number of jobs returned will be the lesser of max_responses and an unspecified server-defined limit.
-  filter: string, The kind of filter to use.
-  pageToken: string, Set this to the 'next_page_token' field of a previous response to request additional results in a long list.
   x__xgafv: string, V1 error format.
+  pageToken: string, Set this to the 'next_page_token' field of a previous response to request additional results in a long list.
+  location: string, The location which contains this job.
+  filter: string, The kind of filter to use.
   view: string, Level of information requested in response. Default is SUMMARY.
 
 Returns:
@@ -599,11 +606,17 @@
 
     { # Response to a request to list Dataflow jobs. This may be a partial response, depending on the page size in the ListJobsRequest.
     "nextPageToken": "A String", # Set if there may be more results than fit in this response.
+    "failedLocation": [ # Zero or more messages describing locations that failed to respond.
+      { # FailedLocation indicates which location failed to respond to a request for data.
+        "name": "A String", # The name of the failed location.
+      },
+    ],
     "jobs": [ # A subset of the requested job information.
       { # Defines a job to be run by the Dataflow service.
           "clientRequestId": "A String", # Client's unique identifier of the job, re-used by SDK across retried attempts. If this field is set, the service will ensure its uniqueness. That is, the request to create a job will fail if the service has knowledge of a previously submitted job with the same client's id and job name. The caller may, for example, use this field to ensure idempotence of job creation across retried attempts to create a job. By default, the field is empty and, in that case, the service ignores it.
           "requestedState": "A String", # The job's requested state. UpdateJob may be used to switch between the JOB_STATE_STOPPED and JOB_STATE_RUNNING states, by setting requested_state. UpdateJob may also be used to directly set a job's requested state to JOB_STATE_CANCELLED or JOB_STATE_DONE, irrevocably terminating the job if it has not already reached a terminal state.
           "name": "A String", # The user-specified Dataflow job name. Only one Job with a given name may exist in a project at any given time. If a caller attempts to create a Job with the same name as an already-existing Job, the attempt will return the existing Job. The name must match the regular expression [a-z]([-a-z0-9]{0,38}[a-z0-9])?
+          "location": "A String", # The location which contains this job.
           "replacedByJobId": "A String", # If another job is an update of this job (and thus, this job is in JOB_STATE_UPDATED), this field will contain the ID of that job.
           "projectId": "A String", # The project which owns the job.
           "labels": { # User-defined labels for this job. The labels map can contain no more than 64 entries. Entries of the labels map are UTF8 strings that comply with the following restrictions: * Keys must conform to regexp: \p{Ll}\p{Lo}{0,62} * Values must conform to regexp: [\p{Ll}\p{Lo}\p{N}_-]{0,63} * Both keys and values are additionally constrained to be <= 128 bytes in size.
@@ -753,7 +766,7 @@
 </div>
 
 <div class="method">
-    <code class="details" id="update">update(projectId, jobId, body, x__xgafv=None)</code>
+    <code class="details" id="update">update(projectId, jobId, body, location=None, x__xgafv=None)</code>
   <pre>Updates the state of an existing dataflow job.
 
 Args:
@@ -766,6 +779,7 @@
     "clientRequestId": "A String", # Client's unique identifier of the job, re-used by SDK across retried attempts. If this field is set, the service will ensure its uniqueness. That is, the request to create a job will fail if the service has knowledge of a previously submitted job with the same client's id and job name. The caller may, for example, use this field to ensure idempotence of job creation across retried attempts to create a job. By default, the field is empty and, in that case, the service ignores it.
     "requestedState": "A String", # The job's requested state. UpdateJob may be used to switch between the JOB_STATE_STOPPED and JOB_STATE_RUNNING states, by setting requested_state. UpdateJob may also be used to directly set a job's requested state to JOB_STATE_CANCELLED or JOB_STATE_DONE, irrevocably terminating the job if it has not already reached a terminal state.
     "name": "A String", # The user-specified Dataflow job name. Only one Job with a given name may exist in a project at any given time. If a caller attempts to create a Job with the same name as an already-existing Job, the attempt will return the existing Job. The name must match the regular expression [a-z]([-a-z0-9]{0,38}[a-z0-9])?
+    "location": "A String", # The location which contains this job.
     "replacedByJobId": "A String", # If another job is an update of this job (and thus, this job is in JOB_STATE_UPDATED), this field will contain the ID of that job.
     "projectId": "A String", # The project which owns the job.
     "labels": { # User-defined labels for this job. The labels map can contain no more than 64 entries. Entries of the labels map are UTF8 strings that comply with the following restrictions: * Keys must conform to regexp: \p{Ll}\p{Lo}{0,62} * Values must conform to regexp: [\p{Ll}\p{Lo}\p{N}_-]{0,63} * Both keys and values are additionally constrained to be <= 128 bytes in size.
@@ -897,6 +911,7 @@
     },
   }
 
+  location: string, The location which contains this job.
   x__xgafv: string, V1 error format.
 
 Returns:
@@ -906,6 +921,7 @@
       "clientRequestId": "A String", # Client's unique identifier of the job, re-used by SDK across retried attempts. If this field is set, the service will ensure its uniqueness. That is, the request to create a job will fail if the service has knowledge of a previously submitted job with the same client's id and job name. The caller may, for example, use this field to ensure idempotence of job creation across retried attempts to create a job. By default, the field is empty and, in that case, the service ignores it.
       "requestedState": "A String", # The job's requested state. UpdateJob may be used to switch between the JOB_STATE_STOPPED and JOB_STATE_RUNNING states, by setting requested_state. UpdateJob may also be used to directly set a job's requested state to JOB_STATE_CANCELLED or JOB_STATE_DONE, irrevocably terminating the job if it has not already reached a terminal state.
       "name": "A String", # The user-specified Dataflow job name. Only one Job with a given name may exist in a project at any given time. If a caller attempts to create a Job with the same name as an already-existing Job, the attempt will return the existing Job. The name must match the regular expression [a-z]([-a-z0-9]{0,38}[a-z0-9])?
+      "location": "A String", # The location which contains this job.
       "replacedByJobId": "A String", # If another job is an update of this job (and thus, this job is in JOB_STATE_UPDATED), this field will contain the ID of that job.
       "projectId": "A String", # The project which owns the job.
       "labels": { # User-defined labels for this job. The labels map can contain no more than 64 entries. Entries of the labels map are UTF8 strings that comply with the following restrictions: * Keys must conform to regexp: \p{Ll}\p{Lo}{0,62} * Values must conform to regexp: [\p{Ll}\p{Lo}\p{N}_-]{0,63} * Both keys and values are additionally constrained to be <= 128 bytes in size.
diff --git a/docs/dyn/dataflow_v1b3.projects.jobs.messages.html b/docs/dyn/dataflow_v1b3.projects.jobs.messages.html
index a33e7cd..86bed2f 100644
--- a/docs/dyn/dataflow_v1b3.projects.jobs.messages.html
+++ b/docs/dyn/dataflow_v1b3.projects.jobs.messages.html
@@ -75,14 +75,14 @@
 <h1><a href="dataflow_v1b3.html">Google Dataflow API</a> . <a href="dataflow_v1b3.projects.html">projects</a> . <a href="dataflow_v1b3.projects.jobs.html">jobs</a> . <a href="dataflow_v1b3.projects.jobs.messages.html">messages</a></h1>
 <h2>Instance Methods</h2>
 <p class="toc_element">
-  <code><a href="#list">list(projectId, jobId, startTime=None, pageSize=None, x__xgafv=None, pageToken=None, minimumImportance=None, endTime=None)</a></code></p>
+  <code><a href="#list">list(projectId, jobId, startTime=None, pageSize=None, x__xgafv=None, pageToken=None, location=None, minimumImportance=None, endTime=None)</a></code></p>
 <p class="firstline">Request the job status.</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>
 <h3>Method Details</h3>
 <div class="method">
-    <code class="details" id="list">list(projectId, jobId, startTime=None, pageSize=None, x__xgafv=None, pageToken=None, minimumImportance=None, endTime=None)</code>
+    <code class="details" id="list">list(projectId, jobId, startTime=None, pageSize=None, x__xgafv=None, pageToken=None, location=None, minimumImportance=None, endTime=None)</code>
   <pre>Request the job status.
 
 Args:
@@ -92,6 +92,7 @@
   pageSize: integer, If specified, determines the maximum number of messages to return. If unspecified, the service may choose an appropriate default, or may return an arbitrarily large number of results.
   x__xgafv: string, V1 error format.
   pageToken: string, If supplied, this should be the value of next_page_token returned by an earlier call. This will cause the next page of results to be returned.
+  location: string, The location which contains the job specified by job_id.
   minimumImportance: string, Filter to only get messages with importance >= level
   endTime: string, Return only messages with timestamps < end_time. The default is now (i.e. return up to the latest messages available).
 
diff --git a/docs/dyn/dataflow_v1b3.projects.jobs.workItems.html b/docs/dyn/dataflow_v1b3.projects.jobs.workItems.html
index fdd8cef..73d834a 100644
--- a/docs/dyn/dataflow_v1b3.projects.jobs.workItems.html
+++ b/docs/dyn/dataflow_v1b3.projects.jobs.workItems.html
@@ -95,12 +95,13 @@
     "workItemTypes": [ # Filter for WorkItem type.
       "A String",
     ],
-    "requestedLeaseDuration": "A String", # The initial lease period.
     "workerCapabilities": [ # Worker capabilities. WorkItems might be limited to workers with specific capabilities.
       "A String",
     ],
-    "currentWorkerTime": "A String", # The current timestamp at the worker.
+    "requestedLeaseDuration": "A String", # The initial lease period.
     "workerId": "A String", # Identifies the worker leasing work -- typically the ID of the virtual machine running the worker.
+    "currentWorkerTime": "A String", # The current timestamp at the worker.
+    "location": "A String", # The location which contains the WorkItem's job.
   }
 
   x__xgafv: string, V1 error format.
@@ -406,6 +407,7 @@
                       "topic": "A String", # A pubsub topic, in the form of "pubsub.googleapis.com/topics/
                           # /"
                       "trackingSubscription": "A String", # If set, specifies the pubsub subscription that will be used for tracking custom time timestamps for watermark estimation.
+                      "withAttributes": True or False, # If true, then the client has requested to get pubsub attributes.
                       "subscription": "A String", # A pubsub subscription, in the form of "pubsub.googleapis.com/subscriptions/
                           # /"
                     },
@@ -441,6 +443,7 @@
                       "topic": "A String", # A pubsub topic, in the form of "pubsub.googleapis.com/topics/
                           # /"
                       "trackingSubscription": "A String", # If set, specifies the pubsub subscription that will be used for tracking custom time timestamps for watermark estimation.
+                      "withAttributes": True or False, # If true, then the client has requested to get pubsub attributes.
                       "subscription": "A String", # A pubsub subscription, in the form of "pubsub.googleapis.com/subscriptions/
                           # /"
                     },
@@ -1021,6 +1024,7 @@
         },
       },
     ],
+    "location": "A String", # The location which contains the WorkItem's job.
   }
 
   x__xgafv: string, V1 error format.
diff --git a/docs/dyn/dataflow_v1b3.projects.locations.html b/docs/dyn/dataflow_v1b3.projects.locations.html
new file mode 100644
index 0000000..fa802c3
--- /dev/null
+++ b/docs/dyn/dataflow_v1b3.projects.locations.html
@@ -0,0 +1,82 @@
+<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="dataflow_v1b3.html">Google Dataflow API</a> . <a href="dataflow_v1b3.projects.html">projects</a> . <a href="dataflow_v1b3.projects.locations.html">locations</a></h1>
+<h2>Instance Methods</h2>
+<p class="toc_element">
+  <code><a href="dataflow_v1b3.projects.locations.jobs.html">jobs()</a></code>
+</p>
+<p class="firstline">Returns the jobs Resource.</p>
+
+</body></html>
\ No newline at end of file
diff --git a/docs/dyn/dataflow_v1b3.projects.locations.jobs.html b/docs/dyn/dataflow_v1b3.projects.locations.jobs.html
new file mode 100644
index 0000000..0382ca7
--- /dev/null
+++ b/docs/dyn/dataflow_v1b3.projects.locations.jobs.html
@@ -0,0 +1,1052 @@
+<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="dataflow_v1b3.html">Google Dataflow API</a> . <a href="dataflow_v1b3.projects.html">projects</a> . <a href="dataflow_v1b3.projects.locations.html">locations</a> . <a href="dataflow_v1b3.projects.locations.jobs.html">jobs</a></h1>
+<h2>Instance Methods</h2>
+<p class="toc_element">
+  <code><a href="dataflow_v1b3.projects.locations.jobs.messages.html">messages()</a></code>
+</p>
+<p class="firstline">Returns the messages Resource.</p>
+
+<p class="toc_element">
+  <code><a href="dataflow_v1b3.projects.locations.jobs.workItems.html">workItems()</a></code>
+</p>
+<p class="firstline">Returns the workItems Resource.</p>
+
+<p class="toc_element">
+  <code><a href="#create">create(projectId, location, body, x__xgafv=None, replaceJobId=None, view=None)</a></code></p>
+<p class="firstline">Creates a dataflow job.</p>
+<p class="toc_element">
+  <code><a href="#get">get(projectId, location, jobId, x__xgafv=None, view=None)</a></code></p>
+<p class="firstline">Gets the state of the specified dataflow job.</p>
+<p class="toc_element">
+  <code><a href="#getMetrics">getMetrics(projectId, location, jobId, startTime=None, x__xgafv=None)</a></code></p>
+<p class="firstline">Request the job status.</p>
+<p class="toc_element">
+  <code><a href="#list">list(projectId, location, pageSize=None, x__xgafv=None, pageToken=None, filter=None, view=None)</a></code></p>
+<p class="firstline">List the jobs of a project</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="#update">update(projectId, location, jobId, body, x__xgafv=None)</a></code></p>
+<p class="firstline">Updates the state of an existing dataflow job.</p>
+<h3>Method Details</h3>
+<div class="method">
+    <code class="details" id="create">create(projectId, location, body, x__xgafv=None, replaceJobId=None, view=None)</code>
+  <pre>Creates a dataflow job.
+
+Args:
+  projectId: string, The project which owns the job. (required)
+  location: string, The location which contains this job. (required)
+  body: object, The request body. (required)
+    The object takes the form of:
+
+{ # Defines a job to be run by the Dataflow service.
+    "clientRequestId": "A String", # Client's unique identifier of the job, re-used by SDK across retried attempts. If this field is set, the service will ensure its uniqueness. That is, the request to create a job will fail if the service has knowledge of a previously submitted job with the same client's id and job name. The caller may, for example, use this field to ensure idempotence of job creation across retried attempts to create a job. By default, the field is empty and, in that case, the service ignores it.
+    "requestedState": "A String", # The job's requested state. UpdateJob may be used to switch between the JOB_STATE_STOPPED and JOB_STATE_RUNNING states, by setting requested_state. UpdateJob may also be used to directly set a job's requested state to JOB_STATE_CANCELLED or JOB_STATE_DONE, irrevocably terminating the job if it has not already reached a terminal state.
+    "name": "A String", # The user-specified Dataflow job name. Only one Job with a given name may exist in a project at any given time. If a caller attempts to create a Job with the same name as an already-existing Job, the attempt will return the existing Job. The name must match the regular expression [a-z]([-a-z0-9]{0,38}[a-z0-9])?
+    "location": "A String", # The location which contains this job.
+    "replacedByJobId": "A String", # If another job is an update of this job (and thus, this job is in JOB_STATE_UPDATED), this field will contain the ID of that job.
+    "projectId": "A String", # The project which owns the job.
+    "labels": { # User-defined labels for this job. The labels map can contain no more than 64 entries. Entries of the labels map are UTF8 strings that comply with the following restrictions: * Keys must conform to regexp: \p{Ll}\p{Lo}{0,62} * Values must conform to regexp: [\p{Ll}\p{Lo}\p{N}_-]{0,63} * Both keys and values are additionally constrained to be <= 128 bytes in size.
+      "a_key": "A String",
+    },
+    "transformNameMapping": { # Map of transform name prefixes of the job to be replaced to the corresponding name prefixes of the new job.
+      "a_key": "A String",
+    },
+    "createTime": "A String", # Timestamp when job was initially created. Immutable, set by the Dataflow service.
+    "environment": { # Describes the environment in which a Dataflow Job runs. # Environment for the job.
+      "version": { # A structure describing which components and their versions of the service are required in order to run the job.
+        "a_key": "", # Properties of the object.
+      },
+      "tempStoragePrefix": "A String", # The prefix of the resources the system should use for temporary storage. The system will append the suffix "/temp-{JOBNAME} to this resource prefix, where {JOBNAME} is the value of the job_name field. The resulting bucket and object prefix is used as the prefix of the resources used to store temporary data needed during the job execution. NOTE: This will override the value in taskrunner_settings. The supported resource type is: Google Cloud Storage: storage.googleapis.com/{bucket}/{object} bucket.storage.googleapis.com/{object}
+      "internalExperiments": { # Experimental settings.
+        "a_key": "", # Properties of the object. Contains field @type with type URL.
+      },
+      "dataset": "A String", # The dataset for the current project where various workflow related tables are stored. The supported resource type is: Google BigQuery: bigquery.googleapis.com/{dataset}
+      "experiments": [ # The list of experiments to enable.
+        "A String",
+      ],
+      "serviceAccountEmail": "A String", # Identity to run virtual machines as. Defaults to the default account.
+      "sdkPipelineOptions": { # The Dataflow SDK pipeline options specified by the user. These options are passed through the service and are used to recreate the SDK pipeline options on the worker in a language agnostic and platform independent way.
+        "a_key": "", # Properties of the object.
+      },
+      "userAgent": { # A description of the process that generated the request.
+        "a_key": "", # Properties of the object.
+      },
+      "clusterManagerApiService": "A String", # The type of cluster manager API to use. If unknown or unspecified, the service will attempt to choose a reasonable default. This should be in the form of the API service name, e.g. "compute.googleapis.com".
+      "workerPools": [ # Worker pools. At least one "harness" worker pool must be specified in order for the job to have workers.
+        { # Describes one particular pool of Dataflow workers to be instantiated by the Dataflow service in order to perform the computations required by a job. Note that a workflow job may use multiple pools, in order to match the various computational requirements of the various stages of the job.
+          "diskSourceImage": "A String", # Fully qualified source image for disks.
+          "taskrunnerSettings": { # Taskrunner configuration settings. # Settings passed through to Google Compute Engine workers when using the standard Dataflow task runner. Users should ignore this field.
+            "workflowFileName": "A String", # Store the workflow in this file.
+            "logUploadLocation": "A String", # Indicates where to put logs. If this is not specified, the logs will not be uploaded. The supported resource type is: Google Cloud Storage: storage.googleapis.com/{bucket}/{object} bucket.storage.googleapis.com/{object}
+            "commandlinesFileName": "A String", # Store preprocessing commands in this file.
+            "parallelWorkerSettings": { # Provides data to pass through to the worker harness. # Settings to pass to the parallel worker harness.
+              "reportingEnabled": True or False, # Send work progress updates to service.
+              "shuffleServicePath": "A String", # The Shuffle service path relative to the root URL, for example, "shuffle/v1beta1".
+              "workerId": "A String", # ID of the worker running this pipeline.
+              "baseUrl": "A String", # The base URL for accessing Google Cloud APIs. When workers access Google Cloud APIs, they logically do so via relative URLs. If this field is specified, it supplies the base URL to use for resolving these relative URLs. The normative algorithm used is defined by RFC 1808, "Relative Uniform Resource Locators". If not specified, the default value is "http://www.googleapis.com/"
+              "servicePath": "A String", # The Dataflow service path relative to the root URL, for example, "dataflow/v1b3/projects".
+              "tempStoragePrefix": "A String", # The prefix of the resources the system should use for temporary storage. The supported resource type is: Google Cloud Storage: storage.googleapis.com/{bucket}/{object} bucket.storage.googleapis.com/{object}
+            },
+            "vmId": "A String", # ID string of VM.
+            "baseTaskDir": "A String", # Location on the worker for task-specific subdirectories.
+            "continueOnException": True or False, # Do we continue taskrunner if an exception is hit?
+            "baseUrl": "A String", # The base URL for the taskrunner to use when accessing Google Cloud APIs. When workers access Google Cloud APIs, they logically do so via relative URLs. If this field is specified, it supplies the base URL to use for resolving these relative URLs. The normative algorithm used is defined by RFC 1808, "Relative Uniform Resource Locators". If not specified, the default value is "http://www.googleapis.com/"
+            "taskUser": "A String", # The UNIX user ID on the worker VM to use for tasks launched by taskrunner; e.g. "root".
+            "taskGroup": "A String", # The UNIX group ID on the worker VM to use for tasks launched by taskrunner; e.g. "wheel".
+            "oauthScopes": [ # OAuth2 scopes to be requested by the taskrunner in order to access the dataflow API.
+              "A String",
+            ],
+            "languageHint": "A String", # Suggested backend language.
+            "logToSerialconsole": True or False, # Send taskrunner log into to Google Compute Engine VM serial console?
+            "streamingWorkerMainClass": "A String", # Streaming worker main class name.
+            "logDir": "A String", # Directory on the VM to store logs.
+            "dataflowApiVersion": "A String", # API version of endpoint, e.g. "v1b3"
+            "harnessCommand": "A String", # Command to launch the worker harness.
+            "tempStoragePrefix": "A String", # The prefix of the resources the taskrunner should use for temporary storage. The supported resource type is: Google Cloud Storage: storage.googleapis.com/{bucket}/{object} bucket.storage.googleapis.com/{object}
+            "alsologtostderr": True or False, # Also send taskrunner log info to stderr?
+          },
+          "kind": "A String", # The kind of the worker pool; currently only 'harness' and 'shuffle' are supported.
+          "machineType": "A String", # Machine type (e.g. "n1-standard-1"). If empty or unspecified, the service will attempt to choose a reasonable default.
+          "network": "A String", # Network to which VMs will be assigned. If empty or unspecified, the service will use the network "default".
+          "zone": "A String", # Zone to run the worker pools in. If empty or unspecified, the service will attempt to choose a reasonable default.
+          "numThreadsPerWorker": 42, # The number of threads per worker harness. If empty or unspecified, the service will choose a number of threads (according to the number of cores on the selected machine type for batch, or 1 by convention for streaming).
+          "ipConfiguration": "A String", # Configuration for VM IPs.
+          "onHostMaintenance": "A String", # The action to take on host maintenance, as defined by the Google Compute Engine API.
+          "diskType": "A String", # Type of root disk for VMs. If empty or unspecified, the service will attempt to choose a reasonable default.
+          "teardownPolicy": "A String", # Sets the policy for determining when to turndown worker pool. Allowed values are: TEARDOWN_ALWAYS, TEARDOWN_ON_SUCCESS, and TEARDOWN_NEVER. TEARDOWN_ALWAYS means workers are always torn down regardless of whether the job succeeds. TEARDOWN_ON_SUCCESS means workers are torn down if the job succeeds. TEARDOWN_NEVER means the workers are never torn down. If the workers are not torn down by the service, they will continue to run and use Google Compute Engine VM resources in the user's project until they are explicitly terminated by the user. Because of this, Google recommends using the TEARDOWN_ALWAYS policy except for small, manually supervised test jobs. If unknown or unspecified, the service will attempt to choose a reasonable default.
+          "diskSizeGb": 42, # Size of root disk for VMs, in GB. If zero or unspecified, the service will attempt to choose a reasonable default.
+          "metadata": { # Metadata to set on the Google Compute Engine VMs.
+            "a_key": "A String",
+          },
+          "poolArgs": { # Extra arguments for this worker pool.
+            "a_key": "", # Properties of the object. Contains field @type with type URL.
+          },
+          "numWorkers": 42, # Number of Google Compute Engine workers in this pool needed to execute the job. If zero or unspecified, the service will attempt to choose a reasonable default.
+          "workerHarnessContainerImage": "A String", # Docker container image that executes Dataflow worker harness, residing in Google Container Registry. Required.
+          "defaultPackageSet": "A String", # The default package set to install. This allows the service to select a default set of packages which are useful to worker harnesses written in a particular language.
+          "packages": [ # Packages to be installed on workers.
+            { # Packages that need to be installed in order for a worker to run the steps of the Dataflow job which will be assigned to its worker pool. This is the mechanism by which the SDK causes code to be loaded onto the workers. For example, the Dataflow Java SDK might use this to install jars containing the user's code and all of the various dependencies (libraries, data files, etc) required in order for that code to run.
+              "name": "A String", # The name of the package.
+              "location": "A String", # The resource to read the package from. The supported resource type is: Google Cloud Storage: storage.googleapis.com/{bucket} bucket.storage.googleapis.com/
+            },
+          ],
+          "autoscalingSettings": { # Settings for WorkerPool autoscaling. # Settings for autoscaling of this WorkerPool.
+            "maxNumWorkers": 42, # The maximum number of workers to cap scaling at.
+            "algorithm": "A String", # The algorithm to use for autoscaling.
+          },
+          "subnetwork": "A String", # Subnetwork to which VMs will be assigned, if desired. Expected to be of the form "regions/REGION/subnetworks/SUBNETWORK".
+          "dataDisks": [ # Data disks that are used by a VM in this workflow.
+            { # Describes the data disk used by a workflow job.
+              "mountPoint": "A String", # Directory in a VM where disk is mounted.
+              "sizeGb": 42, # Size of disk in GB. If zero or unspecified, the service will attempt to choose a reasonable default.
+              "diskType": "A String", # Disk storage type, as defined by Google Compute Engine. This must be a disk type appropriate to the project and zone in which the workers will run. If unknown or unspecified, the service will attempt to choose a reasonable default. For example, the standard persistent disk type is a resource name typically ending in "pd-standard". If SSD persistent disks are available, the resource name typically ends with "pd-ssd". The actual valid values are defined the Google Compute Engine API, not by the Dataflow API; consult the Google Compute Engine documentation for more information about determining the set of available disk types for a particular project and zone. Google Compute Engine Disk types are local to a particular project in a particular zone, and so the resource name will typically look something like this: compute.googleapis.com/projects/
+                  # /zones//diskTypes/pd-standard
+            },
+          ],
+        },
+      ],
+    },
+    "replaceJobId": "A String", # If this job is an update of an existing job, this field will be the ID of the job it replaced. When sending a CreateJobRequest, you can update a job by specifying it here. The job named here will be stopped, and its intermediate state transferred to this job.
+    "steps": [ # The top-level steps that constitute the entire job.
+      { # Defines a particular step within a Dataflow job. A job consists of multiple steps, each of which performs some specific operation as part of the overall job. Data is typically passed from one step to another as part of the job. Here's an example of a sequence of steps which together implement a Map-Reduce job: * Read a collection of data from some source, parsing the collection's elements. * Validate the elements. * Apply a user-defined function to map each element to some value and extract an element-specific key value. * Group elements with the same key into a single element with that key, transforming a multiply-keyed collection into a uniquely-keyed collection. * Write the elements out to some data sink. (Note that the Dataflow service may be used to run many different types of jobs, not just Map-Reduce).
+        "kind": "A String", # The kind of step in the dataflow Job.
+        "name": "A String", # Name identifying the step. This must be unique for each step with respect to all other steps in the dataflow Job.
+        "properties": { # Named properties associated with the step. Each kind of predefined step has its own required set of properties.
+          "a_key": "", # Properties of the object.
+        },
+      },
+    ],
+    "currentStateTime": "A String", # The timestamp associated with the current state.
+    "tempFiles": [ # A set of files the system should be aware of that are used for temporary storage. These temporary files will be removed on job completion. No duplicates are allowed. No file patterns are supported. The supported files are: Google Cloud Storage: storage.googleapis.com/{bucket}/{object} bucket.storage.googleapis.com/{object}
+      "A String",
+    ],
+    "type": "A String", # The type of dataflow job.
+    "id": "A String", # The unique ID of this job. This field is set by the Dataflow service when the Job is created, and is immutable for the life of the Job.
+    "currentState": "A String", # The current state of the job. Jobs are created in the JOB_STATE_STOPPED state unless otherwise specified. A job in the JOB_STATE_RUNNING state may asynchronously enter a terminal state. Once a job has reached a terminal state, no further state updates may be made. This field may be mutated by the Dataflow service; callers cannot mutate it.
+    "executionInfo": { # Additional information about how a Dataflow job will be executed which isn’t contained in the submitted job. # Information about how the Dataflow service will actually run the job.
+      "stages": { # A mapping from each stage to the information about that stage.
+        "a_key": { # Contains information about how a particular google.dataflow.v1beta3.Step will be executed.
+          "stepName": [ # The steps associated with the execution stage. Note that stages may have several steps, and that a given step might be run by more than one stage.
+            "A String",
+          ],
+        },
+      },
+    },
+  }
+
+  x__xgafv: string, V1 error format.
+  replaceJobId: string, DEPRECATED. This field is now on the Job message.
+  view: string, Level of information requested in response.
+
+Returns:
+  An object of the form:
+
+    { # Defines a job to be run by the Dataflow service.
+      "clientRequestId": "A String", # Client's unique identifier of the job, re-used by SDK across retried attempts. If this field is set, the service will ensure its uniqueness. That is, the request to create a job will fail if the service has knowledge of a previously submitted job with the same client's id and job name. The caller may, for example, use this field to ensure idempotence of job creation across retried attempts to create a job. By default, the field is empty and, in that case, the service ignores it.
+      "requestedState": "A String", # The job's requested state. UpdateJob may be used to switch between the JOB_STATE_STOPPED and JOB_STATE_RUNNING states, by setting requested_state. UpdateJob may also be used to directly set a job's requested state to JOB_STATE_CANCELLED or JOB_STATE_DONE, irrevocably terminating the job if it has not already reached a terminal state.
+      "name": "A String", # The user-specified Dataflow job name. Only one Job with a given name may exist in a project at any given time. If a caller attempts to create a Job with the same name as an already-existing Job, the attempt will return the existing Job. The name must match the regular expression [a-z]([-a-z0-9]{0,38}[a-z0-9])?
+      "location": "A String", # The location which contains this job.
+      "replacedByJobId": "A String", # If another job is an update of this job (and thus, this job is in JOB_STATE_UPDATED), this field will contain the ID of that job.
+      "projectId": "A String", # The project which owns the job.
+      "labels": { # User-defined labels for this job. The labels map can contain no more than 64 entries. Entries of the labels map are UTF8 strings that comply with the following restrictions: * Keys must conform to regexp: \p{Ll}\p{Lo}{0,62} * Values must conform to regexp: [\p{Ll}\p{Lo}\p{N}_-]{0,63} * Both keys and values are additionally constrained to be <= 128 bytes in size.
+        "a_key": "A String",
+      },
+      "transformNameMapping": { # Map of transform name prefixes of the job to be replaced to the corresponding name prefixes of the new job.
+        "a_key": "A String",
+      },
+      "createTime": "A String", # Timestamp when job was initially created. Immutable, set by the Dataflow service.
+      "environment": { # Describes the environment in which a Dataflow Job runs. # Environment for the job.
+        "version": { # A structure describing which components and their versions of the service are required in order to run the job.
+          "a_key": "", # Properties of the object.
+        },
+        "tempStoragePrefix": "A String", # The prefix of the resources the system should use for temporary storage. The system will append the suffix "/temp-{JOBNAME} to this resource prefix, where {JOBNAME} is the value of the job_name field. The resulting bucket and object prefix is used as the prefix of the resources used to store temporary data needed during the job execution. NOTE: This will override the value in taskrunner_settings. The supported resource type is: Google Cloud Storage: storage.googleapis.com/{bucket}/{object} bucket.storage.googleapis.com/{object}
+        "internalExperiments": { # Experimental settings.
+          "a_key": "", # Properties of the object. Contains field @type with type URL.
+        },
+        "dataset": "A String", # The dataset for the current project where various workflow related tables are stored. The supported resource type is: Google BigQuery: bigquery.googleapis.com/{dataset}
+        "experiments": [ # The list of experiments to enable.
+          "A String",
+        ],
+        "serviceAccountEmail": "A String", # Identity to run virtual machines as. Defaults to the default account.
+        "sdkPipelineOptions": { # The Dataflow SDK pipeline options specified by the user. These options are passed through the service and are used to recreate the SDK pipeline options on the worker in a language agnostic and platform independent way.
+          "a_key": "", # Properties of the object.
+        },
+        "userAgent": { # A description of the process that generated the request.
+          "a_key": "", # Properties of the object.
+        },
+        "clusterManagerApiService": "A String", # The type of cluster manager API to use. If unknown or unspecified, the service will attempt to choose a reasonable default. This should be in the form of the API service name, e.g. "compute.googleapis.com".
+        "workerPools": [ # Worker pools. At least one "harness" worker pool must be specified in order for the job to have workers.
+          { # Describes one particular pool of Dataflow workers to be instantiated by the Dataflow service in order to perform the computations required by a job. Note that a workflow job may use multiple pools, in order to match the various computational requirements of the various stages of the job.
+            "diskSourceImage": "A String", # Fully qualified source image for disks.
+            "taskrunnerSettings": { # Taskrunner configuration settings. # Settings passed through to Google Compute Engine workers when using the standard Dataflow task runner. Users should ignore this field.
+              "workflowFileName": "A String", # Store the workflow in this file.
+              "logUploadLocation": "A String", # Indicates where to put logs. If this is not specified, the logs will not be uploaded. The supported resource type is: Google Cloud Storage: storage.googleapis.com/{bucket}/{object} bucket.storage.googleapis.com/{object}
+              "commandlinesFileName": "A String", # Store preprocessing commands in this file.
+              "parallelWorkerSettings": { # Provides data to pass through to the worker harness. # Settings to pass to the parallel worker harness.
+                "reportingEnabled": True or False, # Send work progress updates to service.
+                "shuffleServicePath": "A String", # The Shuffle service path relative to the root URL, for example, "shuffle/v1beta1".
+                "workerId": "A String", # ID of the worker running this pipeline.
+                "baseUrl": "A String", # The base URL for accessing Google Cloud APIs. When workers access Google Cloud APIs, they logically do so via relative URLs. If this field is specified, it supplies the base URL to use for resolving these relative URLs. The normative algorithm used is defined by RFC 1808, "Relative Uniform Resource Locators". If not specified, the default value is "http://www.googleapis.com/"
+                "servicePath": "A String", # The Dataflow service path relative to the root URL, for example, "dataflow/v1b3/projects".
+                "tempStoragePrefix": "A String", # The prefix of the resources the system should use for temporary storage. The supported resource type is: Google Cloud Storage: storage.googleapis.com/{bucket}/{object} bucket.storage.googleapis.com/{object}
+              },
+              "vmId": "A String", # ID string of VM.
+              "baseTaskDir": "A String", # Location on the worker for task-specific subdirectories.
+              "continueOnException": True or False, # Do we continue taskrunner if an exception is hit?
+              "baseUrl": "A String", # The base URL for the taskrunner to use when accessing Google Cloud APIs. When workers access Google Cloud APIs, they logically do so via relative URLs. If this field is specified, it supplies the base URL to use for resolving these relative URLs. The normative algorithm used is defined by RFC 1808, "Relative Uniform Resource Locators". If not specified, the default value is "http://www.googleapis.com/"
+              "taskUser": "A String", # The UNIX user ID on the worker VM to use for tasks launched by taskrunner; e.g. "root".
+              "taskGroup": "A String", # The UNIX group ID on the worker VM to use for tasks launched by taskrunner; e.g. "wheel".
+              "oauthScopes": [ # OAuth2 scopes to be requested by the taskrunner in order to access the dataflow API.
+                "A String",
+              ],
+              "languageHint": "A String", # Suggested backend language.
+              "logToSerialconsole": True or False, # Send taskrunner log into to Google Compute Engine VM serial console?
+              "streamingWorkerMainClass": "A String", # Streaming worker main class name.
+              "logDir": "A String", # Directory on the VM to store logs.
+              "dataflowApiVersion": "A String", # API version of endpoint, e.g. "v1b3"
+              "harnessCommand": "A String", # Command to launch the worker harness.
+              "tempStoragePrefix": "A String", # The prefix of the resources the taskrunner should use for temporary storage. The supported resource type is: Google Cloud Storage: storage.googleapis.com/{bucket}/{object} bucket.storage.googleapis.com/{object}
+              "alsologtostderr": True or False, # Also send taskrunner log info to stderr?
+            },
+            "kind": "A String", # The kind of the worker pool; currently only 'harness' and 'shuffle' are supported.
+            "machineType": "A String", # Machine type (e.g. "n1-standard-1"). If empty or unspecified, the service will attempt to choose a reasonable default.
+            "network": "A String", # Network to which VMs will be assigned. If empty or unspecified, the service will use the network "default".
+            "zone": "A String", # Zone to run the worker pools in. If empty or unspecified, the service will attempt to choose a reasonable default.
+            "numThreadsPerWorker": 42, # The number of threads per worker harness. If empty or unspecified, the service will choose a number of threads (according to the number of cores on the selected machine type for batch, or 1 by convention for streaming).
+            "ipConfiguration": "A String", # Configuration for VM IPs.
+            "onHostMaintenance": "A String", # The action to take on host maintenance, as defined by the Google Compute Engine API.
+            "diskType": "A String", # Type of root disk for VMs. If empty or unspecified, the service will attempt to choose a reasonable default.
+            "teardownPolicy": "A String", # Sets the policy for determining when to turndown worker pool. Allowed values are: TEARDOWN_ALWAYS, TEARDOWN_ON_SUCCESS, and TEARDOWN_NEVER. TEARDOWN_ALWAYS means workers are always torn down regardless of whether the job succeeds. TEARDOWN_ON_SUCCESS means workers are torn down if the job succeeds. TEARDOWN_NEVER means the workers are never torn down. If the workers are not torn down by the service, they will continue to run and use Google Compute Engine VM resources in the user's project until they are explicitly terminated by the user. Because of this, Google recommends using the TEARDOWN_ALWAYS policy except for small, manually supervised test jobs. If unknown or unspecified, the service will attempt to choose a reasonable default.
+            "diskSizeGb": 42, # Size of root disk for VMs, in GB. If zero or unspecified, the service will attempt to choose a reasonable default.
+            "metadata": { # Metadata to set on the Google Compute Engine VMs.
+              "a_key": "A String",
+            },
+            "poolArgs": { # Extra arguments for this worker pool.
+              "a_key": "", # Properties of the object. Contains field @type with type URL.
+            },
+            "numWorkers": 42, # Number of Google Compute Engine workers in this pool needed to execute the job. If zero or unspecified, the service will attempt to choose a reasonable default.
+            "workerHarnessContainerImage": "A String", # Docker container image that executes Dataflow worker harness, residing in Google Container Registry. Required.
+            "defaultPackageSet": "A String", # The default package set to install. This allows the service to select a default set of packages which are useful to worker harnesses written in a particular language.
+            "packages": [ # Packages to be installed on workers.
+              { # Packages that need to be installed in order for a worker to run the steps of the Dataflow job which will be assigned to its worker pool. This is the mechanism by which the SDK causes code to be loaded onto the workers. For example, the Dataflow Java SDK might use this to install jars containing the user's code and all of the various dependencies (libraries, data files, etc) required in order for that code to run.
+                "name": "A String", # The name of the package.
+                "location": "A String", # The resource to read the package from. The supported resource type is: Google Cloud Storage: storage.googleapis.com/{bucket} bucket.storage.googleapis.com/
+              },
+            ],
+            "autoscalingSettings": { # Settings for WorkerPool autoscaling. # Settings for autoscaling of this WorkerPool.
+              "maxNumWorkers": 42, # The maximum number of workers to cap scaling at.
+              "algorithm": "A String", # The algorithm to use for autoscaling.
+            },
+            "subnetwork": "A String", # Subnetwork to which VMs will be assigned, if desired. Expected to be of the form "regions/REGION/subnetworks/SUBNETWORK".
+            "dataDisks": [ # Data disks that are used by a VM in this workflow.
+              { # Describes the data disk used by a workflow job.
+                "mountPoint": "A String", # Directory in a VM where disk is mounted.
+                "sizeGb": 42, # Size of disk in GB. If zero or unspecified, the service will attempt to choose a reasonable default.
+                "diskType": "A String", # Disk storage type, as defined by Google Compute Engine. This must be a disk type appropriate to the project and zone in which the workers will run. If unknown or unspecified, the service will attempt to choose a reasonable default. For example, the standard persistent disk type is a resource name typically ending in "pd-standard". If SSD persistent disks are available, the resource name typically ends with "pd-ssd". The actual valid values are defined the Google Compute Engine API, not by the Dataflow API; consult the Google Compute Engine documentation for more information about determining the set of available disk types for a particular project and zone. Google Compute Engine Disk types are local to a particular project in a particular zone, and so the resource name will typically look something like this: compute.googleapis.com/projects/
+                    # /zones//diskTypes/pd-standard
+              },
+            ],
+          },
+        ],
+      },
+      "replaceJobId": "A String", # If this job is an update of an existing job, this field will be the ID of the job it replaced. When sending a CreateJobRequest, you can update a job by specifying it here. The job named here will be stopped, and its intermediate state transferred to this job.
+      "steps": [ # The top-level steps that constitute the entire job.
+        { # Defines a particular step within a Dataflow job. A job consists of multiple steps, each of which performs some specific operation as part of the overall job. Data is typically passed from one step to another as part of the job. Here's an example of a sequence of steps which together implement a Map-Reduce job: * Read a collection of data from some source, parsing the collection's elements. * Validate the elements. * Apply a user-defined function to map each element to some value and extract an element-specific key value. * Group elements with the same key into a single element with that key, transforming a multiply-keyed collection into a uniquely-keyed collection. * Write the elements out to some data sink. (Note that the Dataflow service may be used to run many different types of jobs, not just Map-Reduce).
+          "kind": "A String", # The kind of step in the dataflow Job.
+          "name": "A String", # Name identifying the step. This must be unique for each step with respect to all other steps in the dataflow Job.
+          "properties": { # Named properties associated with the step. Each kind of predefined step has its own required set of properties.
+            "a_key": "", # Properties of the object.
+          },
+        },
+      ],
+      "currentStateTime": "A String", # The timestamp associated with the current state.
+      "tempFiles": [ # A set of files the system should be aware of that are used for temporary storage. These temporary files will be removed on job completion. No duplicates are allowed. No file patterns are supported. The supported files are: Google Cloud Storage: storage.googleapis.com/{bucket}/{object} bucket.storage.googleapis.com/{object}
+        "A String",
+      ],
+      "type": "A String", # The type of dataflow job.
+      "id": "A String", # The unique ID of this job. This field is set by the Dataflow service when the Job is created, and is immutable for the life of the Job.
+      "currentState": "A String", # The current state of the job. Jobs are created in the JOB_STATE_STOPPED state unless otherwise specified. A job in the JOB_STATE_RUNNING state may asynchronously enter a terminal state. Once a job has reached a terminal state, no further state updates may be made. This field may be mutated by the Dataflow service; callers cannot mutate it.
+      "executionInfo": { # Additional information about how a Dataflow job will be executed which isn’t contained in the submitted job. # Information about how the Dataflow service will actually run the job.
+        "stages": { # A mapping from each stage to the information about that stage.
+          "a_key": { # Contains information about how a particular google.dataflow.v1beta3.Step will be executed.
+            "stepName": [ # The steps associated with the execution stage. Note that stages may have several steps, and that a given step might be run by more than one stage.
+              "A String",
+            ],
+          },
+        },
+      },
+    }</pre>
+</div>
+
+<div class="method">
+    <code class="details" id="get">get(projectId, location, jobId, x__xgafv=None, view=None)</code>
+  <pre>Gets the state of the specified dataflow job.
+
+Args:
+  projectId: string, The project which owns the job. (required)
+  location: string, The location which contains this job. (required)
+  jobId: string, Identifies a single job. (required)
+  x__xgafv: string, V1 error format.
+  view: string, Level of information requested in response.
+
+Returns:
+  An object of the form:
+
+    { # Defines a job to be run by the Dataflow service.
+      "clientRequestId": "A String", # Client's unique identifier of the job, re-used by SDK across retried attempts. If this field is set, the service will ensure its uniqueness. That is, the request to create a job will fail if the service has knowledge of a previously submitted job with the same client's id and job name. The caller may, for example, use this field to ensure idempotence of job creation across retried attempts to create a job. By default, the field is empty and, in that case, the service ignores it.
+      "requestedState": "A String", # The job's requested state. UpdateJob may be used to switch between the JOB_STATE_STOPPED and JOB_STATE_RUNNING states, by setting requested_state. UpdateJob may also be used to directly set a job's requested state to JOB_STATE_CANCELLED or JOB_STATE_DONE, irrevocably terminating the job if it has not already reached a terminal state.
+      "name": "A String", # The user-specified Dataflow job name. Only one Job with a given name may exist in a project at any given time. If a caller attempts to create a Job with the same name as an already-existing Job, the attempt will return the existing Job. The name must match the regular expression [a-z]([-a-z0-9]{0,38}[a-z0-9])?
+      "location": "A String", # The location which contains this job.
+      "replacedByJobId": "A String", # If another job is an update of this job (and thus, this job is in JOB_STATE_UPDATED), this field will contain the ID of that job.
+      "projectId": "A String", # The project which owns the job.
+      "labels": { # User-defined labels for this job. The labels map can contain no more than 64 entries. Entries of the labels map are UTF8 strings that comply with the following restrictions: * Keys must conform to regexp: \p{Ll}\p{Lo}{0,62} * Values must conform to regexp: [\p{Ll}\p{Lo}\p{N}_-]{0,63} * Both keys and values are additionally constrained to be <= 128 bytes in size.
+        "a_key": "A String",
+      },
+      "transformNameMapping": { # Map of transform name prefixes of the job to be replaced to the corresponding name prefixes of the new job.
+        "a_key": "A String",
+      },
+      "createTime": "A String", # Timestamp when job was initially created. Immutable, set by the Dataflow service.
+      "environment": { # Describes the environment in which a Dataflow Job runs. # Environment for the job.
+        "version": { # A structure describing which components and their versions of the service are required in order to run the job.
+          "a_key": "", # Properties of the object.
+        },
+        "tempStoragePrefix": "A String", # The prefix of the resources the system should use for temporary storage. The system will append the suffix "/temp-{JOBNAME} to this resource prefix, where {JOBNAME} is the value of the job_name field. The resulting bucket and object prefix is used as the prefix of the resources used to store temporary data needed during the job execution. NOTE: This will override the value in taskrunner_settings. The supported resource type is: Google Cloud Storage: storage.googleapis.com/{bucket}/{object} bucket.storage.googleapis.com/{object}
+        "internalExperiments": { # Experimental settings.
+          "a_key": "", # Properties of the object. Contains field @type with type URL.
+        },
+        "dataset": "A String", # The dataset for the current project where various workflow related tables are stored. The supported resource type is: Google BigQuery: bigquery.googleapis.com/{dataset}
+        "experiments": [ # The list of experiments to enable.
+          "A String",
+        ],
+        "serviceAccountEmail": "A String", # Identity to run virtual machines as. Defaults to the default account.
+        "sdkPipelineOptions": { # The Dataflow SDK pipeline options specified by the user. These options are passed through the service and are used to recreate the SDK pipeline options on the worker in a language agnostic and platform independent way.
+          "a_key": "", # Properties of the object.
+        },
+        "userAgent": { # A description of the process that generated the request.
+          "a_key": "", # Properties of the object.
+        },
+        "clusterManagerApiService": "A String", # The type of cluster manager API to use. If unknown or unspecified, the service will attempt to choose a reasonable default. This should be in the form of the API service name, e.g. "compute.googleapis.com".
+        "workerPools": [ # Worker pools. At least one "harness" worker pool must be specified in order for the job to have workers.
+          { # Describes one particular pool of Dataflow workers to be instantiated by the Dataflow service in order to perform the computations required by a job. Note that a workflow job may use multiple pools, in order to match the various computational requirements of the various stages of the job.
+            "diskSourceImage": "A String", # Fully qualified source image for disks.
+            "taskrunnerSettings": { # Taskrunner configuration settings. # Settings passed through to Google Compute Engine workers when using the standard Dataflow task runner. Users should ignore this field.
+              "workflowFileName": "A String", # Store the workflow in this file.
+              "logUploadLocation": "A String", # Indicates where to put logs. If this is not specified, the logs will not be uploaded. The supported resource type is: Google Cloud Storage: storage.googleapis.com/{bucket}/{object} bucket.storage.googleapis.com/{object}
+              "commandlinesFileName": "A String", # Store preprocessing commands in this file.
+              "parallelWorkerSettings": { # Provides data to pass through to the worker harness. # Settings to pass to the parallel worker harness.
+                "reportingEnabled": True or False, # Send work progress updates to service.
+                "shuffleServicePath": "A String", # The Shuffle service path relative to the root URL, for example, "shuffle/v1beta1".
+                "workerId": "A String", # ID of the worker running this pipeline.
+                "baseUrl": "A String", # The base URL for accessing Google Cloud APIs. When workers access Google Cloud APIs, they logically do so via relative URLs. If this field is specified, it supplies the base URL to use for resolving these relative URLs. The normative algorithm used is defined by RFC 1808, "Relative Uniform Resource Locators". If not specified, the default value is "http://www.googleapis.com/"
+                "servicePath": "A String", # The Dataflow service path relative to the root URL, for example, "dataflow/v1b3/projects".
+                "tempStoragePrefix": "A String", # The prefix of the resources the system should use for temporary storage. The supported resource type is: Google Cloud Storage: storage.googleapis.com/{bucket}/{object} bucket.storage.googleapis.com/{object}
+              },
+              "vmId": "A String", # ID string of VM.
+              "baseTaskDir": "A String", # Location on the worker for task-specific subdirectories.
+              "continueOnException": True or False, # Do we continue taskrunner if an exception is hit?
+              "baseUrl": "A String", # The base URL for the taskrunner to use when accessing Google Cloud APIs. When workers access Google Cloud APIs, they logically do so via relative URLs. If this field is specified, it supplies the base URL to use for resolving these relative URLs. The normative algorithm used is defined by RFC 1808, "Relative Uniform Resource Locators". If not specified, the default value is "http://www.googleapis.com/"
+              "taskUser": "A String", # The UNIX user ID on the worker VM to use for tasks launched by taskrunner; e.g. "root".
+              "taskGroup": "A String", # The UNIX group ID on the worker VM to use for tasks launched by taskrunner; e.g. "wheel".
+              "oauthScopes": [ # OAuth2 scopes to be requested by the taskrunner in order to access the dataflow API.
+                "A String",
+              ],
+              "languageHint": "A String", # Suggested backend language.
+              "logToSerialconsole": True or False, # Send taskrunner log into to Google Compute Engine VM serial console?
+              "streamingWorkerMainClass": "A String", # Streaming worker main class name.
+              "logDir": "A String", # Directory on the VM to store logs.
+              "dataflowApiVersion": "A String", # API version of endpoint, e.g. "v1b3"
+              "harnessCommand": "A String", # Command to launch the worker harness.
+              "tempStoragePrefix": "A String", # The prefix of the resources the taskrunner should use for temporary storage. The supported resource type is: Google Cloud Storage: storage.googleapis.com/{bucket}/{object} bucket.storage.googleapis.com/{object}
+              "alsologtostderr": True or False, # Also send taskrunner log info to stderr?
+            },
+            "kind": "A String", # The kind of the worker pool; currently only 'harness' and 'shuffle' are supported.
+            "machineType": "A String", # Machine type (e.g. "n1-standard-1"). If empty or unspecified, the service will attempt to choose a reasonable default.
+            "network": "A String", # Network to which VMs will be assigned. If empty or unspecified, the service will use the network "default".
+            "zone": "A String", # Zone to run the worker pools in. If empty or unspecified, the service will attempt to choose a reasonable default.
+            "numThreadsPerWorker": 42, # The number of threads per worker harness. If empty or unspecified, the service will choose a number of threads (according to the number of cores on the selected machine type for batch, or 1 by convention for streaming).
+            "ipConfiguration": "A String", # Configuration for VM IPs.
+            "onHostMaintenance": "A String", # The action to take on host maintenance, as defined by the Google Compute Engine API.
+            "diskType": "A String", # Type of root disk for VMs. If empty or unspecified, the service will attempt to choose a reasonable default.
+            "teardownPolicy": "A String", # Sets the policy for determining when to turndown worker pool. Allowed values are: TEARDOWN_ALWAYS, TEARDOWN_ON_SUCCESS, and TEARDOWN_NEVER. TEARDOWN_ALWAYS means workers are always torn down regardless of whether the job succeeds. TEARDOWN_ON_SUCCESS means workers are torn down if the job succeeds. TEARDOWN_NEVER means the workers are never torn down. If the workers are not torn down by the service, they will continue to run and use Google Compute Engine VM resources in the user's project until they are explicitly terminated by the user. Because of this, Google recommends using the TEARDOWN_ALWAYS policy except for small, manually supervised test jobs. If unknown or unspecified, the service will attempt to choose a reasonable default.
+            "diskSizeGb": 42, # Size of root disk for VMs, in GB. If zero or unspecified, the service will attempt to choose a reasonable default.
+            "metadata": { # Metadata to set on the Google Compute Engine VMs.
+              "a_key": "A String",
+            },
+            "poolArgs": { # Extra arguments for this worker pool.
+              "a_key": "", # Properties of the object. Contains field @type with type URL.
+            },
+            "numWorkers": 42, # Number of Google Compute Engine workers in this pool needed to execute the job. If zero or unspecified, the service will attempt to choose a reasonable default.
+            "workerHarnessContainerImage": "A String", # Docker container image that executes Dataflow worker harness, residing in Google Container Registry. Required.
+            "defaultPackageSet": "A String", # The default package set to install. This allows the service to select a default set of packages which are useful to worker harnesses written in a particular language.
+            "packages": [ # Packages to be installed on workers.
+              { # Packages that need to be installed in order for a worker to run the steps of the Dataflow job which will be assigned to its worker pool. This is the mechanism by which the SDK causes code to be loaded onto the workers. For example, the Dataflow Java SDK might use this to install jars containing the user's code and all of the various dependencies (libraries, data files, etc) required in order for that code to run.
+                "name": "A String", # The name of the package.
+                "location": "A String", # The resource to read the package from. The supported resource type is: Google Cloud Storage: storage.googleapis.com/{bucket} bucket.storage.googleapis.com/
+              },
+            ],
+            "autoscalingSettings": { # Settings for WorkerPool autoscaling. # Settings for autoscaling of this WorkerPool.
+              "maxNumWorkers": 42, # The maximum number of workers to cap scaling at.
+              "algorithm": "A String", # The algorithm to use for autoscaling.
+            },
+            "subnetwork": "A String", # Subnetwork to which VMs will be assigned, if desired. Expected to be of the form "regions/REGION/subnetworks/SUBNETWORK".
+            "dataDisks": [ # Data disks that are used by a VM in this workflow.
+              { # Describes the data disk used by a workflow job.
+                "mountPoint": "A String", # Directory in a VM where disk is mounted.
+                "sizeGb": 42, # Size of disk in GB. If zero or unspecified, the service will attempt to choose a reasonable default.
+                "diskType": "A String", # Disk storage type, as defined by Google Compute Engine. This must be a disk type appropriate to the project and zone in which the workers will run. If unknown or unspecified, the service will attempt to choose a reasonable default. For example, the standard persistent disk type is a resource name typically ending in "pd-standard". If SSD persistent disks are available, the resource name typically ends with "pd-ssd". The actual valid values are defined the Google Compute Engine API, not by the Dataflow API; consult the Google Compute Engine documentation for more information about determining the set of available disk types for a particular project and zone. Google Compute Engine Disk types are local to a particular project in a particular zone, and so the resource name will typically look something like this: compute.googleapis.com/projects/
+                    # /zones//diskTypes/pd-standard
+              },
+            ],
+          },
+        ],
+      },
+      "replaceJobId": "A String", # If this job is an update of an existing job, this field will be the ID of the job it replaced. When sending a CreateJobRequest, you can update a job by specifying it here. The job named here will be stopped, and its intermediate state transferred to this job.
+      "steps": [ # The top-level steps that constitute the entire job.
+        { # Defines a particular step within a Dataflow job. A job consists of multiple steps, each of which performs some specific operation as part of the overall job. Data is typically passed from one step to another as part of the job. Here's an example of a sequence of steps which together implement a Map-Reduce job: * Read a collection of data from some source, parsing the collection's elements. * Validate the elements. * Apply a user-defined function to map each element to some value and extract an element-specific key value. * Group elements with the same key into a single element with that key, transforming a multiply-keyed collection into a uniquely-keyed collection. * Write the elements out to some data sink. (Note that the Dataflow service may be used to run many different types of jobs, not just Map-Reduce).
+          "kind": "A String", # The kind of step in the dataflow Job.
+          "name": "A String", # Name identifying the step. This must be unique for each step with respect to all other steps in the dataflow Job.
+          "properties": { # Named properties associated with the step. Each kind of predefined step has its own required set of properties.
+            "a_key": "", # Properties of the object.
+          },
+        },
+      ],
+      "currentStateTime": "A String", # The timestamp associated with the current state.
+      "tempFiles": [ # A set of files the system should be aware of that are used for temporary storage. These temporary files will be removed on job completion. No duplicates are allowed. No file patterns are supported. The supported files are: Google Cloud Storage: storage.googleapis.com/{bucket}/{object} bucket.storage.googleapis.com/{object}
+        "A String",
+      ],
+      "type": "A String", # The type of dataflow job.
+      "id": "A String", # The unique ID of this job. This field is set by the Dataflow service when the Job is created, and is immutable for the life of the Job.
+      "currentState": "A String", # The current state of the job. Jobs are created in the JOB_STATE_STOPPED state unless otherwise specified. A job in the JOB_STATE_RUNNING state may asynchronously enter a terminal state. Once a job has reached a terminal state, no further state updates may be made. This field may be mutated by the Dataflow service; callers cannot mutate it.
+      "executionInfo": { # Additional information about how a Dataflow job will be executed which isn’t contained in the submitted job. # Information about how the Dataflow service will actually run the job.
+        "stages": { # A mapping from each stage to the information about that stage.
+          "a_key": { # Contains information about how a particular google.dataflow.v1beta3.Step will be executed.
+            "stepName": [ # The steps associated with the execution stage. Note that stages may have several steps, and that a given step might be run by more than one stage.
+              "A String",
+            ],
+          },
+        },
+      },
+    }</pre>
+</div>
+
+<div class="method">
+    <code class="details" id="getMetrics">getMetrics(projectId, location, jobId, startTime=None, x__xgafv=None)</code>
+  <pre>Request the job status.
+
+Args:
+  projectId: string, A project id. (required)
+  location: string, The location which contains the job specified by job_id. (required)
+  jobId: string, The job to get messages for. (required)
+  startTime: string, Return only metric data that has changed since this time. Default is to return all information about all metrics for the job.
+  x__xgafv: string, V1 error format.
+
+Returns:
+  An object of the form:
+
+    { # JobMetrics contains a collection of metrics descibing the detailed progress of a Dataflow job. Metrics correspond to user-defined and system-defined metrics in the job. This resource captures only the most recent values of each metric; time-series data can be queried for them (under the same metric names) from Cloud Monitoring.
+    "metrics": [ # All metrics for this job.
+      { # Describes the state of a metric.
+        "meanCount": "", # Worker-computed aggregate value for the "Mean" aggregation kind. This holds the count of the aggregated values and is used in combination with mean_sum above to obtain the actual mean aggregate value. The only possible value type is Long.
+        "kind": "A String", # Metric aggregation kind. The possible metric aggregation kinds are "Sum", "Max", "Min", "Mean", "Set", "And", and "Or". The specified aggregation kind is case-insensitive. If omitted, this is not an aggregated value but instead a single metric sample value.
+        "set": "", # Worker-computed aggregate value for the "Set" aggregation kind. The only possible value type is a list of Values whose type can be Long, Double, or String, according to the metric's type. All Values in the list must be of the same type.
+        "name": { # Identifies a metric, by describing the source which generated the metric. # Name of the metric.
+          "origin": "A String", # Origin (namespace) of metric name. May be blank for user-define metrics; will be "dataflow" for metrics defined by the Dataflow service or SDK.
+          "name": "A String", # Worker-defined metric name.
+          "context": { # Zero or more labeled fields which identify the part of the job this metric is associated with, such as the name of a step or collection. For example, built-in counters associated with steps will have context['step'] = . Counters associated with PCollections in the SDK will have context['pcollection'] =
+              # .
+            "a_key": "A String",
+          },
+        },
+        "cumulative": True or False, # True if this metric is reported as the total cumulative aggregate value accumulated since the worker started working on this WorkItem. By default this is false, indicating that this metric is reported as a delta that is not associated with any WorkItem.
+        "updateTime": "A String", # Timestamp associated with the metric value. Optional when workers are reporting work progress; it will be filled in responses from the metrics API.
+        "scalar": "", # Worker-computed aggregate value for aggregation kinds "Sum", "Max", "Min", "And", and "Or". The possible value types are Long, Double, and Boolean.
+        "meanSum": "", # Worker-computed aggregate value for the "Mean" aggregation kind. This holds the sum of the aggregated values and is used in combination with mean_count below to obtain the actual mean aggregate value. The only possible value types are Long and Double.
+        "internal": "", # Worker-computed aggregate value for internal use by the Dataflow service.
+      },
+    ],
+    "metricTime": "A String", # Timestamp as of which metric values are current.
+  }</pre>
+</div>
+
+<div class="method">
+    <code class="details" id="list">list(projectId, location, pageSize=None, x__xgafv=None, pageToken=None, filter=None, view=None)</code>
+  <pre>List the jobs of a project
+
+Args:
+  projectId: string, The project which owns the jobs. (required)
+  location: string, The location which contains this job. (required)
+  pageSize: integer, If there are many jobs, limit response to at most this many. The actual number of jobs returned will be the lesser of max_responses and an unspecified server-defined limit.
+  x__xgafv: string, V1 error format.
+  pageToken: string, Set this to the 'next_page_token' field of a previous response to request additional results in a long list.
+  filter: string, The kind of filter to use.
+  view: string, Level of information requested in response. Default is SUMMARY.
+
+Returns:
+  An object of the form:
+
+    { # Response to a request to list Dataflow jobs. This may be a partial response, depending on the page size in the ListJobsRequest.
+    "nextPageToken": "A String", # Set if there may be more results than fit in this response.
+    "failedLocation": [ # Zero or more messages describing locations that failed to respond.
+      { # FailedLocation indicates which location failed to respond to a request for data.
+        "name": "A String", # The name of the failed location.
+      },
+    ],
+    "jobs": [ # A subset of the requested job information.
+      { # Defines a job to be run by the Dataflow service.
+          "clientRequestId": "A String", # Client's unique identifier of the job, re-used by SDK across retried attempts. If this field is set, the service will ensure its uniqueness. That is, the request to create a job will fail if the service has knowledge of a previously submitted job with the same client's id and job name. The caller may, for example, use this field to ensure idempotence of job creation across retried attempts to create a job. By default, the field is empty and, in that case, the service ignores it.
+          "requestedState": "A String", # The job's requested state. UpdateJob may be used to switch between the JOB_STATE_STOPPED and JOB_STATE_RUNNING states, by setting requested_state. UpdateJob may also be used to directly set a job's requested state to JOB_STATE_CANCELLED or JOB_STATE_DONE, irrevocably terminating the job if it has not already reached a terminal state.
+          "name": "A String", # The user-specified Dataflow job name. Only one Job with a given name may exist in a project at any given time. If a caller attempts to create a Job with the same name as an already-existing Job, the attempt will return the existing Job. The name must match the regular expression [a-z]([-a-z0-9]{0,38}[a-z0-9])?
+          "location": "A String", # The location which contains this job.
+          "replacedByJobId": "A String", # If another job is an update of this job (and thus, this job is in JOB_STATE_UPDATED), this field will contain the ID of that job.
+          "projectId": "A String", # The project which owns the job.
+          "labels": { # User-defined labels for this job. The labels map can contain no more than 64 entries. Entries of the labels map are UTF8 strings that comply with the following restrictions: * Keys must conform to regexp: \p{Ll}\p{Lo}{0,62} * Values must conform to regexp: [\p{Ll}\p{Lo}\p{N}_-]{0,63} * Both keys and values are additionally constrained to be <= 128 bytes in size.
+            "a_key": "A String",
+          },
+          "transformNameMapping": { # Map of transform name prefixes of the job to be replaced to the corresponding name prefixes of the new job.
+            "a_key": "A String",
+          },
+          "createTime": "A String", # Timestamp when job was initially created. Immutable, set by the Dataflow service.
+          "environment": { # Describes the environment in which a Dataflow Job runs. # Environment for the job.
+            "version": { # A structure describing which components and their versions of the service are required in order to run the job.
+              "a_key": "", # Properties of the object.
+            },
+            "tempStoragePrefix": "A String", # The prefix of the resources the system should use for temporary storage. The system will append the suffix "/temp-{JOBNAME} to this resource prefix, where {JOBNAME} is the value of the job_name field. The resulting bucket and object prefix is used as the prefix of the resources used to store temporary data needed during the job execution. NOTE: This will override the value in taskrunner_settings. The supported resource type is: Google Cloud Storage: storage.googleapis.com/{bucket}/{object} bucket.storage.googleapis.com/{object}
+            "internalExperiments": { # Experimental settings.
+              "a_key": "", # Properties of the object. Contains field @type with type URL.
+            },
+            "dataset": "A String", # The dataset for the current project where various workflow related tables are stored. The supported resource type is: Google BigQuery: bigquery.googleapis.com/{dataset}
+            "experiments": [ # The list of experiments to enable.
+              "A String",
+            ],
+            "serviceAccountEmail": "A String", # Identity to run virtual machines as. Defaults to the default account.
+            "sdkPipelineOptions": { # The Dataflow SDK pipeline options specified by the user. These options are passed through the service and are used to recreate the SDK pipeline options on the worker in a language agnostic and platform independent way.
+              "a_key": "", # Properties of the object.
+            },
+            "userAgent": { # A description of the process that generated the request.
+              "a_key": "", # Properties of the object.
+            },
+            "clusterManagerApiService": "A String", # The type of cluster manager API to use. If unknown or unspecified, the service will attempt to choose a reasonable default. This should be in the form of the API service name, e.g. "compute.googleapis.com".
+            "workerPools": [ # Worker pools. At least one "harness" worker pool must be specified in order for the job to have workers.
+              { # Describes one particular pool of Dataflow workers to be instantiated by the Dataflow service in order to perform the computations required by a job. Note that a workflow job may use multiple pools, in order to match the various computational requirements of the various stages of the job.
+                "diskSourceImage": "A String", # Fully qualified source image for disks.
+                "taskrunnerSettings": { # Taskrunner configuration settings. # Settings passed through to Google Compute Engine workers when using the standard Dataflow task runner. Users should ignore this field.
+                  "workflowFileName": "A String", # Store the workflow in this file.
+                  "logUploadLocation": "A String", # Indicates where to put logs. If this is not specified, the logs will not be uploaded. The supported resource type is: Google Cloud Storage: storage.googleapis.com/{bucket}/{object} bucket.storage.googleapis.com/{object}
+                  "commandlinesFileName": "A String", # Store preprocessing commands in this file.
+                  "parallelWorkerSettings": { # Provides data to pass through to the worker harness. # Settings to pass to the parallel worker harness.
+                    "reportingEnabled": True or False, # Send work progress updates to service.
+                    "shuffleServicePath": "A String", # The Shuffle service path relative to the root URL, for example, "shuffle/v1beta1".
+                    "workerId": "A String", # ID of the worker running this pipeline.
+                    "baseUrl": "A String", # The base URL for accessing Google Cloud APIs. When workers access Google Cloud APIs, they logically do so via relative URLs. If this field is specified, it supplies the base URL to use for resolving these relative URLs. The normative algorithm used is defined by RFC 1808, "Relative Uniform Resource Locators". If not specified, the default value is "http://www.googleapis.com/"
+                    "servicePath": "A String", # The Dataflow service path relative to the root URL, for example, "dataflow/v1b3/projects".
+                    "tempStoragePrefix": "A String", # The prefix of the resources the system should use for temporary storage. The supported resource type is: Google Cloud Storage: storage.googleapis.com/{bucket}/{object} bucket.storage.googleapis.com/{object}
+                  },
+                  "vmId": "A String", # ID string of VM.
+                  "baseTaskDir": "A String", # Location on the worker for task-specific subdirectories.
+                  "continueOnException": True or False, # Do we continue taskrunner if an exception is hit?
+                  "baseUrl": "A String", # The base URL for the taskrunner to use when accessing Google Cloud APIs. When workers access Google Cloud APIs, they logically do so via relative URLs. If this field is specified, it supplies the base URL to use for resolving these relative URLs. The normative algorithm used is defined by RFC 1808, "Relative Uniform Resource Locators". If not specified, the default value is "http://www.googleapis.com/"
+                  "taskUser": "A String", # The UNIX user ID on the worker VM to use for tasks launched by taskrunner; e.g. "root".
+                  "taskGroup": "A String", # The UNIX group ID on the worker VM to use for tasks launched by taskrunner; e.g. "wheel".
+                  "oauthScopes": [ # OAuth2 scopes to be requested by the taskrunner in order to access the dataflow API.
+                    "A String",
+                  ],
+                  "languageHint": "A String", # Suggested backend language.
+                  "logToSerialconsole": True or False, # Send taskrunner log into to Google Compute Engine VM serial console?
+                  "streamingWorkerMainClass": "A String", # Streaming worker main class name.
+                  "logDir": "A String", # Directory on the VM to store logs.
+                  "dataflowApiVersion": "A String", # API version of endpoint, e.g. "v1b3"
+                  "harnessCommand": "A String", # Command to launch the worker harness.
+                  "tempStoragePrefix": "A String", # The prefix of the resources the taskrunner should use for temporary storage. The supported resource type is: Google Cloud Storage: storage.googleapis.com/{bucket}/{object} bucket.storage.googleapis.com/{object}
+                  "alsologtostderr": True or False, # Also send taskrunner log info to stderr?
+                },
+                "kind": "A String", # The kind of the worker pool; currently only 'harness' and 'shuffle' are supported.
+                "machineType": "A String", # Machine type (e.g. "n1-standard-1"). If empty or unspecified, the service will attempt to choose a reasonable default.
+                "network": "A String", # Network to which VMs will be assigned. If empty or unspecified, the service will use the network "default".
+                "zone": "A String", # Zone to run the worker pools in. If empty or unspecified, the service will attempt to choose a reasonable default.
+                "numThreadsPerWorker": 42, # The number of threads per worker harness. If empty or unspecified, the service will choose a number of threads (according to the number of cores on the selected machine type for batch, or 1 by convention for streaming).
+                "ipConfiguration": "A String", # Configuration for VM IPs.
+                "onHostMaintenance": "A String", # The action to take on host maintenance, as defined by the Google Compute Engine API.
+                "diskType": "A String", # Type of root disk for VMs. If empty or unspecified, the service will attempt to choose a reasonable default.
+                "teardownPolicy": "A String", # Sets the policy for determining when to turndown worker pool. Allowed values are: TEARDOWN_ALWAYS, TEARDOWN_ON_SUCCESS, and TEARDOWN_NEVER. TEARDOWN_ALWAYS means workers are always torn down regardless of whether the job succeeds. TEARDOWN_ON_SUCCESS means workers are torn down if the job succeeds. TEARDOWN_NEVER means the workers are never torn down. If the workers are not torn down by the service, they will continue to run and use Google Compute Engine VM resources in the user's project until they are explicitly terminated by the user. Because of this, Google recommends using the TEARDOWN_ALWAYS policy except for small, manually supervised test jobs. If unknown or unspecified, the service will attempt to choose a reasonable default.
+                "diskSizeGb": 42, # Size of root disk for VMs, in GB. If zero or unspecified, the service will attempt to choose a reasonable default.
+                "metadata": { # Metadata to set on the Google Compute Engine VMs.
+                  "a_key": "A String",
+                },
+                "poolArgs": { # Extra arguments for this worker pool.
+                  "a_key": "", # Properties of the object. Contains field @type with type URL.
+                },
+                "numWorkers": 42, # Number of Google Compute Engine workers in this pool needed to execute the job. If zero or unspecified, the service will attempt to choose a reasonable default.
+                "workerHarnessContainerImage": "A String", # Docker container image that executes Dataflow worker harness, residing in Google Container Registry. Required.
+                "defaultPackageSet": "A String", # The default package set to install. This allows the service to select a default set of packages which are useful to worker harnesses written in a particular language.
+                "packages": [ # Packages to be installed on workers.
+                  { # Packages that need to be installed in order for a worker to run the steps of the Dataflow job which will be assigned to its worker pool. This is the mechanism by which the SDK causes code to be loaded onto the workers. For example, the Dataflow Java SDK might use this to install jars containing the user's code and all of the various dependencies (libraries, data files, etc) required in order for that code to run.
+                    "name": "A String", # The name of the package.
+                    "location": "A String", # The resource to read the package from. The supported resource type is: Google Cloud Storage: storage.googleapis.com/{bucket} bucket.storage.googleapis.com/
+                  },
+                ],
+                "autoscalingSettings": { # Settings for WorkerPool autoscaling. # Settings for autoscaling of this WorkerPool.
+                  "maxNumWorkers": 42, # The maximum number of workers to cap scaling at.
+                  "algorithm": "A String", # The algorithm to use for autoscaling.
+                },
+                "subnetwork": "A String", # Subnetwork to which VMs will be assigned, if desired. Expected to be of the form "regions/REGION/subnetworks/SUBNETWORK".
+                "dataDisks": [ # Data disks that are used by a VM in this workflow.
+                  { # Describes the data disk used by a workflow job.
+                    "mountPoint": "A String", # Directory in a VM where disk is mounted.
+                    "sizeGb": 42, # Size of disk in GB. If zero or unspecified, the service will attempt to choose a reasonable default.
+                    "diskType": "A String", # Disk storage type, as defined by Google Compute Engine. This must be a disk type appropriate to the project and zone in which the workers will run. If unknown or unspecified, the service will attempt to choose a reasonable default. For example, the standard persistent disk type is a resource name typically ending in "pd-standard". If SSD persistent disks are available, the resource name typically ends with "pd-ssd". The actual valid values are defined the Google Compute Engine API, not by the Dataflow API; consult the Google Compute Engine documentation for more information about determining the set of available disk types for a particular project and zone. Google Compute Engine Disk types are local to a particular project in a particular zone, and so the resource name will typically look something like this: compute.googleapis.com/projects/
+                        # /zones//diskTypes/pd-standard
+                  },
+                ],
+              },
+            ],
+          },
+          "replaceJobId": "A String", # If this job is an update of an existing job, this field will be the ID of the job it replaced. When sending a CreateJobRequest, you can update a job by specifying it here. The job named here will be stopped, and its intermediate state transferred to this job.
+          "steps": [ # The top-level steps that constitute the entire job.
+            { # Defines a particular step within a Dataflow job. A job consists of multiple steps, each of which performs some specific operation as part of the overall job. Data is typically passed from one step to another as part of the job. Here's an example of a sequence of steps which together implement a Map-Reduce job: * Read a collection of data from some source, parsing the collection's elements. * Validate the elements. * Apply a user-defined function to map each element to some value and extract an element-specific key value. * Group elements with the same key into a single element with that key, transforming a multiply-keyed collection into a uniquely-keyed collection. * Write the elements out to some data sink. (Note that the Dataflow service may be used to run many different types of jobs, not just Map-Reduce).
+              "kind": "A String", # The kind of step in the dataflow Job.
+              "name": "A String", # Name identifying the step. This must be unique for each step with respect to all other steps in the dataflow Job.
+              "properties": { # Named properties associated with the step. Each kind of predefined step has its own required set of properties.
+                "a_key": "", # Properties of the object.
+              },
+            },
+          ],
+          "currentStateTime": "A String", # The timestamp associated with the current state.
+          "tempFiles": [ # A set of files the system should be aware of that are used for temporary storage. These temporary files will be removed on job completion. No duplicates are allowed. No file patterns are supported. The supported files are: Google Cloud Storage: storage.googleapis.com/{bucket}/{object} bucket.storage.googleapis.com/{object}
+            "A String",
+          ],
+          "type": "A String", # The type of dataflow job.
+          "id": "A String", # The unique ID of this job. This field is set by the Dataflow service when the Job is created, and is immutable for the life of the Job.
+          "currentState": "A String", # The current state of the job. Jobs are created in the JOB_STATE_STOPPED state unless otherwise specified. A job in the JOB_STATE_RUNNING state may asynchronously enter a terminal state. Once a job has reached a terminal state, no further state updates may be made. This field may be mutated by the Dataflow service; callers cannot mutate it.
+          "executionInfo": { # Additional information about how a Dataflow job will be executed which isn’t contained in the submitted job. # Information about how the Dataflow service will actually run the job.
+            "stages": { # A mapping from each stage to the information about that stage.
+              "a_key": { # Contains information about how a particular google.dataflow.v1beta3.Step will be executed.
+                "stepName": [ # The steps associated with the execution stage. Note that stages may have several steps, and that a given step might be run by more than one stage.
+                  "A String",
+                ],
+              },
+            },
+          },
+        },
+    ],
+  }</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="update">update(projectId, location, jobId, body, x__xgafv=None)</code>
+  <pre>Updates the state of an existing dataflow job.
+
+Args:
+  projectId: string, The project which owns the job. (required)
+  location: string, The location which contains this job. (required)
+  jobId: string, Identifies a single job. (required)
+  body: object, The request body. (required)
+    The object takes the form of:
+
+{ # Defines a job to be run by the Dataflow service.
+    "clientRequestId": "A String", # Client's unique identifier of the job, re-used by SDK across retried attempts. If this field is set, the service will ensure its uniqueness. That is, the request to create a job will fail if the service has knowledge of a previously submitted job with the same client's id and job name. The caller may, for example, use this field to ensure idempotence of job creation across retried attempts to create a job. By default, the field is empty and, in that case, the service ignores it.
+    "requestedState": "A String", # The job's requested state. UpdateJob may be used to switch between the JOB_STATE_STOPPED and JOB_STATE_RUNNING states, by setting requested_state. UpdateJob may also be used to directly set a job's requested state to JOB_STATE_CANCELLED or JOB_STATE_DONE, irrevocably terminating the job if it has not already reached a terminal state.
+    "name": "A String", # The user-specified Dataflow job name. Only one Job with a given name may exist in a project at any given time. If a caller attempts to create a Job with the same name as an already-existing Job, the attempt will return the existing Job. The name must match the regular expression [a-z]([-a-z0-9]{0,38}[a-z0-9])?
+    "location": "A String", # The location which contains this job.
+    "replacedByJobId": "A String", # If another job is an update of this job (and thus, this job is in JOB_STATE_UPDATED), this field will contain the ID of that job.
+    "projectId": "A String", # The project which owns the job.
+    "labels": { # User-defined labels for this job. The labels map can contain no more than 64 entries. Entries of the labels map are UTF8 strings that comply with the following restrictions: * Keys must conform to regexp: \p{Ll}\p{Lo}{0,62} * Values must conform to regexp: [\p{Ll}\p{Lo}\p{N}_-]{0,63} * Both keys and values are additionally constrained to be <= 128 bytes in size.
+      "a_key": "A String",
+    },
+    "transformNameMapping": { # Map of transform name prefixes of the job to be replaced to the corresponding name prefixes of the new job.
+      "a_key": "A String",
+    },
+    "createTime": "A String", # Timestamp when job was initially created. Immutable, set by the Dataflow service.
+    "environment": { # Describes the environment in which a Dataflow Job runs. # Environment for the job.
+      "version": { # A structure describing which components and their versions of the service are required in order to run the job.
+        "a_key": "", # Properties of the object.
+      },
+      "tempStoragePrefix": "A String", # The prefix of the resources the system should use for temporary storage. The system will append the suffix "/temp-{JOBNAME} to this resource prefix, where {JOBNAME} is the value of the job_name field. The resulting bucket and object prefix is used as the prefix of the resources used to store temporary data needed during the job execution. NOTE: This will override the value in taskrunner_settings. The supported resource type is: Google Cloud Storage: storage.googleapis.com/{bucket}/{object} bucket.storage.googleapis.com/{object}
+      "internalExperiments": { # Experimental settings.
+        "a_key": "", # Properties of the object. Contains field @type with type URL.
+      },
+      "dataset": "A String", # The dataset for the current project where various workflow related tables are stored. The supported resource type is: Google BigQuery: bigquery.googleapis.com/{dataset}
+      "experiments": [ # The list of experiments to enable.
+        "A String",
+      ],
+      "serviceAccountEmail": "A String", # Identity to run virtual machines as. Defaults to the default account.
+      "sdkPipelineOptions": { # The Dataflow SDK pipeline options specified by the user. These options are passed through the service and are used to recreate the SDK pipeline options on the worker in a language agnostic and platform independent way.
+        "a_key": "", # Properties of the object.
+      },
+      "userAgent": { # A description of the process that generated the request.
+        "a_key": "", # Properties of the object.
+      },
+      "clusterManagerApiService": "A String", # The type of cluster manager API to use. If unknown or unspecified, the service will attempt to choose a reasonable default. This should be in the form of the API service name, e.g. "compute.googleapis.com".
+      "workerPools": [ # Worker pools. At least one "harness" worker pool must be specified in order for the job to have workers.
+        { # Describes one particular pool of Dataflow workers to be instantiated by the Dataflow service in order to perform the computations required by a job. Note that a workflow job may use multiple pools, in order to match the various computational requirements of the various stages of the job.
+          "diskSourceImage": "A String", # Fully qualified source image for disks.
+          "taskrunnerSettings": { # Taskrunner configuration settings. # Settings passed through to Google Compute Engine workers when using the standard Dataflow task runner. Users should ignore this field.
+            "workflowFileName": "A String", # Store the workflow in this file.
+            "logUploadLocation": "A String", # Indicates where to put logs. If this is not specified, the logs will not be uploaded. The supported resource type is: Google Cloud Storage: storage.googleapis.com/{bucket}/{object} bucket.storage.googleapis.com/{object}
+            "commandlinesFileName": "A String", # Store preprocessing commands in this file.
+            "parallelWorkerSettings": { # Provides data to pass through to the worker harness. # Settings to pass to the parallel worker harness.
+              "reportingEnabled": True or False, # Send work progress updates to service.
+              "shuffleServicePath": "A String", # The Shuffle service path relative to the root URL, for example, "shuffle/v1beta1".
+              "workerId": "A String", # ID of the worker running this pipeline.
+              "baseUrl": "A String", # The base URL for accessing Google Cloud APIs. When workers access Google Cloud APIs, they logically do so via relative URLs. If this field is specified, it supplies the base URL to use for resolving these relative URLs. The normative algorithm used is defined by RFC 1808, "Relative Uniform Resource Locators". If not specified, the default value is "http://www.googleapis.com/"
+              "servicePath": "A String", # The Dataflow service path relative to the root URL, for example, "dataflow/v1b3/projects".
+              "tempStoragePrefix": "A String", # The prefix of the resources the system should use for temporary storage. The supported resource type is: Google Cloud Storage: storage.googleapis.com/{bucket}/{object} bucket.storage.googleapis.com/{object}
+            },
+            "vmId": "A String", # ID string of VM.
+            "baseTaskDir": "A String", # Location on the worker for task-specific subdirectories.
+            "continueOnException": True or False, # Do we continue taskrunner if an exception is hit?
+            "baseUrl": "A String", # The base URL for the taskrunner to use when accessing Google Cloud APIs. When workers access Google Cloud APIs, they logically do so via relative URLs. If this field is specified, it supplies the base URL to use for resolving these relative URLs. The normative algorithm used is defined by RFC 1808, "Relative Uniform Resource Locators". If not specified, the default value is "http://www.googleapis.com/"
+            "taskUser": "A String", # The UNIX user ID on the worker VM to use for tasks launched by taskrunner; e.g. "root".
+            "taskGroup": "A String", # The UNIX group ID on the worker VM to use for tasks launched by taskrunner; e.g. "wheel".
+            "oauthScopes": [ # OAuth2 scopes to be requested by the taskrunner in order to access the dataflow API.
+              "A String",
+            ],
+            "languageHint": "A String", # Suggested backend language.
+            "logToSerialconsole": True or False, # Send taskrunner log into to Google Compute Engine VM serial console?
+            "streamingWorkerMainClass": "A String", # Streaming worker main class name.
+            "logDir": "A String", # Directory on the VM to store logs.
+            "dataflowApiVersion": "A String", # API version of endpoint, e.g. "v1b3"
+            "harnessCommand": "A String", # Command to launch the worker harness.
+            "tempStoragePrefix": "A String", # The prefix of the resources the taskrunner should use for temporary storage. The supported resource type is: Google Cloud Storage: storage.googleapis.com/{bucket}/{object} bucket.storage.googleapis.com/{object}
+            "alsologtostderr": True or False, # Also send taskrunner log info to stderr?
+          },
+          "kind": "A String", # The kind of the worker pool; currently only 'harness' and 'shuffle' are supported.
+          "machineType": "A String", # Machine type (e.g. "n1-standard-1"). If empty or unspecified, the service will attempt to choose a reasonable default.
+          "network": "A String", # Network to which VMs will be assigned. If empty or unspecified, the service will use the network "default".
+          "zone": "A String", # Zone to run the worker pools in. If empty or unspecified, the service will attempt to choose a reasonable default.
+          "numThreadsPerWorker": 42, # The number of threads per worker harness. If empty or unspecified, the service will choose a number of threads (according to the number of cores on the selected machine type for batch, or 1 by convention for streaming).
+          "ipConfiguration": "A String", # Configuration for VM IPs.
+          "onHostMaintenance": "A String", # The action to take on host maintenance, as defined by the Google Compute Engine API.
+          "diskType": "A String", # Type of root disk for VMs. If empty or unspecified, the service will attempt to choose a reasonable default.
+          "teardownPolicy": "A String", # Sets the policy for determining when to turndown worker pool. Allowed values are: TEARDOWN_ALWAYS, TEARDOWN_ON_SUCCESS, and TEARDOWN_NEVER. TEARDOWN_ALWAYS means workers are always torn down regardless of whether the job succeeds. TEARDOWN_ON_SUCCESS means workers are torn down if the job succeeds. TEARDOWN_NEVER means the workers are never torn down. If the workers are not torn down by the service, they will continue to run and use Google Compute Engine VM resources in the user's project until they are explicitly terminated by the user. Because of this, Google recommends using the TEARDOWN_ALWAYS policy except for small, manually supervised test jobs. If unknown or unspecified, the service will attempt to choose a reasonable default.
+          "diskSizeGb": 42, # Size of root disk for VMs, in GB. If zero or unspecified, the service will attempt to choose a reasonable default.
+          "metadata": { # Metadata to set on the Google Compute Engine VMs.
+            "a_key": "A String",
+          },
+          "poolArgs": { # Extra arguments for this worker pool.
+            "a_key": "", # Properties of the object. Contains field @type with type URL.
+          },
+          "numWorkers": 42, # Number of Google Compute Engine workers in this pool needed to execute the job. If zero or unspecified, the service will attempt to choose a reasonable default.
+          "workerHarnessContainerImage": "A String", # Docker container image that executes Dataflow worker harness, residing in Google Container Registry. Required.
+          "defaultPackageSet": "A String", # The default package set to install. This allows the service to select a default set of packages which are useful to worker harnesses written in a particular language.
+          "packages": [ # Packages to be installed on workers.
+            { # Packages that need to be installed in order for a worker to run the steps of the Dataflow job which will be assigned to its worker pool. This is the mechanism by which the SDK causes code to be loaded onto the workers. For example, the Dataflow Java SDK might use this to install jars containing the user's code and all of the various dependencies (libraries, data files, etc) required in order for that code to run.
+              "name": "A String", # The name of the package.
+              "location": "A String", # The resource to read the package from. The supported resource type is: Google Cloud Storage: storage.googleapis.com/{bucket} bucket.storage.googleapis.com/
+            },
+          ],
+          "autoscalingSettings": { # Settings for WorkerPool autoscaling. # Settings for autoscaling of this WorkerPool.
+            "maxNumWorkers": 42, # The maximum number of workers to cap scaling at.
+            "algorithm": "A String", # The algorithm to use for autoscaling.
+          },
+          "subnetwork": "A String", # Subnetwork to which VMs will be assigned, if desired. Expected to be of the form "regions/REGION/subnetworks/SUBNETWORK".
+          "dataDisks": [ # Data disks that are used by a VM in this workflow.
+            { # Describes the data disk used by a workflow job.
+              "mountPoint": "A String", # Directory in a VM where disk is mounted.
+              "sizeGb": 42, # Size of disk in GB. If zero or unspecified, the service will attempt to choose a reasonable default.
+              "diskType": "A String", # Disk storage type, as defined by Google Compute Engine. This must be a disk type appropriate to the project and zone in which the workers will run. If unknown or unspecified, the service will attempt to choose a reasonable default. For example, the standard persistent disk type is a resource name typically ending in "pd-standard". If SSD persistent disks are available, the resource name typically ends with "pd-ssd". The actual valid values are defined the Google Compute Engine API, not by the Dataflow API; consult the Google Compute Engine documentation for more information about determining the set of available disk types for a particular project and zone. Google Compute Engine Disk types are local to a particular project in a particular zone, and so the resource name will typically look something like this: compute.googleapis.com/projects/
+                  # /zones//diskTypes/pd-standard
+            },
+          ],
+        },
+      ],
+    },
+    "replaceJobId": "A String", # If this job is an update of an existing job, this field will be the ID of the job it replaced. When sending a CreateJobRequest, you can update a job by specifying it here. The job named here will be stopped, and its intermediate state transferred to this job.
+    "steps": [ # The top-level steps that constitute the entire job.
+      { # Defines a particular step within a Dataflow job. A job consists of multiple steps, each of which performs some specific operation as part of the overall job. Data is typically passed from one step to another as part of the job. Here's an example of a sequence of steps which together implement a Map-Reduce job: * Read a collection of data from some source, parsing the collection's elements. * Validate the elements. * Apply a user-defined function to map each element to some value and extract an element-specific key value. * Group elements with the same key into a single element with that key, transforming a multiply-keyed collection into a uniquely-keyed collection. * Write the elements out to some data sink. (Note that the Dataflow service may be used to run many different types of jobs, not just Map-Reduce).
+        "kind": "A String", # The kind of step in the dataflow Job.
+        "name": "A String", # Name identifying the step. This must be unique for each step with respect to all other steps in the dataflow Job.
+        "properties": { # Named properties associated with the step. Each kind of predefined step has its own required set of properties.
+          "a_key": "", # Properties of the object.
+        },
+      },
+    ],
+    "currentStateTime": "A String", # The timestamp associated with the current state.
+    "tempFiles": [ # A set of files the system should be aware of that are used for temporary storage. These temporary files will be removed on job completion. No duplicates are allowed. No file patterns are supported. The supported files are: Google Cloud Storage: storage.googleapis.com/{bucket}/{object} bucket.storage.googleapis.com/{object}
+      "A String",
+    ],
+    "type": "A String", # The type of dataflow job.
+    "id": "A String", # The unique ID of this job. This field is set by the Dataflow service when the Job is created, and is immutable for the life of the Job.
+    "currentState": "A String", # The current state of the job. Jobs are created in the JOB_STATE_STOPPED state unless otherwise specified. A job in the JOB_STATE_RUNNING state may asynchronously enter a terminal state. Once a job has reached a terminal state, no further state updates may be made. This field may be mutated by the Dataflow service; callers cannot mutate it.
+    "executionInfo": { # Additional information about how a Dataflow job will be executed which isn’t contained in the submitted job. # Information about how the Dataflow service will actually run the job.
+      "stages": { # A mapping from each stage to the information about that stage.
+        "a_key": { # Contains information about how a particular google.dataflow.v1beta3.Step will be executed.
+          "stepName": [ # The steps associated with the execution stage. Note that stages may have several steps, and that a given step might be run by more than one stage.
+            "A String",
+          ],
+        },
+      },
+    },
+  }
+
+  x__xgafv: string, V1 error format.
+
+Returns:
+  An object of the form:
+
+    { # Defines a job to be run by the Dataflow service.
+      "clientRequestId": "A String", # Client's unique identifier of the job, re-used by SDK across retried attempts. If this field is set, the service will ensure its uniqueness. That is, the request to create a job will fail if the service has knowledge of a previously submitted job with the same client's id and job name. The caller may, for example, use this field to ensure idempotence of job creation across retried attempts to create a job. By default, the field is empty and, in that case, the service ignores it.
+      "requestedState": "A String", # The job's requested state. UpdateJob may be used to switch between the JOB_STATE_STOPPED and JOB_STATE_RUNNING states, by setting requested_state. UpdateJob may also be used to directly set a job's requested state to JOB_STATE_CANCELLED or JOB_STATE_DONE, irrevocably terminating the job if it has not already reached a terminal state.
+      "name": "A String", # The user-specified Dataflow job name. Only one Job with a given name may exist in a project at any given time. If a caller attempts to create a Job with the same name as an already-existing Job, the attempt will return the existing Job. The name must match the regular expression [a-z]([-a-z0-9]{0,38}[a-z0-9])?
+      "location": "A String", # The location which contains this job.
+      "replacedByJobId": "A String", # If another job is an update of this job (and thus, this job is in JOB_STATE_UPDATED), this field will contain the ID of that job.
+      "projectId": "A String", # The project which owns the job.
+      "labels": { # User-defined labels for this job. The labels map can contain no more than 64 entries. Entries of the labels map are UTF8 strings that comply with the following restrictions: * Keys must conform to regexp: \p{Ll}\p{Lo}{0,62} * Values must conform to regexp: [\p{Ll}\p{Lo}\p{N}_-]{0,63} * Both keys and values are additionally constrained to be <= 128 bytes in size.
+        "a_key": "A String",
+      },
+      "transformNameMapping": { # Map of transform name prefixes of the job to be replaced to the corresponding name prefixes of the new job.
+        "a_key": "A String",
+      },
+      "createTime": "A String", # Timestamp when job was initially created. Immutable, set by the Dataflow service.
+      "environment": { # Describes the environment in which a Dataflow Job runs. # Environment for the job.
+        "version": { # A structure describing which components and their versions of the service are required in order to run the job.
+          "a_key": "", # Properties of the object.
+        },
+        "tempStoragePrefix": "A String", # The prefix of the resources the system should use for temporary storage. The system will append the suffix "/temp-{JOBNAME} to this resource prefix, where {JOBNAME} is the value of the job_name field. The resulting bucket and object prefix is used as the prefix of the resources used to store temporary data needed during the job execution. NOTE: This will override the value in taskrunner_settings. The supported resource type is: Google Cloud Storage: storage.googleapis.com/{bucket}/{object} bucket.storage.googleapis.com/{object}
+        "internalExperiments": { # Experimental settings.
+          "a_key": "", # Properties of the object. Contains field @type with type URL.
+        },
+        "dataset": "A String", # The dataset for the current project where various workflow related tables are stored. The supported resource type is: Google BigQuery: bigquery.googleapis.com/{dataset}
+        "experiments": [ # The list of experiments to enable.
+          "A String",
+        ],
+        "serviceAccountEmail": "A String", # Identity to run virtual machines as. Defaults to the default account.
+        "sdkPipelineOptions": { # The Dataflow SDK pipeline options specified by the user. These options are passed through the service and are used to recreate the SDK pipeline options on the worker in a language agnostic and platform independent way.
+          "a_key": "", # Properties of the object.
+        },
+        "userAgent": { # A description of the process that generated the request.
+          "a_key": "", # Properties of the object.
+        },
+        "clusterManagerApiService": "A String", # The type of cluster manager API to use. If unknown or unspecified, the service will attempt to choose a reasonable default. This should be in the form of the API service name, e.g. "compute.googleapis.com".
+        "workerPools": [ # Worker pools. At least one "harness" worker pool must be specified in order for the job to have workers.
+          { # Describes one particular pool of Dataflow workers to be instantiated by the Dataflow service in order to perform the computations required by a job. Note that a workflow job may use multiple pools, in order to match the various computational requirements of the various stages of the job.
+            "diskSourceImage": "A String", # Fully qualified source image for disks.
+            "taskrunnerSettings": { # Taskrunner configuration settings. # Settings passed through to Google Compute Engine workers when using the standard Dataflow task runner. Users should ignore this field.
+              "workflowFileName": "A String", # Store the workflow in this file.
+              "logUploadLocation": "A String", # Indicates where to put logs. If this is not specified, the logs will not be uploaded. The supported resource type is: Google Cloud Storage: storage.googleapis.com/{bucket}/{object} bucket.storage.googleapis.com/{object}
+              "commandlinesFileName": "A String", # Store preprocessing commands in this file.
+              "parallelWorkerSettings": { # Provides data to pass through to the worker harness. # Settings to pass to the parallel worker harness.
+                "reportingEnabled": True or False, # Send work progress updates to service.
+                "shuffleServicePath": "A String", # The Shuffle service path relative to the root URL, for example, "shuffle/v1beta1".
+                "workerId": "A String", # ID of the worker running this pipeline.
+                "baseUrl": "A String", # The base URL for accessing Google Cloud APIs. When workers access Google Cloud APIs, they logically do so via relative URLs. If this field is specified, it supplies the base URL to use for resolving these relative URLs. The normative algorithm used is defined by RFC 1808, "Relative Uniform Resource Locators". If not specified, the default value is "http://www.googleapis.com/"
+                "servicePath": "A String", # The Dataflow service path relative to the root URL, for example, "dataflow/v1b3/projects".
+                "tempStoragePrefix": "A String", # The prefix of the resources the system should use for temporary storage. The supported resource type is: Google Cloud Storage: storage.googleapis.com/{bucket}/{object} bucket.storage.googleapis.com/{object}
+              },
+              "vmId": "A String", # ID string of VM.
+              "baseTaskDir": "A String", # Location on the worker for task-specific subdirectories.
+              "continueOnException": True or False, # Do we continue taskrunner if an exception is hit?
+              "baseUrl": "A String", # The base URL for the taskrunner to use when accessing Google Cloud APIs. When workers access Google Cloud APIs, they logically do so via relative URLs. If this field is specified, it supplies the base URL to use for resolving these relative URLs. The normative algorithm used is defined by RFC 1808, "Relative Uniform Resource Locators". If not specified, the default value is "http://www.googleapis.com/"
+              "taskUser": "A String", # The UNIX user ID on the worker VM to use for tasks launched by taskrunner; e.g. "root".
+              "taskGroup": "A String", # The UNIX group ID on the worker VM to use for tasks launched by taskrunner; e.g. "wheel".
+              "oauthScopes": [ # OAuth2 scopes to be requested by the taskrunner in order to access the dataflow API.
+                "A String",
+              ],
+              "languageHint": "A String", # Suggested backend language.
+              "logToSerialconsole": True or False, # Send taskrunner log into to Google Compute Engine VM serial console?
+              "streamingWorkerMainClass": "A String", # Streaming worker main class name.
+              "logDir": "A String", # Directory on the VM to store logs.
+              "dataflowApiVersion": "A String", # API version of endpoint, e.g. "v1b3"
+              "harnessCommand": "A String", # Command to launch the worker harness.
+              "tempStoragePrefix": "A String", # The prefix of the resources the taskrunner should use for temporary storage. The supported resource type is: Google Cloud Storage: storage.googleapis.com/{bucket}/{object} bucket.storage.googleapis.com/{object}
+              "alsologtostderr": True or False, # Also send taskrunner log info to stderr?
+            },
+            "kind": "A String", # The kind of the worker pool; currently only 'harness' and 'shuffle' are supported.
+            "machineType": "A String", # Machine type (e.g. "n1-standard-1"). If empty or unspecified, the service will attempt to choose a reasonable default.
+            "network": "A String", # Network to which VMs will be assigned. If empty or unspecified, the service will use the network "default".
+            "zone": "A String", # Zone to run the worker pools in. If empty or unspecified, the service will attempt to choose a reasonable default.
+            "numThreadsPerWorker": 42, # The number of threads per worker harness. If empty or unspecified, the service will choose a number of threads (according to the number of cores on the selected machine type for batch, or 1 by convention for streaming).
+            "ipConfiguration": "A String", # Configuration for VM IPs.
+            "onHostMaintenance": "A String", # The action to take on host maintenance, as defined by the Google Compute Engine API.
+            "diskType": "A String", # Type of root disk for VMs. If empty or unspecified, the service will attempt to choose a reasonable default.
+            "teardownPolicy": "A String", # Sets the policy for determining when to turndown worker pool. Allowed values are: TEARDOWN_ALWAYS, TEARDOWN_ON_SUCCESS, and TEARDOWN_NEVER. TEARDOWN_ALWAYS means workers are always torn down regardless of whether the job succeeds. TEARDOWN_ON_SUCCESS means workers are torn down if the job succeeds. TEARDOWN_NEVER means the workers are never torn down. If the workers are not torn down by the service, they will continue to run and use Google Compute Engine VM resources in the user's project until they are explicitly terminated by the user. Because of this, Google recommends using the TEARDOWN_ALWAYS policy except for small, manually supervised test jobs. If unknown or unspecified, the service will attempt to choose a reasonable default.
+            "diskSizeGb": 42, # Size of root disk for VMs, in GB. If zero or unspecified, the service will attempt to choose a reasonable default.
+            "metadata": { # Metadata to set on the Google Compute Engine VMs.
+              "a_key": "A String",
+            },
+            "poolArgs": { # Extra arguments for this worker pool.
+              "a_key": "", # Properties of the object. Contains field @type with type URL.
+            },
+            "numWorkers": 42, # Number of Google Compute Engine workers in this pool needed to execute the job. If zero or unspecified, the service will attempt to choose a reasonable default.
+            "workerHarnessContainerImage": "A String", # Docker container image that executes Dataflow worker harness, residing in Google Container Registry. Required.
+            "defaultPackageSet": "A String", # The default package set to install. This allows the service to select a default set of packages which are useful to worker harnesses written in a particular language.
+            "packages": [ # Packages to be installed on workers.
+              { # Packages that need to be installed in order for a worker to run the steps of the Dataflow job which will be assigned to its worker pool. This is the mechanism by which the SDK causes code to be loaded onto the workers. For example, the Dataflow Java SDK might use this to install jars containing the user's code and all of the various dependencies (libraries, data files, etc) required in order for that code to run.
+                "name": "A String", # The name of the package.
+                "location": "A String", # The resource to read the package from. The supported resource type is: Google Cloud Storage: storage.googleapis.com/{bucket} bucket.storage.googleapis.com/
+              },
+            ],
+            "autoscalingSettings": { # Settings for WorkerPool autoscaling. # Settings for autoscaling of this WorkerPool.
+              "maxNumWorkers": 42, # The maximum number of workers to cap scaling at.
+              "algorithm": "A String", # The algorithm to use for autoscaling.
+            },
+            "subnetwork": "A String", # Subnetwork to which VMs will be assigned, if desired. Expected to be of the form "regions/REGION/subnetworks/SUBNETWORK".
+            "dataDisks": [ # Data disks that are used by a VM in this workflow.
+              { # Describes the data disk used by a workflow job.
+                "mountPoint": "A String", # Directory in a VM where disk is mounted.
+                "sizeGb": 42, # Size of disk in GB. If zero or unspecified, the service will attempt to choose a reasonable default.
+                "diskType": "A String", # Disk storage type, as defined by Google Compute Engine. This must be a disk type appropriate to the project and zone in which the workers will run. If unknown or unspecified, the service will attempt to choose a reasonable default. For example, the standard persistent disk type is a resource name typically ending in "pd-standard". If SSD persistent disks are available, the resource name typically ends with "pd-ssd". The actual valid values are defined the Google Compute Engine API, not by the Dataflow API; consult the Google Compute Engine documentation for more information about determining the set of available disk types for a particular project and zone. Google Compute Engine Disk types are local to a particular project in a particular zone, and so the resource name will typically look something like this: compute.googleapis.com/projects/
+                    # /zones//diskTypes/pd-standard
+              },
+            ],
+          },
+        ],
+      },
+      "replaceJobId": "A String", # If this job is an update of an existing job, this field will be the ID of the job it replaced. When sending a CreateJobRequest, you can update a job by specifying it here. The job named here will be stopped, and its intermediate state transferred to this job.
+      "steps": [ # The top-level steps that constitute the entire job.
+        { # Defines a particular step within a Dataflow job. A job consists of multiple steps, each of which performs some specific operation as part of the overall job. Data is typically passed from one step to another as part of the job. Here's an example of a sequence of steps which together implement a Map-Reduce job: * Read a collection of data from some source, parsing the collection's elements. * Validate the elements. * Apply a user-defined function to map each element to some value and extract an element-specific key value. * Group elements with the same key into a single element with that key, transforming a multiply-keyed collection into a uniquely-keyed collection. * Write the elements out to some data sink. (Note that the Dataflow service may be used to run many different types of jobs, not just Map-Reduce).
+          "kind": "A String", # The kind of step in the dataflow Job.
+          "name": "A String", # Name identifying the step. This must be unique for each step with respect to all other steps in the dataflow Job.
+          "properties": { # Named properties associated with the step. Each kind of predefined step has its own required set of properties.
+            "a_key": "", # Properties of the object.
+          },
+        },
+      ],
+      "currentStateTime": "A String", # The timestamp associated with the current state.
+      "tempFiles": [ # A set of files the system should be aware of that are used for temporary storage. These temporary files will be removed on job completion. No duplicates are allowed. No file patterns are supported. The supported files are: Google Cloud Storage: storage.googleapis.com/{bucket}/{object} bucket.storage.googleapis.com/{object}
+        "A String",
+      ],
+      "type": "A String", # The type of dataflow job.
+      "id": "A String", # The unique ID of this job. This field is set by the Dataflow service when the Job is created, and is immutable for the life of the Job.
+      "currentState": "A String", # The current state of the job. Jobs are created in the JOB_STATE_STOPPED state unless otherwise specified. A job in the JOB_STATE_RUNNING state may asynchronously enter a terminal state. Once a job has reached a terminal state, no further state updates may be made. This field may be mutated by the Dataflow service; callers cannot mutate it.
+      "executionInfo": { # Additional information about how a Dataflow job will be executed which isn’t contained in the submitted job. # Information about how the Dataflow service will actually run the job.
+        "stages": { # A mapping from each stage to the information about that stage.
+          "a_key": { # Contains information about how a particular google.dataflow.v1beta3.Step will be executed.
+            "stepName": [ # The steps associated with the execution stage. Note that stages may have several steps, and that a given step might be run by more than one stage.
+              "A String",
+            ],
+          },
+        },
+      },
+    }</pre>
+</div>
+
+</body></html>
\ No newline at end of file
diff --git a/docs/dyn/dataflow_v1b3.projects.locations.jobs.messages.html b/docs/dyn/dataflow_v1b3.projects.locations.jobs.messages.html
new file mode 100644
index 0000000..330e1bb
--- /dev/null
+++ b/docs/dyn/dataflow_v1b3.projects.locations.jobs.messages.html
@@ -0,0 +1,129 @@
+<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="dataflow_v1b3.html">Google Dataflow API</a> . <a href="dataflow_v1b3.projects.html">projects</a> . <a href="dataflow_v1b3.projects.locations.html">locations</a> . <a href="dataflow_v1b3.projects.locations.jobs.html">jobs</a> . <a href="dataflow_v1b3.projects.locations.jobs.messages.html">messages</a></h1>
+<h2>Instance Methods</h2>
+<p class="toc_element">
+  <code><a href="#list">list(projectId, location, jobId, startTime=None, pageSize=None, x__xgafv=None, pageToken=None, minimumImportance=None, endTime=None)</a></code></p>
+<p class="firstline">Request the job status.</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>
+<h3>Method Details</h3>
+<div class="method">
+    <code class="details" id="list">list(projectId, location, jobId, startTime=None, pageSize=None, x__xgafv=None, pageToken=None, minimumImportance=None, endTime=None)</code>
+  <pre>Request the job status.
+
+Args:
+  projectId: string, A project id. (required)
+  location: string, The location which contains the job specified by job_id. (required)
+  jobId: string, The job to get messages about. (required)
+  startTime: string, If specified, return only messages with timestamps >= start_time. The default is the job creation time (i.e. beginning of messages).
+  pageSize: integer, If specified, determines the maximum number of messages to return. If unspecified, the service may choose an appropriate default, or may return an arbitrarily large number of results.
+  x__xgafv: string, V1 error format.
+  pageToken: string, If supplied, this should be the value of next_page_token returned by an earlier call. This will cause the next page of results to be returned.
+  minimumImportance: string, Filter to only get messages with importance >= level
+  endTime: string, Return only messages with timestamps < end_time. The default is now (i.e. return up to the latest messages available).
+
+Returns:
+  An object of the form:
+
+    { # Response to a request to list job messages.
+    "nextPageToken": "A String", # The token to obtain the next page of results if there are more.
+    "jobMessages": [ # Messages in ascending timestamp order.
+      { # A particular message pertaining to a Dataflow job.
+        "messageImportance": "A String", # Importance level of the message.
+        "messageText": "A String", # The text of the message.
+        "id": "A String", # Identifies the message. This is automatically generated by the service; the caller should treat it as an opaque string.
+        "time": "A String", # The timestamp of the message.
+      },
+    ],
+  }</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>
+
+</body></html>
\ No newline at end of file
diff --git a/docs/dyn/dataflow_v1b3.projects.locations.jobs.workItems.html b/docs/dyn/dataflow_v1b3.projects.locations.jobs.workItems.html
new file mode 100644
index 0000000..d147bb3
--- /dev/null
+++ b/docs/dyn/dataflow_v1b3.projects.locations.jobs.workItems.html
@@ -0,0 +1,1097 @@
+<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="dataflow_v1b3.html">Google Dataflow API</a> . <a href="dataflow_v1b3.projects.html">projects</a> . <a href="dataflow_v1b3.projects.locations.html">locations</a> . <a href="dataflow_v1b3.projects.locations.jobs.html">jobs</a> . <a href="dataflow_v1b3.projects.locations.jobs.workItems.html">workItems</a></h1>
+<h2>Instance Methods</h2>
+<p class="toc_element">
+  <code><a href="#lease">lease(projectId, location, jobId, body, x__xgafv=None)</a></code></p>
+<p class="firstline">Leases a dataflow WorkItem to run.</p>
+<p class="toc_element">
+  <code><a href="#reportStatus">reportStatus(projectId, location, jobId, body, x__xgafv=None)</a></code></p>
+<p class="firstline">Reports the status of dataflow WorkItems leased by a worker.</p>
+<h3>Method Details</h3>
+<div class="method">
+    <code class="details" id="lease">lease(projectId, location, jobId, body, x__xgafv=None)</code>
+  <pre>Leases a dataflow WorkItem to run.
+
+Args:
+  projectId: string, Identifies the project this worker belongs to. (required)
+  location: string, The location which contains the WorkItem's job. (required)
+  jobId: string, Identifies the workflow job this worker belongs to. (required)
+  body: object, The request body. (required)
+    The object takes the form of:
+
+{ # Request to lease WorkItems.
+    "workItemTypes": [ # Filter for WorkItem type.
+      "A String",
+    ],
+    "workerCapabilities": [ # Worker capabilities. WorkItems might be limited to workers with specific capabilities.
+      "A String",
+    ],
+    "requestedLeaseDuration": "A String", # The initial lease period.
+    "workerId": "A String", # Identifies the worker leasing work -- typically the ID of the virtual machine running the worker.
+    "currentWorkerTime": "A String", # The current timestamp at the worker.
+    "location": "A String", # The location which contains the WorkItem's job.
+  }
+
+  x__xgafv: string, V1 error format.
+
+Returns:
+  An object of the form:
+
+    { # Response to a request to lease WorkItems.
+    "workItems": [ # A list of the leased WorkItems.
+      { # WorkItem represents basic information about a WorkItem to be executed in the cloud.
+        "reportStatusInterval": "A String", # Recommended reporting interval.
+        "leaseExpireTime": "A String", # Time when the lease on this Work will expire.
+        "seqMapTask": { # Describes a particular function to invoke. # Additional information for SeqMapTask WorkItems.
+          "inputs": [ # Information about each of the inputs.
+            { # Information about a side input of a DoFn or an input of a SeqDoFn.
+              "sources": [ # The source(s) to read element(s) from to get the value of this side input. If more than one source, then the elements are taken from the sources, in the specified order if order matters. At least one source is required.
+                { # A source that records can be read and decoded from.
+                  "codec": { # The codec to use to decode data read from the source.
+                    "a_key": "", # Properties of the object.
+                  },
+                  "baseSpecs": [ # While splitting, sources may specify the produced bundles as differences against another source, in order to save backend-side memory and allow bigger jobs. For details, see SourceSplitRequest. To support this use case, the full set of parameters of the source is logically obtained by taking the latest explicitly specified value of each parameter in the order: base_specs (later items win), spec (overrides anything in base_specs).
+                    {
+                      "a_key": "", # Properties of the object.
+                    },
+                  ],
+                  "spec": { # The source to read from, plus its parameters.
+                    "a_key": "", # Properties of the object.
+                  },
+                  "doesNotNeedSplitting": True or False, # Setting this value to true hints to the framework that the source doesn't need splitting, and using SourceSplitRequest on it would yield SOURCE_SPLIT_OUTCOME_USE_CURRENT. E.g. a file splitter may set this to true when splitting a single file into a set of byte ranges of appropriate size, and set this to false when splitting a filepattern into individual files. However, for efficiency, a file splitter may decide to produce file subranges directly from the filepattern to avoid a splitting round-trip. See SourceSplitRequest for an overview of the splitting process. This field is meaningful only in the Source objects populated by the user (e.g. when filling in a DerivedSource). Source objects supplied by the framework to the user don't have this field populated.
+                  "metadata": { # Metadata about a Source useful for automatically optimizing and tuning the pipeline, etc. # Optionally, metadata for this source can be supplied right away, avoiding a SourceGetMetadataOperation roundtrip (see SourceOperationRequest). This field is meaningful only in the Source objects populated by the user (e.g. when filling in a DerivedSource). Source objects supplied by the framework to the user don't have this field populated.
+                    "infinite": True or False, # Specifies that the size of this source is known to be infinite (this is a streaming source).
+                    "estimatedSizeBytes": "A String", # An estimate of the total size (in bytes) of the data that would be read from this source. This estimate is in terms of external storage size, before any decompression or other processing done by the reader.
+                    "producesSortedKeys": True or False, # Whether this source is known to produce key/value pairs with the (encoded) keys in lexicographically sorted order.
+                  },
+                },
+              ],
+              "kind": { # How to interpret the source element(s) as a side input value.
+                "a_key": "", # Properties of the object.
+              },
+              "tag": "A String", # The id of the tag the user code will access this side input by; this should correspond to the tag of some MultiOutputInfo.
+            },
+          ],
+          "outputInfos": [ # Information about each of the outputs.
+            { # Information about an output of a SeqMapTask.
+              "tag": "A String", # The id of the TupleTag the user code will tag the output value by.
+              "sink": { # A sink that records can be encoded and written to. # The sink to write the output value to.
+                "codec": { # The codec to use to encode data written to the sink.
+                  "a_key": "", # Properties of the object.
+                },
+                "spec": { # The sink to write to, plus its parameters.
+                  "a_key": "", # Properties of the object.
+                },
+              },
+            },
+          ],
+          "stageName": "A String", # System-defined name of the stage containing the SeqDo operation. Unique across the workflow.
+          "systemName": "A String", # System-defined name of the SeqDo operation. Unique across the workflow.
+          "userFn": { # The user function to invoke.
+            "a_key": "", # Properties of the object.
+          },
+          "name": "A String", # The user-provided name of the SeqDo operation.
+        },
+        "projectId": "A String", # Identifies the cloud project this WorkItem belongs to.
+        "sourceOperationTask": { # A work item that represents the different operations that can be performed on a user-defined Source specification. # Additional information for source operation WorkItems.
+          "getMetadata": { # A request to compute the SourceMetadata of a Source. # Information about a request to get metadata about a source.
+            "source": { # A source that records can be read and decoded from. # Specification of the source whose metadata should be computed.
+              "codec": { # The codec to use to decode data read from the source.
+                "a_key": "", # Properties of the object.
+              },
+              "baseSpecs": [ # While splitting, sources may specify the produced bundles as differences against another source, in order to save backend-side memory and allow bigger jobs. For details, see SourceSplitRequest. To support this use case, the full set of parameters of the source is logically obtained by taking the latest explicitly specified value of each parameter in the order: base_specs (later items win), spec (overrides anything in base_specs).
+                {
+                  "a_key": "", # Properties of the object.
+                },
+              ],
+              "spec": { # The source to read from, plus its parameters.
+                "a_key": "", # Properties of the object.
+              },
+              "doesNotNeedSplitting": True or False, # Setting this value to true hints to the framework that the source doesn't need splitting, and using SourceSplitRequest on it would yield SOURCE_SPLIT_OUTCOME_USE_CURRENT. E.g. a file splitter may set this to true when splitting a single file into a set of byte ranges of appropriate size, and set this to false when splitting a filepattern into individual files. However, for efficiency, a file splitter may decide to produce file subranges directly from the filepattern to avoid a splitting round-trip. See SourceSplitRequest for an overview of the splitting process. This field is meaningful only in the Source objects populated by the user (e.g. when filling in a DerivedSource). Source objects supplied by the framework to the user don't have this field populated.
+              "metadata": { # Metadata about a Source useful for automatically optimizing and tuning the pipeline, etc. # Optionally, metadata for this source can be supplied right away, avoiding a SourceGetMetadataOperation roundtrip (see SourceOperationRequest). This field is meaningful only in the Source objects populated by the user (e.g. when filling in a DerivedSource). Source objects supplied by the framework to the user don't have this field populated.
+                "infinite": True or False, # Specifies that the size of this source is known to be infinite (this is a streaming source).
+                "estimatedSizeBytes": "A String", # An estimate of the total size (in bytes) of the data that would be read from this source. This estimate is in terms of external storage size, before any decompression or other processing done by the reader.
+                "producesSortedKeys": True or False, # Whether this source is known to produce key/value pairs with the (encoded) keys in lexicographically sorted order.
+              },
+            },
+          },
+          "split": { # Represents the operation to split a high-level Source specification into bundles (parts for parallel processing). At a high level, splitting of a source into bundles happens as follows: SourceSplitRequest is applied to the source. If it returns SOURCE_SPLIT_OUTCOME_USE_CURRENT, no further splitting happens and the source is used "as is". Otherwise, splitting is applied recursively to each produced DerivedSource. As an optimization, for any Source, if its does_not_need_splitting is true, the framework assumes that splitting this source would return SOURCE_SPLIT_OUTCOME_USE_CURRENT, and doesn't initiate a SourceSplitRequest. This applies both to the initial source being split and to bundles produced from it. # Information about a request to split a source.
+            "source": { # A source that records can be read and decoded from. # Specification of the source to be split.
+              "codec": { # The codec to use to decode data read from the source.
+                "a_key": "", # Properties of the object.
+              },
+              "baseSpecs": [ # While splitting, sources may specify the produced bundles as differences against another source, in order to save backend-side memory and allow bigger jobs. For details, see SourceSplitRequest. To support this use case, the full set of parameters of the source is logically obtained by taking the latest explicitly specified value of each parameter in the order: base_specs (later items win), spec (overrides anything in base_specs).
+                {
+                  "a_key": "", # Properties of the object.
+                },
+              ],
+              "spec": { # The source to read from, plus its parameters.
+                "a_key": "", # Properties of the object.
+              },
+              "doesNotNeedSplitting": True or False, # Setting this value to true hints to the framework that the source doesn't need splitting, and using SourceSplitRequest on it would yield SOURCE_SPLIT_OUTCOME_USE_CURRENT. E.g. a file splitter may set this to true when splitting a single file into a set of byte ranges of appropriate size, and set this to false when splitting a filepattern into individual files. However, for efficiency, a file splitter may decide to produce file subranges directly from the filepattern to avoid a splitting round-trip. See SourceSplitRequest for an overview of the splitting process. This field is meaningful only in the Source objects populated by the user (e.g. when filling in a DerivedSource). Source objects supplied by the framework to the user don't have this field populated.
+              "metadata": { # Metadata about a Source useful for automatically optimizing and tuning the pipeline, etc. # Optionally, metadata for this source can be supplied right away, avoiding a SourceGetMetadataOperation roundtrip (see SourceOperationRequest). This field is meaningful only in the Source objects populated by the user (e.g. when filling in a DerivedSource). Source objects supplied by the framework to the user don't have this field populated.
+                "infinite": True or False, # Specifies that the size of this source is known to be infinite (this is a streaming source).
+                "estimatedSizeBytes": "A String", # An estimate of the total size (in bytes) of the data that would be read from this source. This estimate is in terms of external storage size, before any decompression or other processing done by the reader.
+                "producesSortedKeys": True or False, # Whether this source is known to produce key/value pairs with the (encoded) keys in lexicographically sorted order.
+              },
+            },
+            "options": { # Hints for splitting a Source into bundles (parts for parallel processing) using SourceSplitRequest. # Hints for tuning the splitting process.
+              "desiredShardSizeBytes": "A String", # DEPRECATED in favor of desired_bundle_size_bytes.
+              "desiredBundleSizeBytes": "A String", # The source should be split into a set of bundles where the estimated size of each is approximately this many bytes.
+            },
+          },
+        },
+        "initialReportIndex": "A String", # The initial index to use when reporting the status of the WorkItem.
+        "mapTask": { # MapTask consists of an ordered set of instructions, each of which describes one particular low-level operation for the worker to perform in order to accomplish the MapTask's WorkItem. Each instruction must appear in the list before any instructions which depends on its output. # Additional information for MapTask WorkItems.
+          "systemName": "A String", # System-defined name of this MapTask. Unique across the workflow.
+          "stageName": "A String", # System-defined name of the stage containing this MapTask. Unique across the workflow.
+          "instructions": [ # The instructions in the MapTask.
+            { # Describes a particular operation comprising a MapTask.
+              "name": "A String", # User-provided name of this operation.
+              "read": { # An instruction that reads records. Takes no inputs, produces one output. # Additional information for Read instructions.
+                "source": { # A source that records can be read and decoded from. # The source to read from.
+                  "codec": { # The codec to use to decode data read from the source.
+                    "a_key": "", # Properties of the object.
+                  },
+                  "baseSpecs": [ # While splitting, sources may specify the produced bundles as differences against another source, in order to save backend-side memory and allow bigger jobs. For details, see SourceSplitRequest. To support this use case, the full set of parameters of the source is logically obtained by taking the latest explicitly specified value of each parameter in the order: base_specs (later items win), spec (overrides anything in base_specs).
+                    {
+                      "a_key": "", # Properties of the object.
+                    },
+                  ],
+                  "spec": { # The source to read from, plus its parameters.
+                    "a_key": "", # Properties of the object.
+                  },
+                  "doesNotNeedSplitting": True or False, # Setting this value to true hints to the framework that the source doesn't need splitting, and using SourceSplitRequest on it would yield SOURCE_SPLIT_OUTCOME_USE_CURRENT. E.g. a file splitter may set this to true when splitting a single file into a set of byte ranges of appropriate size, and set this to false when splitting a filepattern into individual files. However, for efficiency, a file splitter may decide to produce file subranges directly from the filepattern to avoid a splitting round-trip. See SourceSplitRequest for an overview of the splitting process. This field is meaningful only in the Source objects populated by the user (e.g. when filling in a DerivedSource). Source objects supplied by the framework to the user don't have this field populated.
+                  "metadata": { # Metadata about a Source useful for automatically optimizing and tuning the pipeline, etc. # Optionally, metadata for this source can be supplied right away, avoiding a SourceGetMetadataOperation roundtrip (see SourceOperationRequest). This field is meaningful only in the Source objects populated by the user (e.g. when filling in a DerivedSource). Source objects supplied by the framework to the user don't have this field populated.
+                    "infinite": True or False, # Specifies that the size of this source is known to be infinite (this is a streaming source).
+                    "estimatedSizeBytes": "A String", # An estimate of the total size (in bytes) of the data that would be read from this source. This estimate is in terms of external storage size, before any decompression or other processing done by the reader.
+                    "producesSortedKeys": True or False, # Whether this source is known to produce key/value pairs with the (encoded) keys in lexicographically sorted order.
+                  },
+                },
+              },
+              "outputs": [ # Describes the outputs of the instruction.
+                { # An output of an instruction.
+                  "name": "A String", # The user-provided name of this output.
+                  "onlyCountKeyBytes": True or False, # For system-generated byte and mean byte metrics, certain instructions should only report the key size.
+                  "codec": { # The codec to use to encode data being written via this output.
+                    "a_key": "", # Properties of the object.
+                  },
+                  "systemName": "A String", # System-defined name of this output. Unique across the workflow.
+                  "originalName": "A String", # System-defined name for this output in the original workflow graph. Outputs that do not contribute to an original instruction do not set this.
+                  "onlyCountValueBytes": True or False, # For system-generated byte and mean byte metrics, certain instructions should only report the value size.
+                },
+              ],
+              "partialGroupByKey": { # An instruction that does a partial group-by-key. One input and one output. # Additional information for PartialGroupByKey instructions.
+                "sideInputs": [ # Zero or more side inputs.
+                  { # Information about a side input of a DoFn or an input of a SeqDoFn.
+                    "sources": [ # The source(s) to read element(s) from to get the value of this side input. If more than one source, then the elements are taken from the sources, in the specified order if order matters. At least one source is required.
+                      { # A source that records can be read and decoded from.
+                        "codec": { # The codec to use to decode data read from the source.
+                          "a_key": "", # Properties of the object.
+                        },
+                        "baseSpecs": [ # While splitting, sources may specify the produced bundles as differences against another source, in order to save backend-side memory and allow bigger jobs. For details, see SourceSplitRequest. To support this use case, the full set of parameters of the source is logically obtained by taking the latest explicitly specified value of each parameter in the order: base_specs (later items win), spec (overrides anything in base_specs).
+                          {
+                            "a_key": "", # Properties of the object.
+                          },
+                        ],
+                        "spec": { # The source to read from, plus its parameters.
+                          "a_key": "", # Properties of the object.
+                        },
+                        "doesNotNeedSplitting": True or False, # Setting this value to true hints to the framework that the source doesn't need splitting, and using SourceSplitRequest on it would yield SOURCE_SPLIT_OUTCOME_USE_CURRENT. E.g. a file splitter may set this to true when splitting a single file into a set of byte ranges of appropriate size, and set this to false when splitting a filepattern into individual files. However, for efficiency, a file splitter may decide to produce file subranges directly from the filepattern to avoid a splitting round-trip. See SourceSplitRequest for an overview of the splitting process. This field is meaningful only in the Source objects populated by the user (e.g. when filling in a DerivedSource). Source objects supplied by the framework to the user don't have this field populated.
+                        "metadata": { # Metadata about a Source useful for automatically optimizing and tuning the pipeline, etc. # Optionally, metadata for this source can be supplied right away, avoiding a SourceGetMetadataOperation roundtrip (see SourceOperationRequest). This field is meaningful only in the Source objects populated by the user (e.g. when filling in a DerivedSource). Source objects supplied by the framework to the user don't have this field populated.
+                          "infinite": True or False, # Specifies that the size of this source is known to be infinite (this is a streaming source).
+                          "estimatedSizeBytes": "A String", # An estimate of the total size (in bytes) of the data that would be read from this source. This estimate is in terms of external storage size, before any decompression or other processing done by the reader.
+                          "producesSortedKeys": True or False, # Whether this source is known to produce key/value pairs with the (encoded) keys in lexicographically sorted order.
+                        },
+                      },
+                    ],
+                    "kind": { # How to interpret the source element(s) as a side input value.
+                      "a_key": "", # Properties of the object.
+                    },
+                    "tag": "A String", # The id of the tag the user code will access this side input by; this should correspond to the tag of some MultiOutputInfo.
+                  },
+                ],
+                "originalCombineValuesInputStoreName": "A String", # If this instruction includes a combining function this is the name of the intermediate store between the GBK and the CombineValues.
+                "originalCombineValuesStepName": "A String", # If this instruction includes a combining function, this is the name of the CombineValues instruction lifted into this instruction.
+                "valueCombiningFn": { # The value combining function to invoke.
+                  "a_key": "", # Properties of the object.
+                },
+                "input": { # An input of an instruction, as a reference to an output of a producer instruction. # Describes the input to the partial group-by-key instruction.
+                  "outputNum": 42, # The output index (origin zero) within the producer.
+                  "producerInstructionIndex": 42, # The index (origin zero) of the parallel instruction that produces the output to be consumed by this input. This index is relative to the list of instructions in this input's instruction's containing MapTask.
+                },
+                "inputElementCodec": { # The codec to use for interpreting an element in the input PTable.
+                  "a_key": "", # Properties of the object.
+                },
+              },
+              "write": { # An instruction that writes records. Takes one input, produces no outputs. # Additional information for Write instructions.
+                "input": { # An input of an instruction, as a reference to an output of a producer instruction. # The input.
+                  "outputNum": 42, # The output index (origin zero) within the producer.
+                  "producerInstructionIndex": 42, # The index (origin zero) of the parallel instruction that produces the output to be consumed by this input. This index is relative to the list of instructions in this input's instruction's containing MapTask.
+                },
+                "sink": { # A sink that records can be encoded and written to. # The sink to write to.
+                  "codec": { # The codec to use to encode data written to the sink.
+                    "a_key": "", # Properties of the object.
+                  },
+                  "spec": { # The sink to write to, plus its parameters.
+                    "a_key": "", # Properties of the object.
+                  },
+                },
+              },
+              "systemName": "A String", # System-defined name of this operation. Unique across the workflow.
+              "flatten": { # An instruction that copies its inputs (zero or more) to its (single) output. # Additional information for Flatten instructions.
+                "inputs": [ # Describes the inputs to the flatten instruction.
+                  { # An input of an instruction, as a reference to an output of a producer instruction.
+                    "outputNum": 42, # The output index (origin zero) within the producer.
+                    "producerInstructionIndex": 42, # The index (origin zero) of the parallel instruction that produces the output to be consumed by this input. This index is relative to the list of instructions in this input's instruction's containing MapTask.
+                  },
+                ],
+              },
+              "originalName": "A String", # System-defined name for the operation in the original workflow graph.
+              "parDo": { # An instruction that does a ParDo operation. Takes one main input and zero or more side inputs, and produces zero or more outputs. Runs user code. # Additional information for ParDo instructions.
+                "sideInputs": [ # Zero or more side inputs.
+                  { # Information about a side input of a DoFn or an input of a SeqDoFn.
+                    "sources": [ # The source(s) to read element(s) from to get the value of this side input. If more than one source, then the elements are taken from the sources, in the specified order if order matters. At least one source is required.
+                      { # A source that records can be read and decoded from.
+                        "codec": { # The codec to use to decode data read from the source.
+                          "a_key": "", # Properties of the object.
+                        },
+                        "baseSpecs": [ # While splitting, sources may specify the produced bundles as differences against another source, in order to save backend-side memory and allow bigger jobs. For details, see SourceSplitRequest. To support this use case, the full set of parameters of the source is logically obtained by taking the latest explicitly specified value of each parameter in the order: base_specs (later items win), spec (overrides anything in base_specs).
+                          {
+                            "a_key": "", # Properties of the object.
+                          },
+                        ],
+                        "spec": { # The source to read from, plus its parameters.
+                          "a_key": "", # Properties of the object.
+                        },
+                        "doesNotNeedSplitting": True or False, # Setting this value to true hints to the framework that the source doesn't need splitting, and using SourceSplitRequest on it would yield SOURCE_SPLIT_OUTCOME_USE_CURRENT. E.g. a file splitter may set this to true when splitting a single file into a set of byte ranges of appropriate size, and set this to false when splitting a filepattern into individual files. However, for efficiency, a file splitter may decide to produce file subranges directly from the filepattern to avoid a splitting round-trip. See SourceSplitRequest for an overview of the splitting process. This field is meaningful only in the Source objects populated by the user (e.g. when filling in a DerivedSource). Source objects supplied by the framework to the user don't have this field populated.
+                        "metadata": { # Metadata about a Source useful for automatically optimizing and tuning the pipeline, etc. # Optionally, metadata for this source can be supplied right away, avoiding a SourceGetMetadataOperation roundtrip (see SourceOperationRequest). This field is meaningful only in the Source objects populated by the user (e.g. when filling in a DerivedSource). Source objects supplied by the framework to the user don't have this field populated.
+                          "infinite": True or False, # Specifies that the size of this source is known to be infinite (this is a streaming source).
+                          "estimatedSizeBytes": "A String", # An estimate of the total size (in bytes) of the data that would be read from this source. This estimate is in terms of external storage size, before any decompression or other processing done by the reader.
+                          "producesSortedKeys": True or False, # Whether this source is known to produce key/value pairs with the (encoded) keys in lexicographically sorted order.
+                        },
+                      },
+                    ],
+                    "kind": { # How to interpret the source element(s) as a side input value.
+                      "a_key": "", # Properties of the object.
+                    },
+                    "tag": "A String", # The id of the tag the user code will access this side input by; this should correspond to the tag of some MultiOutputInfo.
+                  },
+                ],
+                "input": { # An input of an instruction, as a reference to an output of a producer instruction. # The input.
+                  "outputNum": 42, # The output index (origin zero) within the producer.
+                  "producerInstructionIndex": 42, # The index (origin zero) of the parallel instruction that produces the output to be consumed by this input. This index is relative to the list of instructions in this input's instruction's containing MapTask.
+                },
+                "multiOutputInfos": [ # Information about each of the outputs, if user_fn is a MultiDoFn.
+                  { # Information about an output of a multi-output DoFn.
+                    "tag": "A String", # The id of the tag the user code will emit to this output by; this should correspond to the tag of some SideInputInfo.
+                  },
+                ],
+                "numOutputs": 42, # The number of outputs.
+                "userFn": { # The user function to invoke.
+                  "a_key": "", # Properties of the object.
+                },
+              },
+            },
+          ],
+        },
+        "jobId": "A String", # Identifies the workflow job this WorkItem belongs to.
+        "streamingComputationTask": { # A task which describes what action should be performed for the specified streaming computation ranges. # Additional information for StreamingComputationTask WorkItems.
+          "dataDisks": [ # Describes the set of data disks this task should apply to.
+            { # Describes mounted data disk.
+              "dataDisk": "A String", # The name of the data disk. This name is local to the Google Cloud Platform project and uniquely identifies the disk within that project, for example "myproject-1014-104817-4c2-harness-0-disk-1".
+            },
+          ],
+          "computationRanges": [ # Contains ranges of a streaming computation this task should apply to.
+            { # Describes full or partial data disk assignment information of the computation ranges.
+              "rangeAssignments": [ # Data disk assignments for ranges from this computation.
+                { # Data disk assignment information for a specific key-range of a sharded computation. Currently we only support UTF-8 character splits to simplify encoding into JSON.
+                  "start": "A String", # The start (inclusive) of the key range.
+                  "end": "A String", # The end (exclusive) of the key range.
+                  "dataDisk": "A String", # The name of the data disk where data for this range is stored. This name is local to the Google Cloud Platform project and uniquely identifies the disk within that project, for example "myproject-1014-104817-4c2-harness-0-disk-1".
+                },
+              ],
+              "computationId": "A String", # The ID of the computation.
+            },
+          ],
+          "taskType": "A String", # A type of streaming computation task.
+        },
+        "configuration": "A String", # Work item-specific configuration as an opaque blob.
+        "streamingSetupTask": { # A task which initializes part of a streaming Dataflow job. # Additional information for StreamingSetupTask WorkItems.
+          "workerHarnessPort": 42, # The TCP port used by the worker to communicate with the Dataflow worker harness.
+          "drain": True or False, # The user has requested drain.
+          "streamingComputationTopology": { # Global topology of the streaming Dataflow job, including all computations and their sharded locations. # The global topology of the streaming Dataflow job.
+            "computations": [ # The computations associated with a streaming Dataflow job.
+              { # All configuration data for a particular Computation.
+                "inputs": [ # The inputs to the computation.
+                  { # Describes a stream of data, either as input to be processed or as output of a streaming Dataflow job.
+                    "streamingStageLocation": { # Identifies the location of a streaming computation stage, for stage-to-stage communication. # The stream is part of another computation within the current streaming Dataflow job.
+                      "streamId": "A String", # Identifies the particular stream within the streaming Dataflow job.
+                    },
+                    "pubsubLocation": { # Identifies a pubsub location to use for transferring data into or out of a streaming Dataflow job. # The stream is a pubsub stream.
+                      "idLabel": "A String", # If set, contains a pubsub label from which to extract record ids. If left empty, record deduplication will be strictly best effort.
+                      "timestampLabel": "A String", # If set, contains a pubsub label from which to extract record timestamps. If left empty, record timestamps will be generated upon arrival.
+                      "dropLateData": True or False, # Indicates whether the pipeline allows late-arriving data.
+                      "topic": "A String", # A pubsub topic, in the form of "pubsub.googleapis.com/topics/
+                          # /"
+                      "trackingSubscription": "A String", # If set, specifies the pubsub subscription that will be used for tracking custom time timestamps for watermark estimation.
+                      "withAttributes": True or False, # If true, then the client has requested to get pubsub attributes.
+                      "subscription": "A String", # A pubsub subscription, in the form of "pubsub.googleapis.com/subscriptions/
+                          # /"
+                    },
+                    "customSourceLocation": { # Identifies the location of a custom souce. # The stream is a custom source.
+                      "stateful": True or False, # Whether this source is stateful.
+                    },
+                    "sideInputLocation": { # Identifies the location of a streaming side input. # The stream is a streaming side input.
+                      "stateFamily": "A String", # Identifies the state family where this side input is stored.
+                      "tag": "A String", # Identifies the particular side input within the streaming Dataflow job.
+                    },
+                  },
+                ],
+                "systemStageName": "A String", # The system stage name.
+                "keyRanges": [ # The key ranges processed by the computation.
+                  { # Location information for a specific key-range of a sharded computation. Currently we only support UTF-8 character splits to simplify encoding into JSON.
+                    "start": "A String", # The start (inclusive) of the key range.
+                    "deliveryEndpoint": "A String", # The physical location of this range assignment to be used for streaming computation cross-worker message delivery.
+                    "end": "A String", # The end (exclusive) of the key range.
+                    "persistentDirectory": "A String", # The location of the persistent state for this range, as a persistent directory in the worker local filesystem.
+                    "dataDisk": "A String", # The name of the data disk where data for this range is stored. This name is local to the Google Cloud Platform project and uniquely identifies the disk within that project, for example "myproject-1014-104817-4c2-harness-0-disk-1".
+                  },
+                ],
+                "computationId": "A String", # The ID of the computation.
+                "outputs": [ # The outputs from the computation.
+                  { # Describes a stream of data, either as input to be processed or as output of a streaming Dataflow job.
+                    "streamingStageLocation": { # Identifies the location of a streaming computation stage, for stage-to-stage communication. # The stream is part of another computation within the current streaming Dataflow job.
+                      "streamId": "A String", # Identifies the particular stream within the streaming Dataflow job.
+                    },
+                    "pubsubLocation": { # Identifies a pubsub location to use for transferring data into or out of a streaming Dataflow job. # The stream is a pubsub stream.
+                      "idLabel": "A String", # If set, contains a pubsub label from which to extract record ids. If left empty, record deduplication will be strictly best effort.
+                      "timestampLabel": "A String", # If set, contains a pubsub label from which to extract record timestamps. If left empty, record timestamps will be generated upon arrival.
+                      "dropLateData": True or False, # Indicates whether the pipeline allows late-arriving data.
+                      "topic": "A String", # A pubsub topic, in the form of "pubsub.googleapis.com/topics/
+                          # /"
+                      "trackingSubscription": "A String", # If set, specifies the pubsub subscription that will be used for tracking custom time timestamps for watermark estimation.
+                      "withAttributes": True or False, # If true, then the client has requested to get pubsub attributes.
+                      "subscription": "A String", # A pubsub subscription, in the form of "pubsub.googleapis.com/subscriptions/
+                          # /"
+                    },
+                    "customSourceLocation": { # Identifies the location of a custom souce. # The stream is a custom source.
+                      "stateful": True or False, # Whether this source is stateful.
+                    },
+                    "sideInputLocation": { # Identifies the location of a streaming side input. # The stream is a streaming side input.
+                      "stateFamily": "A String", # Identifies the state family where this side input is stored.
+                      "tag": "A String", # Identifies the particular side input within the streaming Dataflow job.
+                    },
+                  },
+                ],
+                "userStageName": "A String", # The user stage name.
+                "stateFamilies": [ # The state family values.
+                  { # State family configuration.
+                    "stateFamily": "A String", # The state family value.
+                    "isRead": True or False, # If true, this family corresponds to a read operation.
+                  },
+                ],
+              },
+            ],
+            "dataDiskAssignments": [ # The disks assigned to a streaming Dataflow job.
+              { # Data disk assignment for a given VM instance.
+                "vmInstance": "A String", # VM instance name the data disks mounted to, for example "myproject-1014-104817-4c2-harness-0".
+                "dataDisks": [ # Mounted data disks. The order is important a data disk's 0-based index in this list defines which persistent directory the disk is mounted to, for example the list of { "myproject-1014-104817-4c2-harness-0-disk-0" }, { "myproject-1014-104817-4c2-harness-0-disk-1" }.
+                  "A String",
+                ],
+              },
+            ],
+            "persistentStateVersion": 42, # Version number for persistent state.
+            "userStageToComputationNameMap": { # Maps user stage names to stable computation names.
+              "a_key": "A String",
+            },
+            "forwardingKeyBits": 42, # The size (in bits) of keys that will be assigned to source messages.
+          },
+          "receiveWorkPort": 42, # The TCP port on which the worker should listen for messages from other streaming computation workers.
+        },
+        "streamingConfigTask": { # A task that carries configuration information for streaming computations. # Additional information for StreamingConfigTask WorkItems.
+          "userStepToStateFamilyNameMap": { # Map from user step names to state families.
+            "a_key": "A String",
+          },
+          "streamingComputationConfigs": [ # Set of computation configuration information.
+            { # Configuration information for a single streaming computation.
+              "computationId": "A String", # Unique identifier for this computation.
+              "systemName": "A String", # System defined name for this computation.
+              "stageName": "A String", # Stage name of this computation.
+              "instructions": [ # Instructions that comprise the computation.
+                { # Describes a particular operation comprising a MapTask.
+                  "name": "A String", # User-provided name of this operation.
+                  "read": { # An instruction that reads records. Takes no inputs, produces one output. # Additional information for Read instructions.
+                    "source": { # A source that records can be read and decoded from. # The source to read from.
+                      "codec": { # The codec to use to decode data read from the source.
+                        "a_key": "", # Properties of the object.
+                      },
+                      "baseSpecs": [ # While splitting, sources may specify the produced bundles as differences against another source, in order to save backend-side memory and allow bigger jobs. For details, see SourceSplitRequest. To support this use case, the full set of parameters of the source is logically obtained by taking the latest explicitly specified value of each parameter in the order: base_specs (later items win), spec (overrides anything in base_specs).
+                        {
+                          "a_key": "", # Properties of the object.
+                        },
+                      ],
+                      "spec": { # The source to read from, plus its parameters.
+                        "a_key": "", # Properties of the object.
+                      },
+                      "doesNotNeedSplitting": True or False, # Setting this value to true hints to the framework that the source doesn't need splitting, and using SourceSplitRequest on it would yield SOURCE_SPLIT_OUTCOME_USE_CURRENT. E.g. a file splitter may set this to true when splitting a single file into a set of byte ranges of appropriate size, and set this to false when splitting a filepattern into individual files. However, for efficiency, a file splitter may decide to produce file subranges directly from the filepattern to avoid a splitting round-trip. See SourceSplitRequest for an overview of the splitting process. This field is meaningful only in the Source objects populated by the user (e.g. when filling in a DerivedSource). Source objects supplied by the framework to the user don't have this field populated.
+                      "metadata": { # Metadata about a Source useful for automatically optimizing and tuning the pipeline, etc. # Optionally, metadata for this source can be supplied right away, avoiding a SourceGetMetadataOperation roundtrip (see SourceOperationRequest). This field is meaningful only in the Source objects populated by the user (e.g. when filling in a DerivedSource). Source objects supplied by the framework to the user don't have this field populated.
+                        "infinite": True or False, # Specifies that the size of this source is known to be infinite (this is a streaming source).
+                        "estimatedSizeBytes": "A String", # An estimate of the total size (in bytes) of the data that would be read from this source. This estimate is in terms of external storage size, before any decompression or other processing done by the reader.
+                        "producesSortedKeys": True or False, # Whether this source is known to produce key/value pairs with the (encoded) keys in lexicographically sorted order.
+                      },
+                    },
+                  },
+                  "outputs": [ # Describes the outputs of the instruction.
+                    { # An output of an instruction.
+                      "name": "A String", # The user-provided name of this output.
+                      "onlyCountKeyBytes": True or False, # For system-generated byte and mean byte metrics, certain instructions should only report the key size.
+                      "codec": { # The codec to use to encode data being written via this output.
+                        "a_key": "", # Properties of the object.
+                      },
+                      "systemName": "A String", # System-defined name of this output. Unique across the workflow.
+                      "originalName": "A String", # System-defined name for this output in the original workflow graph. Outputs that do not contribute to an original instruction do not set this.
+                      "onlyCountValueBytes": True or False, # For system-generated byte and mean byte metrics, certain instructions should only report the value size.
+                    },
+                  ],
+                  "partialGroupByKey": { # An instruction that does a partial group-by-key. One input and one output. # Additional information for PartialGroupByKey instructions.
+                    "sideInputs": [ # Zero or more side inputs.
+                      { # Information about a side input of a DoFn or an input of a SeqDoFn.
+                        "sources": [ # The source(s) to read element(s) from to get the value of this side input. If more than one source, then the elements are taken from the sources, in the specified order if order matters. At least one source is required.
+                          { # A source that records can be read and decoded from.
+                            "codec": { # The codec to use to decode data read from the source.
+                              "a_key": "", # Properties of the object.
+                            },
+                            "baseSpecs": [ # While splitting, sources may specify the produced bundles as differences against another source, in order to save backend-side memory and allow bigger jobs. For details, see SourceSplitRequest. To support this use case, the full set of parameters of the source is logically obtained by taking the latest explicitly specified value of each parameter in the order: base_specs (later items win), spec (overrides anything in base_specs).
+                              {
+                                "a_key": "", # Properties of the object.
+                              },
+                            ],
+                            "spec": { # The source to read from, plus its parameters.
+                              "a_key": "", # Properties of the object.
+                            },
+                            "doesNotNeedSplitting": True or False, # Setting this value to true hints to the framework that the source doesn't need splitting, and using SourceSplitRequest on it would yield SOURCE_SPLIT_OUTCOME_USE_CURRENT. E.g. a file splitter may set this to true when splitting a single file into a set of byte ranges of appropriate size, and set this to false when splitting a filepattern into individual files. However, for efficiency, a file splitter may decide to produce file subranges directly from the filepattern to avoid a splitting round-trip. See SourceSplitRequest for an overview of the splitting process. This field is meaningful only in the Source objects populated by the user (e.g. when filling in a DerivedSource). Source objects supplied by the framework to the user don't have this field populated.
+                            "metadata": { # Metadata about a Source useful for automatically optimizing and tuning the pipeline, etc. # Optionally, metadata for this source can be supplied right away, avoiding a SourceGetMetadataOperation roundtrip (see SourceOperationRequest). This field is meaningful only in the Source objects populated by the user (e.g. when filling in a DerivedSource). Source objects supplied by the framework to the user don't have this field populated.
+                              "infinite": True or False, # Specifies that the size of this source is known to be infinite (this is a streaming source).
+                              "estimatedSizeBytes": "A String", # An estimate of the total size (in bytes) of the data that would be read from this source. This estimate is in terms of external storage size, before any decompression or other processing done by the reader.
+                              "producesSortedKeys": True or False, # Whether this source is known to produce key/value pairs with the (encoded) keys in lexicographically sorted order.
+                            },
+                          },
+                        ],
+                        "kind": { # How to interpret the source element(s) as a side input value.
+                          "a_key": "", # Properties of the object.
+                        },
+                        "tag": "A String", # The id of the tag the user code will access this side input by; this should correspond to the tag of some MultiOutputInfo.
+                      },
+                    ],
+                    "originalCombineValuesInputStoreName": "A String", # If this instruction includes a combining function this is the name of the intermediate store between the GBK and the CombineValues.
+                    "originalCombineValuesStepName": "A String", # If this instruction includes a combining function, this is the name of the CombineValues instruction lifted into this instruction.
+                    "valueCombiningFn": { # The value combining function to invoke.
+                      "a_key": "", # Properties of the object.
+                    },
+                    "input": { # An input of an instruction, as a reference to an output of a producer instruction. # Describes the input to the partial group-by-key instruction.
+                      "outputNum": 42, # The output index (origin zero) within the producer.
+                      "producerInstructionIndex": 42, # The index (origin zero) of the parallel instruction that produces the output to be consumed by this input. This index is relative to the list of instructions in this input's instruction's containing MapTask.
+                    },
+                    "inputElementCodec": { # The codec to use for interpreting an element in the input PTable.
+                      "a_key": "", # Properties of the object.
+                    },
+                  },
+                  "write": { # An instruction that writes records. Takes one input, produces no outputs. # Additional information for Write instructions.
+                    "input": { # An input of an instruction, as a reference to an output of a producer instruction. # The input.
+                      "outputNum": 42, # The output index (origin zero) within the producer.
+                      "producerInstructionIndex": 42, # The index (origin zero) of the parallel instruction that produces the output to be consumed by this input. This index is relative to the list of instructions in this input's instruction's containing MapTask.
+                    },
+                    "sink": { # A sink that records can be encoded and written to. # The sink to write to.
+                      "codec": { # The codec to use to encode data written to the sink.
+                        "a_key": "", # Properties of the object.
+                      },
+                      "spec": { # The sink to write to, plus its parameters.
+                        "a_key": "", # Properties of the object.
+                      },
+                    },
+                  },
+                  "systemName": "A String", # System-defined name of this operation. Unique across the workflow.
+                  "flatten": { # An instruction that copies its inputs (zero or more) to its (single) output. # Additional information for Flatten instructions.
+                    "inputs": [ # Describes the inputs to the flatten instruction.
+                      { # An input of an instruction, as a reference to an output of a producer instruction.
+                        "outputNum": 42, # The output index (origin zero) within the producer.
+                        "producerInstructionIndex": 42, # The index (origin zero) of the parallel instruction that produces the output to be consumed by this input. This index is relative to the list of instructions in this input's instruction's containing MapTask.
+                      },
+                    ],
+                  },
+                  "originalName": "A String", # System-defined name for the operation in the original workflow graph.
+                  "parDo": { # An instruction that does a ParDo operation. Takes one main input and zero or more side inputs, and produces zero or more outputs. Runs user code. # Additional information for ParDo instructions.
+                    "sideInputs": [ # Zero or more side inputs.
+                      { # Information about a side input of a DoFn or an input of a SeqDoFn.
+                        "sources": [ # The source(s) to read element(s) from to get the value of this side input. If more than one source, then the elements are taken from the sources, in the specified order if order matters. At least one source is required.
+                          { # A source that records can be read and decoded from.
+                            "codec": { # The codec to use to decode data read from the source.
+                              "a_key": "", # Properties of the object.
+                            },
+                            "baseSpecs": [ # While splitting, sources may specify the produced bundles as differences against another source, in order to save backend-side memory and allow bigger jobs. For details, see SourceSplitRequest. To support this use case, the full set of parameters of the source is logically obtained by taking the latest explicitly specified value of each parameter in the order: base_specs (later items win), spec (overrides anything in base_specs).
+                              {
+                                "a_key": "", # Properties of the object.
+                              },
+                            ],
+                            "spec": { # The source to read from, plus its parameters.
+                              "a_key": "", # Properties of the object.
+                            },
+                            "doesNotNeedSplitting": True or False, # Setting this value to true hints to the framework that the source doesn't need splitting, and using SourceSplitRequest on it would yield SOURCE_SPLIT_OUTCOME_USE_CURRENT. E.g. a file splitter may set this to true when splitting a single file into a set of byte ranges of appropriate size, and set this to false when splitting a filepattern into individual files. However, for efficiency, a file splitter may decide to produce file subranges directly from the filepattern to avoid a splitting round-trip. See SourceSplitRequest for an overview of the splitting process. This field is meaningful only in the Source objects populated by the user (e.g. when filling in a DerivedSource). Source objects supplied by the framework to the user don't have this field populated.
+                            "metadata": { # Metadata about a Source useful for automatically optimizing and tuning the pipeline, etc. # Optionally, metadata for this source can be supplied right away, avoiding a SourceGetMetadataOperation roundtrip (see SourceOperationRequest). This field is meaningful only in the Source objects populated by the user (e.g. when filling in a DerivedSource). Source objects supplied by the framework to the user don't have this field populated.
+                              "infinite": True or False, # Specifies that the size of this source is known to be infinite (this is a streaming source).
+                              "estimatedSizeBytes": "A String", # An estimate of the total size (in bytes) of the data that would be read from this source. This estimate is in terms of external storage size, before any decompression or other processing done by the reader.
+                              "producesSortedKeys": True or False, # Whether this source is known to produce key/value pairs with the (encoded) keys in lexicographically sorted order.
+                            },
+                          },
+                        ],
+                        "kind": { # How to interpret the source element(s) as a side input value.
+                          "a_key": "", # Properties of the object.
+                        },
+                        "tag": "A String", # The id of the tag the user code will access this side input by; this should correspond to the tag of some MultiOutputInfo.
+                      },
+                    ],
+                    "input": { # An input of an instruction, as a reference to an output of a producer instruction. # The input.
+                      "outputNum": 42, # The output index (origin zero) within the producer.
+                      "producerInstructionIndex": 42, # The index (origin zero) of the parallel instruction that produces the output to be consumed by this input. This index is relative to the list of instructions in this input's instruction's containing MapTask.
+                    },
+                    "multiOutputInfos": [ # Information about each of the outputs, if user_fn is a MultiDoFn.
+                      { # Information about an output of a multi-output DoFn.
+                        "tag": "A String", # The id of the tag the user code will emit to this output by; this should correspond to the tag of some SideInputInfo.
+                      },
+                    ],
+                    "numOutputs": 42, # The number of outputs.
+                    "userFn": { # The user function to invoke.
+                      "a_key": "", # Properties of the object.
+                    },
+                  },
+                },
+              ],
+            },
+          ],
+        },
+        "packages": [ # Any required packages that need to be fetched in order to execute this WorkItem.
+          { # Packages that need to be installed in order for a worker to run the steps of the Dataflow job which will be assigned to its worker pool. This is the mechanism by which the SDK causes code to be loaded onto the workers. For example, the Dataflow Java SDK might use this to install jars containing the user's code and all of the various dependencies (libraries, data files, etc) required in order for that code to run.
+            "name": "A String", # The name of the package.
+            "location": "A String", # The resource to read the package from. The supported resource type is: Google Cloud Storage: storage.googleapis.com/{bucket} bucket.storage.googleapis.com/
+          },
+        ],
+        "shellTask": { # A task which consists of a shell command for the worker to execute. # Additional information for ShellTask WorkItems.
+          "command": "A String", # The shell command to run.
+          "exitCode": 42, # Exit code for the task.
+        },
+        "id": "A String", # Identifies this WorkItem.
+      },
+    ],
+  }</pre>
+</div>
+
+<div class="method">
+    <code class="details" id="reportStatus">reportStatus(projectId, location, jobId, body, x__xgafv=None)</code>
+  <pre>Reports the status of dataflow WorkItems leased by a worker.
+
+Args:
+  projectId: string, The project which owns the WorkItem's job. (required)
+  location: string, The location which contains the WorkItem's job. (required)
+  jobId: string, The job which the WorkItem is part of. (required)
+  body: object, The request body. (required)
+    The object takes the form of:
+
+{ # Request to report the status of WorkItems.
+    "workerId": "A String", # The ID of the worker reporting the WorkItem status. If this does not match the ID of the worker which the Dataflow service believes currently has the lease on the WorkItem, the report will be dropped (with an error response).
+    "currentWorkerTime": "A String", # The current timestamp at the worker.
+    "workItemStatuses": [ # The order is unimportant, except that the order of the WorkItemServiceState messages in the ReportWorkItemStatusResponse corresponds to the order of WorkItemStatus messages here.
+      { # Conveys a worker's progress through the work described by a WorkItem.
+        "reportIndex": "A String", # The report index. When a WorkItem is leased, the lease will contain an initial report index. When a WorkItem's status is reported to the system, the report should be sent with that report index, and the response will contain the index the worker should use for the next report. Reports received with unexpected index values will be rejected by the service. In order to preserve idempotency, the worker should not alter the contents of a report, even if the worker must submit the same report multiple times before getting back a response. The worker should not submit a subsequent report until the response for the previous report had been received from the service.
+        "errors": [ # Specifies errors which occurred during processing. If errors are provided, and completed = true, then the WorkItem is considered to have failed.
+          { # The `Status` type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by [gRPC](https://github.com/grpc). The error model is designed to be: - Simple to use and understand for most users - Flexible enough to meet unexpected needs # Overview The `Status` message contains three pieces of data: error code, error message, and error details. The error code should be an enum value of google.rpc.Code, but it may accept additional error codes if needed. The error message should be a developer-facing English message that helps developers *understand* and *resolve* the error. If a localized user-facing error message is needed, put the localized message in the error details or localize it in the client. The optional error details may contain arbitrary information about the error. There is a predefined set of error detail types in the package `google.rpc` which can be used for common error conditions. # Language mapping The `Status` message is the logical representation of the error model, but it is not necessarily the actual wire format. When the `Status` message is exposed in different client libraries and different wire protocols, it can be mapped differently. For example, it will likely be mapped to some exceptions in Java, but more likely mapped to some error codes in C. # Other uses The error model and the `Status` message can be used in a variety of environments, either with or without APIs, to provide a consistent developer experience across different environments. Example uses of this error model include: - Partial errors. If a service needs to return partial errors to the client, it may embed the `Status` in the normal response to indicate the partial errors. - Workflow errors. A typical workflow has multiple steps. Each step may have a `Status` message for error reporting purpose. - Batch operations. If a client uses batch request and batch response, the `Status` message should be used directly inside batch response, one for each error sub-response. - Asynchronous operations. If an API call embeds asynchronous operation results in its response, the status of those operations should be represented directly using the `Status` message. - Logging. If some API errors are stored in logs, the message `Status` could be used directly after any stripping needed for security/privacy reasons.
+            "message": "A String", # A developer-facing error message, which should be in English. Any user-facing error message should be localized and sent in the google.rpc.Status.details field, or localized by the client.
+            "code": 42, # The status code, which should be an enum value of google.rpc.Code.
+            "details": [ # A list of messages that carry the error details. There will be a common set of message types for APIs to use.
+              {
+                "a_key": "", # Properties of the object. Contains field @type with type URL.
+              },
+            ],
+          },
+        ],
+        "sourceOperationResponse": { # The result of a SourceOperationRequest, specified in ReportWorkItemStatusRequest.source_operation when the work item is completed. # If the work item represented a SourceOperationRequest, and the work is completed, contains the result of the operation.
+          "getMetadata": { # The result of a SourceGetMetadataOperation. # A response to a request to get metadata about a source.
+            "metadata": { # Metadata about a Source useful for automatically optimizing and tuning the pipeline, etc. # The computed metadata.
+              "infinite": True or False, # Specifies that the size of this source is known to be infinite (this is a streaming source).
+              "estimatedSizeBytes": "A String", # An estimate of the total size (in bytes) of the data that would be read from this source. This estimate is in terms of external storage size, before any decompression or other processing done by the reader.
+              "producesSortedKeys": True or False, # Whether this source is known to produce key/value pairs with the (encoded) keys in lexicographically sorted order.
+            },
+          },
+          "split": { # The response to a SourceSplitRequest. # A response to a request to split a source.
+            "outcome": "A String", # Indicates whether splitting happened and produced a list of bundles. If this is USE_CURRENT_SOURCE_AS_IS, the current source should be processed "as is" without splitting. "bundles" is ignored in this case. If this is SPLITTING_HAPPENED, then "bundles" contains a list of bundles into which the source was split.
+            "bundles": [ # If outcome is SPLITTING_HAPPENED, then this is a list of bundles into which the source was split. Otherwise this field is ignored. This list can be empty, which means the source represents an empty input.
+              { # Specification of one of the bundles produced as a result of splitting a Source (e.g. when executing a SourceSplitRequest, or when splitting an active task using WorkItemStatus.dynamic_source_split), relative to the source being split.
+                "derivationMode": "A String", # What source to base the produced source on (if any).
+                "source": { # A source that records can be read and decoded from. # Specification of the source.
+                  "codec": { # The codec to use to decode data read from the source.
+                    "a_key": "", # Properties of the object.
+                  },
+                  "baseSpecs": [ # While splitting, sources may specify the produced bundles as differences against another source, in order to save backend-side memory and allow bigger jobs. For details, see SourceSplitRequest. To support this use case, the full set of parameters of the source is logically obtained by taking the latest explicitly specified value of each parameter in the order: base_specs (later items win), spec (overrides anything in base_specs).
+                    {
+                      "a_key": "", # Properties of the object.
+                    },
+                  ],
+                  "spec": { # The source to read from, plus its parameters.
+                    "a_key": "", # Properties of the object.
+                  },
+                  "doesNotNeedSplitting": True or False, # Setting this value to true hints to the framework that the source doesn't need splitting, and using SourceSplitRequest on it would yield SOURCE_SPLIT_OUTCOME_USE_CURRENT. E.g. a file splitter may set this to true when splitting a single file into a set of byte ranges of appropriate size, and set this to false when splitting a filepattern into individual files. However, for efficiency, a file splitter may decide to produce file subranges directly from the filepattern to avoid a splitting round-trip. See SourceSplitRequest for an overview of the splitting process. This field is meaningful only in the Source objects populated by the user (e.g. when filling in a DerivedSource). Source objects supplied by the framework to the user don't have this field populated.
+                  "metadata": { # Metadata about a Source useful for automatically optimizing and tuning the pipeline, etc. # Optionally, metadata for this source can be supplied right away, avoiding a SourceGetMetadataOperation roundtrip (see SourceOperationRequest). This field is meaningful only in the Source objects populated by the user (e.g. when filling in a DerivedSource). Source objects supplied by the framework to the user don't have this field populated.
+                    "infinite": True or False, # Specifies that the size of this source is known to be infinite (this is a streaming source).
+                    "estimatedSizeBytes": "A String", # An estimate of the total size (in bytes) of the data that would be read from this source. This estimate is in terms of external storage size, before any decompression or other processing done by the reader.
+                    "producesSortedKeys": True or False, # Whether this source is known to produce key/value pairs with the (encoded) keys in lexicographically sorted order.
+                  },
+                },
+              },
+            ],
+            "shards": [ # DEPRECATED in favor of bundles.
+              { # DEPRECATED in favor of DerivedSource.
+                "derivationMode": "A String", # DEPRECATED
+                "source": { # A source that records can be read and decoded from. # DEPRECATED
+                  "codec": { # The codec to use to decode data read from the source.
+                    "a_key": "", # Properties of the object.
+                  },
+                  "baseSpecs": [ # While splitting, sources may specify the produced bundles as differences against another source, in order to save backend-side memory and allow bigger jobs. For details, see SourceSplitRequest. To support this use case, the full set of parameters of the source is logically obtained by taking the latest explicitly specified value of each parameter in the order: base_specs (later items win), spec (overrides anything in base_specs).
+                    {
+                      "a_key": "", # Properties of the object.
+                    },
+                  ],
+                  "spec": { # The source to read from, plus its parameters.
+                    "a_key": "", # Properties of the object.
+                  },
+                  "doesNotNeedSplitting": True or False, # Setting this value to true hints to the framework that the source doesn't need splitting, and using SourceSplitRequest on it would yield SOURCE_SPLIT_OUTCOME_USE_CURRENT. E.g. a file splitter may set this to true when splitting a single file into a set of byte ranges of appropriate size, and set this to false when splitting a filepattern into individual files. However, for efficiency, a file splitter may decide to produce file subranges directly from the filepattern to avoid a splitting round-trip. See SourceSplitRequest for an overview of the splitting process. This field is meaningful only in the Source objects populated by the user (e.g. when filling in a DerivedSource). Source objects supplied by the framework to the user don't have this field populated.
+                  "metadata": { # Metadata about a Source useful for automatically optimizing and tuning the pipeline, etc. # Optionally, metadata for this source can be supplied right away, avoiding a SourceGetMetadataOperation roundtrip (see SourceOperationRequest). This field is meaningful only in the Source objects populated by the user (e.g. when filling in a DerivedSource). Source objects supplied by the framework to the user don't have this field populated.
+                    "infinite": True or False, # Specifies that the size of this source is known to be infinite (this is a streaming source).
+                    "estimatedSizeBytes": "A String", # An estimate of the total size (in bytes) of the data that would be read from this source. This estimate is in terms of external storage size, before any decompression or other processing done by the reader.
+                    "producesSortedKeys": True or False, # Whether this source is known to produce key/value pairs with the (encoded) keys in lexicographically sorted order.
+                  },
+                },
+              },
+            ],
+          },
+        },
+        "stopPosition": { # Position defines a position within a collection of data. The value can be either the end position, a key (used with ordered collections), a byte offset, or a record index. # A worker may split an active map task in two parts, "primary" and "residual", continuing to process the primary part and returning the residual part into the pool of available work. This event is called a "dynamic split" and is critical to the dynamic work rebalancing feature. The two obtained sub-tasks are called "parts" of the split. The parts, if concatenated, must represent the same input as would be read by the current task if the split did not happen. The exact way in which the original task is decomposed into the two parts is specified either as a position demarcating them (stop_position), or explicitly as two DerivedSources, if this task consumes a user-defined source type (dynamic_source_split). The "current" task is adjusted as a result of the split: after a task with range [A, B) sends a stop_position update at C, its range is considered to be [A, C), e.g.: * Progress should be interpreted relative to the new range, e.g. "75% completed" means "75% of [A, C) completed" * The worker should interpret proposed_stop_position relative to the new range, e.g. "split at 68%" should be interpreted as "split at 68% of [A, C)". * If the worker chooses to split again using stop_position, only stop_positions in [A, C) will be accepted. * Etc. dynamic_source_split has similar semantics: e.g., if a task with source S splits using dynamic_source_split into {P, R} (where P and R must be together equivalent to S), then subsequent progress and proposed_stop_position should be interpreted relative to P, and in a potential subsequent dynamic_source_split into {P', R'}, P' and R' must be together equivalent to P, etc.
+          "end": True or False, # Position is past all other positions. Also useful for the end position of an unbounded range.
+          "recordIndex": "A String", # Position is a record index.
+          "byteOffset": "A String", # Position is a byte offset.
+          "key": "A String", # Position is a string key, ordered lexicographically.
+          "concatPosition": { # A position that encapsulates an inner position and an index for the inner position. A ConcatPosition can be used by a reader of a source that encapsulates a set of other sources. # CloudPosition is a concat position.
+            "index": 42, # Index of the inner source.
+            "position": # Object with schema name: Position # Position within the inner source.
+          },
+          "shufflePosition": "A String", # CloudPosition is a base64 encoded BatchShufflePosition (with FIXED sharding).
+        },
+        "sourceFork": { # DEPRECATED in favor of DynamicSourceSplit. # DEPRECATED in favor of dynamic_source_split.
+          "residualSource": { # Specification of one of the bundles produced as a result of splitting a Source (e.g. when executing a SourceSplitRequest, or when splitting an active task using WorkItemStatus.dynamic_source_split), relative to the source being split. # DEPRECATED
+            "derivationMode": "A String", # What source to base the produced source on (if any).
+            "source": { # A source that records can be read and decoded from. # Specification of the source.
+              "codec": { # The codec to use to decode data read from the source.
+                "a_key": "", # Properties of the object.
+              },
+              "baseSpecs": [ # While splitting, sources may specify the produced bundles as differences against another source, in order to save backend-side memory and allow bigger jobs. For details, see SourceSplitRequest. To support this use case, the full set of parameters of the source is logically obtained by taking the latest explicitly specified value of each parameter in the order: base_specs (later items win), spec (overrides anything in base_specs).
+                {
+                  "a_key": "", # Properties of the object.
+                },
+              ],
+              "spec": { # The source to read from, plus its parameters.
+                "a_key": "", # Properties of the object.
+              },
+              "doesNotNeedSplitting": True or False, # Setting this value to true hints to the framework that the source doesn't need splitting, and using SourceSplitRequest on it would yield SOURCE_SPLIT_OUTCOME_USE_CURRENT. E.g. a file splitter may set this to true when splitting a single file into a set of byte ranges of appropriate size, and set this to false when splitting a filepattern into individual files. However, for efficiency, a file splitter may decide to produce file subranges directly from the filepattern to avoid a splitting round-trip. See SourceSplitRequest for an overview of the splitting process. This field is meaningful only in the Source objects populated by the user (e.g. when filling in a DerivedSource). Source objects supplied by the framework to the user don't have this field populated.
+              "metadata": { # Metadata about a Source useful for automatically optimizing and tuning the pipeline, etc. # Optionally, metadata for this source can be supplied right away, avoiding a SourceGetMetadataOperation roundtrip (see SourceOperationRequest). This field is meaningful only in the Source objects populated by the user (e.g. when filling in a DerivedSource). Source objects supplied by the framework to the user don't have this field populated.
+                "infinite": True or False, # Specifies that the size of this source is known to be infinite (this is a streaming source).
+                "estimatedSizeBytes": "A String", # An estimate of the total size (in bytes) of the data that would be read from this source. This estimate is in terms of external storage size, before any decompression or other processing done by the reader.
+                "producesSortedKeys": True or False, # Whether this source is known to produce key/value pairs with the (encoded) keys in lexicographically sorted order.
+              },
+            },
+          },
+          "primarySource": { # Specification of one of the bundles produced as a result of splitting a Source (e.g. when executing a SourceSplitRequest, or when splitting an active task using WorkItemStatus.dynamic_source_split), relative to the source being split. # DEPRECATED
+            "derivationMode": "A String", # What source to base the produced source on (if any).
+            "source": { # A source that records can be read and decoded from. # Specification of the source.
+              "codec": { # The codec to use to decode data read from the source.
+                "a_key": "", # Properties of the object.
+              },
+              "baseSpecs": [ # While splitting, sources may specify the produced bundles as differences against another source, in order to save backend-side memory and allow bigger jobs. For details, see SourceSplitRequest. To support this use case, the full set of parameters of the source is logically obtained by taking the latest explicitly specified value of each parameter in the order: base_specs (later items win), spec (overrides anything in base_specs).
+                {
+                  "a_key": "", # Properties of the object.
+                },
+              ],
+              "spec": { # The source to read from, plus its parameters.
+                "a_key": "", # Properties of the object.
+              },
+              "doesNotNeedSplitting": True or False, # Setting this value to true hints to the framework that the source doesn't need splitting, and using SourceSplitRequest on it would yield SOURCE_SPLIT_OUTCOME_USE_CURRENT. E.g. a file splitter may set this to true when splitting a single file into a set of byte ranges of appropriate size, and set this to false when splitting a filepattern into individual files. However, for efficiency, a file splitter may decide to produce file subranges directly from the filepattern to avoid a splitting round-trip. See SourceSplitRequest for an overview of the splitting process. This field is meaningful only in the Source objects populated by the user (e.g. when filling in a DerivedSource). Source objects supplied by the framework to the user don't have this field populated.
+              "metadata": { # Metadata about a Source useful for automatically optimizing and tuning the pipeline, etc. # Optionally, metadata for this source can be supplied right away, avoiding a SourceGetMetadataOperation roundtrip (see SourceOperationRequest). This field is meaningful only in the Source objects populated by the user (e.g. when filling in a DerivedSource). Source objects supplied by the framework to the user don't have this field populated.
+                "infinite": True or False, # Specifies that the size of this source is known to be infinite (this is a streaming source).
+                "estimatedSizeBytes": "A String", # An estimate of the total size (in bytes) of the data that would be read from this source. This estimate is in terms of external storage size, before any decompression or other processing done by the reader.
+                "producesSortedKeys": True or False, # Whether this source is known to produce key/value pairs with the (encoded) keys in lexicographically sorted order.
+              },
+            },
+          },
+          "primary": { # DEPRECATED in favor of DerivedSource. # DEPRECATED
+            "derivationMode": "A String", # DEPRECATED
+            "source": { # A source that records can be read and decoded from. # DEPRECATED
+              "codec": { # The codec to use to decode data read from the source.
+                "a_key": "", # Properties of the object.
+              },
+              "baseSpecs": [ # While splitting, sources may specify the produced bundles as differences against another source, in order to save backend-side memory and allow bigger jobs. For details, see SourceSplitRequest. To support this use case, the full set of parameters of the source is logically obtained by taking the latest explicitly specified value of each parameter in the order: base_specs (later items win), spec (overrides anything in base_specs).
+                {
+                  "a_key": "", # Properties of the object.
+                },
+              ],
+              "spec": { # The source to read from, plus its parameters.
+                "a_key": "", # Properties of the object.
+              },
+              "doesNotNeedSplitting": True or False, # Setting this value to true hints to the framework that the source doesn't need splitting, and using SourceSplitRequest on it would yield SOURCE_SPLIT_OUTCOME_USE_CURRENT. E.g. a file splitter may set this to true when splitting a single file into a set of byte ranges of appropriate size, and set this to false when splitting a filepattern into individual files. However, for efficiency, a file splitter may decide to produce file subranges directly from the filepattern to avoid a splitting round-trip. See SourceSplitRequest for an overview of the splitting process. This field is meaningful only in the Source objects populated by the user (e.g. when filling in a DerivedSource). Source objects supplied by the framework to the user don't have this field populated.
+              "metadata": { # Metadata about a Source useful for automatically optimizing and tuning the pipeline, etc. # Optionally, metadata for this source can be supplied right away, avoiding a SourceGetMetadataOperation roundtrip (see SourceOperationRequest). This field is meaningful only in the Source objects populated by the user (e.g. when filling in a DerivedSource). Source objects supplied by the framework to the user don't have this field populated.
+                "infinite": True or False, # Specifies that the size of this source is known to be infinite (this is a streaming source).
+                "estimatedSizeBytes": "A String", # An estimate of the total size (in bytes) of the data that would be read from this source. This estimate is in terms of external storage size, before any decompression or other processing done by the reader.
+                "producesSortedKeys": True or False, # Whether this source is known to produce key/value pairs with the (encoded) keys in lexicographically sorted order.
+              },
+            },
+          },
+          "residual": { # DEPRECATED in favor of DerivedSource. # DEPRECATED
+            "derivationMode": "A String", # DEPRECATED
+            "source": { # A source that records can be read and decoded from. # DEPRECATED
+              "codec": { # The codec to use to decode data read from the source.
+                "a_key": "", # Properties of the object.
+              },
+              "baseSpecs": [ # While splitting, sources may specify the produced bundles as differences against another source, in order to save backend-side memory and allow bigger jobs. For details, see SourceSplitRequest. To support this use case, the full set of parameters of the source is logically obtained by taking the latest explicitly specified value of each parameter in the order: base_specs (later items win), spec (overrides anything in base_specs).
+                {
+                  "a_key": "", # Properties of the object.
+                },
+              ],
+              "spec": { # The source to read from, plus its parameters.
+                "a_key": "", # Properties of the object.
+              },
+              "doesNotNeedSplitting": True or False, # Setting this value to true hints to the framework that the source doesn't need splitting, and using SourceSplitRequest on it would yield SOURCE_SPLIT_OUTCOME_USE_CURRENT. E.g. a file splitter may set this to true when splitting a single file into a set of byte ranges of appropriate size, and set this to false when splitting a filepattern into individual files. However, for efficiency, a file splitter may decide to produce file subranges directly from the filepattern to avoid a splitting round-trip. See SourceSplitRequest for an overview of the splitting process. This field is meaningful only in the Source objects populated by the user (e.g. when filling in a DerivedSource). Source objects supplied by the framework to the user don't have this field populated.
+              "metadata": { # Metadata about a Source useful for automatically optimizing and tuning the pipeline, etc. # Optionally, metadata for this source can be supplied right away, avoiding a SourceGetMetadataOperation roundtrip (see SourceOperationRequest). This field is meaningful only in the Source objects populated by the user (e.g. when filling in a DerivedSource). Source objects supplied by the framework to the user don't have this field populated.
+                "infinite": True or False, # Specifies that the size of this source is known to be infinite (this is a streaming source).
+                "estimatedSizeBytes": "A String", # An estimate of the total size (in bytes) of the data that would be read from this source. This estimate is in terms of external storage size, before any decompression or other processing done by the reader.
+                "producesSortedKeys": True or False, # Whether this source is known to produce key/value pairs with the (encoded) keys in lexicographically sorted order.
+              },
+            },
+          },
+        },
+        "requestedLeaseDuration": "A String", # Amount of time the worker requests for its lease.
+        "completed": True or False, # True if the WorkItem was completed (successfully or unsuccessfully).
+        "workItemId": "A String", # Identifies the WorkItem.
+        "dynamicSourceSplit": { # When a task splits using WorkItemStatus.dynamic_source_split, this message describes the two parts of the split relative to the description of the current task's input. # See documentation of stop_position.
+          "primary": { # Specification of one of the bundles produced as a result of splitting a Source (e.g. when executing a SourceSplitRequest, or when splitting an active task using WorkItemStatus.dynamic_source_split), relative to the source being split. # Primary part (continued to be processed by worker). Specified relative to the previously-current source. Becomes current.
+            "derivationMode": "A String", # What source to base the produced source on (if any).
+            "source": { # A source that records can be read and decoded from. # Specification of the source.
+              "codec": { # The codec to use to decode data read from the source.
+                "a_key": "", # Properties of the object.
+              },
+              "baseSpecs": [ # While splitting, sources may specify the produced bundles as differences against another source, in order to save backend-side memory and allow bigger jobs. For details, see SourceSplitRequest. To support this use case, the full set of parameters of the source is logically obtained by taking the latest explicitly specified value of each parameter in the order: base_specs (later items win), spec (overrides anything in base_specs).
+                {
+                  "a_key": "", # Properties of the object.
+                },
+              ],
+              "spec": { # The source to read from, plus its parameters.
+                "a_key": "", # Properties of the object.
+              },
+              "doesNotNeedSplitting": True or False, # Setting this value to true hints to the framework that the source doesn't need splitting, and using SourceSplitRequest on it would yield SOURCE_SPLIT_OUTCOME_USE_CURRENT. E.g. a file splitter may set this to true when splitting a single file into a set of byte ranges of appropriate size, and set this to false when splitting a filepattern into individual files. However, for efficiency, a file splitter may decide to produce file subranges directly from the filepattern to avoid a splitting round-trip. See SourceSplitRequest for an overview of the splitting process. This field is meaningful only in the Source objects populated by the user (e.g. when filling in a DerivedSource). Source objects supplied by the framework to the user don't have this field populated.
+              "metadata": { # Metadata about a Source useful for automatically optimizing and tuning the pipeline, etc. # Optionally, metadata for this source can be supplied right away, avoiding a SourceGetMetadataOperation roundtrip (see SourceOperationRequest). This field is meaningful only in the Source objects populated by the user (e.g. when filling in a DerivedSource). Source objects supplied by the framework to the user don't have this field populated.
+                "infinite": True or False, # Specifies that the size of this source is known to be infinite (this is a streaming source).
+                "estimatedSizeBytes": "A String", # An estimate of the total size (in bytes) of the data that would be read from this source. This estimate is in terms of external storage size, before any decompression or other processing done by the reader.
+                "producesSortedKeys": True or False, # Whether this source is known to produce key/value pairs with the (encoded) keys in lexicographically sorted order.
+              },
+            },
+          },
+          "residual": { # Specification of one of the bundles produced as a result of splitting a Source (e.g. when executing a SourceSplitRequest, or when splitting an active task using WorkItemStatus.dynamic_source_split), relative to the source being split. # Residual part (returned to the pool of work). Specified relative to the previously-current source.
+            "derivationMode": "A String", # What source to base the produced source on (if any).
+            "source": { # A source that records can be read and decoded from. # Specification of the source.
+              "codec": { # The codec to use to decode data read from the source.
+                "a_key": "", # Properties of the object.
+              },
+              "baseSpecs": [ # While splitting, sources may specify the produced bundles as differences against another source, in order to save backend-side memory and allow bigger jobs. For details, see SourceSplitRequest. To support this use case, the full set of parameters of the source is logically obtained by taking the latest explicitly specified value of each parameter in the order: base_specs (later items win), spec (overrides anything in base_specs).
+                {
+                  "a_key": "", # Properties of the object.
+                },
+              ],
+              "spec": { # The source to read from, plus its parameters.
+                "a_key": "", # Properties of the object.
+              },
+              "doesNotNeedSplitting": True or False, # Setting this value to true hints to the framework that the source doesn't need splitting, and using SourceSplitRequest on it would yield SOURCE_SPLIT_OUTCOME_USE_CURRENT. E.g. a file splitter may set this to true when splitting a single file into a set of byte ranges of appropriate size, and set this to false when splitting a filepattern into individual files. However, for efficiency, a file splitter may decide to produce file subranges directly from the filepattern to avoid a splitting round-trip. See SourceSplitRequest for an overview of the splitting process. This field is meaningful only in the Source objects populated by the user (e.g. when filling in a DerivedSource). Source objects supplied by the framework to the user don't have this field populated.
+              "metadata": { # Metadata about a Source useful for automatically optimizing and tuning the pipeline, etc. # Optionally, metadata for this source can be supplied right away, avoiding a SourceGetMetadataOperation roundtrip (see SourceOperationRequest). This field is meaningful only in the Source objects populated by the user (e.g. when filling in a DerivedSource). Source objects supplied by the framework to the user don't have this field populated.
+                "infinite": True or False, # Specifies that the size of this source is known to be infinite (this is a streaming source).
+                "estimatedSizeBytes": "A String", # An estimate of the total size (in bytes) of the data that would be read from this source. This estimate is in terms of external storage size, before any decompression or other processing done by the reader.
+                "producesSortedKeys": True or False, # Whether this source is known to produce key/value pairs with the (encoded) keys in lexicographically sorted order.
+              },
+            },
+          },
+        },
+        "counterUpdates": [ # Worker output counters for this WorkItem.
+          { # An update to a Counter sent from a worker.
+            "floatingPointList": { # A metric value representing a list of floating point numbers. # List of floating point numbers, for Set.
+              "elements": [ # Elements of the list.
+                3.14,
+              ],
+            },
+            "floatingPoint": 3.14, # Floating point value for Sum, Max, Min.
+            "integerMean": { # A representation of an integer mean metric contribution. # Integer mean aggregation value for Mean.
+              "count": { # A representation of an int64, n, that is immune to precision loss when encoded in JSON. # The number of values being aggregated.
+                "lowBits": 42, # The low order bits: n & 0xffffffff.
+                "highBits": 42, # The high order bits, including the sign: n >> 32.
+              },
+              "sum": { # A representation of an int64, n, that is immune to precision loss when encoded in JSON. # The sum of all values being aggregated.
+                "lowBits": 42, # The low order bits: n & 0xffffffff.
+                "highBits": 42, # The high order bits, including the sign: n >> 32.
+              },
+            },
+            "integerList": { # A metric value representing a list of integers. # List of integers, for Set.
+              "elements": [ # Elements of the list.
+                { # A representation of an int64, n, that is immune to precision loss when encoded in JSON.
+                  "lowBits": 42, # The low order bits: n & 0xffffffff.
+                  "highBits": 42, # The high order bits, including the sign: n >> 32.
+                },
+              ],
+            },
+            "cumulative": True or False, # True if this counter is reported as the total cumulative aggregate value accumulated since the worker started working on this WorkItem. By default this is false, indicating that this counter is reported as a delta.
+            "floatingPointMean": { # A representation of a floating point mean metric contribution. # Floating point mean aggregation value for Mean.
+              "count": { # A representation of an int64, n, that is immune to precision loss when encoded in JSON. # The number of values being aggregated.
+                "lowBits": 42, # The low order bits: n & 0xffffffff.
+                "highBits": 42, # The high order bits, including the sign: n >> 32.
+              },
+              "sum": 3.14, # The sum of all values being aggregated.
+            },
+            "shortId": "A String", # The service-generated short identifier for this counter. The short_id -> (name, metadata) mapping is constant for the lifetime of a job.
+            "boolean": True or False, # Boolean value for And, Or.
+            "structuredNameAndMetadata": { # A single message which encapsulates structured name and metadata for a given counter. # Counter structured name and metadata.
+              "name": { # Identifies a counter within a per-job namespace. Counters whose structured names are the same get merged into a single value for the job. # Structured name of the counter.
+                "executionStepName": "A String", # Name of the stage. An execution step contains multiple component steps.
+                "name": "A String", # Counter name. Not necessarily globally-unique, but unique within the context of the other fields. Required.
+                "workerId": "A String", # ID of a particular worker.
+                "originalStepName": "A String", # System generated name of the original step in the user's graph, before optimization.
+                "standardOrigin": "A String", # One of the standard Origins defined above.
+                "portion": "A String", # Portion of this counter, either key or value.
+                "otherOrigin": "A String", # A string containing the origin of the counter.
+                "componentStepName": "A String", # Name of the optimized step being executed by the workers.
+              },
+              "metadata": { # CounterMetadata includes all static non-name non-value counter attributes. # Metadata associated with a counter
+                "standardUnits": "A String", # System defined Units, see above enum.
+                "kind": "A String", # Counter aggregation kind.
+                "description": "A String", # Human-readable description of the counter semantics.
+                "otherUnits": "A String", # A string referring to the unit type.
+              },
+            },
+            "internal": "", # Value for internally-defined counters used by the Dataflow service.
+            "integer": { # A representation of an int64, n, that is immune to precision loss when encoded in JSON. # Integer value for Sum, Max, Min.
+              "lowBits": 42, # The low order bits: n & 0xffffffff.
+              "highBits": 42, # The high order bits, including the sign: n >> 32.
+            },
+            "nameAndKind": { # Basic metadata about a counter. # Counter name and aggregation type.
+              "kind": "A String", # Counter aggregation kind.
+              "name": "A String", # Name of the counter.
+            },
+            "stringList": { # A metric value representing a list of strings. # List of strings, for Set.
+              "elements": [ # Elements of the list.
+                "A String",
+              ],
+            },
+          },
+        ],
+        "progress": { # Obsolete in favor of ApproximateReportedProgress and ApproximateSplitRequest. # DEPRECATED in favor of reported_progress.
+          "position": { # Position defines a position within a collection of data. The value can be either the end position, a key (used with ordered collections), a byte offset, or a record index. # Obsolete.
+            "end": True or False, # Position is past all other positions. Also useful for the end position of an unbounded range.
+            "recordIndex": "A String", # Position is a record index.
+            "byteOffset": "A String", # Position is a byte offset.
+            "key": "A String", # Position is a string key, ordered lexicographically.
+            "concatPosition": { # A position that encapsulates an inner position and an index for the inner position. A ConcatPosition can be used by a reader of a source that encapsulates a set of other sources. # CloudPosition is a concat position.
+              "index": 42, # Index of the inner source.
+              "position": # Object with schema name: Position # Position within the inner source.
+            },
+            "shufflePosition": "A String", # CloudPosition is a base64 encoded BatchShufflePosition (with FIXED sharding).
+          },
+          "remainingTime": "A String", # Obsolete.
+          "percentComplete": 3.14, # Obsolete.
+        },
+        "metricUpdates": [ # DEPRECATED in favor of counter_updates.
+          { # Describes the state of a metric.
+            "meanCount": "", # Worker-computed aggregate value for the "Mean" aggregation kind. This holds the count of the aggregated values and is used in combination with mean_sum above to obtain the actual mean aggregate value. The only possible value type is Long.
+            "kind": "A String", # Metric aggregation kind. The possible metric aggregation kinds are "Sum", "Max", "Min", "Mean", "Set", "And", and "Or". The specified aggregation kind is case-insensitive. If omitted, this is not an aggregated value but instead a single metric sample value.
+            "set": "", # Worker-computed aggregate value for the "Set" aggregation kind. The only possible value type is a list of Values whose type can be Long, Double, or String, according to the metric's type. All Values in the list must be of the same type.
+            "name": { # Identifies a metric, by describing the source which generated the metric. # Name of the metric.
+              "origin": "A String", # Origin (namespace) of metric name. May be blank for user-define metrics; will be "dataflow" for metrics defined by the Dataflow service or SDK.
+              "name": "A String", # Worker-defined metric name.
+              "context": { # Zero or more labeled fields which identify the part of the job this metric is associated with, such as the name of a step or collection. For example, built-in counters associated with steps will have context['step'] = . Counters associated with PCollections in the SDK will have context['pcollection'] =
+                  # .
+                "a_key": "A String",
+              },
+            },
+            "cumulative": True or False, # True if this metric is reported as the total cumulative aggregate value accumulated since the worker started working on this WorkItem. By default this is false, indicating that this metric is reported as a delta that is not associated with any WorkItem.
+            "updateTime": "A String", # Timestamp associated with the metric value. Optional when workers are reporting work progress; it will be filled in responses from the metrics API.
+            "scalar": "", # Worker-computed aggregate value for aggregation kinds "Sum", "Max", "Min", "And", and "Or". The possible value types are Long, Double, and Boolean.
+            "meanSum": "", # Worker-computed aggregate value for the "Mean" aggregation kind. This holds the sum of the aggregated values and is used in combination with mean_count below to obtain the actual mean aggregate value. The only possible value types are Long and Double.
+            "internal": "", # Worker-computed aggregate value for internal use by the Dataflow service.
+          },
+        ],
+        "reportedProgress": { # A progress measurement of a WorkItem by a worker. # The worker's progress through this WorkItem.
+          "fractionConsumed": 3.14, # Completion as fraction of the input consumed, from 0.0 (beginning, nothing consumed), to 1.0 (end of the input, entire input consumed).
+          "position": { # Position defines a position within a collection of data. The value can be either the end position, a key (used with ordered collections), a byte offset, or a record index. # A Position within the work to represent a progress.
+            "end": True or False, # Position is past all other positions. Also useful for the end position of an unbounded range.
+            "recordIndex": "A String", # Position is a record index.
+            "byteOffset": "A String", # Position is a byte offset.
+            "key": "A String", # Position is a string key, ordered lexicographically.
+            "concatPosition": { # A position that encapsulates an inner position and an index for the inner position. A ConcatPosition can be used by a reader of a source that encapsulates a set of other sources. # CloudPosition is a concat position.
+              "index": 42, # Index of the inner source.
+              "position": # Object with schema name: Position # Position within the inner source.
+            },
+            "shufflePosition": "A String", # CloudPosition is a base64 encoded BatchShufflePosition (with FIXED sharding).
+          },
+          "remainingParallelism": { # Represents the level of parallelism in a WorkItem's input, reported by the worker. # Total amount of parallelism in the input of this task that remains, (i.e. can be delegated to this task and any new tasks via dynamic splitting). Always at least 1 for non-finished work items and 0 for finished. "Amount of parallelism" refers to how many non-empty parts of the input can be read in parallel. This does not necessarily equal number of records. An input that can be read in parallel down to the individual records is called "perfectly splittable". An example of non-perfectly parallelizable input is a block-compressed file format where a block of records has to be read as a whole, but different blocks can be read in parallel. Examples: * If we are processing record #30 (starting at 1) out of 50 in a perfectly splittable 50-record input, this value should be 21 (20 remaining + 1 current). * If we are reading through block 3 in a block-compressed file consisting of 5 blocks, this value should be 3 (since blocks 4 and 5 can be processed in parallel by new tasks via dynamic splitting and the current task remains processing block 3). * If we are reading through the last block in a block-compressed file, or reading or processing the last record in a perfectly splittable input, this value should be 1, because apart from the current task, no additional remainder can be split off.
+            "isInfinite": True or False, # Specifies whether the parallelism is infinite. If true, "value" is ignored. Infinite parallelism means the service will assume that the work item can always be split into more non-empty work items by dynamic splitting. This is a work-around for lack of support for infinity by the current JSON-based Java RPC stack.
+            "value": 3.14, # Specifies the level of parallelism in case it is finite.
+          },
+          "consumedParallelism": { # Represents the level of parallelism in a WorkItem's input, reported by the worker. # Total amount of parallelism in the portion of input of this task that has already been consumed and is no longer active. In the first two examples above (see remaining_parallelism), the value should be 29 or 2 respectively. The sum of remaining_parallelism and consumed_parallelism should equal the total amount of parallelism in this work item. If specified, must be finite.
+            "isInfinite": True or False, # Specifies whether the parallelism is infinite. If true, "value" is ignored. Infinite parallelism means the service will assume that the work item can always be split into more non-empty work items by dynamic splitting. This is a work-around for lack of support for infinity by the current JSON-based Java RPC stack.
+            "value": 3.14, # Specifies the level of parallelism in case it is finite.
+          },
+        },
+      },
+    ],
+    "location": "A String", # The location which contains the WorkItem's job.
+  }
+
+  x__xgafv: string, V1 error format.
+
+Returns:
+  An object of the form:
+
+    { # Response from a request to report the status of WorkItems.
+    "workItemServiceStates": [ # A set of messages indicating the service-side state for each WorkItem whose status was reported, in the same order as the WorkItemStatus messages in the ReportWorkItemStatusRequest which resulting in this response.
+      { # The Dataflow service's idea of the current state of a WorkItem being processed by a worker.
+        "reportStatusInterval": "A String", # New recommended reporting interval.
+        "suggestedStopPosition": { # Position defines a position within a collection of data. The value can be either the end position, a key (used with ordered collections), a byte offset, or a record index. # Obsolete, always empty.
+          "end": True or False, # Position is past all other positions. Also useful for the end position of an unbounded range.
+          "recordIndex": "A String", # Position is a record index.
+          "byteOffset": "A String", # Position is a byte offset.
+          "key": "A String", # Position is a string key, ordered lexicographically.
+          "concatPosition": { # A position that encapsulates an inner position and an index for the inner position. A ConcatPosition can be used by a reader of a source that encapsulates a set of other sources. # CloudPosition is a concat position.
+            "index": 42, # Index of the inner source.
+            "position": # Object with schema name: Position # Position within the inner source.
+          },
+          "shufflePosition": "A String", # CloudPosition is a base64 encoded BatchShufflePosition (with FIXED sharding).
+        },
+        "harnessData": { # Other data returned by the service, specific to the particular worker harness.
+          "a_key": "", # Properties of the object.
+        },
+        "nextReportIndex": "A String", # The index value to use for the next report sent by the worker. Note: If the report call fails for whatever reason, the worker should reuse this index for subsequent report attempts.
+        "leaseExpireTime": "A String", # Time at which the current lease will expire.
+        "metricShortId": [ # The short ids that workers should use in subsequent metric updates. Workers should strive to use short ids whenever possible, but it is ok to request the short_id again if a worker lost track of it (e.g. if the worker is recovering from a crash). NOTE: it is possible that the response may have short ids for a subset of the metrics.
+          { # The metric short id is returned to the user alongside an offset into ReportWorkItemStatusRequest
+            "shortId": "A String", # The service-generated short identifier for the metric.
+            "metricIndex": 42, # The index of the corresponding metric in the ReportWorkItemStatusRequest. Required.
+          },
+        ],
+        "splitRequest": { # A suggestion by the service to the worker to dynamically split the WorkItem. # The progress point in the WorkItem where the Dataflow service suggests that the worker truncate the task.
+          "fractionConsumed": 3.14, # A fraction at which to split the work item, from 0.0 (beginning of the input) to 1.0 (end of the input).
+          "position": { # Position defines a position within a collection of data. The value can be either the end position, a key (used with ordered collections), a byte offset, or a record index. # A Position at which to split the work item.
+            "end": True or False, # Position is past all other positions. Also useful for the end position of an unbounded range.
+            "recordIndex": "A String", # Position is a record index.
+            "byteOffset": "A String", # Position is a byte offset.
+            "key": "A String", # Position is a string key, ordered lexicographically.
+            "concatPosition": { # A position that encapsulates an inner position and an index for the inner position. A ConcatPosition can be used by a reader of a source that encapsulates a set of other sources. # CloudPosition is a concat position.
+              "index": 42, # Index of the inner source.
+              "position": # Object with schema name: Position # Position within the inner source.
+            },
+            "shufflePosition": "A String", # CloudPosition is a base64 encoded BatchShufflePosition (with FIXED sharding).
+          },
+        },
+        "suggestedStopPoint": { # Obsolete in favor of ApproximateReportedProgress and ApproximateSplitRequest. # DEPRECATED in favor of split_request.
+          "position": { # Position defines a position within a collection of data. The value can be either the end position, a key (used with ordered collections), a byte offset, or a record index. # Obsolete.
+            "end": True or False, # Position is past all other positions. Also useful for the end position of an unbounded range.
+            "recordIndex": "A String", # Position is a record index.
+            "byteOffset": "A String", # Position is a byte offset.
+            "key": "A String", # Position is a string key, ordered lexicographically.
+            "concatPosition": { # A position that encapsulates an inner position and an index for the inner position. A ConcatPosition can be used by a reader of a source that encapsulates a set of other sources. # CloudPosition is a concat position.
+              "index": 42, # Index of the inner source.
+              "position": # Object with schema name: Position # Position within the inner source.
+            },
+            "shufflePosition": "A String", # CloudPosition is a base64 encoded BatchShufflePosition (with FIXED sharding).
+          },
+          "remainingTime": "A String", # Obsolete.
+          "percentComplete": 3.14, # Obsolete.
+        },
+      },
+    ],
+  }</pre>
+</div>
+
+</body></html>
\ No newline at end of file
diff --git a/docs/dyn/dataflow_v1b3.projects.templates.html b/docs/dyn/dataflow_v1b3.projects.templates.html
index 27e4783..351451a 100644
--- a/docs/dyn/dataflow_v1b3.projects.templates.html
+++ b/docs/dyn/dataflow_v1b3.projects.templates.html
@@ -88,10 +88,18 @@
     The object takes the form of:
 
 { # Request to create a Dataflow job.
+    "environment": { # Environment values to set at runtime. # Runtime environment for the job.
+      "maxWorkers": 42, # The maximum number of workers to start for the job.
+      "tempLocation": "A String", # The temp location to use for the job.
+      "serviceAccountEmail": "A String", # The service account to run the job as.
+      "zone": "A String", # The zone to start the workers in.
+      "bypassTempDirValidation": True or False, # Bypass the safety checks for the job's temp directory. Use with caution.
+    },
     "gcsPath": "A String", # A path to the serialized JSON representation of the job.
     "parameters": { # Dynamic parameterization of the job's runtime environment.
       "a_key": "A String",
     },
+    "jobName": "A String", # The job name to use for the created job..
   }
 
   x__xgafv: string, V1 error format.
@@ -103,6 +111,7 @@
       "clientRequestId": "A String", # Client's unique identifier of the job, re-used by SDK across retried attempts. If this field is set, the service will ensure its uniqueness. That is, the request to create a job will fail if the service has knowledge of a previously submitted job with the same client's id and job name. The caller may, for example, use this field to ensure idempotence of job creation across retried attempts to create a job. By default, the field is empty and, in that case, the service ignores it.
       "requestedState": "A String", # The job's requested state. UpdateJob may be used to switch between the JOB_STATE_STOPPED and JOB_STATE_RUNNING states, by setting requested_state. UpdateJob may also be used to directly set a job's requested state to JOB_STATE_CANCELLED or JOB_STATE_DONE, irrevocably terminating the job if it has not already reached a terminal state.
       "name": "A String", # The user-specified Dataflow job name. Only one Job with a given name may exist in a project at any given time. If a caller attempts to create a Job with the same name as an already-existing Job, the attempt will return the existing Job. The name must match the regular expression [a-z]([-a-z0-9]{0,38}[a-z0-9])?
+      "location": "A String", # The location which contains this job.
       "replacedByJobId": "A String", # If another job is an update of this job (and thus, this job is in JOB_STATE_UPDATED), this field will contain the ID of that job.
       "projectId": "A String", # The project which owns the job.
       "labels": { # User-defined labels for this job. The labels map can contain no more than 64 entries. Entries of the labels map are UTF8 strings that comply with the following restrictions: * Keys must conform to regexp: \p{Ll}\p{Lo}{0,62} * Values must conform to regexp: [\p{Ll}\p{Lo}\p{N}_-]{0,63} * Both keys and values are additionally constrained to be <= 128 bytes in size.
diff --git a/docs/dyn/dataproc_v1.projects.regions.clusters.html b/docs/dyn/dataproc_v1.projects.regions.clusters.html
index 0ae70a4..c8fcdcd 100644
--- a/docs/dyn/dataproc_v1.projects.regions.clusters.html
+++ b/docs/dyn/dataproc_v1.projects.regions.clusters.html
@@ -87,7 +87,7 @@
   <code><a href="#get">get(projectId, region, clusterName, x__xgafv=None)</a></code></p>
 <p class="firstline">Gets the resource representation for a cluster in a project.</p>
 <p class="toc_element">
-  <code><a href="#list">list(projectId, region, pageSize=None, pageToken=None, x__xgafv=None)</a></code></p>
+  <code><a href="#list">list(projectId, region, pageSize=None, filter=None, pageToken=None, x__xgafv=None)</a></code></p>
 <p class="firstline">Lists all regions/{region}/clusters in a project.</p>
 <p class="toc_element">
   <code><a href="#list_next">list_next(previous_request, previous_response)</a></code></p>
@@ -108,18 +108,29 @@
 
 { # Describes the identifying information, config, and status of a cluster of Google Compute Engine instances.
   "status": { # The status of a cluster and its instances. # [Output-only] Cluster status.
-    "state": "A String", # The cluster's state.
-    "stateStartTime": "A String", # Time when this state was entered.
-    "detail": "A String", # Optional details of cluster's state.
+    "state": "A String", # [Output-only] The cluster's state.
+    "stateStartTime": "A String", # [Output-only] Time when this state was entered.
+    "detail": "A String", # [Output-only] Optional details of cluster's state.
   },
   "clusterUuid": "A String", # [Output-only] A cluster UUID (Unique Universal Identifier). Cloud Dataproc generates this value when it creates the cluster.
   "clusterName": "A String", # [Required] The cluster name. Cluster names within a project must be unique. Names of deleted clusters can be reused.
   "projectId": "A String", # [Required] The Google Cloud Platform project ID that the cluster belongs to.
+  "labels": { # [Optional] The labels to associate with this cluster. Label **keys** must contain 1 to 63 characters, and must conform to [RFC 1035](https://www.ietf.org/rfc/rfc1035.txt). Label **values** may be empty, but, if present, must contain 1 to 63 characters, and must conform to [RFC 1035](https://www.ietf.org/rfc/rfc1035.txt). No more than 32 labels can be associated with a cluster.
+    "a_key": "A String",
+  },
+  "metrics": { # Contains cluster daemon metrics, such as HDFS and YARN stats. **Beta Feature**: This report is available for testing purposes only. It may be changed before final release. # Contains cluster daemon metrics such as HDFS and YARN stats. **Beta Feature**: This report is available for testing purposes only. It may be changed before final release.
+    "yarnMetrics": { # The YARN metrics.
+      "a_key": "A String",
+    },
+    "hdfsMetrics": { # The HDFS metrics.
+      "a_key": "A String",
+    },
+  },
   "statusHistory": [ # [Output-only] The previous cluster status.
     { # The status of a cluster and its instances.
-      "state": "A String", # The cluster's state.
-      "stateStartTime": "A String", # Time when this state was entered.
-      "detail": "A String", # Optional details of cluster's state.
+      "state": "A String", # [Output-only] The cluster's state.
+      "stateStartTime": "A String", # [Output-only] Time when this state was entered.
+      "detail": "A String", # [Output-only] Optional details of cluster's state.
     },
   ],
   "config": { # The cluster config. # [Required] The cluster config. Note that Cloud Dataproc may set default values, and values may change when clusters are updated.
@@ -131,74 +142,75 @@
     },
     "configBucket": "A String", # [Optional] A Google Cloud Storage staging bucket used for sharing generated SSH keys and config. If you do not specify a staging bucket, Cloud Dataproc will determine an appropriate Cloud Storage location (US, ASIA, or EU) for your cluster's staging bucket according to the Google Compute Engine zone where your cluster is deployed, and then it will create and manage this project-level, per-location bucket for you.
     "gceClusterConfig": { # Common config settings for resources of Google Compute Engine cluster instances, applicable to all instances in the cluster. # [Required] The shared Google Compute Engine config settings for all instances in a cluster.
-      "networkUri": "A String", # The Google Compute Engine network to be used for machine communications. Cannot be specified with subnetwork_uri. If neither network_uri nor subnetwork_uri is specified, the "default" network of the project is used, if it exists. Cannot be a "Custom Subnet Network" (see https://cloud.google.com/compute/docs/subnetworks for more information). Example: `https://www.googleapis.com/compute/v1/projects/[project_id]/regions/global/default`.
-      "tags": [ # The Google Compute Engine tags to add to all instances.
+      "internalIpOnly": True or False, # [Optional] If true, all instances in the cluster will only have internal IP addresses. By default, clusters are not restricted to internal IP addresses, and will have ephemeral external IP addresses assigned to each instance. This `internal_ip_only` restriction can only be enabled for subnetwork enabled networks, and all off-cluster dependencies must be configured to be accessible without external IP addresses.
+      "networkUri": "A String", # [Optional] The Google Compute Engine network to be used for machine communications. Cannot be specified with subnetwork_uri. If neither `network_uri` nor `subnetwork_uri` is specified, the "default" network of the project is used, if it exists. Cannot be a "Custom Subnet Network" (see [Using Subnetworks](/compute/docs/subnetworks) for more information). Example: `https://www.googleapis.com/compute/v1/projects/[project_id]/regions/global/default`.
+      "tags": [ # The Google Compute Engine tags to add to all instances (see [Tagging instances](/compute/docs/label-or-tag-resources#tags)).
         "A String",
       ],
       "zoneUri": "A String", # [Required] The zone where the Google Compute Engine cluster will be located. Example: `https://www.googleapis.com/compute/v1/projects/[project_id]/zones/[zone]`.
-      "subnetworkUri": "A String", # The Google Compute Engine subnetwork to be used for machine communications. Cannot be specified with network_uri. Example: `https://www.googleapis.com/compute/v1/projects/[project_id]/regions/us-east1/sub0`.
-      "serviceAccountScopes": [ # The URIs of service account scopes to be included in Google Compute Engine instances. The following base set of scopes is always included: * https://www.googleapis.com/auth/cloud.useraccounts.readonly * https://www.googleapis.com/auth/devstorage.read_write * https://www.googleapis.com/auth/logging.write If no scopes are specfied, the following defaults are also provided: * https://www.googleapis.com/auth/bigquery * https://www.googleapis.com/auth/bigtable.admin.table * https://www.googleapis.com/auth/bigtable.data * https://www.googleapis.com/auth/devstorage.full_control
+      "subnetworkUri": "A String", # [Optional] The Google Compute Engine subnetwork to be used for machine communications. Cannot be specified with network_uri. Example: `https://www.googleapis.com/compute/v1/projects/[project_id]/regions/us-east1/sub0`.
+      "serviceAccountScopes": [ # [Optional] The URIs of service account scopes to be included in Google Compute Engine instances. The following base set of scopes is always included: * https://www.googleapis.com/auth/cloud.useraccounts.readonly * https://www.googleapis.com/auth/devstorage.read_write * https://www.googleapis.com/auth/logging.write If no scopes are specified, the following defaults are also provided: * https://www.googleapis.com/auth/bigquery * https://www.googleapis.com/auth/bigtable.admin.table * https://www.googleapis.com/auth/bigtable.data * https://www.googleapis.com/auth/devstorage.full_control
         "A String",
       ],
-      "metadata": { # The Google Compute Engine metadata entries to add to all instances.
+      "metadata": { # The Google Compute Engine metadata entries to add to all instances (see [Project and instance metadata](https://cloud.google.com/compute/docs/storing-retrieving-metadata#project_and_instance_metadata)).
         "a_key": "A String",
       },
     },
-    "workerConfig": { # The config settings for Google Compute Engine resources in an instance group, such as a master or worker group. # [Optional] The Google Compute Engine config settings for worker instances in a cluster.
-      "isPreemptible": True or False, # Specifies that this instance group contains Preemptible Instances.
-      "machineTypeUri": "A String", # The Google Compute Engine machine type used for cluster instances. Example: `https://www.googleapis.com/compute/v1/projects/[project_id]/zones/us-east1-a/machineTypes/n1-standard-2`.
-      "instanceNames": [ # The list of instance names. Cloud Dataproc derives the names from `cluster_name`, `num_instances`, and the instance group if not set by user (recommended practice is to let Cloud Dataproc derive the name).
+    "workerConfig": { # [Optional] The config settings for Google Compute Engine resources in an instance group, such as a master or worker group. # [Optional] The Google Compute Engine config settings for worker instances in a cluster.
+      "isPreemptible": True or False, # [Optional] Specifies that this instance group contains preemptible instances.
+      "machineTypeUri": "A String", # [Required] The Google Compute Engine machine type used for cluster instances. Example: `https://www.googleapis.com/compute/v1/projects/[project_id]/zones/us-east1-a/machineTypes/n1-standard-2`.
+      "instanceNames": [ # [Optional] The list of instance names. Cloud Dataproc derives the names from `cluster_name`, `num_instances`, and the instance group if not set by user (recommended practice is to let Cloud Dataproc derive the name).
         "A String",
       ],
-      "diskConfig": { # Specifies the config of disk options for a group of VM instances. # Disk option config settings.
-        "numLocalSsds": 42, # [Optional] Number of attached SSDs, from 0 to 4 (default is 0). If SSDs are not attached, the boot disk is used to store runtime logs and HDFS data. If one or more SSDs are attached, this runtime bulk data is spread across them, and the boot disk contains only basic config and installed binaries.
+      "diskConfig": { # Specifies the config of disk options for a group of VM instances. # [Optional] Disk option config settings.
+        "numLocalSsds": 42, # [Optional] Number of attached SSDs, from 0 to 4 (default is 0). If SSDs are not attached, the boot disk is used to store runtime logs and [HDFS](https://hadoop.apache.org/docs/r1.2.1/hdfs_user_guide.html) data. If one or more SSDs are attached, this runtime bulk data is spread across them, and the boot disk contains only basic config and installed binaries.
         "bootDiskSizeGb": 42, # [Optional] Size in GB of the boot disk (default is 500GB).
       },
       "managedGroupConfig": { # Specifies the resources used to actively manage an instance group. # [Output-only] The config for Google Compute Engine Instance Group Manager that manages this group. This is only used for preemptible instance groups.
         "instanceTemplateName": "A String", # [Output-only] The name of the Instance Template used for the Managed Instance Group.
         "instanceGroupManagerName": "A String", # [Output-only] The name of the Instance Group Manager for this group.
       },
-      "numInstances": 42, # The number of VM instances in the instance group. For master instance groups, must be set to 1.
+      "numInstances": 42, # [Required] The number of VM instances in the instance group. For master instance groups, must be set to 1.
       "imageUri": "A String", # [Output-only] The Google Compute Engine image resource used for cluster instances. Inferred from `SoftwareConfig.image_version`.
     },
-    "initializationActions": [ # [Optional] Commands to execute on each node after config is completed. By default, executables are run on master and all worker nodes. You can test a node's role metadata to run an executable on a master or worker node, as shown below: ROLE=$(/usr/share/google/get_metadata_value attributes/role) if [[ "${ROLE}" == 'Master' ]]; then ... master specific actions ... else ... worker specific actions ... fi
+    "initializationActions": [ # [Optional] Commands to execute on each node after config is completed. By default, executables are run on master and all worker nodes. You can test a node's role metadata to run an executable on a master or worker node, as shown below using `curl` (you can also use `wget`): ROLE=$(curl -H Metadata-Flavor:Google http://metadata/computeMetadata/v1/instance/attributes/dataproc-role) if [[ "${ROLE}" == 'Master' ]]; then ... master specific actions ... else ... worker specific actions ... fi
       { # Specifies an executable to run on a fully configured node and a timeout period for executable completion.
         "executionTimeout": "A String", # [Optional] Amount of time executable has to complete. Default is 10 minutes. Cluster creation fails with an explanatory error message (the name of the executable that caused the error and the exceeded timeout period) if the executable is not completed at end of the timeout period.
         "executableFile": "A String", # [Required] Google Cloud Storage URI of executable file.
       },
     ],
-    "secondaryWorkerConfig": { # The config settings for Google Compute Engine resources in an instance group, such as a master or worker group. # [Optional] The Google Compute Engine config settings for additional worker instances in a cluster.
-      "isPreemptible": True or False, # Specifies that this instance group contains Preemptible Instances.
-      "machineTypeUri": "A String", # The Google Compute Engine machine type used for cluster instances. Example: `https://www.googleapis.com/compute/v1/projects/[project_id]/zones/us-east1-a/machineTypes/n1-standard-2`.
-      "instanceNames": [ # The list of instance names. Cloud Dataproc derives the names from `cluster_name`, `num_instances`, and the instance group if not set by user (recommended practice is to let Cloud Dataproc derive the name).
+    "secondaryWorkerConfig": { # [Optional] The config settings for Google Compute Engine resources in an instance group, such as a master or worker group. # [Optional] The Google Compute Engine config settings for additional worker instances in a cluster.
+      "isPreemptible": True or False, # [Optional] Specifies that this instance group contains preemptible instances.
+      "machineTypeUri": "A String", # [Required] The Google Compute Engine machine type used for cluster instances. Example: `https://www.googleapis.com/compute/v1/projects/[project_id]/zones/us-east1-a/machineTypes/n1-standard-2`.
+      "instanceNames": [ # [Optional] The list of instance names. Cloud Dataproc derives the names from `cluster_name`, `num_instances`, and the instance group if not set by user (recommended practice is to let Cloud Dataproc derive the name).
         "A String",
       ],
-      "diskConfig": { # Specifies the config of disk options for a group of VM instances. # Disk option config settings.
-        "numLocalSsds": 42, # [Optional] Number of attached SSDs, from 0 to 4 (default is 0). If SSDs are not attached, the boot disk is used to store runtime logs and HDFS data. If one or more SSDs are attached, this runtime bulk data is spread across them, and the boot disk contains only basic config and installed binaries.
+      "diskConfig": { # Specifies the config of disk options for a group of VM instances. # [Optional] Disk option config settings.
+        "numLocalSsds": 42, # [Optional] Number of attached SSDs, from 0 to 4 (default is 0). If SSDs are not attached, the boot disk is used to store runtime logs and [HDFS](https://hadoop.apache.org/docs/r1.2.1/hdfs_user_guide.html) data. If one or more SSDs are attached, this runtime bulk data is spread across them, and the boot disk contains only basic config and installed binaries.
         "bootDiskSizeGb": 42, # [Optional] Size in GB of the boot disk (default is 500GB).
       },
       "managedGroupConfig": { # Specifies the resources used to actively manage an instance group. # [Output-only] The config for Google Compute Engine Instance Group Manager that manages this group. This is only used for preemptible instance groups.
         "instanceTemplateName": "A String", # [Output-only] The name of the Instance Template used for the Managed Instance Group.
         "instanceGroupManagerName": "A String", # [Output-only] The name of the Instance Group Manager for this group.
       },
-      "numInstances": 42, # The number of VM instances in the instance group. For master instance groups, must be set to 1.
+      "numInstances": 42, # [Required] The number of VM instances in the instance group. For master instance groups, must be set to 1.
       "imageUri": "A String", # [Output-only] The Google Compute Engine image resource used for cluster instances. Inferred from `SoftwareConfig.image_version`.
     },
-    "masterConfig": { # The config settings for Google Compute Engine resources in an instance group, such as a master or worker group. # [Optional] The Google Compute Engine config settings for the master instance in a cluster.
-      "isPreemptible": True or False, # Specifies that this instance group contains Preemptible Instances.
-      "machineTypeUri": "A String", # The Google Compute Engine machine type used for cluster instances. Example: `https://www.googleapis.com/compute/v1/projects/[project_id]/zones/us-east1-a/machineTypes/n1-standard-2`.
-      "instanceNames": [ # The list of instance names. Cloud Dataproc derives the names from `cluster_name`, `num_instances`, and the instance group if not set by user (recommended practice is to let Cloud Dataproc derive the name).
+    "masterConfig": { # [Optional] The config settings for Google Compute Engine resources in an instance group, such as a master or worker group. # [Optional] The Google Compute Engine config settings for the master instance in a cluster.
+      "isPreemptible": True or False, # [Optional] Specifies that this instance group contains preemptible instances.
+      "machineTypeUri": "A String", # [Required] The Google Compute Engine machine type used for cluster instances. Example: `https://www.googleapis.com/compute/v1/projects/[project_id]/zones/us-east1-a/machineTypes/n1-standard-2`.
+      "instanceNames": [ # [Optional] The list of instance names. Cloud Dataproc derives the names from `cluster_name`, `num_instances`, and the instance group if not set by user (recommended practice is to let Cloud Dataproc derive the name).
         "A String",
       ],
-      "diskConfig": { # Specifies the config of disk options for a group of VM instances. # Disk option config settings.
-        "numLocalSsds": 42, # [Optional] Number of attached SSDs, from 0 to 4 (default is 0). If SSDs are not attached, the boot disk is used to store runtime logs and HDFS data. If one or more SSDs are attached, this runtime bulk data is spread across them, and the boot disk contains only basic config and installed binaries.
+      "diskConfig": { # Specifies the config of disk options for a group of VM instances. # [Optional] Disk option config settings.
+        "numLocalSsds": 42, # [Optional] Number of attached SSDs, from 0 to 4 (default is 0). If SSDs are not attached, the boot disk is used to store runtime logs and [HDFS](https://hadoop.apache.org/docs/r1.2.1/hdfs_user_guide.html) data. If one or more SSDs are attached, this runtime bulk data is spread across them, and the boot disk contains only basic config and installed binaries.
         "bootDiskSizeGb": 42, # [Optional] Size in GB of the boot disk (default is 500GB).
       },
       "managedGroupConfig": { # Specifies the resources used to actively manage an instance group. # [Output-only] The config for Google Compute Engine Instance Group Manager that manages this group. This is only used for preemptible instance groups.
         "instanceTemplateName": "A String", # [Output-only] The name of the Instance Template used for the Managed Instance Group.
         "instanceGroupManagerName": "A String", # [Output-only] The name of the Instance Group Manager for this group.
       },
-      "numInstances": 42, # The number of VM instances in the instance group. For master instance groups, must be set to 1.
+      "numInstances": 42, # [Required] The number of VM instances in the instance group. For master instance groups, must be set to 1.
       "imageUri": "A String", # [Output-only] The Google Compute Engine image resource used for cluster instances. Inferred from `SoftwareConfig.image_version`.
     },
   },
@@ -211,21 +223,21 @@
 
     { # This resource represents a long-running operation that is the result of a network API call.
     "response": { # The normal response of the operation in case of success. If the original method returns no data on success, such as `Delete`, the response is `google.protobuf.Empty`. If the original method is standard `Get`/`Create`/`Update`, the response should be the resource. For other methods, the response should have the type `XxxResponse`, where `Xxx` is the original method name. For example, if the original method name is `TakeSnapshot()`, the inferred response type is `TakeSnapshotResponse`.
-      "a_key": "", # Properties of the object. Contains field @ype with type URL.
+      "a_key": "", # Properties of the object. Contains field @type with type URL.
     },
-    "error": { # The `Status` type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by [gRPC](https://github.com/grpc). The error model is designed to be: - Simple to use and understand for most users - Flexible enough to meet unexpected needs # Overview The `Status` message contains three pieces of data: error code, error message, and error details. The error code should be an enum value of google.rpc.Code, but it may accept additional error codes if needed. The error message should be a developer-facing English message that helps developers *understand* and *resolve* the error. If a localized user-facing error message is needed, put the localized message in the error details or localize it in the client. The optional error details may contain arbitrary information about the error. There is a predefined set of error detail types in the package `google.rpc` which can be used for common error conditions. # Language mapping The `Status` message is the logical representation of the error model, but it is not necessarily the actual wire format. When the `Status` message is exposed in different client libraries and different wire protocols, it can be mapped differently. For example, it will likely be mapped to some exceptions in Java, but more likely mapped to some error codes in C. # Other uses The error model and the `Status` message can be used in a variety of environments, either with or without APIs, to provide a consistent developer experience across different environments. Example uses of this error model include: - Partial errors. If a service needs to return partial errors to the client, it may embed the `Status` in the normal response to indicate the partial errors. - Workflow errors. A typical workflow has multiple steps. Each step may have a `Status` message for error reporting purpose. - Batch operations. If a client uses batch request and batch response, the `Status` message should be used directly inside batch response, one for each error sub-response. - Asynchronous operations. If an API call embeds asynchronous operation results in its response, the status of those operations should be represented directly using the `Status` message. - Logging. If some API errors are stored in logs, the message `Status` could be used directly after any stripping needed for security/privacy reasons. # The error result of the operation in case of failure.
+    "error": { # The `Status` type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by [gRPC](https://github.com/grpc). The error model is designed to be: - Simple to use and understand for most users - Flexible enough to meet unexpected needs # Overview The `Status` message contains three pieces of data: error code, error message, and error details. The error code should be an enum value of google.rpc.Code, but it may accept additional error codes if needed. The error message should be a developer-facing English message that helps developers *understand* and *resolve* the error. If a localized user-facing error message is needed, put the localized message in the error details or localize it in the client. The optional error details may contain arbitrary information about the error. There is a predefined set of error detail types in the package `google.rpc` which can be used for common error conditions. # Language mapping The `Status` message is the logical representation of the error model, but it is not necessarily the actual wire format. When the `Status` message is exposed in different client libraries and different wire protocols, it can be mapped differently. For example, it will likely be mapped to some exceptions in Java, but more likely mapped to some error codes in C. # Other uses The error model and the `Status` message can be used in a variety of environments, either with or without APIs, to provide a consistent developer experience across different environments. Example uses of this error model include: - Partial errors. If a service needs to return partial errors to the client, it may embed the `Status` in the normal response to indicate the partial errors. - Workflow errors. A typical workflow has multiple steps. Each step may have a `Status` message for error reporting purpose. - Batch operations. If a client uses batch request and batch response, the `Status` message should be used directly inside batch response, one for each error sub-response. - Asynchronous operations. If an API call embeds asynchronous operation results in its response, the status of those operations should be represented directly using the `Status` message. - Logging. If some API errors are stored in logs, the message `Status` could be used directly after any stripping needed for security/privacy reasons. # The error result of the operation in case of failure or cancellation.
       "message": "A String", # A developer-facing error message, which should be in English. Any user-facing error message should be localized and sent in the google.rpc.Status.details field, or localized by the client.
       "code": 42, # The status code, which should be an enum value of google.rpc.Code.
       "details": [ # A list of messages that carry the error details. There will be a common set of message types for APIs to use.
         {
-          "a_key": "", # Properties of the object. Contains field @ype with type URL.
+          "a_key": "", # Properties of the object. Contains field @type with type URL.
         },
       ],
     },
     "done": True or False, # If the value is `false`, it means the operation is still in progress. If true, the operation is completed, and either `error` or `response` is available.
     "name": "A String", # The server-assigned name, which is only unique within the same service that originally returns it. If you use the default HTTP mapping, the `name` should have the format of `operations/some/unique/name`.
     "metadata": { # Service-specific metadata associated with the operation. It typically contains progress information and common metadata such as create time. Some services might not provide such metadata. Any method that returns a long-running operation should document the metadata type, if any.
-      "a_key": "", # Properties of the object. Contains field @ype with type URL.
+      "a_key": "", # Properties of the object. Contains field @type with type URL.
     },
   }</pre>
 </div>
@@ -245,21 +257,21 @@
 
     { # This resource represents a long-running operation that is the result of a network API call.
     "response": { # The normal response of the operation in case of success. If the original method returns no data on success, such as `Delete`, the response is `google.protobuf.Empty`. If the original method is standard `Get`/`Create`/`Update`, the response should be the resource. For other methods, the response should have the type `XxxResponse`, where `Xxx` is the original method name. For example, if the original method name is `TakeSnapshot()`, the inferred response type is `TakeSnapshotResponse`.
-      "a_key": "", # Properties of the object. Contains field @ype with type URL.
+      "a_key": "", # Properties of the object. Contains field @type with type URL.
     },
-    "error": { # The `Status` type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by [gRPC](https://github.com/grpc). The error model is designed to be: - Simple to use and understand for most users - Flexible enough to meet unexpected needs # Overview The `Status` message contains three pieces of data: error code, error message, and error details. The error code should be an enum value of google.rpc.Code, but it may accept additional error codes if needed. The error message should be a developer-facing English message that helps developers *understand* and *resolve* the error. If a localized user-facing error message is needed, put the localized message in the error details or localize it in the client. The optional error details may contain arbitrary information about the error. There is a predefined set of error detail types in the package `google.rpc` which can be used for common error conditions. # Language mapping The `Status` message is the logical representation of the error model, but it is not necessarily the actual wire format. When the `Status` message is exposed in different client libraries and different wire protocols, it can be mapped differently. For example, it will likely be mapped to some exceptions in Java, but more likely mapped to some error codes in C. # Other uses The error model and the `Status` message can be used in a variety of environments, either with or without APIs, to provide a consistent developer experience across different environments. Example uses of this error model include: - Partial errors. If a service needs to return partial errors to the client, it may embed the `Status` in the normal response to indicate the partial errors. - Workflow errors. A typical workflow has multiple steps. Each step may have a `Status` message for error reporting purpose. - Batch operations. If a client uses batch request and batch response, the `Status` message should be used directly inside batch response, one for each error sub-response. - Asynchronous operations. If an API call embeds asynchronous operation results in its response, the status of those operations should be represented directly using the `Status` message. - Logging. If some API errors are stored in logs, the message `Status` could be used directly after any stripping needed for security/privacy reasons. # The error result of the operation in case of failure.
+    "error": { # The `Status` type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by [gRPC](https://github.com/grpc). The error model is designed to be: - Simple to use and understand for most users - Flexible enough to meet unexpected needs # Overview The `Status` message contains three pieces of data: error code, error message, and error details. The error code should be an enum value of google.rpc.Code, but it may accept additional error codes if needed. The error message should be a developer-facing English message that helps developers *understand* and *resolve* the error. If a localized user-facing error message is needed, put the localized message in the error details or localize it in the client. The optional error details may contain arbitrary information about the error. There is a predefined set of error detail types in the package `google.rpc` which can be used for common error conditions. # Language mapping The `Status` message is the logical representation of the error model, but it is not necessarily the actual wire format. When the `Status` message is exposed in different client libraries and different wire protocols, it can be mapped differently. For example, it will likely be mapped to some exceptions in Java, but more likely mapped to some error codes in C. # Other uses The error model and the `Status` message can be used in a variety of environments, either with or without APIs, to provide a consistent developer experience across different environments. Example uses of this error model include: - Partial errors. If a service needs to return partial errors to the client, it may embed the `Status` in the normal response to indicate the partial errors. - Workflow errors. A typical workflow has multiple steps. Each step may have a `Status` message for error reporting purpose. - Batch operations. If a client uses batch request and batch response, the `Status` message should be used directly inside batch response, one for each error sub-response. - Asynchronous operations. If an API call embeds asynchronous operation results in its response, the status of those operations should be represented directly using the `Status` message. - Logging. If some API errors are stored in logs, the message `Status` could be used directly after any stripping needed for security/privacy reasons. # The error result of the operation in case of failure or cancellation.
       "message": "A String", # A developer-facing error message, which should be in English. Any user-facing error message should be localized and sent in the google.rpc.Status.details field, or localized by the client.
       "code": 42, # The status code, which should be an enum value of google.rpc.Code.
       "details": [ # A list of messages that carry the error details. There will be a common set of message types for APIs to use.
         {
-          "a_key": "", # Properties of the object. Contains field @ype with type URL.
+          "a_key": "", # Properties of the object. Contains field @type with type URL.
         },
       ],
     },
     "done": True or False, # If the value is `false`, it means the operation is still in progress. If true, the operation is completed, and either `error` or `response` is available.
     "name": "A String", # The server-assigned name, which is only unique within the same service that originally returns it. If you use the default HTTP mapping, the `name` should have the format of `operations/some/unique/name`.
     "metadata": { # Service-specific metadata associated with the operation. It typically contains progress information and common metadata such as create time. Some services might not provide such metadata. Any method that returns a long-running operation should document the metadata type, if any.
-      "a_key": "", # Properties of the object. Contains field @ype with type URL.
+      "a_key": "", # Properties of the object. Contains field @type with type URL.
     },
   }</pre>
 </div>
@@ -285,21 +297,21 @@
 
     { # This resource represents a long-running operation that is the result of a network API call.
     "response": { # The normal response of the operation in case of success. If the original method returns no data on success, such as `Delete`, the response is `google.protobuf.Empty`. If the original method is standard `Get`/`Create`/`Update`, the response should be the resource. For other methods, the response should have the type `XxxResponse`, where `Xxx` is the original method name. For example, if the original method name is `TakeSnapshot()`, the inferred response type is `TakeSnapshotResponse`.
-      "a_key": "", # Properties of the object. Contains field @ype with type URL.
+      "a_key": "", # Properties of the object. Contains field @type with type URL.
     },
-    "error": { # The `Status` type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by [gRPC](https://github.com/grpc). The error model is designed to be: - Simple to use and understand for most users - Flexible enough to meet unexpected needs # Overview The `Status` message contains three pieces of data: error code, error message, and error details. The error code should be an enum value of google.rpc.Code, but it may accept additional error codes if needed. The error message should be a developer-facing English message that helps developers *understand* and *resolve* the error. If a localized user-facing error message is needed, put the localized message in the error details or localize it in the client. The optional error details may contain arbitrary information about the error. There is a predefined set of error detail types in the package `google.rpc` which can be used for common error conditions. # Language mapping The `Status` message is the logical representation of the error model, but it is not necessarily the actual wire format. When the `Status` message is exposed in different client libraries and different wire protocols, it can be mapped differently. For example, it will likely be mapped to some exceptions in Java, but more likely mapped to some error codes in C. # Other uses The error model and the `Status` message can be used in a variety of environments, either with or without APIs, to provide a consistent developer experience across different environments. Example uses of this error model include: - Partial errors. If a service needs to return partial errors to the client, it may embed the `Status` in the normal response to indicate the partial errors. - Workflow errors. A typical workflow has multiple steps. Each step may have a `Status` message for error reporting purpose. - Batch operations. If a client uses batch request and batch response, the `Status` message should be used directly inside batch response, one for each error sub-response. - Asynchronous operations. If an API call embeds asynchronous operation results in its response, the status of those operations should be represented directly using the `Status` message. - Logging. If some API errors are stored in logs, the message `Status` could be used directly after any stripping needed for security/privacy reasons. # The error result of the operation in case of failure.
+    "error": { # The `Status` type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by [gRPC](https://github.com/grpc). The error model is designed to be: - Simple to use and understand for most users - Flexible enough to meet unexpected needs # Overview The `Status` message contains three pieces of data: error code, error message, and error details. The error code should be an enum value of google.rpc.Code, but it may accept additional error codes if needed. The error message should be a developer-facing English message that helps developers *understand* and *resolve* the error. If a localized user-facing error message is needed, put the localized message in the error details or localize it in the client. The optional error details may contain arbitrary information about the error. There is a predefined set of error detail types in the package `google.rpc` which can be used for common error conditions. # Language mapping The `Status` message is the logical representation of the error model, but it is not necessarily the actual wire format. When the `Status` message is exposed in different client libraries and different wire protocols, it can be mapped differently. For example, it will likely be mapped to some exceptions in Java, but more likely mapped to some error codes in C. # Other uses The error model and the `Status` message can be used in a variety of environments, either with or without APIs, to provide a consistent developer experience across different environments. Example uses of this error model include: - Partial errors. If a service needs to return partial errors to the client, it may embed the `Status` in the normal response to indicate the partial errors. - Workflow errors. A typical workflow has multiple steps. Each step may have a `Status` message for error reporting purpose. - Batch operations. If a client uses batch request and batch response, the `Status` message should be used directly inside batch response, one for each error sub-response. - Asynchronous operations. If an API call embeds asynchronous operation results in its response, the status of those operations should be represented directly using the `Status` message. - Logging. If some API errors are stored in logs, the message `Status` could be used directly after any stripping needed for security/privacy reasons. # The error result of the operation in case of failure or cancellation.
       "message": "A String", # A developer-facing error message, which should be in English. Any user-facing error message should be localized and sent in the google.rpc.Status.details field, or localized by the client.
       "code": 42, # The status code, which should be an enum value of google.rpc.Code.
       "details": [ # A list of messages that carry the error details. There will be a common set of message types for APIs to use.
         {
-          "a_key": "", # Properties of the object. Contains field @ype with type URL.
+          "a_key": "", # Properties of the object. Contains field @type with type URL.
         },
       ],
     },
     "done": True or False, # If the value is `false`, it means the operation is still in progress. If true, the operation is completed, and either `error` or `response` is available.
     "name": "A String", # The server-assigned name, which is only unique within the same service that originally returns it. If you use the default HTTP mapping, the `name` should have the format of `operations/some/unique/name`.
     "metadata": { # Service-specific metadata associated with the operation. It typically contains progress information and common metadata such as create time. Some services might not provide such metadata. Any method that returns a long-running operation should document the metadata type, if any.
-      "a_key": "", # Properties of the object. Contains field @ype with type URL.
+      "a_key": "", # Properties of the object. Contains field @type with type URL.
     },
   }</pre>
 </div>
@@ -319,18 +331,29 @@
 
     { # Describes the identifying information, config, and status of a cluster of Google Compute Engine instances.
     "status": { # The status of a cluster and its instances. # [Output-only] Cluster status.
-      "state": "A String", # The cluster's state.
-      "stateStartTime": "A String", # Time when this state was entered.
-      "detail": "A String", # Optional details of cluster's state.
+      "state": "A String", # [Output-only] The cluster's state.
+      "stateStartTime": "A String", # [Output-only] Time when this state was entered.
+      "detail": "A String", # [Output-only] Optional details of cluster's state.
     },
     "clusterUuid": "A String", # [Output-only] A cluster UUID (Unique Universal Identifier). Cloud Dataproc generates this value when it creates the cluster.
     "clusterName": "A String", # [Required] The cluster name. Cluster names within a project must be unique. Names of deleted clusters can be reused.
     "projectId": "A String", # [Required] The Google Cloud Platform project ID that the cluster belongs to.
+    "labels": { # [Optional] The labels to associate with this cluster. Label **keys** must contain 1 to 63 characters, and must conform to [RFC 1035](https://www.ietf.org/rfc/rfc1035.txt). Label **values** may be empty, but, if present, must contain 1 to 63 characters, and must conform to [RFC 1035](https://www.ietf.org/rfc/rfc1035.txt). No more than 32 labels can be associated with a cluster.
+      "a_key": "A String",
+    },
+    "metrics": { # Contains cluster daemon metrics, such as HDFS and YARN stats. **Beta Feature**: This report is available for testing purposes only. It may be changed before final release. # Contains cluster daemon metrics such as HDFS and YARN stats. **Beta Feature**: This report is available for testing purposes only. It may be changed before final release.
+      "yarnMetrics": { # The YARN metrics.
+        "a_key": "A String",
+      },
+      "hdfsMetrics": { # The HDFS metrics.
+        "a_key": "A String",
+      },
+    },
     "statusHistory": [ # [Output-only] The previous cluster status.
       { # The status of a cluster and its instances.
-        "state": "A String", # The cluster's state.
-        "stateStartTime": "A String", # Time when this state was entered.
-        "detail": "A String", # Optional details of cluster's state.
+        "state": "A String", # [Output-only] The cluster's state.
+        "stateStartTime": "A String", # [Output-only] Time when this state was entered.
+        "detail": "A String", # [Output-only] Optional details of cluster's state.
       },
     ],
     "config": { # The cluster config. # [Required] The cluster config. Note that Cloud Dataproc may set default values, and values may change when clusters are updated.
@@ -342,74 +365,75 @@
       },
       "configBucket": "A String", # [Optional] A Google Cloud Storage staging bucket used for sharing generated SSH keys and config. If you do not specify a staging bucket, Cloud Dataproc will determine an appropriate Cloud Storage location (US, ASIA, or EU) for your cluster's staging bucket according to the Google Compute Engine zone where your cluster is deployed, and then it will create and manage this project-level, per-location bucket for you.
       "gceClusterConfig": { # Common config settings for resources of Google Compute Engine cluster instances, applicable to all instances in the cluster. # [Required] The shared Google Compute Engine config settings for all instances in a cluster.
-        "networkUri": "A String", # The Google Compute Engine network to be used for machine communications. Cannot be specified with subnetwork_uri. If neither network_uri nor subnetwork_uri is specified, the "default" network of the project is used, if it exists. Cannot be a "Custom Subnet Network" (see https://cloud.google.com/compute/docs/subnetworks for more information). Example: `https://www.googleapis.com/compute/v1/projects/[project_id]/regions/global/default`.
-        "tags": [ # The Google Compute Engine tags to add to all instances.
+        "internalIpOnly": True or False, # [Optional] If true, all instances in the cluster will only have internal IP addresses. By default, clusters are not restricted to internal IP addresses, and will have ephemeral external IP addresses assigned to each instance. This `internal_ip_only` restriction can only be enabled for subnetwork enabled networks, and all off-cluster dependencies must be configured to be accessible without external IP addresses.
+        "networkUri": "A String", # [Optional] The Google Compute Engine network to be used for machine communications. Cannot be specified with subnetwork_uri. If neither `network_uri` nor `subnetwork_uri` is specified, the "default" network of the project is used, if it exists. Cannot be a "Custom Subnet Network" (see [Using Subnetworks](/compute/docs/subnetworks) for more information). Example: `https://www.googleapis.com/compute/v1/projects/[project_id]/regions/global/default`.
+        "tags": [ # The Google Compute Engine tags to add to all instances (see [Tagging instances](/compute/docs/label-or-tag-resources#tags)).
           "A String",
         ],
         "zoneUri": "A String", # [Required] The zone where the Google Compute Engine cluster will be located. Example: `https://www.googleapis.com/compute/v1/projects/[project_id]/zones/[zone]`.
-        "subnetworkUri": "A String", # The Google Compute Engine subnetwork to be used for machine communications. Cannot be specified with network_uri. Example: `https://www.googleapis.com/compute/v1/projects/[project_id]/regions/us-east1/sub0`.
-        "serviceAccountScopes": [ # The URIs of service account scopes to be included in Google Compute Engine instances. The following base set of scopes is always included: * https://www.googleapis.com/auth/cloud.useraccounts.readonly * https://www.googleapis.com/auth/devstorage.read_write * https://www.googleapis.com/auth/logging.write If no scopes are specfied, the following defaults are also provided: * https://www.googleapis.com/auth/bigquery * https://www.googleapis.com/auth/bigtable.admin.table * https://www.googleapis.com/auth/bigtable.data * https://www.googleapis.com/auth/devstorage.full_control
+        "subnetworkUri": "A String", # [Optional] The Google Compute Engine subnetwork to be used for machine communications. Cannot be specified with network_uri. Example: `https://www.googleapis.com/compute/v1/projects/[project_id]/regions/us-east1/sub0`.
+        "serviceAccountScopes": [ # [Optional] The URIs of service account scopes to be included in Google Compute Engine instances. The following base set of scopes is always included: * https://www.googleapis.com/auth/cloud.useraccounts.readonly * https://www.googleapis.com/auth/devstorage.read_write * https://www.googleapis.com/auth/logging.write If no scopes are specified, the following defaults are also provided: * https://www.googleapis.com/auth/bigquery * https://www.googleapis.com/auth/bigtable.admin.table * https://www.googleapis.com/auth/bigtable.data * https://www.googleapis.com/auth/devstorage.full_control
           "A String",
         ],
-        "metadata": { # The Google Compute Engine metadata entries to add to all instances.
+        "metadata": { # The Google Compute Engine metadata entries to add to all instances (see [Project and instance metadata](https://cloud.google.com/compute/docs/storing-retrieving-metadata#project_and_instance_metadata)).
           "a_key": "A String",
         },
       },
-      "workerConfig": { # The config settings for Google Compute Engine resources in an instance group, such as a master or worker group. # [Optional] The Google Compute Engine config settings for worker instances in a cluster.
-        "isPreemptible": True or False, # Specifies that this instance group contains Preemptible Instances.
-        "machineTypeUri": "A String", # The Google Compute Engine machine type used for cluster instances. Example: `https://www.googleapis.com/compute/v1/projects/[project_id]/zones/us-east1-a/machineTypes/n1-standard-2`.
-        "instanceNames": [ # The list of instance names. Cloud Dataproc derives the names from `cluster_name`, `num_instances`, and the instance group if not set by user (recommended practice is to let Cloud Dataproc derive the name).
+      "workerConfig": { # [Optional] The config settings for Google Compute Engine resources in an instance group, such as a master or worker group. # [Optional] The Google Compute Engine config settings for worker instances in a cluster.
+        "isPreemptible": True or False, # [Optional] Specifies that this instance group contains preemptible instances.
+        "machineTypeUri": "A String", # [Required] The Google Compute Engine machine type used for cluster instances. Example: `https://www.googleapis.com/compute/v1/projects/[project_id]/zones/us-east1-a/machineTypes/n1-standard-2`.
+        "instanceNames": [ # [Optional] The list of instance names. Cloud Dataproc derives the names from `cluster_name`, `num_instances`, and the instance group if not set by user (recommended practice is to let Cloud Dataproc derive the name).
           "A String",
         ],
-        "diskConfig": { # Specifies the config of disk options for a group of VM instances. # Disk option config settings.
-          "numLocalSsds": 42, # [Optional] Number of attached SSDs, from 0 to 4 (default is 0). If SSDs are not attached, the boot disk is used to store runtime logs and HDFS data. If one or more SSDs are attached, this runtime bulk data is spread across them, and the boot disk contains only basic config and installed binaries.
+        "diskConfig": { # Specifies the config of disk options for a group of VM instances. # [Optional] Disk option config settings.
+          "numLocalSsds": 42, # [Optional] Number of attached SSDs, from 0 to 4 (default is 0). If SSDs are not attached, the boot disk is used to store runtime logs and [HDFS](https://hadoop.apache.org/docs/r1.2.1/hdfs_user_guide.html) data. If one or more SSDs are attached, this runtime bulk data is spread across them, and the boot disk contains only basic config and installed binaries.
           "bootDiskSizeGb": 42, # [Optional] Size in GB of the boot disk (default is 500GB).
         },
         "managedGroupConfig": { # Specifies the resources used to actively manage an instance group. # [Output-only] The config for Google Compute Engine Instance Group Manager that manages this group. This is only used for preemptible instance groups.
           "instanceTemplateName": "A String", # [Output-only] The name of the Instance Template used for the Managed Instance Group.
           "instanceGroupManagerName": "A String", # [Output-only] The name of the Instance Group Manager for this group.
         },
-        "numInstances": 42, # The number of VM instances in the instance group. For master instance groups, must be set to 1.
+        "numInstances": 42, # [Required] The number of VM instances in the instance group. For master instance groups, must be set to 1.
         "imageUri": "A String", # [Output-only] The Google Compute Engine image resource used for cluster instances. Inferred from `SoftwareConfig.image_version`.
       },
-      "initializationActions": [ # [Optional] Commands to execute on each node after config is completed. By default, executables are run on master and all worker nodes. You can test a node's role metadata to run an executable on a master or worker node, as shown below: ROLE=$(/usr/share/google/get_metadata_value attributes/role) if [[ "${ROLE}" == 'Master' ]]; then ... master specific actions ... else ... worker specific actions ... fi
+      "initializationActions": [ # [Optional] Commands to execute on each node after config is completed. By default, executables are run on master and all worker nodes. You can test a node's role metadata to run an executable on a master or worker node, as shown below using `curl` (you can also use `wget`): ROLE=$(curl -H Metadata-Flavor:Google http://metadata/computeMetadata/v1/instance/attributes/dataproc-role) if [[ "${ROLE}" == 'Master' ]]; then ... master specific actions ... else ... worker specific actions ... fi
         { # Specifies an executable to run on a fully configured node and a timeout period for executable completion.
           "executionTimeout": "A String", # [Optional] Amount of time executable has to complete. Default is 10 minutes. Cluster creation fails with an explanatory error message (the name of the executable that caused the error and the exceeded timeout period) if the executable is not completed at end of the timeout period.
           "executableFile": "A String", # [Required] Google Cloud Storage URI of executable file.
         },
       ],
-      "secondaryWorkerConfig": { # The config settings for Google Compute Engine resources in an instance group, such as a master or worker group. # [Optional] The Google Compute Engine config settings for additional worker instances in a cluster.
-        "isPreemptible": True or False, # Specifies that this instance group contains Preemptible Instances.
-        "machineTypeUri": "A String", # The Google Compute Engine machine type used for cluster instances. Example: `https://www.googleapis.com/compute/v1/projects/[project_id]/zones/us-east1-a/machineTypes/n1-standard-2`.
-        "instanceNames": [ # The list of instance names. Cloud Dataproc derives the names from `cluster_name`, `num_instances`, and the instance group if not set by user (recommended practice is to let Cloud Dataproc derive the name).
+      "secondaryWorkerConfig": { # [Optional] The config settings for Google Compute Engine resources in an instance group, such as a master or worker group. # [Optional] The Google Compute Engine config settings for additional worker instances in a cluster.
+        "isPreemptible": True or False, # [Optional] Specifies that this instance group contains preemptible instances.
+        "machineTypeUri": "A String", # [Required] The Google Compute Engine machine type used for cluster instances. Example: `https://www.googleapis.com/compute/v1/projects/[project_id]/zones/us-east1-a/machineTypes/n1-standard-2`.
+        "instanceNames": [ # [Optional] The list of instance names. Cloud Dataproc derives the names from `cluster_name`, `num_instances`, and the instance group if not set by user (recommended practice is to let Cloud Dataproc derive the name).
           "A String",
         ],
-        "diskConfig": { # Specifies the config of disk options for a group of VM instances. # Disk option config settings.
-          "numLocalSsds": 42, # [Optional] Number of attached SSDs, from 0 to 4 (default is 0). If SSDs are not attached, the boot disk is used to store runtime logs and HDFS data. If one or more SSDs are attached, this runtime bulk data is spread across them, and the boot disk contains only basic config and installed binaries.
+        "diskConfig": { # Specifies the config of disk options for a group of VM instances. # [Optional] Disk option config settings.
+          "numLocalSsds": 42, # [Optional] Number of attached SSDs, from 0 to 4 (default is 0). If SSDs are not attached, the boot disk is used to store runtime logs and [HDFS](https://hadoop.apache.org/docs/r1.2.1/hdfs_user_guide.html) data. If one or more SSDs are attached, this runtime bulk data is spread across them, and the boot disk contains only basic config and installed binaries.
           "bootDiskSizeGb": 42, # [Optional] Size in GB of the boot disk (default is 500GB).
         },
         "managedGroupConfig": { # Specifies the resources used to actively manage an instance group. # [Output-only] The config for Google Compute Engine Instance Group Manager that manages this group. This is only used for preemptible instance groups.
           "instanceTemplateName": "A String", # [Output-only] The name of the Instance Template used for the Managed Instance Group.
           "instanceGroupManagerName": "A String", # [Output-only] The name of the Instance Group Manager for this group.
         },
-        "numInstances": 42, # The number of VM instances in the instance group. For master instance groups, must be set to 1.
+        "numInstances": 42, # [Required] The number of VM instances in the instance group. For master instance groups, must be set to 1.
         "imageUri": "A String", # [Output-only] The Google Compute Engine image resource used for cluster instances. Inferred from `SoftwareConfig.image_version`.
       },
-      "masterConfig": { # The config settings for Google Compute Engine resources in an instance group, such as a master or worker group. # [Optional] The Google Compute Engine config settings for the master instance in a cluster.
-        "isPreemptible": True or False, # Specifies that this instance group contains Preemptible Instances.
-        "machineTypeUri": "A String", # The Google Compute Engine machine type used for cluster instances. Example: `https://www.googleapis.com/compute/v1/projects/[project_id]/zones/us-east1-a/machineTypes/n1-standard-2`.
-        "instanceNames": [ # The list of instance names. Cloud Dataproc derives the names from `cluster_name`, `num_instances`, and the instance group if not set by user (recommended practice is to let Cloud Dataproc derive the name).
+      "masterConfig": { # [Optional] The config settings for Google Compute Engine resources in an instance group, such as a master or worker group. # [Optional] The Google Compute Engine config settings for the master instance in a cluster.
+        "isPreemptible": True or False, # [Optional] Specifies that this instance group contains preemptible instances.
+        "machineTypeUri": "A String", # [Required] The Google Compute Engine machine type used for cluster instances. Example: `https://www.googleapis.com/compute/v1/projects/[project_id]/zones/us-east1-a/machineTypes/n1-standard-2`.
+        "instanceNames": [ # [Optional] The list of instance names. Cloud Dataproc derives the names from `cluster_name`, `num_instances`, and the instance group if not set by user (recommended practice is to let Cloud Dataproc derive the name).
           "A String",
         ],
-        "diskConfig": { # Specifies the config of disk options for a group of VM instances. # Disk option config settings.
-          "numLocalSsds": 42, # [Optional] Number of attached SSDs, from 0 to 4 (default is 0). If SSDs are not attached, the boot disk is used to store runtime logs and HDFS data. If one or more SSDs are attached, this runtime bulk data is spread across them, and the boot disk contains only basic config and installed binaries.
+        "diskConfig": { # Specifies the config of disk options for a group of VM instances. # [Optional] Disk option config settings.
+          "numLocalSsds": 42, # [Optional] Number of attached SSDs, from 0 to 4 (default is 0). If SSDs are not attached, the boot disk is used to store runtime logs and [HDFS](https://hadoop.apache.org/docs/r1.2.1/hdfs_user_guide.html) data. If one or more SSDs are attached, this runtime bulk data is spread across them, and the boot disk contains only basic config and installed binaries.
           "bootDiskSizeGb": 42, # [Optional] Size in GB of the boot disk (default is 500GB).
         },
         "managedGroupConfig": { # Specifies the resources used to actively manage an instance group. # [Output-only] The config for Google Compute Engine Instance Group Manager that manages this group. This is only used for preemptible instance groups.
           "instanceTemplateName": "A String", # [Output-only] The name of the Instance Template used for the Managed Instance Group.
           "instanceGroupManagerName": "A String", # [Output-only] The name of the Instance Group Manager for this group.
         },
-        "numInstances": 42, # The number of VM instances in the instance group. For master instance groups, must be set to 1.
+        "numInstances": 42, # [Required] The number of VM instances in the instance group. For master instance groups, must be set to 1.
         "imageUri": "A String", # [Output-only] The Google Compute Engine image resource used for cluster instances. Inferred from `SoftwareConfig.image_version`.
       },
     },
@@ -417,36 +441,48 @@
 </div>
 
 <div class="method">
-    <code class="details" id="list">list(projectId, region, pageSize=None, pageToken=None, x__xgafv=None)</code>
+    <code class="details" id="list">list(projectId, region, pageSize=None, filter=None, pageToken=None, x__xgafv=None)</code>
   <pre>Lists all regions/{region}/clusters in a project.
 
 Args:
   projectId: string, [Required] The ID of the Google Cloud Platform project that the cluster belongs to. (required)
   region: string, [Required] The Cloud Dataproc region in which to handle the request. (required)
-  pageSize: integer, The standard List page size.
-  pageToken: string, The standard List page token.
+  pageSize: integer, [Optional] The standard List page size.
+  filter: string, [Optional] A filter constraining the clusters to list. Filters are case-sensitive and have the following syntax: field:value [field:value] ... or field = value [AND [field = value]] ... where **field** is one of `status.state`, `clusterName`, or `labels.[KEY]`, and `[KEY]` is a label key. **value** can be `*` to match all values. `status.state` can be one of the following: `ACTIVE`, `INACTIVE`, `CREATING`, `RUNNING`, `ERROR`, `DELETING`, or `UPDATING`. `ACTIVE` contains the `CREATING`, `UPDATING`, and `RUNNING` states. `INACTIVE` contains the `DELETING` and `ERROR` states. `clusterName` is the name of the cluster provided at creation time. Only the logical `AND` operator is supported; space-separated items are treated as having an implicit `AND` operator. Example valid filters are: status.state:ACTIVE clusterName:mycluster labels.env:staging \ labels.starred:* and status.state = ACTIVE AND clusterName = mycluster \ AND labels.env = staging AND labels.starred = *
+  pageToken: string, [Optional] The standard List page token.
   x__xgafv: string, V1 error format.
 
 Returns:
   An object of the form:
 
     { # The list of all clusters in a project.
-    "nextPageToken": "A String", # [Optional] This token is included in the response if there are more results to fetch. To fetch additional results, provide this value as the `page_token` in a subsequent ListClustersRequest.
+    "nextPageToken": "A String", # [Output-only] This token is included in the response if there are more results to fetch. To fetch additional results, provide this value as the `page_token` in a subsequent ListClustersRequest.
     "clusters": [ # [Output-only] The clusters in the project.
       { # Describes the identifying information, config, and status of a cluster of Google Compute Engine instances.
         "status": { # The status of a cluster and its instances. # [Output-only] Cluster status.
-          "state": "A String", # The cluster's state.
-          "stateStartTime": "A String", # Time when this state was entered.
-          "detail": "A String", # Optional details of cluster's state.
+          "state": "A String", # [Output-only] The cluster's state.
+          "stateStartTime": "A String", # [Output-only] Time when this state was entered.
+          "detail": "A String", # [Output-only] Optional details of cluster's state.
         },
         "clusterUuid": "A String", # [Output-only] A cluster UUID (Unique Universal Identifier). Cloud Dataproc generates this value when it creates the cluster.
         "clusterName": "A String", # [Required] The cluster name. Cluster names within a project must be unique. Names of deleted clusters can be reused.
         "projectId": "A String", # [Required] The Google Cloud Platform project ID that the cluster belongs to.
+        "labels": { # [Optional] The labels to associate with this cluster. Label **keys** must contain 1 to 63 characters, and must conform to [RFC 1035](https://www.ietf.org/rfc/rfc1035.txt). Label **values** may be empty, but, if present, must contain 1 to 63 characters, and must conform to [RFC 1035](https://www.ietf.org/rfc/rfc1035.txt). No more than 32 labels can be associated with a cluster.
+          "a_key": "A String",
+        },
+        "metrics": { # Contains cluster daemon metrics, such as HDFS and YARN stats. **Beta Feature**: This report is available for testing purposes only. It may be changed before final release. # Contains cluster daemon metrics such as HDFS and YARN stats. **Beta Feature**: This report is available for testing purposes only. It may be changed before final release.
+          "yarnMetrics": { # The YARN metrics.
+            "a_key": "A String",
+          },
+          "hdfsMetrics": { # The HDFS metrics.
+            "a_key": "A String",
+          },
+        },
         "statusHistory": [ # [Output-only] The previous cluster status.
           { # The status of a cluster and its instances.
-            "state": "A String", # The cluster's state.
-            "stateStartTime": "A String", # Time when this state was entered.
-            "detail": "A String", # Optional details of cluster's state.
+            "state": "A String", # [Output-only] The cluster's state.
+            "stateStartTime": "A String", # [Output-only] Time when this state was entered.
+            "detail": "A String", # [Output-only] Optional details of cluster's state.
           },
         ],
         "config": { # The cluster config. # [Required] The cluster config. Note that Cloud Dataproc may set default values, and values may change when clusters are updated.
@@ -458,74 +494,75 @@
           },
           "configBucket": "A String", # [Optional] A Google Cloud Storage staging bucket used for sharing generated SSH keys and config. If you do not specify a staging bucket, Cloud Dataproc will determine an appropriate Cloud Storage location (US, ASIA, or EU) for your cluster's staging bucket according to the Google Compute Engine zone where your cluster is deployed, and then it will create and manage this project-level, per-location bucket for you.
           "gceClusterConfig": { # Common config settings for resources of Google Compute Engine cluster instances, applicable to all instances in the cluster. # [Required] The shared Google Compute Engine config settings for all instances in a cluster.
-            "networkUri": "A String", # The Google Compute Engine network to be used for machine communications. Cannot be specified with subnetwork_uri. If neither network_uri nor subnetwork_uri is specified, the "default" network of the project is used, if it exists. Cannot be a "Custom Subnet Network" (see https://cloud.google.com/compute/docs/subnetworks for more information). Example: `https://www.googleapis.com/compute/v1/projects/[project_id]/regions/global/default`.
-            "tags": [ # The Google Compute Engine tags to add to all instances.
+            "internalIpOnly": True or False, # [Optional] If true, all instances in the cluster will only have internal IP addresses. By default, clusters are not restricted to internal IP addresses, and will have ephemeral external IP addresses assigned to each instance. This `internal_ip_only` restriction can only be enabled for subnetwork enabled networks, and all off-cluster dependencies must be configured to be accessible without external IP addresses.
+            "networkUri": "A String", # [Optional] The Google Compute Engine network to be used for machine communications. Cannot be specified with subnetwork_uri. If neither `network_uri` nor `subnetwork_uri` is specified, the "default" network of the project is used, if it exists. Cannot be a "Custom Subnet Network" (see [Using Subnetworks](/compute/docs/subnetworks) for more information). Example: `https://www.googleapis.com/compute/v1/projects/[project_id]/regions/global/default`.
+            "tags": [ # The Google Compute Engine tags to add to all instances (see [Tagging instances](/compute/docs/label-or-tag-resources#tags)).
               "A String",
             ],
             "zoneUri": "A String", # [Required] The zone where the Google Compute Engine cluster will be located. Example: `https://www.googleapis.com/compute/v1/projects/[project_id]/zones/[zone]`.
-            "subnetworkUri": "A String", # The Google Compute Engine subnetwork to be used for machine communications. Cannot be specified with network_uri. Example: `https://www.googleapis.com/compute/v1/projects/[project_id]/regions/us-east1/sub0`.
-            "serviceAccountScopes": [ # The URIs of service account scopes to be included in Google Compute Engine instances. The following base set of scopes is always included: * https://www.googleapis.com/auth/cloud.useraccounts.readonly * https://www.googleapis.com/auth/devstorage.read_write * https://www.googleapis.com/auth/logging.write If no scopes are specfied, the following defaults are also provided: * https://www.googleapis.com/auth/bigquery * https://www.googleapis.com/auth/bigtable.admin.table * https://www.googleapis.com/auth/bigtable.data * https://www.googleapis.com/auth/devstorage.full_control
+            "subnetworkUri": "A String", # [Optional] The Google Compute Engine subnetwork to be used for machine communications. Cannot be specified with network_uri. Example: `https://www.googleapis.com/compute/v1/projects/[project_id]/regions/us-east1/sub0`.
+            "serviceAccountScopes": [ # [Optional] The URIs of service account scopes to be included in Google Compute Engine instances. The following base set of scopes is always included: * https://www.googleapis.com/auth/cloud.useraccounts.readonly * https://www.googleapis.com/auth/devstorage.read_write * https://www.googleapis.com/auth/logging.write If no scopes are specified, the following defaults are also provided: * https://www.googleapis.com/auth/bigquery * https://www.googleapis.com/auth/bigtable.admin.table * https://www.googleapis.com/auth/bigtable.data * https://www.googleapis.com/auth/devstorage.full_control
               "A String",
             ],
-            "metadata": { # The Google Compute Engine metadata entries to add to all instances.
+            "metadata": { # The Google Compute Engine metadata entries to add to all instances (see [Project and instance metadata](https://cloud.google.com/compute/docs/storing-retrieving-metadata#project_and_instance_metadata)).
               "a_key": "A String",
             },
           },
-          "workerConfig": { # The config settings for Google Compute Engine resources in an instance group, such as a master or worker group. # [Optional] The Google Compute Engine config settings for worker instances in a cluster.
-            "isPreemptible": True or False, # Specifies that this instance group contains Preemptible Instances.
-            "machineTypeUri": "A String", # The Google Compute Engine machine type used for cluster instances. Example: `https://www.googleapis.com/compute/v1/projects/[project_id]/zones/us-east1-a/machineTypes/n1-standard-2`.
-            "instanceNames": [ # The list of instance names. Cloud Dataproc derives the names from `cluster_name`, `num_instances`, and the instance group if not set by user (recommended practice is to let Cloud Dataproc derive the name).
+          "workerConfig": { # [Optional] The config settings for Google Compute Engine resources in an instance group, such as a master or worker group. # [Optional] The Google Compute Engine config settings for worker instances in a cluster.
+            "isPreemptible": True or False, # [Optional] Specifies that this instance group contains preemptible instances.
+            "machineTypeUri": "A String", # [Required] The Google Compute Engine machine type used for cluster instances. Example: `https://www.googleapis.com/compute/v1/projects/[project_id]/zones/us-east1-a/machineTypes/n1-standard-2`.
+            "instanceNames": [ # [Optional] The list of instance names. Cloud Dataproc derives the names from `cluster_name`, `num_instances`, and the instance group if not set by user (recommended practice is to let Cloud Dataproc derive the name).
               "A String",
             ],
-            "diskConfig": { # Specifies the config of disk options for a group of VM instances. # Disk option config settings.
-              "numLocalSsds": 42, # [Optional] Number of attached SSDs, from 0 to 4 (default is 0). If SSDs are not attached, the boot disk is used to store runtime logs and HDFS data. If one or more SSDs are attached, this runtime bulk data is spread across them, and the boot disk contains only basic config and installed binaries.
+            "diskConfig": { # Specifies the config of disk options for a group of VM instances. # [Optional] Disk option config settings.
+              "numLocalSsds": 42, # [Optional] Number of attached SSDs, from 0 to 4 (default is 0). If SSDs are not attached, the boot disk is used to store runtime logs and [HDFS](https://hadoop.apache.org/docs/r1.2.1/hdfs_user_guide.html) data. If one or more SSDs are attached, this runtime bulk data is spread across them, and the boot disk contains only basic config and installed binaries.
               "bootDiskSizeGb": 42, # [Optional] Size in GB of the boot disk (default is 500GB).
             },
             "managedGroupConfig": { # Specifies the resources used to actively manage an instance group. # [Output-only] The config for Google Compute Engine Instance Group Manager that manages this group. This is only used for preemptible instance groups.
               "instanceTemplateName": "A String", # [Output-only] The name of the Instance Template used for the Managed Instance Group.
               "instanceGroupManagerName": "A String", # [Output-only] The name of the Instance Group Manager for this group.
             },
-            "numInstances": 42, # The number of VM instances in the instance group. For master instance groups, must be set to 1.
+            "numInstances": 42, # [Required] The number of VM instances in the instance group. For master instance groups, must be set to 1.
             "imageUri": "A String", # [Output-only] The Google Compute Engine image resource used for cluster instances. Inferred from `SoftwareConfig.image_version`.
           },
-          "initializationActions": [ # [Optional] Commands to execute on each node after config is completed. By default, executables are run on master and all worker nodes. You can test a node's role metadata to run an executable on a master or worker node, as shown below: ROLE=$(/usr/share/google/get_metadata_value attributes/role) if [[ "${ROLE}" == 'Master' ]]; then ... master specific actions ... else ... worker specific actions ... fi
+          "initializationActions": [ # [Optional] Commands to execute on each node after config is completed. By default, executables are run on master and all worker nodes. You can test a node's role metadata to run an executable on a master or worker node, as shown below using `curl` (you can also use `wget`): ROLE=$(curl -H Metadata-Flavor:Google http://metadata/computeMetadata/v1/instance/attributes/dataproc-role) if [[ "${ROLE}" == 'Master' ]]; then ... master specific actions ... else ... worker specific actions ... fi
             { # Specifies an executable to run on a fully configured node and a timeout period for executable completion.
               "executionTimeout": "A String", # [Optional] Amount of time executable has to complete. Default is 10 minutes. Cluster creation fails with an explanatory error message (the name of the executable that caused the error and the exceeded timeout period) if the executable is not completed at end of the timeout period.
               "executableFile": "A String", # [Required] Google Cloud Storage URI of executable file.
             },
           ],
-          "secondaryWorkerConfig": { # The config settings for Google Compute Engine resources in an instance group, such as a master or worker group. # [Optional] The Google Compute Engine config settings for additional worker instances in a cluster.
-            "isPreemptible": True or False, # Specifies that this instance group contains Preemptible Instances.
-            "machineTypeUri": "A String", # The Google Compute Engine machine type used for cluster instances. Example: `https://www.googleapis.com/compute/v1/projects/[project_id]/zones/us-east1-a/machineTypes/n1-standard-2`.
-            "instanceNames": [ # The list of instance names. Cloud Dataproc derives the names from `cluster_name`, `num_instances`, and the instance group if not set by user (recommended practice is to let Cloud Dataproc derive the name).
+          "secondaryWorkerConfig": { # [Optional] The config settings for Google Compute Engine resources in an instance group, such as a master or worker group. # [Optional] The Google Compute Engine config settings for additional worker instances in a cluster.
+            "isPreemptible": True or False, # [Optional] Specifies that this instance group contains preemptible instances.
+            "machineTypeUri": "A String", # [Required] The Google Compute Engine machine type used for cluster instances. Example: `https://www.googleapis.com/compute/v1/projects/[project_id]/zones/us-east1-a/machineTypes/n1-standard-2`.
+            "instanceNames": [ # [Optional] The list of instance names. Cloud Dataproc derives the names from `cluster_name`, `num_instances`, and the instance group if not set by user (recommended practice is to let Cloud Dataproc derive the name).
               "A String",
             ],
-            "diskConfig": { # Specifies the config of disk options for a group of VM instances. # Disk option config settings.
-              "numLocalSsds": 42, # [Optional] Number of attached SSDs, from 0 to 4 (default is 0). If SSDs are not attached, the boot disk is used to store runtime logs and HDFS data. If one or more SSDs are attached, this runtime bulk data is spread across them, and the boot disk contains only basic config and installed binaries.
+            "diskConfig": { # Specifies the config of disk options for a group of VM instances. # [Optional] Disk option config settings.
+              "numLocalSsds": 42, # [Optional] Number of attached SSDs, from 0 to 4 (default is 0). If SSDs are not attached, the boot disk is used to store runtime logs and [HDFS](https://hadoop.apache.org/docs/r1.2.1/hdfs_user_guide.html) data. If one or more SSDs are attached, this runtime bulk data is spread across them, and the boot disk contains only basic config and installed binaries.
               "bootDiskSizeGb": 42, # [Optional] Size in GB of the boot disk (default is 500GB).
             },
             "managedGroupConfig": { # Specifies the resources used to actively manage an instance group. # [Output-only] The config for Google Compute Engine Instance Group Manager that manages this group. This is only used for preemptible instance groups.
               "instanceTemplateName": "A String", # [Output-only] The name of the Instance Template used for the Managed Instance Group.
               "instanceGroupManagerName": "A String", # [Output-only] The name of the Instance Group Manager for this group.
             },
-            "numInstances": 42, # The number of VM instances in the instance group. For master instance groups, must be set to 1.
+            "numInstances": 42, # [Required] The number of VM instances in the instance group. For master instance groups, must be set to 1.
             "imageUri": "A String", # [Output-only] The Google Compute Engine image resource used for cluster instances. Inferred from `SoftwareConfig.image_version`.
           },
-          "masterConfig": { # The config settings for Google Compute Engine resources in an instance group, such as a master or worker group. # [Optional] The Google Compute Engine config settings for the master instance in a cluster.
-            "isPreemptible": True or False, # Specifies that this instance group contains Preemptible Instances.
-            "machineTypeUri": "A String", # The Google Compute Engine machine type used for cluster instances. Example: `https://www.googleapis.com/compute/v1/projects/[project_id]/zones/us-east1-a/machineTypes/n1-standard-2`.
-            "instanceNames": [ # The list of instance names. Cloud Dataproc derives the names from `cluster_name`, `num_instances`, and the instance group if not set by user (recommended practice is to let Cloud Dataproc derive the name).
+          "masterConfig": { # [Optional] The config settings for Google Compute Engine resources in an instance group, such as a master or worker group. # [Optional] The Google Compute Engine config settings for the master instance in a cluster.
+            "isPreemptible": True or False, # [Optional] Specifies that this instance group contains preemptible instances.
+            "machineTypeUri": "A String", # [Required] The Google Compute Engine machine type used for cluster instances. Example: `https://www.googleapis.com/compute/v1/projects/[project_id]/zones/us-east1-a/machineTypes/n1-standard-2`.
+            "instanceNames": [ # [Optional] The list of instance names. Cloud Dataproc derives the names from `cluster_name`, `num_instances`, and the instance group if not set by user (recommended practice is to let Cloud Dataproc derive the name).
               "A String",
             ],
-            "diskConfig": { # Specifies the config of disk options for a group of VM instances. # Disk option config settings.
-              "numLocalSsds": 42, # [Optional] Number of attached SSDs, from 0 to 4 (default is 0). If SSDs are not attached, the boot disk is used to store runtime logs and HDFS data. If one or more SSDs are attached, this runtime bulk data is spread across them, and the boot disk contains only basic config and installed binaries.
+            "diskConfig": { # Specifies the config of disk options for a group of VM instances. # [Optional] Disk option config settings.
+              "numLocalSsds": 42, # [Optional] Number of attached SSDs, from 0 to 4 (default is 0). If SSDs are not attached, the boot disk is used to store runtime logs and [HDFS](https://hadoop.apache.org/docs/r1.2.1/hdfs_user_guide.html) data. If one or more SSDs are attached, this runtime bulk data is spread across them, and the boot disk contains only basic config and installed binaries.
               "bootDiskSizeGb": 42, # [Optional] Size in GB of the boot disk (default is 500GB).
             },
             "managedGroupConfig": { # Specifies the resources used to actively manage an instance group. # [Output-only] The config for Google Compute Engine Instance Group Manager that manages this group. This is only used for preemptible instance groups.
               "instanceTemplateName": "A String", # [Output-only] The name of the Instance Template used for the Managed Instance Group.
               "instanceGroupManagerName": "A String", # [Output-only] The name of the Instance Group Manager for this group.
             },
-            "numInstances": 42, # The number of VM instances in the instance group. For master instance groups, must be set to 1.
+            "numInstances": 42, # [Required] The number of VM instances in the instance group. For master instance groups, must be set to 1.
             "imageUri": "A String", # [Output-only] The Google Compute Engine image resource used for cluster instances. Inferred from `SoftwareConfig.image_version`.
           },
         },
@@ -561,18 +598,29 @@
 
 { # Describes the identifying information, config, and status of a cluster of Google Compute Engine instances.
   "status": { # The status of a cluster and its instances. # [Output-only] Cluster status.
-    "state": "A String", # The cluster's state.
-    "stateStartTime": "A String", # Time when this state was entered.
-    "detail": "A String", # Optional details of cluster's state.
+    "state": "A String", # [Output-only] The cluster's state.
+    "stateStartTime": "A String", # [Output-only] Time when this state was entered.
+    "detail": "A String", # [Output-only] Optional details of cluster's state.
   },
   "clusterUuid": "A String", # [Output-only] A cluster UUID (Unique Universal Identifier). Cloud Dataproc generates this value when it creates the cluster.
   "clusterName": "A String", # [Required] The cluster name. Cluster names within a project must be unique. Names of deleted clusters can be reused.
   "projectId": "A String", # [Required] The Google Cloud Platform project ID that the cluster belongs to.
+  "labels": { # [Optional] The labels to associate with this cluster. Label **keys** must contain 1 to 63 characters, and must conform to [RFC 1035](https://www.ietf.org/rfc/rfc1035.txt). Label **values** may be empty, but, if present, must contain 1 to 63 characters, and must conform to [RFC 1035](https://www.ietf.org/rfc/rfc1035.txt). No more than 32 labels can be associated with a cluster.
+    "a_key": "A String",
+  },
+  "metrics": { # Contains cluster daemon metrics, such as HDFS and YARN stats. **Beta Feature**: This report is available for testing purposes only. It may be changed before final release. # Contains cluster daemon metrics such as HDFS and YARN stats. **Beta Feature**: This report is available for testing purposes only. It may be changed before final release.
+    "yarnMetrics": { # The YARN metrics.
+      "a_key": "A String",
+    },
+    "hdfsMetrics": { # The HDFS metrics.
+      "a_key": "A String",
+    },
+  },
   "statusHistory": [ # [Output-only] The previous cluster status.
     { # The status of a cluster and its instances.
-      "state": "A String", # The cluster's state.
-      "stateStartTime": "A String", # Time when this state was entered.
-      "detail": "A String", # Optional details of cluster's state.
+      "state": "A String", # [Output-only] The cluster's state.
+      "stateStartTime": "A String", # [Output-only] Time when this state was entered.
+      "detail": "A String", # [Output-only] Optional details of cluster's state.
     },
   ],
   "config": { # The cluster config. # [Required] The cluster config. Note that Cloud Dataproc may set default values, and values may change when clusters are updated.
@@ -584,74 +632,75 @@
     },
     "configBucket": "A String", # [Optional] A Google Cloud Storage staging bucket used for sharing generated SSH keys and config. If you do not specify a staging bucket, Cloud Dataproc will determine an appropriate Cloud Storage location (US, ASIA, or EU) for your cluster's staging bucket according to the Google Compute Engine zone where your cluster is deployed, and then it will create and manage this project-level, per-location bucket for you.
     "gceClusterConfig": { # Common config settings for resources of Google Compute Engine cluster instances, applicable to all instances in the cluster. # [Required] The shared Google Compute Engine config settings for all instances in a cluster.
-      "networkUri": "A String", # The Google Compute Engine network to be used for machine communications. Cannot be specified with subnetwork_uri. If neither network_uri nor subnetwork_uri is specified, the "default" network of the project is used, if it exists. Cannot be a "Custom Subnet Network" (see https://cloud.google.com/compute/docs/subnetworks for more information). Example: `https://www.googleapis.com/compute/v1/projects/[project_id]/regions/global/default`.
-      "tags": [ # The Google Compute Engine tags to add to all instances.
+      "internalIpOnly": True or False, # [Optional] If true, all instances in the cluster will only have internal IP addresses. By default, clusters are not restricted to internal IP addresses, and will have ephemeral external IP addresses assigned to each instance. This `internal_ip_only` restriction can only be enabled for subnetwork enabled networks, and all off-cluster dependencies must be configured to be accessible without external IP addresses.
+      "networkUri": "A String", # [Optional] The Google Compute Engine network to be used for machine communications. Cannot be specified with subnetwork_uri. If neither `network_uri` nor `subnetwork_uri` is specified, the "default" network of the project is used, if it exists. Cannot be a "Custom Subnet Network" (see [Using Subnetworks](/compute/docs/subnetworks) for more information). Example: `https://www.googleapis.com/compute/v1/projects/[project_id]/regions/global/default`.
+      "tags": [ # The Google Compute Engine tags to add to all instances (see [Tagging instances](/compute/docs/label-or-tag-resources#tags)).
         "A String",
       ],
       "zoneUri": "A String", # [Required] The zone where the Google Compute Engine cluster will be located. Example: `https://www.googleapis.com/compute/v1/projects/[project_id]/zones/[zone]`.
-      "subnetworkUri": "A String", # The Google Compute Engine subnetwork to be used for machine communications. Cannot be specified with network_uri. Example: `https://www.googleapis.com/compute/v1/projects/[project_id]/regions/us-east1/sub0`.
-      "serviceAccountScopes": [ # The URIs of service account scopes to be included in Google Compute Engine instances. The following base set of scopes is always included: * https://www.googleapis.com/auth/cloud.useraccounts.readonly * https://www.googleapis.com/auth/devstorage.read_write * https://www.googleapis.com/auth/logging.write If no scopes are specfied, the following defaults are also provided: * https://www.googleapis.com/auth/bigquery * https://www.googleapis.com/auth/bigtable.admin.table * https://www.googleapis.com/auth/bigtable.data * https://www.googleapis.com/auth/devstorage.full_control
+      "subnetworkUri": "A String", # [Optional] The Google Compute Engine subnetwork to be used for machine communications. Cannot be specified with network_uri. Example: `https://www.googleapis.com/compute/v1/projects/[project_id]/regions/us-east1/sub0`.
+      "serviceAccountScopes": [ # [Optional] The URIs of service account scopes to be included in Google Compute Engine instances. The following base set of scopes is always included: * https://www.googleapis.com/auth/cloud.useraccounts.readonly * https://www.googleapis.com/auth/devstorage.read_write * https://www.googleapis.com/auth/logging.write If no scopes are specified, the following defaults are also provided: * https://www.googleapis.com/auth/bigquery * https://www.googleapis.com/auth/bigtable.admin.table * https://www.googleapis.com/auth/bigtable.data * https://www.googleapis.com/auth/devstorage.full_control
         "A String",
       ],
-      "metadata": { # The Google Compute Engine metadata entries to add to all instances.
+      "metadata": { # The Google Compute Engine metadata entries to add to all instances (see [Project and instance metadata](https://cloud.google.com/compute/docs/storing-retrieving-metadata#project_and_instance_metadata)).
         "a_key": "A String",
       },
     },
-    "workerConfig": { # The config settings for Google Compute Engine resources in an instance group, such as a master or worker group. # [Optional] The Google Compute Engine config settings for worker instances in a cluster.
-      "isPreemptible": True or False, # Specifies that this instance group contains Preemptible Instances.
-      "machineTypeUri": "A String", # The Google Compute Engine machine type used for cluster instances. Example: `https://www.googleapis.com/compute/v1/projects/[project_id]/zones/us-east1-a/machineTypes/n1-standard-2`.
-      "instanceNames": [ # The list of instance names. Cloud Dataproc derives the names from `cluster_name`, `num_instances`, and the instance group if not set by user (recommended practice is to let Cloud Dataproc derive the name).
+    "workerConfig": { # [Optional] The config settings for Google Compute Engine resources in an instance group, such as a master or worker group. # [Optional] The Google Compute Engine config settings for worker instances in a cluster.
+      "isPreemptible": True or False, # [Optional] Specifies that this instance group contains preemptible instances.
+      "machineTypeUri": "A String", # [Required] The Google Compute Engine machine type used for cluster instances. Example: `https://www.googleapis.com/compute/v1/projects/[project_id]/zones/us-east1-a/machineTypes/n1-standard-2`.
+      "instanceNames": [ # [Optional] The list of instance names. Cloud Dataproc derives the names from `cluster_name`, `num_instances`, and the instance group if not set by user (recommended practice is to let Cloud Dataproc derive the name).
         "A String",
       ],
-      "diskConfig": { # Specifies the config of disk options for a group of VM instances. # Disk option config settings.
-        "numLocalSsds": 42, # [Optional] Number of attached SSDs, from 0 to 4 (default is 0). If SSDs are not attached, the boot disk is used to store runtime logs and HDFS data. If one or more SSDs are attached, this runtime bulk data is spread across them, and the boot disk contains only basic config and installed binaries.
+      "diskConfig": { # Specifies the config of disk options for a group of VM instances. # [Optional] Disk option config settings.
+        "numLocalSsds": 42, # [Optional] Number of attached SSDs, from 0 to 4 (default is 0). If SSDs are not attached, the boot disk is used to store runtime logs and [HDFS](https://hadoop.apache.org/docs/r1.2.1/hdfs_user_guide.html) data. If one or more SSDs are attached, this runtime bulk data is spread across them, and the boot disk contains only basic config and installed binaries.
         "bootDiskSizeGb": 42, # [Optional] Size in GB of the boot disk (default is 500GB).
       },
       "managedGroupConfig": { # Specifies the resources used to actively manage an instance group. # [Output-only] The config for Google Compute Engine Instance Group Manager that manages this group. This is only used for preemptible instance groups.
         "instanceTemplateName": "A String", # [Output-only] The name of the Instance Template used for the Managed Instance Group.
         "instanceGroupManagerName": "A String", # [Output-only] The name of the Instance Group Manager for this group.
       },
-      "numInstances": 42, # The number of VM instances in the instance group. For master instance groups, must be set to 1.
+      "numInstances": 42, # [Required] The number of VM instances in the instance group. For master instance groups, must be set to 1.
       "imageUri": "A String", # [Output-only] The Google Compute Engine image resource used for cluster instances. Inferred from `SoftwareConfig.image_version`.
     },
-    "initializationActions": [ # [Optional] Commands to execute on each node after config is completed. By default, executables are run on master and all worker nodes. You can test a node's role metadata to run an executable on a master or worker node, as shown below: ROLE=$(/usr/share/google/get_metadata_value attributes/role) if [[ "${ROLE}" == 'Master' ]]; then ... master specific actions ... else ... worker specific actions ... fi
+    "initializationActions": [ # [Optional] Commands to execute on each node after config is completed. By default, executables are run on master and all worker nodes. You can test a node's role metadata to run an executable on a master or worker node, as shown below using `curl` (you can also use `wget`): ROLE=$(curl -H Metadata-Flavor:Google http://metadata/computeMetadata/v1/instance/attributes/dataproc-role) if [[ "${ROLE}" == 'Master' ]]; then ... master specific actions ... else ... worker specific actions ... fi
       { # Specifies an executable to run on a fully configured node and a timeout period for executable completion.
         "executionTimeout": "A String", # [Optional] Amount of time executable has to complete. Default is 10 minutes. Cluster creation fails with an explanatory error message (the name of the executable that caused the error and the exceeded timeout period) if the executable is not completed at end of the timeout period.
         "executableFile": "A String", # [Required] Google Cloud Storage URI of executable file.
       },
     ],
-    "secondaryWorkerConfig": { # The config settings for Google Compute Engine resources in an instance group, such as a master or worker group. # [Optional] The Google Compute Engine config settings for additional worker instances in a cluster.
-      "isPreemptible": True or False, # Specifies that this instance group contains Preemptible Instances.
-      "machineTypeUri": "A String", # The Google Compute Engine machine type used for cluster instances. Example: `https://www.googleapis.com/compute/v1/projects/[project_id]/zones/us-east1-a/machineTypes/n1-standard-2`.
-      "instanceNames": [ # The list of instance names. Cloud Dataproc derives the names from `cluster_name`, `num_instances`, and the instance group if not set by user (recommended practice is to let Cloud Dataproc derive the name).
+    "secondaryWorkerConfig": { # [Optional] The config settings for Google Compute Engine resources in an instance group, such as a master or worker group. # [Optional] The Google Compute Engine config settings for additional worker instances in a cluster.
+      "isPreemptible": True or False, # [Optional] Specifies that this instance group contains preemptible instances.
+      "machineTypeUri": "A String", # [Required] The Google Compute Engine machine type used for cluster instances. Example: `https://www.googleapis.com/compute/v1/projects/[project_id]/zones/us-east1-a/machineTypes/n1-standard-2`.
+      "instanceNames": [ # [Optional] The list of instance names. Cloud Dataproc derives the names from `cluster_name`, `num_instances`, and the instance group if not set by user (recommended practice is to let Cloud Dataproc derive the name).
         "A String",
       ],
-      "diskConfig": { # Specifies the config of disk options for a group of VM instances. # Disk option config settings.
-        "numLocalSsds": 42, # [Optional] Number of attached SSDs, from 0 to 4 (default is 0). If SSDs are not attached, the boot disk is used to store runtime logs and HDFS data. If one or more SSDs are attached, this runtime bulk data is spread across them, and the boot disk contains only basic config and installed binaries.
+      "diskConfig": { # Specifies the config of disk options for a group of VM instances. # [Optional] Disk option config settings.
+        "numLocalSsds": 42, # [Optional] Number of attached SSDs, from 0 to 4 (default is 0). If SSDs are not attached, the boot disk is used to store runtime logs and [HDFS](https://hadoop.apache.org/docs/r1.2.1/hdfs_user_guide.html) data. If one or more SSDs are attached, this runtime bulk data is spread across them, and the boot disk contains only basic config and installed binaries.
         "bootDiskSizeGb": 42, # [Optional] Size in GB of the boot disk (default is 500GB).
       },
       "managedGroupConfig": { # Specifies the resources used to actively manage an instance group. # [Output-only] The config for Google Compute Engine Instance Group Manager that manages this group. This is only used for preemptible instance groups.
         "instanceTemplateName": "A String", # [Output-only] The name of the Instance Template used for the Managed Instance Group.
         "instanceGroupManagerName": "A String", # [Output-only] The name of the Instance Group Manager for this group.
       },
-      "numInstances": 42, # The number of VM instances in the instance group. For master instance groups, must be set to 1.
+      "numInstances": 42, # [Required] The number of VM instances in the instance group. For master instance groups, must be set to 1.
       "imageUri": "A String", # [Output-only] The Google Compute Engine image resource used for cluster instances. Inferred from `SoftwareConfig.image_version`.
     },
-    "masterConfig": { # The config settings for Google Compute Engine resources in an instance group, such as a master or worker group. # [Optional] The Google Compute Engine config settings for the master instance in a cluster.
-      "isPreemptible": True or False, # Specifies that this instance group contains Preemptible Instances.
-      "machineTypeUri": "A String", # The Google Compute Engine machine type used for cluster instances. Example: `https://www.googleapis.com/compute/v1/projects/[project_id]/zones/us-east1-a/machineTypes/n1-standard-2`.
-      "instanceNames": [ # The list of instance names. Cloud Dataproc derives the names from `cluster_name`, `num_instances`, and the instance group if not set by user (recommended practice is to let Cloud Dataproc derive the name).
+    "masterConfig": { # [Optional] The config settings for Google Compute Engine resources in an instance group, such as a master or worker group. # [Optional] The Google Compute Engine config settings for the master instance in a cluster.
+      "isPreemptible": True or False, # [Optional] Specifies that this instance group contains preemptible instances.
+      "machineTypeUri": "A String", # [Required] The Google Compute Engine machine type used for cluster instances. Example: `https://www.googleapis.com/compute/v1/projects/[project_id]/zones/us-east1-a/machineTypes/n1-standard-2`.
+      "instanceNames": [ # [Optional] The list of instance names. Cloud Dataproc derives the names from `cluster_name`, `num_instances`, and the instance group if not set by user (recommended practice is to let Cloud Dataproc derive the name).
         "A String",
       ],
-      "diskConfig": { # Specifies the config of disk options for a group of VM instances. # Disk option config settings.
-        "numLocalSsds": 42, # [Optional] Number of attached SSDs, from 0 to 4 (default is 0). If SSDs are not attached, the boot disk is used to store runtime logs and HDFS data. If one or more SSDs are attached, this runtime bulk data is spread across them, and the boot disk contains only basic config and installed binaries.
+      "diskConfig": { # Specifies the config of disk options for a group of VM instances. # [Optional] Disk option config settings.
+        "numLocalSsds": 42, # [Optional] Number of attached SSDs, from 0 to 4 (default is 0). If SSDs are not attached, the boot disk is used to store runtime logs and [HDFS](https://hadoop.apache.org/docs/r1.2.1/hdfs_user_guide.html) data. If one or more SSDs are attached, this runtime bulk data is spread across them, and the boot disk contains only basic config and installed binaries.
         "bootDiskSizeGb": 42, # [Optional] Size in GB of the boot disk (default is 500GB).
       },
       "managedGroupConfig": { # Specifies the resources used to actively manage an instance group. # [Output-only] The config for Google Compute Engine Instance Group Manager that manages this group. This is only used for preemptible instance groups.
         "instanceTemplateName": "A String", # [Output-only] The name of the Instance Template used for the Managed Instance Group.
         "instanceGroupManagerName": "A String", # [Output-only] The name of the Instance Group Manager for this group.
       },
-      "numInstances": 42, # The number of VM instances in the instance group. For master instance groups, must be set to 1.
+      "numInstances": 42, # [Required] The number of VM instances in the instance group. For master instance groups, must be set to 1.
       "imageUri": "A String", # [Output-only] The Google Compute Engine image resource used for cluster instances. Inferred from `SoftwareConfig.image_version`.
     },
   },
@@ -665,21 +714,21 @@
 
     { # This resource represents a long-running operation that is the result of a network API call.
     "response": { # The normal response of the operation in case of success. If the original method returns no data on success, such as `Delete`, the response is `google.protobuf.Empty`. If the original method is standard `Get`/`Create`/`Update`, the response should be the resource. For other methods, the response should have the type `XxxResponse`, where `Xxx` is the original method name. For example, if the original method name is `TakeSnapshot()`, the inferred response type is `TakeSnapshotResponse`.
-      "a_key": "", # Properties of the object. Contains field @ype with type URL.
+      "a_key": "", # Properties of the object. Contains field @type with type URL.
     },
-    "error": { # The `Status` type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by [gRPC](https://github.com/grpc). The error model is designed to be: - Simple to use and understand for most users - Flexible enough to meet unexpected needs # Overview The `Status` message contains three pieces of data: error code, error message, and error details. The error code should be an enum value of google.rpc.Code, but it may accept additional error codes if needed. The error message should be a developer-facing English message that helps developers *understand* and *resolve* the error. If a localized user-facing error message is needed, put the localized message in the error details or localize it in the client. The optional error details may contain arbitrary information about the error. There is a predefined set of error detail types in the package `google.rpc` which can be used for common error conditions. # Language mapping The `Status` message is the logical representation of the error model, but it is not necessarily the actual wire format. When the `Status` message is exposed in different client libraries and different wire protocols, it can be mapped differently. For example, it will likely be mapped to some exceptions in Java, but more likely mapped to some error codes in C. # Other uses The error model and the `Status` message can be used in a variety of environments, either with or without APIs, to provide a consistent developer experience across different environments. Example uses of this error model include: - Partial errors. If a service needs to return partial errors to the client, it may embed the `Status` in the normal response to indicate the partial errors. - Workflow errors. A typical workflow has multiple steps. Each step may have a `Status` message for error reporting purpose. - Batch operations. If a client uses batch request and batch response, the `Status` message should be used directly inside batch response, one for each error sub-response. - Asynchronous operations. If an API call embeds asynchronous operation results in its response, the status of those operations should be represented directly using the `Status` message. - Logging. If some API errors are stored in logs, the message `Status` could be used directly after any stripping needed for security/privacy reasons. # The error result of the operation in case of failure.
+    "error": { # The `Status` type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by [gRPC](https://github.com/grpc). The error model is designed to be: - Simple to use and understand for most users - Flexible enough to meet unexpected needs # Overview The `Status` message contains three pieces of data: error code, error message, and error details. The error code should be an enum value of google.rpc.Code, but it may accept additional error codes if needed. The error message should be a developer-facing English message that helps developers *understand* and *resolve* the error. If a localized user-facing error message is needed, put the localized message in the error details or localize it in the client. The optional error details may contain arbitrary information about the error. There is a predefined set of error detail types in the package `google.rpc` which can be used for common error conditions. # Language mapping The `Status` message is the logical representation of the error model, but it is not necessarily the actual wire format. When the `Status` message is exposed in different client libraries and different wire protocols, it can be mapped differently. For example, it will likely be mapped to some exceptions in Java, but more likely mapped to some error codes in C. # Other uses The error model and the `Status` message can be used in a variety of environments, either with or without APIs, to provide a consistent developer experience across different environments. Example uses of this error model include: - Partial errors. If a service needs to return partial errors to the client, it may embed the `Status` in the normal response to indicate the partial errors. - Workflow errors. A typical workflow has multiple steps. Each step may have a `Status` message for error reporting purpose. - Batch operations. If a client uses batch request and batch response, the `Status` message should be used directly inside batch response, one for each error sub-response. - Asynchronous operations. If an API call embeds asynchronous operation results in its response, the status of those operations should be represented directly using the `Status` message. - Logging. If some API errors are stored in logs, the message `Status` could be used directly after any stripping needed for security/privacy reasons. # The error result of the operation in case of failure or cancellation.
       "message": "A String", # A developer-facing error message, which should be in English. Any user-facing error message should be localized and sent in the google.rpc.Status.details field, or localized by the client.
       "code": 42, # The status code, which should be an enum value of google.rpc.Code.
       "details": [ # A list of messages that carry the error details. There will be a common set of message types for APIs to use.
         {
-          "a_key": "", # Properties of the object. Contains field @ype with type URL.
+          "a_key": "", # Properties of the object. Contains field @type with type URL.
         },
       ],
     },
     "done": True or False, # If the value is `false`, it means the operation is still in progress. If true, the operation is completed, and either `error` or `response` is available.
     "name": "A String", # The server-assigned name, which is only unique within the same service that originally returns it. If you use the default HTTP mapping, the `name` should have the format of `operations/some/unique/name`.
     "metadata": { # Service-specific metadata associated with the operation. It typically contains progress information and common metadata such as create time. Some services might not provide such metadata. Any method that returns a long-running operation should document the metadata type, if any.
-      "a_key": "", # Properties of the object. Contains field @ype with type URL.
+      "a_key": "", # Properties of the object. Contains field @type with type URL.
     },
   }</pre>
 </div>
diff --git a/docs/dyn/dataproc_v1.projects.regions.jobs.html b/docs/dyn/dataproc_v1.projects.regions.jobs.html
index e3f6df9..ab6e84e 100644
--- a/docs/dyn/dataproc_v1.projects.regions.jobs.html
+++ b/docs/dyn/dataproc_v1.projects.regions.jobs.html
@@ -84,7 +84,7 @@
   <code><a href="#get">get(projectId, region, jobId, x__xgafv=None)</a></code></p>
 <p class="firstline">Gets the resource representation for a job in a project.</p>
 <p class="toc_element">
-  <code><a href="#list">list(projectId, region, pageSize=None, x__xgafv=None, jobStateMatcher=None, pageToken=None, clusterName=None)</a></code></p>
+  <code><a href="#list">list(projectId, region, pageSize=None, x__xgafv=None, pageToken=None, clusterName=None, jobStateMatcher=None, filter=None)</a></code></p>
 <p class="firstline">Lists regions/{region}/jobs in a project.</p>
 <p class="toc_element">
   <code><a href="#list_next">list_next(previous_request, previous_response)</a></code></p>
@@ -114,11 +114,11 @@
 
     { # A Cloud Dataproc job resource.
     "status": { # Cloud Dataproc job status. # [Output-only] The job status. Additional application-specific status information may be contained in the type_job and yarn_applications fields.
-      "state": "A String", # [Required] A state message specifying the overall job state.
+      "state": "A String", # [Output-only] A state message specifying the overall job state.
       "stateStartTime": "A String", # [Output-only] The time when this state was entered.
-      "details": "A String", # [Optional] Job state details, such as an error description if the state is ERROR.
+      "details": "A String", # [Output-only] Optional job state details, such as an error description if the state is ERROR.
     },
-    "hadoopJob": { # A Cloud Dataproc job for running Hadoop MapReduce jobs on YARN. # Job is a Hadoop job.
+    "hadoopJob": { # A Cloud Dataproc job for running [Apache Hadoop MapReduce](https://hadoop.apache.org/docs/current/hadoop-mapreduce-client/hadoop-mapreduce-client-core/MapReduceTutorial.html) jobs on [Apache Hadoop YARN](https://hadoop.apache.org/docs/r2.7.1/hadoop-yarn/hadoop-yarn-site/YARN.html). # Job is a Hadoop job.
       "jarFileUris": [ # [Optional] Jar file URIs to add to the CLASSPATHs of the Hadoop driver and tasks.
         "A String",
       ],
@@ -144,9 +144,9 @@
     },
     "statusHistory": [ # [Output-only] The previous job status.
       { # Cloud Dataproc job status.
-        "state": "A String", # [Required] A state message specifying the overall job state.
+        "state": "A String", # [Output-only] A state message specifying the overall job state.
         "stateStartTime": "A String", # [Output-only] The time when this state was entered.
-        "details": "A String", # [Optional] Job state details, such as an error description if the state is ERROR.
+        "details": "A String", # [Output-only] Optional job state details, such as an error description if the state is ERROR.
       },
     ],
     "placement": { # Cloud Dataproc job config. # [Required] Job information, including how, when, and where to run the job.
@@ -155,9 +155,9 @@
     },
     "reference": { # Encapsulates the full scoping used to reference a job. # [Optional] The fully qualified reference to the job, which can be used to obtain the equivalent REST path of the job resource. If this property is not specified when a job is created, the server generates a job_id.
       "projectId": "A String", # [Required] The ID of the Google Cloud Platform project that the job belongs to.
-      "jobId": "A String", # [Required] The job ID, which must be unique within the project. The job ID is generated by the server upon job submission or provided by the user as a means to perform retries without creating duplicate jobs. The ID must contain only letters (a-z, A-Z), numbers (0-9), underscores (_), or hyphens (-). The maximum length is 512 characters.
+      "jobId": "A String", # [Optional] The job ID, which must be unique within the project. The job ID is generated by the server upon job submission or provided by the user as a means to perform retries without creating duplicate jobs. The ID must contain only letters (a-z, A-Z), numbers (0-9), underscores (_), or hyphens (-). The maximum length is 512 characters.
     },
-    "sparkSqlJob": { # A Cloud Dataproc job for running Spark SQL queries. # Job is a SparkSql job.
+    "sparkSqlJob": { # A Cloud Dataproc job for running [Apache Spark SQL](http://spark.apache.org/sql/) queries. # Job is a SparkSql job.
       "queryFileUri": "A String", # The HCFS URI of the script that contains SQL queries.
       "scriptVariables": { # [Optional] Mapping of query variable names to values (equivalent to the Spark SQL command: SET `name="value";`).
         "a_key": "A String",
@@ -179,7 +179,7 @@
         "a_key": "A String",
       },
     },
-    "pigJob": { # A Cloud Dataproc job for running Pig queries on YARN. # Job is a Pig job.
+    "pigJob": { # A Cloud Dataproc job for running [Apache Pig](https://pig.apache.org/) queries on YARN. # Job is a Pig job.
       "queryFileUri": "A String", # The HCFS URI of the script that contains the Pig queries.
       "scriptVariables": { # [Optional] Mapping of query variable names to values (equivalent to the Pig command: `name=[value]`).
         "a_key": "A String",
@@ -203,8 +203,11 @@
       },
     },
     "driverOutputResourceUri": "A String", # [Output-only] A URI pointing to the location of the stdout of the job's driver program.
+    "labels": { # [Optional] The labels to associate with this job. Label **keys** must contain 1 to 63 characters, and must conform to [RFC 1035](https://www.ietf.org/rfc/rfc1035.txt). Label **values** may be empty, but, if present, must contain 1 to 63 characters, and must conform to [RFC 1035](https://www.ietf.org/rfc/rfc1035.txt). No more than 32 labels can be associated with a job.
+      "a_key": "A String",
+    },
     "driverControlFilesUri": "A String", # [Output-only] If present, the location of miscellaneous control files which may be used as part of job setup and handling. If not present, control files may be placed in the same location as `driver_output_uri`.
-    "sparkJob": { # A Cloud Dataproc job for running Spark applications on YARN. # Job is a Spark job.
+    "sparkJob": { # A Cloud Dataproc job for running [Apache Spark](http://spark.apache.org/) applications on YARN. # Job is a Spark job.
       "jarFileUris": [ # [Optional] HCFS URIs of jar files to add to the CLASSPATHs of the Spark driver and tasks.
         "A String",
       ],
@@ -228,7 +231,15 @@
         "a_key": "A String",
       },
     },
-    "pysparkJob": { # A Cloud Dataproc job for running PySpark applications on YARN. # Job is a Pyspark job.
+    "yarnApplications": [ # [Output-only] The collection of YARN applications spun up by this job. **Beta** Feature: This report is available for testing purposes only. It may be changed before final release.
+      { # A YARN application created by a job. Application information is a subset of org.apache.hadoop.yarn.proto.YarnProtos.ApplicationReportProto. **Beta Feature**: This report is available for testing purposes only. It may be changed before final release.
+        "progress": 3.14, # [Required] The numerical progress of the application, from 1 to 100.
+        "state": "A String", # [Required] The application state.
+        "name": "A String", # [Required] The application name.
+        "trackingUrl": "A String", # [Optional] The HTTP URL of the ApplicationMaster, HistoryServer, or TimelineServer that provides application-specific information. The URL uses the internal hostname, and requires a proxy server for resolution and, possibly, access.
+      },
+    ],
+    "pysparkJob": { # A Cloud Dataproc job for running [Apache PySpark](https://spark.apache.org/docs/0.9.0/python-programming-guide.html) applications on YARN. # Job is a Pyspark job.
       "mainPythonFileUri": "A String", # [Required] The HCFS URI of the main Python file to use as the driver. Must be a .py file.
       "args": [ # [Optional] The arguments to pass to the driver. Do not include arguments, such as `--conf`, that can be set as job properties, since a collision may occur that causes an incorrect job submission.
         "A String",
@@ -254,7 +265,7 @@
         "a_key": "A String",
       },
     },
-    "hiveJob": { # A Cloud Dataproc job for running Hive queries on YARN. # Job is a Hive job.
+    "hiveJob": { # A Cloud Dataproc job for running [Apache Hive](https://hive.apache.org/) queries on YARN. # Job is a Hive job.
       "queryFileUri": "A String", # The HCFS URI of the script that contains Hive queries.
       "scriptVariables": { # [Optional] Mapping of query variable names to values (equivalent to the Hive command: `SET name="value";`).
         "a_key": "A String",
@@ -307,11 +318,11 @@
 
     { # A Cloud Dataproc job resource.
     "status": { # Cloud Dataproc job status. # [Output-only] The job status. Additional application-specific status information may be contained in the type_job and yarn_applications fields.
-      "state": "A String", # [Required] A state message specifying the overall job state.
+      "state": "A String", # [Output-only] A state message specifying the overall job state.
       "stateStartTime": "A String", # [Output-only] The time when this state was entered.
-      "details": "A String", # [Optional] Job state details, such as an error description if the state is ERROR.
+      "details": "A String", # [Output-only] Optional job state details, such as an error description if the state is ERROR.
     },
-    "hadoopJob": { # A Cloud Dataproc job for running Hadoop MapReduce jobs on YARN. # Job is a Hadoop job.
+    "hadoopJob": { # A Cloud Dataproc job for running [Apache Hadoop MapReduce](https://hadoop.apache.org/docs/current/hadoop-mapreduce-client/hadoop-mapreduce-client-core/MapReduceTutorial.html) jobs on [Apache Hadoop YARN](https://hadoop.apache.org/docs/r2.7.1/hadoop-yarn/hadoop-yarn-site/YARN.html). # Job is a Hadoop job.
       "jarFileUris": [ # [Optional] Jar file URIs to add to the CLASSPATHs of the Hadoop driver and tasks.
         "A String",
       ],
@@ -337,9 +348,9 @@
     },
     "statusHistory": [ # [Output-only] The previous job status.
       { # Cloud Dataproc job status.
-        "state": "A String", # [Required] A state message specifying the overall job state.
+        "state": "A String", # [Output-only] A state message specifying the overall job state.
         "stateStartTime": "A String", # [Output-only] The time when this state was entered.
-        "details": "A String", # [Optional] Job state details, such as an error description if the state is ERROR.
+        "details": "A String", # [Output-only] Optional job state details, such as an error description if the state is ERROR.
       },
     ],
     "placement": { # Cloud Dataproc job config. # [Required] Job information, including how, when, and where to run the job.
@@ -348,9 +359,9 @@
     },
     "reference": { # Encapsulates the full scoping used to reference a job. # [Optional] The fully qualified reference to the job, which can be used to obtain the equivalent REST path of the job resource. If this property is not specified when a job is created, the server generates a job_id.
       "projectId": "A String", # [Required] The ID of the Google Cloud Platform project that the job belongs to.
-      "jobId": "A String", # [Required] The job ID, which must be unique within the project. The job ID is generated by the server upon job submission or provided by the user as a means to perform retries without creating duplicate jobs. The ID must contain only letters (a-z, A-Z), numbers (0-9), underscores (_), or hyphens (-). The maximum length is 512 characters.
+      "jobId": "A String", # [Optional] The job ID, which must be unique within the project. The job ID is generated by the server upon job submission or provided by the user as a means to perform retries without creating duplicate jobs. The ID must contain only letters (a-z, A-Z), numbers (0-9), underscores (_), or hyphens (-). The maximum length is 512 characters.
     },
-    "sparkSqlJob": { # A Cloud Dataproc job for running Spark SQL queries. # Job is a SparkSql job.
+    "sparkSqlJob": { # A Cloud Dataproc job for running [Apache Spark SQL](http://spark.apache.org/sql/) queries. # Job is a SparkSql job.
       "queryFileUri": "A String", # The HCFS URI of the script that contains SQL queries.
       "scriptVariables": { # [Optional] Mapping of query variable names to values (equivalent to the Spark SQL command: SET `name="value";`).
         "a_key": "A String",
@@ -372,7 +383,7 @@
         "a_key": "A String",
       },
     },
-    "pigJob": { # A Cloud Dataproc job for running Pig queries on YARN. # Job is a Pig job.
+    "pigJob": { # A Cloud Dataproc job for running [Apache Pig](https://pig.apache.org/) queries on YARN. # Job is a Pig job.
       "queryFileUri": "A String", # The HCFS URI of the script that contains the Pig queries.
       "scriptVariables": { # [Optional] Mapping of query variable names to values (equivalent to the Pig command: `name=[value]`).
         "a_key": "A String",
@@ -396,8 +407,11 @@
       },
     },
     "driverOutputResourceUri": "A String", # [Output-only] A URI pointing to the location of the stdout of the job's driver program.
+    "labels": { # [Optional] The labels to associate with this job. Label **keys** must contain 1 to 63 characters, and must conform to [RFC 1035](https://www.ietf.org/rfc/rfc1035.txt). Label **values** may be empty, but, if present, must contain 1 to 63 characters, and must conform to [RFC 1035](https://www.ietf.org/rfc/rfc1035.txt). No more than 32 labels can be associated with a job.
+      "a_key": "A String",
+    },
     "driverControlFilesUri": "A String", # [Output-only] If present, the location of miscellaneous control files which may be used as part of job setup and handling. If not present, control files may be placed in the same location as `driver_output_uri`.
-    "sparkJob": { # A Cloud Dataproc job for running Spark applications on YARN. # Job is a Spark job.
+    "sparkJob": { # A Cloud Dataproc job for running [Apache Spark](http://spark.apache.org/) applications on YARN. # Job is a Spark job.
       "jarFileUris": [ # [Optional] HCFS URIs of jar files to add to the CLASSPATHs of the Spark driver and tasks.
         "A String",
       ],
@@ -421,7 +435,15 @@
         "a_key": "A String",
       },
     },
-    "pysparkJob": { # A Cloud Dataproc job for running PySpark applications on YARN. # Job is a Pyspark job.
+    "yarnApplications": [ # [Output-only] The collection of YARN applications spun up by this job. **Beta** Feature: This report is available for testing purposes only. It may be changed before final release.
+      { # A YARN application created by a job. Application information is a subset of org.apache.hadoop.yarn.proto.YarnProtos.ApplicationReportProto. **Beta Feature**: This report is available for testing purposes only. It may be changed before final release.
+        "progress": 3.14, # [Required] The numerical progress of the application, from 1 to 100.
+        "state": "A String", # [Required] The application state.
+        "name": "A String", # [Required] The application name.
+        "trackingUrl": "A String", # [Optional] The HTTP URL of the ApplicationMaster, HistoryServer, or TimelineServer that provides application-specific information. The URL uses the internal hostname, and requires a proxy server for resolution and, possibly, access.
+      },
+    ],
+    "pysparkJob": { # A Cloud Dataproc job for running [Apache PySpark](https://spark.apache.org/docs/0.9.0/python-programming-guide.html) applications on YARN. # Job is a Pyspark job.
       "mainPythonFileUri": "A String", # [Required] The HCFS URI of the main Python file to use as the driver. Must be a .py file.
       "args": [ # [Optional] The arguments to pass to the driver. Do not include arguments, such as `--conf`, that can be set as job properties, since a collision may occur that causes an incorrect job submission.
         "A String",
@@ -447,7 +469,7 @@
         "a_key": "A String",
       },
     },
-    "hiveJob": { # A Cloud Dataproc job for running Hive queries on YARN. # Job is a Hive job.
+    "hiveJob": { # A Cloud Dataproc job for running [Apache Hive](https://hive.apache.org/) queries on YARN. # Job is a Hive job.
       "queryFileUri": "A String", # The HCFS URI of the script that contains Hive queries.
       "scriptVariables": { # [Optional] Mapping of query variable names to values (equivalent to the Hive command: `SET name="value";`).
         "a_key": "A String",
@@ -469,7 +491,7 @@
 </div>
 
 <div class="method">
-    <code class="details" id="list">list(projectId, region, pageSize=None, x__xgafv=None, jobStateMatcher=None, pageToken=None, clusterName=None)</code>
+    <code class="details" id="list">list(projectId, region, pageSize=None, x__xgafv=None, pageToken=None, clusterName=None, jobStateMatcher=None, filter=None)</code>
   <pre>Lists regions/{region}/jobs in a project.
 
 Args:
@@ -477,9 +499,10 @@
   region: string, [Required] The Cloud Dataproc region in which to handle the request. (required)
   pageSize: integer, [Optional] The number of results to return in each response.
   x__xgafv: string, V1 error format.
-  jobStateMatcher: string, [Optional] Specifies enumerated categories of jobs to list.
   pageToken: string, [Optional] The page token, returned by a previous call, to request the next page of results.
   clusterName: string, [Optional] If set, the returned jobs list includes only jobs that were submitted to the named cluster.
+  jobStateMatcher: string, [Optional] Specifies enumerated categories of jobs to list (default = match ALL jobs).
+  filter: string, [Optional] A filter constraining the jobs to list. Filters are case-sensitive and have the following syntax: field:value] ... or [field = value] AND [field [= value]] ... where **field** is `status.state` or `labels.[KEY]`, and `[KEY]` is a label key. **value** can be `*` to match all values. `status.state` can be either `ACTIVE` or `INACTIVE`. Only the logical `AND` operator is supported; space-separated items are treated as having an implicit `AND` operator. Example valid filters are: status.state:ACTIVE labels.env:staging labels.starred:* and status.state = ACTIVE AND labels.env = staging AND labels.starred = *
 
 Returns:
   An object of the form:
@@ -489,11 +512,11 @@
     "jobs": [ # [Output-only] Jobs list.
       { # A Cloud Dataproc job resource.
         "status": { # Cloud Dataproc job status. # [Output-only] The job status. Additional application-specific status information may be contained in the type_job and yarn_applications fields.
-          "state": "A String", # [Required] A state message specifying the overall job state.
+          "state": "A String", # [Output-only] A state message specifying the overall job state.
           "stateStartTime": "A String", # [Output-only] The time when this state was entered.
-          "details": "A String", # [Optional] Job state details, such as an error description if the state is ERROR.
+          "details": "A String", # [Output-only] Optional job state details, such as an error description if the state is ERROR.
         },
-        "hadoopJob": { # A Cloud Dataproc job for running Hadoop MapReduce jobs on YARN. # Job is a Hadoop job.
+        "hadoopJob": { # A Cloud Dataproc job for running [Apache Hadoop MapReduce](https://hadoop.apache.org/docs/current/hadoop-mapreduce-client/hadoop-mapreduce-client-core/MapReduceTutorial.html) jobs on [Apache Hadoop YARN](https://hadoop.apache.org/docs/r2.7.1/hadoop-yarn/hadoop-yarn-site/YARN.html). # Job is a Hadoop job.
           "jarFileUris": [ # [Optional] Jar file URIs to add to the CLASSPATHs of the Hadoop driver and tasks.
             "A String",
           ],
@@ -519,9 +542,9 @@
         },
         "statusHistory": [ # [Output-only] The previous job status.
           { # Cloud Dataproc job status.
-            "state": "A String", # [Required] A state message specifying the overall job state.
+            "state": "A String", # [Output-only] A state message specifying the overall job state.
             "stateStartTime": "A String", # [Output-only] The time when this state was entered.
-            "details": "A String", # [Optional] Job state details, such as an error description if the state is ERROR.
+            "details": "A String", # [Output-only] Optional job state details, such as an error description if the state is ERROR.
           },
         ],
         "placement": { # Cloud Dataproc job config. # [Required] Job information, including how, when, and where to run the job.
@@ -530,9 +553,9 @@
         },
         "reference": { # Encapsulates the full scoping used to reference a job. # [Optional] The fully qualified reference to the job, which can be used to obtain the equivalent REST path of the job resource. If this property is not specified when a job is created, the server generates a job_id.
           "projectId": "A String", # [Required] The ID of the Google Cloud Platform project that the job belongs to.
-          "jobId": "A String", # [Required] The job ID, which must be unique within the project. The job ID is generated by the server upon job submission or provided by the user as a means to perform retries without creating duplicate jobs. The ID must contain only letters (a-z, A-Z), numbers (0-9), underscores (_), or hyphens (-). The maximum length is 512 characters.
+          "jobId": "A String", # [Optional] The job ID, which must be unique within the project. The job ID is generated by the server upon job submission or provided by the user as a means to perform retries without creating duplicate jobs. The ID must contain only letters (a-z, A-Z), numbers (0-9), underscores (_), or hyphens (-). The maximum length is 512 characters.
         },
-        "sparkSqlJob": { # A Cloud Dataproc job for running Spark SQL queries. # Job is a SparkSql job.
+        "sparkSqlJob": { # A Cloud Dataproc job for running [Apache Spark SQL](http://spark.apache.org/sql/) queries. # Job is a SparkSql job.
           "queryFileUri": "A String", # The HCFS URI of the script that contains SQL queries.
           "scriptVariables": { # [Optional] Mapping of query variable names to values (equivalent to the Spark SQL command: SET `name="value";`).
             "a_key": "A String",
@@ -554,7 +577,7 @@
             "a_key": "A String",
           },
         },
-        "pigJob": { # A Cloud Dataproc job for running Pig queries on YARN. # Job is a Pig job.
+        "pigJob": { # A Cloud Dataproc job for running [Apache Pig](https://pig.apache.org/) queries on YARN. # Job is a Pig job.
           "queryFileUri": "A String", # The HCFS URI of the script that contains the Pig queries.
           "scriptVariables": { # [Optional] Mapping of query variable names to values (equivalent to the Pig command: `name=[value]`).
             "a_key": "A String",
@@ -578,8 +601,11 @@
           },
         },
         "driverOutputResourceUri": "A String", # [Output-only] A URI pointing to the location of the stdout of the job's driver program.
+        "labels": { # [Optional] The labels to associate with this job. Label **keys** must contain 1 to 63 characters, and must conform to [RFC 1035](https://www.ietf.org/rfc/rfc1035.txt). Label **values** may be empty, but, if present, must contain 1 to 63 characters, and must conform to [RFC 1035](https://www.ietf.org/rfc/rfc1035.txt). No more than 32 labels can be associated with a job.
+          "a_key": "A String",
+        },
         "driverControlFilesUri": "A String", # [Output-only] If present, the location of miscellaneous control files which may be used as part of job setup and handling. If not present, control files may be placed in the same location as `driver_output_uri`.
-        "sparkJob": { # A Cloud Dataproc job for running Spark applications on YARN. # Job is a Spark job.
+        "sparkJob": { # A Cloud Dataproc job for running [Apache Spark](http://spark.apache.org/) applications on YARN. # Job is a Spark job.
           "jarFileUris": [ # [Optional] HCFS URIs of jar files to add to the CLASSPATHs of the Spark driver and tasks.
             "A String",
           ],
@@ -603,7 +629,15 @@
             "a_key": "A String",
           },
         },
-        "pysparkJob": { # A Cloud Dataproc job for running PySpark applications on YARN. # Job is a Pyspark job.
+        "yarnApplications": [ # [Output-only] The collection of YARN applications spun up by this job. **Beta** Feature: This report is available for testing purposes only. It may be changed before final release.
+          { # A YARN application created by a job. Application information is a subset of org.apache.hadoop.yarn.proto.YarnProtos.ApplicationReportProto. **Beta Feature**: This report is available for testing purposes only. It may be changed before final release.
+            "progress": 3.14, # [Required] The numerical progress of the application, from 1 to 100.
+            "state": "A String", # [Required] The application state.
+            "name": "A String", # [Required] The application name.
+            "trackingUrl": "A String", # [Optional] The HTTP URL of the ApplicationMaster, HistoryServer, or TimelineServer that provides application-specific information. The URL uses the internal hostname, and requires a proxy server for resolution and, possibly, access.
+          },
+        ],
+        "pysparkJob": { # A Cloud Dataproc job for running [Apache PySpark](https://spark.apache.org/docs/0.9.0/python-programming-guide.html) applications on YARN. # Job is a Pyspark job.
           "mainPythonFileUri": "A String", # [Required] The HCFS URI of the main Python file to use as the driver. Must be a .py file.
           "args": [ # [Optional] The arguments to pass to the driver. Do not include arguments, such as `--conf`, that can be set as job properties, since a collision may occur that causes an incorrect job submission.
             "A String",
@@ -629,7 +663,7 @@
             "a_key": "A String",
           },
         },
-        "hiveJob": { # A Cloud Dataproc job for running Hive queries on YARN. # Job is a Hive job.
+        "hiveJob": { # A Cloud Dataproc job for running [Apache Hive](https://hive.apache.org/) queries on YARN. # Job is a Hive job.
           "queryFileUri": "A String", # The HCFS URI of the script that contains Hive queries.
           "scriptVariables": { # [Optional] Mapping of query variable names to values (equivalent to the Hive command: `SET name="value";`).
             "a_key": "A String",
@@ -679,11 +713,11 @@
 { # A request to submit a job.
     "job": { # A Cloud Dataproc job resource. # [Required] The job resource.
       "status": { # Cloud Dataproc job status. # [Output-only] The job status. Additional application-specific status information may be contained in the type_job and yarn_applications fields.
-        "state": "A String", # [Required] A state message specifying the overall job state.
+        "state": "A String", # [Output-only] A state message specifying the overall job state.
         "stateStartTime": "A String", # [Output-only] The time when this state was entered.
-        "details": "A String", # [Optional] Job state details, such as an error description if the state is ERROR.
+        "details": "A String", # [Output-only] Optional job state details, such as an error description if the state is ERROR.
       },
-      "hadoopJob": { # A Cloud Dataproc job for running Hadoop MapReduce jobs on YARN. # Job is a Hadoop job.
+      "hadoopJob": { # A Cloud Dataproc job for running [Apache Hadoop MapReduce](https://hadoop.apache.org/docs/current/hadoop-mapreduce-client/hadoop-mapreduce-client-core/MapReduceTutorial.html) jobs on [Apache Hadoop YARN](https://hadoop.apache.org/docs/r2.7.1/hadoop-yarn/hadoop-yarn-site/YARN.html). # Job is a Hadoop job.
         "jarFileUris": [ # [Optional] Jar file URIs to add to the CLASSPATHs of the Hadoop driver and tasks.
           "A String",
         ],
@@ -709,9 +743,9 @@
       },
       "statusHistory": [ # [Output-only] The previous job status.
         { # Cloud Dataproc job status.
-          "state": "A String", # [Required] A state message specifying the overall job state.
+          "state": "A String", # [Output-only] A state message specifying the overall job state.
           "stateStartTime": "A String", # [Output-only] The time when this state was entered.
-          "details": "A String", # [Optional] Job state details, such as an error description if the state is ERROR.
+          "details": "A String", # [Output-only] Optional job state details, such as an error description if the state is ERROR.
         },
       ],
       "placement": { # Cloud Dataproc job config. # [Required] Job information, including how, when, and where to run the job.
@@ -720,9 +754,9 @@
       },
       "reference": { # Encapsulates the full scoping used to reference a job. # [Optional] The fully qualified reference to the job, which can be used to obtain the equivalent REST path of the job resource. If this property is not specified when a job is created, the server generates a job_id.
         "projectId": "A String", # [Required] The ID of the Google Cloud Platform project that the job belongs to.
-        "jobId": "A String", # [Required] The job ID, which must be unique within the project. The job ID is generated by the server upon job submission or provided by the user as a means to perform retries without creating duplicate jobs. The ID must contain only letters (a-z, A-Z), numbers (0-9), underscores (_), or hyphens (-). The maximum length is 512 characters.
+        "jobId": "A String", # [Optional] The job ID, which must be unique within the project. The job ID is generated by the server upon job submission or provided by the user as a means to perform retries without creating duplicate jobs. The ID must contain only letters (a-z, A-Z), numbers (0-9), underscores (_), or hyphens (-). The maximum length is 512 characters.
       },
-      "sparkSqlJob": { # A Cloud Dataproc job for running Spark SQL queries. # Job is a SparkSql job.
+      "sparkSqlJob": { # A Cloud Dataproc job for running [Apache Spark SQL](http://spark.apache.org/sql/) queries. # Job is a SparkSql job.
         "queryFileUri": "A String", # The HCFS URI of the script that contains SQL queries.
         "scriptVariables": { # [Optional] Mapping of query variable names to values (equivalent to the Spark SQL command: SET `name="value";`).
           "a_key": "A String",
@@ -744,7 +778,7 @@
           "a_key": "A String",
         },
       },
-      "pigJob": { # A Cloud Dataproc job for running Pig queries on YARN. # Job is a Pig job.
+      "pigJob": { # A Cloud Dataproc job for running [Apache Pig](https://pig.apache.org/) queries on YARN. # Job is a Pig job.
         "queryFileUri": "A String", # The HCFS URI of the script that contains the Pig queries.
         "scriptVariables": { # [Optional] Mapping of query variable names to values (equivalent to the Pig command: `name=[value]`).
           "a_key": "A String",
@@ -768,8 +802,11 @@
         },
       },
       "driverOutputResourceUri": "A String", # [Output-only] A URI pointing to the location of the stdout of the job's driver program.
+      "labels": { # [Optional] The labels to associate with this job. Label **keys** must contain 1 to 63 characters, and must conform to [RFC 1035](https://www.ietf.org/rfc/rfc1035.txt). Label **values** may be empty, but, if present, must contain 1 to 63 characters, and must conform to [RFC 1035](https://www.ietf.org/rfc/rfc1035.txt). No more than 32 labels can be associated with a job.
+        "a_key": "A String",
+      },
       "driverControlFilesUri": "A String", # [Output-only] If present, the location of miscellaneous control files which may be used as part of job setup and handling. If not present, control files may be placed in the same location as `driver_output_uri`.
-      "sparkJob": { # A Cloud Dataproc job for running Spark applications on YARN. # Job is a Spark job.
+      "sparkJob": { # A Cloud Dataproc job for running [Apache Spark](http://spark.apache.org/) applications on YARN. # Job is a Spark job.
         "jarFileUris": [ # [Optional] HCFS URIs of jar files to add to the CLASSPATHs of the Spark driver and tasks.
           "A String",
         ],
@@ -793,7 +830,15 @@
           "a_key": "A String",
         },
       },
-      "pysparkJob": { # A Cloud Dataproc job for running PySpark applications on YARN. # Job is a Pyspark job.
+      "yarnApplications": [ # [Output-only] The collection of YARN applications spun up by this job. **Beta** Feature: This report is available for testing purposes only. It may be changed before final release.
+        { # A YARN application created by a job. Application information is a subset of org.apache.hadoop.yarn.proto.YarnProtos.ApplicationReportProto. **Beta Feature**: This report is available for testing purposes only. It may be changed before final release.
+          "progress": 3.14, # [Required] The numerical progress of the application, from 1 to 100.
+          "state": "A String", # [Required] The application state.
+          "name": "A String", # [Required] The application name.
+          "trackingUrl": "A String", # [Optional] The HTTP URL of the ApplicationMaster, HistoryServer, or TimelineServer that provides application-specific information. The URL uses the internal hostname, and requires a proxy server for resolution and, possibly, access.
+        },
+      ],
+      "pysparkJob": { # A Cloud Dataproc job for running [Apache PySpark](https://spark.apache.org/docs/0.9.0/python-programming-guide.html) applications on YARN. # Job is a Pyspark job.
         "mainPythonFileUri": "A String", # [Required] The HCFS URI of the main Python file to use as the driver. Must be a .py file.
         "args": [ # [Optional] The arguments to pass to the driver. Do not include arguments, such as `--conf`, that can be set as job properties, since a collision may occur that causes an incorrect job submission.
           "A String",
@@ -819,7 +864,7 @@
           "a_key": "A String",
         },
       },
-      "hiveJob": { # A Cloud Dataproc job for running Hive queries on YARN. # Job is a Hive job.
+      "hiveJob": { # A Cloud Dataproc job for running [Apache Hive](https://hive.apache.org/) queries on YARN. # Job is a Hive job.
         "queryFileUri": "A String", # The HCFS URI of the script that contains Hive queries.
         "scriptVariables": { # [Optional] Mapping of query variable names to values (equivalent to the Hive command: `SET name="value";`).
           "a_key": "A String",
@@ -847,11 +892,11 @@
 
     { # A Cloud Dataproc job resource.
     "status": { # Cloud Dataproc job status. # [Output-only] The job status. Additional application-specific status information may be contained in the type_job and yarn_applications fields.
-      "state": "A String", # [Required] A state message specifying the overall job state.
+      "state": "A String", # [Output-only] A state message specifying the overall job state.
       "stateStartTime": "A String", # [Output-only] The time when this state was entered.
-      "details": "A String", # [Optional] Job state details, such as an error description if the state is ERROR.
+      "details": "A String", # [Output-only] Optional job state details, such as an error description if the state is ERROR.
     },
-    "hadoopJob": { # A Cloud Dataproc job for running Hadoop MapReduce jobs on YARN. # Job is a Hadoop job.
+    "hadoopJob": { # A Cloud Dataproc job for running [Apache Hadoop MapReduce](https://hadoop.apache.org/docs/current/hadoop-mapreduce-client/hadoop-mapreduce-client-core/MapReduceTutorial.html) jobs on [Apache Hadoop YARN](https://hadoop.apache.org/docs/r2.7.1/hadoop-yarn/hadoop-yarn-site/YARN.html). # Job is a Hadoop job.
       "jarFileUris": [ # [Optional] Jar file URIs to add to the CLASSPATHs of the Hadoop driver and tasks.
         "A String",
       ],
@@ -877,9 +922,9 @@
     },
     "statusHistory": [ # [Output-only] The previous job status.
       { # Cloud Dataproc job status.
-        "state": "A String", # [Required] A state message specifying the overall job state.
+        "state": "A String", # [Output-only] A state message specifying the overall job state.
         "stateStartTime": "A String", # [Output-only] The time when this state was entered.
-        "details": "A String", # [Optional] Job state details, such as an error description if the state is ERROR.
+        "details": "A String", # [Output-only] Optional job state details, such as an error description if the state is ERROR.
       },
     ],
     "placement": { # Cloud Dataproc job config. # [Required] Job information, including how, when, and where to run the job.
@@ -888,9 +933,9 @@
     },
     "reference": { # Encapsulates the full scoping used to reference a job. # [Optional] The fully qualified reference to the job, which can be used to obtain the equivalent REST path of the job resource. If this property is not specified when a job is created, the server generates a job_id.
       "projectId": "A String", # [Required] The ID of the Google Cloud Platform project that the job belongs to.
-      "jobId": "A String", # [Required] The job ID, which must be unique within the project. The job ID is generated by the server upon job submission or provided by the user as a means to perform retries without creating duplicate jobs. The ID must contain only letters (a-z, A-Z), numbers (0-9), underscores (_), or hyphens (-). The maximum length is 512 characters.
+      "jobId": "A String", # [Optional] The job ID, which must be unique within the project. The job ID is generated by the server upon job submission or provided by the user as a means to perform retries without creating duplicate jobs. The ID must contain only letters (a-z, A-Z), numbers (0-9), underscores (_), or hyphens (-). The maximum length is 512 characters.
     },
-    "sparkSqlJob": { # A Cloud Dataproc job for running Spark SQL queries. # Job is a SparkSql job.
+    "sparkSqlJob": { # A Cloud Dataproc job for running [Apache Spark SQL](http://spark.apache.org/sql/) queries. # Job is a SparkSql job.
       "queryFileUri": "A String", # The HCFS URI of the script that contains SQL queries.
       "scriptVariables": { # [Optional] Mapping of query variable names to values (equivalent to the Spark SQL command: SET `name="value";`).
         "a_key": "A String",
@@ -912,7 +957,7 @@
         "a_key": "A String",
       },
     },
-    "pigJob": { # A Cloud Dataproc job for running Pig queries on YARN. # Job is a Pig job.
+    "pigJob": { # A Cloud Dataproc job for running [Apache Pig](https://pig.apache.org/) queries on YARN. # Job is a Pig job.
       "queryFileUri": "A String", # The HCFS URI of the script that contains the Pig queries.
       "scriptVariables": { # [Optional] Mapping of query variable names to values (equivalent to the Pig command: `name=[value]`).
         "a_key": "A String",
@@ -936,8 +981,11 @@
       },
     },
     "driverOutputResourceUri": "A String", # [Output-only] A URI pointing to the location of the stdout of the job's driver program.
+    "labels": { # [Optional] The labels to associate with this job. Label **keys** must contain 1 to 63 characters, and must conform to [RFC 1035](https://www.ietf.org/rfc/rfc1035.txt). Label **values** may be empty, but, if present, must contain 1 to 63 characters, and must conform to [RFC 1035](https://www.ietf.org/rfc/rfc1035.txt). No more than 32 labels can be associated with a job.
+      "a_key": "A String",
+    },
     "driverControlFilesUri": "A String", # [Output-only] If present, the location of miscellaneous control files which may be used as part of job setup and handling. If not present, control files may be placed in the same location as `driver_output_uri`.
-    "sparkJob": { # A Cloud Dataproc job for running Spark applications on YARN. # Job is a Spark job.
+    "sparkJob": { # A Cloud Dataproc job for running [Apache Spark](http://spark.apache.org/) applications on YARN. # Job is a Spark job.
       "jarFileUris": [ # [Optional] HCFS URIs of jar files to add to the CLASSPATHs of the Spark driver and tasks.
         "A String",
       ],
@@ -961,7 +1009,15 @@
         "a_key": "A String",
       },
     },
-    "pysparkJob": { # A Cloud Dataproc job for running PySpark applications on YARN. # Job is a Pyspark job.
+    "yarnApplications": [ # [Output-only] The collection of YARN applications spun up by this job. **Beta** Feature: This report is available for testing purposes only. It may be changed before final release.
+      { # A YARN application created by a job. Application information is a subset of org.apache.hadoop.yarn.proto.YarnProtos.ApplicationReportProto. **Beta Feature**: This report is available for testing purposes only. It may be changed before final release.
+        "progress": 3.14, # [Required] The numerical progress of the application, from 1 to 100.
+        "state": "A String", # [Required] The application state.
+        "name": "A String", # [Required] The application name.
+        "trackingUrl": "A String", # [Optional] The HTTP URL of the ApplicationMaster, HistoryServer, or TimelineServer that provides application-specific information. The URL uses the internal hostname, and requires a proxy server for resolution and, possibly, access.
+      },
+    ],
+    "pysparkJob": { # A Cloud Dataproc job for running [Apache PySpark](https://spark.apache.org/docs/0.9.0/python-programming-guide.html) applications on YARN. # Job is a Pyspark job.
       "mainPythonFileUri": "A String", # [Required] The HCFS URI of the main Python file to use as the driver. Must be a .py file.
       "args": [ # [Optional] The arguments to pass to the driver. Do not include arguments, such as `--conf`, that can be set as job properties, since a collision may occur that causes an incorrect job submission.
         "A String",
@@ -987,7 +1043,7 @@
         "a_key": "A String",
       },
     },
-    "hiveJob": { # A Cloud Dataproc job for running Hive queries on YARN. # Job is a Hive job.
+    "hiveJob": { # A Cloud Dataproc job for running [Apache Hive](https://hive.apache.org/) queries on YARN. # Job is a Hive job.
       "queryFileUri": "A String", # The HCFS URI of the script that contains Hive queries.
       "scriptVariables": { # [Optional] Mapping of query variable names to values (equivalent to the Hive command: `SET name="value";`).
         "a_key": "A String",
diff --git a/docs/dyn/dataproc_v1.projects.regions.operations.html b/docs/dyn/dataproc_v1.projects.regions.operations.html
index bc2c461..80af957 100644
--- a/docs/dyn/dataproc_v1.projects.regions.operations.html
+++ b/docs/dyn/dataproc_v1.projects.regions.operations.html
@@ -76,7 +76,7 @@
 <h2>Instance Methods</h2>
 <p class="toc_element">
   <code><a href="#cancel">cancel(name, x__xgafv=None)</a></code></p>
-<p class="firstline">Starts asynchronous cancellation on a long-running operation. The server makes a best effort to cancel the operation, but success is not guaranteed. If the server doesn't support this method, it returns `google.rpc.Code.UNIMPLEMENTED`. Clients can use Operations.GetOperation or other methods to check whether the cancellation succeeded or whether the operation completed despite cancellation.</p>
+<p class="firstline">Starts asynchronous cancellation on a long-running operation. The server makes a best effort to cancel the operation, but success is not guaranteed. If the server doesn't support this method, it returns `google.rpc.Code.UNIMPLEMENTED`. Clients can use Operations.GetOperation or other methods to check whether the cancellation succeeded or whether the operation completed despite cancellation. On successful cancellation, the operation is not deleted; instead, it becomes an operation with an Operation.error value with a google.rpc.Status.code of 1, corresponding to `Code.CANCELLED`.</p>
 <p class="toc_element">
   <code><a href="#delete">delete(name, x__xgafv=None)</a></code></p>
 <p class="firstline">Deletes a long-running operation. This method indicates that the client is no longer interested in the operation result. It does not cancel the operation. If the server doesn't support this method, it returns `google.rpc.Code.UNIMPLEMENTED`.</p>
@@ -92,7 +92,7 @@
 <h3>Method Details</h3>
 <div class="method">
     <code class="details" id="cancel">cancel(name, x__xgafv=None)</code>
-  <pre>Starts asynchronous cancellation on a long-running operation. The server makes a best effort to cancel the operation, but success is not guaranteed. If the server doesn't support this method, it returns `google.rpc.Code.UNIMPLEMENTED`. Clients can use Operations.GetOperation or other methods to check whether the cancellation succeeded or whether the operation completed despite cancellation.
+  <pre>Starts asynchronous cancellation on a long-running operation. The server makes a best effort to cancel the operation, but success is not guaranteed. If the server doesn't support this method, it returns `google.rpc.Code.UNIMPLEMENTED`. Clients can use Operations.GetOperation or other methods to check whether the cancellation succeeded or whether the operation completed despite cancellation. On successful cancellation, the operation is not deleted; instead, it becomes an operation with an Operation.error value with a google.rpc.Status.code of 1, corresponding to `Code.CANCELLED`.
 
 Args:
   name: string, The name of the operation resource to be cancelled. (required)
@@ -133,21 +133,21 @@
 
     { # This resource represents a long-running operation that is the result of a network API call.
     "response": { # The normal response of the operation in case of success. If the original method returns no data on success, such as `Delete`, the response is `google.protobuf.Empty`. If the original method is standard `Get`/`Create`/`Update`, the response should be the resource. For other methods, the response should have the type `XxxResponse`, where `Xxx` is the original method name. For example, if the original method name is `TakeSnapshot()`, the inferred response type is `TakeSnapshotResponse`.
-      "a_key": "", # Properties of the object. Contains field @ype with type URL.
+      "a_key": "", # Properties of the object. Contains field @type with type URL.
     },
-    "error": { # The `Status` type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by [gRPC](https://github.com/grpc). The error model is designed to be: - Simple to use and understand for most users - Flexible enough to meet unexpected needs # Overview The `Status` message contains three pieces of data: error code, error message, and error details. The error code should be an enum value of google.rpc.Code, but it may accept additional error codes if needed. The error message should be a developer-facing English message that helps developers *understand* and *resolve* the error. If a localized user-facing error message is needed, put the localized message in the error details or localize it in the client. The optional error details may contain arbitrary information about the error. There is a predefined set of error detail types in the package `google.rpc` which can be used for common error conditions. # Language mapping The `Status` message is the logical representation of the error model, but it is not necessarily the actual wire format. When the `Status` message is exposed in different client libraries and different wire protocols, it can be mapped differently. For example, it will likely be mapped to some exceptions in Java, but more likely mapped to some error codes in C. # Other uses The error model and the `Status` message can be used in a variety of environments, either with or without APIs, to provide a consistent developer experience across different environments. Example uses of this error model include: - Partial errors. If a service needs to return partial errors to the client, it may embed the `Status` in the normal response to indicate the partial errors. - Workflow errors. A typical workflow has multiple steps. Each step may have a `Status` message for error reporting purpose. - Batch operations. If a client uses batch request and batch response, the `Status` message should be used directly inside batch response, one for each error sub-response. - Asynchronous operations. If an API call embeds asynchronous operation results in its response, the status of those operations should be represented directly using the `Status` message. - Logging. If some API errors are stored in logs, the message `Status` could be used directly after any stripping needed for security/privacy reasons. # The error result of the operation in case of failure.
+    "error": { # The `Status` type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by [gRPC](https://github.com/grpc). The error model is designed to be: - Simple to use and understand for most users - Flexible enough to meet unexpected needs # Overview The `Status` message contains three pieces of data: error code, error message, and error details. The error code should be an enum value of google.rpc.Code, but it may accept additional error codes if needed. The error message should be a developer-facing English message that helps developers *understand* and *resolve* the error. If a localized user-facing error message is needed, put the localized message in the error details or localize it in the client. The optional error details may contain arbitrary information about the error. There is a predefined set of error detail types in the package `google.rpc` which can be used for common error conditions. # Language mapping The `Status` message is the logical representation of the error model, but it is not necessarily the actual wire format. When the `Status` message is exposed in different client libraries and different wire protocols, it can be mapped differently. For example, it will likely be mapped to some exceptions in Java, but more likely mapped to some error codes in C. # Other uses The error model and the `Status` message can be used in a variety of environments, either with or without APIs, to provide a consistent developer experience across different environments. Example uses of this error model include: - Partial errors. If a service needs to return partial errors to the client, it may embed the `Status` in the normal response to indicate the partial errors. - Workflow errors. A typical workflow has multiple steps. Each step may have a `Status` message for error reporting purpose. - Batch operations. If a client uses batch request and batch response, the `Status` message should be used directly inside batch response, one for each error sub-response. - Asynchronous operations. If an API call embeds asynchronous operation results in its response, the status of those operations should be represented directly using the `Status` message. - Logging. If some API errors are stored in logs, the message `Status` could be used directly after any stripping needed for security/privacy reasons. # The error result of the operation in case of failure or cancellation.
       "message": "A String", # A developer-facing error message, which should be in English. Any user-facing error message should be localized and sent in the google.rpc.Status.details field, or localized by the client.
       "code": 42, # The status code, which should be an enum value of google.rpc.Code.
       "details": [ # A list of messages that carry the error details. There will be a common set of message types for APIs to use.
         {
-          "a_key": "", # Properties of the object. Contains field @ype with type URL.
+          "a_key": "", # Properties of the object. Contains field @type with type URL.
         },
       ],
     },
     "done": True or False, # If the value is `false`, it means the operation is still in progress. If true, the operation is completed, and either `error` or `response` is available.
     "name": "A String", # The server-assigned name, which is only unique within the same service that originally returns it. If you use the default HTTP mapping, the `name` should have the format of `operations/some/unique/name`.
     "metadata": { # Service-specific metadata associated with the operation. It typically contains progress information and common metadata such as create time. Some services might not provide such metadata. Any method that returns a long-running operation should document the metadata type, if any.
-      "a_key": "", # Properties of the object. Contains field @ype with type URL.
+      "a_key": "", # Properties of the object. Contains field @type with type URL.
     },
   }</pre>
 </div>
@@ -170,21 +170,21 @@
     "operations": [ # A list of operations that matches the specified filter in the request.
       { # This resource represents a long-running operation that is the result of a network API call.
         "response": { # The normal response of the operation in case of success. If the original method returns no data on success, such as `Delete`, the response is `google.protobuf.Empty`. If the original method is standard `Get`/`Create`/`Update`, the response should be the resource. For other methods, the response should have the type `XxxResponse`, where `Xxx` is the original method name. For example, if the original method name is `TakeSnapshot()`, the inferred response type is `TakeSnapshotResponse`.
-          "a_key": "", # Properties of the object. Contains field @ype with type URL.
+          "a_key": "", # Properties of the object. Contains field @type with type URL.
         },
-        "error": { # The `Status` type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by [gRPC](https://github.com/grpc). The error model is designed to be: - Simple to use and understand for most users - Flexible enough to meet unexpected needs # Overview The `Status` message contains three pieces of data: error code, error message, and error details. The error code should be an enum value of google.rpc.Code, but it may accept additional error codes if needed. The error message should be a developer-facing English message that helps developers *understand* and *resolve* the error. If a localized user-facing error message is needed, put the localized message in the error details or localize it in the client. The optional error details may contain arbitrary information about the error. There is a predefined set of error detail types in the package `google.rpc` which can be used for common error conditions. # Language mapping The `Status` message is the logical representation of the error model, but it is not necessarily the actual wire format. When the `Status` message is exposed in different client libraries and different wire protocols, it can be mapped differently. For example, it will likely be mapped to some exceptions in Java, but more likely mapped to some error codes in C. # Other uses The error model and the `Status` message can be used in a variety of environments, either with or without APIs, to provide a consistent developer experience across different environments. Example uses of this error model include: - Partial errors. If a service needs to return partial errors to the client, it may embed the `Status` in the normal response to indicate the partial errors. - Workflow errors. A typical workflow has multiple steps. Each step may have a `Status` message for error reporting purpose. - Batch operations. If a client uses batch request and batch response, the `Status` message should be used directly inside batch response, one for each error sub-response. - Asynchronous operations. If an API call embeds asynchronous operation results in its response, the status of those operations should be represented directly using the `Status` message. - Logging. If some API errors are stored in logs, the message `Status` could be used directly after any stripping needed for security/privacy reasons. # The error result of the operation in case of failure.
+        "error": { # The `Status` type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by [gRPC](https://github.com/grpc). The error model is designed to be: - Simple to use and understand for most users - Flexible enough to meet unexpected needs # Overview The `Status` message contains three pieces of data: error code, error message, and error details. The error code should be an enum value of google.rpc.Code, but it may accept additional error codes if needed. The error message should be a developer-facing English message that helps developers *understand* and *resolve* the error. If a localized user-facing error message is needed, put the localized message in the error details or localize it in the client. The optional error details may contain arbitrary information about the error. There is a predefined set of error detail types in the package `google.rpc` which can be used for common error conditions. # Language mapping The `Status` message is the logical representation of the error model, but it is not necessarily the actual wire format. When the `Status` message is exposed in different client libraries and different wire protocols, it can be mapped differently. For example, it will likely be mapped to some exceptions in Java, but more likely mapped to some error codes in C. # Other uses The error model and the `Status` message can be used in a variety of environments, either with or without APIs, to provide a consistent developer experience across different environments. Example uses of this error model include: - Partial errors. If a service needs to return partial errors to the client, it may embed the `Status` in the normal response to indicate the partial errors. - Workflow errors. A typical workflow has multiple steps. Each step may have a `Status` message for error reporting purpose. - Batch operations. If a client uses batch request and batch response, the `Status` message should be used directly inside batch response, one for each error sub-response. - Asynchronous operations. If an API call embeds asynchronous operation results in its response, the status of those operations should be represented directly using the `Status` message. - Logging. If some API errors are stored in logs, the message `Status` could be used directly after any stripping needed for security/privacy reasons. # The error result of the operation in case of failure or cancellation.
           "message": "A String", # A developer-facing error message, which should be in English. Any user-facing error message should be localized and sent in the google.rpc.Status.details field, or localized by the client.
           "code": 42, # The status code, which should be an enum value of google.rpc.Code.
           "details": [ # A list of messages that carry the error details. There will be a common set of message types for APIs to use.
             {
-              "a_key": "", # Properties of the object. Contains field @ype with type URL.
+              "a_key": "", # Properties of the object. Contains field @type with type URL.
             },
           ],
         },
         "done": True or False, # If the value is `false`, it means the operation is still in progress. If true, the operation is completed, and either `error` or `response` is available.
         "name": "A String", # The server-assigned name, which is only unique within the same service that originally returns it. If you use the default HTTP mapping, the `name` should have the format of `operations/some/unique/name`.
         "metadata": { # Service-specific metadata associated with the operation. It typically contains progress information and common metadata such as create time. Some services might not provide such metadata. Any method that returns a long-running operation should document the metadata type, if any.
-          "a_key": "", # Properties of the object. Contains field @ype with type URL.
+          "a_key": "", # Properties of the object. Contains field @type with type URL.
         },
       },
     ],
diff --git a/docs/dyn/dataproc_v1alpha1.operations.html b/docs/dyn/dataproc_v1alpha1.operations.html
index 186ad08..fd4e203 100644
--- a/docs/dyn/dataproc_v1alpha1.operations.html
+++ b/docs/dyn/dataproc_v1alpha1.operations.html
@@ -139,21 +139,21 @@
 
     { # An asynchronous operation in a project that runs over a given cluster. Used to track the progress of a user request that is running asynchronously. Examples include creating a cluster, updating a cluster, and deleting a cluster.
     "response": { # The operation response. If the called method returns no data on success, the response is `google.protobuf.Empty`. If the called method is `Get`,`Create` or `Update`, the response is the resource. For all other methods, the response type is a concatenation of the method name and "Response". For example, if the called method is `TakeSnapshot()`, the response type is `TakeSnapshotResponse`.
-      "a_key": "", # Properties of the object. Contains field @ype with type URL.
+      "a_key": "", # Properties of the object. Contains field @type with type URL.
     },
     "error": { # The `Status` type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by [gRPC](https://github.com/grpc). The error model is designed to be: - Simple to use and understand for most users - Flexible enough to meet unexpected needs # Overview The `Status` message contains three pieces of data: error code, error message, and error details. The error code should be an enum value of google.rpc.Code, but it may accept additional error codes if needed. The error message should be a developer-facing English message that helps developers *understand* and *resolve* the error. If a localized user-facing error message is needed, put the localized message in the error details or localize it in the client. The optional error details may contain arbitrary information about the error. There is a predefined set of error detail types in the package `google.rpc` which can be used for common error conditions. # Language mapping The `Status` message is the logical representation of the error model, but it is not necessarily the actual wire format. When the `Status` message is exposed in different client libraries and different wire protocols, it can be mapped differently. For example, it will likely be mapped to some exceptions in Java, but more likely mapped to some error codes in C. # Other uses The error model and the `Status` message can be used in a variety of environments, either with or without APIs, to provide a consistent developer experience across different environments. Example uses of this error model include: - Partial errors. If a service needs to return partial errors to the client, it may embed the `Status` in the normal response to indicate the partial errors. - Workflow errors. A typical workflow has multiple steps. Each step may have a `Status` message for error reporting purpose. - Batch operations. If a client uses batch request and batch response, the `Status` message should be used directly inside batch response, one for each error sub-response. - Asynchronous operations. If an API call embeds asynchronous operation results in its response, the status of those operations should be represented directly using the `Status` message. - Logging. If some API errors are stored in logs, the message `Status` could be used directly after any stripping needed for security/privacy reasons. # The error result of the operation in case of failure.
       "message": "A String", # A developer-facing error message, which should be in English. Any user-facing error message should be localized and sent in the google.rpc.Status.details field, or localized by the client.
       "code": 42, # The status code, which should be an enum value of google.rpc.Code.
       "details": [ # A list of messages that carry the error details. There will be a common set of message types for APIs to use.
         {
-          "a_key": "", # Properties of the object. Contains field @ype with type URL.
+          "a_key": "", # Properties of the object. Contains field @type with type URL.
         },
       ],
     },
     "done": True or False, # Indicates if the operation is done. If true, the operation is complete and the `result` is available. If false, the operation is still in progress.
     "name": "A String", # The name of the operation resource, in the format projects/[project_id]/operations/[operation_id]
     "metadata": { # Service-specific metadata associated with the operation.
-      "a_key": "", # Properties of the object. Contains field @ype with type URL.
+      "a_key": "", # Properties of the object. Contains field @type with type URL.
     },
   }</pre>
 </div>
@@ -176,21 +176,21 @@
     "operations": [ # A list of operations that match the specified filter in the request.
       { # An asynchronous operation in a project that runs over a given cluster. Used to track the progress of a user request that is running asynchronously. Examples include creating a cluster, updating a cluster, and deleting a cluster.
         "response": { # The operation response. If the called method returns no data on success, the response is `google.protobuf.Empty`. If the called method is `Get`,`Create` or `Update`, the response is the resource. For all other methods, the response type is a concatenation of the method name and "Response". For example, if the called method is `TakeSnapshot()`, the response type is `TakeSnapshotResponse`.
-          "a_key": "", # Properties of the object. Contains field @ype with type URL.
+          "a_key": "", # Properties of the object. Contains field @type with type URL.
         },
         "error": { # The `Status` type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by [gRPC](https://github.com/grpc). The error model is designed to be: - Simple to use and understand for most users - Flexible enough to meet unexpected needs # Overview The `Status` message contains three pieces of data: error code, error message, and error details. The error code should be an enum value of google.rpc.Code, but it may accept additional error codes if needed. The error message should be a developer-facing English message that helps developers *understand* and *resolve* the error. If a localized user-facing error message is needed, put the localized message in the error details or localize it in the client. The optional error details may contain arbitrary information about the error. There is a predefined set of error detail types in the package `google.rpc` which can be used for common error conditions. # Language mapping The `Status` message is the logical representation of the error model, but it is not necessarily the actual wire format. When the `Status` message is exposed in different client libraries and different wire protocols, it can be mapped differently. For example, it will likely be mapped to some exceptions in Java, but more likely mapped to some error codes in C. # Other uses The error model and the `Status` message can be used in a variety of environments, either with or without APIs, to provide a consistent developer experience across different environments. Example uses of this error model include: - Partial errors. If a service needs to return partial errors to the client, it may embed the `Status` in the normal response to indicate the partial errors. - Workflow errors. A typical workflow has multiple steps. Each step may have a `Status` message for error reporting purpose. - Batch operations. If a client uses batch request and batch response, the `Status` message should be used directly inside batch response, one for each error sub-response. - Asynchronous operations. If an API call embeds asynchronous operation results in its response, the status of those operations should be represented directly using the `Status` message. - Logging. If some API errors are stored in logs, the message `Status` could be used directly after any stripping needed for security/privacy reasons. # The error result of the operation in case of failure.
           "message": "A String", # A developer-facing error message, which should be in English. Any user-facing error message should be localized and sent in the google.rpc.Status.details field, or localized by the client.
           "code": 42, # The status code, which should be an enum value of google.rpc.Code.
           "details": [ # A list of messages that carry the error details. There will be a common set of message types for APIs to use.
             {
-              "a_key": "", # Properties of the object. Contains field @ype with type URL.
+              "a_key": "", # Properties of the object. Contains field @type with type URL.
             },
           ],
         },
         "done": True or False, # Indicates if the operation is done. If true, the operation is complete and the `result` is available. If false, the operation is still in progress.
         "name": "A String", # The name of the operation resource, in the format projects/[project_id]/operations/[operation_id]
         "metadata": { # Service-specific metadata associated with the operation.
-          "a_key": "", # Properties of the object. Contains field @ype with type URL.
+          "a_key": "", # Properties of the object. Contains field @type with type URL.
         },
       },
     ],
diff --git a/docs/dyn/dataproc_v1alpha1.projects.regions.clusters.html b/docs/dyn/dataproc_v1alpha1.projects.regions.clusters.html
index 3ac60d2..615cf0a 100644
--- a/docs/dyn/dataproc_v1alpha1.projects.regions.clusters.html
+++ b/docs/dyn/dataproc_v1alpha1.projects.regions.clusters.html
@@ -84,7 +84,7 @@
   <code><a href="#get">get(projectId, region, clusterName, x__xgafv=None)</a></code></p>
 <p class="firstline">Request to get the resource representation for a cluster in a project.</p>
 <p class="toc_element">
-  <code><a href="#list">list(projectId, region, pageSize=None, pageToken=None, x__xgafv=None)</a></code></p>
+  <code><a href="#list">list(projectId, region, pageSize=None, filter=None, pageToken=None, x__xgafv=None)</a></code></p>
 <p class="firstline">Request a list of all regions/{region}/clusters in a project.</p>
 <p class="toc_element">
   <code><a href="#list_next">list_next(previous_request, previous_response)</a></code></p>
@@ -119,6 +119,17 @@
     "clusterUuid": "A String", # [Output-only] A cluster UUID (Unique Universal Identifier). Cloud Dataproc generates this value when it creates the cluster.
     "clusterName": "A String", # [Required] The cluster name. Cluster names within a project must be unique. Names from deleted clusters can be reused.
     "projectId": "A String", # [Required] The Google Cloud Platform project ID that the cluster belongs to.
+    "labels": { # [Optional] The labels to associate with this cluster. Label keys must be between 1 and 63 characters long, and must conform to the following PCRE regular expression: \p{Ll}\p{Lo}{0,62} Label values must be between 1 and 63 characters long, and must conform to the following PCRE regular expression: [\p{Ll}\p{Lo}\p{N}_-]{0,63} No more than 64 labels can be associated with a given cluster.
+      "a_key": "A String",
+    },
+    "metrics": { # Contains cluster daemon metrics, such as HDFS and YARN stats. # Contains cluster daemon metrics such as HDFS and YARN stats.
+      "yarnMetrics": { # The YARN metrics.
+        "a_key": "A String",
+      },
+      "hdfsMetrics": { # The HDFS metrics.
+        "a_key": "A String",
+      },
+    },
     "configuration": { # The cluster configuration. # [Required] The cluster configuration. It may differ from a user's initial configuration due to Cloud Dataproc setting of default values and updating clusters.
       "softwareConfiguration": { # Specifies the selection and configuration of software inside the cluster. # [Optional] The configuration settings for software inside the cluster.
         "imageVersion": "A String", # [Optional] The version of software inside the cluster. It must match the regular expression [0-9]+\.[0-9]+. If unspecified it will default to latest version.
@@ -151,6 +162,7 @@
         },
       },
       "gceClusterConfiguration": { # Common configuration settings for resources of Google Compute Engine cluster instances, applicable to all instances in the cluster. # [Optional] The shared Google Compute Engine configuration settings for all instances in a cluster.
+        "internalIpOnly": True or False, # If true, all instances in the cluser will only have internal IP addresses. By default, clusters are not restricted to internal IP addresses, and will have ephemeral external IP addresses assigned to each instance. This restriction can only be enabled for subnetwork enabled networks, and all off-cluster dependencies must be configured to be accessible without external IP addresses.
         "networkUri": "A String", # The Google Compute Engine network to be used for machine communications. Cannot be specified with subnetwork_uri. If neither network_uri nor subnetwork_uri is specified, the "default" network of the project is used, if it exists. Cannot be a "Custom Subnet Network" (see https://cloud.google.com/compute/docs/subnetworks for more information). Example: `compute.googleapis.com/projects/[project_id]/regions/global/default`.
         "tags": [ # The Google Compute Engine tags to add to all instances.
           "A String",
@@ -231,21 +243,21 @@
 
     { # An asynchronous operation in a project that runs over a given cluster. Used to track the progress of a user request that is running asynchronously. Examples include creating a cluster, updating a cluster, and deleting a cluster.
     "response": { # The operation response. If the called method returns no data on success, the response is `google.protobuf.Empty`. If the called method is `Get`,`Create` or `Update`, the response is the resource. For all other methods, the response type is a concatenation of the method name and "Response". For example, if the called method is `TakeSnapshot()`, the response type is `TakeSnapshotResponse`.
-      "a_key": "", # Properties of the object. Contains field @ype with type URL.
+      "a_key": "", # Properties of the object. Contains field @type with type URL.
     },
     "error": { # The `Status` type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by [gRPC](https://github.com/grpc). The error model is designed to be: - Simple to use and understand for most users - Flexible enough to meet unexpected needs # Overview The `Status` message contains three pieces of data: error code, error message, and error details. The error code should be an enum value of google.rpc.Code, but it may accept additional error codes if needed. The error message should be a developer-facing English message that helps developers *understand* and *resolve* the error. If a localized user-facing error message is needed, put the localized message in the error details or localize it in the client. The optional error details may contain arbitrary information about the error. There is a predefined set of error detail types in the package `google.rpc` which can be used for common error conditions. # Language mapping The `Status` message is the logical representation of the error model, but it is not necessarily the actual wire format. When the `Status` message is exposed in different client libraries and different wire protocols, it can be mapped differently. For example, it will likely be mapped to some exceptions in Java, but more likely mapped to some error codes in C. # Other uses The error model and the `Status` message can be used in a variety of environments, either with or without APIs, to provide a consistent developer experience across different environments. Example uses of this error model include: - Partial errors. If a service needs to return partial errors to the client, it may embed the `Status` in the normal response to indicate the partial errors. - Workflow errors. A typical workflow has multiple steps. Each step may have a `Status` message for error reporting purpose. - Batch operations. If a client uses batch request and batch response, the `Status` message should be used directly inside batch response, one for each error sub-response. - Asynchronous operations. If an API call embeds asynchronous operation results in its response, the status of those operations should be represented directly using the `Status` message. - Logging. If some API errors are stored in logs, the message `Status` could be used directly after any stripping needed for security/privacy reasons. # The error result of the operation in case of failure.
       "message": "A String", # A developer-facing error message, which should be in English. Any user-facing error message should be localized and sent in the google.rpc.Status.details field, or localized by the client.
       "code": 42, # The status code, which should be an enum value of google.rpc.Code.
       "details": [ # A list of messages that carry the error details. There will be a common set of message types for APIs to use.
         {
-          "a_key": "", # Properties of the object. Contains field @ype with type URL.
+          "a_key": "", # Properties of the object. Contains field @type with type URL.
         },
       ],
     },
     "done": True or False, # Indicates if the operation is done. If true, the operation is complete and the `result` is available. If false, the operation is still in progress.
     "name": "A String", # The name of the operation resource, in the format projects/[project_id]/operations/[operation_id]
     "metadata": { # Service-specific metadata associated with the operation.
-      "a_key": "", # Properties of the object. Contains field @ype with type URL.
+      "a_key": "", # Properties of the object. Contains field @type with type URL.
     },
   }</pre>
 </div>
@@ -265,21 +277,21 @@
 
     { # An asynchronous operation in a project that runs over a given cluster. Used to track the progress of a user request that is running asynchronously. Examples include creating a cluster, updating a cluster, and deleting a cluster.
     "response": { # The operation response. If the called method returns no data on success, the response is `google.protobuf.Empty`. If the called method is `Get`,`Create` or `Update`, the response is the resource. For all other methods, the response type is a concatenation of the method name and "Response". For example, if the called method is `TakeSnapshot()`, the response type is `TakeSnapshotResponse`.
-      "a_key": "", # Properties of the object. Contains field @ype with type URL.
+      "a_key": "", # Properties of the object. Contains field @type with type URL.
     },
     "error": { # The `Status` type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by [gRPC](https://github.com/grpc). The error model is designed to be: - Simple to use and understand for most users - Flexible enough to meet unexpected needs # Overview The `Status` message contains three pieces of data: error code, error message, and error details. The error code should be an enum value of google.rpc.Code, but it may accept additional error codes if needed. The error message should be a developer-facing English message that helps developers *understand* and *resolve* the error. If a localized user-facing error message is needed, put the localized message in the error details or localize it in the client. The optional error details may contain arbitrary information about the error. There is a predefined set of error detail types in the package `google.rpc` which can be used for common error conditions. # Language mapping The `Status` message is the logical representation of the error model, but it is not necessarily the actual wire format. When the `Status` message is exposed in different client libraries and different wire protocols, it can be mapped differently. For example, it will likely be mapped to some exceptions in Java, but more likely mapped to some error codes in C. # Other uses The error model and the `Status` message can be used in a variety of environments, either with or without APIs, to provide a consistent developer experience across different environments. Example uses of this error model include: - Partial errors. If a service needs to return partial errors to the client, it may embed the `Status` in the normal response to indicate the partial errors. - Workflow errors. A typical workflow has multiple steps. Each step may have a `Status` message for error reporting purpose. - Batch operations. If a client uses batch request and batch response, the `Status` message should be used directly inside batch response, one for each error sub-response. - Asynchronous operations. If an API call embeds asynchronous operation results in its response, the status of those operations should be represented directly using the `Status` message. - Logging. If some API errors are stored in logs, the message `Status` could be used directly after any stripping needed for security/privacy reasons. # The error result of the operation in case of failure.
       "message": "A String", # A developer-facing error message, which should be in English. Any user-facing error message should be localized and sent in the google.rpc.Status.details field, or localized by the client.
       "code": 42, # The status code, which should be an enum value of google.rpc.Code.
       "details": [ # A list of messages that carry the error details. There will be a common set of message types for APIs to use.
         {
-          "a_key": "", # Properties of the object. Contains field @ype with type URL.
+          "a_key": "", # Properties of the object. Contains field @type with type URL.
         },
       ],
     },
     "done": True or False, # Indicates if the operation is done. If true, the operation is complete and the `result` is available. If false, the operation is still in progress.
     "name": "A String", # The name of the operation resource, in the format projects/[project_id]/operations/[operation_id]
     "metadata": { # Service-specific metadata associated with the operation.
-      "a_key": "", # Properties of the object. Contains field @ype with type URL.
+      "a_key": "", # Properties of the object. Contains field @type with type URL.
     },
   }</pre>
 </div>
@@ -313,6 +325,17 @@
       "clusterUuid": "A String", # [Output-only] A cluster UUID (Unique Universal Identifier). Cloud Dataproc generates this value when it creates the cluster.
       "clusterName": "A String", # [Required] The cluster name. Cluster names within a project must be unique. Names from deleted clusters can be reused.
       "projectId": "A String", # [Required] The Google Cloud Platform project ID that the cluster belongs to.
+      "labels": { # [Optional] The labels to associate with this cluster. Label keys must be between 1 and 63 characters long, and must conform to the following PCRE regular expression: \p{Ll}\p{Lo}{0,62} Label values must be between 1 and 63 characters long, and must conform to the following PCRE regular expression: [\p{Ll}\p{Lo}\p{N}_-]{0,63} No more than 64 labels can be associated with a given cluster.
+        "a_key": "A String",
+      },
+      "metrics": { # Contains cluster daemon metrics, such as HDFS and YARN stats. # Contains cluster daemon metrics such as HDFS and YARN stats.
+        "yarnMetrics": { # The YARN metrics.
+          "a_key": "A String",
+        },
+        "hdfsMetrics": { # The HDFS metrics.
+          "a_key": "A String",
+        },
+      },
       "configuration": { # The cluster configuration. # [Required] The cluster configuration. It may differ from a user's initial configuration due to Cloud Dataproc setting of default values and updating clusters.
         "softwareConfiguration": { # Specifies the selection and configuration of software inside the cluster. # [Optional] The configuration settings for software inside the cluster.
           "imageVersion": "A String", # [Optional] The version of software inside the cluster. It must match the regular expression [0-9]+\.[0-9]+. If unspecified it will default to latest version.
@@ -345,6 +368,7 @@
           },
         },
         "gceClusterConfiguration": { # Common configuration settings for resources of Google Compute Engine cluster instances, applicable to all instances in the cluster. # [Optional] The shared Google Compute Engine configuration settings for all instances in a cluster.
+          "internalIpOnly": True or False, # If true, all instances in the cluser will only have internal IP addresses. By default, clusters are not restricted to internal IP addresses, and will have ephemeral external IP addresses assigned to each instance. This restriction can only be enabled for subnetwork enabled networks, and all off-cluster dependencies must be configured to be accessible without external IP addresses.
           "networkUri": "A String", # The Google Compute Engine network to be used for machine communications. Cannot be specified with subnetwork_uri. If neither network_uri nor subnetwork_uri is specified, the "default" network of the project is used, if it exists. Cannot be a "Custom Subnet Network" (see https://cloud.google.com/compute/docs/subnetworks for more information). Example: `compute.googleapis.com/projects/[project_id]/regions/global/default`.
           "tags": [ # The Google Compute Engine tags to add to all instances.
             "A String",
@@ -420,13 +444,14 @@
 </div>
 
 <div class="method">
-    <code class="details" id="list">list(projectId, region, pageSize=None, pageToken=None, x__xgafv=None)</code>
+    <code class="details" id="list">list(projectId, region, pageSize=None, filter=None, pageToken=None, x__xgafv=None)</code>
   <pre>Request a list of all regions/{region}/clusters in a project.
 
 Args:
   projectId: string, [Required] The ID of the Google Cloud Platform project that the cluster belongs to. (required)
   region: string, [Required] The Dataproc region in which to handle the request. (required)
   pageSize: integer, The standard List page size.
+  filter: string, [Optional] A filter constraining which clusters to list. Valid filters contain label terms such as: labels.key1 = val1 AND (-labels.k2 = val2 OR labels.k3 = val3)
   pageToken: string, The standard List page token.
   x__xgafv: string, V1 error format.
 
@@ -452,6 +477,17 @@
           "clusterUuid": "A String", # [Output-only] A cluster UUID (Unique Universal Identifier). Cloud Dataproc generates this value when it creates the cluster.
           "clusterName": "A String", # [Required] The cluster name. Cluster names within a project must be unique. Names from deleted clusters can be reused.
           "projectId": "A String", # [Required] The Google Cloud Platform project ID that the cluster belongs to.
+          "labels": { # [Optional] The labels to associate with this cluster. Label keys must be between 1 and 63 characters long, and must conform to the following PCRE regular expression: \p{Ll}\p{Lo}{0,62} Label values must be between 1 and 63 characters long, and must conform to the following PCRE regular expression: [\p{Ll}\p{Lo}\p{N}_-]{0,63} No more than 64 labels can be associated with a given cluster.
+            "a_key": "A String",
+          },
+          "metrics": { # Contains cluster daemon metrics, such as HDFS and YARN stats. # Contains cluster daemon metrics such as HDFS and YARN stats.
+            "yarnMetrics": { # The YARN metrics.
+              "a_key": "A String",
+            },
+            "hdfsMetrics": { # The HDFS metrics.
+              "a_key": "A String",
+            },
+          },
           "configuration": { # The cluster configuration. # [Required] The cluster configuration. It may differ from a user's initial configuration due to Cloud Dataproc setting of default values and updating clusters.
             "softwareConfiguration": { # Specifies the selection and configuration of software inside the cluster. # [Optional] The configuration settings for software inside the cluster.
               "imageVersion": "A String", # [Optional] The version of software inside the cluster. It must match the regular expression [0-9]+\.[0-9]+. If unspecified it will default to latest version.
@@ -484,6 +520,7 @@
               },
             },
             "gceClusterConfiguration": { # Common configuration settings for resources of Google Compute Engine cluster instances, applicable to all instances in the cluster. # [Optional] The shared Google Compute Engine configuration settings for all instances in a cluster.
+              "internalIpOnly": True or False, # If true, all instances in the cluser will only have internal IP addresses. By default, clusters are not restricted to internal IP addresses, and will have ephemeral external IP addresses assigned to each instance. This restriction can only be enabled for subnetwork enabled networks, and all off-cluster dependencies must be configured to be accessible without external IP addresses.
               "networkUri": "A String", # The Google Compute Engine network to be used for machine communications. Cannot be specified with subnetwork_uri. If neither network_uri nor subnetwork_uri is specified, the "default" network of the project is used, if it exists. Cannot be a "Custom Subnet Network" (see https://cloud.google.com/compute/docs/subnetworks for more information). Example: `compute.googleapis.com/projects/[project_id]/regions/global/default`.
               "tags": [ # The Google Compute Engine tags to add to all instances.
                 "A String",
@@ -601,6 +638,17 @@
     "clusterUuid": "A String", # [Output-only] A cluster UUID (Unique Universal Identifier). Cloud Dataproc generates this value when it creates the cluster.
     "clusterName": "A String", # [Required] The cluster name. Cluster names within a project must be unique. Names from deleted clusters can be reused.
     "projectId": "A String", # [Required] The Google Cloud Platform project ID that the cluster belongs to.
+    "labels": { # [Optional] The labels to associate with this cluster. Label keys must be between 1 and 63 characters long, and must conform to the following PCRE regular expression: \p{Ll}\p{Lo}{0,62} Label values must be between 1 and 63 characters long, and must conform to the following PCRE regular expression: [\p{Ll}\p{Lo}\p{N}_-]{0,63} No more than 64 labels can be associated with a given cluster.
+      "a_key": "A String",
+    },
+    "metrics": { # Contains cluster daemon metrics, such as HDFS and YARN stats. # Contains cluster daemon metrics such as HDFS and YARN stats.
+      "yarnMetrics": { # The YARN metrics.
+        "a_key": "A String",
+      },
+      "hdfsMetrics": { # The HDFS metrics.
+        "a_key": "A String",
+      },
+    },
     "configuration": { # The cluster configuration. # [Required] The cluster configuration. It may differ from a user's initial configuration due to Cloud Dataproc setting of default values and updating clusters.
       "softwareConfiguration": { # Specifies the selection and configuration of software inside the cluster. # [Optional] The configuration settings for software inside the cluster.
         "imageVersion": "A String", # [Optional] The version of software inside the cluster. It must match the regular expression [0-9]+\.[0-9]+. If unspecified it will default to latest version.
@@ -633,6 +681,7 @@
         },
       },
       "gceClusterConfiguration": { # Common configuration settings for resources of Google Compute Engine cluster instances, applicable to all instances in the cluster. # [Optional] The shared Google Compute Engine configuration settings for all instances in a cluster.
+        "internalIpOnly": True or False, # If true, all instances in the cluser will only have internal IP addresses. By default, clusters are not restricted to internal IP addresses, and will have ephemeral external IP addresses assigned to each instance. This restriction can only be enabled for subnetwork enabled networks, and all off-cluster dependencies must be configured to be accessible without external IP addresses.
         "networkUri": "A String", # The Google Compute Engine network to be used for machine communications. Cannot be specified with subnetwork_uri. If neither network_uri nor subnetwork_uri is specified, the "default" network of the project is used, if it exists. Cannot be a "Custom Subnet Network" (see https://cloud.google.com/compute/docs/subnetworks for more information). Example: `compute.googleapis.com/projects/[project_id]/regions/global/default`.
         "tags": [ # The Google Compute Engine tags to add to all instances.
           "A String",
@@ -714,21 +763,21 @@
 
     { # An asynchronous operation in a project that runs over a given cluster. Used to track the progress of a user request that is running asynchronously. Examples include creating a cluster, updating a cluster, and deleting a cluster.
     "response": { # The operation response. If the called method returns no data on success, the response is `google.protobuf.Empty`. If the called method is `Get`,`Create` or `Update`, the response is the resource. For all other methods, the response type is a concatenation of the method name and "Response". For example, if the called method is `TakeSnapshot()`, the response type is `TakeSnapshotResponse`.
-      "a_key": "", # Properties of the object. Contains field @ype with type URL.
+      "a_key": "", # Properties of the object. Contains field @type with type URL.
     },
     "error": { # The `Status` type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by [gRPC](https://github.com/grpc). The error model is designed to be: - Simple to use and understand for most users - Flexible enough to meet unexpected needs # Overview The `Status` message contains three pieces of data: error code, error message, and error details. The error code should be an enum value of google.rpc.Code, but it may accept additional error codes if needed. The error message should be a developer-facing English message that helps developers *understand* and *resolve* the error. If a localized user-facing error message is needed, put the localized message in the error details or localize it in the client. The optional error details may contain arbitrary information about the error. There is a predefined set of error detail types in the package `google.rpc` which can be used for common error conditions. # Language mapping The `Status` message is the logical representation of the error model, but it is not necessarily the actual wire format. When the `Status` message is exposed in different client libraries and different wire protocols, it can be mapped differently. For example, it will likely be mapped to some exceptions in Java, but more likely mapped to some error codes in C. # Other uses The error model and the `Status` message can be used in a variety of environments, either with or without APIs, to provide a consistent developer experience across different environments. Example uses of this error model include: - Partial errors. If a service needs to return partial errors to the client, it may embed the `Status` in the normal response to indicate the partial errors. - Workflow errors. A typical workflow has multiple steps. Each step may have a `Status` message for error reporting purpose. - Batch operations. If a client uses batch request and batch response, the `Status` message should be used directly inside batch response, one for each error sub-response. - Asynchronous operations. If an API call embeds asynchronous operation results in its response, the status of those operations should be represented directly using the `Status` message. - Logging. If some API errors are stored in logs, the message `Status` could be used directly after any stripping needed for security/privacy reasons. # The error result of the operation in case of failure.
       "message": "A String", # A developer-facing error message, which should be in English. Any user-facing error message should be localized and sent in the google.rpc.Status.details field, or localized by the client.
       "code": 42, # The status code, which should be an enum value of google.rpc.Code.
       "details": [ # A list of messages that carry the error details. There will be a common set of message types for APIs to use.
         {
-          "a_key": "", # Properties of the object. Contains field @ype with type URL.
+          "a_key": "", # Properties of the object. Contains field @type with type URL.
         },
       ],
     },
     "done": True or False, # Indicates if the operation is done. If true, the operation is complete and the `result` is available. If false, the operation is still in progress.
     "name": "A String", # The name of the operation resource, in the format projects/[project_id]/operations/[operation_id]
     "metadata": { # Service-specific metadata associated with the operation.
-      "a_key": "", # Properties of the object. Contains field @ype with type URL.
+      "a_key": "", # Properties of the object. Contains field @type with type URL.
     },
   }</pre>
 </div>
diff --git a/docs/dyn/dataproc_v1alpha1.projects.regions.jobs.html b/docs/dyn/dataproc_v1alpha1.projects.regions.jobs.html
index 0983099..fd8ebb2 100644
--- a/docs/dyn/dataproc_v1alpha1.projects.regions.jobs.html
+++ b/docs/dyn/dataproc_v1alpha1.projects.regions.jobs.html
@@ -204,6 +204,9 @@
       },
     },
     "driverOutputResourceUri": "A String", # [Output-only] A URI pointing to the location of the stdout of the job's driver program.
+    "labels": { # [Optional] The labels to associate with this job. Label keys must be between 1 and 63 characters long, and must conform to the following regular expression: \p{Ll}\p{Lo}{0,62} Label values must be between 1 and 63 characters long, and must conform to the following regular expression: [\p{Ll}\p{Lo}\p{N}_-]{0,63} No more than 64 labels can be associated with a given job.
+      "a_key": "A String",
+    },
     "submittedBy": "A String", # [Output-only] The email address of the user submitting the job. For jobs submitted on the cluster, the address is username@hostname.
     "driverInputResourceUri": "A String", # [Output-only] A URI pointing to the location of the stdin of the job's driver program, only set if the job is interactive.
     "driverControlFilesUri": "A String", # [Output-only] If present, the location of miscellaneous control files which may be used as part of job setup and handling. If not present, control files may be placed in the same location as driver_output_uri.
@@ -398,6 +401,9 @@
       },
     },
     "driverOutputResourceUri": "A String", # [Output-only] A URI pointing to the location of the stdout of the job's driver program.
+    "labels": { # [Optional] The labels to associate with this job. Label keys must be between 1 and 63 characters long, and must conform to the following regular expression: \p{Ll}\p{Lo}{0,62} Label values must be between 1 and 63 characters long, and must conform to the following regular expression: [\p{Ll}\p{Lo}\p{N}_-]{0,63} No more than 64 labels can be associated with a given job.
+      "a_key": "A String",
+    },
     "submittedBy": "A String", # [Output-only] The email address of the user submitting the job. For jobs submitted on the cluster, the address is username@hostname.
     "driverInputResourceUri": "A String", # [Output-only] A URI pointing to the location of the stdin of the job's driver program, only set if the job is interactive.
     "driverControlFilesUri": "A String", # [Output-only] If present, the location of miscellaneous control files which may be used as part of job setup and handling. If not present, control files may be placed in the same location as driver_output_uri.
@@ -592,6 +598,9 @@
       },
     },
     "driverOutputResourceUri": "A String", # [Output-only] A URI pointing to the location of the stdout of the job's driver program.
+    "labels": { # [Optional] The labels to associate with this job. Label keys must be between 1 and 63 characters long, and must conform to the following regular expression: \p{Ll}\p{Lo}{0,62} Label values must be between 1 and 63 characters long, and must conform to the following regular expression: [\p{Ll}\p{Lo}\p{N}_-]{0,63} No more than 64 labels can be associated with a given job.
+      "a_key": "A String",
+    },
     "submittedBy": "A String", # [Output-only] The email address of the user submitting the job. For jobs submitted on the cluster, the address is username@hostname.
     "driverInputResourceUri": "A String", # [Output-only] A URI pointing to the location of the stdin of the job's driver program, only set if the job is interactive.
     "driverControlFilesUri": "A String", # [Output-only] If present, the location of miscellaneous control files which may be used as part of job setup and handling. If not present, control files may be placed in the same location as driver_output_uri.
@@ -784,6 +793,9 @@
         },
       },
       "driverOutputResourceUri": "A String", # [Output-only] A URI pointing to the location of the stdout of the job's driver program.
+      "labels": { # [Optional] The labels to associate with this job. Label keys must be between 1 and 63 characters long, and must conform to the following regular expression: \p{Ll}\p{Lo}{0,62} Label values must be between 1 and 63 characters long, and must conform to the following regular expression: [\p{Ll}\p{Lo}\p{N}_-]{0,63} No more than 64 labels can be associated with a given job.
+        "a_key": "A String",
+      },
       "submittedBy": "A String", # [Output-only] The email address of the user submitting the job. For jobs submitted on the cluster, the address is username@hostname.
       "driverInputResourceUri": "A String", # [Output-only] A URI pointing to the location of the stdin of the job's driver program, only set if the job is interactive.
       "driverControlFilesUri": "A String", # [Output-only] If present, the location of miscellaneous control files which may be used as part of job setup and handling. If not present, control files may be placed in the same location as driver_output_uri.
@@ -970,6 +982,9 @@
       },
     },
     "driverOutputResourceUri": "A String", # [Output-only] A URI pointing to the location of the stdout of the job's driver program.
+    "labels": { # [Optional] The labels to associate with this job. Label keys must be between 1 and 63 characters long, and must conform to the following regular expression: \p{Ll}\p{Lo}{0,62} Label values must be between 1 and 63 characters long, and must conform to the following regular expression: [\p{Ll}\p{Lo}\p{N}_-]{0,63} No more than 64 labels can be associated with a given job.
+      "a_key": "A String",
+    },
     "submittedBy": "A String", # [Output-only] The email address of the user submitting the job. For jobs submitted on the cluster, the address is username@hostname.
     "driverInputResourceUri": "A String", # [Output-only] A URI pointing to the location of the stdin of the job's driver program, only set if the job is interactive.
     "driverControlFilesUri": "A String", # [Output-only] If present, the location of miscellaneous control files which may be used as part of job setup and handling. If not present, control files may be placed in the same location as driver_output_uri.
diff --git a/docs/dyn/dataproc_v1beta1.operations.html b/docs/dyn/dataproc_v1beta1.operations.html
index edf2fa3..66a1b7d 100644
--- a/docs/dyn/dataproc_v1beta1.operations.html
+++ b/docs/dyn/dataproc_v1beta1.operations.html
@@ -139,21 +139,21 @@
 
     { # This resource represents a long-running operation that is the result of a network API call.
     "response": { # The normal response of the operation in case of success. If the original method returns no data on success, such as `Delete`, the response is `google.protobuf.Empty`. If the original method is standard `Get`/`Create`/`Update`, the response should be the resource. For other methods, the response should have the type `XxxResponse`, where `Xxx` is the original method name. For example, if the original method name is `TakeSnapshot()`, the inferred response type is `TakeSnapshotResponse`.
-      "a_key": "", # Properties of the object. Contains field @ype with type URL.
+      "a_key": "", # Properties of the object. Contains field @type with type URL.
     },
-    "error": { # The `Status` type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by [gRPC](https://github.com/grpc). The error model is designed to be: - Simple to use and understand for most users - Flexible enough to meet unexpected needs # Overview The `Status` message contains three pieces of data: error code, error message, and error details. The error code should be an enum value of google.rpc.Code, but it may accept additional error codes if needed. The error message should be a developer-facing English message that helps developers *understand* and *resolve* the error. If a localized user-facing error message is needed, put the localized message in the error details or localize it in the client. The optional error details may contain arbitrary information about the error. There is a predefined set of error detail types in the package `google.rpc` which can be used for common error conditions. # Language mapping The `Status` message is the logical representation of the error model, but it is not necessarily the actual wire format. When the `Status` message is exposed in different client libraries and different wire protocols, it can be mapped differently. For example, it will likely be mapped to some exceptions in Java, but more likely mapped to some error codes in C. # Other uses The error model and the `Status` message can be used in a variety of environments, either with or without APIs, to provide a consistent developer experience across different environments. Example uses of this error model include: - Partial errors. If a service needs to return partial errors to the client, it may embed the `Status` in the normal response to indicate the partial errors. - Workflow errors. A typical workflow has multiple steps. Each step may have a `Status` message for error reporting purpose. - Batch operations. If a client uses batch request and batch response, the `Status` message should be used directly inside batch response, one for each error sub-response. - Asynchronous operations. If an API call embeds asynchronous operation results in its response, the status of those operations should be represented directly using the `Status` message. - Logging. If some API errors are stored in logs, the message `Status` could be used directly after any stripping needed for security/privacy reasons. # The error result of the operation in case of failure.
+    "error": { # The `Status` type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by [gRPC](https://github.com/grpc). The error model is designed to be: - Simple to use and understand for most users - Flexible enough to meet unexpected needs # Overview The `Status` message contains three pieces of data: error code, error message, and error details. The error code should be an enum value of google.rpc.Code, but it may accept additional error codes if needed. The error message should be a developer-facing English message that helps developers *understand* and *resolve* the error. If a localized user-facing error message is needed, put the localized message in the error details or localize it in the client. The optional error details may contain arbitrary information about the error. There is a predefined set of error detail types in the package `google.rpc` which can be used for common error conditions. # Language mapping The `Status` message is the logical representation of the error model, but it is not necessarily the actual wire format. When the `Status` message is exposed in different client libraries and different wire protocols, it can be mapped differently. For example, it will likely be mapped to some exceptions in Java, but more likely mapped to some error codes in C. # Other uses The error model and the `Status` message can be used in a variety of environments, either with or without APIs, to provide a consistent developer experience across different environments. Example uses of this error model include: - Partial errors. If a service needs to return partial errors to the client, it may embed the `Status` in the normal response to indicate the partial errors. - Workflow errors. A typical workflow has multiple steps. Each step may have a `Status` message for error reporting purpose. - Batch operations. If a client uses batch request and batch response, the `Status` message should be used directly inside batch response, one for each error sub-response. - Asynchronous operations. If an API call embeds asynchronous operation results in its response, the status of those operations should be represented directly using the `Status` message. - Logging. If some API errors are stored in logs, the message `Status` could be used directly after any stripping needed for security/privacy reasons. # The error result of the operation in case of failure or cancellation.
       "message": "A String", # A developer-facing error message, which should be in English. Any user-facing error message should be localized and sent in the google.rpc.Status.details field, or localized by the client.
       "code": 42, # The status code, which should be an enum value of google.rpc.Code.
       "details": [ # A list of messages that carry the error details. There will be a common set of message types for APIs to use.
         {
-          "a_key": "", # Properties of the object. Contains field @ype with type URL.
+          "a_key": "", # Properties of the object. Contains field @type with type URL.
         },
       ],
     },
     "done": True or False, # If the value is `false`, it means the operation is still in progress. If true, the operation is completed, and either `error` or `response` is available.
     "name": "A String", # The server-assigned name, which is only unique within the same service that originally returns it. If you use the default HTTP mapping, the `name` should have the format of `operations/some/unique/name`.
     "metadata": { # Service-specific metadata associated with the operation. It typically contains progress information and common metadata such as create time. Some services might not provide such metadata. Any method that returns a long-running operation should document the metadata type, if any.
-      "a_key": "", # Properties of the object. Contains field @ype with type URL.
+      "a_key": "", # Properties of the object. Contains field @type with type URL.
     },
   }</pre>
 </div>
@@ -176,21 +176,21 @@
     "operations": [ # A list of operations that matches the specified filter in the request.
       { # This resource represents a long-running operation that is the result of a network API call.
         "response": { # The normal response of the operation in case of success. If the original method returns no data on success, such as `Delete`, the response is `google.protobuf.Empty`. If the original method is standard `Get`/`Create`/`Update`, the response should be the resource. For other methods, the response should have the type `XxxResponse`, where `Xxx` is the original method name. For example, if the original method name is `TakeSnapshot()`, the inferred response type is `TakeSnapshotResponse`.
-          "a_key": "", # Properties of the object. Contains field @ype with type URL.
+          "a_key": "", # Properties of the object. Contains field @type with type URL.
         },
-        "error": { # The `Status` type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by [gRPC](https://github.com/grpc). The error model is designed to be: - Simple to use and understand for most users - Flexible enough to meet unexpected needs # Overview The `Status` message contains three pieces of data: error code, error message, and error details. The error code should be an enum value of google.rpc.Code, but it may accept additional error codes if needed. The error message should be a developer-facing English message that helps developers *understand* and *resolve* the error. If a localized user-facing error message is needed, put the localized message in the error details or localize it in the client. The optional error details may contain arbitrary information about the error. There is a predefined set of error detail types in the package `google.rpc` which can be used for common error conditions. # Language mapping The `Status` message is the logical representation of the error model, but it is not necessarily the actual wire format. When the `Status` message is exposed in different client libraries and different wire protocols, it can be mapped differently. For example, it will likely be mapped to some exceptions in Java, but more likely mapped to some error codes in C. # Other uses The error model and the `Status` message can be used in a variety of environments, either with or without APIs, to provide a consistent developer experience across different environments. Example uses of this error model include: - Partial errors. If a service needs to return partial errors to the client, it may embed the `Status` in the normal response to indicate the partial errors. - Workflow errors. A typical workflow has multiple steps. Each step may have a `Status` message for error reporting purpose. - Batch operations. If a client uses batch request and batch response, the `Status` message should be used directly inside batch response, one for each error sub-response. - Asynchronous operations. If an API call embeds asynchronous operation results in its response, the status of those operations should be represented directly using the `Status` message. - Logging. If some API errors are stored in logs, the message `Status` could be used directly after any stripping needed for security/privacy reasons. # The error result of the operation in case of failure.
+        "error": { # The `Status` type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by [gRPC](https://github.com/grpc). The error model is designed to be: - Simple to use and understand for most users - Flexible enough to meet unexpected needs # Overview The `Status` message contains three pieces of data: error code, error message, and error details. The error code should be an enum value of google.rpc.Code, but it may accept additional error codes if needed. The error message should be a developer-facing English message that helps developers *understand* and *resolve* the error. If a localized user-facing error message is needed, put the localized message in the error details or localize it in the client. The optional error details may contain arbitrary information about the error. There is a predefined set of error detail types in the package `google.rpc` which can be used for common error conditions. # Language mapping The `Status` message is the logical representation of the error model, but it is not necessarily the actual wire format. When the `Status` message is exposed in different client libraries and different wire protocols, it can be mapped differently. For example, it will likely be mapped to some exceptions in Java, but more likely mapped to some error codes in C. # Other uses The error model and the `Status` message can be used in a variety of environments, either with or without APIs, to provide a consistent developer experience across different environments. Example uses of this error model include: - Partial errors. If a service needs to return partial errors to the client, it may embed the `Status` in the normal response to indicate the partial errors. - Workflow errors. A typical workflow has multiple steps. Each step may have a `Status` message for error reporting purpose. - Batch operations. If a client uses batch request and batch response, the `Status` message should be used directly inside batch response, one for each error sub-response. - Asynchronous operations. If an API call embeds asynchronous operation results in its response, the status of those operations should be represented directly using the `Status` message. - Logging. If some API errors are stored in logs, the message `Status` could be used directly after any stripping needed for security/privacy reasons. # The error result of the operation in case of failure or cancellation.
           "message": "A String", # A developer-facing error message, which should be in English. Any user-facing error message should be localized and sent in the google.rpc.Status.details field, or localized by the client.
           "code": 42, # The status code, which should be an enum value of google.rpc.Code.
           "details": [ # A list of messages that carry the error details. There will be a common set of message types for APIs to use.
             {
-              "a_key": "", # Properties of the object. Contains field @ype with type URL.
+              "a_key": "", # Properties of the object. Contains field @type with type URL.
             },
           ],
         },
         "done": True or False, # If the value is `false`, it means the operation is still in progress. If true, the operation is completed, and either `error` or `response` is available.
         "name": "A String", # The server-assigned name, which is only unique within the same service that originally returns it. If you use the default HTTP mapping, the `name` should have the format of `operations/some/unique/name`.
         "metadata": { # Service-specific metadata associated with the operation. It typically contains progress information and common metadata such as create time. Some services might not provide such metadata. Any method that returns a long-running operation should document the metadata type, if any.
-          "a_key": "", # Properties of the object. Contains field @ype with type URL.
+          "a_key": "", # Properties of the object. Contains field @type with type URL.
         },
       },
     ],
diff --git a/docs/dyn/dataproc_v1beta1.projects.clusters.html b/docs/dyn/dataproc_v1beta1.projects.clusters.html
index b478300..7aca002 100644
--- a/docs/dyn/dataproc_v1beta1.projects.clusters.html
+++ b/docs/dyn/dataproc_v1beta1.projects.clusters.html
@@ -87,7 +87,7 @@
   <code><a href="#get">get(projectId, clusterName, x__xgafv=None)</a></code></p>
 <p class="firstline">Gets the resource representation for a cluster in a project.</p>
 <p class="toc_element">
-  <code><a href="#list">list(projectId, pageSize=None, pageToken=None, x__xgafv=None)</a></code></p>
+  <code><a href="#list">list(projectId, pageSize=None, filter=None, pageToken=None, x__xgafv=None)</a></code></p>
 <p class="firstline">Lists all clusters in a project.</p>
 <p class="toc_element">
   <code><a href="#list_next">list_next(previous_request, previous_response)</a></code></p>
@@ -121,6 +121,17 @@
   "clusterUuid": "A String", # [Output-only] A cluster UUID (Unique Universal Identifier). Cloud Dataproc generates this value when it creates the cluster.
   "clusterName": "A String", # [Required] The cluster name. Cluster names within a project must be unique. Names from deleted clusters can be reused.
   "projectId": "A String", # [Required] The Google Cloud Platform project ID that the cluster belongs to.
+  "labels": { # [Optional] The labels to associate with this cluster. Label keys must be between 1 and 63 characters long, and must conform to the following PCRE regular expression: \p{Ll}\p{Lo}{0,62} Label values must be between 1 and 63 characters long, and must conform to the following PCRE regular expression: [\p{Ll}\p{Lo}\p{N}_-]{0,63} No more than 64 labels can be associated with a given cluster.
+    "a_key": "A String",
+  },
+  "metrics": { # Contains cluster daemon metrics, such as HDFS and YARN stats. # Contains cluster daemon metrics such as HDFS and YARN stats.
+    "yarnMetrics": { # The YARN metrics.
+      "a_key": "A String",
+    },
+    "hdfsMetrics": { # The HDFS metrics.
+      "a_key": "A String",
+    },
+  },
   "configuration": { # The cluster configuration. # [Required] The cluster configuration. Note that Cloud Dataproc may set default values, and values may change when clusters are updated.
     "softwareConfiguration": { # Specifies the selection and configuration of software inside the cluster. # [Optional] The configuration settings for software inside the cluster.
       "imageVersion": "A String", # [Optional] The version of software inside the cluster. It must match the regular expression `[0-9]+\.[0-9]+`. If unspecified, it defaults to the latest version (see [Cloud Dataproc Versioning](/dataproc/versioning)).
@@ -129,6 +140,7 @@
       },
     },
     "gceClusterConfiguration": { # Common configuration settings for resources of Google Compute Engine cluster instances, applicable to all instances in the cluster. # [Required] The shared Google Compute Engine configuration settings for all instances in a cluster.
+      "internalIpOnly": True or False, # If true, all instances in the cluser will only have internal IP addresses. By default, clusters are not restricted to internal IP addresses, and will have ephemeral external IP addresses assigned to each instance. This restriction can only be enabled for subnetwork enabled networks, and all off-cluster dependencies must be configured to be accessible without external IP addresses.
       "networkUri": "A String", # The Google Compute Engine network to be used for machine communications. Cannot be specified with subnetwork_uri. If neither network_uri nor subnetwork_uri is specified, the "default" network of the project is used, if it exists. Cannot be a "Custom Subnet Network" (see https://cloud.google.com/compute/docs/subnetworks for more information). Example: `https://www.googleapis.com/compute/v1/projects/[project_id]/regions/global/default`.
       "tags": [ # The Google Compute Engine tags to add to all instances.
         "A String",
@@ -210,21 +222,21 @@
 
     { # This resource represents a long-running operation that is the result of a network API call.
     "response": { # The normal response of the operation in case of success. If the original method returns no data on success, such as `Delete`, the response is `google.protobuf.Empty`. If the original method is standard `Get`/`Create`/`Update`, the response should be the resource. For other methods, the response should have the type `XxxResponse`, where `Xxx` is the original method name. For example, if the original method name is `TakeSnapshot()`, the inferred response type is `TakeSnapshotResponse`.
-      "a_key": "", # Properties of the object. Contains field @ype with type URL.
+      "a_key": "", # Properties of the object. Contains field @type with type URL.
     },
-    "error": { # The `Status` type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by [gRPC](https://github.com/grpc). The error model is designed to be: - Simple to use and understand for most users - Flexible enough to meet unexpected needs # Overview The `Status` message contains three pieces of data: error code, error message, and error details. The error code should be an enum value of google.rpc.Code, but it may accept additional error codes if needed. The error message should be a developer-facing English message that helps developers *understand* and *resolve* the error. If a localized user-facing error message is needed, put the localized message in the error details or localize it in the client. The optional error details may contain arbitrary information about the error. There is a predefined set of error detail types in the package `google.rpc` which can be used for common error conditions. # Language mapping The `Status` message is the logical representation of the error model, but it is not necessarily the actual wire format. When the `Status` message is exposed in different client libraries and different wire protocols, it can be mapped differently. For example, it will likely be mapped to some exceptions in Java, but more likely mapped to some error codes in C. # Other uses The error model and the `Status` message can be used in a variety of environments, either with or without APIs, to provide a consistent developer experience across different environments. Example uses of this error model include: - Partial errors. If a service needs to return partial errors to the client, it may embed the `Status` in the normal response to indicate the partial errors. - Workflow errors. A typical workflow has multiple steps. Each step may have a `Status` message for error reporting purpose. - Batch operations. If a client uses batch request and batch response, the `Status` message should be used directly inside batch response, one for each error sub-response. - Asynchronous operations. If an API call embeds asynchronous operation results in its response, the status of those operations should be represented directly using the `Status` message. - Logging. If some API errors are stored in logs, the message `Status` could be used directly after any stripping needed for security/privacy reasons. # The error result of the operation in case of failure.
+    "error": { # The `Status` type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by [gRPC](https://github.com/grpc). The error model is designed to be: - Simple to use and understand for most users - Flexible enough to meet unexpected needs # Overview The `Status` message contains three pieces of data: error code, error message, and error details. The error code should be an enum value of google.rpc.Code, but it may accept additional error codes if needed. The error message should be a developer-facing English message that helps developers *understand* and *resolve* the error. If a localized user-facing error message is needed, put the localized message in the error details or localize it in the client. The optional error details may contain arbitrary information about the error. There is a predefined set of error detail types in the package `google.rpc` which can be used for common error conditions. # Language mapping The `Status` message is the logical representation of the error model, but it is not necessarily the actual wire format. When the `Status` message is exposed in different client libraries and different wire protocols, it can be mapped differently. For example, it will likely be mapped to some exceptions in Java, but more likely mapped to some error codes in C. # Other uses The error model and the `Status` message can be used in a variety of environments, either with or without APIs, to provide a consistent developer experience across different environments. Example uses of this error model include: - Partial errors. If a service needs to return partial errors to the client, it may embed the `Status` in the normal response to indicate the partial errors. - Workflow errors. A typical workflow has multiple steps. Each step may have a `Status` message for error reporting purpose. - Batch operations. If a client uses batch request and batch response, the `Status` message should be used directly inside batch response, one for each error sub-response. - Asynchronous operations. If an API call embeds asynchronous operation results in its response, the status of those operations should be represented directly using the `Status` message. - Logging. If some API errors are stored in logs, the message `Status` could be used directly after any stripping needed for security/privacy reasons. # The error result of the operation in case of failure or cancellation.
       "message": "A String", # A developer-facing error message, which should be in English. Any user-facing error message should be localized and sent in the google.rpc.Status.details field, or localized by the client.
       "code": 42, # The status code, which should be an enum value of google.rpc.Code.
       "details": [ # A list of messages that carry the error details. There will be a common set of message types for APIs to use.
         {
-          "a_key": "", # Properties of the object. Contains field @ype with type URL.
+          "a_key": "", # Properties of the object. Contains field @type with type URL.
         },
       ],
     },
     "done": True or False, # If the value is `false`, it means the operation is still in progress. If true, the operation is completed, and either `error` or `response` is available.
     "name": "A String", # The server-assigned name, which is only unique within the same service that originally returns it. If you use the default HTTP mapping, the `name` should have the format of `operations/some/unique/name`.
     "metadata": { # Service-specific metadata associated with the operation. It typically contains progress information and common metadata such as create time. Some services might not provide such metadata. Any method that returns a long-running operation should document the metadata type, if any.
-      "a_key": "", # Properties of the object. Contains field @ype with type URL.
+      "a_key": "", # Properties of the object. Contains field @type with type URL.
     },
   }</pre>
 </div>
@@ -243,21 +255,21 @@
 
     { # This resource represents a long-running operation that is the result of a network API call.
     "response": { # The normal response of the operation in case of success. If the original method returns no data on success, such as `Delete`, the response is `google.protobuf.Empty`. If the original method is standard `Get`/`Create`/`Update`, the response should be the resource. For other methods, the response should have the type `XxxResponse`, where `Xxx` is the original method name. For example, if the original method name is `TakeSnapshot()`, the inferred response type is `TakeSnapshotResponse`.
-      "a_key": "", # Properties of the object. Contains field @ype with type URL.
+      "a_key": "", # Properties of the object. Contains field @type with type URL.
     },
-    "error": { # The `Status` type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by [gRPC](https://github.com/grpc). The error model is designed to be: - Simple to use and understand for most users - Flexible enough to meet unexpected needs # Overview The `Status` message contains three pieces of data: error code, error message, and error details. The error code should be an enum value of google.rpc.Code, but it may accept additional error codes if needed. The error message should be a developer-facing English message that helps developers *understand* and *resolve* the error. If a localized user-facing error message is needed, put the localized message in the error details or localize it in the client. The optional error details may contain arbitrary information about the error. There is a predefined set of error detail types in the package `google.rpc` which can be used for common error conditions. # Language mapping The `Status` message is the logical representation of the error model, but it is not necessarily the actual wire format. When the `Status` message is exposed in different client libraries and different wire protocols, it can be mapped differently. For example, it will likely be mapped to some exceptions in Java, but more likely mapped to some error codes in C. # Other uses The error model and the `Status` message can be used in a variety of environments, either with or without APIs, to provide a consistent developer experience across different environments. Example uses of this error model include: - Partial errors. If a service needs to return partial errors to the client, it may embed the `Status` in the normal response to indicate the partial errors. - Workflow errors. A typical workflow has multiple steps. Each step may have a `Status` message for error reporting purpose. - Batch operations. If a client uses batch request and batch response, the `Status` message should be used directly inside batch response, one for each error sub-response. - Asynchronous operations. If an API call embeds asynchronous operation results in its response, the status of those operations should be represented directly using the `Status` message. - Logging. If some API errors are stored in logs, the message `Status` could be used directly after any stripping needed for security/privacy reasons. # The error result of the operation in case of failure.
+    "error": { # The `Status` type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by [gRPC](https://github.com/grpc). The error model is designed to be: - Simple to use and understand for most users - Flexible enough to meet unexpected needs # Overview The `Status` message contains three pieces of data: error code, error message, and error details. The error code should be an enum value of google.rpc.Code, but it may accept additional error codes if needed. The error message should be a developer-facing English message that helps developers *understand* and *resolve* the error. If a localized user-facing error message is needed, put the localized message in the error details or localize it in the client. The optional error details may contain arbitrary information about the error. There is a predefined set of error detail types in the package `google.rpc` which can be used for common error conditions. # Language mapping The `Status` message is the logical representation of the error model, but it is not necessarily the actual wire format. When the `Status` message is exposed in different client libraries and different wire protocols, it can be mapped differently. For example, it will likely be mapped to some exceptions in Java, but more likely mapped to some error codes in C. # Other uses The error model and the `Status` message can be used in a variety of environments, either with or without APIs, to provide a consistent developer experience across different environments. Example uses of this error model include: - Partial errors. If a service needs to return partial errors to the client, it may embed the `Status` in the normal response to indicate the partial errors. - Workflow errors. A typical workflow has multiple steps. Each step may have a `Status` message for error reporting purpose. - Batch operations. If a client uses batch request and batch response, the `Status` message should be used directly inside batch response, one for each error sub-response. - Asynchronous operations. If an API call embeds asynchronous operation results in its response, the status of those operations should be represented directly using the `Status` message. - Logging. If some API errors are stored in logs, the message `Status` could be used directly after any stripping needed for security/privacy reasons. # The error result of the operation in case of failure or cancellation.
       "message": "A String", # A developer-facing error message, which should be in English. Any user-facing error message should be localized and sent in the google.rpc.Status.details field, or localized by the client.
       "code": 42, # The status code, which should be an enum value of google.rpc.Code.
       "details": [ # A list of messages that carry the error details. There will be a common set of message types for APIs to use.
         {
-          "a_key": "", # Properties of the object. Contains field @ype with type URL.
+          "a_key": "", # Properties of the object. Contains field @type with type URL.
         },
       ],
     },
     "done": True or False, # If the value is `false`, it means the operation is still in progress. If true, the operation is completed, and either `error` or `response` is available.
     "name": "A String", # The server-assigned name, which is only unique within the same service that originally returns it. If you use the default HTTP mapping, the `name` should have the format of `operations/some/unique/name`.
     "metadata": { # Service-specific metadata associated with the operation. It typically contains progress information and common metadata such as create time. Some services might not provide such metadata. Any method that returns a long-running operation should document the metadata type, if any.
-      "a_key": "", # Properties of the object. Contains field @ype with type URL.
+      "a_key": "", # Properties of the object. Contains field @type with type URL.
     },
   }</pre>
 </div>
@@ -282,21 +294,21 @@
 
     { # This resource represents a long-running operation that is the result of a network API call.
     "response": { # The normal response of the operation in case of success. If the original method returns no data on success, such as `Delete`, the response is `google.protobuf.Empty`. If the original method is standard `Get`/`Create`/`Update`, the response should be the resource. For other methods, the response should have the type `XxxResponse`, where `Xxx` is the original method name. For example, if the original method name is `TakeSnapshot()`, the inferred response type is `TakeSnapshotResponse`.
-      "a_key": "", # Properties of the object. Contains field @ype with type URL.
+      "a_key": "", # Properties of the object. Contains field @type with type URL.
     },
-    "error": { # The `Status` type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by [gRPC](https://github.com/grpc). The error model is designed to be: - Simple to use and understand for most users - Flexible enough to meet unexpected needs # Overview The `Status` message contains three pieces of data: error code, error message, and error details. The error code should be an enum value of google.rpc.Code, but it may accept additional error codes if needed. The error message should be a developer-facing English message that helps developers *understand* and *resolve* the error. If a localized user-facing error message is needed, put the localized message in the error details or localize it in the client. The optional error details may contain arbitrary information about the error. There is a predefined set of error detail types in the package `google.rpc` which can be used for common error conditions. # Language mapping The `Status` message is the logical representation of the error model, but it is not necessarily the actual wire format. When the `Status` message is exposed in different client libraries and different wire protocols, it can be mapped differently. For example, it will likely be mapped to some exceptions in Java, but more likely mapped to some error codes in C. # Other uses The error model and the `Status` message can be used in a variety of environments, either with or without APIs, to provide a consistent developer experience across different environments. Example uses of this error model include: - Partial errors. If a service needs to return partial errors to the client, it may embed the `Status` in the normal response to indicate the partial errors. - Workflow errors. A typical workflow has multiple steps. Each step may have a `Status` message for error reporting purpose. - Batch operations. If a client uses batch request and batch response, the `Status` message should be used directly inside batch response, one for each error sub-response. - Asynchronous operations. If an API call embeds asynchronous operation results in its response, the status of those operations should be represented directly using the `Status` message. - Logging. If some API errors are stored in logs, the message `Status` could be used directly after any stripping needed for security/privacy reasons. # The error result of the operation in case of failure.
+    "error": { # The `Status` type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by [gRPC](https://github.com/grpc). The error model is designed to be: - Simple to use and understand for most users - Flexible enough to meet unexpected needs # Overview The `Status` message contains three pieces of data: error code, error message, and error details. The error code should be an enum value of google.rpc.Code, but it may accept additional error codes if needed. The error message should be a developer-facing English message that helps developers *understand* and *resolve* the error. If a localized user-facing error message is needed, put the localized message in the error details or localize it in the client. The optional error details may contain arbitrary information about the error. There is a predefined set of error detail types in the package `google.rpc` which can be used for common error conditions. # Language mapping The `Status` message is the logical representation of the error model, but it is not necessarily the actual wire format. When the `Status` message is exposed in different client libraries and different wire protocols, it can be mapped differently. For example, it will likely be mapped to some exceptions in Java, but more likely mapped to some error codes in C. # Other uses The error model and the `Status` message can be used in a variety of environments, either with or without APIs, to provide a consistent developer experience across different environments. Example uses of this error model include: - Partial errors. If a service needs to return partial errors to the client, it may embed the `Status` in the normal response to indicate the partial errors. - Workflow errors. A typical workflow has multiple steps. Each step may have a `Status` message for error reporting purpose. - Batch operations. If a client uses batch request and batch response, the `Status` message should be used directly inside batch response, one for each error sub-response. - Asynchronous operations. If an API call embeds asynchronous operation results in its response, the status of those operations should be represented directly using the `Status` message. - Logging. If some API errors are stored in logs, the message `Status` could be used directly after any stripping needed for security/privacy reasons. # The error result of the operation in case of failure or cancellation.
       "message": "A String", # A developer-facing error message, which should be in English. Any user-facing error message should be localized and sent in the google.rpc.Status.details field, or localized by the client.
       "code": 42, # The status code, which should be an enum value of google.rpc.Code.
       "details": [ # A list of messages that carry the error details. There will be a common set of message types for APIs to use.
         {
-          "a_key": "", # Properties of the object. Contains field @ype with type URL.
+          "a_key": "", # Properties of the object. Contains field @type with type URL.
         },
       ],
     },
     "done": True or False, # If the value is `false`, it means the operation is still in progress. If true, the operation is completed, and either `error` or `response` is available.
     "name": "A String", # The server-assigned name, which is only unique within the same service that originally returns it. If you use the default HTTP mapping, the `name` should have the format of `operations/some/unique/name`.
     "metadata": { # Service-specific metadata associated with the operation. It typically contains progress information and common metadata such as create time. Some services might not provide such metadata. Any method that returns a long-running operation should document the metadata type, if any.
-      "a_key": "", # Properties of the object. Contains field @ype with type URL.
+      "a_key": "", # Properties of the object. Contains field @type with type URL.
     },
   }</pre>
 </div>
@@ -329,6 +341,17 @@
     "clusterUuid": "A String", # [Output-only] A cluster UUID (Unique Universal Identifier). Cloud Dataproc generates this value when it creates the cluster.
     "clusterName": "A String", # [Required] The cluster name. Cluster names within a project must be unique. Names from deleted clusters can be reused.
     "projectId": "A String", # [Required] The Google Cloud Platform project ID that the cluster belongs to.
+    "labels": { # [Optional] The labels to associate with this cluster. Label keys must be between 1 and 63 characters long, and must conform to the following PCRE regular expression: \p{Ll}\p{Lo}{0,62} Label values must be between 1 and 63 characters long, and must conform to the following PCRE regular expression: [\p{Ll}\p{Lo}\p{N}_-]{0,63} No more than 64 labels can be associated with a given cluster.
+      "a_key": "A String",
+    },
+    "metrics": { # Contains cluster daemon metrics, such as HDFS and YARN stats. # Contains cluster daemon metrics such as HDFS and YARN stats.
+      "yarnMetrics": { # The YARN metrics.
+        "a_key": "A String",
+      },
+      "hdfsMetrics": { # The HDFS metrics.
+        "a_key": "A String",
+      },
+    },
     "configuration": { # The cluster configuration. # [Required] The cluster configuration. Note that Cloud Dataproc may set default values, and values may change when clusters are updated.
       "softwareConfiguration": { # Specifies the selection and configuration of software inside the cluster. # [Optional] The configuration settings for software inside the cluster.
         "imageVersion": "A String", # [Optional] The version of software inside the cluster. It must match the regular expression `[0-9]+\.[0-9]+`. If unspecified, it defaults to the latest version (see [Cloud Dataproc Versioning](/dataproc/versioning)).
@@ -337,6 +360,7 @@
         },
       },
       "gceClusterConfiguration": { # Common configuration settings for resources of Google Compute Engine cluster instances, applicable to all instances in the cluster. # [Required] The shared Google Compute Engine configuration settings for all instances in a cluster.
+        "internalIpOnly": True or False, # If true, all instances in the cluser will only have internal IP addresses. By default, clusters are not restricted to internal IP addresses, and will have ephemeral external IP addresses assigned to each instance. This restriction can only be enabled for subnetwork enabled networks, and all off-cluster dependencies must be configured to be accessible without external IP addresses.
         "networkUri": "A String", # The Google Compute Engine network to be used for machine communications. Cannot be specified with subnetwork_uri. If neither network_uri nor subnetwork_uri is specified, the "default" network of the project is used, if it exists. Cannot be a "Custom Subnet Network" (see https://cloud.google.com/compute/docs/subnetworks for more information). Example: `https://www.googleapis.com/compute/v1/projects/[project_id]/regions/global/default`.
         "tags": [ # The Google Compute Engine tags to add to all instances.
           "A String",
@@ -413,12 +437,13 @@
 </div>
 
 <div class="method">
-    <code class="details" id="list">list(projectId, pageSize=None, pageToken=None, x__xgafv=None)</code>
+    <code class="details" id="list">list(projectId, pageSize=None, filter=None, pageToken=None, x__xgafv=None)</code>
   <pre>Lists all clusters in a project.
 
 Args:
   projectId: string, [Required] The ID of the Google Cloud Platform project that the cluster belongs to. (required)
   pageSize: integer, The standard List page size.
+  filter: string, [Optional] A filter constraining which clusters to list. Valid filters contain label terms such as: labels.key1 = val1 AND (-labels.k2 = val2 OR labels.k3 = val3)
   pageToken: string, The standard List page token.
   x__xgafv: string, V1 error format.
 
@@ -444,6 +469,17 @@
         "clusterUuid": "A String", # [Output-only] A cluster UUID (Unique Universal Identifier). Cloud Dataproc generates this value when it creates the cluster.
         "clusterName": "A String", # [Required] The cluster name. Cluster names within a project must be unique. Names from deleted clusters can be reused.
         "projectId": "A String", # [Required] The Google Cloud Platform project ID that the cluster belongs to.
+        "labels": { # [Optional] The labels to associate with this cluster. Label keys must be between 1 and 63 characters long, and must conform to the following PCRE regular expression: \p{Ll}\p{Lo}{0,62} Label values must be between 1 and 63 characters long, and must conform to the following PCRE regular expression: [\p{Ll}\p{Lo}\p{N}_-]{0,63} No more than 64 labels can be associated with a given cluster.
+          "a_key": "A String",
+        },
+        "metrics": { # Contains cluster daemon metrics, such as HDFS and YARN stats. # Contains cluster daemon metrics such as HDFS and YARN stats.
+          "yarnMetrics": { # The YARN metrics.
+            "a_key": "A String",
+          },
+          "hdfsMetrics": { # The HDFS metrics.
+            "a_key": "A String",
+          },
+        },
         "configuration": { # The cluster configuration. # [Required] The cluster configuration. Note that Cloud Dataproc may set default values, and values may change when clusters are updated.
           "softwareConfiguration": { # Specifies the selection and configuration of software inside the cluster. # [Optional] The configuration settings for software inside the cluster.
             "imageVersion": "A String", # [Optional] The version of software inside the cluster. It must match the regular expression `[0-9]+\.[0-9]+`. If unspecified, it defaults to the latest version (see [Cloud Dataproc Versioning](/dataproc/versioning)).
@@ -452,6 +488,7 @@
             },
           },
           "gceClusterConfiguration": { # Common configuration settings for resources of Google Compute Engine cluster instances, applicable to all instances in the cluster. # [Required] The shared Google Compute Engine configuration settings for all instances in a cluster.
+            "internalIpOnly": True or False, # If true, all instances in the cluser will only have internal IP addresses. By default, clusters are not restricted to internal IP addresses, and will have ephemeral external IP addresses assigned to each instance. This restriction can only be enabled for subnetwork enabled networks, and all off-cluster dependencies must be configured to be accessible without external IP addresses.
             "networkUri": "A String", # The Google Compute Engine network to be used for machine communications. Cannot be specified with subnetwork_uri. If neither network_uri nor subnetwork_uri is specified, the "default" network of the project is used, if it exists. Cannot be a "Custom Subnet Network" (see https://cloud.google.com/compute/docs/subnetworks for more information). Example: `https://www.googleapis.com/compute/v1/projects/[project_id]/regions/global/default`.
             "tags": [ # The Google Compute Engine tags to add to all instances.
               "A String",
@@ -569,6 +606,17 @@
   "clusterUuid": "A String", # [Output-only] A cluster UUID (Unique Universal Identifier). Cloud Dataproc generates this value when it creates the cluster.
   "clusterName": "A String", # [Required] The cluster name. Cluster names within a project must be unique. Names from deleted clusters can be reused.
   "projectId": "A String", # [Required] The Google Cloud Platform project ID that the cluster belongs to.
+  "labels": { # [Optional] The labels to associate with this cluster. Label keys must be between 1 and 63 characters long, and must conform to the following PCRE regular expression: \p{Ll}\p{Lo}{0,62} Label values must be between 1 and 63 characters long, and must conform to the following PCRE regular expression: [\p{Ll}\p{Lo}\p{N}_-]{0,63} No more than 64 labels can be associated with a given cluster.
+    "a_key": "A String",
+  },
+  "metrics": { # Contains cluster daemon metrics, such as HDFS and YARN stats. # Contains cluster daemon metrics such as HDFS and YARN stats.
+    "yarnMetrics": { # The YARN metrics.
+      "a_key": "A String",
+    },
+    "hdfsMetrics": { # The HDFS metrics.
+      "a_key": "A String",
+    },
+  },
   "configuration": { # The cluster configuration. # [Required] The cluster configuration. Note that Cloud Dataproc may set default values, and values may change when clusters are updated.
     "softwareConfiguration": { # Specifies the selection and configuration of software inside the cluster. # [Optional] The configuration settings for software inside the cluster.
       "imageVersion": "A String", # [Optional] The version of software inside the cluster. It must match the regular expression `[0-9]+\.[0-9]+`. If unspecified, it defaults to the latest version (see [Cloud Dataproc Versioning](/dataproc/versioning)).
@@ -577,6 +625,7 @@
       },
     },
     "gceClusterConfiguration": { # Common configuration settings for resources of Google Compute Engine cluster instances, applicable to all instances in the cluster. # [Required] The shared Google Compute Engine configuration settings for all instances in a cluster.
+      "internalIpOnly": True or False, # If true, all instances in the cluser will only have internal IP addresses. By default, clusters are not restricted to internal IP addresses, and will have ephemeral external IP addresses assigned to each instance. This restriction can only be enabled for subnetwork enabled networks, and all off-cluster dependencies must be configured to be accessible without external IP addresses.
       "networkUri": "A String", # The Google Compute Engine network to be used for machine communications. Cannot be specified with subnetwork_uri. If neither network_uri nor subnetwork_uri is specified, the "default" network of the project is used, if it exists. Cannot be a "Custom Subnet Network" (see https://cloud.google.com/compute/docs/subnetworks for more information). Example: `https://www.googleapis.com/compute/v1/projects/[project_id]/regions/global/default`.
       "tags": [ # The Google Compute Engine tags to add to all instances.
         "A String",
@@ -659,21 +708,21 @@
 
     { # This resource represents a long-running operation that is the result of a network API call.
     "response": { # The normal response of the operation in case of success. If the original method returns no data on success, such as `Delete`, the response is `google.protobuf.Empty`. If the original method is standard `Get`/`Create`/`Update`, the response should be the resource. For other methods, the response should have the type `XxxResponse`, where `Xxx` is the original method name. For example, if the original method name is `TakeSnapshot()`, the inferred response type is `TakeSnapshotResponse`.
-      "a_key": "", # Properties of the object. Contains field @ype with type URL.
+      "a_key": "", # Properties of the object. Contains field @type with type URL.
     },
-    "error": { # The `Status` type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by [gRPC](https://github.com/grpc). The error model is designed to be: - Simple to use and understand for most users - Flexible enough to meet unexpected needs # Overview The `Status` message contains three pieces of data: error code, error message, and error details. The error code should be an enum value of google.rpc.Code, but it may accept additional error codes if needed. The error message should be a developer-facing English message that helps developers *understand* and *resolve* the error. If a localized user-facing error message is needed, put the localized message in the error details or localize it in the client. The optional error details may contain arbitrary information about the error. There is a predefined set of error detail types in the package `google.rpc` which can be used for common error conditions. # Language mapping The `Status` message is the logical representation of the error model, but it is not necessarily the actual wire format. When the `Status` message is exposed in different client libraries and different wire protocols, it can be mapped differently. For example, it will likely be mapped to some exceptions in Java, but more likely mapped to some error codes in C. # Other uses The error model and the `Status` message can be used in a variety of environments, either with or without APIs, to provide a consistent developer experience across different environments. Example uses of this error model include: - Partial errors. If a service needs to return partial errors to the client, it may embed the `Status` in the normal response to indicate the partial errors. - Workflow errors. A typical workflow has multiple steps. Each step may have a `Status` message for error reporting purpose. - Batch operations. If a client uses batch request and batch response, the `Status` message should be used directly inside batch response, one for each error sub-response. - Asynchronous operations. If an API call embeds asynchronous operation results in its response, the status of those operations should be represented directly using the `Status` message. - Logging. If some API errors are stored in logs, the message `Status` could be used directly after any stripping needed for security/privacy reasons. # The error result of the operation in case of failure.
+    "error": { # The `Status` type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by [gRPC](https://github.com/grpc). The error model is designed to be: - Simple to use and understand for most users - Flexible enough to meet unexpected needs # Overview The `Status` message contains three pieces of data: error code, error message, and error details. The error code should be an enum value of google.rpc.Code, but it may accept additional error codes if needed. The error message should be a developer-facing English message that helps developers *understand* and *resolve* the error. If a localized user-facing error message is needed, put the localized message in the error details or localize it in the client. The optional error details may contain arbitrary information about the error. There is a predefined set of error detail types in the package `google.rpc` which can be used for common error conditions. # Language mapping The `Status` message is the logical representation of the error model, but it is not necessarily the actual wire format. When the `Status` message is exposed in different client libraries and different wire protocols, it can be mapped differently. For example, it will likely be mapped to some exceptions in Java, but more likely mapped to some error codes in C. # Other uses The error model and the `Status` message can be used in a variety of environments, either with or without APIs, to provide a consistent developer experience across different environments. Example uses of this error model include: - Partial errors. If a service needs to return partial errors to the client, it may embed the `Status` in the normal response to indicate the partial errors. - Workflow errors. A typical workflow has multiple steps. Each step may have a `Status` message for error reporting purpose. - Batch operations. If a client uses batch request and batch response, the `Status` message should be used directly inside batch response, one for each error sub-response. - Asynchronous operations. If an API call embeds asynchronous operation results in its response, the status of those operations should be represented directly using the `Status` message. - Logging. If some API errors are stored in logs, the message `Status` could be used directly after any stripping needed for security/privacy reasons. # The error result of the operation in case of failure or cancellation.
       "message": "A String", # A developer-facing error message, which should be in English. Any user-facing error message should be localized and sent in the google.rpc.Status.details field, or localized by the client.
       "code": 42, # The status code, which should be an enum value of google.rpc.Code.
       "details": [ # A list of messages that carry the error details. There will be a common set of message types for APIs to use.
         {
-          "a_key": "", # Properties of the object. Contains field @ype with type URL.
+          "a_key": "", # Properties of the object. Contains field @type with type URL.
         },
       ],
     },
     "done": True or False, # If the value is `false`, it means the operation is still in progress. If true, the operation is completed, and either `error` or `response` is available.
     "name": "A String", # The server-assigned name, which is only unique within the same service that originally returns it. If you use the default HTTP mapping, the `name` should have the format of `operations/some/unique/name`.
     "metadata": { # Service-specific metadata associated with the operation. It typically contains progress information and common metadata such as create time. Some services might not provide such metadata. Any method that returns a long-running operation should document the metadata type, if any.
-      "a_key": "", # Properties of the object. Contains field @ype with type URL.
+      "a_key": "", # Properties of the object. Contains field @type with type URL.
     },
   }</pre>
 </div>
diff --git a/docs/dyn/dataproc_v1beta1.projects.jobs.html b/docs/dyn/dataproc_v1beta1.projects.jobs.html
index 6dfcc9c..5c4494d 100644
--- a/docs/dyn/dataproc_v1beta1.projects.jobs.html
+++ b/docs/dyn/dataproc_v1beta1.projects.jobs.html
@@ -84,7 +84,7 @@
   <code><a href="#get">get(projectId, jobId, x__xgafv=None)</a></code></p>
 <p class="firstline">Gets the resource representation for a job in a project.</p>
 <p class="toc_element">
-  <code><a href="#list">list(projectId, jobStateMatcher=None, pageSize=None, clusterName=None, x__xgafv=None, pageToken=None)</a></code></p>
+  <code><a href="#list">list(projectId, pageSize=None, x__xgafv=None, jobStateMatcher=None, pageToken=None, clusterName=None, filter=None)</a></code></p>
 <p class="firstline">Lists jobs in a project.</p>
 <p class="toc_element">
   <code><a href="#list_next">list_next(previous_request, previous_response)</a></code></p>
@@ -202,6 +202,9 @@
       },
     },
     "driverOutputResourceUri": "A String", # [Output-only] A URI pointing to the location of the stdout of the job's driver program.
+    "labels": { # [Optional] The labels to associate with this job. Label keys must be between 1 and 63 characters long, and must conform to the following regular expression: \p{Ll}\p{Lo}{0,62} Label values must be between 1 and 63 characters long, and must conform to the following regular expression: [\p{Ll}\p{Lo}\p{N}_-]{0,63} No more than 64 labels can be associated with a given job.
+      "a_key": "A String",
+    },
     "submittedBy": "A String", # [Output-only] The email address of the user submitting the job. For jobs submitted on the cluster, the address is username@hostname.
     "driverInputResourceUri": "A String", # [Output-only] A URI pointing to the location of the stdin of the job's driver program, only set if the job is interactive.
     "driverControlFilesUri": "A String", # [Output-only] If present, the location of miscellaneous control files which may be used as part of job setup and handling. If not present, control files may be placed in the same location as `driver_output_uri`.
@@ -404,6 +407,9 @@
       },
     },
     "driverOutputResourceUri": "A String", # [Output-only] A URI pointing to the location of the stdout of the job's driver program.
+    "labels": { # [Optional] The labels to associate with this job. Label keys must be between 1 and 63 characters long, and must conform to the following regular expression: \p{Ll}\p{Lo}{0,62} Label values must be between 1 and 63 characters long, and must conform to the following regular expression: [\p{Ll}\p{Lo}\p{N}_-]{0,63} No more than 64 labels can be associated with a given job.
+      "a_key": "A String",
+    },
     "submittedBy": "A String", # [Output-only] The email address of the user submitting the job. For jobs submitted on the cluster, the address is username@hostname.
     "driverInputResourceUri": "A String", # [Output-only] A URI pointing to the location of the stdin of the job's driver program, only set if the job is interactive.
     "driverControlFilesUri": "A String", # [Output-only] If present, the location of miscellaneous control files which may be used as part of job setup and handling. If not present, control files may be placed in the same location as `driver_output_uri`.
@@ -488,16 +494,17 @@
 </div>
 
 <div class="method">
-    <code class="details" id="list">list(projectId, jobStateMatcher=None, pageSize=None, clusterName=None, x__xgafv=None, pageToken=None)</code>
+    <code class="details" id="list">list(projectId, pageSize=None, x__xgafv=None, jobStateMatcher=None, pageToken=None, clusterName=None, filter=None)</code>
   <pre>Lists jobs in a project.
 
 Args:
   projectId: string, [Required] The ID of the Google Cloud Platform project that the job belongs to. (required)
-  jobStateMatcher: string, [Optional] Specifies enumerated categories of jobs to list.
   pageSize: integer, [Optional] The number of results to return in each response.
-  clusterName: string, [Optional] If set, the returned jobs list includes only jobs that were submitted to the named cluster.
   x__xgafv: string, V1 error format.
+  jobStateMatcher: string, [Optional] Specifies enumerated categories of jobs to list.
   pageToken: string, [Optional] The page token, returned by a previous call, to request the next page of results.
+  clusterName: string, [Optional] If set, the returned jobs list includes only jobs that were submitted to the named cluster.
+  filter: string, [Optional] A filter constraining which jobs to list. Valid filters contain job state and label terms such as: labels.key1 = val1 AND (labels.k2 = val2 OR labels.k3 = val3)
 
 Returns:
   An object of the form:
@@ -596,6 +603,9 @@
           },
         },
         "driverOutputResourceUri": "A String", # [Output-only] A URI pointing to the location of the stdout of the job's driver program.
+        "labels": { # [Optional] The labels to associate with this job. Label keys must be between 1 and 63 characters long, and must conform to the following regular expression: \p{Ll}\p{Lo}{0,62} Label values must be between 1 and 63 characters long, and must conform to the following regular expression: [\p{Ll}\p{Lo}\p{N}_-]{0,63} No more than 64 labels can be associated with a given job.
+          "a_key": "A String",
+        },
         "submittedBy": "A String", # [Output-only] The email address of the user submitting the job. For jobs submitted on the cluster, the address is username@hostname.
         "driverInputResourceUri": "A String", # [Output-only] A URI pointing to the location of the stdin of the job's driver program, only set if the job is interactive.
         "driverControlFilesUri": "A String", # [Output-only] If present, the location of miscellaneous control files which may be used as part of job setup and handling. If not present, control files may be placed in the same location as `driver_output_uri`.
@@ -796,6 +806,9 @@
         },
       },
       "driverOutputResourceUri": "A String", # [Output-only] A URI pointing to the location of the stdout of the job's driver program.
+      "labels": { # [Optional] The labels to associate with this job. Label keys must be between 1 and 63 characters long, and must conform to the following regular expression: \p{Ll}\p{Lo}{0,62} Label values must be between 1 and 63 characters long, and must conform to the following regular expression: [\p{Ll}\p{Lo}\p{N}_-]{0,63} No more than 64 labels can be associated with a given job.
+        "a_key": "A String",
+      },
       "submittedBy": "A String", # [Output-only] The email address of the user submitting the job. For jobs submitted on the cluster, the address is username@hostname.
       "driverInputResourceUri": "A String", # [Output-only] A URI pointing to the location of the stdin of the job's driver program, only set if the job is interactive.
       "driverControlFilesUri": "A String", # [Output-only] If present, the location of miscellaneous control files which may be used as part of job setup and handling. If not present, control files may be placed in the same location as `driver_output_uri`.
@@ -975,6 +988,9 @@
       },
     },
     "driverOutputResourceUri": "A String", # [Output-only] A URI pointing to the location of the stdout of the job's driver program.
+    "labels": { # [Optional] The labels to associate with this job. Label keys must be between 1 and 63 characters long, and must conform to the following regular expression: \p{Ll}\p{Lo}{0,62} Label values must be between 1 and 63 characters long, and must conform to the following regular expression: [\p{Ll}\p{Lo}\p{N}_-]{0,63} No more than 64 labels can be associated with a given job.
+      "a_key": "A String",
+    },
     "submittedBy": "A String", # [Output-only] The email address of the user submitting the job. For jobs submitted on the cluster, the address is username@hostname.
     "driverInputResourceUri": "A String", # [Output-only] A URI pointing to the location of the stdin of the job's driver program, only set if the job is interactive.
     "driverControlFilesUri": "A String", # [Output-only] If present, the location of miscellaneous control files which may be used as part of job setup and handling. If not present, control files may be placed in the same location as `driver_output_uri`.
diff --git a/docs/dyn/datastore_v1.projects.html b/docs/dyn/datastore_v1.projects.html
index e31cc90..5434038 100644
--- a/docs/dyn/datastore_v1.projects.html
+++ b/docs/dyn/datastore_v1.projects.html
@@ -2549,6 +2549,7 @@
           # In a single transaction, subsequent query result batches for the same query
           # can have a greater snapshot version number. Each batch's snapshot version
           # is valid for all preceding batches.
+          # The value will be zero for eventually consistent queries.
       "skippedResults": 42, # The number of results skipped, typically because of an offset.
       "entityResults": [ # The results for this batch.
         { # The result of fetching an entity from Datastore.
diff --git a/docs/dyn/datastore_v1beta3.projects.html b/docs/dyn/datastore_v1beta3.projects.html
index 87bf75b..9cb4d9c 100644
--- a/docs/dyn/datastore_v1beta3.projects.html
+++ b/docs/dyn/datastore_v1beta3.projects.html
@@ -2549,6 +2549,7 @@
           # In a single transaction, subsequent query result batches for the same query
           # can have a greater snapshot version number. Each batch's snapshot version
           # is valid for all preceding batches.
+          # The value will be zero for eventually consistent queries.
       "skippedResults": 42, # The number of results skipped, typically because of an offset.
       "entityResults": [ # The results for this batch.
         { # The result of fetching an entity from Datastore.
diff --git a/docs/dyn/deploymentmanager_v2.deployments.html b/docs/dyn/deploymentmanager_v2.deployments.html
index ce846ee..265cdc6 100644
--- a/docs/dyn/deploymentmanager_v2.deployments.html
+++ b/docs/dyn/deploymentmanager_v2.deployments.html
@@ -78,7 +78,7 @@
   <code><a href="#cancelPreview">cancelPreview(project, deployment, body)</a></code></p>
 <p class="firstline">Cancels and removes the preview currently associated with the deployment.</p>
 <p class="toc_element">
-  <code><a href="#delete">delete(project, deployment)</a></code></p>
+  <code><a href="#delete">delete(project, deployment, deletePolicy=None)</a></code></p>
 <p class="firstline">Deletes a deployment and all of the resources in the deployment.</p>
 <p class="toc_element">
   <code><a href="#get">get(project, deployment)</a></code></p>
@@ -90,7 +90,7 @@
   <code><a href="#insert">insert(project, body, preview=None)</a></code></p>
 <p class="firstline">Creates a deployment and all of the resources described by the deployment manifest.</p>
 <p class="toc_element">
-  <code><a href="#list">list(project, maxResults=None, pageToken=None, filter=None)</a></code></p>
+  <code><a href="#list">list(project, orderBy=None, maxResults=None, pageToken=None, filter=None)</a></code></p>
 <p class="firstline">Lists all deployments for a given project.</p>
 <p class="toc_element">
   <code><a href="#list_next">list_next(previous_request, previous_response)</a></code></p>
@@ -174,17 +174,21 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
 <div class="method">
-    <code class="details" id="delete">delete(project, deployment)</code>
+    <code class="details" id="delete">delete(project, deployment, deletePolicy=None)</code>
   <pre>Deletes a deployment and all of the resources in the deployment.
 
 Args:
   project: string, The project ID for this request. (required)
   deployment: string, The name of the deployment for this request. (required)
+  deletePolicy: string, Sets the policy to use for deleting resources.
+    Allowed values
+      ABANDON - 
+      DELETE - 
 
 Returns:
   An object of the form:
@@ -232,7 +236,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
@@ -312,7 +316,7 @@
         },
         "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
         "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-        "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+        "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
       },
       "target": { # [Input Only] The parameters that define your deployment, including the deployment configuration and relevant templates.
         "imports": [ # Specifies any files to import for this configuration. This can be used to import templates or other files. For example, you might import a text file in order to use the file in a template.
@@ -356,11 +360,19 @@
     "auditConfigs": [ # Specifies audit logging configs for "data access". "data access": generally refers to data reads/writes and admin reads. "admin activity": generally refers to admin writes.
         #
         # Note: `AuditConfig` doesn't apply to "admin activity", which always enables audit logging.
-      { # Enables "data access" audit logging for a service and specifies a list of members that are log-exempted.
+      { # Provides the configuration for non-admin_activity logging for a service. Controls exemptions and specific log sub-types.
         "exemptedMembers": [ # Specifies the identities that are exempted from "data access" audit logging for the `service` specified above. Follows the same format of Binding.members.
           "A String",
         ],
-        "service": "A String", # Specifies a service that will be enabled for "data access" audit logging. For example, `resourcemanager`, `storage`, `compute`. `allServices` is a special value that covers all services.
+        "auditLogConfigs": [ # The configuration for each type of logging
+          { # Provides the configuration for a sub-type of logging.
+            "exemptedMembers": [ # Specifies the identities that are exempted from this type of logging Follows the same format of Binding.members.
+              "A String",
+            ],
+            "logType": "A String", # The log type that this config enables.
+          },
+        ],
+        "service": "A String", # Specifies a service that will be enabled for audit logging. For example, `resourcemanager`, `storage`, `compute`. `allServices` is a special value that covers all services.
       },
     ],
     "rules": [ # If more than one rule is specified, the rules are applied in the following manner: - All matching LOG rules are always applied. - If any DENY/DENY_WITH_LOG rule matches, permission is denied. Logging will be applied if one or more matching rule requires logging. - Otherwise, if any ALLOW/ALLOW_WITH_LOG rule matches, permission is granted. Logging will be applied if one or more matching rule requires logging. - Otherwise, if no rule applies, permission is denied.
@@ -413,6 +425,8 @@
             #
             # * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@gmail.com` or `joe@example.com`.
             #
+            #
+            #
             # * `serviceAccount:{emailid}`: An email address that represents a service account. For example, `my-other-app@appspot.gserviceaccount.com`.
             #
             # * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`.
@@ -500,7 +514,7 @@
       },
       "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
       "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-      "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+      "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
     },
     "target": { # [Input Only] The parameters that define your deployment, including the deployment configuration and relevant templates.
       "imports": [ # Specifies any files to import for this configuration. This can be used to import templates or other files. For example, you might import a text file in order to use the file in a template.
@@ -566,16 +580,21 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
 <div class="method">
-    <code class="details" id="list">list(project, maxResults=None, pageToken=None, filter=None)</code>
+    <code class="details" id="list">list(project, orderBy=None, maxResults=None, pageToken=None, filter=None)</code>
   <pre>Lists all deployments for a given project.
 
 Args:
   project: string, The project ID for this request. (required)
+  orderBy: string, Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.
+
+You can also sort results in descending order based on the creation timestamp using orderBy="creationTimestamp desc". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.
+
+Currently, only sorting by name or creationTimestamp desc is supported.
   maxResults: integer, The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests.
   pageToken: string, Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.
   filter: string, Sets a filter expression for filtering listed resources, in the form filter={expression}. Your {expression} must be in the format: field_name comparison_string literal_string.
@@ -659,7 +678,7 @@
             },
             "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
             "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-            "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+            "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
           },
           "target": { # [Input Only] The parameters that define your deployment, including the deployment configuration and relevant templates.
             "imports": [ # Specifies any files to import for this configuration. This can be used to import templates or other files. For example, you might import a text file in order to use the file in a template.
@@ -769,7 +788,7 @@
       },
       "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
       "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-      "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+      "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
     },
     "target": { # [Input Only] The parameters that define your deployment, including the deployment configuration and relevant templates.
       "imports": [ # Specifies any files to import for this configuration. This can be used to import templates or other files. For example, you might import a text file in order to use the file in a template.
@@ -843,7 +862,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
@@ -871,11 +890,19 @@
   "auditConfigs": [ # Specifies audit logging configs for "data access". "data access": generally refers to data reads/writes and admin reads. "admin activity": generally refers to admin writes.
       # 
       # Note: `AuditConfig` doesn't apply to "admin activity", which always enables audit logging.
-    { # Enables "data access" audit logging for a service and specifies a list of members that are log-exempted.
+    { # Provides the configuration for non-admin_activity logging for a service. Controls exemptions and specific log sub-types.
       "exemptedMembers": [ # Specifies the identities that are exempted from "data access" audit logging for the `service` specified above. Follows the same format of Binding.members.
         "A String",
       ],
-      "service": "A String", # Specifies a service that will be enabled for "data access" audit logging. For example, `resourcemanager`, `storage`, `compute`. `allServices` is a special value that covers all services.
+      "auditLogConfigs": [ # The configuration for each type of logging
+        { # Provides the configuration for a sub-type of logging.
+          "exemptedMembers": [ # Specifies the identities that are exempted from this type of logging Follows the same format of Binding.members.
+            "A String",
+          ],
+          "logType": "A String", # The log type that this config enables.
+        },
+      ],
+      "service": "A String", # Specifies a service that will be enabled for audit logging. For example, `resourcemanager`, `storage`, `compute`. `allServices` is a special value that covers all services.
     },
   ],
   "rules": [ # If more than one rule is specified, the rules are applied in the following manner: - All matching LOG rules are always applied. - If any DENY/DENY_WITH_LOG rule matches, permission is denied. Logging will be applied if one or more matching rule requires logging. - Otherwise, if any ALLOW/ALLOW_WITH_LOG rule matches, permission is granted. Logging will be applied if one or more matching rule requires logging. - Otherwise, if no rule applies, permission is denied.
@@ -928,6 +955,8 @@
           #
           # * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@gmail.com` or `joe@example.com`.
           #
+          #
+          #
           # * `serviceAccount:{emailid}`: An email address that represents a service account. For example, `my-other-app@appspot.gserviceaccount.com`.
           #
           # * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`.
@@ -958,11 +987,19 @@
     "auditConfigs": [ # Specifies audit logging configs for "data access". "data access": generally refers to data reads/writes and admin reads. "admin activity": generally refers to admin writes.
         #
         # Note: `AuditConfig` doesn't apply to "admin activity", which always enables audit logging.
-      { # Enables "data access" audit logging for a service and specifies a list of members that are log-exempted.
+      { # Provides the configuration for non-admin_activity logging for a service. Controls exemptions and specific log sub-types.
         "exemptedMembers": [ # Specifies the identities that are exempted from "data access" audit logging for the `service` specified above. Follows the same format of Binding.members.
           "A String",
         ],
-        "service": "A String", # Specifies a service that will be enabled for "data access" audit logging. For example, `resourcemanager`, `storage`, `compute`. `allServices` is a special value that covers all services.
+        "auditLogConfigs": [ # The configuration for each type of logging
+          { # Provides the configuration for a sub-type of logging.
+            "exemptedMembers": [ # Specifies the identities that are exempted from this type of logging Follows the same format of Binding.members.
+              "A String",
+            ],
+            "logType": "A String", # The log type that this config enables.
+          },
+        ],
+        "service": "A String", # Specifies a service that will be enabled for audit logging. For example, `resourcemanager`, `storage`, `compute`. `allServices` is a special value that covers all services.
       },
     ],
     "rules": [ # If more than one rule is specified, the rules are applied in the following manner: - All matching LOG rules are always applied. - If any DENY/DENY_WITH_LOG rule matches, permission is denied. Logging will be applied if one or more matching rule requires logging. - Otherwise, if any ALLOW/ALLOW_WITH_LOG rule matches, permission is granted. Logging will be applied if one or more matching rule requires logging. - Otherwise, if no rule applies, permission is denied.
@@ -1015,6 +1052,8 @@
             #
             # * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@gmail.com` or `joe@example.com`.
             #
+            #
+            #
             # * `serviceAccount:{emailid}`: An email address that represents a service account. For example, `my-other-app@appspot.gserviceaccount.com`.
             #
             # * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`.
@@ -1091,7 +1130,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
@@ -1197,7 +1236,7 @@
       },
       "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
       "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-      "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+      "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
     },
     "target": { # [Input Only] The parameters that define your deployment, including the deployment configuration and relevant templates.
       "imports": [ # Specifies any files to import for this configuration. This can be used to import templates or other files. For example, you might import a text file in order to use the file in a template.
@@ -1271,7 +1310,7 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
diff --git a/docs/dyn/deploymentmanager_v2.manifests.html b/docs/dyn/deploymentmanager_v2.manifests.html
index 7a45d5a..fc82781 100644
--- a/docs/dyn/deploymentmanager_v2.manifests.html
+++ b/docs/dyn/deploymentmanager_v2.manifests.html
@@ -78,7 +78,7 @@
   <code><a href="#get">get(project, deployment, manifest)</a></code></p>
 <p class="firstline">Gets information about a specific manifest.</p>
 <p class="toc_element">
-  <code><a href="#list">list(project, deployment, maxResults=None, pageToken=None, filter=None)</a></code></p>
+  <code><a href="#list">list(project, deployment, orderBy=None, maxResults=None, pageToken=None, filter=None)</a></code></p>
 <p class="firstline">Lists all manifests for a given deployment.</p>
 <p class="toc_element">
   <code><a href="#list_next">list_next(previous_request, previous_response)</a></code></p>
@@ -116,12 +116,17 @@
 </div>
 
 <div class="method">
-    <code class="details" id="list">list(project, deployment, maxResults=None, pageToken=None, filter=None)</code>
+    <code class="details" id="list">list(project, deployment, orderBy=None, maxResults=None, pageToken=None, filter=None)</code>
   <pre>Lists all manifests for a given deployment.
 
 Args:
   project: string, The project ID for this request. (required)
   deployment: string, The name of the deployment for this request. (required)
+  orderBy: string, Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.
+
+You can also sort results in descending order based on the creation timestamp using orderBy="creationTimestamp desc". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.
+
+Currently, only sorting by name or creationTimestamp desc is supported.
   maxResults: integer, The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests.
   pageToken: string, Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.
   filter: string, Sets a filter expression for filtering listed resources, in the form filter={expression}. Your {expression} must be in the format: field_name comparison_string literal_string.
diff --git a/docs/dyn/deploymentmanager_v2.operations.html b/docs/dyn/deploymentmanager_v2.operations.html
index 06bf839..45db8e0 100644
--- a/docs/dyn/deploymentmanager_v2.operations.html
+++ b/docs/dyn/deploymentmanager_v2.operations.html
@@ -78,7 +78,7 @@
   <code><a href="#get">get(project, operation)</a></code></p>
 <p class="firstline">Gets information about a specific operation.</p>
 <p class="toc_element">
-  <code><a href="#list">list(project, maxResults=None, pageToken=None, filter=None)</a></code></p>
+  <code><a href="#list">list(project, orderBy=None, maxResults=None, pageToken=None, filter=None)</a></code></p>
 <p class="firstline">Lists all operations for a project.</p>
 <p class="toc_element">
   <code><a href="#list_next">list_next(previous_request, previous_response)</a></code></p>
@@ -138,16 +138,21 @@
     },
     "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
     "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+    "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
   }</pre>
 </div>
 
 <div class="method">
-    <code class="details" id="list">list(project, maxResults=None, pageToken=None, filter=None)</code>
+    <code class="details" id="list">list(project, orderBy=None, maxResults=None, pageToken=None, filter=None)</code>
   <pre>Lists all operations for a project.
 
 Args:
   project: string, The project ID for this request. (required)
+  orderBy: string, Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.
+
+You can also sort results in descending order based on the creation timestamp using orderBy="creationTimestamp desc". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.
+
+Currently, only sorting by name or creationTimestamp desc is supported.
   maxResults: integer, The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests.
   pageToken: string, Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.
   filter: string, Sets a filter expression for filtering listed resources, in the form filter={expression}. Your {expression} must be in the format: field_name comparison_string literal_string.
@@ -209,7 +214,7 @@
         },
         "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
         "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-        "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+        "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
       },
     ],
   }</pre>
diff --git a/docs/dyn/deploymentmanager_v2.resources.html b/docs/dyn/deploymentmanager_v2.resources.html
index ad8b911..6eb200f 100644
--- a/docs/dyn/deploymentmanager_v2.resources.html
+++ b/docs/dyn/deploymentmanager_v2.resources.html
@@ -78,7 +78,7 @@
   <code><a href="#get">get(project, deployment, resource)</a></code></p>
 <p class="firstline">Gets information about a single resource.</p>
 <p class="toc_element">
-  <code><a href="#list">list(project, deployment, maxResults=None, pageToken=None, filter=None)</a></code></p>
+  <code><a href="#list">list(project, deployment, orderBy=None, maxResults=None, pageToken=None, filter=None)</a></code></p>
 <p class="firstline">Lists all resources in a given deployment.</p>
 <p class="toc_element">
   <code><a href="#list_next">list_next(previous_request, previous_response)</a></code></p>
@@ -158,12 +158,17 @@
 </div>
 
 <div class="method">
-    <code class="details" id="list">list(project, deployment, maxResults=None, pageToken=None, filter=None)</code>
+    <code class="details" id="list">list(project, deployment, orderBy=None, maxResults=None, pageToken=None, filter=None)</code>
   <pre>Lists all resources in a given deployment.
 
 Args:
   project: string, The project ID for this request. (required)
   deployment: string, The name of the deployment for this request. (required)
+  orderBy: string, Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.
+
+You can also sort results in descending order based on the creation timestamp using orderBy="creationTimestamp desc". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.
+
+Currently, only sorting by name or creationTimestamp desc is supported.
   maxResults: integer, The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests.
   pageToken: string, Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.
   filter: string, Sets a filter expression for filtering listed resources, in the form filter={expression}. Your {expression} must be in the format: field_name comparison_string literal_string.
diff --git a/docs/dyn/deploymentmanager_v2.types.html b/docs/dyn/deploymentmanager_v2.types.html
index 5673b7b..f58ad6c 100644
--- a/docs/dyn/deploymentmanager_v2.types.html
+++ b/docs/dyn/deploymentmanager_v2.types.html
@@ -75,18 +75,23 @@
 <h1><a href="deploymentmanager_v2.html">Google Cloud Deployment Manager API</a> . <a href="deploymentmanager_v2.types.html">types</a></h1>
 <h2>Instance Methods</h2>
 <p class="toc_element">
-  <code><a href="#list">list(project, maxResults=None, pageToken=None, filter=None)</a></code></p>
+  <code><a href="#list">list(project, orderBy=None, maxResults=None, pageToken=None, filter=None)</a></code></p>
 <p class="firstline">Lists all resource types for Deployment Manager.</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>
 <h3>Method Details</h3>
 <div class="method">
-    <code class="details" id="list">list(project, maxResults=None, pageToken=None, filter=None)</code>
+    <code class="details" id="list">list(project, orderBy=None, maxResults=None, pageToken=None, filter=None)</code>
   <pre>Lists all resource types for Deployment Manager.
 
 Args:
   project: string, The project ID for this request. (required)
+  orderBy: string, Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.
+
+You can also sort results in descending order based on the creation timestamp using orderBy="creationTimestamp desc". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.
+
+Currently, only sorting by name or creationTimestamp desc is supported.
   maxResults: integer, The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests.
   pageToken: string, Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.
   filter: string, Sets a filter expression for filtering listed resources, in the form filter={expression}. Your {expression} must be in the format: field_name comparison_string literal_string.
@@ -150,7 +155,7 @@
           },
           "endTime": "A String", # [Output Only] The time that this operation was completed. This value is in RFC3339 text format.
           "selfLink": "A String", # [Output Only] Server-defined URL for the resource.
-          "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. If creating a persistent disk snapshot, this points to the persistent disk that the snapshot was created from.
+          "targetLink": "A String", # [Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.
         },
         "id": "A String", # [Output Only] Unique identifier for the resource; defined by the server.
         "insertTime": "A String", # [Output Only] Timestamp when the type was created, in RFC3339 text format.
diff --git a/docs/dyn/dfareporting_v2_5.accountUserProfiles.html b/docs/dyn/dfareporting_v2_5.accountUserProfiles.html
index 4826ccc..73e285e 100644
--- a/docs/dyn/dfareporting_v2_5.accountUserProfiles.html
+++ b/docs/dyn/dfareporting_v2_5.accountUserProfiles.html
@@ -82,7 +82,7 @@
 <p class="firstline">Inserts a new account user profile.</p>
 <p class="toc_element">
   <code><a href="#list">list(profileId, searchString=None, subaccountId=None, sortField=None, ids=None, maxResults=None, pageToken=None, sortOrder=None, userRoleId=None, active=None)</a></code></p>
-<p class="firstline">Retrieves a list of account user profiles, possibly filtered.</p>
+<p class="firstline">Retrieves a list of account user profiles, possibly filtered. This method supports paging.</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>
@@ -301,7 +301,7 @@
 
 <div class="method">
     <code class="details" id="list">list(profileId, searchString=None, subaccountId=None, sortField=None, ids=None, maxResults=None, pageToken=None, sortOrder=None, userRoleId=None, active=None)</code>
-  <pre>Retrieves a list of account user profiles, possibly filtered.
+  <pre>Retrieves a list of account user profiles, possibly filtered. This method supports paging.
 
 Args:
   profileId: string, User profile ID associated with this request. (required)
diff --git a/docs/dyn/dfareporting_v2_5.accounts.html b/docs/dyn/dfareporting_v2_5.accounts.html
index e0f0d92..6ff646e 100644
--- a/docs/dyn/dfareporting_v2_5.accounts.html
+++ b/docs/dyn/dfareporting_v2_5.accounts.html
@@ -79,7 +79,7 @@
 <p class="firstline">Gets one account by ID.</p>
 <p class="toc_element">
   <code><a href="#list">list(profileId, searchString=None, sortField=None, ids=None, maxResults=None, pageToken=None, sortOrder=None, active=None)</a></code></p>
-<p class="firstline">Retrieves the list of accounts, possibly filtered.</p>
+<p class="firstline">Retrieves the list of accounts, possibly filtered. This method supports paging.</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>
@@ -217,7 +217,7 @@
 
 <div class="method">
     <code class="details" id="list">list(profileId, searchString=None, sortField=None, ids=None, maxResults=None, pageToken=None, sortOrder=None, active=None)</code>
-  <pre>Retrieves the list of accounts, possibly filtered.
+  <pre>Retrieves the list of accounts, possibly filtered. This method supports paging.
 
 Args:
   profileId: string, User profile ID associated with this request. (required)
diff --git a/docs/dyn/dfareporting_v2_5.ads.html b/docs/dyn/dfareporting_v2_5.ads.html
index f9600f6..11dccee 100644
--- a/docs/dyn/dfareporting_v2_5.ads.html
+++ b/docs/dyn/dfareporting_v2_5.ads.html
@@ -82,7 +82,7 @@
 <p class="firstline">Inserts a new ad.</p>
 <p class="toc_element">
   <code><a href="#list">list(profileId, landingPageIds=None, overriddenEventTagId=None, campaignIds=None, sizeIds=None, archived=None, creativeOptimizationConfigurationIds=None, sslCompliant=None, pageToken=None, sortOrder=None, type=None, sslRequired=None, creativeIds=None, remarketingListIds=None, maxResults=None, creativeType=None, placementIds=None, active=None, compatibility=None, advertiserId=None, searchString=None, audienceSegmentIds=None, ids=None, sortField=None, dynamicClickTracker=None)</a></code></p>
-<p class="firstline">Retrieves a list of ads, possibly filtered.</p>
+<p class="firstline">Retrieves a list of ads, possibly filtered. This method supports paging.</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>
@@ -197,7 +197,7 @@
       ],
       "id": "A String", # ID of this ad. This is a read-only, auto-generated field.
       "accountId": "A String", # Account ID of this ad. This is a read-only field that can be left blank.
-      "archived": True or False, # Whether this ad is archived.
+      "archived": True or False, # Whether this ad is archived. When true, active must be false.
       "technologyTargeting": { # Technology Targeting. # Technology platform targeting information for this ad. This field must be left blank if the ad is using a targeting template. Applicable when type is AD_SERVING_STANDARD_AD.
         "platformTypes": [ # Platform types that this ad targets. For example, desktop, mobile, or tablet. For each platform type, only id is required, and the other fields are populated automatically when the ad is inserted or updated.
           { # Contains information about a platform type that can be targeted by ads.
@@ -381,7 +381,7 @@
         "time": "A String", # Timestamp of the last change in milliseconds since epoch.
       },
       "startTime": "A String", # Date and time that this ad should start serving. If creating an ad, this field must be a time in the future. This is a required field on insertion.
-      "active": True or False, # Whether this ad is active.
+      "active": True or False, # Whether this ad is active. When true, archived must be false.
       "compatibility": "A String", # Compatibility of this ad. Applicable when type is AD_SERVING_DEFAULT_AD. DISPLAY and DISPLAY_INTERSTITIAL refer to either rendering on desktop or on mobile devices or in mobile apps for regular or interstitial ads, respectively. APP and APP_INTERSTITIAL are only used for existing default ads. New mobile placements must be assigned DISPLAY or DISPLAY_INTERSTITIAL and default ads created for those placements will be limited to those compatibility types. IN_STREAM_VIDEO refers to rendering in-stream video ads developed with the VAST standard.
       "kind": "dfareporting#ad", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#ad".
       "subaccountId": "A String", # Subaccount ID of this ad. This is a read-only field that can be left blank.
@@ -530,7 +530,7 @@
     ],
     "id": "A String", # ID of this ad. This is a read-only, auto-generated field.
     "accountId": "A String", # Account ID of this ad. This is a read-only field that can be left blank.
-    "archived": True or False, # Whether this ad is archived.
+    "archived": True or False, # Whether this ad is archived. When true, active must be false.
     "technologyTargeting": { # Technology Targeting. # Technology platform targeting information for this ad. This field must be left blank if the ad is using a targeting template. Applicable when type is AD_SERVING_STANDARD_AD.
       "platformTypes": [ # Platform types that this ad targets. For example, desktop, mobile, or tablet. For each platform type, only id is required, and the other fields are populated automatically when the ad is inserted or updated.
         { # Contains information about a platform type that can be targeted by ads.
@@ -714,7 +714,7 @@
       "time": "A String", # Timestamp of the last change in milliseconds since epoch.
     },
     "startTime": "A String", # Date and time that this ad should start serving. If creating an ad, this field must be a time in the future. This is a required field on insertion.
-    "active": True or False, # Whether this ad is active.
+    "active": True or False, # Whether this ad is active. When true, archived must be false.
     "compatibility": "A String", # Compatibility of this ad. Applicable when type is AD_SERVING_DEFAULT_AD. DISPLAY and DISPLAY_INTERSTITIAL refer to either rendering on desktop or on mobile devices or in mobile apps for regular or interstitial ads, respectively. APP and APP_INTERSTITIAL are only used for existing default ads. New mobile placements must be assigned DISPLAY or DISPLAY_INTERSTITIAL and default ads created for those placements will be limited to those compatibility types. IN_STREAM_VIDEO refers to rendering in-stream video ads developed with the VAST standard.
     "kind": "dfareporting#ad", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#ad".
     "subaccountId": "A String", # Subaccount ID of this ad. This is a read-only field that can be left blank.
@@ -857,7 +857,7 @@
       ],
       "id": "A String", # ID of this ad. This is a read-only, auto-generated field.
       "accountId": "A String", # Account ID of this ad. This is a read-only field that can be left blank.
-      "archived": True or False, # Whether this ad is archived.
+      "archived": True or False, # Whether this ad is archived. When true, active must be false.
       "technologyTargeting": { # Technology Targeting. # Technology platform targeting information for this ad. This field must be left blank if the ad is using a targeting template. Applicable when type is AD_SERVING_STANDARD_AD.
         "platformTypes": [ # Platform types that this ad targets. For example, desktop, mobile, or tablet. For each platform type, only id is required, and the other fields are populated automatically when the ad is inserted or updated.
           { # Contains information about a platform type that can be targeted by ads.
@@ -1041,7 +1041,7 @@
         "time": "A String", # Timestamp of the last change in milliseconds since epoch.
       },
       "startTime": "A String", # Date and time that this ad should start serving. If creating an ad, this field must be a time in the future. This is a required field on insertion.
-      "active": True or False, # Whether this ad is active.
+      "active": True or False, # Whether this ad is active. When true, archived must be false.
       "compatibility": "A String", # Compatibility of this ad. Applicable when type is AD_SERVING_DEFAULT_AD. DISPLAY and DISPLAY_INTERSTITIAL refer to either rendering on desktop or on mobile devices or in mobile apps for regular or interstitial ads, respectively. APP and APP_INTERSTITIAL are only used for existing default ads. New mobile placements must be assigned DISPLAY or DISPLAY_INTERSTITIAL and default ads created for those placements will be limited to those compatibility types. IN_STREAM_VIDEO refers to rendering in-stream video ads developed with the VAST standard.
       "kind": "dfareporting#ad", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#ad".
       "subaccountId": "A String", # Subaccount ID of this ad. This is a read-only field that can be left blank.
@@ -1090,7 +1090,7 @@
 
 <div class="method">
     <code class="details" id="list">list(profileId, landingPageIds=None, overriddenEventTagId=None, campaignIds=None, sizeIds=None, archived=None, creativeOptimizationConfigurationIds=None, sslCompliant=None, pageToken=None, sortOrder=None, type=None, sslRequired=None, creativeIds=None, remarketingListIds=None, maxResults=None, creativeType=None, placementIds=None, active=None, compatibility=None, advertiserId=None, searchString=None, audienceSegmentIds=None, ids=None, sortField=None, dynamicClickTracker=None)</code>
-  <pre>Retrieves a list of ads, possibly filtered.
+  <pre>Retrieves a list of ads, possibly filtered. This method supports paging.
 
 Args:
   profileId: string, User profile ID associated with this request. (required)
@@ -1261,7 +1261,7 @@
           ],
           "id": "A String", # ID of this ad. This is a read-only, auto-generated field.
           "accountId": "A String", # Account ID of this ad. This is a read-only field that can be left blank.
-          "archived": True or False, # Whether this ad is archived.
+          "archived": True or False, # Whether this ad is archived. When true, active must be false.
           "technologyTargeting": { # Technology Targeting. # Technology platform targeting information for this ad. This field must be left blank if the ad is using a targeting template. Applicable when type is AD_SERVING_STANDARD_AD.
             "platformTypes": [ # Platform types that this ad targets. For example, desktop, mobile, or tablet. For each platform type, only id is required, and the other fields are populated automatically when the ad is inserted or updated.
               { # Contains information about a platform type that can be targeted by ads.
@@ -1445,7 +1445,7 @@
             "time": "A String", # Timestamp of the last change in milliseconds since epoch.
           },
           "startTime": "A String", # Date and time that this ad should start serving. If creating an ad, this field must be a time in the future. This is a required field on insertion.
-          "active": True or False, # Whether this ad is active.
+          "active": True or False, # Whether this ad is active. When true, archived must be false.
           "compatibility": "A String", # Compatibility of this ad. Applicable when type is AD_SERVING_DEFAULT_AD. DISPLAY and DISPLAY_INTERSTITIAL refer to either rendering on desktop or on mobile devices or in mobile apps for regular or interstitial ads, respectively. APP and APP_INTERSTITIAL are only used for existing default ads. New mobile placements must be assigned DISPLAY or DISPLAY_INTERSTITIAL and default ads created for those placements will be limited to those compatibility types. IN_STREAM_VIDEO refers to rendering in-stream video ads developed with the VAST standard.
           "kind": "dfareporting#ad", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#ad".
           "subaccountId": "A String", # Subaccount ID of this ad. This is a read-only field that can be left blank.
@@ -1611,7 +1611,7 @@
     ],
     "id": "A String", # ID of this ad. This is a read-only, auto-generated field.
     "accountId": "A String", # Account ID of this ad. This is a read-only field that can be left blank.
-    "archived": True or False, # Whether this ad is archived.
+    "archived": True or False, # Whether this ad is archived. When true, active must be false.
     "technologyTargeting": { # Technology Targeting. # Technology platform targeting information for this ad. This field must be left blank if the ad is using a targeting template. Applicable when type is AD_SERVING_STANDARD_AD.
       "platformTypes": [ # Platform types that this ad targets. For example, desktop, mobile, or tablet. For each platform type, only id is required, and the other fields are populated automatically when the ad is inserted or updated.
         { # Contains information about a platform type that can be targeted by ads.
@@ -1795,7 +1795,7 @@
       "time": "A String", # Timestamp of the last change in milliseconds since epoch.
     },
     "startTime": "A String", # Date and time that this ad should start serving. If creating an ad, this field must be a time in the future. This is a required field on insertion.
-    "active": True or False, # Whether this ad is active.
+    "active": True or False, # Whether this ad is active. When true, archived must be false.
     "compatibility": "A String", # Compatibility of this ad. Applicable when type is AD_SERVING_DEFAULT_AD. DISPLAY and DISPLAY_INTERSTITIAL refer to either rendering on desktop or on mobile devices or in mobile apps for regular or interstitial ads, respectively. APP and APP_INTERSTITIAL are only used for existing default ads. New mobile placements must be assigned DISPLAY or DISPLAY_INTERSTITIAL and default ads created for those placements will be limited to those compatibility types. IN_STREAM_VIDEO refers to rendering in-stream video ads developed with the VAST standard.
     "kind": "dfareporting#ad", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#ad".
     "subaccountId": "A String", # Subaccount ID of this ad. This is a read-only field that can be left blank.
@@ -1938,7 +1938,7 @@
       ],
       "id": "A String", # ID of this ad. This is a read-only, auto-generated field.
       "accountId": "A String", # Account ID of this ad. This is a read-only field that can be left blank.
-      "archived": True or False, # Whether this ad is archived.
+      "archived": True or False, # Whether this ad is archived. When true, active must be false.
       "technologyTargeting": { # Technology Targeting. # Technology platform targeting information for this ad. This field must be left blank if the ad is using a targeting template. Applicable when type is AD_SERVING_STANDARD_AD.
         "platformTypes": [ # Platform types that this ad targets. For example, desktop, mobile, or tablet. For each platform type, only id is required, and the other fields are populated automatically when the ad is inserted or updated.
           { # Contains information about a platform type that can be targeted by ads.
@@ -2122,7 +2122,7 @@
         "time": "A String", # Timestamp of the last change in milliseconds since epoch.
       },
       "startTime": "A String", # Date and time that this ad should start serving. If creating an ad, this field must be a time in the future. This is a required field on insertion.
-      "active": True or False, # Whether this ad is active.
+      "active": True or False, # Whether this ad is active. When true, archived must be false.
       "compatibility": "A String", # Compatibility of this ad. Applicable when type is AD_SERVING_DEFAULT_AD. DISPLAY and DISPLAY_INTERSTITIAL refer to either rendering on desktop or on mobile devices or in mobile apps for regular or interstitial ads, respectively. APP and APP_INTERSTITIAL are only used for existing default ads. New mobile placements must be assigned DISPLAY or DISPLAY_INTERSTITIAL and default ads created for those placements will be limited to those compatibility types. IN_STREAM_VIDEO refers to rendering in-stream video ads developed with the VAST standard.
       "kind": "dfareporting#ad", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#ad".
       "subaccountId": "A String", # Subaccount ID of this ad. This is a read-only field that can be left blank.
@@ -2271,7 +2271,7 @@
     ],
     "id": "A String", # ID of this ad. This is a read-only, auto-generated field.
     "accountId": "A String", # Account ID of this ad. This is a read-only field that can be left blank.
-    "archived": True or False, # Whether this ad is archived.
+    "archived": True or False, # Whether this ad is archived. When true, active must be false.
     "technologyTargeting": { # Technology Targeting. # Technology platform targeting information for this ad. This field must be left blank if the ad is using a targeting template. Applicable when type is AD_SERVING_STANDARD_AD.
       "platformTypes": [ # Platform types that this ad targets. For example, desktop, mobile, or tablet. For each platform type, only id is required, and the other fields are populated automatically when the ad is inserted or updated.
         { # Contains information about a platform type that can be targeted by ads.
@@ -2455,7 +2455,7 @@
       "time": "A String", # Timestamp of the last change in milliseconds since epoch.
     },
     "startTime": "A String", # Date and time that this ad should start serving. If creating an ad, this field must be a time in the future. This is a required field on insertion.
-    "active": True or False, # Whether this ad is active.
+    "active": True or False, # Whether this ad is active. When true, archived must be false.
     "compatibility": "A String", # Compatibility of this ad. Applicable when type is AD_SERVING_DEFAULT_AD. DISPLAY and DISPLAY_INTERSTITIAL refer to either rendering on desktop or on mobile devices or in mobile apps for regular or interstitial ads, respectively. APP and APP_INTERSTITIAL are only used for existing default ads. New mobile placements must be assigned DISPLAY or DISPLAY_INTERSTITIAL and default ads created for those placements will be limited to those compatibility types. IN_STREAM_VIDEO refers to rendering in-stream video ads developed with the VAST standard.
     "kind": "dfareporting#ad", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#ad".
     "subaccountId": "A String", # Subaccount ID of this ad. This is a read-only field that can be left blank.
@@ -2598,7 +2598,7 @@
       ],
       "id": "A String", # ID of this ad. This is a read-only, auto-generated field.
       "accountId": "A String", # Account ID of this ad. This is a read-only field that can be left blank.
-      "archived": True or False, # Whether this ad is archived.
+      "archived": True or False, # Whether this ad is archived. When true, active must be false.
       "technologyTargeting": { # Technology Targeting. # Technology platform targeting information for this ad. This field must be left blank if the ad is using a targeting template. Applicable when type is AD_SERVING_STANDARD_AD.
         "platformTypes": [ # Platform types that this ad targets. For example, desktop, mobile, or tablet. For each platform type, only id is required, and the other fields are populated automatically when the ad is inserted or updated.
           { # Contains information about a platform type that can be targeted by ads.
@@ -2782,7 +2782,7 @@
         "time": "A String", # Timestamp of the last change in milliseconds since epoch.
       },
       "startTime": "A String", # Date and time that this ad should start serving. If creating an ad, this field must be a time in the future. This is a required field on insertion.
-      "active": True or False, # Whether this ad is active.
+      "active": True or False, # Whether this ad is active. When true, archived must be false.
       "compatibility": "A String", # Compatibility of this ad. Applicable when type is AD_SERVING_DEFAULT_AD. DISPLAY and DISPLAY_INTERSTITIAL refer to either rendering on desktop or on mobile devices or in mobile apps for regular or interstitial ads, respectively. APP and APP_INTERSTITIAL are only used for existing default ads. New mobile placements must be assigned DISPLAY or DISPLAY_INTERSTITIAL and default ads created for those placements will be limited to those compatibility types. IN_STREAM_VIDEO refers to rendering in-stream video ads developed with the VAST standard.
       "kind": "dfareporting#ad", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#ad".
       "subaccountId": "A String", # Subaccount ID of this ad. This is a read-only field that can be left blank.
diff --git a/docs/dyn/dfareporting_v2_5.advertiserGroups.html b/docs/dyn/dfareporting_v2_5.advertiserGroups.html
index 9fc9363..b9b11cd 100644
--- a/docs/dyn/dfareporting_v2_5.advertiserGroups.html
+++ b/docs/dyn/dfareporting_v2_5.advertiserGroups.html
@@ -85,7 +85,7 @@
 <p class="firstline">Inserts a new advertiser group.</p>
 <p class="toc_element">
   <code><a href="#list">list(profileId, searchString=None, pageToken=None, sortField=None, ids=None, maxResults=None, sortOrder=None)</a></code></p>
-<p class="firstline">Retrieves a list of advertiser groups, possibly filtered.</p>
+<p class="firstline">Retrieves a list of advertiser groups, possibly filtered. This method supports paging.</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>
@@ -155,7 +155,7 @@
 
 <div class="method">
     <code class="details" id="list">list(profileId, searchString=None, pageToken=None, sortField=None, ids=None, maxResults=None, sortOrder=None)</code>
-  <pre>Retrieves a list of advertiser groups, possibly filtered.
+  <pre>Retrieves a list of advertiser groups, possibly filtered. This method supports paging.
 
 Args:
   profileId: string, User profile ID associated with this request. (required)
diff --git a/docs/dyn/dfareporting_v2_5.advertisers.html b/docs/dyn/dfareporting_v2_5.advertisers.html
index 6c569f6..e7c5af6 100644
--- a/docs/dyn/dfareporting_v2_5.advertisers.html
+++ b/docs/dyn/dfareporting_v2_5.advertisers.html
@@ -82,7 +82,7 @@
 <p class="firstline">Inserts a new advertiser.</p>
 <p class="toc_element">
   <code><a href="#list">list(profileId, includeAdvertisersWithoutGroupsOnly=None, onlyParent=None, pageToken=None, sortOrder=None, status=None, maxResults=None, advertiserGroupIds=None, searchString=None, subaccountId=None, ids=None, floodlightConfigurationIds=None, sortField=None)</a></code></p>
-<p class="firstline">Retrieves a list of advertisers, possibly filtered.</p>
+<p class="firstline">Retrieves a list of advertisers, possibly filtered. This method supports paging.</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>
@@ -223,7 +223,7 @@
 
 <div class="method">
     <code class="details" id="list">list(profileId, includeAdvertisersWithoutGroupsOnly=None, onlyParent=None, pageToken=None, sortOrder=None, status=None, maxResults=None, advertiserGroupIds=None, searchString=None, subaccountId=None, ids=None, floodlightConfigurationIds=None, sortField=None)</code>
-  <pre>Retrieves a list of advertisers, possibly filtered.
+  <pre>Retrieves a list of advertisers, possibly filtered. This method supports paging.
 
 Args:
   profileId: string, User profile ID associated with this request. (required)
diff --git a/docs/dyn/dfareporting_v2_5.campaignCreativeAssociations.html b/docs/dyn/dfareporting_v2_5.campaignCreativeAssociations.html
index f2b20e2..6489e26 100644
--- a/docs/dyn/dfareporting_v2_5.campaignCreativeAssociations.html
+++ b/docs/dyn/dfareporting_v2_5.campaignCreativeAssociations.html
@@ -79,7 +79,7 @@
 <p class="firstline">Associates a creative with the specified campaign. This method creates a default ad with dimensions matching the creative in the campaign if such a default ad does not exist already.</p>
 <p class="toc_element">
   <code><a href="#list">list(profileId, campaignId, maxResults=None, pageToken=None, sortOrder=None)</a></code></p>
-<p class="firstline">Retrieves the list of creative IDs associated with the specified campaign.</p>
+<p class="firstline">Retrieves the list of creative IDs associated with the specified campaign. This method supports paging.</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>
@@ -111,7 +111,7 @@
 
 <div class="method">
     <code class="details" id="list">list(profileId, campaignId, maxResults=None, pageToken=None, sortOrder=None)</code>
-  <pre>Retrieves the list of creative IDs associated with the specified campaign.
+  <pre>Retrieves the list of creative IDs associated with the specified campaign. This method supports paging.
 
 Args:
   profileId: string, User profile ID associated with this request. (required)
diff --git a/docs/dyn/dfareporting_v2_5.campaigns.html b/docs/dyn/dfareporting_v2_5.campaigns.html
index 84fa83d..f9af52e 100644
--- a/docs/dyn/dfareporting_v2_5.campaigns.html
+++ b/docs/dyn/dfareporting_v2_5.campaigns.html
@@ -82,7 +82,7 @@
 <p class="firstline">Inserts a new campaign.</p>
 <p class="toc_element">
   <code><a href="#list">list(profileId, overriddenEventTagId=None, archived=None, advertiserIds=None, pageToken=None, sortOrder=None, maxResults=None, excludedIds=None, advertiserGroupIds=None, searchString=None, subaccountId=None, ids=None, sortField=None, atLeastOneOptimizationActivity=None)</a></code></p>
-<p class="firstline">Retrieves a list of campaigns, possibly filtered.</p>
+<p class="firstline">Retrieves a list of campaigns, possibly filtered. This method supports paging.</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>
@@ -474,7 +474,7 @@
 
 <div class="method">
     <code class="details" id="list">list(profileId, overriddenEventTagId=None, archived=None, advertiserIds=None, pageToken=None, sortOrder=None, maxResults=None, excludedIds=None, advertiserGroupIds=None, searchString=None, subaccountId=None, ids=None, sortField=None, atLeastOneOptimizationActivity=None)</code>
-  <pre>Retrieves a list of campaigns, possibly filtered.
+  <pre>Retrieves a list of campaigns, possibly filtered. This method supports paging.
 
 Args:
   profileId: string, User profile ID associated with this request. (required)
diff --git a/docs/dyn/dfareporting_v2_5.changeLogs.html b/docs/dyn/dfareporting_v2_5.changeLogs.html
index 9b231af..109e043 100644
--- a/docs/dyn/dfareporting_v2_5.changeLogs.html
+++ b/docs/dyn/dfareporting_v2_5.changeLogs.html
@@ -79,7 +79,7 @@
 <p class="firstline">Gets one change log by ID.</p>
 <p class="toc_element">
   <code><a href="#list">list(profileId, objectType=None, maxChangeTime=None, pageToken=None, maxResults=None, action=None, minChangeTime=None, searchString=None, userProfileIds=None, ids=None, objectIds=None)</a></code></p>
-<p class="firstline">Retrieves a list of change logs.</p>
+<p class="firstline">Retrieves a list of change logs. This method supports paging.</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>
@@ -115,7 +115,7 @@
 
 <div class="method">
     <code class="details" id="list">list(profileId, objectType=None, maxChangeTime=None, pageToken=None, maxResults=None, action=None, minChangeTime=None, searchString=None, userProfileIds=None, ids=None, objectIds=None)</code>
-  <pre>Retrieves a list of change logs.
+  <pre>Retrieves a list of change logs. This method supports paging.
 
 Args:
   profileId: string, User profile ID associated with this request. (required)
@@ -153,6 +153,7 @@
       OBJECT_REMARKETING_LIST - 
       OBJECT_RICHMEDIA_CREATIVE - 
       OBJECT_SD_SITE - 
+      OBJECT_SEARCH_LIFT_STUDY - 
       OBJECT_SIZE - 
       OBJECT_SUBACCOUNT - 
       OBJECT_TARGETING_TEMPLATE - 
diff --git a/docs/dyn/dfareporting_v2_5.contentCategories.html b/docs/dyn/dfareporting_v2_5.contentCategories.html
index 8ac7be1..6c6b002 100644
--- a/docs/dyn/dfareporting_v2_5.contentCategories.html
+++ b/docs/dyn/dfareporting_v2_5.contentCategories.html
@@ -85,7 +85,7 @@
 <p class="firstline">Inserts a new content category.</p>
 <p class="toc_element">
   <code><a href="#list">list(profileId, searchString=None, pageToken=None, sortField=None, ids=None, maxResults=None, sortOrder=None)</a></code></p>
-<p class="firstline">Retrieves a list of content categories, possibly filtered.</p>
+<p class="firstline">Retrieves a list of content categories, possibly filtered. This method supports paging.</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>
@@ -155,7 +155,7 @@
 
 <div class="method">
     <code class="details" id="list">list(profileId, searchString=None, pageToken=None, sortField=None, ids=None, maxResults=None, sortOrder=None)</code>
-  <pre>Retrieves a list of content categories, possibly filtered.
+  <pre>Retrieves a list of content categories, possibly filtered. This method supports paging.
 
 Args:
   profileId: string, User profile ID associated with this request. (required)
diff --git a/docs/dyn/dfareporting_v2_5.conversions.html b/docs/dyn/dfareporting_v2_5.conversions.html
index 0fbc3e5..a5164b3 100644
--- a/docs/dyn/dfareporting_v2_5.conversions.html
+++ b/docs/dyn/dfareporting_v2_5.conversions.html
@@ -104,7 +104,7 @@
         ],
         "floodlightConfigurationId": "A String", # Floodlight Configuration ID of this conversion. This is a required field.
         "value": 3.14, # The value of the conversion.
-        "limitAdTracking": True or False, # Whether the user has Limit Ad Tracking set.
+        "limitAdTracking": True or False, # Whether Limit Ad Tracking is enabled. When set to true, the conversion will be used for reporting but not targeting. This will prevent remarketing.
         "quantity": "A String", # The quantity of the conversion.
         "floodlightActivityId": "A String", # Floodlight Activity ID of this conversion. This is a required field.
         "mobileDeviceId": "A String", # The mobile device ID. This field is mutually exclusive with encryptedUserId and encryptedUserIdCandidates[]. This or encryptedUserId or encryptedUserIdCandidates[] is a required field.
@@ -141,7 +141,7 @@
           ],
           "floodlightConfigurationId": "A String", # Floodlight Configuration ID of this conversion. This is a required field.
           "value": 3.14, # The value of the conversion.
-          "limitAdTracking": True or False, # Whether the user has Limit Ad Tracking set.
+          "limitAdTracking": True or False, # Whether Limit Ad Tracking is enabled. When set to true, the conversion will be used for reporting but not targeting. This will prevent remarketing.
           "quantity": "A String", # The quantity of the conversion.
           "floodlightActivityId": "A String", # Floodlight Activity ID of this conversion. This is a required field.
           "mobileDeviceId": "A String", # The mobile device ID. This field is mutually exclusive with encryptedUserId and encryptedUserIdCandidates[]. This or encryptedUserId or encryptedUserIdCandidates[] is a required field.
diff --git a/docs/dyn/dfareporting_v2_5.creativeAssets.html b/docs/dyn/dfareporting_v2_5.creativeAssets.html
index fbc2e7f..46d375f 100644
--- a/docs/dyn/dfareporting_v2_5.creativeAssets.html
+++ b/docs/dyn/dfareporting_v2_5.creativeAssets.html
@@ -75,11 +75,11 @@
 <h1><a href="dfareporting_v2_5.html">DCM/DFA Reporting And Trafficking API</a> . <a href="dfareporting_v2_5.creativeAssets.html">creativeAssets</a></h1>
 <h2>Instance Methods</h2>
 <p class="toc_element">
-  <code><a href="#insert">insert(profileId, advertiserId, body=None, media_body=None)</a></code></p>
+  <code><a href="#insert">insert(profileId, advertiserId, body=None, media_body=None, media_mime_type=None)</a></code></p>
 <p class="firstline">Inserts a new creative asset.</p>
 <h3>Method Details</h3>
 <div class="method">
-    <code class="details" id="insert">insert(profileId, advertiserId, body=None, media_body=None)</code>
+    <code class="details" id="insert">insert(profileId, advertiserId, body=None, media_body=None, media_mime_type=None)</code>
   <pre>Inserts a new creative asset.
 
 Args:
@@ -136,6 +136,7 @@
   }
 
   media_body: string, The filename of the media request body, or an instance of a MediaUpload object.
+  media_mime_type: string, The MIME type of the media request body, or an instance of a MediaUpload object.
 
 Returns:
   An object of the form:
diff --git a/docs/dyn/dfareporting_v2_5.creativeFieldValues.html b/docs/dyn/dfareporting_v2_5.creativeFieldValues.html
index aca8895..e4f28ac 100644
--- a/docs/dyn/dfareporting_v2_5.creativeFieldValues.html
+++ b/docs/dyn/dfareporting_v2_5.creativeFieldValues.html
@@ -85,7 +85,7 @@
 <p class="firstline">Inserts a new creative field value.</p>
 <p class="toc_element">
   <code><a href="#list">list(profileId, creativeFieldId, searchString=None, sortField=None, ids=None, maxResults=None, pageToken=None, sortOrder=None)</a></code></p>
-<p class="firstline">Retrieves a list of creative field values, possibly filtered.</p>
+<p class="firstline">Retrieves a list of creative field values, possibly filtered. This method supports paging.</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>
@@ -155,7 +155,7 @@
 
 <div class="method">
     <code class="details" id="list">list(profileId, creativeFieldId, searchString=None, sortField=None, ids=None, maxResults=None, pageToken=None, sortOrder=None)</code>
-  <pre>Retrieves a list of creative field values, possibly filtered.
+  <pre>Retrieves a list of creative field values, possibly filtered. This method supports paging.
 
 Args:
   profileId: string, User profile ID associated with this request. (required)
diff --git a/docs/dyn/dfareporting_v2_5.creativeFields.html b/docs/dyn/dfareporting_v2_5.creativeFields.html
index f52d3d7..1fbd88c 100644
--- a/docs/dyn/dfareporting_v2_5.creativeFields.html
+++ b/docs/dyn/dfareporting_v2_5.creativeFields.html
@@ -85,7 +85,7 @@
 <p class="firstline">Inserts a new creative field.</p>
 <p class="toc_element">
   <code><a href="#list">list(profileId, searchString=None, pageToken=None, sortField=None, advertiserIds=None, ids=None, maxResults=None, sortOrder=None)</a></code></p>
-<p class="firstline">Retrieves a list of creative fields, possibly filtered.</p>
+<p class="firstline">Retrieves a list of creative fields, possibly filtered. This method supports paging.</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>
@@ -185,7 +185,7 @@
 
 <div class="method">
     <code class="details" id="list">list(profileId, searchString=None, pageToken=None, sortField=None, advertiserIds=None, ids=None, maxResults=None, sortOrder=None)</code>
-  <pre>Retrieves a list of creative fields, possibly filtered.
+  <pre>Retrieves a list of creative fields, possibly filtered. This method supports paging.
 
 Args:
   profileId: string, User profile ID associated with this request. (required)
diff --git a/docs/dyn/dfareporting_v2_5.creativeGroups.html b/docs/dyn/dfareporting_v2_5.creativeGroups.html
index 36fa2d2..d8586cf 100644
--- a/docs/dyn/dfareporting_v2_5.creativeGroups.html
+++ b/docs/dyn/dfareporting_v2_5.creativeGroups.html
@@ -82,7 +82,7 @@
 <p class="firstline">Inserts a new creative group.</p>
 <p class="toc_element">
   <code><a href="#list">list(profileId, searchString=None, pageToken=None, sortField=None, advertiserIds=None, groupNumber=None, maxResults=None, ids=None, sortOrder=None)</a></code></p>
-<p class="firstline">Retrieves a list of creative groups, possibly filtered.</p>
+<p class="firstline">Retrieves a list of creative groups, possibly filtered. This method supports paging.</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>
@@ -184,7 +184,7 @@
 
 <div class="method">
     <code class="details" id="list">list(profileId, searchString=None, pageToken=None, sortField=None, advertiserIds=None, groupNumber=None, maxResults=None, ids=None, sortOrder=None)</code>
-  <pre>Retrieves a list of creative groups, possibly filtered.
+  <pre>Retrieves a list of creative groups, possibly filtered. This method supports paging.
 
 Args:
   profileId: string, User profile ID associated with this request. (required)
diff --git a/docs/dyn/dfareporting_v2_5.creatives.html b/docs/dyn/dfareporting_v2_5.creatives.html
index 86a9d50..8cf9d93 100644
--- a/docs/dyn/dfareporting_v2_5.creatives.html
+++ b/docs/dyn/dfareporting_v2_5.creatives.html
@@ -82,7 +82,7 @@
 <p class="firstline">Inserts a new creative.</p>
 <p class="toc_element">
   <code><a href="#list">list(profileId, campaignId=None, advertiserId=None, sizeIds=None, archived=None, pageToken=None, sortOrder=None, renderingIds=None, maxResults=None, active=None, companionCreativeIds=None, types=None, searchString=None, ids=None, studioCreativeId=None, sortField=None, creativeFieldIds=None)</a></code></p>
-<p class="firstline">Retrieves a list of creatives, possibly filtered.</p>
+<p class="firstline">Retrieves a list of creatives, possibly filtered. This method supports paging.</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>
@@ -1120,7 +1120,7 @@
 
 <div class="method">
     <code class="details" id="list">list(profileId, campaignId=None, advertiserId=None, sizeIds=None, archived=None, pageToken=None, sortOrder=None, renderingIds=None, maxResults=None, active=None, companionCreativeIds=None, types=None, searchString=None, ids=None, studioCreativeId=None, sortField=None, creativeFieldIds=None)</code>
-  <pre>Retrieves a list of creatives, possibly filtered.
+  <pre>Retrieves a list of creatives, possibly filtered. This method supports paging.
 
 Args:
   profileId: string, User profile ID associated with this request. (required)
diff --git a/docs/dyn/dfareporting_v2_5.directorySiteContacts.html b/docs/dyn/dfareporting_v2_5.directorySiteContacts.html
index bea4727..9c3b906 100644
--- a/docs/dyn/dfareporting_v2_5.directorySiteContacts.html
+++ b/docs/dyn/dfareporting_v2_5.directorySiteContacts.html
@@ -79,7 +79,7 @@
 <p class="firstline">Gets one directory site contact by ID.</p>
 <p class="toc_element">
   <code><a href="#list">list(profileId, searchString=None, directorySiteIds=None, pageToken=None, sortField=None, ids=None, maxResults=None, sortOrder=None)</a></code></p>
-<p class="firstline">Retrieves a list of directory site contacts, possibly filtered.</p>
+<p class="firstline">Retrieves a list of directory site contacts, possibly filtered. This method supports paging.</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>
@@ -111,7 +111,7 @@
 
 <div class="method">
     <code class="details" id="list">list(profileId, searchString=None, directorySiteIds=None, pageToken=None, sortField=None, ids=None, maxResults=None, sortOrder=None)</code>
-  <pre>Retrieves a list of directory site contacts, possibly filtered.
+  <pre>Retrieves a list of directory site contacts, possibly filtered. This method supports paging.
 
 Args:
   profileId: string, User profile ID associated with this request. (required)
diff --git a/docs/dyn/dfareporting_v2_5.directorySites.html b/docs/dyn/dfareporting_v2_5.directorySites.html
index 22605a0..8af3f75 100644
--- a/docs/dyn/dfareporting_v2_5.directorySites.html
+++ b/docs/dyn/dfareporting_v2_5.directorySites.html
@@ -82,7 +82,7 @@
 <p class="firstline">Inserts a new directory site.</p>
 <p class="toc_element">
   <code><a href="#list">list(profileId, countryId=None, acceptsInStreamVideoPlacements=None, pageToken=None, sortOrder=None, parentId=None, acceptsPublisherPaidPlacements=None, acceptsInterstitialPlacements=None, maxResults=None, active=None, searchString=None, sortField=None, ids=None, dfp_network_code=None)</a></code></p>
-<p class="firstline">Retrieves a list of directory sites, possibly filtered.</p>
+<p class="firstline">Retrieves a list of directory sites, possibly filtered. This method supports paging.</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>
@@ -433,7 +433,7 @@
 
 <div class="method">
     <code class="details" id="list">list(profileId, countryId=None, acceptsInStreamVideoPlacements=None, pageToken=None, sortOrder=None, parentId=None, acceptsPublisherPaidPlacements=None, acceptsInterstitialPlacements=None, maxResults=None, active=None, searchString=None, sortField=None, ids=None, dfp_network_code=None)</code>
-  <pre>Retrieves a list of directory sites, possibly filtered.
+  <pre>Retrieves a list of directory sites, possibly filtered. This method supports paging.
 
 Args:
   profileId: string, User profile ID associated with this request. (required)
diff --git a/docs/dyn/dfareporting_v2_5.floodlightActivities.html b/docs/dyn/dfareporting_v2_5.floodlightActivities.html
index c300f81..9ec116a 100644
--- a/docs/dyn/dfareporting_v2_5.floodlightActivities.html
+++ b/docs/dyn/dfareporting_v2_5.floodlightActivities.html
@@ -88,7 +88,7 @@
 <p class="firstline">Inserts a new floodlight activity.</p>
 <p class="toc_element">
   <code><a href="#list">list(profileId, floodlightActivityGroupName=None, advertiserId=None, tagString=None, floodlightActivityGroupTagString=None, floodlightActivityGroupIds=None, pageToken=None, sortOrder=None, maxResults=None, searchString=None, sortField=None, floodlightConfigurationId=None, ids=None, floodlightActivityGroupType=None)</a></code></p>
-<p class="firstline">Retrieves a list of floodlight activities, possibly filtered.</p>
+<p class="firstline">Retrieves a list of floodlight activities, possibly filtered. This method supports paging.</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>
@@ -457,7 +457,7 @@
 
 <div class="method">
     <code class="details" id="list">list(profileId, floodlightActivityGroupName=None, advertiserId=None, tagString=None, floodlightActivityGroupTagString=None, floodlightActivityGroupIds=None, pageToken=None, sortOrder=None, maxResults=None, searchString=None, sortField=None, floodlightConfigurationId=None, ids=None, floodlightActivityGroupType=None)</code>
-  <pre>Retrieves a list of floodlight activities, possibly filtered.
+  <pre>Retrieves a list of floodlight activities, possibly filtered. This method supports paging.
 
 Args:
   profileId: string, User profile ID associated with this request. (required)
diff --git a/docs/dyn/dfareporting_v2_5.floodlightActivityGroups.html b/docs/dyn/dfareporting_v2_5.floodlightActivityGroups.html
index 0249afd..e8cd8fc 100644
--- a/docs/dyn/dfareporting_v2_5.floodlightActivityGroups.html
+++ b/docs/dyn/dfareporting_v2_5.floodlightActivityGroups.html
@@ -82,7 +82,7 @@
 <p class="firstline">Inserts a new floodlight activity group.</p>
 <p class="toc_element">
   <code><a href="#list">list(profileId, advertiserId=None, searchString=None, pageToken=None, sortField=None, floodlightConfigurationId=None, ids=None, maxResults=None, sortOrder=None, type=None)</a></code></p>
-<p class="firstline">Retrieves a list of floodlight activity groups, possibly filtered.</p>
+<p class="firstline">Retrieves a list of floodlight activity groups, possibly filtered. This method supports paging.</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>
@@ -229,7 +229,7 @@
 
 <div class="method">
     <code class="details" id="list">list(profileId, advertiserId=None, searchString=None, pageToken=None, sortField=None, floodlightConfigurationId=None, ids=None, maxResults=None, sortOrder=None, type=None)</code>
-  <pre>Retrieves a list of floodlight activity groups, possibly filtered.
+  <pre>Retrieves a list of floodlight activity groups, possibly filtered. This method supports paging.
 
 Args:
   profileId: string, User profile ID associated with this request. (required)
diff --git a/docs/dyn/dfareporting_v2_5.inventoryItems.html b/docs/dyn/dfareporting_v2_5.inventoryItems.html
index f4aa0d6..d069752 100644
--- a/docs/dyn/dfareporting_v2_5.inventoryItems.html
+++ b/docs/dyn/dfareporting_v2_5.inventoryItems.html
@@ -79,7 +79,7 @@
 <p class="firstline">Gets one inventory item by ID.</p>
 <p class="toc_element">
   <code><a href="#list">list(profileId, projectId, pageToken=None, inPlan=None, sortOrder=None, type=None, orderId=None, maxResults=None, siteId=None, sortField=None, ids=None)</a></code></p>
-<p class="firstline">Retrieves a list of inventory items, possibly filtered.</p>
+<p class="firstline">Retrieves a list of inventory items, possibly filtered. This method supports paging.</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>
@@ -149,7 +149,7 @@
 
 <div class="method">
     <code class="details" id="list">list(profileId, projectId, pageToken=None, inPlan=None, sortOrder=None, type=None, orderId=None, maxResults=None, siteId=None, sortField=None, ids=None)</code>
-  <pre>Retrieves a list of inventory items, possibly filtered.
+  <pre>Retrieves a list of inventory items, possibly filtered. This method supports paging.
 
 Args:
   profileId: string, User profile ID associated with this request. (required)
diff --git a/docs/dyn/dfareporting_v2_5.orderDocuments.html b/docs/dyn/dfareporting_v2_5.orderDocuments.html
index dbea318..98246e2 100644
--- a/docs/dyn/dfareporting_v2_5.orderDocuments.html
+++ b/docs/dyn/dfareporting_v2_5.orderDocuments.html
@@ -79,7 +79,7 @@
 <p class="firstline">Gets one order document by ID.</p>
 <p class="toc_element">
   <code><a href="#list">list(profileId, projectId, pageToken=None, sortOrder=None, orderId=None, maxResults=None, siteId=None, approved=None, searchString=None, sortField=None, ids=None)</a></code></p>
-<p class="firstline">Retrieves a list of order documents, possibly filtered.</p>
+<p class="firstline">Retrieves a list of order documents, possibly filtered. This method supports paging.</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>
@@ -125,7 +125,7 @@
 
 <div class="method">
     <code class="details" id="list">list(profileId, projectId, pageToken=None, sortOrder=None, orderId=None, maxResults=None, siteId=None, approved=None, searchString=None, sortField=None, ids=None)</code>
-  <pre>Retrieves a list of order documents, possibly filtered.
+  <pre>Retrieves a list of order documents, possibly filtered. This method supports paging.
 
 Args:
   profileId: string, User profile ID associated with this request. (required)
diff --git a/docs/dyn/dfareporting_v2_5.orders.html b/docs/dyn/dfareporting_v2_5.orders.html
index efcedd7..9a9eacd 100644
--- a/docs/dyn/dfareporting_v2_5.orders.html
+++ b/docs/dyn/dfareporting_v2_5.orders.html
@@ -79,7 +79,7 @@
 <p class="firstline">Gets one order by ID.</p>
 <p class="toc_element">
   <code><a href="#list">list(profileId, projectId, searchString=None, pageToken=None, sortField=None, ids=None, maxResults=None, sortOrder=None, siteId=None)</a></code></p>
-<p class="firstline">Retrieves a list of orders, possibly filtered.</p>
+<p class="firstline">Retrieves a list of orders, possibly filtered. This method supports paging.</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>
@@ -138,7 +138,7 @@
 
 <div class="method">
     <code class="details" id="list">list(profileId, projectId, searchString=None, pageToken=None, sortField=None, ids=None, maxResults=None, sortOrder=None, siteId=None)</code>
-  <pre>Retrieves a list of orders, possibly filtered.
+  <pre>Retrieves a list of orders, possibly filtered. This method supports paging.
 
 Args:
   profileId: string, User profile ID associated with this request. (required)
diff --git a/docs/dyn/dfareporting_v2_5.placementGroups.html b/docs/dyn/dfareporting_v2_5.placementGroups.html
index 779a59d..a019c94 100644
--- a/docs/dyn/dfareporting_v2_5.placementGroups.html
+++ b/docs/dyn/dfareporting_v2_5.placementGroups.html
@@ -82,7 +82,7 @@
 <p class="firstline">Inserts a new placement group.</p>
 <p class="toc_element">
   <code><a href="#list">list(profileId, siteIds=None, placementGroupType=None, pricingTypes=None, campaignIds=None, advertiserIds=None, pageToken=None, maxStartDate=None, sortOrder=None, maxEndDate=None, placementStrategyIds=None, contentCategoryIds=None, archived=None, maxResults=None, minStartDate=None, searchString=None, minEndDate=None, directorySiteIds=None, ids=None, sortField=None)</a></code></p>
-<p class="firstline">Retrieves a list of placement groups, possibly filtered.</p>
+<p class="firstline">Retrieves a list of placement groups, possibly filtered. This method supports paging.</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>
@@ -406,7 +406,7 @@
 
 <div class="method">
     <code class="details" id="list">list(profileId, siteIds=None, placementGroupType=None, pricingTypes=None, campaignIds=None, advertiserIds=None, pageToken=None, maxStartDate=None, sortOrder=None, maxEndDate=None, placementStrategyIds=None, contentCategoryIds=None, archived=None, maxResults=None, minStartDate=None, searchString=None, minEndDate=None, directorySiteIds=None, ids=None, sortField=None)</code>
-  <pre>Retrieves a list of placement groups, possibly filtered.
+  <pre>Retrieves a list of placement groups, possibly filtered. This method supports paging.
 
 Args:
   profileId: string, User profile ID associated with this request. (required)
diff --git a/docs/dyn/dfareporting_v2_5.placementStrategies.html b/docs/dyn/dfareporting_v2_5.placementStrategies.html
index 81a6d54..247cf73 100644
--- a/docs/dyn/dfareporting_v2_5.placementStrategies.html
+++ b/docs/dyn/dfareporting_v2_5.placementStrategies.html
@@ -85,7 +85,7 @@
 <p class="firstline">Inserts a new placement strategy.</p>
 <p class="toc_element">
   <code><a href="#list">list(profileId, searchString=None, pageToken=None, sortField=None, ids=None, maxResults=None, sortOrder=None)</a></code></p>
-<p class="firstline">Retrieves a list of placement strategies, possibly filtered.</p>
+<p class="firstline">Retrieves a list of placement strategies, possibly filtered. This method supports paging.</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>
@@ -155,7 +155,7 @@
 
 <div class="method">
     <code class="details" id="list">list(profileId, searchString=None, pageToken=None, sortField=None, ids=None, maxResults=None, sortOrder=None)</code>
-  <pre>Retrieves a list of placement strategies, possibly filtered.
+  <pre>Retrieves a list of placement strategies, possibly filtered. This method supports paging.
 
 Args:
   profileId: string, User profile ID associated with this request. (required)
diff --git a/docs/dyn/dfareporting_v2_5.placements.html b/docs/dyn/dfareporting_v2_5.placements.html
index c9ca3f0..fe4ce83 100644
--- a/docs/dyn/dfareporting_v2_5.placements.html
+++ b/docs/dyn/dfareporting_v2_5.placements.html
@@ -85,7 +85,7 @@
 <p class="firstline">Inserts a new placement.</p>
 <p class="toc_element">
   <code><a href="#list">list(profileId, siteIds=None, paymentSource=None, pricingTypes=None, campaignIds=None, advertiserIds=None, sizeIds=None, pageToken=None, maxStartDate=None, sortOrder=None, maxEndDate=None, placementStrategyIds=None, contentCategoryIds=None, archived=None, maxResults=None, minStartDate=None, compatibilities=None, searchString=None, minEndDate=None, directorySiteIds=None, sortField=None, ids=None, groupIds=None)</a></code></p>
-<p class="firstline">Retrieves a list of placements, possibly filtered.</p>
+<p class="firstline">Retrieves a list of placements, possibly filtered. This method supports paging.</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>
@@ -580,7 +580,7 @@
 
 <div class="method">
     <code class="details" id="list">list(profileId, siteIds=None, paymentSource=None, pricingTypes=None, campaignIds=None, advertiserIds=None, sizeIds=None, pageToken=None, maxStartDate=None, sortOrder=None, maxEndDate=None, placementStrategyIds=None, contentCategoryIds=None, archived=None, maxResults=None, minStartDate=None, compatibilities=None, searchString=None, minEndDate=None, directorySiteIds=None, sortField=None, ids=None, groupIds=None)</code>
-  <pre>Retrieves a list of placements, possibly filtered.
+  <pre>Retrieves a list of placements, possibly filtered. This method supports paging.
 
 Args:
   profileId: string, User profile ID associated with this request. (required)
diff --git a/docs/dyn/dfareporting_v2_5.projects.html b/docs/dyn/dfareporting_v2_5.projects.html
index 46b90e7..9501d39 100644
--- a/docs/dyn/dfareporting_v2_5.projects.html
+++ b/docs/dyn/dfareporting_v2_5.projects.html
@@ -79,7 +79,7 @@
 <p class="firstline">Gets one project by ID.</p>
 <p class="toc_element">
   <code><a href="#list">list(profileId, searchString=None, pageToken=None, sortField=None, advertiserIds=None, ids=None, maxResults=None, sortOrder=None)</a></code></p>
-<p class="firstline">Retrieves a list of projects, possibly filtered.</p>
+<p class="firstline">Retrieves a list of projects, possibly filtered. This method supports paging.</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>
@@ -124,7 +124,7 @@
 
 <div class="method">
     <code class="details" id="list">list(profileId, searchString=None, pageToken=None, sortField=None, advertiserIds=None, ids=None, maxResults=None, sortOrder=None)</code>
-  <pre>Retrieves a list of projects, possibly filtered.
+  <pre>Retrieves a list of projects, possibly filtered. This method supports paging.
 
 Args:
   profileId: string, User profile ID associated with this request. (required)
diff --git a/docs/dyn/dfareporting_v2_5.remarketingLists.html b/docs/dyn/dfareporting_v2_5.remarketingLists.html
index e305cfe..0b9df24 100644
--- a/docs/dyn/dfareporting_v2_5.remarketingLists.html
+++ b/docs/dyn/dfareporting_v2_5.remarketingLists.html
@@ -82,7 +82,7 @@
 <p class="firstline">Inserts a new remarketing list.</p>
 <p class="toc_element">
   <code><a href="#list">list(profileId, advertiserId, name=None, pageToken=None, sortField=None, floodlightActivityId=None, maxResults=None, active=None, sortOrder=None)</a></code></p>
-<p class="firstline">Retrieves a list of remarketing lists, possibly filtered.</p>
+<p class="firstline">Retrieves a list of remarketing lists, possibly filtered. This method supports paging.</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>
@@ -247,7 +247,7 @@
 
 <div class="method">
     <code class="details" id="list">list(profileId, advertiserId, name=None, pageToken=None, sortField=None, floodlightActivityId=None, maxResults=None, active=None, sortOrder=None)</code>
-  <pre>Retrieves a list of remarketing lists, possibly filtered.
+  <pre>Retrieves a list of remarketing lists, possibly filtered. This method supports paging.
 
 Args:
   profileId: string, User profile ID associated with this request. (required)
diff --git a/docs/dyn/dfareporting_v2_5.sites.html b/docs/dyn/dfareporting_v2_5.sites.html
index 25f15ed..38c6174 100644
--- a/docs/dyn/dfareporting_v2_5.sites.html
+++ b/docs/dyn/dfareporting_v2_5.sites.html
@@ -82,7 +82,7 @@
 <p class="firstline">Inserts a new site.</p>
 <p class="toc_element">
   <code><a href="#list">list(profileId, unmappedSite=None, campaignIds=None, acceptsInStreamVideoPlacements=None, pageToken=None, acceptsPublisherPaidPlacements=None, sortOrder=None, acceptsInterstitialPlacements=None, maxResults=None, adWordsSite=None, approved=None, searchString=None, subaccountId=None, directorySiteIds=None, sortField=None, ids=None)</a></code></p>
-<p class="firstline">Retrieves a list of sites, possibly filtered.</p>
+<p class="firstline">Retrieves a list of sites, possibly filtered. This method supports paging.</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>
@@ -298,7 +298,7 @@
 
 <div class="method">
     <code class="details" id="list">list(profileId, unmappedSite=None, campaignIds=None, acceptsInStreamVideoPlacements=None, pageToken=None, acceptsPublisherPaidPlacements=None, sortOrder=None, acceptsInterstitialPlacements=None, maxResults=None, adWordsSite=None, approved=None, searchString=None, subaccountId=None, directorySiteIds=None, sortField=None, ids=None)</code>
-  <pre>Retrieves a list of sites, possibly filtered.
+  <pre>Retrieves a list of sites, possibly filtered. This method supports paging.
 
 Args:
   profileId: string, User profile ID associated with this request. (required)
diff --git a/docs/dyn/dfareporting_v2_5.subaccounts.html b/docs/dyn/dfareporting_v2_5.subaccounts.html
index 89ca36d..4ffe489 100644
--- a/docs/dyn/dfareporting_v2_5.subaccounts.html
+++ b/docs/dyn/dfareporting_v2_5.subaccounts.html
@@ -82,7 +82,7 @@
 <p class="firstline">Inserts a new subaccount.</p>
 <p class="toc_element">
   <code><a href="#list">list(profileId, searchString=None, pageToken=None, sortField=None, ids=None, maxResults=None, sortOrder=None)</a></code></p>
-<p class="firstline">Gets a list of subaccounts, possibly filtered.</p>
+<p class="firstline">Gets a list of subaccounts, possibly filtered. This method supports paging.</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>
@@ -151,7 +151,7 @@
 
 <div class="method">
     <code class="details" id="list">list(profileId, searchString=None, pageToken=None, sortField=None, ids=None, maxResults=None, sortOrder=None)</code>
-  <pre>Gets a list of subaccounts, possibly filtered.
+  <pre>Gets a list of subaccounts, possibly filtered. This method supports paging.
 
 Args:
   profileId: string, User profile ID associated with this request. (required)
diff --git a/docs/dyn/dfareporting_v2_5.targetableRemarketingLists.html b/docs/dyn/dfareporting_v2_5.targetableRemarketingLists.html
index d1a6824..5b86376 100644
--- a/docs/dyn/dfareporting_v2_5.targetableRemarketingLists.html
+++ b/docs/dyn/dfareporting_v2_5.targetableRemarketingLists.html
@@ -79,7 +79,7 @@
 <p class="firstline">Gets one remarketing list by ID.</p>
 <p class="toc_element">
   <code><a href="#list">list(profileId, advertiserId, name=None, pageToken=None, sortField=None, maxResults=None, active=None, sortOrder=None)</a></code></p>
-<p class="firstline">Retrieves a list of targetable remarketing lists, possibly filtered.</p>
+<p class="firstline">Retrieves a list of targetable remarketing lists, possibly filtered. This method supports paging.</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>
@@ -120,7 +120,7 @@
 
 <div class="method">
     <code class="details" id="list">list(profileId, advertiserId, name=None, pageToken=None, sortField=None, maxResults=None, active=None, sortOrder=None)</code>
-  <pre>Retrieves a list of targetable remarketing lists, possibly filtered.
+  <pre>Retrieves a list of targetable remarketing lists, possibly filtered. This method supports paging.
 
 Args:
   profileId: string, User profile ID associated with this request. (required)
diff --git a/docs/dyn/dfareporting_v2_5.userRoles.html b/docs/dyn/dfareporting_v2_5.userRoles.html
index 21fd511..70f20ea 100644
--- a/docs/dyn/dfareporting_v2_5.userRoles.html
+++ b/docs/dyn/dfareporting_v2_5.userRoles.html
@@ -85,7 +85,7 @@
 <p class="firstline">Inserts a new user role.</p>
 <p class="toc_element">
   <code><a href="#list">list(profileId, searchString=None, subaccountId=None, pageToken=None, ids=None, maxResults=None, accountUserRoleOnly=None, sortOrder=None, sortField=None)</a></code></p>
-<p class="firstline">Retrieves a list of user roles, possibly filtered.</p>
+<p class="firstline">Retrieves a list of user roles, possibly filtered. This method supports paging.</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>
@@ -191,7 +191,7 @@
 
 <div class="method">
     <code class="details" id="list">list(profileId, searchString=None, subaccountId=None, pageToken=None, ids=None, maxResults=None, accountUserRoleOnly=None, sortOrder=None, sortField=None)</code>
-  <pre>Retrieves a list of user roles, possibly filtered.
+  <pre>Retrieves a list of user roles, possibly filtered. This method supports paging.
 
 Args:
   profileId: string, User profile ID associated with this request. (required)
diff --git a/docs/dyn/dfareporting_v2_5beta1.accountUserProfiles.html b/docs/dyn/dfareporting_v2_5beta1.accountUserProfiles.html
index 61f339f..6ad07cd 100644
--- a/docs/dyn/dfareporting_v2_5beta1.accountUserProfiles.html
+++ b/docs/dyn/dfareporting_v2_5beta1.accountUserProfiles.html
@@ -82,7 +82,7 @@
 <p class="firstline">Inserts a new account user profile.</p>
 <p class="toc_element">
   <code><a href="#list">list(profileId, searchString=None, subaccountId=None, sortField=None, ids=None, maxResults=None, pageToken=None, sortOrder=None, userRoleId=None, active=None)</a></code></p>
-<p class="firstline">Retrieves a list of account user profiles, possibly filtered.</p>
+<p class="firstline">Retrieves a list of account user profiles, possibly filtered. This method supports paging.</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>
@@ -301,7 +301,7 @@
 
 <div class="method">
     <code class="details" id="list">list(profileId, searchString=None, subaccountId=None, sortField=None, ids=None, maxResults=None, pageToken=None, sortOrder=None, userRoleId=None, active=None)</code>
-  <pre>Retrieves a list of account user profiles, possibly filtered.
+  <pre>Retrieves a list of account user profiles, possibly filtered. This method supports paging.
 
 Args:
   profileId: string, User profile ID associated with this request. (required)
diff --git a/docs/dyn/dfareporting_v2_5beta1.accounts.html b/docs/dyn/dfareporting_v2_5beta1.accounts.html
index 0425606..67e0001 100644
--- a/docs/dyn/dfareporting_v2_5beta1.accounts.html
+++ b/docs/dyn/dfareporting_v2_5beta1.accounts.html
@@ -79,7 +79,7 @@
 <p class="firstline">Gets one account by ID.</p>
 <p class="toc_element">
   <code><a href="#list">list(profileId, searchString=None, sortField=None, ids=None, maxResults=None, pageToken=None, sortOrder=None, active=None)</a></code></p>
-<p class="firstline">Retrieves the list of accounts, possibly filtered.</p>
+<p class="firstline">Retrieves the list of accounts, possibly filtered. This method supports paging.</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>
@@ -217,7 +217,7 @@
 
 <div class="method">
     <code class="details" id="list">list(profileId, searchString=None, sortField=None, ids=None, maxResults=None, pageToken=None, sortOrder=None, active=None)</code>
-  <pre>Retrieves the list of accounts, possibly filtered.
+  <pre>Retrieves the list of accounts, possibly filtered. This method supports paging.
 
 Args:
   profileId: string, User profile ID associated with this request. (required)
diff --git a/docs/dyn/dfareporting_v2_5beta1.ads.html b/docs/dyn/dfareporting_v2_5beta1.ads.html
index 6cb5310..84e5785 100644
--- a/docs/dyn/dfareporting_v2_5beta1.ads.html
+++ b/docs/dyn/dfareporting_v2_5beta1.ads.html
@@ -82,7 +82,7 @@
 <p class="firstline">Inserts a new ad.</p>
 <p class="toc_element">
   <code><a href="#list">list(profileId, landingPageIds=None, overriddenEventTagId=None, campaignIds=None, sizeIds=None, archived=None, creativeOptimizationConfigurationIds=None, sslCompliant=None, pageToken=None, sortOrder=None, type=None, sslRequired=None, creativeIds=None, remarketingListIds=None, maxResults=None, creativeType=None, placementIds=None, active=None, compatibility=None, advertiserId=None, searchString=None, audienceSegmentIds=None, ids=None, sortField=None, dynamicClickTracker=None)</a></code></p>
-<p class="firstline">Retrieves a list of ads, possibly filtered.</p>
+<p class="firstline">Retrieves a list of ads, possibly filtered. This method supports paging.</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>
@@ -197,7 +197,7 @@
       ],
       "id": "A String", # ID of this ad. This is a read-only, auto-generated field.
       "accountId": "A String", # Account ID of this ad. This is a read-only field that can be left blank.
-      "archived": True or False, # Whether this ad is archived.
+      "archived": True or False, # Whether this ad is archived. When true, active must be false.
       "technologyTargeting": { # Technology Targeting. # Technology platform targeting information for this ad. This field must be left blank if the ad is using a targeting template. Applicable when type is AD_SERVING_STANDARD_AD.
         "platformTypes": [ # Platform types that this ad targets. For example, desktop, mobile, or tablet. For each platform type, only id is required, and the other fields are populated automatically when the ad is inserted or updated.
           { # Contains information about a platform type that can be targeted by ads.
@@ -381,7 +381,7 @@
         "time": "A String", # Timestamp of the last change in milliseconds since epoch.
       },
       "startTime": "A String", # Date and time that this ad should start serving. If creating an ad, this field must be a time in the future. This is a required field on insertion.
-      "active": True or False, # Whether this ad is active.
+      "active": True or False, # Whether this ad is active. When true, archived must be false.
       "compatibility": "A String", # Compatibility of this ad. Applicable when type is AD_SERVING_DEFAULT_AD. DISPLAY and DISPLAY_INTERSTITIAL refer to either rendering on desktop or on mobile devices or in mobile apps for regular or interstitial ads, respectively. APP and APP_INTERSTITIAL are only used for existing default ads. New mobile placements must be assigned DISPLAY or DISPLAY_INTERSTITIAL and default ads created for those placements will be limited to those compatibility types. IN_STREAM_VIDEO refers to rendering in-stream video ads developed with the VAST standard.
       "kind": "dfareporting#ad", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#ad".
       "subaccountId": "A String", # Subaccount ID of this ad. This is a read-only field that can be left blank.
@@ -530,7 +530,7 @@
     ],
     "id": "A String", # ID of this ad. This is a read-only, auto-generated field.
     "accountId": "A String", # Account ID of this ad. This is a read-only field that can be left blank.
-    "archived": True or False, # Whether this ad is archived.
+    "archived": True or False, # Whether this ad is archived. When true, active must be false.
     "technologyTargeting": { # Technology Targeting. # Technology platform targeting information for this ad. This field must be left blank if the ad is using a targeting template. Applicable when type is AD_SERVING_STANDARD_AD.
       "platformTypes": [ # Platform types that this ad targets. For example, desktop, mobile, or tablet. For each platform type, only id is required, and the other fields are populated automatically when the ad is inserted or updated.
         { # Contains information about a platform type that can be targeted by ads.
@@ -714,7 +714,7 @@
       "time": "A String", # Timestamp of the last change in milliseconds since epoch.
     },
     "startTime": "A String", # Date and time that this ad should start serving. If creating an ad, this field must be a time in the future. This is a required field on insertion.
-    "active": True or False, # Whether this ad is active.
+    "active": True or False, # Whether this ad is active. When true, archived must be false.
     "compatibility": "A String", # Compatibility of this ad. Applicable when type is AD_SERVING_DEFAULT_AD. DISPLAY and DISPLAY_INTERSTITIAL refer to either rendering on desktop or on mobile devices or in mobile apps for regular or interstitial ads, respectively. APP and APP_INTERSTITIAL are only used for existing default ads. New mobile placements must be assigned DISPLAY or DISPLAY_INTERSTITIAL and default ads created for those placements will be limited to those compatibility types. IN_STREAM_VIDEO refers to rendering in-stream video ads developed with the VAST standard.
     "kind": "dfareporting#ad", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#ad".
     "subaccountId": "A String", # Subaccount ID of this ad. This is a read-only field that can be left blank.
@@ -857,7 +857,7 @@
       ],
       "id": "A String", # ID of this ad. This is a read-only, auto-generated field.
       "accountId": "A String", # Account ID of this ad. This is a read-only field that can be left blank.
-      "archived": True or False, # Whether this ad is archived.
+      "archived": True or False, # Whether this ad is archived. When true, active must be false.
       "technologyTargeting": { # Technology Targeting. # Technology platform targeting information for this ad. This field must be left blank if the ad is using a targeting template. Applicable when type is AD_SERVING_STANDARD_AD.
         "platformTypes": [ # Platform types that this ad targets. For example, desktop, mobile, or tablet. For each platform type, only id is required, and the other fields are populated automatically when the ad is inserted or updated.
           { # Contains information about a platform type that can be targeted by ads.
@@ -1041,7 +1041,7 @@
         "time": "A String", # Timestamp of the last change in milliseconds since epoch.
       },
       "startTime": "A String", # Date and time that this ad should start serving. If creating an ad, this field must be a time in the future. This is a required field on insertion.
-      "active": True or False, # Whether this ad is active.
+      "active": True or False, # Whether this ad is active. When true, archived must be false.
       "compatibility": "A String", # Compatibility of this ad. Applicable when type is AD_SERVING_DEFAULT_AD. DISPLAY and DISPLAY_INTERSTITIAL refer to either rendering on desktop or on mobile devices or in mobile apps for regular or interstitial ads, respectively. APP and APP_INTERSTITIAL are only used for existing default ads. New mobile placements must be assigned DISPLAY or DISPLAY_INTERSTITIAL and default ads created for those placements will be limited to those compatibility types. IN_STREAM_VIDEO refers to rendering in-stream video ads developed with the VAST standard.
       "kind": "dfareporting#ad", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#ad".
       "subaccountId": "A String", # Subaccount ID of this ad. This is a read-only field that can be left blank.
@@ -1090,7 +1090,7 @@
 
 <div class="method">
     <code class="details" id="list">list(profileId, landingPageIds=None, overriddenEventTagId=None, campaignIds=None, sizeIds=None, archived=None, creativeOptimizationConfigurationIds=None, sslCompliant=None, pageToken=None, sortOrder=None, type=None, sslRequired=None, creativeIds=None, remarketingListIds=None, maxResults=None, creativeType=None, placementIds=None, active=None, compatibility=None, advertiserId=None, searchString=None, audienceSegmentIds=None, ids=None, sortField=None, dynamicClickTracker=None)</code>
-  <pre>Retrieves a list of ads, possibly filtered.
+  <pre>Retrieves a list of ads, possibly filtered. This method supports paging.
 
 Args:
   profileId: string, User profile ID associated with this request. (required)
@@ -1261,7 +1261,7 @@
           ],
           "id": "A String", # ID of this ad. This is a read-only, auto-generated field.
           "accountId": "A String", # Account ID of this ad. This is a read-only field that can be left blank.
-          "archived": True or False, # Whether this ad is archived.
+          "archived": True or False, # Whether this ad is archived. When true, active must be false.
           "technologyTargeting": { # Technology Targeting. # Technology platform targeting information for this ad. This field must be left blank if the ad is using a targeting template. Applicable when type is AD_SERVING_STANDARD_AD.
             "platformTypes": [ # Platform types that this ad targets. For example, desktop, mobile, or tablet. For each platform type, only id is required, and the other fields are populated automatically when the ad is inserted or updated.
               { # Contains information about a platform type that can be targeted by ads.
@@ -1445,7 +1445,7 @@
             "time": "A String", # Timestamp of the last change in milliseconds since epoch.
           },
           "startTime": "A String", # Date and time that this ad should start serving. If creating an ad, this field must be a time in the future. This is a required field on insertion.
-          "active": True or False, # Whether this ad is active.
+          "active": True or False, # Whether this ad is active. When true, archived must be false.
           "compatibility": "A String", # Compatibility of this ad. Applicable when type is AD_SERVING_DEFAULT_AD. DISPLAY and DISPLAY_INTERSTITIAL refer to either rendering on desktop or on mobile devices or in mobile apps for regular or interstitial ads, respectively. APP and APP_INTERSTITIAL are only used for existing default ads. New mobile placements must be assigned DISPLAY or DISPLAY_INTERSTITIAL and default ads created for those placements will be limited to those compatibility types. IN_STREAM_VIDEO refers to rendering in-stream video ads developed with the VAST standard.
           "kind": "dfareporting#ad", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#ad".
           "subaccountId": "A String", # Subaccount ID of this ad. This is a read-only field that can be left blank.
@@ -1611,7 +1611,7 @@
     ],
     "id": "A String", # ID of this ad. This is a read-only, auto-generated field.
     "accountId": "A String", # Account ID of this ad. This is a read-only field that can be left blank.
-    "archived": True or False, # Whether this ad is archived.
+    "archived": True or False, # Whether this ad is archived. When true, active must be false.
     "technologyTargeting": { # Technology Targeting. # Technology platform targeting information for this ad. This field must be left blank if the ad is using a targeting template. Applicable when type is AD_SERVING_STANDARD_AD.
       "platformTypes": [ # Platform types that this ad targets. For example, desktop, mobile, or tablet. For each platform type, only id is required, and the other fields are populated automatically when the ad is inserted or updated.
         { # Contains information about a platform type that can be targeted by ads.
@@ -1795,7 +1795,7 @@
       "time": "A String", # Timestamp of the last change in milliseconds since epoch.
     },
     "startTime": "A String", # Date and time that this ad should start serving. If creating an ad, this field must be a time in the future. This is a required field on insertion.
-    "active": True or False, # Whether this ad is active.
+    "active": True or False, # Whether this ad is active. When true, archived must be false.
     "compatibility": "A String", # Compatibility of this ad. Applicable when type is AD_SERVING_DEFAULT_AD. DISPLAY and DISPLAY_INTERSTITIAL refer to either rendering on desktop or on mobile devices or in mobile apps for regular or interstitial ads, respectively. APP and APP_INTERSTITIAL are only used for existing default ads. New mobile placements must be assigned DISPLAY or DISPLAY_INTERSTITIAL and default ads created for those placements will be limited to those compatibility types. IN_STREAM_VIDEO refers to rendering in-stream video ads developed with the VAST standard.
     "kind": "dfareporting#ad", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#ad".
     "subaccountId": "A String", # Subaccount ID of this ad. This is a read-only field that can be left blank.
@@ -1938,7 +1938,7 @@
       ],
       "id": "A String", # ID of this ad. This is a read-only, auto-generated field.
       "accountId": "A String", # Account ID of this ad. This is a read-only field that can be left blank.
-      "archived": True or False, # Whether this ad is archived.
+      "archived": True or False, # Whether this ad is archived. When true, active must be false.
       "technologyTargeting": { # Technology Targeting. # Technology platform targeting information for this ad. This field must be left blank if the ad is using a targeting template. Applicable when type is AD_SERVING_STANDARD_AD.
         "platformTypes": [ # Platform types that this ad targets. For example, desktop, mobile, or tablet. For each platform type, only id is required, and the other fields are populated automatically when the ad is inserted or updated.
           { # Contains information about a platform type that can be targeted by ads.
@@ -2122,7 +2122,7 @@
         "time": "A String", # Timestamp of the last change in milliseconds since epoch.
       },
       "startTime": "A String", # Date and time that this ad should start serving. If creating an ad, this field must be a time in the future. This is a required field on insertion.
-      "active": True or False, # Whether this ad is active.
+      "active": True or False, # Whether this ad is active. When true, archived must be false.
       "compatibility": "A String", # Compatibility of this ad. Applicable when type is AD_SERVING_DEFAULT_AD. DISPLAY and DISPLAY_INTERSTITIAL refer to either rendering on desktop or on mobile devices or in mobile apps for regular or interstitial ads, respectively. APP and APP_INTERSTITIAL are only used for existing default ads. New mobile placements must be assigned DISPLAY or DISPLAY_INTERSTITIAL and default ads created for those placements will be limited to those compatibility types. IN_STREAM_VIDEO refers to rendering in-stream video ads developed with the VAST standard.
       "kind": "dfareporting#ad", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#ad".
       "subaccountId": "A String", # Subaccount ID of this ad. This is a read-only field that can be left blank.
@@ -2271,7 +2271,7 @@
     ],
     "id": "A String", # ID of this ad. This is a read-only, auto-generated field.
     "accountId": "A String", # Account ID of this ad. This is a read-only field that can be left blank.
-    "archived": True or False, # Whether this ad is archived.
+    "archived": True or False, # Whether this ad is archived. When true, active must be false.
     "technologyTargeting": { # Technology Targeting. # Technology platform targeting information for this ad. This field must be left blank if the ad is using a targeting template. Applicable when type is AD_SERVING_STANDARD_AD.
       "platformTypes": [ # Platform types that this ad targets. For example, desktop, mobile, or tablet. For each platform type, only id is required, and the other fields are populated automatically when the ad is inserted or updated.
         { # Contains information about a platform type that can be targeted by ads.
@@ -2455,7 +2455,7 @@
       "time": "A String", # Timestamp of the last change in milliseconds since epoch.
     },
     "startTime": "A String", # Date and time that this ad should start serving. If creating an ad, this field must be a time in the future. This is a required field on insertion.
-    "active": True or False, # Whether this ad is active.
+    "active": True or False, # Whether this ad is active. When true, archived must be false.
     "compatibility": "A String", # Compatibility of this ad. Applicable when type is AD_SERVING_DEFAULT_AD. DISPLAY and DISPLAY_INTERSTITIAL refer to either rendering on desktop or on mobile devices or in mobile apps for regular or interstitial ads, respectively. APP and APP_INTERSTITIAL are only used for existing default ads. New mobile placements must be assigned DISPLAY or DISPLAY_INTERSTITIAL and default ads created for those placements will be limited to those compatibility types. IN_STREAM_VIDEO refers to rendering in-stream video ads developed with the VAST standard.
     "kind": "dfareporting#ad", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#ad".
     "subaccountId": "A String", # Subaccount ID of this ad. This is a read-only field that can be left blank.
@@ -2598,7 +2598,7 @@
       ],
       "id": "A String", # ID of this ad. This is a read-only, auto-generated field.
       "accountId": "A String", # Account ID of this ad. This is a read-only field that can be left blank.
-      "archived": True or False, # Whether this ad is archived.
+      "archived": True or False, # Whether this ad is archived. When true, active must be false.
       "technologyTargeting": { # Technology Targeting. # Technology platform targeting information for this ad. This field must be left blank if the ad is using a targeting template. Applicable when type is AD_SERVING_STANDARD_AD.
         "platformTypes": [ # Platform types that this ad targets. For example, desktop, mobile, or tablet. For each platform type, only id is required, and the other fields are populated automatically when the ad is inserted or updated.
           { # Contains information about a platform type that can be targeted by ads.
@@ -2782,7 +2782,7 @@
         "time": "A String", # Timestamp of the last change in milliseconds since epoch.
       },
       "startTime": "A String", # Date and time that this ad should start serving. If creating an ad, this field must be a time in the future. This is a required field on insertion.
-      "active": True or False, # Whether this ad is active.
+      "active": True or False, # Whether this ad is active. When true, archived must be false.
       "compatibility": "A String", # Compatibility of this ad. Applicable when type is AD_SERVING_DEFAULT_AD. DISPLAY and DISPLAY_INTERSTITIAL refer to either rendering on desktop or on mobile devices or in mobile apps for regular or interstitial ads, respectively. APP and APP_INTERSTITIAL are only used for existing default ads. New mobile placements must be assigned DISPLAY or DISPLAY_INTERSTITIAL and default ads created for those placements will be limited to those compatibility types. IN_STREAM_VIDEO refers to rendering in-stream video ads developed with the VAST standard.
       "kind": "dfareporting#ad", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#ad".
       "subaccountId": "A String", # Subaccount ID of this ad. This is a read-only field that can be left blank.
diff --git a/docs/dyn/dfareporting_v2_5beta1.advertiserGroups.html b/docs/dyn/dfareporting_v2_5beta1.advertiserGroups.html
index 6e166c2..0a5d97b 100644
--- a/docs/dyn/dfareporting_v2_5beta1.advertiserGroups.html
+++ b/docs/dyn/dfareporting_v2_5beta1.advertiserGroups.html
@@ -85,7 +85,7 @@
 <p class="firstline">Inserts a new advertiser group.</p>
 <p class="toc_element">
   <code><a href="#list">list(profileId, searchString=None, pageToken=None, sortField=None, ids=None, maxResults=None, sortOrder=None)</a></code></p>
-<p class="firstline">Retrieves a list of advertiser groups, possibly filtered.</p>
+<p class="firstline">Retrieves a list of advertiser groups, possibly filtered. This method supports paging.</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>
@@ -155,7 +155,7 @@
 
 <div class="method">
     <code class="details" id="list">list(profileId, searchString=None, pageToken=None, sortField=None, ids=None, maxResults=None, sortOrder=None)</code>
-  <pre>Retrieves a list of advertiser groups, possibly filtered.
+  <pre>Retrieves a list of advertiser groups, possibly filtered. This method supports paging.
 
 Args:
   profileId: string, User profile ID associated with this request. (required)
diff --git a/docs/dyn/dfareporting_v2_5beta1.advertisers.html b/docs/dyn/dfareporting_v2_5beta1.advertisers.html
index f457eaf..1eb4728 100644
--- a/docs/dyn/dfareporting_v2_5beta1.advertisers.html
+++ b/docs/dyn/dfareporting_v2_5beta1.advertisers.html
@@ -82,7 +82,7 @@
 <p class="firstline">Inserts a new advertiser.</p>
 <p class="toc_element">
   <code><a href="#list">list(profileId, includeAdvertisersWithoutGroupsOnly=None, onlyParent=None, pageToken=None, sortOrder=None, status=None, maxResults=None, advertiserGroupIds=None, searchString=None, subaccountId=None, ids=None, floodlightConfigurationIds=None, sortField=None)</a></code></p>
-<p class="firstline">Retrieves a list of advertisers, possibly filtered.</p>
+<p class="firstline">Retrieves a list of advertisers, possibly filtered. This method supports paging.</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>
@@ -223,7 +223,7 @@
 
 <div class="method">
     <code class="details" id="list">list(profileId, includeAdvertisersWithoutGroupsOnly=None, onlyParent=None, pageToken=None, sortOrder=None, status=None, maxResults=None, advertiserGroupIds=None, searchString=None, subaccountId=None, ids=None, floodlightConfigurationIds=None, sortField=None)</code>
-  <pre>Retrieves a list of advertisers, possibly filtered.
+  <pre>Retrieves a list of advertisers, possibly filtered. This method supports paging.
 
 Args:
   profileId: string, User profile ID associated with this request. (required)
diff --git a/docs/dyn/dfareporting_v2_5beta1.campaignCreativeAssociations.html b/docs/dyn/dfareporting_v2_5beta1.campaignCreativeAssociations.html
index 471cd2d..d39c9a9 100644
--- a/docs/dyn/dfareporting_v2_5beta1.campaignCreativeAssociations.html
+++ b/docs/dyn/dfareporting_v2_5beta1.campaignCreativeAssociations.html
@@ -79,7 +79,7 @@
 <p class="firstline">Associates a creative with the specified campaign. This method creates a default ad with dimensions matching the creative in the campaign if such a default ad does not exist already.</p>
 <p class="toc_element">
   <code><a href="#list">list(profileId, campaignId, maxResults=None, pageToken=None, sortOrder=None)</a></code></p>
-<p class="firstline">Retrieves the list of creative IDs associated with the specified campaign.</p>
+<p class="firstline">Retrieves the list of creative IDs associated with the specified campaign. This method supports paging.</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>
@@ -111,7 +111,7 @@
 
 <div class="method">
     <code class="details" id="list">list(profileId, campaignId, maxResults=None, pageToken=None, sortOrder=None)</code>
-  <pre>Retrieves the list of creative IDs associated with the specified campaign.
+  <pre>Retrieves the list of creative IDs associated with the specified campaign. This method supports paging.
 
 Args:
   profileId: string, User profile ID associated with this request. (required)
diff --git a/docs/dyn/dfareporting_v2_5beta1.campaigns.html b/docs/dyn/dfareporting_v2_5beta1.campaigns.html
index d73ed76..eb974fa 100644
--- a/docs/dyn/dfareporting_v2_5beta1.campaigns.html
+++ b/docs/dyn/dfareporting_v2_5beta1.campaigns.html
@@ -82,7 +82,7 @@
 <p class="firstline">Inserts a new campaign.</p>
 <p class="toc_element">
   <code><a href="#list">list(profileId, overriddenEventTagId=None, archived=None, advertiserIds=None, pageToken=None, sortOrder=None, maxResults=None, excludedIds=None, advertiserGroupIds=None, searchString=None, subaccountId=None, ids=None, sortField=None, atLeastOneOptimizationActivity=None)</a></code></p>
-<p class="firstline">Retrieves a list of campaigns, possibly filtered.</p>
+<p class="firstline">Retrieves a list of campaigns, possibly filtered. This method supports paging.</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>
@@ -474,7 +474,7 @@
 
 <div class="method">
     <code class="details" id="list">list(profileId, overriddenEventTagId=None, archived=None, advertiserIds=None, pageToken=None, sortOrder=None, maxResults=None, excludedIds=None, advertiserGroupIds=None, searchString=None, subaccountId=None, ids=None, sortField=None, atLeastOneOptimizationActivity=None)</code>
-  <pre>Retrieves a list of campaigns, possibly filtered.
+  <pre>Retrieves a list of campaigns, possibly filtered. This method supports paging.
 
 Args:
   profileId: string, User profile ID associated with this request. (required)
diff --git a/docs/dyn/dfareporting_v2_5beta1.changeLogs.html b/docs/dyn/dfareporting_v2_5beta1.changeLogs.html
index 6e41f96..aeff6b6 100644
--- a/docs/dyn/dfareporting_v2_5beta1.changeLogs.html
+++ b/docs/dyn/dfareporting_v2_5beta1.changeLogs.html
@@ -79,7 +79,7 @@
 <p class="firstline">Gets one change log by ID.</p>
 <p class="toc_element">
   <code><a href="#list">list(profileId, objectType=None, maxChangeTime=None, pageToken=None, maxResults=None, action=None, minChangeTime=None, searchString=None, userProfileIds=None, ids=None, objectIds=None)</a></code></p>
-<p class="firstline">Retrieves a list of change logs.</p>
+<p class="firstline">Retrieves a list of change logs. This method supports paging.</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>
@@ -115,7 +115,7 @@
 
 <div class="method">
     <code class="details" id="list">list(profileId, objectType=None, maxChangeTime=None, pageToken=None, maxResults=None, action=None, minChangeTime=None, searchString=None, userProfileIds=None, ids=None, objectIds=None)</code>
-  <pre>Retrieves a list of change logs.
+  <pre>Retrieves a list of change logs. This method supports paging.
 
 Args:
   profileId: string, User profile ID associated with this request. (required)
@@ -153,6 +153,7 @@
       OBJECT_REMARKETING_LIST - 
       OBJECT_RICHMEDIA_CREATIVE - 
       OBJECT_SD_SITE - 
+      OBJECT_SEARCH_LIFT_STUDY - 
       OBJECT_SIZE - 
       OBJECT_SUBACCOUNT - 
       OBJECT_TARGETING_TEMPLATE - 
diff --git a/docs/dyn/dfareporting_v2_5beta1.contentCategories.html b/docs/dyn/dfareporting_v2_5beta1.contentCategories.html
index b6a9889..0c8632a 100644
--- a/docs/dyn/dfareporting_v2_5beta1.contentCategories.html
+++ b/docs/dyn/dfareporting_v2_5beta1.contentCategories.html
@@ -85,7 +85,7 @@
 <p class="firstline">Inserts a new content category.</p>
 <p class="toc_element">
   <code><a href="#list">list(profileId, searchString=None, pageToken=None, sortField=None, ids=None, maxResults=None, sortOrder=None)</a></code></p>
-<p class="firstline">Retrieves a list of content categories, possibly filtered.</p>
+<p class="firstline">Retrieves a list of content categories, possibly filtered. This method supports paging.</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>
@@ -155,7 +155,7 @@
 
 <div class="method">
     <code class="details" id="list">list(profileId, searchString=None, pageToken=None, sortField=None, ids=None, maxResults=None, sortOrder=None)</code>
-  <pre>Retrieves a list of content categories, possibly filtered.
+  <pre>Retrieves a list of content categories, possibly filtered. This method supports paging.
 
 Args:
   profileId: string, User profile ID associated with this request. (required)
diff --git a/docs/dyn/dfareporting_v2_5beta1.conversions.html b/docs/dyn/dfareporting_v2_5beta1.conversions.html
index 10fabe0..4b224d8 100644
--- a/docs/dyn/dfareporting_v2_5beta1.conversions.html
+++ b/docs/dyn/dfareporting_v2_5beta1.conversions.html
@@ -104,7 +104,7 @@
         ],
         "floodlightConfigurationId": "A String", # Floodlight Configuration ID of this conversion. This is a required field.
         "value": 3.14, # The value of the conversion.
-        "limitAdTracking": True or False, # Whether the user has Limit Ad Tracking set.
+        "limitAdTracking": True or False, # Whether Limit Ad Tracking is enabled. When set to true, the conversion will be used for reporting but not targeting. This will prevent remarketing.
         "quantity": "A String", # The quantity of the conversion.
         "floodlightActivityId": "A String", # Floodlight Activity ID of this conversion. This is a required field.
         "mobileDeviceId": "A String", # The mobile device ID. This field is mutually exclusive with encryptedUserId and encryptedUserIdCandidates[]. This or encryptedUserId or encryptedUserIdCandidates[] is a required field.
@@ -141,7 +141,7 @@
           ],
           "floodlightConfigurationId": "A String", # Floodlight Configuration ID of this conversion. This is a required field.
           "value": 3.14, # The value of the conversion.
-          "limitAdTracking": True or False, # Whether the user has Limit Ad Tracking set.
+          "limitAdTracking": True or False, # Whether Limit Ad Tracking is enabled. When set to true, the conversion will be used for reporting but not targeting. This will prevent remarketing.
           "quantity": "A String", # The quantity of the conversion.
           "floodlightActivityId": "A String", # Floodlight Activity ID of this conversion. This is a required field.
           "mobileDeviceId": "A String", # The mobile device ID. This field is mutually exclusive with encryptedUserId and encryptedUserIdCandidates[]. This or encryptedUserId or encryptedUserIdCandidates[] is a required field.
diff --git a/docs/dyn/dfareporting_v2_5beta1.creativeAssets.html b/docs/dyn/dfareporting_v2_5beta1.creativeAssets.html
index 5f7bfd1..37c71c6 100644
--- a/docs/dyn/dfareporting_v2_5beta1.creativeAssets.html
+++ b/docs/dyn/dfareporting_v2_5beta1.creativeAssets.html
@@ -75,11 +75,11 @@
 <h1><a href="dfareporting_v2_5beta1.html">DCM/DFA Reporting And Trafficking API</a> . <a href="dfareporting_v2_5beta1.creativeAssets.html">creativeAssets</a></h1>
 <h2>Instance Methods</h2>
 <p class="toc_element">
-  <code><a href="#insert">insert(profileId, advertiserId, body=None, media_body=None)</a></code></p>
+  <code><a href="#insert">insert(profileId, advertiserId, body=None, media_body=None, media_mime_type=None)</a></code></p>
 <p class="firstline">Inserts a new creative asset.</p>
 <h3>Method Details</h3>
 <div class="method">
-    <code class="details" id="insert">insert(profileId, advertiserId, body=None, media_body=None)</code>
+    <code class="details" id="insert">insert(profileId, advertiserId, body=None, media_body=None, media_mime_type=None)</code>
   <pre>Inserts a new creative asset.
 
 Args:
@@ -136,6 +136,7 @@
   }
 
   media_body: string, The filename of the media request body, or an instance of a MediaUpload object.
+  media_mime_type: string, The MIME type of the media request body, or an instance of a MediaUpload object.
 
 Returns:
   An object of the form:
diff --git a/docs/dyn/dfareporting_v2_5beta1.creativeFieldValues.html b/docs/dyn/dfareporting_v2_5beta1.creativeFieldValues.html
index 62bff66..f3ca225 100644
--- a/docs/dyn/dfareporting_v2_5beta1.creativeFieldValues.html
+++ b/docs/dyn/dfareporting_v2_5beta1.creativeFieldValues.html
@@ -85,7 +85,7 @@
 <p class="firstline">Inserts a new creative field value.</p>
 <p class="toc_element">
   <code><a href="#list">list(profileId, creativeFieldId, searchString=None, sortField=None, ids=None, maxResults=None, pageToken=None, sortOrder=None)</a></code></p>
-<p class="firstline">Retrieves a list of creative field values, possibly filtered.</p>
+<p class="firstline">Retrieves a list of creative field values, possibly filtered. This method supports paging.</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>
@@ -155,7 +155,7 @@
 
 <div class="method">
     <code class="details" id="list">list(profileId, creativeFieldId, searchString=None, sortField=None, ids=None, maxResults=None, pageToken=None, sortOrder=None)</code>
-  <pre>Retrieves a list of creative field values, possibly filtered.
+  <pre>Retrieves a list of creative field values, possibly filtered. This method supports paging.
 
 Args:
   profileId: string, User profile ID associated with this request. (required)
diff --git a/docs/dyn/dfareporting_v2_5beta1.creativeFields.html b/docs/dyn/dfareporting_v2_5beta1.creativeFields.html
index 2d3506a..63054f6 100644
--- a/docs/dyn/dfareporting_v2_5beta1.creativeFields.html
+++ b/docs/dyn/dfareporting_v2_5beta1.creativeFields.html
@@ -85,7 +85,7 @@
 <p class="firstline">Inserts a new creative field.</p>
 <p class="toc_element">
   <code><a href="#list">list(profileId, searchString=None, pageToken=None, sortField=None, advertiserIds=None, ids=None, maxResults=None, sortOrder=None)</a></code></p>
-<p class="firstline">Retrieves a list of creative fields, possibly filtered.</p>
+<p class="firstline">Retrieves a list of creative fields, possibly filtered. This method supports paging.</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>
@@ -185,7 +185,7 @@
 
 <div class="method">
     <code class="details" id="list">list(profileId, searchString=None, pageToken=None, sortField=None, advertiserIds=None, ids=None, maxResults=None, sortOrder=None)</code>
-  <pre>Retrieves a list of creative fields, possibly filtered.
+  <pre>Retrieves a list of creative fields, possibly filtered. This method supports paging.
 
 Args:
   profileId: string, User profile ID associated with this request. (required)
diff --git a/docs/dyn/dfareporting_v2_5beta1.creativeGroups.html b/docs/dyn/dfareporting_v2_5beta1.creativeGroups.html
index e902f81..11e2704 100644
--- a/docs/dyn/dfareporting_v2_5beta1.creativeGroups.html
+++ b/docs/dyn/dfareporting_v2_5beta1.creativeGroups.html
@@ -82,7 +82,7 @@
 <p class="firstline">Inserts a new creative group.</p>
 <p class="toc_element">
   <code><a href="#list">list(profileId, searchString=None, pageToken=None, sortField=None, advertiserIds=None, groupNumber=None, maxResults=None, ids=None, sortOrder=None)</a></code></p>
-<p class="firstline">Retrieves a list of creative groups, possibly filtered.</p>
+<p class="firstline">Retrieves a list of creative groups, possibly filtered. This method supports paging.</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>
@@ -184,7 +184,7 @@
 
 <div class="method">
     <code class="details" id="list">list(profileId, searchString=None, pageToken=None, sortField=None, advertiserIds=None, groupNumber=None, maxResults=None, ids=None, sortOrder=None)</code>
-  <pre>Retrieves a list of creative groups, possibly filtered.
+  <pre>Retrieves a list of creative groups, possibly filtered. This method supports paging.
 
 Args:
   profileId: string, User profile ID associated with this request. (required)
diff --git a/docs/dyn/dfareporting_v2_5beta1.creatives.html b/docs/dyn/dfareporting_v2_5beta1.creatives.html
index 3786294..f14f352 100644
--- a/docs/dyn/dfareporting_v2_5beta1.creatives.html
+++ b/docs/dyn/dfareporting_v2_5beta1.creatives.html
@@ -82,7 +82,7 @@
 <p class="firstline">Inserts a new creative.</p>
 <p class="toc_element">
   <code><a href="#list">list(profileId, campaignId=None, advertiserId=None, sizeIds=None, archived=None, pageToken=None, sortOrder=None, renderingIds=None, maxResults=None, active=None, companionCreativeIds=None, types=None, searchString=None, ids=None, studioCreativeId=None, sortField=None, creativeFieldIds=None)</a></code></p>
-<p class="firstline">Retrieves a list of creatives, possibly filtered.</p>
+<p class="firstline">Retrieves a list of creatives, possibly filtered. This method supports paging.</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>
@@ -1120,7 +1120,7 @@
 
 <div class="method">
     <code class="details" id="list">list(profileId, campaignId=None, advertiserId=None, sizeIds=None, archived=None, pageToken=None, sortOrder=None, renderingIds=None, maxResults=None, active=None, companionCreativeIds=None, types=None, searchString=None, ids=None, studioCreativeId=None, sortField=None, creativeFieldIds=None)</code>
-  <pre>Retrieves a list of creatives, possibly filtered.
+  <pre>Retrieves a list of creatives, possibly filtered. This method supports paging.
 
 Args:
   profileId: string, User profile ID associated with this request. (required)
diff --git a/docs/dyn/dfareporting_v2_5beta1.directorySiteContacts.html b/docs/dyn/dfareporting_v2_5beta1.directorySiteContacts.html
index 3b538b5..09c311f 100644
--- a/docs/dyn/dfareporting_v2_5beta1.directorySiteContacts.html
+++ b/docs/dyn/dfareporting_v2_5beta1.directorySiteContacts.html
@@ -79,7 +79,7 @@
 <p class="firstline">Gets one directory site contact by ID.</p>
 <p class="toc_element">
   <code><a href="#list">list(profileId, searchString=None, directorySiteIds=None, pageToken=None, sortField=None, ids=None, maxResults=None, sortOrder=None)</a></code></p>
-<p class="firstline">Retrieves a list of directory site contacts, possibly filtered.</p>
+<p class="firstline">Retrieves a list of directory site contacts, possibly filtered. This method supports paging.</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>
@@ -111,7 +111,7 @@
 
 <div class="method">
     <code class="details" id="list">list(profileId, searchString=None, directorySiteIds=None, pageToken=None, sortField=None, ids=None, maxResults=None, sortOrder=None)</code>
-  <pre>Retrieves a list of directory site contacts, possibly filtered.
+  <pre>Retrieves a list of directory site contacts, possibly filtered. This method supports paging.
 
 Args:
   profileId: string, User profile ID associated with this request. (required)
diff --git a/docs/dyn/dfareporting_v2_5beta1.directorySites.html b/docs/dyn/dfareporting_v2_5beta1.directorySites.html
index cade187..9d686de 100644
--- a/docs/dyn/dfareporting_v2_5beta1.directorySites.html
+++ b/docs/dyn/dfareporting_v2_5beta1.directorySites.html
@@ -82,7 +82,7 @@
 <p class="firstline">Inserts a new directory site.</p>
 <p class="toc_element">
   <code><a href="#list">list(profileId, countryId=None, acceptsInStreamVideoPlacements=None, pageToken=None, sortOrder=None, parentId=None, acceptsPublisherPaidPlacements=None, acceptsInterstitialPlacements=None, maxResults=None, active=None, searchString=None, sortField=None, ids=None, dfp_network_code=None)</a></code></p>
-<p class="firstline">Retrieves a list of directory sites, possibly filtered.</p>
+<p class="firstline">Retrieves a list of directory sites, possibly filtered. This method supports paging.</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>
@@ -433,7 +433,7 @@
 
 <div class="method">
     <code class="details" id="list">list(profileId, countryId=None, acceptsInStreamVideoPlacements=None, pageToken=None, sortOrder=None, parentId=None, acceptsPublisherPaidPlacements=None, acceptsInterstitialPlacements=None, maxResults=None, active=None, searchString=None, sortField=None, ids=None, dfp_network_code=None)</code>
-  <pre>Retrieves a list of directory sites, possibly filtered.
+  <pre>Retrieves a list of directory sites, possibly filtered. This method supports paging.
 
 Args:
   profileId: string, User profile ID associated with this request. (required)
diff --git a/docs/dyn/dfareporting_v2_5beta1.floodlightActivities.html b/docs/dyn/dfareporting_v2_5beta1.floodlightActivities.html
index b402799..bacb540 100644
--- a/docs/dyn/dfareporting_v2_5beta1.floodlightActivities.html
+++ b/docs/dyn/dfareporting_v2_5beta1.floodlightActivities.html
@@ -88,7 +88,7 @@
 <p class="firstline">Inserts a new floodlight activity.</p>
 <p class="toc_element">
   <code><a href="#list">list(profileId, floodlightActivityGroupName=None, advertiserId=None, tagString=None, floodlightActivityGroupTagString=None, floodlightActivityGroupIds=None, pageToken=None, sortOrder=None, maxResults=None, searchString=None, sortField=None, floodlightConfigurationId=None, ids=None, floodlightActivityGroupType=None)</a></code></p>
-<p class="firstline">Retrieves a list of floodlight activities, possibly filtered.</p>
+<p class="firstline">Retrieves a list of floodlight activities, possibly filtered. This method supports paging.</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>
@@ -457,7 +457,7 @@
 
 <div class="method">
     <code class="details" id="list">list(profileId, floodlightActivityGroupName=None, advertiserId=None, tagString=None, floodlightActivityGroupTagString=None, floodlightActivityGroupIds=None, pageToken=None, sortOrder=None, maxResults=None, searchString=None, sortField=None, floodlightConfigurationId=None, ids=None, floodlightActivityGroupType=None)</code>
-  <pre>Retrieves a list of floodlight activities, possibly filtered.
+  <pre>Retrieves a list of floodlight activities, possibly filtered. This method supports paging.
 
 Args:
   profileId: string, User profile ID associated with this request. (required)
diff --git a/docs/dyn/dfareporting_v2_5beta1.floodlightActivityGroups.html b/docs/dyn/dfareporting_v2_5beta1.floodlightActivityGroups.html
index 0513a9f..9ceef2f 100644
--- a/docs/dyn/dfareporting_v2_5beta1.floodlightActivityGroups.html
+++ b/docs/dyn/dfareporting_v2_5beta1.floodlightActivityGroups.html
@@ -82,7 +82,7 @@
 <p class="firstline">Inserts a new floodlight activity group.</p>
 <p class="toc_element">
   <code><a href="#list">list(profileId, advertiserId=None, searchString=None, pageToken=None, sortField=None, floodlightConfigurationId=None, ids=None, maxResults=None, sortOrder=None, type=None)</a></code></p>
-<p class="firstline">Retrieves a list of floodlight activity groups, possibly filtered.</p>
+<p class="firstline">Retrieves a list of floodlight activity groups, possibly filtered. This method supports paging.</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>
@@ -229,7 +229,7 @@
 
 <div class="method">
     <code class="details" id="list">list(profileId, advertiserId=None, searchString=None, pageToken=None, sortField=None, floodlightConfigurationId=None, ids=None, maxResults=None, sortOrder=None, type=None)</code>
-  <pre>Retrieves a list of floodlight activity groups, possibly filtered.
+  <pre>Retrieves a list of floodlight activity groups, possibly filtered. This method supports paging.
 
 Args:
   profileId: string, User profile ID associated with this request. (required)
diff --git a/docs/dyn/dfareporting_v2_5beta1.inventoryItems.html b/docs/dyn/dfareporting_v2_5beta1.inventoryItems.html
index c16a194..8546b1e 100644
--- a/docs/dyn/dfareporting_v2_5beta1.inventoryItems.html
+++ b/docs/dyn/dfareporting_v2_5beta1.inventoryItems.html
@@ -79,7 +79,7 @@
 <p class="firstline">Gets one inventory item by ID.</p>
 <p class="toc_element">
   <code><a href="#list">list(profileId, projectId, pageToken=None, inPlan=None, sortOrder=None, type=None, orderId=None, maxResults=None, siteId=None, sortField=None, ids=None)</a></code></p>
-<p class="firstline">Retrieves a list of inventory items, possibly filtered.</p>
+<p class="firstline">Retrieves a list of inventory items, possibly filtered. This method supports paging.</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>
@@ -149,7 +149,7 @@
 
 <div class="method">
     <code class="details" id="list">list(profileId, projectId, pageToken=None, inPlan=None, sortOrder=None, type=None, orderId=None, maxResults=None, siteId=None, sortField=None, ids=None)</code>
-  <pre>Retrieves a list of inventory items, possibly filtered.
+  <pre>Retrieves a list of inventory items, possibly filtered. This method supports paging.
 
 Args:
   profileId: string, User profile ID associated with this request. (required)
diff --git a/docs/dyn/dfareporting_v2_5beta1.orderDocuments.html b/docs/dyn/dfareporting_v2_5beta1.orderDocuments.html
index 9813a90..8765efe 100644
--- a/docs/dyn/dfareporting_v2_5beta1.orderDocuments.html
+++ b/docs/dyn/dfareporting_v2_5beta1.orderDocuments.html
@@ -79,7 +79,7 @@
 <p class="firstline">Gets one order document by ID.</p>
 <p class="toc_element">
   <code><a href="#list">list(profileId, projectId, pageToken=None, sortOrder=None, orderId=None, maxResults=None, siteId=None, approved=None, searchString=None, sortField=None, ids=None)</a></code></p>
-<p class="firstline">Retrieves a list of order documents, possibly filtered.</p>
+<p class="firstline">Retrieves a list of order documents, possibly filtered. This method supports paging.</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>
@@ -125,7 +125,7 @@
 
 <div class="method">
     <code class="details" id="list">list(profileId, projectId, pageToken=None, sortOrder=None, orderId=None, maxResults=None, siteId=None, approved=None, searchString=None, sortField=None, ids=None)</code>
-  <pre>Retrieves a list of order documents, possibly filtered.
+  <pre>Retrieves a list of order documents, possibly filtered. This method supports paging.
 
 Args:
   profileId: string, User profile ID associated with this request. (required)
diff --git a/docs/dyn/dfareporting_v2_5beta1.orders.html b/docs/dyn/dfareporting_v2_5beta1.orders.html
index 7a3e870..4009c19 100644
--- a/docs/dyn/dfareporting_v2_5beta1.orders.html
+++ b/docs/dyn/dfareporting_v2_5beta1.orders.html
@@ -79,7 +79,7 @@
 <p class="firstline">Gets one order by ID.</p>
 <p class="toc_element">
   <code><a href="#list">list(profileId, projectId, searchString=None, pageToken=None, sortField=None, ids=None, maxResults=None, sortOrder=None, siteId=None)</a></code></p>
-<p class="firstline">Retrieves a list of orders, possibly filtered.</p>
+<p class="firstline">Retrieves a list of orders, possibly filtered. This method supports paging.</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>
@@ -138,7 +138,7 @@
 
 <div class="method">
     <code class="details" id="list">list(profileId, projectId, searchString=None, pageToken=None, sortField=None, ids=None, maxResults=None, sortOrder=None, siteId=None)</code>
-  <pre>Retrieves a list of orders, possibly filtered.
+  <pre>Retrieves a list of orders, possibly filtered. This method supports paging.
 
 Args:
   profileId: string, User profile ID associated with this request. (required)
diff --git a/docs/dyn/dfareporting_v2_5beta1.placementGroups.html b/docs/dyn/dfareporting_v2_5beta1.placementGroups.html
index 5ed079d..e0ffaa7 100644
--- a/docs/dyn/dfareporting_v2_5beta1.placementGroups.html
+++ b/docs/dyn/dfareporting_v2_5beta1.placementGroups.html
@@ -82,7 +82,7 @@
 <p class="firstline">Inserts a new placement group.</p>
 <p class="toc_element">
   <code><a href="#list">list(profileId, siteIds=None, placementGroupType=None, pricingTypes=None, campaignIds=None, advertiserIds=None, pageToken=None, maxStartDate=None, sortOrder=None, maxEndDate=None, placementStrategyIds=None, contentCategoryIds=None, archived=None, maxResults=None, minStartDate=None, searchString=None, minEndDate=None, directorySiteIds=None, ids=None, sortField=None)</a></code></p>
-<p class="firstline">Retrieves a list of placement groups, possibly filtered.</p>
+<p class="firstline">Retrieves a list of placement groups, possibly filtered. This method supports paging.</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>
@@ -406,7 +406,7 @@
 
 <div class="method">
     <code class="details" id="list">list(profileId, siteIds=None, placementGroupType=None, pricingTypes=None, campaignIds=None, advertiserIds=None, pageToken=None, maxStartDate=None, sortOrder=None, maxEndDate=None, placementStrategyIds=None, contentCategoryIds=None, archived=None, maxResults=None, minStartDate=None, searchString=None, minEndDate=None, directorySiteIds=None, ids=None, sortField=None)</code>
-  <pre>Retrieves a list of placement groups, possibly filtered.
+  <pre>Retrieves a list of placement groups, possibly filtered. This method supports paging.
 
 Args:
   profileId: string, User profile ID associated with this request. (required)
diff --git a/docs/dyn/dfareporting_v2_5beta1.placementStrategies.html b/docs/dyn/dfareporting_v2_5beta1.placementStrategies.html
index 6ca59c8..7f0a008 100644
--- a/docs/dyn/dfareporting_v2_5beta1.placementStrategies.html
+++ b/docs/dyn/dfareporting_v2_5beta1.placementStrategies.html
@@ -85,7 +85,7 @@
 <p class="firstline">Inserts a new placement strategy.</p>
 <p class="toc_element">
   <code><a href="#list">list(profileId, searchString=None, pageToken=None, sortField=None, ids=None, maxResults=None, sortOrder=None)</a></code></p>
-<p class="firstline">Retrieves a list of placement strategies, possibly filtered.</p>
+<p class="firstline">Retrieves a list of placement strategies, possibly filtered. This method supports paging.</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>
@@ -155,7 +155,7 @@
 
 <div class="method">
     <code class="details" id="list">list(profileId, searchString=None, pageToken=None, sortField=None, ids=None, maxResults=None, sortOrder=None)</code>
-  <pre>Retrieves a list of placement strategies, possibly filtered.
+  <pre>Retrieves a list of placement strategies, possibly filtered. This method supports paging.
 
 Args:
   profileId: string, User profile ID associated with this request. (required)
diff --git a/docs/dyn/dfareporting_v2_5beta1.placements.html b/docs/dyn/dfareporting_v2_5beta1.placements.html
index 69e7257..9ee0273 100644
--- a/docs/dyn/dfareporting_v2_5beta1.placements.html
+++ b/docs/dyn/dfareporting_v2_5beta1.placements.html
@@ -85,7 +85,7 @@
 <p class="firstline">Inserts a new placement.</p>
 <p class="toc_element">
   <code><a href="#list">list(profileId, siteIds=None, paymentSource=None, pricingTypes=None, campaignIds=None, advertiserIds=None, sizeIds=None, pageToken=None, maxStartDate=None, sortOrder=None, maxEndDate=None, placementStrategyIds=None, contentCategoryIds=None, archived=None, maxResults=None, minStartDate=None, compatibilities=None, searchString=None, minEndDate=None, directorySiteIds=None, sortField=None, ids=None, groupIds=None)</a></code></p>
-<p class="firstline">Retrieves a list of placements, possibly filtered.</p>
+<p class="firstline">Retrieves a list of placements, possibly filtered. This method supports paging.</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>
@@ -580,7 +580,7 @@
 
 <div class="method">
     <code class="details" id="list">list(profileId, siteIds=None, paymentSource=None, pricingTypes=None, campaignIds=None, advertiserIds=None, sizeIds=None, pageToken=None, maxStartDate=None, sortOrder=None, maxEndDate=None, placementStrategyIds=None, contentCategoryIds=None, archived=None, maxResults=None, minStartDate=None, compatibilities=None, searchString=None, minEndDate=None, directorySiteIds=None, sortField=None, ids=None, groupIds=None)</code>
-  <pre>Retrieves a list of placements, possibly filtered.
+  <pre>Retrieves a list of placements, possibly filtered. This method supports paging.
 
 Args:
   profileId: string, User profile ID associated with this request. (required)
diff --git a/docs/dyn/dfareporting_v2_5beta1.projects.html b/docs/dyn/dfareporting_v2_5beta1.projects.html
index 889443d..c3ae016 100644
--- a/docs/dyn/dfareporting_v2_5beta1.projects.html
+++ b/docs/dyn/dfareporting_v2_5beta1.projects.html
@@ -79,7 +79,7 @@
 <p class="firstline">Gets one project by ID.</p>
 <p class="toc_element">
   <code><a href="#list">list(profileId, searchString=None, pageToken=None, sortField=None, advertiserIds=None, ids=None, maxResults=None, sortOrder=None)</a></code></p>
-<p class="firstline">Retrieves a list of projects, possibly filtered.</p>
+<p class="firstline">Retrieves a list of projects, possibly filtered. This method supports paging.</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>
@@ -124,7 +124,7 @@
 
 <div class="method">
     <code class="details" id="list">list(profileId, searchString=None, pageToken=None, sortField=None, advertiserIds=None, ids=None, maxResults=None, sortOrder=None)</code>
-  <pre>Retrieves a list of projects, possibly filtered.
+  <pre>Retrieves a list of projects, possibly filtered. This method supports paging.
 
 Args:
   profileId: string, User profile ID associated with this request. (required)
diff --git a/docs/dyn/dfareporting_v2_5beta1.remarketingLists.html b/docs/dyn/dfareporting_v2_5beta1.remarketingLists.html
index d30d0df..842361b 100644
--- a/docs/dyn/dfareporting_v2_5beta1.remarketingLists.html
+++ b/docs/dyn/dfareporting_v2_5beta1.remarketingLists.html
@@ -82,7 +82,7 @@
 <p class="firstline">Inserts a new remarketing list.</p>
 <p class="toc_element">
   <code><a href="#list">list(profileId, advertiserId, name=None, pageToken=None, sortField=None, floodlightActivityId=None, maxResults=None, active=None, sortOrder=None)</a></code></p>
-<p class="firstline">Retrieves a list of remarketing lists, possibly filtered.</p>
+<p class="firstline">Retrieves a list of remarketing lists, possibly filtered. This method supports paging.</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>
@@ -247,7 +247,7 @@
 
 <div class="method">
     <code class="details" id="list">list(profileId, advertiserId, name=None, pageToken=None, sortField=None, floodlightActivityId=None, maxResults=None, active=None, sortOrder=None)</code>
-  <pre>Retrieves a list of remarketing lists, possibly filtered.
+  <pre>Retrieves a list of remarketing lists, possibly filtered. This method supports paging.
 
 Args:
   profileId: string, User profile ID associated with this request. (required)
diff --git a/docs/dyn/dfareporting_v2_5beta1.sites.html b/docs/dyn/dfareporting_v2_5beta1.sites.html
index 319df31..8a244ab 100644
--- a/docs/dyn/dfareporting_v2_5beta1.sites.html
+++ b/docs/dyn/dfareporting_v2_5beta1.sites.html
@@ -82,7 +82,7 @@
 <p class="firstline">Inserts a new site.</p>
 <p class="toc_element">
   <code><a href="#list">list(profileId, unmappedSite=None, campaignIds=None, acceptsInStreamVideoPlacements=None, pageToken=None, acceptsPublisherPaidPlacements=None, sortOrder=None, acceptsInterstitialPlacements=None, maxResults=None, adWordsSite=None, approved=None, searchString=None, subaccountId=None, directorySiteIds=None, sortField=None, ids=None)</a></code></p>
-<p class="firstline">Retrieves a list of sites, possibly filtered.</p>
+<p class="firstline">Retrieves a list of sites, possibly filtered. This method supports paging.</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>
@@ -298,7 +298,7 @@
 
 <div class="method">
     <code class="details" id="list">list(profileId, unmappedSite=None, campaignIds=None, acceptsInStreamVideoPlacements=None, pageToken=None, acceptsPublisherPaidPlacements=None, sortOrder=None, acceptsInterstitialPlacements=None, maxResults=None, adWordsSite=None, approved=None, searchString=None, subaccountId=None, directorySiteIds=None, sortField=None, ids=None)</code>
-  <pre>Retrieves a list of sites, possibly filtered.
+  <pre>Retrieves a list of sites, possibly filtered. This method supports paging.
 
 Args:
   profileId: string, User profile ID associated with this request. (required)
diff --git a/docs/dyn/dfareporting_v2_5beta1.subaccounts.html b/docs/dyn/dfareporting_v2_5beta1.subaccounts.html
index ce888d7..e142052 100644
--- a/docs/dyn/dfareporting_v2_5beta1.subaccounts.html
+++ b/docs/dyn/dfareporting_v2_5beta1.subaccounts.html
@@ -82,7 +82,7 @@
 <p class="firstline">Inserts a new subaccount.</p>
 <p class="toc_element">
   <code><a href="#list">list(profileId, searchString=None, pageToken=None, sortField=None, ids=None, maxResults=None, sortOrder=None)</a></code></p>
-<p class="firstline">Gets a list of subaccounts, possibly filtered.</p>
+<p class="firstline">Gets a list of subaccounts, possibly filtered. This method supports paging.</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>
@@ -151,7 +151,7 @@
 
 <div class="method">
     <code class="details" id="list">list(profileId, searchString=None, pageToken=None, sortField=None, ids=None, maxResults=None, sortOrder=None)</code>
-  <pre>Gets a list of subaccounts, possibly filtered.
+  <pre>Gets a list of subaccounts, possibly filtered. This method supports paging.
 
 Args:
   profileId: string, User profile ID associated with this request. (required)
diff --git a/docs/dyn/dfareporting_v2_5beta1.targetableRemarketingLists.html b/docs/dyn/dfareporting_v2_5beta1.targetableRemarketingLists.html
index 7a082f6..5112c7f 100644
--- a/docs/dyn/dfareporting_v2_5beta1.targetableRemarketingLists.html
+++ b/docs/dyn/dfareporting_v2_5beta1.targetableRemarketingLists.html
@@ -79,7 +79,7 @@
 <p class="firstline">Gets one remarketing list by ID.</p>
 <p class="toc_element">
   <code><a href="#list">list(profileId, advertiserId, name=None, pageToken=None, sortField=None, maxResults=None, active=None, sortOrder=None)</a></code></p>
-<p class="firstline">Retrieves a list of targetable remarketing lists, possibly filtered.</p>
+<p class="firstline">Retrieves a list of targetable remarketing lists, possibly filtered. This method supports paging.</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>
@@ -120,7 +120,7 @@
 
 <div class="method">
     <code class="details" id="list">list(profileId, advertiserId, name=None, pageToken=None, sortField=None, maxResults=None, active=None, sortOrder=None)</code>
-  <pre>Retrieves a list of targetable remarketing lists, possibly filtered.
+  <pre>Retrieves a list of targetable remarketing lists, possibly filtered. This method supports paging.
 
 Args:
   profileId: string, User profile ID associated with this request. (required)
diff --git a/docs/dyn/dfareporting_v2_5beta1.userRoles.html b/docs/dyn/dfareporting_v2_5beta1.userRoles.html
index 7efb586..74c9111 100644
--- a/docs/dyn/dfareporting_v2_5beta1.userRoles.html
+++ b/docs/dyn/dfareporting_v2_5beta1.userRoles.html
@@ -85,7 +85,7 @@
 <p class="firstline">Inserts a new user role.</p>
 <p class="toc_element">
   <code><a href="#list">list(profileId, searchString=None, subaccountId=None, pageToken=None, ids=None, maxResults=None, accountUserRoleOnly=None, sortOrder=None, sortField=None)</a></code></p>
-<p class="firstline">Retrieves a list of user roles, possibly filtered.</p>
+<p class="firstline">Retrieves a list of user roles, possibly filtered. This method supports paging.</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>
@@ -191,7 +191,7 @@
 
 <div class="method">
     <code class="details" id="list">list(profileId, searchString=None, subaccountId=None, pageToken=None, ids=None, maxResults=None, accountUserRoleOnly=None, sortOrder=None, sortField=None)</code>
-  <pre>Retrieves a list of user roles, possibly filtered.
+  <pre>Retrieves a list of user roles, possibly filtered. This method supports paging.
 
 Args:
   profileId: string, User profile ID associated with this request. (required)
diff --git a/docs/dyn/dfareporting_v2_6.accountUserProfiles.html b/docs/dyn/dfareporting_v2_6.accountUserProfiles.html
index 462e260..258ebf1 100644
--- a/docs/dyn/dfareporting_v2_6.accountUserProfiles.html
+++ b/docs/dyn/dfareporting_v2_6.accountUserProfiles.html
@@ -82,7 +82,7 @@
 <p class="firstline">Inserts a new account user profile.</p>
 <p class="toc_element">
   <code><a href="#list">list(profileId, searchString=None, subaccountId=None, sortField=None, ids=None, maxResults=None, pageToken=None, sortOrder=None, userRoleId=None, active=None)</a></code></p>
-<p class="firstline">Retrieves a list of account user profiles, possibly filtered.</p>
+<p class="firstline">Retrieves a list of account user profiles, possibly filtered. This method supports paging.</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>
@@ -301,7 +301,7 @@
 
 <div class="method">
     <code class="details" id="list">list(profileId, searchString=None, subaccountId=None, sortField=None, ids=None, maxResults=None, pageToken=None, sortOrder=None, userRoleId=None, active=None)</code>
-  <pre>Retrieves a list of account user profiles, possibly filtered.
+  <pre>Retrieves a list of account user profiles, possibly filtered. This method supports paging.
 
 Args:
   profileId: string, User profile ID associated with this request. (required)
diff --git a/docs/dyn/dfareporting_v2_6.accounts.html b/docs/dyn/dfareporting_v2_6.accounts.html
index 3290970..5350947 100644
--- a/docs/dyn/dfareporting_v2_6.accounts.html
+++ b/docs/dyn/dfareporting_v2_6.accounts.html
@@ -79,7 +79,7 @@
 <p class="firstline">Gets one account by ID.</p>
 <p class="toc_element">
   <code><a href="#list">list(profileId, searchString=None, sortField=None, ids=None, maxResults=None, pageToken=None, sortOrder=None, active=None)</a></code></p>
-<p class="firstline">Retrieves the list of accounts, possibly filtered.</p>
+<p class="firstline">Retrieves the list of accounts, possibly filtered. This method supports paging.</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>
@@ -217,7 +217,7 @@
 
 <div class="method">
     <code class="details" id="list">list(profileId, searchString=None, sortField=None, ids=None, maxResults=None, pageToken=None, sortOrder=None, active=None)</code>
-  <pre>Retrieves the list of accounts, possibly filtered.
+  <pre>Retrieves the list of accounts, possibly filtered. This method supports paging.
 
 Args:
   profileId: string, User profile ID associated with this request. (required)
diff --git a/docs/dyn/dfareporting_v2_6.ads.html b/docs/dyn/dfareporting_v2_6.ads.html
index 6b0f2c8..d10df49 100644
--- a/docs/dyn/dfareporting_v2_6.ads.html
+++ b/docs/dyn/dfareporting_v2_6.ads.html
@@ -82,7 +82,7 @@
 <p class="firstline">Inserts a new ad.</p>
 <p class="toc_element">
   <code><a href="#list">list(profileId, landingPageIds=None, overriddenEventTagId=None, campaignIds=None, sizeIds=None, archived=None, creativeOptimizationConfigurationIds=None, sslCompliant=None, pageToken=None, sortOrder=None, type=None, sslRequired=None, creativeIds=None, remarketingListIds=None, maxResults=None, creativeType=None, placementIds=None, active=None, compatibility=None, advertiserId=None, searchString=None, audienceSegmentIds=None, ids=None, sortField=None, dynamicClickTracker=None)</a></code></p>
-<p class="firstline">Retrieves a list of ads, possibly filtered.</p>
+<p class="firstline">Retrieves a list of ads, possibly filtered. This method supports paging.</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>
@@ -207,7 +207,7 @@
       ],
       "id": "A String", # ID of this ad. This is a read-only, auto-generated field.
       "accountId": "A String", # Account ID of this ad. This is a read-only field that can be left blank.
-      "archived": True or False, # Whether this ad is archived.
+      "archived": True or False, # Whether this ad is archived. When true, active must be false.
       "targetingTemplateId": "A String", # Targeting template ID, used to apply preconfigured targeting information to this ad. This cannot be set while any of dayPartTargeting, geoTargeting, keyValueTargetingExpression, languageTargeting, remarketingListExpression, or technologyTargeting are set. Applicable when type is AD_SERVING_STANDARD_AD.
       "technologyTargeting": { # Technology Targeting. # Technology platform targeting information for this ad. This field must be left blank if the ad is using a targeting template. Applicable when type is AD_SERVING_STANDARD_AD.
         "platformTypes": [ # Platform types that this ad targets. For example, desktop, mobile, or tablet. For each platform type, only id is required, and the other fields are populated automatically when the ad is inserted or updated.
@@ -400,7 +400,7 @@
         "time": "A String", # Timestamp of the last change in milliseconds since epoch.
       },
       "startTime": "A String", # Date and time that this ad should start serving. If creating an ad, this field must be a time in the future. This is a required field on insertion.
-      "active": True or False, # Whether this ad is active.
+      "active": True or False, # Whether this ad is active. When true, archived must be false.
       "compatibility": "A String", # Compatibility of this ad. Applicable when type is AD_SERVING_DEFAULT_AD. DISPLAY and DISPLAY_INTERSTITIAL refer to either rendering on desktop or on mobile devices or in mobile apps for regular or interstitial ads, respectively. APP and APP_INTERSTITIAL are only used for existing default ads. New mobile placements must be assigned DISPLAY or DISPLAY_INTERSTITIAL and default ads created for those placements will be limited to those compatibility types. IN_STREAM_VIDEO refers to rendering in-stream video ads developed with the VAST standard.
       "kind": "dfareporting#ad", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#ad".
       "subaccountId": "A String", # Subaccount ID of this ad. This is a read-only field that can be left blank.
@@ -559,7 +559,7 @@
     ],
     "id": "A String", # ID of this ad. This is a read-only, auto-generated field.
     "accountId": "A String", # Account ID of this ad. This is a read-only field that can be left blank.
-    "archived": True or False, # Whether this ad is archived.
+    "archived": True or False, # Whether this ad is archived. When true, active must be false.
     "targetingTemplateId": "A String", # Targeting template ID, used to apply preconfigured targeting information to this ad. This cannot be set while any of dayPartTargeting, geoTargeting, keyValueTargetingExpression, languageTargeting, remarketingListExpression, or technologyTargeting are set. Applicable when type is AD_SERVING_STANDARD_AD.
     "technologyTargeting": { # Technology Targeting. # Technology platform targeting information for this ad. This field must be left blank if the ad is using a targeting template. Applicable when type is AD_SERVING_STANDARD_AD.
       "platformTypes": [ # Platform types that this ad targets. For example, desktop, mobile, or tablet. For each platform type, only id is required, and the other fields are populated automatically when the ad is inserted or updated.
@@ -752,7 +752,7 @@
       "time": "A String", # Timestamp of the last change in milliseconds since epoch.
     },
     "startTime": "A String", # Date and time that this ad should start serving. If creating an ad, this field must be a time in the future. This is a required field on insertion.
-    "active": True or False, # Whether this ad is active.
+    "active": True or False, # Whether this ad is active. When true, archived must be false.
     "compatibility": "A String", # Compatibility of this ad. Applicable when type is AD_SERVING_DEFAULT_AD. DISPLAY and DISPLAY_INTERSTITIAL refer to either rendering on desktop or on mobile devices or in mobile apps for regular or interstitial ads, respectively. APP and APP_INTERSTITIAL are only used for existing default ads. New mobile placements must be assigned DISPLAY or DISPLAY_INTERSTITIAL and default ads created for those placements will be limited to those compatibility types. IN_STREAM_VIDEO refers to rendering in-stream video ads developed with the VAST standard.
     "kind": "dfareporting#ad", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#ad".
     "subaccountId": "A String", # Subaccount ID of this ad. This is a read-only field that can be left blank.
@@ -905,7 +905,7 @@
       ],
       "id": "A String", # ID of this ad. This is a read-only, auto-generated field.
       "accountId": "A String", # Account ID of this ad. This is a read-only field that can be left blank.
-      "archived": True or False, # Whether this ad is archived.
+      "archived": True or False, # Whether this ad is archived. When true, active must be false.
       "targetingTemplateId": "A String", # Targeting template ID, used to apply preconfigured targeting information to this ad. This cannot be set while any of dayPartTargeting, geoTargeting, keyValueTargetingExpression, languageTargeting, remarketingListExpression, or technologyTargeting are set. Applicable when type is AD_SERVING_STANDARD_AD.
       "technologyTargeting": { # Technology Targeting. # Technology platform targeting information for this ad. This field must be left blank if the ad is using a targeting template. Applicable when type is AD_SERVING_STANDARD_AD.
         "platformTypes": [ # Platform types that this ad targets. For example, desktop, mobile, or tablet. For each platform type, only id is required, and the other fields are populated automatically when the ad is inserted or updated.
@@ -1098,7 +1098,7 @@
         "time": "A String", # Timestamp of the last change in milliseconds since epoch.
       },
       "startTime": "A String", # Date and time that this ad should start serving. If creating an ad, this field must be a time in the future. This is a required field on insertion.
-      "active": True or False, # Whether this ad is active.
+      "active": True or False, # Whether this ad is active. When true, archived must be false.
       "compatibility": "A String", # Compatibility of this ad. Applicable when type is AD_SERVING_DEFAULT_AD. DISPLAY and DISPLAY_INTERSTITIAL refer to either rendering on desktop or on mobile devices or in mobile apps for regular or interstitial ads, respectively. APP and APP_INTERSTITIAL are only used for existing default ads. New mobile placements must be assigned DISPLAY or DISPLAY_INTERSTITIAL and default ads created for those placements will be limited to those compatibility types. IN_STREAM_VIDEO refers to rendering in-stream video ads developed with the VAST standard.
       "kind": "dfareporting#ad", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#ad".
       "subaccountId": "A String", # Subaccount ID of this ad. This is a read-only field that can be left blank.
@@ -1147,7 +1147,7 @@
 
 <div class="method">
     <code class="details" id="list">list(profileId, landingPageIds=None, overriddenEventTagId=None, campaignIds=None, sizeIds=None, archived=None, creativeOptimizationConfigurationIds=None, sslCompliant=None, pageToken=None, sortOrder=None, type=None, sslRequired=None, creativeIds=None, remarketingListIds=None, maxResults=None, creativeType=None, placementIds=None, active=None, compatibility=None, advertiserId=None, searchString=None, audienceSegmentIds=None, ids=None, sortField=None, dynamicClickTracker=None)</code>
-  <pre>Retrieves a list of ads, possibly filtered.
+  <pre>Retrieves a list of ads, possibly filtered. This method supports paging.
 
 Args:
   profileId: string, User profile ID associated with this request. (required)
@@ -1328,7 +1328,7 @@
           ],
           "id": "A String", # ID of this ad. This is a read-only, auto-generated field.
           "accountId": "A String", # Account ID of this ad. This is a read-only field that can be left blank.
-          "archived": True or False, # Whether this ad is archived.
+          "archived": True or False, # Whether this ad is archived. When true, active must be false.
           "targetingTemplateId": "A String", # Targeting template ID, used to apply preconfigured targeting information to this ad. This cannot be set while any of dayPartTargeting, geoTargeting, keyValueTargetingExpression, languageTargeting, remarketingListExpression, or technologyTargeting are set. Applicable when type is AD_SERVING_STANDARD_AD.
           "technologyTargeting": { # Technology Targeting. # Technology platform targeting information for this ad. This field must be left blank if the ad is using a targeting template. Applicable when type is AD_SERVING_STANDARD_AD.
             "platformTypes": [ # Platform types that this ad targets. For example, desktop, mobile, or tablet. For each platform type, only id is required, and the other fields are populated automatically when the ad is inserted or updated.
@@ -1521,7 +1521,7 @@
             "time": "A String", # Timestamp of the last change in milliseconds since epoch.
           },
           "startTime": "A String", # Date and time that this ad should start serving. If creating an ad, this field must be a time in the future. This is a required field on insertion.
-          "active": True or False, # Whether this ad is active.
+          "active": True or False, # Whether this ad is active. When true, archived must be false.
           "compatibility": "A String", # Compatibility of this ad. Applicable when type is AD_SERVING_DEFAULT_AD. DISPLAY and DISPLAY_INTERSTITIAL refer to either rendering on desktop or on mobile devices or in mobile apps for regular or interstitial ads, respectively. APP and APP_INTERSTITIAL are only used for existing default ads. New mobile placements must be assigned DISPLAY or DISPLAY_INTERSTITIAL and default ads created for those placements will be limited to those compatibility types. IN_STREAM_VIDEO refers to rendering in-stream video ads developed with the VAST standard.
           "kind": "dfareporting#ad", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#ad".
           "subaccountId": "A String", # Subaccount ID of this ad. This is a read-only field that can be left blank.
@@ -1697,7 +1697,7 @@
     ],
     "id": "A String", # ID of this ad. This is a read-only, auto-generated field.
     "accountId": "A String", # Account ID of this ad. This is a read-only field that can be left blank.
-    "archived": True or False, # Whether this ad is archived.
+    "archived": True or False, # Whether this ad is archived. When true, active must be false.
     "targetingTemplateId": "A String", # Targeting template ID, used to apply preconfigured targeting information to this ad. This cannot be set while any of dayPartTargeting, geoTargeting, keyValueTargetingExpression, languageTargeting, remarketingListExpression, or technologyTargeting are set. Applicable when type is AD_SERVING_STANDARD_AD.
     "technologyTargeting": { # Technology Targeting. # Technology platform targeting information for this ad. This field must be left blank if the ad is using a targeting template. Applicable when type is AD_SERVING_STANDARD_AD.
       "platformTypes": [ # Platform types that this ad targets. For example, desktop, mobile, or tablet. For each platform type, only id is required, and the other fields are populated automatically when the ad is inserted or updated.
@@ -1890,7 +1890,7 @@
       "time": "A String", # Timestamp of the last change in milliseconds since epoch.
     },
     "startTime": "A String", # Date and time that this ad should start serving. If creating an ad, this field must be a time in the future. This is a required field on insertion.
-    "active": True or False, # Whether this ad is active.
+    "active": True or False, # Whether this ad is active. When true, archived must be false.
     "compatibility": "A String", # Compatibility of this ad. Applicable when type is AD_SERVING_DEFAULT_AD. DISPLAY and DISPLAY_INTERSTITIAL refer to either rendering on desktop or on mobile devices or in mobile apps for regular or interstitial ads, respectively. APP and APP_INTERSTITIAL are only used for existing default ads. New mobile placements must be assigned DISPLAY or DISPLAY_INTERSTITIAL and default ads created for those placements will be limited to those compatibility types. IN_STREAM_VIDEO refers to rendering in-stream video ads developed with the VAST standard.
     "kind": "dfareporting#ad", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#ad".
     "subaccountId": "A String", # Subaccount ID of this ad. This is a read-only field that can be left blank.
@@ -2043,7 +2043,7 @@
       ],
       "id": "A String", # ID of this ad. This is a read-only, auto-generated field.
       "accountId": "A String", # Account ID of this ad. This is a read-only field that can be left blank.
-      "archived": True or False, # Whether this ad is archived.
+      "archived": True or False, # Whether this ad is archived. When true, active must be false.
       "targetingTemplateId": "A String", # Targeting template ID, used to apply preconfigured targeting information to this ad. This cannot be set while any of dayPartTargeting, geoTargeting, keyValueTargetingExpression, languageTargeting, remarketingListExpression, or technologyTargeting are set. Applicable when type is AD_SERVING_STANDARD_AD.
       "technologyTargeting": { # Technology Targeting. # Technology platform targeting information for this ad. This field must be left blank if the ad is using a targeting template. Applicable when type is AD_SERVING_STANDARD_AD.
         "platformTypes": [ # Platform types that this ad targets. For example, desktop, mobile, or tablet. For each platform type, only id is required, and the other fields are populated automatically when the ad is inserted or updated.
@@ -2236,7 +2236,7 @@
         "time": "A String", # Timestamp of the last change in milliseconds since epoch.
       },
       "startTime": "A String", # Date and time that this ad should start serving. If creating an ad, this field must be a time in the future. This is a required field on insertion.
-      "active": True or False, # Whether this ad is active.
+      "active": True or False, # Whether this ad is active. When true, archived must be false.
       "compatibility": "A String", # Compatibility of this ad. Applicable when type is AD_SERVING_DEFAULT_AD. DISPLAY and DISPLAY_INTERSTITIAL refer to either rendering on desktop or on mobile devices or in mobile apps for regular or interstitial ads, respectively. APP and APP_INTERSTITIAL are only used for existing default ads. New mobile placements must be assigned DISPLAY or DISPLAY_INTERSTITIAL and default ads created for those placements will be limited to those compatibility types. IN_STREAM_VIDEO refers to rendering in-stream video ads developed with the VAST standard.
       "kind": "dfareporting#ad", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#ad".
       "subaccountId": "A String", # Subaccount ID of this ad. This is a read-only field that can be left blank.
@@ -2395,7 +2395,7 @@
     ],
     "id": "A String", # ID of this ad. This is a read-only, auto-generated field.
     "accountId": "A String", # Account ID of this ad. This is a read-only field that can be left blank.
-    "archived": True or False, # Whether this ad is archived.
+    "archived": True or False, # Whether this ad is archived. When true, active must be false.
     "targetingTemplateId": "A String", # Targeting template ID, used to apply preconfigured targeting information to this ad. This cannot be set while any of dayPartTargeting, geoTargeting, keyValueTargetingExpression, languageTargeting, remarketingListExpression, or technologyTargeting are set. Applicable when type is AD_SERVING_STANDARD_AD.
     "technologyTargeting": { # Technology Targeting. # Technology platform targeting information for this ad. This field must be left blank if the ad is using a targeting template. Applicable when type is AD_SERVING_STANDARD_AD.
       "platformTypes": [ # Platform types that this ad targets. For example, desktop, mobile, or tablet. For each platform type, only id is required, and the other fields are populated automatically when the ad is inserted or updated.
@@ -2588,7 +2588,7 @@
       "time": "A String", # Timestamp of the last change in milliseconds since epoch.
     },
     "startTime": "A String", # Date and time that this ad should start serving. If creating an ad, this field must be a time in the future. This is a required field on insertion.
-    "active": True or False, # Whether this ad is active.
+    "active": True or False, # Whether this ad is active. When true, archived must be false.
     "compatibility": "A String", # Compatibility of this ad. Applicable when type is AD_SERVING_DEFAULT_AD. DISPLAY and DISPLAY_INTERSTITIAL refer to either rendering on desktop or on mobile devices or in mobile apps for regular or interstitial ads, respectively. APP and APP_INTERSTITIAL are only used for existing default ads. New mobile placements must be assigned DISPLAY or DISPLAY_INTERSTITIAL and default ads created for those placements will be limited to those compatibility types. IN_STREAM_VIDEO refers to rendering in-stream video ads developed with the VAST standard.
     "kind": "dfareporting#ad", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#ad".
     "subaccountId": "A String", # Subaccount ID of this ad. This is a read-only field that can be left blank.
@@ -2741,7 +2741,7 @@
       ],
       "id": "A String", # ID of this ad. This is a read-only, auto-generated field.
       "accountId": "A String", # Account ID of this ad. This is a read-only field that can be left blank.
-      "archived": True or False, # Whether this ad is archived.
+      "archived": True or False, # Whether this ad is archived. When true, active must be false.
       "targetingTemplateId": "A String", # Targeting template ID, used to apply preconfigured targeting information to this ad. This cannot be set while any of dayPartTargeting, geoTargeting, keyValueTargetingExpression, languageTargeting, remarketingListExpression, or technologyTargeting are set. Applicable when type is AD_SERVING_STANDARD_AD.
       "technologyTargeting": { # Technology Targeting. # Technology platform targeting information for this ad. This field must be left blank if the ad is using a targeting template. Applicable when type is AD_SERVING_STANDARD_AD.
         "platformTypes": [ # Platform types that this ad targets. For example, desktop, mobile, or tablet. For each platform type, only id is required, and the other fields are populated automatically when the ad is inserted or updated.
@@ -2934,7 +2934,7 @@
         "time": "A String", # Timestamp of the last change in milliseconds since epoch.
       },
       "startTime": "A String", # Date and time that this ad should start serving. If creating an ad, this field must be a time in the future. This is a required field on insertion.
-      "active": True or False, # Whether this ad is active.
+      "active": True or False, # Whether this ad is active. When true, archived must be false.
       "compatibility": "A String", # Compatibility of this ad. Applicable when type is AD_SERVING_DEFAULT_AD. DISPLAY and DISPLAY_INTERSTITIAL refer to either rendering on desktop or on mobile devices or in mobile apps for regular or interstitial ads, respectively. APP and APP_INTERSTITIAL are only used for existing default ads. New mobile placements must be assigned DISPLAY or DISPLAY_INTERSTITIAL and default ads created for those placements will be limited to those compatibility types. IN_STREAM_VIDEO refers to rendering in-stream video ads developed with the VAST standard.
       "kind": "dfareporting#ad", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#ad".
       "subaccountId": "A String", # Subaccount ID of this ad. This is a read-only field that can be left blank.
diff --git a/docs/dyn/dfareporting_v2_6.advertiserGroups.html b/docs/dyn/dfareporting_v2_6.advertiserGroups.html
index 785695c..1af0b9d 100644
--- a/docs/dyn/dfareporting_v2_6.advertiserGroups.html
+++ b/docs/dyn/dfareporting_v2_6.advertiserGroups.html
@@ -85,7 +85,7 @@
 <p class="firstline">Inserts a new advertiser group.</p>
 <p class="toc_element">
   <code><a href="#list">list(profileId, searchString=None, pageToken=None, sortField=None, ids=None, maxResults=None, sortOrder=None)</a></code></p>
-<p class="firstline">Retrieves a list of advertiser groups, possibly filtered.</p>
+<p class="firstline">Retrieves a list of advertiser groups, possibly filtered. This method supports paging.</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>
@@ -155,7 +155,7 @@
 
 <div class="method">
     <code class="details" id="list">list(profileId, searchString=None, pageToken=None, sortField=None, ids=None, maxResults=None, sortOrder=None)</code>
-  <pre>Retrieves a list of advertiser groups, possibly filtered.
+  <pre>Retrieves a list of advertiser groups, possibly filtered. This method supports paging.
 
 Args:
   profileId: string, User profile ID associated with this request. (required)
diff --git a/docs/dyn/dfareporting_v2_6.advertisers.html b/docs/dyn/dfareporting_v2_6.advertisers.html
index ba72d54..fb0c2f7 100644
--- a/docs/dyn/dfareporting_v2_6.advertisers.html
+++ b/docs/dyn/dfareporting_v2_6.advertisers.html
@@ -82,7 +82,7 @@
 <p class="firstline">Inserts a new advertiser.</p>
 <p class="toc_element">
   <code><a href="#list">list(profileId, includeAdvertisersWithoutGroupsOnly=None, onlyParent=None, pageToken=None, sortOrder=None, status=None, maxResults=None, advertiserGroupIds=None, searchString=None, subaccountId=None, ids=None, floodlightConfigurationIds=None, sortField=None)</a></code></p>
-<p class="firstline">Retrieves a list of advertisers, possibly filtered.</p>
+<p class="firstline">Retrieves a list of advertisers, possibly filtered. This method supports paging.</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>
@@ -223,7 +223,7 @@
 
 <div class="method">
     <code class="details" id="list">list(profileId, includeAdvertisersWithoutGroupsOnly=None, onlyParent=None, pageToken=None, sortOrder=None, status=None, maxResults=None, advertiserGroupIds=None, searchString=None, subaccountId=None, ids=None, floodlightConfigurationIds=None, sortField=None)</code>
-  <pre>Retrieves a list of advertisers, possibly filtered.
+  <pre>Retrieves a list of advertisers, possibly filtered. This method supports paging.
 
 Args:
   profileId: string, User profile ID associated with this request. (required)
diff --git a/docs/dyn/dfareporting_v2_6.campaignCreativeAssociations.html b/docs/dyn/dfareporting_v2_6.campaignCreativeAssociations.html
index 6e32146..a514d29 100644
--- a/docs/dyn/dfareporting_v2_6.campaignCreativeAssociations.html
+++ b/docs/dyn/dfareporting_v2_6.campaignCreativeAssociations.html
@@ -79,7 +79,7 @@
 <p class="firstline">Associates a creative with the specified campaign. This method creates a default ad with dimensions matching the creative in the campaign if such a default ad does not exist already.</p>
 <p class="toc_element">
   <code><a href="#list">list(profileId, campaignId, maxResults=None, pageToken=None, sortOrder=None)</a></code></p>
-<p class="firstline">Retrieves the list of creative IDs associated with the specified campaign.</p>
+<p class="firstline">Retrieves the list of creative IDs associated with the specified campaign. This method supports paging.</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>
@@ -111,7 +111,7 @@
 
 <div class="method">
     <code class="details" id="list">list(profileId, campaignId, maxResults=None, pageToken=None, sortOrder=None)</code>
-  <pre>Retrieves the list of creative IDs associated with the specified campaign.
+  <pre>Retrieves the list of creative IDs associated with the specified campaign. This method supports paging.
 
 Args:
   profileId: string, User profile ID associated with this request. (required)
diff --git a/docs/dyn/dfareporting_v2_6.campaigns.html b/docs/dyn/dfareporting_v2_6.campaigns.html
index 8849609..1410c21 100644
--- a/docs/dyn/dfareporting_v2_6.campaigns.html
+++ b/docs/dyn/dfareporting_v2_6.campaigns.html
@@ -82,7 +82,7 @@
 <p class="firstline">Inserts a new campaign.</p>
 <p class="toc_element">
   <code><a href="#list">list(profileId, overriddenEventTagId=None, archived=None, advertiserIds=None, pageToken=None, sortOrder=None, maxResults=None, excludedIds=None, advertiserGroupIds=None, searchString=None, subaccountId=None, ids=None, sortField=None, atLeastOneOptimizationActivity=None)</a></code></p>
-<p class="firstline">Retrieves a list of campaigns, possibly filtered.</p>
+<p class="firstline">Retrieves a list of campaigns, possibly filtered. This method supports paging.</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>
@@ -471,7 +471,7 @@
 
 <div class="method">
     <code class="details" id="list">list(profileId, overriddenEventTagId=None, archived=None, advertiserIds=None, pageToken=None, sortOrder=None, maxResults=None, excludedIds=None, advertiserGroupIds=None, searchString=None, subaccountId=None, ids=None, sortField=None, atLeastOneOptimizationActivity=None)</code>
-  <pre>Retrieves a list of campaigns, possibly filtered.
+  <pre>Retrieves a list of campaigns, possibly filtered. This method supports paging.
 
 Args:
   profileId: string, User profile ID associated with this request. (required)
diff --git a/docs/dyn/dfareporting_v2_6.changeLogs.html b/docs/dyn/dfareporting_v2_6.changeLogs.html
index 3aaff92..9439c17 100644
--- a/docs/dyn/dfareporting_v2_6.changeLogs.html
+++ b/docs/dyn/dfareporting_v2_6.changeLogs.html
@@ -79,7 +79,7 @@
 <p class="firstline">Gets one change log by ID.</p>
 <p class="toc_element">
   <code><a href="#list">list(profileId, objectType=None, maxChangeTime=None, pageToken=None, maxResults=None, action=None, minChangeTime=None, searchString=None, userProfileIds=None, ids=None, objectIds=None)</a></code></p>
-<p class="firstline">Retrieves a list of change logs.</p>
+<p class="firstline">Retrieves a list of change logs. This method supports paging.</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>
@@ -115,7 +115,7 @@
 
 <div class="method">
     <code class="details" id="list">list(profileId, objectType=None, maxChangeTime=None, pageToken=None, maxResults=None, action=None, minChangeTime=None, searchString=None, userProfileIds=None, ids=None, objectIds=None)</code>
-  <pre>Retrieves a list of change logs.
+  <pre>Retrieves a list of change logs. This method supports paging.
 
 Args:
   profileId: string, User profile ID associated with this request. (required)
@@ -153,6 +153,7 @@
       OBJECT_REMARKETING_LIST - 
       OBJECT_RICHMEDIA_CREATIVE - 
       OBJECT_SD_SITE - 
+      OBJECT_SEARCH_LIFT_STUDY - 
       OBJECT_SIZE - 
       OBJECT_SUBACCOUNT - 
       OBJECT_TARGETING_TEMPLATE - 
diff --git a/docs/dyn/dfareporting_v2_6.contentCategories.html b/docs/dyn/dfareporting_v2_6.contentCategories.html
index 0865fb8..a91f62f 100644
--- a/docs/dyn/dfareporting_v2_6.contentCategories.html
+++ b/docs/dyn/dfareporting_v2_6.contentCategories.html
@@ -85,7 +85,7 @@
 <p class="firstline">Inserts a new content category.</p>
 <p class="toc_element">
   <code><a href="#list">list(profileId, searchString=None, pageToken=None, sortField=None, ids=None, maxResults=None, sortOrder=None)</a></code></p>
-<p class="firstline">Retrieves a list of content categories, possibly filtered.</p>
+<p class="firstline">Retrieves a list of content categories, possibly filtered. This method supports paging.</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>
@@ -155,7 +155,7 @@
 
 <div class="method">
     <code class="details" id="list">list(profileId, searchString=None, pageToken=None, sortField=None, ids=None, maxResults=None, sortOrder=None)</code>
-  <pre>Retrieves a list of content categories, possibly filtered.
+  <pre>Retrieves a list of content categories, possibly filtered. This method supports paging.
 
 Args:
   profileId: string, User profile ID associated with this request. (required)
diff --git a/docs/dyn/dfareporting_v2_6.conversions.html b/docs/dyn/dfareporting_v2_6.conversions.html
index d520afd..a3a6ac1 100644
--- a/docs/dyn/dfareporting_v2_6.conversions.html
+++ b/docs/dyn/dfareporting_v2_6.conversions.html
@@ -105,7 +105,7 @@
         "floodlightConfigurationId": "A String", # Floodlight Configuration ID of this conversion. This is a required field.
         "mobileDeviceId": "A String", # The mobile device ID. This field is mutually exclusive with encryptedUserId and encryptedUserIdCandidates[]. This or encryptedUserId or encryptedUserIdCandidates[] is a required field.
         "value": 3.14, # The value of the conversion.
-        "limitAdTracking": True or False, # Whether the user has Limit Ad Tracking set.
+        "limitAdTracking": True or False, # Whether Limit Ad Tracking is enabled. When set to true, the conversion will be used for reporting but not targeting. This will prevent remarketing.
         "quantity": "A String", # The quantity of the conversion.
         "floodlightActivityId": "A String", # Floodlight Activity ID of this conversion. This is a required field.
         "encryptedUserIdCandidates": [ # A list of the alphanumeric encrypted user IDs. Any user ID with exposure prior to the conversion timestamp will be used in the inserted conversion. If no such user ID is found then the conversion will be rejected with NO_COOKIE_MATCH_FOUND error. When set, encryptionInfo should also be specified. This field should only be used when calling conversions.batchinsert. This field is mutually exclusive with encryptedUserId and mobileDeviceId. This or encryptedUserId or mobileDeviceId is a required field.
@@ -145,7 +145,7 @@
           "floodlightConfigurationId": "A String", # Floodlight Configuration ID of this conversion. This is a required field.
           "mobileDeviceId": "A String", # The mobile device ID. This field is mutually exclusive with encryptedUserId and encryptedUserIdCandidates[]. This or encryptedUserId or encryptedUserIdCandidates[] is a required field.
           "value": 3.14, # The value of the conversion.
-          "limitAdTracking": True or False, # Whether the user has Limit Ad Tracking set.
+          "limitAdTracking": True or False, # Whether Limit Ad Tracking is enabled. When set to true, the conversion will be used for reporting but not targeting. This will prevent remarketing.
           "quantity": "A String", # The quantity of the conversion.
           "floodlightActivityId": "A String", # Floodlight Activity ID of this conversion. This is a required field.
           "encryptedUserIdCandidates": [ # A list of the alphanumeric encrypted user IDs. Any user ID with exposure prior to the conversion timestamp will be used in the inserted conversion. If no such user ID is found then the conversion will be rejected with NO_COOKIE_MATCH_FOUND error. When set, encryptionInfo should also be specified. This field should only be used when calling conversions.batchinsert. This field is mutually exclusive with encryptedUserId and mobileDeviceId. This or encryptedUserId or mobileDeviceId is a required field.
diff --git a/docs/dyn/dfareporting_v2_6.creativeAssets.html b/docs/dyn/dfareporting_v2_6.creativeAssets.html
index ef98111..9798c18 100644
--- a/docs/dyn/dfareporting_v2_6.creativeAssets.html
+++ b/docs/dyn/dfareporting_v2_6.creativeAssets.html
@@ -75,11 +75,11 @@
 <h1><a href="dfareporting_v2_6.html">DCM/DFA Reporting And Trafficking API</a> . <a href="dfareporting_v2_6.creativeAssets.html">creativeAssets</a></h1>
 <h2>Instance Methods</h2>
 <p class="toc_element">
-  <code><a href="#insert">insert(profileId, advertiserId, body=None, media_body=None)</a></code></p>
+  <code><a href="#insert">insert(profileId, advertiserId, body=None, media_body=None, media_mime_type=None)</a></code></p>
 <p class="firstline">Inserts a new creative asset.</p>
 <h3>Method Details</h3>
 <div class="method">
-    <code class="details" id="insert">insert(profileId, advertiserId, body=None, media_body=None)</code>
+    <code class="details" id="insert">insert(profileId, advertiserId, body=None, media_body=None, media_mime_type=None)</code>
   <pre>Inserts a new creative asset.
 
 Args:
@@ -145,6 +145,7 @@
   }
 
   media_body: string, The filename of the media request body, or an instance of a MediaUpload object.
+  media_mime_type: string, The MIME type of the media request body, or an instance of a MediaUpload object.
 
 Returns:
   An object of the form:
diff --git a/docs/dyn/dfareporting_v2_6.creativeFieldValues.html b/docs/dyn/dfareporting_v2_6.creativeFieldValues.html
index ec03540..c076e96 100644
--- a/docs/dyn/dfareporting_v2_6.creativeFieldValues.html
+++ b/docs/dyn/dfareporting_v2_6.creativeFieldValues.html
@@ -85,7 +85,7 @@
 <p class="firstline">Inserts a new creative field value.</p>
 <p class="toc_element">
   <code><a href="#list">list(profileId, creativeFieldId, searchString=None, sortField=None, ids=None, maxResults=None, pageToken=None, sortOrder=None)</a></code></p>
-<p class="firstline">Retrieves a list of creative field values, possibly filtered.</p>
+<p class="firstline">Retrieves a list of creative field values, possibly filtered. This method supports paging.</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>
@@ -155,7 +155,7 @@
 
 <div class="method">
     <code class="details" id="list">list(profileId, creativeFieldId, searchString=None, sortField=None, ids=None, maxResults=None, pageToken=None, sortOrder=None)</code>
-  <pre>Retrieves a list of creative field values, possibly filtered.
+  <pre>Retrieves a list of creative field values, possibly filtered. This method supports paging.
 
 Args:
   profileId: string, User profile ID associated with this request. (required)
diff --git a/docs/dyn/dfareporting_v2_6.creativeFields.html b/docs/dyn/dfareporting_v2_6.creativeFields.html
index 1b05526..b8a3bf8 100644
--- a/docs/dyn/dfareporting_v2_6.creativeFields.html
+++ b/docs/dyn/dfareporting_v2_6.creativeFields.html
@@ -85,7 +85,7 @@
 <p class="firstline">Inserts a new creative field.</p>
 <p class="toc_element">
   <code><a href="#list">list(profileId, searchString=None, pageToken=None, sortField=None, advertiserIds=None, ids=None, maxResults=None, sortOrder=None)</a></code></p>
-<p class="firstline">Retrieves a list of creative fields, possibly filtered.</p>
+<p class="firstline">Retrieves a list of creative fields, possibly filtered. This method supports paging.</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>
@@ -185,7 +185,7 @@
 
 <div class="method">
     <code class="details" id="list">list(profileId, searchString=None, pageToken=None, sortField=None, advertiserIds=None, ids=None, maxResults=None, sortOrder=None)</code>
-  <pre>Retrieves a list of creative fields, possibly filtered.
+  <pre>Retrieves a list of creative fields, possibly filtered. This method supports paging.
 
 Args:
   profileId: string, User profile ID associated with this request. (required)
diff --git a/docs/dyn/dfareporting_v2_6.creativeGroups.html b/docs/dyn/dfareporting_v2_6.creativeGroups.html
index fb5f491..624677c 100644
--- a/docs/dyn/dfareporting_v2_6.creativeGroups.html
+++ b/docs/dyn/dfareporting_v2_6.creativeGroups.html
@@ -82,7 +82,7 @@
 <p class="firstline">Inserts a new creative group.</p>
 <p class="toc_element">
   <code><a href="#list">list(profileId, searchString=None, pageToken=None, sortField=None, advertiserIds=None, groupNumber=None, maxResults=None, ids=None, sortOrder=None)</a></code></p>
-<p class="firstline">Retrieves a list of creative groups, possibly filtered.</p>
+<p class="firstline">Retrieves a list of creative groups, possibly filtered. This method supports paging.</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>
@@ -184,7 +184,7 @@
 
 <div class="method">
     <code class="details" id="list">list(profileId, searchString=None, pageToken=None, sortField=None, advertiserIds=None, groupNumber=None, maxResults=None, ids=None, sortOrder=None)</code>
-  <pre>Retrieves a list of creative groups, possibly filtered.
+  <pre>Retrieves a list of creative groups, possibly filtered. This method supports paging.
 
 Args:
   profileId: string, User profile ID associated with this request. (required)
diff --git a/docs/dyn/dfareporting_v2_6.creatives.html b/docs/dyn/dfareporting_v2_6.creatives.html
index eb62289..6719b2b 100644
--- a/docs/dyn/dfareporting_v2_6.creatives.html
+++ b/docs/dyn/dfareporting_v2_6.creatives.html
@@ -82,7 +82,7 @@
 <p class="firstline">Inserts a new creative.</p>
 <p class="toc_element">
   <code><a href="#list">list(profileId, campaignId=None, advertiserId=None, sizeIds=None, archived=None, pageToken=None, sortOrder=None, renderingIds=None, maxResults=None, active=None, companionCreativeIds=None, types=None, searchString=None, ids=None, studioCreativeId=None, sortField=None, creativeFieldIds=None)</a></code></p>
-<p class="firstline">Retrieves a list of creatives, possibly filtered.</p>
+<p class="firstline">Retrieves a list of creatives, possibly filtered. This method supports paging.</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>
@@ -1192,7 +1192,7 @@
 
 <div class="method">
     <code class="details" id="list">list(profileId, campaignId=None, advertiserId=None, sizeIds=None, archived=None, pageToken=None, sortOrder=None, renderingIds=None, maxResults=None, active=None, companionCreativeIds=None, types=None, searchString=None, ids=None, studioCreativeId=None, sortField=None, creativeFieldIds=None)</code>
-  <pre>Retrieves a list of creatives, possibly filtered.
+  <pre>Retrieves a list of creatives, possibly filtered. This method supports paging.
 
 Args:
   profileId: string, User profile ID associated with this request. (required)
diff --git a/docs/dyn/dfareporting_v2_6.directorySiteContacts.html b/docs/dyn/dfareporting_v2_6.directorySiteContacts.html
index 8d2d65a..1d58870 100644
--- a/docs/dyn/dfareporting_v2_6.directorySiteContacts.html
+++ b/docs/dyn/dfareporting_v2_6.directorySiteContacts.html
@@ -79,7 +79,7 @@
 <p class="firstline">Gets one directory site contact by ID.</p>
 <p class="toc_element">
   <code><a href="#list">list(profileId, searchString=None, directorySiteIds=None, pageToken=None, sortField=None, ids=None, maxResults=None, sortOrder=None)</a></code></p>
-<p class="firstline">Retrieves a list of directory site contacts, possibly filtered.</p>
+<p class="firstline">Retrieves a list of directory site contacts, possibly filtered. This method supports paging.</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>
@@ -111,7 +111,7 @@
 
 <div class="method">
     <code class="details" id="list">list(profileId, searchString=None, directorySiteIds=None, pageToken=None, sortField=None, ids=None, maxResults=None, sortOrder=None)</code>
-  <pre>Retrieves a list of directory site contacts, possibly filtered.
+  <pre>Retrieves a list of directory site contacts, possibly filtered. This method supports paging.
 
 Args:
   profileId: string, User profile ID associated with this request. (required)
diff --git a/docs/dyn/dfareporting_v2_6.directorySites.html b/docs/dyn/dfareporting_v2_6.directorySites.html
index cb852a0..bdcf5d4 100644
--- a/docs/dyn/dfareporting_v2_6.directorySites.html
+++ b/docs/dyn/dfareporting_v2_6.directorySites.html
@@ -82,7 +82,7 @@
 <p class="firstline">Inserts a new directory site.</p>
 <p class="toc_element">
   <code><a href="#list">list(profileId, countryId=None, acceptsInStreamVideoPlacements=None, pageToken=None, sortOrder=None, parentId=None, acceptsPublisherPaidPlacements=None, acceptsInterstitialPlacements=None, maxResults=None, active=None, searchString=None, sortField=None, ids=None, dfp_network_code=None)</a></code></p>
-<p class="firstline">Retrieves a list of directory sites, possibly filtered.</p>
+<p class="firstline">Retrieves a list of directory sites, possibly filtered. This method supports paging.</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>
@@ -433,7 +433,7 @@
 
 <div class="method">
     <code class="details" id="list">list(profileId, countryId=None, acceptsInStreamVideoPlacements=None, pageToken=None, sortOrder=None, parentId=None, acceptsPublisherPaidPlacements=None, acceptsInterstitialPlacements=None, maxResults=None, active=None, searchString=None, sortField=None, ids=None, dfp_network_code=None)</code>
-  <pre>Retrieves a list of directory sites, possibly filtered.
+  <pre>Retrieves a list of directory sites, possibly filtered. This method supports paging.
 
 Args:
   profileId: string, User profile ID associated with this request. (required)
diff --git a/docs/dyn/dfareporting_v2_6.floodlightActivities.html b/docs/dyn/dfareporting_v2_6.floodlightActivities.html
index aaa4b98..6e498cc 100644
--- a/docs/dyn/dfareporting_v2_6.floodlightActivities.html
+++ b/docs/dyn/dfareporting_v2_6.floodlightActivities.html
@@ -88,7 +88,7 @@
 <p class="firstline">Inserts a new floodlight activity.</p>
 <p class="toc_element">
   <code><a href="#list">list(profileId, floodlightActivityGroupName=None, advertiserId=None, tagString=None, floodlightActivityGroupTagString=None, floodlightActivityGroupIds=None, pageToken=None, sortOrder=None, maxResults=None, searchString=None, sortField=None, floodlightConfigurationId=None, ids=None, floodlightActivityGroupType=None)</a></code></p>
-<p class="firstline">Retrieves a list of floodlight activities, possibly filtered.</p>
+<p class="firstline">Retrieves a list of floodlight activities, possibly filtered. This method supports paging.</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>
@@ -457,7 +457,7 @@
 
 <div class="method">
     <code class="details" id="list">list(profileId, floodlightActivityGroupName=None, advertiserId=None, tagString=None, floodlightActivityGroupTagString=None, floodlightActivityGroupIds=None, pageToken=None, sortOrder=None, maxResults=None, searchString=None, sortField=None, floodlightConfigurationId=None, ids=None, floodlightActivityGroupType=None)</code>
-  <pre>Retrieves a list of floodlight activities, possibly filtered.
+  <pre>Retrieves a list of floodlight activities, possibly filtered. This method supports paging.
 
 Args:
   profileId: string, User profile ID associated with this request. (required)
diff --git a/docs/dyn/dfareporting_v2_6.floodlightActivityGroups.html b/docs/dyn/dfareporting_v2_6.floodlightActivityGroups.html
index 8eaac76..6f1bf5b 100644
--- a/docs/dyn/dfareporting_v2_6.floodlightActivityGroups.html
+++ b/docs/dyn/dfareporting_v2_6.floodlightActivityGroups.html
@@ -82,7 +82,7 @@
 <p class="firstline">Inserts a new floodlight activity group.</p>
 <p class="toc_element">
   <code><a href="#list">list(profileId, advertiserId=None, searchString=None, pageToken=None, sortField=None, floodlightConfigurationId=None, ids=None, maxResults=None, sortOrder=None, type=None)</a></code></p>
-<p class="firstline">Retrieves a list of floodlight activity groups, possibly filtered.</p>
+<p class="firstline">Retrieves a list of floodlight activity groups, possibly filtered. This method supports paging.</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>
@@ -229,7 +229,7 @@
 
 <div class="method">
     <code class="details" id="list">list(profileId, advertiserId=None, searchString=None, pageToken=None, sortField=None, floodlightConfigurationId=None, ids=None, maxResults=None, sortOrder=None, type=None)</code>
-  <pre>Retrieves a list of floodlight activity groups, possibly filtered.
+  <pre>Retrieves a list of floodlight activity groups, possibly filtered. This method supports paging.
 
 Args:
   profileId: string, User profile ID associated with this request. (required)
diff --git a/docs/dyn/dfareporting_v2_6.inventoryItems.html b/docs/dyn/dfareporting_v2_6.inventoryItems.html
index 8154b32..611241b 100644
--- a/docs/dyn/dfareporting_v2_6.inventoryItems.html
+++ b/docs/dyn/dfareporting_v2_6.inventoryItems.html
@@ -79,7 +79,7 @@
 <p class="firstline">Gets one inventory item by ID.</p>
 <p class="toc_element">
   <code><a href="#list">list(profileId, projectId, pageToken=None, inPlan=None, sortOrder=None, type=None, orderId=None, maxResults=None, siteId=None, sortField=None, ids=None)</a></code></p>
-<p class="firstline">Retrieves a list of inventory items, possibly filtered.</p>
+<p class="firstline">Retrieves a list of inventory items, possibly filtered. This method supports paging.</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>
@@ -149,7 +149,7 @@
 
 <div class="method">
     <code class="details" id="list">list(profileId, projectId, pageToken=None, inPlan=None, sortOrder=None, type=None, orderId=None, maxResults=None, siteId=None, sortField=None, ids=None)</code>
-  <pre>Retrieves a list of inventory items, possibly filtered.
+  <pre>Retrieves a list of inventory items, possibly filtered. This method supports paging.
 
 Args:
   profileId: string, User profile ID associated with this request. (required)
diff --git a/docs/dyn/dfareporting_v2_6.orderDocuments.html b/docs/dyn/dfareporting_v2_6.orderDocuments.html
index 527bb4b..c1e4b3d 100644
--- a/docs/dyn/dfareporting_v2_6.orderDocuments.html
+++ b/docs/dyn/dfareporting_v2_6.orderDocuments.html
@@ -79,7 +79,7 @@
 <p class="firstline">Gets one order document by ID.</p>
 <p class="toc_element">
   <code><a href="#list">list(profileId, projectId, pageToken=None, sortOrder=None, orderId=None, maxResults=None, siteId=None, approved=None, searchString=None, sortField=None, ids=None)</a></code></p>
-<p class="firstline">Retrieves a list of order documents, possibly filtered.</p>
+<p class="firstline">Retrieves a list of order documents, possibly filtered. This method supports paging.</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>
@@ -125,7 +125,7 @@
 
 <div class="method">
     <code class="details" id="list">list(profileId, projectId, pageToken=None, sortOrder=None, orderId=None, maxResults=None, siteId=None, approved=None, searchString=None, sortField=None, ids=None)</code>
-  <pre>Retrieves a list of order documents, possibly filtered.
+  <pre>Retrieves a list of order documents, possibly filtered. This method supports paging.
 
 Args:
   profileId: string, User profile ID associated with this request. (required)
diff --git a/docs/dyn/dfareporting_v2_6.orders.html b/docs/dyn/dfareporting_v2_6.orders.html
index 1060f32..a3aa09d 100644
--- a/docs/dyn/dfareporting_v2_6.orders.html
+++ b/docs/dyn/dfareporting_v2_6.orders.html
@@ -79,7 +79,7 @@
 <p class="firstline">Gets one order by ID.</p>
 <p class="toc_element">
   <code><a href="#list">list(profileId, projectId, searchString=None, pageToken=None, sortField=None, ids=None, maxResults=None, sortOrder=None, siteId=None)</a></code></p>
-<p class="firstline">Retrieves a list of orders, possibly filtered.</p>
+<p class="firstline">Retrieves a list of orders, possibly filtered. This method supports paging.</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>
@@ -138,7 +138,7 @@
 
 <div class="method">
     <code class="details" id="list">list(profileId, projectId, searchString=None, pageToken=None, sortField=None, ids=None, maxResults=None, sortOrder=None, siteId=None)</code>
-  <pre>Retrieves a list of orders, possibly filtered.
+  <pre>Retrieves a list of orders, possibly filtered. This method supports paging.
 
 Args:
   profileId: string, User profile ID associated with this request. (required)
diff --git a/docs/dyn/dfareporting_v2_6.placementGroups.html b/docs/dyn/dfareporting_v2_6.placementGroups.html
index fa14392..2aa4a29 100644
--- a/docs/dyn/dfareporting_v2_6.placementGroups.html
+++ b/docs/dyn/dfareporting_v2_6.placementGroups.html
@@ -82,7 +82,7 @@
 <p class="firstline">Inserts a new placement group.</p>
 <p class="toc_element">
   <code><a href="#list">list(profileId, siteIds=None, placementGroupType=None, pricingTypes=None, campaignIds=None, advertiserIds=None, pageToken=None, maxStartDate=None, sortOrder=None, maxEndDate=None, placementStrategyIds=None, contentCategoryIds=None, archived=None, maxResults=None, minStartDate=None, searchString=None, minEndDate=None, directorySiteIds=None, ids=None, sortField=None)</a></code></p>
-<p class="firstline">Retrieves a list of placement groups, possibly filtered.</p>
+<p class="firstline">Retrieves a list of placement groups, possibly filtered. This method supports paging.</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>
@@ -406,7 +406,7 @@
 
 <div class="method">
     <code class="details" id="list">list(profileId, siteIds=None, placementGroupType=None, pricingTypes=None, campaignIds=None, advertiserIds=None, pageToken=None, maxStartDate=None, sortOrder=None, maxEndDate=None, placementStrategyIds=None, contentCategoryIds=None, archived=None, maxResults=None, minStartDate=None, searchString=None, minEndDate=None, directorySiteIds=None, ids=None, sortField=None)</code>
-  <pre>Retrieves a list of placement groups, possibly filtered.
+  <pre>Retrieves a list of placement groups, possibly filtered. This method supports paging.
 
 Args:
   profileId: string, User profile ID associated with this request. (required)
diff --git a/docs/dyn/dfareporting_v2_6.placementStrategies.html b/docs/dyn/dfareporting_v2_6.placementStrategies.html
index f70d7d7..325f59a 100644
--- a/docs/dyn/dfareporting_v2_6.placementStrategies.html
+++ b/docs/dyn/dfareporting_v2_6.placementStrategies.html
@@ -85,7 +85,7 @@
 <p class="firstline">Inserts a new placement strategy.</p>
 <p class="toc_element">
   <code><a href="#list">list(profileId, searchString=None, pageToken=None, sortField=None, ids=None, maxResults=None, sortOrder=None)</a></code></p>
-<p class="firstline">Retrieves a list of placement strategies, possibly filtered.</p>
+<p class="firstline">Retrieves a list of placement strategies, possibly filtered. This method supports paging.</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>
@@ -155,7 +155,7 @@
 
 <div class="method">
     <code class="details" id="list">list(profileId, searchString=None, pageToken=None, sortField=None, ids=None, maxResults=None, sortOrder=None)</code>
-  <pre>Retrieves a list of placement strategies, possibly filtered.
+  <pre>Retrieves a list of placement strategies, possibly filtered. This method supports paging.
 
 Args:
   profileId: string, User profile ID associated with this request. (required)
diff --git a/docs/dyn/dfareporting_v2_6.placements.html b/docs/dyn/dfareporting_v2_6.placements.html
index 95794e2..19b17bc 100644
--- a/docs/dyn/dfareporting_v2_6.placements.html
+++ b/docs/dyn/dfareporting_v2_6.placements.html
@@ -85,7 +85,7 @@
 <p class="firstline">Inserts a new placement.</p>
 <p class="toc_element">
   <code><a href="#list">list(profileId, siteIds=None, paymentSource=None, pricingTypes=None, campaignIds=None, advertiserIds=None, sizeIds=None, pageToken=None, maxStartDate=None, sortOrder=None, maxEndDate=None, placementStrategyIds=None, contentCategoryIds=None, archived=None, maxResults=None, minStartDate=None, compatibilities=None, searchString=None, minEndDate=None, directorySiteIds=None, sortField=None, ids=None, groupIds=None)</a></code></p>
-<p class="firstline">Retrieves a list of placements, possibly filtered.</p>
+<p class="firstline">Retrieves a list of placements, possibly filtered. This method supports paging.</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>
@@ -580,7 +580,7 @@
 
 <div class="method">
     <code class="details" id="list">list(profileId, siteIds=None, paymentSource=None, pricingTypes=None, campaignIds=None, advertiserIds=None, sizeIds=None, pageToken=None, maxStartDate=None, sortOrder=None, maxEndDate=None, placementStrategyIds=None, contentCategoryIds=None, archived=None, maxResults=None, minStartDate=None, compatibilities=None, searchString=None, minEndDate=None, directorySiteIds=None, sortField=None, ids=None, groupIds=None)</code>
-  <pre>Retrieves a list of placements, possibly filtered.
+  <pre>Retrieves a list of placements, possibly filtered. This method supports paging.
 
 Args:
   profileId: string, User profile ID associated with this request. (required)
diff --git a/docs/dyn/dfareporting_v2_6.projects.html b/docs/dyn/dfareporting_v2_6.projects.html
index aec315b..a9ac1da 100644
--- a/docs/dyn/dfareporting_v2_6.projects.html
+++ b/docs/dyn/dfareporting_v2_6.projects.html
@@ -79,7 +79,7 @@
 <p class="firstline">Gets one project by ID.</p>
 <p class="toc_element">
   <code><a href="#list">list(profileId, searchString=None, pageToken=None, sortField=None, advertiserIds=None, ids=None, maxResults=None, sortOrder=None)</a></code></p>
-<p class="firstline">Retrieves a list of projects, possibly filtered.</p>
+<p class="firstline">Retrieves a list of projects, possibly filtered. This method supports paging.</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>
@@ -125,7 +125,7 @@
 
 <div class="method">
     <code class="details" id="list">list(profileId, searchString=None, pageToken=None, sortField=None, advertiserIds=None, ids=None, maxResults=None, sortOrder=None)</code>
-  <pre>Retrieves a list of projects, possibly filtered.
+  <pre>Retrieves a list of projects, possibly filtered. This method supports paging.
 
 Args:
   profileId: string, User profile ID associated with this request. (required)
diff --git a/docs/dyn/dfareporting_v2_6.remarketingLists.html b/docs/dyn/dfareporting_v2_6.remarketingLists.html
index ef430be..d85f1d8 100644
--- a/docs/dyn/dfareporting_v2_6.remarketingLists.html
+++ b/docs/dyn/dfareporting_v2_6.remarketingLists.html
@@ -82,7 +82,7 @@
 <p class="firstline">Inserts a new remarketing list.</p>
 <p class="toc_element">
   <code><a href="#list">list(profileId, advertiserId, name=None, pageToken=None, sortField=None, floodlightActivityId=None, maxResults=None, active=None, sortOrder=None)</a></code></p>
-<p class="firstline">Retrieves a list of remarketing lists, possibly filtered.</p>
+<p class="firstline">Retrieves a list of remarketing lists, possibly filtered. This method supports paging.</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>
@@ -247,7 +247,7 @@
 
 <div class="method">
     <code class="details" id="list">list(profileId, advertiserId, name=None, pageToken=None, sortField=None, floodlightActivityId=None, maxResults=None, active=None, sortOrder=None)</code>
-  <pre>Retrieves a list of remarketing lists, possibly filtered.
+  <pre>Retrieves a list of remarketing lists, possibly filtered. This method supports paging.
 
 Args:
   profileId: string, User profile ID associated with this request. (required)
diff --git a/docs/dyn/dfareporting_v2_6.sites.html b/docs/dyn/dfareporting_v2_6.sites.html
index db5442c..0b0556b 100644
--- a/docs/dyn/dfareporting_v2_6.sites.html
+++ b/docs/dyn/dfareporting_v2_6.sites.html
@@ -82,7 +82,7 @@
 <p class="firstline">Inserts a new site.</p>
 <p class="toc_element">
   <code><a href="#list">list(profileId, unmappedSite=None, campaignIds=None, acceptsInStreamVideoPlacements=None, pageToken=None, acceptsPublisherPaidPlacements=None, sortOrder=None, acceptsInterstitialPlacements=None, maxResults=None, adWordsSite=None, approved=None, searchString=None, subaccountId=None, directorySiteIds=None, sortField=None, ids=None)</a></code></p>
-<p class="firstline">Retrieves a list of sites, possibly filtered.</p>
+<p class="firstline">Retrieves a list of sites, possibly filtered. This method supports paging.</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>
@@ -298,7 +298,7 @@
 
 <div class="method">
     <code class="details" id="list">list(profileId, unmappedSite=None, campaignIds=None, acceptsInStreamVideoPlacements=None, pageToken=None, acceptsPublisherPaidPlacements=None, sortOrder=None, acceptsInterstitialPlacements=None, maxResults=None, adWordsSite=None, approved=None, searchString=None, subaccountId=None, directorySiteIds=None, sortField=None, ids=None)</code>
-  <pre>Retrieves a list of sites, possibly filtered.
+  <pre>Retrieves a list of sites, possibly filtered. This method supports paging.
 
 Args:
   profileId: string, User profile ID associated with this request. (required)
diff --git a/docs/dyn/dfareporting_v2_6.subaccounts.html b/docs/dyn/dfareporting_v2_6.subaccounts.html
index dc4987e..371cc86 100644
--- a/docs/dyn/dfareporting_v2_6.subaccounts.html
+++ b/docs/dyn/dfareporting_v2_6.subaccounts.html
@@ -82,7 +82,7 @@
 <p class="firstline">Inserts a new subaccount.</p>
 <p class="toc_element">
   <code><a href="#list">list(profileId, searchString=None, pageToken=None, sortField=None, ids=None, maxResults=None, sortOrder=None)</a></code></p>
-<p class="firstline">Gets a list of subaccounts, possibly filtered.</p>
+<p class="firstline">Gets a list of subaccounts, possibly filtered. This method supports paging.</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>
@@ -151,7 +151,7 @@
 
 <div class="method">
     <code class="details" id="list">list(profileId, searchString=None, pageToken=None, sortField=None, ids=None, maxResults=None, sortOrder=None)</code>
-  <pre>Gets a list of subaccounts, possibly filtered.
+  <pre>Gets a list of subaccounts, possibly filtered. This method supports paging.
 
 Args:
   profileId: string, User profile ID associated with this request. (required)
diff --git a/docs/dyn/dfareporting_v2_6.targetableRemarketingLists.html b/docs/dyn/dfareporting_v2_6.targetableRemarketingLists.html
index 4846a13..89df14b 100644
--- a/docs/dyn/dfareporting_v2_6.targetableRemarketingLists.html
+++ b/docs/dyn/dfareporting_v2_6.targetableRemarketingLists.html
@@ -79,7 +79,7 @@
 <p class="firstline">Gets one remarketing list by ID.</p>
 <p class="toc_element">
   <code><a href="#list">list(profileId, advertiserId, name=None, pageToken=None, sortField=None, maxResults=None, active=None, sortOrder=None)</a></code></p>
-<p class="firstline">Retrieves a list of targetable remarketing lists, possibly filtered.</p>
+<p class="firstline">Retrieves a list of targetable remarketing lists, possibly filtered. This method supports paging.</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>
@@ -120,7 +120,7 @@
 
 <div class="method">
     <code class="details" id="list">list(profileId, advertiserId, name=None, pageToken=None, sortField=None, maxResults=None, active=None, sortOrder=None)</code>
-  <pre>Retrieves a list of targetable remarketing lists, possibly filtered.
+  <pre>Retrieves a list of targetable remarketing lists, possibly filtered. This method supports paging.
 
 Args:
   profileId: string, User profile ID associated with this request. (required)
diff --git a/docs/dyn/dfareporting_v2_6.targetingTemplates.html b/docs/dyn/dfareporting_v2_6.targetingTemplates.html
index 916643d..862e8a0 100644
--- a/docs/dyn/dfareporting_v2_6.targetingTemplates.html
+++ b/docs/dyn/dfareporting_v2_6.targetingTemplates.html
@@ -82,7 +82,7 @@
 <p class="firstline">Inserts a new targeting template.</p>
 <p class="toc_element">
   <code><a href="#list">list(profileId, advertiserId=None, searchString=None, pageToken=None, sortField=None, ids=None, maxResults=None, sortOrder=None)</a></code></p>
-<p class="firstline">Retrieves a list of targeting templates, optionally filtered.</p>
+<p class="firstline">Retrieves a list of targeting templates, optionally filtered. This method supports paging.</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>
@@ -619,7 +619,7 @@
 
 <div class="method">
     <code class="details" id="list">list(profileId, advertiserId=None, searchString=None, pageToken=None, sortField=None, ids=None, maxResults=None, sortOrder=None)</code>
-  <pre>Retrieves a list of targeting templates, optionally filtered.
+  <pre>Retrieves a list of targeting templates, optionally filtered. This method supports paging.
 
 Args:
   profileId: string, User profile ID associated with this request. (required)
diff --git a/docs/dyn/dfareporting_v2_6.userRoles.html b/docs/dyn/dfareporting_v2_6.userRoles.html
index 1ae1367..a53ed14 100644
--- a/docs/dyn/dfareporting_v2_6.userRoles.html
+++ b/docs/dyn/dfareporting_v2_6.userRoles.html
@@ -85,7 +85,7 @@
 <p class="firstline">Inserts a new user role.</p>
 <p class="toc_element">
   <code><a href="#list">list(profileId, searchString=None, subaccountId=None, pageToken=None, ids=None, maxResults=None, accountUserRoleOnly=None, sortOrder=None, sortField=None)</a></code></p>
-<p class="firstline">Retrieves a list of user roles, possibly filtered.</p>
+<p class="firstline">Retrieves a list of user roles, possibly filtered. This method supports paging.</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>
@@ -191,7 +191,7 @@
 
 <div class="method">
     <code class="details" id="list">list(profileId, searchString=None, subaccountId=None, pageToken=None, ids=None, maxResults=None, accountUserRoleOnly=None, sortOrder=None, sortField=None)</code>
-  <pre>Retrieves a list of user roles, possibly filtered.
+  <pre>Retrieves a list of user roles, possibly filtered. This method supports paging.
 
 Args:
   profileId: string, User profile ID associated with this request. (required)
diff --git a/docs/dyn/dfareporting_v2_7.accountActiveAdSummaries.html b/docs/dyn/dfareporting_v2_7.accountActiveAdSummaries.html
new file mode 100644
index 0000000..7aab32f
--- /dev/null
+++ b/docs/dyn/dfareporting_v2_7.accountActiveAdSummaries.html
@@ -0,0 +1,101 @@
+<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="dfareporting_v2_7.html">DCM/DFA Reporting And Trafficking API</a> . <a href="dfareporting_v2_7.accountActiveAdSummaries.html">accountActiveAdSummaries</a></h1>
+<h2>Instance Methods</h2>
+<p class="toc_element">
+  <code><a href="#get">get(profileId, summaryAccountId)</a></code></p>
+<p class="firstline">Gets the account's active ad summary by account ID.</p>
+<h3>Method Details</h3>
+<div class="method">
+    <code class="details" id="get">get(profileId, summaryAccountId)</code>
+  <pre>Gets the account's active ad summary by account ID.
+
+Args:
+  profileId: string, User profile ID associated with this request. (required)
+  summaryAccountId: string, Account ID. (required)
+
+Returns:
+  An object of the form:
+
+    { # Gets a summary of active ads in an account.
+    "availableAds": "A String", # Ads that can be activated for the account.
+    "kind": "dfareporting#accountActiveAdSummary", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#accountActiveAdSummary".
+    "activeAdsLimitTier": "A String", # Maximum number of active ads allowed for the account.
+    "activeAds": "A String", # Ads that have been activated for the account
+    "accountId": "A String", # ID of the account.
+  }</pre>
+</div>
+
+</body></html>
\ No newline at end of file
diff --git a/docs/dyn/dfareporting_v2_7.accountPermissionGroups.html b/docs/dyn/dfareporting_v2_7.accountPermissionGroups.html
new file mode 100644
index 0000000..87d5016
--- /dev/null
+++ b/docs/dyn/dfareporting_v2_7.accountPermissionGroups.html
@@ -0,0 +1,124 @@
+<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="dfareporting_v2_7.html">DCM/DFA Reporting And Trafficking API</a> . <a href="dfareporting_v2_7.accountPermissionGroups.html">accountPermissionGroups</a></h1>
+<h2>Instance Methods</h2>
+<p class="toc_element">
+  <code><a href="#get">get(profileId, id)</a></code></p>
+<p class="firstline">Gets one account permission group by ID.</p>
+<p class="toc_element">
+  <code><a href="#list">list(profileId)</a></code></p>
+<p class="firstline">Retrieves the list of account permission groups.</p>
+<h3>Method Details</h3>
+<div class="method">
+    <code class="details" id="get">get(profileId, id)</code>
+  <pre>Gets one account permission group by ID.
+
+Args:
+  profileId: string, User profile ID associated with this request. (required)
+  id: string, Account permission group ID. (required)
+
+Returns:
+  An object of the form:
+
+    { # AccountPermissionGroups contains a mapping of permission group IDs to names. A permission group is a grouping of account permissions.
+    "kind": "dfareporting#accountPermissionGroup", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#accountPermissionGroup".
+    "id": "A String", # ID of this account permission group.
+    "name": "A String", # Name of this account permission group.
+  }</pre>
+</div>
+
+<div class="method">
+    <code class="details" id="list">list(profileId)</code>
+  <pre>Retrieves the list of account permission groups.
+
+Args:
+  profileId: string, User profile ID associated with this request. (required)
+
+Returns:
+  An object of the form:
+
+    { # Account Permission Group List Response
+    "kind": "dfareporting#accountPermissionGroupsListResponse", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#accountPermissionGroupsListResponse".
+    "accountPermissionGroups": [ # Account permission group collection.
+      { # AccountPermissionGroups contains a mapping of permission group IDs to names. A permission group is a grouping of account permissions.
+        "kind": "dfareporting#accountPermissionGroup", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#accountPermissionGroup".
+        "id": "A String", # ID of this account permission group.
+        "name": "A String", # Name of this account permission group.
+      },
+    ],
+  }</pre>
+</div>
+
+</body></html>
\ No newline at end of file
diff --git a/docs/dyn/dfareporting_v2_7.accountPermissions.html b/docs/dyn/dfareporting_v2_7.accountPermissions.html
new file mode 100644
index 0000000..868aca8
--- /dev/null
+++ b/docs/dyn/dfareporting_v2_7.accountPermissions.html
@@ -0,0 +1,142 @@
+<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="dfareporting_v2_7.html">DCM/DFA Reporting And Trafficking API</a> . <a href="dfareporting_v2_7.accountPermissions.html">accountPermissions</a></h1>
+<h2>Instance Methods</h2>
+<p class="toc_element">
+  <code><a href="#get">get(profileId, id)</a></code></p>
+<p class="firstline">Gets one account permission by ID.</p>
+<p class="toc_element">
+  <code><a href="#list">list(profileId)</a></code></p>
+<p class="firstline">Retrieves the list of account permissions.</p>
+<h3>Method Details</h3>
+<div class="method">
+    <code class="details" id="get">get(profileId, id)</code>
+  <pre>Gets one account permission by ID.
+
+Args:
+  profileId: string, User profile ID associated with this request. (required)
+  id: string, Account permission ID. (required)
+
+Returns:
+  An object of the form:
+
+    { # AccountPermissions contains information about a particular account permission. Some features of DCM require an account permission to be present in the account.
+    "kind": "dfareporting#accountPermission", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#accountPermission".
+    "name": "A String", # Name of this account permission.
+    "level": "A String", # Administrative level required to enable this account permission.
+    "permissionGroupId": "A String", # Permission group of this account permission.
+    "accountProfiles": [ # Account profiles associated with this account permission.
+        #
+        # Possible values are:
+        # - "ACCOUNT_PROFILE_BASIC"
+        # - "ACCOUNT_PROFILE_STANDARD"
+      "A String",
+    ],
+    "id": "A String", # ID of this account permission.
+  }</pre>
+</div>
+
+<div class="method">
+    <code class="details" id="list">list(profileId)</code>
+  <pre>Retrieves the list of account permissions.
+
+Args:
+  profileId: string, User profile ID associated with this request. (required)
+
+Returns:
+  An object of the form:
+
+    { # Account Permission List Response
+    "accountPermissions": [ # Account permission collection.
+      { # AccountPermissions contains information about a particular account permission. Some features of DCM require an account permission to be present in the account.
+        "kind": "dfareporting#accountPermission", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#accountPermission".
+        "name": "A String", # Name of this account permission.
+        "level": "A String", # Administrative level required to enable this account permission.
+        "permissionGroupId": "A String", # Permission group of this account permission.
+        "accountProfiles": [ # Account profiles associated with this account permission.
+            #
+            # Possible values are:
+            # - "ACCOUNT_PROFILE_BASIC"
+            # - "ACCOUNT_PROFILE_STANDARD"
+          "A String",
+        ],
+        "id": "A String", # ID of this account permission.
+      },
+    ],
+    "kind": "dfareporting#accountPermissionsListResponse", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#accountPermissionsListResponse".
+  }</pre>
+</div>
+
+</body></html>
\ No newline at end of file
diff --git a/docs/dyn/dfareporting_v2_7.accountUserProfiles.html b/docs/dyn/dfareporting_v2_7.accountUserProfiles.html
new file mode 100644
index 0000000..07e5477
--- /dev/null
+++ b/docs/dyn/dfareporting_v2_7.accountUserProfiles.html
@@ -0,0 +1,677 @@
+<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="dfareporting_v2_7.html">DCM/DFA Reporting And Trafficking API</a> . <a href="dfareporting_v2_7.accountUserProfiles.html">accountUserProfiles</a></h1>
+<h2>Instance Methods</h2>
+<p class="toc_element">
+  <code><a href="#get">get(profileId, id)</a></code></p>
+<p class="firstline">Gets one account user profile by ID.</p>
+<p class="toc_element">
+  <code><a href="#insert">insert(profileId, body)</a></code></p>
+<p class="firstline">Inserts a new account user profile.</p>
+<p class="toc_element">
+  <code><a href="#list">list(profileId, searchString=None, subaccountId=None, sortField=None, ids=None, maxResults=None, pageToken=None, sortOrder=None, userRoleId=None, active=None)</a></code></p>
+<p class="firstline">Retrieves a list of account user profiles, possibly filtered. This method supports paging.</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="#patch">patch(profileId, id, body)</a></code></p>
+<p class="firstline">Updates an existing account user profile. This method supports patch semantics.</p>
+<p class="toc_element">
+  <code><a href="#update">update(profileId, body)</a></code></p>
+<p class="firstline">Updates an existing account user profile.</p>
+<h3>Method Details</h3>
+<div class="method">
+    <code class="details" id="get">get(profileId, id)</code>
+  <pre>Gets one account user profile by ID.
+
+Args:
+  profileId: string, User profile ID associated with this request. (required)
+  id: string, User profile ID. (required)
+
+Returns:
+  An object of the form:
+
+    { # AccountUserProfiles contains properties of a DCM user profile. This resource is specifically for managing user profiles, whereas UserProfiles is for accessing the API.
+      "kind": "dfareporting#accountUserProfile", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#accountUserProfile".
+      "subaccountId": "A String", # Subaccount ID of the user profile. This is a read-only field that can be left blank.
+      "name": "A String", # Name of the user profile. This is a required field. Must be less than 64 characters long, must be globally unique, and cannot contain whitespace or any of the following characters: "&;"#%,".
+      "userRoleFilter": { # Object Filter. # Filter that describes which user roles are visible to the user profile.
+        "objectIds": [ # Applicable when status is ASSIGNED. The user has access to objects with these object IDs.
+          "A String",
+        ],
+        "status": "A String", # Status of the filter. NONE means the user has access to none of the objects. ALL means the user has access to all objects. ASSIGNED means the user has access to the objects with IDs in the objectIds list.
+        "kind": "dfareporting#objectFilter", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#objectFilter".
+      },
+      "locale": "A String", # Locale of the user profile. This is a required field.
+          # Acceptable values are:
+          # - "cs" (Czech)
+          # - "de" (German)
+          # - "en" (English)
+          # - "en-GB" (English United Kingdom)
+          # - "es" (Spanish)
+          # - "fr" (French)
+          # - "it" (Italian)
+          # - "ja" (Japanese)
+          # - "ko" (Korean)
+          # - "pl" (Polish)
+          # - "pt-BR" (Portuguese Brazil)
+          # - "ru" (Russian)
+          # - "sv" (Swedish)
+          # - "tr" (Turkish)
+          # - "zh-CN" (Chinese Simplified)
+          # - "zh-TW" (Chinese Traditional)
+      "siteFilter": { # Object Filter. # Filter that describes which sites are visible to the user profile.
+        "objectIds": [ # Applicable when status is ASSIGNED. The user has access to objects with these object IDs.
+          "A String",
+        ],
+        "status": "A String", # Status of the filter. NONE means the user has access to none of the objects. ALL means the user has access to all objects. ASSIGNED means the user has access to the objects with IDs in the objectIds list.
+        "kind": "dfareporting#objectFilter", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#objectFilter".
+      },
+      "comments": "A String", # Comments for this user profile.
+      "id": "A String", # ID of the user profile. This is a read-only, auto-generated field.
+      "advertiserFilter": { # Object Filter. # Filter that describes which advertisers are visible to the user profile.
+        "objectIds": [ # Applicable when status is ASSIGNED. The user has access to objects with these object IDs.
+          "A String",
+        ],
+        "status": "A String", # Status of the filter. NONE means the user has access to none of the objects. ALL means the user has access to all objects. ASSIGNED means the user has access to the objects with IDs in the objectIds list.
+        "kind": "dfareporting#objectFilter", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#objectFilter".
+      },
+      "campaignFilter": { # Object Filter. # Filter that describes which campaigns are visible to the user profile.
+        "objectIds": [ # Applicable when status is ASSIGNED. The user has access to objects with these object IDs.
+          "A String",
+        ],
+        "status": "A String", # Status of the filter. NONE means the user has access to none of the objects. ALL means the user has access to all objects. ASSIGNED means the user has access to the objects with IDs in the objectIds list.
+        "kind": "dfareporting#objectFilter", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#objectFilter".
+      },
+      "userRoleId": "A String", # User role ID of the user profile. This is a required field.
+      "userAccessType": "A String", # User type of the user profile. This is a read-only field that can be left blank.
+      "traffickerType": "A String", # Trafficker type of this user profile.
+      "active": True or False, # Whether this user profile is active. This defaults to false, and must be set true on insert for the user profile to be usable.
+      "email": "A String", # Email of the user profile. The email addresss must be linked to a Google Account. This field is required on insertion and is read-only after insertion.
+      "accountId": "A String", # Account ID of the user profile. This is a read-only field that can be left blank.
+    }</pre>
+</div>
+
+<div class="method">
+    <code class="details" id="insert">insert(profileId, body)</code>
+  <pre>Inserts a new account user profile.
+
+Args:
+  profileId: string, User profile ID associated with this request. (required)
+  body: object, The request body. (required)
+    The object takes the form of:
+
+{ # AccountUserProfiles contains properties of a DCM user profile. This resource is specifically for managing user profiles, whereas UserProfiles is for accessing the API.
+    "kind": "dfareporting#accountUserProfile", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#accountUserProfile".
+    "subaccountId": "A String", # Subaccount ID of the user profile. This is a read-only field that can be left blank.
+    "name": "A String", # Name of the user profile. This is a required field. Must be less than 64 characters long, must be globally unique, and cannot contain whitespace or any of the following characters: "&;"#%,".
+    "userRoleFilter": { # Object Filter. # Filter that describes which user roles are visible to the user profile.
+      "objectIds": [ # Applicable when status is ASSIGNED. The user has access to objects with these object IDs.
+        "A String",
+      ],
+      "status": "A String", # Status of the filter. NONE means the user has access to none of the objects. ALL means the user has access to all objects. ASSIGNED means the user has access to the objects with IDs in the objectIds list.
+      "kind": "dfareporting#objectFilter", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#objectFilter".
+    },
+    "locale": "A String", # Locale of the user profile. This is a required field.
+        # Acceptable values are:
+        # - "cs" (Czech)
+        # - "de" (German)
+        # - "en" (English)
+        # - "en-GB" (English United Kingdom)
+        # - "es" (Spanish)
+        # - "fr" (French)
+        # - "it" (Italian)
+        # - "ja" (Japanese)
+        # - "ko" (Korean)
+        # - "pl" (Polish)
+        # - "pt-BR" (Portuguese Brazil)
+        # - "ru" (Russian)
+        # - "sv" (Swedish)
+        # - "tr" (Turkish)
+        # - "zh-CN" (Chinese Simplified)
+        # - "zh-TW" (Chinese Traditional)
+    "siteFilter": { # Object Filter. # Filter that describes which sites are visible to the user profile.
+      "objectIds": [ # Applicable when status is ASSIGNED. The user has access to objects with these object IDs.
+        "A String",
+      ],
+      "status": "A String", # Status of the filter. NONE means the user has access to none of the objects. ALL means the user has access to all objects. ASSIGNED means the user has access to the objects with IDs in the objectIds list.
+      "kind": "dfareporting#objectFilter", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#objectFilter".
+    },
+    "comments": "A String", # Comments for this user profile.
+    "id": "A String", # ID of the user profile. This is a read-only, auto-generated field.
+    "advertiserFilter": { # Object Filter. # Filter that describes which advertisers are visible to the user profile.
+      "objectIds": [ # Applicable when status is ASSIGNED. The user has access to objects with these object IDs.
+        "A String",
+      ],
+      "status": "A String", # Status of the filter. NONE means the user has access to none of the objects. ALL means the user has access to all objects. ASSIGNED means the user has access to the objects with IDs in the objectIds list.
+      "kind": "dfareporting#objectFilter", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#objectFilter".
+    },
+    "campaignFilter": { # Object Filter. # Filter that describes which campaigns are visible to the user profile.
+      "objectIds": [ # Applicable when status is ASSIGNED. The user has access to objects with these object IDs.
+        "A String",
+      ],
+      "status": "A String", # Status of the filter. NONE means the user has access to none of the objects. ALL means the user has access to all objects. ASSIGNED means the user has access to the objects with IDs in the objectIds list.
+      "kind": "dfareporting#objectFilter", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#objectFilter".
+    },
+    "userRoleId": "A String", # User role ID of the user profile. This is a required field.
+    "userAccessType": "A String", # User type of the user profile. This is a read-only field that can be left blank.
+    "traffickerType": "A String", # Trafficker type of this user profile.
+    "active": True or False, # Whether this user profile is active. This defaults to false, and must be set true on insert for the user profile to be usable.
+    "email": "A String", # Email of the user profile. The email addresss must be linked to a Google Account. This field is required on insertion and is read-only after insertion.
+    "accountId": "A String", # Account ID of the user profile. This is a read-only field that can be left blank.
+  }
+
+
+Returns:
+  An object of the form:
+
+    { # AccountUserProfiles contains properties of a DCM user profile. This resource is specifically for managing user profiles, whereas UserProfiles is for accessing the API.
+      "kind": "dfareporting#accountUserProfile", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#accountUserProfile".
+      "subaccountId": "A String", # Subaccount ID of the user profile. This is a read-only field that can be left blank.
+      "name": "A String", # Name of the user profile. This is a required field. Must be less than 64 characters long, must be globally unique, and cannot contain whitespace or any of the following characters: "&;"#%,".
+      "userRoleFilter": { # Object Filter. # Filter that describes which user roles are visible to the user profile.
+        "objectIds": [ # Applicable when status is ASSIGNED. The user has access to objects with these object IDs.
+          "A String",
+        ],
+        "status": "A String", # Status of the filter. NONE means the user has access to none of the objects. ALL means the user has access to all objects. ASSIGNED means the user has access to the objects with IDs in the objectIds list.
+        "kind": "dfareporting#objectFilter", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#objectFilter".
+      },
+      "locale": "A String", # Locale of the user profile. This is a required field.
+          # Acceptable values are:
+          # - "cs" (Czech)
+          # - "de" (German)
+          # - "en" (English)
+          # - "en-GB" (English United Kingdom)
+          # - "es" (Spanish)
+          # - "fr" (French)
+          # - "it" (Italian)
+          # - "ja" (Japanese)
+          # - "ko" (Korean)
+          # - "pl" (Polish)
+          # - "pt-BR" (Portuguese Brazil)
+          # - "ru" (Russian)
+          # - "sv" (Swedish)
+          # - "tr" (Turkish)
+          # - "zh-CN" (Chinese Simplified)
+          # - "zh-TW" (Chinese Traditional)
+      "siteFilter": { # Object Filter. # Filter that describes which sites are visible to the user profile.
+        "objectIds": [ # Applicable when status is ASSIGNED. The user has access to objects with these object IDs.
+          "A String",
+        ],
+        "status": "A String", # Status of the filter. NONE means the user has access to none of the objects. ALL means the user has access to all objects. ASSIGNED means the user has access to the objects with IDs in the objectIds list.
+        "kind": "dfareporting#objectFilter", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#objectFilter".
+      },
+      "comments": "A String", # Comments for this user profile.
+      "id": "A String", # ID of the user profile. This is a read-only, auto-generated field.
+      "advertiserFilter": { # Object Filter. # Filter that describes which advertisers are visible to the user profile.
+        "objectIds": [ # Applicable when status is ASSIGNED. The user has access to objects with these object IDs.
+          "A String",
+        ],
+        "status": "A String", # Status of the filter. NONE means the user has access to none of the objects. ALL means the user has access to all objects. ASSIGNED means the user has access to the objects with IDs in the objectIds list.
+        "kind": "dfareporting#objectFilter", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#objectFilter".
+      },
+      "campaignFilter": { # Object Filter. # Filter that describes which campaigns are visible to the user profile.
+        "objectIds": [ # Applicable when status is ASSIGNED. The user has access to objects with these object IDs.
+          "A String",
+        ],
+        "status": "A String", # Status of the filter. NONE means the user has access to none of the objects. ALL means the user has access to all objects. ASSIGNED means the user has access to the objects with IDs in the objectIds list.
+        "kind": "dfareporting#objectFilter", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#objectFilter".
+      },
+      "userRoleId": "A String", # User role ID of the user profile. This is a required field.
+      "userAccessType": "A String", # User type of the user profile. This is a read-only field that can be left blank.
+      "traffickerType": "A String", # Trafficker type of this user profile.
+      "active": True or False, # Whether this user profile is active. This defaults to false, and must be set true on insert for the user profile to be usable.
+      "email": "A String", # Email of the user profile. The email addresss must be linked to a Google Account. This field is required on insertion and is read-only after insertion.
+      "accountId": "A String", # Account ID of the user profile. This is a read-only field that can be left blank.
+    }</pre>
+</div>
+
+<div class="method">
+    <code class="details" id="list">list(profileId, searchString=None, subaccountId=None, sortField=None, ids=None, maxResults=None, pageToken=None, sortOrder=None, userRoleId=None, active=None)</code>
+  <pre>Retrieves a list of account user profiles, possibly filtered. This method supports paging.
+
+Args:
+  profileId: string, User profile ID associated with this request. (required)
+  searchString: string, Allows searching for objects by name, ID or email. Wildcards (*) are allowed. For example, "user profile*2015" will return objects with names like "user profile June 2015", "user profile April 2015", or simply "user profile 2015". Most of the searches also add wildcards implicitly at the start and the end of the search string. For example, a search string of "user profile" will match objects with name "my user profile", "user profile 2015", or simply "user profile".
+  subaccountId: string, Select only user profiles with the specified subaccount ID.
+  sortField: string, Field by which to sort the list.
+    Allowed values
+      ID - 
+      NAME - 
+  ids: string, Select only user profiles with these IDs. (repeated)
+  maxResults: integer, Maximum number of results to return.
+  pageToken: string, Value of the nextPageToken from the previous result page.
+  sortOrder: string, Order of sorted results, default is ASCENDING.
+    Allowed values
+      ASCENDING - 
+      DESCENDING - 
+  userRoleId: string, Select only user profiles with the specified user role ID.
+  active: boolean, Select only active user profiles.
+
+Returns:
+  An object of the form:
+
+    { # Account User Profile List Response
+    "nextPageToken": "A String", # Pagination token to be used for the next list operation.
+    "accountUserProfiles": [ # Account user profile collection.
+      { # AccountUserProfiles contains properties of a DCM user profile. This resource is specifically for managing user profiles, whereas UserProfiles is for accessing the API.
+          "kind": "dfareporting#accountUserProfile", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#accountUserProfile".
+          "subaccountId": "A String", # Subaccount ID of the user profile. This is a read-only field that can be left blank.
+          "name": "A String", # Name of the user profile. This is a required field. Must be less than 64 characters long, must be globally unique, and cannot contain whitespace or any of the following characters: "&;"#%,".
+          "userRoleFilter": { # Object Filter. # Filter that describes which user roles are visible to the user profile.
+            "objectIds": [ # Applicable when status is ASSIGNED. The user has access to objects with these object IDs.
+              "A String",
+            ],
+            "status": "A String", # Status of the filter. NONE means the user has access to none of the objects. ALL means the user has access to all objects. ASSIGNED means the user has access to the objects with IDs in the objectIds list.
+            "kind": "dfareporting#objectFilter", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#objectFilter".
+          },
+          "locale": "A String", # Locale of the user profile. This is a required field.
+              # Acceptable values are:
+              # - "cs" (Czech)
+              # - "de" (German)
+              # - "en" (English)
+              # - "en-GB" (English United Kingdom)
+              # - "es" (Spanish)
+              # - "fr" (French)
+              # - "it" (Italian)
+              # - "ja" (Japanese)
+              # - "ko" (Korean)
+              # - "pl" (Polish)
+              # - "pt-BR" (Portuguese Brazil)
+              # - "ru" (Russian)
+              # - "sv" (Swedish)
+              # - "tr" (Turkish)
+              # - "zh-CN" (Chinese Simplified)
+              # - "zh-TW" (Chinese Traditional)
+          "siteFilter": { # Object Filter. # Filter that describes which sites are visible to the user profile.
+            "objectIds": [ # Applicable when status is ASSIGNED. The user has access to objects with these object IDs.
+              "A String",
+            ],
+            "status": "A String", # Status of the filter. NONE means the user has access to none of the objects. ALL means the user has access to all objects. ASSIGNED means the user has access to the objects with IDs in the objectIds list.
+            "kind": "dfareporting#objectFilter", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#objectFilter".
+          },
+          "comments": "A String", # Comments for this user profile.
+          "id": "A String", # ID of the user profile. This is a read-only, auto-generated field.
+          "advertiserFilter": { # Object Filter. # Filter that describes which advertisers are visible to the user profile.
+            "objectIds": [ # Applicable when status is ASSIGNED. The user has access to objects with these object IDs.
+              "A String",
+            ],
+            "status": "A String", # Status of the filter. NONE means the user has access to none of the objects. ALL means the user has access to all objects. ASSIGNED means the user has access to the objects with IDs in the objectIds list.
+            "kind": "dfareporting#objectFilter", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#objectFilter".
+          },
+          "campaignFilter": { # Object Filter. # Filter that describes which campaigns are visible to the user profile.
+            "objectIds": [ # Applicable when status is ASSIGNED. The user has access to objects with these object IDs.
+              "A String",
+            ],
+            "status": "A String", # Status of the filter. NONE means the user has access to none of the objects. ALL means the user has access to all objects. ASSIGNED means the user has access to the objects with IDs in the objectIds list.
+            "kind": "dfareporting#objectFilter", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#objectFilter".
+          },
+          "userRoleId": "A String", # User role ID of the user profile. This is a required field.
+          "userAccessType": "A String", # User type of the user profile. This is a read-only field that can be left blank.
+          "traffickerType": "A String", # Trafficker type of this user profile.
+          "active": True or False, # Whether this user profile is active. This defaults to false, and must be set true on insert for the user profile to be usable.
+          "email": "A String", # Email of the user profile. The email addresss must be linked to a Google Account. This field is required on insertion and is read-only after insertion.
+          "accountId": "A String", # Account ID of the user profile. This is a read-only field that can be left blank.
+        },
+    ],
+    "kind": "dfareporting#accountUserProfilesListResponse", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#accountUserProfilesListResponse".
+  }</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="patch">patch(profileId, id, body)</code>
+  <pre>Updates an existing account user profile. This method supports patch semantics.
+
+Args:
+  profileId: string, User profile ID associated with this request. (required)
+  id: string, User profile ID. (required)
+  body: object, The request body. (required)
+    The object takes the form of:
+
+{ # AccountUserProfiles contains properties of a DCM user profile. This resource is specifically for managing user profiles, whereas UserProfiles is for accessing the API.
+    "kind": "dfareporting#accountUserProfile", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#accountUserProfile".
+    "subaccountId": "A String", # Subaccount ID of the user profile. This is a read-only field that can be left blank.
+    "name": "A String", # Name of the user profile. This is a required field. Must be less than 64 characters long, must be globally unique, and cannot contain whitespace or any of the following characters: "&;"#%,".
+    "userRoleFilter": { # Object Filter. # Filter that describes which user roles are visible to the user profile.
+      "objectIds": [ # Applicable when status is ASSIGNED. The user has access to objects with these object IDs.
+        "A String",
+      ],
+      "status": "A String", # Status of the filter. NONE means the user has access to none of the objects. ALL means the user has access to all objects. ASSIGNED means the user has access to the objects with IDs in the objectIds list.
+      "kind": "dfareporting#objectFilter", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#objectFilter".
+    },
+    "locale": "A String", # Locale of the user profile. This is a required field.
+        # Acceptable values are:
+        # - "cs" (Czech)
+        # - "de" (German)
+        # - "en" (English)
+        # - "en-GB" (English United Kingdom)
+        # - "es" (Spanish)
+        # - "fr" (French)
+        # - "it" (Italian)
+        # - "ja" (Japanese)
+        # - "ko" (Korean)
+        # - "pl" (Polish)
+        # - "pt-BR" (Portuguese Brazil)
+        # - "ru" (Russian)
+        # - "sv" (Swedish)
+        # - "tr" (Turkish)
+        # - "zh-CN" (Chinese Simplified)
+        # - "zh-TW" (Chinese Traditional)
+    "siteFilter": { # Object Filter. # Filter that describes which sites are visible to the user profile.
+      "objectIds": [ # Applicable when status is ASSIGNED. The user has access to objects with these object IDs.
+        "A String",
+      ],
+      "status": "A String", # Status of the filter. NONE means the user has access to none of the objects. ALL means the user has access to all objects. ASSIGNED means the user has access to the objects with IDs in the objectIds list.
+      "kind": "dfareporting#objectFilter", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#objectFilter".
+    },
+    "comments": "A String", # Comments for this user profile.
+    "id": "A String", # ID of the user profile. This is a read-only, auto-generated field.
+    "advertiserFilter": { # Object Filter. # Filter that describes which advertisers are visible to the user profile.
+      "objectIds": [ # Applicable when status is ASSIGNED. The user has access to objects with these object IDs.
+        "A String",
+      ],
+      "status": "A String", # Status of the filter. NONE means the user has access to none of the objects. ALL means the user has access to all objects. ASSIGNED means the user has access to the objects with IDs in the objectIds list.
+      "kind": "dfareporting#objectFilter", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#objectFilter".
+    },
+    "campaignFilter": { # Object Filter. # Filter that describes which campaigns are visible to the user profile.
+      "objectIds": [ # Applicable when status is ASSIGNED. The user has access to objects with these object IDs.
+        "A String",
+      ],
+      "status": "A String", # Status of the filter. NONE means the user has access to none of the objects. ALL means the user has access to all objects. ASSIGNED means the user has access to the objects with IDs in the objectIds list.
+      "kind": "dfareporting#objectFilter", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#objectFilter".
+    },
+    "userRoleId": "A String", # User role ID of the user profile. This is a required field.
+    "userAccessType": "A String", # User type of the user profile. This is a read-only field that can be left blank.
+    "traffickerType": "A String", # Trafficker type of this user profile.
+    "active": True or False, # Whether this user profile is active. This defaults to false, and must be set true on insert for the user profile to be usable.
+    "email": "A String", # Email of the user profile. The email addresss must be linked to a Google Account. This field is required on insertion and is read-only after insertion.
+    "accountId": "A String", # Account ID of the user profile. This is a read-only field that can be left blank.
+  }
+
+
+Returns:
+  An object of the form:
+
+    { # AccountUserProfiles contains properties of a DCM user profile. This resource is specifically for managing user profiles, whereas UserProfiles is for accessing the API.
+      "kind": "dfareporting#accountUserProfile", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#accountUserProfile".
+      "subaccountId": "A String", # Subaccount ID of the user profile. This is a read-only field that can be left blank.
+      "name": "A String", # Name of the user profile. This is a required field. Must be less than 64 characters long, must be globally unique, and cannot contain whitespace or any of the following characters: "&;"#%,".
+      "userRoleFilter": { # Object Filter. # Filter that describes which user roles are visible to the user profile.
+        "objectIds": [ # Applicable when status is ASSIGNED. The user has access to objects with these object IDs.
+          "A String",
+        ],
+        "status": "A String", # Status of the filter. NONE means the user has access to none of the objects. ALL means the user has access to all objects. ASSIGNED means the user has access to the objects with IDs in the objectIds list.
+        "kind": "dfareporting#objectFilter", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#objectFilter".
+      },
+      "locale": "A String", # Locale of the user profile. This is a required field.
+          # Acceptable values are:
+          # - "cs" (Czech)
+          # - "de" (German)
+          # - "en" (English)
+          # - "en-GB" (English United Kingdom)
+          # - "es" (Spanish)
+          # - "fr" (French)
+          # - "it" (Italian)
+          # - "ja" (Japanese)
+          # - "ko" (Korean)
+          # - "pl" (Polish)
+          # - "pt-BR" (Portuguese Brazil)
+          # - "ru" (Russian)
+          # - "sv" (Swedish)
+          # - "tr" (Turkish)
+          # - "zh-CN" (Chinese Simplified)
+          # - "zh-TW" (Chinese Traditional)
+      "siteFilter": { # Object Filter. # Filter that describes which sites are visible to the user profile.
+        "objectIds": [ # Applicable when status is ASSIGNED. The user has access to objects with these object IDs.
+          "A String",
+        ],
+        "status": "A String", # Status of the filter. NONE means the user has access to none of the objects. ALL means the user has access to all objects. ASSIGNED means the user has access to the objects with IDs in the objectIds list.
+        "kind": "dfareporting#objectFilter", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#objectFilter".
+      },
+      "comments": "A String", # Comments for this user profile.
+      "id": "A String", # ID of the user profile. This is a read-only, auto-generated field.
+      "advertiserFilter": { # Object Filter. # Filter that describes which advertisers are visible to the user profile.
+        "objectIds": [ # Applicable when status is ASSIGNED. The user has access to objects with these object IDs.
+          "A String",
+        ],
+        "status": "A String", # Status of the filter. NONE means the user has access to none of the objects. ALL means the user has access to all objects. ASSIGNED means the user has access to the objects with IDs in the objectIds list.
+        "kind": "dfareporting#objectFilter", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#objectFilter".
+      },
+      "campaignFilter": { # Object Filter. # Filter that describes which campaigns are visible to the user profile.
+        "objectIds": [ # Applicable when status is ASSIGNED. The user has access to objects with these object IDs.
+          "A String",
+        ],
+        "status": "A String", # Status of the filter. NONE means the user has access to none of the objects. ALL means the user has access to all objects. ASSIGNED means the user has access to the objects with IDs in the objectIds list.
+        "kind": "dfareporting#objectFilter", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#objectFilter".
+      },
+      "userRoleId": "A String", # User role ID of the user profile. This is a required field.
+      "userAccessType": "A String", # User type of the user profile. This is a read-only field that can be left blank.
+      "traffickerType": "A String", # Trafficker type of this user profile.
+      "active": True or False, # Whether this user profile is active. This defaults to false, and must be set true on insert for the user profile to be usable.
+      "email": "A String", # Email of the user profile. The email addresss must be linked to a Google Account. This field is required on insertion and is read-only after insertion.
+      "accountId": "A String", # Account ID of the user profile. This is a read-only field that can be left blank.
+    }</pre>
+</div>
+
+<div class="method">
+    <code class="details" id="update">update(profileId, body)</code>
+  <pre>Updates an existing account user profile.
+
+Args:
+  profileId: string, User profile ID associated with this request. (required)
+  body: object, The request body. (required)
+    The object takes the form of:
+
+{ # AccountUserProfiles contains properties of a DCM user profile. This resource is specifically for managing user profiles, whereas UserProfiles is for accessing the API.
+    "kind": "dfareporting#accountUserProfile", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#accountUserProfile".
+    "subaccountId": "A String", # Subaccount ID of the user profile. This is a read-only field that can be left blank.
+    "name": "A String", # Name of the user profile. This is a required field. Must be less than 64 characters long, must be globally unique, and cannot contain whitespace or any of the following characters: "&;"#%,".
+    "userRoleFilter": { # Object Filter. # Filter that describes which user roles are visible to the user profile.
+      "objectIds": [ # Applicable when status is ASSIGNED. The user has access to objects with these object IDs.
+        "A String",
+      ],
+      "status": "A String", # Status of the filter. NONE means the user has access to none of the objects. ALL means the user has access to all objects. ASSIGNED means the user has access to the objects with IDs in the objectIds list.
+      "kind": "dfareporting#objectFilter", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#objectFilter".
+    },
+    "locale": "A String", # Locale of the user profile. This is a required field.
+        # Acceptable values are:
+        # - "cs" (Czech)
+        # - "de" (German)
+        # - "en" (English)
+        # - "en-GB" (English United Kingdom)
+        # - "es" (Spanish)
+        # - "fr" (French)
+        # - "it" (Italian)
+        # - "ja" (Japanese)
+        # - "ko" (Korean)
+        # - "pl" (Polish)
+        # - "pt-BR" (Portuguese Brazil)
+        # - "ru" (Russian)
+        # - "sv" (Swedish)
+        # - "tr" (Turkish)
+        # - "zh-CN" (Chinese Simplified)
+        # - "zh-TW" (Chinese Traditional)
+    "siteFilter": { # Object Filter. # Filter that describes which sites are visible to the user profile.
+      "objectIds": [ # Applicable when status is ASSIGNED. The user has access to objects with these object IDs.
+        "A String",
+      ],
+      "status": "A String", # Status of the filter. NONE means the user has access to none of the objects. ALL means the user has access to all objects. ASSIGNED means the user has access to the objects with IDs in the objectIds list.
+      "kind": "dfareporting#objectFilter", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#objectFilter".
+    },
+    "comments": "A String", # Comments for this user profile.
+    "id": "A String", # ID of the user profile. This is a read-only, auto-generated field.
+    "advertiserFilter": { # Object Filter. # Filter that describes which advertisers are visible to the user profile.
+      "objectIds": [ # Applicable when status is ASSIGNED. The user has access to objects with these object IDs.
+        "A String",
+      ],
+      "status": "A String", # Status of the filter. NONE means the user has access to none of the objects. ALL means the user has access to all objects. ASSIGNED means the user has access to the objects with IDs in the objectIds list.
+      "kind": "dfareporting#objectFilter", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#objectFilter".
+    },
+    "campaignFilter": { # Object Filter. # Filter that describes which campaigns are visible to the user profile.
+      "objectIds": [ # Applicable when status is ASSIGNED. The user has access to objects with these object IDs.
+        "A String",
+      ],
+      "status": "A String", # Status of the filter. NONE means the user has access to none of the objects. ALL means the user has access to all objects. ASSIGNED means the user has access to the objects with IDs in the objectIds list.
+      "kind": "dfareporting#objectFilter", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#objectFilter".
+    },
+    "userRoleId": "A String", # User role ID of the user profile. This is a required field.
+    "userAccessType": "A String", # User type of the user profile. This is a read-only field that can be left blank.
+    "traffickerType": "A String", # Trafficker type of this user profile.
+    "active": True or False, # Whether this user profile is active. This defaults to false, and must be set true on insert for the user profile to be usable.
+    "email": "A String", # Email of the user profile. The email addresss must be linked to a Google Account. This field is required on insertion and is read-only after insertion.
+    "accountId": "A String", # Account ID of the user profile. This is a read-only field that can be left blank.
+  }
+
+
+Returns:
+  An object of the form:
+
+    { # AccountUserProfiles contains properties of a DCM user profile. This resource is specifically for managing user profiles, whereas UserProfiles is for accessing the API.
+      "kind": "dfareporting#accountUserProfile", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#accountUserProfile".
+      "subaccountId": "A String", # Subaccount ID of the user profile. This is a read-only field that can be left blank.
+      "name": "A String", # Name of the user profile. This is a required field. Must be less than 64 characters long, must be globally unique, and cannot contain whitespace or any of the following characters: "&;"#%,".
+      "userRoleFilter": { # Object Filter. # Filter that describes which user roles are visible to the user profile.
+        "objectIds": [ # Applicable when status is ASSIGNED. The user has access to objects with these object IDs.
+          "A String",
+        ],
+        "status": "A String", # Status of the filter. NONE means the user has access to none of the objects. ALL means the user has access to all objects. ASSIGNED means the user has access to the objects with IDs in the objectIds list.
+        "kind": "dfareporting#objectFilter", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#objectFilter".
+      },
+      "locale": "A String", # Locale of the user profile. This is a required field.
+          # Acceptable values are:
+          # - "cs" (Czech)
+          # - "de" (German)
+          # - "en" (English)
+          # - "en-GB" (English United Kingdom)
+          # - "es" (Spanish)
+          # - "fr" (French)
+          # - "it" (Italian)
+          # - "ja" (Japanese)
+          # - "ko" (Korean)
+          # - "pl" (Polish)
+          # - "pt-BR" (Portuguese Brazil)
+          # - "ru" (Russian)
+          # - "sv" (Swedish)
+          # - "tr" (Turkish)
+          # - "zh-CN" (Chinese Simplified)
+          # - "zh-TW" (Chinese Traditional)
+      "siteFilter": { # Object Filter. # Filter that describes which sites are visible to the user profile.
+        "objectIds": [ # Applicable when status is ASSIGNED. The user has access to objects with these object IDs.
+          "A String",
+        ],
+        "status": "A String", # Status of the filter. NONE means the user has access to none of the objects. ALL means the user has access to all objects. ASSIGNED means the user has access to the objects with IDs in the objectIds list.
+        "kind": "dfareporting#objectFilter", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#objectFilter".
+      },
+      "comments": "A String", # Comments for this user profile.
+      "id": "A String", # ID of the user profile. This is a read-only, auto-generated field.
+      "advertiserFilter": { # Object Filter. # Filter that describes which advertisers are visible to the user profile.
+        "objectIds": [ # Applicable when status is ASSIGNED. The user has access to objects with these object IDs.
+          "A String",
+        ],
+        "status": "A String", # Status of the filter. NONE means the user has access to none of the objects. ALL means the user has access to all objects. ASSIGNED means the user has access to the objects with IDs in the objectIds list.
+        "kind": "dfareporting#objectFilter", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#objectFilter".
+      },
+      "campaignFilter": { # Object Filter. # Filter that describes which campaigns are visible to the user profile.
+        "objectIds": [ # Applicable when status is ASSIGNED. The user has access to objects with these object IDs.
+          "A String",
+        ],
+        "status": "A String", # Status of the filter. NONE means the user has access to none of the objects. ALL means the user has access to all objects. ASSIGNED means the user has access to the objects with IDs in the objectIds list.
+        "kind": "dfareporting#objectFilter", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#objectFilter".
+      },
+      "userRoleId": "A String", # User role ID of the user profile. This is a required field.
+      "userAccessType": "A String", # User type of the user profile. This is a read-only field that can be left blank.
+      "traffickerType": "A String", # Trafficker type of this user profile.
+      "active": True or False, # Whether this user profile is active. This defaults to false, and must be set true on insert for the user profile to be usable.
+      "email": "A String", # Email of the user profile. The email addresss must be linked to a Google Account. This field is required on insertion and is read-only after insertion.
+      "accountId": "A String", # Account ID of the user profile. This is a read-only field that can be left blank.
+    }</pre>
+</div>
+
+</body></html>
\ No newline at end of file
diff --git a/docs/dyn/dfareporting_v2_7.accounts.html b/docs/dyn/dfareporting_v2_7.accounts.html
new file mode 100644
index 0000000..48a1a23
--- /dev/null
+++ b/docs/dyn/dfareporting_v2_7.accounts.html
@@ -0,0 +1,856 @@
+<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="dfareporting_v2_7.html">DCM/DFA Reporting And Trafficking API</a> . <a href="dfareporting_v2_7.accounts.html">accounts</a></h1>
+<h2>Instance Methods</h2>
+<p class="toc_element">
+  <code><a href="#get">get(profileId, id)</a></code></p>
+<p class="firstline">Gets one account by ID.</p>
+<p class="toc_element">
+  <code><a href="#list">list(profileId, searchString=None, sortField=None, ids=None, maxResults=None, pageToken=None, sortOrder=None, active=None)</a></code></p>
+<p class="firstline">Retrieves the list of accounts, possibly filtered. This method supports paging.</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="#patch">patch(profileId, id, body)</a></code></p>
+<p class="firstline">Updates an existing account. This method supports patch semantics.</p>
+<p class="toc_element">
+  <code><a href="#update">update(profileId, body)</a></code></p>
+<p class="firstline">Updates an existing account.</p>
+<h3>Method Details</h3>
+<div class="method">
+    <code class="details" id="get">get(profileId, id)</code>
+  <pre>Gets one account by ID.
+
+Args:
+  profileId: string, User profile ID associated with this request. (required)
+  id: string, Account ID. (required)
+
+Returns:
+  An object of the form:
+
+    { # Contains properties of a DCM account.
+      "kind": "dfareporting#account", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#account".
+      "countryId": "A String", # ID of the country associated with this account.
+      "availablePermissionIds": [ # User role permissions available to the user roles of this account.
+        "A String",
+      ],
+      "description": "A String", # Description of this account.
+      "maximumImageSize": "A String", # Maximum image size allowed for this account.
+      "currencyId": "A String", # ID of currency associated with this account. This is a required field.
+          # Acceptable values are:
+          # - "1" for USD
+          # - "2" for GBP
+          # - "3" for ESP
+          # - "4" for SEK
+          # - "5" for CAD
+          # - "6" for JPY
+          # - "7" for DEM
+          # - "8" for AUD
+          # - "9" for FRF
+          # - "10" for ITL
+          # - "11" for DKK
+          # - "12" for NOK
+          # - "13" for FIM
+          # - "14" for ZAR
+          # - "15" for IEP
+          # - "16" for NLG
+          # - "17" for EUR
+          # - "18" for KRW
+          # - "19" for TWD
+          # - "20" for SGD
+          # - "21" for CNY
+          # - "22" for HKD
+          # - "23" for NZD
+          # - "24" for MYR
+          # - "25" for BRL
+          # - "26" for PTE
+          # - "27" for MXP
+          # - "28" for CLP
+          # - "29" for TRY
+          # - "30" for ARS
+          # - "31" for PEN
+          # - "32" for ILS
+          # - "33" for CHF
+          # - "34" for VEF
+          # - "35" for COP
+          # - "36" for GTQ
+          # - "37" for PLN
+          # - "39" for INR
+          # - "40" for THB
+          # - "41" for IDR
+          # - "42" for CZK
+          # - "43" for RON
+          # - "44" for HUF
+          # - "45" for RUB
+          # - "46" for AED
+          # - "47" for BGN
+          # - "48" for HRK
+      "defaultCreativeSizeId": "A String", # Default placement dimensions for this account.
+      "accountPermissionIds": [ # Account permissions assigned to this account.
+        "A String",
+      ],
+      "nielsenOcrEnabled": True or False, # Whether campaigns created in this account will be enabled for Nielsen OCR reach ratings by default.
+      "accountProfile": "A String", # Profile for this account. This is a read-only field that can be left blank.
+      "name": "A String", # Name of this account. This is a required field, and must be less than 128 characters long and be globally unique.
+      "locale": "A String", # Locale of this account.
+          # Acceptable values are:
+          # - "cs" (Czech)
+          # - "de" (German)
+          # - "en" (English)
+          # - "en-GB" (English United Kingdom)
+          # - "es" (Spanish)
+          # - "fr" (French)
+          # - "it" (Italian)
+          # - "ja" (Japanese)
+          # - "ko" (Korean)
+          # - "pl" (Polish)
+          # - "pt-BR" (Portuguese Brazil)
+          # - "ru" (Russian)
+          # - "sv" (Swedish)
+          # - "tr" (Turkish)
+          # - "zh-CN" (Chinese Simplified)
+          # - "zh-TW" (Chinese Traditional)
+      "teaserSizeLimit": "A String", # File size limit in kilobytes of Rich Media teaser creatives. Must be between 1 and 10240.
+      "reportsConfiguration": { # Reporting Configuration # Reporting configuration of this account.
+        "reportGenerationTimeZoneId": "A String", # Report generation time zone ID of this account. This is a required field that can only be changed by a superuser.
+            # Acceptable values are:
+            #
+            # - "1" for "America/New_York"
+            # - "2" for "Europe/London"
+            # - "3" for "Europe/Paris"
+            # - "4" for "Africa/Johannesburg"
+            # - "5" for "Asia/Jerusalem"
+            # - "6" for "Asia/Shanghai"
+            # - "7" for "Asia/Hong_Kong"
+            # - "8" for "Asia/Tokyo"
+            # - "9" for "Australia/Sydney"
+            # - "10" for "Asia/Dubai"
+            # - "11" for "America/Los_Angeles"
+            # - "12" for "Pacific/Auckland"
+            # - "13" for "America/Sao_Paulo"
+        "exposureToConversionEnabled": True or False, # Whether the exposure to conversion report is enabled. This report shows detailed pathway information on up to 10 of the most recent ad exposures seen by a user before converting.
+        "lookbackConfiguration": { # Lookback configuration settings. # Default lookback windows for new advertisers in this account.
+          "clickDuration": 42, # Lookback window, in days, from the last time a given user clicked on one of your ads. If you enter 0, clicks will not be considered as triggering events for floodlight tracking. If you leave this field blank, the default value for your account will be used.
+          "postImpressionActivitiesDuration": 42, # Lookback window, in days, from the last time a given user viewed one of your ads. If you enter 0, impressions will not be considered as triggering events for floodlight tracking. If you leave this field blank, the default value for your account will be used.
+        },
+      },
+      "active": True or False, # Whether this account is active.
+      "activeViewOptOut": True or False, # Whether to serve creatives with Active View tags. If disabled, viewability data will not be available for any impressions.
+      "shareReportsWithTwitter": True or False, # Share Path to Conversion reports with Twitter.
+      "id": "A String", # ID of this account. This is a read-only, auto-generated field.
+      "activeAdsLimitTier": "A String", # Maximum number of active ads allowed for this account.
+    }</pre>
+</div>
+
+<div class="method">
+    <code class="details" id="list">list(profileId, searchString=None, sortField=None, ids=None, maxResults=None, pageToken=None, sortOrder=None, active=None)</code>
+  <pre>Retrieves the list of accounts, possibly filtered. This method supports paging.
+
+Args:
+  profileId: string, User profile ID associated with this request. (required)
+  searchString: string, Allows searching for objects by name or ID. Wildcards (*) are allowed. For example, "account*2015" will return objects with names like "account June 2015", "account April 2015", or simply "account 2015". Most of the searches also add wildcards implicitly at the start and the end of the search string. For example, a search string of "account" will match objects with name "my account", "account 2015", or simply "account".
+  sortField: string, Field by which to sort the list.
+    Allowed values
+      ID - 
+      NAME - 
+  ids: string, Select only accounts with these IDs. (repeated)
+  maxResults: integer, Maximum number of results to return.
+  pageToken: string, Value of the nextPageToken from the previous result page.
+  sortOrder: string, Order of sorted results, default is ASCENDING.
+    Allowed values
+      ASCENDING - 
+      DESCENDING - 
+  active: boolean, Select only active accounts. Don't set this field to select both active and non-active accounts.
+
+Returns:
+  An object of the form:
+
+    { # Account List Response
+    "nextPageToken": "A String", # Pagination token to be used for the next list operation.
+    "kind": "dfareporting#accountsListResponse", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#accountsListResponse".
+    "accounts": [ # Account collection.
+      { # Contains properties of a DCM account.
+          "kind": "dfareporting#account", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#account".
+          "countryId": "A String", # ID of the country associated with this account.
+          "availablePermissionIds": [ # User role permissions available to the user roles of this account.
+            "A String",
+          ],
+          "description": "A String", # Description of this account.
+          "maximumImageSize": "A String", # Maximum image size allowed for this account.
+          "currencyId": "A String", # ID of currency associated with this account. This is a required field.
+              # Acceptable values are:
+              # - "1" for USD
+              # - "2" for GBP
+              # - "3" for ESP
+              # - "4" for SEK
+              # - "5" for CAD
+              # - "6" for JPY
+              # - "7" for DEM
+              # - "8" for AUD
+              # - "9" for FRF
+              # - "10" for ITL
+              # - "11" for DKK
+              # - "12" for NOK
+              # - "13" for FIM
+              # - "14" for ZAR
+              # - "15" for IEP
+              # - "16" for NLG
+              # - "17" for EUR
+              # - "18" for KRW
+              # - "19" for TWD
+              # - "20" for SGD
+              # - "21" for CNY
+              # - "22" for HKD
+              # - "23" for NZD
+              # - "24" for MYR
+              # - "25" for BRL
+              # - "26" for PTE
+              # - "27" for MXP
+              # - "28" for CLP
+              # - "29" for TRY
+              # - "30" for ARS
+              # - "31" for PEN
+              # - "32" for ILS
+              # - "33" for CHF
+              # - "34" for VEF
+              # - "35" for COP
+              # - "36" for GTQ
+              # - "37" for PLN
+              # - "39" for INR
+              # - "40" for THB
+              # - "41" for IDR
+              # - "42" for CZK
+              # - "43" for RON
+              # - "44" for HUF
+              # - "45" for RUB
+              # - "46" for AED
+              # - "47" for BGN
+              # - "48" for HRK
+          "defaultCreativeSizeId": "A String", # Default placement dimensions for this account.
+          "accountPermissionIds": [ # Account permissions assigned to this account.
+            "A String",
+          ],
+          "nielsenOcrEnabled": True or False, # Whether campaigns created in this account will be enabled for Nielsen OCR reach ratings by default.
+          "accountProfile": "A String", # Profile for this account. This is a read-only field that can be left blank.
+          "name": "A String", # Name of this account. This is a required field, and must be less than 128 characters long and be globally unique.
+          "locale": "A String", # Locale of this account.
+              # Acceptable values are:
+              # - "cs" (Czech)
+              # - "de" (German)
+              # - "en" (English)
+              # - "en-GB" (English United Kingdom)
+              # - "es" (Spanish)
+              # - "fr" (French)
+              # - "it" (Italian)
+              # - "ja" (Japanese)
+              # - "ko" (Korean)
+              # - "pl" (Polish)
+              # - "pt-BR" (Portuguese Brazil)
+              # - "ru" (Russian)
+              # - "sv" (Swedish)
+              # - "tr" (Turkish)
+              # - "zh-CN" (Chinese Simplified)
+              # - "zh-TW" (Chinese Traditional)
+          "teaserSizeLimit": "A String", # File size limit in kilobytes of Rich Media teaser creatives. Must be between 1 and 10240.
+          "reportsConfiguration": { # Reporting Configuration # Reporting configuration of this account.
+            "reportGenerationTimeZoneId": "A String", # Report generation time zone ID of this account. This is a required field that can only be changed by a superuser.
+                # Acceptable values are:
+                #
+                # - "1" for "America/New_York"
+                # - "2" for "Europe/London"
+                # - "3" for "Europe/Paris"
+                # - "4" for "Africa/Johannesburg"
+                # - "5" for "Asia/Jerusalem"
+                # - "6" for "Asia/Shanghai"
+                # - "7" for "Asia/Hong_Kong"
+                # - "8" for "Asia/Tokyo"
+                # - "9" for "Australia/Sydney"
+                # - "10" for "Asia/Dubai"
+                # - "11" for "America/Los_Angeles"
+                # - "12" for "Pacific/Auckland"
+                # - "13" for "America/Sao_Paulo"
+            "exposureToConversionEnabled": True or False, # Whether the exposure to conversion report is enabled. This report shows detailed pathway information on up to 10 of the most recent ad exposures seen by a user before converting.
+            "lookbackConfiguration": { # Lookback configuration settings. # Default lookback windows for new advertisers in this account.
+              "clickDuration": 42, # Lookback window, in days, from the last time a given user clicked on one of your ads. If you enter 0, clicks will not be considered as triggering events for floodlight tracking. If you leave this field blank, the default value for your account will be used.
+              "postImpressionActivitiesDuration": 42, # Lookback window, in days, from the last time a given user viewed one of your ads. If you enter 0, impressions will not be considered as triggering events for floodlight tracking. If you leave this field blank, the default value for your account will be used.
+            },
+          },
+          "active": True or False, # Whether this account is active.
+          "activeViewOptOut": True or False, # Whether to serve creatives with Active View tags. If disabled, viewability data will not be available for any impressions.
+          "shareReportsWithTwitter": True or False, # Share Path to Conversion reports with Twitter.
+          "id": "A String", # ID of this account. This is a read-only, auto-generated field.
+          "activeAdsLimitTier": "A String", # Maximum number of active ads allowed for this account.
+        },
+    ],
+  }</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="patch">patch(profileId, id, body)</code>
+  <pre>Updates an existing account. This method supports patch semantics.
+
+Args:
+  profileId: string, User profile ID associated with this request. (required)
+  id: string, Account ID. (required)
+  body: object, The request body. (required)
+    The object takes the form of:
+
+{ # Contains properties of a DCM account.
+    "kind": "dfareporting#account", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#account".
+    "countryId": "A String", # ID of the country associated with this account.
+    "availablePermissionIds": [ # User role permissions available to the user roles of this account.
+      "A String",
+    ],
+    "description": "A String", # Description of this account.
+    "maximumImageSize": "A String", # Maximum image size allowed for this account.
+    "currencyId": "A String", # ID of currency associated with this account. This is a required field.
+        # Acceptable values are:
+        # - "1" for USD
+        # - "2" for GBP
+        # - "3" for ESP
+        # - "4" for SEK
+        # - "5" for CAD
+        # - "6" for JPY
+        # - "7" for DEM
+        # - "8" for AUD
+        # - "9" for FRF
+        # - "10" for ITL
+        # - "11" for DKK
+        # - "12" for NOK
+        # - "13" for FIM
+        # - "14" for ZAR
+        # - "15" for IEP
+        # - "16" for NLG
+        # - "17" for EUR
+        # - "18" for KRW
+        # - "19" for TWD
+        # - "20" for SGD
+        # - "21" for CNY
+        # - "22" for HKD
+        # - "23" for NZD
+        # - "24" for MYR
+        # - "25" for BRL
+        # - "26" for PTE
+        # - "27" for MXP
+        # - "28" for CLP
+        # - "29" for TRY
+        # - "30" for ARS
+        # - "31" for PEN
+        # - "32" for ILS
+        # - "33" for CHF
+        # - "34" for VEF
+        # - "35" for COP
+        # - "36" for GTQ
+        # - "37" for PLN
+        # - "39" for INR
+        # - "40" for THB
+        # - "41" for IDR
+        # - "42" for CZK
+        # - "43" for RON
+        # - "44" for HUF
+        # - "45" for RUB
+        # - "46" for AED
+        # - "47" for BGN
+        # - "48" for HRK
+    "defaultCreativeSizeId": "A String", # Default placement dimensions for this account.
+    "accountPermissionIds": [ # Account permissions assigned to this account.
+      "A String",
+    ],
+    "nielsenOcrEnabled": True or False, # Whether campaigns created in this account will be enabled for Nielsen OCR reach ratings by default.
+    "accountProfile": "A String", # Profile for this account. This is a read-only field that can be left blank.
+    "name": "A String", # Name of this account. This is a required field, and must be less than 128 characters long and be globally unique.
+    "locale": "A String", # Locale of this account.
+        # Acceptable values are:
+        # - "cs" (Czech)
+        # - "de" (German)
+        # - "en" (English)
+        # - "en-GB" (English United Kingdom)
+        # - "es" (Spanish)
+        # - "fr" (French)
+        # - "it" (Italian)
+        # - "ja" (Japanese)
+        # - "ko" (Korean)
+        # - "pl" (Polish)
+        # - "pt-BR" (Portuguese Brazil)
+        # - "ru" (Russian)
+        # - "sv" (Swedish)
+        # - "tr" (Turkish)
+        # - "zh-CN" (Chinese Simplified)
+        # - "zh-TW" (Chinese Traditional)
+    "teaserSizeLimit": "A String", # File size limit in kilobytes of Rich Media teaser creatives. Must be between 1 and 10240.
+    "reportsConfiguration": { # Reporting Configuration # Reporting configuration of this account.
+      "reportGenerationTimeZoneId": "A String", # Report generation time zone ID of this account. This is a required field that can only be changed by a superuser.
+          # Acceptable values are:
+          #
+          # - "1" for "America/New_York"
+          # - "2" for "Europe/London"
+          # - "3" for "Europe/Paris"
+          # - "4" for "Africa/Johannesburg"
+          # - "5" for "Asia/Jerusalem"
+          # - "6" for "Asia/Shanghai"
+          # - "7" for "Asia/Hong_Kong"
+          # - "8" for "Asia/Tokyo"
+          # - "9" for "Australia/Sydney"
+          # - "10" for "Asia/Dubai"
+          # - "11" for "America/Los_Angeles"
+          # - "12" for "Pacific/Auckland"
+          # - "13" for "America/Sao_Paulo"
+      "exposureToConversionEnabled": True or False, # Whether the exposure to conversion report is enabled. This report shows detailed pathway information on up to 10 of the most recent ad exposures seen by a user before converting.
+      "lookbackConfiguration": { # Lookback configuration settings. # Default lookback windows for new advertisers in this account.
+        "clickDuration": 42, # Lookback window, in days, from the last time a given user clicked on one of your ads. If you enter 0, clicks will not be considered as triggering events for floodlight tracking. If you leave this field blank, the default value for your account will be used.
+        "postImpressionActivitiesDuration": 42, # Lookback window, in days, from the last time a given user viewed one of your ads. If you enter 0, impressions will not be considered as triggering events for floodlight tracking. If you leave this field blank, the default value for your account will be used.
+      },
+    },
+    "active": True or False, # Whether this account is active.
+    "activeViewOptOut": True or False, # Whether to serve creatives with Active View tags. If disabled, viewability data will not be available for any impressions.
+    "shareReportsWithTwitter": True or False, # Share Path to Conversion reports with Twitter.
+    "id": "A String", # ID of this account. This is a read-only, auto-generated field.
+    "activeAdsLimitTier": "A String", # Maximum number of active ads allowed for this account.
+  }
+
+
+Returns:
+  An object of the form:
+
+    { # Contains properties of a DCM account.
+      "kind": "dfareporting#account", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#account".
+      "countryId": "A String", # ID of the country associated with this account.
+      "availablePermissionIds": [ # User role permissions available to the user roles of this account.
+        "A String",
+      ],
+      "description": "A String", # Description of this account.
+      "maximumImageSize": "A String", # Maximum image size allowed for this account.
+      "currencyId": "A String", # ID of currency associated with this account. This is a required field.
+          # Acceptable values are:
+          # - "1" for USD
+          # - "2" for GBP
+          # - "3" for ESP
+          # - "4" for SEK
+          # - "5" for CAD
+          # - "6" for JPY
+          # - "7" for DEM
+          # - "8" for AUD
+          # - "9" for FRF
+          # - "10" for ITL
+          # - "11" for DKK
+          # - "12" for NOK
+          # - "13" for FIM
+          # - "14" for ZAR
+          # - "15" for IEP
+          # - "16" for NLG
+          # - "17" for EUR
+          # - "18" for KRW
+          # - "19" for TWD
+          # - "20" for SGD
+          # - "21" for CNY
+          # - "22" for HKD
+          # - "23" for NZD
+          # - "24" for MYR
+          # - "25" for BRL
+          # - "26" for PTE
+          # - "27" for MXP
+          # - "28" for CLP
+          # - "29" for TRY
+          # - "30" for ARS
+          # - "31" for PEN
+          # - "32" for ILS
+          # - "33" for CHF
+          # - "34" for VEF
+          # - "35" for COP
+          # - "36" for GTQ
+          # - "37" for PLN
+          # - "39" for INR
+          # - "40" for THB
+          # - "41" for IDR
+          # - "42" for CZK
+          # - "43" for RON
+          # - "44" for HUF
+          # - "45" for RUB
+          # - "46" for AED
+          # - "47" for BGN
+          # - "48" for HRK
+      "defaultCreativeSizeId": "A String", # Default placement dimensions for this account.
+      "accountPermissionIds": [ # Account permissions assigned to this account.
+        "A String",
+      ],
+      "nielsenOcrEnabled": True or False, # Whether campaigns created in this account will be enabled for Nielsen OCR reach ratings by default.
+      "accountProfile": "A String", # Profile for this account. This is a read-only field that can be left blank.
+      "name": "A String", # Name of this account. This is a required field, and must be less than 128 characters long and be globally unique.
+      "locale": "A String", # Locale of this account.
+          # Acceptable values are:
+          # - "cs" (Czech)
+          # - "de" (German)
+          # - "en" (English)
+          # - "en-GB" (English United Kingdom)
+          # - "es" (Spanish)
+          # - "fr" (French)
+          # - "it" (Italian)
+          # - "ja" (Japanese)
+          # - "ko" (Korean)
+          # - "pl" (Polish)
+          # - "pt-BR" (Portuguese Brazil)
+          # - "ru" (Russian)
+          # - "sv" (Swedish)
+          # - "tr" (Turkish)
+          # - "zh-CN" (Chinese Simplified)
+          # - "zh-TW" (Chinese Traditional)
+      "teaserSizeLimit": "A String", # File size limit in kilobytes of Rich Media teaser creatives. Must be between 1 and 10240.
+      "reportsConfiguration": { # Reporting Configuration # Reporting configuration of this account.
+        "reportGenerationTimeZoneId": "A String", # Report generation time zone ID of this account. This is a required field that can only be changed by a superuser.
+            # Acceptable values are:
+            #
+            # - "1" for "America/New_York"
+            # - "2" for "Europe/London"
+            # - "3" for "Europe/Paris"
+            # - "4" for "Africa/Johannesburg"
+            # - "5" for "Asia/Jerusalem"
+            # - "6" for "Asia/Shanghai"
+            # - "7" for "Asia/Hong_Kong"
+            # - "8" for "Asia/Tokyo"
+            # - "9" for "Australia/Sydney"
+            # - "10" for "Asia/Dubai"
+            # - "11" for "America/Los_Angeles"
+            # - "12" for "Pacific/Auckland"
+            # - "13" for "America/Sao_Paulo"
+        "exposureToConversionEnabled": True or False, # Whether the exposure to conversion report is enabled. This report shows detailed pathway information on up to 10 of the most recent ad exposures seen by a user before converting.
+        "lookbackConfiguration": { # Lookback configuration settings. # Default lookback windows for new advertisers in this account.
+          "clickDuration": 42, # Lookback window, in days, from the last time a given user clicked on one of your ads. If you enter 0, clicks will not be considered as triggering events for floodlight tracking. If you leave this field blank, the default value for your account will be used.
+          "postImpressionActivitiesDuration": 42, # Lookback window, in days, from the last time a given user viewed one of your ads. If you enter 0, impressions will not be considered as triggering events for floodlight tracking. If you leave this field blank, the default value for your account will be used.
+        },
+      },
+      "active": True or False, # Whether this account is active.
+      "activeViewOptOut": True or False, # Whether to serve creatives with Active View tags. If disabled, viewability data will not be available for any impressions.
+      "shareReportsWithTwitter": True or False, # Share Path to Conversion reports with Twitter.
+      "id": "A String", # ID of this account. This is a read-only, auto-generated field.
+      "activeAdsLimitTier": "A String", # Maximum number of active ads allowed for this account.
+    }</pre>
+</div>
+
+<div class="method">
+    <code class="details" id="update">update(profileId, body)</code>
+  <pre>Updates an existing account.
+
+Args:
+  profileId: string, User profile ID associated with this request. (required)
+  body: object, The request body. (required)
+    The object takes the form of:
+
+{ # Contains properties of a DCM account.
+    "kind": "dfareporting#account", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#account".
+    "countryId": "A String", # ID of the country associated with this account.
+    "availablePermissionIds": [ # User role permissions available to the user roles of this account.
+      "A String",
+    ],
+    "description": "A String", # Description of this account.
+    "maximumImageSize": "A String", # Maximum image size allowed for this account.
+    "currencyId": "A String", # ID of currency associated with this account. This is a required field.
+        # Acceptable values are:
+        # - "1" for USD
+        # - "2" for GBP
+        # - "3" for ESP
+        # - "4" for SEK
+        # - "5" for CAD
+        # - "6" for JPY
+        # - "7" for DEM
+        # - "8" for AUD
+        # - "9" for FRF
+        # - "10" for ITL
+        # - "11" for DKK
+        # - "12" for NOK
+        # - "13" for FIM
+        # - "14" for ZAR
+        # - "15" for IEP
+        # - "16" for NLG
+        # - "17" for EUR
+        # - "18" for KRW
+        # - "19" for TWD
+        # - "20" for SGD
+        # - "21" for CNY
+        # - "22" for HKD
+        # - "23" for NZD
+        # - "24" for MYR
+        # - "25" for BRL
+        # - "26" for PTE
+        # - "27" for MXP
+        # - "28" for CLP
+        # - "29" for TRY
+        # - "30" for ARS
+        # - "31" for PEN
+        # - "32" for ILS
+        # - "33" for CHF
+        # - "34" for VEF
+        # - "35" for COP
+        # - "36" for GTQ
+        # - "37" for PLN
+        # - "39" for INR
+        # - "40" for THB
+        # - "41" for IDR
+        # - "42" for CZK
+        # - "43" for RON
+        # - "44" for HUF
+        # - "45" for RUB
+        # - "46" for AED
+        # - "47" for BGN
+        # - "48" for HRK
+    "defaultCreativeSizeId": "A String", # Default placement dimensions for this account.
+    "accountPermissionIds": [ # Account permissions assigned to this account.
+      "A String",
+    ],
+    "nielsenOcrEnabled": True or False, # Whether campaigns created in this account will be enabled for Nielsen OCR reach ratings by default.
+    "accountProfile": "A String", # Profile for this account. This is a read-only field that can be left blank.
+    "name": "A String", # Name of this account. This is a required field, and must be less than 128 characters long and be globally unique.
+    "locale": "A String", # Locale of this account.
+        # Acceptable values are:
+        # - "cs" (Czech)
+        # - "de" (German)
+        # - "en" (English)
+        # - "en-GB" (English United Kingdom)
+        # - "es" (Spanish)
+        # - "fr" (French)
+        # - "it" (Italian)
+        # - "ja" (Japanese)
+        # - "ko" (Korean)
+        # - "pl" (Polish)
+        # - "pt-BR" (Portuguese Brazil)
+        # - "ru" (Russian)
+        # - "sv" (Swedish)
+        # - "tr" (Turkish)
+        # - "zh-CN" (Chinese Simplified)
+        # - "zh-TW" (Chinese Traditional)
+    "teaserSizeLimit": "A String", # File size limit in kilobytes of Rich Media teaser creatives. Must be between 1 and 10240.
+    "reportsConfiguration": { # Reporting Configuration # Reporting configuration of this account.
+      "reportGenerationTimeZoneId": "A String", # Report generation time zone ID of this account. This is a required field that can only be changed by a superuser.
+          # Acceptable values are:
+          #
+          # - "1" for "America/New_York"
+          # - "2" for "Europe/London"
+          # - "3" for "Europe/Paris"
+          # - "4" for "Africa/Johannesburg"
+          # - "5" for "Asia/Jerusalem"
+          # - "6" for "Asia/Shanghai"
+          # - "7" for "Asia/Hong_Kong"
+          # - "8" for "Asia/Tokyo"
+          # - "9" for "Australia/Sydney"
+          # - "10" for "Asia/Dubai"
+          # - "11" for "America/Los_Angeles"
+          # - "12" for "Pacific/Auckland"
+          # - "13" for "America/Sao_Paulo"
+      "exposureToConversionEnabled": True or False, # Whether the exposure to conversion report is enabled. This report shows detailed pathway information on up to 10 of the most recent ad exposures seen by a user before converting.
+      "lookbackConfiguration": { # Lookback configuration settings. # Default lookback windows for new advertisers in this account.
+        "clickDuration": 42, # Lookback window, in days, from the last time a given user clicked on one of your ads. If you enter 0, clicks will not be considered as triggering events for floodlight tracking. If you leave this field blank, the default value for your account will be used.
+        "postImpressionActivitiesDuration": 42, # Lookback window, in days, from the last time a given user viewed one of your ads. If you enter 0, impressions will not be considered as triggering events for floodlight tracking. If you leave this field blank, the default value for your account will be used.
+      },
+    },
+    "active": True or False, # Whether this account is active.
+    "activeViewOptOut": True or False, # Whether to serve creatives with Active View tags. If disabled, viewability data will not be available for any impressions.
+    "shareReportsWithTwitter": True or False, # Share Path to Conversion reports with Twitter.
+    "id": "A String", # ID of this account. This is a read-only, auto-generated field.
+    "activeAdsLimitTier": "A String", # Maximum number of active ads allowed for this account.
+  }
+
+
+Returns:
+  An object of the form:
+
+    { # Contains properties of a DCM account.
+      "kind": "dfareporting#account", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#account".
+      "countryId": "A String", # ID of the country associated with this account.
+      "availablePermissionIds": [ # User role permissions available to the user roles of this account.
+        "A String",
+      ],
+      "description": "A String", # Description of this account.
+      "maximumImageSize": "A String", # Maximum image size allowed for this account.
+      "currencyId": "A String", # ID of currency associated with this account. This is a required field.
+          # Acceptable values are:
+          # - "1" for USD
+          # - "2" for GBP
+          # - "3" for ESP
+          # - "4" for SEK
+          # - "5" for CAD
+          # - "6" for JPY
+          # - "7" for DEM
+          # - "8" for AUD
+          # - "9" for FRF
+          # - "10" for ITL
+          # - "11" for DKK
+          # - "12" for NOK
+          # - "13" for FIM
+          # - "14" for ZAR
+          # - "15" for IEP
+          # - "16" for NLG
+          # - "17" for EUR
+          # - "18" for KRW
+          # - "19" for TWD
+          # - "20" for SGD
+          # - "21" for CNY
+          # - "22" for HKD
+          # - "23" for NZD
+          # - "24" for MYR
+          # - "25" for BRL
+          # - "26" for PTE
+          # - "27" for MXP
+          # - "28" for CLP
+          # - "29" for TRY
+          # - "30" for ARS
+          # - "31" for PEN
+          # - "32" for ILS
+          # - "33" for CHF
+          # - "34" for VEF
+          # - "35" for COP
+          # - "36" for GTQ
+          # - "37" for PLN
+          # - "39" for INR
+          # - "40" for THB
+          # - "41" for IDR
+          # - "42" for CZK
+          # - "43" for RON
+          # - "44" for HUF
+          # - "45" for RUB
+          # - "46" for AED
+          # - "47" for BGN
+          # - "48" for HRK
+      "defaultCreativeSizeId": "A String", # Default placement dimensions for this account.
+      "accountPermissionIds": [ # Account permissions assigned to this account.
+        "A String",
+      ],
+      "nielsenOcrEnabled": True or False, # Whether campaigns created in this account will be enabled for Nielsen OCR reach ratings by default.
+      "accountProfile": "A String", # Profile for this account. This is a read-only field that can be left blank.
+      "name": "A String", # Name of this account. This is a required field, and must be less than 128 characters long and be globally unique.
+      "locale": "A String", # Locale of this account.
+          # Acceptable values are:
+          # - "cs" (Czech)
+          # - "de" (German)
+          # - "en" (English)
+          # - "en-GB" (English United Kingdom)
+          # - "es" (Spanish)
+          # - "fr" (French)
+          # - "it" (Italian)
+          # - "ja" (Japanese)
+          # - "ko" (Korean)
+          # - "pl" (Polish)
+          # - "pt-BR" (Portuguese Brazil)
+          # - "ru" (Russian)
+          # - "sv" (Swedish)
+          # - "tr" (Turkish)
+          # - "zh-CN" (Chinese Simplified)
+          # - "zh-TW" (Chinese Traditional)
+      "teaserSizeLimit": "A String", # File size limit in kilobytes of Rich Media teaser creatives. Must be between 1 and 10240.
+      "reportsConfiguration": { # Reporting Configuration # Reporting configuration of this account.
+        "reportGenerationTimeZoneId": "A String", # Report generation time zone ID of this account. This is a required field that can only be changed by a superuser.
+            # Acceptable values are:
+            #
+            # - "1" for "America/New_York"
+            # - "2" for "Europe/London"
+            # - "3" for "Europe/Paris"
+            # - "4" for "Africa/Johannesburg"
+            # - "5" for "Asia/Jerusalem"
+            # - "6" for "Asia/Shanghai"
+            # - "7" for "Asia/Hong_Kong"
+            # - "8" for "Asia/Tokyo"
+            # - "9" for "Australia/Sydney"
+            # - "10" for "Asia/Dubai"
+            # - "11" for "America/Los_Angeles"
+            # - "12" for "Pacific/Auckland"
+            # - "13" for "America/Sao_Paulo"
+        "exposureToConversionEnabled": True or False, # Whether the exposure to conversion report is enabled. This report shows detailed pathway information on up to 10 of the most recent ad exposures seen by a user before converting.
+        "lookbackConfiguration": { # Lookback configuration settings. # Default lookback windows for new advertisers in this account.
+          "clickDuration": 42, # Lookback window, in days, from the last time a given user clicked on one of your ads. If you enter 0, clicks will not be considered as triggering events for floodlight tracking. If you leave this field blank, the default value for your account will be used.
+          "postImpressionActivitiesDuration": 42, # Lookback window, in days, from the last time a given user viewed one of your ads. If you enter 0, impressions will not be considered as triggering events for floodlight tracking. If you leave this field blank, the default value for your account will be used.
+        },
+      },
+      "active": True or False, # Whether this account is active.
+      "activeViewOptOut": True or False, # Whether to serve creatives with Active View tags. If disabled, viewability data will not be available for any impressions.
+      "shareReportsWithTwitter": True or False, # Share Path to Conversion reports with Twitter.
+      "id": "A String", # ID of this account. This is a read-only, auto-generated field.
+      "activeAdsLimitTier": "A String", # Maximum number of active ads allowed for this account.
+    }</pre>
+</div>
+
+</body></html>
\ No newline at end of file
diff --git a/docs/dyn/dfareporting_v2_7.ads.html b/docs/dyn/dfareporting_v2_7.ads.html
new file mode 100644
index 0000000..dcbaa9e
--- /dev/null
+++ b/docs/dyn/dfareporting_v2_7.ads.html
@@ -0,0 +1,2958 @@
+<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="dfareporting_v2_7.html">DCM/DFA Reporting And Trafficking API</a> . <a href="dfareporting_v2_7.ads.html">ads</a></h1>
+<h2>Instance Methods</h2>
+<p class="toc_element">
+  <code><a href="#get">get(profileId, id)</a></code></p>
+<p class="firstline">Gets one ad by ID.</p>
+<p class="toc_element">
+  <code><a href="#insert">insert(profileId, body)</a></code></p>
+<p class="firstline">Inserts a new ad.</p>
+<p class="toc_element">
+  <code><a href="#list">list(profileId, landingPageIds=None, overriddenEventTagId=None, campaignIds=None, sizeIds=None, archived=None, creativeOptimizationConfigurationIds=None, sslCompliant=None, pageToken=None, sortOrder=None, type=None, sslRequired=None, creativeIds=None, remarketingListIds=None, maxResults=None, placementIds=None, active=None, compatibility=None, advertiserId=None, searchString=None, audienceSegmentIds=None, ids=None, sortField=None, dynamicClickTracker=None)</a></code></p>
+<p class="firstline">Retrieves a list of ads, possibly filtered. This method supports paging.</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="#patch">patch(profileId, id, body)</a></code></p>
+<p class="firstline">Updates an existing ad. This method supports patch semantics.</p>
+<p class="toc_element">
+  <code><a href="#update">update(profileId, body)</a></code></p>
+<p class="firstline">Updates an existing ad.</p>
+<h3>Method Details</h3>
+<div class="method">
+    <code class="details" id="get">get(profileId, id)</code>
+  <pre>Gets one ad by ID.
+
+Args:
+  profileId: string, User profile ID associated with this request. (required)
+  id: string, Ad ID. (required)
+
+Returns:
+  An object of the form:
+
+    { # Contains properties of a DCM ad.
+      "clickThroughUrlSuffixProperties": { # Click Through URL Suffix settings. # Click-through URL suffix properties for this ad. Applies to the URL in the ad or (if overriding ad properties) the URL in the creative.
+        "clickThroughUrlSuffix": "A String", # Click-through URL suffix to apply to all ads in this entity's scope. Must be less than 128 characters long.
+        "overrideInheritedSuffix": True or False, # Whether this entity should override the inherited click-through URL suffix with its own defined value.
+      },
+      "campaignId": "A String", # Campaign ID of this ad. This is a required field on insertion.
+      "languageTargeting": { # Language Targeting. # Language targeting information for this ad. This field must be left blank if the ad is using a targeting template. Applicable when type is AD_SERVING_STANDARD_AD.
+        "languages": [ # Languages that this ad targets. For each language only languageId is required. The other fields are populated automatically when the ad is inserted or updated.
+          { # Contains information about a language that can be targeted by ads.
+            "languageCode": "A String", # Format of language code is an ISO 639 two-letter language code optionally followed by an underscore followed by an ISO 3166 code. Examples are "en" for English or "zh_CN" for Simplified Chinese.
+            "kind": "dfareporting#language", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#language".
+            "id": "A String", # Language ID of this language. This is the ID used for targeting and generating reports.
+            "name": "A String", # Name of this language.
+          },
+        ],
+      },
+      "advertiserId": "A String", # Advertiser ID of this ad. This is a required field on insertion.
+      "geoTargeting": { # Geographical Targeting. # Geographical targeting information for this ad. This field must be left blank if the ad is using a targeting template. Applicable when type is AD_SERVING_STANDARD_AD.
+        "countries": [ # Countries to be targeted or excluded from targeting, depending on the setting of the excludeCountries field. For each country only dartId is required. The other fields are populated automatically when the ad is inserted or updated. If targeting or excluding a country, do not target regions, cities, metros, or postal codes in the same country.
+          { # Contains information about a country that can be targeted by ads.
+            "dartId": "A String", # DART ID of this country. This is the ID used for targeting and generating reports.
+            "sslEnabled": True or False, # Whether ad serving supports secure servers in this country.
+            "kind": "dfareporting#country", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#country".
+            "countryCode": "A String", # Country code.
+            "name": "A String", # Name of this country.
+          },
+        ],
+        "excludeCountries": True or False, # Whether or not to exclude the countries in the countries field from targeting. If false, the countries field refers to countries which will be targeted by the ad.
+        "postalCodes": [ # Postal codes to be targeted. For each postal code only id is required. The other fields are populated automatically when the ad is inserted or updated. If targeting a postal code, do not target or exclude the country of the postal code.
+          { # Contains information about a postal code that can be targeted by ads.
+            "countryDartId": "A String", # DART ID of the country to which this postal code belongs.
+            "kind": "dfareporting#postalCode", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#postalCode".
+            "code": "A String", # Postal code. This is equivalent to the id field.
+            "id": "A String", # ID of this postal code.
+            "countryCode": "A String", # Country code of the country to which this postal code belongs.
+          },
+        ],
+        "regions": [ # Regions to be targeted. For each region only dartId is required. The other fields are populated automatically when the ad is inserted or updated. If targeting a region, do not target or exclude the country of the region.
+          { # Contains information about a region that can be targeted by ads.
+            "kind": "dfareporting#region", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#region".
+            "countryDartId": "A String", # DART ID of the country to which this region belongs.
+            "name": "A String", # Name of this region.
+            "countryCode": "A String", # Country code of the country to which this region belongs.
+            "regionCode": "A String", # Region code.
+            "dartId": "A String", # DART ID of this region.
+          },
+        ],
+        "cities": [ # Cities to be targeted. For each city only dartId is required. The other fields are populated automatically when the ad is inserted or updated. If targeting a city, do not target or exclude the country of the city, and do not target the metro or region of the city.
+          { # Contains information about a city that can be targeted by ads.
+            "kind": "dfareporting#city", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#city".
+            "countryDartId": "A String", # DART ID of the country to which this city belongs.
+            "name": "A String", # Name of this city.
+            "countryCode": "A String", # Country code of the country to which this city belongs.
+            "metroCode": "A String", # Metro region code of the metro region (DMA) to which this city belongs.
+            "regionCode": "A String", # Region code of the region to which this city belongs.
+            "metroDmaId": "A String", # ID of the metro region (DMA) to which this city belongs.
+            "dartId": "A String", # DART ID of this city. This is the ID used for targeting and generating reports.
+            "regionDartId": "A String", # DART ID of the region to which this city belongs.
+          },
+        ],
+        "metros": [ # Metros to be targeted. For each metro only dmaId is required. The other fields are populated automatically when the ad is inserted or updated. If targeting a metro, do not target or exclude the country of the metro.
+          { # Contains information about a metro region that can be targeted by ads.
+            "kind": "dfareporting#metro", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#metro".
+            "countryDartId": "A String", # DART ID of the country to which this metro region belongs.
+            "name": "A String", # Name of this metro region.
+            "countryCode": "A String", # Country code of the country to which this metro region belongs.
+            "metroCode": "A String", # Metro code of this metro region. This is equivalent to dma_id.
+            "dmaId": "A String", # DMA ID of this metro region. This is the ID used for targeting and generating reports, and is equivalent to metro_code.
+            "dartId": "A String", # DART ID of this metro region.
+          },
+        ],
+      },
+      "creativeGroupAssignments": [ # Creative group assignments for this ad. Applicable when type is AD_SERVING_CLICK_TRACKER. Only one assignment per creative group number is allowed for a maximum of two assignments.
+        { # Creative Group Assignment.
+          "creativeGroupNumber": "A String", # Creative group number of the creative group assignment.
+          "creativeGroupId": "A String", # ID of the creative group to be assigned.
+        },
+      ],
+      "deliverySchedule": { # Delivery Schedule. # Delivery schedule information for this ad. Applicable when type is AD_SERVING_STANDARD_AD or AD_SERVING_TRACKING. This field along with subfields priority and impressionRatio are required on insertion when type is AD_SERVING_STANDARD_AD.
+        "priority": "A String", # Serving priority of an ad, with respect to other ads. The lower the priority number, the greater the priority with which it is served.
+        "hardCutoff": True or False, # Whether or not hard cutoff is enabled. If true, the ad will not serve after the end date and time. Otherwise the ad will continue to be served until it has reached its delivery goals.
+        "frequencyCap": { # Frequency Cap. # Limit on the number of times an individual user can be served the ad within a specified period of time.
+          "duration": "A String", # Duration of time, in seconds, for this frequency cap. The maximum duration is 90 days in seconds, or 7,776,000.
+          "impressions": "A String", # Number of times an individual user can be served the ad within the specified duration. The maximum allowed is 15.
+        },
+        "impressionRatio": "A String", # Impression ratio for this ad. This ratio determines how often each ad is served relative to the others. For example, if ad A has an impression ratio of 1 and ad B has an impression ratio of 3, then DCM will serve ad B three times as often as ad A. Must be between 1 and 10.
+      },
+      "advertiserIdDimensionValue": { # Represents a DimensionValue resource. # Dimension value for the ID of the advertiser. This is a read-only, auto-generated field.
+        "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+        "value": "A String", # The value of the dimension.
+        "dimensionName": "A String", # The name of the dimension.
+        "etag": "A String", # The eTag of this response for caching purposes.
+        "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+        "id": "A String", # The ID associated with the value if available.
+      },
+      "eventTagOverrides": [ # Event tag overrides for this ad.
+        { # Event tag override information.
+          "enabled": True or False, # Whether this override is enabled.
+          "id": "A String", # ID of this event tag override. This is a read-only, auto-generated field.
+        },
+      ],
+      "id": "A String", # ID of this ad. This is a read-only, auto-generated field.
+      "accountId": "A String", # Account ID of this ad. This is a read-only field that can be left blank.
+      "archived": True or False, # Whether this ad is archived. When true, active must be false.
+      "targetingTemplateId": "A String", # Targeting template ID, used to apply preconfigured targeting information to this ad. This cannot be set while any of dayPartTargeting, geoTargeting, keyValueTargetingExpression, languageTargeting, remarketingListExpression, or technologyTargeting are set. Applicable when type is AD_SERVING_STANDARD_AD.
+      "technologyTargeting": { # Technology Targeting. # Technology platform targeting information for this ad. This field must be left blank if the ad is using a targeting template. Applicable when type is AD_SERVING_STANDARD_AD.
+        "platformTypes": [ # Platform types that this ad targets. For example, desktop, mobile, or tablet. For each platform type, only id is required, and the other fields are populated automatically when the ad is inserted or updated.
+          { # Contains information about a platform type that can be targeted by ads.
+            "kind": "dfareporting#platformType", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#platformType".
+            "id": "A String", # ID of this platform type.
+            "name": "A String", # Name of this platform type.
+          },
+        ],
+        "operatingSystemVersions": [ # Operating system versions that this ad targets. To target all versions, use operatingSystems. For each operating system version, only id is required. The other fields are populated automatically when the ad is inserted or updated. If targeting an operating system version, do not set targeting for the corresponding operating system in operatingSystems.
+          { # Contains information about a particular version of an operating system that can be targeted by ads.
+            "majorVersion": "A String", # Major version (leftmost number) of this operating system version.
+            "kind": "dfareporting#operatingSystemVersion", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#operatingSystemVersion".
+            "name": "A String", # Name of this operating system version.
+            "id": "A String", # ID of this operating system version.
+            "operatingSystem": { # Contains information about an operating system that can be targeted by ads. # Operating system of this operating system version.
+              "mobile": True or False, # Whether this operating system is for mobile.
+              "dartId": "A String", # DART ID of this operating system. This is the ID used for targeting.
+              "kind": "dfareporting#operatingSystem", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#operatingSystem".
+              "name": "A String", # Name of this operating system.
+              "desktop": True or False, # Whether this operating system is for desktop.
+            },
+            "minorVersion": "A String", # Minor version (number after the first dot) of this operating system version.
+          },
+        ],
+        "browsers": [ # Browsers that this ad targets. For each browser either set browserVersionId or dartId along with the version numbers. If both are specified, only browserVersionId will be used. The other fields are populated automatically when the ad is inserted or updated.
+          { # Contains information about a browser that can be targeted by ads.
+            "majorVersion": "A String", # Major version number (leftmost number) of this browser. For example, for Chrome 5.0.376.86 beta, this field should be set to 5. An asterisk (*) may be used to target any version number, and a question mark (?) may be used to target cases where the version number cannot be identified. For example, Chrome *.* targets any version of Chrome: 1.2, 2.5, 3.5, and so on. Chrome 3.* targets Chrome 3.1, 3.5, but not 4.0. Firefox ?.? targets cases where the ad server knows the browser is Firefox but can't tell which version it is.
+            "kind": "dfareporting#browser", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#browser".
+            "name": "A String", # Name of this browser.
+            "browserVersionId": "A String", # ID referring to this grouping of browser and version numbers. This is the ID used for targeting.
+            "dartId": "A String", # DART ID of this browser. This is the ID used when generating reports.
+            "minorVersion": "A String", # Minor version number (number after first dot on left) of this browser. For example, for Chrome 5.0.375.86 beta, this field should be set to 0. An asterisk (*) may be used to target any version number, and a question mark (?) may be used to target cases where the version number cannot be identified. For example, Chrome *.* targets any version of Chrome: 1.2, 2.5, 3.5, and so on. Chrome 3.* targets Chrome 3.1, 3.5, but not 4.0. Firefox ?.? targets cases where the ad server knows the browser is Firefox but can't tell which version it is.
+          },
+        ],
+        "operatingSystems": [ # Operating systems that this ad targets. To target specific versions, use operatingSystemVersions. For each operating system only dartId is required. The other fields are populated automatically when the ad is inserted or updated. If targeting an operating system, do not set targeting for operating system versions for the same operating system.
+          { # Contains information about an operating system that can be targeted by ads.
+            "mobile": True or False, # Whether this operating system is for mobile.
+            "dartId": "A String", # DART ID of this operating system. This is the ID used for targeting.
+            "kind": "dfareporting#operatingSystem", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#operatingSystem".
+            "name": "A String", # Name of this operating system.
+            "desktop": True or False, # Whether this operating system is for desktop.
+          },
+        ],
+        "mobileCarriers": [ # Mobile carriers that this ad targets. For each mobile carrier only id is required, and the other fields are populated automatically when the ad is inserted or updated. If targeting a mobile carrier, do not set targeting for any zip codes.
+          { # Contains information about a mobile carrier that can be targeted by ads.
+            "kind": "dfareporting#mobileCarrier", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#mobileCarrier".
+            "countryDartId": "A String", # DART ID of the country to which this mobile carrier belongs.
+            "id": "A String", # ID of this mobile carrier.
+            "countryCode": "A String", # Country code of the country to which this mobile carrier belongs.
+            "name": "A String", # Name of this mobile carrier.
+          },
+        ],
+        "connectionTypes": [ # Connection types that this ad targets. For each connection type only id is required. The other fields are populated automatically when the ad is inserted or updated.
+          { # Contains information about an internet connection type that can be targeted by ads. Clients can use the connection type to target mobile vs. broadband users.
+            "kind": "dfareporting#connectionType", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#connectionType".
+            "id": "A String", # ID of this connection type.
+            "name": "A String", # Name of this connection type.
+          },
+        ],
+      },
+      "creativeRotation": { # Creative Rotation. # Creative rotation for this ad. Applicable when type is AD_SERVING_DEFAULT_AD, AD_SERVING_STANDARD_AD, or AD_SERVING_TRACKING. When type is AD_SERVING_DEFAULT_AD, this field should have exactly one creativeAssignment.
+        "creativeAssignments": [ # Creative assignments in this creative rotation.
+          { # Creative Assignment.
+            "weight": 42, # Weight of the creative assignment, applicable when the rotation type is CREATIVE_ROTATION_TYPE_RANDOM.
+            "sequence": 42, # Sequence number of the creative assignment, applicable when the rotation type is CREATIVE_ROTATION_TYPE_SEQUENTIAL.
+            "applyEventTags": True or False, # Whether applicable event tags should fire when this creative assignment is rendered. If this value is unset when the ad is inserted or updated, it will default to true for all creative types EXCEPT for INTERNAL_REDIRECT, INTERSTITIAL_INTERNAL_REDIRECT, and INSTREAM_VIDEO.
+            "richMediaExitOverrides": [ # Rich media exit overrides for this creative assignment.
+                # Applicable when the creative type is any of the following:
+                # - RICH_MEDIA_INPAGE
+                # - RICH_MEDIA_INPAGE_FLOATING
+                # - RICH_MEDIA_IM_EXPAND
+                # - RICH_MEDIA_EXPANDING
+                # - RICH_MEDIA_INTERSTITIAL_FLOAT
+                # - RICH_MEDIA_MOBILE_IN_APP
+                # - RICH_MEDIA_MULTI_FLOATING
+                # - RICH_MEDIA_PEEL_DOWN
+                # - ADVANCED_BANNER
+                # - VPAID_LINEAR
+                # - VPAID_NON_LINEAR
+              { # Rich Media Exit Override.
+                "clickThroughUrl": { # Click-through URL # Click-through URL of this rich media exit override. Applicable if the enabled field is set to true.
+                  "computedClickThroughUrl": "A String", # Read-only convenience field representing the actual URL that will be used for this click-through. The URL is computed as follows:
+                      # - If defaultLandingPage is enabled then the campaign's default landing page URL is assigned to this field.
+                      # - If defaultLandingPage is not enabled and a landingPageId is specified then that landing page's URL is assigned to this field.
+                      # - If neither of the above cases apply, then the customClickThroughUrl is assigned to this field.
+                  "customClickThroughUrl": "A String", # Custom click-through URL. Applicable if the defaultLandingPage field is set to false and the landingPageId field is left unset.
+                  "landingPageId": "A String", # ID of the landing page for the click-through URL. Applicable if the defaultLandingPage field is set to false.
+                  "defaultLandingPage": True or False, # Whether the campaign default landing page is used.
+                },
+                "enabled": True or False, # Whether to use the clickThroughUrl. If false, the creative-level exit will be used.
+                "exitId": "A String", # ID for the override to refer to a specific exit in the creative.
+              },
+            ],
+            "sslCompliant": True or False, # Whether the creative to be assigned is SSL-compliant. This is a read-only field that is auto-generated when the ad is inserted or updated.
+            "creativeGroupAssignments": [ # Creative group assignments for this creative assignment. Only one assignment per creative group number is allowed for a maximum of two assignments.
+              { # Creative Group Assignment.
+                "creativeGroupNumber": "A String", # Creative group number of the creative group assignment.
+                "creativeGroupId": "A String", # ID of the creative group to be assigned.
+              },
+            ],
+            "companionCreativeOverrides": [ # Companion creative overrides for this creative assignment. Applicable to video ads.
+              { # Companion Click-through override.
+                "clickThroughUrl": { # Click-through URL # Click-through URL of this companion click-through override.
+                  "computedClickThroughUrl": "A String", # Read-only convenience field representing the actual URL that will be used for this click-through. The URL is computed as follows:
+                      # - If defaultLandingPage is enabled then the campaign's default landing page URL is assigned to this field.
+                      # - If defaultLandingPage is not enabled and a landingPageId is specified then that landing page's URL is assigned to this field.
+                      # - If neither of the above cases apply, then the customClickThroughUrl is assigned to this field.
+                  "customClickThroughUrl": "A String", # Custom click-through URL. Applicable if the defaultLandingPage field is set to false and the landingPageId field is left unset.
+                  "landingPageId": "A String", # ID of the landing page for the click-through URL. Applicable if the defaultLandingPage field is set to false.
+                  "defaultLandingPage": True or False, # Whether the campaign default landing page is used.
+                },
+                "creativeId": "A String", # ID of the creative for this companion click-through override.
+              },
+            ],
+            "startTime": "A String", # Date and time that the assigned creative should start serving.
+            "clickThroughUrl": { # Click-through URL # Click-through URL of the creative assignment.
+              "computedClickThroughUrl": "A String", # Read-only convenience field representing the actual URL that will be used for this click-through. The URL is computed as follows:
+                  # - If defaultLandingPage is enabled then the campaign's default landing page URL is assigned to this field.
+                  # - If defaultLandingPage is not enabled and a landingPageId is specified then that landing page's URL is assigned to this field.
+                  # - If neither of the above cases apply, then the customClickThroughUrl is assigned to this field.
+              "customClickThroughUrl": "A String", # Custom click-through URL. Applicable if the defaultLandingPage field is set to false and the landingPageId field is left unset.
+              "landingPageId": "A String", # ID of the landing page for the click-through URL. Applicable if the defaultLandingPage field is set to false.
+              "defaultLandingPage": True or False, # Whether the campaign default landing page is used.
+            },
+            "active": True or False, # Whether this creative assignment is active. When true, the creative will be included in the ad's rotation.
+            "creativeId": "A String", # ID of the creative to be assigned. This is a required field.
+            "endTime": "A String", # Date and time that the assigned creative should stop serving. Must be later than the start time.
+            "creativeIdDimensionValue": { # Represents a DimensionValue resource. # Dimension value for the ID of the creative. This is a read-only, auto-generated field.
+              "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+              "value": "A String", # The value of the dimension.
+              "dimensionName": "A String", # The name of the dimension.
+              "etag": "A String", # The eTag of this response for caching purposes.
+              "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+              "id": "A String", # The ID associated with the value if available.
+            },
+          },
+        ],
+        "weightCalculationStrategy": "A String", # Strategy for calculating weights. Used with CREATIVE_ROTATION_TYPE_RANDOM.
+        "creativeOptimizationConfigurationId": "A String", # Creative optimization configuration that is used by this ad. It should refer to one of the existing optimization configurations in the ad's campaign. If it is unset or set to 0, then the campaign's default optimization configuration will be used for this ad.
+        "type": "A String", # Type of creative rotation. Can be used to specify whether to use sequential or random rotation.
+      },
+      "clickThroughUrl": { # Click-through URL # Click-through URL for this ad. This is a required field on insertion. Applicable when type is AD_SERVING_CLICK_TRACKER.
+        "computedClickThroughUrl": "A String", # Read-only convenience field representing the actual URL that will be used for this click-through. The URL is computed as follows:
+            # - If defaultLandingPage is enabled then the campaign's default landing page URL is assigned to this field.
+            # - If defaultLandingPage is not enabled and a landingPageId is specified then that landing page's URL is assigned to this field.
+            # - If neither of the above cases apply, then the customClickThroughUrl is assigned to this field.
+        "customClickThroughUrl": "A String", # Custom click-through URL. Applicable if the defaultLandingPage field is set to false and the landingPageId field is left unset.
+        "landingPageId": "A String", # ID of the landing page for the click-through URL. Applicable if the defaultLandingPage field is set to false.
+        "defaultLandingPage": True or False, # Whether the campaign default landing page is used.
+      },
+      "comments": "A String", # Comments for this ad.
+      "remarketingListExpression": { # Remarketing List Targeting Expression. # Remarketing list targeting expression for this ad. This field must be left blank if the ad is using a targeting template. Applicable when type is AD_SERVING_STANDARD_AD.
+        "expression": "A String", # Expression describing which lists are being targeted by the ad.
+      },
+      "idDimensionValue": { # Represents a DimensionValue resource. # Dimension value for the ID of this ad. This is a read-only, auto-generated field.
+        "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+        "value": "A String", # The value of the dimension.
+        "dimensionName": "A String", # The name of the dimension.
+        "etag": "A String", # The eTag of this response for caching purposes.
+        "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+        "id": "A String", # The ID associated with the value if available.
+      },
+      "size": { # Represents the dimensions of ads, placements, creatives, or creative assets. # Size of this ad. Applicable when type is AD_SERVING_DEFAULT_AD.
+        "width": 42, # Width of this size.
+        "kind": "dfareporting#size", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#size".
+        "iab": True or False, # IAB standard size. This is a read-only, auto-generated field.
+        "id": "A String", # ID of this size. This is a read-only, auto-generated field.
+        "height": 42, # Height of this size.
+      },
+      "type": "A String", # Type of ad. This is a required field on insertion. Note that default ads (AD_SERVING_DEFAULT_AD) cannot be created directly (see Creative resource).
+      "sslRequired": True or False, # Whether this ad requires ssl. This is a read-only field that is auto-generated when the ad is inserted or updated.
+      "audienceSegmentId": "A String", # Audience segment ID that is being targeted for this ad. Applicable when type is AD_SERVING_STANDARD_AD.
+      "keyValueTargetingExpression": { # Key Value Targeting Expression. # Key-value targeting information for this ad. This field must be left blank if the ad is using a targeting template. Applicable when type is AD_SERVING_STANDARD_AD.
+        "expression": "A String", # Keyword expression being targeted by the ad.
+      },
+      "campaignIdDimensionValue": { # Represents a DimensionValue resource. # Dimension value for the ID of the campaign. This is a read-only, auto-generated field.
+        "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+        "value": "A String", # The value of the dimension.
+        "dimensionName": "A String", # The name of the dimension.
+        "etag": "A String", # The eTag of this response for caching purposes.
+        "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+        "id": "A String", # The ID associated with the value if available.
+      },
+      "defaultClickThroughEventTagProperties": { # Properties of inheriting and overriding the default click-through event tag. A campaign may override the event tag defined at the advertiser level, and an ad may also override the campaign's setting further. # Default click-through event tag properties for this ad.
+        "overrideInheritedEventTag": True or False, # Whether this entity should override the inherited default click-through event tag with its own defined value.
+        "defaultClickThroughEventTagId": "A String", # ID of the click-through event tag to apply to all ads in this entity's scope.
+      },
+      "createInfo": { # Modification timestamp. # Information about the creation of this ad. This is a read-only field.
+        "time": "A String", # Timestamp of the last change in milliseconds since epoch.
+      },
+      "startTime": "A String", # Date and time that this ad should start serving. If creating an ad, this field must be a time in the future. This is a required field on insertion.
+      "active": True or False, # Whether this ad is active. When true, archived must be false.
+      "compatibility": "A String", # Compatibility of this ad. Applicable when type is AD_SERVING_DEFAULT_AD. DISPLAY and DISPLAY_INTERSTITIAL refer to either rendering on desktop or on mobile devices or in mobile apps for regular or interstitial ads, respectively. APP and APP_INTERSTITIAL are only used for existing default ads. New mobile placements must be assigned DISPLAY or DISPLAY_INTERSTITIAL and default ads created for those placements will be limited to those compatibility types. IN_STREAM_VIDEO refers to rendering in-stream video ads developed with the VAST standard.
+      "kind": "dfareporting#ad", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#ad".
+      "subaccountId": "A String", # Subaccount ID of this ad. This is a read-only field that can be left blank.
+      "name": "A String", # Name of this ad. This is a required field and must be less than 256 characters long.
+      "dayPartTargeting": { # Day Part Targeting. # Time and day targeting information for this ad. This field must be left blank if the ad is using a targeting template. Applicable when type is AD_SERVING_STANDARD_AD.
+        "userLocalTime": True or False, # Whether or not to use the user's local time. If false, the America/New York time zone applies.
+        "hoursOfDay": [ # Hours of the day when the ad will serve. Must be an integer between 0 and 23 (inclusive), where 0 is midnight to 1 AM, and 23 is 11 PM to midnight. Can be specified with days of week, in which case the ad would serve during these hours on the specified days. For example, if Monday, Wednesday, Friday are the days of week specified and 9-10am, 3-5pm (hours 9, 15, and 16) is specified, the ad would serve Monday, Wednesdays, and Fridays at 9-10am and 3-5pm.
+          42,
+        ],
+        "daysOfWeek": [ # Days of the week when the ad will serve.
+            #
+            # Acceptable values are:
+            # - "SUNDAY"
+            # - "MONDAY"
+            # - "TUESDAY"
+            # - "WEDNESDAY"
+            # - "THURSDAY"
+            # - "FRIDAY"
+            # - "SATURDAY"
+          "A String",
+        ],
+      },
+      "lastModifiedInfo": { # Modification timestamp. # Information about the most recent modification of this ad. This is a read-only field.
+        "time": "A String", # Timestamp of the last change in milliseconds since epoch.
+      },
+      "sslCompliant": True or False, # Whether this ad is ssl compliant. This is a read-only field that is auto-generated when the ad is inserted or updated.
+      "placementAssignments": [ # Placement assignments for this ad.
+        { # Placement Assignment.
+          "active": True or False, # Whether this placement assignment is active. When true, the placement will be included in the ad's rotation.
+          "placementIdDimensionValue": { # Represents a DimensionValue resource. # Dimension value for the ID of the placement. This is a read-only, auto-generated field.
+            "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+            "value": "A String", # The value of the dimension.
+            "dimensionName": "A String", # The name of the dimension.
+            "etag": "A String", # The eTag of this response for caching purposes.
+            "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+            "id": "A String", # The ID associated with the value if available.
+          },
+          "placementId": "A String", # ID of the placement to be assigned. This is a required field.
+          "sslRequired": True or False, # Whether the placement to be assigned requires SSL. This is a read-only field that is auto-generated when the ad is inserted or updated.
+        },
+      ],
+      "endTime": "A String", # Date and time that this ad should stop serving. Must be later than the start time. This is a required field on insertion.
+      "dynamicClickTracker": True or False, # Whether this ad is a dynamic click tracker. Applicable when type is AD_SERVING_CLICK_TRACKER. This is a required field on insert, and is read-only after insert.
+    }</pre>
+</div>
+
+<div class="method">
+    <code class="details" id="insert">insert(profileId, body)</code>
+  <pre>Inserts a new ad.
+
+Args:
+  profileId: string, User profile ID associated with this request. (required)
+  body: object, The request body. (required)
+    The object takes the form of:
+
+{ # Contains properties of a DCM ad.
+    "clickThroughUrlSuffixProperties": { # Click Through URL Suffix settings. # Click-through URL suffix properties for this ad. Applies to the URL in the ad or (if overriding ad properties) the URL in the creative.
+      "clickThroughUrlSuffix": "A String", # Click-through URL suffix to apply to all ads in this entity's scope. Must be less than 128 characters long.
+      "overrideInheritedSuffix": True or False, # Whether this entity should override the inherited click-through URL suffix with its own defined value.
+    },
+    "campaignId": "A String", # Campaign ID of this ad. This is a required field on insertion.
+    "languageTargeting": { # Language Targeting. # Language targeting information for this ad. This field must be left blank if the ad is using a targeting template. Applicable when type is AD_SERVING_STANDARD_AD.
+      "languages": [ # Languages that this ad targets. For each language only languageId is required. The other fields are populated automatically when the ad is inserted or updated.
+        { # Contains information about a language that can be targeted by ads.
+          "languageCode": "A String", # Format of language code is an ISO 639 two-letter language code optionally followed by an underscore followed by an ISO 3166 code. Examples are "en" for English or "zh_CN" for Simplified Chinese.
+          "kind": "dfareporting#language", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#language".
+          "id": "A String", # Language ID of this language. This is the ID used for targeting and generating reports.
+          "name": "A String", # Name of this language.
+        },
+      ],
+    },
+    "advertiserId": "A String", # Advertiser ID of this ad. This is a required field on insertion.
+    "geoTargeting": { # Geographical Targeting. # Geographical targeting information for this ad. This field must be left blank if the ad is using a targeting template. Applicable when type is AD_SERVING_STANDARD_AD.
+      "countries": [ # Countries to be targeted or excluded from targeting, depending on the setting of the excludeCountries field. For each country only dartId is required. The other fields are populated automatically when the ad is inserted or updated. If targeting or excluding a country, do not target regions, cities, metros, or postal codes in the same country.
+        { # Contains information about a country that can be targeted by ads.
+          "dartId": "A String", # DART ID of this country. This is the ID used for targeting and generating reports.
+          "sslEnabled": True or False, # Whether ad serving supports secure servers in this country.
+          "kind": "dfareporting#country", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#country".
+          "countryCode": "A String", # Country code.
+          "name": "A String", # Name of this country.
+        },
+      ],
+      "excludeCountries": True or False, # Whether or not to exclude the countries in the countries field from targeting. If false, the countries field refers to countries which will be targeted by the ad.
+      "postalCodes": [ # Postal codes to be targeted. For each postal code only id is required. The other fields are populated automatically when the ad is inserted or updated. If targeting a postal code, do not target or exclude the country of the postal code.
+        { # Contains information about a postal code that can be targeted by ads.
+          "countryDartId": "A String", # DART ID of the country to which this postal code belongs.
+          "kind": "dfareporting#postalCode", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#postalCode".
+          "code": "A String", # Postal code. This is equivalent to the id field.
+          "id": "A String", # ID of this postal code.
+          "countryCode": "A String", # Country code of the country to which this postal code belongs.
+        },
+      ],
+      "regions": [ # Regions to be targeted. For each region only dartId is required. The other fields are populated automatically when the ad is inserted or updated. If targeting a region, do not target or exclude the country of the region.
+        { # Contains information about a region that can be targeted by ads.
+          "kind": "dfareporting#region", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#region".
+          "countryDartId": "A String", # DART ID of the country to which this region belongs.
+          "name": "A String", # Name of this region.
+          "countryCode": "A String", # Country code of the country to which this region belongs.
+          "regionCode": "A String", # Region code.
+          "dartId": "A String", # DART ID of this region.
+        },
+      ],
+      "cities": [ # Cities to be targeted. For each city only dartId is required. The other fields are populated automatically when the ad is inserted or updated. If targeting a city, do not target or exclude the country of the city, and do not target the metro or region of the city.
+        { # Contains information about a city that can be targeted by ads.
+          "kind": "dfareporting#city", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#city".
+          "countryDartId": "A String", # DART ID of the country to which this city belongs.
+          "name": "A String", # Name of this city.
+          "countryCode": "A String", # Country code of the country to which this city belongs.
+          "metroCode": "A String", # Metro region code of the metro region (DMA) to which this city belongs.
+          "regionCode": "A String", # Region code of the region to which this city belongs.
+          "metroDmaId": "A String", # ID of the metro region (DMA) to which this city belongs.
+          "dartId": "A String", # DART ID of this city. This is the ID used for targeting and generating reports.
+          "regionDartId": "A String", # DART ID of the region to which this city belongs.
+        },
+      ],
+      "metros": [ # Metros to be targeted. For each metro only dmaId is required. The other fields are populated automatically when the ad is inserted or updated. If targeting a metro, do not target or exclude the country of the metro.
+        { # Contains information about a metro region that can be targeted by ads.
+          "kind": "dfareporting#metro", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#metro".
+          "countryDartId": "A String", # DART ID of the country to which this metro region belongs.
+          "name": "A String", # Name of this metro region.
+          "countryCode": "A String", # Country code of the country to which this metro region belongs.
+          "metroCode": "A String", # Metro code of this metro region. This is equivalent to dma_id.
+          "dmaId": "A String", # DMA ID of this metro region. This is the ID used for targeting and generating reports, and is equivalent to metro_code.
+          "dartId": "A String", # DART ID of this metro region.
+        },
+      ],
+    },
+    "creativeGroupAssignments": [ # Creative group assignments for this ad. Applicable when type is AD_SERVING_CLICK_TRACKER. Only one assignment per creative group number is allowed for a maximum of two assignments.
+      { # Creative Group Assignment.
+        "creativeGroupNumber": "A String", # Creative group number of the creative group assignment.
+        "creativeGroupId": "A String", # ID of the creative group to be assigned.
+      },
+    ],
+    "deliverySchedule": { # Delivery Schedule. # Delivery schedule information for this ad. Applicable when type is AD_SERVING_STANDARD_AD or AD_SERVING_TRACKING. This field along with subfields priority and impressionRatio are required on insertion when type is AD_SERVING_STANDARD_AD.
+      "priority": "A String", # Serving priority of an ad, with respect to other ads. The lower the priority number, the greater the priority with which it is served.
+      "hardCutoff": True or False, # Whether or not hard cutoff is enabled. If true, the ad will not serve after the end date and time. Otherwise the ad will continue to be served until it has reached its delivery goals.
+      "frequencyCap": { # Frequency Cap. # Limit on the number of times an individual user can be served the ad within a specified period of time.
+        "duration": "A String", # Duration of time, in seconds, for this frequency cap. The maximum duration is 90 days in seconds, or 7,776,000.
+        "impressions": "A String", # Number of times an individual user can be served the ad within the specified duration. The maximum allowed is 15.
+      },
+      "impressionRatio": "A String", # Impression ratio for this ad. This ratio determines how often each ad is served relative to the others. For example, if ad A has an impression ratio of 1 and ad B has an impression ratio of 3, then DCM will serve ad B three times as often as ad A. Must be between 1 and 10.
+    },
+    "advertiserIdDimensionValue": { # Represents a DimensionValue resource. # Dimension value for the ID of the advertiser. This is a read-only, auto-generated field.
+      "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+      "value": "A String", # The value of the dimension.
+      "dimensionName": "A String", # The name of the dimension.
+      "etag": "A String", # The eTag of this response for caching purposes.
+      "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+      "id": "A String", # The ID associated with the value if available.
+    },
+    "eventTagOverrides": [ # Event tag overrides for this ad.
+      { # Event tag override information.
+        "enabled": True or False, # Whether this override is enabled.
+        "id": "A String", # ID of this event tag override. This is a read-only, auto-generated field.
+      },
+    ],
+    "id": "A String", # ID of this ad. This is a read-only, auto-generated field.
+    "accountId": "A String", # Account ID of this ad. This is a read-only field that can be left blank.
+    "archived": True or False, # Whether this ad is archived. When true, active must be false.
+    "targetingTemplateId": "A String", # Targeting template ID, used to apply preconfigured targeting information to this ad. This cannot be set while any of dayPartTargeting, geoTargeting, keyValueTargetingExpression, languageTargeting, remarketingListExpression, or technologyTargeting are set. Applicable when type is AD_SERVING_STANDARD_AD.
+    "technologyTargeting": { # Technology Targeting. # Technology platform targeting information for this ad. This field must be left blank if the ad is using a targeting template. Applicable when type is AD_SERVING_STANDARD_AD.
+      "platformTypes": [ # Platform types that this ad targets. For example, desktop, mobile, or tablet. For each platform type, only id is required, and the other fields are populated automatically when the ad is inserted or updated.
+        { # Contains information about a platform type that can be targeted by ads.
+          "kind": "dfareporting#platformType", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#platformType".
+          "id": "A String", # ID of this platform type.
+          "name": "A String", # Name of this platform type.
+        },
+      ],
+      "operatingSystemVersions": [ # Operating system versions that this ad targets. To target all versions, use operatingSystems. For each operating system version, only id is required. The other fields are populated automatically when the ad is inserted or updated. If targeting an operating system version, do not set targeting for the corresponding operating system in operatingSystems.
+        { # Contains information about a particular version of an operating system that can be targeted by ads.
+          "majorVersion": "A String", # Major version (leftmost number) of this operating system version.
+          "kind": "dfareporting#operatingSystemVersion", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#operatingSystemVersion".
+          "name": "A String", # Name of this operating system version.
+          "id": "A String", # ID of this operating system version.
+          "operatingSystem": { # Contains information about an operating system that can be targeted by ads. # Operating system of this operating system version.
+            "mobile": True or False, # Whether this operating system is for mobile.
+            "dartId": "A String", # DART ID of this operating system. This is the ID used for targeting.
+            "kind": "dfareporting#operatingSystem", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#operatingSystem".
+            "name": "A String", # Name of this operating system.
+            "desktop": True or False, # Whether this operating system is for desktop.
+          },
+          "minorVersion": "A String", # Minor version (number after the first dot) of this operating system version.
+        },
+      ],
+      "browsers": [ # Browsers that this ad targets. For each browser either set browserVersionId or dartId along with the version numbers. If both are specified, only browserVersionId will be used. The other fields are populated automatically when the ad is inserted or updated.
+        { # Contains information about a browser that can be targeted by ads.
+          "majorVersion": "A String", # Major version number (leftmost number) of this browser. For example, for Chrome 5.0.376.86 beta, this field should be set to 5. An asterisk (*) may be used to target any version number, and a question mark (?) may be used to target cases where the version number cannot be identified. For example, Chrome *.* targets any version of Chrome: 1.2, 2.5, 3.5, and so on. Chrome 3.* targets Chrome 3.1, 3.5, but not 4.0. Firefox ?.? targets cases where the ad server knows the browser is Firefox but can't tell which version it is.
+          "kind": "dfareporting#browser", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#browser".
+          "name": "A String", # Name of this browser.
+          "browserVersionId": "A String", # ID referring to this grouping of browser and version numbers. This is the ID used for targeting.
+          "dartId": "A String", # DART ID of this browser. This is the ID used when generating reports.
+          "minorVersion": "A String", # Minor version number (number after first dot on left) of this browser. For example, for Chrome 5.0.375.86 beta, this field should be set to 0. An asterisk (*) may be used to target any version number, and a question mark (?) may be used to target cases where the version number cannot be identified. For example, Chrome *.* targets any version of Chrome: 1.2, 2.5, 3.5, and so on. Chrome 3.* targets Chrome 3.1, 3.5, but not 4.0. Firefox ?.? targets cases where the ad server knows the browser is Firefox but can't tell which version it is.
+        },
+      ],
+      "operatingSystems": [ # Operating systems that this ad targets. To target specific versions, use operatingSystemVersions. For each operating system only dartId is required. The other fields are populated automatically when the ad is inserted or updated. If targeting an operating system, do not set targeting for operating system versions for the same operating system.
+        { # Contains information about an operating system that can be targeted by ads.
+          "mobile": True or False, # Whether this operating system is for mobile.
+          "dartId": "A String", # DART ID of this operating system. This is the ID used for targeting.
+          "kind": "dfareporting#operatingSystem", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#operatingSystem".
+          "name": "A String", # Name of this operating system.
+          "desktop": True or False, # Whether this operating system is for desktop.
+        },
+      ],
+      "mobileCarriers": [ # Mobile carriers that this ad targets. For each mobile carrier only id is required, and the other fields are populated automatically when the ad is inserted or updated. If targeting a mobile carrier, do not set targeting for any zip codes.
+        { # Contains information about a mobile carrier that can be targeted by ads.
+          "kind": "dfareporting#mobileCarrier", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#mobileCarrier".
+          "countryDartId": "A String", # DART ID of the country to which this mobile carrier belongs.
+          "id": "A String", # ID of this mobile carrier.
+          "countryCode": "A String", # Country code of the country to which this mobile carrier belongs.
+          "name": "A String", # Name of this mobile carrier.
+        },
+      ],
+      "connectionTypes": [ # Connection types that this ad targets. For each connection type only id is required. The other fields are populated automatically when the ad is inserted or updated.
+        { # Contains information about an internet connection type that can be targeted by ads. Clients can use the connection type to target mobile vs. broadband users.
+          "kind": "dfareporting#connectionType", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#connectionType".
+          "id": "A String", # ID of this connection type.
+          "name": "A String", # Name of this connection type.
+        },
+      ],
+    },
+    "creativeRotation": { # Creative Rotation. # Creative rotation for this ad. Applicable when type is AD_SERVING_DEFAULT_AD, AD_SERVING_STANDARD_AD, or AD_SERVING_TRACKING. When type is AD_SERVING_DEFAULT_AD, this field should have exactly one creativeAssignment.
+      "creativeAssignments": [ # Creative assignments in this creative rotation.
+        { # Creative Assignment.
+          "weight": 42, # Weight of the creative assignment, applicable when the rotation type is CREATIVE_ROTATION_TYPE_RANDOM.
+          "sequence": 42, # Sequence number of the creative assignment, applicable when the rotation type is CREATIVE_ROTATION_TYPE_SEQUENTIAL.
+          "applyEventTags": True or False, # Whether applicable event tags should fire when this creative assignment is rendered. If this value is unset when the ad is inserted or updated, it will default to true for all creative types EXCEPT for INTERNAL_REDIRECT, INTERSTITIAL_INTERNAL_REDIRECT, and INSTREAM_VIDEO.
+          "richMediaExitOverrides": [ # Rich media exit overrides for this creative assignment.
+              # Applicable when the creative type is any of the following:
+              # - RICH_MEDIA_INPAGE
+              # - RICH_MEDIA_INPAGE_FLOATING
+              # - RICH_MEDIA_IM_EXPAND
+              # - RICH_MEDIA_EXPANDING
+              # - RICH_MEDIA_INTERSTITIAL_FLOAT
+              # - RICH_MEDIA_MOBILE_IN_APP
+              # - RICH_MEDIA_MULTI_FLOATING
+              # - RICH_MEDIA_PEEL_DOWN
+              # - ADVANCED_BANNER
+              # - VPAID_LINEAR
+              # - VPAID_NON_LINEAR
+            { # Rich Media Exit Override.
+              "clickThroughUrl": { # Click-through URL # Click-through URL of this rich media exit override. Applicable if the enabled field is set to true.
+                "computedClickThroughUrl": "A String", # Read-only convenience field representing the actual URL that will be used for this click-through. The URL is computed as follows:
+                    # - If defaultLandingPage is enabled then the campaign's default landing page URL is assigned to this field.
+                    # - If defaultLandingPage is not enabled and a landingPageId is specified then that landing page's URL is assigned to this field.
+                    # - If neither of the above cases apply, then the customClickThroughUrl is assigned to this field.
+                "customClickThroughUrl": "A String", # Custom click-through URL. Applicable if the defaultLandingPage field is set to false and the landingPageId field is left unset.
+                "landingPageId": "A String", # ID of the landing page for the click-through URL. Applicable if the defaultLandingPage field is set to false.
+                "defaultLandingPage": True or False, # Whether the campaign default landing page is used.
+              },
+              "enabled": True or False, # Whether to use the clickThroughUrl. If false, the creative-level exit will be used.
+              "exitId": "A String", # ID for the override to refer to a specific exit in the creative.
+            },
+          ],
+          "sslCompliant": True or False, # Whether the creative to be assigned is SSL-compliant. This is a read-only field that is auto-generated when the ad is inserted or updated.
+          "creativeGroupAssignments": [ # Creative group assignments for this creative assignment. Only one assignment per creative group number is allowed for a maximum of two assignments.
+            { # Creative Group Assignment.
+              "creativeGroupNumber": "A String", # Creative group number of the creative group assignment.
+              "creativeGroupId": "A String", # ID of the creative group to be assigned.
+            },
+          ],
+          "companionCreativeOverrides": [ # Companion creative overrides for this creative assignment. Applicable to video ads.
+            { # Companion Click-through override.
+              "clickThroughUrl": { # Click-through URL # Click-through URL of this companion click-through override.
+                "computedClickThroughUrl": "A String", # Read-only convenience field representing the actual URL that will be used for this click-through. The URL is computed as follows:
+                    # - If defaultLandingPage is enabled then the campaign's default landing page URL is assigned to this field.
+                    # - If defaultLandingPage is not enabled and a landingPageId is specified then that landing page's URL is assigned to this field.
+                    # - If neither of the above cases apply, then the customClickThroughUrl is assigned to this field.
+                "customClickThroughUrl": "A String", # Custom click-through URL. Applicable if the defaultLandingPage field is set to false and the landingPageId field is left unset.
+                "landingPageId": "A String", # ID of the landing page for the click-through URL. Applicable if the defaultLandingPage field is set to false.
+                "defaultLandingPage": True or False, # Whether the campaign default landing page is used.
+              },
+              "creativeId": "A String", # ID of the creative for this companion click-through override.
+            },
+          ],
+          "startTime": "A String", # Date and time that the assigned creative should start serving.
+          "clickThroughUrl": { # Click-through URL # Click-through URL of the creative assignment.
+            "computedClickThroughUrl": "A String", # Read-only convenience field representing the actual URL that will be used for this click-through. The URL is computed as follows:
+                # - If defaultLandingPage is enabled then the campaign's default landing page URL is assigned to this field.
+                # - If defaultLandingPage is not enabled and a landingPageId is specified then that landing page's URL is assigned to this field.
+                # - If neither of the above cases apply, then the customClickThroughUrl is assigned to this field.
+            "customClickThroughUrl": "A String", # Custom click-through URL. Applicable if the defaultLandingPage field is set to false and the landingPageId field is left unset.
+            "landingPageId": "A String", # ID of the landing page for the click-through URL. Applicable if the defaultLandingPage field is set to false.
+            "defaultLandingPage": True or False, # Whether the campaign default landing page is used.
+          },
+          "active": True or False, # Whether this creative assignment is active. When true, the creative will be included in the ad's rotation.
+          "creativeId": "A String", # ID of the creative to be assigned. This is a required field.
+          "endTime": "A String", # Date and time that the assigned creative should stop serving. Must be later than the start time.
+          "creativeIdDimensionValue": { # Represents a DimensionValue resource. # Dimension value for the ID of the creative. This is a read-only, auto-generated field.
+            "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+            "value": "A String", # The value of the dimension.
+            "dimensionName": "A String", # The name of the dimension.
+            "etag": "A String", # The eTag of this response for caching purposes.
+            "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+            "id": "A String", # The ID associated with the value if available.
+          },
+        },
+      ],
+      "weightCalculationStrategy": "A String", # Strategy for calculating weights. Used with CREATIVE_ROTATION_TYPE_RANDOM.
+      "creativeOptimizationConfigurationId": "A String", # Creative optimization configuration that is used by this ad. It should refer to one of the existing optimization configurations in the ad's campaign. If it is unset or set to 0, then the campaign's default optimization configuration will be used for this ad.
+      "type": "A String", # Type of creative rotation. Can be used to specify whether to use sequential or random rotation.
+    },
+    "clickThroughUrl": { # Click-through URL # Click-through URL for this ad. This is a required field on insertion. Applicable when type is AD_SERVING_CLICK_TRACKER.
+      "computedClickThroughUrl": "A String", # Read-only convenience field representing the actual URL that will be used for this click-through. The URL is computed as follows:
+          # - If defaultLandingPage is enabled then the campaign's default landing page URL is assigned to this field.
+          # - If defaultLandingPage is not enabled and a landingPageId is specified then that landing page's URL is assigned to this field.
+          # - If neither of the above cases apply, then the customClickThroughUrl is assigned to this field.
+      "customClickThroughUrl": "A String", # Custom click-through URL. Applicable if the defaultLandingPage field is set to false and the landingPageId field is left unset.
+      "landingPageId": "A String", # ID of the landing page for the click-through URL. Applicable if the defaultLandingPage field is set to false.
+      "defaultLandingPage": True or False, # Whether the campaign default landing page is used.
+    },
+    "comments": "A String", # Comments for this ad.
+    "remarketingListExpression": { # Remarketing List Targeting Expression. # Remarketing list targeting expression for this ad. This field must be left blank if the ad is using a targeting template. Applicable when type is AD_SERVING_STANDARD_AD.
+      "expression": "A String", # Expression describing which lists are being targeted by the ad.
+    },
+    "idDimensionValue": { # Represents a DimensionValue resource. # Dimension value for the ID of this ad. This is a read-only, auto-generated field.
+      "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+      "value": "A String", # The value of the dimension.
+      "dimensionName": "A String", # The name of the dimension.
+      "etag": "A String", # The eTag of this response for caching purposes.
+      "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+      "id": "A String", # The ID associated with the value if available.
+    },
+    "size": { # Represents the dimensions of ads, placements, creatives, or creative assets. # Size of this ad. Applicable when type is AD_SERVING_DEFAULT_AD.
+      "width": 42, # Width of this size.
+      "kind": "dfareporting#size", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#size".
+      "iab": True or False, # IAB standard size. This is a read-only, auto-generated field.
+      "id": "A String", # ID of this size. This is a read-only, auto-generated field.
+      "height": 42, # Height of this size.
+    },
+    "type": "A String", # Type of ad. This is a required field on insertion. Note that default ads (AD_SERVING_DEFAULT_AD) cannot be created directly (see Creative resource).
+    "sslRequired": True or False, # Whether this ad requires ssl. This is a read-only field that is auto-generated when the ad is inserted or updated.
+    "audienceSegmentId": "A String", # Audience segment ID that is being targeted for this ad. Applicable when type is AD_SERVING_STANDARD_AD.
+    "keyValueTargetingExpression": { # Key Value Targeting Expression. # Key-value targeting information for this ad. This field must be left blank if the ad is using a targeting template. Applicable when type is AD_SERVING_STANDARD_AD.
+      "expression": "A String", # Keyword expression being targeted by the ad.
+    },
+    "campaignIdDimensionValue": { # Represents a DimensionValue resource. # Dimension value for the ID of the campaign. This is a read-only, auto-generated field.
+      "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+      "value": "A String", # The value of the dimension.
+      "dimensionName": "A String", # The name of the dimension.
+      "etag": "A String", # The eTag of this response for caching purposes.
+      "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+      "id": "A String", # The ID associated with the value if available.
+    },
+    "defaultClickThroughEventTagProperties": { # Properties of inheriting and overriding the default click-through event tag. A campaign may override the event tag defined at the advertiser level, and an ad may also override the campaign's setting further. # Default click-through event tag properties for this ad.
+      "overrideInheritedEventTag": True or False, # Whether this entity should override the inherited default click-through event tag with its own defined value.
+      "defaultClickThroughEventTagId": "A String", # ID of the click-through event tag to apply to all ads in this entity's scope.
+    },
+    "createInfo": { # Modification timestamp. # Information about the creation of this ad. This is a read-only field.
+      "time": "A String", # Timestamp of the last change in milliseconds since epoch.
+    },
+    "startTime": "A String", # Date and time that this ad should start serving. If creating an ad, this field must be a time in the future. This is a required field on insertion.
+    "active": True or False, # Whether this ad is active. When true, archived must be false.
+    "compatibility": "A String", # Compatibility of this ad. Applicable when type is AD_SERVING_DEFAULT_AD. DISPLAY and DISPLAY_INTERSTITIAL refer to either rendering on desktop or on mobile devices or in mobile apps for regular or interstitial ads, respectively. APP and APP_INTERSTITIAL are only used for existing default ads. New mobile placements must be assigned DISPLAY or DISPLAY_INTERSTITIAL and default ads created for those placements will be limited to those compatibility types. IN_STREAM_VIDEO refers to rendering in-stream video ads developed with the VAST standard.
+    "kind": "dfareporting#ad", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#ad".
+    "subaccountId": "A String", # Subaccount ID of this ad. This is a read-only field that can be left blank.
+    "name": "A String", # Name of this ad. This is a required field and must be less than 256 characters long.
+    "dayPartTargeting": { # Day Part Targeting. # Time and day targeting information for this ad. This field must be left blank if the ad is using a targeting template. Applicable when type is AD_SERVING_STANDARD_AD.
+      "userLocalTime": True or False, # Whether or not to use the user's local time. If false, the America/New York time zone applies.
+      "hoursOfDay": [ # Hours of the day when the ad will serve. Must be an integer between 0 and 23 (inclusive), where 0 is midnight to 1 AM, and 23 is 11 PM to midnight. Can be specified with days of week, in which case the ad would serve during these hours on the specified days. For example, if Monday, Wednesday, Friday are the days of week specified and 9-10am, 3-5pm (hours 9, 15, and 16) is specified, the ad would serve Monday, Wednesdays, and Fridays at 9-10am and 3-5pm.
+        42,
+      ],
+      "daysOfWeek": [ # Days of the week when the ad will serve.
+          #
+          # Acceptable values are:
+          # - "SUNDAY"
+          # - "MONDAY"
+          # - "TUESDAY"
+          # - "WEDNESDAY"
+          # - "THURSDAY"
+          # - "FRIDAY"
+          # - "SATURDAY"
+        "A String",
+      ],
+    },
+    "lastModifiedInfo": { # Modification timestamp. # Information about the most recent modification of this ad. This is a read-only field.
+      "time": "A String", # Timestamp of the last change in milliseconds since epoch.
+    },
+    "sslCompliant": True or False, # Whether this ad is ssl compliant. This is a read-only field that is auto-generated when the ad is inserted or updated.
+    "placementAssignments": [ # Placement assignments for this ad.
+      { # Placement Assignment.
+        "active": True or False, # Whether this placement assignment is active. When true, the placement will be included in the ad's rotation.
+        "placementIdDimensionValue": { # Represents a DimensionValue resource. # Dimension value for the ID of the placement. This is a read-only, auto-generated field.
+          "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+          "value": "A String", # The value of the dimension.
+          "dimensionName": "A String", # The name of the dimension.
+          "etag": "A String", # The eTag of this response for caching purposes.
+          "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+          "id": "A String", # The ID associated with the value if available.
+        },
+        "placementId": "A String", # ID of the placement to be assigned. This is a required field.
+        "sslRequired": True or False, # Whether the placement to be assigned requires SSL. This is a read-only field that is auto-generated when the ad is inserted or updated.
+      },
+    ],
+    "endTime": "A String", # Date and time that this ad should stop serving. Must be later than the start time. This is a required field on insertion.
+    "dynamicClickTracker": True or False, # Whether this ad is a dynamic click tracker. Applicable when type is AD_SERVING_CLICK_TRACKER. This is a required field on insert, and is read-only after insert.
+  }
+
+
+Returns:
+  An object of the form:
+
+    { # Contains properties of a DCM ad.
+      "clickThroughUrlSuffixProperties": { # Click Through URL Suffix settings. # Click-through URL suffix properties for this ad. Applies to the URL in the ad or (if overriding ad properties) the URL in the creative.
+        "clickThroughUrlSuffix": "A String", # Click-through URL suffix to apply to all ads in this entity's scope. Must be less than 128 characters long.
+        "overrideInheritedSuffix": True or False, # Whether this entity should override the inherited click-through URL suffix with its own defined value.
+      },
+      "campaignId": "A String", # Campaign ID of this ad. This is a required field on insertion.
+      "languageTargeting": { # Language Targeting. # Language targeting information for this ad. This field must be left blank if the ad is using a targeting template. Applicable when type is AD_SERVING_STANDARD_AD.
+        "languages": [ # Languages that this ad targets. For each language only languageId is required. The other fields are populated automatically when the ad is inserted or updated.
+          { # Contains information about a language that can be targeted by ads.
+            "languageCode": "A String", # Format of language code is an ISO 639 two-letter language code optionally followed by an underscore followed by an ISO 3166 code. Examples are "en" for English or "zh_CN" for Simplified Chinese.
+            "kind": "dfareporting#language", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#language".
+            "id": "A String", # Language ID of this language. This is the ID used for targeting and generating reports.
+            "name": "A String", # Name of this language.
+          },
+        ],
+      },
+      "advertiserId": "A String", # Advertiser ID of this ad. This is a required field on insertion.
+      "geoTargeting": { # Geographical Targeting. # Geographical targeting information for this ad. This field must be left blank if the ad is using a targeting template. Applicable when type is AD_SERVING_STANDARD_AD.
+        "countries": [ # Countries to be targeted or excluded from targeting, depending on the setting of the excludeCountries field. For each country only dartId is required. The other fields are populated automatically when the ad is inserted or updated. If targeting or excluding a country, do not target regions, cities, metros, or postal codes in the same country.
+          { # Contains information about a country that can be targeted by ads.
+            "dartId": "A String", # DART ID of this country. This is the ID used for targeting and generating reports.
+            "sslEnabled": True or False, # Whether ad serving supports secure servers in this country.
+            "kind": "dfareporting#country", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#country".
+            "countryCode": "A String", # Country code.
+            "name": "A String", # Name of this country.
+          },
+        ],
+        "excludeCountries": True or False, # Whether or not to exclude the countries in the countries field from targeting. If false, the countries field refers to countries which will be targeted by the ad.
+        "postalCodes": [ # Postal codes to be targeted. For each postal code only id is required. The other fields are populated automatically when the ad is inserted or updated. If targeting a postal code, do not target or exclude the country of the postal code.
+          { # Contains information about a postal code that can be targeted by ads.
+            "countryDartId": "A String", # DART ID of the country to which this postal code belongs.
+            "kind": "dfareporting#postalCode", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#postalCode".
+            "code": "A String", # Postal code. This is equivalent to the id field.
+            "id": "A String", # ID of this postal code.
+            "countryCode": "A String", # Country code of the country to which this postal code belongs.
+          },
+        ],
+        "regions": [ # Regions to be targeted. For each region only dartId is required. The other fields are populated automatically when the ad is inserted or updated. If targeting a region, do not target or exclude the country of the region.
+          { # Contains information about a region that can be targeted by ads.
+            "kind": "dfareporting#region", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#region".
+            "countryDartId": "A String", # DART ID of the country to which this region belongs.
+            "name": "A String", # Name of this region.
+            "countryCode": "A String", # Country code of the country to which this region belongs.
+            "regionCode": "A String", # Region code.
+            "dartId": "A String", # DART ID of this region.
+          },
+        ],
+        "cities": [ # Cities to be targeted. For each city only dartId is required. The other fields are populated automatically when the ad is inserted or updated. If targeting a city, do not target or exclude the country of the city, and do not target the metro or region of the city.
+          { # Contains information about a city that can be targeted by ads.
+            "kind": "dfareporting#city", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#city".
+            "countryDartId": "A String", # DART ID of the country to which this city belongs.
+            "name": "A String", # Name of this city.
+            "countryCode": "A String", # Country code of the country to which this city belongs.
+            "metroCode": "A String", # Metro region code of the metro region (DMA) to which this city belongs.
+            "regionCode": "A String", # Region code of the region to which this city belongs.
+            "metroDmaId": "A String", # ID of the metro region (DMA) to which this city belongs.
+            "dartId": "A String", # DART ID of this city. This is the ID used for targeting and generating reports.
+            "regionDartId": "A String", # DART ID of the region to which this city belongs.
+          },
+        ],
+        "metros": [ # Metros to be targeted. For each metro only dmaId is required. The other fields are populated automatically when the ad is inserted or updated. If targeting a metro, do not target or exclude the country of the metro.
+          { # Contains information about a metro region that can be targeted by ads.
+            "kind": "dfareporting#metro", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#metro".
+            "countryDartId": "A String", # DART ID of the country to which this metro region belongs.
+            "name": "A String", # Name of this metro region.
+            "countryCode": "A String", # Country code of the country to which this metro region belongs.
+            "metroCode": "A String", # Metro code of this metro region. This is equivalent to dma_id.
+            "dmaId": "A String", # DMA ID of this metro region. This is the ID used for targeting and generating reports, and is equivalent to metro_code.
+            "dartId": "A String", # DART ID of this metro region.
+          },
+        ],
+      },
+      "creativeGroupAssignments": [ # Creative group assignments for this ad. Applicable when type is AD_SERVING_CLICK_TRACKER. Only one assignment per creative group number is allowed for a maximum of two assignments.
+        { # Creative Group Assignment.
+          "creativeGroupNumber": "A String", # Creative group number of the creative group assignment.
+          "creativeGroupId": "A String", # ID of the creative group to be assigned.
+        },
+      ],
+      "deliverySchedule": { # Delivery Schedule. # Delivery schedule information for this ad. Applicable when type is AD_SERVING_STANDARD_AD or AD_SERVING_TRACKING. This field along with subfields priority and impressionRatio are required on insertion when type is AD_SERVING_STANDARD_AD.
+        "priority": "A String", # Serving priority of an ad, with respect to other ads. The lower the priority number, the greater the priority with which it is served.
+        "hardCutoff": True or False, # Whether or not hard cutoff is enabled. If true, the ad will not serve after the end date and time. Otherwise the ad will continue to be served until it has reached its delivery goals.
+        "frequencyCap": { # Frequency Cap. # Limit on the number of times an individual user can be served the ad within a specified period of time.
+          "duration": "A String", # Duration of time, in seconds, for this frequency cap. The maximum duration is 90 days in seconds, or 7,776,000.
+          "impressions": "A String", # Number of times an individual user can be served the ad within the specified duration. The maximum allowed is 15.
+        },
+        "impressionRatio": "A String", # Impression ratio for this ad. This ratio determines how often each ad is served relative to the others. For example, if ad A has an impression ratio of 1 and ad B has an impression ratio of 3, then DCM will serve ad B three times as often as ad A. Must be between 1 and 10.
+      },
+      "advertiserIdDimensionValue": { # Represents a DimensionValue resource. # Dimension value for the ID of the advertiser. This is a read-only, auto-generated field.
+        "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+        "value": "A String", # The value of the dimension.
+        "dimensionName": "A String", # The name of the dimension.
+        "etag": "A String", # The eTag of this response for caching purposes.
+        "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+        "id": "A String", # The ID associated with the value if available.
+      },
+      "eventTagOverrides": [ # Event tag overrides for this ad.
+        { # Event tag override information.
+          "enabled": True or False, # Whether this override is enabled.
+          "id": "A String", # ID of this event tag override. This is a read-only, auto-generated field.
+        },
+      ],
+      "id": "A String", # ID of this ad. This is a read-only, auto-generated field.
+      "accountId": "A String", # Account ID of this ad. This is a read-only field that can be left blank.
+      "archived": True or False, # Whether this ad is archived. When true, active must be false.
+      "targetingTemplateId": "A String", # Targeting template ID, used to apply preconfigured targeting information to this ad. This cannot be set while any of dayPartTargeting, geoTargeting, keyValueTargetingExpression, languageTargeting, remarketingListExpression, or technologyTargeting are set. Applicable when type is AD_SERVING_STANDARD_AD.
+      "technologyTargeting": { # Technology Targeting. # Technology platform targeting information for this ad. This field must be left blank if the ad is using a targeting template. Applicable when type is AD_SERVING_STANDARD_AD.
+        "platformTypes": [ # Platform types that this ad targets. For example, desktop, mobile, or tablet. For each platform type, only id is required, and the other fields are populated automatically when the ad is inserted or updated.
+          { # Contains information about a platform type that can be targeted by ads.
+            "kind": "dfareporting#platformType", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#platformType".
+            "id": "A String", # ID of this platform type.
+            "name": "A String", # Name of this platform type.
+          },
+        ],
+        "operatingSystemVersions": [ # Operating system versions that this ad targets. To target all versions, use operatingSystems. For each operating system version, only id is required. The other fields are populated automatically when the ad is inserted or updated. If targeting an operating system version, do not set targeting for the corresponding operating system in operatingSystems.
+          { # Contains information about a particular version of an operating system that can be targeted by ads.
+            "majorVersion": "A String", # Major version (leftmost number) of this operating system version.
+            "kind": "dfareporting#operatingSystemVersion", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#operatingSystemVersion".
+            "name": "A String", # Name of this operating system version.
+            "id": "A String", # ID of this operating system version.
+            "operatingSystem": { # Contains information about an operating system that can be targeted by ads. # Operating system of this operating system version.
+              "mobile": True or False, # Whether this operating system is for mobile.
+              "dartId": "A String", # DART ID of this operating system. This is the ID used for targeting.
+              "kind": "dfareporting#operatingSystem", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#operatingSystem".
+              "name": "A String", # Name of this operating system.
+              "desktop": True or False, # Whether this operating system is for desktop.
+            },
+            "minorVersion": "A String", # Minor version (number after the first dot) of this operating system version.
+          },
+        ],
+        "browsers": [ # Browsers that this ad targets. For each browser either set browserVersionId or dartId along with the version numbers. If both are specified, only browserVersionId will be used. The other fields are populated automatically when the ad is inserted or updated.
+          { # Contains information about a browser that can be targeted by ads.
+            "majorVersion": "A String", # Major version number (leftmost number) of this browser. For example, for Chrome 5.0.376.86 beta, this field should be set to 5. An asterisk (*) may be used to target any version number, and a question mark (?) may be used to target cases where the version number cannot be identified. For example, Chrome *.* targets any version of Chrome: 1.2, 2.5, 3.5, and so on. Chrome 3.* targets Chrome 3.1, 3.5, but not 4.0. Firefox ?.? targets cases where the ad server knows the browser is Firefox but can't tell which version it is.
+            "kind": "dfareporting#browser", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#browser".
+            "name": "A String", # Name of this browser.
+            "browserVersionId": "A String", # ID referring to this grouping of browser and version numbers. This is the ID used for targeting.
+            "dartId": "A String", # DART ID of this browser. This is the ID used when generating reports.
+            "minorVersion": "A String", # Minor version number (number after first dot on left) of this browser. For example, for Chrome 5.0.375.86 beta, this field should be set to 0. An asterisk (*) may be used to target any version number, and a question mark (?) may be used to target cases where the version number cannot be identified. For example, Chrome *.* targets any version of Chrome: 1.2, 2.5, 3.5, and so on. Chrome 3.* targets Chrome 3.1, 3.5, but not 4.0. Firefox ?.? targets cases where the ad server knows the browser is Firefox but can't tell which version it is.
+          },
+        ],
+        "operatingSystems": [ # Operating systems that this ad targets. To target specific versions, use operatingSystemVersions. For each operating system only dartId is required. The other fields are populated automatically when the ad is inserted or updated. If targeting an operating system, do not set targeting for operating system versions for the same operating system.
+          { # Contains information about an operating system that can be targeted by ads.
+            "mobile": True or False, # Whether this operating system is for mobile.
+            "dartId": "A String", # DART ID of this operating system. This is the ID used for targeting.
+            "kind": "dfareporting#operatingSystem", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#operatingSystem".
+            "name": "A String", # Name of this operating system.
+            "desktop": True or False, # Whether this operating system is for desktop.
+          },
+        ],
+        "mobileCarriers": [ # Mobile carriers that this ad targets. For each mobile carrier only id is required, and the other fields are populated automatically when the ad is inserted or updated. If targeting a mobile carrier, do not set targeting for any zip codes.
+          { # Contains information about a mobile carrier that can be targeted by ads.
+            "kind": "dfareporting#mobileCarrier", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#mobileCarrier".
+            "countryDartId": "A String", # DART ID of the country to which this mobile carrier belongs.
+            "id": "A String", # ID of this mobile carrier.
+            "countryCode": "A String", # Country code of the country to which this mobile carrier belongs.
+            "name": "A String", # Name of this mobile carrier.
+          },
+        ],
+        "connectionTypes": [ # Connection types that this ad targets. For each connection type only id is required. The other fields are populated automatically when the ad is inserted or updated.
+          { # Contains information about an internet connection type that can be targeted by ads. Clients can use the connection type to target mobile vs. broadband users.
+            "kind": "dfareporting#connectionType", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#connectionType".
+            "id": "A String", # ID of this connection type.
+            "name": "A String", # Name of this connection type.
+          },
+        ],
+      },
+      "creativeRotation": { # Creative Rotation. # Creative rotation for this ad. Applicable when type is AD_SERVING_DEFAULT_AD, AD_SERVING_STANDARD_AD, or AD_SERVING_TRACKING. When type is AD_SERVING_DEFAULT_AD, this field should have exactly one creativeAssignment.
+        "creativeAssignments": [ # Creative assignments in this creative rotation.
+          { # Creative Assignment.
+            "weight": 42, # Weight of the creative assignment, applicable when the rotation type is CREATIVE_ROTATION_TYPE_RANDOM.
+            "sequence": 42, # Sequence number of the creative assignment, applicable when the rotation type is CREATIVE_ROTATION_TYPE_SEQUENTIAL.
+            "applyEventTags": True or False, # Whether applicable event tags should fire when this creative assignment is rendered. If this value is unset when the ad is inserted or updated, it will default to true for all creative types EXCEPT for INTERNAL_REDIRECT, INTERSTITIAL_INTERNAL_REDIRECT, and INSTREAM_VIDEO.
+            "richMediaExitOverrides": [ # Rich media exit overrides for this creative assignment.
+                # Applicable when the creative type is any of the following:
+                # - RICH_MEDIA_INPAGE
+                # - RICH_MEDIA_INPAGE_FLOATING
+                # - RICH_MEDIA_IM_EXPAND
+                # - RICH_MEDIA_EXPANDING
+                # - RICH_MEDIA_INTERSTITIAL_FLOAT
+                # - RICH_MEDIA_MOBILE_IN_APP
+                # - RICH_MEDIA_MULTI_FLOATING
+                # - RICH_MEDIA_PEEL_DOWN
+                # - ADVANCED_BANNER
+                # - VPAID_LINEAR
+                # - VPAID_NON_LINEAR
+              { # Rich Media Exit Override.
+                "clickThroughUrl": { # Click-through URL # Click-through URL of this rich media exit override. Applicable if the enabled field is set to true.
+                  "computedClickThroughUrl": "A String", # Read-only convenience field representing the actual URL that will be used for this click-through. The URL is computed as follows:
+                      # - If defaultLandingPage is enabled then the campaign's default landing page URL is assigned to this field.
+                      # - If defaultLandingPage is not enabled and a landingPageId is specified then that landing page's URL is assigned to this field.
+                      # - If neither of the above cases apply, then the customClickThroughUrl is assigned to this field.
+                  "customClickThroughUrl": "A String", # Custom click-through URL. Applicable if the defaultLandingPage field is set to false and the landingPageId field is left unset.
+                  "landingPageId": "A String", # ID of the landing page for the click-through URL. Applicable if the defaultLandingPage field is set to false.
+                  "defaultLandingPage": True or False, # Whether the campaign default landing page is used.
+                },
+                "enabled": True or False, # Whether to use the clickThroughUrl. If false, the creative-level exit will be used.
+                "exitId": "A String", # ID for the override to refer to a specific exit in the creative.
+              },
+            ],
+            "sslCompliant": True or False, # Whether the creative to be assigned is SSL-compliant. This is a read-only field that is auto-generated when the ad is inserted or updated.
+            "creativeGroupAssignments": [ # Creative group assignments for this creative assignment. Only one assignment per creative group number is allowed for a maximum of two assignments.
+              { # Creative Group Assignment.
+                "creativeGroupNumber": "A String", # Creative group number of the creative group assignment.
+                "creativeGroupId": "A String", # ID of the creative group to be assigned.
+              },
+            ],
+            "companionCreativeOverrides": [ # Companion creative overrides for this creative assignment. Applicable to video ads.
+              { # Companion Click-through override.
+                "clickThroughUrl": { # Click-through URL # Click-through URL of this companion click-through override.
+                  "computedClickThroughUrl": "A String", # Read-only convenience field representing the actual URL that will be used for this click-through. The URL is computed as follows:
+                      # - If defaultLandingPage is enabled then the campaign's default landing page URL is assigned to this field.
+                      # - If defaultLandingPage is not enabled and a landingPageId is specified then that landing page's URL is assigned to this field.
+                      # - If neither of the above cases apply, then the customClickThroughUrl is assigned to this field.
+                  "customClickThroughUrl": "A String", # Custom click-through URL. Applicable if the defaultLandingPage field is set to false and the landingPageId field is left unset.
+                  "landingPageId": "A String", # ID of the landing page for the click-through URL. Applicable if the defaultLandingPage field is set to false.
+                  "defaultLandingPage": True or False, # Whether the campaign default landing page is used.
+                },
+                "creativeId": "A String", # ID of the creative for this companion click-through override.
+              },
+            ],
+            "startTime": "A String", # Date and time that the assigned creative should start serving.
+            "clickThroughUrl": { # Click-through URL # Click-through URL of the creative assignment.
+              "computedClickThroughUrl": "A String", # Read-only convenience field representing the actual URL that will be used for this click-through. The URL is computed as follows:
+                  # - If defaultLandingPage is enabled then the campaign's default landing page URL is assigned to this field.
+                  # - If defaultLandingPage is not enabled and a landingPageId is specified then that landing page's URL is assigned to this field.
+                  # - If neither of the above cases apply, then the customClickThroughUrl is assigned to this field.
+              "customClickThroughUrl": "A String", # Custom click-through URL. Applicable if the defaultLandingPage field is set to false and the landingPageId field is left unset.
+              "landingPageId": "A String", # ID of the landing page for the click-through URL. Applicable if the defaultLandingPage field is set to false.
+              "defaultLandingPage": True or False, # Whether the campaign default landing page is used.
+            },
+            "active": True or False, # Whether this creative assignment is active. When true, the creative will be included in the ad's rotation.
+            "creativeId": "A String", # ID of the creative to be assigned. This is a required field.
+            "endTime": "A String", # Date and time that the assigned creative should stop serving. Must be later than the start time.
+            "creativeIdDimensionValue": { # Represents a DimensionValue resource. # Dimension value for the ID of the creative. This is a read-only, auto-generated field.
+              "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+              "value": "A String", # The value of the dimension.
+              "dimensionName": "A String", # The name of the dimension.
+              "etag": "A String", # The eTag of this response for caching purposes.
+              "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+              "id": "A String", # The ID associated with the value if available.
+            },
+          },
+        ],
+        "weightCalculationStrategy": "A String", # Strategy for calculating weights. Used with CREATIVE_ROTATION_TYPE_RANDOM.
+        "creativeOptimizationConfigurationId": "A String", # Creative optimization configuration that is used by this ad. It should refer to one of the existing optimization configurations in the ad's campaign. If it is unset or set to 0, then the campaign's default optimization configuration will be used for this ad.
+        "type": "A String", # Type of creative rotation. Can be used to specify whether to use sequential or random rotation.
+      },
+      "clickThroughUrl": { # Click-through URL # Click-through URL for this ad. This is a required field on insertion. Applicable when type is AD_SERVING_CLICK_TRACKER.
+        "computedClickThroughUrl": "A String", # Read-only convenience field representing the actual URL that will be used for this click-through. The URL is computed as follows:
+            # - If defaultLandingPage is enabled then the campaign's default landing page URL is assigned to this field.
+            # - If defaultLandingPage is not enabled and a landingPageId is specified then that landing page's URL is assigned to this field.
+            # - If neither of the above cases apply, then the customClickThroughUrl is assigned to this field.
+        "customClickThroughUrl": "A String", # Custom click-through URL. Applicable if the defaultLandingPage field is set to false and the landingPageId field is left unset.
+        "landingPageId": "A String", # ID of the landing page for the click-through URL. Applicable if the defaultLandingPage field is set to false.
+        "defaultLandingPage": True or False, # Whether the campaign default landing page is used.
+      },
+      "comments": "A String", # Comments for this ad.
+      "remarketingListExpression": { # Remarketing List Targeting Expression. # Remarketing list targeting expression for this ad. This field must be left blank if the ad is using a targeting template. Applicable when type is AD_SERVING_STANDARD_AD.
+        "expression": "A String", # Expression describing which lists are being targeted by the ad.
+      },
+      "idDimensionValue": { # Represents a DimensionValue resource. # Dimension value for the ID of this ad. This is a read-only, auto-generated field.
+        "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+        "value": "A String", # The value of the dimension.
+        "dimensionName": "A String", # The name of the dimension.
+        "etag": "A String", # The eTag of this response for caching purposes.
+        "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+        "id": "A String", # The ID associated with the value if available.
+      },
+      "size": { # Represents the dimensions of ads, placements, creatives, or creative assets. # Size of this ad. Applicable when type is AD_SERVING_DEFAULT_AD.
+        "width": 42, # Width of this size.
+        "kind": "dfareporting#size", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#size".
+        "iab": True or False, # IAB standard size. This is a read-only, auto-generated field.
+        "id": "A String", # ID of this size. This is a read-only, auto-generated field.
+        "height": 42, # Height of this size.
+      },
+      "type": "A String", # Type of ad. This is a required field on insertion. Note that default ads (AD_SERVING_DEFAULT_AD) cannot be created directly (see Creative resource).
+      "sslRequired": True or False, # Whether this ad requires ssl. This is a read-only field that is auto-generated when the ad is inserted or updated.
+      "audienceSegmentId": "A String", # Audience segment ID that is being targeted for this ad. Applicable when type is AD_SERVING_STANDARD_AD.
+      "keyValueTargetingExpression": { # Key Value Targeting Expression. # Key-value targeting information for this ad. This field must be left blank if the ad is using a targeting template. Applicable when type is AD_SERVING_STANDARD_AD.
+        "expression": "A String", # Keyword expression being targeted by the ad.
+      },
+      "campaignIdDimensionValue": { # Represents a DimensionValue resource. # Dimension value for the ID of the campaign. This is a read-only, auto-generated field.
+        "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+        "value": "A String", # The value of the dimension.
+        "dimensionName": "A String", # The name of the dimension.
+        "etag": "A String", # The eTag of this response for caching purposes.
+        "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+        "id": "A String", # The ID associated with the value if available.
+      },
+      "defaultClickThroughEventTagProperties": { # Properties of inheriting and overriding the default click-through event tag. A campaign may override the event tag defined at the advertiser level, and an ad may also override the campaign's setting further. # Default click-through event tag properties for this ad.
+        "overrideInheritedEventTag": True or False, # Whether this entity should override the inherited default click-through event tag with its own defined value.
+        "defaultClickThroughEventTagId": "A String", # ID of the click-through event tag to apply to all ads in this entity's scope.
+      },
+      "createInfo": { # Modification timestamp. # Information about the creation of this ad. This is a read-only field.
+        "time": "A String", # Timestamp of the last change in milliseconds since epoch.
+      },
+      "startTime": "A String", # Date and time that this ad should start serving. If creating an ad, this field must be a time in the future. This is a required field on insertion.
+      "active": True or False, # Whether this ad is active. When true, archived must be false.
+      "compatibility": "A String", # Compatibility of this ad. Applicable when type is AD_SERVING_DEFAULT_AD. DISPLAY and DISPLAY_INTERSTITIAL refer to either rendering on desktop or on mobile devices or in mobile apps for regular or interstitial ads, respectively. APP and APP_INTERSTITIAL are only used for existing default ads. New mobile placements must be assigned DISPLAY or DISPLAY_INTERSTITIAL and default ads created for those placements will be limited to those compatibility types. IN_STREAM_VIDEO refers to rendering in-stream video ads developed with the VAST standard.
+      "kind": "dfareporting#ad", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#ad".
+      "subaccountId": "A String", # Subaccount ID of this ad. This is a read-only field that can be left blank.
+      "name": "A String", # Name of this ad. This is a required field and must be less than 256 characters long.
+      "dayPartTargeting": { # Day Part Targeting. # Time and day targeting information for this ad. This field must be left blank if the ad is using a targeting template. Applicable when type is AD_SERVING_STANDARD_AD.
+        "userLocalTime": True or False, # Whether or not to use the user's local time. If false, the America/New York time zone applies.
+        "hoursOfDay": [ # Hours of the day when the ad will serve. Must be an integer between 0 and 23 (inclusive), where 0 is midnight to 1 AM, and 23 is 11 PM to midnight. Can be specified with days of week, in which case the ad would serve during these hours on the specified days. For example, if Monday, Wednesday, Friday are the days of week specified and 9-10am, 3-5pm (hours 9, 15, and 16) is specified, the ad would serve Monday, Wednesdays, and Fridays at 9-10am and 3-5pm.
+          42,
+        ],
+        "daysOfWeek": [ # Days of the week when the ad will serve.
+            #
+            # Acceptable values are:
+            # - "SUNDAY"
+            # - "MONDAY"
+            # - "TUESDAY"
+            # - "WEDNESDAY"
+            # - "THURSDAY"
+            # - "FRIDAY"
+            # - "SATURDAY"
+          "A String",
+        ],
+      },
+      "lastModifiedInfo": { # Modification timestamp. # Information about the most recent modification of this ad. This is a read-only field.
+        "time": "A String", # Timestamp of the last change in milliseconds since epoch.
+      },
+      "sslCompliant": True or False, # Whether this ad is ssl compliant. This is a read-only field that is auto-generated when the ad is inserted or updated.
+      "placementAssignments": [ # Placement assignments for this ad.
+        { # Placement Assignment.
+          "active": True or False, # Whether this placement assignment is active. When true, the placement will be included in the ad's rotation.
+          "placementIdDimensionValue": { # Represents a DimensionValue resource. # Dimension value for the ID of the placement. This is a read-only, auto-generated field.
+            "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+            "value": "A String", # The value of the dimension.
+            "dimensionName": "A String", # The name of the dimension.
+            "etag": "A String", # The eTag of this response for caching purposes.
+            "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+            "id": "A String", # The ID associated with the value if available.
+          },
+          "placementId": "A String", # ID of the placement to be assigned. This is a required field.
+          "sslRequired": True or False, # Whether the placement to be assigned requires SSL. This is a read-only field that is auto-generated when the ad is inserted or updated.
+        },
+      ],
+      "endTime": "A String", # Date and time that this ad should stop serving. Must be later than the start time. This is a required field on insertion.
+      "dynamicClickTracker": True or False, # Whether this ad is a dynamic click tracker. Applicable when type is AD_SERVING_CLICK_TRACKER. This is a required field on insert, and is read-only after insert.
+    }</pre>
+</div>
+
+<div class="method">
+    <code class="details" id="list">list(profileId, landingPageIds=None, overriddenEventTagId=None, campaignIds=None, sizeIds=None, archived=None, creativeOptimizationConfigurationIds=None, sslCompliant=None, pageToken=None, sortOrder=None, type=None, sslRequired=None, creativeIds=None, remarketingListIds=None, maxResults=None, placementIds=None, active=None, compatibility=None, advertiserId=None, searchString=None, audienceSegmentIds=None, ids=None, sortField=None, dynamicClickTracker=None)</code>
+  <pre>Retrieves a list of ads, possibly filtered. This method supports paging.
+
+Args:
+  profileId: string, User profile ID associated with this request. (required)
+  landingPageIds: string, Select only ads with these landing page IDs. (repeated)
+  overriddenEventTagId: string, Select only ads with this event tag override ID.
+  campaignIds: string, Select only ads with these campaign IDs. (repeated)
+  sizeIds: string, Select only ads with these size IDs. (repeated)
+  archived: boolean, Select only archived ads.
+  creativeOptimizationConfigurationIds: string, Select only ads with these creative optimization configuration IDs. (repeated)
+  sslCompliant: boolean, Select only ads that are SSL-compliant.
+  pageToken: string, Value of the nextPageToken from the previous result page.
+  sortOrder: string, Order of sorted results, default is ASCENDING.
+    Allowed values
+      ASCENDING - 
+      DESCENDING - 
+  type: string, Select only ads with these types. (repeated)
+    Allowed values
+      AD_SERVING_CLICK_TRACKER - 
+      AD_SERVING_DEFAULT_AD - 
+      AD_SERVING_STANDARD_AD - 
+      AD_SERVING_TRACKING - 
+  sslRequired: boolean, Select only ads that require SSL.
+  creativeIds: string, Select only ads with these creative IDs assigned. (repeated)
+  remarketingListIds: string, Select only ads whose list targeting expression use these remarketing list IDs. (repeated)
+  maxResults: integer, Maximum number of results to return.
+  placementIds: string, Select only ads with these placement IDs assigned. (repeated)
+  active: boolean, Select only active ads.
+  compatibility: string, Select default ads with the specified compatibility. Applicable when type is AD_SERVING_DEFAULT_AD. DISPLAY and DISPLAY_INTERSTITIAL refer to rendering either on desktop or on mobile devices for regular or interstitial ads, respectively. APP and APP_INTERSTITIAL are for rendering in mobile apps. IN_STREAM_VIDEO refers to rendering an in-stream video ads developed with the VAST standard.
+    Allowed values
+      APP - 
+      APP_INTERSTITIAL - 
+      DISPLAY - 
+      DISPLAY_INTERSTITIAL - 
+      IN_STREAM_VIDEO - 
+  advertiserId: string, Select only ads with this advertiser ID.
+  searchString: string, Allows searching for objects by name or ID. Wildcards (*) are allowed. For example, "ad*2015" will return objects with names like "ad June 2015", "ad April 2015", or simply "ad 2015". Most of the searches also add wildcards implicitly at the start and the end of the search string. For example, a search string of "ad" will match objects with name "my ad", "ad 2015", or simply "ad".
+  audienceSegmentIds: string, Select only ads with these audience segment IDs. (repeated)
+  ids: string, Select only ads with these IDs. (repeated)
+  sortField: string, Field by which to sort the list.
+    Allowed values
+      ID - 
+      NAME - 
+  dynamicClickTracker: boolean, Select only dynamic click trackers. Applicable when type is AD_SERVING_CLICK_TRACKER. If true, select dynamic click trackers. If false, select static click trackers. Leave unset to select both.
+
+Returns:
+  An object of the form:
+
+    { # Ad List Response
+    "nextPageToken": "A String", # Pagination token to be used for the next list operation.
+    "kind": "dfareporting#adsListResponse", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#adsListResponse".
+    "ads": [ # Ad collection.
+      { # Contains properties of a DCM ad.
+          "clickThroughUrlSuffixProperties": { # Click Through URL Suffix settings. # Click-through URL suffix properties for this ad. Applies to the URL in the ad or (if overriding ad properties) the URL in the creative.
+            "clickThroughUrlSuffix": "A String", # Click-through URL suffix to apply to all ads in this entity's scope. Must be less than 128 characters long.
+            "overrideInheritedSuffix": True or False, # Whether this entity should override the inherited click-through URL suffix with its own defined value.
+          },
+          "campaignId": "A String", # Campaign ID of this ad. This is a required field on insertion.
+          "languageTargeting": { # Language Targeting. # Language targeting information for this ad. This field must be left blank if the ad is using a targeting template. Applicable when type is AD_SERVING_STANDARD_AD.
+            "languages": [ # Languages that this ad targets. For each language only languageId is required. The other fields are populated automatically when the ad is inserted or updated.
+              { # Contains information about a language that can be targeted by ads.
+                "languageCode": "A String", # Format of language code is an ISO 639 two-letter language code optionally followed by an underscore followed by an ISO 3166 code. Examples are "en" for English or "zh_CN" for Simplified Chinese.
+                "kind": "dfareporting#language", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#language".
+                "id": "A String", # Language ID of this language. This is the ID used for targeting and generating reports.
+                "name": "A String", # Name of this language.
+              },
+            ],
+          },
+          "advertiserId": "A String", # Advertiser ID of this ad. This is a required field on insertion.
+          "geoTargeting": { # Geographical Targeting. # Geographical targeting information for this ad. This field must be left blank if the ad is using a targeting template. Applicable when type is AD_SERVING_STANDARD_AD.
+            "countries": [ # Countries to be targeted or excluded from targeting, depending on the setting of the excludeCountries field. For each country only dartId is required. The other fields are populated automatically when the ad is inserted or updated. If targeting or excluding a country, do not target regions, cities, metros, or postal codes in the same country.
+              { # Contains information about a country that can be targeted by ads.
+                "dartId": "A String", # DART ID of this country. This is the ID used for targeting and generating reports.
+                "sslEnabled": True or False, # Whether ad serving supports secure servers in this country.
+                "kind": "dfareporting#country", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#country".
+                "countryCode": "A String", # Country code.
+                "name": "A String", # Name of this country.
+              },
+            ],
+            "excludeCountries": True or False, # Whether or not to exclude the countries in the countries field from targeting. If false, the countries field refers to countries which will be targeted by the ad.
+            "postalCodes": [ # Postal codes to be targeted. For each postal code only id is required. The other fields are populated automatically when the ad is inserted or updated. If targeting a postal code, do not target or exclude the country of the postal code.
+              { # Contains information about a postal code that can be targeted by ads.
+                "countryDartId": "A String", # DART ID of the country to which this postal code belongs.
+                "kind": "dfareporting#postalCode", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#postalCode".
+                "code": "A String", # Postal code. This is equivalent to the id field.
+                "id": "A String", # ID of this postal code.
+                "countryCode": "A String", # Country code of the country to which this postal code belongs.
+              },
+            ],
+            "regions": [ # Regions to be targeted. For each region only dartId is required. The other fields are populated automatically when the ad is inserted or updated. If targeting a region, do not target or exclude the country of the region.
+              { # Contains information about a region that can be targeted by ads.
+                "kind": "dfareporting#region", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#region".
+                "countryDartId": "A String", # DART ID of the country to which this region belongs.
+                "name": "A String", # Name of this region.
+                "countryCode": "A String", # Country code of the country to which this region belongs.
+                "regionCode": "A String", # Region code.
+                "dartId": "A String", # DART ID of this region.
+              },
+            ],
+            "cities": [ # Cities to be targeted. For each city only dartId is required. The other fields are populated automatically when the ad is inserted or updated. If targeting a city, do not target or exclude the country of the city, and do not target the metro or region of the city.
+              { # Contains information about a city that can be targeted by ads.
+                "kind": "dfareporting#city", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#city".
+                "countryDartId": "A String", # DART ID of the country to which this city belongs.
+                "name": "A String", # Name of this city.
+                "countryCode": "A String", # Country code of the country to which this city belongs.
+                "metroCode": "A String", # Metro region code of the metro region (DMA) to which this city belongs.
+                "regionCode": "A String", # Region code of the region to which this city belongs.
+                "metroDmaId": "A String", # ID of the metro region (DMA) to which this city belongs.
+                "dartId": "A String", # DART ID of this city. This is the ID used for targeting and generating reports.
+                "regionDartId": "A String", # DART ID of the region to which this city belongs.
+              },
+            ],
+            "metros": [ # Metros to be targeted. For each metro only dmaId is required. The other fields are populated automatically when the ad is inserted or updated. If targeting a metro, do not target or exclude the country of the metro.
+              { # Contains information about a metro region that can be targeted by ads.
+                "kind": "dfareporting#metro", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#metro".
+                "countryDartId": "A String", # DART ID of the country to which this metro region belongs.
+                "name": "A String", # Name of this metro region.
+                "countryCode": "A String", # Country code of the country to which this metro region belongs.
+                "metroCode": "A String", # Metro code of this metro region. This is equivalent to dma_id.
+                "dmaId": "A String", # DMA ID of this metro region. This is the ID used for targeting and generating reports, and is equivalent to metro_code.
+                "dartId": "A String", # DART ID of this metro region.
+              },
+            ],
+          },
+          "creativeGroupAssignments": [ # Creative group assignments for this ad. Applicable when type is AD_SERVING_CLICK_TRACKER. Only one assignment per creative group number is allowed for a maximum of two assignments.
+            { # Creative Group Assignment.
+              "creativeGroupNumber": "A String", # Creative group number of the creative group assignment.
+              "creativeGroupId": "A String", # ID of the creative group to be assigned.
+            },
+          ],
+          "deliverySchedule": { # Delivery Schedule. # Delivery schedule information for this ad. Applicable when type is AD_SERVING_STANDARD_AD or AD_SERVING_TRACKING. This field along with subfields priority and impressionRatio are required on insertion when type is AD_SERVING_STANDARD_AD.
+            "priority": "A String", # Serving priority of an ad, with respect to other ads. The lower the priority number, the greater the priority with which it is served.
+            "hardCutoff": True or False, # Whether or not hard cutoff is enabled. If true, the ad will not serve after the end date and time. Otherwise the ad will continue to be served until it has reached its delivery goals.
+            "frequencyCap": { # Frequency Cap. # Limit on the number of times an individual user can be served the ad within a specified period of time.
+              "duration": "A String", # Duration of time, in seconds, for this frequency cap. The maximum duration is 90 days in seconds, or 7,776,000.
+              "impressions": "A String", # Number of times an individual user can be served the ad within the specified duration. The maximum allowed is 15.
+            },
+            "impressionRatio": "A String", # Impression ratio for this ad. This ratio determines how often each ad is served relative to the others. For example, if ad A has an impression ratio of 1 and ad B has an impression ratio of 3, then DCM will serve ad B three times as often as ad A. Must be between 1 and 10.
+          },
+          "advertiserIdDimensionValue": { # Represents a DimensionValue resource. # Dimension value for the ID of the advertiser. This is a read-only, auto-generated field.
+            "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+            "value": "A String", # The value of the dimension.
+            "dimensionName": "A String", # The name of the dimension.
+            "etag": "A String", # The eTag of this response for caching purposes.
+            "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+            "id": "A String", # The ID associated with the value if available.
+          },
+          "eventTagOverrides": [ # Event tag overrides for this ad.
+            { # Event tag override information.
+              "enabled": True or False, # Whether this override is enabled.
+              "id": "A String", # ID of this event tag override. This is a read-only, auto-generated field.
+            },
+          ],
+          "id": "A String", # ID of this ad. This is a read-only, auto-generated field.
+          "accountId": "A String", # Account ID of this ad. This is a read-only field that can be left blank.
+          "archived": True or False, # Whether this ad is archived. When true, active must be false.
+          "targetingTemplateId": "A String", # Targeting template ID, used to apply preconfigured targeting information to this ad. This cannot be set while any of dayPartTargeting, geoTargeting, keyValueTargetingExpression, languageTargeting, remarketingListExpression, or technologyTargeting are set. Applicable when type is AD_SERVING_STANDARD_AD.
+          "technologyTargeting": { # Technology Targeting. # Technology platform targeting information for this ad. This field must be left blank if the ad is using a targeting template. Applicable when type is AD_SERVING_STANDARD_AD.
+            "platformTypes": [ # Platform types that this ad targets. For example, desktop, mobile, or tablet. For each platform type, only id is required, and the other fields are populated automatically when the ad is inserted or updated.
+              { # Contains information about a platform type that can be targeted by ads.
+                "kind": "dfareporting#platformType", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#platformType".
+                "id": "A String", # ID of this platform type.
+                "name": "A String", # Name of this platform type.
+              },
+            ],
+            "operatingSystemVersions": [ # Operating system versions that this ad targets. To target all versions, use operatingSystems. For each operating system version, only id is required. The other fields are populated automatically when the ad is inserted or updated. If targeting an operating system version, do not set targeting for the corresponding operating system in operatingSystems.
+              { # Contains information about a particular version of an operating system that can be targeted by ads.
+                "majorVersion": "A String", # Major version (leftmost number) of this operating system version.
+                "kind": "dfareporting#operatingSystemVersion", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#operatingSystemVersion".
+                "name": "A String", # Name of this operating system version.
+                "id": "A String", # ID of this operating system version.
+                "operatingSystem": { # Contains information about an operating system that can be targeted by ads. # Operating system of this operating system version.
+                  "mobile": True or False, # Whether this operating system is for mobile.
+                  "dartId": "A String", # DART ID of this operating system. This is the ID used for targeting.
+                  "kind": "dfareporting#operatingSystem", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#operatingSystem".
+                  "name": "A String", # Name of this operating system.
+                  "desktop": True or False, # Whether this operating system is for desktop.
+                },
+                "minorVersion": "A String", # Minor version (number after the first dot) of this operating system version.
+              },
+            ],
+            "browsers": [ # Browsers that this ad targets. For each browser either set browserVersionId or dartId along with the version numbers. If both are specified, only browserVersionId will be used. The other fields are populated automatically when the ad is inserted or updated.
+              { # Contains information about a browser that can be targeted by ads.
+                "majorVersion": "A String", # Major version number (leftmost number) of this browser. For example, for Chrome 5.0.376.86 beta, this field should be set to 5. An asterisk (*) may be used to target any version number, and a question mark (?) may be used to target cases where the version number cannot be identified. For example, Chrome *.* targets any version of Chrome: 1.2, 2.5, 3.5, and so on. Chrome 3.* targets Chrome 3.1, 3.5, but not 4.0. Firefox ?.? targets cases where the ad server knows the browser is Firefox but can't tell which version it is.
+                "kind": "dfareporting#browser", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#browser".
+                "name": "A String", # Name of this browser.
+                "browserVersionId": "A String", # ID referring to this grouping of browser and version numbers. This is the ID used for targeting.
+                "dartId": "A String", # DART ID of this browser. This is the ID used when generating reports.
+                "minorVersion": "A String", # Minor version number (number after first dot on left) of this browser. For example, for Chrome 5.0.375.86 beta, this field should be set to 0. An asterisk (*) may be used to target any version number, and a question mark (?) may be used to target cases where the version number cannot be identified. For example, Chrome *.* targets any version of Chrome: 1.2, 2.5, 3.5, and so on. Chrome 3.* targets Chrome 3.1, 3.5, but not 4.0. Firefox ?.? targets cases where the ad server knows the browser is Firefox but can't tell which version it is.
+              },
+            ],
+            "operatingSystems": [ # Operating systems that this ad targets. To target specific versions, use operatingSystemVersions. For each operating system only dartId is required. The other fields are populated automatically when the ad is inserted or updated. If targeting an operating system, do not set targeting for operating system versions for the same operating system.
+              { # Contains information about an operating system that can be targeted by ads.
+                "mobile": True or False, # Whether this operating system is for mobile.
+                "dartId": "A String", # DART ID of this operating system. This is the ID used for targeting.
+                "kind": "dfareporting#operatingSystem", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#operatingSystem".
+                "name": "A String", # Name of this operating system.
+                "desktop": True or False, # Whether this operating system is for desktop.
+              },
+            ],
+            "mobileCarriers": [ # Mobile carriers that this ad targets. For each mobile carrier only id is required, and the other fields are populated automatically when the ad is inserted or updated. If targeting a mobile carrier, do not set targeting for any zip codes.
+              { # Contains information about a mobile carrier that can be targeted by ads.
+                "kind": "dfareporting#mobileCarrier", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#mobileCarrier".
+                "countryDartId": "A String", # DART ID of the country to which this mobile carrier belongs.
+                "id": "A String", # ID of this mobile carrier.
+                "countryCode": "A String", # Country code of the country to which this mobile carrier belongs.
+                "name": "A String", # Name of this mobile carrier.
+              },
+            ],
+            "connectionTypes": [ # Connection types that this ad targets. For each connection type only id is required. The other fields are populated automatically when the ad is inserted or updated.
+              { # Contains information about an internet connection type that can be targeted by ads. Clients can use the connection type to target mobile vs. broadband users.
+                "kind": "dfareporting#connectionType", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#connectionType".
+                "id": "A String", # ID of this connection type.
+                "name": "A String", # Name of this connection type.
+              },
+            ],
+          },
+          "creativeRotation": { # Creative Rotation. # Creative rotation for this ad. Applicable when type is AD_SERVING_DEFAULT_AD, AD_SERVING_STANDARD_AD, or AD_SERVING_TRACKING. When type is AD_SERVING_DEFAULT_AD, this field should have exactly one creativeAssignment.
+            "creativeAssignments": [ # Creative assignments in this creative rotation.
+              { # Creative Assignment.
+                "weight": 42, # Weight of the creative assignment, applicable when the rotation type is CREATIVE_ROTATION_TYPE_RANDOM.
+                "sequence": 42, # Sequence number of the creative assignment, applicable when the rotation type is CREATIVE_ROTATION_TYPE_SEQUENTIAL.
+                "applyEventTags": True or False, # Whether applicable event tags should fire when this creative assignment is rendered. If this value is unset when the ad is inserted or updated, it will default to true for all creative types EXCEPT for INTERNAL_REDIRECT, INTERSTITIAL_INTERNAL_REDIRECT, and INSTREAM_VIDEO.
+                "richMediaExitOverrides": [ # Rich media exit overrides for this creative assignment.
+                    # Applicable when the creative type is any of the following:
+                    # - RICH_MEDIA_INPAGE
+                    # - RICH_MEDIA_INPAGE_FLOATING
+                    # - RICH_MEDIA_IM_EXPAND
+                    # - RICH_MEDIA_EXPANDING
+                    # - RICH_MEDIA_INTERSTITIAL_FLOAT
+                    # - RICH_MEDIA_MOBILE_IN_APP
+                    # - RICH_MEDIA_MULTI_FLOATING
+                    # - RICH_MEDIA_PEEL_DOWN
+                    # - ADVANCED_BANNER
+                    # - VPAID_LINEAR
+                    # - VPAID_NON_LINEAR
+                  { # Rich Media Exit Override.
+                    "clickThroughUrl": { # Click-through URL # Click-through URL of this rich media exit override. Applicable if the enabled field is set to true.
+                      "computedClickThroughUrl": "A String", # Read-only convenience field representing the actual URL that will be used for this click-through. The URL is computed as follows:
+                          # - If defaultLandingPage is enabled then the campaign's default landing page URL is assigned to this field.
+                          # - If defaultLandingPage is not enabled and a landingPageId is specified then that landing page's URL is assigned to this field.
+                          # - If neither of the above cases apply, then the customClickThroughUrl is assigned to this field.
+                      "customClickThroughUrl": "A String", # Custom click-through URL. Applicable if the defaultLandingPage field is set to false and the landingPageId field is left unset.
+                      "landingPageId": "A String", # ID of the landing page for the click-through URL. Applicable if the defaultLandingPage field is set to false.
+                      "defaultLandingPage": True or False, # Whether the campaign default landing page is used.
+                    },
+                    "enabled": True or False, # Whether to use the clickThroughUrl. If false, the creative-level exit will be used.
+                    "exitId": "A String", # ID for the override to refer to a specific exit in the creative.
+                  },
+                ],
+                "sslCompliant": True or False, # Whether the creative to be assigned is SSL-compliant. This is a read-only field that is auto-generated when the ad is inserted or updated.
+                "creativeGroupAssignments": [ # Creative group assignments for this creative assignment. Only one assignment per creative group number is allowed for a maximum of two assignments.
+                  { # Creative Group Assignment.
+                    "creativeGroupNumber": "A String", # Creative group number of the creative group assignment.
+                    "creativeGroupId": "A String", # ID of the creative group to be assigned.
+                  },
+                ],
+                "companionCreativeOverrides": [ # Companion creative overrides for this creative assignment. Applicable to video ads.
+                  { # Companion Click-through override.
+                    "clickThroughUrl": { # Click-through URL # Click-through URL of this companion click-through override.
+                      "computedClickThroughUrl": "A String", # Read-only convenience field representing the actual URL that will be used for this click-through. The URL is computed as follows:
+                          # - If defaultLandingPage is enabled then the campaign's default landing page URL is assigned to this field.
+                          # - If defaultLandingPage is not enabled and a landingPageId is specified then that landing page's URL is assigned to this field.
+                          # - If neither of the above cases apply, then the customClickThroughUrl is assigned to this field.
+                      "customClickThroughUrl": "A String", # Custom click-through URL. Applicable if the defaultLandingPage field is set to false and the landingPageId field is left unset.
+                      "landingPageId": "A String", # ID of the landing page for the click-through URL. Applicable if the defaultLandingPage field is set to false.
+                      "defaultLandingPage": True or False, # Whether the campaign default landing page is used.
+                    },
+                    "creativeId": "A String", # ID of the creative for this companion click-through override.
+                  },
+                ],
+                "startTime": "A String", # Date and time that the assigned creative should start serving.
+                "clickThroughUrl": { # Click-through URL # Click-through URL of the creative assignment.
+                  "computedClickThroughUrl": "A String", # Read-only convenience field representing the actual URL that will be used for this click-through. The URL is computed as follows:
+                      # - If defaultLandingPage is enabled then the campaign's default landing page URL is assigned to this field.
+                      # - If defaultLandingPage is not enabled and a landingPageId is specified then that landing page's URL is assigned to this field.
+                      # - If neither of the above cases apply, then the customClickThroughUrl is assigned to this field.
+                  "customClickThroughUrl": "A String", # Custom click-through URL. Applicable if the defaultLandingPage field is set to false and the landingPageId field is left unset.
+                  "landingPageId": "A String", # ID of the landing page for the click-through URL. Applicable if the defaultLandingPage field is set to false.
+                  "defaultLandingPage": True or False, # Whether the campaign default landing page is used.
+                },
+                "active": True or False, # Whether this creative assignment is active. When true, the creative will be included in the ad's rotation.
+                "creativeId": "A String", # ID of the creative to be assigned. This is a required field.
+                "endTime": "A String", # Date and time that the assigned creative should stop serving. Must be later than the start time.
+                "creativeIdDimensionValue": { # Represents a DimensionValue resource. # Dimension value for the ID of the creative. This is a read-only, auto-generated field.
+                  "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+                  "value": "A String", # The value of the dimension.
+                  "dimensionName": "A String", # The name of the dimension.
+                  "etag": "A String", # The eTag of this response for caching purposes.
+                  "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+                  "id": "A String", # The ID associated with the value if available.
+                },
+              },
+            ],
+            "weightCalculationStrategy": "A String", # Strategy for calculating weights. Used with CREATIVE_ROTATION_TYPE_RANDOM.
+            "creativeOptimizationConfigurationId": "A String", # Creative optimization configuration that is used by this ad. It should refer to one of the existing optimization configurations in the ad's campaign. If it is unset or set to 0, then the campaign's default optimization configuration will be used for this ad.
+            "type": "A String", # Type of creative rotation. Can be used to specify whether to use sequential or random rotation.
+          },
+          "clickThroughUrl": { # Click-through URL # Click-through URL for this ad. This is a required field on insertion. Applicable when type is AD_SERVING_CLICK_TRACKER.
+            "computedClickThroughUrl": "A String", # Read-only convenience field representing the actual URL that will be used for this click-through. The URL is computed as follows:
+                # - If defaultLandingPage is enabled then the campaign's default landing page URL is assigned to this field.
+                # - If defaultLandingPage is not enabled and a landingPageId is specified then that landing page's URL is assigned to this field.
+                # - If neither of the above cases apply, then the customClickThroughUrl is assigned to this field.
+            "customClickThroughUrl": "A String", # Custom click-through URL. Applicable if the defaultLandingPage field is set to false and the landingPageId field is left unset.
+            "landingPageId": "A String", # ID of the landing page for the click-through URL. Applicable if the defaultLandingPage field is set to false.
+            "defaultLandingPage": True or False, # Whether the campaign default landing page is used.
+          },
+          "comments": "A String", # Comments for this ad.
+          "remarketingListExpression": { # Remarketing List Targeting Expression. # Remarketing list targeting expression for this ad. This field must be left blank if the ad is using a targeting template. Applicable when type is AD_SERVING_STANDARD_AD.
+            "expression": "A String", # Expression describing which lists are being targeted by the ad.
+          },
+          "idDimensionValue": { # Represents a DimensionValue resource. # Dimension value for the ID of this ad. This is a read-only, auto-generated field.
+            "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+            "value": "A String", # The value of the dimension.
+            "dimensionName": "A String", # The name of the dimension.
+            "etag": "A String", # The eTag of this response for caching purposes.
+            "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+            "id": "A String", # The ID associated with the value if available.
+          },
+          "size": { # Represents the dimensions of ads, placements, creatives, or creative assets. # Size of this ad. Applicable when type is AD_SERVING_DEFAULT_AD.
+            "width": 42, # Width of this size.
+            "kind": "dfareporting#size", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#size".
+            "iab": True or False, # IAB standard size. This is a read-only, auto-generated field.
+            "id": "A String", # ID of this size. This is a read-only, auto-generated field.
+            "height": 42, # Height of this size.
+          },
+          "type": "A String", # Type of ad. This is a required field on insertion. Note that default ads (AD_SERVING_DEFAULT_AD) cannot be created directly (see Creative resource).
+          "sslRequired": True or False, # Whether this ad requires ssl. This is a read-only field that is auto-generated when the ad is inserted or updated.
+          "audienceSegmentId": "A String", # Audience segment ID that is being targeted for this ad. Applicable when type is AD_SERVING_STANDARD_AD.
+          "keyValueTargetingExpression": { # Key Value Targeting Expression. # Key-value targeting information for this ad. This field must be left blank if the ad is using a targeting template. Applicable when type is AD_SERVING_STANDARD_AD.
+            "expression": "A String", # Keyword expression being targeted by the ad.
+          },
+          "campaignIdDimensionValue": { # Represents a DimensionValue resource. # Dimension value for the ID of the campaign. This is a read-only, auto-generated field.
+            "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+            "value": "A String", # The value of the dimension.
+            "dimensionName": "A String", # The name of the dimension.
+            "etag": "A String", # The eTag of this response for caching purposes.
+            "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+            "id": "A String", # The ID associated with the value if available.
+          },
+          "defaultClickThroughEventTagProperties": { # Properties of inheriting and overriding the default click-through event tag. A campaign may override the event tag defined at the advertiser level, and an ad may also override the campaign's setting further. # Default click-through event tag properties for this ad.
+            "overrideInheritedEventTag": True or False, # Whether this entity should override the inherited default click-through event tag with its own defined value.
+            "defaultClickThroughEventTagId": "A String", # ID of the click-through event tag to apply to all ads in this entity's scope.
+          },
+          "createInfo": { # Modification timestamp. # Information about the creation of this ad. This is a read-only field.
+            "time": "A String", # Timestamp of the last change in milliseconds since epoch.
+          },
+          "startTime": "A String", # Date and time that this ad should start serving. If creating an ad, this field must be a time in the future. This is a required field on insertion.
+          "active": True or False, # Whether this ad is active. When true, archived must be false.
+          "compatibility": "A String", # Compatibility of this ad. Applicable when type is AD_SERVING_DEFAULT_AD. DISPLAY and DISPLAY_INTERSTITIAL refer to either rendering on desktop or on mobile devices or in mobile apps for regular or interstitial ads, respectively. APP and APP_INTERSTITIAL are only used for existing default ads. New mobile placements must be assigned DISPLAY or DISPLAY_INTERSTITIAL and default ads created for those placements will be limited to those compatibility types. IN_STREAM_VIDEO refers to rendering in-stream video ads developed with the VAST standard.
+          "kind": "dfareporting#ad", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#ad".
+          "subaccountId": "A String", # Subaccount ID of this ad. This is a read-only field that can be left blank.
+          "name": "A String", # Name of this ad. This is a required field and must be less than 256 characters long.
+          "dayPartTargeting": { # Day Part Targeting. # Time and day targeting information for this ad. This field must be left blank if the ad is using a targeting template. Applicable when type is AD_SERVING_STANDARD_AD.
+            "userLocalTime": True or False, # Whether or not to use the user's local time. If false, the America/New York time zone applies.
+            "hoursOfDay": [ # Hours of the day when the ad will serve. Must be an integer between 0 and 23 (inclusive), where 0 is midnight to 1 AM, and 23 is 11 PM to midnight. Can be specified with days of week, in which case the ad would serve during these hours on the specified days. For example, if Monday, Wednesday, Friday are the days of week specified and 9-10am, 3-5pm (hours 9, 15, and 16) is specified, the ad would serve Monday, Wednesdays, and Fridays at 9-10am and 3-5pm.
+              42,
+            ],
+            "daysOfWeek": [ # Days of the week when the ad will serve.
+                #
+                # Acceptable values are:
+                # - "SUNDAY"
+                # - "MONDAY"
+                # - "TUESDAY"
+                # - "WEDNESDAY"
+                # - "THURSDAY"
+                # - "FRIDAY"
+                # - "SATURDAY"
+              "A String",
+            ],
+          },
+          "lastModifiedInfo": { # Modification timestamp. # Information about the most recent modification of this ad. This is a read-only field.
+            "time": "A String", # Timestamp of the last change in milliseconds since epoch.
+          },
+          "sslCompliant": True or False, # Whether this ad is ssl compliant. This is a read-only field that is auto-generated when the ad is inserted or updated.
+          "placementAssignments": [ # Placement assignments for this ad.
+            { # Placement Assignment.
+              "active": True or False, # Whether this placement assignment is active. When true, the placement will be included in the ad's rotation.
+              "placementIdDimensionValue": { # Represents a DimensionValue resource. # Dimension value for the ID of the placement. This is a read-only, auto-generated field.
+                "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+                "value": "A String", # The value of the dimension.
+                "dimensionName": "A String", # The name of the dimension.
+                "etag": "A String", # The eTag of this response for caching purposes.
+                "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+                "id": "A String", # The ID associated with the value if available.
+              },
+              "placementId": "A String", # ID of the placement to be assigned. This is a required field.
+              "sslRequired": True or False, # Whether the placement to be assigned requires SSL. This is a read-only field that is auto-generated when the ad is inserted or updated.
+            },
+          ],
+          "endTime": "A String", # Date and time that this ad should stop serving. Must be later than the start time. This is a required field on insertion.
+          "dynamicClickTracker": True or False, # Whether this ad is a dynamic click tracker. Applicable when type is AD_SERVING_CLICK_TRACKER. This is a required field on insert, and is read-only after insert.
+        },
+    ],
+  }</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="patch">patch(profileId, id, body)</code>
+  <pre>Updates an existing ad. This method supports patch semantics.
+
+Args:
+  profileId: string, User profile ID associated with this request. (required)
+  id: string, Ad ID. (required)
+  body: object, The request body. (required)
+    The object takes the form of:
+
+{ # Contains properties of a DCM ad.
+    "clickThroughUrlSuffixProperties": { # Click Through URL Suffix settings. # Click-through URL suffix properties for this ad. Applies to the URL in the ad or (if overriding ad properties) the URL in the creative.
+      "clickThroughUrlSuffix": "A String", # Click-through URL suffix to apply to all ads in this entity's scope. Must be less than 128 characters long.
+      "overrideInheritedSuffix": True or False, # Whether this entity should override the inherited click-through URL suffix with its own defined value.
+    },
+    "campaignId": "A String", # Campaign ID of this ad. This is a required field on insertion.
+    "languageTargeting": { # Language Targeting. # Language targeting information for this ad. This field must be left blank if the ad is using a targeting template. Applicable when type is AD_SERVING_STANDARD_AD.
+      "languages": [ # Languages that this ad targets. For each language only languageId is required. The other fields are populated automatically when the ad is inserted or updated.
+        { # Contains information about a language that can be targeted by ads.
+          "languageCode": "A String", # Format of language code is an ISO 639 two-letter language code optionally followed by an underscore followed by an ISO 3166 code. Examples are "en" for English or "zh_CN" for Simplified Chinese.
+          "kind": "dfareporting#language", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#language".
+          "id": "A String", # Language ID of this language. This is the ID used for targeting and generating reports.
+          "name": "A String", # Name of this language.
+        },
+      ],
+    },
+    "advertiserId": "A String", # Advertiser ID of this ad. This is a required field on insertion.
+    "geoTargeting": { # Geographical Targeting. # Geographical targeting information for this ad. This field must be left blank if the ad is using a targeting template. Applicable when type is AD_SERVING_STANDARD_AD.
+      "countries": [ # Countries to be targeted or excluded from targeting, depending on the setting of the excludeCountries field. For each country only dartId is required. The other fields are populated automatically when the ad is inserted or updated. If targeting or excluding a country, do not target regions, cities, metros, or postal codes in the same country.
+        { # Contains information about a country that can be targeted by ads.
+          "dartId": "A String", # DART ID of this country. This is the ID used for targeting and generating reports.
+          "sslEnabled": True or False, # Whether ad serving supports secure servers in this country.
+          "kind": "dfareporting#country", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#country".
+          "countryCode": "A String", # Country code.
+          "name": "A String", # Name of this country.
+        },
+      ],
+      "excludeCountries": True or False, # Whether or not to exclude the countries in the countries field from targeting. If false, the countries field refers to countries which will be targeted by the ad.
+      "postalCodes": [ # Postal codes to be targeted. For each postal code only id is required. The other fields are populated automatically when the ad is inserted or updated. If targeting a postal code, do not target or exclude the country of the postal code.
+        { # Contains information about a postal code that can be targeted by ads.
+          "countryDartId": "A String", # DART ID of the country to which this postal code belongs.
+          "kind": "dfareporting#postalCode", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#postalCode".
+          "code": "A String", # Postal code. This is equivalent to the id field.
+          "id": "A String", # ID of this postal code.
+          "countryCode": "A String", # Country code of the country to which this postal code belongs.
+        },
+      ],
+      "regions": [ # Regions to be targeted. For each region only dartId is required. The other fields are populated automatically when the ad is inserted or updated. If targeting a region, do not target or exclude the country of the region.
+        { # Contains information about a region that can be targeted by ads.
+          "kind": "dfareporting#region", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#region".
+          "countryDartId": "A String", # DART ID of the country to which this region belongs.
+          "name": "A String", # Name of this region.
+          "countryCode": "A String", # Country code of the country to which this region belongs.
+          "regionCode": "A String", # Region code.
+          "dartId": "A String", # DART ID of this region.
+        },
+      ],
+      "cities": [ # Cities to be targeted. For each city only dartId is required. The other fields are populated automatically when the ad is inserted or updated. If targeting a city, do not target or exclude the country of the city, and do not target the metro or region of the city.
+        { # Contains information about a city that can be targeted by ads.
+          "kind": "dfareporting#city", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#city".
+          "countryDartId": "A String", # DART ID of the country to which this city belongs.
+          "name": "A String", # Name of this city.
+          "countryCode": "A String", # Country code of the country to which this city belongs.
+          "metroCode": "A String", # Metro region code of the metro region (DMA) to which this city belongs.
+          "regionCode": "A String", # Region code of the region to which this city belongs.
+          "metroDmaId": "A String", # ID of the metro region (DMA) to which this city belongs.
+          "dartId": "A String", # DART ID of this city. This is the ID used for targeting and generating reports.
+          "regionDartId": "A String", # DART ID of the region to which this city belongs.
+        },
+      ],
+      "metros": [ # Metros to be targeted. For each metro only dmaId is required. The other fields are populated automatically when the ad is inserted or updated. If targeting a metro, do not target or exclude the country of the metro.
+        { # Contains information about a metro region that can be targeted by ads.
+          "kind": "dfareporting#metro", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#metro".
+          "countryDartId": "A String", # DART ID of the country to which this metro region belongs.
+          "name": "A String", # Name of this metro region.
+          "countryCode": "A String", # Country code of the country to which this metro region belongs.
+          "metroCode": "A String", # Metro code of this metro region. This is equivalent to dma_id.
+          "dmaId": "A String", # DMA ID of this metro region. This is the ID used for targeting and generating reports, and is equivalent to metro_code.
+          "dartId": "A String", # DART ID of this metro region.
+        },
+      ],
+    },
+    "creativeGroupAssignments": [ # Creative group assignments for this ad. Applicable when type is AD_SERVING_CLICK_TRACKER. Only one assignment per creative group number is allowed for a maximum of two assignments.
+      { # Creative Group Assignment.
+        "creativeGroupNumber": "A String", # Creative group number of the creative group assignment.
+        "creativeGroupId": "A String", # ID of the creative group to be assigned.
+      },
+    ],
+    "deliverySchedule": { # Delivery Schedule. # Delivery schedule information for this ad. Applicable when type is AD_SERVING_STANDARD_AD or AD_SERVING_TRACKING. This field along with subfields priority and impressionRatio are required on insertion when type is AD_SERVING_STANDARD_AD.
+      "priority": "A String", # Serving priority of an ad, with respect to other ads. The lower the priority number, the greater the priority with which it is served.
+      "hardCutoff": True or False, # Whether or not hard cutoff is enabled. If true, the ad will not serve after the end date and time. Otherwise the ad will continue to be served until it has reached its delivery goals.
+      "frequencyCap": { # Frequency Cap. # Limit on the number of times an individual user can be served the ad within a specified period of time.
+        "duration": "A String", # Duration of time, in seconds, for this frequency cap. The maximum duration is 90 days in seconds, or 7,776,000.
+        "impressions": "A String", # Number of times an individual user can be served the ad within the specified duration. The maximum allowed is 15.
+      },
+      "impressionRatio": "A String", # Impression ratio for this ad. This ratio determines how often each ad is served relative to the others. For example, if ad A has an impression ratio of 1 and ad B has an impression ratio of 3, then DCM will serve ad B three times as often as ad A. Must be between 1 and 10.
+    },
+    "advertiserIdDimensionValue": { # Represents a DimensionValue resource. # Dimension value for the ID of the advertiser. This is a read-only, auto-generated field.
+      "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+      "value": "A String", # The value of the dimension.
+      "dimensionName": "A String", # The name of the dimension.
+      "etag": "A String", # The eTag of this response for caching purposes.
+      "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+      "id": "A String", # The ID associated with the value if available.
+    },
+    "eventTagOverrides": [ # Event tag overrides for this ad.
+      { # Event tag override information.
+        "enabled": True or False, # Whether this override is enabled.
+        "id": "A String", # ID of this event tag override. This is a read-only, auto-generated field.
+      },
+    ],
+    "id": "A String", # ID of this ad. This is a read-only, auto-generated field.
+    "accountId": "A String", # Account ID of this ad. This is a read-only field that can be left blank.
+    "archived": True or False, # Whether this ad is archived. When true, active must be false.
+    "targetingTemplateId": "A String", # Targeting template ID, used to apply preconfigured targeting information to this ad. This cannot be set while any of dayPartTargeting, geoTargeting, keyValueTargetingExpression, languageTargeting, remarketingListExpression, or technologyTargeting are set. Applicable when type is AD_SERVING_STANDARD_AD.
+    "technologyTargeting": { # Technology Targeting. # Technology platform targeting information for this ad. This field must be left blank if the ad is using a targeting template. Applicable when type is AD_SERVING_STANDARD_AD.
+      "platformTypes": [ # Platform types that this ad targets. For example, desktop, mobile, or tablet. For each platform type, only id is required, and the other fields are populated automatically when the ad is inserted or updated.
+        { # Contains information about a platform type that can be targeted by ads.
+          "kind": "dfareporting#platformType", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#platformType".
+          "id": "A String", # ID of this platform type.
+          "name": "A String", # Name of this platform type.
+        },
+      ],
+      "operatingSystemVersions": [ # Operating system versions that this ad targets. To target all versions, use operatingSystems. For each operating system version, only id is required. The other fields are populated automatically when the ad is inserted or updated. If targeting an operating system version, do not set targeting for the corresponding operating system in operatingSystems.
+        { # Contains information about a particular version of an operating system that can be targeted by ads.
+          "majorVersion": "A String", # Major version (leftmost number) of this operating system version.
+          "kind": "dfareporting#operatingSystemVersion", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#operatingSystemVersion".
+          "name": "A String", # Name of this operating system version.
+          "id": "A String", # ID of this operating system version.
+          "operatingSystem": { # Contains information about an operating system that can be targeted by ads. # Operating system of this operating system version.
+            "mobile": True or False, # Whether this operating system is for mobile.
+            "dartId": "A String", # DART ID of this operating system. This is the ID used for targeting.
+            "kind": "dfareporting#operatingSystem", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#operatingSystem".
+            "name": "A String", # Name of this operating system.
+            "desktop": True or False, # Whether this operating system is for desktop.
+          },
+          "minorVersion": "A String", # Minor version (number after the first dot) of this operating system version.
+        },
+      ],
+      "browsers": [ # Browsers that this ad targets. For each browser either set browserVersionId or dartId along with the version numbers. If both are specified, only browserVersionId will be used. The other fields are populated automatically when the ad is inserted or updated.
+        { # Contains information about a browser that can be targeted by ads.
+          "majorVersion": "A String", # Major version number (leftmost number) of this browser. For example, for Chrome 5.0.376.86 beta, this field should be set to 5. An asterisk (*) may be used to target any version number, and a question mark (?) may be used to target cases where the version number cannot be identified. For example, Chrome *.* targets any version of Chrome: 1.2, 2.5, 3.5, and so on. Chrome 3.* targets Chrome 3.1, 3.5, but not 4.0. Firefox ?.? targets cases where the ad server knows the browser is Firefox but can't tell which version it is.
+          "kind": "dfareporting#browser", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#browser".
+          "name": "A String", # Name of this browser.
+          "browserVersionId": "A String", # ID referring to this grouping of browser and version numbers. This is the ID used for targeting.
+          "dartId": "A String", # DART ID of this browser. This is the ID used when generating reports.
+          "minorVersion": "A String", # Minor version number (number after first dot on left) of this browser. For example, for Chrome 5.0.375.86 beta, this field should be set to 0. An asterisk (*) may be used to target any version number, and a question mark (?) may be used to target cases where the version number cannot be identified. For example, Chrome *.* targets any version of Chrome: 1.2, 2.5, 3.5, and so on. Chrome 3.* targets Chrome 3.1, 3.5, but not 4.0. Firefox ?.? targets cases where the ad server knows the browser is Firefox but can't tell which version it is.
+        },
+      ],
+      "operatingSystems": [ # Operating systems that this ad targets. To target specific versions, use operatingSystemVersions. For each operating system only dartId is required. The other fields are populated automatically when the ad is inserted or updated. If targeting an operating system, do not set targeting for operating system versions for the same operating system.
+        { # Contains information about an operating system that can be targeted by ads.
+          "mobile": True or False, # Whether this operating system is for mobile.
+          "dartId": "A String", # DART ID of this operating system. This is the ID used for targeting.
+          "kind": "dfareporting#operatingSystem", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#operatingSystem".
+          "name": "A String", # Name of this operating system.
+          "desktop": True or False, # Whether this operating system is for desktop.
+        },
+      ],
+      "mobileCarriers": [ # Mobile carriers that this ad targets. For each mobile carrier only id is required, and the other fields are populated automatically when the ad is inserted or updated. If targeting a mobile carrier, do not set targeting for any zip codes.
+        { # Contains information about a mobile carrier that can be targeted by ads.
+          "kind": "dfareporting#mobileCarrier", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#mobileCarrier".
+          "countryDartId": "A String", # DART ID of the country to which this mobile carrier belongs.
+          "id": "A String", # ID of this mobile carrier.
+          "countryCode": "A String", # Country code of the country to which this mobile carrier belongs.
+          "name": "A String", # Name of this mobile carrier.
+        },
+      ],
+      "connectionTypes": [ # Connection types that this ad targets. For each connection type only id is required. The other fields are populated automatically when the ad is inserted or updated.
+        { # Contains information about an internet connection type that can be targeted by ads. Clients can use the connection type to target mobile vs. broadband users.
+          "kind": "dfareporting#connectionType", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#connectionType".
+          "id": "A String", # ID of this connection type.
+          "name": "A String", # Name of this connection type.
+        },
+      ],
+    },
+    "creativeRotation": { # Creative Rotation. # Creative rotation for this ad. Applicable when type is AD_SERVING_DEFAULT_AD, AD_SERVING_STANDARD_AD, or AD_SERVING_TRACKING. When type is AD_SERVING_DEFAULT_AD, this field should have exactly one creativeAssignment.
+      "creativeAssignments": [ # Creative assignments in this creative rotation.
+        { # Creative Assignment.
+          "weight": 42, # Weight of the creative assignment, applicable when the rotation type is CREATIVE_ROTATION_TYPE_RANDOM.
+          "sequence": 42, # Sequence number of the creative assignment, applicable when the rotation type is CREATIVE_ROTATION_TYPE_SEQUENTIAL.
+          "applyEventTags": True or False, # Whether applicable event tags should fire when this creative assignment is rendered. If this value is unset when the ad is inserted or updated, it will default to true for all creative types EXCEPT for INTERNAL_REDIRECT, INTERSTITIAL_INTERNAL_REDIRECT, and INSTREAM_VIDEO.
+          "richMediaExitOverrides": [ # Rich media exit overrides for this creative assignment.
+              # Applicable when the creative type is any of the following:
+              # - RICH_MEDIA_INPAGE
+              # - RICH_MEDIA_INPAGE_FLOATING
+              # - RICH_MEDIA_IM_EXPAND
+              # - RICH_MEDIA_EXPANDING
+              # - RICH_MEDIA_INTERSTITIAL_FLOAT
+              # - RICH_MEDIA_MOBILE_IN_APP
+              # - RICH_MEDIA_MULTI_FLOATING
+              # - RICH_MEDIA_PEEL_DOWN
+              # - ADVANCED_BANNER
+              # - VPAID_LINEAR
+              # - VPAID_NON_LINEAR
+            { # Rich Media Exit Override.
+              "clickThroughUrl": { # Click-through URL # Click-through URL of this rich media exit override. Applicable if the enabled field is set to true.
+                "computedClickThroughUrl": "A String", # Read-only convenience field representing the actual URL that will be used for this click-through. The URL is computed as follows:
+                    # - If defaultLandingPage is enabled then the campaign's default landing page URL is assigned to this field.
+                    # - If defaultLandingPage is not enabled and a landingPageId is specified then that landing page's URL is assigned to this field.
+                    # - If neither of the above cases apply, then the customClickThroughUrl is assigned to this field.
+                "customClickThroughUrl": "A String", # Custom click-through URL. Applicable if the defaultLandingPage field is set to false and the landingPageId field is left unset.
+                "landingPageId": "A String", # ID of the landing page for the click-through URL. Applicable if the defaultLandingPage field is set to false.
+                "defaultLandingPage": True or False, # Whether the campaign default landing page is used.
+              },
+              "enabled": True or False, # Whether to use the clickThroughUrl. If false, the creative-level exit will be used.
+              "exitId": "A String", # ID for the override to refer to a specific exit in the creative.
+            },
+          ],
+          "sslCompliant": True or False, # Whether the creative to be assigned is SSL-compliant. This is a read-only field that is auto-generated when the ad is inserted or updated.
+          "creativeGroupAssignments": [ # Creative group assignments for this creative assignment. Only one assignment per creative group number is allowed for a maximum of two assignments.
+            { # Creative Group Assignment.
+              "creativeGroupNumber": "A String", # Creative group number of the creative group assignment.
+              "creativeGroupId": "A String", # ID of the creative group to be assigned.
+            },
+          ],
+          "companionCreativeOverrides": [ # Companion creative overrides for this creative assignment. Applicable to video ads.
+            { # Companion Click-through override.
+              "clickThroughUrl": { # Click-through URL # Click-through URL of this companion click-through override.
+                "computedClickThroughUrl": "A String", # Read-only convenience field representing the actual URL that will be used for this click-through. The URL is computed as follows:
+                    # - If defaultLandingPage is enabled then the campaign's default landing page URL is assigned to this field.
+                    # - If defaultLandingPage is not enabled and a landingPageId is specified then that landing page's URL is assigned to this field.
+                    # - If neither of the above cases apply, then the customClickThroughUrl is assigned to this field.
+                "customClickThroughUrl": "A String", # Custom click-through URL. Applicable if the defaultLandingPage field is set to false and the landingPageId field is left unset.
+                "landingPageId": "A String", # ID of the landing page for the click-through URL. Applicable if the defaultLandingPage field is set to false.
+                "defaultLandingPage": True or False, # Whether the campaign default landing page is used.
+              },
+              "creativeId": "A String", # ID of the creative for this companion click-through override.
+            },
+          ],
+          "startTime": "A String", # Date and time that the assigned creative should start serving.
+          "clickThroughUrl": { # Click-through URL # Click-through URL of the creative assignment.
+            "computedClickThroughUrl": "A String", # Read-only convenience field representing the actual URL that will be used for this click-through. The URL is computed as follows:
+                # - If defaultLandingPage is enabled then the campaign's default landing page URL is assigned to this field.
+                # - If defaultLandingPage is not enabled and a landingPageId is specified then that landing page's URL is assigned to this field.
+                # - If neither of the above cases apply, then the customClickThroughUrl is assigned to this field.
+            "customClickThroughUrl": "A String", # Custom click-through URL. Applicable if the defaultLandingPage field is set to false and the landingPageId field is left unset.
+            "landingPageId": "A String", # ID of the landing page for the click-through URL. Applicable if the defaultLandingPage field is set to false.
+            "defaultLandingPage": True or False, # Whether the campaign default landing page is used.
+          },
+          "active": True or False, # Whether this creative assignment is active. When true, the creative will be included in the ad's rotation.
+          "creativeId": "A String", # ID of the creative to be assigned. This is a required field.
+          "endTime": "A String", # Date and time that the assigned creative should stop serving. Must be later than the start time.
+          "creativeIdDimensionValue": { # Represents a DimensionValue resource. # Dimension value for the ID of the creative. This is a read-only, auto-generated field.
+            "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+            "value": "A String", # The value of the dimension.
+            "dimensionName": "A String", # The name of the dimension.
+            "etag": "A String", # The eTag of this response for caching purposes.
+            "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+            "id": "A String", # The ID associated with the value if available.
+          },
+        },
+      ],
+      "weightCalculationStrategy": "A String", # Strategy for calculating weights. Used with CREATIVE_ROTATION_TYPE_RANDOM.
+      "creativeOptimizationConfigurationId": "A String", # Creative optimization configuration that is used by this ad. It should refer to one of the existing optimization configurations in the ad's campaign. If it is unset or set to 0, then the campaign's default optimization configuration will be used for this ad.
+      "type": "A String", # Type of creative rotation. Can be used to specify whether to use sequential or random rotation.
+    },
+    "clickThroughUrl": { # Click-through URL # Click-through URL for this ad. This is a required field on insertion. Applicable when type is AD_SERVING_CLICK_TRACKER.
+      "computedClickThroughUrl": "A String", # Read-only convenience field representing the actual URL that will be used for this click-through. The URL is computed as follows:
+          # - If defaultLandingPage is enabled then the campaign's default landing page URL is assigned to this field.
+          # - If defaultLandingPage is not enabled and a landingPageId is specified then that landing page's URL is assigned to this field.
+          # - If neither of the above cases apply, then the customClickThroughUrl is assigned to this field.
+      "customClickThroughUrl": "A String", # Custom click-through URL. Applicable if the defaultLandingPage field is set to false and the landingPageId field is left unset.
+      "landingPageId": "A String", # ID of the landing page for the click-through URL. Applicable if the defaultLandingPage field is set to false.
+      "defaultLandingPage": True or False, # Whether the campaign default landing page is used.
+    },
+    "comments": "A String", # Comments for this ad.
+    "remarketingListExpression": { # Remarketing List Targeting Expression. # Remarketing list targeting expression for this ad. This field must be left blank if the ad is using a targeting template. Applicable when type is AD_SERVING_STANDARD_AD.
+      "expression": "A String", # Expression describing which lists are being targeted by the ad.
+    },
+    "idDimensionValue": { # Represents a DimensionValue resource. # Dimension value for the ID of this ad. This is a read-only, auto-generated field.
+      "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+      "value": "A String", # The value of the dimension.
+      "dimensionName": "A String", # The name of the dimension.
+      "etag": "A String", # The eTag of this response for caching purposes.
+      "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+      "id": "A String", # The ID associated with the value if available.
+    },
+    "size": { # Represents the dimensions of ads, placements, creatives, or creative assets. # Size of this ad. Applicable when type is AD_SERVING_DEFAULT_AD.
+      "width": 42, # Width of this size.
+      "kind": "dfareporting#size", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#size".
+      "iab": True or False, # IAB standard size. This is a read-only, auto-generated field.
+      "id": "A String", # ID of this size. This is a read-only, auto-generated field.
+      "height": 42, # Height of this size.
+    },
+    "type": "A String", # Type of ad. This is a required field on insertion. Note that default ads (AD_SERVING_DEFAULT_AD) cannot be created directly (see Creative resource).
+    "sslRequired": True or False, # Whether this ad requires ssl. This is a read-only field that is auto-generated when the ad is inserted or updated.
+    "audienceSegmentId": "A String", # Audience segment ID that is being targeted for this ad. Applicable when type is AD_SERVING_STANDARD_AD.
+    "keyValueTargetingExpression": { # Key Value Targeting Expression. # Key-value targeting information for this ad. This field must be left blank if the ad is using a targeting template. Applicable when type is AD_SERVING_STANDARD_AD.
+      "expression": "A String", # Keyword expression being targeted by the ad.
+    },
+    "campaignIdDimensionValue": { # Represents a DimensionValue resource. # Dimension value for the ID of the campaign. This is a read-only, auto-generated field.
+      "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+      "value": "A String", # The value of the dimension.
+      "dimensionName": "A String", # The name of the dimension.
+      "etag": "A String", # The eTag of this response for caching purposes.
+      "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+      "id": "A String", # The ID associated with the value if available.
+    },
+    "defaultClickThroughEventTagProperties": { # Properties of inheriting and overriding the default click-through event tag. A campaign may override the event tag defined at the advertiser level, and an ad may also override the campaign's setting further. # Default click-through event tag properties for this ad.
+      "overrideInheritedEventTag": True or False, # Whether this entity should override the inherited default click-through event tag with its own defined value.
+      "defaultClickThroughEventTagId": "A String", # ID of the click-through event tag to apply to all ads in this entity's scope.
+    },
+    "createInfo": { # Modification timestamp. # Information about the creation of this ad. This is a read-only field.
+      "time": "A String", # Timestamp of the last change in milliseconds since epoch.
+    },
+    "startTime": "A String", # Date and time that this ad should start serving. If creating an ad, this field must be a time in the future. This is a required field on insertion.
+    "active": True or False, # Whether this ad is active. When true, archived must be false.
+    "compatibility": "A String", # Compatibility of this ad. Applicable when type is AD_SERVING_DEFAULT_AD. DISPLAY and DISPLAY_INTERSTITIAL refer to either rendering on desktop or on mobile devices or in mobile apps for regular or interstitial ads, respectively. APP and APP_INTERSTITIAL are only used for existing default ads. New mobile placements must be assigned DISPLAY or DISPLAY_INTERSTITIAL and default ads created for those placements will be limited to those compatibility types. IN_STREAM_VIDEO refers to rendering in-stream video ads developed with the VAST standard.
+    "kind": "dfareporting#ad", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#ad".
+    "subaccountId": "A String", # Subaccount ID of this ad. This is a read-only field that can be left blank.
+    "name": "A String", # Name of this ad. This is a required field and must be less than 256 characters long.
+    "dayPartTargeting": { # Day Part Targeting. # Time and day targeting information for this ad. This field must be left blank if the ad is using a targeting template. Applicable when type is AD_SERVING_STANDARD_AD.
+      "userLocalTime": True or False, # Whether or not to use the user's local time. If false, the America/New York time zone applies.
+      "hoursOfDay": [ # Hours of the day when the ad will serve. Must be an integer between 0 and 23 (inclusive), where 0 is midnight to 1 AM, and 23 is 11 PM to midnight. Can be specified with days of week, in which case the ad would serve during these hours on the specified days. For example, if Monday, Wednesday, Friday are the days of week specified and 9-10am, 3-5pm (hours 9, 15, and 16) is specified, the ad would serve Monday, Wednesdays, and Fridays at 9-10am and 3-5pm.
+        42,
+      ],
+      "daysOfWeek": [ # Days of the week when the ad will serve.
+          #
+          # Acceptable values are:
+          # - "SUNDAY"
+          # - "MONDAY"
+          # - "TUESDAY"
+          # - "WEDNESDAY"
+          # - "THURSDAY"
+          # - "FRIDAY"
+          # - "SATURDAY"
+        "A String",
+      ],
+    },
+    "lastModifiedInfo": { # Modification timestamp. # Information about the most recent modification of this ad. This is a read-only field.
+      "time": "A String", # Timestamp of the last change in milliseconds since epoch.
+    },
+    "sslCompliant": True or False, # Whether this ad is ssl compliant. This is a read-only field that is auto-generated when the ad is inserted or updated.
+    "placementAssignments": [ # Placement assignments for this ad.
+      { # Placement Assignment.
+        "active": True or False, # Whether this placement assignment is active. When true, the placement will be included in the ad's rotation.
+        "placementIdDimensionValue": { # Represents a DimensionValue resource. # Dimension value for the ID of the placement. This is a read-only, auto-generated field.
+          "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+          "value": "A String", # The value of the dimension.
+          "dimensionName": "A String", # The name of the dimension.
+          "etag": "A String", # The eTag of this response for caching purposes.
+          "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+          "id": "A String", # The ID associated with the value if available.
+        },
+        "placementId": "A String", # ID of the placement to be assigned. This is a required field.
+        "sslRequired": True or False, # Whether the placement to be assigned requires SSL. This is a read-only field that is auto-generated when the ad is inserted or updated.
+      },
+    ],
+    "endTime": "A String", # Date and time that this ad should stop serving. Must be later than the start time. This is a required field on insertion.
+    "dynamicClickTracker": True or False, # Whether this ad is a dynamic click tracker. Applicable when type is AD_SERVING_CLICK_TRACKER. This is a required field on insert, and is read-only after insert.
+  }
+
+
+Returns:
+  An object of the form:
+
+    { # Contains properties of a DCM ad.
+      "clickThroughUrlSuffixProperties": { # Click Through URL Suffix settings. # Click-through URL suffix properties for this ad. Applies to the URL in the ad or (if overriding ad properties) the URL in the creative.
+        "clickThroughUrlSuffix": "A String", # Click-through URL suffix to apply to all ads in this entity's scope. Must be less than 128 characters long.
+        "overrideInheritedSuffix": True or False, # Whether this entity should override the inherited click-through URL suffix with its own defined value.
+      },
+      "campaignId": "A String", # Campaign ID of this ad. This is a required field on insertion.
+      "languageTargeting": { # Language Targeting. # Language targeting information for this ad. This field must be left blank if the ad is using a targeting template. Applicable when type is AD_SERVING_STANDARD_AD.
+        "languages": [ # Languages that this ad targets. For each language only languageId is required. The other fields are populated automatically when the ad is inserted or updated.
+          { # Contains information about a language that can be targeted by ads.
+            "languageCode": "A String", # Format of language code is an ISO 639 two-letter language code optionally followed by an underscore followed by an ISO 3166 code. Examples are "en" for English or "zh_CN" for Simplified Chinese.
+            "kind": "dfareporting#language", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#language".
+            "id": "A String", # Language ID of this language. This is the ID used for targeting and generating reports.
+            "name": "A String", # Name of this language.
+          },
+        ],
+      },
+      "advertiserId": "A String", # Advertiser ID of this ad. This is a required field on insertion.
+      "geoTargeting": { # Geographical Targeting. # Geographical targeting information for this ad. This field must be left blank if the ad is using a targeting template. Applicable when type is AD_SERVING_STANDARD_AD.
+        "countries": [ # Countries to be targeted or excluded from targeting, depending on the setting of the excludeCountries field. For each country only dartId is required. The other fields are populated automatically when the ad is inserted or updated. If targeting or excluding a country, do not target regions, cities, metros, or postal codes in the same country.
+          { # Contains information about a country that can be targeted by ads.
+            "dartId": "A String", # DART ID of this country. This is the ID used for targeting and generating reports.
+            "sslEnabled": True or False, # Whether ad serving supports secure servers in this country.
+            "kind": "dfareporting#country", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#country".
+            "countryCode": "A String", # Country code.
+            "name": "A String", # Name of this country.
+          },
+        ],
+        "excludeCountries": True or False, # Whether or not to exclude the countries in the countries field from targeting. If false, the countries field refers to countries which will be targeted by the ad.
+        "postalCodes": [ # Postal codes to be targeted. For each postal code only id is required. The other fields are populated automatically when the ad is inserted or updated. If targeting a postal code, do not target or exclude the country of the postal code.
+          { # Contains information about a postal code that can be targeted by ads.
+            "countryDartId": "A String", # DART ID of the country to which this postal code belongs.
+            "kind": "dfareporting#postalCode", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#postalCode".
+            "code": "A String", # Postal code. This is equivalent to the id field.
+            "id": "A String", # ID of this postal code.
+            "countryCode": "A String", # Country code of the country to which this postal code belongs.
+          },
+        ],
+        "regions": [ # Regions to be targeted. For each region only dartId is required. The other fields are populated automatically when the ad is inserted or updated. If targeting a region, do not target or exclude the country of the region.
+          { # Contains information about a region that can be targeted by ads.
+            "kind": "dfareporting#region", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#region".
+            "countryDartId": "A String", # DART ID of the country to which this region belongs.
+            "name": "A String", # Name of this region.
+            "countryCode": "A String", # Country code of the country to which this region belongs.
+            "regionCode": "A String", # Region code.
+            "dartId": "A String", # DART ID of this region.
+          },
+        ],
+        "cities": [ # Cities to be targeted. For each city only dartId is required. The other fields are populated automatically when the ad is inserted or updated. If targeting a city, do not target or exclude the country of the city, and do not target the metro or region of the city.
+          { # Contains information about a city that can be targeted by ads.
+            "kind": "dfareporting#city", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#city".
+            "countryDartId": "A String", # DART ID of the country to which this city belongs.
+            "name": "A String", # Name of this city.
+            "countryCode": "A String", # Country code of the country to which this city belongs.
+            "metroCode": "A String", # Metro region code of the metro region (DMA) to which this city belongs.
+            "regionCode": "A String", # Region code of the region to which this city belongs.
+            "metroDmaId": "A String", # ID of the metro region (DMA) to which this city belongs.
+            "dartId": "A String", # DART ID of this city. This is the ID used for targeting and generating reports.
+            "regionDartId": "A String", # DART ID of the region to which this city belongs.
+          },
+        ],
+        "metros": [ # Metros to be targeted. For each metro only dmaId is required. The other fields are populated automatically when the ad is inserted or updated. If targeting a metro, do not target or exclude the country of the metro.
+          { # Contains information about a metro region that can be targeted by ads.
+            "kind": "dfareporting#metro", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#metro".
+            "countryDartId": "A String", # DART ID of the country to which this metro region belongs.
+            "name": "A String", # Name of this metro region.
+            "countryCode": "A String", # Country code of the country to which this metro region belongs.
+            "metroCode": "A String", # Metro code of this metro region. This is equivalent to dma_id.
+            "dmaId": "A String", # DMA ID of this metro region. This is the ID used for targeting and generating reports, and is equivalent to metro_code.
+            "dartId": "A String", # DART ID of this metro region.
+          },
+        ],
+      },
+      "creativeGroupAssignments": [ # Creative group assignments for this ad. Applicable when type is AD_SERVING_CLICK_TRACKER. Only one assignment per creative group number is allowed for a maximum of two assignments.
+        { # Creative Group Assignment.
+          "creativeGroupNumber": "A String", # Creative group number of the creative group assignment.
+          "creativeGroupId": "A String", # ID of the creative group to be assigned.
+        },
+      ],
+      "deliverySchedule": { # Delivery Schedule. # Delivery schedule information for this ad. Applicable when type is AD_SERVING_STANDARD_AD or AD_SERVING_TRACKING. This field along with subfields priority and impressionRatio are required on insertion when type is AD_SERVING_STANDARD_AD.
+        "priority": "A String", # Serving priority of an ad, with respect to other ads. The lower the priority number, the greater the priority with which it is served.
+        "hardCutoff": True or False, # Whether or not hard cutoff is enabled. If true, the ad will not serve after the end date and time. Otherwise the ad will continue to be served until it has reached its delivery goals.
+        "frequencyCap": { # Frequency Cap. # Limit on the number of times an individual user can be served the ad within a specified period of time.
+          "duration": "A String", # Duration of time, in seconds, for this frequency cap. The maximum duration is 90 days in seconds, or 7,776,000.
+          "impressions": "A String", # Number of times an individual user can be served the ad within the specified duration. The maximum allowed is 15.
+        },
+        "impressionRatio": "A String", # Impression ratio for this ad. This ratio determines how often each ad is served relative to the others. For example, if ad A has an impression ratio of 1 and ad B has an impression ratio of 3, then DCM will serve ad B three times as often as ad A. Must be between 1 and 10.
+      },
+      "advertiserIdDimensionValue": { # Represents a DimensionValue resource. # Dimension value for the ID of the advertiser. This is a read-only, auto-generated field.
+        "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+        "value": "A String", # The value of the dimension.
+        "dimensionName": "A String", # The name of the dimension.
+        "etag": "A String", # The eTag of this response for caching purposes.
+        "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+        "id": "A String", # The ID associated with the value if available.
+      },
+      "eventTagOverrides": [ # Event tag overrides for this ad.
+        { # Event tag override information.
+          "enabled": True or False, # Whether this override is enabled.
+          "id": "A String", # ID of this event tag override. This is a read-only, auto-generated field.
+        },
+      ],
+      "id": "A String", # ID of this ad. This is a read-only, auto-generated field.
+      "accountId": "A String", # Account ID of this ad. This is a read-only field that can be left blank.
+      "archived": True or False, # Whether this ad is archived. When true, active must be false.
+      "targetingTemplateId": "A String", # Targeting template ID, used to apply preconfigured targeting information to this ad. This cannot be set while any of dayPartTargeting, geoTargeting, keyValueTargetingExpression, languageTargeting, remarketingListExpression, or technologyTargeting are set. Applicable when type is AD_SERVING_STANDARD_AD.
+      "technologyTargeting": { # Technology Targeting. # Technology platform targeting information for this ad. This field must be left blank if the ad is using a targeting template. Applicable when type is AD_SERVING_STANDARD_AD.
+        "platformTypes": [ # Platform types that this ad targets. For example, desktop, mobile, or tablet. For each platform type, only id is required, and the other fields are populated automatically when the ad is inserted or updated.
+          { # Contains information about a platform type that can be targeted by ads.
+            "kind": "dfareporting#platformType", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#platformType".
+            "id": "A String", # ID of this platform type.
+            "name": "A String", # Name of this platform type.
+          },
+        ],
+        "operatingSystemVersions": [ # Operating system versions that this ad targets. To target all versions, use operatingSystems. For each operating system version, only id is required. The other fields are populated automatically when the ad is inserted or updated. If targeting an operating system version, do not set targeting for the corresponding operating system in operatingSystems.
+          { # Contains information about a particular version of an operating system that can be targeted by ads.
+            "majorVersion": "A String", # Major version (leftmost number) of this operating system version.
+            "kind": "dfareporting#operatingSystemVersion", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#operatingSystemVersion".
+            "name": "A String", # Name of this operating system version.
+            "id": "A String", # ID of this operating system version.
+            "operatingSystem": { # Contains information about an operating system that can be targeted by ads. # Operating system of this operating system version.
+              "mobile": True or False, # Whether this operating system is for mobile.
+              "dartId": "A String", # DART ID of this operating system. This is the ID used for targeting.
+              "kind": "dfareporting#operatingSystem", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#operatingSystem".
+              "name": "A String", # Name of this operating system.
+              "desktop": True or False, # Whether this operating system is for desktop.
+            },
+            "minorVersion": "A String", # Minor version (number after the first dot) of this operating system version.
+          },
+        ],
+        "browsers": [ # Browsers that this ad targets. For each browser either set browserVersionId or dartId along with the version numbers. If both are specified, only browserVersionId will be used. The other fields are populated automatically when the ad is inserted or updated.
+          { # Contains information about a browser that can be targeted by ads.
+            "majorVersion": "A String", # Major version number (leftmost number) of this browser. For example, for Chrome 5.0.376.86 beta, this field should be set to 5. An asterisk (*) may be used to target any version number, and a question mark (?) may be used to target cases where the version number cannot be identified. For example, Chrome *.* targets any version of Chrome: 1.2, 2.5, 3.5, and so on. Chrome 3.* targets Chrome 3.1, 3.5, but not 4.0. Firefox ?.? targets cases where the ad server knows the browser is Firefox but can't tell which version it is.
+            "kind": "dfareporting#browser", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#browser".
+            "name": "A String", # Name of this browser.
+            "browserVersionId": "A String", # ID referring to this grouping of browser and version numbers. This is the ID used for targeting.
+            "dartId": "A String", # DART ID of this browser. This is the ID used when generating reports.
+            "minorVersion": "A String", # Minor version number (number after first dot on left) of this browser. For example, for Chrome 5.0.375.86 beta, this field should be set to 0. An asterisk (*) may be used to target any version number, and a question mark (?) may be used to target cases where the version number cannot be identified. For example, Chrome *.* targets any version of Chrome: 1.2, 2.5, 3.5, and so on. Chrome 3.* targets Chrome 3.1, 3.5, but not 4.0. Firefox ?.? targets cases where the ad server knows the browser is Firefox but can't tell which version it is.
+          },
+        ],
+        "operatingSystems": [ # Operating systems that this ad targets. To target specific versions, use operatingSystemVersions. For each operating system only dartId is required. The other fields are populated automatically when the ad is inserted or updated. If targeting an operating system, do not set targeting for operating system versions for the same operating system.
+          { # Contains information about an operating system that can be targeted by ads.
+            "mobile": True or False, # Whether this operating system is for mobile.
+            "dartId": "A String", # DART ID of this operating system. This is the ID used for targeting.
+            "kind": "dfareporting#operatingSystem", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#operatingSystem".
+            "name": "A String", # Name of this operating system.
+            "desktop": True or False, # Whether this operating system is for desktop.
+          },
+        ],
+        "mobileCarriers": [ # Mobile carriers that this ad targets. For each mobile carrier only id is required, and the other fields are populated automatically when the ad is inserted or updated. If targeting a mobile carrier, do not set targeting for any zip codes.
+          { # Contains information about a mobile carrier that can be targeted by ads.
+            "kind": "dfareporting#mobileCarrier", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#mobileCarrier".
+            "countryDartId": "A String", # DART ID of the country to which this mobile carrier belongs.
+            "id": "A String", # ID of this mobile carrier.
+            "countryCode": "A String", # Country code of the country to which this mobile carrier belongs.
+            "name": "A String", # Name of this mobile carrier.
+          },
+        ],
+        "connectionTypes": [ # Connection types that this ad targets. For each connection type only id is required. The other fields are populated automatically when the ad is inserted or updated.
+          { # Contains information about an internet connection type that can be targeted by ads. Clients can use the connection type to target mobile vs. broadband users.
+            "kind": "dfareporting#connectionType", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#connectionType".
+            "id": "A String", # ID of this connection type.
+            "name": "A String", # Name of this connection type.
+          },
+        ],
+      },
+      "creativeRotation": { # Creative Rotation. # Creative rotation for this ad. Applicable when type is AD_SERVING_DEFAULT_AD, AD_SERVING_STANDARD_AD, or AD_SERVING_TRACKING. When type is AD_SERVING_DEFAULT_AD, this field should have exactly one creativeAssignment.
+        "creativeAssignments": [ # Creative assignments in this creative rotation.
+          { # Creative Assignment.
+            "weight": 42, # Weight of the creative assignment, applicable when the rotation type is CREATIVE_ROTATION_TYPE_RANDOM.
+            "sequence": 42, # Sequence number of the creative assignment, applicable when the rotation type is CREATIVE_ROTATION_TYPE_SEQUENTIAL.
+            "applyEventTags": True or False, # Whether applicable event tags should fire when this creative assignment is rendered. If this value is unset when the ad is inserted or updated, it will default to true for all creative types EXCEPT for INTERNAL_REDIRECT, INTERSTITIAL_INTERNAL_REDIRECT, and INSTREAM_VIDEO.
+            "richMediaExitOverrides": [ # Rich media exit overrides for this creative assignment.
+                # Applicable when the creative type is any of the following:
+                # - RICH_MEDIA_INPAGE
+                # - RICH_MEDIA_INPAGE_FLOATING
+                # - RICH_MEDIA_IM_EXPAND
+                # - RICH_MEDIA_EXPANDING
+                # - RICH_MEDIA_INTERSTITIAL_FLOAT
+                # - RICH_MEDIA_MOBILE_IN_APP
+                # - RICH_MEDIA_MULTI_FLOATING
+                # - RICH_MEDIA_PEEL_DOWN
+                # - ADVANCED_BANNER
+                # - VPAID_LINEAR
+                # - VPAID_NON_LINEAR
+              { # Rich Media Exit Override.
+                "clickThroughUrl": { # Click-through URL # Click-through URL of this rich media exit override. Applicable if the enabled field is set to true.
+                  "computedClickThroughUrl": "A String", # Read-only convenience field representing the actual URL that will be used for this click-through. The URL is computed as follows:
+                      # - If defaultLandingPage is enabled then the campaign's default landing page URL is assigned to this field.
+                      # - If defaultLandingPage is not enabled and a landingPageId is specified then that landing page's URL is assigned to this field.
+                      # - If neither of the above cases apply, then the customClickThroughUrl is assigned to this field.
+                  "customClickThroughUrl": "A String", # Custom click-through URL. Applicable if the defaultLandingPage field is set to false and the landingPageId field is left unset.
+                  "landingPageId": "A String", # ID of the landing page for the click-through URL. Applicable if the defaultLandingPage field is set to false.
+                  "defaultLandingPage": True or False, # Whether the campaign default landing page is used.
+                },
+                "enabled": True or False, # Whether to use the clickThroughUrl. If false, the creative-level exit will be used.
+                "exitId": "A String", # ID for the override to refer to a specific exit in the creative.
+              },
+            ],
+            "sslCompliant": True or False, # Whether the creative to be assigned is SSL-compliant. This is a read-only field that is auto-generated when the ad is inserted or updated.
+            "creativeGroupAssignments": [ # Creative group assignments for this creative assignment. Only one assignment per creative group number is allowed for a maximum of two assignments.
+              { # Creative Group Assignment.
+                "creativeGroupNumber": "A String", # Creative group number of the creative group assignment.
+                "creativeGroupId": "A String", # ID of the creative group to be assigned.
+              },
+            ],
+            "companionCreativeOverrides": [ # Companion creative overrides for this creative assignment. Applicable to video ads.
+              { # Companion Click-through override.
+                "clickThroughUrl": { # Click-through URL # Click-through URL of this companion click-through override.
+                  "computedClickThroughUrl": "A String", # Read-only convenience field representing the actual URL that will be used for this click-through. The URL is computed as follows:
+                      # - If defaultLandingPage is enabled then the campaign's default landing page URL is assigned to this field.
+                      # - If defaultLandingPage is not enabled and a landingPageId is specified then that landing page's URL is assigned to this field.
+                      # - If neither of the above cases apply, then the customClickThroughUrl is assigned to this field.
+                  "customClickThroughUrl": "A String", # Custom click-through URL. Applicable if the defaultLandingPage field is set to false and the landingPageId field is left unset.
+                  "landingPageId": "A String", # ID of the landing page for the click-through URL. Applicable if the defaultLandingPage field is set to false.
+                  "defaultLandingPage": True or False, # Whether the campaign default landing page is used.
+                },
+                "creativeId": "A String", # ID of the creative for this companion click-through override.
+              },
+            ],
+            "startTime": "A String", # Date and time that the assigned creative should start serving.
+            "clickThroughUrl": { # Click-through URL # Click-through URL of the creative assignment.
+              "computedClickThroughUrl": "A String", # Read-only convenience field representing the actual URL that will be used for this click-through. The URL is computed as follows:
+                  # - If defaultLandingPage is enabled then the campaign's default landing page URL is assigned to this field.
+                  # - If defaultLandingPage is not enabled and a landingPageId is specified then that landing page's URL is assigned to this field.
+                  # - If neither of the above cases apply, then the customClickThroughUrl is assigned to this field.
+              "customClickThroughUrl": "A String", # Custom click-through URL. Applicable if the defaultLandingPage field is set to false and the landingPageId field is left unset.
+              "landingPageId": "A String", # ID of the landing page for the click-through URL. Applicable if the defaultLandingPage field is set to false.
+              "defaultLandingPage": True or False, # Whether the campaign default landing page is used.
+            },
+            "active": True or False, # Whether this creative assignment is active. When true, the creative will be included in the ad's rotation.
+            "creativeId": "A String", # ID of the creative to be assigned. This is a required field.
+            "endTime": "A String", # Date and time that the assigned creative should stop serving. Must be later than the start time.
+            "creativeIdDimensionValue": { # Represents a DimensionValue resource. # Dimension value for the ID of the creative. This is a read-only, auto-generated field.
+              "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+              "value": "A String", # The value of the dimension.
+              "dimensionName": "A String", # The name of the dimension.
+              "etag": "A String", # The eTag of this response for caching purposes.
+              "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+              "id": "A String", # The ID associated with the value if available.
+            },
+          },
+        ],
+        "weightCalculationStrategy": "A String", # Strategy for calculating weights. Used with CREATIVE_ROTATION_TYPE_RANDOM.
+        "creativeOptimizationConfigurationId": "A String", # Creative optimization configuration that is used by this ad. It should refer to one of the existing optimization configurations in the ad's campaign. If it is unset or set to 0, then the campaign's default optimization configuration will be used for this ad.
+        "type": "A String", # Type of creative rotation. Can be used to specify whether to use sequential or random rotation.
+      },
+      "clickThroughUrl": { # Click-through URL # Click-through URL for this ad. This is a required field on insertion. Applicable when type is AD_SERVING_CLICK_TRACKER.
+        "computedClickThroughUrl": "A String", # Read-only convenience field representing the actual URL that will be used for this click-through. The URL is computed as follows:
+            # - If defaultLandingPage is enabled then the campaign's default landing page URL is assigned to this field.
+            # - If defaultLandingPage is not enabled and a landingPageId is specified then that landing page's URL is assigned to this field.
+            # - If neither of the above cases apply, then the customClickThroughUrl is assigned to this field.
+        "customClickThroughUrl": "A String", # Custom click-through URL. Applicable if the defaultLandingPage field is set to false and the landingPageId field is left unset.
+        "landingPageId": "A String", # ID of the landing page for the click-through URL. Applicable if the defaultLandingPage field is set to false.
+        "defaultLandingPage": True or False, # Whether the campaign default landing page is used.
+      },
+      "comments": "A String", # Comments for this ad.
+      "remarketingListExpression": { # Remarketing List Targeting Expression. # Remarketing list targeting expression for this ad. This field must be left blank if the ad is using a targeting template. Applicable when type is AD_SERVING_STANDARD_AD.
+        "expression": "A String", # Expression describing which lists are being targeted by the ad.
+      },
+      "idDimensionValue": { # Represents a DimensionValue resource. # Dimension value for the ID of this ad. This is a read-only, auto-generated field.
+        "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+        "value": "A String", # The value of the dimension.
+        "dimensionName": "A String", # The name of the dimension.
+        "etag": "A String", # The eTag of this response for caching purposes.
+        "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+        "id": "A String", # The ID associated with the value if available.
+      },
+      "size": { # Represents the dimensions of ads, placements, creatives, or creative assets. # Size of this ad. Applicable when type is AD_SERVING_DEFAULT_AD.
+        "width": 42, # Width of this size.
+        "kind": "dfareporting#size", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#size".
+        "iab": True or False, # IAB standard size. This is a read-only, auto-generated field.
+        "id": "A String", # ID of this size. This is a read-only, auto-generated field.
+        "height": 42, # Height of this size.
+      },
+      "type": "A String", # Type of ad. This is a required field on insertion. Note that default ads (AD_SERVING_DEFAULT_AD) cannot be created directly (see Creative resource).
+      "sslRequired": True or False, # Whether this ad requires ssl. This is a read-only field that is auto-generated when the ad is inserted or updated.
+      "audienceSegmentId": "A String", # Audience segment ID that is being targeted for this ad. Applicable when type is AD_SERVING_STANDARD_AD.
+      "keyValueTargetingExpression": { # Key Value Targeting Expression. # Key-value targeting information for this ad. This field must be left blank if the ad is using a targeting template. Applicable when type is AD_SERVING_STANDARD_AD.
+        "expression": "A String", # Keyword expression being targeted by the ad.
+      },
+      "campaignIdDimensionValue": { # Represents a DimensionValue resource. # Dimension value for the ID of the campaign. This is a read-only, auto-generated field.
+        "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+        "value": "A String", # The value of the dimension.
+        "dimensionName": "A String", # The name of the dimension.
+        "etag": "A String", # The eTag of this response for caching purposes.
+        "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+        "id": "A String", # The ID associated with the value if available.
+      },
+      "defaultClickThroughEventTagProperties": { # Properties of inheriting and overriding the default click-through event tag. A campaign may override the event tag defined at the advertiser level, and an ad may also override the campaign's setting further. # Default click-through event tag properties for this ad.
+        "overrideInheritedEventTag": True or False, # Whether this entity should override the inherited default click-through event tag with its own defined value.
+        "defaultClickThroughEventTagId": "A String", # ID of the click-through event tag to apply to all ads in this entity's scope.
+      },
+      "createInfo": { # Modification timestamp. # Information about the creation of this ad. This is a read-only field.
+        "time": "A String", # Timestamp of the last change in milliseconds since epoch.
+      },
+      "startTime": "A String", # Date and time that this ad should start serving. If creating an ad, this field must be a time in the future. This is a required field on insertion.
+      "active": True or False, # Whether this ad is active. When true, archived must be false.
+      "compatibility": "A String", # Compatibility of this ad. Applicable when type is AD_SERVING_DEFAULT_AD. DISPLAY and DISPLAY_INTERSTITIAL refer to either rendering on desktop or on mobile devices or in mobile apps for regular or interstitial ads, respectively. APP and APP_INTERSTITIAL are only used for existing default ads. New mobile placements must be assigned DISPLAY or DISPLAY_INTERSTITIAL and default ads created for those placements will be limited to those compatibility types. IN_STREAM_VIDEO refers to rendering in-stream video ads developed with the VAST standard.
+      "kind": "dfareporting#ad", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#ad".
+      "subaccountId": "A String", # Subaccount ID of this ad. This is a read-only field that can be left blank.
+      "name": "A String", # Name of this ad. This is a required field and must be less than 256 characters long.
+      "dayPartTargeting": { # Day Part Targeting. # Time and day targeting information for this ad. This field must be left blank if the ad is using a targeting template. Applicable when type is AD_SERVING_STANDARD_AD.
+        "userLocalTime": True or False, # Whether or not to use the user's local time. If false, the America/New York time zone applies.
+        "hoursOfDay": [ # Hours of the day when the ad will serve. Must be an integer between 0 and 23 (inclusive), where 0 is midnight to 1 AM, and 23 is 11 PM to midnight. Can be specified with days of week, in which case the ad would serve during these hours on the specified days. For example, if Monday, Wednesday, Friday are the days of week specified and 9-10am, 3-5pm (hours 9, 15, and 16) is specified, the ad would serve Monday, Wednesdays, and Fridays at 9-10am and 3-5pm.
+          42,
+        ],
+        "daysOfWeek": [ # Days of the week when the ad will serve.
+            #
+            # Acceptable values are:
+            # - "SUNDAY"
+            # - "MONDAY"
+            # - "TUESDAY"
+            # - "WEDNESDAY"
+            # - "THURSDAY"
+            # - "FRIDAY"
+            # - "SATURDAY"
+          "A String",
+        ],
+      },
+      "lastModifiedInfo": { # Modification timestamp. # Information about the most recent modification of this ad. This is a read-only field.
+        "time": "A String", # Timestamp of the last change in milliseconds since epoch.
+      },
+      "sslCompliant": True or False, # Whether this ad is ssl compliant. This is a read-only field that is auto-generated when the ad is inserted or updated.
+      "placementAssignments": [ # Placement assignments for this ad.
+        { # Placement Assignment.
+          "active": True or False, # Whether this placement assignment is active. When true, the placement will be included in the ad's rotation.
+          "placementIdDimensionValue": { # Represents a DimensionValue resource. # Dimension value for the ID of the placement. This is a read-only, auto-generated field.
+            "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+            "value": "A String", # The value of the dimension.
+            "dimensionName": "A String", # The name of the dimension.
+            "etag": "A String", # The eTag of this response for caching purposes.
+            "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+            "id": "A String", # The ID associated with the value if available.
+          },
+          "placementId": "A String", # ID of the placement to be assigned. This is a required field.
+          "sslRequired": True or False, # Whether the placement to be assigned requires SSL. This is a read-only field that is auto-generated when the ad is inserted or updated.
+        },
+      ],
+      "endTime": "A String", # Date and time that this ad should stop serving. Must be later than the start time. This is a required field on insertion.
+      "dynamicClickTracker": True or False, # Whether this ad is a dynamic click tracker. Applicable when type is AD_SERVING_CLICK_TRACKER. This is a required field on insert, and is read-only after insert.
+    }</pre>
+</div>
+
+<div class="method">
+    <code class="details" id="update">update(profileId, body)</code>
+  <pre>Updates an existing ad.
+
+Args:
+  profileId: string, User profile ID associated with this request. (required)
+  body: object, The request body. (required)
+    The object takes the form of:
+
+{ # Contains properties of a DCM ad.
+    "clickThroughUrlSuffixProperties": { # Click Through URL Suffix settings. # Click-through URL suffix properties for this ad. Applies to the URL in the ad or (if overriding ad properties) the URL in the creative.
+      "clickThroughUrlSuffix": "A String", # Click-through URL suffix to apply to all ads in this entity's scope. Must be less than 128 characters long.
+      "overrideInheritedSuffix": True or False, # Whether this entity should override the inherited click-through URL suffix with its own defined value.
+    },
+    "campaignId": "A String", # Campaign ID of this ad. This is a required field on insertion.
+    "languageTargeting": { # Language Targeting. # Language targeting information for this ad. This field must be left blank if the ad is using a targeting template. Applicable when type is AD_SERVING_STANDARD_AD.
+      "languages": [ # Languages that this ad targets. For each language only languageId is required. The other fields are populated automatically when the ad is inserted or updated.
+        { # Contains information about a language that can be targeted by ads.
+          "languageCode": "A String", # Format of language code is an ISO 639 two-letter language code optionally followed by an underscore followed by an ISO 3166 code. Examples are "en" for English or "zh_CN" for Simplified Chinese.
+          "kind": "dfareporting#language", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#language".
+          "id": "A String", # Language ID of this language. This is the ID used for targeting and generating reports.
+          "name": "A String", # Name of this language.
+        },
+      ],
+    },
+    "advertiserId": "A String", # Advertiser ID of this ad. This is a required field on insertion.
+    "geoTargeting": { # Geographical Targeting. # Geographical targeting information for this ad. This field must be left blank if the ad is using a targeting template. Applicable when type is AD_SERVING_STANDARD_AD.
+      "countries": [ # Countries to be targeted or excluded from targeting, depending on the setting of the excludeCountries field. For each country only dartId is required. The other fields are populated automatically when the ad is inserted or updated. If targeting or excluding a country, do not target regions, cities, metros, or postal codes in the same country.
+        { # Contains information about a country that can be targeted by ads.
+          "dartId": "A String", # DART ID of this country. This is the ID used for targeting and generating reports.
+          "sslEnabled": True or False, # Whether ad serving supports secure servers in this country.
+          "kind": "dfareporting#country", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#country".
+          "countryCode": "A String", # Country code.
+          "name": "A String", # Name of this country.
+        },
+      ],
+      "excludeCountries": True or False, # Whether or not to exclude the countries in the countries field from targeting. If false, the countries field refers to countries which will be targeted by the ad.
+      "postalCodes": [ # Postal codes to be targeted. For each postal code only id is required. The other fields are populated automatically when the ad is inserted or updated. If targeting a postal code, do not target or exclude the country of the postal code.
+        { # Contains information about a postal code that can be targeted by ads.
+          "countryDartId": "A String", # DART ID of the country to which this postal code belongs.
+          "kind": "dfareporting#postalCode", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#postalCode".
+          "code": "A String", # Postal code. This is equivalent to the id field.
+          "id": "A String", # ID of this postal code.
+          "countryCode": "A String", # Country code of the country to which this postal code belongs.
+        },
+      ],
+      "regions": [ # Regions to be targeted. For each region only dartId is required. The other fields are populated automatically when the ad is inserted or updated. If targeting a region, do not target or exclude the country of the region.
+        { # Contains information about a region that can be targeted by ads.
+          "kind": "dfareporting#region", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#region".
+          "countryDartId": "A String", # DART ID of the country to which this region belongs.
+          "name": "A String", # Name of this region.
+          "countryCode": "A String", # Country code of the country to which this region belongs.
+          "regionCode": "A String", # Region code.
+          "dartId": "A String", # DART ID of this region.
+        },
+      ],
+      "cities": [ # Cities to be targeted. For each city only dartId is required. The other fields are populated automatically when the ad is inserted or updated. If targeting a city, do not target or exclude the country of the city, and do not target the metro or region of the city.
+        { # Contains information about a city that can be targeted by ads.
+          "kind": "dfareporting#city", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#city".
+          "countryDartId": "A String", # DART ID of the country to which this city belongs.
+          "name": "A String", # Name of this city.
+          "countryCode": "A String", # Country code of the country to which this city belongs.
+          "metroCode": "A String", # Metro region code of the metro region (DMA) to which this city belongs.
+          "regionCode": "A String", # Region code of the region to which this city belongs.
+          "metroDmaId": "A String", # ID of the metro region (DMA) to which this city belongs.
+          "dartId": "A String", # DART ID of this city. This is the ID used for targeting and generating reports.
+          "regionDartId": "A String", # DART ID of the region to which this city belongs.
+        },
+      ],
+      "metros": [ # Metros to be targeted. For each metro only dmaId is required. The other fields are populated automatically when the ad is inserted or updated. If targeting a metro, do not target or exclude the country of the metro.
+        { # Contains information about a metro region that can be targeted by ads.
+          "kind": "dfareporting#metro", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#metro".
+          "countryDartId": "A String", # DART ID of the country to which this metro region belongs.
+          "name": "A String", # Name of this metro region.
+          "countryCode": "A String", # Country code of the country to which this metro region belongs.
+          "metroCode": "A String", # Metro code of this metro region. This is equivalent to dma_id.
+          "dmaId": "A String", # DMA ID of this metro region. This is the ID used for targeting and generating reports, and is equivalent to metro_code.
+          "dartId": "A String", # DART ID of this metro region.
+        },
+      ],
+    },
+    "creativeGroupAssignments": [ # Creative group assignments for this ad. Applicable when type is AD_SERVING_CLICK_TRACKER. Only one assignment per creative group number is allowed for a maximum of two assignments.
+      { # Creative Group Assignment.
+        "creativeGroupNumber": "A String", # Creative group number of the creative group assignment.
+        "creativeGroupId": "A String", # ID of the creative group to be assigned.
+      },
+    ],
+    "deliverySchedule": { # Delivery Schedule. # Delivery schedule information for this ad. Applicable when type is AD_SERVING_STANDARD_AD or AD_SERVING_TRACKING. This field along with subfields priority and impressionRatio are required on insertion when type is AD_SERVING_STANDARD_AD.
+      "priority": "A String", # Serving priority of an ad, with respect to other ads. The lower the priority number, the greater the priority with which it is served.
+      "hardCutoff": True or False, # Whether or not hard cutoff is enabled. If true, the ad will not serve after the end date and time. Otherwise the ad will continue to be served until it has reached its delivery goals.
+      "frequencyCap": { # Frequency Cap. # Limit on the number of times an individual user can be served the ad within a specified period of time.
+        "duration": "A String", # Duration of time, in seconds, for this frequency cap. The maximum duration is 90 days in seconds, or 7,776,000.
+        "impressions": "A String", # Number of times an individual user can be served the ad within the specified duration. The maximum allowed is 15.
+      },
+      "impressionRatio": "A String", # Impression ratio for this ad. This ratio determines how often each ad is served relative to the others. For example, if ad A has an impression ratio of 1 and ad B has an impression ratio of 3, then DCM will serve ad B three times as often as ad A. Must be between 1 and 10.
+    },
+    "advertiserIdDimensionValue": { # Represents a DimensionValue resource. # Dimension value for the ID of the advertiser. This is a read-only, auto-generated field.
+      "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+      "value": "A String", # The value of the dimension.
+      "dimensionName": "A String", # The name of the dimension.
+      "etag": "A String", # The eTag of this response for caching purposes.
+      "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+      "id": "A String", # The ID associated with the value if available.
+    },
+    "eventTagOverrides": [ # Event tag overrides for this ad.
+      { # Event tag override information.
+        "enabled": True or False, # Whether this override is enabled.
+        "id": "A String", # ID of this event tag override. This is a read-only, auto-generated field.
+      },
+    ],
+    "id": "A String", # ID of this ad. This is a read-only, auto-generated field.
+    "accountId": "A String", # Account ID of this ad. This is a read-only field that can be left blank.
+    "archived": True or False, # Whether this ad is archived. When true, active must be false.
+    "targetingTemplateId": "A String", # Targeting template ID, used to apply preconfigured targeting information to this ad. This cannot be set while any of dayPartTargeting, geoTargeting, keyValueTargetingExpression, languageTargeting, remarketingListExpression, or technologyTargeting are set. Applicable when type is AD_SERVING_STANDARD_AD.
+    "technologyTargeting": { # Technology Targeting. # Technology platform targeting information for this ad. This field must be left blank if the ad is using a targeting template. Applicable when type is AD_SERVING_STANDARD_AD.
+      "platformTypes": [ # Platform types that this ad targets. For example, desktop, mobile, or tablet. For each platform type, only id is required, and the other fields are populated automatically when the ad is inserted or updated.
+        { # Contains information about a platform type that can be targeted by ads.
+          "kind": "dfareporting#platformType", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#platformType".
+          "id": "A String", # ID of this platform type.
+          "name": "A String", # Name of this platform type.
+        },
+      ],
+      "operatingSystemVersions": [ # Operating system versions that this ad targets. To target all versions, use operatingSystems. For each operating system version, only id is required. The other fields are populated automatically when the ad is inserted or updated. If targeting an operating system version, do not set targeting for the corresponding operating system in operatingSystems.
+        { # Contains information about a particular version of an operating system that can be targeted by ads.
+          "majorVersion": "A String", # Major version (leftmost number) of this operating system version.
+          "kind": "dfareporting#operatingSystemVersion", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#operatingSystemVersion".
+          "name": "A String", # Name of this operating system version.
+          "id": "A String", # ID of this operating system version.
+          "operatingSystem": { # Contains information about an operating system that can be targeted by ads. # Operating system of this operating system version.
+            "mobile": True or False, # Whether this operating system is for mobile.
+            "dartId": "A String", # DART ID of this operating system. This is the ID used for targeting.
+            "kind": "dfareporting#operatingSystem", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#operatingSystem".
+            "name": "A String", # Name of this operating system.
+            "desktop": True or False, # Whether this operating system is for desktop.
+          },
+          "minorVersion": "A String", # Minor version (number after the first dot) of this operating system version.
+        },
+      ],
+      "browsers": [ # Browsers that this ad targets. For each browser either set browserVersionId or dartId along with the version numbers. If both are specified, only browserVersionId will be used. The other fields are populated automatically when the ad is inserted or updated.
+        { # Contains information about a browser that can be targeted by ads.
+          "majorVersion": "A String", # Major version number (leftmost number) of this browser. For example, for Chrome 5.0.376.86 beta, this field should be set to 5. An asterisk (*) may be used to target any version number, and a question mark (?) may be used to target cases where the version number cannot be identified. For example, Chrome *.* targets any version of Chrome: 1.2, 2.5, 3.5, and so on. Chrome 3.* targets Chrome 3.1, 3.5, but not 4.0. Firefox ?.? targets cases where the ad server knows the browser is Firefox but can't tell which version it is.
+          "kind": "dfareporting#browser", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#browser".
+          "name": "A String", # Name of this browser.
+          "browserVersionId": "A String", # ID referring to this grouping of browser and version numbers. This is the ID used for targeting.
+          "dartId": "A String", # DART ID of this browser. This is the ID used when generating reports.
+          "minorVersion": "A String", # Minor version number (number after first dot on left) of this browser. For example, for Chrome 5.0.375.86 beta, this field should be set to 0. An asterisk (*) may be used to target any version number, and a question mark (?) may be used to target cases where the version number cannot be identified. For example, Chrome *.* targets any version of Chrome: 1.2, 2.5, 3.5, and so on. Chrome 3.* targets Chrome 3.1, 3.5, but not 4.0. Firefox ?.? targets cases where the ad server knows the browser is Firefox but can't tell which version it is.
+        },
+      ],
+      "operatingSystems": [ # Operating systems that this ad targets. To target specific versions, use operatingSystemVersions. For each operating system only dartId is required. The other fields are populated automatically when the ad is inserted or updated. If targeting an operating system, do not set targeting for operating system versions for the same operating system.
+        { # Contains information about an operating system that can be targeted by ads.
+          "mobile": True or False, # Whether this operating system is for mobile.
+          "dartId": "A String", # DART ID of this operating system. This is the ID used for targeting.
+          "kind": "dfareporting#operatingSystem", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#operatingSystem".
+          "name": "A String", # Name of this operating system.
+          "desktop": True or False, # Whether this operating system is for desktop.
+        },
+      ],
+      "mobileCarriers": [ # Mobile carriers that this ad targets. For each mobile carrier only id is required, and the other fields are populated automatically when the ad is inserted or updated. If targeting a mobile carrier, do not set targeting for any zip codes.
+        { # Contains information about a mobile carrier that can be targeted by ads.
+          "kind": "dfareporting#mobileCarrier", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#mobileCarrier".
+          "countryDartId": "A String", # DART ID of the country to which this mobile carrier belongs.
+          "id": "A String", # ID of this mobile carrier.
+          "countryCode": "A String", # Country code of the country to which this mobile carrier belongs.
+          "name": "A String", # Name of this mobile carrier.
+        },
+      ],
+      "connectionTypes": [ # Connection types that this ad targets. For each connection type only id is required. The other fields are populated automatically when the ad is inserted or updated.
+        { # Contains information about an internet connection type that can be targeted by ads. Clients can use the connection type to target mobile vs. broadband users.
+          "kind": "dfareporting#connectionType", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#connectionType".
+          "id": "A String", # ID of this connection type.
+          "name": "A String", # Name of this connection type.
+        },
+      ],
+    },
+    "creativeRotation": { # Creative Rotation. # Creative rotation for this ad. Applicable when type is AD_SERVING_DEFAULT_AD, AD_SERVING_STANDARD_AD, or AD_SERVING_TRACKING. When type is AD_SERVING_DEFAULT_AD, this field should have exactly one creativeAssignment.
+      "creativeAssignments": [ # Creative assignments in this creative rotation.
+        { # Creative Assignment.
+          "weight": 42, # Weight of the creative assignment, applicable when the rotation type is CREATIVE_ROTATION_TYPE_RANDOM.
+          "sequence": 42, # Sequence number of the creative assignment, applicable when the rotation type is CREATIVE_ROTATION_TYPE_SEQUENTIAL.
+          "applyEventTags": True or False, # Whether applicable event tags should fire when this creative assignment is rendered. If this value is unset when the ad is inserted or updated, it will default to true for all creative types EXCEPT for INTERNAL_REDIRECT, INTERSTITIAL_INTERNAL_REDIRECT, and INSTREAM_VIDEO.
+          "richMediaExitOverrides": [ # Rich media exit overrides for this creative assignment.
+              # Applicable when the creative type is any of the following:
+              # - RICH_MEDIA_INPAGE
+              # - RICH_MEDIA_INPAGE_FLOATING
+              # - RICH_MEDIA_IM_EXPAND
+              # - RICH_MEDIA_EXPANDING
+              # - RICH_MEDIA_INTERSTITIAL_FLOAT
+              # - RICH_MEDIA_MOBILE_IN_APP
+              # - RICH_MEDIA_MULTI_FLOATING
+              # - RICH_MEDIA_PEEL_DOWN
+              # - ADVANCED_BANNER
+              # - VPAID_LINEAR
+              # - VPAID_NON_LINEAR
+            { # Rich Media Exit Override.
+              "clickThroughUrl": { # Click-through URL # Click-through URL of this rich media exit override. Applicable if the enabled field is set to true.
+                "computedClickThroughUrl": "A String", # Read-only convenience field representing the actual URL that will be used for this click-through. The URL is computed as follows:
+                    # - If defaultLandingPage is enabled then the campaign's default landing page URL is assigned to this field.
+                    # - If defaultLandingPage is not enabled and a landingPageId is specified then that landing page's URL is assigned to this field.
+                    # - If neither of the above cases apply, then the customClickThroughUrl is assigned to this field.
+                "customClickThroughUrl": "A String", # Custom click-through URL. Applicable if the defaultLandingPage field is set to false and the landingPageId field is left unset.
+                "landingPageId": "A String", # ID of the landing page for the click-through URL. Applicable if the defaultLandingPage field is set to false.
+                "defaultLandingPage": True or False, # Whether the campaign default landing page is used.
+              },
+              "enabled": True or False, # Whether to use the clickThroughUrl. If false, the creative-level exit will be used.
+              "exitId": "A String", # ID for the override to refer to a specific exit in the creative.
+            },
+          ],
+          "sslCompliant": True or False, # Whether the creative to be assigned is SSL-compliant. This is a read-only field that is auto-generated when the ad is inserted or updated.
+          "creativeGroupAssignments": [ # Creative group assignments for this creative assignment. Only one assignment per creative group number is allowed for a maximum of two assignments.
+            { # Creative Group Assignment.
+              "creativeGroupNumber": "A String", # Creative group number of the creative group assignment.
+              "creativeGroupId": "A String", # ID of the creative group to be assigned.
+            },
+          ],
+          "companionCreativeOverrides": [ # Companion creative overrides for this creative assignment. Applicable to video ads.
+            { # Companion Click-through override.
+              "clickThroughUrl": { # Click-through URL # Click-through URL of this companion click-through override.
+                "computedClickThroughUrl": "A String", # Read-only convenience field representing the actual URL that will be used for this click-through. The URL is computed as follows:
+                    # - If defaultLandingPage is enabled then the campaign's default landing page URL is assigned to this field.
+                    # - If defaultLandingPage is not enabled and a landingPageId is specified then that landing page's URL is assigned to this field.
+                    # - If neither of the above cases apply, then the customClickThroughUrl is assigned to this field.
+                "customClickThroughUrl": "A String", # Custom click-through URL. Applicable if the defaultLandingPage field is set to false and the landingPageId field is left unset.
+                "landingPageId": "A String", # ID of the landing page for the click-through URL. Applicable if the defaultLandingPage field is set to false.
+                "defaultLandingPage": True or False, # Whether the campaign default landing page is used.
+              },
+              "creativeId": "A String", # ID of the creative for this companion click-through override.
+            },
+          ],
+          "startTime": "A String", # Date and time that the assigned creative should start serving.
+          "clickThroughUrl": { # Click-through URL # Click-through URL of the creative assignment.
+            "computedClickThroughUrl": "A String", # Read-only convenience field representing the actual URL that will be used for this click-through. The URL is computed as follows:
+                # - If defaultLandingPage is enabled then the campaign's default landing page URL is assigned to this field.
+                # - If defaultLandingPage is not enabled and a landingPageId is specified then that landing page's URL is assigned to this field.
+                # - If neither of the above cases apply, then the customClickThroughUrl is assigned to this field.
+            "customClickThroughUrl": "A String", # Custom click-through URL. Applicable if the defaultLandingPage field is set to false and the landingPageId field is left unset.
+            "landingPageId": "A String", # ID of the landing page for the click-through URL. Applicable if the defaultLandingPage field is set to false.
+            "defaultLandingPage": True or False, # Whether the campaign default landing page is used.
+          },
+          "active": True or False, # Whether this creative assignment is active. When true, the creative will be included in the ad's rotation.
+          "creativeId": "A String", # ID of the creative to be assigned. This is a required field.
+          "endTime": "A String", # Date and time that the assigned creative should stop serving. Must be later than the start time.
+          "creativeIdDimensionValue": { # Represents a DimensionValue resource. # Dimension value for the ID of the creative. This is a read-only, auto-generated field.
+            "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+            "value": "A String", # The value of the dimension.
+            "dimensionName": "A String", # The name of the dimension.
+            "etag": "A String", # The eTag of this response for caching purposes.
+            "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+            "id": "A String", # The ID associated with the value if available.
+          },
+        },
+      ],
+      "weightCalculationStrategy": "A String", # Strategy for calculating weights. Used with CREATIVE_ROTATION_TYPE_RANDOM.
+      "creativeOptimizationConfigurationId": "A String", # Creative optimization configuration that is used by this ad. It should refer to one of the existing optimization configurations in the ad's campaign. If it is unset or set to 0, then the campaign's default optimization configuration will be used for this ad.
+      "type": "A String", # Type of creative rotation. Can be used to specify whether to use sequential or random rotation.
+    },
+    "clickThroughUrl": { # Click-through URL # Click-through URL for this ad. This is a required field on insertion. Applicable when type is AD_SERVING_CLICK_TRACKER.
+      "computedClickThroughUrl": "A String", # Read-only convenience field representing the actual URL that will be used for this click-through. The URL is computed as follows:
+          # - If defaultLandingPage is enabled then the campaign's default landing page URL is assigned to this field.
+          # - If defaultLandingPage is not enabled and a landingPageId is specified then that landing page's URL is assigned to this field.
+          # - If neither of the above cases apply, then the customClickThroughUrl is assigned to this field.
+      "customClickThroughUrl": "A String", # Custom click-through URL. Applicable if the defaultLandingPage field is set to false and the landingPageId field is left unset.
+      "landingPageId": "A String", # ID of the landing page for the click-through URL. Applicable if the defaultLandingPage field is set to false.
+      "defaultLandingPage": True or False, # Whether the campaign default landing page is used.
+    },
+    "comments": "A String", # Comments for this ad.
+    "remarketingListExpression": { # Remarketing List Targeting Expression. # Remarketing list targeting expression for this ad. This field must be left blank if the ad is using a targeting template. Applicable when type is AD_SERVING_STANDARD_AD.
+      "expression": "A String", # Expression describing which lists are being targeted by the ad.
+    },
+    "idDimensionValue": { # Represents a DimensionValue resource. # Dimension value for the ID of this ad. This is a read-only, auto-generated field.
+      "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+      "value": "A String", # The value of the dimension.
+      "dimensionName": "A String", # The name of the dimension.
+      "etag": "A String", # The eTag of this response for caching purposes.
+      "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+      "id": "A String", # The ID associated with the value if available.
+    },
+    "size": { # Represents the dimensions of ads, placements, creatives, or creative assets. # Size of this ad. Applicable when type is AD_SERVING_DEFAULT_AD.
+      "width": 42, # Width of this size.
+      "kind": "dfareporting#size", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#size".
+      "iab": True or False, # IAB standard size. This is a read-only, auto-generated field.
+      "id": "A String", # ID of this size. This is a read-only, auto-generated field.
+      "height": 42, # Height of this size.
+    },
+    "type": "A String", # Type of ad. This is a required field on insertion. Note that default ads (AD_SERVING_DEFAULT_AD) cannot be created directly (see Creative resource).
+    "sslRequired": True or False, # Whether this ad requires ssl. This is a read-only field that is auto-generated when the ad is inserted or updated.
+    "audienceSegmentId": "A String", # Audience segment ID that is being targeted for this ad. Applicable when type is AD_SERVING_STANDARD_AD.
+    "keyValueTargetingExpression": { # Key Value Targeting Expression. # Key-value targeting information for this ad. This field must be left blank if the ad is using a targeting template. Applicable when type is AD_SERVING_STANDARD_AD.
+      "expression": "A String", # Keyword expression being targeted by the ad.
+    },
+    "campaignIdDimensionValue": { # Represents a DimensionValue resource. # Dimension value for the ID of the campaign. This is a read-only, auto-generated field.
+      "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+      "value": "A String", # The value of the dimension.
+      "dimensionName": "A String", # The name of the dimension.
+      "etag": "A String", # The eTag of this response for caching purposes.
+      "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+      "id": "A String", # The ID associated with the value if available.
+    },
+    "defaultClickThroughEventTagProperties": { # Properties of inheriting and overriding the default click-through event tag. A campaign may override the event tag defined at the advertiser level, and an ad may also override the campaign's setting further. # Default click-through event tag properties for this ad.
+      "overrideInheritedEventTag": True or False, # Whether this entity should override the inherited default click-through event tag with its own defined value.
+      "defaultClickThroughEventTagId": "A String", # ID of the click-through event tag to apply to all ads in this entity's scope.
+    },
+    "createInfo": { # Modification timestamp. # Information about the creation of this ad. This is a read-only field.
+      "time": "A String", # Timestamp of the last change in milliseconds since epoch.
+    },
+    "startTime": "A String", # Date and time that this ad should start serving. If creating an ad, this field must be a time in the future. This is a required field on insertion.
+    "active": True or False, # Whether this ad is active. When true, archived must be false.
+    "compatibility": "A String", # Compatibility of this ad. Applicable when type is AD_SERVING_DEFAULT_AD. DISPLAY and DISPLAY_INTERSTITIAL refer to either rendering on desktop or on mobile devices or in mobile apps for regular or interstitial ads, respectively. APP and APP_INTERSTITIAL are only used for existing default ads. New mobile placements must be assigned DISPLAY or DISPLAY_INTERSTITIAL and default ads created for those placements will be limited to those compatibility types. IN_STREAM_VIDEO refers to rendering in-stream video ads developed with the VAST standard.
+    "kind": "dfareporting#ad", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#ad".
+    "subaccountId": "A String", # Subaccount ID of this ad. This is a read-only field that can be left blank.
+    "name": "A String", # Name of this ad. This is a required field and must be less than 256 characters long.
+    "dayPartTargeting": { # Day Part Targeting. # Time and day targeting information for this ad. This field must be left blank if the ad is using a targeting template. Applicable when type is AD_SERVING_STANDARD_AD.
+      "userLocalTime": True or False, # Whether or not to use the user's local time. If false, the America/New York time zone applies.
+      "hoursOfDay": [ # Hours of the day when the ad will serve. Must be an integer between 0 and 23 (inclusive), where 0 is midnight to 1 AM, and 23 is 11 PM to midnight. Can be specified with days of week, in which case the ad would serve during these hours on the specified days. For example, if Monday, Wednesday, Friday are the days of week specified and 9-10am, 3-5pm (hours 9, 15, and 16) is specified, the ad would serve Monday, Wednesdays, and Fridays at 9-10am and 3-5pm.
+        42,
+      ],
+      "daysOfWeek": [ # Days of the week when the ad will serve.
+          #
+          # Acceptable values are:
+          # - "SUNDAY"
+          # - "MONDAY"
+          # - "TUESDAY"
+          # - "WEDNESDAY"
+          # - "THURSDAY"
+          # - "FRIDAY"
+          # - "SATURDAY"
+        "A String",
+      ],
+    },
+    "lastModifiedInfo": { # Modification timestamp. # Information about the most recent modification of this ad. This is a read-only field.
+      "time": "A String", # Timestamp of the last change in milliseconds since epoch.
+    },
+    "sslCompliant": True or False, # Whether this ad is ssl compliant. This is a read-only field that is auto-generated when the ad is inserted or updated.
+    "placementAssignments": [ # Placement assignments for this ad.
+      { # Placement Assignment.
+        "active": True or False, # Whether this placement assignment is active. When true, the placement will be included in the ad's rotation.
+        "placementIdDimensionValue": { # Represents a DimensionValue resource. # Dimension value for the ID of the placement. This is a read-only, auto-generated field.
+          "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+          "value": "A String", # The value of the dimension.
+          "dimensionName": "A String", # The name of the dimension.
+          "etag": "A String", # The eTag of this response for caching purposes.
+          "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+          "id": "A String", # The ID associated with the value if available.
+        },
+        "placementId": "A String", # ID of the placement to be assigned. This is a required field.
+        "sslRequired": True or False, # Whether the placement to be assigned requires SSL. This is a read-only field that is auto-generated when the ad is inserted or updated.
+      },
+    ],
+    "endTime": "A String", # Date and time that this ad should stop serving. Must be later than the start time. This is a required field on insertion.
+    "dynamicClickTracker": True or False, # Whether this ad is a dynamic click tracker. Applicable when type is AD_SERVING_CLICK_TRACKER. This is a required field on insert, and is read-only after insert.
+  }
+
+
+Returns:
+  An object of the form:
+
+    { # Contains properties of a DCM ad.
+      "clickThroughUrlSuffixProperties": { # Click Through URL Suffix settings. # Click-through URL suffix properties for this ad. Applies to the URL in the ad or (if overriding ad properties) the URL in the creative.
+        "clickThroughUrlSuffix": "A String", # Click-through URL suffix to apply to all ads in this entity's scope. Must be less than 128 characters long.
+        "overrideInheritedSuffix": True or False, # Whether this entity should override the inherited click-through URL suffix with its own defined value.
+      },
+      "campaignId": "A String", # Campaign ID of this ad. This is a required field on insertion.
+      "languageTargeting": { # Language Targeting. # Language targeting information for this ad. This field must be left blank if the ad is using a targeting template. Applicable when type is AD_SERVING_STANDARD_AD.
+        "languages": [ # Languages that this ad targets. For each language only languageId is required. The other fields are populated automatically when the ad is inserted or updated.
+          { # Contains information about a language that can be targeted by ads.
+            "languageCode": "A String", # Format of language code is an ISO 639 two-letter language code optionally followed by an underscore followed by an ISO 3166 code. Examples are "en" for English or "zh_CN" for Simplified Chinese.
+            "kind": "dfareporting#language", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#language".
+            "id": "A String", # Language ID of this language. This is the ID used for targeting and generating reports.
+            "name": "A String", # Name of this language.
+          },
+        ],
+      },
+      "advertiserId": "A String", # Advertiser ID of this ad. This is a required field on insertion.
+      "geoTargeting": { # Geographical Targeting. # Geographical targeting information for this ad. This field must be left blank if the ad is using a targeting template. Applicable when type is AD_SERVING_STANDARD_AD.
+        "countries": [ # Countries to be targeted or excluded from targeting, depending on the setting of the excludeCountries field. For each country only dartId is required. The other fields are populated automatically when the ad is inserted or updated. If targeting or excluding a country, do not target regions, cities, metros, or postal codes in the same country.
+          { # Contains information about a country that can be targeted by ads.
+            "dartId": "A String", # DART ID of this country. This is the ID used for targeting and generating reports.
+            "sslEnabled": True or False, # Whether ad serving supports secure servers in this country.
+            "kind": "dfareporting#country", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#country".
+            "countryCode": "A String", # Country code.
+            "name": "A String", # Name of this country.
+          },
+        ],
+        "excludeCountries": True or False, # Whether or not to exclude the countries in the countries field from targeting. If false, the countries field refers to countries which will be targeted by the ad.
+        "postalCodes": [ # Postal codes to be targeted. For each postal code only id is required. The other fields are populated automatically when the ad is inserted or updated. If targeting a postal code, do not target or exclude the country of the postal code.
+          { # Contains information about a postal code that can be targeted by ads.
+            "countryDartId": "A String", # DART ID of the country to which this postal code belongs.
+            "kind": "dfareporting#postalCode", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#postalCode".
+            "code": "A String", # Postal code. This is equivalent to the id field.
+            "id": "A String", # ID of this postal code.
+            "countryCode": "A String", # Country code of the country to which this postal code belongs.
+          },
+        ],
+        "regions": [ # Regions to be targeted. For each region only dartId is required. The other fields are populated automatically when the ad is inserted or updated. If targeting a region, do not target or exclude the country of the region.
+          { # Contains information about a region that can be targeted by ads.
+            "kind": "dfareporting#region", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#region".
+            "countryDartId": "A String", # DART ID of the country to which this region belongs.
+            "name": "A String", # Name of this region.
+            "countryCode": "A String", # Country code of the country to which this region belongs.
+            "regionCode": "A String", # Region code.
+            "dartId": "A String", # DART ID of this region.
+          },
+        ],
+        "cities": [ # Cities to be targeted. For each city only dartId is required. The other fields are populated automatically when the ad is inserted or updated. If targeting a city, do not target or exclude the country of the city, and do not target the metro or region of the city.
+          { # Contains information about a city that can be targeted by ads.
+            "kind": "dfareporting#city", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#city".
+            "countryDartId": "A String", # DART ID of the country to which this city belongs.
+            "name": "A String", # Name of this city.
+            "countryCode": "A String", # Country code of the country to which this city belongs.
+            "metroCode": "A String", # Metro region code of the metro region (DMA) to which this city belongs.
+            "regionCode": "A String", # Region code of the region to which this city belongs.
+            "metroDmaId": "A String", # ID of the metro region (DMA) to which this city belongs.
+            "dartId": "A String", # DART ID of this city. This is the ID used for targeting and generating reports.
+            "regionDartId": "A String", # DART ID of the region to which this city belongs.
+          },
+        ],
+        "metros": [ # Metros to be targeted. For each metro only dmaId is required. The other fields are populated automatically when the ad is inserted or updated. If targeting a metro, do not target or exclude the country of the metro.
+          { # Contains information about a metro region that can be targeted by ads.
+            "kind": "dfareporting#metro", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#metro".
+            "countryDartId": "A String", # DART ID of the country to which this metro region belongs.
+            "name": "A String", # Name of this metro region.
+            "countryCode": "A String", # Country code of the country to which this metro region belongs.
+            "metroCode": "A String", # Metro code of this metro region. This is equivalent to dma_id.
+            "dmaId": "A String", # DMA ID of this metro region. This is the ID used for targeting and generating reports, and is equivalent to metro_code.
+            "dartId": "A String", # DART ID of this metro region.
+          },
+        ],
+      },
+      "creativeGroupAssignments": [ # Creative group assignments for this ad. Applicable when type is AD_SERVING_CLICK_TRACKER. Only one assignment per creative group number is allowed for a maximum of two assignments.
+        { # Creative Group Assignment.
+          "creativeGroupNumber": "A String", # Creative group number of the creative group assignment.
+          "creativeGroupId": "A String", # ID of the creative group to be assigned.
+        },
+      ],
+      "deliverySchedule": { # Delivery Schedule. # Delivery schedule information for this ad. Applicable when type is AD_SERVING_STANDARD_AD or AD_SERVING_TRACKING. This field along with subfields priority and impressionRatio are required on insertion when type is AD_SERVING_STANDARD_AD.
+        "priority": "A String", # Serving priority of an ad, with respect to other ads. The lower the priority number, the greater the priority with which it is served.
+        "hardCutoff": True or False, # Whether or not hard cutoff is enabled. If true, the ad will not serve after the end date and time. Otherwise the ad will continue to be served until it has reached its delivery goals.
+        "frequencyCap": { # Frequency Cap. # Limit on the number of times an individual user can be served the ad within a specified period of time.
+          "duration": "A String", # Duration of time, in seconds, for this frequency cap. The maximum duration is 90 days in seconds, or 7,776,000.
+          "impressions": "A String", # Number of times an individual user can be served the ad within the specified duration. The maximum allowed is 15.
+        },
+        "impressionRatio": "A String", # Impression ratio for this ad. This ratio determines how often each ad is served relative to the others. For example, if ad A has an impression ratio of 1 and ad B has an impression ratio of 3, then DCM will serve ad B three times as often as ad A. Must be between 1 and 10.
+      },
+      "advertiserIdDimensionValue": { # Represents a DimensionValue resource. # Dimension value for the ID of the advertiser. This is a read-only, auto-generated field.
+        "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+        "value": "A String", # The value of the dimension.
+        "dimensionName": "A String", # The name of the dimension.
+        "etag": "A String", # The eTag of this response for caching purposes.
+        "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+        "id": "A String", # The ID associated with the value if available.
+      },
+      "eventTagOverrides": [ # Event tag overrides for this ad.
+        { # Event tag override information.
+          "enabled": True or False, # Whether this override is enabled.
+          "id": "A String", # ID of this event tag override. This is a read-only, auto-generated field.
+        },
+      ],
+      "id": "A String", # ID of this ad. This is a read-only, auto-generated field.
+      "accountId": "A String", # Account ID of this ad. This is a read-only field that can be left blank.
+      "archived": True or False, # Whether this ad is archived. When true, active must be false.
+      "targetingTemplateId": "A String", # Targeting template ID, used to apply preconfigured targeting information to this ad. This cannot be set while any of dayPartTargeting, geoTargeting, keyValueTargetingExpression, languageTargeting, remarketingListExpression, or technologyTargeting are set. Applicable when type is AD_SERVING_STANDARD_AD.
+      "technologyTargeting": { # Technology Targeting. # Technology platform targeting information for this ad. This field must be left blank if the ad is using a targeting template. Applicable when type is AD_SERVING_STANDARD_AD.
+        "platformTypes": [ # Platform types that this ad targets. For example, desktop, mobile, or tablet. For each platform type, only id is required, and the other fields are populated automatically when the ad is inserted or updated.
+          { # Contains information about a platform type that can be targeted by ads.
+            "kind": "dfareporting#platformType", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#platformType".
+            "id": "A String", # ID of this platform type.
+            "name": "A String", # Name of this platform type.
+          },
+        ],
+        "operatingSystemVersions": [ # Operating system versions that this ad targets. To target all versions, use operatingSystems. For each operating system version, only id is required. The other fields are populated automatically when the ad is inserted or updated. If targeting an operating system version, do not set targeting for the corresponding operating system in operatingSystems.
+          { # Contains information about a particular version of an operating system that can be targeted by ads.
+            "majorVersion": "A String", # Major version (leftmost number) of this operating system version.
+            "kind": "dfareporting#operatingSystemVersion", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#operatingSystemVersion".
+            "name": "A String", # Name of this operating system version.
+            "id": "A String", # ID of this operating system version.
+            "operatingSystem": { # Contains information about an operating system that can be targeted by ads. # Operating system of this operating system version.
+              "mobile": True or False, # Whether this operating system is for mobile.
+              "dartId": "A String", # DART ID of this operating system. This is the ID used for targeting.
+              "kind": "dfareporting#operatingSystem", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#operatingSystem".
+              "name": "A String", # Name of this operating system.
+              "desktop": True or False, # Whether this operating system is for desktop.
+            },
+            "minorVersion": "A String", # Minor version (number after the first dot) of this operating system version.
+          },
+        ],
+        "browsers": [ # Browsers that this ad targets. For each browser either set browserVersionId or dartId along with the version numbers. If both are specified, only browserVersionId will be used. The other fields are populated automatically when the ad is inserted or updated.
+          { # Contains information about a browser that can be targeted by ads.
+            "majorVersion": "A String", # Major version number (leftmost number) of this browser. For example, for Chrome 5.0.376.86 beta, this field should be set to 5. An asterisk (*) may be used to target any version number, and a question mark (?) may be used to target cases where the version number cannot be identified. For example, Chrome *.* targets any version of Chrome: 1.2, 2.5, 3.5, and so on. Chrome 3.* targets Chrome 3.1, 3.5, but not 4.0. Firefox ?.? targets cases where the ad server knows the browser is Firefox but can't tell which version it is.
+            "kind": "dfareporting#browser", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#browser".
+            "name": "A String", # Name of this browser.
+            "browserVersionId": "A String", # ID referring to this grouping of browser and version numbers. This is the ID used for targeting.
+            "dartId": "A String", # DART ID of this browser. This is the ID used when generating reports.
+            "minorVersion": "A String", # Minor version number (number after first dot on left) of this browser. For example, for Chrome 5.0.375.86 beta, this field should be set to 0. An asterisk (*) may be used to target any version number, and a question mark (?) may be used to target cases where the version number cannot be identified. For example, Chrome *.* targets any version of Chrome: 1.2, 2.5, 3.5, and so on. Chrome 3.* targets Chrome 3.1, 3.5, but not 4.0. Firefox ?.? targets cases where the ad server knows the browser is Firefox but can't tell which version it is.
+          },
+        ],
+        "operatingSystems": [ # Operating systems that this ad targets. To target specific versions, use operatingSystemVersions. For each operating system only dartId is required. The other fields are populated automatically when the ad is inserted or updated. If targeting an operating system, do not set targeting for operating system versions for the same operating system.
+          { # Contains information about an operating system that can be targeted by ads.
+            "mobile": True or False, # Whether this operating system is for mobile.
+            "dartId": "A String", # DART ID of this operating system. This is the ID used for targeting.
+            "kind": "dfareporting#operatingSystem", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#operatingSystem".
+            "name": "A String", # Name of this operating system.
+            "desktop": True or False, # Whether this operating system is for desktop.
+          },
+        ],
+        "mobileCarriers": [ # Mobile carriers that this ad targets. For each mobile carrier only id is required, and the other fields are populated automatically when the ad is inserted or updated. If targeting a mobile carrier, do not set targeting for any zip codes.
+          { # Contains information about a mobile carrier that can be targeted by ads.
+            "kind": "dfareporting#mobileCarrier", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#mobileCarrier".
+            "countryDartId": "A String", # DART ID of the country to which this mobile carrier belongs.
+            "id": "A String", # ID of this mobile carrier.
+            "countryCode": "A String", # Country code of the country to which this mobile carrier belongs.
+            "name": "A String", # Name of this mobile carrier.
+          },
+        ],
+        "connectionTypes": [ # Connection types that this ad targets. For each connection type only id is required. The other fields are populated automatically when the ad is inserted or updated.
+          { # Contains information about an internet connection type that can be targeted by ads. Clients can use the connection type to target mobile vs. broadband users.
+            "kind": "dfareporting#connectionType", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#connectionType".
+            "id": "A String", # ID of this connection type.
+            "name": "A String", # Name of this connection type.
+          },
+        ],
+      },
+      "creativeRotation": { # Creative Rotation. # Creative rotation for this ad. Applicable when type is AD_SERVING_DEFAULT_AD, AD_SERVING_STANDARD_AD, or AD_SERVING_TRACKING. When type is AD_SERVING_DEFAULT_AD, this field should have exactly one creativeAssignment.
+        "creativeAssignments": [ # Creative assignments in this creative rotation.
+          { # Creative Assignment.
+            "weight": 42, # Weight of the creative assignment, applicable when the rotation type is CREATIVE_ROTATION_TYPE_RANDOM.
+            "sequence": 42, # Sequence number of the creative assignment, applicable when the rotation type is CREATIVE_ROTATION_TYPE_SEQUENTIAL.
+            "applyEventTags": True or False, # Whether applicable event tags should fire when this creative assignment is rendered. If this value is unset when the ad is inserted or updated, it will default to true for all creative types EXCEPT for INTERNAL_REDIRECT, INTERSTITIAL_INTERNAL_REDIRECT, and INSTREAM_VIDEO.
+            "richMediaExitOverrides": [ # Rich media exit overrides for this creative assignment.
+                # Applicable when the creative type is any of the following:
+                # - RICH_MEDIA_INPAGE
+                # - RICH_MEDIA_INPAGE_FLOATING
+                # - RICH_MEDIA_IM_EXPAND
+                # - RICH_MEDIA_EXPANDING
+                # - RICH_MEDIA_INTERSTITIAL_FLOAT
+                # - RICH_MEDIA_MOBILE_IN_APP
+                # - RICH_MEDIA_MULTI_FLOATING
+                # - RICH_MEDIA_PEEL_DOWN
+                # - ADVANCED_BANNER
+                # - VPAID_LINEAR
+                # - VPAID_NON_LINEAR
+              { # Rich Media Exit Override.
+                "clickThroughUrl": { # Click-through URL # Click-through URL of this rich media exit override. Applicable if the enabled field is set to true.
+                  "computedClickThroughUrl": "A String", # Read-only convenience field representing the actual URL that will be used for this click-through. The URL is computed as follows:
+                      # - If defaultLandingPage is enabled then the campaign's default landing page URL is assigned to this field.
+                      # - If defaultLandingPage is not enabled and a landingPageId is specified then that landing page's URL is assigned to this field.
+                      # - If neither of the above cases apply, then the customClickThroughUrl is assigned to this field.
+                  "customClickThroughUrl": "A String", # Custom click-through URL. Applicable if the defaultLandingPage field is set to false and the landingPageId field is left unset.
+                  "landingPageId": "A String", # ID of the landing page for the click-through URL. Applicable if the defaultLandingPage field is set to false.
+                  "defaultLandingPage": True or False, # Whether the campaign default landing page is used.
+                },
+                "enabled": True or False, # Whether to use the clickThroughUrl. If false, the creative-level exit will be used.
+                "exitId": "A String", # ID for the override to refer to a specific exit in the creative.
+              },
+            ],
+            "sslCompliant": True or False, # Whether the creative to be assigned is SSL-compliant. This is a read-only field that is auto-generated when the ad is inserted or updated.
+            "creativeGroupAssignments": [ # Creative group assignments for this creative assignment. Only one assignment per creative group number is allowed for a maximum of two assignments.
+              { # Creative Group Assignment.
+                "creativeGroupNumber": "A String", # Creative group number of the creative group assignment.
+                "creativeGroupId": "A String", # ID of the creative group to be assigned.
+              },
+            ],
+            "companionCreativeOverrides": [ # Companion creative overrides for this creative assignment. Applicable to video ads.
+              { # Companion Click-through override.
+                "clickThroughUrl": { # Click-through URL # Click-through URL of this companion click-through override.
+                  "computedClickThroughUrl": "A String", # Read-only convenience field representing the actual URL that will be used for this click-through. The URL is computed as follows:
+                      # - If defaultLandingPage is enabled then the campaign's default landing page URL is assigned to this field.
+                      # - If defaultLandingPage is not enabled and a landingPageId is specified then that landing page's URL is assigned to this field.
+                      # - If neither of the above cases apply, then the customClickThroughUrl is assigned to this field.
+                  "customClickThroughUrl": "A String", # Custom click-through URL. Applicable if the defaultLandingPage field is set to false and the landingPageId field is left unset.
+                  "landingPageId": "A String", # ID of the landing page for the click-through URL. Applicable if the defaultLandingPage field is set to false.
+                  "defaultLandingPage": True or False, # Whether the campaign default landing page is used.
+                },
+                "creativeId": "A String", # ID of the creative for this companion click-through override.
+              },
+            ],
+            "startTime": "A String", # Date and time that the assigned creative should start serving.
+            "clickThroughUrl": { # Click-through URL # Click-through URL of the creative assignment.
+              "computedClickThroughUrl": "A String", # Read-only convenience field representing the actual URL that will be used for this click-through. The URL is computed as follows:
+                  # - If defaultLandingPage is enabled then the campaign's default landing page URL is assigned to this field.
+                  # - If defaultLandingPage is not enabled and a landingPageId is specified then that landing page's URL is assigned to this field.
+                  # - If neither of the above cases apply, then the customClickThroughUrl is assigned to this field.
+              "customClickThroughUrl": "A String", # Custom click-through URL. Applicable if the defaultLandingPage field is set to false and the landingPageId field is left unset.
+              "landingPageId": "A String", # ID of the landing page for the click-through URL. Applicable if the defaultLandingPage field is set to false.
+              "defaultLandingPage": True or False, # Whether the campaign default landing page is used.
+            },
+            "active": True or False, # Whether this creative assignment is active. When true, the creative will be included in the ad's rotation.
+            "creativeId": "A String", # ID of the creative to be assigned. This is a required field.
+            "endTime": "A String", # Date and time that the assigned creative should stop serving. Must be later than the start time.
+            "creativeIdDimensionValue": { # Represents a DimensionValue resource. # Dimension value for the ID of the creative. This is a read-only, auto-generated field.
+              "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+              "value": "A String", # The value of the dimension.
+              "dimensionName": "A String", # The name of the dimension.
+              "etag": "A String", # The eTag of this response for caching purposes.
+              "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+              "id": "A String", # The ID associated with the value if available.
+            },
+          },
+        ],
+        "weightCalculationStrategy": "A String", # Strategy for calculating weights. Used with CREATIVE_ROTATION_TYPE_RANDOM.
+        "creativeOptimizationConfigurationId": "A String", # Creative optimization configuration that is used by this ad. It should refer to one of the existing optimization configurations in the ad's campaign. If it is unset or set to 0, then the campaign's default optimization configuration will be used for this ad.
+        "type": "A String", # Type of creative rotation. Can be used to specify whether to use sequential or random rotation.
+      },
+      "clickThroughUrl": { # Click-through URL # Click-through URL for this ad. This is a required field on insertion. Applicable when type is AD_SERVING_CLICK_TRACKER.
+        "computedClickThroughUrl": "A String", # Read-only convenience field representing the actual URL that will be used for this click-through. The URL is computed as follows:
+            # - If defaultLandingPage is enabled then the campaign's default landing page URL is assigned to this field.
+            # - If defaultLandingPage is not enabled and a landingPageId is specified then that landing page's URL is assigned to this field.
+            # - If neither of the above cases apply, then the customClickThroughUrl is assigned to this field.
+        "customClickThroughUrl": "A String", # Custom click-through URL. Applicable if the defaultLandingPage field is set to false and the landingPageId field is left unset.
+        "landingPageId": "A String", # ID of the landing page for the click-through URL. Applicable if the defaultLandingPage field is set to false.
+        "defaultLandingPage": True or False, # Whether the campaign default landing page is used.
+      },
+      "comments": "A String", # Comments for this ad.
+      "remarketingListExpression": { # Remarketing List Targeting Expression. # Remarketing list targeting expression for this ad. This field must be left blank if the ad is using a targeting template. Applicable when type is AD_SERVING_STANDARD_AD.
+        "expression": "A String", # Expression describing which lists are being targeted by the ad.
+      },
+      "idDimensionValue": { # Represents a DimensionValue resource. # Dimension value for the ID of this ad. This is a read-only, auto-generated field.
+        "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+        "value": "A String", # The value of the dimension.
+        "dimensionName": "A String", # The name of the dimension.
+        "etag": "A String", # The eTag of this response for caching purposes.
+        "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+        "id": "A String", # The ID associated with the value if available.
+      },
+      "size": { # Represents the dimensions of ads, placements, creatives, or creative assets. # Size of this ad. Applicable when type is AD_SERVING_DEFAULT_AD.
+        "width": 42, # Width of this size.
+        "kind": "dfareporting#size", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#size".
+        "iab": True or False, # IAB standard size. This is a read-only, auto-generated field.
+        "id": "A String", # ID of this size. This is a read-only, auto-generated field.
+        "height": 42, # Height of this size.
+      },
+      "type": "A String", # Type of ad. This is a required field on insertion. Note that default ads (AD_SERVING_DEFAULT_AD) cannot be created directly (see Creative resource).
+      "sslRequired": True or False, # Whether this ad requires ssl. This is a read-only field that is auto-generated when the ad is inserted or updated.
+      "audienceSegmentId": "A String", # Audience segment ID that is being targeted for this ad. Applicable when type is AD_SERVING_STANDARD_AD.
+      "keyValueTargetingExpression": { # Key Value Targeting Expression. # Key-value targeting information for this ad. This field must be left blank if the ad is using a targeting template. Applicable when type is AD_SERVING_STANDARD_AD.
+        "expression": "A String", # Keyword expression being targeted by the ad.
+      },
+      "campaignIdDimensionValue": { # Represents a DimensionValue resource. # Dimension value for the ID of the campaign. This is a read-only, auto-generated field.
+        "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+        "value": "A String", # The value of the dimension.
+        "dimensionName": "A String", # The name of the dimension.
+        "etag": "A String", # The eTag of this response for caching purposes.
+        "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+        "id": "A String", # The ID associated with the value if available.
+      },
+      "defaultClickThroughEventTagProperties": { # Properties of inheriting and overriding the default click-through event tag. A campaign may override the event tag defined at the advertiser level, and an ad may also override the campaign's setting further. # Default click-through event tag properties for this ad.
+        "overrideInheritedEventTag": True or False, # Whether this entity should override the inherited default click-through event tag with its own defined value.
+        "defaultClickThroughEventTagId": "A String", # ID of the click-through event tag to apply to all ads in this entity's scope.
+      },
+      "createInfo": { # Modification timestamp. # Information about the creation of this ad. This is a read-only field.
+        "time": "A String", # Timestamp of the last change in milliseconds since epoch.
+      },
+      "startTime": "A String", # Date and time that this ad should start serving. If creating an ad, this field must be a time in the future. This is a required field on insertion.
+      "active": True or False, # Whether this ad is active. When true, archived must be false.
+      "compatibility": "A String", # Compatibility of this ad. Applicable when type is AD_SERVING_DEFAULT_AD. DISPLAY and DISPLAY_INTERSTITIAL refer to either rendering on desktop or on mobile devices or in mobile apps for regular or interstitial ads, respectively. APP and APP_INTERSTITIAL are only used for existing default ads. New mobile placements must be assigned DISPLAY or DISPLAY_INTERSTITIAL and default ads created for those placements will be limited to those compatibility types. IN_STREAM_VIDEO refers to rendering in-stream video ads developed with the VAST standard.
+      "kind": "dfareporting#ad", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#ad".
+      "subaccountId": "A String", # Subaccount ID of this ad. This is a read-only field that can be left blank.
+      "name": "A String", # Name of this ad. This is a required field and must be less than 256 characters long.
+      "dayPartTargeting": { # Day Part Targeting. # Time and day targeting information for this ad. This field must be left blank if the ad is using a targeting template. Applicable when type is AD_SERVING_STANDARD_AD.
+        "userLocalTime": True or False, # Whether or not to use the user's local time. If false, the America/New York time zone applies.
+        "hoursOfDay": [ # Hours of the day when the ad will serve. Must be an integer between 0 and 23 (inclusive), where 0 is midnight to 1 AM, and 23 is 11 PM to midnight. Can be specified with days of week, in which case the ad would serve during these hours on the specified days. For example, if Monday, Wednesday, Friday are the days of week specified and 9-10am, 3-5pm (hours 9, 15, and 16) is specified, the ad would serve Monday, Wednesdays, and Fridays at 9-10am and 3-5pm.
+          42,
+        ],
+        "daysOfWeek": [ # Days of the week when the ad will serve.
+            #
+            # Acceptable values are:
+            # - "SUNDAY"
+            # - "MONDAY"
+            # - "TUESDAY"
+            # - "WEDNESDAY"
+            # - "THURSDAY"
+            # - "FRIDAY"
+            # - "SATURDAY"
+          "A String",
+        ],
+      },
+      "lastModifiedInfo": { # Modification timestamp. # Information about the most recent modification of this ad. This is a read-only field.
+        "time": "A String", # Timestamp of the last change in milliseconds since epoch.
+      },
+      "sslCompliant": True or False, # Whether this ad is ssl compliant. This is a read-only field that is auto-generated when the ad is inserted or updated.
+      "placementAssignments": [ # Placement assignments for this ad.
+        { # Placement Assignment.
+          "active": True or False, # Whether this placement assignment is active. When true, the placement will be included in the ad's rotation.
+          "placementIdDimensionValue": { # Represents a DimensionValue resource. # Dimension value for the ID of the placement. This is a read-only, auto-generated field.
+            "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+            "value": "A String", # The value of the dimension.
+            "dimensionName": "A String", # The name of the dimension.
+            "etag": "A String", # The eTag of this response for caching purposes.
+            "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+            "id": "A String", # The ID associated with the value if available.
+          },
+          "placementId": "A String", # ID of the placement to be assigned. This is a required field.
+          "sslRequired": True or False, # Whether the placement to be assigned requires SSL. This is a read-only field that is auto-generated when the ad is inserted or updated.
+        },
+      ],
+      "endTime": "A String", # Date and time that this ad should stop serving. Must be later than the start time. This is a required field on insertion.
+      "dynamicClickTracker": True or False, # Whether this ad is a dynamic click tracker. Applicable when type is AD_SERVING_CLICK_TRACKER. This is a required field on insert, and is read-only after insert.
+    }</pre>
+</div>
+
+</body></html>
\ No newline at end of file
diff --git a/docs/dyn/dfareporting_v2_7.advertiserGroups.html b/docs/dyn/dfareporting_v2_7.advertiserGroups.html
new file mode 100644
index 0000000..a2cdfd5
--- /dev/null
+++ b/docs/dyn/dfareporting_v2_7.advertiserGroups.html
@@ -0,0 +1,263 @@
+<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="dfareporting_v2_7.html">DCM/DFA Reporting And Trafficking API</a> . <a href="dfareporting_v2_7.advertiserGroups.html">advertiserGroups</a></h1>
+<h2>Instance Methods</h2>
+<p class="toc_element">
+  <code><a href="#delete">delete(profileId, id)</a></code></p>
+<p class="firstline">Deletes an existing advertiser group.</p>
+<p class="toc_element">
+  <code><a href="#get">get(profileId, id)</a></code></p>
+<p class="firstline">Gets one advertiser group by ID.</p>
+<p class="toc_element">
+  <code><a href="#insert">insert(profileId, body)</a></code></p>
+<p class="firstline">Inserts a new advertiser group.</p>
+<p class="toc_element">
+  <code><a href="#list">list(profileId, searchString=None, pageToken=None, sortField=None, ids=None, maxResults=None, sortOrder=None)</a></code></p>
+<p class="firstline">Retrieves a list of advertiser groups, possibly filtered. This method supports paging.</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="#patch">patch(profileId, id, body)</a></code></p>
+<p class="firstline">Updates an existing advertiser group. This method supports patch semantics.</p>
+<p class="toc_element">
+  <code><a href="#update">update(profileId, body)</a></code></p>
+<p class="firstline">Updates an existing advertiser group.</p>
+<h3>Method Details</h3>
+<div class="method">
+    <code class="details" id="delete">delete(profileId, id)</code>
+  <pre>Deletes an existing advertiser group.
+
+Args:
+  profileId: string, User profile ID associated with this request. (required)
+  id: string, Advertiser group ID. (required)
+</pre>
+</div>
+
+<div class="method">
+    <code class="details" id="get">get(profileId, id)</code>
+  <pre>Gets one advertiser group by ID.
+
+Args:
+  profileId: string, User profile ID associated with this request. (required)
+  id: string, Advertiser group ID. (required)
+
+Returns:
+  An object of the form:
+
+    { # Groups advertisers together so that reports can be generated for the entire group at once.
+      "kind": "dfareporting#advertiserGroup", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#advertiserGroup".
+      "id": "A String", # ID of this advertiser group. This is a read-only, auto-generated field.
+      "name": "A String", # Name of this advertiser group. This is a required field and must be less than 256 characters long and unique among advertiser groups of the same account.
+      "accountId": "A String", # Account ID of this advertiser group. This is a read-only field that can be left blank.
+    }</pre>
+</div>
+
+<div class="method">
+    <code class="details" id="insert">insert(profileId, body)</code>
+  <pre>Inserts a new advertiser group.
+
+Args:
+  profileId: string, User profile ID associated with this request. (required)
+  body: object, The request body. (required)
+    The object takes the form of:
+
+{ # Groups advertisers together so that reports can be generated for the entire group at once.
+    "kind": "dfareporting#advertiserGroup", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#advertiserGroup".
+    "id": "A String", # ID of this advertiser group. This is a read-only, auto-generated field.
+    "name": "A String", # Name of this advertiser group. This is a required field and must be less than 256 characters long and unique among advertiser groups of the same account.
+    "accountId": "A String", # Account ID of this advertiser group. This is a read-only field that can be left blank.
+  }
+
+
+Returns:
+  An object of the form:
+
+    { # Groups advertisers together so that reports can be generated for the entire group at once.
+      "kind": "dfareporting#advertiserGroup", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#advertiserGroup".
+      "id": "A String", # ID of this advertiser group. This is a read-only, auto-generated field.
+      "name": "A String", # Name of this advertiser group. This is a required field and must be less than 256 characters long and unique among advertiser groups of the same account.
+      "accountId": "A String", # Account ID of this advertiser group. This is a read-only field that can be left blank.
+    }</pre>
+</div>
+
+<div class="method">
+    <code class="details" id="list">list(profileId, searchString=None, pageToken=None, sortField=None, ids=None, maxResults=None, sortOrder=None)</code>
+  <pre>Retrieves a list of advertiser groups, possibly filtered. This method supports paging.
+
+Args:
+  profileId: string, User profile ID associated with this request. (required)
+  searchString: string, Allows searching for objects by name or ID. Wildcards (*) are allowed. For example, "advertiser*2015" will return objects with names like "advertiser group June 2015", "advertiser group April 2015", or simply "advertiser group 2015". Most of the searches also add wildcards implicitly at the start and the end of the search string. For example, a search string of "advertisergroup" will match objects with name "my advertisergroup", "advertisergroup 2015", or simply "advertisergroup".
+  pageToken: string, Value of the nextPageToken from the previous result page.
+  sortField: string, Field by which to sort the list.
+    Allowed values
+      ID - 
+      NAME - 
+  ids: string, Select only advertiser groups with these IDs. (repeated)
+  maxResults: integer, Maximum number of results to return.
+  sortOrder: string, Order of sorted results, default is ASCENDING.
+    Allowed values
+      ASCENDING - 
+      DESCENDING - 
+
+Returns:
+  An object of the form:
+
+    { # Advertiser Group List Response
+    "nextPageToken": "A String", # Pagination token to be used for the next list operation.
+    "kind": "dfareporting#advertiserGroupsListResponse", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#advertiserGroupsListResponse".
+    "advertiserGroups": [ # Advertiser group collection.
+      { # Groups advertisers together so that reports can be generated for the entire group at once.
+          "kind": "dfareporting#advertiserGroup", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#advertiserGroup".
+          "id": "A String", # ID of this advertiser group. This is a read-only, auto-generated field.
+          "name": "A String", # Name of this advertiser group. This is a required field and must be less than 256 characters long and unique among advertiser groups of the same account.
+          "accountId": "A String", # Account ID of this advertiser group. This is a read-only field that can be left blank.
+        },
+    ],
+  }</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="patch">patch(profileId, id, body)</code>
+  <pre>Updates an existing advertiser group. This method supports patch semantics.
+
+Args:
+  profileId: string, User profile ID associated with this request. (required)
+  id: string, Advertiser group ID. (required)
+  body: object, The request body. (required)
+    The object takes the form of:
+
+{ # Groups advertisers together so that reports can be generated for the entire group at once.
+    "kind": "dfareporting#advertiserGroup", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#advertiserGroup".
+    "id": "A String", # ID of this advertiser group. This is a read-only, auto-generated field.
+    "name": "A String", # Name of this advertiser group. This is a required field and must be less than 256 characters long and unique among advertiser groups of the same account.
+    "accountId": "A String", # Account ID of this advertiser group. This is a read-only field that can be left blank.
+  }
+
+
+Returns:
+  An object of the form:
+
+    { # Groups advertisers together so that reports can be generated for the entire group at once.
+      "kind": "dfareporting#advertiserGroup", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#advertiserGroup".
+      "id": "A String", # ID of this advertiser group. This is a read-only, auto-generated field.
+      "name": "A String", # Name of this advertiser group. This is a required field and must be less than 256 characters long and unique among advertiser groups of the same account.
+      "accountId": "A String", # Account ID of this advertiser group. This is a read-only field that can be left blank.
+    }</pre>
+</div>
+
+<div class="method">
+    <code class="details" id="update">update(profileId, body)</code>
+  <pre>Updates an existing advertiser group.
+
+Args:
+  profileId: string, User profile ID associated with this request. (required)
+  body: object, The request body. (required)
+    The object takes the form of:
+
+{ # Groups advertisers together so that reports can be generated for the entire group at once.
+    "kind": "dfareporting#advertiserGroup", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#advertiserGroup".
+    "id": "A String", # ID of this advertiser group. This is a read-only, auto-generated field.
+    "name": "A String", # Name of this advertiser group. This is a required field and must be less than 256 characters long and unique among advertiser groups of the same account.
+    "accountId": "A String", # Account ID of this advertiser group. This is a read-only field that can be left blank.
+  }
+
+
+Returns:
+  An object of the form:
+
+    { # Groups advertisers together so that reports can be generated for the entire group at once.
+      "kind": "dfareporting#advertiserGroup", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#advertiserGroup".
+      "id": "A String", # ID of this advertiser group. This is a read-only, auto-generated field.
+      "name": "A String", # Name of this advertiser group. This is a required field and must be less than 256 characters long and unique among advertiser groups of the same account.
+      "accountId": "A String", # Account ID of this advertiser group. This is a read-only field that can be left blank.
+    }</pre>
+</div>
+
+</body></html>
\ No newline at end of file
diff --git a/docs/dyn/dfareporting_v2_7.advertisers.html b/docs/dyn/dfareporting_v2_7.advertisers.html
new file mode 100644
index 0000000..d2ebd1d
--- /dev/null
+++ b/docs/dyn/dfareporting_v2_7.advertisers.html
@@ -0,0 +1,475 @@
+<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="dfareporting_v2_7.html">DCM/DFA Reporting And Trafficking API</a> . <a href="dfareporting_v2_7.advertisers.html">advertisers</a></h1>
+<h2>Instance Methods</h2>
+<p class="toc_element">
+  <code><a href="#get">get(profileId, id)</a></code></p>
+<p class="firstline">Gets one advertiser by ID.</p>
+<p class="toc_element">
+  <code><a href="#insert">insert(profileId, body)</a></code></p>
+<p class="firstline">Inserts a new advertiser.</p>
+<p class="toc_element">
+  <code><a href="#list">list(profileId, includeAdvertisersWithoutGroupsOnly=None, onlyParent=None, pageToken=None, sortOrder=None, status=None, maxResults=None, advertiserGroupIds=None, searchString=None, subaccountId=None, ids=None, floodlightConfigurationIds=None, sortField=None)</a></code></p>
+<p class="firstline">Retrieves a list of advertisers, possibly filtered. This method supports paging.</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="#patch">patch(profileId, id, body)</a></code></p>
+<p class="firstline">Updates an existing advertiser. This method supports patch semantics.</p>
+<p class="toc_element">
+  <code><a href="#update">update(profileId, body)</a></code></p>
+<p class="firstline">Updates an existing advertiser.</p>
+<h3>Method Details</h3>
+<div class="method">
+    <code class="details" id="get">get(profileId, id)</code>
+  <pre>Gets one advertiser by ID.
+
+Args:
+  profileId: string, User profile ID associated with this request. (required)
+  id: string, Advertiser ID. (required)
+
+Returns:
+  An object of the form:
+
+    { # Contains properties of a DCM advertiser.
+      "status": "A String", # Status of this advertiser.
+      "kind": "dfareporting#advertiser", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#advertiser".
+      "subaccountId": "A String", # Subaccount ID of this advertiser.This is a read-only field that can be left blank.
+      "name": "A String", # Name of this advertiser. This is a required field and must be less than 256 characters long and unique among advertisers of the same account.
+      "defaultClickThroughEventTagId": "A String", # ID of the click-through event tag to apply by default to the landing pages of this advertiser's campaigns.
+      "originalFloodlightConfigurationId": "A String", # Original floodlight configuration before any sharing occurred. Set the floodlightConfigurationId of this advertiser to originalFloodlightConfigurationId to unshare the advertiser's current floodlight configuration. You cannot unshare an advertiser's floodlight configuration if the shared configuration has activities associated with any campaign or placement.
+      "clickThroughUrlSuffix": "A String", # Suffix added to click-through URL of ad creative associations under this advertiser. Must be less than 129 characters long.
+      "floodlightConfigurationId": "A String", # Floodlight configuration ID of this advertiser. The floodlight configuration ID will be created automatically, so on insert this field should be left blank. This field can be set to another advertiser's floodlight configuration ID in order to share that advertiser's floodlight configuration with this advertiser, so long as:
+          # - This advertiser's original floodlight configuration is not already associated with floodlight activities or floodlight activity groups.
+          # - This advertiser's original floodlight configuration is not already shared with another advertiser.
+      "suspended": True or False, # Suspension status of this advertiser.
+      "floodlightConfigurationIdDimensionValue": { # Represents a DimensionValue resource. # Dimension value for the ID of the floodlight configuration. This is a read-only, auto-generated field.
+        "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+        "value": "A String", # The value of the dimension.
+        "dimensionName": "A String", # The name of the dimension.
+        "etag": "A String", # The eTag of this response for caching purposes.
+        "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+        "id": "A String", # The ID associated with the value if available.
+      },
+      "advertiserGroupId": "A String", # ID of the advertiser group this advertiser belongs to. You can group advertisers for reporting purposes, allowing you to see aggregated information for all advertisers in each group.
+      "idDimensionValue": { # Represents a DimensionValue resource. # Dimension value for the ID of this advertiser. This is a read-only, auto-generated field.
+        "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+        "value": "A String", # The value of the dimension.
+        "dimensionName": "A String", # The name of the dimension.
+        "etag": "A String", # The eTag of this response for caching purposes.
+        "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+        "id": "A String", # The ID associated with the value if available.
+      },
+      "defaultEmail": "A String", # Default email address used in sender field for tag emails.
+      "id": "A String", # ID of this advertiser. This is a read-only, auto-generated field.
+      "accountId": "A String", # Account ID of this advertiser.This is a read-only field that can be left blank.
+    }</pre>
+</div>
+
+<div class="method">
+    <code class="details" id="insert">insert(profileId, body)</code>
+  <pre>Inserts a new advertiser.
+
+Args:
+  profileId: string, User profile ID associated with this request. (required)
+  body: object, The request body. (required)
+    The object takes the form of:
+
+{ # Contains properties of a DCM advertiser.
+    "status": "A String", # Status of this advertiser.
+    "kind": "dfareporting#advertiser", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#advertiser".
+    "subaccountId": "A String", # Subaccount ID of this advertiser.This is a read-only field that can be left blank.
+    "name": "A String", # Name of this advertiser. This is a required field and must be less than 256 characters long and unique among advertisers of the same account.
+    "defaultClickThroughEventTagId": "A String", # ID of the click-through event tag to apply by default to the landing pages of this advertiser's campaigns.
+    "originalFloodlightConfigurationId": "A String", # Original floodlight configuration before any sharing occurred. Set the floodlightConfigurationId of this advertiser to originalFloodlightConfigurationId to unshare the advertiser's current floodlight configuration. You cannot unshare an advertiser's floodlight configuration if the shared configuration has activities associated with any campaign or placement.
+    "clickThroughUrlSuffix": "A String", # Suffix added to click-through URL of ad creative associations under this advertiser. Must be less than 129 characters long.
+    "floodlightConfigurationId": "A String", # Floodlight configuration ID of this advertiser. The floodlight configuration ID will be created automatically, so on insert this field should be left blank. This field can be set to another advertiser's floodlight configuration ID in order to share that advertiser's floodlight configuration with this advertiser, so long as:
+        # - This advertiser's original floodlight configuration is not already associated with floodlight activities or floodlight activity groups.
+        # - This advertiser's original floodlight configuration is not already shared with another advertiser.
+    "suspended": True or False, # Suspension status of this advertiser.
+    "floodlightConfigurationIdDimensionValue": { # Represents a DimensionValue resource. # Dimension value for the ID of the floodlight configuration. This is a read-only, auto-generated field.
+      "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+      "value": "A String", # The value of the dimension.
+      "dimensionName": "A String", # The name of the dimension.
+      "etag": "A String", # The eTag of this response for caching purposes.
+      "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+      "id": "A String", # The ID associated with the value if available.
+    },
+    "advertiserGroupId": "A String", # ID of the advertiser group this advertiser belongs to. You can group advertisers for reporting purposes, allowing you to see aggregated information for all advertisers in each group.
+    "idDimensionValue": { # Represents a DimensionValue resource. # Dimension value for the ID of this advertiser. This is a read-only, auto-generated field.
+      "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+      "value": "A String", # The value of the dimension.
+      "dimensionName": "A String", # The name of the dimension.
+      "etag": "A String", # The eTag of this response for caching purposes.
+      "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+      "id": "A String", # The ID associated with the value if available.
+    },
+    "defaultEmail": "A String", # Default email address used in sender field for tag emails.
+    "id": "A String", # ID of this advertiser. This is a read-only, auto-generated field.
+    "accountId": "A String", # Account ID of this advertiser.This is a read-only field that can be left blank.
+  }
+
+
+Returns:
+  An object of the form:
+
+    { # Contains properties of a DCM advertiser.
+      "status": "A String", # Status of this advertiser.
+      "kind": "dfareporting#advertiser", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#advertiser".
+      "subaccountId": "A String", # Subaccount ID of this advertiser.This is a read-only field that can be left blank.
+      "name": "A String", # Name of this advertiser. This is a required field and must be less than 256 characters long and unique among advertisers of the same account.
+      "defaultClickThroughEventTagId": "A String", # ID of the click-through event tag to apply by default to the landing pages of this advertiser's campaigns.
+      "originalFloodlightConfigurationId": "A String", # Original floodlight configuration before any sharing occurred. Set the floodlightConfigurationId of this advertiser to originalFloodlightConfigurationId to unshare the advertiser's current floodlight configuration. You cannot unshare an advertiser's floodlight configuration if the shared configuration has activities associated with any campaign or placement.
+      "clickThroughUrlSuffix": "A String", # Suffix added to click-through URL of ad creative associations under this advertiser. Must be less than 129 characters long.
+      "floodlightConfigurationId": "A String", # Floodlight configuration ID of this advertiser. The floodlight configuration ID will be created automatically, so on insert this field should be left blank. This field can be set to another advertiser's floodlight configuration ID in order to share that advertiser's floodlight configuration with this advertiser, so long as:
+          # - This advertiser's original floodlight configuration is not already associated with floodlight activities or floodlight activity groups.
+          # - This advertiser's original floodlight configuration is not already shared with another advertiser.
+      "suspended": True or False, # Suspension status of this advertiser.
+      "floodlightConfigurationIdDimensionValue": { # Represents a DimensionValue resource. # Dimension value for the ID of the floodlight configuration. This is a read-only, auto-generated field.
+        "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+        "value": "A String", # The value of the dimension.
+        "dimensionName": "A String", # The name of the dimension.
+        "etag": "A String", # The eTag of this response for caching purposes.
+        "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+        "id": "A String", # The ID associated with the value if available.
+      },
+      "advertiserGroupId": "A String", # ID of the advertiser group this advertiser belongs to. You can group advertisers for reporting purposes, allowing you to see aggregated information for all advertisers in each group.
+      "idDimensionValue": { # Represents a DimensionValue resource. # Dimension value for the ID of this advertiser. This is a read-only, auto-generated field.
+        "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+        "value": "A String", # The value of the dimension.
+        "dimensionName": "A String", # The name of the dimension.
+        "etag": "A String", # The eTag of this response for caching purposes.
+        "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+        "id": "A String", # The ID associated with the value if available.
+      },
+      "defaultEmail": "A String", # Default email address used in sender field for tag emails.
+      "id": "A String", # ID of this advertiser. This is a read-only, auto-generated field.
+      "accountId": "A String", # Account ID of this advertiser.This is a read-only field that can be left blank.
+    }</pre>
+</div>
+
+<div class="method">
+    <code class="details" id="list">list(profileId, includeAdvertisersWithoutGroupsOnly=None, onlyParent=None, pageToken=None, sortOrder=None, status=None, maxResults=None, advertiserGroupIds=None, searchString=None, subaccountId=None, ids=None, floodlightConfigurationIds=None, sortField=None)</code>
+  <pre>Retrieves a list of advertisers, possibly filtered. This method supports paging.
+
+Args:
+  profileId: string, User profile ID associated with this request. (required)
+  includeAdvertisersWithoutGroupsOnly: boolean, Select only advertisers which do not belong to any advertiser group.
+  onlyParent: boolean, Select only advertisers which use another advertiser's floodlight configuration.
+  pageToken: string, Value of the nextPageToken from the previous result page.
+  sortOrder: string, Order of sorted results, default is ASCENDING.
+    Allowed values
+      ASCENDING - 
+      DESCENDING - 
+  status: string, Select only advertisers with the specified status.
+    Allowed values
+      APPROVED - 
+      ON_HOLD - 
+  maxResults: integer, Maximum number of results to return.
+  advertiserGroupIds: string, Select only advertisers with these advertiser group IDs. (repeated)
+  searchString: string, Allows searching for objects by name or ID. Wildcards (*) are allowed. For example, "advertiser*2015" will return objects with names like "advertiser June 2015", "advertiser April 2015", or simply "advertiser 2015". Most of the searches also add wildcards implicitly at the start and the end of the search string. For example, a search string of "advertiser" will match objects with name "my advertiser", "advertiser 2015", or simply "advertiser".
+  subaccountId: string, Select only advertisers with these subaccount IDs.
+  ids: string, Select only advertisers with these IDs. (repeated)
+  floodlightConfigurationIds: string, Select only advertisers with these floodlight configuration IDs. (repeated)
+  sortField: string, Field by which to sort the list.
+    Allowed values
+      ID - 
+      NAME - 
+
+Returns:
+  An object of the form:
+
+    { # Advertiser List Response
+    "nextPageToken": "A String", # Pagination token to be used for the next list operation.
+    "advertisers": [ # Advertiser collection.
+      { # Contains properties of a DCM advertiser.
+          "status": "A String", # Status of this advertiser.
+          "kind": "dfareporting#advertiser", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#advertiser".
+          "subaccountId": "A String", # Subaccount ID of this advertiser.This is a read-only field that can be left blank.
+          "name": "A String", # Name of this advertiser. This is a required field and must be less than 256 characters long and unique among advertisers of the same account.
+          "defaultClickThroughEventTagId": "A String", # ID of the click-through event tag to apply by default to the landing pages of this advertiser's campaigns.
+          "originalFloodlightConfigurationId": "A String", # Original floodlight configuration before any sharing occurred. Set the floodlightConfigurationId of this advertiser to originalFloodlightConfigurationId to unshare the advertiser's current floodlight configuration. You cannot unshare an advertiser's floodlight configuration if the shared configuration has activities associated with any campaign or placement.
+          "clickThroughUrlSuffix": "A String", # Suffix added to click-through URL of ad creative associations under this advertiser. Must be less than 129 characters long.
+          "floodlightConfigurationId": "A String", # Floodlight configuration ID of this advertiser. The floodlight configuration ID will be created automatically, so on insert this field should be left blank. This field can be set to another advertiser's floodlight configuration ID in order to share that advertiser's floodlight configuration with this advertiser, so long as:
+              # - This advertiser's original floodlight configuration is not already associated with floodlight activities or floodlight activity groups.
+              # - This advertiser's original floodlight configuration is not already shared with another advertiser.
+          "suspended": True or False, # Suspension status of this advertiser.
+          "floodlightConfigurationIdDimensionValue": { # Represents a DimensionValue resource. # Dimension value for the ID of the floodlight configuration. This is a read-only, auto-generated field.
+            "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+            "value": "A String", # The value of the dimension.
+            "dimensionName": "A String", # The name of the dimension.
+            "etag": "A String", # The eTag of this response for caching purposes.
+            "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+            "id": "A String", # The ID associated with the value if available.
+          },
+          "advertiserGroupId": "A String", # ID of the advertiser group this advertiser belongs to. You can group advertisers for reporting purposes, allowing you to see aggregated information for all advertisers in each group.
+          "idDimensionValue": { # Represents a DimensionValue resource. # Dimension value for the ID of this advertiser. This is a read-only, auto-generated field.
+            "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+            "value": "A String", # The value of the dimension.
+            "dimensionName": "A String", # The name of the dimension.
+            "etag": "A String", # The eTag of this response for caching purposes.
+            "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+            "id": "A String", # The ID associated with the value if available.
+          },
+          "defaultEmail": "A String", # Default email address used in sender field for tag emails.
+          "id": "A String", # ID of this advertiser. This is a read-only, auto-generated field.
+          "accountId": "A String", # Account ID of this advertiser.This is a read-only field that can be left blank.
+        },
+    ],
+    "kind": "dfareporting#advertisersListResponse", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#advertisersListResponse".
+  }</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="patch">patch(profileId, id, body)</code>
+  <pre>Updates an existing advertiser. This method supports patch semantics.
+
+Args:
+  profileId: string, User profile ID associated with this request. (required)
+  id: string, Advertiser ID. (required)
+  body: object, The request body. (required)
+    The object takes the form of:
+
+{ # Contains properties of a DCM advertiser.
+    "status": "A String", # Status of this advertiser.
+    "kind": "dfareporting#advertiser", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#advertiser".
+    "subaccountId": "A String", # Subaccount ID of this advertiser.This is a read-only field that can be left blank.
+    "name": "A String", # Name of this advertiser. This is a required field and must be less than 256 characters long and unique among advertisers of the same account.
+    "defaultClickThroughEventTagId": "A String", # ID of the click-through event tag to apply by default to the landing pages of this advertiser's campaigns.
+    "originalFloodlightConfigurationId": "A String", # Original floodlight configuration before any sharing occurred. Set the floodlightConfigurationId of this advertiser to originalFloodlightConfigurationId to unshare the advertiser's current floodlight configuration. You cannot unshare an advertiser's floodlight configuration if the shared configuration has activities associated with any campaign or placement.
+    "clickThroughUrlSuffix": "A String", # Suffix added to click-through URL of ad creative associations under this advertiser. Must be less than 129 characters long.
+    "floodlightConfigurationId": "A String", # Floodlight configuration ID of this advertiser. The floodlight configuration ID will be created automatically, so on insert this field should be left blank. This field can be set to another advertiser's floodlight configuration ID in order to share that advertiser's floodlight configuration with this advertiser, so long as:
+        # - This advertiser's original floodlight configuration is not already associated with floodlight activities or floodlight activity groups.
+        # - This advertiser's original floodlight configuration is not already shared with another advertiser.
+    "suspended": True or False, # Suspension status of this advertiser.
+    "floodlightConfigurationIdDimensionValue": { # Represents a DimensionValue resource. # Dimension value for the ID of the floodlight configuration. This is a read-only, auto-generated field.
+      "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+      "value": "A String", # The value of the dimension.
+      "dimensionName": "A String", # The name of the dimension.
+      "etag": "A String", # The eTag of this response for caching purposes.
+      "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+      "id": "A String", # The ID associated with the value if available.
+    },
+    "advertiserGroupId": "A String", # ID of the advertiser group this advertiser belongs to. You can group advertisers for reporting purposes, allowing you to see aggregated information for all advertisers in each group.
+    "idDimensionValue": { # Represents a DimensionValue resource. # Dimension value for the ID of this advertiser. This is a read-only, auto-generated field.
+      "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+      "value": "A String", # The value of the dimension.
+      "dimensionName": "A String", # The name of the dimension.
+      "etag": "A String", # The eTag of this response for caching purposes.
+      "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+      "id": "A String", # The ID associated with the value if available.
+    },
+    "defaultEmail": "A String", # Default email address used in sender field for tag emails.
+    "id": "A String", # ID of this advertiser. This is a read-only, auto-generated field.
+    "accountId": "A String", # Account ID of this advertiser.This is a read-only field that can be left blank.
+  }
+
+
+Returns:
+  An object of the form:
+
+    { # Contains properties of a DCM advertiser.
+      "status": "A String", # Status of this advertiser.
+      "kind": "dfareporting#advertiser", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#advertiser".
+      "subaccountId": "A String", # Subaccount ID of this advertiser.This is a read-only field that can be left blank.
+      "name": "A String", # Name of this advertiser. This is a required field and must be less than 256 characters long and unique among advertisers of the same account.
+      "defaultClickThroughEventTagId": "A String", # ID of the click-through event tag to apply by default to the landing pages of this advertiser's campaigns.
+      "originalFloodlightConfigurationId": "A String", # Original floodlight configuration before any sharing occurred. Set the floodlightConfigurationId of this advertiser to originalFloodlightConfigurationId to unshare the advertiser's current floodlight configuration. You cannot unshare an advertiser's floodlight configuration if the shared configuration has activities associated with any campaign or placement.
+      "clickThroughUrlSuffix": "A String", # Suffix added to click-through URL of ad creative associations under this advertiser. Must be less than 129 characters long.
+      "floodlightConfigurationId": "A String", # Floodlight configuration ID of this advertiser. The floodlight configuration ID will be created automatically, so on insert this field should be left blank. This field can be set to another advertiser's floodlight configuration ID in order to share that advertiser's floodlight configuration with this advertiser, so long as:
+          # - This advertiser's original floodlight configuration is not already associated with floodlight activities or floodlight activity groups.
+          # - This advertiser's original floodlight configuration is not already shared with another advertiser.
+      "suspended": True or False, # Suspension status of this advertiser.
+      "floodlightConfigurationIdDimensionValue": { # Represents a DimensionValue resource. # Dimension value for the ID of the floodlight configuration. This is a read-only, auto-generated field.
+        "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+        "value": "A String", # The value of the dimension.
+        "dimensionName": "A String", # The name of the dimension.
+        "etag": "A String", # The eTag of this response for caching purposes.
+        "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+        "id": "A String", # The ID associated with the value if available.
+      },
+      "advertiserGroupId": "A String", # ID of the advertiser group this advertiser belongs to. You can group advertisers for reporting purposes, allowing you to see aggregated information for all advertisers in each group.
+      "idDimensionValue": { # Represents a DimensionValue resource. # Dimension value for the ID of this advertiser. This is a read-only, auto-generated field.
+        "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+        "value": "A String", # The value of the dimension.
+        "dimensionName": "A String", # The name of the dimension.
+        "etag": "A String", # The eTag of this response for caching purposes.
+        "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+        "id": "A String", # The ID associated with the value if available.
+      },
+      "defaultEmail": "A String", # Default email address used in sender field for tag emails.
+      "id": "A String", # ID of this advertiser. This is a read-only, auto-generated field.
+      "accountId": "A String", # Account ID of this advertiser.This is a read-only field that can be left blank.
+    }</pre>
+</div>
+
+<div class="method">
+    <code class="details" id="update">update(profileId, body)</code>
+  <pre>Updates an existing advertiser.
+
+Args:
+  profileId: string, User profile ID associated with this request. (required)
+  body: object, The request body. (required)
+    The object takes the form of:
+
+{ # Contains properties of a DCM advertiser.
+    "status": "A String", # Status of this advertiser.
+    "kind": "dfareporting#advertiser", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#advertiser".
+    "subaccountId": "A String", # Subaccount ID of this advertiser.This is a read-only field that can be left blank.
+    "name": "A String", # Name of this advertiser. This is a required field and must be less than 256 characters long and unique among advertisers of the same account.
+    "defaultClickThroughEventTagId": "A String", # ID of the click-through event tag to apply by default to the landing pages of this advertiser's campaigns.
+    "originalFloodlightConfigurationId": "A String", # Original floodlight configuration before any sharing occurred. Set the floodlightConfigurationId of this advertiser to originalFloodlightConfigurationId to unshare the advertiser's current floodlight configuration. You cannot unshare an advertiser's floodlight configuration if the shared configuration has activities associated with any campaign or placement.
+    "clickThroughUrlSuffix": "A String", # Suffix added to click-through URL of ad creative associations under this advertiser. Must be less than 129 characters long.
+    "floodlightConfigurationId": "A String", # Floodlight configuration ID of this advertiser. The floodlight configuration ID will be created automatically, so on insert this field should be left blank. This field can be set to another advertiser's floodlight configuration ID in order to share that advertiser's floodlight configuration with this advertiser, so long as:
+        # - This advertiser's original floodlight configuration is not already associated with floodlight activities or floodlight activity groups.
+        # - This advertiser's original floodlight configuration is not already shared with another advertiser.
+    "suspended": True or False, # Suspension status of this advertiser.
+    "floodlightConfigurationIdDimensionValue": { # Represents a DimensionValue resource. # Dimension value for the ID of the floodlight configuration. This is a read-only, auto-generated field.
+      "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+      "value": "A String", # The value of the dimension.
+      "dimensionName": "A String", # The name of the dimension.
+      "etag": "A String", # The eTag of this response for caching purposes.
+      "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+      "id": "A String", # The ID associated with the value if available.
+    },
+    "advertiserGroupId": "A String", # ID of the advertiser group this advertiser belongs to. You can group advertisers for reporting purposes, allowing you to see aggregated information for all advertisers in each group.
+    "idDimensionValue": { # Represents a DimensionValue resource. # Dimension value for the ID of this advertiser. This is a read-only, auto-generated field.
+      "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+      "value": "A String", # The value of the dimension.
+      "dimensionName": "A String", # The name of the dimension.
+      "etag": "A String", # The eTag of this response for caching purposes.
+      "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+      "id": "A String", # The ID associated with the value if available.
+    },
+    "defaultEmail": "A String", # Default email address used in sender field for tag emails.
+    "id": "A String", # ID of this advertiser. This is a read-only, auto-generated field.
+    "accountId": "A String", # Account ID of this advertiser.This is a read-only field that can be left blank.
+  }
+
+
+Returns:
+  An object of the form:
+
+    { # Contains properties of a DCM advertiser.
+      "status": "A String", # Status of this advertiser.
+      "kind": "dfareporting#advertiser", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#advertiser".
+      "subaccountId": "A String", # Subaccount ID of this advertiser.This is a read-only field that can be left blank.
+      "name": "A String", # Name of this advertiser. This is a required field and must be less than 256 characters long and unique among advertisers of the same account.
+      "defaultClickThroughEventTagId": "A String", # ID of the click-through event tag to apply by default to the landing pages of this advertiser's campaigns.
+      "originalFloodlightConfigurationId": "A String", # Original floodlight configuration before any sharing occurred. Set the floodlightConfigurationId of this advertiser to originalFloodlightConfigurationId to unshare the advertiser's current floodlight configuration. You cannot unshare an advertiser's floodlight configuration if the shared configuration has activities associated with any campaign or placement.
+      "clickThroughUrlSuffix": "A String", # Suffix added to click-through URL of ad creative associations under this advertiser. Must be less than 129 characters long.
+      "floodlightConfigurationId": "A String", # Floodlight configuration ID of this advertiser. The floodlight configuration ID will be created automatically, so on insert this field should be left blank. This field can be set to another advertiser's floodlight configuration ID in order to share that advertiser's floodlight configuration with this advertiser, so long as:
+          # - This advertiser's original floodlight configuration is not already associated with floodlight activities or floodlight activity groups.
+          # - This advertiser's original floodlight configuration is not already shared with another advertiser.
+      "suspended": True or False, # Suspension status of this advertiser.
+      "floodlightConfigurationIdDimensionValue": { # Represents a DimensionValue resource. # Dimension value for the ID of the floodlight configuration. This is a read-only, auto-generated field.
+        "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+        "value": "A String", # The value of the dimension.
+        "dimensionName": "A String", # The name of the dimension.
+        "etag": "A String", # The eTag of this response for caching purposes.
+        "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+        "id": "A String", # The ID associated with the value if available.
+      },
+      "advertiserGroupId": "A String", # ID of the advertiser group this advertiser belongs to. You can group advertisers for reporting purposes, allowing you to see aggregated information for all advertisers in each group.
+      "idDimensionValue": { # Represents a DimensionValue resource. # Dimension value for the ID of this advertiser. This is a read-only, auto-generated field.
+        "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+        "value": "A String", # The value of the dimension.
+        "dimensionName": "A String", # The name of the dimension.
+        "etag": "A String", # The eTag of this response for caching purposes.
+        "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+        "id": "A String", # The ID associated with the value if available.
+      },
+      "defaultEmail": "A String", # Default email address used in sender field for tag emails.
+      "id": "A String", # ID of this advertiser. This is a read-only, auto-generated field.
+      "accountId": "A String", # Account ID of this advertiser.This is a read-only field that can be left blank.
+    }</pre>
+</div>
+
+</body></html>
\ No newline at end of file
diff --git a/docs/dyn/dfareporting_v2_7.browsers.html b/docs/dyn/dfareporting_v2_7.browsers.html
new file mode 100644
index 0000000..9eb3b27
--- /dev/null
+++ b/docs/dyn/dfareporting_v2_7.browsers.html
@@ -0,0 +1,106 @@
+<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="dfareporting_v2_7.html">DCM/DFA Reporting And Trafficking API</a> . <a href="dfareporting_v2_7.browsers.html">browsers</a></h1>
+<h2>Instance Methods</h2>
+<p class="toc_element">
+  <code><a href="#list">list(profileId)</a></code></p>
+<p class="firstline">Retrieves a list of browsers.</p>
+<h3>Method Details</h3>
+<div class="method">
+    <code class="details" id="list">list(profileId)</code>
+  <pre>Retrieves a list of browsers.
+
+Args:
+  profileId: string, User profile ID associated with this request. (required)
+
+Returns:
+  An object of the form:
+
+    { # Browser List Response
+    "kind": "dfareporting#browsersListResponse", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#browsersListResponse".
+    "browsers": [ # Browser collection.
+      { # Contains information about a browser that can be targeted by ads.
+        "majorVersion": "A String", # Major version number (leftmost number) of this browser. For example, for Chrome 5.0.376.86 beta, this field should be set to 5. An asterisk (*) may be used to target any version number, and a question mark (?) may be used to target cases where the version number cannot be identified. For example, Chrome *.* targets any version of Chrome: 1.2, 2.5, 3.5, and so on. Chrome 3.* targets Chrome 3.1, 3.5, but not 4.0. Firefox ?.? targets cases where the ad server knows the browser is Firefox but can't tell which version it is.
+        "kind": "dfareporting#browser", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#browser".
+        "name": "A String", # Name of this browser.
+        "browserVersionId": "A String", # ID referring to this grouping of browser and version numbers. This is the ID used for targeting.
+        "dartId": "A String", # DART ID of this browser. This is the ID used when generating reports.
+        "minorVersion": "A String", # Minor version number (number after first dot on left) of this browser. For example, for Chrome 5.0.375.86 beta, this field should be set to 0. An asterisk (*) may be used to target any version number, and a question mark (?) may be used to target cases where the version number cannot be identified. For example, Chrome *.* targets any version of Chrome: 1.2, 2.5, 3.5, and so on. Chrome 3.* targets Chrome 3.1, 3.5, but not 4.0. Firefox ?.? targets cases where the ad server knows the browser is Firefox but can't tell which version it is.
+      },
+    ],
+  }</pre>
+</div>
+
+</body></html>
\ No newline at end of file
diff --git a/docs/dyn/dfareporting_v2_7.campaignCreativeAssociations.html b/docs/dyn/dfareporting_v2_7.campaignCreativeAssociations.html
new file mode 100644
index 0000000..3d50026
--- /dev/null
+++ b/docs/dyn/dfareporting_v2_7.campaignCreativeAssociations.html
@@ -0,0 +1,155 @@
+<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="dfareporting_v2_7.html">DCM/DFA Reporting And Trafficking API</a> . <a href="dfareporting_v2_7.campaignCreativeAssociations.html">campaignCreativeAssociations</a></h1>
+<h2>Instance Methods</h2>
+<p class="toc_element">
+  <code><a href="#insert">insert(profileId, campaignId, body)</a></code></p>
+<p class="firstline">Associates a creative with the specified campaign. This method creates a default ad with dimensions matching the creative in the campaign if such a default ad does not exist already.</p>
+<p class="toc_element">
+  <code><a href="#list">list(profileId, campaignId, maxResults=None, pageToken=None, sortOrder=None)</a></code></p>
+<p class="firstline">Retrieves the list of creative IDs associated with the specified campaign. This method supports paging.</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>
+<h3>Method Details</h3>
+<div class="method">
+    <code class="details" id="insert">insert(profileId, campaignId, body)</code>
+  <pre>Associates a creative with the specified campaign. This method creates a default ad with dimensions matching the creative in the campaign if such a default ad does not exist already.
+
+Args:
+  profileId: string, User profile ID associated with this request. (required)
+  campaignId: string, Campaign ID in this association. (required)
+  body: object, The request body. (required)
+    The object takes the form of:
+
+{ # Identifies a creative which has been associated with a given campaign.
+    "creativeId": "A String", # ID of the creative associated with the campaign. This is a required field.
+    "kind": "dfareporting#campaignCreativeAssociation", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#campaignCreativeAssociation".
+  }
+
+
+Returns:
+  An object of the form:
+
+    { # Identifies a creative which has been associated with a given campaign.
+      "creativeId": "A String", # ID of the creative associated with the campaign. This is a required field.
+      "kind": "dfareporting#campaignCreativeAssociation", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#campaignCreativeAssociation".
+    }</pre>
+</div>
+
+<div class="method">
+    <code class="details" id="list">list(profileId, campaignId, maxResults=None, pageToken=None, sortOrder=None)</code>
+  <pre>Retrieves the list of creative IDs associated with the specified campaign. This method supports paging.
+
+Args:
+  profileId: string, User profile ID associated with this request. (required)
+  campaignId: string, Campaign ID in this association. (required)
+  maxResults: integer, Maximum number of results to return.
+  pageToken: string, Value of the nextPageToken from the previous result page.
+  sortOrder: string, Order of sorted results, default is ASCENDING.
+    Allowed values
+      ASCENDING - 
+      DESCENDING - 
+
+Returns:
+  An object of the form:
+
+    { # Campaign Creative Association List Response
+    "nextPageToken": "A String", # Pagination token to be used for the next list operation.
+    "campaignCreativeAssociations": [ # Campaign creative association collection
+      { # Identifies a creative which has been associated with a given campaign.
+          "creativeId": "A String", # ID of the creative associated with the campaign. This is a required field.
+          "kind": "dfareporting#campaignCreativeAssociation", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#campaignCreativeAssociation".
+        },
+    ],
+    "kind": "dfareporting#campaignCreativeAssociationsListResponse", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#campaignCreativeAssociationsListResponse".
+  }</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>
+
+</body></html>
\ No newline at end of file
diff --git a/docs/dyn/dfareporting_v2_7.campaigns.html b/docs/dyn/dfareporting_v2_7.campaigns.html
new file mode 100644
index 0000000..1d1d5a3
--- /dev/null
+++ b/docs/dyn/dfareporting_v2_7.campaigns.html
@@ -0,0 +1,1131 @@
+<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="dfareporting_v2_7.html">DCM/DFA Reporting And Trafficking API</a> . <a href="dfareporting_v2_7.campaigns.html">campaigns</a></h1>
+<h2>Instance Methods</h2>
+<p class="toc_element">
+  <code><a href="#get">get(profileId, id)</a></code></p>
+<p class="firstline">Gets one campaign by ID.</p>
+<p class="toc_element">
+  <code><a href="#insert">insert(profileId, defaultLandingPageName, defaultLandingPageUrl, body)</a></code></p>
+<p class="firstline">Inserts a new campaign.</p>
+<p class="toc_element">
+  <code><a href="#list">list(profileId, overriddenEventTagId=None, archived=None, advertiserIds=None, pageToken=None, sortOrder=None, maxResults=None, excludedIds=None, advertiserGroupIds=None, searchString=None, subaccountId=None, ids=None, sortField=None, atLeastOneOptimizationActivity=None)</a></code></p>
+<p class="firstline">Retrieves a list of campaigns, possibly filtered. This method supports paging.</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="#patch">patch(profileId, id, body)</a></code></p>
+<p class="firstline">Updates an existing campaign. This method supports patch semantics.</p>
+<p class="toc_element">
+  <code><a href="#update">update(profileId, body)</a></code></p>
+<p class="firstline">Updates an existing campaign.</p>
+<h3>Method Details</h3>
+<div class="method">
+    <code class="details" id="get">get(profileId, id)</code>
+  <pre>Gets one campaign by ID.
+
+Args:
+  profileId: string, User profile ID associated with this request. (required)
+  id: string, Campaign ID. (required)
+
+Returns:
+  An object of the form:
+
+    { # Contains properties of a DCM campaign.
+      "comment": "A String", # Arbitrary comments about this campaign. Must be less than 256 characters long.
+      "startDate": "A String", # Date on which the campaign starts running. The start date can be any date. The hours, minutes, and seconds of the start date should not be set, as doing so will result in an error. This is a required field.
+      "endDate": "A String", # Date on which the campaign will stop running. On insert, the end date must be today or a future date. The end date must be later than or be the same as the start date. If, for example, you set 6/25/2015 as both the start and end dates, the effective campaign run date is just that day only, 6/25/2015. The hours, minutes, and seconds of the end date should not be set, as doing so will result in an error. This is a required field.
+      "clickThroughUrlSuffixProperties": { # Click Through URL Suffix settings. # Click-through URL suffix override properties for this campaign.
+        "clickThroughUrlSuffix": "A String", # Click-through URL suffix to apply to all ads in this entity's scope. Must be less than 128 characters long.
+        "overrideInheritedSuffix": True or False, # Whether this entity should override the inherited click-through URL suffix with its own defined value.
+      },
+      "advertiserId": "A String", # Advertiser ID of this campaign. This is a required field.
+      "advertiserIdDimensionValue": { # Represents a DimensionValue resource. # Dimension value for the advertiser ID of this campaign. This is a read-only, auto-generated field.
+        "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+        "value": "A String", # The value of the dimension.
+        "dimensionName": "A String", # The name of the dimension.
+        "etag": "A String", # The eTag of this response for caching purposes.
+        "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+        "id": "A String", # The ID associated with the value if available.
+      },
+      "eventTagOverrides": [ # Overrides that can be used to activate or deactivate advertiser event tags.
+        { # Event tag override information.
+          "enabled": True or False, # Whether this override is enabled.
+          "id": "A String", # ID of this event tag override. This is a read-only, auto-generated field.
+        },
+      ],
+      "creativeOptimizationConfiguration": { # Creative optimization settings. # Creative optimization configuration for the campaign.
+        "optimizationActivitys": [ # List of optimization activities associated with this configuration.
+          { # Creative optimization activity.
+            "floodlightActivityId": "A String", # Floodlight activity ID of this optimization activity. This is a required field.
+            "floodlightActivityIdDimensionValue": { # Represents a DimensionValue resource. # Dimension value for the ID of the floodlight activity. This is a read-only, auto-generated field.
+              "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+              "value": "A String", # The value of the dimension.
+              "dimensionName": "A String", # The name of the dimension.
+              "etag": "A String", # The eTag of this response for caching purposes.
+              "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+              "id": "A String", # The ID associated with the value if available.
+            },
+            "weight": 42, # Weight associated with this optimization. Must be greater than 1. The weight assigned will be understood in proportion to the weights assigned to the other optimization activities.
+          },
+        ],
+        "optimizationModel": "A String", # Optimization model for this configuration.
+        "id": "A String", # ID of this creative optimization config. This field is auto-generated when the campaign is inserted or updated. It can be null for existing campaigns.
+        "name": "A String", # Name of this creative optimization config. This is a required field and must be less than 129 characters long.
+      },
+      "id": "A String", # ID of this campaign. This is a read-only auto-generated field.
+      "accountId": "A String", # Account ID of this campaign. This is a read-only field that can be left blank.
+      "traffickerEmails": [ # Campaign trafficker contact emails.
+        "A String",
+      ],
+      "archived": True or False, # Whether this campaign has been archived.
+      "externalId": "A String", # External ID for this campaign.
+      "advertiserGroupId": "A String", # Advertiser group ID of the associated advertiser.
+      "idDimensionValue": { # Represents a DimensionValue resource. # Dimension value for the ID of this campaign. This is a read-only, auto-generated field.
+        "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+        "value": "A String", # The value of the dimension.
+        "dimensionName": "A String", # The name of the dimension.
+        "etag": "A String", # The eTag of this response for caching purposes.
+        "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+        "id": "A String", # The ID associated with the value if available.
+      },
+      "billingInvoiceCode": "A String", # Billing invoice code included in the DCM client billing invoices associated with the campaign.
+      "creativeGroupIds": [ # List of creative group IDs that are assigned to the campaign.
+        "A String",
+      ],
+      "additionalCreativeOptimizationConfigurations": [ # Additional creative optimization configurations for the campaign.
+        { # Creative optimization settings.
+          "optimizationActivitys": [ # List of optimization activities associated with this configuration.
+            { # Creative optimization activity.
+              "floodlightActivityId": "A String", # Floodlight activity ID of this optimization activity. This is a required field.
+              "floodlightActivityIdDimensionValue": { # Represents a DimensionValue resource. # Dimension value for the ID of the floodlight activity. This is a read-only, auto-generated field.
+                "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+                "value": "A String", # The value of the dimension.
+                "dimensionName": "A String", # The name of the dimension.
+                "etag": "A String", # The eTag of this response for caching purposes.
+                "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+                "id": "A String", # The ID associated with the value if available.
+              },
+              "weight": 42, # Weight associated with this optimization. Must be greater than 1. The weight assigned will be understood in proportion to the weights assigned to the other optimization activities.
+            },
+          ],
+          "optimizationModel": "A String", # Optimization model for this configuration.
+          "id": "A String", # ID of this creative optimization config. This field is auto-generated when the campaign is inserted or updated. It can be null for existing campaigns.
+          "name": "A String", # Name of this creative optimization config. This is a required field and must be less than 129 characters long.
+        },
+      ],
+      "createInfo": { # Modification timestamp. # Information about the creation of this campaign. This is a read-only field.
+        "time": "A String", # Timestamp of the last change in milliseconds since epoch.
+      },
+      "defaultClickThroughEventTagProperties": { # Properties of inheriting and overriding the default click-through event tag. A campaign may override the event tag defined at the advertiser level, and an ad may also override the campaign's setting further. # Click-through event tag ID override properties for this campaign.
+        "overrideInheritedEventTag": True or False, # Whether this entity should override the inherited default click-through event tag with its own defined value.
+        "defaultClickThroughEventTagId": "A String", # ID of the click-through event tag to apply to all ads in this entity's scope.
+      },
+      "kind": "dfareporting#campaign", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#campaign".
+      "subaccountId": "A String", # Subaccount ID of this campaign. This is a read-only field that can be left blank.
+      "name": "A String", # Name of this campaign. This is a required field and must be less than 256 characters long and unique among campaigns of the same advertiser.
+      "lookbackConfiguration": { # Lookback configuration settings. # Lookback window settings for the campaign.
+        "clickDuration": 42, # Lookback window, in days, from the last time a given user clicked on one of your ads. If you enter 0, clicks will not be considered as triggering events for floodlight tracking. If you leave this field blank, the default value for your account will be used.
+        "postImpressionActivitiesDuration": 42, # Lookback window, in days, from the last time a given user viewed one of your ads. If you enter 0, impressions will not be considered as triggering events for floodlight tracking. If you leave this field blank, the default value for your account will be used.
+      },
+      "nielsenOcrEnabled": True or False, # Whether Nielsen reports are enabled for this campaign.
+      "lastModifiedInfo": { # Modification timestamp. # Information about the most recent modification of this campaign. This is a read-only field.
+        "time": "A String", # Timestamp of the last change in milliseconds since epoch.
+      },
+      "audienceSegmentGroups": [ # Audience segment groups assigned to this campaign. Cannot have more than 300 segment groups.
+        { # Audience Segment Group.
+          "audienceSegments": [ # Audience segments assigned to this group. The number of segments must be between 2 and 100.
+            { # Audience Segment.
+              "allocation": 42, # Weight allocated to this segment. Must be between 1 and 1000. The weight assigned will be understood in proportion to the weights assigned to other segments in the same segment group.
+              "id": "A String", # ID of this audience segment. This is a read-only, auto-generated field.
+              "name": "A String", # Name of this audience segment. This is a required field and must be less than 65 characters long.
+            },
+          ],
+          "id": "A String", # ID of this audience segment group. This is a read-only, auto-generated field.
+          "name": "A String", # Name of this audience segment group. This is a required field and must be less than 65 characters long.
+        },
+      ],
+    }</pre>
+</div>
+
+<div class="method">
+    <code class="details" id="insert">insert(profileId, defaultLandingPageName, defaultLandingPageUrl, body)</code>
+  <pre>Inserts a new campaign.
+
+Args:
+  profileId: string, User profile ID associated with this request. (required)
+  defaultLandingPageName: string, Default landing page name for this new campaign. Must be less than 256 characters long. (required)
+  defaultLandingPageUrl: string, Default landing page URL for this new campaign. (required)
+  body: object, The request body. (required)
+    The object takes the form of:
+
+{ # Contains properties of a DCM campaign.
+    "comment": "A String", # Arbitrary comments about this campaign. Must be less than 256 characters long.
+    "startDate": "A String", # Date on which the campaign starts running. The start date can be any date. The hours, minutes, and seconds of the start date should not be set, as doing so will result in an error. This is a required field.
+    "endDate": "A String", # Date on which the campaign will stop running. On insert, the end date must be today or a future date. The end date must be later than or be the same as the start date. If, for example, you set 6/25/2015 as both the start and end dates, the effective campaign run date is just that day only, 6/25/2015. The hours, minutes, and seconds of the end date should not be set, as doing so will result in an error. This is a required field.
+    "clickThroughUrlSuffixProperties": { # Click Through URL Suffix settings. # Click-through URL suffix override properties for this campaign.
+      "clickThroughUrlSuffix": "A String", # Click-through URL suffix to apply to all ads in this entity's scope. Must be less than 128 characters long.
+      "overrideInheritedSuffix": True or False, # Whether this entity should override the inherited click-through URL suffix with its own defined value.
+    },
+    "advertiserId": "A String", # Advertiser ID of this campaign. This is a required field.
+    "advertiserIdDimensionValue": { # Represents a DimensionValue resource. # Dimension value for the advertiser ID of this campaign. This is a read-only, auto-generated field.
+      "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+      "value": "A String", # The value of the dimension.
+      "dimensionName": "A String", # The name of the dimension.
+      "etag": "A String", # The eTag of this response for caching purposes.
+      "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+      "id": "A String", # The ID associated with the value if available.
+    },
+    "eventTagOverrides": [ # Overrides that can be used to activate or deactivate advertiser event tags.
+      { # Event tag override information.
+        "enabled": True or False, # Whether this override is enabled.
+        "id": "A String", # ID of this event tag override. This is a read-only, auto-generated field.
+      },
+    ],
+    "creativeOptimizationConfiguration": { # Creative optimization settings. # Creative optimization configuration for the campaign.
+      "optimizationActivitys": [ # List of optimization activities associated with this configuration.
+        { # Creative optimization activity.
+          "floodlightActivityId": "A String", # Floodlight activity ID of this optimization activity. This is a required field.
+          "floodlightActivityIdDimensionValue": { # Represents a DimensionValue resource. # Dimension value for the ID of the floodlight activity. This is a read-only, auto-generated field.
+            "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+            "value": "A String", # The value of the dimension.
+            "dimensionName": "A String", # The name of the dimension.
+            "etag": "A String", # The eTag of this response for caching purposes.
+            "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+            "id": "A String", # The ID associated with the value if available.
+          },
+          "weight": 42, # Weight associated with this optimization. Must be greater than 1. The weight assigned will be understood in proportion to the weights assigned to the other optimization activities.
+        },
+      ],
+      "optimizationModel": "A String", # Optimization model for this configuration.
+      "id": "A String", # ID of this creative optimization config. This field is auto-generated when the campaign is inserted or updated. It can be null for existing campaigns.
+      "name": "A String", # Name of this creative optimization config. This is a required field and must be less than 129 characters long.
+    },
+    "id": "A String", # ID of this campaign. This is a read-only auto-generated field.
+    "accountId": "A String", # Account ID of this campaign. This is a read-only field that can be left blank.
+    "traffickerEmails": [ # Campaign trafficker contact emails.
+      "A String",
+    ],
+    "archived": True or False, # Whether this campaign has been archived.
+    "externalId": "A String", # External ID for this campaign.
+    "advertiserGroupId": "A String", # Advertiser group ID of the associated advertiser.
+    "idDimensionValue": { # Represents a DimensionValue resource. # Dimension value for the ID of this campaign. This is a read-only, auto-generated field.
+      "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+      "value": "A String", # The value of the dimension.
+      "dimensionName": "A String", # The name of the dimension.
+      "etag": "A String", # The eTag of this response for caching purposes.
+      "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+      "id": "A String", # The ID associated with the value if available.
+    },
+    "billingInvoiceCode": "A String", # Billing invoice code included in the DCM client billing invoices associated with the campaign.
+    "creativeGroupIds": [ # List of creative group IDs that are assigned to the campaign.
+      "A String",
+    ],
+    "additionalCreativeOptimizationConfigurations": [ # Additional creative optimization configurations for the campaign.
+      { # Creative optimization settings.
+        "optimizationActivitys": [ # List of optimization activities associated with this configuration.
+          { # Creative optimization activity.
+            "floodlightActivityId": "A String", # Floodlight activity ID of this optimization activity. This is a required field.
+            "floodlightActivityIdDimensionValue": { # Represents a DimensionValue resource. # Dimension value for the ID of the floodlight activity. This is a read-only, auto-generated field.
+              "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+              "value": "A String", # The value of the dimension.
+              "dimensionName": "A String", # The name of the dimension.
+              "etag": "A String", # The eTag of this response for caching purposes.
+              "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+              "id": "A String", # The ID associated with the value if available.
+            },
+            "weight": 42, # Weight associated with this optimization. Must be greater than 1. The weight assigned will be understood in proportion to the weights assigned to the other optimization activities.
+          },
+        ],
+        "optimizationModel": "A String", # Optimization model for this configuration.
+        "id": "A String", # ID of this creative optimization config. This field is auto-generated when the campaign is inserted or updated. It can be null for existing campaigns.
+        "name": "A String", # Name of this creative optimization config. This is a required field and must be less than 129 characters long.
+      },
+    ],
+    "createInfo": { # Modification timestamp. # Information about the creation of this campaign. This is a read-only field.
+      "time": "A String", # Timestamp of the last change in milliseconds since epoch.
+    },
+    "defaultClickThroughEventTagProperties": { # Properties of inheriting and overriding the default click-through event tag. A campaign may override the event tag defined at the advertiser level, and an ad may also override the campaign's setting further. # Click-through event tag ID override properties for this campaign.
+      "overrideInheritedEventTag": True or False, # Whether this entity should override the inherited default click-through event tag with its own defined value.
+      "defaultClickThroughEventTagId": "A String", # ID of the click-through event tag to apply to all ads in this entity's scope.
+    },
+    "kind": "dfareporting#campaign", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#campaign".
+    "subaccountId": "A String", # Subaccount ID of this campaign. This is a read-only field that can be left blank.
+    "name": "A String", # Name of this campaign. This is a required field and must be less than 256 characters long and unique among campaigns of the same advertiser.
+    "lookbackConfiguration": { # Lookback configuration settings. # Lookback window settings for the campaign.
+      "clickDuration": 42, # Lookback window, in days, from the last time a given user clicked on one of your ads. If you enter 0, clicks will not be considered as triggering events for floodlight tracking. If you leave this field blank, the default value for your account will be used.
+      "postImpressionActivitiesDuration": 42, # Lookback window, in days, from the last time a given user viewed one of your ads. If you enter 0, impressions will not be considered as triggering events for floodlight tracking. If you leave this field blank, the default value for your account will be used.
+    },
+    "nielsenOcrEnabled": True or False, # Whether Nielsen reports are enabled for this campaign.
+    "lastModifiedInfo": { # Modification timestamp. # Information about the most recent modification of this campaign. This is a read-only field.
+      "time": "A String", # Timestamp of the last change in milliseconds since epoch.
+    },
+    "audienceSegmentGroups": [ # Audience segment groups assigned to this campaign. Cannot have more than 300 segment groups.
+      { # Audience Segment Group.
+        "audienceSegments": [ # Audience segments assigned to this group. The number of segments must be between 2 and 100.
+          { # Audience Segment.
+            "allocation": 42, # Weight allocated to this segment. Must be between 1 and 1000. The weight assigned will be understood in proportion to the weights assigned to other segments in the same segment group.
+            "id": "A String", # ID of this audience segment. This is a read-only, auto-generated field.
+            "name": "A String", # Name of this audience segment. This is a required field and must be less than 65 characters long.
+          },
+        ],
+        "id": "A String", # ID of this audience segment group. This is a read-only, auto-generated field.
+        "name": "A String", # Name of this audience segment group. This is a required field and must be less than 65 characters long.
+      },
+    ],
+  }
+
+
+Returns:
+  An object of the form:
+
+    { # Contains properties of a DCM campaign.
+      "comment": "A String", # Arbitrary comments about this campaign. Must be less than 256 characters long.
+      "startDate": "A String", # Date on which the campaign starts running. The start date can be any date. The hours, minutes, and seconds of the start date should not be set, as doing so will result in an error. This is a required field.
+      "endDate": "A String", # Date on which the campaign will stop running. On insert, the end date must be today or a future date. The end date must be later than or be the same as the start date. If, for example, you set 6/25/2015 as both the start and end dates, the effective campaign run date is just that day only, 6/25/2015. The hours, minutes, and seconds of the end date should not be set, as doing so will result in an error. This is a required field.
+      "clickThroughUrlSuffixProperties": { # Click Through URL Suffix settings. # Click-through URL suffix override properties for this campaign.
+        "clickThroughUrlSuffix": "A String", # Click-through URL suffix to apply to all ads in this entity's scope. Must be less than 128 characters long.
+        "overrideInheritedSuffix": True or False, # Whether this entity should override the inherited click-through URL suffix with its own defined value.
+      },
+      "advertiserId": "A String", # Advertiser ID of this campaign. This is a required field.
+      "advertiserIdDimensionValue": { # Represents a DimensionValue resource. # Dimension value for the advertiser ID of this campaign. This is a read-only, auto-generated field.
+        "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+        "value": "A String", # The value of the dimension.
+        "dimensionName": "A String", # The name of the dimension.
+        "etag": "A String", # The eTag of this response for caching purposes.
+        "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+        "id": "A String", # The ID associated with the value if available.
+      },
+      "eventTagOverrides": [ # Overrides that can be used to activate or deactivate advertiser event tags.
+        { # Event tag override information.
+          "enabled": True or False, # Whether this override is enabled.
+          "id": "A String", # ID of this event tag override. This is a read-only, auto-generated field.
+        },
+      ],
+      "creativeOptimizationConfiguration": { # Creative optimization settings. # Creative optimization configuration for the campaign.
+        "optimizationActivitys": [ # List of optimization activities associated with this configuration.
+          { # Creative optimization activity.
+            "floodlightActivityId": "A String", # Floodlight activity ID of this optimization activity. This is a required field.
+            "floodlightActivityIdDimensionValue": { # Represents a DimensionValue resource. # Dimension value for the ID of the floodlight activity. This is a read-only, auto-generated field.
+              "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+              "value": "A String", # The value of the dimension.
+              "dimensionName": "A String", # The name of the dimension.
+              "etag": "A String", # The eTag of this response for caching purposes.
+              "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+              "id": "A String", # The ID associated with the value if available.
+            },
+            "weight": 42, # Weight associated with this optimization. Must be greater than 1. The weight assigned will be understood in proportion to the weights assigned to the other optimization activities.
+          },
+        ],
+        "optimizationModel": "A String", # Optimization model for this configuration.
+        "id": "A String", # ID of this creative optimization config. This field is auto-generated when the campaign is inserted or updated. It can be null for existing campaigns.
+        "name": "A String", # Name of this creative optimization config. This is a required field and must be less than 129 characters long.
+      },
+      "id": "A String", # ID of this campaign. This is a read-only auto-generated field.
+      "accountId": "A String", # Account ID of this campaign. This is a read-only field that can be left blank.
+      "traffickerEmails": [ # Campaign trafficker contact emails.
+        "A String",
+      ],
+      "archived": True or False, # Whether this campaign has been archived.
+      "externalId": "A String", # External ID for this campaign.
+      "advertiserGroupId": "A String", # Advertiser group ID of the associated advertiser.
+      "idDimensionValue": { # Represents a DimensionValue resource. # Dimension value for the ID of this campaign. This is a read-only, auto-generated field.
+        "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+        "value": "A String", # The value of the dimension.
+        "dimensionName": "A String", # The name of the dimension.
+        "etag": "A String", # The eTag of this response for caching purposes.
+        "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+        "id": "A String", # The ID associated with the value if available.
+      },
+      "billingInvoiceCode": "A String", # Billing invoice code included in the DCM client billing invoices associated with the campaign.
+      "creativeGroupIds": [ # List of creative group IDs that are assigned to the campaign.
+        "A String",
+      ],
+      "additionalCreativeOptimizationConfigurations": [ # Additional creative optimization configurations for the campaign.
+        { # Creative optimization settings.
+          "optimizationActivitys": [ # List of optimization activities associated with this configuration.
+            { # Creative optimization activity.
+              "floodlightActivityId": "A String", # Floodlight activity ID of this optimization activity. This is a required field.
+              "floodlightActivityIdDimensionValue": { # Represents a DimensionValue resource. # Dimension value for the ID of the floodlight activity. This is a read-only, auto-generated field.
+                "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+                "value": "A String", # The value of the dimension.
+                "dimensionName": "A String", # The name of the dimension.
+                "etag": "A String", # The eTag of this response for caching purposes.
+                "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+                "id": "A String", # The ID associated with the value if available.
+              },
+              "weight": 42, # Weight associated with this optimization. Must be greater than 1. The weight assigned will be understood in proportion to the weights assigned to the other optimization activities.
+            },
+          ],
+          "optimizationModel": "A String", # Optimization model for this configuration.
+          "id": "A String", # ID of this creative optimization config. This field is auto-generated when the campaign is inserted or updated. It can be null for existing campaigns.
+          "name": "A String", # Name of this creative optimization config. This is a required field and must be less than 129 characters long.
+        },
+      ],
+      "createInfo": { # Modification timestamp. # Information about the creation of this campaign. This is a read-only field.
+        "time": "A String", # Timestamp of the last change in milliseconds since epoch.
+      },
+      "defaultClickThroughEventTagProperties": { # Properties of inheriting and overriding the default click-through event tag. A campaign may override the event tag defined at the advertiser level, and an ad may also override the campaign's setting further. # Click-through event tag ID override properties for this campaign.
+        "overrideInheritedEventTag": True or False, # Whether this entity should override the inherited default click-through event tag with its own defined value.
+        "defaultClickThroughEventTagId": "A String", # ID of the click-through event tag to apply to all ads in this entity's scope.
+      },
+      "kind": "dfareporting#campaign", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#campaign".
+      "subaccountId": "A String", # Subaccount ID of this campaign. This is a read-only field that can be left blank.
+      "name": "A String", # Name of this campaign. This is a required field and must be less than 256 characters long and unique among campaigns of the same advertiser.
+      "lookbackConfiguration": { # Lookback configuration settings. # Lookback window settings for the campaign.
+        "clickDuration": 42, # Lookback window, in days, from the last time a given user clicked on one of your ads. If you enter 0, clicks will not be considered as triggering events for floodlight tracking. If you leave this field blank, the default value for your account will be used.
+        "postImpressionActivitiesDuration": 42, # Lookback window, in days, from the last time a given user viewed one of your ads. If you enter 0, impressions will not be considered as triggering events for floodlight tracking. If you leave this field blank, the default value for your account will be used.
+      },
+      "nielsenOcrEnabled": True or False, # Whether Nielsen reports are enabled for this campaign.
+      "lastModifiedInfo": { # Modification timestamp. # Information about the most recent modification of this campaign. This is a read-only field.
+        "time": "A String", # Timestamp of the last change in milliseconds since epoch.
+      },
+      "audienceSegmentGroups": [ # Audience segment groups assigned to this campaign. Cannot have more than 300 segment groups.
+        { # Audience Segment Group.
+          "audienceSegments": [ # Audience segments assigned to this group. The number of segments must be between 2 and 100.
+            { # Audience Segment.
+              "allocation": 42, # Weight allocated to this segment. Must be between 1 and 1000. The weight assigned will be understood in proportion to the weights assigned to other segments in the same segment group.
+              "id": "A String", # ID of this audience segment. This is a read-only, auto-generated field.
+              "name": "A String", # Name of this audience segment. This is a required field and must be less than 65 characters long.
+            },
+          ],
+          "id": "A String", # ID of this audience segment group. This is a read-only, auto-generated field.
+          "name": "A String", # Name of this audience segment group. This is a required field and must be less than 65 characters long.
+        },
+      ],
+    }</pre>
+</div>
+
+<div class="method">
+    <code class="details" id="list">list(profileId, overriddenEventTagId=None, archived=None, advertiserIds=None, pageToken=None, sortOrder=None, maxResults=None, excludedIds=None, advertiserGroupIds=None, searchString=None, subaccountId=None, ids=None, sortField=None, atLeastOneOptimizationActivity=None)</code>
+  <pre>Retrieves a list of campaigns, possibly filtered. This method supports paging.
+
+Args:
+  profileId: string, User profile ID associated with this request. (required)
+  overriddenEventTagId: string, Select only campaigns that have overridden this event tag ID.
+  archived: boolean, Select only archived campaigns. Don't set this field to select both archived and non-archived campaigns.
+  advertiserIds: string, Select only campaigns that belong to these advertisers. (repeated)
+  pageToken: string, Value of the nextPageToken from the previous result page.
+  sortOrder: string, Order of sorted results, default is ASCENDING.
+    Allowed values
+      ASCENDING - 
+      DESCENDING - 
+  maxResults: integer, Maximum number of results to return.
+  excludedIds: string, Exclude campaigns with these IDs. (repeated)
+  advertiserGroupIds: string, Select only campaigns whose advertisers belong to these advertiser groups. (repeated)
+  searchString: string, Allows searching for campaigns by name or ID. Wildcards (*) are allowed. For example, "campaign*2015" will return campaigns with names like "campaign June 2015", "campaign April 2015", or simply "campaign 2015". Most of the searches also add wildcards implicitly at the start and the end of the search string. For example, a search string of "campaign" will match campaigns with name "my campaign", "campaign 2015", or simply "campaign".
+  subaccountId: string, Select only campaigns that belong to this subaccount.
+  ids: string, Select only campaigns with these IDs. (repeated)
+  sortField: string, Field by which to sort the list.
+    Allowed values
+      ID - 
+      NAME - 
+  atLeastOneOptimizationActivity: boolean, Select only campaigns that have at least one optimization activity.
+
+Returns:
+  An object of the form:
+
+    { # Campaign List Response
+    "campaigns": [ # Campaign collection.
+      { # Contains properties of a DCM campaign.
+          "comment": "A String", # Arbitrary comments about this campaign. Must be less than 256 characters long.
+          "startDate": "A String", # Date on which the campaign starts running. The start date can be any date. The hours, minutes, and seconds of the start date should not be set, as doing so will result in an error. This is a required field.
+          "endDate": "A String", # Date on which the campaign will stop running. On insert, the end date must be today or a future date. The end date must be later than or be the same as the start date. If, for example, you set 6/25/2015 as both the start and end dates, the effective campaign run date is just that day only, 6/25/2015. The hours, minutes, and seconds of the end date should not be set, as doing so will result in an error. This is a required field.
+          "clickThroughUrlSuffixProperties": { # Click Through URL Suffix settings. # Click-through URL suffix override properties for this campaign.
+            "clickThroughUrlSuffix": "A String", # Click-through URL suffix to apply to all ads in this entity's scope. Must be less than 128 characters long.
+            "overrideInheritedSuffix": True or False, # Whether this entity should override the inherited click-through URL suffix with its own defined value.
+          },
+          "advertiserId": "A String", # Advertiser ID of this campaign. This is a required field.
+          "advertiserIdDimensionValue": { # Represents a DimensionValue resource. # Dimension value for the advertiser ID of this campaign. This is a read-only, auto-generated field.
+            "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+            "value": "A String", # The value of the dimension.
+            "dimensionName": "A String", # The name of the dimension.
+            "etag": "A String", # The eTag of this response for caching purposes.
+            "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+            "id": "A String", # The ID associated with the value if available.
+          },
+          "eventTagOverrides": [ # Overrides that can be used to activate or deactivate advertiser event tags.
+            { # Event tag override information.
+              "enabled": True or False, # Whether this override is enabled.
+              "id": "A String", # ID of this event tag override. This is a read-only, auto-generated field.
+            },
+          ],
+          "creativeOptimizationConfiguration": { # Creative optimization settings. # Creative optimization configuration for the campaign.
+            "optimizationActivitys": [ # List of optimization activities associated with this configuration.
+              { # Creative optimization activity.
+                "floodlightActivityId": "A String", # Floodlight activity ID of this optimization activity. This is a required field.
+                "floodlightActivityIdDimensionValue": { # Represents a DimensionValue resource. # Dimension value for the ID of the floodlight activity. This is a read-only, auto-generated field.
+                  "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+                  "value": "A String", # The value of the dimension.
+                  "dimensionName": "A String", # The name of the dimension.
+                  "etag": "A String", # The eTag of this response for caching purposes.
+                  "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+                  "id": "A String", # The ID associated with the value if available.
+                },
+                "weight": 42, # Weight associated with this optimization. Must be greater than 1. The weight assigned will be understood in proportion to the weights assigned to the other optimization activities.
+              },
+            ],
+            "optimizationModel": "A String", # Optimization model for this configuration.
+            "id": "A String", # ID of this creative optimization config. This field is auto-generated when the campaign is inserted or updated. It can be null for existing campaigns.
+            "name": "A String", # Name of this creative optimization config. This is a required field and must be less than 129 characters long.
+          },
+          "id": "A String", # ID of this campaign. This is a read-only auto-generated field.
+          "accountId": "A String", # Account ID of this campaign. This is a read-only field that can be left blank.
+          "traffickerEmails": [ # Campaign trafficker contact emails.
+            "A String",
+          ],
+          "archived": True or False, # Whether this campaign has been archived.
+          "externalId": "A String", # External ID for this campaign.
+          "advertiserGroupId": "A String", # Advertiser group ID of the associated advertiser.
+          "idDimensionValue": { # Represents a DimensionValue resource. # Dimension value for the ID of this campaign. This is a read-only, auto-generated field.
+            "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+            "value": "A String", # The value of the dimension.
+            "dimensionName": "A String", # The name of the dimension.
+            "etag": "A String", # The eTag of this response for caching purposes.
+            "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+            "id": "A String", # The ID associated with the value if available.
+          },
+          "billingInvoiceCode": "A String", # Billing invoice code included in the DCM client billing invoices associated with the campaign.
+          "creativeGroupIds": [ # List of creative group IDs that are assigned to the campaign.
+            "A String",
+          ],
+          "additionalCreativeOptimizationConfigurations": [ # Additional creative optimization configurations for the campaign.
+            { # Creative optimization settings.
+              "optimizationActivitys": [ # List of optimization activities associated with this configuration.
+                { # Creative optimization activity.
+                  "floodlightActivityId": "A String", # Floodlight activity ID of this optimization activity. This is a required field.
+                  "floodlightActivityIdDimensionValue": { # Represents a DimensionValue resource. # Dimension value for the ID of the floodlight activity. This is a read-only, auto-generated field.
+                    "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+                    "value": "A String", # The value of the dimension.
+                    "dimensionName": "A String", # The name of the dimension.
+                    "etag": "A String", # The eTag of this response for caching purposes.
+                    "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+                    "id": "A String", # The ID associated with the value if available.
+                  },
+                  "weight": 42, # Weight associated with this optimization. Must be greater than 1. The weight assigned will be understood in proportion to the weights assigned to the other optimization activities.
+                },
+              ],
+              "optimizationModel": "A String", # Optimization model for this configuration.
+              "id": "A String", # ID of this creative optimization config. This field is auto-generated when the campaign is inserted or updated. It can be null for existing campaigns.
+              "name": "A String", # Name of this creative optimization config. This is a required field and must be less than 129 characters long.
+            },
+          ],
+          "createInfo": { # Modification timestamp. # Information about the creation of this campaign. This is a read-only field.
+            "time": "A String", # Timestamp of the last change in milliseconds since epoch.
+          },
+          "defaultClickThroughEventTagProperties": { # Properties of inheriting and overriding the default click-through event tag. A campaign may override the event tag defined at the advertiser level, and an ad may also override the campaign's setting further. # Click-through event tag ID override properties for this campaign.
+            "overrideInheritedEventTag": True or False, # Whether this entity should override the inherited default click-through event tag with its own defined value.
+            "defaultClickThroughEventTagId": "A String", # ID of the click-through event tag to apply to all ads in this entity's scope.
+          },
+          "kind": "dfareporting#campaign", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#campaign".
+          "subaccountId": "A String", # Subaccount ID of this campaign. This is a read-only field that can be left blank.
+          "name": "A String", # Name of this campaign. This is a required field and must be less than 256 characters long and unique among campaigns of the same advertiser.
+          "lookbackConfiguration": { # Lookback configuration settings. # Lookback window settings for the campaign.
+            "clickDuration": 42, # Lookback window, in days, from the last time a given user clicked on one of your ads. If you enter 0, clicks will not be considered as triggering events for floodlight tracking. If you leave this field blank, the default value for your account will be used.
+            "postImpressionActivitiesDuration": 42, # Lookback window, in days, from the last time a given user viewed one of your ads. If you enter 0, impressions will not be considered as triggering events for floodlight tracking. If you leave this field blank, the default value for your account will be used.
+          },
+          "nielsenOcrEnabled": True or False, # Whether Nielsen reports are enabled for this campaign.
+          "lastModifiedInfo": { # Modification timestamp. # Information about the most recent modification of this campaign. This is a read-only field.
+            "time": "A String", # Timestamp of the last change in milliseconds since epoch.
+          },
+          "audienceSegmentGroups": [ # Audience segment groups assigned to this campaign. Cannot have more than 300 segment groups.
+            { # Audience Segment Group.
+              "audienceSegments": [ # Audience segments assigned to this group. The number of segments must be between 2 and 100.
+                { # Audience Segment.
+                  "allocation": 42, # Weight allocated to this segment. Must be between 1 and 1000. The weight assigned will be understood in proportion to the weights assigned to other segments in the same segment group.
+                  "id": "A String", # ID of this audience segment. This is a read-only, auto-generated field.
+                  "name": "A String", # Name of this audience segment. This is a required field and must be less than 65 characters long.
+                },
+              ],
+              "id": "A String", # ID of this audience segment group. This is a read-only, auto-generated field.
+              "name": "A String", # Name of this audience segment group. This is a required field and must be less than 65 characters long.
+            },
+          ],
+        },
+    ],
+    "nextPageToken": "A String", # Pagination token to be used for the next list operation.
+    "kind": "dfareporting#campaignsListResponse", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#campaignsListResponse".
+  }</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="patch">patch(profileId, id, body)</code>
+  <pre>Updates an existing campaign. This method supports patch semantics.
+
+Args:
+  profileId: string, User profile ID associated with this request. (required)
+  id: string, Campaign ID. (required)
+  body: object, The request body. (required)
+    The object takes the form of:
+
+{ # Contains properties of a DCM campaign.
+    "comment": "A String", # Arbitrary comments about this campaign. Must be less than 256 characters long.
+    "startDate": "A String", # Date on which the campaign starts running. The start date can be any date. The hours, minutes, and seconds of the start date should not be set, as doing so will result in an error. This is a required field.
+    "endDate": "A String", # Date on which the campaign will stop running. On insert, the end date must be today or a future date. The end date must be later than or be the same as the start date. If, for example, you set 6/25/2015 as both the start and end dates, the effective campaign run date is just that day only, 6/25/2015. The hours, minutes, and seconds of the end date should not be set, as doing so will result in an error. This is a required field.
+    "clickThroughUrlSuffixProperties": { # Click Through URL Suffix settings. # Click-through URL suffix override properties for this campaign.
+      "clickThroughUrlSuffix": "A String", # Click-through URL suffix to apply to all ads in this entity's scope. Must be less than 128 characters long.
+      "overrideInheritedSuffix": True or False, # Whether this entity should override the inherited click-through URL suffix with its own defined value.
+    },
+    "advertiserId": "A String", # Advertiser ID of this campaign. This is a required field.
+    "advertiserIdDimensionValue": { # Represents a DimensionValue resource. # Dimension value for the advertiser ID of this campaign. This is a read-only, auto-generated field.
+      "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+      "value": "A String", # The value of the dimension.
+      "dimensionName": "A String", # The name of the dimension.
+      "etag": "A String", # The eTag of this response for caching purposes.
+      "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+      "id": "A String", # The ID associated with the value if available.
+    },
+    "eventTagOverrides": [ # Overrides that can be used to activate or deactivate advertiser event tags.
+      { # Event tag override information.
+        "enabled": True or False, # Whether this override is enabled.
+        "id": "A String", # ID of this event tag override. This is a read-only, auto-generated field.
+      },
+    ],
+    "creativeOptimizationConfiguration": { # Creative optimization settings. # Creative optimization configuration for the campaign.
+      "optimizationActivitys": [ # List of optimization activities associated with this configuration.
+        { # Creative optimization activity.
+          "floodlightActivityId": "A String", # Floodlight activity ID of this optimization activity. This is a required field.
+          "floodlightActivityIdDimensionValue": { # Represents a DimensionValue resource. # Dimension value for the ID of the floodlight activity. This is a read-only, auto-generated field.
+            "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+            "value": "A String", # The value of the dimension.
+            "dimensionName": "A String", # The name of the dimension.
+            "etag": "A String", # The eTag of this response for caching purposes.
+            "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+            "id": "A String", # The ID associated with the value if available.
+          },
+          "weight": 42, # Weight associated with this optimization. Must be greater than 1. The weight assigned will be understood in proportion to the weights assigned to the other optimization activities.
+        },
+      ],
+      "optimizationModel": "A String", # Optimization model for this configuration.
+      "id": "A String", # ID of this creative optimization config. This field is auto-generated when the campaign is inserted or updated. It can be null for existing campaigns.
+      "name": "A String", # Name of this creative optimization config. This is a required field and must be less than 129 characters long.
+    },
+    "id": "A String", # ID of this campaign. This is a read-only auto-generated field.
+    "accountId": "A String", # Account ID of this campaign. This is a read-only field that can be left blank.
+    "traffickerEmails": [ # Campaign trafficker contact emails.
+      "A String",
+    ],
+    "archived": True or False, # Whether this campaign has been archived.
+    "externalId": "A String", # External ID for this campaign.
+    "advertiserGroupId": "A String", # Advertiser group ID of the associated advertiser.
+    "idDimensionValue": { # Represents a DimensionValue resource. # Dimension value for the ID of this campaign. This is a read-only, auto-generated field.
+      "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+      "value": "A String", # The value of the dimension.
+      "dimensionName": "A String", # The name of the dimension.
+      "etag": "A String", # The eTag of this response for caching purposes.
+      "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+      "id": "A String", # The ID associated with the value if available.
+    },
+    "billingInvoiceCode": "A String", # Billing invoice code included in the DCM client billing invoices associated with the campaign.
+    "creativeGroupIds": [ # List of creative group IDs that are assigned to the campaign.
+      "A String",
+    ],
+    "additionalCreativeOptimizationConfigurations": [ # Additional creative optimization configurations for the campaign.
+      { # Creative optimization settings.
+        "optimizationActivitys": [ # List of optimization activities associated with this configuration.
+          { # Creative optimization activity.
+            "floodlightActivityId": "A String", # Floodlight activity ID of this optimization activity. This is a required field.
+            "floodlightActivityIdDimensionValue": { # Represents a DimensionValue resource. # Dimension value for the ID of the floodlight activity. This is a read-only, auto-generated field.
+              "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+              "value": "A String", # The value of the dimension.
+              "dimensionName": "A String", # The name of the dimension.
+              "etag": "A String", # The eTag of this response for caching purposes.
+              "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+              "id": "A String", # The ID associated with the value if available.
+            },
+            "weight": 42, # Weight associated with this optimization. Must be greater than 1. The weight assigned will be understood in proportion to the weights assigned to the other optimization activities.
+          },
+        ],
+        "optimizationModel": "A String", # Optimization model for this configuration.
+        "id": "A String", # ID of this creative optimization config. This field is auto-generated when the campaign is inserted or updated. It can be null for existing campaigns.
+        "name": "A String", # Name of this creative optimization config. This is a required field and must be less than 129 characters long.
+      },
+    ],
+    "createInfo": { # Modification timestamp. # Information about the creation of this campaign. This is a read-only field.
+      "time": "A String", # Timestamp of the last change in milliseconds since epoch.
+    },
+    "defaultClickThroughEventTagProperties": { # Properties of inheriting and overriding the default click-through event tag. A campaign may override the event tag defined at the advertiser level, and an ad may also override the campaign's setting further. # Click-through event tag ID override properties for this campaign.
+      "overrideInheritedEventTag": True or False, # Whether this entity should override the inherited default click-through event tag with its own defined value.
+      "defaultClickThroughEventTagId": "A String", # ID of the click-through event tag to apply to all ads in this entity's scope.
+    },
+    "kind": "dfareporting#campaign", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#campaign".
+    "subaccountId": "A String", # Subaccount ID of this campaign. This is a read-only field that can be left blank.
+    "name": "A String", # Name of this campaign. This is a required field and must be less than 256 characters long and unique among campaigns of the same advertiser.
+    "lookbackConfiguration": { # Lookback configuration settings. # Lookback window settings for the campaign.
+      "clickDuration": 42, # Lookback window, in days, from the last time a given user clicked on one of your ads. If you enter 0, clicks will not be considered as triggering events for floodlight tracking. If you leave this field blank, the default value for your account will be used.
+      "postImpressionActivitiesDuration": 42, # Lookback window, in days, from the last time a given user viewed one of your ads. If you enter 0, impressions will not be considered as triggering events for floodlight tracking. If you leave this field blank, the default value for your account will be used.
+    },
+    "nielsenOcrEnabled": True or False, # Whether Nielsen reports are enabled for this campaign.
+    "lastModifiedInfo": { # Modification timestamp. # Information about the most recent modification of this campaign. This is a read-only field.
+      "time": "A String", # Timestamp of the last change in milliseconds since epoch.
+    },
+    "audienceSegmentGroups": [ # Audience segment groups assigned to this campaign. Cannot have more than 300 segment groups.
+      { # Audience Segment Group.
+        "audienceSegments": [ # Audience segments assigned to this group. The number of segments must be between 2 and 100.
+          { # Audience Segment.
+            "allocation": 42, # Weight allocated to this segment. Must be between 1 and 1000. The weight assigned will be understood in proportion to the weights assigned to other segments in the same segment group.
+            "id": "A String", # ID of this audience segment. This is a read-only, auto-generated field.
+            "name": "A String", # Name of this audience segment. This is a required field and must be less than 65 characters long.
+          },
+        ],
+        "id": "A String", # ID of this audience segment group. This is a read-only, auto-generated field.
+        "name": "A String", # Name of this audience segment group. This is a required field and must be less than 65 characters long.
+      },
+    ],
+  }
+
+
+Returns:
+  An object of the form:
+
+    { # Contains properties of a DCM campaign.
+      "comment": "A String", # Arbitrary comments about this campaign. Must be less than 256 characters long.
+      "startDate": "A String", # Date on which the campaign starts running. The start date can be any date. The hours, minutes, and seconds of the start date should not be set, as doing so will result in an error. This is a required field.
+      "endDate": "A String", # Date on which the campaign will stop running. On insert, the end date must be today or a future date. The end date must be later than or be the same as the start date. If, for example, you set 6/25/2015 as both the start and end dates, the effective campaign run date is just that day only, 6/25/2015. The hours, minutes, and seconds of the end date should not be set, as doing so will result in an error. This is a required field.
+      "clickThroughUrlSuffixProperties": { # Click Through URL Suffix settings. # Click-through URL suffix override properties for this campaign.
+        "clickThroughUrlSuffix": "A String", # Click-through URL suffix to apply to all ads in this entity's scope. Must be less than 128 characters long.
+        "overrideInheritedSuffix": True or False, # Whether this entity should override the inherited click-through URL suffix with its own defined value.
+      },
+      "advertiserId": "A String", # Advertiser ID of this campaign. This is a required field.
+      "advertiserIdDimensionValue": { # Represents a DimensionValue resource. # Dimension value for the advertiser ID of this campaign. This is a read-only, auto-generated field.
+        "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+        "value": "A String", # The value of the dimension.
+        "dimensionName": "A String", # The name of the dimension.
+        "etag": "A String", # The eTag of this response for caching purposes.
+        "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+        "id": "A String", # The ID associated with the value if available.
+      },
+      "eventTagOverrides": [ # Overrides that can be used to activate or deactivate advertiser event tags.
+        { # Event tag override information.
+          "enabled": True or False, # Whether this override is enabled.
+          "id": "A String", # ID of this event tag override. This is a read-only, auto-generated field.
+        },
+      ],
+      "creativeOptimizationConfiguration": { # Creative optimization settings. # Creative optimization configuration for the campaign.
+        "optimizationActivitys": [ # List of optimization activities associated with this configuration.
+          { # Creative optimization activity.
+            "floodlightActivityId": "A String", # Floodlight activity ID of this optimization activity. This is a required field.
+            "floodlightActivityIdDimensionValue": { # Represents a DimensionValue resource. # Dimension value for the ID of the floodlight activity. This is a read-only, auto-generated field.
+              "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+              "value": "A String", # The value of the dimension.
+              "dimensionName": "A String", # The name of the dimension.
+              "etag": "A String", # The eTag of this response for caching purposes.
+              "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+              "id": "A String", # The ID associated with the value if available.
+            },
+            "weight": 42, # Weight associated with this optimization. Must be greater than 1. The weight assigned will be understood in proportion to the weights assigned to the other optimization activities.
+          },
+        ],
+        "optimizationModel": "A String", # Optimization model for this configuration.
+        "id": "A String", # ID of this creative optimization config. This field is auto-generated when the campaign is inserted or updated. It can be null for existing campaigns.
+        "name": "A String", # Name of this creative optimization config. This is a required field and must be less than 129 characters long.
+      },
+      "id": "A String", # ID of this campaign. This is a read-only auto-generated field.
+      "accountId": "A String", # Account ID of this campaign. This is a read-only field that can be left blank.
+      "traffickerEmails": [ # Campaign trafficker contact emails.
+        "A String",
+      ],
+      "archived": True or False, # Whether this campaign has been archived.
+      "externalId": "A String", # External ID for this campaign.
+      "advertiserGroupId": "A String", # Advertiser group ID of the associated advertiser.
+      "idDimensionValue": { # Represents a DimensionValue resource. # Dimension value for the ID of this campaign. This is a read-only, auto-generated field.
+        "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+        "value": "A String", # The value of the dimension.
+        "dimensionName": "A String", # The name of the dimension.
+        "etag": "A String", # The eTag of this response for caching purposes.
+        "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+        "id": "A String", # The ID associated with the value if available.
+      },
+      "billingInvoiceCode": "A String", # Billing invoice code included in the DCM client billing invoices associated with the campaign.
+      "creativeGroupIds": [ # List of creative group IDs that are assigned to the campaign.
+        "A String",
+      ],
+      "additionalCreativeOptimizationConfigurations": [ # Additional creative optimization configurations for the campaign.
+        { # Creative optimization settings.
+          "optimizationActivitys": [ # List of optimization activities associated with this configuration.
+            { # Creative optimization activity.
+              "floodlightActivityId": "A String", # Floodlight activity ID of this optimization activity. This is a required field.
+              "floodlightActivityIdDimensionValue": { # Represents a DimensionValue resource. # Dimension value for the ID of the floodlight activity. This is a read-only, auto-generated field.
+                "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+                "value": "A String", # The value of the dimension.
+                "dimensionName": "A String", # The name of the dimension.
+                "etag": "A String", # The eTag of this response for caching purposes.
+                "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+                "id": "A String", # The ID associated with the value if available.
+              },
+              "weight": 42, # Weight associated with this optimization. Must be greater than 1. The weight assigned will be understood in proportion to the weights assigned to the other optimization activities.
+            },
+          ],
+          "optimizationModel": "A String", # Optimization model for this configuration.
+          "id": "A String", # ID of this creative optimization config. This field is auto-generated when the campaign is inserted or updated. It can be null for existing campaigns.
+          "name": "A String", # Name of this creative optimization config. This is a required field and must be less than 129 characters long.
+        },
+      ],
+      "createInfo": { # Modification timestamp. # Information about the creation of this campaign. This is a read-only field.
+        "time": "A String", # Timestamp of the last change in milliseconds since epoch.
+      },
+      "defaultClickThroughEventTagProperties": { # Properties of inheriting and overriding the default click-through event tag. A campaign may override the event tag defined at the advertiser level, and an ad may also override the campaign's setting further. # Click-through event tag ID override properties for this campaign.
+        "overrideInheritedEventTag": True or False, # Whether this entity should override the inherited default click-through event tag with its own defined value.
+        "defaultClickThroughEventTagId": "A String", # ID of the click-through event tag to apply to all ads in this entity's scope.
+      },
+      "kind": "dfareporting#campaign", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#campaign".
+      "subaccountId": "A String", # Subaccount ID of this campaign. This is a read-only field that can be left blank.
+      "name": "A String", # Name of this campaign. This is a required field and must be less than 256 characters long and unique among campaigns of the same advertiser.
+      "lookbackConfiguration": { # Lookback configuration settings. # Lookback window settings for the campaign.
+        "clickDuration": 42, # Lookback window, in days, from the last time a given user clicked on one of your ads. If you enter 0, clicks will not be considered as triggering events for floodlight tracking. If you leave this field blank, the default value for your account will be used.
+        "postImpressionActivitiesDuration": 42, # Lookback window, in days, from the last time a given user viewed one of your ads. If you enter 0, impressions will not be considered as triggering events for floodlight tracking. If you leave this field blank, the default value for your account will be used.
+      },
+      "nielsenOcrEnabled": True or False, # Whether Nielsen reports are enabled for this campaign.
+      "lastModifiedInfo": { # Modification timestamp. # Information about the most recent modification of this campaign. This is a read-only field.
+        "time": "A String", # Timestamp of the last change in milliseconds since epoch.
+      },
+      "audienceSegmentGroups": [ # Audience segment groups assigned to this campaign. Cannot have more than 300 segment groups.
+        { # Audience Segment Group.
+          "audienceSegments": [ # Audience segments assigned to this group. The number of segments must be between 2 and 100.
+            { # Audience Segment.
+              "allocation": 42, # Weight allocated to this segment. Must be between 1 and 1000. The weight assigned will be understood in proportion to the weights assigned to other segments in the same segment group.
+              "id": "A String", # ID of this audience segment. This is a read-only, auto-generated field.
+              "name": "A String", # Name of this audience segment. This is a required field and must be less than 65 characters long.
+            },
+          ],
+          "id": "A String", # ID of this audience segment group. This is a read-only, auto-generated field.
+          "name": "A String", # Name of this audience segment group. This is a required field and must be less than 65 characters long.
+        },
+      ],
+    }</pre>
+</div>
+
+<div class="method">
+    <code class="details" id="update">update(profileId, body)</code>
+  <pre>Updates an existing campaign.
+
+Args:
+  profileId: string, User profile ID associated with this request. (required)
+  body: object, The request body. (required)
+    The object takes the form of:
+
+{ # Contains properties of a DCM campaign.
+    "comment": "A String", # Arbitrary comments about this campaign. Must be less than 256 characters long.
+    "startDate": "A String", # Date on which the campaign starts running. The start date can be any date. The hours, minutes, and seconds of the start date should not be set, as doing so will result in an error. This is a required field.
+    "endDate": "A String", # Date on which the campaign will stop running. On insert, the end date must be today or a future date. The end date must be later than or be the same as the start date. If, for example, you set 6/25/2015 as both the start and end dates, the effective campaign run date is just that day only, 6/25/2015. The hours, minutes, and seconds of the end date should not be set, as doing so will result in an error. This is a required field.
+    "clickThroughUrlSuffixProperties": { # Click Through URL Suffix settings. # Click-through URL suffix override properties for this campaign.
+      "clickThroughUrlSuffix": "A String", # Click-through URL suffix to apply to all ads in this entity's scope. Must be less than 128 characters long.
+      "overrideInheritedSuffix": True or False, # Whether this entity should override the inherited click-through URL suffix with its own defined value.
+    },
+    "advertiserId": "A String", # Advertiser ID of this campaign. This is a required field.
+    "advertiserIdDimensionValue": { # Represents a DimensionValue resource. # Dimension value for the advertiser ID of this campaign. This is a read-only, auto-generated field.
+      "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+      "value": "A String", # The value of the dimension.
+      "dimensionName": "A String", # The name of the dimension.
+      "etag": "A String", # The eTag of this response for caching purposes.
+      "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+      "id": "A String", # The ID associated with the value if available.
+    },
+    "eventTagOverrides": [ # Overrides that can be used to activate or deactivate advertiser event tags.
+      { # Event tag override information.
+        "enabled": True or False, # Whether this override is enabled.
+        "id": "A String", # ID of this event tag override. This is a read-only, auto-generated field.
+      },
+    ],
+    "creativeOptimizationConfiguration": { # Creative optimization settings. # Creative optimization configuration for the campaign.
+      "optimizationActivitys": [ # List of optimization activities associated with this configuration.
+        { # Creative optimization activity.
+          "floodlightActivityId": "A String", # Floodlight activity ID of this optimization activity. This is a required field.
+          "floodlightActivityIdDimensionValue": { # Represents a DimensionValue resource. # Dimension value for the ID of the floodlight activity. This is a read-only, auto-generated field.
+            "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+            "value": "A String", # The value of the dimension.
+            "dimensionName": "A String", # The name of the dimension.
+            "etag": "A String", # The eTag of this response for caching purposes.
+            "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+            "id": "A String", # The ID associated with the value if available.
+          },
+          "weight": 42, # Weight associated with this optimization. Must be greater than 1. The weight assigned will be understood in proportion to the weights assigned to the other optimization activities.
+        },
+      ],
+      "optimizationModel": "A String", # Optimization model for this configuration.
+      "id": "A String", # ID of this creative optimization config. This field is auto-generated when the campaign is inserted or updated. It can be null for existing campaigns.
+      "name": "A String", # Name of this creative optimization config. This is a required field and must be less than 129 characters long.
+    },
+    "id": "A String", # ID of this campaign. This is a read-only auto-generated field.
+    "accountId": "A String", # Account ID of this campaign. This is a read-only field that can be left blank.
+    "traffickerEmails": [ # Campaign trafficker contact emails.
+      "A String",
+    ],
+    "archived": True or False, # Whether this campaign has been archived.
+    "externalId": "A String", # External ID for this campaign.
+    "advertiserGroupId": "A String", # Advertiser group ID of the associated advertiser.
+    "idDimensionValue": { # Represents a DimensionValue resource. # Dimension value for the ID of this campaign. This is a read-only, auto-generated field.
+      "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+      "value": "A String", # The value of the dimension.
+      "dimensionName": "A String", # The name of the dimension.
+      "etag": "A String", # The eTag of this response for caching purposes.
+      "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+      "id": "A String", # The ID associated with the value if available.
+    },
+    "billingInvoiceCode": "A String", # Billing invoice code included in the DCM client billing invoices associated with the campaign.
+    "creativeGroupIds": [ # List of creative group IDs that are assigned to the campaign.
+      "A String",
+    ],
+    "additionalCreativeOptimizationConfigurations": [ # Additional creative optimization configurations for the campaign.
+      { # Creative optimization settings.
+        "optimizationActivitys": [ # List of optimization activities associated with this configuration.
+          { # Creative optimization activity.
+            "floodlightActivityId": "A String", # Floodlight activity ID of this optimization activity. This is a required field.
+            "floodlightActivityIdDimensionValue": { # Represents a DimensionValue resource. # Dimension value for the ID of the floodlight activity. This is a read-only, auto-generated field.
+              "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+              "value": "A String", # The value of the dimension.
+              "dimensionName": "A String", # The name of the dimension.
+              "etag": "A String", # The eTag of this response for caching purposes.
+              "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+              "id": "A String", # The ID associated with the value if available.
+            },
+            "weight": 42, # Weight associated with this optimization. Must be greater than 1. The weight assigned will be understood in proportion to the weights assigned to the other optimization activities.
+          },
+        ],
+        "optimizationModel": "A String", # Optimization model for this configuration.
+        "id": "A String", # ID of this creative optimization config. This field is auto-generated when the campaign is inserted or updated. It can be null for existing campaigns.
+        "name": "A String", # Name of this creative optimization config. This is a required field and must be less than 129 characters long.
+      },
+    ],
+    "createInfo": { # Modification timestamp. # Information about the creation of this campaign. This is a read-only field.
+      "time": "A String", # Timestamp of the last change in milliseconds since epoch.
+    },
+    "defaultClickThroughEventTagProperties": { # Properties of inheriting and overriding the default click-through event tag. A campaign may override the event tag defined at the advertiser level, and an ad may also override the campaign's setting further. # Click-through event tag ID override properties for this campaign.
+      "overrideInheritedEventTag": True or False, # Whether this entity should override the inherited default click-through event tag with its own defined value.
+      "defaultClickThroughEventTagId": "A String", # ID of the click-through event tag to apply to all ads in this entity's scope.
+    },
+    "kind": "dfareporting#campaign", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#campaign".
+    "subaccountId": "A String", # Subaccount ID of this campaign. This is a read-only field that can be left blank.
+    "name": "A String", # Name of this campaign. This is a required field and must be less than 256 characters long and unique among campaigns of the same advertiser.
+    "lookbackConfiguration": { # Lookback configuration settings. # Lookback window settings for the campaign.
+      "clickDuration": 42, # Lookback window, in days, from the last time a given user clicked on one of your ads. If you enter 0, clicks will not be considered as triggering events for floodlight tracking. If you leave this field blank, the default value for your account will be used.
+      "postImpressionActivitiesDuration": 42, # Lookback window, in days, from the last time a given user viewed one of your ads. If you enter 0, impressions will not be considered as triggering events for floodlight tracking. If you leave this field blank, the default value for your account will be used.
+    },
+    "nielsenOcrEnabled": True or False, # Whether Nielsen reports are enabled for this campaign.
+    "lastModifiedInfo": { # Modification timestamp. # Information about the most recent modification of this campaign. This is a read-only field.
+      "time": "A String", # Timestamp of the last change in milliseconds since epoch.
+    },
+    "audienceSegmentGroups": [ # Audience segment groups assigned to this campaign. Cannot have more than 300 segment groups.
+      { # Audience Segment Group.
+        "audienceSegments": [ # Audience segments assigned to this group. The number of segments must be between 2 and 100.
+          { # Audience Segment.
+            "allocation": 42, # Weight allocated to this segment. Must be between 1 and 1000. The weight assigned will be understood in proportion to the weights assigned to other segments in the same segment group.
+            "id": "A String", # ID of this audience segment. This is a read-only, auto-generated field.
+            "name": "A String", # Name of this audience segment. This is a required field and must be less than 65 characters long.
+          },
+        ],
+        "id": "A String", # ID of this audience segment group. This is a read-only, auto-generated field.
+        "name": "A String", # Name of this audience segment group. This is a required field and must be less than 65 characters long.
+      },
+    ],
+  }
+
+
+Returns:
+  An object of the form:
+
+    { # Contains properties of a DCM campaign.
+      "comment": "A String", # Arbitrary comments about this campaign. Must be less than 256 characters long.
+      "startDate": "A String", # Date on which the campaign starts running. The start date can be any date. The hours, minutes, and seconds of the start date should not be set, as doing so will result in an error. This is a required field.
+      "endDate": "A String", # Date on which the campaign will stop running. On insert, the end date must be today or a future date. The end date must be later than or be the same as the start date. If, for example, you set 6/25/2015 as both the start and end dates, the effective campaign run date is just that day only, 6/25/2015. The hours, minutes, and seconds of the end date should not be set, as doing so will result in an error. This is a required field.
+      "clickThroughUrlSuffixProperties": { # Click Through URL Suffix settings. # Click-through URL suffix override properties for this campaign.
+        "clickThroughUrlSuffix": "A String", # Click-through URL suffix to apply to all ads in this entity's scope. Must be less than 128 characters long.
+        "overrideInheritedSuffix": True or False, # Whether this entity should override the inherited click-through URL suffix with its own defined value.
+      },
+      "advertiserId": "A String", # Advertiser ID of this campaign. This is a required field.
+      "advertiserIdDimensionValue": { # Represents a DimensionValue resource. # Dimension value for the advertiser ID of this campaign. This is a read-only, auto-generated field.
+        "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+        "value": "A String", # The value of the dimension.
+        "dimensionName": "A String", # The name of the dimension.
+        "etag": "A String", # The eTag of this response for caching purposes.
+        "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+        "id": "A String", # The ID associated with the value if available.
+      },
+      "eventTagOverrides": [ # Overrides that can be used to activate or deactivate advertiser event tags.
+        { # Event tag override information.
+          "enabled": True or False, # Whether this override is enabled.
+          "id": "A String", # ID of this event tag override. This is a read-only, auto-generated field.
+        },
+      ],
+      "creativeOptimizationConfiguration": { # Creative optimization settings. # Creative optimization configuration for the campaign.
+        "optimizationActivitys": [ # List of optimization activities associated with this configuration.
+          { # Creative optimization activity.
+            "floodlightActivityId": "A String", # Floodlight activity ID of this optimization activity. This is a required field.
+            "floodlightActivityIdDimensionValue": { # Represents a DimensionValue resource. # Dimension value for the ID of the floodlight activity. This is a read-only, auto-generated field.
+              "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+              "value": "A String", # The value of the dimension.
+              "dimensionName": "A String", # The name of the dimension.
+              "etag": "A String", # The eTag of this response for caching purposes.
+              "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+              "id": "A String", # The ID associated with the value if available.
+            },
+            "weight": 42, # Weight associated with this optimization. Must be greater than 1. The weight assigned will be understood in proportion to the weights assigned to the other optimization activities.
+          },
+        ],
+        "optimizationModel": "A String", # Optimization model for this configuration.
+        "id": "A String", # ID of this creative optimization config. This field is auto-generated when the campaign is inserted or updated. It can be null for existing campaigns.
+        "name": "A String", # Name of this creative optimization config. This is a required field and must be less than 129 characters long.
+      },
+      "id": "A String", # ID of this campaign. This is a read-only auto-generated field.
+      "accountId": "A String", # Account ID of this campaign. This is a read-only field that can be left blank.
+      "traffickerEmails": [ # Campaign trafficker contact emails.
+        "A String",
+      ],
+      "archived": True or False, # Whether this campaign has been archived.
+      "externalId": "A String", # External ID for this campaign.
+      "advertiserGroupId": "A String", # Advertiser group ID of the associated advertiser.
+      "idDimensionValue": { # Represents a DimensionValue resource. # Dimension value for the ID of this campaign. This is a read-only, auto-generated field.
+        "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+        "value": "A String", # The value of the dimension.
+        "dimensionName": "A String", # The name of the dimension.
+        "etag": "A String", # The eTag of this response for caching purposes.
+        "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+        "id": "A String", # The ID associated with the value if available.
+      },
+      "billingInvoiceCode": "A String", # Billing invoice code included in the DCM client billing invoices associated with the campaign.
+      "creativeGroupIds": [ # List of creative group IDs that are assigned to the campaign.
+        "A String",
+      ],
+      "additionalCreativeOptimizationConfigurations": [ # Additional creative optimization configurations for the campaign.
+        { # Creative optimization settings.
+          "optimizationActivitys": [ # List of optimization activities associated with this configuration.
+            { # Creative optimization activity.
+              "floodlightActivityId": "A String", # Floodlight activity ID of this optimization activity. This is a required field.
+              "floodlightActivityIdDimensionValue": { # Represents a DimensionValue resource. # Dimension value for the ID of the floodlight activity. This is a read-only, auto-generated field.
+                "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+                "value": "A String", # The value of the dimension.
+                "dimensionName": "A String", # The name of the dimension.
+                "etag": "A String", # The eTag of this response for caching purposes.
+                "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+                "id": "A String", # The ID associated with the value if available.
+              },
+              "weight": 42, # Weight associated with this optimization. Must be greater than 1. The weight assigned will be understood in proportion to the weights assigned to the other optimization activities.
+            },
+          ],
+          "optimizationModel": "A String", # Optimization model for this configuration.
+          "id": "A String", # ID of this creative optimization config. This field is auto-generated when the campaign is inserted or updated. It can be null for existing campaigns.
+          "name": "A String", # Name of this creative optimization config. This is a required field and must be less than 129 characters long.
+        },
+      ],
+      "createInfo": { # Modification timestamp. # Information about the creation of this campaign. This is a read-only field.
+        "time": "A String", # Timestamp of the last change in milliseconds since epoch.
+      },
+      "defaultClickThroughEventTagProperties": { # Properties of inheriting and overriding the default click-through event tag. A campaign may override the event tag defined at the advertiser level, and an ad may also override the campaign's setting further. # Click-through event tag ID override properties for this campaign.
+        "overrideInheritedEventTag": True or False, # Whether this entity should override the inherited default click-through event tag with its own defined value.
+        "defaultClickThroughEventTagId": "A String", # ID of the click-through event tag to apply to all ads in this entity's scope.
+      },
+      "kind": "dfareporting#campaign", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#campaign".
+      "subaccountId": "A String", # Subaccount ID of this campaign. This is a read-only field that can be left blank.
+      "name": "A String", # Name of this campaign. This is a required field and must be less than 256 characters long and unique among campaigns of the same advertiser.
+      "lookbackConfiguration": { # Lookback configuration settings. # Lookback window settings for the campaign.
+        "clickDuration": 42, # Lookback window, in days, from the last time a given user clicked on one of your ads. If you enter 0, clicks will not be considered as triggering events for floodlight tracking. If you leave this field blank, the default value for your account will be used.
+        "postImpressionActivitiesDuration": 42, # Lookback window, in days, from the last time a given user viewed one of your ads. If you enter 0, impressions will not be considered as triggering events for floodlight tracking. If you leave this field blank, the default value for your account will be used.
+      },
+      "nielsenOcrEnabled": True or False, # Whether Nielsen reports are enabled for this campaign.
+      "lastModifiedInfo": { # Modification timestamp. # Information about the most recent modification of this campaign. This is a read-only field.
+        "time": "A String", # Timestamp of the last change in milliseconds since epoch.
+      },
+      "audienceSegmentGroups": [ # Audience segment groups assigned to this campaign. Cannot have more than 300 segment groups.
+        { # Audience Segment Group.
+          "audienceSegments": [ # Audience segments assigned to this group. The number of segments must be between 2 and 100.
+            { # Audience Segment.
+              "allocation": 42, # Weight allocated to this segment. Must be between 1 and 1000. The weight assigned will be understood in proportion to the weights assigned to other segments in the same segment group.
+              "id": "A String", # ID of this audience segment. This is a read-only, auto-generated field.
+              "name": "A String", # Name of this audience segment. This is a required field and must be less than 65 characters long.
+            },
+          ],
+          "id": "A String", # ID of this audience segment group. This is a read-only, auto-generated field.
+          "name": "A String", # Name of this audience segment group. This is a required field and must be less than 65 characters long.
+        },
+      ],
+    }</pre>
+</div>
+
+</body></html>
\ No newline at end of file
diff --git a/docs/dyn/dfareporting_v2_7.changeLogs.html b/docs/dyn/dfareporting_v2_7.changeLogs.html
new file mode 100644
index 0000000..56ffb38
--- /dev/null
+++ b/docs/dyn/dfareporting_v2_7.changeLogs.html
@@ -0,0 +1,232 @@
+<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="dfareporting_v2_7.html">DCM/DFA Reporting And Trafficking API</a> . <a href="dfareporting_v2_7.changeLogs.html">changeLogs</a></h1>
+<h2>Instance Methods</h2>
+<p class="toc_element">
+  <code><a href="#get">get(profileId, id)</a></code></p>
+<p class="firstline">Gets one change log by ID.</p>
+<p class="toc_element">
+  <code><a href="#list">list(profileId, objectType=None, maxChangeTime=None, pageToken=None, maxResults=None, action=None, minChangeTime=None, searchString=None, userProfileIds=None, ids=None, objectIds=None)</a></code></p>
+<p class="firstline">Retrieves a list of change logs. This method supports paging.</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>
+<h3>Method Details</h3>
+<div class="method">
+    <code class="details" id="get">get(profileId, id)</code>
+  <pre>Gets one change log by ID.
+
+Args:
+  profileId: string, User profile ID associated with this request. (required)
+  id: string, Change log ID. (required)
+
+Returns:
+  An object of the form:
+
+    { # Describes a change that a user has made to a resource.
+    "changeTime": "A String", # Time when the object was modified.
+    "kind": "dfareporting#changeLog", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#changeLog".
+    "subaccountId": "A String", # Subaccount ID of the modified object.
+    "userProfileId": "A String", # ID of the user who modified the object.
+    "objectId": "A String", # ID of the object of this change log. The object could be a campaign, placement, ad, or other type.
+    "newValue": "A String", # New value of the object field.
+    "userProfileName": "A String", # User profile name of the user who modified the object.
+    "fieldName": "A String", # Field name of the object which changed.
+    "oldValue": "A String", # Old value of the object field.
+    "action": "A String", # Action which caused the change.
+    "transactionId": "A String", # Transaction ID of this change log. When a single API call results in many changes, each change will have a separate ID in the change log but will share the same transactionId.
+    "objectType": "A String", # Object type of the change log.
+    "id": "A String", # ID of this change log.
+    "accountId": "A String", # Account ID of the modified object.
+  }</pre>
+</div>
+
+<div class="method">
+    <code class="details" id="list">list(profileId, objectType=None, maxChangeTime=None, pageToken=None, maxResults=None, action=None, minChangeTime=None, searchString=None, userProfileIds=None, ids=None, objectIds=None)</code>
+  <pre>Retrieves a list of change logs. This method supports paging.
+
+Args:
+  profileId: string, User profile ID associated with this request. (required)
+  objectType: string, Select only change logs with the specified object type.
+    Allowed values
+      OBJECT_ACCOUNT - 
+      OBJECT_ACCOUNT_BILLING_FEATURE - 
+      OBJECT_AD - 
+      OBJECT_ADVERTISER - 
+      OBJECT_ADVERTISER_GROUP - 
+      OBJECT_BILLING_ACCOUNT_GROUP - 
+      OBJECT_BILLING_FEATURE - 
+      OBJECT_BILLING_MINIMUM_FEE - 
+      OBJECT_BILLING_PROFILE - 
+      OBJECT_CAMPAIGN - 
+      OBJECT_CONTENT_CATEGORY - 
+      OBJECT_CREATIVE - 
+      OBJECT_CREATIVE_ASSET - 
+      OBJECT_CREATIVE_BUNDLE - 
+      OBJECT_CREATIVE_FIELD - 
+      OBJECT_CREATIVE_GROUP - 
+      OBJECT_DFA_SITE - 
+      OBJECT_EVENT_TAG - 
+      OBJECT_FLOODLIGHT_ACTIVITY_GROUP - 
+      OBJECT_FLOODLIGHT_ACTVITY - 
+      OBJECT_FLOODLIGHT_CONFIGURATION - 
+      OBJECT_INSTREAM_CREATIVE - 
+      OBJECT_LANDING_PAGE - 
+      OBJECT_MEDIA_ORDER - 
+      OBJECT_PLACEMENT - 
+      OBJECT_PLACEMENT_STRATEGY - 
+      OBJECT_PLAYSTORE_LINK - 
+      OBJECT_PROVIDED_LIST_CLIENT - 
+      OBJECT_RATE_CARD - 
+      OBJECT_REMARKETING_LIST - 
+      OBJECT_RICHMEDIA_CREATIVE - 
+      OBJECT_SD_SITE - 
+      OBJECT_SEARCH_LIFT_STUDY - 
+      OBJECT_SIZE - 
+      OBJECT_SUBACCOUNT - 
+      OBJECT_TARGETING_TEMPLATE - 
+      OBJECT_USER_PROFILE - 
+      OBJECT_USER_PROFILE_FILTER - 
+      OBJECT_USER_ROLE - 
+  maxChangeTime: string, Select only change logs whose change time is before the specified maxChangeTime.The time should be formatted as an RFC3339 date/time string. For example, for 10:54 PM on July 18th, 2015, in the America/New York time zone, the format is "2015-07-18T22:54:00-04:00". In other words, the year, month, day, the letter T, the hour (24-hour clock system), minute, second, and then the time zone offset.
+  pageToken: string, Value of the nextPageToken from the previous result page.
+  maxResults: integer, Maximum number of results to return.
+  action: string, Select only change logs with the specified action.
+    Allowed values
+      ACTION_ADD - 
+      ACTION_ASSIGN - 
+      ACTION_ASSOCIATE - 
+      ACTION_CREATE - 
+      ACTION_DELETE - 
+      ACTION_DISABLE - 
+      ACTION_EMAIL_TAGS - 
+      ACTION_ENABLE - 
+      ACTION_LINK - 
+      ACTION_MARK_AS_DEFAULT - 
+      ACTION_PUSH - 
+      ACTION_REMOVE - 
+      ACTION_SEND - 
+      ACTION_SHARE - 
+      ACTION_UNASSIGN - 
+      ACTION_UNLINK - 
+      ACTION_UPDATE - 
+  minChangeTime: string, Select only change logs whose change time is before the specified minChangeTime.The time should be formatted as an RFC3339 date/time string. For example, for 10:54 PM on July 18th, 2015, in the America/New York time zone, the format is "2015-07-18T22:54:00-04:00". In other words, the year, month, day, the letter T, the hour (24-hour clock system), minute, second, and then the time zone offset.
+  searchString: string, Select only change logs whose object ID, user name, old or new values match the search string.
+  userProfileIds: string, Select only change logs with these user profile IDs. (repeated)
+  ids: string, Select only change logs with these IDs. (repeated)
+  objectIds: string, Select only change logs with these object IDs. (repeated)
+
+Returns:
+  An object of the form:
+
+    { # Change Log List Response
+    "nextPageToken": "A String", # Pagination token to be used for the next list operation.
+    "kind": "dfareporting#changeLogsListResponse", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#changeLogsListResponse".
+    "changeLogs": [ # Change log collection.
+      { # Describes a change that a user has made to a resource.
+        "changeTime": "A String", # Time when the object was modified.
+        "kind": "dfareporting#changeLog", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#changeLog".
+        "subaccountId": "A String", # Subaccount ID of the modified object.
+        "userProfileId": "A String", # ID of the user who modified the object.
+        "objectId": "A String", # ID of the object of this change log. The object could be a campaign, placement, ad, or other type.
+        "newValue": "A String", # New value of the object field.
+        "userProfileName": "A String", # User profile name of the user who modified the object.
+        "fieldName": "A String", # Field name of the object which changed.
+        "oldValue": "A String", # Old value of the object field.
+        "action": "A String", # Action which caused the change.
+        "transactionId": "A String", # Transaction ID of this change log. When a single API call results in many changes, each change will have a separate ID in the change log but will share the same transactionId.
+        "objectType": "A String", # Object type of the change log.
+        "id": "A String", # ID of this change log.
+        "accountId": "A String", # Account ID of the modified object.
+      },
+    ],
+  }</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>
+
+</body></html>
\ No newline at end of file
diff --git a/docs/dyn/dfareporting_v2_7.cities.html b/docs/dyn/dfareporting_v2_7.cities.html
new file mode 100644
index 0000000..56882ae
--- /dev/null
+++ b/docs/dyn/dfareporting_v2_7.cities.html
@@ -0,0 +1,113 @@
+<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="dfareporting_v2_7.html">DCM/DFA Reporting And Trafficking API</a> . <a href="dfareporting_v2_7.cities.html">cities</a></h1>
+<h2>Instance Methods</h2>
+<p class="toc_element">
+  <code><a href="#list">list(profileId, dartIds=None, namePrefix=None, regionDartIds=None, countryDartIds=None)</a></code></p>
+<p class="firstline">Retrieves a list of cities, possibly filtered.</p>
+<h3>Method Details</h3>
+<div class="method">
+    <code class="details" id="list">list(profileId, dartIds=None, namePrefix=None, regionDartIds=None, countryDartIds=None)</code>
+  <pre>Retrieves a list of cities, possibly filtered.
+
+Args:
+  profileId: string, User profile ID associated with this request. (required)
+  dartIds: string, Select only cities with these DART IDs. (repeated)
+  namePrefix: string, Select only cities with names starting with this prefix.
+  regionDartIds: string, Select only cities from these regions. (repeated)
+  countryDartIds: string, Select only cities from these countries. (repeated)
+
+Returns:
+  An object of the form:
+
+    { # City List Response
+    "kind": "dfareporting#citiesListResponse", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#citiesListResponse".
+    "cities": [ # City collection.
+      { # Contains information about a city that can be targeted by ads.
+        "kind": "dfareporting#city", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#city".
+        "countryDartId": "A String", # DART ID of the country to which this city belongs.
+        "name": "A String", # Name of this city.
+        "countryCode": "A String", # Country code of the country to which this city belongs.
+        "metroCode": "A String", # Metro region code of the metro region (DMA) to which this city belongs.
+        "regionCode": "A String", # Region code of the region to which this city belongs.
+        "metroDmaId": "A String", # ID of the metro region (DMA) to which this city belongs.
+        "dartId": "A String", # DART ID of this city. This is the ID used for targeting and generating reports.
+        "regionDartId": "A String", # DART ID of the region to which this city belongs.
+      },
+    ],
+  }</pre>
+</div>
+
+</body></html>
\ No newline at end of file
diff --git a/docs/dyn/dfareporting_v2_7.connectionTypes.html b/docs/dyn/dfareporting_v2_7.connectionTypes.html
new file mode 100644
index 0000000..9f5610f
--- /dev/null
+++ b/docs/dyn/dfareporting_v2_7.connectionTypes.html
@@ -0,0 +1,124 @@
+<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="dfareporting_v2_7.html">DCM/DFA Reporting And Trafficking API</a> . <a href="dfareporting_v2_7.connectionTypes.html">connectionTypes</a></h1>
+<h2>Instance Methods</h2>
+<p class="toc_element">
+  <code><a href="#get">get(profileId, id)</a></code></p>
+<p class="firstline">Gets one connection type by ID.</p>
+<p class="toc_element">
+  <code><a href="#list">list(profileId)</a></code></p>
+<p class="firstline">Retrieves a list of connection types.</p>
+<h3>Method Details</h3>
+<div class="method">
+    <code class="details" id="get">get(profileId, id)</code>
+  <pre>Gets one connection type by ID.
+
+Args:
+  profileId: string, User profile ID associated with this request. (required)
+  id: string, Connection type ID. (required)
+
+Returns:
+  An object of the form:
+
+    { # Contains information about an internet connection type that can be targeted by ads. Clients can use the connection type to target mobile vs. broadband users.
+    "kind": "dfareporting#connectionType", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#connectionType".
+    "id": "A String", # ID of this connection type.
+    "name": "A String", # Name of this connection type.
+  }</pre>
+</div>
+
+<div class="method">
+    <code class="details" id="list">list(profileId)</code>
+  <pre>Retrieves a list of connection types.
+
+Args:
+  profileId: string, User profile ID associated with this request. (required)
+
+Returns:
+  An object of the form:
+
+    { # Connection Type List Response
+    "kind": "dfareporting#connectionTypesListResponse", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#connectionTypesListResponse".
+    "connectionTypes": [ # Collection of connection types such as broadband and mobile.
+      { # Contains information about an internet connection type that can be targeted by ads. Clients can use the connection type to target mobile vs. broadband users.
+        "kind": "dfareporting#connectionType", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#connectionType".
+        "id": "A String", # ID of this connection type.
+        "name": "A String", # Name of this connection type.
+      },
+    ],
+  }</pre>
+</div>
+
+</body></html>
\ No newline at end of file
diff --git a/docs/dyn/dfareporting_v2_7.contentCategories.html b/docs/dyn/dfareporting_v2_7.contentCategories.html
new file mode 100644
index 0000000..d1e3117
--- /dev/null
+++ b/docs/dyn/dfareporting_v2_7.contentCategories.html
@@ -0,0 +1,263 @@
+<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="dfareporting_v2_7.html">DCM/DFA Reporting And Trafficking API</a> . <a href="dfareporting_v2_7.contentCategories.html">contentCategories</a></h1>
+<h2>Instance Methods</h2>
+<p class="toc_element">
+  <code><a href="#delete">delete(profileId, id)</a></code></p>
+<p class="firstline">Deletes an existing content category.</p>
+<p class="toc_element">
+  <code><a href="#get">get(profileId, id)</a></code></p>
+<p class="firstline">Gets one content category by ID.</p>
+<p class="toc_element">
+  <code><a href="#insert">insert(profileId, body)</a></code></p>
+<p class="firstline">Inserts a new content category.</p>
+<p class="toc_element">
+  <code><a href="#list">list(profileId, searchString=None, pageToken=None, sortField=None, ids=None, maxResults=None, sortOrder=None)</a></code></p>
+<p class="firstline">Retrieves a list of content categories, possibly filtered. This method supports paging.</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="#patch">patch(profileId, id, body)</a></code></p>
+<p class="firstline">Updates an existing content category. This method supports patch semantics.</p>
+<p class="toc_element">
+  <code><a href="#update">update(profileId, body)</a></code></p>
+<p class="firstline">Updates an existing content category.</p>
+<h3>Method Details</h3>
+<div class="method">
+    <code class="details" id="delete">delete(profileId, id)</code>
+  <pre>Deletes an existing content category.
+
+Args:
+  profileId: string, User profile ID associated with this request. (required)
+  id: string, Content category ID. (required)
+</pre>
+</div>
+
+<div class="method">
+    <code class="details" id="get">get(profileId, id)</code>
+  <pre>Gets one content category by ID.
+
+Args:
+  profileId: string, User profile ID associated with this request. (required)
+  id: string, Content category ID. (required)
+
+Returns:
+  An object of the form:
+
+    { # Organizes placements according to the contents of their associated webpages.
+      "kind": "dfareporting#contentCategory", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#contentCategory".
+      "id": "A String", # ID of this content category. This is a read-only, auto-generated field.
+      "name": "A String", # Name of this content category. This is a required field and must be less than 256 characters long and unique among content categories of the same account.
+      "accountId": "A String", # Account ID of this content category. This is a read-only field that can be left blank.
+    }</pre>
+</div>
+
+<div class="method">
+    <code class="details" id="insert">insert(profileId, body)</code>
+  <pre>Inserts a new content category.
+
+Args:
+  profileId: string, User profile ID associated with this request. (required)
+  body: object, The request body. (required)
+    The object takes the form of:
+
+{ # Organizes placements according to the contents of their associated webpages.
+    "kind": "dfareporting#contentCategory", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#contentCategory".
+    "id": "A String", # ID of this content category. This is a read-only, auto-generated field.
+    "name": "A String", # Name of this content category. This is a required field and must be less than 256 characters long and unique among content categories of the same account.
+    "accountId": "A String", # Account ID of this content category. This is a read-only field that can be left blank.
+  }
+
+
+Returns:
+  An object of the form:
+
+    { # Organizes placements according to the contents of their associated webpages.
+      "kind": "dfareporting#contentCategory", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#contentCategory".
+      "id": "A String", # ID of this content category. This is a read-only, auto-generated field.
+      "name": "A String", # Name of this content category. This is a required field and must be less than 256 characters long and unique among content categories of the same account.
+      "accountId": "A String", # Account ID of this content category. This is a read-only field that can be left blank.
+    }</pre>
+</div>
+
+<div class="method">
+    <code class="details" id="list">list(profileId, searchString=None, pageToken=None, sortField=None, ids=None, maxResults=None, sortOrder=None)</code>
+  <pre>Retrieves a list of content categories, possibly filtered. This method supports paging.
+
+Args:
+  profileId: string, User profile ID associated with this request. (required)
+  searchString: string, Allows searching for objects by name or ID. Wildcards (*) are allowed. For example, "contentcategory*2015" will return objects with names like "contentcategory June 2015", "contentcategory April 2015", or simply "contentcategory 2015". Most of the searches also add wildcards implicitly at the start and the end of the search string. For example, a search string of "contentcategory" will match objects with name "my contentcategory", "contentcategory 2015", or simply "contentcategory".
+  pageToken: string, Value of the nextPageToken from the previous result page.
+  sortField: string, Field by which to sort the list.
+    Allowed values
+      ID - 
+      NAME - 
+  ids: string, Select only content categories with these IDs. (repeated)
+  maxResults: integer, Maximum number of results to return.
+  sortOrder: string, Order of sorted results, default is ASCENDING.
+    Allowed values
+      ASCENDING - 
+      DESCENDING - 
+
+Returns:
+  An object of the form:
+
+    { # Content Category List Response
+    "nextPageToken": "A String", # Pagination token to be used for the next list operation.
+    "kind": "dfareporting#contentCategoriesListResponse", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#contentCategoriesListResponse".
+    "contentCategories": [ # Content category collection.
+      { # Organizes placements according to the contents of their associated webpages.
+          "kind": "dfareporting#contentCategory", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#contentCategory".
+          "id": "A String", # ID of this content category. This is a read-only, auto-generated field.
+          "name": "A String", # Name of this content category. This is a required field and must be less than 256 characters long and unique among content categories of the same account.
+          "accountId": "A String", # Account ID of this content category. This is a read-only field that can be left blank.
+        },
+    ],
+  }</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="patch">patch(profileId, id, body)</code>
+  <pre>Updates an existing content category. This method supports patch semantics.
+
+Args:
+  profileId: string, User profile ID associated with this request. (required)
+  id: string, Content category ID. (required)
+  body: object, The request body. (required)
+    The object takes the form of:
+
+{ # Organizes placements according to the contents of their associated webpages.
+    "kind": "dfareporting#contentCategory", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#contentCategory".
+    "id": "A String", # ID of this content category. This is a read-only, auto-generated field.
+    "name": "A String", # Name of this content category. This is a required field and must be less than 256 characters long and unique among content categories of the same account.
+    "accountId": "A String", # Account ID of this content category. This is a read-only field that can be left blank.
+  }
+
+
+Returns:
+  An object of the form:
+
+    { # Organizes placements according to the contents of their associated webpages.
+      "kind": "dfareporting#contentCategory", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#contentCategory".
+      "id": "A String", # ID of this content category. This is a read-only, auto-generated field.
+      "name": "A String", # Name of this content category. This is a required field and must be less than 256 characters long and unique among content categories of the same account.
+      "accountId": "A String", # Account ID of this content category. This is a read-only field that can be left blank.
+    }</pre>
+</div>
+
+<div class="method">
+    <code class="details" id="update">update(profileId, body)</code>
+  <pre>Updates an existing content category.
+
+Args:
+  profileId: string, User profile ID associated with this request. (required)
+  body: object, The request body. (required)
+    The object takes the form of:
+
+{ # Organizes placements according to the contents of their associated webpages.
+    "kind": "dfareporting#contentCategory", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#contentCategory".
+    "id": "A String", # ID of this content category. This is a read-only, auto-generated field.
+    "name": "A String", # Name of this content category. This is a required field and must be less than 256 characters long and unique among content categories of the same account.
+    "accountId": "A String", # Account ID of this content category. This is a read-only field that can be left blank.
+  }
+
+
+Returns:
+  An object of the form:
+
+    { # Organizes placements according to the contents of their associated webpages.
+      "kind": "dfareporting#contentCategory", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#contentCategory".
+      "id": "A String", # ID of this content category. This is a read-only, auto-generated field.
+      "name": "A String", # Name of this content category. This is a required field and must be less than 256 characters long and unique among content categories of the same account.
+      "accountId": "A String", # Account ID of this content category. This is a read-only field that can be left blank.
+    }</pre>
+</div>
+
+</body></html>
\ No newline at end of file
diff --git a/docs/dyn/dfareporting_v2_7.conversions.html b/docs/dyn/dfareporting_v2_7.conversions.html
new file mode 100644
index 0000000..9578343
--- /dev/null
+++ b/docs/dyn/dfareporting_v2_7.conversions.html
@@ -0,0 +1,170 @@
+<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="dfareporting_v2_7.html">DCM/DFA Reporting And Trafficking API</a> . <a href="dfareporting_v2_7.conversions.html">conversions</a></h1>
+<h2>Instance Methods</h2>
+<p class="toc_element">
+  <code><a href="#batchinsert">batchinsert(profileId, body)</a></code></p>
+<p class="firstline">Inserts conversions.</p>
+<h3>Method Details</h3>
+<div class="method">
+    <code class="details" id="batchinsert">batchinsert(profileId, body)</code>
+  <pre>Inserts conversions.
+
+Args:
+  profileId: string, User profile ID associated with this request. (required)
+  body: object, The request body. (required)
+    The object takes the form of:
+
+{ # Insert Conversions Request.
+    "conversions": [ # The set of conversions to insert.
+      { # A Conversion represents when a user successfully performs a desired action after seeing an ad.
+        "ordinal": "A String", # The ordinal of the conversion. Use this field to control how conversions of the same user and day are de-duplicated. This is a required field.
+        "timestampMicros": "A String", # The timestamp of conversion, in Unix epoch micros. This is a required field.
+        "kind": "dfareporting#conversion", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#conversion".
+        "childDirectedTreatment": True or False, # Whether the conversion was directed toward children.
+        "encryptedUserId": "A String", # The alphanumeric encrypted user ID. When set, encryptionInfo should also be specified. This field is mutually exclusive with encryptedUserIdCandidates[] and mobileDeviceId. This or encryptedUserIdCandidates[] or mobileDeviceId is a required field.
+        "customVariables": [ # Custom floodlight variables.
+          { # A custom floodlight variable.
+            "kind": "dfareporting#customFloodlightVariable", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#customFloodlightVariable".
+            "type": "A String", # The type of custom floodlight variable to supply a value for. These map to the "u[1-20]=" in the tags.
+            "value": "A String", # The value of the custom floodlight variable. The length of string must not exceed 50 characters.
+          },
+        ],
+        "floodlightConfigurationId": "A String", # Floodlight Configuration ID of this conversion. This is a required field.
+        "mobileDeviceId": "A String", # The mobile device ID. This field is mutually exclusive with encryptedUserId and encryptedUserIdCandidates[]. This or encryptedUserId or encryptedUserIdCandidates[] is a required field.
+        "value": 3.14, # The value of the conversion.
+        "limitAdTracking": True or False, # Whether Limit Ad Tracking is enabled. When set to true, the conversion will be used for reporting but not targeting. This will prevent remarketing.
+        "quantity": "A String", # The quantity of the conversion.
+        "floodlightActivityId": "A String", # Floodlight Activity ID of this conversion. This is a required field.
+        "encryptedUserIdCandidates": [ # A list of the alphanumeric encrypted user IDs. Any user ID with exposure prior to the conversion timestamp will be used in the inserted conversion. If no such user ID is found then the conversion will be rejected with NO_COOKIE_MATCH_FOUND error. When set, encryptionInfo should also be specified. This field should only be used when calling conversions.batchinsert. This field is mutually exclusive with encryptedUserId and mobileDeviceId. This or encryptedUserId or mobileDeviceId is a required field.
+          "A String",
+        ],
+      },
+    ],
+    "kind": "dfareporting#conversionsBatchInsertRequest", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#conversionsBatchInsertRequest".
+    "encryptionInfo": { # A description of how user IDs are encrypted. # Describes how encryptedUserId or encryptedUserIdCandidates[] is encrypted. This is a required field if encryptedUserId or encryptedUserIdCandidates[] is used.
+      "kind": "dfareporting#encryptionInfo", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#encryptionInfo".
+      "encryptionEntityId": "A String", # The encryption entity ID. This should match the encryption configuration for ad serving or Data Transfer.
+      "encryptionSource": "A String", # Describes whether the encrypted cookie was received from ad serving (the %m macro) or from Data Transfer.
+      "encryptionEntityType": "A String", # The encryption entity type. This should match the encryption configuration for ad serving or Data Transfer.
+    },
+  }
+
+
+Returns:
+  An object of the form:
+
+    { # Insert Conversions Response.
+    "status": [ # The status of each conversion's insertion status. The status is returned in the same order that conversions are inserted.
+      { # The original conversion that was inserted or updated and whether there were any errors.
+        "conversion": { # A Conversion represents when a user successfully performs a desired action after seeing an ad. # The original conversion that was inserted or updated.
+          "ordinal": "A String", # The ordinal of the conversion. Use this field to control how conversions of the same user and day are de-duplicated. This is a required field.
+          "timestampMicros": "A String", # The timestamp of conversion, in Unix epoch micros. This is a required field.
+          "kind": "dfareporting#conversion", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#conversion".
+          "childDirectedTreatment": True or False, # Whether the conversion was directed toward children.
+          "encryptedUserId": "A String", # The alphanumeric encrypted user ID. When set, encryptionInfo should also be specified. This field is mutually exclusive with encryptedUserIdCandidates[] and mobileDeviceId. This or encryptedUserIdCandidates[] or mobileDeviceId is a required field.
+          "customVariables": [ # Custom floodlight variables.
+            { # A custom floodlight variable.
+              "kind": "dfareporting#customFloodlightVariable", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#customFloodlightVariable".
+              "type": "A String", # The type of custom floodlight variable to supply a value for. These map to the "u[1-20]=" in the tags.
+              "value": "A String", # The value of the custom floodlight variable. The length of string must not exceed 50 characters.
+            },
+          ],
+          "floodlightConfigurationId": "A String", # Floodlight Configuration ID of this conversion. This is a required field.
+          "mobileDeviceId": "A String", # The mobile device ID. This field is mutually exclusive with encryptedUserId and encryptedUserIdCandidates[]. This or encryptedUserId or encryptedUserIdCandidates[] is a required field.
+          "value": 3.14, # The value of the conversion.
+          "limitAdTracking": True or False, # Whether Limit Ad Tracking is enabled. When set to true, the conversion will be used for reporting but not targeting. This will prevent remarketing.
+          "quantity": "A String", # The quantity of the conversion.
+          "floodlightActivityId": "A String", # Floodlight Activity ID of this conversion. This is a required field.
+          "encryptedUserIdCandidates": [ # A list of the alphanumeric encrypted user IDs. Any user ID with exposure prior to the conversion timestamp will be used in the inserted conversion. If no such user ID is found then the conversion will be rejected with NO_COOKIE_MATCH_FOUND error. When set, encryptionInfo should also be specified. This field should only be used when calling conversions.batchinsert. This field is mutually exclusive with encryptedUserId and mobileDeviceId. This or encryptedUserId or mobileDeviceId is a required field.
+            "A String",
+          ],
+        },
+        "errors": [ # A list of errors related to this conversion.
+          { # The error code and description for a conversion that failed to insert or update.
+            "kind": "dfareporting#conversionError", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#conversionError".
+            "code": "A String", # The error code.
+            "message": "A String", # A description of the error.
+          },
+        ],
+        "kind": "dfareporting#conversionStatus", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#conversionStatus".
+      },
+    ],
+    "hasFailures": True or False, # Indicates that some or all conversions failed to insert.
+    "kind": "dfareporting#conversionsBatchInsertResponse", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#conversionsBatchInsertResponse".
+  }</pre>
+</div>
+
+</body></html>
\ No newline at end of file
diff --git a/docs/dyn/dfareporting_v2_7.countries.html b/docs/dyn/dfareporting_v2_7.countries.html
new file mode 100644
index 0000000..b554b11
--- /dev/null
+++ b/docs/dyn/dfareporting_v2_7.countries.html
@@ -0,0 +1,128 @@
+<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="dfareporting_v2_7.html">DCM/DFA Reporting And Trafficking API</a> . <a href="dfareporting_v2_7.countries.html">countries</a></h1>
+<h2>Instance Methods</h2>
+<p class="toc_element">
+  <code><a href="#get">get(profileId, dartId)</a></code></p>
+<p class="firstline">Gets one country by ID.</p>
+<p class="toc_element">
+  <code><a href="#list">list(profileId)</a></code></p>
+<p class="firstline">Retrieves a list of countries.</p>
+<h3>Method Details</h3>
+<div class="method">
+    <code class="details" id="get">get(profileId, dartId)</code>
+  <pre>Gets one country by ID.
+
+Args:
+  profileId: string, User profile ID associated with this request. (required)
+  dartId: string, Country DART ID. (required)
+
+Returns:
+  An object of the form:
+
+    { # Contains information about a country that can be targeted by ads.
+    "dartId": "A String", # DART ID of this country. This is the ID used for targeting and generating reports.
+    "sslEnabled": True or False, # Whether ad serving supports secure servers in this country.
+    "kind": "dfareporting#country", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#country".
+    "countryCode": "A String", # Country code.
+    "name": "A String", # Name of this country.
+  }</pre>
+</div>
+
+<div class="method">
+    <code class="details" id="list">list(profileId)</code>
+  <pre>Retrieves a list of countries.
+
+Args:
+  profileId: string, User profile ID associated with this request. (required)
+
+Returns:
+  An object of the form:
+
+    { # Country List Response
+    "kind": "dfareporting#countriesListResponse", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#countriesListResponse".
+    "countries": [ # Country collection.
+      { # Contains information about a country that can be targeted by ads.
+        "dartId": "A String", # DART ID of this country. This is the ID used for targeting and generating reports.
+        "sslEnabled": True or False, # Whether ad serving supports secure servers in this country.
+        "kind": "dfareporting#country", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#country".
+        "countryCode": "A String", # Country code.
+        "name": "A String", # Name of this country.
+      },
+    ],
+  }</pre>
+</div>
+
+</body></html>
\ No newline at end of file
diff --git a/docs/dyn/dfareporting_v2_7.creativeAssets.html b/docs/dyn/dfareporting_v2_7.creativeAssets.html
new file mode 100644
index 0000000..edc0a8e
--- /dev/null
+++ b/docs/dyn/dfareporting_v2_7.creativeAssets.html
@@ -0,0 +1,210 @@
+<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="dfareporting_v2_7.html">DCM/DFA Reporting And Trafficking API</a> . <a href="dfareporting_v2_7.creativeAssets.html">creativeAssets</a></h1>
+<h2>Instance Methods</h2>
+<p class="toc_element">
+  <code><a href="#insert">insert(profileId, advertiserId, body=None, media_body=None, media_mime_type=None)</a></code></p>
+<p class="firstline">Inserts a new creative asset.</p>
+<h3>Method Details</h3>
+<div class="method">
+    <code class="details" id="insert">insert(profileId, advertiserId, body=None, media_body=None, media_mime_type=None)</code>
+  <pre>Inserts a new creative asset.
+
+Args:
+  profileId: string, User profile ID associated with this request. (required)
+  advertiserId: string, Advertiser ID of this creative. This is a required field. (required)
+  body: object, The request body.
+    The object takes the form of:
+
+{ # CreativeAssets contains properties of a creative asset file which will be uploaded or has already been uploaded. Refer to the creative sample code for how to upload assets and insert a creative.
+    "kind": "dfareporting#creativeAssetMetadata", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#creativeAssetMetadata".
+    "detectedFeatures": [ # List of feature dependencies for the creative asset that are detected by DCM. Feature dependencies are features that a browser must be able to support in order to render your HTML5 creative correctly. This is a read-only, auto-generated field.
+      "A String",
+    ],
+    "warnedValidationRules": [ # Rules validated during code generation that generated a warning. This is a read-only, auto-generated field.
+        # 
+        # Possible values are:
+        # - "ADMOB_REFERENCED"
+        # - "ASSET_FORMAT_UNSUPPORTED_DCM"
+        # - "ASSET_INVALID"
+        # - "CLICK_TAG_HARD_CODED"
+        # - "CLICK_TAG_INVALID"
+        # - "CLICK_TAG_IN_GWD"
+        # - "CLICK_TAG_MISSING"
+        # - "CLICK_TAG_MORE_THAN_ONE"
+        # - "CLICK_TAG_NON_TOP_LEVEL"
+        # - "COMPONENT_UNSUPPORTED_DCM"
+        # - "ENABLER_UNSUPPORTED_METHOD_DCM"
+        # - "EXTERNAL_FILE_REFERENCED"
+        # - "FILE_DETAIL_EMPTY"
+        # - "FILE_TYPE_INVALID"
+        # - "GWD_PROPERTIES_INVALID"
+        # - "HTML5_FEATURE_UNSUPPORTED"
+        # - "LINKED_FILE_NOT_FOUND"
+        # - "MAX_FLASH_VERSION_11"
+        # - "MRAID_REFERENCED"
+        # - "NOT_SSL_COMPLIANT"
+        # - "ORPHANED_ASSET"
+        # - "PRIMARY_HTML_MISSING"
+        # - "SVG_INVALID"
+        # - "ZIP_INVALID"
+      "A String",
+    ],
+    "assetIdentifier": { # Creative Asset ID. # ID of the creative asset. This is a required field.
+      "type": "A String", # Type of asset to upload. This is a required field. FLASH and IMAGE are no longer supported for new uploads. All image assets should use HTML_IMAGE.
+      "name": "A String", # Name of the creative asset. This is a required field while inserting an asset. After insertion, this assetIdentifier is used to identify the uploaded asset. Characters in the name must be alphanumeric or one of the following: ".-_ ". Spaces are allowed.
+    },
+    "clickTags": [ # List of detected click tags for assets. This is a read-only auto-generated field.
+      { # Creative Click Tag.
+        "eventName": "A String", # Advertiser event name associated with the click tag. This field is used by DISPLAY_IMAGE_GALLERY and HTML5_BANNER creatives. Applicable to DISPLAY when the primary asset type is not HTML_IMAGE.
+        "name": "A String", # Parameter name for the specified click tag. For DISPLAY_IMAGE_GALLERY creative assets, this field must match the value of the creative asset's creativeAssetId.name field.
+        "value": "A String", # Parameter value for the specified click tag. This field contains a click-through url.
+      },
+    ],
+    "idDimensionValue": { # Represents a DimensionValue resource. # Dimension value for the numeric ID of the asset. This is a read-only, auto-generated field.
+      "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+      "value": "A String", # The value of the dimension.
+      "dimensionName": "A String", # The name of the dimension.
+      "etag": "A String", # The eTag of this response for caching purposes.
+      "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+      "id": "A String", # The ID associated with the value if available.
+    },
+    "id": "A String", # Numeric ID of the asset. This is a read-only, auto-generated field.
+  }
+
+  media_body: string, The filename of the media request body, or an instance of a MediaUpload object.
+  media_mime_type: string, The MIME type of the media request body, or an instance of a MediaUpload object.
+
+Returns:
+  An object of the form:
+
+    { # CreativeAssets contains properties of a creative asset file which will be uploaded or has already been uploaded. Refer to the creative sample code for how to upload assets and insert a creative.
+      "kind": "dfareporting#creativeAssetMetadata", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#creativeAssetMetadata".
+      "detectedFeatures": [ # List of feature dependencies for the creative asset that are detected by DCM. Feature dependencies are features that a browser must be able to support in order to render your HTML5 creative correctly. This is a read-only, auto-generated field.
+        "A String",
+      ],
+      "warnedValidationRules": [ # Rules validated during code generation that generated a warning. This is a read-only, auto-generated field.
+          #
+          # Possible values are:
+          # - "ADMOB_REFERENCED"
+          # - "ASSET_FORMAT_UNSUPPORTED_DCM"
+          # - "ASSET_INVALID"
+          # - "CLICK_TAG_HARD_CODED"
+          # - "CLICK_TAG_INVALID"
+          # - "CLICK_TAG_IN_GWD"
+          # - "CLICK_TAG_MISSING"
+          # - "CLICK_TAG_MORE_THAN_ONE"
+          # - "CLICK_TAG_NON_TOP_LEVEL"
+          # - "COMPONENT_UNSUPPORTED_DCM"
+          # - "ENABLER_UNSUPPORTED_METHOD_DCM"
+          # - "EXTERNAL_FILE_REFERENCED"
+          # - "FILE_DETAIL_EMPTY"
+          # - "FILE_TYPE_INVALID"
+          # - "GWD_PROPERTIES_INVALID"
+          # - "HTML5_FEATURE_UNSUPPORTED"
+          # - "LINKED_FILE_NOT_FOUND"
+          # - "MAX_FLASH_VERSION_11"
+          # - "MRAID_REFERENCED"
+          # - "NOT_SSL_COMPLIANT"
+          # - "ORPHANED_ASSET"
+          # - "PRIMARY_HTML_MISSING"
+          # - "SVG_INVALID"
+          # - "ZIP_INVALID"
+        "A String",
+      ],
+      "assetIdentifier": { # Creative Asset ID. # ID of the creative asset. This is a required field.
+        "type": "A String", # Type of asset to upload. This is a required field. FLASH and IMAGE are no longer supported for new uploads. All image assets should use HTML_IMAGE.
+        "name": "A String", # Name of the creative asset. This is a required field while inserting an asset. After insertion, this assetIdentifier is used to identify the uploaded asset. Characters in the name must be alphanumeric or one of the following: ".-_ ". Spaces are allowed.
+      },
+      "clickTags": [ # List of detected click tags for assets. This is a read-only auto-generated field.
+        { # Creative Click Tag.
+          "eventName": "A String", # Advertiser event name associated with the click tag. This field is used by DISPLAY_IMAGE_GALLERY and HTML5_BANNER creatives. Applicable to DISPLAY when the primary asset type is not HTML_IMAGE.
+          "name": "A String", # Parameter name for the specified click tag. For DISPLAY_IMAGE_GALLERY creative assets, this field must match the value of the creative asset's creativeAssetId.name field.
+          "value": "A String", # Parameter value for the specified click tag. This field contains a click-through url.
+        },
+      ],
+      "idDimensionValue": { # Represents a DimensionValue resource. # Dimension value for the numeric ID of the asset. This is a read-only, auto-generated field.
+        "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+        "value": "A String", # The value of the dimension.
+        "dimensionName": "A String", # The name of the dimension.
+        "etag": "A String", # The eTag of this response for caching purposes.
+        "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+        "id": "A String", # The ID associated with the value if available.
+      },
+      "id": "A String", # Numeric ID of the asset. This is a read-only, auto-generated field.
+    }</pre>
+</div>
+
+</body></html>
\ No newline at end of file
diff --git a/docs/dyn/dfareporting_v2_7.creativeFieldValues.html b/docs/dyn/dfareporting_v2_7.creativeFieldValues.html
new file mode 100644
index 0000000..9b10518
--- /dev/null
+++ b/docs/dyn/dfareporting_v2_7.creativeFieldValues.html
@@ -0,0 +1,261 @@
+<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="dfareporting_v2_7.html">DCM/DFA Reporting And Trafficking API</a> . <a href="dfareporting_v2_7.creativeFieldValues.html">creativeFieldValues</a></h1>
+<h2>Instance Methods</h2>
+<p class="toc_element">
+  <code><a href="#delete">delete(profileId, creativeFieldId, id)</a></code></p>
+<p class="firstline">Deletes an existing creative field value.</p>
+<p class="toc_element">
+  <code><a href="#get">get(profileId, creativeFieldId, id)</a></code></p>
+<p class="firstline">Gets one creative field value by ID.</p>
+<p class="toc_element">
+  <code><a href="#insert">insert(profileId, creativeFieldId, body)</a></code></p>
+<p class="firstline">Inserts a new creative field value.</p>
+<p class="toc_element">
+  <code><a href="#list">list(profileId, creativeFieldId, searchString=None, sortField=None, ids=None, maxResults=None, pageToken=None, sortOrder=None)</a></code></p>
+<p class="firstline">Retrieves a list of creative field values, possibly filtered. This method supports paging.</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="#patch">patch(profileId, creativeFieldId, id, body)</a></code></p>
+<p class="firstline">Updates an existing creative field value. This method supports patch semantics.</p>
+<p class="toc_element">
+  <code><a href="#update">update(profileId, creativeFieldId, body)</a></code></p>
+<p class="firstline">Updates an existing creative field value.</p>
+<h3>Method Details</h3>
+<div class="method">
+    <code class="details" id="delete">delete(profileId, creativeFieldId, id)</code>
+  <pre>Deletes an existing creative field value.
+
+Args:
+  profileId: string, User profile ID associated with this request. (required)
+  creativeFieldId: string, Creative field ID for this creative field value. (required)
+  id: string, Creative Field Value ID (required)
+</pre>
+</div>
+
+<div class="method">
+    <code class="details" id="get">get(profileId, creativeFieldId, id)</code>
+  <pre>Gets one creative field value by ID.
+
+Args:
+  profileId: string, User profile ID associated with this request. (required)
+  creativeFieldId: string, Creative field ID for this creative field value. (required)
+  id: string, Creative Field Value ID (required)
+
+Returns:
+  An object of the form:
+
+    { # Contains properties of a creative field value.
+      "kind": "dfareporting#creativeFieldValue", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#creativeFieldValue".
+      "id": "A String", # ID of this creative field value. This is a read-only, auto-generated field.
+      "value": "A String", # Value of this creative field value. It needs to be less than 256 characters in length and unique per creative field.
+    }</pre>
+</div>
+
+<div class="method">
+    <code class="details" id="insert">insert(profileId, creativeFieldId, body)</code>
+  <pre>Inserts a new creative field value.
+
+Args:
+  profileId: string, User profile ID associated with this request. (required)
+  creativeFieldId: string, Creative field ID for this creative field value. (required)
+  body: object, The request body. (required)
+    The object takes the form of:
+
+{ # Contains properties of a creative field value.
+    "kind": "dfareporting#creativeFieldValue", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#creativeFieldValue".
+    "id": "A String", # ID of this creative field value. This is a read-only, auto-generated field.
+    "value": "A String", # Value of this creative field value. It needs to be less than 256 characters in length and unique per creative field.
+  }
+
+
+Returns:
+  An object of the form:
+
+    { # Contains properties of a creative field value.
+      "kind": "dfareporting#creativeFieldValue", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#creativeFieldValue".
+      "id": "A String", # ID of this creative field value. This is a read-only, auto-generated field.
+      "value": "A String", # Value of this creative field value. It needs to be less than 256 characters in length and unique per creative field.
+    }</pre>
+</div>
+
+<div class="method">
+    <code class="details" id="list">list(profileId, creativeFieldId, searchString=None, sortField=None, ids=None, maxResults=None, pageToken=None, sortOrder=None)</code>
+  <pre>Retrieves a list of creative field values, possibly filtered. This method supports paging.
+
+Args:
+  profileId: string, User profile ID associated with this request. (required)
+  creativeFieldId: string, Creative field ID for this creative field value. (required)
+  searchString: string, Allows searching for creative field values by their values. Wildcards (e.g. *) are not allowed.
+  sortField: string, Field by which to sort the list.
+    Allowed values
+      ID - 
+      VALUE - 
+  ids: string, Select only creative field values with these IDs. (repeated)
+  maxResults: integer, Maximum number of results to return.
+  pageToken: string, Value of the nextPageToken from the previous result page.
+  sortOrder: string, Order of sorted results, default is ASCENDING.
+    Allowed values
+      ASCENDING - 
+      DESCENDING - 
+
+Returns:
+  An object of the form:
+
+    { # Creative Field Value List Response
+    "nextPageToken": "A String", # Pagination token to be used for the next list operation.
+    "kind": "dfareporting#creativeFieldValuesListResponse", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#creativeFieldValuesListResponse".
+    "creativeFieldValues": [ # Creative field value collection.
+      { # Contains properties of a creative field value.
+          "kind": "dfareporting#creativeFieldValue", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#creativeFieldValue".
+          "id": "A String", # ID of this creative field value. This is a read-only, auto-generated field.
+          "value": "A String", # Value of this creative field value. It needs to be less than 256 characters in length and unique per creative field.
+        },
+    ],
+  }</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="patch">patch(profileId, creativeFieldId, id, body)</code>
+  <pre>Updates an existing creative field value. This method supports patch semantics.
+
+Args:
+  profileId: string, User profile ID associated with this request. (required)
+  creativeFieldId: string, Creative field ID for this creative field value. (required)
+  id: string, Creative Field Value ID (required)
+  body: object, The request body. (required)
+    The object takes the form of:
+
+{ # Contains properties of a creative field value.
+    "kind": "dfareporting#creativeFieldValue", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#creativeFieldValue".
+    "id": "A String", # ID of this creative field value. This is a read-only, auto-generated field.
+    "value": "A String", # Value of this creative field value. It needs to be less than 256 characters in length and unique per creative field.
+  }
+
+
+Returns:
+  An object of the form:
+
+    { # Contains properties of a creative field value.
+      "kind": "dfareporting#creativeFieldValue", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#creativeFieldValue".
+      "id": "A String", # ID of this creative field value. This is a read-only, auto-generated field.
+      "value": "A String", # Value of this creative field value. It needs to be less than 256 characters in length and unique per creative field.
+    }</pre>
+</div>
+
+<div class="method">
+    <code class="details" id="update">update(profileId, creativeFieldId, body)</code>
+  <pre>Updates an existing creative field value.
+
+Args:
+  profileId: string, User profile ID associated with this request. (required)
+  creativeFieldId: string, Creative field ID for this creative field value. (required)
+  body: object, The request body. (required)
+    The object takes the form of:
+
+{ # Contains properties of a creative field value.
+    "kind": "dfareporting#creativeFieldValue", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#creativeFieldValue".
+    "id": "A String", # ID of this creative field value. This is a read-only, auto-generated field.
+    "value": "A String", # Value of this creative field value. It needs to be less than 256 characters in length and unique per creative field.
+  }
+
+
+Returns:
+  An object of the form:
+
+    { # Contains properties of a creative field value.
+      "kind": "dfareporting#creativeFieldValue", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#creativeFieldValue".
+      "id": "A String", # ID of this creative field value. This is a read-only, auto-generated field.
+      "value": "A String", # Value of this creative field value. It needs to be less than 256 characters in length and unique per creative field.
+    }</pre>
+</div>
+
+</body></html>
\ No newline at end of file
diff --git a/docs/dyn/dfareporting_v2_7.creativeFields.html b/docs/dyn/dfareporting_v2_7.creativeFields.html
new file mode 100644
index 0000000..263786b
--- /dev/null
+++ b/docs/dyn/dfareporting_v2_7.creativeFields.html
@@ -0,0 +1,344 @@
+<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="dfareporting_v2_7.html">DCM/DFA Reporting And Trafficking API</a> . <a href="dfareporting_v2_7.creativeFields.html">creativeFields</a></h1>
+<h2>Instance Methods</h2>
+<p class="toc_element">
+  <code><a href="#delete">delete(profileId, id)</a></code></p>
+<p class="firstline">Deletes an existing creative field.</p>
+<p class="toc_element">
+  <code><a href="#get">get(profileId, id)</a></code></p>
+<p class="firstline">Gets one creative field by ID.</p>
+<p class="toc_element">
+  <code><a href="#insert">insert(profileId, body)</a></code></p>
+<p class="firstline">Inserts a new creative field.</p>
+<p class="toc_element">
+  <code><a href="#list">list(profileId, searchString=None, pageToken=None, sortField=None, advertiserIds=None, ids=None, maxResults=None, sortOrder=None)</a></code></p>
+<p class="firstline">Retrieves a list of creative fields, possibly filtered. This method supports paging.</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="#patch">patch(profileId, id, body)</a></code></p>
+<p class="firstline">Updates an existing creative field. This method supports patch semantics.</p>
+<p class="toc_element">
+  <code><a href="#update">update(profileId, body)</a></code></p>
+<p class="firstline">Updates an existing creative field.</p>
+<h3>Method Details</h3>
+<div class="method">
+    <code class="details" id="delete">delete(profileId, id)</code>
+  <pre>Deletes an existing creative field.
+
+Args:
+  profileId: string, User profile ID associated with this request. (required)
+  id: string, Creative Field ID (required)
+</pre>
+</div>
+
+<div class="method">
+    <code class="details" id="get">get(profileId, id)</code>
+  <pre>Gets one creative field by ID.
+
+Args:
+  profileId: string, User profile ID associated with this request. (required)
+  id: string, Creative Field ID (required)
+
+Returns:
+  An object of the form:
+
+    { # Contains properties of a creative field.
+      "kind": "dfareporting#creativeField", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#creativeField".
+      "subaccountId": "A String", # Subaccount ID of this creative field. This is a read-only field that can be left blank.
+      "name": "A String", # Name of this creative field. This is a required field and must be less than 256 characters long and unique among creative fields of the same advertiser.
+      "advertiserId": "A String", # Advertiser ID of this creative field. This is a required field on insertion.
+      "advertiserIdDimensionValue": { # Represents a DimensionValue resource. # Dimension value for the ID of the advertiser. This is a read-only, auto-generated field.
+        "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+        "value": "A String", # The value of the dimension.
+        "dimensionName": "A String", # The name of the dimension.
+        "etag": "A String", # The eTag of this response for caching purposes.
+        "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+        "id": "A String", # The ID associated with the value if available.
+      },
+      "id": "A String", # ID of this creative field. This is a read-only, auto-generated field.
+      "accountId": "A String", # Account ID of this creative field. This is a read-only field that can be left blank.
+    }</pre>
+</div>
+
+<div class="method">
+    <code class="details" id="insert">insert(profileId, body)</code>
+  <pre>Inserts a new creative field.
+
+Args:
+  profileId: string, User profile ID associated with this request. (required)
+  body: object, The request body. (required)
+    The object takes the form of:
+
+{ # Contains properties of a creative field.
+    "kind": "dfareporting#creativeField", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#creativeField".
+    "subaccountId": "A String", # Subaccount ID of this creative field. This is a read-only field that can be left blank.
+    "name": "A String", # Name of this creative field. This is a required field and must be less than 256 characters long and unique among creative fields of the same advertiser.
+    "advertiserId": "A String", # Advertiser ID of this creative field. This is a required field on insertion.
+    "advertiserIdDimensionValue": { # Represents a DimensionValue resource. # Dimension value for the ID of the advertiser. This is a read-only, auto-generated field.
+      "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+      "value": "A String", # The value of the dimension.
+      "dimensionName": "A String", # The name of the dimension.
+      "etag": "A String", # The eTag of this response for caching purposes.
+      "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+      "id": "A String", # The ID associated with the value if available.
+    },
+    "id": "A String", # ID of this creative field. This is a read-only, auto-generated field.
+    "accountId": "A String", # Account ID of this creative field. This is a read-only field that can be left blank.
+  }
+
+
+Returns:
+  An object of the form:
+
+    { # Contains properties of a creative field.
+      "kind": "dfareporting#creativeField", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#creativeField".
+      "subaccountId": "A String", # Subaccount ID of this creative field. This is a read-only field that can be left blank.
+      "name": "A String", # Name of this creative field. This is a required field and must be less than 256 characters long and unique among creative fields of the same advertiser.
+      "advertiserId": "A String", # Advertiser ID of this creative field. This is a required field on insertion.
+      "advertiserIdDimensionValue": { # Represents a DimensionValue resource. # Dimension value for the ID of the advertiser. This is a read-only, auto-generated field.
+        "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+        "value": "A String", # The value of the dimension.
+        "dimensionName": "A String", # The name of the dimension.
+        "etag": "A String", # The eTag of this response for caching purposes.
+        "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+        "id": "A String", # The ID associated with the value if available.
+      },
+      "id": "A String", # ID of this creative field. This is a read-only, auto-generated field.
+      "accountId": "A String", # Account ID of this creative field. This is a read-only field that can be left blank.
+    }</pre>
+</div>
+
+<div class="method">
+    <code class="details" id="list">list(profileId, searchString=None, pageToken=None, sortField=None, advertiserIds=None, ids=None, maxResults=None, sortOrder=None)</code>
+  <pre>Retrieves a list of creative fields, possibly filtered. This method supports paging.
+
+Args:
+  profileId: string, User profile ID associated with this request. (required)
+  searchString: string, Allows searching for creative fields by name or ID. Wildcards (*) are allowed. For example, "creativefield*2015" will return creative fields with names like "creativefield June 2015", "creativefield April 2015", or simply "creativefield 2015". Most of the searches also add wild-cards implicitly at the start and the end of the search string. For example, a search string of "creativefield" will match creative fields with the name "my creativefield", "creativefield 2015", or simply "creativefield".
+  pageToken: string, Value of the nextPageToken from the previous result page.
+  sortField: string, Field by which to sort the list.
+    Allowed values
+      ID - 
+      NAME - 
+  advertiserIds: string, Select only creative fields that belong to these advertisers. (repeated)
+  ids: string, Select only creative fields with these IDs. (repeated)
+  maxResults: integer, Maximum number of results to return.
+  sortOrder: string, Order of sorted results, default is ASCENDING.
+    Allowed values
+      ASCENDING - 
+      DESCENDING - 
+
+Returns:
+  An object of the form:
+
+    { # Creative Field List Response
+    "nextPageToken": "A String", # Pagination token to be used for the next list operation.
+    "creativeFields": [ # Creative field collection.
+      { # Contains properties of a creative field.
+          "kind": "dfareporting#creativeField", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#creativeField".
+          "subaccountId": "A String", # Subaccount ID of this creative field. This is a read-only field that can be left blank.
+          "name": "A String", # Name of this creative field. This is a required field and must be less than 256 characters long and unique among creative fields of the same advertiser.
+          "advertiserId": "A String", # Advertiser ID of this creative field. This is a required field on insertion.
+          "advertiserIdDimensionValue": { # Represents a DimensionValue resource. # Dimension value for the ID of the advertiser. This is a read-only, auto-generated field.
+            "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+            "value": "A String", # The value of the dimension.
+            "dimensionName": "A String", # The name of the dimension.
+            "etag": "A String", # The eTag of this response for caching purposes.
+            "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+            "id": "A String", # The ID associated with the value if available.
+          },
+          "id": "A String", # ID of this creative field. This is a read-only, auto-generated field.
+          "accountId": "A String", # Account ID of this creative field. This is a read-only field that can be left blank.
+        },
+    ],
+    "kind": "dfareporting#creativeFieldsListResponse", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#creativeFieldsListResponse".
+  }</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="patch">patch(profileId, id, body)</code>
+  <pre>Updates an existing creative field. This method supports patch semantics.
+
+Args:
+  profileId: string, User profile ID associated with this request. (required)
+  id: string, Creative Field ID (required)
+  body: object, The request body. (required)
+    The object takes the form of:
+
+{ # Contains properties of a creative field.
+    "kind": "dfareporting#creativeField", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#creativeField".
+    "subaccountId": "A String", # Subaccount ID of this creative field. This is a read-only field that can be left blank.
+    "name": "A String", # Name of this creative field. This is a required field and must be less than 256 characters long and unique among creative fields of the same advertiser.
+    "advertiserId": "A String", # Advertiser ID of this creative field. This is a required field on insertion.
+    "advertiserIdDimensionValue": { # Represents a DimensionValue resource. # Dimension value for the ID of the advertiser. This is a read-only, auto-generated field.
+      "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+      "value": "A String", # The value of the dimension.
+      "dimensionName": "A String", # The name of the dimension.
+      "etag": "A String", # The eTag of this response for caching purposes.
+      "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+      "id": "A String", # The ID associated with the value if available.
+    },
+    "id": "A String", # ID of this creative field. This is a read-only, auto-generated field.
+    "accountId": "A String", # Account ID of this creative field. This is a read-only field that can be left blank.
+  }
+
+
+Returns:
+  An object of the form:
+
+    { # Contains properties of a creative field.
+      "kind": "dfareporting#creativeField", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#creativeField".
+      "subaccountId": "A String", # Subaccount ID of this creative field. This is a read-only field that can be left blank.
+      "name": "A String", # Name of this creative field. This is a required field and must be less than 256 characters long and unique among creative fields of the same advertiser.
+      "advertiserId": "A String", # Advertiser ID of this creative field. This is a required field on insertion.
+      "advertiserIdDimensionValue": { # Represents a DimensionValue resource. # Dimension value for the ID of the advertiser. This is a read-only, auto-generated field.
+        "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+        "value": "A String", # The value of the dimension.
+        "dimensionName": "A String", # The name of the dimension.
+        "etag": "A String", # The eTag of this response for caching purposes.
+        "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+        "id": "A String", # The ID associated with the value if available.
+      },
+      "id": "A String", # ID of this creative field. This is a read-only, auto-generated field.
+      "accountId": "A String", # Account ID of this creative field. This is a read-only field that can be left blank.
+    }</pre>
+</div>
+
+<div class="method">
+    <code class="details" id="update">update(profileId, body)</code>
+  <pre>Updates an existing creative field.
+
+Args:
+  profileId: string, User profile ID associated with this request. (required)
+  body: object, The request body. (required)
+    The object takes the form of:
+
+{ # Contains properties of a creative field.
+    "kind": "dfareporting#creativeField", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#creativeField".
+    "subaccountId": "A String", # Subaccount ID of this creative field. This is a read-only field that can be left blank.
+    "name": "A String", # Name of this creative field. This is a required field and must be less than 256 characters long and unique among creative fields of the same advertiser.
+    "advertiserId": "A String", # Advertiser ID of this creative field. This is a required field on insertion.
+    "advertiserIdDimensionValue": { # Represents a DimensionValue resource. # Dimension value for the ID of the advertiser. This is a read-only, auto-generated field.
+      "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+      "value": "A String", # The value of the dimension.
+      "dimensionName": "A String", # The name of the dimension.
+      "etag": "A String", # The eTag of this response for caching purposes.
+      "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+      "id": "A String", # The ID associated with the value if available.
+    },
+    "id": "A String", # ID of this creative field. This is a read-only, auto-generated field.
+    "accountId": "A String", # Account ID of this creative field. This is a read-only field that can be left blank.
+  }
+
+
+Returns:
+  An object of the form:
+
+    { # Contains properties of a creative field.
+      "kind": "dfareporting#creativeField", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#creativeField".
+      "subaccountId": "A String", # Subaccount ID of this creative field. This is a read-only field that can be left blank.
+      "name": "A String", # Name of this creative field. This is a required field and must be less than 256 characters long and unique among creative fields of the same advertiser.
+      "advertiserId": "A String", # Advertiser ID of this creative field. This is a required field on insertion.
+      "advertiserIdDimensionValue": { # Represents a DimensionValue resource. # Dimension value for the ID of the advertiser. This is a read-only, auto-generated field.
+        "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+        "value": "A String", # The value of the dimension.
+        "dimensionName": "A String", # The name of the dimension.
+        "etag": "A String", # The eTag of this response for caching purposes.
+        "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+        "id": "A String", # The ID associated with the value if available.
+      },
+      "id": "A String", # ID of this creative field. This is a read-only, auto-generated field.
+      "accountId": "A String", # Account ID of this creative field. This is a read-only field that can be left blank.
+    }</pre>
+</div>
+
+</body></html>
\ No newline at end of file
diff --git a/docs/dyn/dfareporting_v2_7.creativeGroups.html b/docs/dyn/dfareporting_v2_7.creativeGroups.html
new file mode 100644
index 0000000..d508bd2
--- /dev/null
+++ b/docs/dyn/dfareporting_v2_7.creativeGroups.html
@@ -0,0 +1,364 @@
+<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="dfareporting_v2_7.html">DCM/DFA Reporting And Trafficking API</a> . <a href="dfareporting_v2_7.creativeGroups.html">creativeGroups</a></h1>
+<h2>Instance Methods</h2>
+<p class="toc_element">
+  <code><a href="#get">get(profileId, id)</a></code></p>
+<p class="firstline">Gets one creative group by ID.</p>
+<p class="toc_element">
+  <code><a href="#insert">insert(profileId, body)</a></code></p>
+<p class="firstline">Inserts a new creative group.</p>
+<p class="toc_element">
+  <code><a href="#list">list(profileId, searchString=None, pageToken=None, sortField=None, advertiserIds=None, groupNumber=None, maxResults=None, ids=None, sortOrder=None)</a></code></p>
+<p class="firstline">Retrieves a list of creative groups, possibly filtered. This method supports paging.</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="#patch">patch(profileId, id, body)</a></code></p>
+<p class="firstline">Updates an existing creative group. This method supports patch semantics.</p>
+<p class="toc_element">
+  <code><a href="#update">update(profileId, body)</a></code></p>
+<p class="firstline">Updates an existing creative group.</p>
+<h3>Method Details</h3>
+<div class="method">
+    <code class="details" id="get">get(profileId, id)</code>
+  <pre>Gets one creative group by ID.
+
+Args:
+  profileId: string, User profile ID associated with this request. (required)
+  id: string, Creative group ID. (required)
+
+Returns:
+  An object of the form:
+
+    { # Contains properties of a creative group.
+      "kind": "dfareporting#creativeGroup", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#creativeGroup".
+      "subaccountId": "A String", # Subaccount ID of this creative group. This is a read-only field that can be left blank.
+      "name": "A String", # Name of this creative group. This is a required field and must be less than 256 characters long and unique among creative groups of the same advertiser.
+      "groupNumber": 42, # Subgroup of the creative group. Assign your creative groups to one of the following subgroups in order to filter or manage them more easily. This field is required on insertion and is read-only after insertion.
+          # Acceptable values are:
+          # - 1
+          # - 2
+      "advertiserId": "A String", # Advertiser ID of this creative group. This is a required field on insertion.
+      "advertiserIdDimensionValue": { # Represents a DimensionValue resource. # Dimension value for the ID of the advertiser. This is a read-only, auto-generated field.
+        "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+        "value": "A String", # The value of the dimension.
+        "dimensionName": "A String", # The name of the dimension.
+        "etag": "A String", # The eTag of this response for caching purposes.
+        "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+        "id": "A String", # The ID associated with the value if available.
+      },
+      "id": "A String", # ID of this creative group. This is a read-only, auto-generated field.
+      "accountId": "A String", # Account ID of this creative group. This is a read-only field that can be left blank.
+    }</pre>
+</div>
+
+<div class="method">
+    <code class="details" id="insert">insert(profileId, body)</code>
+  <pre>Inserts a new creative group.
+
+Args:
+  profileId: string, User profile ID associated with this request. (required)
+  body: object, The request body. (required)
+    The object takes the form of:
+
+{ # Contains properties of a creative group.
+    "kind": "dfareporting#creativeGroup", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#creativeGroup".
+    "subaccountId": "A String", # Subaccount ID of this creative group. This is a read-only field that can be left blank.
+    "name": "A String", # Name of this creative group. This is a required field and must be less than 256 characters long and unique among creative groups of the same advertiser.
+    "groupNumber": 42, # Subgroup of the creative group. Assign your creative groups to one of the following subgroups in order to filter or manage them more easily. This field is required on insertion and is read-only after insertion.
+        # Acceptable values are:
+        # - 1
+        # - 2
+    "advertiserId": "A String", # Advertiser ID of this creative group. This is a required field on insertion.
+    "advertiserIdDimensionValue": { # Represents a DimensionValue resource. # Dimension value for the ID of the advertiser. This is a read-only, auto-generated field.
+      "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+      "value": "A String", # The value of the dimension.
+      "dimensionName": "A String", # The name of the dimension.
+      "etag": "A String", # The eTag of this response for caching purposes.
+      "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+      "id": "A String", # The ID associated with the value if available.
+    },
+    "id": "A String", # ID of this creative group. This is a read-only, auto-generated field.
+    "accountId": "A String", # Account ID of this creative group. This is a read-only field that can be left blank.
+  }
+
+
+Returns:
+  An object of the form:
+
+    { # Contains properties of a creative group.
+      "kind": "dfareporting#creativeGroup", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#creativeGroup".
+      "subaccountId": "A String", # Subaccount ID of this creative group. This is a read-only field that can be left blank.
+      "name": "A String", # Name of this creative group. This is a required field and must be less than 256 characters long and unique among creative groups of the same advertiser.
+      "groupNumber": 42, # Subgroup of the creative group. Assign your creative groups to one of the following subgroups in order to filter or manage them more easily. This field is required on insertion and is read-only after insertion.
+          # Acceptable values are:
+          # - 1
+          # - 2
+      "advertiserId": "A String", # Advertiser ID of this creative group. This is a required field on insertion.
+      "advertiserIdDimensionValue": { # Represents a DimensionValue resource. # Dimension value for the ID of the advertiser. This is a read-only, auto-generated field.
+        "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+        "value": "A String", # The value of the dimension.
+        "dimensionName": "A String", # The name of the dimension.
+        "etag": "A String", # The eTag of this response for caching purposes.
+        "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+        "id": "A String", # The ID associated with the value if available.
+      },
+      "id": "A String", # ID of this creative group. This is a read-only, auto-generated field.
+      "accountId": "A String", # Account ID of this creative group. This is a read-only field that can be left blank.
+    }</pre>
+</div>
+
+<div class="method">
+    <code class="details" id="list">list(profileId, searchString=None, pageToken=None, sortField=None, advertiserIds=None, groupNumber=None, maxResults=None, ids=None, sortOrder=None)</code>
+  <pre>Retrieves a list of creative groups, possibly filtered. This method supports paging.
+
+Args:
+  profileId: string, User profile ID associated with this request. (required)
+  searchString: string, Allows searching for creative groups by name or ID. Wildcards (*) are allowed. For example, "creativegroup*2015" will return creative groups with names like "creativegroup June 2015", "creativegroup April 2015", or simply "creativegroup 2015". Most of the searches also add wild-cards implicitly at the start and the end of the search string. For example, a search string of "creativegroup" will match creative groups with the name "my creativegroup", "creativegroup 2015", or simply "creativegroup".
+  pageToken: string, Value of the nextPageToken from the previous result page.
+  sortField: string, Field by which to sort the list.
+    Allowed values
+      ID - 
+      NAME - 
+  advertiserIds: string, Select only creative groups that belong to these advertisers. (repeated)
+  groupNumber: integer, Select only creative groups that belong to this subgroup.
+  maxResults: integer, Maximum number of results to return.
+  ids: string, Select only creative groups with these IDs. (repeated)
+  sortOrder: string, Order of sorted results, default is ASCENDING.
+    Allowed values
+      ASCENDING - 
+      DESCENDING - 
+
+Returns:
+  An object of the form:
+
+    { # Creative Group List Response
+    "nextPageToken": "A String", # Pagination token to be used for the next list operation.
+    "creativeGroups": [ # Creative group collection.
+      { # Contains properties of a creative group.
+          "kind": "dfareporting#creativeGroup", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#creativeGroup".
+          "subaccountId": "A String", # Subaccount ID of this creative group. This is a read-only field that can be left blank.
+          "name": "A String", # Name of this creative group. This is a required field and must be less than 256 characters long and unique among creative groups of the same advertiser.
+          "groupNumber": 42, # Subgroup of the creative group. Assign your creative groups to one of the following subgroups in order to filter or manage them more easily. This field is required on insertion and is read-only after insertion.
+              # Acceptable values are:
+              # - 1
+              # - 2
+          "advertiserId": "A String", # Advertiser ID of this creative group. This is a required field on insertion.
+          "advertiserIdDimensionValue": { # Represents a DimensionValue resource. # Dimension value for the ID of the advertiser. This is a read-only, auto-generated field.
+            "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+            "value": "A String", # The value of the dimension.
+            "dimensionName": "A String", # The name of the dimension.
+            "etag": "A String", # The eTag of this response for caching purposes.
+            "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+            "id": "A String", # The ID associated with the value if available.
+          },
+          "id": "A String", # ID of this creative group. This is a read-only, auto-generated field.
+          "accountId": "A String", # Account ID of this creative group. This is a read-only field that can be left blank.
+        },
+    ],
+    "kind": "dfareporting#creativeGroupsListResponse", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#creativeGroupsListResponse".
+  }</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="patch">patch(profileId, id, body)</code>
+  <pre>Updates an existing creative group. This method supports patch semantics.
+
+Args:
+  profileId: string, User profile ID associated with this request. (required)
+  id: string, Creative group ID. (required)
+  body: object, The request body. (required)
+    The object takes the form of:
+
+{ # Contains properties of a creative group.
+    "kind": "dfareporting#creativeGroup", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#creativeGroup".
+    "subaccountId": "A String", # Subaccount ID of this creative group. This is a read-only field that can be left blank.
+    "name": "A String", # Name of this creative group. This is a required field and must be less than 256 characters long and unique among creative groups of the same advertiser.
+    "groupNumber": 42, # Subgroup of the creative group. Assign your creative groups to one of the following subgroups in order to filter or manage them more easily. This field is required on insertion and is read-only after insertion.
+        # Acceptable values are:
+        # - 1
+        # - 2
+    "advertiserId": "A String", # Advertiser ID of this creative group. This is a required field on insertion.
+    "advertiserIdDimensionValue": { # Represents a DimensionValue resource. # Dimension value for the ID of the advertiser. This is a read-only, auto-generated field.
+      "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+      "value": "A String", # The value of the dimension.
+      "dimensionName": "A String", # The name of the dimension.
+      "etag": "A String", # The eTag of this response for caching purposes.
+      "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+      "id": "A String", # The ID associated with the value if available.
+    },
+    "id": "A String", # ID of this creative group. This is a read-only, auto-generated field.
+    "accountId": "A String", # Account ID of this creative group. This is a read-only field that can be left blank.
+  }
+
+
+Returns:
+  An object of the form:
+
+    { # Contains properties of a creative group.
+      "kind": "dfareporting#creativeGroup", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#creativeGroup".
+      "subaccountId": "A String", # Subaccount ID of this creative group. This is a read-only field that can be left blank.
+      "name": "A String", # Name of this creative group. This is a required field and must be less than 256 characters long and unique among creative groups of the same advertiser.
+      "groupNumber": 42, # Subgroup of the creative group. Assign your creative groups to one of the following subgroups in order to filter or manage them more easily. This field is required on insertion and is read-only after insertion.
+          # Acceptable values are:
+          # - 1
+          # - 2
+      "advertiserId": "A String", # Advertiser ID of this creative group. This is a required field on insertion.
+      "advertiserIdDimensionValue": { # Represents a DimensionValue resource. # Dimension value for the ID of the advertiser. This is a read-only, auto-generated field.
+        "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+        "value": "A String", # The value of the dimension.
+        "dimensionName": "A String", # The name of the dimension.
+        "etag": "A String", # The eTag of this response for caching purposes.
+        "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+        "id": "A String", # The ID associated with the value if available.
+      },
+      "id": "A String", # ID of this creative group. This is a read-only, auto-generated field.
+      "accountId": "A String", # Account ID of this creative group. This is a read-only field that can be left blank.
+    }</pre>
+</div>
+
+<div class="method">
+    <code class="details" id="update">update(profileId, body)</code>
+  <pre>Updates an existing creative group.
+
+Args:
+  profileId: string, User profile ID associated with this request. (required)
+  body: object, The request body. (required)
+    The object takes the form of:
+
+{ # Contains properties of a creative group.
+    "kind": "dfareporting#creativeGroup", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#creativeGroup".
+    "subaccountId": "A String", # Subaccount ID of this creative group. This is a read-only field that can be left blank.
+    "name": "A String", # Name of this creative group. This is a required field and must be less than 256 characters long and unique among creative groups of the same advertiser.
+    "groupNumber": 42, # Subgroup of the creative group. Assign your creative groups to one of the following subgroups in order to filter or manage them more easily. This field is required on insertion and is read-only after insertion.
+        # Acceptable values are:
+        # - 1
+        # - 2
+    "advertiserId": "A String", # Advertiser ID of this creative group. This is a required field on insertion.
+    "advertiserIdDimensionValue": { # Represents a DimensionValue resource. # Dimension value for the ID of the advertiser. This is a read-only, auto-generated field.
+      "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+      "value": "A String", # The value of the dimension.
+      "dimensionName": "A String", # The name of the dimension.
+      "etag": "A String", # The eTag of this response for caching purposes.
+      "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+      "id": "A String", # The ID associated with the value if available.
+    },
+    "id": "A String", # ID of this creative group. This is a read-only, auto-generated field.
+    "accountId": "A String", # Account ID of this creative group. This is a read-only field that can be left blank.
+  }
+
+
+Returns:
+  An object of the form:
+
+    { # Contains properties of a creative group.
+      "kind": "dfareporting#creativeGroup", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#creativeGroup".
+      "subaccountId": "A String", # Subaccount ID of this creative group. This is a read-only field that can be left blank.
+      "name": "A String", # Name of this creative group. This is a required field and must be less than 256 characters long and unique among creative groups of the same advertiser.
+      "groupNumber": 42, # Subgroup of the creative group. Assign your creative groups to one of the following subgroups in order to filter or manage them more easily. This field is required on insertion and is read-only after insertion.
+          # Acceptable values are:
+          # - 1
+          # - 2
+      "advertiserId": "A String", # Advertiser ID of this creative group. This is a required field on insertion.
+      "advertiserIdDimensionValue": { # Represents a DimensionValue resource. # Dimension value for the ID of the advertiser. This is a read-only, auto-generated field.
+        "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+        "value": "A String", # The value of the dimension.
+        "dimensionName": "A String", # The name of the dimension.
+        "etag": "A String", # The eTag of this response for caching purposes.
+        "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+        "id": "A String", # The ID associated with the value if available.
+      },
+      "id": "A String", # ID of this creative group. This is a read-only, auto-generated field.
+      "accountId": "A String", # Account ID of this creative group. This is a read-only field that can be left blank.
+    }</pre>
+</div>
+
+</body></html>
\ No newline at end of file
diff --git a/docs/dyn/dfareporting_v2_7.creatives.html b/docs/dyn/dfareporting_v2_7.creatives.html
new file mode 100644
index 0000000..edc93a4
--- /dev/null
+++ b/docs/dyn/dfareporting_v2_7.creatives.html
@@ -0,0 +1,3149 @@
+<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="dfareporting_v2_7.html">DCM/DFA Reporting And Trafficking API</a> . <a href="dfareporting_v2_7.creatives.html">creatives</a></h1>
+<h2>Instance Methods</h2>
+<p class="toc_element">
+  <code><a href="#get">get(profileId, id)</a></code></p>
+<p class="firstline">Gets one creative by ID.</p>
+<p class="toc_element">
+  <code><a href="#insert">insert(profileId, body)</a></code></p>
+<p class="firstline">Inserts a new creative.</p>
+<p class="toc_element">
+  <code><a href="#list">list(profileId, campaignId=None, advertiserId=None, sizeIds=None, archived=None, pageToken=None, sortOrder=None, renderingIds=None, maxResults=None, active=None, companionCreativeIds=None, types=None, searchString=None, ids=None, studioCreativeId=None, sortField=None, creativeFieldIds=None)</a></code></p>
+<p class="firstline">Retrieves a list of creatives, possibly filtered. This method supports paging.</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="#patch">patch(profileId, id, body)</a></code></p>
+<p class="firstline">Updates an existing creative. This method supports patch semantics.</p>
+<p class="toc_element">
+  <code><a href="#update">update(profileId, body)</a></code></p>
+<p class="firstline">Updates an existing creative.</p>
+<h3>Method Details</h3>
+<div class="method">
+    <code class="details" id="get">get(profileId, id)</code>
+  <pre>Gets one creative by ID.
+
+Args:
+  profileId: string, User profile ID associated with this request. (required)
+  id: string, Creative ID. (required)
+
+Returns:
+  An object of the form:
+
+    { # Contains properties of a Creative.
+      "thirdPartyUrls": [ # Third-party URLs for tracking in-stream video creative events. Applicable to the following creative types: all INSTREAM_VIDEO and all VPAID.
+        { # Third-party Tracking URL.
+          "url": "A String", # URL for the specified third-party URL type.
+          "thirdPartyUrlType": "A String", # Third-party URL type for in-stream video creatives.
+        },
+      ],
+      "artworkType": "A String", # Type of artwork used for the creative. This is a read-only field. Applicable to the following creative types: all RICH_MEDIA, and all VPAID.
+      "latestTraffickedCreativeId": "A String", # Latest Studio trafficked creative ID associated with rich media and VPAID creatives. This is a read-only field. Applicable to the following creative types: all RICH_MEDIA, and all VPAID.
+      "videoDescription": "A String", # Description of the video ad. Applicable to the following creative types: all INSTREAM_VIDEO and all VPAID.
+      "advertiserId": "A String", # Advertiser ID of this creative. This is a required field. Applicable to all creative types.
+      "requiredFlashPluginVersion": "A String", # The minimum required Flash plugin version for this creative. For example, 11.2.202.235. This is a read-only field. Applicable to the following creative types: all RICH_MEDIA, and all VPAID.
+      "thirdPartyBackupImageImpressionsUrl": "A String", # Third-party URL used to record backup image impressions. Applicable to the following creative types: all RICH_MEDIA.
+      "timerCustomEvents": [ # List of timer events configured for the creative. For DISPLAY_IMAGE_GALLERY creatives, these are read-only and auto-generated from clickTags. Applicable to the following creative types: DISPLAY_IMAGE_GALLERY, all RICH_MEDIA, and all VPAID. Applicable to DISPLAY when the primary asset is not HTML_IMAGE.
+        { # Creative Custom Event.
+          "targetType": "A String", # Target type used by the event.
+          "artworkType": "A String", # Artwork type used by the creative.This is a read-only field.
+          "videoReportingId": "A String", # Video reporting ID, used to differentiate multiple videos in a single creative. This is a read-only field.
+          "popupWindowProperties": { # Popup Window Properties. # Properties for rich media popup windows. This field is used only for exit events.
+            "showStatusBar": True or False, # Whether to display the browser status bar.
+            "showScrollBar": True or False, # Whether to display the browser scroll bar.
+            "showAddressBar": True or False, # Whether to display the browser address bar.
+            "showMenuBar": True or False, # Whether to display the browser menu bar.
+            "title": "A String", # Title of popup window.
+            "showToolBar": True or False, # Whether to display the browser tool bar.
+            "positionType": "A String", # Popup window position either centered or at specific coordinate.
+            "offset": { # Offset Position. # Upper-left corner coordinates of the popup window. Applicable if positionType is COORDINATES.
+              "top": 42, # Offset distance from top side of an asset or a window.
+              "left": 42, # Offset distance from left side of an asset or a window.
+            },
+            "dimension": { # Represents the dimensions of ads, placements, creatives, or creative assets. # Popup dimension for a creative. This is a read-only field. Applicable to the following creative types: all RICH_MEDIA and all VPAID
+              "width": 42, # Width of this size.
+              "kind": "dfareporting#size", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#size".
+              "iab": True or False, # IAB standard size. This is a read-only, auto-generated field.
+              "id": "A String", # ID of this size. This is a read-only, auto-generated field.
+              "height": 42, # Height of this size.
+            },
+          },
+          "advertiserCustomEventId": "A String", # Unique ID of this event used by DDM Reporting and Data Transfer. This is a read-only field.
+          "artworkLabel": "A String", # Artwork label column, used to link events in DCM back to events in Studio. This is a required field and should not be modified after insertion.
+          "advertiserCustomEventType": "A String", # Type of the event. This is a read-only field.
+          "exitUrl": "A String", # Exit URL of the event. This field is used only for exit events.
+          "id": "A String", # ID of this event. This is a required field and should not be modified after insertion.
+          "advertiserCustomEventName": "A String", # User-entered name for the event.
+        },
+      ],
+      "renderingIdDimensionValue": { # Represents a DimensionValue resource. # Dimension value for the rendering ID of this creative. This is a read-only field. Applicable to all creative types.
+        "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+        "value": "A String", # The value of the dimension.
+        "dimensionName": "A String", # The name of the dimension.
+        "etag": "A String", # The eTag of this response for caching purposes.
+        "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+        "id": "A String", # The ID associated with the value if available.
+      },
+      "fsCommand": { # FsCommand. # OpenWindow FSCommand of this creative. This lets the SWF file communicate with either Flash Player or the program hosting Flash Player, such as a web browser. This is only triggered if allowScriptAccess field is true. Applicable to the following creative types: FLASH_INPAGE.
+        "windowHeight": 42, # Height of the window.
+        "top": 42, # Distance from the top of the browser. Applicable when positionOption is DISTANCE_FROM_TOP_LEFT_CORNER.
+        "windowWidth": 42, # Width of the window.
+        "positionOption": "A String", # Position in the browser where the window will open.
+        "left": 42, # Distance from the left of the browser.Applicable when positionOption is DISTANCE_FROM_TOP_LEFT_CORNER.
+      },
+      "dynamicAssetSelection": True or False, # Set this to true to enable the use of rules to target individual assets in this creative. When set to true creativeAssetSelection must be set. This also controls asset-level companions. When this is true, companion creatives should be assigned to creative assets. Learn more. Applicable to INSTREAM_VIDEO creatives.
+      "id": "A String", # ID of this creative. This is a read-only, auto-generated field. Applicable to all creative types.
+      "progressOffset": { # Video Offset # Amount of time to play the video before counting a view. Applicable to the following creative types: all INSTREAM_VIDEO.
+        "offsetPercentage": 42, # Duration, as a percentage of video duration. Do not set when offsetSeconds is set.
+        "offsetSeconds": 42, # Duration, in seconds. Do not set when offsetPercentage is set.
+      },
+      "accountId": "A String", # Account ID of this creative. This field, if left unset, will be auto-generated for both insert and update operations. Applicable to all creative types.
+      "studioTraffickedCreativeId": "A String", # Studio trafficked creative ID associated with rich media and VPAID creatives. This is a read-only field. Applicable to the following creative types: all RICH_MEDIA, and all VPAID.
+      "archived": True or False, # Whether the creative is archived. Applicable to all creative types.
+      "overrideCss": "A String", # Override CSS value for rich media creatives. Applicable to the following creative types: all RICH_MEDIA.
+      "authoringSource": "A String", # Source application where creative was authored. Presently, only DBM authored creatives will have this field set. Applicable to all creative types.
+      "requiredFlashVersion": 42, # The internal Flash version for this creative as calculated by DoubleClick Studio. This is a read-only field. Applicable to the following creative types: FLASH_INPAGE all RICH_MEDIA, and all VPAID. Applicable to DISPLAY when the primary asset type is not HTML_IMAGE.
+      "exitCustomEvents": [ # List of exit events configured for the creative. For DISPLAY and DISPLAY_IMAGE_GALLERY creatives, these are read-only and auto-generated from clickTags, For DISPLAY, an event is also created from the backupImageReportingLabel. Applicable to the following creative types: DISPLAY_IMAGE_GALLERY, all RICH_MEDIA, and all VPAID. Applicable to DISPLAY when the primary asset type is not HTML_IMAGE.
+        { # Creative Custom Event.
+          "targetType": "A String", # Target type used by the event.
+          "artworkType": "A String", # Artwork type used by the creative.This is a read-only field.
+          "videoReportingId": "A String", # Video reporting ID, used to differentiate multiple videos in a single creative. This is a read-only field.
+          "popupWindowProperties": { # Popup Window Properties. # Properties for rich media popup windows. This field is used only for exit events.
+            "showStatusBar": True or False, # Whether to display the browser status bar.
+            "showScrollBar": True or False, # Whether to display the browser scroll bar.
+            "showAddressBar": True or False, # Whether to display the browser address bar.
+            "showMenuBar": True or False, # Whether to display the browser menu bar.
+            "title": "A String", # Title of popup window.
+            "showToolBar": True or False, # Whether to display the browser tool bar.
+            "positionType": "A String", # Popup window position either centered or at specific coordinate.
+            "offset": { # Offset Position. # Upper-left corner coordinates of the popup window. Applicable if positionType is COORDINATES.
+              "top": 42, # Offset distance from top side of an asset or a window.
+              "left": 42, # Offset distance from left side of an asset or a window.
+            },
+            "dimension": { # Represents the dimensions of ads, placements, creatives, or creative assets. # Popup dimension for a creative. This is a read-only field. Applicable to the following creative types: all RICH_MEDIA and all VPAID
+              "width": 42, # Width of this size.
+              "kind": "dfareporting#size", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#size".
+              "iab": True or False, # IAB standard size. This is a read-only, auto-generated field.
+              "id": "A String", # ID of this size. This is a read-only, auto-generated field.
+              "height": 42, # Height of this size.
+            },
+          },
+          "advertiserCustomEventId": "A String", # Unique ID of this event used by DDM Reporting and Data Transfer. This is a read-only field.
+          "artworkLabel": "A String", # Artwork label column, used to link events in DCM back to events in Studio. This is a required field and should not be modified after insertion.
+          "advertiserCustomEventType": "A String", # Type of the event. This is a read-only field.
+          "exitUrl": "A String", # Exit URL of the event. This field is used only for exit events.
+          "id": "A String", # ID of this event. This is a required field and should not be modified after insertion.
+          "advertiserCustomEventName": "A String", # User-entered name for the event.
+        },
+      ],
+      "renderingId": "A String", # ID of current rendering version. This is a read-only field. Applicable to all creative types.
+      "counterCustomEvents": [ # List of counter events configured for the creative. For DISPLAY_IMAGE_GALLERY creatives, these are read-only and auto-generated from clickTags. Applicable to the following creative types: DISPLAY_IMAGE_GALLERY, all RICH_MEDIA, and all VPAID.
+        { # Creative Custom Event.
+          "targetType": "A String", # Target type used by the event.
+          "artworkType": "A String", # Artwork type used by the creative.This is a read-only field.
+          "videoReportingId": "A String", # Video reporting ID, used to differentiate multiple videos in a single creative. This is a read-only field.
+          "popupWindowProperties": { # Popup Window Properties. # Properties for rich media popup windows. This field is used only for exit events.
+            "showStatusBar": True or False, # Whether to display the browser status bar.
+            "showScrollBar": True or False, # Whether to display the browser scroll bar.
+            "showAddressBar": True or False, # Whether to display the browser address bar.
+            "showMenuBar": True or False, # Whether to display the browser menu bar.
+            "title": "A String", # Title of popup window.
+            "showToolBar": True or False, # Whether to display the browser tool bar.
+            "positionType": "A String", # Popup window position either centered or at specific coordinate.
+            "offset": { # Offset Position. # Upper-left corner coordinates of the popup window. Applicable if positionType is COORDINATES.
+              "top": 42, # Offset distance from top side of an asset or a window.
+              "left": 42, # Offset distance from left side of an asset or a window.
+            },
+            "dimension": { # Represents the dimensions of ads, placements, creatives, or creative assets. # Popup dimension for a creative. This is a read-only field. Applicable to the following creative types: all RICH_MEDIA and all VPAID
+              "width": 42, # Width of this size.
+              "kind": "dfareporting#size", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#size".
+              "iab": True or False, # IAB standard size. This is a read-only, auto-generated field.
+              "id": "A String", # ID of this size. This is a read-only, auto-generated field.
+              "height": 42, # Height of this size.
+            },
+          },
+          "advertiserCustomEventId": "A String", # Unique ID of this event used by DDM Reporting and Data Transfer. This is a read-only field.
+          "artworkLabel": "A String", # Artwork label column, used to link events in DCM back to events in Studio. This is a required field and should not be modified after insertion.
+          "advertiserCustomEventType": "A String", # Type of the event. This is a read-only field.
+          "exitUrl": "A String", # Exit URL of the event. This field is used only for exit events.
+          "id": "A String", # ID of this event. This is a required field and should not be modified after insertion.
+          "advertiserCustomEventName": "A String", # User-entered name for the event.
+        },
+      ],
+      "skipOffset": { # Video Offset # Amount of time to play the video before the skip button appears. Applicable to the following creative types: all INSTREAM_VIDEO.
+        "offsetPercentage": 42, # Duration, as a percentage of video duration. Do not set when offsetSeconds is set.
+        "offsetSeconds": 42, # Duration, in seconds. Do not set when offsetPercentage is set.
+      },
+      "backupImageReportingLabel": "A String", # Reporting label used for HTML5 banner backup image. Applicable to the following creative types: DISPLAY when the primary asset type is not HTML_IMAGE.
+      "version": 42, # The version number helps you keep track of multiple versions of your creative in your reports. The version number will always be auto-generated during insert operations to start at 1. For tracking creatives the version cannot be incremented and will always remain at 1. For all other creative types the version can be incremented only by 1 during update operations. In addition, the version will be automatically incremented by 1 when undergoing Rich Media creative merging. Applicable to all creative types.
+      "creativeFieldAssignments": [ # Creative field assignments for this creative. Applicable to all creative types.
+        { # Creative Field Assignment.
+          "creativeFieldId": "A String", # ID of the creative field.
+          "creativeFieldValueId": "A String", # ID of the creative field value.
+        },
+      ],
+      "backgroundColor": "A String", # The 6-character HTML color code, beginning with #, for the background of the window area where the Flash file is displayed. Default is white. Applicable to the following creative types: FLASH_INPAGE.
+      "customKeyValues": [ # Custom key-values for a Rich Media creative. Key-values let you customize the creative settings of a Rich Media ad running on your site without having to contact the advertiser. You can use key-values to dynamically change the look or functionality of a creative. Applicable to the following creative types: all RICH_MEDIA, and all VPAID.
+        "A String",
+      ],
+      "idDimensionValue": { # Represents a DimensionValue resource. # Dimension value for the ID of this creative. This is a read-only field. Applicable to all creative types.
+        "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+        "value": "A String", # The value of the dimension.
+        "dimensionName": "A String", # The name of the dimension.
+        "etag": "A String", # The eTag of this response for caching purposes.
+        "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+        "id": "A String", # The ID associated with the value if available.
+      },
+      "htmlCode": "A String", # HTML code for the creative. This is a required field when applicable. This field is ignored if htmlCodeLocked is false. Applicable to the following creative types: all CUSTOM, FLASH_INPAGE, and HTML5_BANNER, and all RICH_MEDIA.
+      "size": { # Represents the dimensions of ads, placements, creatives, or creative assets. # Size associated with this creative. When inserting or updating a creative either the size ID field or size width and height fields can be used. This is a required field when applicable; however for IMAGE, FLASH_INPAGE creatives, and for DISPLAY creatives with a primary asset of type HTML_IMAGE, if left blank, this field will be automatically set using the actual size of the associated image assets. Applicable to the following creative types: DISPLAY, DISPLAY_IMAGE_GALLERY, FLASH_INPAGE, HTML5_BANNER, IMAGE, and all RICH_MEDIA.
+        "width": 42, # Width of this size.
+        "kind": "dfareporting#size", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#size".
+        "iab": True or False, # IAB standard size. This is a read-only, auto-generated field.
+        "id": "A String", # ID of this size. This is a read-only, auto-generated field.
+        "height": 42, # Height of this size.
+      },
+      "type": "A String", # Type of this creative. This is a required field. Applicable to all creative types.
+          #
+          # Note: FLASH_INPAGE, HTML5_BANNER, and IMAGE are only used for existing creatives. New creatives should use DISPLAY as a replacement for these types.
+      "totalFileSize": "A String", # Combined size of all creative assets. This is a read-only field. Applicable to the following creative types: all RICH_MEDIA, and all VPAID.
+      "thirdPartyRichMediaImpressionsUrl": "A String", # Third-party URL used to record rich media impressions. Applicable to the following creative types: all RICH_MEDIA.
+      "studioAdvertiserId": "A String", # Studio advertiser ID associated with rich media and VPAID creatives. This is a read-only field. Applicable to the following creative types: all RICH_MEDIA, and all VPAID.
+      "creativeAssets": [ # Assets associated with a creative. Applicable to all but the following creative types: INTERNAL_REDIRECT, INTERSTITIAL_INTERNAL_REDIRECT, and REDIRECT
+        { # Creative Asset.
+          "mimeType": "A String", # Detected MIME type for video asset. This is a read-only field. Applicable to the following creative types: INSTREAM_VIDEO and all VPAID.
+          "artworkType": "A String", # Artwork type of rich media creative. This is a read-only field. Applicable to the following creative types: all RICH_MEDIA.
+          "positionLeftUnit": "A String", # Offset left unit for an asset. This is a read-only field. Applicable to the following creative types: all RICH_MEDIA.
+          "collapsedSize": { # Represents the dimensions of ads, placements, creatives, or creative assets. # Size of an asset when collapsed. This is a read-only field. Applicable to the following creative types: all RICH_MEDIA and all VPAID. Additionally, applicable to assets whose displayType is ASSET_DISPLAY_TYPE_EXPANDING or ASSET_DISPLAY_TYPE_PEEL_DOWN.
+            "width": 42, # Width of this size.
+            "kind": "dfareporting#size", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#size".
+            "iab": True or False, # IAB standard size. This is a read-only, auto-generated field.
+            "id": "A String", # ID of this size. This is a read-only, auto-generated field.
+            "height": 42, # Height of this size.
+          },
+          "flashVersion": 42, # Flash version of the asset. This is a read-only field. Applicable to the following creative types: FLASH_INPAGE, all RICH_MEDIA, and all VPAID. Applicable to DISPLAY when the primary asset type is not HTML_IMAGE.
+          "pushdown": True or False, # Whether the asset pushes down other content. Applicable to the following creative types: all RICH_MEDIA. Additionally, only applicable when the asset offsets are 0, the collapsedSize.width matches size.width, and the collapsedSize.height is less than size.height.
+          "hideFlashObjects": True or False, # Whether to hide Flash objects flag for an asset. Applicable to the following creative types: all RICH_MEDIA.
+          "detectedFeatures": [ # List of feature dependencies for the creative asset that are detected by DCM. Feature dependencies are features that a browser must be able to support in order to render your HTML5 creative correctly. This is a read-only, auto-generated field. Applicable to the following creative types: HTML5_BANNER. Applicable to DISPLAY when the primary asset type is not HTML_IMAGE.
+            "A String",
+          ],
+          "originalBackup": True or False, # Whether the backup asset is original or changed by the user in DCM. Applicable to the following creative types: all RICH_MEDIA.
+          "duration": 42, # Duration in seconds for which an asset will be displayed. Applicable to the following creative types: INSTREAM_VIDEO and VPAID_LINEAR_VIDEO.
+          "positionTopUnit": "A String", # Offset top unit for an asset. This is a read-only field if the asset displayType is ASSET_DISPLAY_TYPE_OVERLAY. Applicable to the following creative types: all RICH_MEDIA.
+          "id": "A String", # Numeric ID of this creative asset. This is a required field and should not be modified. Applicable to all but the following creative types: all REDIRECT and TRACKING_TEXT.
+          "alignment": "A String", # Possible alignments for an asset. This is a read-only field. Applicable to the following creative types: RICH_MEDIA_DISPLAY_MULTI_FLOATING_INTERSTITIAL.
+          "size": { # Represents the dimensions of ads, placements, creatives, or creative assets. # Size associated with this creative asset. This is a required field when applicable; however for IMAGE and FLASH_INPAGE, creatives if left blank, this field will be automatically set using the actual size of the associated image asset. Applicable to the following creative types: DISPLAY_IMAGE_GALLERY, FLASH_INPAGE, HTML5_BANNER, IMAGE, and all RICH_MEDIA. Applicable to DISPLAY when the primary asset type is not HTML_IMAGE.
+            "width": 42, # Width of this size.
+            "kind": "dfareporting#size", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#size".
+            "iab": True or False, # IAB standard size. This is a read-only, auto-generated field.
+            "id": "A String", # ID of this size. This is a read-only, auto-generated field.
+            "height": 42, # Height of this size.
+          },
+          "horizontallyLocked": True or False, # Whether the asset is horizontally locked. This is a read-only field. Applicable to the following creative types: all RICH_MEDIA.
+          "startTimeType": "A String", # Initial wait time type before making the asset visible. Applicable to the following creative types: all RICH_MEDIA.
+          "displayType": "A String", # Type of rich media asset. This is a read-only field. Applicable to the following creative types: all RICH_MEDIA.
+          "expandedDimension": { # Represents the dimensions of ads, placements, creatives, or creative assets. # Detected expanded dimension for video asset. This is a read-only field. Applicable to the following creative types: INSTREAM_VIDEO and all VPAID.
+            "width": 42, # Width of this size.
+            "kind": "dfareporting#size", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#size".
+            "iab": True or False, # IAB standard size. This is a read-only, auto-generated field.
+            "id": "A String", # ID of this size. This is a read-only, auto-generated field.
+            "height": 42, # Height of this size.
+          },
+          "verticallyLocked": True or False, # Whether the asset is vertically locked. This is a read-only field. Applicable to the following creative types: all RICH_MEDIA.
+          "idDimensionValue": { # Represents a DimensionValue resource. # Dimension value for the ID of the asset. This is a read-only, auto-generated field.
+            "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+            "value": "A String", # The value of the dimension.
+            "dimensionName": "A String", # The name of the dimension.
+            "etag": "A String", # The eTag of this response for caching purposes.
+            "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+            "id": "A String", # The ID associated with the value if available.
+          },
+          "role": "A String", # Role of the asset in relation to creative. Applicable to all but the following creative types: all REDIRECT and TRACKING_TEXT. This is a required field.
+              # PRIMARY applies to DISPLAY, FLASH_INPAGE, HTML5_BANNER, IMAGE, DISPLAY_IMAGE_GALLERY, all RICH_MEDIA (which may contain multiple primary assets), and all VPAID creatives.
+              # BACKUP_IMAGE applies to FLASH_INPAGE, HTML5_BANNER, all RICH_MEDIA, and all VPAID creatives. Applicable to DISPLAY when the primary asset type is not HTML_IMAGE.
+              # ADDITIONAL_IMAGE and ADDITIONAL_FLASH apply to FLASH_INPAGE creatives.
+              # OTHER refers to assets from sources other than DCM, such as Studio uploaded assets, applicable to all RICH_MEDIA and all VPAID creatives.
+              # PARENT_VIDEO refers to videos uploaded by the user in DCM and is applicable to INSTREAM_VIDEO and VPAID_LINEAR_VIDEO creatives.
+              # TRANSCODED_VIDEO refers to videos transcoded by DCM from PARENT_VIDEO assets and is applicable to INSTREAM_VIDEO and VPAID_LINEAR_VIDEO creatives.
+              # ALTERNATE_VIDEO refers to the DCM representation of child asset videos from Studio, and is applicable to VPAID_LINEAR_VIDEO creatives. These cannot be added or removed within DCM.
+              # For VPAID_LINEAR_VIDEO creatives, PARENT_VIDEO, TRANSCODED_VIDEO and ALTERNATE_VIDEO assets that are marked active serve as backup in case the VPAID creative cannot be served. Only PARENT_VIDEO assets can be added or removed for an INSTREAM_VIDEO or VPAID_LINEAR_VIDEO creative.
+          "zipFilesize": "A String", # Size of zip file. This is a read-only field. Applicable to the following creative types: HTML5_BANNER.
+          "bitRate": 42, # Detected bit-rate for video asset. This is a read-only field. Applicable to the following creative types: INSTREAM_VIDEO and all VPAID.
+          "windowMode": "A String", # Window mode options for flash assets. Applicable to the following creative types: FLASH_INPAGE, RICH_MEDIA_DISPLAY_EXPANDING, RICH_MEDIA_IM_EXPAND, RICH_MEDIA_DISPLAY_BANNER, and RICH_MEDIA_INPAGE_FLOATING.
+          "progressiveServingUrl": "A String", # Progressive URL for video asset. This is a read-only field. Applicable to the following creative types: INSTREAM_VIDEO and all VPAID.
+          "durationType": "A String", # Duration type for which an asset will be displayed. Applicable to the following creative types: all RICH_MEDIA.
+          "videoDuration": 3.14, # Detected video duration for video asset. This is a read-only field. Applicable to the following creative types: INSTREAM_VIDEO and all VPAID.
+          "fileSize": "A String", # File size associated with this creative asset. This is a read-only field. Applicable to all but the following creative types: all REDIRECT and TRACKING_TEXT.
+          "zipFilename": "A String", # File name of zip file. This is a read-only field. Applicable to the following creative types: HTML5_BANNER.
+          "offset": { # Offset Position. # Offset position for an asset in collapsed mode. This is a read-only field. Applicable to the following creative types: all RICH_MEDIA and all VPAID. Additionally, only applicable to assets whose displayType is ASSET_DISPLAY_TYPE_EXPANDING or ASSET_DISPLAY_TYPE_PEEL_DOWN.
+            "top": 42, # Offset distance from top side of an asset or a window.
+            "left": 42, # Offset distance from left side of an asset or a window.
+          },
+          "active": True or False, # Whether the video asset is active. This is a read-only field for VPAID_NON_LINEAR_VIDEO assets. Applicable to the following creative types: INSTREAM_VIDEO and all VPAID.
+          "companionCreativeIds": [ # List of companion creatives assigned to an in-stream video creative asset. Acceptable values include IDs of existing flash and image creatives. Applicable to INSTREAM_VIDEO creative type with dynamicAssetSelection set to true.
+            "A String",
+          ],
+          "hideSelectionBoxes": True or False, # Whether to hide selection boxes flag for an asset. Applicable to the following creative types: all RICH_MEDIA.
+          "streamingServingUrl": "A String", # Streaming URL for video asset. This is a read-only field. Applicable to the following creative types: INSTREAM_VIDEO and all VPAID.
+          "zIndex": 42, # zIndex value of an asset. This is a read-only field. Applicable to the following creative types: all RICH_MEDIA.Additionally, only applicable to assets whose displayType is NOT one of the following types: ASSET_DISPLAY_TYPE_INPAGE or ASSET_DISPLAY_TYPE_OVERLAY.
+          "childAssetType": "A String", # Rich media child asset type. This is a read-only field. Applicable to the following creative types: all VPAID.
+          "backupImageExit": { # Creative Custom Event. # Exit event configured for the backup image. Applicable to the following creative types: all RICH_MEDIA.
+            "targetType": "A String", # Target type used by the event.
+            "artworkType": "A String", # Artwork type used by the creative.This is a read-only field.
+            "videoReportingId": "A String", # Video reporting ID, used to differentiate multiple videos in a single creative. This is a read-only field.
+            "popupWindowProperties": { # Popup Window Properties. # Properties for rich media popup windows. This field is used only for exit events.
+              "showStatusBar": True or False, # Whether to display the browser status bar.
+              "showScrollBar": True or False, # Whether to display the browser scroll bar.
+              "showAddressBar": True or False, # Whether to display the browser address bar.
+              "showMenuBar": True or False, # Whether to display the browser menu bar.
+              "title": "A String", # Title of popup window.
+              "showToolBar": True or False, # Whether to display the browser tool bar.
+              "positionType": "A String", # Popup window position either centered or at specific coordinate.
+              "offset": { # Offset Position. # Upper-left corner coordinates of the popup window. Applicable if positionType is COORDINATES.
+                "top": 42, # Offset distance from top side of an asset or a window.
+                "left": 42, # Offset distance from left side of an asset or a window.
+              },
+              "dimension": { # Represents the dimensions of ads, placements, creatives, or creative assets. # Popup dimension for a creative. This is a read-only field. Applicable to the following creative types: all RICH_MEDIA and all VPAID
+                "width": 42, # Width of this size.
+                "kind": "dfareporting#size", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#size".
+                "iab": True or False, # IAB standard size. This is a read-only, auto-generated field.
+                "id": "A String", # ID of this size. This is a read-only, auto-generated field.
+                "height": 42, # Height of this size.
+              },
+            },
+            "advertiserCustomEventId": "A String", # Unique ID of this event used by DDM Reporting and Data Transfer. This is a read-only field.
+            "artworkLabel": "A String", # Artwork label column, used to link events in DCM back to events in Studio. This is a required field and should not be modified after insertion.
+            "advertiserCustomEventType": "A String", # Type of the event. This is a read-only field.
+            "exitUrl": "A String", # Exit URL of the event. This field is used only for exit events.
+            "id": "A String", # ID of this event. This is a required field and should not be modified after insertion.
+            "advertiserCustomEventName": "A String", # User-entered name for the event.
+          },
+          "actionScript3": True or False, # Whether ActionScript3 is enabled for the flash asset. This is a read-only field. Applicable to the following creative type: FLASH_INPAGE. Applicable to DISPLAY when the primary asset type is not HTML_IMAGE.
+          "pushdownDuration": 3.14, # Pushdown duration in seconds for an asset. Must be between 0 and 9.99. Applicable to the following creative types: all RICH_MEDIA.Additionally, only applicable when the asset pushdown field is true, the offsets are 0, the collapsedSize.width matches size.width, and the collapsedSize.height is less than size.height.
+          "assetIdentifier": { # Creative Asset ID. # Identifier of this asset. This is the same identifier returned during creative asset insert operation. This is a required field. Applicable to all but the following creative types: all REDIRECT and TRACKING_TEXT.
+            "type": "A String", # Type of asset to upload. This is a required field. FLASH and IMAGE are no longer supported for new uploads. All image assets should use HTML_IMAGE.
+            "name": "A String", # Name of the creative asset. This is a required field while inserting an asset. After insertion, this assetIdentifier is used to identify the uploaded asset. Characters in the name must be alphanumeric or one of the following: ".-_ ". Spaces are allowed.
+          },
+          "transparency": True or False, # Whether the asset is transparent. Applicable to the following creative types: all RICH_MEDIA. Additionally, only applicable to HTML5 assets.
+          "sslCompliant": True or False, # Whether the asset is SSL-compliant. This is a read-only field. Applicable to all but the following creative types: all REDIRECT and TRACKING_TEXT.
+          "position": { # Offset Position. # Offset position for an asset. Applicable to the following creative types: all RICH_MEDIA.
+            "top": 42, # Offset distance from top side of an asset or a window.
+            "left": 42, # Offset distance from left side of an asset or a window.
+          },
+          "customStartTimeValue": 42, # Custom start time in seconds for making the asset visible. Applicable to the following creative types: all RICH_MEDIA.
+        },
+      ],
+      "redirectUrl": "A String", # URL of hosted image or hosted video or another ad tag. For INSTREAM_VIDEO_REDIRECT creatives this is the in-stream video redirect URL. The standard for a VAST (Video Ad Serving Template) ad response allows for a redirect link to another VAST 2.0 or 3.0 call. This is a required field when applicable. Applicable to the following creative types: DISPLAY_REDIRECT, INTERNAL_REDIRECT, INTERSTITIAL_INTERNAL_REDIRECT, and INSTREAM_VIDEO_REDIRECT
+      "videoDuration": 3.14, # Creative video duration in seconds. This is a read-only field. Applicable to the following creative types: INSTREAM_VIDEO, all RICH_MEDIA, and all VPAID.
+      "htmlCodeLocked": True or False, # Whether HTML code is DCM-generated or manually entered. Set to true to ignore changes to htmlCode. Applicable to the following creative types: FLASH_INPAGE and HTML5_BANNER.
+      "convertFlashToHtml5": True or False, # Whether Flash assets associated with the creative need to be automatically converted to HTML5. This flag is enabled by default and users can choose to disable it if they don't want the system to generate and use HTML5 asset for this creative. Applicable to the following creative type: FLASH_INPAGE. Applicable to DISPLAY when the primary asset type is not HTML_IMAGE.
+      "clickTags": [ # Click tags of the creative. For DISPLAY, FLASH_INPAGE, and HTML5_BANNER creatives, this is a subset of detected click tags for the assets associated with this creative. After creating a flash asset, detected click tags will be returned in the creativeAssetMetadata. When inserting the creative, populate the creative clickTags field using the creativeAssetMetadata.clickTags field. For DISPLAY_IMAGE_GALLERY creatives, there should be exactly one entry in this list for each image creative asset. A click tag is matched with a corresponding creative asset by matching the clickTag.name field with the creativeAsset.assetIdentifier.name field. Applicable to the following creative types: DISPLAY_IMAGE_GALLERY, FLASH_INPAGE, HTML5_BANNER. Applicable to DISPLAY when the primary asset type is not HTML_IMAGE.
+        { # Creative Click Tag.
+          "eventName": "A String", # Advertiser event name associated with the click tag. This field is used by DISPLAY_IMAGE_GALLERY and HTML5_BANNER creatives. Applicable to DISPLAY when the primary asset type is not HTML_IMAGE.
+          "name": "A String", # Parameter name for the specified click tag. For DISPLAY_IMAGE_GALLERY creative assets, this field must match the value of the creative asset's creativeAssetId.name field.
+          "value": "A String", # Parameter value for the specified click tag. This field contains a click-through url.
+        },
+      ],
+      "commercialId": "A String", # Industry standard ID assigned to creative for reach and frequency. Applicable to the following creative types: all INSTREAM_VIDEO and all VPAID.
+      "active": True or False, # Whether the creative is active. Applicable to all creative types.
+      "compatibility": [ # Compatibilities associated with this creative. This is a read-only field. DISPLAY and DISPLAY_INTERSTITIAL refer to rendering either on desktop or on mobile devices or in mobile apps for regular or interstitial ads, respectively. APP and APP_INTERSTITIAL are for rendering in mobile apps. Only pre-existing creatives may have these compatibilities since new creatives will either be assigned DISPLAY or DISPLAY_INTERSTITIAL instead. IN_STREAM_VIDEO refers to rendering in in-stream video ads developed with the VAST standard. Applicable to all creative types.
+          #
+          # Acceptable values are:
+          # - "APP"
+          # - "APP_INTERSTITIAL"
+          # - "IN_STREAM_VIDEO"
+          # - "DISPLAY"
+          # - "DISPLAY_INTERSTITIAL"
+        "A String",
+      ],
+      "adParameters": "A String", # Ad parameters user for VPAID creative. This is a read-only field. Applicable to the following creative types: all VPAID.
+      "adTagKeys": [ # Keywords for a Rich Media creative. Keywords let you customize the creative settings of a Rich Media ad running on your site without having to contact the advertiser. You can use keywords to dynamically change the look or functionality of a creative. Applicable to the following creative types: all RICH_MEDIA, and all VPAID.
+        "A String",
+      ],
+      "kind": "dfareporting#creative", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#creative".
+      "subaccountId": "A String", # Subaccount ID of this creative. This field, if left unset, will be auto-generated for both insert and update operations. Applicable to all creative types.
+      "name": "A String", # Name of the creative. This is a required field and must be less than 256 characters long. Applicable to all creative types.
+      "sslOverride": True or False, # Whether creative should be treated as SSL compliant even if the system scan shows it's not. Applicable to all creative types.
+      "lastModifiedInfo": { # Modification timestamp. # Creative last modification information. This is a read-only field. Applicable to all creative types.
+        "time": "A String", # Timestamp of the last change in milliseconds since epoch.
+      },
+      "backupImageClickThroughUrl": "A String", # Click-through URL for backup image. Applicable to the following creative types: FLASH_INPAGE and HTML5_BANNER. Applicable to DISPLAY when the primary asset type is not HTML_IMAGE.
+      "sslCompliant": True or False, # Whether the creative is SSL-compliant. This is a read-only field. Applicable to all creative types.
+      "studioCreativeId": "A String", # Studio creative ID associated with rich media and VPAID creatives. This is a read-only field. Applicable to the following creative types: all RICH_MEDIA, and all VPAID.
+      "authoringTool": "A String", # Authoring tool for HTML5 banner creatives. This is a read-only field. Applicable to the following creative types: HTML5_BANNER.
+      "allowScriptAccess": True or False, # Whether script access is allowed for this creative. This is a read-only and deprecated field which will automatically be set to true on update. Applicable to the following creative types: FLASH_INPAGE.
+      "companionCreatives": [ # List of companion creatives assigned to an in-Stream videocreative. Acceptable values include IDs of existing flash and image creatives. Applicable to the following creative types: all VPAID and all INSTREAM_VIDEO with dynamicAssetSelection set to false.
+        "A String",
+      ],
+      "creativeAssetSelection": { # Encapsulates the list of rules for asset selection and a default asset in case none of the rules match. Applicable to INSTREAM_VIDEO creatives. # Required if dynamicAssetSelection is true.
+        "rules": [ # Rules determine which asset will be served to a viewer. Rules will be evaluated in the order in which they are stored in this list. This list must contain at least one rule. Applicable to INSTREAM_VIDEO creatives.
+          { # A rule associates an asset with a targeting template for asset-level targeting. Applicable to INSTREAM_VIDEO creatives.
+            "assetId": "A String", # A creativeAssets[].id. This should refer to one of the parent assets in this creative. This is a required field.
+            "targetingTemplateId": "A String", # A targeting template ID. The targeting from the targeting template will be used to determine whether this asset should be served. This is a required field.
+            "name": "A String", # A user-friendly name for this rule. This is a required field.
+          },
+        ],
+        "defaultAssetId": "A String", # A creativeAssets[].id. This should refer to one of the parent assets in this creative, and will be served if none of the rules match. This is a required field.
+      },
+      "auto_advance_images": True or False, # Whether images are automatically advanced for image gallery creatives. Applicable to the following creative types: DISPLAY_IMAGE_GALLERY.
+      "backupImageFeatures": [ # List of feature dependencies that will cause a backup image to be served if the browser that serves the ad does not support them. Feature dependencies are features that a browser must be able to support in order to render your HTML5 creative asset correctly. This field is initially auto-generated to contain all features detected by DCM for all the assets of this creative and can then be modified by the client. To reset this field, copy over all the creativeAssets' detected features. Applicable to the following creative types: HTML5_BANNER. Applicable to DISPLAY when the primary asset type is not HTML_IMAGE.
+        "A String",
+      ],
+      "backupImageTargetWindow": { # Target Window. # Target window for backup image. Applicable to the following creative types: FLASH_INPAGE and HTML5_BANNER. Applicable to DISPLAY when the primary asset type is not HTML_IMAGE.
+        "customHtml": "A String", # User-entered value.
+        "targetWindowOption": "A String", # Type of browser window for which the backup image of the flash creative can be displayed.
+      },
+      "skippable": True or False, # Whether the user can choose to skip the creative. Applicable to the following creative types: all INSTREAM_VIDEO and all VPAID.
+    }</pre>
+</div>
+
+<div class="method">
+    <code class="details" id="insert">insert(profileId, body)</code>
+  <pre>Inserts a new creative.
+
+Args:
+  profileId: string, User profile ID associated with this request. (required)
+  body: object, The request body. (required)
+    The object takes the form of:
+
+{ # Contains properties of a Creative.
+    "thirdPartyUrls": [ # Third-party URLs for tracking in-stream video creative events. Applicable to the following creative types: all INSTREAM_VIDEO and all VPAID.
+      { # Third-party Tracking URL.
+        "url": "A String", # URL for the specified third-party URL type.
+        "thirdPartyUrlType": "A String", # Third-party URL type for in-stream video creatives.
+      },
+    ],
+    "artworkType": "A String", # Type of artwork used for the creative. This is a read-only field. Applicable to the following creative types: all RICH_MEDIA, and all VPAID.
+    "latestTraffickedCreativeId": "A String", # Latest Studio trafficked creative ID associated with rich media and VPAID creatives. This is a read-only field. Applicable to the following creative types: all RICH_MEDIA, and all VPAID.
+    "videoDescription": "A String", # Description of the video ad. Applicable to the following creative types: all INSTREAM_VIDEO and all VPAID.
+    "advertiserId": "A String", # Advertiser ID of this creative. This is a required field. Applicable to all creative types.
+    "requiredFlashPluginVersion": "A String", # The minimum required Flash plugin version for this creative. For example, 11.2.202.235. This is a read-only field. Applicable to the following creative types: all RICH_MEDIA, and all VPAID.
+    "thirdPartyBackupImageImpressionsUrl": "A String", # Third-party URL used to record backup image impressions. Applicable to the following creative types: all RICH_MEDIA.
+    "timerCustomEvents": [ # List of timer events configured for the creative. For DISPLAY_IMAGE_GALLERY creatives, these are read-only and auto-generated from clickTags. Applicable to the following creative types: DISPLAY_IMAGE_GALLERY, all RICH_MEDIA, and all VPAID. Applicable to DISPLAY when the primary asset is not HTML_IMAGE.
+      { # Creative Custom Event.
+        "targetType": "A String", # Target type used by the event.
+        "artworkType": "A String", # Artwork type used by the creative.This is a read-only field.
+        "videoReportingId": "A String", # Video reporting ID, used to differentiate multiple videos in a single creative. This is a read-only field.
+        "popupWindowProperties": { # Popup Window Properties. # Properties for rich media popup windows. This field is used only for exit events.
+          "showStatusBar": True or False, # Whether to display the browser status bar.
+          "showScrollBar": True or False, # Whether to display the browser scroll bar.
+          "showAddressBar": True or False, # Whether to display the browser address bar.
+          "showMenuBar": True or False, # Whether to display the browser menu bar.
+          "title": "A String", # Title of popup window.
+          "showToolBar": True or False, # Whether to display the browser tool bar.
+          "positionType": "A String", # Popup window position either centered or at specific coordinate.
+          "offset": { # Offset Position. # Upper-left corner coordinates of the popup window. Applicable if positionType is COORDINATES.
+            "top": 42, # Offset distance from top side of an asset or a window.
+            "left": 42, # Offset distance from left side of an asset or a window.
+          },
+          "dimension": { # Represents the dimensions of ads, placements, creatives, or creative assets. # Popup dimension for a creative. This is a read-only field. Applicable to the following creative types: all RICH_MEDIA and all VPAID
+            "width": 42, # Width of this size.
+            "kind": "dfareporting#size", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#size".
+            "iab": True or False, # IAB standard size. This is a read-only, auto-generated field.
+            "id": "A String", # ID of this size. This is a read-only, auto-generated field.
+            "height": 42, # Height of this size.
+          },
+        },
+        "advertiserCustomEventId": "A String", # Unique ID of this event used by DDM Reporting and Data Transfer. This is a read-only field.
+        "artworkLabel": "A String", # Artwork label column, used to link events in DCM back to events in Studio. This is a required field and should not be modified after insertion.
+        "advertiserCustomEventType": "A String", # Type of the event. This is a read-only field.
+        "exitUrl": "A String", # Exit URL of the event. This field is used only for exit events.
+        "id": "A String", # ID of this event. This is a required field and should not be modified after insertion.
+        "advertiserCustomEventName": "A String", # User-entered name for the event.
+      },
+    ],
+    "renderingIdDimensionValue": { # Represents a DimensionValue resource. # Dimension value for the rendering ID of this creative. This is a read-only field. Applicable to all creative types.
+      "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+      "value": "A String", # The value of the dimension.
+      "dimensionName": "A String", # The name of the dimension.
+      "etag": "A String", # The eTag of this response for caching purposes.
+      "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+      "id": "A String", # The ID associated with the value if available.
+    },
+    "fsCommand": { # FsCommand. # OpenWindow FSCommand of this creative. This lets the SWF file communicate with either Flash Player or the program hosting Flash Player, such as a web browser. This is only triggered if allowScriptAccess field is true. Applicable to the following creative types: FLASH_INPAGE.
+      "windowHeight": 42, # Height of the window.
+      "top": 42, # Distance from the top of the browser. Applicable when positionOption is DISTANCE_FROM_TOP_LEFT_CORNER.
+      "windowWidth": 42, # Width of the window.
+      "positionOption": "A String", # Position in the browser where the window will open.
+      "left": 42, # Distance from the left of the browser.Applicable when positionOption is DISTANCE_FROM_TOP_LEFT_CORNER.
+    },
+    "dynamicAssetSelection": True or False, # Set this to true to enable the use of rules to target individual assets in this creative. When set to true creativeAssetSelection must be set. This also controls asset-level companions. When this is true, companion creatives should be assigned to creative assets. Learn more. Applicable to INSTREAM_VIDEO creatives.
+    "id": "A String", # ID of this creative. This is a read-only, auto-generated field. Applicable to all creative types.
+    "progressOffset": { # Video Offset # Amount of time to play the video before counting a view. Applicable to the following creative types: all INSTREAM_VIDEO.
+      "offsetPercentage": 42, # Duration, as a percentage of video duration. Do not set when offsetSeconds is set.
+      "offsetSeconds": 42, # Duration, in seconds. Do not set when offsetPercentage is set.
+    },
+    "accountId": "A String", # Account ID of this creative. This field, if left unset, will be auto-generated for both insert and update operations. Applicable to all creative types.
+    "studioTraffickedCreativeId": "A String", # Studio trafficked creative ID associated with rich media and VPAID creatives. This is a read-only field. Applicable to the following creative types: all RICH_MEDIA, and all VPAID.
+    "archived": True or False, # Whether the creative is archived. Applicable to all creative types.
+    "overrideCss": "A String", # Override CSS value for rich media creatives. Applicable to the following creative types: all RICH_MEDIA.
+    "authoringSource": "A String", # Source application where creative was authored. Presently, only DBM authored creatives will have this field set. Applicable to all creative types.
+    "requiredFlashVersion": 42, # The internal Flash version for this creative as calculated by DoubleClick Studio. This is a read-only field. Applicable to the following creative types: FLASH_INPAGE all RICH_MEDIA, and all VPAID. Applicable to DISPLAY when the primary asset type is not HTML_IMAGE.
+    "exitCustomEvents": [ # List of exit events configured for the creative. For DISPLAY and DISPLAY_IMAGE_GALLERY creatives, these are read-only and auto-generated from clickTags, For DISPLAY, an event is also created from the backupImageReportingLabel. Applicable to the following creative types: DISPLAY_IMAGE_GALLERY, all RICH_MEDIA, and all VPAID. Applicable to DISPLAY when the primary asset type is not HTML_IMAGE.
+      { # Creative Custom Event.
+        "targetType": "A String", # Target type used by the event.
+        "artworkType": "A String", # Artwork type used by the creative.This is a read-only field.
+        "videoReportingId": "A String", # Video reporting ID, used to differentiate multiple videos in a single creative. This is a read-only field.
+        "popupWindowProperties": { # Popup Window Properties. # Properties for rich media popup windows. This field is used only for exit events.
+          "showStatusBar": True or False, # Whether to display the browser status bar.
+          "showScrollBar": True or False, # Whether to display the browser scroll bar.
+          "showAddressBar": True or False, # Whether to display the browser address bar.
+          "showMenuBar": True or False, # Whether to display the browser menu bar.
+          "title": "A String", # Title of popup window.
+          "showToolBar": True or False, # Whether to display the browser tool bar.
+          "positionType": "A String", # Popup window position either centered or at specific coordinate.
+          "offset": { # Offset Position. # Upper-left corner coordinates of the popup window. Applicable if positionType is COORDINATES.
+            "top": 42, # Offset distance from top side of an asset or a window.
+            "left": 42, # Offset distance from left side of an asset or a window.
+          },
+          "dimension": { # Represents the dimensions of ads, placements, creatives, or creative assets. # Popup dimension for a creative. This is a read-only field. Applicable to the following creative types: all RICH_MEDIA and all VPAID
+            "width": 42, # Width of this size.
+            "kind": "dfareporting#size", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#size".
+            "iab": True or False, # IAB standard size. This is a read-only, auto-generated field.
+            "id": "A String", # ID of this size. This is a read-only, auto-generated field.
+            "height": 42, # Height of this size.
+          },
+        },
+        "advertiserCustomEventId": "A String", # Unique ID of this event used by DDM Reporting and Data Transfer. This is a read-only field.
+        "artworkLabel": "A String", # Artwork label column, used to link events in DCM back to events in Studio. This is a required field and should not be modified after insertion.
+        "advertiserCustomEventType": "A String", # Type of the event. This is a read-only field.
+        "exitUrl": "A String", # Exit URL of the event. This field is used only for exit events.
+        "id": "A String", # ID of this event. This is a required field and should not be modified after insertion.
+        "advertiserCustomEventName": "A String", # User-entered name for the event.
+      },
+    ],
+    "renderingId": "A String", # ID of current rendering version. This is a read-only field. Applicable to all creative types.
+    "counterCustomEvents": [ # List of counter events configured for the creative. For DISPLAY_IMAGE_GALLERY creatives, these are read-only and auto-generated from clickTags. Applicable to the following creative types: DISPLAY_IMAGE_GALLERY, all RICH_MEDIA, and all VPAID.
+      { # Creative Custom Event.
+        "targetType": "A String", # Target type used by the event.
+        "artworkType": "A String", # Artwork type used by the creative.This is a read-only field.
+        "videoReportingId": "A String", # Video reporting ID, used to differentiate multiple videos in a single creative. This is a read-only field.
+        "popupWindowProperties": { # Popup Window Properties. # Properties for rich media popup windows. This field is used only for exit events.
+          "showStatusBar": True or False, # Whether to display the browser status bar.
+          "showScrollBar": True or False, # Whether to display the browser scroll bar.
+          "showAddressBar": True or False, # Whether to display the browser address bar.
+          "showMenuBar": True or False, # Whether to display the browser menu bar.
+          "title": "A String", # Title of popup window.
+          "showToolBar": True or False, # Whether to display the browser tool bar.
+          "positionType": "A String", # Popup window position either centered or at specific coordinate.
+          "offset": { # Offset Position. # Upper-left corner coordinates of the popup window. Applicable if positionType is COORDINATES.
+            "top": 42, # Offset distance from top side of an asset or a window.
+            "left": 42, # Offset distance from left side of an asset or a window.
+          },
+          "dimension": { # Represents the dimensions of ads, placements, creatives, or creative assets. # Popup dimension for a creative. This is a read-only field. Applicable to the following creative types: all RICH_MEDIA and all VPAID
+            "width": 42, # Width of this size.
+            "kind": "dfareporting#size", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#size".
+            "iab": True or False, # IAB standard size. This is a read-only, auto-generated field.
+            "id": "A String", # ID of this size. This is a read-only, auto-generated field.
+            "height": 42, # Height of this size.
+          },
+        },
+        "advertiserCustomEventId": "A String", # Unique ID of this event used by DDM Reporting and Data Transfer. This is a read-only field.
+        "artworkLabel": "A String", # Artwork label column, used to link events in DCM back to events in Studio. This is a required field and should not be modified after insertion.
+        "advertiserCustomEventType": "A String", # Type of the event. This is a read-only field.
+        "exitUrl": "A String", # Exit URL of the event. This field is used only for exit events.
+        "id": "A String", # ID of this event. This is a required field and should not be modified after insertion.
+        "advertiserCustomEventName": "A String", # User-entered name for the event.
+      },
+    ],
+    "skipOffset": { # Video Offset # Amount of time to play the video before the skip button appears. Applicable to the following creative types: all INSTREAM_VIDEO.
+      "offsetPercentage": 42, # Duration, as a percentage of video duration. Do not set when offsetSeconds is set.
+      "offsetSeconds": 42, # Duration, in seconds. Do not set when offsetPercentage is set.
+    },
+    "backupImageReportingLabel": "A String", # Reporting label used for HTML5 banner backup image. Applicable to the following creative types: DISPLAY when the primary asset type is not HTML_IMAGE.
+    "version": 42, # The version number helps you keep track of multiple versions of your creative in your reports. The version number will always be auto-generated during insert operations to start at 1. For tracking creatives the version cannot be incremented and will always remain at 1. For all other creative types the version can be incremented only by 1 during update operations. In addition, the version will be automatically incremented by 1 when undergoing Rich Media creative merging. Applicable to all creative types.
+    "creativeFieldAssignments": [ # Creative field assignments for this creative. Applicable to all creative types.
+      { # Creative Field Assignment.
+        "creativeFieldId": "A String", # ID of the creative field.
+        "creativeFieldValueId": "A String", # ID of the creative field value.
+      },
+    ],
+    "backgroundColor": "A String", # The 6-character HTML color code, beginning with #, for the background of the window area where the Flash file is displayed. Default is white. Applicable to the following creative types: FLASH_INPAGE.
+    "customKeyValues": [ # Custom key-values for a Rich Media creative. Key-values let you customize the creative settings of a Rich Media ad running on your site without having to contact the advertiser. You can use key-values to dynamically change the look or functionality of a creative. Applicable to the following creative types: all RICH_MEDIA, and all VPAID.
+      "A String",
+    ],
+    "idDimensionValue": { # Represents a DimensionValue resource. # Dimension value for the ID of this creative. This is a read-only field. Applicable to all creative types.
+      "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+      "value": "A String", # The value of the dimension.
+      "dimensionName": "A String", # The name of the dimension.
+      "etag": "A String", # The eTag of this response for caching purposes.
+      "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+      "id": "A String", # The ID associated with the value if available.
+    },
+    "htmlCode": "A String", # HTML code for the creative. This is a required field when applicable. This field is ignored if htmlCodeLocked is false. Applicable to the following creative types: all CUSTOM, FLASH_INPAGE, and HTML5_BANNER, and all RICH_MEDIA.
+    "size": { # Represents the dimensions of ads, placements, creatives, or creative assets. # Size associated with this creative. When inserting or updating a creative either the size ID field or size width and height fields can be used. This is a required field when applicable; however for IMAGE, FLASH_INPAGE creatives, and for DISPLAY creatives with a primary asset of type HTML_IMAGE, if left blank, this field will be automatically set using the actual size of the associated image assets. Applicable to the following creative types: DISPLAY, DISPLAY_IMAGE_GALLERY, FLASH_INPAGE, HTML5_BANNER, IMAGE, and all RICH_MEDIA.
+      "width": 42, # Width of this size.
+      "kind": "dfareporting#size", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#size".
+      "iab": True or False, # IAB standard size. This is a read-only, auto-generated field.
+      "id": "A String", # ID of this size. This is a read-only, auto-generated field.
+      "height": 42, # Height of this size.
+    },
+    "type": "A String", # Type of this creative. This is a required field. Applicable to all creative types.
+        # 
+        # Note: FLASH_INPAGE, HTML5_BANNER, and IMAGE are only used for existing creatives. New creatives should use DISPLAY as a replacement for these types.
+    "totalFileSize": "A String", # Combined size of all creative assets. This is a read-only field. Applicable to the following creative types: all RICH_MEDIA, and all VPAID.
+    "thirdPartyRichMediaImpressionsUrl": "A String", # Third-party URL used to record rich media impressions. Applicable to the following creative types: all RICH_MEDIA.
+    "studioAdvertiserId": "A String", # Studio advertiser ID associated with rich media and VPAID creatives. This is a read-only field. Applicable to the following creative types: all RICH_MEDIA, and all VPAID.
+    "creativeAssets": [ # Assets associated with a creative. Applicable to all but the following creative types: INTERNAL_REDIRECT, INTERSTITIAL_INTERNAL_REDIRECT, and REDIRECT
+      { # Creative Asset.
+        "mimeType": "A String", # Detected MIME type for video asset. This is a read-only field. Applicable to the following creative types: INSTREAM_VIDEO and all VPAID.
+        "artworkType": "A String", # Artwork type of rich media creative. This is a read-only field. Applicable to the following creative types: all RICH_MEDIA.
+        "positionLeftUnit": "A String", # Offset left unit for an asset. This is a read-only field. Applicable to the following creative types: all RICH_MEDIA.
+        "collapsedSize": { # Represents the dimensions of ads, placements, creatives, or creative assets. # Size of an asset when collapsed. This is a read-only field. Applicable to the following creative types: all RICH_MEDIA and all VPAID. Additionally, applicable to assets whose displayType is ASSET_DISPLAY_TYPE_EXPANDING or ASSET_DISPLAY_TYPE_PEEL_DOWN.
+          "width": 42, # Width of this size.
+          "kind": "dfareporting#size", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#size".
+          "iab": True or False, # IAB standard size. This is a read-only, auto-generated field.
+          "id": "A String", # ID of this size. This is a read-only, auto-generated field.
+          "height": 42, # Height of this size.
+        },
+        "flashVersion": 42, # Flash version of the asset. This is a read-only field. Applicable to the following creative types: FLASH_INPAGE, all RICH_MEDIA, and all VPAID. Applicable to DISPLAY when the primary asset type is not HTML_IMAGE.
+        "pushdown": True or False, # Whether the asset pushes down other content. Applicable to the following creative types: all RICH_MEDIA. Additionally, only applicable when the asset offsets are 0, the collapsedSize.width matches size.width, and the collapsedSize.height is less than size.height.
+        "hideFlashObjects": True or False, # Whether to hide Flash objects flag for an asset. Applicable to the following creative types: all RICH_MEDIA.
+        "detectedFeatures": [ # List of feature dependencies for the creative asset that are detected by DCM. Feature dependencies are features that a browser must be able to support in order to render your HTML5 creative correctly. This is a read-only, auto-generated field. Applicable to the following creative types: HTML5_BANNER. Applicable to DISPLAY when the primary asset type is not HTML_IMAGE.
+          "A String",
+        ],
+        "originalBackup": True or False, # Whether the backup asset is original or changed by the user in DCM. Applicable to the following creative types: all RICH_MEDIA.
+        "duration": 42, # Duration in seconds for which an asset will be displayed. Applicable to the following creative types: INSTREAM_VIDEO and VPAID_LINEAR_VIDEO.
+        "positionTopUnit": "A String", # Offset top unit for an asset. This is a read-only field if the asset displayType is ASSET_DISPLAY_TYPE_OVERLAY. Applicable to the following creative types: all RICH_MEDIA.
+        "id": "A String", # Numeric ID of this creative asset. This is a required field and should not be modified. Applicable to all but the following creative types: all REDIRECT and TRACKING_TEXT.
+        "alignment": "A String", # Possible alignments for an asset. This is a read-only field. Applicable to the following creative types: RICH_MEDIA_DISPLAY_MULTI_FLOATING_INTERSTITIAL.
+        "size": { # Represents the dimensions of ads, placements, creatives, or creative assets. # Size associated with this creative asset. This is a required field when applicable; however for IMAGE and FLASH_INPAGE, creatives if left blank, this field will be automatically set using the actual size of the associated image asset. Applicable to the following creative types: DISPLAY_IMAGE_GALLERY, FLASH_INPAGE, HTML5_BANNER, IMAGE, and all RICH_MEDIA. Applicable to DISPLAY when the primary asset type is not HTML_IMAGE.
+          "width": 42, # Width of this size.
+          "kind": "dfareporting#size", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#size".
+          "iab": True or False, # IAB standard size. This is a read-only, auto-generated field.
+          "id": "A String", # ID of this size. This is a read-only, auto-generated field.
+          "height": 42, # Height of this size.
+        },
+        "horizontallyLocked": True or False, # Whether the asset is horizontally locked. This is a read-only field. Applicable to the following creative types: all RICH_MEDIA.
+        "startTimeType": "A String", # Initial wait time type before making the asset visible. Applicable to the following creative types: all RICH_MEDIA.
+        "displayType": "A String", # Type of rich media asset. This is a read-only field. Applicable to the following creative types: all RICH_MEDIA.
+        "expandedDimension": { # Represents the dimensions of ads, placements, creatives, or creative assets. # Detected expanded dimension for video asset. This is a read-only field. Applicable to the following creative types: INSTREAM_VIDEO and all VPAID.
+          "width": 42, # Width of this size.
+          "kind": "dfareporting#size", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#size".
+          "iab": True or False, # IAB standard size. This is a read-only, auto-generated field.
+          "id": "A String", # ID of this size. This is a read-only, auto-generated field.
+          "height": 42, # Height of this size.
+        },
+        "verticallyLocked": True or False, # Whether the asset is vertically locked. This is a read-only field. Applicable to the following creative types: all RICH_MEDIA.
+        "idDimensionValue": { # Represents a DimensionValue resource. # Dimension value for the ID of the asset. This is a read-only, auto-generated field.
+          "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+          "value": "A String", # The value of the dimension.
+          "dimensionName": "A String", # The name of the dimension.
+          "etag": "A String", # The eTag of this response for caching purposes.
+          "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+          "id": "A String", # The ID associated with the value if available.
+        },
+        "role": "A String", # Role of the asset in relation to creative. Applicable to all but the following creative types: all REDIRECT and TRACKING_TEXT. This is a required field.
+            # PRIMARY applies to DISPLAY, FLASH_INPAGE, HTML5_BANNER, IMAGE, DISPLAY_IMAGE_GALLERY, all RICH_MEDIA (which may contain multiple primary assets), and all VPAID creatives.
+            # BACKUP_IMAGE applies to FLASH_INPAGE, HTML5_BANNER, all RICH_MEDIA, and all VPAID creatives. Applicable to DISPLAY when the primary asset type is not HTML_IMAGE.
+            # ADDITIONAL_IMAGE and ADDITIONAL_FLASH apply to FLASH_INPAGE creatives.
+            # OTHER refers to assets from sources other than DCM, such as Studio uploaded assets, applicable to all RICH_MEDIA and all VPAID creatives.
+            # PARENT_VIDEO refers to videos uploaded by the user in DCM and is applicable to INSTREAM_VIDEO and VPAID_LINEAR_VIDEO creatives.
+            # TRANSCODED_VIDEO refers to videos transcoded by DCM from PARENT_VIDEO assets and is applicable to INSTREAM_VIDEO and VPAID_LINEAR_VIDEO creatives.
+            # ALTERNATE_VIDEO refers to the DCM representation of child asset videos from Studio, and is applicable to VPAID_LINEAR_VIDEO creatives. These cannot be added or removed within DCM.
+            # For VPAID_LINEAR_VIDEO creatives, PARENT_VIDEO, TRANSCODED_VIDEO and ALTERNATE_VIDEO assets that are marked active serve as backup in case the VPAID creative cannot be served. Only PARENT_VIDEO assets can be added or removed for an INSTREAM_VIDEO or VPAID_LINEAR_VIDEO creative.
+        "zipFilesize": "A String", # Size of zip file. This is a read-only field. Applicable to the following creative types: HTML5_BANNER.
+        "bitRate": 42, # Detected bit-rate for video asset. This is a read-only field. Applicable to the following creative types: INSTREAM_VIDEO and all VPAID.
+        "windowMode": "A String", # Window mode options for flash assets. Applicable to the following creative types: FLASH_INPAGE, RICH_MEDIA_DISPLAY_EXPANDING, RICH_MEDIA_IM_EXPAND, RICH_MEDIA_DISPLAY_BANNER, and RICH_MEDIA_INPAGE_FLOATING.
+        "progressiveServingUrl": "A String", # Progressive URL for video asset. This is a read-only field. Applicable to the following creative types: INSTREAM_VIDEO and all VPAID.
+        "durationType": "A String", # Duration type for which an asset will be displayed. Applicable to the following creative types: all RICH_MEDIA.
+        "videoDuration": 3.14, # Detected video duration for video asset. This is a read-only field. Applicable to the following creative types: INSTREAM_VIDEO and all VPAID.
+        "fileSize": "A String", # File size associated with this creative asset. This is a read-only field. Applicable to all but the following creative types: all REDIRECT and TRACKING_TEXT.
+        "zipFilename": "A String", # File name of zip file. This is a read-only field. Applicable to the following creative types: HTML5_BANNER.
+        "offset": { # Offset Position. # Offset position for an asset in collapsed mode. This is a read-only field. Applicable to the following creative types: all RICH_MEDIA and all VPAID. Additionally, only applicable to assets whose displayType is ASSET_DISPLAY_TYPE_EXPANDING or ASSET_DISPLAY_TYPE_PEEL_DOWN.
+          "top": 42, # Offset distance from top side of an asset or a window.
+          "left": 42, # Offset distance from left side of an asset or a window.
+        },
+        "active": True or False, # Whether the video asset is active. This is a read-only field for VPAID_NON_LINEAR_VIDEO assets. Applicable to the following creative types: INSTREAM_VIDEO and all VPAID.
+        "companionCreativeIds": [ # List of companion creatives assigned to an in-stream video creative asset. Acceptable values include IDs of existing flash and image creatives. Applicable to INSTREAM_VIDEO creative type with dynamicAssetSelection set to true.
+          "A String",
+        ],
+        "hideSelectionBoxes": True or False, # Whether to hide selection boxes flag for an asset. Applicable to the following creative types: all RICH_MEDIA.
+        "streamingServingUrl": "A String", # Streaming URL for video asset. This is a read-only field. Applicable to the following creative types: INSTREAM_VIDEO and all VPAID.
+        "zIndex": 42, # zIndex value of an asset. This is a read-only field. Applicable to the following creative types: all RICH_MEDIA.Additionally, only applicable to assets whose displayType is NOT one of the following types: ASSET_DISPLAY_TYPE_INPAGE or ASSET_DISPLAY_TYPE_OVERLAY.
+        "childAssetType": "A String", # Rich media child asset type. This is a read-only field. Applicable to the following creative types: all VPAID.
+        "backupImageExit": { # Creative Custom Event. # Exit event configured for the backup image. Applicable to the following creative types: all RICH_MEDIA.
+          "targetType": "A String", # Target type used by the event.
+          "artworkType": "A String", # Artwork type used by the creative.This is a read-only field.
+          "videoReportingId": "A String", # Video reporting ID, used to differentiate multiple videos in a single creative. This is a read-only field.
+          "popupWindowProperties": { # Popup Window Properties. # Properties for rich media popup windows. This field is used only for exit events.
+            "showStatusBar": True or False, # Whether to display the browser status bar.
+            "showScrollBar": True or False, # Whether to display the browser scroll bar.
+            "showAddressBar": True or False, # Whether to display the browser address bar.
+            "showMenuBar": True or False, # Whether to display the browser menu bar.
+            "title": "A String", # Title of popup window.
+            "showToolBar": True or False, # Whether to display the browser tool bar.
+            "positionType": "A String", # Popup window position either centered or at specific coordinate.
+            "offset": { # Offset Position. # Upper-left corner coordinates of the popup window. Applicable if positionType is COORDINATES.
+              "top": 42, # Offset distance from top side of an asset or a window.
+              "left": 42, # Offset distance from left side of an asset or a window.
+            },
+            "dimension": { # Represents the dimensions of ads, placements, creatives, or creative assets. # Popup dimension for a creative. This is a read-only field. Applicable to the following creative types: all RICH_MEDIA and all VPAID
+              "width": 42, # Width of this size.
+              "kind": "dfareporting#size", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#size".
+              "iab": True or False, # IAB standard size. This is a read-only, auto-generated field.
+              "id": "A String", # ID of this size. This is a read-only, auto-generated field.
+              "height": 42, # Height of this size.
+            },
+          },
+          "advertiserCustomEventId": "A String", # Unique ID of this event used by DDM Reporting and Data Transfer. This is a read-only field.
+          "artworkLabel": "A String", # Artwork label column, used to link events in DCM back to events in Studio. This is a required field and should not be modified after insertion.
+          "advertiserCustomEventType": "A String", # Type of the event. This is a read-only field.
+          "exitUrl": "A String", # Exit URL of the event. This field is used only for exit events.
+          "id": "A String", # ID of this event. This is a required field and should not be modified after insertion.
+          "advertiserCustomEventName": "A String", # User-entered name for the event.
+        },
+        "actionScript3": True or False, # Whether ActionScript3 is enabled for the flash asset. This is a read-only field. Applicable to the following creative type: FLASH_INPAGE. Applicable to DISPLAY when the primary asset type is not HTML_IMAGE.
+        "pushdownDuration": 3.14, # Pushdown duration in seconds for an asset. Must be between 0 and 9.99. Applicable to the following creative types: all RICH_MEDIA.Additionally, only applicable when the asset pushdown field is true, the offsets are 0, the collapsedSize.width matches size.width, and the collapsedSize.height is less than size.height.
+        "assetIdentifier": { # Creative Asset ID. # Identifier of this asset. This is the same identifier returned during creative asset insert operation. This is a required field. Applicable to all but the following creative types: all REDIRECT and TRACKING_TEXT.
+          "type": "A String", # Type of asset to upload. This is a required field. FLASH and IMAGE are no longer supported for new uploads. All image assets should use HTML_IMAGE.
+          "name": "A String", # Name of the creative asset. This is a required field while inserting an asset. After insertion, this assetIdentifier is used to identify the uploaded asset. Characters in the name must be alphanumeric or one of the following: ".-_ ". Spaces are allowed.
+        },
+        "transparency": True or False, # Whether the asset is transparent. Applicable to the following creative types: all RICH_MEDIA. Additionally, only applicable to HTML5 assets.
+        "sslCompliant": True or False, # Whether the asset is SSL-compliant. This is a read-only field. Applicable to all but the following creative types: all REDIRECT and TRACKING_TEXT.
+        "position": { # Offset Position. # Offset position for an asset. Applicable to the following creative types: all RICH_MEDIA.
+          "top": 42, # Offset distance from top side of an asset or a window.
+          "left": 42, # Offset distance from left side of an asset or a window.
+        },
+        "customStartTimeValue": 42, # Custom start time in seconds for making the asset visible. Applicable to the following creative types: all RICH_MEDIA.
+      },
+    ],
+    "redirectUrl": "A String", # URL of hosted image or hosted video or another ad tag. For INSTREAM_VIDEO_REDIRECT creatives this is the in-stream video redirect URL. The standard for a VAST (Video Ad Serving Template) ad response allows for a redirect link to another VAST 2.0 or 3.0 call. This is a required field when applicable. Applicable to the following creative types: DISPLAY_REDIRECT, INTERNAL_REDIRECT, INTERSTITIAL_INTERNAL_REDIRECT, and INSTREAM_VIDEO_REDIRECT
+    "videoDuration": 3.14, # Creative video duration in seconds. This is a read-only field. Applicable to the following creative types: INSTREAM_VIDEO, all RICH_MEDIA, and all VPAID.
+    "htmlCodeLocked": True or False, # Whether HTML code is DCM-generated or manually entered. Set to true to ignore changes to htmlCode. Applicable to the following creative types: FLASH_INPAGE and HTML5_BANNER.
+    "convertFlashToHtml5": True or False, # Whether Flash assets associated with the creative need to be automatically converted to HTML5. This flag is enabled by default and users can choose to disable it if they don't want the system to generate and use HTML5 asset for this creative. Applicable to the following creative type: FLASH_INPAGE. Applicable to DISPLAY when the primary asset type is not HTML_IMAGE.
+    "clickTags": [ # Click tags of the creative. For DISPLAY, FLASH_INPAGE, and HTML5_BANNER creatives, this is a subset of detected click tags for the assets associated with this creative. After creating a flash asset, detected click tags will be returned in the creativeAssetMetadata. When inserting the creative, populate the creative clickTags field using the creativeAssetMetadata.clickTags field. For DISPLAY_IMAGE_GALLERY creatives, there should be exactly one entry in this list for each image creative asset. A click tag is matched with a corresponding creative asset by matching the clickTag.name field with the creativeAsset.assetIdentifier.name field. Applicable to the following creative types: DISPLAY_IMAGE_GALLERY, FLASH_INPAGE, HTML5_BANNER. Applicable to DISPLAY when the primary asset type is not HTML_IMAGE.
+      { # Creative Click Tag.
+        "eventName": "A String", # Advertiser event name associated with the click tag. This field is used by DISPLAY_IMAGE_GALLERY and HTML5_BANNER creatives. Applicable to DISPLAY when the primary asset type is not HTML_IMAGE.
+        "name": "A String", # Parameter name for the specified click tag. For DISPLAY_IMAGE_GALLERY creative assets, this field must match the value of the creative asset's creativeAssetId.name field.
+        "value": "A String", # Parameter value for the specified click tag. This field contains a click-through url.
+      },
+    ],
+    "commercialId": "A String", # Industry standard ID assigned to creative for reach and frequency. Applicable to the following creative types: all INSTREAM_VIDEO and all VPAID.
+    "active": True or False, # Whether the creative is active. Applicable to all creative types.
+    "compatibility": [ # Compatibilities associated with this creative. This is a read-only field. DISPLAY and DISPLAY_INTERSTITIAL refer to rendering either on desktop or on mobile devices or in mobile apps for regular or interstitial ads, respectively. APP and APP_INTERSTITIAL are for rendering in mobile apps. Only pre-existing creatives may have these compatibilities since new creatives will either be assigned DISPLAY or DISPLAY_INTERSTITIAL instead. IN_STREAM_VIDEO refers to rendering in in-stream video ads developed with the VAST standard. Applicable to all creative types.
+        # 
+        # Acceptable values are:
+        # - "APP"
+        # - "APP_INTERSTITIAL"
+        # - "IN_STREAM_VIDEO"
+        # - "DISPLAY"
+        # - "DISPLAY_INTERSTITIAL"
+      "A String",
+    ],
+    "adParameters": "A String", # Ad parameters user for VPAID creative. This is a read-only field. Applicable to the following creative types: all VPAID.
+    "adTagKeys": [ # Keywords for a Rich Media creative. Keywords let you customize the creative settings of a Rich Media ad running on your site without having to contact the advertiser. You can use keywords to dynamically change the look or functionality of a creative. Applicable to the following creative types: all RICH_MEDIA, and all VPAID.
+      "A String",
+    ],
+    "kind": "dfareporting#creative", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#creative".
+    "subaccountId": "A String", # Subaccount ID of this creative. This field, if left unset, will be auto-generated for both insert and update operations. Applicable to all creative types.
+    "name": "A String", # Name of the creative. This is a required field and must be less than 256 characters long. Applicable to all creative types.
+    "sslOverride": True or False, # Whether creative should be treated as SSL compliant even if the system scan shows it's not. Applicable to all creative types.
+    "lastModifiedInfo": { # Modification timestamp. # Creative last modification information. This is a read-only field. Applicable to all creative types.
+      "time": "A String", # Timestamp of the last change in milliseconds since epoch.
+    },
+    "backupImageClickThroughUrl": "A String", # Click-through URL for backup image. Applicable to the following creative types: FLASH_INPAGE and HTML5_BANNER. Applicable to DISPLAY when the primary asset type is not HTML_IMAGE.
+    "sslCompliant": True or False, # Whether the creative is SSL-compliant. This is a read-only field. Applicable to all creative types.
+    "studioCreativeId": "A String", # Studio creative ID associated with rich media and VPAID creatives. This is a read-only field. Applicable to the following creative types: all RICH_MEDIA, and all VPAID.
+    "authoringTool": "A String", # Authoring tool for HTML5 banner creatives. This is a read-only field. Applicable to the following creative types: HTML5_BANNER.
+    "allowScriptAccess": True or False, # Whether script access is allowed for this creative. This is a read-only and deprecated field which will automatically be set to true on update. Applicable to the following creative types: FLASH_INPAGE.
+    "companionCreatives": [ # List of companion creatives assigned to an in-Stream videocreative. Acceptable values include IDs of existing flash and image creatives. Applicable to the following creative types: all VPAID and all INSTREAM_VIDEO with dynamicAssetSelection set to false.
+      "A String",
+    ],
+    "creativeAssetSelection": { # Encapsulates the list of rules for asset selection and a default asset in case none of the rules match. Applicable to INSTREAM_VIDEO creatives. # Required if dynamicAssetSelection is true.
+      "rules": [ # Rules determine which asset will be served to a viewer. Rules will be evaluated in the order in which they are stored in this list. This list must contain at least one rule. Applicable to INSTREAM_VIDEO creatives.
+        { # A rule associates an asset with a targeting template for asset-level targeting. Applicable to INSTREAM_VIDEO creatives.
+          "assetId": "A String", # A creativeAssets[].id. This should refer to one of the parent assets in this creative. This is a required field.
+          "targetingTemplateId": "A String", # A targeting template ID. The targeting from the targeting template will be used to determine whether this asset should be served. This is a required field.
+          "name": "A String", # A user-friendly name for this rule. This is a required field.
+        },
+      ],
+      "defaultAssetId": "A String", # A creativeAssets[].id. This should refer to one of the parent assets in this creative, and will be served if none of the rules match. This is a required field.
+    },
+    "auto_advance_images": True or False, # Whether images are automatically advanced for image gallery creatives. Applicable to the following creative types: DISPLAY_IMAGE_GALLERY.
+    "backupImageFeatures": [ # List of feature dependencies that will cause a backup image to be served if the browser that serves the ad does not support them. Feature dependencies are features that a browser must be able to support in order to render your HTML5 creative asset correctly. This field is initially auto-generated to contain all features detected by DCM for all the assets of this creative and can then be modified by the client. To reset this field, copy over all the creativeAssets' detected features. Applicable to the following creative types: HTML5_BANNER. Applicable to DISPLAY when the primary asset type is not HTML_IMAGE.
+      "A String",
+    ],
+    "backupImageTargetWindow": { # Target Window. # Target window for backup image. Applicable to the following creative types: FLASH_INPAGE and HTML5_BANNER. Applicable to DISPLAY when the primary asset type is not HTML_IMAGE.
+      "customHtml": "A String", # User-entered value.
+      "targetWindowOption": "A String", # Type of browser window for which the backup image of the flash creative can be displayed.
+    },
+    "skippable": True or False, # Whether the user can choose to skip the creative. Applicable to the following creative types: all INSTREAM_VIDEO and all VPAID.
+  }
+
+
+Returns:
+  An object of the form:
+
+    { # Contains properties of a Creative.
+      "thirdPartyUrls": [ # Third-party URLs for tracking in-stream video creative events. Applicable to the following creative types: all INSTREAM_VIDEO and all VPAID.
+        { # Third-party Tracking URL.
+          "url": "A String", # URL for the specified third-party URL type.
+          "thirdPartyUrlType": "A String", # Third-party URL type for in-stream video creatives.
+        },
+      ],
+      "artworkType": "A String", # Type of artwork used for the creative. This is a read-only field. Applicable to the following creative types: all RICH_MEDIA, and all VPAID.
+      "latestTraffickedCreativeId": "A String", # Latest Studio trafficked creative ID associated with rich media and VPAID creatives. This is a read-only field. Applicable to the following creative types: all RICH_MEDIA, and all VPAID.
+      "videoDescription": "A String", # Description of the video ad. Applicable to the following creative types: all INSTREAM_VIDEO and all VPAID.
+      "advertiserId": "A String", # Advertiser ID of this creative. This is a required field. Applicable to all creative types.
+      "requiredFlashPluginVersion": "A String", # The minimum required Flash plugin version for this creative. For example, 11.2.202.235. This is a read-only field. Applicable to the following creative types: all RICH_MEDIA, and all VPAID.
+      "thirdPartyBackupImageImpressionsUrl": "A String", # Third-party URL used to record backup image impressions. Applicable to the following creative types: all RICH_MEDIA.
+      "timerCustomEvents": [ # List of timer events configured for the creative. For DISPLAY_IMAGE_GALLERY creatives, these are read-only and auto-generated from clickTags. Applicable to the following creative types: DISPLAY_IMAGE_GALLERY, all RICH_MEDIA, and all VPAID. Applicable to DISPLAY when the primary asset is not HTML_IMAGE.
+        { # Creative Custom Event.
+          "targetType": "A String", # Target type used by the event.
+          "artworkType": "A String", # Artwork type used by the creative.This is a read-only field.
+          "videoReportingId": "A String", # Video reporting ID, used to differentiate multiple videos in a single creative. This is a read-only field.
+          "popupWindowProperties": { # Popup Window Properties. # Properties for rich media popup windows. This field is used only for exit events.
+            "showStatusBar": True or False, # Whether to display the browser status bar.
+            "showScrollBar": True or False, # Whether to display the browser scroll bar.
+            "showAddressBar": True or False, # Whether to display the browser address bar.
+            "showMenuBar": True or False, # Whether to display the browser menu bar.
+            "title": "A String", # Title of popup window.
+            "showToolBar": True or False, # Whether to display the browser tool bar.
+            "positionType": "A String", # Popup window position either centered or at specific coordinate.
+            "offset": { # Offset Position. # Upper-left corner coordinates of the popup window. Applicable if positionType is COORDINATES.
+              "top": 42, # Offset distance from top side of an asset or a window.
+              "left": 42, # Offset distance from left side of an asset or a window.
+            },
+            "dimension": { # Represents the dimensions of ads, placements, creatives, or creative assets. # Popup dimension for a creative. This is a read-only field. Applicable to the following creative types: all RICH_MEDIA and all VPAID
+              "width": 42, # Width of this size.
+              "kind": "dfareporting#size", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#size".
+              "iab": True or False, # IAB standard size. This is a read-only, auto-generated field.
+              "id": "A String", # ID of this size. This is a read-only, auto-generated field.
+              "height": 42, # Height of this size.
+            },
+          },
+          "advertiserCustomEventId": "A String", # Unique ID of this event used by DDM Reporting and Data Transfer. This is a read-only field.
+          "artworkLabel": "A String", # Artwork label column, used to link events in DCM back to events in Studio. This is a required field and should not be modified after insertion.
+          "advertiserCustomEventType": "A String", # Type of the event. This is a read-only field.
+          "exitUrl": "A String", # Exit URL of the event. This field is used only for exit events.
+          "id": "A String", # ID of this event. This is a required field and should not be modified after insertion.
+          "advertiserCustomEventName": "A String", # User-entered name for the event.
+        },
+      ],
+      "renderingIdDimensionValue": { # Represents a DimensionValue resource. # Dimension value for the rendering ID of this creative. This is a read-only field. Applicable to all creative types.
+        "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+        "value": "A String", # The value of the dimension.
+        "dimensionName": "A String", # The name of the dimension.
+        "etag": "A String", # The eTag of this response for caching purposes.
+        "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+        "id": "A String", # The ID associated with the value if available.
+      },
+      "fsCommand": { # FsCommand. # OpenWindow FSCommand of this creative. This lets the SWF file communicate with either Flash Player or the program hosting Flash Player, such as a web browser. This is only triggered if allowScriptAccess field is true. Applicable to the following creative types: FLASH_INPAGE.
+        "windowHeight": 42, # Height of the window.
+        "top": 42, # Distance from the top of the browser. Applicable when positionOption is DISTANCE_FROM_TOP_LEFT_CORNER.
+        "windowWidth": 42, # Width of the window.
+        "positionOption": "A String", # Position in the browser where the window will open.
+        "left": 42, # Distance from the left of the browser.Applicable when positionOption is DISTANCE_FROM_TOP_LEFT_CORNER.
+      },
+      "dynamicAssetSelection": True or False, # Set this to true to enable the use of rules to target individual assets in this creative. When set to true creativeAssetSelection must be set. This also controls asset-level companions. When this is true, companion creatives should be assigned to creative assets. Learn more. Applicable to INSTREAM_VIDEO creatives.
+      "id": "A String", # ID of this creative. This is a read-only, auto-generated field. Applicable to all creative types.
+      "progressOffset": { # Video Offset # Amount of time to play the video before counting a view. Applicable to the following creative types: all INSTREAM_VIDEO.
+        "offsetPercentage": 42, # Duration, as a percentage of video duration. Do not set when offsetSeconds is set.
+        "offsetSeconds": 42, # Duration, in seconds. Do not set when offsetPercentage is set.
+      },
+      "accountId": "A String", # Account ID of this creative. This field, if left unset, will be auto-generated for both insert and update operations. Applicable to all creative types.
+      "studioTraffickedCreativeId": "A String", # Studio trafficked creative ID associated with rich media and VPAID creatives. This is a read-only field. Applicable to the following creative types: all RICH_MEDIA, and all VPAID.
+      "archived": True or False, # Whether the creative is archived. Applicable to all creative types.
+      "overrideCss": "A String", # Override CSS value for rich media creatives. Applicable to the following creative types: all RICH_MEDIA.
+      "authoringSource": "A String", # Source application where creative was authored. Presently, only DBM authored creatives will have this field set. Applicable to all creative types.
+      "requiredFlashVersion": 42, # The internal Flash version for this creative as calculated by DoubleClick Studio. This is a read-only field. Applicable to the following creative types: FLASH_INPAGE all RICH_MEDIA, and all VPAID. Applicable to DISPLAY when the primary asset type is not HTML_IMAGE.
+      "exitCustomEvents": [ # List of exit events configured for the creative. For DISPLAY and DISPLAY_IMAGE_GALLERY creatives, these are read-only and auto-generated from clickTags, For DISPLAY, an event is also created from the backupImageReportingLabel. Applicable to the following creative types: DISPLAY_IMAGE_GALLERY, all RICH_MEDIA, and all VPAID. Applicable to DISPLAY when the primary asset type is not HTML_IMAGE.
+        { # Creative Custom Event.
+          "targetType": "A String", # Target type used by the event.
+          "artworkType": "A String", # Artwork type used by the creative.This is a read-only field.
+          "videoReportingId": "A String", # Video reporting ID, used to differentiate multiple videos in a single creative. This is a read-only field.
+          "popupWindowProperties": { # Popup Window Properties. # Properties for rich media popup windows. This field is used only for exit events.
+            "showStatusBar": True or False, # Whether to display the browser status bar.
+            "showScrollBar": True or False, # Whether to display the browser scroll bar.
+            "showAddressBar": True or False, # Whether to display the browser address bar.
+            "showMenuBar": True or False, # Whether to display the browser menu bar.
+            "title": "A String", # Title of popup window.
+            "showToolBar": True or False, # Whether to display the browser tool bar.
+            "positionType": "A String", # Popup window position either centered or at specific coordinate.
+            "offset": { # Offset Position. # Upper-left corner coordinates of the popup window. Applicable if positionType is COORDINATES.
+              "top": 42, # Offset distance from top side of an asset or a window.
+              "left": 42, # Offset distance from left side of an asset or a window.
+            },
+            "dimension": { # Represents the dimensions of ads, placements, creatives, or creative assets. # Popup dimension for a creative. This is a read-only field. Applicable to the following creative types: all RICH_MEDIA and all VPAID
+              "width": 42, # Width of this size.
+              "kind": "dfareporting#size", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#size".
+              "iab": True or False, # IAB standard size. This is a read-only, auto-generated field.
+              "id": "A String", # ID of this size. This is a read-only, auto-generated field.
+              "height": 42, # Height of this size.
+            },
+          },
+          "advertiserCustomEventId": "A String", # Unique ID of this event used by DDM Reporting and Data Transfer. This is a read-only field.
+          "artworkLabel": "A String", # Artwork label column, used to link events in DCM back to events in Studio. This is a required field and should not be modified after insertion.
+          "advertiserCustomEventType": "A String", # Type of the event. This is a read-only field.
+          "exitUrl": "A String", # Exit URL of the event. This field is used only for exit events.
+          "id": "A String", # ID of this event. This is a required field and should not be modified after insertion.
+          "advertiserCustomEventName": "A String", # User-entered name for the event.
+        },
+      ],
+      "renderingId": "A String", # ID of current rendering version. This is a read-only field. Applicable to all creative types.
+      "counterCustomEvents": [ # List of counter events configured for the creative. For DISPLAY_IMAGE_GALLERY creatives, these are read-only and auto-generated from clickTags. Applicable to the following creative types: DISPLAY_IMAGE_GALLERY, all RICH_MEDIA, and all VPAID.
+        { # Creative Custom Event.
+          "targetType": "A String", # Target type used by the event.
+          "artworkType": "A String", # Artwork type used by the creative.This is a read-only field.
+          "videoReportingId": "A String", # Video reporting ID, used to differentiate multiple videos in a single creative. This is a read-only field.
+          "popupWindowProperties": { # Popup Window Properties. # Properties for rich media popup windows. This field is used only for exit events.
+            "showStatusBar": True or False, # Whether to display the browser status bar.
+            "showScrollBar": True or False, # Whether to display the browser scroll bar.
+            "showAddressBar": True or False, # Whether to display the browser address bar.
+            "showMenuBar": True or False, # Whether to display the browser menu bar.
+            "title": "A String", # Title of popup window.
+            "showToolBar": True or False, # Whether to display the browser tool bar.
+            "positionType": "A String", # Popup window position either centered or at specific coordinate.
+            "offset": { # Offset Position. # Upper-left corner coordinates of the popup window. Applicable if positionType is COORDINATES.
+              "top": 42, # Offset distance from top side of an asset or a window.
+              "left": 42, # Offset distance from left side of an asset or a window.
+            },
+            "dimension": { # Represents the dimensions of ads, placements, creatives, or creative assets. # Popup dimension for a creative. This is a read-only field. Applicable to the following creative types: all RICH_MEDIA and all VPAID
+              "width": 42, # Width of this size.
+              "kind": "dfareporting#size", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#size".
+              "iab": True or False, # IAB standard size. This is a read-only, auto-generated field.
+              "id": "A String", # ID of this size. This is a read-only, auto-generated field.
+              "height": 42, # Height of this size.
+            },
+          },
+          "advertiserCustomEventId": "A String", # Unique ID of this event used by DDM Reporting and Data Transfer. This is a read-only field.
+          "artworkLabel": "A String", # Artwork label column, used to link events in DCM back to events in Studio. This is a required field and should not be modified after insertion.
+          "advertiserCustomEventType": "A String", # Type of the event. This is a read-only field.
+          "exitUrl": "A String", # Exit URL of the event. This field is used only for exit events.
+          "id": "A String", # ID of this event. This is a required field and should not be modified after insertion.
+          "advertiserCustomEventName": "A String", # User-entered name for the event.
+        },
+      ],
+      "skipOffset": { # Video Offset # Amount of time to play the video before the skip button appears. Applicable to the following creative types: all INSTREAM_VIDEO.
+        "offsetPercentage": 42, # Duration, as a percentage of video duration. Do not set when offsetSeconds is set.
+        "offsetSeconds": 42, # Duration, in seconds. Do not set when offsetPercentage is set.
+      },
+      "backupImageReportingLabel": "A String", # Reporting label used for HTML5 banner backup image. Applicable to the following creative types: DISPLAY when the primary asset type is not HTML_IMAGE.
+      "version": 42, # The version number helps you keep track of multiple versions of your creative in your reports. The version number will always be auto-generated during insert operations to start at 1. For tracking creatives the version cannot be incremented and will always remain at 1. For all other creative types the version can be incremented only by 1 during update operations. In addition, the version will be automatically incremented by 1 when undergoing Rich Media creative merging. Applicable to all creative types.
+      "creativeFieldAssignments": [ # Creative field assignments for this creative. Applicable to all creative types.
+        { # Creative Field Assignment.
+          "creativeFieldId": "A String", # ID of the creative field.
+          "creativeFieldValueId": "A String", # ID of the creative field value.
+        },
+      ],
+      "backgroundColor": "A String", # The 6-character HTML color code, beginning with #, for the background of the window area where the Flash file is displayed. Default is white. Applicable to the following creative types: FLASH_INPAGE.
+      "customKeyValues": [ # Custom key-values for a Rich Media creative. Key-values let you customize the creative settings of a Rich Media ad running on your site without having to contact the advertiser. You can use key-values to dynamically change the look or functionality of a creative. Applicable to the following creative types: all RICH_MEDIA, and all VPAID.
+        "A String",
+      ],
+      "idDimensionValue": { # Represents a DimensionValue resource. # Dimension value for the ID of this creative. This is a read-only field. Applicable to all creative types.
+        "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+        "value": "A String", # The value of the dimension.
+        "dimensionName": "A String", # The name of the dimension.
+        "etag": "A String", # The eTag of this response for caching purposes.
+        "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+        "id": "A String", # The ID associated with the value if available.
+      },
+      "htmlCode": "A String", # HTML code for the creative. This is a required field when applicable. This field is ignored if htmlCodeLocked is false. Applicable to the following creative types: all CUSTOM, FLASH_INPAGE, and HTML5_BANNER, and all RICH_MEDIA.
+      "size": { # Represents the dimensions of ads, placements, creatives, or creative assets. # Size associated with this creative. When inserting or updating a creative either the size ID field or size width and height fields can be used. This is a required field when applicable; however for IMAGE, FLASH_INPAGE creatives, and for DISPLAY creatives with a primary asset of type HTML_IMAGE, if left blank, this field will be automatically set using the actual size of the associated image assets. Applicable to the following creative types: DISPLAY, DISPLAY_IMAGE_GALLERY, FLASH_INPAGE, HTML5_BANNER, IMAGE, and all RICH_MEDIA.
+        "width": 42, # Width of this size.
+        "kind": "dfareporting#size", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#size".
+        "iab": True or False, # IAB standard size. This is a read-only, auto-generated field.
+        "id": "A String", # ID of this size. This is a read-only, auto-generated field.
+        "height": 42, # Height of this size.
+      },
+      "type": "A String", # Type of this creative. This is a required field. Applicable to all creative types.
+          #
+          # Note: FLASH_INPAGE, HTML5_BANNER, and IMAGE are only used for existing creatives. New creatives should use DISPLAY as a replacement for these types.
+      "totalFileSize": "A String", # Combined size of all creative assets. This is a read-only field. Applicable to the following creative types: all RICH_MEDIA, and all VPAID.
+      "thirdPartyRichMediaImpressionsUrl": "A String", # Third-party URL used to record rich media impressions. Applicable to the following creative types: all RICH_MEDIA.
+      "studioAdvertiserId": "A String", # Studio advertiser ID associated with rich media and VPAID creatives. This is a read-only field. Applicable to the following creative types: all RICH_MEDIA, and all VPAID.
+      "creativeAssets": [ # Assets associated with a creative. Applicable to all but the following creative types: INTERNAL_REDIRECT, INTERSTITIAL_INTERNAL_REDIRECT, and REDIRECT
+        { # Creative Asset.
+          "mimeType": "A String", # Detected MIME type for video asset. This is a read-only field. Applicable to the following creative types: INSTREAM_VIDEO and all VPAID.
+          "artworkType": "A String", # Artwork type of rich media creative. This is a read-only field. Applicable to the following creative types: all RICH_MEDIA.
+          "positionLeftUnit": "A String", # Offset left unit for an asset. This is a read-only field. Applicable to the following creative types: all RICH_MEDIA.
+          "collapsedSize": { # Represents the dimensions of ads, placements, creatives, or creative assets. # Size of an asset when collapsed. This is a read-only field. Applicable to the following creative types: all RICH_MEDIA and all VPAID. Additionally, applicable to assets whose displayType is ASSET_DISPLAY_TYPE_EXPANDING or ASSET_DISPLAY_TYPE_PEEL_DOWN.
+            "width": 42, # Width of this size.
+            "kind": "dfareporting#size", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#size".
+            "iab": True or False, # IAB standard size. This is a read-only, auto-generated field.
+            "id": "A String", # ID of this size. This is a read-only, auto-generated field.
+            "height": 42, # Height of this size.
+          },
+          "flashVersion": 42, # Flash version of the asset. This is a read-only field. Applicable to the following creative types: FLASH_INPAGE, all RICH_MEDIA, and all VPAID. Applicable to DISPLAY when the primary asset type is not HTML_IMAGE.
+          "pushdown": True or False, # Whether the asset pushes down other content. Applicable to the following creative types: all RICH_MEDIA. Additionally, only applicable when the asset offsets are 0, the collapsedSize.width matches size.width, and the collapsedSize.height is less than size.height.
+          "hideFlashObjects": True or False, # Whether to hide Flash objects flag for an asset. Applicable to the following creative types: all RICH_MEDIA.
+          "detectedFeatures": [ # List of feature dependencies for the creative asset that are detected by DCM. Feature dependencies are features that a browser must be able to support in order to render your HTML5 creative correctly. This is a read-only, auto-generated field. Applicable to the following creative types: HTML5_BANNER. Applicable to DISPLAY when the primary asset type is not HTML_IMAGE.
+            "A String",
+          ],
+          "originalBackup": True or False, # Whether the backup asset is original or changed by the user in DCM. Applicable to the following creative types: all RICH_MEDIA.
+          "duration": 42, # Duration in seconds for which an asset will be displayed. Applicable to the following creative types: INSTREAM_VIDEO and VPAID_LINEAR_VIDEO.
+          "positionTopUnit": "A String", # Offset top unit for an asset. This is a read-only field if the asset displayType is ASSET_DISPLAY_TYPE_OVERLAY. Applicable to the following creative types: all RICH_MEDIA.
+          "id": "A String", # Numeric ID of this creative asset. This is a required field and should not be modified. Applicable to all but the following creative types: all REDIRECT and TRACKING_TEXT.
+          "alignment": "A String", # Possible alignments for an asset. This is a read-only field. Applicable to the following creative types: RICH_MEDIA_DISPLAY_MULTI_FLOATING_INTERSTITIAL.
+          "size": { # Represents the dimensions of ads, placements, creatives, or creative assets. # Size associated with this creative asset. This is a required field when applicable; however for IMAGE and FLASH_INPAGE, creatives if left blank, this field will be automatically set using the actual size of the associated image asset. Applicable to the following creative types: DISPLAY_IMAGE_GALLERY, FLASH_INPAGE, HTML5_BANNER, IMAGE, and all RICH_MEDIA. Applicable to DISPLAY when the primary asset type is not HTML_IMAGE.
+            "width": 42, # Width of this size.
+            "kind": "dfareporting#size", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#size".
+            "iab": True or False, # IAB standard size. This is a read-only, auto-generated field.
+            "id": "A String", # ID of this size. This is a read-only, auto-generated field.
+            "height": 42, # Height of this size.
+          },
+          "horizontallyLocked": True or False, # Whether the asset is horizontally locked. This is a read-only field. Applicable to the following creative types: all RICH_MEDIA.
+          "startTimeType": "A String", # Initial wait time type before making the asset visible. Applicable to the following creative types: all RICH_MEDIA.
+          "displayType": "A String", # Type of rich media asset. This is a read-only field. Applicable to the following creative types: all RICH_MEDIA.
+          "expandedDimension": { # Represents the dimensions of ads, placements, creatives, or creative assets. # Detected expanded dimension for video asset. This is a read-only field. Applicable to the following creative types: INSTREAM_VIDEO and all VPAID.
+            "width": 42, # Width of this size.
+            "kind": "dfareporting#size", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#size".
+            "iab": True or False, # IAB standard size. This is a read-only, auto-generated field.
+            "id": "A String", # ID of this size. This is a read-only, auto-generated field.
+            "height": 42, # Height of this size.
+          },
+          "verticallyLocked": True or False, # Whether the asset is vertically locked. This is a read-only field. Applicable to the following creative types: all RICH_MEDIA.
+          "idDimensionValue": { # Represents a DimensionValue resource. # Dimension value for the ID of the asset. This is a read-only, auto-generated field.
+            "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+            "value": "A String", # The value of the dimension.
+            "dimensionName": "A String", # The name of the dimension.
+            "etag": "A String", # The eTag of this response for caching purposes.
+            "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+            "id": "A String", # The ID associated with the value if available.
+          },
+          "role": "A String", # Role of the asset in relation to creative. Applicable to all but the following creative types: all REDIRECT and TRACKING_TEXT. This is a required field.
+              # PRIMARY applies to DISPLAY, FLASH_INPAGE, HTML5_BANNER, IMAGE, DISPLAY_IMAGE_GALLERY, all RICH_MEDIA (which may contain multiple primary assets), and all VPAID creatives.
+              # BACKUP_IMAGE applies to FLASH_INPAGE, HTML5_BANNER, all RICH_MEDIA, and all VPAID creatives. Applicable to DISPLAY when the primary asset type is not HTML_IMAGE.
+              # ADDITIONAL_IMAGE and ADDITIONAL_FLASH apply to FLASH_INPAGE creatives.
+              # OTHER refers to assets from sources other than DCM, such as Studio uploaded assets, applicable to all RICH_MEDIA and all VPAID creatives.
+              # PARENT_VIDEO refers to videos uploaded by the user in DCM and is applicable to INSTREAM_VIDEO and VPAID_LINEAR_VIDEO creatives.
+              # TRANSCODED_VIDEO refers to videos transcoded by DCM from PARENT_VIDEO assets and is applicable to INSTREAM_VIDEO and VPAID_LINEAR_VIDEO creatives.
+              # ALTERNATE_VIDEO refers to the DCM representation of child asset videos from Studio, and is applicable to VPAID_LINEAR_VIDEO creatives. These cannot be added or removed within DCM.
+              # For VPAID_LINEAR_VIDEO creatives, PARENT_VIDEO, TRANSCODED_VIDEO and ALTERNATE_VIDEO assets that are marked active serve as backup in case the VPAID creative cannot be served. Only PARENT_VIDEO assets can be added or removed for an INSTREAM_VIDEO or VPAID_LINEAR_VIDEO creative.
+          "zipFilesize": "A String", # Size of zip file. This is a read-only field. Applicable to the following creative types: HTML5_BANNER.
+          "bitRate": 42, # Detected bit-rate for video asset. This is a read-only field. Applicable to the following creative types: INSTREAM_VIDEO and all VPAID.
+          "windowMode": "A String", # Window mode options for flash assets. Applicable to the following creative types: FLASH_INPAGE, RICH_MEDIA_DISPLAY_EXPANDING, RICH_MEDIA_IM_EXPAND, RICH_MEDIA_DISPLAY_BANNER, and RICH_MEDIA_INPAGE_FLOATING.
+          "progressiveServingUrl": "A String", # Progressive URL for video asset. This is a read-only field. Applicable to the following creative types: INSTREAM_VIDEO and all VPAID.
+          "durationType": "A String", # Duration type for which an asset will be displayed. Applicable to the following creative types: all RICH_MEDIA.
+          "videoDuration": 3.14, # Detected video duration for video asset. This is a read-only field. Applicable to the following creative types: INSTREAM_VIDEO and all VPAID.
+          "fileSize": "A String", # File size associated with this creative asset. This is a read-only field. Applicable to all but the following creative types: all REDIRECT and TRACKING_TEXT.
+          "zipFilename": "A String", # File name of zip file. This is a read-only field. Applicable to the following creative types: HTML5_BANNER.
+          "offset": { # Offset Position. # Offset position for an asset in collapsed mode. This is a read-only field. Applicable to the following creative types: all RICH_MEDIA and all VPAID. Additionally, only applicable to assets whose displayType is ASSET_DISPLAY_TYPE_EXPANDING or ASSET_DISPLAY_TYPE_PEEL_DOWN.
+            "top": 42, # Offset distance from top side of an asset or a window.
+            "left": 42, # Offset distance from left side of an asset or a window.
+          },
+          "active": True or False, # Whether the video asset is active. This is a read-only field for VPAID_NON_LINEAR_VIDEO assets. Applicable to the following creative types: INSTREAM_VIDEO and all VPAID.
+          "companionCreativeIds": [ # List of companion creatives assigned to an in-stream video creative asset. Acceptable values include IDs of existing flash and image creatives. Applicable to INSTREAM_VIDEO creative type with dynamicAssetSelection set to true.
+            "A String",
+          ],
+          "hideSelectionBoxes": True or False, # Whether to hide selection boxes flag for an asset. Applicable to the following creative types: all RICH_MEDIA.
+          "streamingServingUrl": "A String", # Streaming URL for video asset. This is a read-only field. Applicable to the following creative types: INSTREAM_VIDEO and all VPAID.
+          "zIndex": 42, # zIndex value of an asset. This is a read-only field. Applicable to the following creative types: all RICH_MEDIA.Additionally, only applicable to assets whose displayType is NOT one of the following types: ASSET_DISPLAY_TYPE_INPAGE or ASSET_DISPLAY_TYPE_OVERLAY.
+          "childAssetType": "A String", # Rich media child asset type. This is a read-only field. Applicable to the following creative types: all VPAID.
+          "backupImageExit": { # Creative Custom Event. # Exit event configured for the backup image. Applicable to the following creative types: all RICH_MEDIA.
+            "targetType": "A String", # Target type used by the event.
+            "artworkType": "A String", # Artwork type used by the creative.This is a read-only field.
+            "videoReportingId": "A String", # Video reporting ID, used to differentiate multiple videos in a single creative. This is a read-only field.
+            "popupWindowProperties": { # Popup Window Properties. # Properties for rich media popup windows. This field is used only for exit events.
+              "showStatusBar": True or False, # Whether to display the browser status bar.
+              "showScrollBar": True or False, # Whether to display the browser scroll bar.
+              "showAddressBar": True or False, # Whether to display the browser address bar.
+              "showMenuBar": True or False, # Whether to display the browser menu bar.
+              "title": "A String", # Title of popup window.
+              "showToolBar": True or False, # Whether to display the browser tool bar.
+              "positionType": "A String", # Popup window position either centered or at specific coordinate.
+              "offset": { # Offset Position. # Upper-left corner coordinates of the popup window. Applicable if positionType is COORDINATES.
+                "top": 42, # Offset distance from top side of an asset or a window.
+                "left": 42, # Offset distance from left side of an asset or a window.
+              },
+              "dimension": { # Represents the dimensions of ads, placements, creatives, or creative assets. # Popup dimension for a creative. This is a read-only field. Applicable to the following creative types: all RICH_MEDIA and all VPAID
+                "width": 42, # Width of this size.
+                "kind": "dfareporting#size", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#size".
+                "iab": True or False, # IAB standard size. This is a read-only, auto-generated field.
+                "id": "A String", # ID of this size. This is a read-only, auto-generated field.
+                "height": 42, # Height of this size.
+              },
+            },
+            "advertiserCustomEventId": "A String", # Unique ID of this event used by DDM Reporting and Data Transfer. This is a read-only field.
+            "artworkLabel": "A String", # Artwork label column, used to link events in DCM back to events in Studio. This is a required field and should not be modified after insertion.
+            "advertiserCustomEventType": "A String", # Type of the event. This is a read-only field.
+            "exitUrl": "A String", # Exit URL of the event. This field is used only for exit events.
+            "id": "A String", # ID of this event. This is a required field and should not be modified after insertion.
+            "advertiserCustomEventName": "A String", # User-entered name for the event.
+          },
+          "actionScript3": True or False, # Whether ActionScript3 is enabled for the flash asset. This is a read-only field. Applicable to the following creative type: FLASH_INPAGE. Applicable to DISPLAY when the primary asset type is not HTML_IMAGE.
+          "pushdownDuration": 3.14, # Pushdown duration in seconds for an asset. Must be between 0 and 9.99. Applicable to the following creative types: all RICH_MEDIA.Additionally, only applicable when the asset pushdown field is true, the offsets are 0, the collapsedSize.width matches size.width, and the collapsedSize.height is less than size.height.
+          "assetIdentifier": { # Creative Asset ID. # Identifier of this asset. This is the same identifier returned during creative asset insert operation. This is a required field. Applicable to all but the following creative types: all REDIRECT and TRACKING_TEXT.
+            "type": "A String", # Type of asset to upload. This is a required field. FLASH and IMAGE are no longer supported for new uploads. All image assets should use HTML_IMAGE.
+            "name": "A String", # Name of the creative asset. This is a required field while inserting an asset. After insertion, this assetIdentifier is used to identify the uploaded asset. Characters in the name must be alphanumeric or one of the following: ".-_ ". Spaces are allowed.
+          },
+          "transparency": True or False, # Whether the asset is transparent. Applicable to the following creative types: all RICH_MEDIA. Additionally, only applicable to HTML5 assets.
+          "sslCompliant": True or False, # Whether the asset is SSL-compliant. This is a read-only field. Applicable to all but the following creative types: all REDIRECT and TRACKING_TEXT.
+          "position": { # Offset Position. # Offset position for an asset. Applicable to the following creative types: all RICH_MEDIA.
+            "top": 42, # Offset distance from top side of an asset or a window.
+            "left": 42, # Offset distance from left side of an asset or a window.
+          },
+          "customStartTimeValue": 42, # Custom start time in seconds for making the asset visible. Applicable to the following creative types: all RICH_MEDIA.
+        },
+      ],
+      "redirectUrl": "A String", # URL of hosted image or hosted video or another ad tag. For INSTREAM_VIDEO_REDIRECT creatives this is the in-stream video redirect URL. The standard for a VAST (Video Ad Serving Template) ad response allows for a redirect link to another VAST 2.0 or 3.0 call. This is a required field when applicable. Applicable to the following creative types: DISPLAY_REDIRECT, INTERNAL_REDIRECT, INTERSTITIAL_INTERNAL_REDIRECT, and INSTREAM_VIDEO_REDIRECT
+      "videoDuration": 3.14, # Creative video duration in seconds. This is a read-only field. Applicable to the following creative types: INSTREAM_VIDEO, all RICH_MEDIA, and all VPAID.
+      "htmlCodeLocked": True or False, # Whether HTML code is DCM-generated or manually entered. Set to true to ignore changes to htmlCode. Applicable to the following creative types: FLASH_INPAGE and HTML5_BANNER.
+      "convertFlashToHtml5": True or False, # Whether Flash assets associated with the creative need to be automatically converted to HTML5. This flag is enabled by default and users can choose to disable it if they don't want the system to generate and use HTML5 asset for this creative. Applicable to the following creative type: FLASH_INPAGE. Applicable to DISPLAY when the primary asset type is not HTML_IMAGE.
+      "clickTags": [ # Click tags of the creative. For DISPLAY, FLASH_INPAGE, and HTML5_BANNER creatives, this is a subset of detected click tags for the assets associated with this creative. After creating a flash asset, detected click tags will be returned in the creativeAssetMetadata. When inserting the creative, populate the creative clickTags field using the creativeAssetMetadata.clickTags field. For DISPLAY_IMAGE_GALLERY creatives, there should be exactly one entry in this list for each image creative asset. A click tag is matched with a corresponding creative asset by matching the clickTag.name field with the creativeAsset.assetIdentifier.name field. Applicable to the following creative types: DISPLAY_IMAGE_GALLERY, FLASH_INPAGE, HTML5_BANNER. Applicable to DISPLAY when the primary asset type is not HTML_IMAGE.
+        { # Creative Click Tag.
+          "eventName": "A String", # Advertiser event name associated with the click tag. This field is used by DISPLAY_IMAGE_GALLERY and HTML5_BANNER creatives. Applicable to DISPLAY when the primary asset type is not HTML_IMAGE.
+          "name": "A String", # Parameter name for the specified click tag. For DISPLAY_IMAGE_GALLERY creative assets, this field must match the value of the creative asset's creativeAssetId.name field.
+          "value": "A String", # Parameter value for the specified click tag. This field contains a click-through url.
+        },
+      ],
+      "commercialId": "A String", # Industry standard ID assigned to creative for reach and frequency. Applicable to the following creative types: all INSTREAM_VIDEO and all VPAID.
+      "active": True or False, # Whether the creative is active. Applicable to all creative types.
+      "compatibility": [ # Compatibilities associated with this creative. This is a read-only field. DISPLAY and DISPLAY_INTERSTITIAL refer to rendering either on desktop or on mobile devices or in mobile apps for regular or interstitial ads, respectively. APP and APP_INTERSTITIAL are for rendering in mobile apps. Only pre-existing creatives may have these compatibilities since new creatives will either be assigned DISPLAY or DISPLAY_INTERSTITIAL instead. IN_STREAM_VIDEO refers to rendering in in-stream video ads developed with the VAST standard. Applicable to all creative types.
+          #
+          # Acceptable values are:
+          # - "APP"
+          # - "APP_INTERSTITIAL"
+          # - "IN_STREAM_VIDEO"
+          # - "DISPLAY"
+          # - "DISPLAY_INTERSTITIAL"
+        "A String",
+      ],
+      "adParameters": "A String", # Ad parameters user for VPAID creative. This is a read-only field. Applicable to the following creative types: all VPAID.
+      "adTagKeys": [ # Keywords for a Rich Media creative. Keywords let you customize the creative settings of a Rich Media ad running on your site without having to contact the advertiser. You can use keywords to dynamically change the look or functionality of a creative. Applicable to the following creative types: all RICH_MEDIA, and all VPAID.
+        "A String",
+      ],
+      "kind": "dfareporting#creative", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#creative".
+      "subaccountId": "A String", # Subaccount ID of this creative. This field, if left unset, will be auto-generated for both insert and update operations. Applicable to all creative types.
+      "name": "A String", # Name of the creative. This is a required field and must be less than 256 characters long. Applicable to all creative types.
+      "sslOverride": True or False, # Whether creative should be treated as SSL compliant even if the system scan shows it's not. Applicable to all creative types.
+      "lastModifiedInfo": { # Modification timestamp. # Creative last modification information. This is a read-only field. Applicable to all creative types.
+        "time": "A String", # Timestamp of the last change in milliseconds since epoch.
+      },
+      "backupImageClickThroughUrl": "A String", # Click-through URL for backup image. Applicable to the following creative types: FLASH_INPAGE and HTML5_BANNER. Applicable to DISPLAY when the primary asset type is not HTML_IMAGE.
+      "sslCompliant": True or False, # Whether the creative is SSL-compliant. This is a read-only field. Applicable to all creative types.
+      "studioCreativeId": "A String", # Studio creative ID associated with rich media and VPAID creatives. This is a read-only field. Applicable to the following creative types: all RICH_MEDIA, and all VPAID.
+      "authoringTool": "A String", # Authoring tool for HTML5 banner creatives. This is a read-only field. Applicable to the following creative types: HTML5_BANNER.
+      "allowScriptAccess": True or False, # Whether script access is allowed for this creative. This is a read-only and deprecated field which will automatically be set to true on update. Applicable to the following creative types: FLASH_INPAGE.
+      "companionCreatives": [ # List of companion creatives assigned to an in-Stream videocreative. Acceptable values include IDs of existing flash and image creatives. Applicable to the following creative types: all VPAID and all INSTREAM_VIDEO with dynamicAssetSelection set to false.
+        "A String",
+      ],
+      "creativeAssetSelection": { # Encapsulates the list of rules for asset selection and a default asset in case none of the rules match. Applicable to INSTREAM_VIDEO creatives. # Required if dynamicAssetSelection is true.
+        "rules": [ # Rules determine which asset will be served to a viewer. Rules will be evaluated in the order in which they are stored in this list. This list must contain at least one rule. Applicable to INSTREAM_VIDEO creatives.
+          { # A rule associates an asset with a targeting template for asset-level targeting. Applicable to INSTREAM_VIDEO creatives.
+            "assetId": "A String", # A creativeAssets[].id. This should refer to one of the parent assets in this creative. This is a required field.
+            "targetingTemplateId": "A String", # A targeting template ID. The targeting from the targeting template will be used to determine whether this asset should be served. This is a required field.
+            "name": "A String", # A user-friendly name for this rule. This is a required field.
+          },
+        ],
+        "defaultAssetId": "A String", # A creativeAssets[].id. This should refer to one of the parent assets in this creative, and will be served if none of the rules match. This is a required field.
+      },
+      "auto_advance_images": True or False, # Whether images are automatically advanced for image gallery creatives. Applicable to the following creative types: DISPLAY_IMAGE_GALLERY.
+      "backupImageFeatures": [ # List of feature dependencies that will cause a backup image to be served if the browser that serves the ad does not support them. Feature dependencies are features that a browser must be able to support in order to render your HTML5 creative asset correctly. This field is initially auto-generated to contain all features detected by DCM for all the assets of this creative and can then be modified by the client. To reset this field, copy over all the creativeAssets' detected features. Applicable to the following creative types: HTML5_BANNER. Applicable to DISPLAY when the primary asset type is not HTML_IMAGE.
+        "A String",
+      ],
+      "backupImageTargetWindow": { # Target Window. # Target window for backup image. Applicable to the following creative types: FLASH_INPAGE and HTML5_BANNER. Applicable to DISPLAY when the primary asset type is not HTML_IMAGE.
+        "customHtml": "A String", # User-entered value.
+        "targetWindowOption": "A String", # Type of browser window for which the backup image of the flash creative can be displayed.
+      },
+      "skippable": True or False, # Whether the user can choose to skip the creative. Applicable to the following creative types: all INSTREAM_VIDEO and all VPAID.
+    }</pre>
+</div>
+
+<div class="method">
+    <code class="details" id="list">list(profileId, campaignId=None, advertiserId=None, sizeIds=None, archived=None, pageToken=None, sortOrder=None, renderingIds=None, maxResults=None, active=None, companionCreativeIds=None, types=None, searchString=None, ids=None, studioCreativeId=None, sortField=None, creativeFieldIds=None)</code>
+  <pre>Retrieves a list of creatives, possibly filtered. This method supports paging.
+
+Args:
+  profileId: string, User profile ID associated with this request. (required)
+  campaignId: string, Select only creatives with this campaign ID.
+  advertiserId: string, Select only creatives with this advertiser ID.
+  sizeIds: string, Select only creatives with these size IDs. (repeated)
+  archived: boolean, Select only archived creatives. Leave blank to select archived and unarchived creatives.
+  pageToken: string, Value of the nextPageToken from the previous result page.
+  sortOrder: string, Order of sorted results, default is ASCENDING.
+    Allowed values
+      ASCENDING - 
+      DESCENDING - 
+  renderingIds: string, Select only creatives with these rendering IDs. (repeated)
+  maxResults: integer, Maximum number of results to return.
+  active: boolean, Select only active creatives. Leave blank to select active and inactive creatives.
+  companionCreativeIds: string, Select only in-stream video creatives with these companion IDs. (repeated)
+  types: string, Select only creatives with these creative types. (repeated)
+    Allowed values
+      BRAND_SAFE_DEFAULT_INSTREAM_VIDEO - 
+      CUSTOM_DISPLAY - 
+      CUSTOM_DISPLAY_INTERSTITIAL - 
+      DISPLAY - 
+      DISPLAY_IMAGE_GALLERY - 
+      DISPLAY_REDIRECT - 
+      FLASH_INPAGE - 
+      HTML5_BANNER - 
+      IMAGE - 
+      INSTREAM_VIDEO - 
+      INSTREAM_VIDEO_REDIRECT - 
+      INTERNAL_REDIRECT - 
+      INTERSTITIAL_INTERNAL_REDIRECT - 
+      RICH_MEDIA_DISPLAY_BANNER - 
+      RICH_MEDIA_DISPLAY_EXPANDING - 
+      RICH_MEDIA_DISPLAY_INTERSTITIAL - 
+      RICH_MEDIA_DISPLAY_MULTI_FLOATING_INTERSTITIAL - 
+      RICH_MEDIA_IM_EXPAND - 
+      RICH_MEDIA_INPAGE_FLOATING - 
+      RICH_MEDIA_MOBILE_IN_APP - 
+      RICH_MEDIA_PEEL_DOWN - 
+      TRACKING_TEXT - 
+      VPAID_LINEAR_VIDEO - 
+      VPAID_NON_LINEAR_VIDEO - 
+  searchString: string, Allows searching for objects by name or ID. Wildcards (*) are allowed. For example, "creative*2015" will return objects with names like "creative June 2015", "creative April 2015", or simply "creative 2015". Most of the searches also add wildcards implicitly at the start and the end of the search string. For example, a search string of "creative" will match objects with name "my creative", "creative 2015", or simply "creative".
+  ids: string, Select only creatives with these IDs. (repeated)
+  studioCreativeId: string, Select only creatives corresponding to this Studio creative ID.
+  sortField: string, Field by which to sort the list.
+    Allowed values
+      ID - 
+      NAME - 
+  creativeFieldIds: string, Select only creatives with these creative field IDs. (repeated)
+
+Returns:
+  An object of the form:
+
+    { # Creative List Response
+    "nextPageToken": "A String", # Pagination token to be used for the next list operation.
+    "kind": "dfareporting#creativesListResponse", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#creativesListResponse".
+    "creatives": [ # Creative collection.
+      { # Contains properties of a Creative.
+          "thirdPartyUrls": [ # Third-party URLs for tracking in-stream video creative events. Applicable to the following creative types: all INSTREAM_VIDEO and all VPAID.
+            { # Third-party Tracking URL.
+              "url": "A String", # URL for the specified third-party URL type.
+              "thirdPartyUrlType": "A String", # Third-party URL type for in-stream video creatives.
+            },
+          ],
+          "artworkType": "A String", # Type of artwork used for the creative. This is a read-only field. Applicable to the following creative types: all RICH_MEDIA, and all VPAID.
+          "latestTraffickedCreativeId": "A String", # Latest Studio trafficked creative ID associated with rich media and VPAID creatives. This is a read-only field. Applicable to the following creative types: all RICH_MEDIA, and all VPAID.
+          "videoDescription": "A String", # Description of the video ad. Applicable to the following creative types: all INSTREAM_VIDEO and all VPAID.
+          "advertiserId": "A String", # Advertiser ID of this creative. This is a required field. Applicable to all creative types.
+          "requiredFlashPluginVersion": "A String", # The minimum required Flash plugin version for this creative. For example, 11.2.202.235. This is a read-only field. Applicable to the following creative types: all RICH_MEDIA, and all VPAID.
+          "thirdPartyBackupImageImpressionsUrl": "A String", # Third-party URL used to record backup image impressions. Applicable to the following creative types: all RICH_MEDIA.
+          "timerCustomEvents": [ # List of timer events configured for the creative. For DISPLAY_IMAGE_GALLERY creatives, these are read-only and auto-generated from clickTags. Applicable to the following creative types: DISPLAY_IMAGE_GALLERY, all RICH_MEDIA, and all VPAID. Applicable to DISPLAY when the primary asset is not HTML_IMAGE.
+            { # Creative Custom Event.
+              "targetType": "A String", # Target type used by the event.
+              "artworkType": "A String", # Artwork type used by the creative.This is a read-only field.
+              "videoReportingId": "A String", # Video reporting ID, used to differentiate multiple videos in a single creative. This is a read-only field.
+              "popupWindowProperties": { # Popup Window Properties. # Properties for rich media popup windows. This field is used only for exit events.
+                "showStatusBar": True or False, # Whether to display the browser status bar.
+                "showScrollBar": True or False, # Whether to display the browser scroll bar.
+                "showAddressBar": True or False, # Whether to display the browser address bar.
+                "showMenuBar": True or False, # Whether to display the browser menu bar.
+                "title": "A String", # Title of popup window.
+                "showToolBar": True or False, # Whether to display the browser tool bar.
+                "positionType": "A String", # Popup window position either centered or at specific coordinate.
+                "offset": { # Offset Position. # Upper-left corner coordinates of the popup window. Applicable if positionType is COORDINATES.
+                  "top": 42, # Offset distance from top side of an asset or a window.
+                  "left": 42, # Offset distance from left side of an asset or a window.
+                },
+                "dimension": { # Represents the dimensions of ads, placements, creatives, or creative assets. # Popup dimension for a creative. This is a read-only field. Applicable to the following creative types: all RICH_MEDIA and all VPAID
+                  "width": 42, # Width of this size.
+                  "kind": "dfareporting#size", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#size".
+                  "iab": True or False, # IAB standard size. This is a read-only, auto-generated field.
+                  "id": "A String", # ID of this size. This is a read-only, auto-generated field.
+                  "height": 42, # Height of this size.
+                },
+              },
+              "advertiserCustomEventId": "A String", # Unique ID of this event used by DDM Reporting and Data Transfer. This is a read-only field.
+              "artworkLabel": "A String", # Artwork label column, used to link events in DCM back to events in Studio. This is a required field and should not be modified after insertion.
+              "advertiserCustomEventType": "A String", # Type of the event. This is a read-only field.
+              "exitUrl": "A String", # Exit URL of the event. This field is used only for exit events.
+              "id": "A String", # ID of this event. This is a required field and should not be modified after insertion.
+              "advertiserCustomEventName": "A String", # User-entered name for the event.
+            },
+          ],
+          "renderingIdDimensionValue": { # Represents a DimensionValue resource. # Dimension value for the rendering ID of this creative. This is a read-only field. Applicable to all creative types.
+            "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+            "value": "A String", # The value of the dimension.
+            "dimensionName": "A String", # The name of the dimension.
+            "etag": "A String", # The eTag of this response for caching purposes.
+            "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+            "id": "A String", # The ID associated with the value if available.
+          },
+          "fsCommand": { # FsCommand. # OpenWindow FSCommand of this creative. This lets the SWF file communicate with either Flash Player or the program hosting Flash Player, such as a web browser. This is only triggered if allowScriptAccess field is true. Applicable to the following creative types: FLASH_INPAGE.
+            "windowHeight": 42, # Height of the window.
+            "top": 42, # Distance from the top of the browser. Applicable when positionOption is DISTANCE_FROM_TOP_LEFT_CORNER.
+            "windowWidth": 42, # Width of the window.
+            "positionOption": "A String", # Position in the browser where the window will open.
+            "left": 42, # Distance from the left of the browser.Applicable when positionOption is DISTANCE_FROM_TOP_LEFT_CORNER.
+          },
+          "dynamicAssetSelection": True or False, # Set this to true to enable the use of rules to target individual assets in this creative. When set to true creativeAssetSelection must be set. This also controls asset-level companions. When this is true, companion creatives should be assigned to creative assets. Learn more. Applicable to INSTREAM_VIDEO creatives.
+          "id": "A String", # ID of this creative. This is a read-only, auto-generated field. Applicable to all creative types.
+          "progressOffset": { # Video Offset # Amount of time to play the video before counting a view. Applicable to the following creative types: all INSTREAM_VIDEO.
+            "offsetPercentage": 42, # Duration, as a percentage of video duration. Do not set when offsetSeconds is set.
+            "offsetSeconds": 42, # Duration, in seconds. Do not set when offsetPercentage is set.
+          },
+          "accountId": "A String", # Account ID of this creative. This field, if left unset, will be auto-generated for both insert and update operations. Applicable to all creative types.
+          "studioTraffickedCreativeId": "A String", # Studio trafficked creative ID associated with rich media and VPAID creatives. This is a read-only field. Applicable to the following creative types: all RICH_MEDIA, and all VPAID.
+          "archived": True or False, # Whether the creative is archived. Applicable to all creative types.
+          "overrideCss": "A String", # Override CSS value for rich media creatives. Applicable to the following creative types: all RICH_MEDIA.
+          "authoringSource": "A String", # Source application where creative was authored. Presently, only DBM authored creatives will have this field set. Applicable to all creative types.
+          "requiredFlashVersion": 42, # The internal Flash version for this creative as calculated by DoubleClick Studio. This is a read-only field. Applicable to the following creative types: FLASH_INPAGE all RICH_MEDIA, and all VPAID. Applicable to DISPLAY when the primary asset type is not HTML_IMAGE.
+          "exitCustomEvents": [ # List of exit events configured for the creative. For DISPLAY and DISPLAY_IMAGE_GALLERY creatives, these are read-only and auto-generated from clickTags, For DISPLAY, an event is also created from the backupImageReportingLabel. Applicable to the following creative types: DISPLAY_IMAGE_GALLERY, all RICH_MEDIA, and all VPAID. Applicable to DISPLAY when the primary asset type is not HTML_IMAGE.
+            { # Creative Custom Event.
+              "targetType": "A String", # Target type used by the event.
+              "artworkType": "A String", # Artwork type used by the creative.This is a read-only field.
+              "videoReportingId": "A String", # Video reporting ID, used to differentiate multiple videos in a single creative. This is a read-only field.
+              "popupWindowProperties": { # Popup Window Properties. # Properties for rich media popup windows. This field is used only for exit events.
+                "showStatusBar": True or False, # Whether to display the browser status bar.
+                "showScrollBar": True or False, # Whether to display the browser scroll bar.
+                "showAddressBar": True or False, # Whether to display the browser address bar.
+                "showMenuBar": True or False, # Whether to display the browser menu bar.
+                "title": "A String", # Title of popup window.
+                "showToolBar": True or False, # Whether to display the browser tool bar.
+                "positionType": "A String", # Popup window position either centered or at specific coordinate.
+                "offset": { # Offset Position. # Upper-left corner coordinates of the popup window. Applicable if positionType is COORDINATES.
+                  "top": 42, # Offset distance from top side of an asset or a window.
+                  "left": 42, # Offset distance from left side of an asset or a window.
+                },
+                "dimension": { # Represents the dimensions of ads, placements, creatives, or creative assets. # Popup dimension for a creative. This is a read-only field. Applicable to the following creative types: all RICH_MEDIA and all VPAID
+                  "width": 42, # Width of this size.
+                  "kind": "dfareporting#size", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#size".
+                  "iab": True or False, # IAB standard size. This is a read-only, auto-generated field.
+                  "id": "A String", # ID of this size. This is a read-only, auto-generated field.
+                  "height": 42, # Height of this size.
+                },
+              },
+              "advertiserCustomEventId": "A String", # Unique ID of this event used by DDM Reporting and Data Transfer. This is a read-only field.
+              "artworkLabel": "A String", # Artwork label column, used to link events in DCM back to events in Studio. This is a required field and should not be modified after insertion.
+              "advertiserCustomEventType": "A String", # Type of the event. This is a read-only field.
+              "exitUrl": "A String", # Exit URL of the event. This field is used only for exit events.
+              "id": "A String", # ID of this event. This is a required field and should not be modified after insertion.
+              "advertiserCustomEventName": "A String", # User-entered name for the event.
+            },
+          ],
+          "renderingId": "A String", # ID of current rendering version. This is a read-only field. Applicable to all creative types.
+          "counterCustomEvents": [ # List of counter events configured for the creative. For DISPLAY_IMAGE_GALLERY creatives, these are read-only and auto-generated from clickTags. Applicable to the following creative types: DISPLAY_IMAGE_GALLERY, all RICH_MEDIA, and all VPAID.
+            { # Creative Custom Event.
+              "targetType": "A String", # Target type used by the event.
+              "artworkType": "A String", # Artwork type used by the creative.This is a read-only field.
+              "videoReportingId": "A String", # Video reporting ID, used to differentiate multiple videos in a single creative. This is a read-only field.
+              "popupWindowProperties": { # Popup Window Properties. # Properties for rich media popup windows. This field is used only for exit events.
+                "showStatusBar": True or False, # Whether to display the browser status bar.
+                "showScrollBar": True or False, # Whether to display the browser scroll bar.
+                "showAddressBar": True or False, # Whether to display the browser address bar.
+                "showMenuBar": True or False, # Whether to display the browser menu bar.
+                "title": "A String", # Title of popup window.
+                "showToolBar": True or False, # Whether to display the browser tool bar.
+                "positionType": "A String", # Popup window position either centered or at specific coordinate.
+                "offset": { # Offset Position. # Upper-left corner coordinates of the popup window. Applicable if positionType is COORDINATES.
+                  "top": 42, # Offset distance from top side of an asset or a window.
+                  "left": 42, # Offset distance from left side of an asset or a window.
+                },
+                "dimension": { # Represents the dimensions of ads, placements, creatives, or creative assets. # Popup dimension for a creative. This is a read-only field. Applicable to the following creative types: all RICH_MEDIA and all VPAID
+                  "width": 42, # Width of this size.
+                  "kind": "dfareporting#size", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#size".
+                  "iab": True or False, # IAB standard size. This is a read-only, auto-generated field.
+                  "id": "A String", # ID of this size. This is a read-only, auto-generated field.
+                  "height": 42, # Height of this size.
+                },
+              },
+              "advertiserCustomEventId": "A String", # Unique ID of this event used by DDM Reporting and Data Transfer. This is a read-only field.
+              "artworkLabel": "A String", # Artwork label column, used to link events in DCM back to events in Studio. This is a required field and should not be modified after insertion.
+              "advertiserCustomEventType": "A String", # Type of the event. This is a read-only field.
+              "exitUrl": "A String", # Exit URL of the event. This field is used only for exit events.
+              "id": "A String", # ID of this event. This is a required field and should not be modified after insertion.
+              "advertiserCustomEventName": "A String", # User-entered name for the event.
+            },
+          ],
+          "skipOffset": { # Video Offset # Amount of time to play the video before the skip button appears. Applicable to the following creative types: all INSTREAM_VIDEO.
+            "offsetPercentage": 42, # Duration, as a percentage of video duration. Do not set when offsetSeconds is set.
+            "offsetSeconds": 42, # Duration, in seconds. Do not set when offsetPercentage is set.
+          },
+          "backupImageReportingLabel": "A String", # Reporting label used for HTML5 banner backup image. Applicable to the following creative types: DISPLAY when the primary asset type is not HTML_IMAGE.
+          "version": 42, # The version number helps you keep track of multiple versions of your creative in your reports. The version number will always be auto-generated during insert operations to start at 1. For tracking creatives the version cannot be incremented and will always remain at 1. For all other creative types the version can be incremented only by 1 during update operations. In addition, the version will be automatically incremented by 1 when undergoing Rich Media creative merging. Applicable to all creative types.
+          "creativeFieldAssignments": [ # Creative field assignments for this creative. Applicable to all creative types.
+            { # Creative Field Assignment.
+              "creativeFieldId": "A String", # ID of the creative field.
+              "creativeFieldValueId": "A String", # ID of the creative field value.
+            },
+          ],
+          "backgroundColor": "A String", # The 6-character HTML color code, beginning with #, for the background of the window area where the Flash file is displayed. Default is white. Applicable to the following creative types: FLASH_INPAGE.
+          "customKeyValues": [ # Custom key-values for a Rich Media creative. Key-values let you customize the creative settings of a Rich Media ad running on your site without having to contact the advertiser. You can use key-values to dynamically change the look or functionality of a creative. Applicable to the following creative types: all RICH_MEDIA, and all VPAID.
+            "A String",
+          ],
+          "idDimensionValue": { # Represents a DimensionValue resource. # Dimension value for the ID of this creative. This is a read-only field. Applicable to all creative types.
+            "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+            "value": "A String", # The value of the dimension.
+            "dimensionName": "A String", # The name of the dimension.
+            "etag": "A String", # The eTag of this response for caching purposes.
+            "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+            "id": "A String", # The ID associated with the value if available.
+          },
+          "htmlCode": "A String", # HTML code for the creative. This is a required field when applicable. This field is ignored if htmlCodeLocked is false. Applicable to the following creative types: all CUSTOM, FLASH_INPAGE, and HTML5_BANNER, and all RICH_MEDIA.
+          "size": { # Represents the dimensions of ads, placements, creatives, or creative assets. # Size associated with this creative. When inserting or updating a creative either the size ID field or size width and height fields can be used. This is a required field when applicable; however for IMAGE, FLASH_INPAGE creatives, and for DISPLAY creatives with a primary asset of type HTML_IMAGE, if left blank, this field will be automatically set using the actual size of the associated image assets. Applicable to the following creative types: DISPLAY, DISPLAY_IMAGE_GALLERY, FLASH_INPAGE, HTML5_BANNER, IMAGE, and all RICH_MEDIA.
+            "width": 42, # Width of this size.
+            "kind": "dfareporting#size", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#size".
+            "iab": True or False, # IAB standard size. This is a read-only, auto-generated field.
+            "id": "A String", # ID of this size. This is a read-only, auto-generated field.
+            "height": 42, # Height of this size.
+          },
+          "type": "A String", # Type of this creative. This is a required field. Applicable to all creative types.
+              #
+              # Note: FLASH_INPAGE, HTML5_BANNER, and IMAGE are only used for existing creatives. New creatives should use DISPLAY as a replacement for these types.
+          "totalFileSize": "A String", # Combined size of all creative assets. This is a read-only field. Applicable to the following creative types: all RICH_MEDIA, and all VPAID.
+          "thirdPartyRichMediaImpressionsUrl": "A String", # Third-party URL used to record rich media impressions. Applicable to the following creative types: all RICH_MEDIA.
+          "studioAdvertiserId": "A String", # Studio advertiser ID associated with rich media and VPAID creatives. This is a read-only field. Applicable to the following creative types: all RICH_MEDIA, and all VPAID.
+          "creativeAssets": [ # Assets associated with a creative. Applicable to all but the following creative types: INTERNAL_REDIRECT, INTERSTITIAL_INTERNAL_REDIRECT, and REDIRECT
+            { # Creative Asset.
+              "mimeType": "A String", # Detected MIME type for video asset. This is a read-only field. Applicable to the following creative types: INSTREAM_VIDEO and all VPAID.
+              "artworkType": "A String", # Artwork type of rich media creative. This is a read-only field. Applicable to the following creative types: all RICH_MEDIA.
+              "positionLeftUnit": "A String", # Offset left unit for an asset. This is a read-only field. Applicable to the following creative types: all RICH_MEDIA.
+              "collapsedSize": { # Represents the dimensions of ads, placements, creatives, or creative assets. # Size of an asset when collapsed. This is a read-only field. Applicable to the following creative types: all RICH_MEDIA and all VPAID. Additionally, applicable to assets whose displayType is ASSET_DISPLAY_TYPE_EXPANDING or ASSET_DISPLAY_TYPE_PEEL_DOWN.
+                "width": 42, # Width of this size.
+                "kind": "dfareporting#size", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#size".
+                "iab": True or False, # IAB standard size. This is a read-only, auto-generated field.
+                "id": "A String", # ID of this size. This is a read-only, auto-generated field.
+                "height": 42, # Height of this size.
+              },
+              "flashVersion": 42, # Flash version of the asset. This is a read-only field. Applicable to the following creative types: FLASH_INPAGE, all RICH_MEDIA, and all VPAID. Applicable to DISPLAY when the primary asset type is not HTML_IMAGE.
+              "pushdown": True or False, # Whether the asset pushes down other content. Applicable to the following creative types: all RICH_MEDIA. Additionally, only applicable when the asset offsets are 0, the collapsedSize.width matches size.width, and the collapsedSize.height is less than size.height.
+              "hideFlashObjects": True or False, # Whether to hide Flash objects flag for an asset. Applicable to the following creative types: all RICH_MEDIA.
+              "detectedFeatures": [ # List of feature dependencies for the creative asset that are detected by DCM. Feature dependencies are features that a browser must be able to support in order to render your HTML5 creative correctly. This is a read-only, auto-generated field. Applicable to the following creative types: HTML5_BANNER. Applicable to DISPLAY when the primary asset type is not HTML_IMAGE.
+                "A String",
+              ],
+              "originalBackup": True or False, # Whether the backup asset is original or changed by the user in DCM. Applicable to the following creative types: all RICH_MEDIA.
+              "duration": 42, # Duration in seconds for which an asset will be displayed. Applicable to the following creative types: INSTREAM_VIDEO and VPAID_LINEAR_VIDEO.
+              "positionTopUnit": "A String", # Offset top unit for an asset. This is a read-only field if the asset displayType is ASSET_DISPLAY_TYPE_OVERLAY. Applicable to the following creative types: all RICH_MEDIA.
+              "id": "A String", # Numeric ID of this creative asset. This is a required field and should not be modified. Applicable to all but the following creative types: all REDIRECT and TRACKING_TEXT.
+              "alignment": "A String", # Possible alignments for an asset. This is a read-only field. Applicable to the following creative types: RICH_MEDIA_DISPLAY_MULTI_FLOATING_INTERSTITIAL.
+              "size": { # Represents the dimensions of ads, placements, creatives, or creative assets. # Size associated with this creative asset. This is a required field when applicable; however for IMAGE and FLASH_INPAGE, creatives if left blank, this field will be automatically set using the actual size of the associated image asset. Applicable to the following creative types: DISPLAY_IMAGE_GALLERY, FLASH_INPAGE, HTML5_BANNER, IMAGE, and all RICH_MEDIA. Applicable to DISPLAY when the primary asset type is not HTML_IMAGE.
+                "width": 42, # Width of this size.
+                "kind": "dfareporting#size", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#size".
+                "iab": True or False, # IAB standard size. This is a read-only, auto-generated field.
+                "id": "A String", # ID of this size. This is a read-only, auto-generated field.
+                "height": 42, # Height of this size.
+              },
+              "horizontallyLocked": True or False, # Whether the asset is horizontally locked. This is a read-only field. Applicable to the following creative types: all RICH_MEDIA.
+              "startTimeType": "A String", # Initial wait time type before making the asset visible. Applicable to the following creative types: all RICH_MEDIA.
+              "displayType": "A String", # Type of rich media asset. This is a read-only field. Applicable to the following creative types: all RICH_MEDIA.
+              "expandedDimension": { # Represents the dimensions of ads, placements, creatives, or creative assets. # Detected expanded dimension for video asset. This is a read-only field. Applicable to the following creative types: INSTREAM_VIDEO and all VPAID.
+                "width": 42, # Width of this size.
+                "kind": "dfareporting#size", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#size".
+                "iab": True or False, # IAB standard size. This is a read-only, auto-generated field.
+                "id": "A String", # ID of this size. This is a read-only, auto-generated field.
+                "height": 42, # Height of this size.
+              },
+              "verticallyLocked": True or False, # Whether the asset is vertically locked. This is a read-only field. Applicable to the following creative types: all RICH_MEDIA.
+              "idDimensionValue": { # Represents a DimensionValue resource. # Dimension value for the ID of the asset. This is a read-only, auto-generated field.
+                "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+                "value": "A String", # The value of the dimension.
+                "dimensionName": "A String", # The name of the dimension.
+                "etag": "A String", # The eTag of this response for caching purposes.
+                "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+                "id": "A String", # The ID associated with the value if available.
+              },
+              "role": "A String", # Role of the asset in relation to creative. Applicable to all but the following creative types: all REDIRECT and TRACKING_TEXT. This is a required field.
+                  # PRIMARY applies to DISPLAY, FLASH_INPAGE, HTML5_BANNER, IMAGE, DISPLAY_IMAGE_GALLERY, all RICH_MEDIA (which may contain multiple primary assets), and all VPAID creatives.
+                  # BACKUP_IMAGE applies to FLASH_INPAGE, HTML5_BANNER, all RICH_MEDIA, and all VPAID creatives. Applicable to DISPLAY when the primary asset type is not HTML_IMAGE.
+                  # ADDITIONAL_IMAGE and ADDITIONAL_FLASH apply to FLASH_INPAGE creatives.
+                  # OTHER refers to assets from sources other than DCM, such as Studio uploaded assets, applicable to all RICH_MEDIA and all VPAID creatives.
+                  # PARENT_VIDEO refers to videos uploaded by the user in DCM and is applicable to INSTREAM_VIDEO and VPAID_LINEAR_VIDEO creatives.
+                  # TRANSCODED_VIDEO refers to videos transcoded by DCM from PARENT_VIDEO assets and is applicable to INSTREAM_VIDEO and VPAID_LINEAR_VIDEO creatives.
+                  # ALTERNATE_VIDEO refers to the DCM representation of child asset videos from Studio, and is applicable to VPAID_LINEAR_VIDEO creatives. These cannot be added or removed within DCM.
+                  # For VPAID_LINEAR_VIDEO creatives, PARENT_VIDEO, TRANSCODED_VIDEO and ALTERNATE_VIDEO assets that are marked active serve as backup in case the VPAID creative cannot be served. Only PARENT_VIDEO assets can be added or removed for an INSTREAM_VIDEO or VPAID_LINEAR_VIDEO creative.
+              "zipFilesize": "A String", # Size of zip file. This is a read-only field. Applicable to the following creative types: HTML5_BANNER.
+              "bitRate": 42, # Detected bit-rate for video asset. This is a read-only field. Applicable to the following creative types: INSTREAM_VIDEO and all VPAID.
+              "windowMode": "A String", # Window mode options for flash assets. Applicable to the following creative types: FLASH_INPAGE, RICH_MEDIA_DISPLAY_EXPANDING, RICH_MEDIA_IM_EXPAND, RICH_MEDIA_DISPLAY_BANNER, and RICH_MEDIA_INPAGE_FLOATING.
+              "progressiveServingUrl": "A String", # Progressive URL for video asset. This is a read-only field. Applicable to the following creative types: INSTREAM_VIDEO and all VPAID.
+              "durationType": "A String", # Duration type for which an asset will be displayed. Applicable to the following creative types: all RICH_MEDIA.
+              "videoDuration": 3.14, # Detected video duration for video asset. This is a read-only field. Applicable to the following creative types: INSTREAM_VIDEO and all VPAID.
+              "fileSize": "A String", # File size associated with this creative asset. This is a read-only field. Applicable to all but the following creative types: all REDIRECT and TRACKING_TEXT.
+              "zipFilename": "A String", # File name of zip file. This is a read-only field. Applicable to the following creative types: HTML5_BANNER.
+              "offset": { # Offset Position. # Offset position for an asset in collapsed mode. This is a read-only field. Applicable to the following creative types: all RICH_MEDIA and all VPAID. Additionally, only applicable to assets whose displayType is ASSET_DISPLAY_TYPE_EXPANDING or ASSET_DISPLAY_TYPE_PEEL_DOWN.
+                "top": 42, # Offset distance from top side of an asset or a window.
+                "left": 42, # Offset distance from left side of an asset or a window.
+              },
+              "active": True or False, # Whether the video asset is active. This is a read-only field for VPAID_NON_LINEAR_VIDEO assets. Applicable to the following creative types: INSTREAM_VIDEO and all VPAID.
+              "companionCreativeIds": [ # List of companion creatives assigned to an in-stream video creative asset. Acceptable values include IDs of existing flash and image creatives. Applicable to INSTREAM_VIDEO creative type with dynamicAssetSelection set to true.
+                "A String",
+              ],
+              "hideSelectionBoxes": True or False, # Whether to hide selection boxes flag for an asset. Applicable to the following creative types: all RICH_MEDIA.
+              "streamingServingUrl": "A String", # Streaming URL for video asset. This is a read-only field. Applicable to the following creative types: INSTREAM_VIDEO and all VPAID.
+              "zIndex": 42, # zIndex value of an asset. This is a read-only field. Applicable to the following creative types: all RICH_MEDIA.Additionally, only applicable to assets whose displayType is NOT one of the following types: ASSET_DISPLAY_TYPE_INPAGE or ASSET_DISPLAY_TYPE_OVERLAY.
+              "childAssetType": "A String", # Rich media child asset type. This is a read-only field. Applicable to the following creative types: all VPAID.
+              "backupImageExit": { # Creative Custom Event. # Exit event configured for the backup image. Applicable to the following creative types: all RICH_MEDIA.
+                "targetType": "A String", # Target type used by the event.
+                "artworkType": "A String", # Artwork type used by the creative.This is a read-only field.
+                "videoReportingId": "A String", # Video reporting ID, used to differentiate multiple videos in a single creative. This is a read-only field.
+                "popupWindowProperties": { # Popup Window Properties. # Properties for rich media popup windows. This field is used only for exit events.
+                  "showStatusBar": True or False, # Whether to display the browser status bar.
+                  "showScrollBar": True or False, # Whether to display the browser scroll bar.
+                  "showAddressBar": True or False, # Whether to display the browser address bar.
+                  "showMenuBar": True or False, # Whether to display the browser menu bar.
+                  "title": "A String", # Title of popup window.
+                  "showToolBar": True or False, # Whether to display the browser tool bar.
+                  "positionType": "A String", # Popup window position either centered or at specific coordinate.
+                  "offset": { # Offset Position. # Upper-left corner coordinates of the popup window. Applicable if positionType is COORDINATES.
+                    "top": 42, # Offset distance from top side of an asset or a window.
+                    "left": 42, # Offset distance from left side of an asset or a window.
+                  },
+                  "dimension": { # Represents the dimensions of ads, placements, creatives, or creative assets. # Popup dimension for a creative. This is a read-only field. Applicable to the following creative types: all RICH_MEDIA and all VPAID
+                    "width": 42, # Width of this size.
+                    "kind": "dfareporting#size", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#size".
+                    "iab": True or False, # IAB standard size. This is a read-only, auto-generated field.
+                    "id": "A String", # ID of this size. This is a read-only, auto-generated field.
+                    "height": 42, # Height of this size.
+                  },
+                },
+                "advertiserCustomEventId": "A String", # Unique ID of this event used by DDM Reporting and Data Transfer. This is a read-only field.
+                "artworkLabel": "A String", # Artwork label column, used to link events in DCM back to events in Studio. This is a required field and should not be modified after insertion.
+                "advertiserCustomEventType": "A String", # Type of the event. This is a read-only field.
+                "exitUrl": "A String", # Exit URL of the event. This field is used only for exit events.
+                "id": "A String", # ID of this event. This is a required field and should not be modified after insertion.
+                "advertiserCustomEventName": "A String", # User-entered name for the event.
+              },
+              "actionScript3": True or False, # Whether ActionScript3 is enabled for the flash asset. This is a read-only field. Applicable to the following creative type: FLASH_INPAGE. Applicable to DISPLAY when the primary asset type is not HTML_IMAGE.
+              "pushdownDuration": 3.14, # Pushdown duration in seconds for an asset. Must be between 0 and 9.99. Applicable to the following creative types: all RICH_MEDIA.Additionally, only applicable when the asset pushdown field is true, the offsets are 0, the collapsedSize.width matches size.width, and the collapsedSize.height is less than size.height.
+              "assetIdentifier": { # Creative Asset ID. # Identifier of this asset. This is the same identifier returned during creative asset insert operation. This is a required field. Applicable to all but the following creative types: all REDIRECT and TRACKING_TEXT.
+                "type": "A String", # Type of asset to upload. This is a required field. FLASH and IMAGE are no longer supported for new uploads. All image assets should use HTML_IMAGE.
+                "name": "A String", # Name of the creative asset. This is a required field while inserting an asset. After insertion, this assetIdentifier is used to identify the uploaded asset. Characters in the name must be alphanumeric or one of the following: ".-_ ". Spaces are allowed.
+              },
+              "transparency": True or False, # Whether the asset is transparent. Applicable to the following creative types: all RICH_MEDIA. Additionally, only applicable to HTML5 assets.
+              "sslCompliant": True or False, # Whether the asset is SSL-compliant. This is a read-only field. Applicable to all but the following creative types: all REDIRECT and TRACKING_TEXT.
+              "position": { # Offset Position. # Offset position for an asset. Applicable to the following creative types: all RICH_MEDIA.
+                "top": 42, # Offset distance from top side of an asset or a window.
+                "left": 42, # Offset distance from left side of an asset or a window.
+              },
+              "customStartTimeValue": 42, # Custom start time in seconds for making the asset visible. Applicable to the following creative types: all RICH_MEDIA.
+            },
+          ],
+          "redirectUrl": "A String", # URL of hosted image or hosted video or another ad tag. For INSTREAM_VIDEO_REDIRECT creatives this is the in-stream video redirect URL. The standard for a VAST (Video Ad Serving Template) ad response allows for a redirect link to another VAST 2.0 or 3.0 call. This is a required field when applicable. Applicable to the following creative types: DISPLAY_REDIRECT, INTERNAL_REDIRECT, INTERSTITIAL_INTERNAL_REDIRECT, and INSTREAM_VIDEO_REDIRECT
+          "videoDuration": 3.14, # Creative video duration in seconds. This is a read-only field. Applicable to the following creative types: INSTREAM_VIDEO, all RICH_MEDIA, and all VPAID.
+          "htmlCodeLocked": True or False, # Whether HTML code is DCM-generated or manually entered. Set to true to ignore changes to htmlCode. Applicable to the following creative types: FLASH_INPAGE and HTML5_BANNER.
+          "convertFlashToHtml5": True or False, # Whether Flash assets associated with the creative need to be automatically converted to HTML5. This flag is enabled by default and users can choose to disable it if they don't want the system to generate and use HTML5 asset for this creative. Applicable to the following creative type: FLASH_INPAGE. Applicable to DISPLAY when the primary asset type is not HTML_IMAGE.
+          "clickTags": [ # Click tags of the creative. For DISPLAY, FLASH_INPAGE, and HTML5_BANNER creatives, this is a subset of detected click tags for the assets associated with this creative. After creating a flash asset, detected click tags will be returned in the creativeAssetMetadata. When inserting the creative, populate the creative clickTags field using the creativeAssetMetadata.clickTags field. For DISPLAY_IMAGE_GALLERY creatives, there should be exactly one entry in this list for each image creative asset. A click tag is matched with a corresponding creative asset by matching the clickTag.name field with the creativeAsset.assetIdentifier.name field. Applicable to the following creative types: DISPLAY_IMAGE_GALLERY, FLASH_INPAGE, HTML5_BANNER. Applicable to DISPLAY when the primary asset type is not HTML_IMAGE.
+            { # Creative Click Tag.
+              "eventName": "A String", # Advertiser event name associated with the click tag. This field is used by DISPLAY_IMAGE_GALLERY and HTML5_BANNER creatives. Applicable to DISPLAY when the primary asset type is not HTML_IMAGE.
+              "name": "A String", # Parameter name for the specified click tag. For DISPLAY_IMAGE_GALLERY creative assets, this field must match the value of the creative asset's creativeAssetId.name field.
+              "value": "A String", # Parameter value for the specified click tag. This field contains a click-through url.
+            },
+          ],
+          "commercialId": "A String", # Industry standard ID assigned to creative for reach and frequency. Applicable to the following creative types: all INSTREAM_VIDEO and all VPAID.
+          "active": True or False, # Whether the creative is active. Applicable to all creative types.
+          "compatibility": [ # Compatibilities associated with this creative. This is a read-only field. DISPLAY and DISPLAY_INTERSTITIAL refer to rendering either on desktop or on mobile devices or in mobile apps for regular or interstitial ads, respectively. APP and APP_INTERSTITIAL are for rendering in mobile apps. Only pre-existing creatives may have these compatibilities since new creatives will either be assigned DISPLAY or DISPLAY_INTERSTITIAL instead. IN_STREAM_VIDEO refers to rendering in in-stream video ads developed with the VAST standard. Applicable to all creative types.
+              #
+              # Acceptable values are:
+              # - "APP"
+              # - "APP_INTERSTITIAL"
+              # - "IN_STREAM_VIDEO"
+              # - "DISPLAY"
+              # - "DISPLAY_INTERSTITIAL"
+            "A String",
+          ],
+          "adParameters": "A String", # Ad parameters user for VPAID creative. This is a read-only field. Applicable to the following creative types: all VPAID.
+          "adTagKeys": [ # Keywords for a Rich Media creative. Keywords let you customize the creative settings of a Rich Media ad running on your site without having to contact the advertiser. You can use keywords to dynamically change the look or functionality of a creative. Applicable to the following creative types: all RICH_MEDIA, and all VPAID.
+            "A String",
+          ],
+          "kind": "dfareporting#creative", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#creative".
+          "subaccountId": "A String", # Subaccount ID of this creative. This field, if left unset, will be auto-generated for both insert and update operations. Applicable to all creative types.
+          "name": "A String", # Name of the creative. This is a required field and must be less than 256 characters long. Applicable to all creative types.
+          "sslOverride": True or False, # Whether creative should be treated as SSL compliant even if the system scan shows it's not. Applicable to all creative types.
+          "lastModifiedInfo": { # Modification timestamp. # Creative last modification information. This is a read-only field. Applicable to all creative types.
+            "time": "A String", # Timestamp of the last change in milliseconds since epoch.
+          },
+          "backupImageClickThroughUrl": "A String", # Click-through URL for backup image. Applicable to the following creative types: FLASH_INPAGE and HTML5_BANNER. Applicable to DISPLAY when the primary asset type is not HTML_IMAGE.
+          "sslCompliant": True or False, # Whether the creative is SSL-compliant. This is a read-only field. Applicable to all creative types.
+          "studioCreativeId": "A String", # Studio creative ID associated with rich media and VPAID creatives. This is a read-only field. Applicable to the following creative types: all RICH_MEDIA, and all VPAID.
+          "authoringTool": "A String", # Authoring tool for HTML5 banner creatives. This is a read-only field. Applicable to the following creative types: HTML5_BANNER.
+          "allowScriptAccess": True or False, # Whether script access is allowed for this creative. This is a read-only and deprecated field which will automatically be set to true on update. Applicable to the following creative types: FLASH_INPAGE.
+          "companionCreatives": [ # List of companion creatives assigned to an in-Stream videocreative. Acceptable values include IDs of existing flash and image creatives. Applicable to the following creative types: all VPAID and all INSTREAM_VIDEO with dynamicAssetSelection set to false.
+            "A String",
+          ],
+          "creativeAssetSelection": { # Encapsulates the list of rules for asset selection and a default asset in case none of the rules match. Applicable to INSTREAM_VIDEO creatives. # Required if dynamicAssetSelection is true.
+            "rules": [ # Rules determine which asset will be served to a viewer. Rules will be evaluated in the order in which they are stored in this list. This list must contain at least one rule. Applicable to INSTREAM_VIDEO creatives.
+              { # A rule associates an asset with a targeting template for asset-level targeting. Applicable to INSTREAM_VIDEO creatives.
+                "assetId": "A String", # A creativeAssets[].id. This should refer to one of the parent assets in this creative. This is a required field.
+                "targetingTemplateId": "A String", # A targeting template ID. The targeting from the targeting template will be used to determine whether this asset should be served. This is a required field.
+                "name": "A String", # A user-friendly name for this rule. This is a required field.
+              },
+            ],
+            "defaultAssetId": "A String", # A creativeAssets[].id. This should refer to one of the parent assets in this creative, and will be served if none of the rules match. This is a required field.
+          },
+          "auto_advance_images": True or False, # Whether images are automatically advanced for image gallery creatives. Applicable to the following creative types: DISPLAY_IMAGE_GALLERY.
+          "backupImageFeatures": [ # List of feature dependencies that will cause a backup image to be served if the browser that serves the ad does not support them. Feature dependencies are features that a browser must be able to support in order to render your HTML5 creative asset correctly. This field is initially auto-generated to contain all features detected by DCM for all the assets of this creative and can then be modified by the client. To reset this field, copy over all the creativeAssets' detected features. Applicable to the following creative types: HTML5_BANNER. Applicable to DISPLAY when the primary asset type is not HTML_IMAGE.
+            "A String",
+          ],
+          "backupImageTargetWindow": { # Target Window. # Target window for backup image. Applicable to the following creative types: FLASH_INPAGE and HTML5_BANNER. Applicable to DISPLAY when the primary asset type is not HTML_IMAGE.
+            "customHtml": "A String", # User-entered value.
+            "targetWindowOption": "A String", # Type of browser window for which the backup image of the flash creative can be displayed.
+          },
+          "skippable": True or False, # Whether the user can choose to skip the creative. Applicable to the following creative types: all INSTREAM_VIDEO and all VPAID.
+        },
+    ],
+  }</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="patch">patch(profileId, id, body)</code>
+  <pre>Updates an existing creative. This method supports patch semantics.
+
+Args:
+  profileId: string, User profile ID associated with this request. (required)
+  id: string, Creative ID. (required)
+  body: object, The request body. (required)
+    The object takes the form of:
+
+{ # Contains properties of a Creative.
+    "thirdPartyUrls": [ # Third-party URLs for tracking in-stream video creative events. Applicable to the following creative types: all INSTREAM_VIDEO and all VPAID.
+      { # Third-party Tracking URL.
+        "url": "A String", # URL for the specified third-party URL type.
+        "thirdPartyUrlType": "A String", # Third-party URL type for in-stream video creatives.
+      },
+    ],
+    "artworkType": "A String", # Type of artwork used for the creative. This is a read-only field. Applicable to the following creative types: all RICH_MEDIA, and all VPAID.
+    "latestTraffickedCreativeId": "A String", # Latest Studio trafficked creative ID associated with rich media and VPAID creatives. This is a read-only field. Applicable to the following creative types: all RICH_MEDIA, and all VPAID.
+    "videoDescription": "A String", # Description of the video ad. Applicable to the following creative types: all INSTREAM_VIDEO and all VPAID.
+    "advertiserId": "A String", # Advertiser ID of this creative. This is a required field. Applicable to all creative types.
+    "requiredFlashPluginVersion": "A String", # The minimum required Flash plugin version for this creative. For example, 11.2.202.235. This is a read-only field. Applicable to the following creative types: all RICH_MEDIA, and all VPAID.
+    "thirdPartyBackupImageImpressionsUrl": "A String", # Third-party URL used to record backup image impressions. Applicable to the following creative types: all RICH_MEDIA.
+    "timerCustomEvents": [ # List of timer events configured for the creative. For DISPLAY_IMAGE_GALLERY creatives, these are read-only and auto-generated from clickTags. Applicable to the following creative types: DISPLAY_IMAGE_GALLERY, all RICH_MEDIA, and all VPAID. Applicable to DISPLAY when the primary asset is not HTML_IMAGE.
+      { # Creative Custom Event.
+        "targetType": "A String", # Target type used by the event.
+        "artworkType": "A String", # Artwork type used by the creative.This is a read-only field.
+        "videoReportingId": "A String", # Video reporting ID, used to differentiate multiple videos in a single creative. This is a read-only field.
+        "popupWindowProperties": { # Popup Window Properties. # Properties for rich media popup windows. This field is used only for exit events.
+          "showStatusBar": True or False, # Whether to display the browser status bar.
+          "showScrollBar": True or False, # Whether to display the browser scroll bar.
+          "showAddressBar": True or False, # Whether to display the browser address bar.
+          "showMenuBar": True or False, # Whether to display the browser menu bar.
+          "title": "A String", # Title of popup window.
+          "showToolBar": True or False, # Whether to display the browser tool bar.
+          "positionType": "A String", # Popup window position either centered or at specific coordinate.
+          "offset": { # Offset Position. # Upper-left corner coordinates of the popup window. Applicable if positionType is COORDINATES.
+            "top": 42, # Offset distance from top side of an asset or a window.
+            "left": 42, # Offset distance from left side of an asset or a window.
+          },
+          "dimension": { # Represents the dimensions of ads, placements, creatives, or creative assets. # Popup dimension for a creative. This is a read-only field. Applicable to the following creative types: all RICH_MEDIA and all VPAID
+            "width": 42, # Width of this size.
+            "kind": "dfareporting#size", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#size".
+            "iab": True or False, # IAB standard size. This is a read-only, auto-generated field.
+            "id": "A String", # ID of this size. This is a read-only, auto-generated field.
+            "height": 42, # Height of this size.
+          },
+        },
+        "advertiserCustomEventId": "A String", # Unique ID of this event used by DDM Reporting and Data Transfer. This is a read-only field.
+        "artworkLabel": "A String", # Artwork label column, used to link events in DCM back to events in Studio. This is a required field and should not be modified after insertion.
+        "advertiserCustomEventType": "A String", # Type of the event. This is a read-only field.
+        "exitUrl": "A String", # Exit URL of the event. This field is used only for exit events.
+        "id": "A String", # ID of this event. This is a required field and should not be modified after insertion.
+        "advertiserCustomEventName": "A String", # User-entered name for the event.
+      },
+    ],
+    "renderingIdDimensionValue": { # Represents a DimensionValue resource. # Dimension value for the rendering ID of this creative. This is a read-only field. Applicable to all creative types.
+      "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+      "value": "A String", # The value of the dimension.
+      "dimensionName": "A String", # The name of the dimension.
+      "etag": "A String", # The eTag of this response for caching purposes.
+      "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+      "id": "A String", # The ID associated with the value if available.
+    },
+    "fsCommand": { # FsCommand. # OpenWindow FSCommand of this creative. This lets the SWF file communicate with either Flash Player or the program hosting Flash Player, such as a web browser. This is only triggered if allowScriptAccess field is true. Applicable to the following creative types: FLASH_INPAGE.
+      "windowHeight": 42, # Height of the window.
+      "top": 42, # Distance from the top of the browser. Applicable when positionOption is DISTANCE_FROM_TOP_LEFT_CORNER.
+      "windowWidth": 42, # Width of the window.
+      "positionOption": "A String", # Position in the browser where the window will open.
+      "left": 42, # Distance from the left of the browser.Applicable when positionOption is DISTANCE_FROM_TOP_LEFT_CORNER.
+    },
+    "dynamicAssetSelection": True or False, # Set this to true to enable the use of rules to target individual assets in this creative. When set to true creativeAssetSelection must be set. This also controls asset-level companions. When this is true, companion creatives should be assigned to creative assets. Learn more. Applicable to INSTREAM_VIDEO creatives.
+    "id": "A String", # ID of this creative. This is a read-only, auto-generated field. Applicable to all creative types.
+    "progressOffset": { # Video Offset # Amount of time to play the video before counting a view. Applicable to the following creative types: all INSTREAM_VIDEO.
+      "offsetPercentage": 42, # Duration, as a percentage of video duration. Do not set when offsetSeconds is set.
+      "offsetSeconds": 42, # Duration, in seconds. Do not set when offsetPercentage is set.
+    },
+    "accountId": "A String", # Account ID of this creative. This field, if left unset, will be auto-generated for both insert and update operations. Applicable to all creative types.
+    "studioTraffickedCreativeId": "A String", # Studio trafficked creative ID associated with rich media and VPAID creatives. This is a read-only field. Applicable to the following creative types: all RICH_MEDIA, and all VPAID.
+    "archived": True or False, # Whether the creative is archived. Applicable to all creative types.
+    "overrideCss": "A String", # Override CSS value for rich media creatives. Applicable to the following creative types: all RICH_MEDIA.
+    "authoringSource": "A String", # Source application where creative was authored. Presently, only DBM authored creatives will have this field set. Applicable to all creative types.
+    "requiredFlashVersion": 42, # The internal Flash version for this creative as calculated by DoubleClick Studio. This is a read-only field. Applicable to the following creative types: FLASH_INPAGE all RICH_MEDIA, and all VPAID. Applicable to DISPLAY when the primary asset type is not HTML_IMAGE.
+    "exitCustomEvents": [ # List of exit events configured for the creative. For DISPLAY and DISPLAY_IMAGE_GALLERY creatives, these are read-only and auto-generated from clickTags, For DISPLAY, an event is also created from the backupImageReportingLabel. Applicable to the following creative types: DISPLAY_IMAGE_GALLERY, all RICH_MEDIA, and all VPAID. Applicable to DISPLAY when the primary asset type is not HTML_IMAGE.
+      { # Creative Custom Event.
+        "targetType": "A String", # Target type used by the event.
+        "artworkType": "A String", # Artwork type used by the creative.This is a read-only field.
+        "videoReportingId": "A String", # Video reporting ID, used to differentiate multiple videos in a single creative. This is a read-only field.
+        "popupWindowProperties": { # Popup Window Properties. # Properties for rich media popup windows. This field is used only for exit events.
+          "showStatusBar": True or False, # Whether to display the browser status bar.
+          "showScrollBar": True or False, # Whether to display the browser scroll bar.
+          "showAddressBar": True or False, # Whether to display the browser address bar.
+          "showMenuBar": True or False, # Whether to display the browser menu bar.
+          "title": "A String", # Title of popup window.
+          "showToolBar": True or False, # Whether to display the browser tool bar.
+          "positionType": "A String", # Popup window position either centered or at specific coordinate.
+          "offset": { # Offset Position. # Upper-left corner coordinates of the popup window. Applicable if positionType is COORDINATES.
+            "top": 42, # Offset distance from top side of an asset or a window.
+            "left": 42, # Offset distance from left side of an asset or a window.
+          },
+          "dimension": { # Represents the dimensions of ads, placements, creatives, or creative assets. # Popup dimension for a creative. This is a read-only field. Applicable to the following creative types: all RICH_MEDIA and all VPAID
+            "width": 42, # Width of this size.
+            "kind": "dfareporting#size", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#size".
+            "iab": True or False, # IAB standard size. This is a read-only, auto-generated field.
+            "id": "A String", # ID of this size. This is a read-only, auto-generated field.
+            "height": 42, # Height of this size.
+          },
+        },
+        "advertiserCustomEventId": "A String", # Unique ID of this event used by DDM Reporting and Data Transfer. This is a read-only field.
+        "artworkLabel": "A String", # Artwork label column, used to link events in DCM back to events in Studio. This is a required field and should not be modified after insertion.
+        "advertiserCustomEventType": "A String", # Type of the event. This is a read-only field.
+        "exitUrl": "A String", # Exit URL of the event. This field is used only for exit events.
+        "id": "A String", # ID of this event. This is a required field and should not be modified after insertion.
+        "advertiserCustomEventName": "A String", # User-entered name for the event.
+      },
+    ],
+    "renderingId": "A String", # ID of current rendering version. This is a read-only field. Applicable to all creative types.
+    "counterCustomEvents": [ # List of counter events configured for the creative. For DISPLAY_IMAGE_GALLERY creatives, these are read-only and auto-generated from clickTags. Applicable to the following creative types: DISPLAY_IMAGE_GALLERY, all RICH_MEDIA, and all VPAID.
+      { # Creative Custom Event.
+        "targetType": "A String", # Target type used by the event.
+        "artworkType": "A String", # Artwork type used by the creative.This is a read-only field.
+        "videoReportingId": "A String", # Video reporting ID, used to differentiate multiple videos in a single creative. This is a read-only field.
+        "popupWindowProperties": { # Popup Window Properties. # Properties for rich media popup windows. This field is used only for exit events.
+          "showStatusBar": True or False, # Whether to display the browser status bar.
+          "showScrollBar": True or False, # Whether to display the browser scroll bar.
+          "showAddressBar": True or False, # Whether to display the browser address bar.
+          "showMenuBar": True or False, # Whether to display the browser menu bar.
+          "title": "A String", # Title of popup window.
+          "showToolBar": True or False, # Whether to display the browser tool bar.
+          "positionType": "A String", # Popup window position either centered or at specific coordinate.
+          "offset": { # Offset Position. # Upper-left corner coordinates of the popup window. Applicable if positionType is COORDINATES.
+            "top": 42, # Offset distance from top side of an asset or a window.
+            "left": 42, # Offset distance from left side of an asset or a window.
+          },
+          "dimension": { # Represents the dimensions of ads, placements, creatives, or creative assets. # Popup dimension for a creative. This is a read-only field. Applicable to the following creative types: all RICH_MEDIA and all VPAID
+            "width": 42, # Width of this size.
+            "kind": "dfareporting#size", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#size".
+            "iab": True or False, # IAB standard size. This is a read-only, auto-generated field.
+            "id": "A String", # ID of this size. This is a read-only, auto-generated field.
+            "height": 42, # Height of this size.
+          },
+        },
+        "advertiserCustomEventId": "A String", # Unique ID of this event used by DDM Reporting and Data Transfer. This is a read-only field.
+        "artworkLabel": "A String", # Artwork label column, used to link events in DCM back to events in Studio. This is a required field and should not be modified after insertion.
+        "advertiserCustomEventType": "A String", # Type of the event. This is a read-only field.
+        "exitUrl": "A String", # Exit URL of the event. This field is used only for exit events.
+        "id": "A String", # ID of this event. This is a required field and should not be modified after insertion.
+        "advertiserCustomEventName": "A String", # User-entered name for the event.
+      },
+    ],
+    "skipOffset": { # Video Offset # Amount of time to play the video before the skip button appears. Applicable to the following creative types: all INSTREAM_VIDEO.
+      "offsetPercentage": 42, # Duration, as a percentage of video duration. Do not set when offsetSeconds is set.
+      "offsetSeconds": 42, # Duration, in seconds. Do not set when offsetPercentage is set.
+    },
+    "backupImageReportingLabel": "A String", # Reporting label used for HTML5 banner backup image. Applicable to the following creative types: DISPLAY when the primary asset type is not HTML_IMAGE.
+    "version": 42, # The version number helps you keep track of multiple versions of your creative in your reports. The version number will always be auto-generated during insert operations to start at 1. For tracking creatives the version cannot be incremented and will always remain at 1. For all other creative types the version can be incremented only by 1 during update operations. In addition, the version will be automatically incremented by 1 when undergoing Rich Media creative merging. Applicable to all creative types.
+    "creativeFieldAssignments": [ # Creative field assignments for this creative. Applicable to all creative types.
+      { # Creative Field Assignment.
+        "creativeFieldId": "A String", # ID of the creative field.
+        "creativeFieldValueId": "A String", # ID of the creative field value.
+      },
+    ],
+    "backgroundColor": "A String", # The 6-character HTML color code, beginning with #, for the background of the window area where the Flash file is displayed. Default is white. Applicable to the following creative types: FLASH_INPAGE.
+    "customKeyValues": [ # Custom key-values for a Rich Media creative. Key-values let you customize the creative settings of a Rich Media ad running on your site without having to contact the advertiser. You can use key-values to dynamically change the look or functionality of a creative. Applicable to the following creative types: all RICH_MEDIA, and all VPAID.
+      "A String",
+    ],
+    "idDimensionValue": { # Represents a DimensionValue resource. # Dimension value for the ID of this creative. This is a read-only field. Applicable to all creative types.
+      "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+      "value": "A String", # The value of the dimension.
+      "dimensionName": "A String", # The name of the dimension.
+      "etag": "A String", # The eTag of this response for caching purposes.
+      "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+      "id": "A String", # The ID associated with the value if available.
+    },
+    "htmlCode": "A String", # HTML code for the creative. This is a required field when applicable. This field is ignored if htmlCodeLocked is false. Applicable to the following creative types: all CUSTOM, FLASH_INPAGE, and HTML5_BANNER, and all RICH_MEDIA.
+    "size": { # Represents the dimensions of ads, placements, creatives, or creative assets. # Size associated with this creative. When inserting or updating a creative either the size ID field or size width and height fields can be used. This is a required field when applicable; however for IMAGE, FLASH_INPAGE creatives, and for DISPLAY creatives with a primary asset of type HTML_IMAGE, if left blank, this field will be automatically set using the actual size of the associated image assets. Applicable to the following creative types: DISPLAY, DISPLAY_IMAGE_GALLERY, FLASH_INPAGE, HTML5_BANNER, IMAGE, and all RICH_MEDIA.
+      "width": 42, # Width of this size.
+      "kind": "dfareporting#size", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#size".
+      "iab": True or False, # IAB standard size. This is a read-only, auto-generated field.
+      "id": "A String", # ID of this size. This is a read-only, auto-generated field.
+      "height": 42, # Height of this size.
+    },
+    "type": "A String", # Type of this creative. This is a required field. Applicable to all creative types.
+        # 
+        # Note: FLASH_INPAGE, HTML5_BANNER, and IMAGE are only used for existing creatives. New creatives should use DISPLAY as a replacement for these types.
+    "totalFileSize": "A String", # Combined size of all creative assets. This is a read-only field. Applicable to the following creative types: all RICH_MEDIA, and all VPAID.
+    "thirdPartyRichMediaImpressionsUrl": "A String", # Third-party URL used to record rich media impressions. Applicable to the following creative types: all RICH_MEDIA.
+    "studioAdvertiserId": "A String", # Studio advertiser ID associated with rich media and VPAID creatives. This is a read-only field. Applicable to the following creative types: all RICH_MEDIA, and all VPAID.
+    "creativeAssets": [ # Assets associated with a creative. Applicable to all but the following creative types: INTERNAL_REDIRECT, INTERSTITIAL_INTERNAL_REDIRECT, and REDIRECT
+      { # Creative Asset.
+        "mimeType": "A String", # Detected MIME type for video asset. This is a read-only field. Applicable to the following creative types: INSTREAM_VIDEO and all VPAID.
+        "artworkType": "A String", # Artwork type of rich media creative. This is a read-only field. Applicable to the following creative types: all RICH_MEDIA.
+        "positionLeftUnit": "A String", # Offset left unit for an asset. This is a read-only field. Applicable to the following creative types: all RICH_MEDIA.
+        "collapsedSize": { # Represents the dimensions of ads, placements, creatives, or creative assets. # Size of an asset when collapsed. This is a read-only field. Applicable to the following creative types: all RICH_MEDIA and all VPAID. Additionally, applicable to assets whose displayType is ASSET_DISPLAY_TYPE_EXPANDING or ASSET_DISPLAY_TYPE_PEEL_DOWN.
+          "width": 42, # Width of this size.
+          "kind": "dfareporting#size", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#size".
+          "iab": True or False, # IAB standard size. This is a read-only, auto-generated field.
+          "id": "A String", # ID of this size. This is a read-only, auto-generated field.
+          "height": 42, # Height of this size.
+        },
+        "flashVersion": 42, # Flash version of the asset. This is a read-only field. Applicable to the following creative types: FLASH_INPAGE, all RICH_MEDIA, and all VPAID. Applicable to DISPLAY when the primary asset type is not HTML_IMAGE.
+        "pushdown": True or False, # Whether the asset pushes down other content. Applicable to the following creative types: all RICH_MEDIA. Additionally, only applicable when the asset offsets are 0, the collapsedSize.width matches size.width, and the collapsedSize.height is less than size.height.
+        "hideFlashObjects": True or False, # Whether to hide Flash objects flag for an asset. Applicable to the following creative types: all RICH_MEDIA.
+        "detectedFeatures": [ # List of feature dependencies for the creative asset that are detected by DCM. Feature dependencies are features that a browser must be able to support in order to render your HTML5 creative correctly. This is a read-only, auto-generated field. Applicable to the following creative types: HTML5_BANNER. Applicable to DISPLAY when the primary asset type is not HTML_IMAGE.
+          "A String",
+        ],
+        "originalBackup": True or False, # Whether the backup asset is original or changed by the user in DCM. Applicable to the following creative types: all RICH_MEDIA.
+        "duration": 42, # Duration in seconds for which an asset will be displayed. Applicable to the following creative types: INSTREAM_VIDEO and VPAID_LINEAR_VIDEO.
+        "positionTopUnit": "A String", # Offset top unit for an asset. This is a read-only field if the asset displayType is ASSET_DISPLAY_TYPE_OVERLAY. Applicable to the following creative types: all RICH_MEDIA.
+        "id": "A String", # Numeric ID of this creative asset. This is a required field and should not be modified. Applicable to all but the following creative types: all REDIRECT and TRACKING_TEXT.
+        "alignment": "A String", # Possible alignments for an asset. This is a read-only field. Applicable to the following creative types: RICH_MEDIA_DISPLAY_MULTI_FLOATING_INTERSTITIAL.
+        "size": { # Represents the dimensions of ads, placements, creatives, or creative assets. # Size associated with this creative asset. This is a required field when applicable; however for IMAGE and FLASH_INPAGE, creatives if left blank, this field will be automatically set using the actual size of the associated image asset. Applicable to the following creative types: DISPLAY_IMAGE_GALLERY, FLASH_INPAGE, HTML5_BANNER, IMAGE, and all RICH_MEDIA. Applicable to DISPLAY when the primary asset type is not HTML_IMAGE.
+          "width": 42, # Width of this size.
+          "kind": "dfareporting#size", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#size".
+          "iab": True or False, # IAB standard size. This is a read-only, auto-generated field.
+          "id": "A String", # ID of this size. This is a read-only, auto-generated field.
+          "height": 42, # Height of this size.
+        },
+        "horizontallyLocked": True or False, # Whether the asset is horizontally locked. This is a read-only field. Applicable to the following creative types: all RICH_MEDIA.
+        "startTimeType": "A String", # Initial wait time type before making the asset visible. Applicable to the following creative types: all RICH_MEDIA.
+        "displayType": "A String", # Type of rich media asset. This is a read-only field. Applicable to the following creative types: all RICH_MEDIA.
+        "expandedDimension": { # Represents the dimensions of ads, placements, creatives, or creative assets. # Detected expanded dimension for video asset. This is a read-only field. Applicable to the following creative types: INSTREAM_VIDEO and all VPAID.
+          "width": 42, # Width of this size.
+          "kind": "dfareporting#size", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#size".
+          "iab": True or False, # IAB standard size. This is a read-only, auto-generated field.
+          "id": "A String", # ID of this size. This is a read-only, auto-generated field.
+          "height": 42, # Height of this size.
+        },
+        "verticallyLocked": True or False, # Whether the asset is vertically locked. This is a read-only field. Applicable to the following creative types: all RICH_MEDIA.
+        "idDimensionValue": { # Represents a DimensionValue resource. # Dimension value for the ID of the asset. This is a read-only, auto-generated field.
+          "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+          "value": "A String", # The value of the dimension.
+          "dimensionName": "A String", # The name of the dimension.
+          "etag": "A String", # The eTag of this response for caching purposes.
+          "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+          "id": "A String", # The ID associated with the value if available.
+        },
+        "role": "A String", # Role of the asset in relation to creative. Applicable to all but the following creative types: all REDIRECT and TRACKING_TEXT. This is a required field.
+            # PRIMARY applies to DISPLAY, FLASH_INPAGE, HTML5_BANNER, IMAGE, DISPLAY_IMAGE_GALLERY, all RICH_MEDIA (which may contain multiple primary assets), and all VPAID creatives.
+            # BACKUP_IMAGE applies to FLASH_INPAGE, HTML5_BANNER, all RICH_MEDIA, and all VPAID creatives. Applicable to DISPLAY when the primary asset type is not HTML_IMAGE.
+            # ADDITIONAL_IMAGE and ADDITIONAL_FLASH apply to FLASH_INPAGE creatives.
+            # OTHER refers to assets from sources other than DCM, such as Studio uploaded assets, applicable to all RICH_MEDIA and all VPAID creatives.
+            # PARENT_VIDEO refers to videos uploaded by the user in DCM and is applicable to INSTREAM_VIDEO and VPAID_LINEAR_VIDEO creatives.
+            # TRANSCODED_VIDEO refers to videos transcoded by DCM from PARENT_VIDEO assets and is applicable to INSTREAM_VIDEO and VPAID_LINEAR_VIDEO creatives.
+            # ALTERNATE_VIDEO refers to the DCM representation of child asset videos from Studio, and is applicable to VPAID_LINEAR_VIDEO creatives. These cannot be added or removed within DCM.
+            # For VPAID_LINEAR_VIDEO creatives, PARENT_VIDEO, TRANSCODED_VIDEO and ALTERNATE_VIDEO assets that are marked active serve as backup in case the VPAID creative cannot be served. Only PARENT_VIDEO assets can be added or removed for an INSTREAM_VIDEO or VPAID_LINEAR_VIDEO creative.
+        "zipFilesize": "A String", # Size of zip file. This is a read-only field. Applicable to the following creative types: HTML5_BANNER.
+        "bitRate": 42, # Detected bit-rate for video asset. This is a read-only field. Applicable to the following creative types: INSTREAM_VIDEO and all VPAID.
+        "windowMode": "A String", # Window mode options for flash assets. Applicable to the following creative types: FLASH_INPAGE, RICH_MEDIA_DISPLAY_EXPANDING, RICH_MEDIA_IM_EXPAND, RICH_MEDIA_DISPLAY_BANNER, and RICH_MEDIA_INPAGE_FLOATING.
+        "progressiveServingUrl": "A String", # Progressive URL for video asset. This is a read-only field. Applicable to the following creative types: INSTREAM_VIDEO and all VPAID.
+        "durationType": "A String", # Duration type for which an asset will be displayed. Applicable to the following creative types: all RICH_MEDIA.
+        "videoDuration": 3.14, # Detected video duration for video asset. This is a read-only field. Applicable to the following creative types: INSTREAM_VIDEO and all VPAID.
+        "fileSize": "A String", # File size associated with this creative asset. This is a read-only field. Applicable to all but the following creative types: all REDIRECT and TRACKING_TEXT.
+        "zipFilename": "A String", # File name of zip file. This is a read-only field. Applicable to the following creative types: HTML5_BANNER.
+        "offset": { # Offset Position. # Offset position for an asset in collapsed mode. This is a read-only field. Applicable to the following creative types: all RICH_MEDIA and all VPAID. Additionally, only applicable to assets whose displayType is ASSET_DISPLAY_TYPE_EXPANDING or ASSET_DISPLAY_TYPE_PEEL_DOWN.
+          "top": 42, # Offset distance from top side of an asset or a window.
+          "left": 42, # Offset distance from left side of an asset or a window.
+        },
+        "active": True or False, # Whether the video asset is active. This is a read-only field for VPAID_NON_LINEAR_VIDEO assets. Applicable to the following creative types: INSTREAM_VIDEO and all VPAID.
+        "companionCreativeIds": [ # List of companion creatives assigned to an in-stream video creative asset. Acceptable values include IDs of existing flash and image creatives. Applicable to INSTREAM_VIDEO creative type with dynamicAssetSelection set to true.
+          "A String",
+        ],
+        "hideSelectionBoxes": True or False, # Whether to hide selection boxes flag for an asset. Applicable to the following creative types: all RICH_MEDIA.
+        "streamingServingUrl": "A String", # Streaming URL for video asset. This is a read-only field. Applicable to the following creative types: INSTREAM_VIDEO and all VPAID.
+        "zIndex": 42, # zIndex value of an asset. This is a read-only field. Applicable to the following creative types: all RICH_MEDIA.Additionally, only applicable to assets whose displayType is NOT one of the following types: ASSET_DISPLAY_TYPE_INPAGE or ASSET_DISPLAY_TYPE_OVERLAY.
+        "childAssetType": "A String", # Rich media child asset type. This is a read-only field. Applicable to the following creative types: all VPAID.
+        "backupImageExit": { # Creative Custom Event. # Exit event configured for the backup image. Applicable to the following creative types: all RICH_MEDIA.
+          "targetType": "A String", # Target type used by the event.
+          "artworkType": "A String", # Artwork type used by the creative.This is a read-only field.
+          "videoReportingId": "A String", # Video reporting ID, used to differentiate multiple videos in a single creative. This is a read-only field.
+          "popupWindowProperties": { # Popup Window Properties. # Properties for rich media popup windows. This field is used only for exit events.
+            "showStatusBar": True or False, # Whether to display the browser status bar.
+            "showScrollBar": True or False, # Whether to display the browser scroll bar.
+            "showAddressBar": True or False, # Whether to display the browser address bar.
+            "showMenuBar": True or False, # Whether to display the browser menu bar.
+            "title": "A String", # Title of popup window.
+            "showToolBar": True or False, # Whether to display the browser tool bar.
+            "positionType": "A String", # Popup window position either centered or at specific coordinate.
+            "offset": { # Offset Position. # Upper-left corner coordinates of the popup window. Applicable if positionType is COORDINATES.
+              "top": 42, # Offset distance from top side of an asset or a window.
+              "left": 42, # Offset distance from left side of an asset or a window.
+            },
+            "dimension": { # Represents the dimensions of ads, placements, creatives, or creative assets. # Popup dimension for a creative. This is a read-only field. Applicable to the following creative types: all RICH_MEDIA and all VPAID
+              "width": 42, # Width of this size.
+              "kind": "dfareporting#size", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#size".
+              "iab": True or False, # IAB standard size. This is a read-only, auto-generated field.
+              "id": "A String", # ID of this size. This is a read-only, auto-generated field.
+              "height": 42, # Height of this size.
+            },
+          },
+          "advertiserCustomEventId": "A String", # Unique ID of this event used by DDM Reporting and Data Transfer. This is a read-only field.
+          "artworkLabel": "A String", # Artwork label column, used to link events in DCM back to events in Studio. This is a required field and should not be modified after insertion.
+          "advertiserCustomEventType": "A String", # Type of the event. This is a read-only field.
+          "exitUrl": "A String", # Exit URL of the event. This field is used only for exit events.
+          "id": "A String", # ID of this event. This is a required field and should not be modified after insertion.
+          "advertiserCustomEventName": "A String", # User-entered name for the event.
+        },
+        "actionScript3": True or False, # Whether ActionScript3 is enabled for the flash asset. This is a read-only field. Applicable to the following creative type: FLASH_INPAGE. Applicable to DISPLAY when the primary asset type is not HTML_IMAGE.
+        "pushdownDuration": 3.14, # Pushdown duration in seconds for an asset. Must be between 0 and 9.99. Applicable to the following creative types: all RICH_MEDIA.Additionally, only applicable when the asset pushdown field is true, the offsets are 0, the collapsedSize.width matches size.width, and the collapsedSize.height is less than size.height.
+        "assetIdentifier": { # Creative Asset ID. # Identifier of this asset. This is the same identifier returned during creative asset insert operation. This is a required field. Applicable to all but the following creative types: all REDIRECT and TRACKING_TEXT.
+          "type": "A String", # Type of asset to upload. This is a required field. FLASH and IMAGE are no longer supported for new uploads. All image assets should use HTML_IMAGE.
+          "name": "A String", # Name of the creative asset. This is a required field while inserting an asset. After insertion, this assetIdentifier is used to identify the uploaded asset. Characters in the name must be alphanumeric or one of the following: ".-_ ". Spaces are allowed.
+        },
+        "transparency": True or False, # Whether the asset is transparent. Applicable to the following creative types: all RICH_MEDIA. Additionally, only applicable to HTML5 assets.
+        "sslCompliant": True or False, # Whether the asset is SSL-compliant. This is a read-only field. Applicable to all but the following creative types: all REDIRECT and TRACKING_TEXT.
+        "position": { # Offset Position. # Offset position for an asset. Applicable to the following creative types: all RICH_MEDIA.
+          "top": 42, # Offset distance from top side of an asset or a window.
+          "left": 42, # Offset distance from left side of an asset or a window.
+        },
+        "customStartTimeValue": 42, # Custom start time in seconds for making the asset visible. Applicable to the following creative types: all RICH_MEDIA.
+      },
+    ],
+    "redirectUrl": "A String", # URL of hosted image or hosted video or another ad tag. For INSTREAM_VIDEO_REDIRECT creatives this is the in-stream video redirect URL. The standard for a VAST (Video Ad Serving Template) ad response allows for a redirect link to another VAST 2.0 or 3.0 call. This is a required field when applicable. Applicable to the following creative types: DISPLAY_REDIRECT, INTERNAL_REDIRECT, INTERSTITIAL_INTERNAL_REDIRECT, and INSTREAM_VIDEO_REDIRECT
+    "videoDuration": 3.14, # Creative video duration in seconds. This is a read-only field. Applicable to the following creative types: INSTREAM_VIDEO, all RICH_MEDIA, and all VPAID.
+    "htmlCodeLocked": True or False, # Whether HTML code is DCM-generated or manually entered. Set to true to ignore changes to htmlCode. Applicable to the following creative types: FLASH_INPAGE and HTML5_BANNER.
+    "convertFlashToHtml5": True or False, # Whether Flash assets associated with the creative need to be automatically converted to HTML5. This flag is enabled by default and users can choose to disable it if they don't want the system to generate and use HTML5 asset for this creative. Applicable to the following creative type: FLASH_INPAGE. Applicable to DISPLAY when the primary asset type is not HTML_IMAGE.
+    "clickTags": [ # Click tags of the creative. For DISPLAY, FLASH_INPAGE, and HTML5_BANNER creatives, this is a subset of detected click tags for the assets associated with this creative. After creating a flash asset, detected click tags will be returned in the creativeAssetMetadata. When inserting the creative, populate the creative clickTags field using the creativeAssetMetadata.clickTags field. For DISPLAY_IMAGE_GALLERY creatives, there should be exactly one entry in this list for each image creative asset. A click tag is matched with a corresponding creative asset by matching the clickTag.name field with the creativeAsset.assetIdentifier.name field. Applicable to the following creative types: DISPLAY_IMAGE_GALLERY, FLASH_INPAGE, HTML5_BANNER. Applicable to DISPLAY when the primary asset type is not HTML_IMAGE.
+      { # Creative Click Tag.
+        "eventName": "A String", # Advertiser event name associated with the click tag. This field is used by DISPLAY_IMAGE_GALLERY and HTML5_BANNER creatives. Applicable to DISPLAY when the primary asset type is not HTML_IMAGE.
+        "name": "A String", # Parameter name for the specified click tag. For DISPLAY_IMAGE_GALLERY creative assets, this field must match the value of the creative asset's creativeAssetId.name field.
+        "value": "A String", # Parameter value for the specified click tag. This field contains a click-through url.
+      },
+    ],
+    "commercialId": "A String", # Industry standard ID assigned to creative for reach and frequency. Applicable to the following creative types: all INSTREAM_VIDEO and all VPAID.
+    "active": True or False, # Whether the creative is active. Applicable to all creative types.
+    "compatibility": [ # Compatibilities associated with this creative. This is a read-only field. DISPLAY and DISPLAY_INTERSTITIAL refer to rendering either on desktop or on mobile devices or in mobile apps for regular or interstitial ads, respectively. APP and APP_INTERSTITIAL are for rendering in mobile apps. Only pre-existing creatives may have these compatibilities since new creatives will either be assigned DISPLAY or DISPLAY_INTERSTITIAL instead. IN_STREAM_VIDEO refers to rendering in in-stream video ads developed with the VAST standard. Applicable to all creative types.
+        # 
+        # Acceptable values are:
+        # - "APP"
+        # - "APP_INTERSTITIAL"
+        # - "IN_STREAM_VIDEO"
+        # - "DISPLAY"
+        # - "DISPLAY_INTERSTITIAL"
+      "A String",
+    ],
+    "adParameters": "A String", # Ad parameters user for VPAID creative. This is a read-only field. Applicable to the following creative types: all VPAID.
+    "adTagKeys": [ # Keywords for a Rich Media creative. Keywords let you customize the creative settings of a Rich Media ad running on your site without having to contact the advertiser. You can use keywords to dynamically change the look or functionality of a creative. Applicable to the following creative types: all RICH_MEDIA, and all VPAID.
+      "A String",
+    ],
+    "kind": "dfareporting#creative", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#creative".
+    "subaccountId": "A String", # Subaccount ID of this creative. This field, if left unset, will be auto-generated for both insert and update operations. Applicable to all creative types.
+    "name": "A String", # Name of the creative. This is a required field and must be less than 256 characters long. Applicable to all creative types.
+    "sslOverride": True or False, # Whether creative should be treated as SSL compliant even if the system scan shows it's not. Applicable to all creative types.
+    "lastModifiedInfo": { # Modification timestamp. # Creative last modification information. This is a read-only field. Applicable to all creative types.
+      "time": "A String", # Timestamp of the last change in milliseconds since epoch.
+    },
+    "backupImageClickThroughUrl": "A String", # Click-through URL for backup image. Applicable to the following creative types: FLASH_INPAGE and HTML5_BANNER. Applicable to DISPLAY when the primary asset type is not HTML_IMAGE.
+    "sslCompliant": True or False, # Whether the creative is SSL-compliant. This is a read-only field. Applicable to all creative types.
+    "studioCreativeId": "A String", # Studio creative ID associated with rich media and VPAID creatives. This is a read-only field. Applicable to the following creative types: all RICH_MEDIA, and all VPAID.
+    "authoringTool": "A String", # Authoring tool for HTML5 banner creatives. This is a read-only field. Applicable to the following creative types: HTML5_BANNER.
+    "allowScriptAccess": True or False, # Whether script access is allowed for this creative. This is a read-only and deprecated field which will automatically be set to true on update. Applicable to the following creative types: FLASH_INPAGE.
+    "companionCreatives": [ # List of companion creatives assigned to an in-Stream videocreative. Acceptable values include IDs of existing flash and image creatives. Applicable to the following creative types: all VPAID and all INSTREAM_VIDEO with dynamicAssetSelection set to false.
+      "A String",
+    ],
+    "creativeAssetSelection": { # Encapsulates the list of rules for asset selection and a default asset in case none of the rules match. Applicable to INSTREAM_VIDEO creatives. # Required if dynamicAssetSelection is true.
+      "rules": [ # Rules determine which asset will be served to a viewer. Rules will be evaluated in the order in which they are stored in this list. This list must contain at least one rule. Applicable to INSTREAM_VIDEO creatives.
+        { # A rule associates an asset with a targeting template for asset-level targeting. Applicable to INSTREAM_VIDEO creatives.
+          "assetId": "A String", # A creativeAssets[].id. This should refer to one of the parent assets in this creative. This is a required field.
+          "targetingTemplateId": "A String", # A targeting template ID. The targeting from the targeting template will be used to determine whether this asset should be served. This is a required field.
+          "name": "A String", # A user-friendly name for this rule. This is a required field.
+        },
+      ],
+      "defaultAssetId": "A String", # A creativeAssets[].id. This should refer to one of the parent assets in this creative, and will be served if none of the rules match. This is a required field.
+    },
+    "auto_advance_images": True or False, # Whether images are automatically advanced for image gallery creatives. Applicable to the following creative types: DISPLAY_IMAGE_GALLERY.
+    "backupImageFeatures": [ # List of feature dependencies that will cause a backup image to be served if the browser that serves the ad does not support them. Feature dependencies are features that a browser must be able to support in order to render your HTML5 creative asset correctly. This field is initially auto-generated to contain all features detected by DCM for all the assets of this creative and can then be modified by the client. To reset this field, copy over all the creativeAssets' detected features. Applicable to the following creative types: HTML5_BANNER. Applicable to DISPLAY when the primary asset type is not HTML_IMAGE.
+      "A String",
+    ],
+    "backupImageTargetWindow": { # Target Window. # Target window for backup image. Applicable to the following creative types: FLASH_INPAGE and HTML5_BANNER. Applicable to DISPLAY when the primary asset type is not HTML_IMAGE.
+      "customHtml": "A String", # User-entered value.
+      "targetWindowOption": "A String", # Type of browser window for which the backup image of the flash creative can be displayed.
+    },
+    "skippable": True or False, # Whether the user can choose to skip the creative. Applicable to the following creative types: all INSTREAM_VIDEO and all VPAID.
+  }
+
+
+Returns:
+  An object of the form:
+
+    { # Contains properties of a Creative.
+      "thirdPartyUrls": [ # Third-party URLs for tracking in-stream video creative events. Applicable to the following creative types: all INSTREAM_VIDEO and all VPAID.
+        { # Third-party Tracking URL.
+          "url": "A String", # URL for the specified third-party URL type.
+          "thirdPartyUrlType": "A String", # Third-party URL type for in-stream video creatives.
+        },
+      ],
+      "artworkType": "A String", # Type of artwork used for the creative. This is a read-only field. Applicable to the following creative types: all RICH_MEDIA, and all VPAID.
+      "latestTraffickedCreativeId": "A String", # Latest Studio trafficked creative ID associated with rich media and VPAID creatives. This is a read-only field. Applicable to the following creative types: all RICH_MEDIA, and all VPAID.
+      "videoDescription": "A String", # Description of the video ad. Applicable to the following creative types: all INSTREAM_VIDEO and all VPAID.
+      "advertiserId": "A String", # Advertiser ID of this creative. This is a required field. Applicable to all creative types.
+      "requiredFlashPluginVersion": "A String", # The minimum required Flash plugin version for this creative. For example, 11.2.202.235. This is a read-only field. Applicable to the following creative types: all RICH_MEDIA, and all VPAID.
+      "thirdPartyBackupImageImpressionsUrl": "A String", # Third-party URL used to record backup image impressions. Applicable to the following creative types: all RICH_MEDIA.
+      "timerCustomEvents": [ # List of timer events configured for the creative. For DISPLAY_IMAGE_GALLERY creatives, these are read-only and auto-generated from clickTags. Applicable to the following creative types: DISPLAY_IMAGE_GALLERY, all RICH_MEDIA, and all VPAID. Applicable to DISPLAY when the primary asset is not HTML_IMAGE.
+        { # Creative Custom Event.
+          "targetType": "A String", # Target type used by the event.
+          "artworkType": "A String", # Artwork type used by the creative.This is a read-only field.
+          "videoReportingId": "A String", # Video reporting ID, used to differentiate multiple videos in a single creative. This is a read-only field.
+          "popupWindowProperties": { # Popup Window Properties. # Properties for rich media popup windows. This field is used only for exit events.
+            "showStatusBar": True or False, # Whether to display the browser status bar.
+            "showScrollBar": True or False, # Whether to display the browser scroll bar.
+            "showAddressBar": True or False, # Whether to display the browser address bar.
+            "showMenuBar": True or False, # Whether to display the browser menu bar.
+            "title": "A String", # Title of popup window.
+            "showToolBar": True or False, # Whether to display the browser tool bar.
+            "positionType": "A String", # Popup window position either centered or at specific coordinate.
+            "offset": { # Offset Position. # Upper-left corner coordinates of the popup window. Applicable if positionType is COORDINATES.
+              "top": 42, # Offset distance from top side of an asset or a window.
+              "left": 42, # Offset distance from left side of an asset or a window.
+            },
+            "dimension": { # Represents the dimensions of ads, placements, creatives, or creative assets. # Popup dimension for a creative. This is a read-only field. Applicable to the following creative types: all RICH_MEDIA and all VPAID
+              "width": 42, # Width of this size.
+              "kind": "dfareporting#size", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#size".
+              "iab": True or False, # IAB standard size. This is a read-only, auto-generated field.
+              "id": "A String", # ID of this size. This is a read-only, auto-generated field.
+              "height": 42, # Height of this size.
+            },
+          },
+          "advertiserCustomEventId": "A String", # Unique ID of this event used by DDM Reporting and Data Transfer. This is a read-only field.
+          "artworkLabel": "A String", # Artwork label column, used to link events in DCM back to events in Studio. This is a required field and should not be modified after insertion.
+          "advertiserCustomEventType": "A String", # Type of the event. This is a read-only field.
+          "exitUrl": "A String", # Exit URL of the event. This field is used only for exit events.
+          "id": "A String", # ID of this event. This is a required field and should not be modified after insertion.
+          "advertiserCustomEventName": "A String", # User-entered name for the event.
+        },
+      ],
+      "renderingIdDimensionValue": { # Represents a DimensionValue resource. # Dimension value for the rendering ID of this creative. This is a read-only field. Applicable to all creative types.
+        "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+        "value": "A String", # The value of the dimension.
+        "dimensionName": "A String", # The name of the dimension.
+        "etag": "A String", # The eTag of this response for caching purposes.
+        "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+        "id": "A String", # The ID associated with the value if available.
+      },
+      "fsCommand": { # FsCommand. # OpenWindow FSCommand of this creative. This lets the SWF file communicate with either Flash Player or the program hosting Flash Player, such as a web browser. This is only triggered if allowScriptAccess field is true. Applicable to the following creative types: FLASH_INPAGE.
+        "windowHeight": 42, # Height of the window.
+        "top": 42, # Distance from the top of the browser. Applicable when positionOption is DISTANCE_FROM_TOP_LEFT_CORNER.
+        "windowWidth": 42, # Width of the window.
+        "positionOption": "A String", # Position in the browser where the window will open.
+        "left": 42, # Distance from the left of the browser.Applicable when positionOption is DISTANCE_FROM_TOP_LEFT_CORNER.
+      },
+      "dynamicAssetSelection": True or False, # Set this to true to enable the use of rules to target individual assets in this creative. When set to true creativeAssetSelection must be set. This also controls asset-level companions. When this is true, companion creatives should be assigned to creative assets. Learn more. Applicable to INSTREAM_VIDEO creatives.
+      "id": "A String", # ID of this creative. This is a read-only, auto-generated field. Applicable to all creative types.
+      "progressOffset": { # Video Offset # Amount of time to play the video before counting a view. Applicable to the following creative types: all INSTREAM_VIDEO.
+        "offsetPercentage": 42, # Duration, as a percentage of video duration. Do not set when offsetSeconds is set.
+        "offsetSeconds": 42, # Duration, in seconds. Do not set when offsetPercentage is set.
+      },
+      "accountId": "A String", # Account ID of this creative. This field, if left unset, will be auto-generated for both insert and update operations. Applicable to all creative types.
+      "studioTraffickedCreativeId": "A String", # Studio trafficked creative ID associated with rich media and VPAID creatives. This is a read-only field. Applicable to the following creative types: all RICH_MEDIA, and all VPAID.
+      "archived": True or False, # Whether the creative is archived. Applicable to all creative types.
+      "overrideCss": "A String", # Override CSS value for rich media creatives. Applicable to the following creative types: all RICH_MEDIA.
+      "authoringSource": "A String", # Source application where creative was authored. Presently, only DBM authored creatives will have this field set. Applicable to all creative types.
+      "requiredFlashVersion": 42, # The internal Flash version for this creative as calculated by DoubleClick Studio. This is a read-only field. Applicable to the following creative types: FLASH_INPAGE all RICH_MEDIA, and all VPAID. Applicable to DISPLAY when the primary asset type is not HTML_IMAGE.
+      "exitCustomEvents": [ # List of exit events configured for the creative. For DISPLAY and DISPLAY_IMAGE_GALLERY creatives, these are read-only and auto-generated from clickTags, For DISPLAY, an event is also created from the backupImageReportingLabel. Applicable to the following creative types: DISPLAY_IMAGE_GALLERY, all RICH_MEDIA, and all VPAID. Applicable to DISPLAY when the primary asset type is not HTML_IMAGE.
+        { # Creative Custom Event.
+          "targetType": "A String", # Target type used by the event.
+          "artworkType": "A String", # Artwork type used by the creative.This is a read-only field.
+          "videoReportingId": "A String", # Video reporting ID, used to differentiate multiple videos in a single creative. This is a read-only field.
+          "popupWindowProperties": { # Popup Window Properties. # Properties for rich media popup windows. This field is used only for exit events.
+            "showStatusBar": True or False, # Whether to display the browser status bar.
+            "showScrollBar": True or False, # Whether to display the browser scroll bar.
+            "showAddressBar": True or False, # Whether to display the browser address bar.
+            "showMenuBar": True or False, # Whether to display the browser menu bar.
+            "title": "A String", # Title of popup window.
+            "showToolBar": True or False, # Whether to display the browser tool bar.
+            "positionType": "A String", # Popup window position either centered or at specific coordinate.
+            "offset": { # Offset Position. # Upper-left corner coordinates of the popup window. Applicable if positionType is COORDINATES.
+              "top": 42, # Offset distance from top side of an asset or a window.
+              "left": 42, # Offset distance from left side of an asset or a window.
+            },
+            "dimension": { # Represents the dimensions of ads, placements, creatives, or creative assets. # Popup dimension for a creative. This is a read-only field. Applicable to the following creative types: all RICH_MEDIA and all VPAID
+              "width": 42, # Width of this size.
+              "kind": "dfareporting#size", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#size".
+              "iab": True or False, # IAB standard size. This is a read-only, auto-generated field.
+              "id": "A String", # ID of this size. This is a read-only, auto-generated field.
+              "height": 42, # Height of this size.
+            },
+          },
+          "advertiserCustomEventId": "A String", # Unique ID of this event used by DDM Reporting and Data Transfer. This is a read-only field.
+          "artworkLabel": "A String", # Artwork label column, used to link events in DCM back to events in Studio. This is a required field and should not be modified after insertion.
+          "advertiserCustomEventType": "A String", # Type of the event. This is a read-only field.
+          "exitUrl": "A String", # Exit URL of the event. This field is used only for exit events.
+          "id": "A String", # ID of this event. This is a required field and should not be modified after insertion.
+          "advertiserCustomEventName": "A String", # User-entered name for the event.
+        },
+      ],
+      "renderingId": "A String", # ID of current rendering version. This is a read-only field. Applicable to all creative types.
+      "counterCustomEvents": [ # List of counter events configured for the creative. For DISPLAY_IMAGE_GALLERY creatives, these are read-only and auto-generated from clickTags. Applicable to the following creative types: DISPLAY_IMAGE_GALLERY, all RICH_MEDIA, and all VPAID.
+        { # Creative Custom Event.
+          "targetType": "A String", # Target type used by the event.
+          "artworkType": "A String", # Artwork type used by the creative.This is a read-only field.
+          "videoReportingId": "A String", # Video reporting ID, used to differentiate multiple videos in a single creative. This is a read-only field.
+          "popupWindowProperties": { # Popup Window Properties. # Properties for rich media popup windows. This field is used only for exit events.
+            "showStatusBar": True or False, # Whether to display the browser status bar.
+            "showScrollBar": True or False, # Whether to display the browser scroll bar.
+            "showAddressBar": True or False, # Whether to display the browser address bar.
+            "showMenuBar": True or False, # Whether to display the browser menu bar.
+            "title": "A String", # Title of popup window.
+            "showToolBar": True or False, # Whether to display the browser tool bar.
+            "positionType": "A String", # Popup window position either centered or at specific coordinate.
+            "offset": { # Offset Position. # Upper-left corner coordinates of the popup window. Applicable if positionType is COORDINATES.
+              "top": 42, # Offset distance from top side of an asset or a window.
+              "left": 42, # Offset distance from left side of an asset or a window.
+            },
+            "dimension": { # Represents the dimensions of ads, placements, creatives, or creative assets. # Popup dimension for a creative. This is a read-only field. Applicable to the following creative types: all RICH_MEDIA and all VPAID
+              "width": 42, # Width of this size.
+              "kind": "dfareporting#size", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#size".
+              "iab": True or False, # IAB standard size. This is a read-only, auto-generated field.
+              "id": "A String", # ID of this size. This is a read-only, auto-generated field.
+              "height": 42, # Height of this size.
+            },
+          },
+          "advertiserCustomEventId": "A String", # Unique ID of this event used by DDM Reporting and Data Transfer. This is a read-only field.
+          "artworkLabel": "A String", # Artwork label column, used to link events in DCM back to events in Studio. This is a required field and should not be modified after insertion.
+          "advertiserCustomEventType": "A String", # Type of the event. This is a read-only field.
+          "exitUrl": "A String", # Exit URL of the event. This field is used only for exit events.
+          "id": "A String", # ID of this event. This is a required field and should not be modified after insertion.
+          "advertiserCustomEventName": "A String", # User-entered name for the event.
+        },
+      ],
+      "skipOffset": { # Video Offset # Amount of time to play the video before the skip button appears. Applicable to the following creative types: all INSTREAM_VIDEO.
+        "offsetPercentage": 42, # Duration, as a percentage of video duration. Do not set when offsetSeconds is set.
+        "offsetSeconds": 42, # Duration, in seconds. Do not set when offsetPercentage is set.
+      },
+      "backupImageReportingLabel": "A String", # Reporting label used for HTML5 banner backup image. Applicable to the following creative types: DISPLAY when the primary asset type is not HTML_IMAGE.
+      "version": 42, # The version number helps you keep track of multiple versions of your creative in your reports. The version number will always be auto-generated during insert operations to start at 1. For tracking creatives the version cannot be incremented and will always remain at 1. For all other creative types the version can be incremented only by 1 during update operations. In addition, the version will be automatically incremented by 1 when undergoing Rich Media creative merging. Applicable to all creative types.
+      "creativeFieldAssignments": [ # Creative field assignments for this creative. Applicable to all creative types.
+        { # Creative Field Assignment.
+          "creativeFieldId": "A String", # ID of the creative field.
+          "creativeFieldValueId": "A String", # ID of the creative field value.
+        },
+      ],
+      "backgroundColor": "A String", # The 6-character HTML color code, beginning with #, for the background of the window area where the Flash file is displayed. Default is white. Applicable to the following creative types: FLASH_INPAGE.
+      "customKeyValues": [ # Custom key-values for a Rich Media creative. Key-values let you customize the creative settings of a Rich Media ad running on your site without having to contact the advertiser. You can use key-values to dynamically change the look or functionality of a creative. Applicable to the following creative types: all RICH_MEDIA, and all VPAID.
+        "A String",
+      ],
+      "idDimensionValue": { # Represents a DimensionValue resource. # Dimension value for the ID of this creative. This is a read-only field. Applicable to all creative types.
+        "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+        "value": "A String", # The value of the dimension.
+        "dimensionName": "A String", # The name of the dimension.
+        "etag": "A String", # The eTag of this response for caching purposes.
+        "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+        "id": "A String", # The ID associated with the value if available.
+      },
+      "htmlCode": "A String", # HTML code for the creative. This is a required field when applicable. This field is ignored if htmlCodeLocked is false. Applicable to the following creative types: all CUSTOM, FLASH_INPAGE, and HTML5_BANNER, and all RICH_MEDIA.
+      "size": { # Represents the dimensions of ads, placements, creatives, or creative assets. # Size associated with this creative. When inserting or updating a creative either the size ID field or size width and height fields can be used. This is a required field when applicable; however for IMAGE, FLASH_INPAGE creatives, and for DISPLAY creatives with a primary asset of type HTML_IMAGE, if left blank, this field will be automatically set using the actual size of the associated image assets. Applicable to the following creative types: DISPLAY, DISPLAY_IMAGE_GALLERY, FLASH_INPAGE, HTML5_BANNER, IMAGE, and all RICH_MEDIA.
+        "width": 42, # Width of this size.
+        "kind": "dfareporting#size", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#size".
+        "iab": True or False, # IAB standard size. This is a read-only, auto-generated field.
+        "id": "A String", # ID of this size. This is a read-only, auto-generated field.
+        "height": 42, # Height of this size.
+      },
+      "type": "A String", # Type of this creative. This is a required field. Applicable to all creative types.
+          #
+          # Note: FLASH_INPAGE, HTML5_BANNER, and IMAGE are only used for existing creatives. New creatives should use DISPLAY as a replacement for these types.
+      "totalFileSize": "A String", # Combined size of all creative assets. This is a read-only field. Applicable to the following creative types: all RICH_MEDIA, and all VPAID.
+      "thirdPartyRichMediaImpressionsUrl": "A String", # Third-party URL used to record rich media impressions. Applicable to the following creative types: all RICH_MEDIA.
+      "studioAdvertiserId": "A String", # Studio advertiser ID associated with rich media and VPAID creatives. This is a read-only field. Applicable to the following creative types: all RICH_MEDIA, and all VPAID.
+      "creativeAssets": [ # Assets associated with a creative. Applicable to all but the following creative types: INTERNAL_REDIRECT, INTERSTITIAL_INTERNAL_REDIRECT, and REDIRECT
+        { # Creative Asset.
+          "mimeType": "A String", # Detected MIME type for video asset. This is a read-only field. Applicable to the following creative types: INSTREAM_VIDEO and all VPAID.
+          "artworkType": "A String", # Artwork type of rich media creative. This is a read-only field. Applicable to the following creative types: all RICH_MEDIA.
+          "positionLeftUnit": "A String", # Offset left unit for an asset. This is a read-only field. Applicable to the following creative types: all RICH_MEDIA.
+          "collapsedSize": { # Represents the dimensions of ads, placements, creatives, or creative assets. # Size of an asset when collapsed. This is a read-only field. Applicable to the following creative types: all RICH_MEDIA and all VPAID. Additionally, applicable to assets whose displayType is ASSET_DISPLAY_TYPE_EXPANDING or ASSET_DISPLAY_TYPE_PEEL_DOWN.
+            "width": 42, # Width of this size.
+            "kind": "dfareporting#size", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#size".
+            "iab": True or False, # IAB standard size. This is a read-only, auto-generated field.
+            "id": "A String", # ID of this size. This is a read-only, auto-generated field.
+            "height": 42, # Height of this size.
+          },
+          "flashVersion": 42, # Flash version of the asset. This is a read-only field. Applicable to the following creative types: FLASH_INPAGE, all RICH_MEDIA, and all VPAID. Applicable to DISPLAY when the primary asset type is not HTML_IMAGE.
+          "pushdown": True or False, # Whether the asset pushes down other content. Applicable to the following creative types: all RICH_MEDIA. Additionally, only applicable when the asset offsets are 0, the collapsedSize.width matches size.width, and the collapsedSize.height is less than size.height.
+          "hideFlashObjects": True or False, # Whether to hide Flash objects flag for an asset. Applicable to the following creative types: all RICH_MEDIA.
+          "detectedFeatures": [ # List of feature dependencies for the creative asset that are detected by DCM. Feature dependencies are features that a browser must be able to support in order to render your HTML5 creative correctly. This is a read-only, auto-generated field. Applicable to the following creative types: HTML5_BANNER. Applicable to DISPLAY when the primary asset type is not HTML_IMAGE.
+            "A String",
+          ],
+          "originalBackup": True or False, # Whether the backup asset is original or changed by the user in DCM. Applicable to the following creative types: all RICH_MEDIA.
+          "duration": 42, # Duration in seconds for which an asset will be displayed. Applicable to the following creative types: INSTREAM_VIDEO and VPAID_LINEAR_VIDEO.
+          "positionTopUnit": "A String", # Offset top unit for an asset. This is a read-only field if the asset displayType is ASSET_DISPLAY_TYPE_OVERLAY. Applicable to the following creative types: all RICH_MEDIA.
+          "id": "A String", # Numeric ID of this creative asset. This is a required field and should not be modified. Applicable to all but the following creative types: all REDIRECT and TRACKING_TEXT.
+          "alignment": "A String", # Possible alignments for an asset. This is a read-only field. Applicable to the following creative types: RICH_MEDIA_DISPLAY_MULTI_FLOATING_INTERSTITIAL.
+          "size": { # Represents the dimensions of ads, placements, creatives, or creative assets. # Size associated with this creative asset. This is a required field when applicable; however for IMAGE and FLASH_INPAGE, creatives if left blank, this field will be automatically set using the actual size of the associated image asset. Applicable to the following creative types: DISPLAY_IMAGE_GALLERY, FLASH_INPAGE, HTML5_BANNER, IMAGE, and all RICH_MEDIA. Applicable to DISPLAY when the primary asset type is not HTML_IMAGE.
+            "width": 42, # Width of this size.
+            "kind": "dfareporting#size", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#size".
+            "iab": True or False, # IAB standard size. This is a read-only, auto-generated field.
+            "id": "A String", # ID of this size. This is a read-only, auto-generated field.
+            "height": 42, # Height of this size.
+          },
+          "horizontallyLocked": True or False, # Whether the asset is horizontally locked. This is a read-only field. Applicable to the following creative types: all RICH_MEDIA.
+          "startTimeType": "A String", # Initial wait time type before making the asset visible. Applicable to the following creative types: all RICH_MEDIA.
+          "displayType": "A String", # Type of rich media asset. This is a read-only field. Applicable to the following creative types: all RICH_MEDIA.
+          "expandedDimension": { # Represents the dimensions of ads, placements, creatives, or creative assets. # Detected expanded dimension for video asset. This is a read-only field. Applicable to the following creative types: INSTREAM_VIDEO and all VPAID.
+            "width": 42, # Width of this size.
+            "kind": "dfareporting#size", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#size".
+            "iab": True or False, # IAB standard size. This is a read-only, auto-generated field.
+            "id": "A String", # ID of this size. This is a read-only, auto-generated field.
+            "height": 42, # Height of this size.
+          },
+          "verticallyLocked": True or False, # Whether the asset is vertically locked. This is a read-only field. Applicable to the following creative types: all RICH_MEDIA.
+          "idDimensionValue": { # Represents a DimensionValue resource. # Dimension value for the ID of the asset. This is a read-only, auto-generated field.
+            "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+            "value": "A String", # The value of the dimension.
+            "dimensionName": "A String", # The name of the dimension.
+            "etag": "A String", # The eTag of this response for caching purposes.
+            "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+            "id": "A String", # The ID associated with the value if available.
+          },
+          "role": "A String", # Role of the asset in relation to creative. Applicable to all but the following creative types: all REDIRECT and TRACKING_TEXT. This is a required field.
+              # PRIMARY applies to DISPLAY, FLASH_INPAGE, HTML5_BANNER, IMAGE, DISPLAY_IMAGE_GALLERY, all RICH_MEDIA (which may contain multiple primary assets), and all VPAID creatives.
+              # BACKUP_IMAGE applies to FLASH_INPAGE, HTML5_BANNER, all RICH_MEDIA, and all VPAID creatives. Applicable to DISPLAY when the primary asset type is not HTML_IMAGE.
+              # ADDITIONAL_IMAGE and ADDITIONAL_FLASH apply to FLASH_INPAGE creatives.
+              # OTHER refers to assets from sources other than DCM, such as Studio uploaded assets, applicable to all RICH_MEDIA and all VPAID creatives.
+              # PARENT_VIDEO refers to videos uploaded by the user in DCM and is applicable to INSTREAM_VIDEO and VPAID_LINEAR_VIDEO creatives.
+              # TRANSCODED_VIDEO refers to videos transcoded by DCM from PARENT_VIDEO assets and is applicable to INSTREAM_VIDEO and VPAID_LINEAR_VIDEO creatives.
+              # ALTERNATE_VIDEO refers to the DCM representation of child asset videos from Studio, and is applicable to VPAID_LINEAR_VIDEO creatives. These cannot be added or removed within DCM.
+              # For VPAID_LINEAR_VIDEO creatives, PARENT_VIDEO, TRANSCODED_VIDEO and ALTERNATE_VIDEO assets that are marked active serve as backup in case the VPAID creative cannot be served. Only PARENT_VIDEO assets can be added or removed for an INSTREAM_VIDEO or VPAID_LINEAR_VIDEO creative.
+          "zipFilesize": "A String", # Size of zip file. This is a read-only field. Applicable to the following creative types: HTML5_BANNER.
+          "bitRate": 42, # Detected bit-rate for video asset. This is a read-only field. Applicable to the following creative types: INSTREAM_VIDEO and all VPAID.
+          "windowMode": "A String", # Window mode options for flash assets. Applicable to the following creative types: FLASH_INPAGE, RICH_MEDIA_DISPLAY_EXPANDING, RICH_MEDIA_IM_EXPAND, RICH_MEDIA_DISPLAY_BANNER, and RICH_MEDIA_INPAGE_FLOATING.
+          "progressiveServingUrl": "A String", # Progressive URL for video asset. This is a read-only field. Applicable to the following creative types: INSTREAM_VIDEO and all VPAID.
+          "durationType": "A String", # Duration type for which an asset will be displayed. Applicable to the following creative types: all RICH_MEDIA.
+          "videoDuration": 3.14, # Detected video duration for video asset. This is a read-only field. Applicable to the following creative types: INSTREAM_VIDEO and all VPAID.
+          "fileSize": "A String", # File size associated with this creative asset. This is a read-only field. Applicable to all but the following creative types: all REDIRECT and TRACKING_TEXT.
+          "zipFilename": "A String", # File name of zip file. This is a read-only field. Applicable to the following creative types: HTML5_BANNER.
+          "offset": { # Offset Position. # Offset position for an asset in collapsed mode. This is a read-only field. Applicable to the following creative types: all RICH_MEDIA and all VPAID. Additionally, only applicable to assets whose displayType is ASSET_DISPLAY_TYPE_EXPANDING or ASSET_DISPLAY_TYPE_PEEL_DOWN.
+            "top": 42, # Offset distance from top side of an asset or a window.
+            "left": 42, # Offset distance from left side of an asset or a window.
+          },
+          "active": True or False, # Whether the video asset is active. This is a read-only field for VPAID_NON_LINEAR_VIDEO assets. Applicable to the following creative types: INSTREAM_VIDEO and all VPAID.
+          "companionCreativeIds": [ # List of companion creatives assigned to an in-stream video creative asset. Acceptable values include IDs of existing flash and image creatives. Applicable to INSTREAM_VIDEO creative type with dynamicAssetSelection set to true.
+            "A String",
+          ],
+          "hideSelectionBoxes": True or False, # Whether to hide selection boxes flag for an asset. Applicable to the following creative types: all RICH_MEDIA.
+          "streamingServingUrl": "A String", # Streaming URL for video asset. This is a read-only field. Applicable to the following creative types: INSTREAM_VIDEO and all VPAID.
+          "zIndex": 42, # zIndex value of an asset. This is a read-only field. Applicable to the following creative types: all RICH_MEDIA.Additionally, only applicable to assets whose displayType is NOT one of the following types: ASSET_DISPLAY_TYPE_INPAGE or ASSET_DISPLAY_TYPE_OVERLAY.
+          "childAssetType": "A String", # Rich media child asset type. This is a read-only field. Applicable to the following creative types: all VPAID.
+          "backupImageExit": { # Creative Custom Event. # Exit event configured for the backup image. Applicable to the following creative types: all RICH_MEDIA.
+            "targetType": "A String", # Target type used by the event.
+            "artworkType": "A String", # Artwork type used by the creative.This is a read-only field.
+            "videoReportingId": "A String", # Video reporting ID, used to differentiate multiple videos in a single creative. This is a read-only field.
+            "popupWindowProperties": { # Popup Window Properties. # Properties for rich media popup windows. This field is used only for exit events.
+              "showStatusBar": True or False, # Whether to display the browser status bar.
+              "showScrollBar": True or False, # Whether to display the browser scroll bar.
+              "showAddressBar": True or False, # Whether to display the browser address bar.
+              "showMenuBar": True or False, # Whether to display the browser menu bar.
+              "title": "A String", # Title of popup window.
+              "showToolBar": True or False, # Whether to display the browser tool bar.
+              "positionType": "A String", # Popup window position either centered or at specific coordinate.
+              "offset": { # Offset Position. # Upper-left corner coordinates of the popup window. Applicable if positionType is COORDINATES.
+                "top": 42, # Offset distance from top side of an asset or a window.
+                "left": 42, # Offset distance from left side of an asset or a window.
+              },
+              "dimension": { # Represents the dimensions of ads, placements, creatives, or creative assets. # Popup dimension for a creative. This is a read-only field. Applicable to the following creative types: all RICH_MEDIA and all VPAID
+                "width": 42, # Width of this size.
+                "kind": "dfareporting#size", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#size".
+                "iab": True or False, # IAB standard size. This is a read-only, auto-generated field.
+                "id": "A String", # ID of this size. This is a read-only, auto-generated field.
+                "height": 42, # Height of this size.
+              },
+            },
+            "advertiserCustomEventId": "A String", # Unique ID of this event used by DDM Reporting and Data Transfer. This is a read-only field.
+            "artworkLabel": "A String", # Artwork label column, used to link events in DCM back to events in Studio. This is a required field and should not be modified after insertion.
+            "advertiserCustomEventType": "A String", # Type of the event. This is a read-only field.
+            "exitUrl": "A String", # Exit URL of the event. This field is used only for exit events.
+            "id": "A String", # ID of this event. This is a required field and should not be modified after insertion.
+            "advertiserCustomEventName": "A String", # User-entered name for the event.
+          },
+          "actionScript3": True or False, # Whether ActionScript3 is enabled for the flash asset. This is a read-only field. Applicable to the following creative type: FLASH_INPAGE. Applicable to DISPLAY when the primary asset type is not HTML_IMAGE.
+          "pushdownDuration": 3.14, # Pushdown duration in seconds for an asset. Must be between 0 and 9.99. Applicable to the following creative types: all RICH_MEDIA.Additionally, only applicable when the asset pushdown field is true, the offsets are 0, the collapsedSize.width matches size.width, and the collapsedSize.height is less than size.height.
+          "assetIdentifier": { # Creative Asset ID. # Identifier of this asset. This is the same identifier returned during creative asset insert operation. This is a required field. Applicable to all but the following creative types: all REDIRECT and TRACKING_TEXT.
+            "type": "A String", # Type of asset to upload. This is a required field. FLASH and IMAGE are no longer supported for new uploads. All image assets should use HTML_IMAGE.
+            "name": "A String", # Name of the creative asset. This is a required field while inserting an asset. After insertion, this assetIdentifier is used to identify the uploaded asset. Characters in the name must be alphanumeric or one of the following: ".-_ ". Spaces are allowed.
+          },
+          "transparency": True or False, # Whether the asset is transparent. Applicable to the following creative types: all RICH_MEDIA. Additionally, only applicable to HTML5 assets.
+          "sslCompliant": True or False, # Whether the asset is SSL-compliant. This is a read-only field. Applicable to all but the following creative types: all REDIRECT and TRACKING_TEXT.
+          "position": { # Offset Position. # Offset position for an asset. Applicable to the following creative types: all RICH_MEDIA.
+            "top": 42, # Offset distance from top side of an asset or a window.
+            "left": 42, # Offset distance from left side of an asset or a window.
+          },
+          "customStartTimeValue": 42, # Custom start time in seconds for making the asset visible. Applicable to the following creative types: all RICH_MEDIA.
+        },
+      ],
+      "redirectUrl": "A String", # URL of hosted image or hosted video or another ad tag. For INSTREAM_VIDEO_REDIRECT creatives this is the in-stream video redirect URL. The standard for a VAST (Video Ad Serving Template) ad response allows for a redirect link to another VAST 2.0 or 3.0 call. This is a required field when applicable. Applicable to the following creative types: DISPLAY_REDIRECT, INTERNAL_REDIRECT, INTERSTITIAL_INTERNAL_REDIRECT, and INSTREAM_VIDEO_REDIRECT
+      "videoDuration": 3.14, # Creative video duration in seconds. This is a read-only field. Applicable to the following creative types: INSTREAM_VIDEO, all RICH_MEDIA, and all VPAID.
+      "htmlCodeLocked": True or False, # Whether HTML code is DCM-generated or manually entered. Set to true to ignore changes to htmlCode. Applicable to the following creative types: FLASH_INPAGE and HTML5_BANNER.
+      "convertFlashToHtml5": True or False, # Whether Flash assets associated with the creative need to be automatically converted to HTML5. This flag is enabled by default and users can choose to disable it if they don't want the system to generate and use HTML5 asset for this creative. Applicable to the following creative type: FLASH_INPAGE. Applicable to DISPLAY when the primary asset type is not HTML_IMAGE.
+      "clickTags": [ # Click tags of the creative. For DISPLAY, FLASH_INPAGE, and HTML5_BANNER creatives, this is a subset of detected click tags for the assets associated with this creative. After creating a flash asset, detected click tags will be returned in the creativeAssetMetadata. When inserting the creative, populate the creative clickTags field using the creativeAssetMetadata.clickTags field. For DISPLAY_IMAGE_GALLERY creatives, there should be exactly one entry in this list for each image creative asset. A click tag is matched with a corresponding creative asset by matching the clickTag.name field with the creativeAsset.assetIdentifier.name field. Applicable to the following creative types: DISPLAY_IMAGE_GALLERY, FLASH_INPAGE, HTML5_BANNER. Applicable to DISPLAY when the primary asset type is not HTML_IMAGE.
+        { # Creative Click Tag.
+          "eventName": "A String", # Advertiser event name associated with the click tag. This field is used by DISPLAY_IMAGE_GALLERY and HTML5_BANNER creatives. Applicable to DISPLAY when the primary asset type is not HTML_IMAGE.
+          "name": "A String", # Parameter name for the specified click tag. For DISPLAY_IMAGE_GALLERY creative assets, this field must match the value of the creative asset's creativeAssetId.name field.
+          "value": "A String", # Parameter value for the specified click tag. This field contains a click-through url.
+        },
+      ],
+      "commercialId": "A String", # Industry standard ID assigned to creative for reach and frequency. Applicable to the following creative types: all INSTREAM_VIDEO and all VPAID.
+      "active": True or False, # Whether the creative is active. Applicable to all creative types.
+      "compatibility": [ # Compatibilities associated with this creative. This is a read-only field. DISPLAY and DISPLAY_INTERSTITIAL refer to rendering either on desktop or on mobile devices or in mobile apps for regular or interstitial ads, respectively. APP and APP_INTERSTITIAL are for rendering in mobile apps. Only pre-existing creatives may have these compatibilities since new creatives will either be assigned DISPLAY or DISPLAY_INTERSTITIAL instead. IN_STREAM_VIDEO refers to rendering in in-stream video ads developed with the VAST standard. Applicable to all creative types.
+          #
+          # Acceptable values are:
+          # - "APP"
+          # - "APP_INTERSTITIAL"
+          # - "IN_STREAM_VIDEO"
+          # - "DISPLAY"
+          # - "DISPLAY_INTERSTITIAL"
+        "A String",
+      ],
+      "adParameters": "A String", # Ad parameters user for VPAID creative. This is a read-only field. Applicable to the following creative types: all VPAID.
+      "adTagKeys": [ # Keywords for a Rich Media creative. Keywords let you customize the creative settings of a Rich Media ad running on your site without having to contact the advertiser. You can use keywords to dynamically change the look or functionality of a creative. Applicable to the following creative types: all RICH_MEDIA, and all VPAID.
+        "A String",
+      ],
+      "kind": "dfareporting#creative", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#creative".
+      "subaccountId": "A String", # Subaccount ID of this creative. This field, if left unset, will be auto-generated for both insert and update operations. Applicable to all creative types.
+      "name": "A String", # Name of the creative. This is a required field and must be less than 256 characters long. Applicable to all creative types.
+      "sslOverride": True or False, # Whether creative should be treated as SSL compliant even if the system scan shows it's not. Applicable to all creative types.
+      "lastModifiedInfo": { # Modification timestamp. # Creative last modification information. This is a read-only field. Applicable to all creative types.
+        "time": "A String", # Timestamp of the last change in milliseconds since epoch.
+      },
+      "backupImageClickThroughUrl": "A String", # Click-through URL for backup image. Applicable to the following creative types: FLASH_INPAGE and HTML5_BANNER. Applicable to DISPLAY when the primary asset type is not HTML_IMAGE.
+      "sslCompliant": True or False, # Whether the creative is SSL-compliant. This is a read-only field. Applicable to all creative types.
+      "studioCreativeId": "A String", # Studio creative ID associated with rich media and VPAID creatives. This is a read-only field. Applicable to the following creative types: all RICH_MEDIA, and all VPAID.
+      "authoringTool": "A String", # Authoring tool for HTML5 banner creatives. This is a read-only field. Applicable to the following creative types: HTML5_BANNER.
+      "allowScriptAccess": True or False, # Whether script access is allowed for this creative. This is a read-only and deprecated field which will automatically be set to true on update. Applicable to the following creative types: FLASH_INPAGE.
+      "companionCreatives": [ # List of companion creatives assigned to an in-Stream videocreative. Acceptable values include IDs of existing flash and image creatives. Applicable to the following creative types: all VPAID and all INSTREAM_VIDEO with dynamicAssetSelection set to false.
+        "A String",
+      ],
+      "creativeAssetSelection": { # Encapsulates the list of rules for asset selection and a default asset in case none of the rules match. Applicable to INSTREAM_VIDEO creatives. # Required if dynamicAssetSelection is true.
+        "rules": [ # Rules determine which asset will be served to a viewer. Rules will be evaluated in the order in which they are stored in this list. This list must contain at least one rule. Applicable to INSTREAM_VIDEO creatives.
+          { # A rule associates an asset with a targeting template for asset-level targeting. Applicable to INSTREAM_VIDEO creatives.
+            "assetId": "A String", # A creativeAssets[].id. This should refer to one of the parent assets in this creative. This is a required field.
+            "targetingTemplateId": "A String", # A targeting template ID. The targeting from the targeting template will be used to determine whether this asset should be served. This is a required field.
+            "name": "A String", # A user-friendly name for this rule. This is a required field.
+          },
+        ],
+        "defaultAssetId": "A String", # A creativeAssets[].id. This should refer to one of the parent assets in this creative, and will be served if none of the rules match. This is a required field.
+      },
+      "auto_advance_images": True or False, # Whether images are automatically advanced for image gallery creatives. Applicable to the following creative types: DISPLAY_IMAGE_GALLERY.
+      "backupImageFeatures": [ # List of feature dependencies that will cause a backup image to be served if the browser that serves the ad does not support them. Feature dependencies are features that a browser must be able to support in order to render your HTML5 creative asset correctly. This field is initially auto-generated to contain all features detected by DCM for all the assets of this creative and can then be modified by the client. To reset this field, copy over all the creativeAssets' detected features. Applicable to the following creative types: HTML5_BANNER. Applicable to DISPLAY when the primary asset type is not HTML_IMAGE.
+        "A String",
+      ],
+      "backupImageTargetWindow": { # Target Window. # Target window for backup image. Applicable to the following creative types: FLASH_INPAGE and HTML5_BANNER. Applicable to DISPLAY when the primary asset type is not HTML_IMAGE.
+        "customHtml": "A String", # User-entered value.
+        "targetWindowOption": "A String", # Type of browser window for which the backup image of the flash creative can be displayed.
+      },
+      "skippable": True or False, # Whether the user can choose to skip the creative. Applicable to the following creative types: all INSTREAM_VIDEO and all VPAID.
+    }</pre>
+</div>
+
+<div class="method">
+    <code class="details" id="update">update(profileId, body)</code>
+  <pre>Updates an existing creative.
+
+Args:
+  profileId: string, User profile ID associated with this request. (required)
+  body: object, The request body. (required)
+    The object takes the form of:
+
+{ # Contains properties of a Creative.
+    "thirdPartyUrls": [ # Third-party URLs for tracking in-stream video creative events. Applicable to the following creative types: all INSTREAM_VIDEO and all VPAID.
+      { # Third-party Tracking URL.
+        "url": "A String", # URL for the specified third-party URL type.
+        "thirdPartyUrlType": "A String", # Third-party URL type for in-stream video creatives.
+      },
+    ],
+    "artworkType": "A String", # Type of artwork used for the creative. This is a read-only field. Applicable to the following creative types: all RICH_MEDIA, and all VPAID.
+    "latestTraffickedCreativeId": "A String", # Latest Studio trafficked creative ID associated with rich media and VPAID creatives. This is a read-only field. Applicable to the following creative types: all RICH_MEDIA, and all VPAID.
+    "videoDescription": "A String", # Description of the video ad. Applicable to the following creative types: all INSTREAM_VIDEO and all VPAID.
+    "advertiserId": "A String", # Advertiser ID of this creative. This is a required field. Applicable to all creative types.
+    "requiredFlashPluginVersion": "A String", # The minimum required Flash plugin version for this creative. For example, 11.2.202.235. This is a read-only field. Applicable to the following creative types: all RICH_MEDIA, and all VPAID.
+    "thirdPartyBackupImageImpressionsUrl": "A String", # Third-party URL used to record backup image impressions. Applicable to the following creative types: all RICH_MEDIA.
+    "timerCustomEvents": [ # List of timer events configured for the creative. For DISPLAY_IMAGE_GALLERY creatives, these are read-only and auto-generated from clickTags. Applicable to the following creative types: DISPLAY_IMAGE_GALLERY, all RICH_MEDIA, and all VPAID. Applicable to DISPLAY when the primary asset is not HTML_IMAGE.
+      { # Creative Custom Event.
+        "targetType": "A String", # Target type used by the event.
+        "artworkType": "A String", # Artwork type used by the creative.This is a read-only field.
+        "videoReportingId": "A String", # Video reporting ID, used to differentiate multiple videos in a single creative. This is a read-only field.
+        "popupWindowProperties": { # Popup Window Properties. # Properties for rich media popup windows. This field is used only for exit events.
+          "showStatusBar": True or False, # Whether to display the browser status bar.
+          "showScrollBar": True or False, # Whether to display the browser scroll bar.
+          "showAddressBar": True or False, # Whether to display the browser address bar.
+          "showMenuBar": True or False, # Whether to display the browser menu bar.
+          "title": "A String", # Title of popup window.
+          "showToolBar": True or False, # Whether to display the browser tool bar.
+          "positionType": "A String", # Popup window position either centered or at specific coordinate.
+          "offset": { # Offset Position. # Upper-left corner coordinates of the popup window. Applicable if positionType is COORDINATES.
+            "top": 42, # Offset distance from top side of an asset or a window.
+            "left": 42, # Offset distance from left side of an asset or a window.
+          },
+          "dimension": { # Represents the dimensions of ads, placements, creatives, or creative assets. # Popup dimension for a creative. This is a read-only field. Applicable to the following creative types: all RICH_MEDIA and all VPAID
+            "width": 42, # Width of this size.
+            "kind": "dfareporting#size", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#size".
+            "iab": True or False, # IAB standard size. This is a read-only, auto-generated field.
+            "id": "A String", # ID of this size. This is a read-only, auto-generated field.
+            "height": 42, # Height of this size.
+          },
+        },
+        "advertiserCustomEventId": "A String", # Unique ID of this event used by DDM Reporting and Data Transfer. This is a read-only field.
+        "artworkLabel": "A String", # Artwork label column, used to link events in DCM back to events in Studio. This is a required field and should not be modified after insertion.
+        "advertiserCustomEventType": "A String", # Type of the event. This is a read-only field.
+        "exitUrl": "A String", # Exit URL of the event. This field is used only for exit events.
+        "id": "A String", # ID of this event. This is a required field and should not be modified after insertion.
+        "advertiserCustomEventName": "A String", # User-entered name for the event.
+      },
+    ],
+    "renderingIdDimensionValue": { # Represents a DimensionValue resource. # Dimension value for the rendering ID of this creative. This is a read-only field. Applicable to all creative types.
+      "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+      "value": "A String", # The value of the dimension.
+      "dimensionName": "A String", # The name of the dimension.
+      "etag": "A String", # The eTag of this response for caching purposes.
+      "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+      "id": "A String", # The ID associated with the value if available.
+    },
+    "fsCommand": { # FsCommand. # OpenWindow FSCommand of this creative. This lets the SWF file communicate with either Flash Player or the program hosting Flash Player, such as a web browser. This is only triggered if allowScriptAccess field is true. Applicable to the following creative types: FLASH_INPAGE.
+      "windowHeight": 42, # Height of the window.
+      "top": 42, # Distance from the top of the browser. Applicable when positionOption is DISTANCE_FROM_TOP_LEFT_CORNER.
+      "windowWidth": 42, # Width of the window.
+      "positionOption": "A String", # Position in the browser where the window will open.
+      "left": 42, # Distance from the left of the browser.Applicable when positionOption is DISTANCE_FROM_TOP_LEFT_CORNER.
+    },
+    "dynamicAssetSelection": True or False, # Set this to true to enable the use of rules to target individual assets in this creative. When set to true creativeAssetSelection must be set. This also controls asset-level companions. When this is true, companion creatives should be assigned to creative assets. Learn more. Applicable to INSTREAM_VIDEO creatives.
+    "id": "A String", # ID of this creative. This is a read-only, auto-generated field. Applicable to all creative types.
+    "progressOffset": { # Video Offset # Amount of time to play the video before counting a view. Applicable to the following creative types: all INSTREAM_VIDEO.
+      "offsetPercentage": 42, # Duration, as a percentage of video duration. Do not set when offsetSeconds is set.
+      "offsetSeconds": 42, # Duration, in seconds. Do not set when offsetPercentage is set.
+    },
+    "accountId": "A String", # Account ID of this creative. This field, if left unset, will be auto-generated for both insert and update operations. Applicable to all creative types.
+    "studioTraffickedCreativeId": "A String", # Studio trafficked creative ID associated with rich media and VPAID creatives. This is a read-only field. Applicable to the following creative types: all RICH_MEDIA, and all VPAID.
+    "archived": True or False, # Whether the creative is archived. Applicable to all creative types.
+    "overrideCss": "A String", # Override CSS value for rich media creatives. Applicable to the following creative types: all RICH_MEDIA.
+    "authoringSource": "A String", # Source application where creative was authored. Presently, only DBM authored creatives will have this field set. Applicable to all creative types.
+    "requiredFlashVersion": 42, # The internal Flash version for this creative as calculated by DoubleClick Studio. This is a read-only field. Applicable to the following creative types: FLASH_INPAGE all RICH_MEDIA, and all VPAID. Applicable to DISPLAY when the primary asset type is not HTML_IMAGE.
+    "exitCustomEvents": [ # List of exit events configured for the creative. For DISPLAY and DISPLAY_IMAGE_GALLERY creatives, these are read-only and auto-generated from clickTags, For DISPLAY, an event is also created from the backupImageReportingLabel. Applicable to the following creative types: DISPLAY_IMAGE_GALLERY, all RICH_MEDIA, and all VPAID. Applicable to DISPLAY when the primary asset type is not HTML_IMAGE.
+      { # Creative Custom Event.
+        "targetType": "A String", # Target type used by the event.
+        "artworkType": "A String", # Artwork type used by the creative.This is a read-only field.
+        "videoReportingId": "A String", # Video reporting ID, used to differentiate multiple videos in a single creative. This is a read-only field.
+        "popupWindowProperties": { # Popup Window Properties. # Properties for rich media popup windows. This field is used only for exit events.
+          "showStatusBar": True or False, # Whether to display the browser status bar.
+          "showScrollBar": True or False, # Whether to display the browser scroll bar.
+          "showAddressBar": True or False, # Whether to display the browser address bar.
+          "showMenuBar": True or False, # Whether to display the browser menu bar.
+          "title": "A String", # Title of popup window.
+          "showToolBar": True or False, # Whether to display the browser tool bar.
+          "positionType": "A String", # Popup window position either centered or at specific coordinate.
+          "offset": { # Offset Position. # Upper-left corner coordinates of the popup window. Applicable if positionType is COORDINATES.
+            "top": 42, # Offset distance from top side of an asset or a window.
+            "left": 42, # Offset distance from left side of an asset or a window.
+          },
+          "dimension": { # Represents the dimensions of ads, placements, creatives, or creative assets. # Popup dimension for a creative. This is a read-only field. Applicable to the following creative types: all RICH_MEDIA and all VPAID
+            "width": 42, # Width of this size.
+            "kind": "dfareporting#size", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#size".
+            "iab": True or False, # IAB standard size. This is a read-only, auto-generated field.
+            "id": "A String", # ID of this size. This is a read-only, auto-generated field.
+            "height": 42, # Height of this size.
+          },
+        },
+        "advertiserCustomEventId": "A String", # Unique ID of this event used by DDM Reporting and Data Transfer. This is a read-only field.
+        "artworkLabel": "A String", # Artwork label column, used to link events in DCM back to events in Studio. This is a required field and should not be modified after insertion.
+        "advertiserCustomEventType": "A String", # Type of the event. This is a read-only field.
+        "exitUrl": "A String", # Exit URL of the event. This field is used only for exit events.
+        "id": "A String", # ID of this event. This is a required field and should not be modified after insertion.
+        "advertiserCustomEventName": "A String", # User-entered name for the event.
+      },
+    ],
+    "renderingId": "A String", # ID of current rendering version. This is a read-only field. Applicable to all creative types.
+    "counterCustomEvents": [ # List of counter events configured for the creative. For DISPLAY_IMAGE_GALLERY creatives, these are read-only and auto-generated from clickTags. Applicable to the following creative types: DISPLAY_IMAGE_GALLERY, all RICH_MEDIA, and all VPAID.
+      { # Creative Custom Event.
+        "targetType": "A String", # Target type used by the event.
+        "artworkType": "A String", # Artwork type used by the creative.This is a read-only field.
+        "videoReportingId": "A String", # Video reporting ID, used to differentiate multiple videos in a single creative. This is a read-only field.
+        "popupWindowProperties": { # Popup Window Properties. # Properties for rich media popup windows. This field is used only for exit events.
+          "showStatusBar": True or False, # Whether to display the browser status bar.
+          "showScrollBar": True or False, # Whether to display the browser scroll bar.
+          "showAddressBar": True or False, # Whether to display the browser address bar.
+          "showMenuBar": True or False, # Whether to display the browser menu bar.
+          "title": "A String", # Title of popup window.
+          "showToolBar": True or False, # Whether to display the browser tool bar.
+          "positionType": "A String", # Popup window position either centered or at specific coordinate.
+          "offset": { # Offset Position. # Upper-left corner coordinates of the popup window. Applicable if positionType is COORDINATES.
+            "top": 42, # Offset distance from top side of an asset or a window.
+            "left": 42, # Offset distance from left side of an asset or a window.
+          },
+          "dimension": { # Represents the dimensions of ads, placements, creatives, or creative assets. # Popup dimension for a creative. This is a read-only field. Applicable to the following creative types: all RICH_MEDIA and all VPAID
+            "width": 42, # Width of this size.
+            "kind": "dfareporting#size", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#size".
+            "iab": True or False, # IAB standard size. This is a read-only, auto-generated field.
+            "id": "A String", # ID of this size. This is a read-only, auto-generated field.
+            "height": 42, # Height of this size.
+          },
+        },
+        "advertiserCustomEventId": "A String", # Unique ID of this event used by DDM Reporting and Data Transfer. This is a read-only field.
+        "artworkLabel": "A String", # Artwork label column, used to link events in DCM back to events in Studio. This is a required field and should not be modified after insertion.
+        "advertiserCustomEventType": "A String", # Type of the event. This is a read-only field.
+        "exitUrl": "A String", # Exit URL of the event. This field is used only for exit events.
+        "id": "A String", # ID of this event. This is a required field and should not be modified after insertion.
+        "advertiserCustomEventName": "A String", # User-entered name for the event.
+      },
+    ],
+    "skipOffset": { # Video Offset # Amount of time to play the video before the skip button appears. Applicable to the following creative types: all INSTREAM_VIDEO.
+      "offsetPercentage": 42, # Duration, as a percentage of video duration. Do not set when offsetSeconds is set.
+      "offsetSeconds": 42, # Duration, in seconds. Do not set when offsetPercentage is set.
+    },
+    "backupImageReportingLabel": "A String", # Reporting label used for HTML5 banner backup image. Applicable to the following creative types: DISPLAY when the primary asset type is not HTML_IMAGE.
+    "version": 42, # The version number helps you keep track of multiple versions of your creative in your reports. The version number will always be auto-generated during insert operations to start at 1. For tracking creatives the version cannot be incremented and will always remain at 1. For all other creative types the version can be incremented only by 1 during update operations. In addition, the version will be automatically incremented by 1 when undergoing Rich Media creative merging. Applicable to all creative types.
+    "creativeFieldAssignments": [ # Creative field assignments for this creative. Applicable to all creative types.
+      { # Creative Field Assignment.
+        "creativeFieldId": "A String", # ID of the creative field.
+        "creativeFieldValueId": "A String", # ID of the creative field value.
+      },
+    ],
+    "backgroundColor": "A String", # The 6-character HTML color code, beginning with #, for the background of the window area where the Flash file is displayed. Default is white. Applicable to the following creative types: FLASH_INPAGE.
+    "customKeyValues": [ # Custom key-values for a Rich Media creative. Key-values let you customize the creative settings of a Rich Media ad running on your site without having to contact the advertiser. You can use key-values to dynamically change the look or functionality of a creative. Applicable to the following creative types: all RICH_MEDIA, and all VPAID.
+      "A String",
+    ],
+    "idDimensionValue": { # Represents a DimensionValue resource. # Dimension value for the ID of this creative. This is a read-only field. Applicable to all creative types.
+      "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+      "value": "A String", # The value of the dimension.
+      "dimensionName": "A String", # The name of the dimension.
+      "etag": "A String", # The eTag of this response for caching purposes.
+      "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+      "id": "A String", # The ID associated with the value if available.
+    },
+    "htmlCode": "A String", # HTML code for the creative. This is a required field when applicable. This field is ignored if htmlCodeLocked is false. Applicable to the following creative types: all CUSTOM, FLASH_INPAGE, and HTML5_BANNER, and all RICH_MEDIA.
+    "size": { # Represents the dimensions of ads, placements, creatives, or creative assets. # Size associated with this creative. When inserting or updating a creative either the size ID field or size width and height fields can be used. This is a required field when applicable; however for IMAGE, FLASH_INPAGE creatives, and for DISPLAY creatives with a primary asset of type HTML_IMAGE, if left blank, this field will be automatically set using the actual size of the associated image assets. Applicable to the following creative types: DISPLAY, DISPLAY_IMAGE_GALLERY, FLASH_INPAGE, HTML5_BANNER, IMAGE, and all RICH_MEDIA.
+      "width": 42, # Width of this size.
+      "kind": "dfareporting#size", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#size".
+      "iab": True or False, # IAB standard size. This is a read-only, auto-generated field.
+      "id": "A String", # ID of this size. This is a read-only, auto-generated field.
+      "height": 42, # Height of this size.
+    },
+    "type": "A String", # Type of this creative. This is a required field. Applicable to all creative types.
+        # 
+        # Note: FLASH_INPAGE, HTML5_BANNER, and IMAGE are only used for existing creatives. New creatives should use DISPLAY as a replacement for these types.
+    "totalFileSize": "A String", # Combined size of all creative assets. This is a read-only field. Applicable to the following creative types: all RICH_MEDIA, and all VPAID.
+    "thirdPartyRichMediaImpressionsUrl": "A String", # Third-party URL used to record rich media impressions. Applicable to the following creative types: all RICH_MEDIA.
+    "studioAdvertiserId": "A String", # Studio advertiser ID associated with rich media and VPAID creatives. This is a read-only field. Applicable to the following creative types: all RICH_MEDIA, and all VPAID.
+    "creativeAssets": [ # Assets associated with a creative. Applicable to all but the following creative types: INTERNAL_REDIRECT, INTERSTITIAL_INTERNAL_REDIRECT, and REDIRECT
+      { # Creative Asset.
+        "mimeType": "A String", # Detected MIME type for video asset. This is a read-only field. Applicable to the following creative types: INSTREAM_VIDEO and all VPAID.
+        "artworkType": "A String", # Artwork type of rich media creative. This is a read-only field. Applicable to the following creative types: all RICH_MEDIA.
+        "positionLeftUnit": "A String", # Offset left unit for an asset. This is a read-only field. Applicable to the following creative types: all RICH_MEDIA.
+        "collapsedSize": { # Represents the dimensions of ads, placements, creatives, or creative assets. # Size of an asset when collapsed. This is a read-only field. Applicable to the following creative types: all RICH_MEDIA and all VPAID. Additionally, applicable to assets whose displayType is ASSET_DISPLAY_TYPE_EXPANDING or ASSET_DISPLAY_TYPE_PEEL_DOWN.
+          "width": 42, # Width of this size.
+          "kind": "dfareporting#size", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#size".
+          "iab": True or False, # IAB standard size. This is a read-only, auto-generated field.
+          "id": "A String", # ID of this size. This is a read-only, auto-generated field.
+          "height": 42, # Height of this size.
+        },
+        "flashVersion": 42, # Flash version of the asset. This is a read-only field. Applicable to the following creative types: FLASH_INPAGE, all RICH_MEDIA, and all VPAID. Applicable to DISPLAY when the primary asset type is not HTML_IMAGE.
+        "pushdown": True or False, # Whether the asset pushes down other content. Applicable to the following creative types: all RICH_MEDIA. Additionally, only applicable when the asset offsets are 0, the collapsedSize.width matches size.width, and the collapsedSize.height is less than size.height.
+        "hideFlashObjects": True or False, # Whether to hide Flash objects flag for an asset. Applicable to the following creative types: all RICH_MEDIA.
+        "detectedFeatures": [ # List of feature dependencies for the creative asset that are detected by DCM. Feature dependencies are features that a browser must be able to support in order to render your HTML5 creative correctly. This is a read-only, auto-generated field. Applicable to the following creative types: HTML5_BANNER. Applicable to DISPLAY when the primary asset type is not HTML_IMAGE.
+          "A String",
+        ],
+        "originalBackup": True or False, # Whether the backup asset is original or changed by the user in DCM. Applicable to the following creative types: all RICH_MEDIA.
+        "duration": 42, # Duration in seconds for which an asset will be displayed. Applicable to the following creative types: INSTREAM_VIDEO and VPAID_LINEAR_VIDEO.
+        "positionTopUnit": "A String", # Offset top unit for an asset. This is a read-only field if the asset displayType is ASSET_DISPLAY_TYPE_OVERLAY. Applicable to the following creative types: all RICH_MEDIA.
+        "id": "A String", # Numeric ID of this creative asset. This is a required field and should not be modified. Applicable to all but the following creative types: all REDIRECT and TRACKING_TEXT.
+        "alignment": "A String", # Possible alignments for an asset. This is a read-only field. Applicable to the following creative types: RICH_MEDIA_DISPLAY_MULTI_FLOATING_INTERSTITIAL.
+        "size": { # Represents the dimensions of ads, placements, creatives, or creative assets. # Size associated with this creative asset. This is a required field when applicable; however for IMAGE and FLASH_INPAGE, creatives if left blank, this field will be automatically set using the actual size of the associated image asset. Applicable to the following creative types: DISPLAY_IMAGE_GALLERY, FLASH_INPAGE, HTML5_BANNER, IMAGE, and all RICH_MEDIA. Applicable to DISPLAY when the primary asset type is not HTML_IMAGE.
+          "width": 42, # Width of this size.
+          "kind": "dfareporting#size", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#size".
+          "iab": True or False, # IAB standard size. This is a read-only, auto-generated field.
+          "id": "A String", # ID of this size. This is a read-only, auto-generated field.
+          "height": 42, # Height of this size.
+        },
+        "horizontallyLocked": True or False, # Whether the asset is horizontally locked. This is a read-only field. Applicable to the following creative types: all RICH_MEDIA.
+        "startTimeType": "A String", # Initial wait time type before making the asset visible. Applicable to the following creative types: all RICH_MEDIA.
+        "displayType": "A String", # Type of rich media asset. This is a read-only field. Applicable to the following creative types: all RICH_MEDIA.
+        "expandedDimension": { # Represents the dimensions of ads, placements, creatives, or creative assets. # Detected expanded dimension for video asset. This is a read-only field. Applicable to the following creative types: INSTREAM_VIDEO and all VPAID.
+          "width": 42, # Width of this size.
+          "kind": "dfareporting#size", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#size".
+          "iab": True or False, # IAB standard size. This is a read-only, auto-generated field.
+          "id": "A String", # ID of this size. This is a read-only, auto-generated field.
+          "height": 42, # Height of this size.
+        },
+        "verticallyLocked": True or False, # Whether the asset is vertically locked. This is a read-only field. Applicable to the following creative types: all RICH_MEDIA.
+        "idDimensionValue": { # Represents a DimensionValue resource. # Dimension value for the ID of the asset. This is a read-only, auto-generated field.
+          "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+          "value": "A String", # The value of the dimension.
+          "dimensionName": "A String", # The name of the dimension.
+          "etag": "A String", # The eTag of this response for caching purposes.
+          "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+          "id": "A String", # The ID associated with the value if available.
+        },
+        "role": "A String", # Role of the asset in relation to creative. Applicable to all but the following creative types: all REDIRECT and TRACKING_TEXT. This is a required field.
+            # PRIMARY applies to DISPLAY, FLASH_INPAGE, HTML5_BANNER, IMAGE, DISPLAY_IMAGE_GALLERY, all RICH_MEDIA (which may contain multiple primary assets), and all VPAID creatives.
+            # BACKUP_IMAGE applies to FLASH_INPAGE, HTML5_BANNER, all RICH_MEDIA, and all VPAID creatives. Applicable to DISPLAY when the primary asset type is not HTML_IMAGE.
+            # ADDITIONAL_IMAGE and ADDITIONAL_FLASH apply to FLASH_INPAGE creatives.
+            # OTHER refers to assets from sources other than DCM, such as Studio uploaded assets, applicable to all RICH_MEDIA and all VPAID creatives.
+            # PARENT_VIDEO refers to videos uploaded by the user in DCM and is applicable to INSTREAM_VIDEO and VPAID_LINEAR_VIDEO creatives.
+            # TRANSCODED_VIDEO refers to videos transcoded by DCM from PARENT_VIDEO assets and is applicable to INSTREAM_VIDEO and VPAID_LINEAR_VIDEO creatives.
+            # ALTERNATE_VIDEO refers to the DCM representation of child asset videos from Studio, and is applicable to VPAID_LINEAR_VIDEO creatives. These cannot be added or removed within DCM.
+            # For VPAID_LINEAR_VIDEO creatives, PARENT_VIDEO, TRANSCODED_VIDEO and ALTERNATE_VIDEO assets that are marked active serve as backup in case the VPAID creative cannot be served. Only PARENT_VIDEO assets can be added or removed for an INSTREAM_VIDEO or VPAID_LINEAR_VIDEO creative.
+        "zipFilesize": "A String", # Size of zip file. This is a read-only field. Applicable to the following creative types: HTML5_BANNER.
+        "bitRate": 42, # Detected bit-rate for video asset. This is a read-only field. Applicable to the following creative types: INSTREAM_VIDEO and all VPAID.
+        "windowMode": "A String", # Window mode options for flash assets. Applicable to the following creative types: FLASH_INPAGE, RICH_MEDIA_DISPLAY_EXPANDING, RICH_MEDIA_IM_EXPAND, RICH_MEDIA_DISPLAY_BANNER, and RICH_MEDIA_INPAGE_FLOATING.
+        "progressiveServingUrl": "A String", # Progressive URL for video asset. This is a read-only field. Applicable to the following creative types: INSTREAM_VIDEO and all VPAID.
+        "durationType": "A String", # Duration type for which an asset will be displayed. Applicable to the following creative types: all RICH_MEDIA.
+        "videoDuration": 3.14, # Detected video duration for video asset. This is a read-only field. Applicable to the following creative types: INSTREAM_VIDEO and all VPAID.
+        "fileSize": "A String", # File size associated with this creative asset. This is a read-only field. Applicable to all but the following creative types: all REDIRECT and TRACKING_TEXT.
+        "zipFilename": "A String", # File name of zip file. This is a read-only field. Applicable to the following creative types: HTML5_BANNER.
+        "offset": { # Offset Position. # Offset position for an asset in collapsed mode. This is a read-only field. Applicable to the following creative types: all RICH_MEDIA and all VPAID. Additionally, only applicable to assets whose displayType is ASSET_DISPLAY_TYPE_EXPANDING or ASSET_DISPLAY_TYPE_PEEL_DOWN.
+          "top": 42, # Offset distance from top side of an asset or a window.
+          "left": 42, # Offset distance from left side of an asset or a window.
+        },
+        "active": True or False, # Whether the video asset is active. This is a read-only field for VPAID_NON_LINEAR_VIDEO assets. Applicable to the following creative types: INSTREAM_VIDEO and all VPAID.
+        "companionCreativeIds": [ # List of companion creatives assigned to an in-stream video creative asset. Acceptable values include IDs of existing flash and image creatives. Applicable to INSTREAM_VIDEO creative type with dynamicAssetSelection set to true.
+          "A String",
+        ],
+        "hideSelectionBoxes": True or False, # Whether to hide selection boxes flag for an asset. Applicable to the following creative types: all RICH_MEDIA.
+        "streamingServingUrl": "A String", # Streaming URL for video asset. This is a read-only field. Applicable to the following creative types: INSTREAM_VIDEO and all VPAID.
+        "zIndex": 42, # zIndex value of an asset. This is a read-only field. Applicable to the following creative types: all RICH_MEDIA.Additionally, only applicable to assets whose displayType is NOT one of the following types: ASSET_DISPLAY_TYPE_INPAGE or ASSET_DISPLAY_TYPE_OVERLAY.
+        "childAssetType": "A String", # Rich media child asset type. This is a read-only field. Applicable to the following creative types: all VPAID.
+        "backupImageExit": { # Creative Custom Event. # Exit event configured for the backup image. Applicable to the following creative types: all RICH_MEDIA.
+          "targetType": "A String", # Target type used by the event.
+          "artworkType": "A String", # Artwork type used by the creative.This is a read-only field.
+          "videoReportingId": "A String", # Video reporting ID, used to differentiate multiple videos in a single creative. This is a read-only field.
+          "popupWindowProperties": { # Popup Window Properties. # Properties for rich media popup windows. This field is used only for exit events.
+            "showStatusBar": True or False, # Whether to display the browser status bar.
+            "showScrollBar": True or False, # Whether to display the browser scroll bar.
+            "showAddressBar": True or False, # Whether to display the browser address bar.
+            "showMenuBar": True or False, # Whether to display the browser menu bar.
+            "title": "A String", # Title of popup window.
+            "showToolBar": True or False, # Whether to display the browser tool bar.
+            "positionType": "A String", # Popup window position either centered or at specific coordinate.
+            "offset": { # Offset Position. # Upper-left corner coordinates of the popup window. Applicable if positionType is COORDINATES.
+              "top": 42, # Offset distance from top side of an asset or a window.
+              "left": 42, # Offset distance from left side of an asset or a window.
+            },
+            "dimension": { # Represents the dimensions of ads, placements, creatives, or creative assets. # Popup dimension for a creative. This is a read-only field. Applicable to the following creative types: all RICH_MEDIA and all VPAID
+              "width": 42, # Width of this size.
+              "kind": "dfareporting#size", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#size".
+              "iab": True or False, # IAB standard size. This is a read-only, auto-generated field.
+              "id": "A String", # ID of this size. This is a read-only, auto-generated field.
+              "height": 42, # Height of this size.
+            },
+          },
+          "advertiserCustomEventId": "A String", # Unique ID of this event used by DDM Reporting and Data Transfer. This is a read-only field.
+          "artworkLabel": "A String", # Artwork label column, used to link events in DCM back to events in Studio. This is a required field and should not be modified after insertion.
+          "advertiserCustomEventType": "A String", # Type of the event. This is a read-only field.
+          "exitUrl": "A String", # Exit URL of the event. This field is used only for exit events.
+          "id": "A String", # ID of this event. This is a required field and should not be modified after insertion.
+          "advertiserCustomEventName": "A String", # User-entered name for the event.
+        },
+        "actionScript3": True or False, # Whether ActionScript3 is enabled for the flash asset. This is a read-only field. Applicable to the following creative type: FLASH_INPAGE. Applicable to DISPLAY when the primary asset type is not HTML_IMAGE.
+        "pushdownDuration": 3.14, # Pushdown duration in seconds for an asset. Must be between 0 and 9.99. Applicable to the following creative types: all RICH_MEDIA.Additionally, only applicable when the asset pushdown field is true, the offsets are 0, the collapsedSize.width matches size.width, and the collapsedSize.height is less than size.height.
+        "assetIdentifier": { # Creative Asset ID. # Identifier of this asset. This is the same identifier returned during creative asset insert operation. This is a required field. Applicable to all but the following creative types: all REDIRECT and TRACKING_TEXT.
+          "type": "A String", # Type of asset to upload. This is a required field. FLASH and IMAGE are no longer supported for new uploads. All image assets should use HTML_IMAGE.
+          "name": "A String", # Name of the creative asset. This is a required field while inserting an asset. After insertion, this assetIdentifier is used to identify the uploaded asset. Characters in the name must be alphanumeric or one of the following: ".-_ ". Spaces are allowed.
+        },
+        "transparency": True or False, # Whether the asset is transparent. Applicable to the following creative types: all RICH_MEDIA. Additionally, only applicable to HTML5 assets.
+        "sslCompliant": True or False, # Whether the asset is SSL-compliant. This is a read-only field. Applicable to all but the following creative types: all REDIRECT and TRACKING_TEXT.
+        "position": { # Offset Position. # Offset position for an asset. Applicable to the following creative types: all RICH_MEDIA.
+          "top": 42, # Offset distance from top side of an asset or a window.
+          "left": 42, # Offset distance from left side of an asset or a window.
+        },
+        "customStartTimeValue": 42, # Custom start time in seconds for making the asset visible. Applicable to the following creative types: all RICH_MEDIA.
+      },
+    ],
+    "redirectUrl": "A String", # URL of hosted image or hosted video or another ad tag. For INSTREAM_VIDEO_REDIRECT creatives this is the in-stream video redirect URL. The standard for a VAST (Video Ad Serving Template) ad response allows for a redirect link to another VAST 2.0 or 3.0 call. This is a required field when applicable. Applicable to the following creative types: DISPLAY_REDIRECT, INTERNAL_REDIRECT, INTERSTITIAL_INTERNAL_REDIRECT, and INSTREAM_VIDEO_REDIRECT
+    "videoDuration": 3.14, # Creative video duration in seconds. This is a read-only field. Applicable to the following creative types: INSTREAM_VIDEO, all RICH_MEDIA, and all VPAID.
+    "htmlCodeLocked": True or False, # Whether HTML code is DCM-generated or manually entered. Set to true to ignore changes to htmlCode. Applicable to the following creative types: FLASH_INPAGE and HTML5_BANNER.
+    "convertFlashToHtml5": True or False, # Whether Flash assets associated with the creative need to be automatically converted to HTML5. This flag is enabled by default and users can choose to disable it if they don't want the system to generate and use HTML5 asset for this creative. Applicable to the following creative type: FLASH_INPAGE. Applicable to DISPLAY when the primary asset type is not HTML_IMAGE.
+    "clickTags": [ # Click tags of the creative. For DISPLAY, FLASH_INPAGE, and HTML5_BANNER creatives, this is a subset of detected click tags for the assets associated with this creative. After creating a flash asset, detected click tags will be returned in the creativeAssetMetadata. When inserting the creative, populate the creative clickTags field using the creativeAssetMetadata.clickTags field. For DISPLAY_IMAGE_GALLERY creatives, there should be exactly one entry in this list for each image creative asset. A click tag is matched with a corresponding creative asset by matching the clickTag.name field with the creativeAsset.assetIdentifier.name field. Applicable to the following creative types: DISPLAY_IMAGE_GALLERY, FLASH_INPAGE, HTML5_BANNER. Applicable to DISPLAY when the primary asset type is not HTML_IMAGE.
+      { # Creative Click Tag.
+        "eventName": "A String", # Advertiser event name associated with the click tag. This field is used by DISPLAY_IMAGE_GALLERY and HTML5_BANNER creatives. Applicable to DISPLAY when the primary asset type is not HTML_IMAGE.
+        "name": "A String", # Parameter name for the specified click tag. For DISPLAY_IMAGE_GALLERY creative assets, this field must match the value of the creative asset's creativeAssetId.name field.
+        "value": "A String", # Parameter value for the specified click tag. This field contains a click-through url.
+      },
+    ],
+    "commercialId": "A String", # Industry standard ID assigned to creative for reach and frequency. Applicable to the following creative types: all INSTREAM_VIDEO and all VPAID.
+    "active": True or False, # Whether the creative is active. Applicable to all creative types.
+    "compatibility": [ # Compatibilities associated with this creative. This is a read-only field. DISPLAY and DISPLAY_INTERSTITIAL refer to rendering either on desktop or on mobile devices or in mobile apps for regular or interstitial ads, respectively. APP and APP_INTERSTITIAL are for rendering in mobile apps. Only pre-existing creatives may have these compatibilities since new creatives will either be assigned DISPLAY or DISPLAY_INTERSTITIAL instead. IN_STREAM_VIDEO refers to rendering in in-stream video ads developed with the VAST standard. Applicable to all creative types.
+        # 
+        # Acceptable values are:
+        # - "APP"
+        # - "APP_INTERSTITIAL"
+        # - "IN_STREAM_VIDEO"
+        # - "DISPLAY"
+        # - "DISPLAY_INTERSTITIAL"
+      "A String",
+    ],
+    "adParameters": "A String", # Ad parameters user for VPAID creative. This is a read-only field. Applicable to the following creative types: all VPAID.
+    "adTagKeys": [ # Keywords for a Rich Media creative. Keywords let you customize the creative settings of a Rich Media ad running on your site without having to contact the advertiser. You can use keywords to dynamically change the look or functionality of a creative. Applicable to the following creative types: all RICH_MEDIA, and all VPAID.
+      "A String",
+    ],
+    "kind": "dfareporting#creative", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#creative".
+    "subaccountId": "A String", # Subaccount ID of this creative. This field, if left unset, will be auto-generated for both insert and update operations. Applicable to all creative types.
+    "name": "A String", # Name of the creative. This is a required field and must be less than 256 characters long. Applicable to all creative types.
+    "sslOverride": True or False, # Whether creative should be treated as SSL compliant even if the system scan shows it's not. Applicable to all creative types.
+    "lastModifiedInfo": { # Modification timestamp. # Creative last modification information. This is a read-only field. Applicable to all creative types.
+      "time": "A String", # Timestamp of the last change in milliseconds since epoch.
+    },
+    "backupImageClickThroughUrl": "A String", # Click-through URL for backup image. Applicable to the following creative types: FLASH_INPAGE and HTML5_BANNER. Applicable to DISPLAY when the primary asset type is not HTML_IMAGE.
+    "sslCompliant": True or False, # Whether the creative is SSL-compliant. This is a read-only field. Applicable to all creative types.
+    "studioCreativeId": "A String", # Studio creative ID associated with rich media and VPAID creatives. This is a read-only field. Applicable to the following creative types: all RICH_MEDIA, and all VPAID.
+    "authoringTool": "A String", # Authoring tool for HTML5 banner creatives. This is a read-only field. Applicable to the following creative types: HTML5_BANNER.
+    "allowScriptAccess": True or False, # Whether script access is allowed for this creative. This is a read-only and deprecated field which will automatically be set to true on update. Applicable to the following creative types: FLASH_INPAGE.
+    "companionCreatives": [ # List of companion creatives assigned to an in-Stream videocreative. Acceptable values include IDs of existing flash and image creatives. Applicable to the following creative types: all VPAID and all INSTREAM_VIDEO with dynamicAssetSelection set to false.
+      "A String",
+    ],
+    "creativeAssetSelection": { # Encapsulates the list of rules for asset selection and a default asset in case none of the rules match. Applicable to INSTREAM_VIDEO creatives. # Required if dynamicAssetSelection is true.
+      "rules": [ # Rules determine which asset will be served to a viewer. Rules will be evaluated in the order in which they are stored in this list. This list must contain at least one rule. Applicable to INSTREAM_VIDEO creatives.
+        { # A rule associates an asset with a targeting template for asset-level targeting. Applicable to INSTREAM_VIDEO creatives.
+          "assetId": "A String", # A creativeAssets[].id. This should refer to one of the parent assets in this creative. This is a required field.
+          "targetingTemplateId": "A String", # A targeting template ID. The targeting from the targeting template will be used to determine whether this asset should be served. This is a required field.
+          "name": "A String", # A user-friendly name for this rule. This is a required field.
+        },
+      ],
+      "defaultAssetId": "A String", # A creativeAssets[].id. This should refer to one of the parent assets in this creative, and will be served if none of the rules match. This is a required field.
+    },
+    "auto_advance_images": True or False, # Whether images are automatically advanced for image gallery creatives. Applicable to the following creative types: DISPLAY_IMAGE_GALLERY.
+    "backupImageFeatures": [ # List of feature dependencies that will cause a backup image to be served if the browser that serves the ad does not support them. Feature dependencies are features that a browser must be able to support in order to render your HTML5 creative asset correctly. This field is initially auto-generated to contain all features detected by DCM for all the assets of this creative and can then be modified by the client. To reset this field, copy over all the creativeAssets' detected features. Applicable to the following creative types: HTML5_BANNER. Applicable to DISPLAY when the primary asset type is not HTML_IMAGE.
+      "A String",
+    ],
+    "backupImageTargetWindow": { # Target Window. # Target window for backup image. Applicable to the following creative types: FLASH_INPAGE and HTML5_BANNER. Applicable to DISPLAY when the primary asset type is not HTML_IMAGE.
+      "customHtml": "A String", # User-entered value.
+      "targetWindowOption": "A String", # Type of browser window for which the backup image of the flash creative can be displayed.
+    },
+    "skippable": True or False, # Whether the user can choose to skip the creative. Applicable to the following creative types: all INSTREAM_VIDEO and all VPAID.
+  }
+
+
+Returns:
+  An object of the form:
+
+    { # Contains properties of a Creative.
+      "thirdPartyUrls": [ # Third-party URLs for tracking in-stream video creative events. Applicable to the following creative types: all INSTREAM_VIDEO and all VPAID.
+        { # Third-party Tracking URL.
+          "url": "A String", # URL for the specified third-party URL type.
+          "thirdPartyUrlType": "A String", # Third-party URL type for in-stream video creatives.
+        },
+      ],
+      "artworkType": "A String", # Type of artwork used for the creative. This is a read-only field. Applicable to the following creative types: all RICH_MEDIA, and all VPAID.
+      "latestTraffickedCreativeId": "A String", # Latest Studio trafficked creative ID associated with rich media and VPAID creatives. This is a read-only field. Applicable to the following creative types: all RICH_MEDIA, and all VPAID.
+      "videoDescription": "A String", # Description of the video ad. Applicable to the following creative types: all INSTREAM_VIDEO and all VPAID.
+      "advertiserId": "A String", # Advertiser ID of this creative. This is a required field. Applicable to all creative types.
+      "requiredFlashPluginVersion": "A String", # The minimum required Flash plugin version for this creative. For example, 11.2.202.235. This is a read-only field. Applicable to the following creative types: all RICH_MEDIA, and all VPAID.
+      "thirdPartyBackupImageImpressionsUrl": "A String", # Third-party URL used to record backup image impressions. Applicable to the following creative types: all RICH_MEDIA.
+      "timerCustomEvents": [ # List of timer events configured for the creative. For DISPLAY_IMAGE_GALLERY creatives, these are read-only and auto-generated from clickTags. Applicable to the following creative types: DISPLAY_IMAGE_GALLERY, all RICH_MEDIA, and all VPAID. Applicable to DISPLAY when the primary asset is not HTML_IMAGE.
+        { # Creative Custom Event.
+          "targetType": "A String", # Target type used by the event.
+          "artworkType": "A String", # Artwork type used by the creative.This is a read-only field.
+          "videoReportingId": "A String", # Video reporting ID, used to differentiate multiple videos in a single creative. This is a read-only field.
+          "popupWindowProperties": { # Popup Window Properties. # Properties for rich media popup windows. This field is used only for exit events.
+            "showStatusBar": True or False, # Whether to display the browser status bar.
+            "showScrollBar": True or False, # Whether to display the browser scroll bar.
+            "showAddressBar": True or False, # Whether to display the browser address bar.
+            "showMenuBar": True or False, # Whether to display the browser menu bar.
+            "title": "A String", # Title of popup window.
+            "showToolBar": True or False, # Whether to display the browser tool bar.
+            "positionType": "A String", # Popup window position either centered or at specific coordinate.
+            "offset": { # Offset Position. # Upper-left corner coordinates of the popup window. Applicable if positionType is COORDINATES.
+              "top": 42, # Offset distance from top side of an asset or a window.
+              "left": 42, # Offset distance from left side of an asset or a window.
+            },
+            "dimension": { # Represents the dimensions of ads, placements, creatives, or creative assets. # Popup dimension for a creative. This is a read-only field. Applicable to the following creative types: all RICH_MEDIA and all VPAID
+              "width": 42, # Width of this size.
+              "kind": "dfareporting#size", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#size".
+              "iab": True or False, # IAB standard size. This is a read-only, auto-generated field.
+              "id": "A String", # ID of this size. This is a read-only, auto-generated field.
+              "height": 42, # Height of this size.
+            },
+          },
+          "advertiserCustomEventId": "A String", # Unique ID of this event used by DDM Reporting and Data Transfer. This is a read-only field.
+          "artworkLabel": "A String", # Artwork label column, used to link events in DCM back to events in Studio. This is a required field and should not be modified after insertion.
+          "advertiserCustomEventType": "A String", # Type of the event. This is a read-only field.
+          "exitUrl": "A String", # Exit URL of the event. This field is used only for exit events.
+          "id": "A String", # ID of this event. This is a required field and should not be modified after insertion.
+          "advertiserCustomEventName": "A String", # User-entered name for the event.
+        },
+      ],
+      "renderingIdDimensionValue": { # Represents a DimensionValue resource. # Dimension value for the rendering ID of this creative. This is a read-only field. Applicable to all creative types.
+        "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+        "value": "A String", # The value of the dimension.
+        "dimensionName": "A String", # The name of the dimension.
+        "etag": "A String", # The eTag of this response for caching purposes.
+        "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+        "id": "A String", # The ID associated with the value if available.
+      },
+      "fsCommand": { # FsCommand. # OpenWindow FSCommand of this creative. This lets the SWF file communicate with either Flash Player or the program hosting Flash Player, such as a web browser. This is only triggered if allowScriptAccess field is true. Applicable to the following creative types: FLASH_INPAGE.
+        "windowHeight": 42, # Height of the window.
+        "top": 42, # Distance from the top of the browser. Applicable when positionOption is DISTANCE_FROM_TOP_LEFT_CORNER.
+        "windowWidth": 42, # Width of the window.
+        "positionOption": "A String", # Position in the browser where the window will open.
+        "left": 42, # Distance from the left of the browser.Applicable when positionOption is DISTANCE_FROM_TOP_LEFT_CORNER.
+      },
+      "dynamicAssetSelection": True or False, # Set this to true to enable the use of rules to target individual assets in this creative. When set to true creativeAssetSelection must be set. This also controls asset-level companions. When this is true, companion creatives should be assigned to creative assets. Learn more. Applicable to INSTREAM_VIDEO creatives.
+      "id": "A String", # ID of this creative. This is a read-only, auto-generated field. Applicable to all creative types.
+      "progressOffset": { # Video Offset # Amount of time to play the video before counting a view. Applicable to the following creative types: all INSTREAM_VIDEO.
+        "offsetPercentage": 42, # Duration, as a percentage of video duration. Do not set when offsetSeconds is set.
+        "offsetSeconds": 42, # Duration, in seconds. Do not set when offsetPercentage is set.
+      },
+      "accountId": "A String", # Account ID of this creative. This field, if left unset, will be auto-generated for both insert and update operations. Applicable to all creative types.
+      "studioTraffickedCreativeId": "A String", # Studio trafficked creative ID associated with rich media and VPAID creatives. This is a read-only field. Applicable to the following creative types: all RICH_MEDIA, and all VPAID.
+      "archived": True or False, # Whether the creative is archived. Applicable to all creative types.
+      "overrideCss": "A String", # Override CSS value for rich media creatives. Applicable to the following creative types: all RICH_MEDIA.
+      "authoringSource": "A String", # Source application where creative was authored. Presently, only DBM authored creatives will have this field set. Applicable to all creative types.
+      "requiredFlashVersion": 42, # The internal Flash version for this creative as calculated by DoubleClick Studio. This is a read-only field. Applicable to the following creative types: FLASH_INPAGE all RICH_MEDIA, and all VPAID. Applicable to DISPLAY when the primary asset type is not HTML_IMAGE.
+      "exitCustomEvents": [ # List of exit events configured for the creative. For DISPLAY and DISPLAY_IMAGE_GALLERY creatives, these are read-only and auto-generated from clickTags, For DISPLAY, an event is also created from the backupImageReportingLabel. Applicable to the following creative types: DISPLAY_IMAGE_GALLERY, all RICH_MEDIA, and all VPAID. Applicable to DISPLAY when the primary asset type is not HTML_IMAGE.
+        { # Creative Custom Event.
+          "targetType": "A String", # Target type used by the event.
+          "artworkType": "A String", # Artwork type used by the creative.This is a read-only field.
+          "videoReportingId": "A String", # Video reporting ID, used to differentiate multiple videos in a single creative. This is a read-only field.
+          "popupWindowProperties": { # Popup Window Properties. # Properties for rich media popup windows. This field is used only for exit events.
+            "showStatusBar": True or False, # Whether to display the browser status bar.
+            "showScrollBar": True or False, # Whether to display the browser scroll bar.
+            "showAddressBar": True or False, # Whether to display the browser address bar.
+            "showMenuBar": True or False, # Whether to display the browser menu bar.
+            "title": "A String", # Title of popup window.
+            "showToolBar": True or False, # Whether to display the browser tool bar.
+            "positionType": "A String", # Popup window position either centered or at specific coordinate.
+            "offset": { # Offset Position. # Upper-left corner coordinates of the popup window. Applicable if positionType is COORDINATES.
+              "top": 42, # Offset distance from top side of an asset or a window.
+              "left": 42, # Offset distance from left side of an asset or a window.
+            },
+            "dimension": { # Represents the dimensions of ads, placements, creatives, or creative assets. # Popup dimension for a creative. This is a read-only field. Applicable to the following creative types: all RICH_MEDIA and all VPAID
+              "width": 42, # Width of this size.
+              "kind": "dfareporting#size", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#size".
+              "iab": True or False, # IAB standard size. This is a read-only, auto-generated field.
+              "id": "A String", # ID of this size. This is a read-only, auto-generated field.
+              "height": 42, # Height of this size.
+            },
+          },
+          "advertiserCustomEventId": "A String", # Unique ID of this event used by DDM Reporting and Data Transfer. This is a read-only field.
+          "artworkLabel": "A String", # Artwork label column, used to link events in DCM back to events in Studio. This is a required field and should not be modified after insertion.
+          "advertiserCustomEventType": "A String", # Type of the event. This is a read-only field.
+          "exitUrl": "A String", # Exit URL of the event. This field is used only for exit events.
+          "id": "A String", # ID of this event. This is a required field and should not be modified after insertion.
+          "advertiserCustomEventName": "A String", # User-entered name for the event.
+        },
+      ],
+      "renderingId": "A String", # ID of current rendering version. This is a read-only field. Applicable to all creative types.
+      "counterCustomEvents": [ # List of counter events configured for the creative. For DISPLAY_IMAGE_GALLERY creatives, these are read-only and auto-generated from clickTags. Applicable to the following creative types: DISPLAY_IMAGE_GALLERY, all RICH_MEDIA, and all VPAID.
+        { # Creative Custom Event.
+          "targetType": "A String", # Target type used by the event.
+          "artworkType": "A String", # Artwork type used by the creative.This is a read-only field.
+          "videoReportingId": "A String", # Video reporting ID, used to differentiate multiple videos in a single creative. This is a read-only field.
+          "popupWindowProperties": { # Popup Window Properties. # Properties for rich media popup windows. This field is used only for exit events.
+            "showStatusBar": True or False, # Whether to display the browser status bar.
+            "showScrollBar": True or False, # Whether to display the browser scroll bar.
+            "showAddressBar": True or False, # Whether to display the browser address bar.
+            "showMenuBar": True or False, # Whether to display the browser menu bar.
+            "title": "A String", # Title of popup window.
+            "showToolBar": True or False, # Whether to display the browser tool bar.
+            "positionType": "A String", # Popup window position either centered or at specific coordinate.
+            "offset": { # Offset Position. # Upper-left corner coordinates of the popup window. Applicable if positionType is COORDINATES.
+              "top": 42, # Offset distance from top side of an asset or a window.
+              "left": 42, # Offset distance from left side of an asset or a window.
+            },
+            "dimension": { # Represents the dimensions of ads, placements, creatives, or creative assets. # Popup dimension for a creative. This is a read-only field. Applicable to the following creative types: all RICH_MEDIA and all VPAID
+              "width": 42, # Width of this size.
+              "kind": "dfareporting#size", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#size".
+              "iab": True or False, # IAB standard size. This is a read-only, auto-generated field.
+              "id": "A String", # ID of this size. This is a read-only, auto-generated field.
+              "height": 42, # Height of this size.
+            },
+          },
+          "advertiserCustomEventId": "A String", # Unique ID of this event used by DDM Reporting and Data Transfer. This is a read-only field.
+          "artworkLabel": "A String", # Artwork label column, used to link events in DCM back to events in Studio. This is a required field and should not be modified after insertion.
+          "advertiserCustomEventType": "A String", # Type of the event. This is a read-only field.
+          "exitUrl": "A String", # Exit URL of the event. This field is used only for exit events.
+          "id": "A String", # ID of this event. This is a required field and should not be modified after insertion.
+          "advertiserCustomEventName": "A String", # User-entered name for the event.
+        },
+      ],
+      "skipOffset": { # Video Offset # Amount of time to play the video before the skip button appears. Applicable to the following creative types: all INSTREAM_VIDEO.
+        "offsetPercentage": 42, # Duration, as a percentage of video duration. Do not set when offsetSeconds is set.
+        "offsetSeconds": 42, # Duration, in seconds. Do not set when offsetPercentage is set.
+      },
+      "backupImageReportingLabel": "A String", # Reporting label used for HTML5 banner backup image. Applicable to the following creative types: DISPLAY when the primary asset type is not HTML_IMAGE.
+      "version": 42, # The version number helps you keep track of multiple versions of your creative in your reports. The version number will always be auto-generated during insert operations to start at 1. For tracking creatives the version cannot be incremented and will always remain at 1. For all other creative types the version can be incremented only by 1 during update operations. In addition, the version will be automatically incremented by 1 when undergoing Rich Media creative merging. Applicable to all creative types.
+      "creativeFieldAssignments": [ # Creative field assignments for this creative. Applicable to all creative types.
+        { # Creative Field Assignment.
+          "creativeFieldId": "A String", # ID of the creative field.
+          "creativeFieldValueId": "A String", # ID of the creative field value.
+        },
+      ],
+      "backgroundColor": "A String", # The 6-character HTML color code, beginning with #, for the background of the window area where the Flash file is displayed. Default is white. Applicable to the following creative types: FLASH_INPAGE.
+      "customKeyValues": [ # Custom key-values for a Rich Media creative. Key-values let you customize the creative settings of a Rich Media ad running on your site without having to contact the advertiser. You can use key-values to dynamically change the look or functionality of a creative. Applicable to the following creative types: all RICH_MEDIA, and all VPAID.
+        "A String",
+      ],
+      "idDimensionValue": { # Represents a DimensionValue resource. # Dimension value for the ID of this creative. This is a read-only field. Applicable to all creative types.
+        "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+        "value": "A String", # The value of the dimension.
+        "dimensionName": "A String", # The name of the dimension.
+        "etag": "A String", # The eTag of this response for caching purposes.
+        "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+        "id": "A String", # The ID associated with the value if available.
+      },
+      "htmlCode": "A String", # HTML code for the creative. This is a required field when applicable. This field is ignored if htmlCodeLocked is false. Applicable to the following creative types: all CUSTOM, FLASH_INPAGE, and HTML5_BANNER, and all RICH_MEDIA.
+      "size": { # Represents the dimensions of ads, placements, creatives, or creative assets. # Size associated with this creative. When inserting or updating a creative either the size ID field or size width and height fields can be used. This is a required field when applicable; however for IMAGE, FLASH_INPAGE creatives, and for DISPLAY creatives with a primary asset of type HTML_IMAGE, if left blank, this field will be automatically set using the actual size of the associated image assets. Applicable to the following creative types: DISPLAY, DISPLAY_IMAGE_GALLERY, FLASH_INPAGE, HTML5_BANNER, IMAGE, and all RICH_MEDIA.
+        "width": 42, # Width of this size.
+        "kind": "dfareporting#size", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#size".
+        "iab": True or False, # IAB standard size. This is a read-only, auto-generated field.
+        "id": "A String", # ID of this size. This is a read-only, auto-generated field.
+        "height": 42, # Height of this size.
+      },
+      "type": "A String", # Type of this creative. This is a required field. Applicable to all creative types.
+          #
+          # Note: FLASH_INPAGE, HTML5_BANNER, and IMAGE are only used for existing creatives. New creatives should use DISPLAY as a replacement for these types.
+      "totalFileSize": "A String", # Combined size of all creative assets. This is a read-only field. Applicable to the following creative types: all RICH_MEDIA, and all VPAID.
+      "thirdPartyRichMediaImpressionsUrl": "A String", # Third-party URL used to record rich media impressions. Applicable to the following creative types: all RICH_MEDIA.
+      "studioAdvertiserId": "A String", # Studio advertiser ID associated with rich media and VPAID creatives. This is a read-only field. Applicable to the following creative types: all RICH_MEDIA, and all VPAID.
+      "creativeAssets": [ # Assets associated with a creative. Applicable to all but the following creative types: INTERNAL_REDIRECT, INTERSTITIAL_INTERNAL_REDIRECT, and REDIRECT
+        { # Creative Asset.
+          "mimeType": "A String", # Detected MIME type for video asset. This is a read-only field. Applicable to the following creative types: INSTREAM_VIDEO and all VPAID.
+          "artworkType": "A String", # Artwork type of rich media creative. This is a read-only field. Applicable to the following creative types: all RICH_MEDIA.
+          "positionLeftUnit": "A String", # Offset left unit for an asset. This is a read-only field. Applicable to the following creative types: all RICH_MEDIA.
+          "collapsedSize": { # Represents the dimensions of ads, placements, creatives, or creative assets. # Size of an asset when collapsed. This is a read-only field. Applicable to the following creative types: all RICH_MEDIA and all VPAID. Additionally, applicable to assets whose displayType is ASSET_DISPLAY_TYPE_EXPANDING or ASSET_DISPLAY_TYPE_PEEL_DOWN.
+            "width": 42, # Width of this size.
+            "kind": "dfareporting#size", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#size".
+            "iab": True or False, # IAB standard size. This is a read-only, auto-generated field.
+            "id": "A String", # ID of this size. This is a read-only, auto-generated field.
+            "height": 42, # Height of this size.
+          },
+          "flashVersion": 42, # Flash version of the asset. This is a read-only field. Applicable to the following creative types: FLASH_INPAGE, all RICH_MEDIA, and all VPAID. Applicable to DISPLAY when the primary asset type is not HTML_IMAGE.
+          "pushdown": True or False, # Whether the asset pushes down other content. Applicable to the following creative types: all RICH_MEDIA. Additionally, only applicable when the asset offsets are 0, the collapsedSize.width matches size.width, and the collapsedSize.height is less than size.height.
+          "hideFlashObjects": True or False, # Whether to hide Flash objects flag for an asset. Applicable to the following creative types: all RICH_MEDIA.
+          "detectedFeatures": [ # List of feature dependencies for the creative asset that are detected by DCM. Feature dependencies are features that a browser must be able to support in order to render your HTML5 creative correctly. This is a read-only, auto-generated field. Applicable to the following creative types: HTML5_BANNER. Applicable to DISPLAY when the primary asset type is not HTML_IMAGE.
+            "A String",
+          ],
+          "originalBackup": True or False, # Whether the backup asset is original or changed by the user in DCM. Applicable to the following creative types: all RICH_MEDIA.
+          "duration": 42, # Duration in seconds for which an asset will be displayed. Applicable to the following creative types: INSTREAM_VIDEO and VPAID_LINEAR_VIDEO.
+          "positionTopUnit": "A String", # Offset top unit for an asset. This is a read-only field if the asset displayType is ASSET_DISPLAY_TYPE_OVERLAY. Applicable to the following creative types: all RICH_MEDIA.
+          "id": "A String", # Numeric ID of this creative asset. This is a required field and should not be modified. Applicable to all but the following creative types: all REDIRECT and TRACKING_TEXT.
+          "alignment": "A String", # Possible alignments for an asset. This is a read-only field. Applicable to the following creative types: RICH_MEDIA_DISPLAY_MULTI_FLOATING_INTERSTITIAL.
+          "size": { # Represents the dimensions of ads, placements, creatives, or creative assets. # Size associated with this creative asset. This is a required field when applicable; however for IMAGE and FLASH_INPAGE, creatives if left blank, this field will be automatically set using the actual size of the associated image asset. Applicable to the following creative types: DISPLAY_IMAGE_GALLERY, FLASH_INPAGE, HTML5_BANNER, IMAGE, and all RICH_MEDIA. Applicable to DISPLAY when the primary asset type is not HTML_IMAGE.
+            "width": 42, # Width of this size.
+            "kind": "dfareporting#size", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#size".
+            "iab": True or False, # IAB standard size. This is a read-only, auto-generated field.
+            "id": "A String", # ID of this size. This is a read-only, auto-generated field.
+            "height": 42, # Height of this size.
+          },
+          "horizontallyLocked": True or False, # Whether the asset is horizontally locked. This is a read-only field. Applicable to the following creative types: all RICH_MEDIA.
+          "startTimeType": "A String", # Initial wait time type before making the asset visible. Applicable to the following creative types: all RICH_MEDIA.
+          "displayType": "A String", # Type of rich media asset. This is a read-only field. Applicable to the following creative types: all RICH_MEDIA.
+          "expandedDimension": { # Represents the dimensions of ads, placements, creatives, or creative assets. # Detected expanded dimension for video asset. This is a read-only field. Applicable to the following creative types: INSTREAM_VIDEO and all VPAID.
+            "width": 42, # Width of this size.
+            "kind": "dfareporting#size", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#size".
+            "iab": True or False, # IAB standard size. This is a read-only, auto-generated field.
+            "id": "A String", # ID of this size. This is a read-only, auto-generated field.
+            "height": 42, # Height of this size.
+          },
+          "verticallyLocked": True or False, # Whether the asset is vertically locked. This is a read-only field. Applicable to the following creative types: all RICH_MEDIA.
+          "idDimensionValue": { # Represents a DimensionValue resource. # Dimension value for the ID of the asset. This is a read-only, auto-generated field.
+            "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+            "value": "A String", # The value of the dimension.
+            "dimensionName": "A String", # The name of the dimension.
+            "etag": "A String", # The eTag of this response for caching purposes.
+            "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+            "id": "A String", # The ID associated with the value if available.
+          },
+          "role": "A String", # Role of the asset in relation to creative. Applicable to all but the following creative types: all REDIRECT and TRACKING_TEXT. This is a required field.
+              # PRIMARY applies to DISPLAY, FLASH_INPAGE, HTML5_BANNER, IMAGE, DISPLAY_IMAGE_GALLERY, all RICH_MEDIA (which may contain multiple primary assets), and all VPAID creatives.
+              # BACKUP_IMAGE applies to FLASH_INPAGE, HTML5_BANNER, all RICH_MEDIA, and all VPAID creatives. Applicable to DISPLAY when the primary asset type is not HTML_IMAGE.
+              # ADDITIONAL_IMAGE and ADDITIONAL_FLASH apply to FLASH_INPAGE creatives.
+              # OTHER refers to assets from sources other than DCM, such as Studio uploaded assets, applicable to all RICH_MEDIA and all VPAID creatives.
+              # PARENT_VIDEO refers to videos uploaded by the user in DCM and is applicable to INSTREAM_VIDEO and VPAID_LINEAR_VIDEO creatives.
+              # TRANSCODED_VIDEO refers to videos transcoded by DCM from PARENT_VIDEO assets and is applicable to INSTREAM_VIDEO and VPAID_LINEAR_VIDEO creatives.
+              # ALTERNATE_VIDEO refers to the DCM representation of child asset videos from Studio, and is applicable to VPAID_LINEAR_VIDEO creatives. These cannot be added or removed within DCM.
+              # For VPAID_LINEAR_VIDEO creatives, PARENT_VIDEO, TRANSCODED_VIDEO and ALTERNATE_VIDEO assets that are marked active serve as backup in case the VPAID creative cannot be served. Only PARENT_VIDEO assets can be added or removed for an INSTREAM_VIDEO or VPAID_LINEAR_VIDEO creative.
+          "zipFilesize": "A String", # Size of zip file. This is a read-only field. Applicable to the following creative types: HTML5_BANNER.
+          "bitRate": 42, # Detected bit-rate for video asset. This is a read-only field. Applicable to the following creative types: INSTREAM_VIDEO and all VPAID.
+          "windowMode": "A String", # Window mode options for flash assets. Applicable to the following creative types: FLASH_INPAGE, RICH_MEDIA_DISPLAY_EXPANDING, RICH_MEDIA_IM_EXPAND, RICH_MEDIA_DISPLAY_BANNER, and RICH_MEDIA_INPAGE_FLOATING.
+          "progressiveServingUrl": "A String", # Progressive URL for video asset. This is a read-only field. Applicable to the following creative types: INSTREAM_VIDEO and all VPAID.
+          "durationType": "A String", # Duration type for which an asset will be displayed. Applicable to the following creative types: all RICH_MEDIA.
+          "videoDuration": 3.14, # Detected video duration for video asset. This is a read-only field. Applicable to the following creative types: INSTREAM_VIDEO and all VPAID.
+          "fileSize": "A String", # File size associated with this creative asset. This is a read-only field. Applicable to all but the following creative types: all REDIRECT and TRACKING_TEXT.
+          "zipFilename": "A String", # File name of zip file. This is a read-only field. Applicable to the following creative types: HTML5_BANNER.
+          "offset": { # Offset Position. # Offset position for an asset in collapsed mode. This is a read-only field. Applicable to the following creative types: all RICH_MEDIA and all VPAID. Additionally, only applicable to assets whose displayType is ASSET_DISPLAY_TYPE_EXPANDING or ASSET_DISPLAY_TYPE_PEEL_DOWN.
+            "top": 42, # Offset distance from top side of an asset or a window.
+            "left": 42, # Offset distance from left side of an asset or a window.
+          },
+          "active": True or False, # Whether the video asset is active. This is a read-only field for VPAID_NON_LINEAR_VIDEO assets. Applicable to the following creative types: INSTREAM_VIDEO and all VPAID.
+          "companionCreativeIds": [ # List of companion creatives assigned to an in-stream video creative asset. Acceptable values include IDs of existing flash and image creatives. Applicable to INSTREAM_VIDEO creative type with dynamicAssetSelection set to true.
+            "A String",
+          ],
+          "hideSelectionBoxes": True or False, # Whether to hide selection boxes flag for an asset. Applicable to the following creative types: all RICH_MEDIA.
+          "streamingServingUrl": "A String", # Streaming URL for video asset. This is a read-only field. Applicable to the following creative types: INSTREAM_VIDEO and all VPAID.
+          "zIndex": 42, # zIndex value of an asset. This is a read-only field. Applicable to the following creative types: all RICH_MEDIA.Additionally, only applicable to assets whose displayType is NOT one of the following types: ASSET_DISPLAY_TYPE_INPAGE or ASSET_DISPLAY_TYPE_OVERLAY.
+          "childAssetType": "A String", # Rich media child asset type. This is a read-only field. Applicable to the following creative types: all VPAID.
+          "backupImageExit": { # Creative Custom Event. # Exit event configured for the backup image. Applicable to the following creative types: all RICH_MEDIA.
+            "targetType": "A String", # Target type used by the event.
+            "artworkType": "A String", # Artwork type used by the creative.This is a read-only field.
+            "videoReportingId": "A String", # Video reporting ID, used to differentiate multiple videos in a single creative. This is a read-only field.
+            "popupWindowProperties": { # Popup Window Properties. # Properties for rich media popup windows. This field is used only for exit events.
+              "showStatusBar": True or False, # Whether to display the browser status bar.
+              "showScrollBar": True or False, # Whether to display the browser scroll bar.
+              "showAddressBar": True or False, # Whether to display the browser address bar.
+              "showMenuBar": True or False, # Whether to display the browser menu bar.
+              "title": "A String", # Title of popup window.
+              "showToolBar": True or False, # Whether to display the browser tool bar.
+              "positionType": "A String", # Popup window position either centered or at specific coordinate.
+              "offset": { # Offset Position. # Upper-left corner coordinates of the popup window. Applicable if positionType is COORDINATES.
+                "top": 42, # Offset distance from top side of an asset or a window.
+                "left": 42, # Offset distance from left side of an asset or a window.
+              },
+              "dimension": { # Represents the dimensions of ads, placements, creatives, or creative assets. # Popup dimension for a creative. This is a read-only field. Applicable to the following creative types: all RICH_MEDIA and all VPAID
+                "width": 42, # Width of this size.
+                "kind": "dfareporting#size", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#size".
+                "iab": True or False, # IAB standard size. This is a read-only, auto-generated field.
+                "id": "A String", # ID of this size. This is a read-only, auto-generated field.
+                "height": 42, # Height of this size.
+              },
+            },
+            "advertiserCustomEventId": "A String", # Unique ID of this event used by DDM Reporting and Data Transfer. This is a read-only field.
+            "artworkLabel": "A String", # Artwork label column, used to link events in DCM back to events in Studio. This is a required field and should not be modified after insertion.
+            "advertiserCustomEventType": "A String", # Type of the event. This is a read-only field.
+            "exitUrl": "A String", # Exit URL of the event. This field is used only for exit events.
+            "id": "A String", # ID of this event. This is a required field and should not be modified after insertion.
+            "advertiserCustomEventName": "A String", # User-entered name for the event.
+          },
+          "actionScript3": True or False, # Whether ActionScript3 is enabled for the flash asset. This is a read-only field. Applicable to the following creative type: FLASH_INPAGE. Applicable to DISPLAY when the primary asset type is not HTML_IMAGE.
+          "pushdownDuration": 3.14, # Pushdown duration in seconds for an asset. Must be between 0 and 9.99. Applicable to the following creative types: all RICH_MEDIA.Additionally, only applicable when the asset pushdown field is true, the offsets are 0, the collapsedSize.width matches size.width, and the collapsedSize.height is less than size.height.
+          "assetIdentifier": { # Creative Asset ID. # Identifier of this asset. This is the same identifier returned during creative asset insert operation. This is a required field. Applicable to all but the following creative types: all REDIRECT and TRACKING_TEXT.
+            "type": "A String", # Type of asset to upload. This is a required field. FLASH and IMAGE are no longer supported for new uploads. All image assets should use HTML_IMAGE.
+            "name": "A String", # Name of the creative asset. This is a required field while inserting an asset. After insertion, this assetIdentifier is used to identify the uploaded asset. Characters in the name must be alphanumeric or one of the following: ".-_ ". Spaces are allowed.
+          },
+          "transparency": True or False, # Whether the asset is transparent. Applicable to the following creative types: all RICH_MEDIA. Additionally, only applicable to HTML5 assets.
+          "sslCompliant": True or False, # Whether the asset is SSL-compliant. This is a read-only field. Applicable to all but the following creative types: all REDIRECT and TRACKING_TEXT.
+          "position": { # Offset Position. # Offset position for an asset. Applicable to the following creative types: all RICH_MEDIA.
+            "top": 42, # Offset distance from top side of an asset or a window.
+            "left": 42, # Offset distance from left side of an asset or a window.
+          },
+          "customStartTimeValue": 42, # Custom start time in seconds for making the asset visible. Applicable to the following creative types: all RICH_MEDIA.
+        },
+      ],
+      "redirectUrl": "A String", # URL of hosted image or hosted video or another ad tag. For INSTREAM_VIDEO_REDIRECT creatives this is the in-stream video redirect URL. The standard for a VAST (Video Ad Serving Template) ad response allows for a redirect link to another VAST 2.0 or 3.0 call. This is a required field when applicable. Applicable to the following creative types: DISPLAY_REDIRECT, INTERNAL_REDIRECT, INTERSTITIAL_INTERNAL_REDIRECT, and INSTREAM_VIDEO_REDIRECT
+      "videoDuration": 3.14, # Creative video duration in seconds. This is a read-only field. Applicable to the following creative types: INSTREAM_VIDEO, all RICH_MEDIA, and all VPAID.
+      "htmlCodeLocked": True or False, # Whether HTML code is DCM-generated or manually entered. Set to true to ignore changes to htmlCode. Applicable to the following creative types: FLASH_INPAGE and HTML5_BANNER.
+      "convertFlashToHtml5": True or False, # Whether Flash assets associated with the creative need to be automatically converted to HTML5. This flag is enabled by default and users can choose to disable it if they don't want the system to generate and use HTML5 asset for this creative. Applicable to the following creative type: FLASH_INPAGE. Applicable to DISPLAY when the primary asset type is not HTML_IMAGE.
+      "clickTags": [ # Click tags of the creative. For DISPLAY, FLASH_INPAGE, and HTML5_BANNER creatives, this is a subset of detected click tags for the assets associated with this creative. After creating a flash asset, detected click tags will be returned in the creativeAssetMetadata. When inserting the creative, populate the creative clickTags field using the creativeAssetMetadata.clickTags field. For DISPLAY_IMAGE_GALLERY creatives, there should be exactly one entry in this list for each image creative asset. A click tag is matched with a corresponding creative asset by matching the clickTag.name field with the creativeAsset.assetIdentifier.name field. Applicable to the following creative types: DISPLAY_IMAGE_GALLERY, FLASH_INPAGE, HTML5_BANNER. Applicable to DISPLAY when the primary asset type is not HTML_IMAGE.
+        { # Creative Click Tag.
+          "eventName": "A String", # Advertiser event name associated with the click tag. This field is used by DISPLAY_IMAGE_GALLERY and HTML5_BANNER creatives. Applicable to DISPLAY when the primary asset type is not HTML_IMAGE.
+          "name": "A String", # Parameter name for the specified click tag. For DISPLAY_IMAGE_GALLERY creative assets, this field must match the value of the creative asset's creativeAssetId.name field.
+          "value": "A String", # Parameter value for the specified click tag. This field contains a click-through url.
+        },
+      ],
+      "commercialId": "A String", # Industry standard ID assigned to creative for reach and frequency. Applicable to the following creative types: all INSTREAM_VIDEO and all VPAID.
+      "active": True or False, # Whether the creative is active. Applicable to all creative types.
+      "compatibility": [ # Compatibilities associated with this creative. This is a read-only field. DISPLAY and DISPLAY_INTERSTITIAL refer to rendering either on desktop or on mobile devices or in mobile apps for regular or interstitial ads, respectively. APP and APP_INTERSTITIAL are for rendering in mobile apps. Only pre-existing creatives may have these compatibilities since new creatives will either be assigned DISPLAY or DISPLAY_INTERSTITIAL instead. IN_STREAM_VIDEO refers to rendering in in-stream video ads developed with the VAST standard. Applicable to all creative types.
+          #
+          # Acceptable values are:
+          # - "APP"
+          # - "APP_INTERSTITIAL"
+          # - "IN_STREAM_VIDEO"
+          # - "DISPLAY"
+          # - "DISPLAY_INTERSTITIAL"
+        "A String",
+      ],
+      "adParameters": "A String", # Ad parameters user for VPAID creative. This is a read-only field. Applicable to the following creative types: all VPAID.
+      "adTagKeys": [ # Keywords for a Rich Media creative. Keywords let you customize the creative settings of a Rich Media ad running on your site without having to contact the advertiser. You can use keywords to dynamically change the look or functionality of a creative. Applicable to the following creative types: all RICH_MEDIA, and all VPAID.
+        "A String",
+      ],
+      "kind": "dfareporting#creative", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#creative".
+      "subaccountId": "A String", # Subaccount ID of this creative. This field, if left unset, will be auto-generated for both insert and update operations. Applicable to all creative types.
+      "name": "A String", # Name of the creative. This is a required field and must be less than 256 characters long. Applicable to all creative types.
+      "sslOverride": True or False, # Whether creative should be treated as SSL compliant even if the system scan shows it's not. Applicable to all creative types.
+      "lastModifiedInfo": { # Modification timestamp. # Creative last modification information. This is a read-only field. Applicable to all creative types.
+        "time": "A String", # Timestamp of the last change in milliseconds since epoch.
+      },
+      "backupImageClickThroughUrl": "A String", # Click-through URL for backup image. Applicable to the following creative types: FLASH_INPAGE and HTML5_BANNER. Applicable to DISPLAY when the primary asset type is not HTML_IMAGE.
+      "sslCompliant": True or False, # Whether the creative is SSL-compliant. This is a read-only field. Applicable to all creative types.
+      "studioCreativeId": "A String", # Studio creative ID associated with rich media and VPAID creatives. This is a read-only field. Applicable to the following creative types: all RICH_MEDIA, and all VPAID.
+      "authoringTool": "A String", # Authoring tool for HTML5 banner creatives. This is a read-only field. Applicable to the following creative types: HTML5_BANNER.
+      "allowScriptAccess": True or False, # Whether script access is allowed for this creative. This is a read-only and deprecated field which will automatically be set to true on update. Applicable to the following creative types: FLASH_INPAGE.
+      "companionCreatives": [ # List of companion creatives assigned to an in-Stream videocreative. Acceptable values include IDs of existing flash and image creatives. Applicable to the following creative types: all VPAID and all INSTREAM_VIDEO with dynamicAssetSelection set to false.
+        "A String",
+      ],
+      "creativeAssetSelection": { # Encapsulates the list of rules for asset selection and a default asset in case none of the rules match. Applicable to INSTREAM_VIDEO creatives. # Required if dynamicAssetSelection is true.
+        "rules": [ # Rules determine which asset will be served to a viewer. Rules will be evaluated in the order in which they are stored in this list. This list must contain at least one rule. Applicable to INSTREAM_VIDEO creatives.
+          { # A rule associates an asset with a targeting template for asset-level targeting. Applicable to INSTREAM_VIDEO creatives.
+            "assetId": "A String", # A creativeAssets[].id. This should refer to one of the parent assets in this creative. This is a required field.
+            "targetingTemplateId": "A String", # A targeting template ID. The targeting from the targeting template will be used to determine whether this asset should be served. This is a required field.
+            "name": "A String", # A user-friendly name for this rule. This is a required field.
+          },
+        ],
+        "defaultAssetId": "A String", # A creativeAssets[].id. This should refer to one of the parent assets in this creative, and will be served if none of the rules match. This is a required field.
+      },
+      "auto_advance_images": True or False, # Whether images are automatically advanced for image gallery creatives. Applicable to the following creative types: DISPLAY_IMAGE_GALLERY.
+      "backupImageFeatures": [ # List of feature dependencies that will cause a backup image to be served if the browser that serves the ad does not support them. Feature dependencies are features that a browser must be able to support in order to render your HTML5 creative asset correctly. This field is initially auto-generated to contain all features detected by DCM for all the assets of this creative and can then be modified by the client. To reset this field, copy over all the creativeAssets' detected features. Applicable to the following creative types: HTML5_BANNER. Applicable to DISPLAY when the primary asset type is not HTML_IMAGE.
+        "A String",
+      ],
+      "backupImageTargetWindow": { # Target Window. # Target window for backup image. Applicable to the following creative types: FLASH_INPAGE and HTML5_BANNER. Applicable to DISPLAY when the primary asset type is not HTML_IMAGE.
+        "customHtml": "A String", # User-entered value.
+        "targetWindowOption": "A String", # Type of browser window for which the backup image of the flash creative can be displayed.
+      },
+      "skippable": True or False, # Whether the user can choose to skip the creative. Applicable to the following creative types: all INSTREAM_VIDEO and all VPAID.
+    }</pre>
+</div>
+
+</body></html>
\ No newline at end of file
diff --git a/docs/dyn/dfareporting_v2_7.dimensionValues.html b/docs/dyn/dfareporting_v2_7.dimensionValues.html
new file mode 100644
index 0000000..58971c1
--- /dev/null
+++ b/docs/dyn/dfareporting_v2_7.dimensionValues.html
@@ -0,0 +1,144 @@
+<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="dfareporting_v2_7.html">DCM/DFA Reporting And Trafficking API</a> . <a href="dfareporting_v2_7.dimensionValues.html">dimensionValues</a></h1>
+<h2>Instance Methods</h2>
+<p class="toc_element">
+  <code><a href="#query">query(profileId, body, pageToken=None, maxResults=None)</a></code></p>
+<p class="firstline">Retrieves list of report dimension values for a list of filters.</p>
+<p class="toc_element">
+  <code><a href="#query_next">query_next(previous_request, previous_response)</a></code></p>
+<p class="firstline">Retrieves the next page of results.</p>
+<h3>Method Details</h3>
+<div class="method">
+    <code class="details" id="query">query(profileId, body, pageToken=None, maxResults=None)</code>
+  <pre>Retrieves list of report dimension values for a list of filters.
+
+Args:
+  profileId: string, The DFA user profile ID. (required)
+  body: object, The request body. (required)
+    The object takes the form of:
+
+{ # Represents a DimensionValuesRequest.
+    "dimensionName": "A String", # The name of the dimension for which values should be requested.
+    "startDate": "A String", # The start date of the date range for which to retrieve dimension values. A string of the format "yyyy-MM-dd".
+    "kind": "dfareporting#dimensionValueRequest", # The kind of request this is, in this case dfareporting#dimensionValueRequest.
+    "endDate": "A String", # The end date of the date range for which to retrieve dimension values. A string of the format "yyyy-MM-dd".
+    "filters": [ # The list of filters by which to filter values. The filters are ANDed.
+      { # Represents a dimension filter.
+        "dimensionName": "A String", # The name of the dimension to filter.
+        "kind": "dfareporting#dimensionFilter", # The kind of resource this is, in this case dfareporting#dimensionFilter.
+        "value": "A String", # The value of the dimension to filter.
+      },
+    ],
+  }
+
+  pageToken: string, The value of the nextToken from the previous result page.
+  maxResults: integer, Maximum number of results to return.
+
+Returns:
+  An object of the form:
+
+    { # Represents the list of DimensionValue resources.
+    "nextPageToken": "A String", # Continuation token used to page through dimension values. To retrieve the next page of results, set the next request's "pageToken" to the value of this field. The page token is only valid for a limited amount of time and should not be persisted.
+    "items": [ # The dimension values returned in this response.
+      { # Represents a DimensionValue resource.
+        "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+        "value": "A String", # The value of the dimension.
+        "dimensionName": "A String", # The name of the dimension.
+        "etag": "A String", # The eTag of this response for caching purposes.
+        "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+        "id": "A String", # The ID associated with the value if available.
+      },
+    ],
+    "kind": "dfareporting#dimensionValueList", # The kind of list this is, in this case dfareporting#dimensionValueList.
+    "etag": "A String", # The eTag of this response for caching purposes.
+  }</pre>
+</div>
+
+<div class="method">
+    <code class="details" id="query_next">query_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>
+
+</body></html>
\ No newline at end of file
diff --git a/docs/dyn/dfareporting_v2_7.directorySiteContacts.html b/docs/dyn/dfareporting_v2_7.directorySiteContacts.html
new file mode 100644
index 0000000..f54a4c2
--- /dev/null
+++ b/docs/dyn/dfareporting_v2_7.directorySiteContacts.html
@@ -0,0 +1,169 @@
+<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="dfareporting_v2_7.html">DCM/DFA Reporting And Trafficking API</a> . <a href="dfareporting_v2_7.directorySiteContacts.html">directorySiteContacts</a></h1>
+<h2>Instance Methods</h2>
+<p class="toc_element">
+  <code><a href="#get">get(profileId, id)</a></code></p>
+<p class="firstline">Gets one directory site contact by ID.</p>
+<p class="toc_element">
+  <code><a href="#list">list(profileId, searchString=None, directorySiteIds=None, pageToken=None, sortField=None, ids=None, maxResults=None, sortOrder=None)</a></code></p>
+<p class="firstline">Retrieves a list of directory site contacts, possibly filtered. This method supports paging.</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>
+<h3>Method Details</h3>
+<div class="method">
+    <code class="details" id="get">get(profileId, id)</code>
+  <pre>Gets one directory site contact by ID.
+
+Args:
+  profileId: string, User profile ID associated with this request. (required)
+  id: string, Directory site contact ID. (required)
+
+Returns:
+  An object of the form:
+
+    { # Contains properties of a Site Directory contact.
+    "kind": "dfareporting#directorySiteContact", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#directorySiteContact".
+    "firstName": "A String", # First name of this directory site contact.
+    "title": "A String", # Title or designation of this directory site contact.
+    "lastName": "A String", # Last name of this directory site contact.
+    "email": "A String", # Email address of this directory site contact.
+    "phone": "A String", # Phone number of this directory site contact.
+    "role": "A String", # Directory site contact role.
+    "address": "A String", # Address of this directory site contact.
+    "type": "A String", # Directory site contact type.
+    "id": "A String", # ID of this directory site contact. This is a read-only, auto-generated field.
+  }</pre>
+</div>
+
+<div class="method">
+    <code class="details" id="list">list(profileId, searchString=None, directorySiteIds=None, pageToken=None, sortField=None, ids=None, maxResults=None, sortOrder=None)</code>
+  <pre>Retrieves a list of directory site contacts, possibly filtered. This method supports paging.
+
+Args:
+  profileId: string, User profile ID associated with this request. (required)
+  searchString: string, Allows searching for objects by name, ID or email. Wildcards (*) are allowed. For example, "directory site contact*2015" will return objects with names like "directory site contact June 2015", "directory site contact April 2015", or simply "directory site contact 2015". Most of the searches also add wildcards implicitly at the start and the end of the search string. For example, a search string of "directory site contact" will match objects with name "my directory site contact", "directory site contact 2015", or simply "directory site contact".
+  directorySiteIds: string, Select only directory site contacts with these directory site IDs. This is a required field. (repeated)
+  pageToken: string, Value of the nextPageToken from the previous result page.
+  sortField: string, Field by which to sort the list.
+    Allowed values
+      ID - 
+      NAME - 
+  ids: string, Select only directory site contacts with these IDs. (repeated)
+  maxResults: integer, Maximum number of results to return.
+  sortOrder: string, Order of sorted results, default is ASCENDING.
+    Allowed values
+      ASCENDING - 
+      DESCENDING - 
+
+Returns:
+  An object of the form:
+
+    { # Directory Site Contact List Response
+    "nextPageToken": "A String", # Pagination token to be used for the next list operation.
+    "directorySiteContacts": [ # Directory site contact collection
+      { # Contains properties of a Site Directory contact.
+        "kind": "dfareporting#directorySiteContact", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#directorySiteContact".
+        "firstName": "A String", # First name of this directory site contact.
+        "title": "A String", # Title or designation of this directory site contact.
+        "lastName": "A String", # Last name of this directory site contact.
+        "email": "A String", # Email address of this directory site contact.
+        "phone": "A String", # Phone number of this directory site contact.
+        "role": "A String", # Directory site contact role.
+        "address": "A String", # Address of this directory site contact.
+        "type": "A String", # Directory site contact type.
+        "id": "A String", # ID of this directory site contact. This is a read-only, auto-generated field.
+      },
+    ],
+    "kind": "dfareporting#directorySiteContactsListResponse", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#directorySiteContactsListResponse".
+  }</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>
+
+</body></html>
\ No newline at end of file
diff --git a/docs/dyn/dfareporting_v2_7.directorySites.html b/docs/dyn/dfareporting_v2_7.directorySites.html
new file mode 100644
index 0000000..d8e4969
--- /dev/null
+++ b/docs/dyn/dfareporting_v2_7.directorySites.html
@@ -0,0 +1,590 @@
+<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="dfareporting_v2_7.html">DCM/DFA Reporting And Trafficking API</a> . <a href="dfareporting_v2_7.directorySites.html">directorySites</a></h1>
+<h2>Instance Methods</h2>
+<p class="toc_element">
+  <code><a href="#get">get(profileId, id)</a></code></p>
+<p class="firstline">Gets one directory site by ID.</p>
+<p class="toc_element">
+  <code><a href="#insert">insert(profileId, body)</a></code></p>
+<p class="firstline">Inserts a new directory site.</p>
+<p class="toc_element">
+  <code><a href="#list">list(profileId, countryId=None, acceptsInStreamVideoPlacements=None, pageToken=None, sortOrder=None, parentId=None, acceptsPublisherPaidPlacements=None, acceptsInterstitialPlacements=None, maxResults=None, active=None, searchString=None, sortField=None, ids=None, dfp_network_code=None)</a></code></p>
+<p class="firstline">Retrieves a list of directory sites, possibly filtered. This method supports paging.</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>
+<h3>Method Details</h3>
+<div class="method">
+    <code class="details" id="get">get(profileId, id)</code>
+  <pre>Gets one directory site by ID.
+
+Args:
+  profileId: string, User profile ID associated with this request. (required)
+  id: string, Directory site ID. (required)
+
+Returns:
+  An object of the form:
+
+    { # DirectorySites contains properties of a website from the Site Directory. Sites need to be added to an account via the Sites resource before they can be assigned to a placement.
+      "kind": "dfareporting#directorySite", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#directorySite".
+      "countryId": "A String", # Country ID of this directory site.
+      "description": "A String", # Description of this directory site.
+      "settings": { # Directory Site Settings # Directory site settings.
+        "nielsenOcrOptOut": True or False, # Whether this directory site has disabled Nielsen OCR reach ratings.
+        "activeViewOptOut": True or False, # Whether this directory site has disabled active view creatives.
+        "dfp_settings": { # DFP Settings # Directory site DFP settings.
+          "publisherPortalOnly": True or False, # Whether this directory site is available only via DoubleClick Publisher Portal.
+          "dfp_network_name": "A String", # DFP network name for this directory site.
+          "pubPaidPlacementAccepted": True or False, # Whether this directory site accepts publisher-paid tags.
+          "programmaticPlacementAccepted": True or False, # Whether this directory site accepts programmatic placements.
+          "dfp_network_code": "A String", # DFP network code for this directory site.
+        },
+        "verificationTagOptOut": True or False, # Whether this directory site has disabled generation of Verification ins tags.
+        "instream_video_placement_accepted": True or False, # Whether this site accepts in-stream video ads.
+        "interstitialPlacementAccepted": True or False, # Whether this site accepts interstitial ads.
+        "videoActiveViewOptOut": True or False, # Whether this directory site has disabled active view for in-stream video creatives.
+      },
+      "currencyId": "A String", # Currency ID of this directory site.
+          # Possible values are:
+          # - "1" for USD
+          # - "2" for GBP
+          # - "3" for ESP
+          # - "4" for SEK
+          # - "5" for CAD
+          # - "6" for JPY
+          # - "7" for DEM
+          # - "8" for AUD
+          # - "9" for FRF
+          # - "10" for ITL
+          # - "11" for DKK
+          # - "12" for NOK
+          # - "13" for FIM
+          # - "14" for ZAR
+          # - "15" for IEP
+          # - "16" for NLG
+          # - "17" for EUR
+          # - "18" for KRW
+          # - "19" for TWD
+          # - "20" for SGD
+          # - "21" for CNY
+          # - "22" for HKD
+          # - "23" for NZD
+          # - "24" for MYR
+          # - "25" for BRL
+          # - "26" for PTE
+          # - "27" for MXP
+          # - "28" for CLP
+          # - "29" for TRY
+          # - "30" for ARS
+          # - "31" for PEN
+          # - "32" for ILS
+          # - "33" for CHF
+          # - "34" for VEF
+          # - "35" for COP
+          # - "36" for GTQ
+          # - "37" for PLN
+          # - "39" for INR
+          # - "40" for THB
+          # - "41" for IDR
+          # - "42" for CZK
+          # - "43" for RON
+          # - "44" for HUF
+          # - "45" for RUB
+          # - "46" for AED
+          # - "47" for BGN
+          # - "48" for HRK
+      "inpageTagFormats": [ # Tag types for regular placements.
+          #
+          # Acceptable values are:
+          # - "STANDARD"
+          # - "IFRAME_JAVASCRIPT_INPAGE"
+          # - "INTERNAL_REDIRECT_INPAGE"
+          # - "JAVASCRIPT_INPAGE"
+        "A String",
+      ],
+      "idDimensionValue": { # Represents a DimensionValue resource. # Dimension value for the ID of this directory site. This is a read-only, auto-generated field.
+        "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+        "value": "A String", # The value of the dimension.
+        "dimensionName": "A String", # The name of the dimension.
+        "etag": "A String", # The eTag of this response for caching purposes.
+        "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+        "id": "A String", # The ID associated with the value if available.
+      },
+      "interstitialTagFormats": [ # Tag types for interstitial placements.
+          #
+          # Acceptable values are:
+          # - "IFRAME_JAVASCRIPT_INTERSTITIAL"
+          # - "INTERNAL_REDIRECT_INTERSTITIAL"
+          # - "JAVASCRIPT_INTERSTITIAL"
+        "A String",
+      ],
+      "contactAssignments": [ # Directory site contacts.
+        { # Directory Site Contact Assignment
+          "contactId": "A String", # ID of this directory site contact. This is a read-only, auto-generated field.
+          "visibility": "A String", # Visibility of this directory site contact assignment. When set to PUBLIC this contact assignment is visible to all account and agency users; when set to PRIVATE it is visible only to the site.
+        },
+      ],
+      "url": "A String", # URL of this directory site.
+      "parentId": "A String", # Parent directory site ID.
+      "active": True or False, # Whether this directory site is active.
+      "id": "A String", # ID of this directory site. This is a read-only, auto-generated field.
+      "name": "A String", # Name of this directory site.
+    }</pre>
+</div>
+
+<div class="method">
+    <code class="details" id="insert">insert(profileId, body)</code>
+  <pre>Inserts a new directory site.
+
+Args:
+  profileId: string, User profile ID associated with this request. (required)
+  body: object, The request body. (required)
+    The object takes the form of:
+
+{ # DirectorySites contains properties of a website from the Site Directory. Sites need to be added to an account via the Sites resource before they can be assigned to a placement.
+    "kind": "dfareporting#directorySite", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#directorySite".
+    "countryId": "A String", # Country ID of this directory site.
+    "description": "A String", # Description of this directory site.
+    "settings": { # Directory Site Settings # Directory site settings.
+      "nielsenOcrOptOut": True or False, # Whether this directory site has disabled Nielsen OCR reach ratings.
+      "activeViewOptOut": True or False, # Whether this directory site has disabled active view creatives.
+      "dfp_settings": { # DFP Settings # Directory site DFP settings.
+        "publisherPortalOnly": True or False, # Whether this directory site is available only via DoubleClick Publisher Portal.
+        "dfp_network_name": "A String", # DFP network name for this directory site.
+        "pubPaidPlacementAccepted": True or False, # Whether this directory site accepts publisher-paid tags.
+        "programmaticPlacementAccepted": True or False, # Whether this directory site accepts programmatic placements.
+        "dfp_network_code": "A String", # DFP network code for this directory site.
+      },
+      "verificationTagOptOut": True or False, # Whether this directory site has disabled generation of Verification ins tags.
+      "instream_video_placement_accepted": True or False, # Whether this site accepts in-stream video ads.
+      "interstitialPlacementAccepted": True or False, # Whether this site accepts interstitial ads.
+      "videoActiveViewOptOut": True or False, # Whether this directory site has disabled active view for in-stream video creatives.
+    },
+    "currencyId": "A String", # Currency ID of this directory site.
+        # Possible values are:
+        # - "1" for USD
+        # - "2" for GBP
+        # - "3" for ESP
+        # - "4" for SEK
+        # - "5" for CAD
+        # - "6" for JPY
+        # - "7" for DEM
+        # - "8" for AUD
+        # - "9" for FRF
+        # - "10" for ITL
+        # - "11" for DKK
+        # - "12" for NOK
+        # - "13" for FIM
+        # - "14" for ZAR
+        # - "15" for IEP
+        # - "16" for NLG
+        # - "17" for EUR
+        # - "18" for KRW
+        # - "19" for TWD
+        # - "20" for SGD
+        # - "21" for CNY
+        # - "22" for HKD
+        # - "23" for NZD
+        # - "24" for MYR
+        # - "25" for BRL
+        # - "26" for PTE
+        # - "27" for MXP
+        # - "28" for CLP
+        # - "29" for TRY
+        # - "30" for ARS
+        # - "31" for PEN
+        # - "32" for ILS
+        # - "33" for CHF
+        # - "34" for VEF
+        # - "35" for COP
+        # - "36" for GTQ
+        # - "37" for PLN
+        # - "39" for INR
+        # - "40" for THB
+        # - "41" for IDR
+        # - "42" for CZK
+        # - "43" for RON
+        # - "44" for HUF
+        # - "45" for RUB
+        # - "46" for AED
+        # - "47" for BGN
+        # - "48" for HRK
+    "inpageTagFormats": [ # Tag types for regular placements.
+        # 
+        # Acceptable values are:
+        # - "STANDARD"
+        # - "IFRAME_JAVASCRIPT_INPAGE"
+        # - "INTERNAL_REDIRECT_INPAGE"
+        # - "JAVASCRIPT_INPAGE"
+      "A String",
+    ],
+    "idDimensionValue": { # Represents a DimensionValue resource. # Dimension value for the ID of this directory site. This is a read-only, auto-generated field.
+      "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+      "value": "A String", # The value of the dimension.
+      "dimensionName": "A String", # The name of the dimension.
+      "etag": "A String", # The eTag of this response for caching purposes.
+      "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+      "id": "A String", # The ID associated with the value if available.
+    },
+    "interstitialTagFormats": [ # Tag types for interstitial placements.
+        # 
+        # Acceptable values are:
+        # - "IFRAME_JAVASCRIPT_INTERSTITIAL"
+        # - "INTERNAL_REDIRECT_INTERSTITIAL"
+        # - "JAVASCRIPT_INTERSTITIAL"
+      "A String",
+    ],
+    "contactAssignments": [ # Directory site contacts.
+      { # Directory Site Contact Assignment
+        "contactId": "A String", # ID of this directory site contact. This is a read-only, auto-generated field.
+        "visibility": "A String", # Visibility of this directory site contact assignment. When set to PUBLIC this contact assignment is visible to all account and agency users; when set to PRIVATE it is visible only to the site.
+      },
+    ],
+    "url": "A String", # URL of this directory site.
+    "parentId": "A String", # Parent directory site ID.
+    "active": True or False, # Whether this directory site is active.
+    "id": "A String", # ID of this directory site. This is a read-only, auto-generated field.
+    "name": "A String", # Name of this directory site.
+  }
+
+
+Returns:
+  An object of the form:
+
+    { # DirectorySites contains properties of a website from the Site Directory. Sites need to be added to an account via the Sites resource before they can be assigned to a placement.
+      "kind": "dfareporting#directorySite", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#directorySite".
+      "countryId": "A String", # Country ID of this directory site.
+      "description": "A String", # Description of this directory site.
+      "settings": { # Directory Site Settings # Directory site settings.
+        "nielsenOcrOptOut": True or False, # Whether this directory site has disabled Nielsen OCR reach ratings.
+        "activeViewOptOut": True or False, # Whether this directory site has disabled active view creatives.
+        "dfp_settings": { # DFP Settings # Directory site DFP settings.
+          "publisherPortalOnly": True or False, # Whether this directory site is available only via DoubleClick Publisher Portal.
+          "dfp_network_name": "A String", # DFP network name for this directory site.
+          "pubPaidPlacementAccepted": True or False, # Whether this directory site accepts publisher-paid tags.
+          "programmaticPlacementAccepted": True or False, # Whether this directory site accepts programmatic placements.
+          "dfp_network_code": "A String", # DFP network code for this directory site.
+        },
+        "verificationTagOptOut": True or False, # Whether this directory site has disabled generation of Verification ins tags.
+        "instream_video_placement_accepted": True or False, # Whether this site accepts in-stream video ads.
+        "interstitialPlacementAccepted": True or False, # Whether this site accepts interstitial ads.
+        "videoActiveViewOptOut": True or False, # Whether this directory site has disabled active view for in-stream video creatives.
+      },
+      "currencyId": "A String", # Currency ID of this directory site.
+          # Possible values are:
+          # - "1" for USD
+          # - "2" for GBP
+          # - "3" for ESP
+          # - "4" for SEK
+          # - "5" for CAD
+          # - "6" for JPY
+          # - "7" for DEM
+          # - "8" for AUD
+          # - "9" for FRF
+          # - "10" for ITL
+          # - "11" for DKK
+          # - "12" for NOK
+          # - "13" for FIM
+          # - "14" for ZAR
+          # - "15" for IEP
+          # - "16" for NLG
+          # - "17" for EUR
+          # - "18" for KRW
+          # - "19" for TWD
+          # - "20" for SGD
+          # - "21" for CNY
+          # - "22" for HKD
+          # - "23" for NZD
+          # - "24" for MYR
+          # - "25" for BRL
+          # - "26" for PTE
+          # - "27" for MXP
+          # - "28" for CLP
+          # - "29" for TRY
+          # - "30" for ARS
+          # - "31" for PEN
+          # - "32" for ILS
+          # - "33" for CHF
+          # - "34" for VEF
+          # - "35" for COP
+          # - "36" for GTQ
+          # - "37" for PLN
+          # - "39" for INR
+          # - "40" for THB
+          # - "41" for IDR
+          # - "42" for CZK
+          # - "43" for RON
+          # - "44" for HUF
+          # - "45" for RUB
+          # - "46" for AED
+          # - "47" for BGN
+          # - "48" for HRK
+      "inpageTagFormats": [ # Tag types for regular placements.
+          #
+          # Acceptable values are:
+          # - "STANDARD"
+          # - "IFRAME_JAVASCRIPT_INPAGE"
+          # - "INTERNAL_REDIRECT_INPAGE"
+          # - "JAVASCRIPT_INPAGE"
+        "A String",
+      ],
+      "idDimensionValue": { # Represents a DimensionValue resource. # Dimension value for the ID of this directory site. This is a read-only, auto-generated field.
+        "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+        "value": "A String", # The value of the dimension.
+        "dimensionName": "A String", # The name of the dimension.
+        "etag": "A String", # The eTag of this response for caching purposes.
+        "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+        "id": "A String", # The ID associated with the value if available.
+      },
+      "interstitialTagFormats": [ # Tag types for interstitial placements.
+          #
+          # Acceptable values are:
+          # - "IFRAME_JAVASCRIPT_INTERSTITIAL"
+          # - "INTERNAL_REDIRECT_INTERSTITIAL"
+          # - "JAVASCRIPT_INTERSTITIAL"
+        "A String",
+      ],
+      "contactAssignments": [ # Directory site contacts.
+        { # Directory Site Contact Assignment
+          "contactId": "A String", # ID of this directory site contact. This is a read-only, auto-generated field.
+          "visibility": "A String", # Visibility of this directory site contact assignment. When set to PUBLIC this contact assignment is visible to all account and agency users; when set to PRIVATE it is visible only to the site.
+        },
+      ],
+      "url": "A String", # URL of this directory site.
+      "parentId": "A String", # Parent directory site ID.
+      "active": True or False, # Whether this directory site is active.
+      "id": "A String", # ID of this directory site. This is a read-only, auto-generated field.
+      "name": "A String", # Name of this directory site.
+    }</pre>
+</div>
+
+<div class="method">
+    <code class="details" id="list">list(profileId, countryId=None, acceptsInStreamVideoPlacements=None, pageToken=None, sortOrder=None, parentId=None, acceptsPublisherPaidPlacements=None, acceptsInterstitialPlacements=None, maxResults=None, active=None, searchString=None, sortField=None, ids=None, dfp_network_code=None)</code>
+  <pre>Retrieves a list of directory sites, possibly filtered. This method supports paging.
+
+Args:
+  profileId: string, User profile ID associated with this request. (required)
+  countryId: string, Select only directory sites with this country ID.
+  acceptsInStreamVideoPlacements: boolean, This search filter is no longer supported and will have no effect on the results returned.
+  pageToken: string, Value of the nextPageToken from the previous result page.
+  sortOrder: string, Order of sorted results, default is ASCENDING.
+    Allowed values
+      ASCENDING - 
+      DESCENDING - 
+  parentId: string, Select only directory sites with this parent ID.
+  acceptsPublisherPaidPlacements: boolean, Select only directory sites that accept publisher paid placements. This field can be left blank.
+  acceptsInterstitialPlacements: boolean, This search filter is no longer supported and will have no effect on the results returned.
+  maxResults: integer, Maximum number of results to return.
+  active: boolean, Select only active directory sites. Leave blank to retrieve both active and inactive directory sites.
+  searchString: string, Allows searching for objects by name, ID or URL. Wildcards (*) are allowed. For example, "directory site*2015" will return objects with names like "directory site June 2015", "directory site April 2015", or simply "directory site 2015". Most of the searches also add wildcards implicitly at the start and the end of the search string. For example, a search string of "directory site" will match objects with name "my directory site", "directory site 2015" or simply, "directory site".
+  sortField: string, Field by which to sort the list.
+    Allowed values
+      ID - 
+      NAME - 
+  ids: string, Select only directory sites with these IDs. (repeated)
+  dfp_network_code: string, Select only directory sites with this DFP network code.
+
+Returns:
+  An object of the form:
+
+    { # Directory Site List Response
+    "nextPageToken": "A String", # Pagination token to be used for the next list operation.
+    "kind": "dfareporting#directorySitesListResponse", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#directorySitesListResponse".
+    "directorySites": [ # Directory site collection.
+      { # DirectorySites contains properties of a website from the Site Directory. Sites need to be added to an account via the Sites resource before they can be assigned to a placement.
+          "kind": "dfareporting#directorySite", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#directorySite".
+          "countryId": "A String", # Country ID of this directory site.
+          "description": "A String", # Description of this directory site.
+          "settings": { # Directory Site Settings # Directory site settings.
+            "nielsenOcrOptOut": True or False, # Whether this directory site has disabled Nielsen OCR reach ratings.
+            "activeViewOptOut": True or False, # Whether this directory site has disabled active view creatives.
+            "dfp_settings": { # DFP Settings # Directory site DFP settings.
+              "publisherPortalOnly": True or False, # Whether this directory site is available only via DoubleClick Publisher Portal.
+              "dfp_network_name": "A String", # DFP network name for this directory site.
+              "pubPaidPlacementAccepted": True or False, # Whether this directory site accepts publisher-paid tags.
+              "programmaticPlacementAccepted": True or False, # Whether this directory site accepts programmatic placements.
+              "dfp_network_code": "A String", # DFP network code for this directory site.
+            },
+            "verificationTagOptOut": True or False, # Whether this directory site has disabled generation of Verification ins tags.
+            "instream_video_placement_accepted": True or False, # Whether this site accepts in-stream video ads.
+            "interstitialPlacementAccepted": True or False, # Whether this site accepts interstitial ads.
+            "videoActiveViewOptOut": True or False, # Whether this directory site has disabled active view for in-stream video creatives.
+          },
+          "currencyId": "A String", # Currency ID of this directory site.
+              # Possible values are:
+              # - "1" for USD
+              # - "2" for GBP
+              # - "3" for ESP
+              # - "4" for SEK
+              # - "5" for CAD
+              # - "6" for JPY
+              # - "7" for DEM
+              # - "8" for AUD
+              # - "9" for FRF
+              # - "10" for ITL
+              # - "11" for DKK
+              # - "12" for NOK
+              # - "13" for FIM
+              # - "14" for ZAR
+              # - "15" for IEP
+              # - "16" for NLG
+              # - "17" for EUR
+              # - "18" for KRW
+              # - "19" for TWD
+              # - "20" for SGD
+              # - "21" for CNY
+              # - "22" for HKD
+              # - "23" for NZD
+              # - "24" for MYR
+              # - "25" for BRL
+              # - "26" for PTE
+              # - "27" for MXP
+              # - "28" for CLP
+              # - "29" for TRY
+              # - "30" for ARS
+              # - "31" for PEN
+              # - "32" for ILS
+              # - "33" for CHF
+              # - "34" for VEF
+              # - "35" for COP
+              # - "36" for GTQ
+              # - "37" for PLN
+              # - "39" for INR
+              # - "40" for THB
+              # - "41" for IDR
+              # - "42" for CZK
+              # - "43" for RON
+              # - "44" for HUF
+              # - "45" for RUB
+              # - "46" for AED
+              # - "47" for BGN
+              # - "48" for HRK
+          "inpageTagFormats": [ # Tag types for regular placements.
+              #
+              # Acceptable values are:
+              # - "STANDARD"
+              # - "IFRAME_JAVASCRIPT_INPAGE"
+              # - "INTERNAL_REDIRECT_INPAGE"
+              # - "JAVASCRIPT_INPAGE"
+            "A String",
+          ],
+          "idDimensionValue": { # Represents a DimensionValue resource. # Dimension value for the ID of this directory site. This is a read-only, auto-generated field.
+            "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+            "value": "A String", # The value of the dimension.
+            "dimensionName": "A String", # The name of the dimension.
+            "etag": "A String", # The eTag of this response for caching purposes.
+            "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+            "id": "A String", # The ID associated with the value if available.
+          },
+          "interstitialTagFormats": [ # Tag types for interstitial placements.
+              #
+              # Acceptable values are:
+              # - "IFRAME_JAVASCRIPT_INTERSTITIAL"
+              # - "INTERNAL_REDIRECT_INTERSTITIAL"
+              # - "JAVASCRIPT_INTERSTITIAL"
+            "A String",
+          ],
+          "contactAssignments": [ # Directory site contacts.
+            { # Directory Site Contact Assignment
+              "contactId": "A String", # ID of this directory site contact. This is a read-only, auto-generated field.
+              "visibility": "A String", # Visibility of this directory site contact assignment. When set to PUBLIC this contact assignment is visible to all account and agency users; when set to PRIVATE it is visible only to the site.
+            },
+          ],
+          "url": "A String", # URL of this directory site.
+          "parentId": "A String", # Parent directory site ID.
+          "active": True or False, # Whether this directory site is active.
+          "id": "A String", # ID of this directory site. This is a read-only, auto-generated field.
+          "name": "A String", # Name of this directory site.
+        },
+    ],
+  }</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>
+
+</body></html>
\ No newline at end of file
diff --git a/docs/dyn/dfareporting_v2_7.dynamicTargetingKeys.html b/docs/dyn/dfareporting_v2_7.dynamicTargetingKeys.html
new file mode 100644
index 0000000..0c0ac5f
--- /dev/null
+++ b/docs/dyn/dfareporting_v2_7.dynamicTargetingKeys.html
@@ -0,0 +1,164 @@
+<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="dfareporting_v2_7.html">DCM/DFA Reporting And Trafficking API</a> . <a href="dfareporting_v2_7.dynamicTargetingKeys.html">dynamicTargetingKeys</a></h1>
+<h2>Instance Methods</h2>
+<p class="toc_element">
+  <code><a href="#delete">delete(profileId, objectId, name, objectType)</a></code></p>
+<p class="firstline">Deletes an existing dynamic targeting key.</p>
+<p class="toc_element">
+  <code><a href="#insert">insert(profileId, body)</a></code></p>
+<p class="firstline">Inserts a new dynamic targeting key. Keys must be created at the advertiser level before being assigned to the advertiser's ads, creatives, or placements. There is a maximum of 1000 keys per advertiser, out of which a maximum of 20 keys can be assigned per ad, creative, or placement.</p>
+<p class="toc_element">
+  <code><a href="#list">list(profileId, advertiserId=None, objectId=None, names=None, objectType=None)</a></code></p>
+<p class="firstline">Retrieves a list of dynamic targeting keys.</p>
+<h3>Method Details</h3>
+<div class="method">
+    <code class="details" id="delete">delete(profileId, objectId, name, objectType)</code>
+  <pre>Deletes an existing dynamic targeting key.
+
+Args:
+  profileId: string, User profile ID associated with this request. (required)
+  objectId: string, ID of the object of this dynamic targeting key. This is a required field. (required)
+  name: string, Name of this dynamic targeting key. This is a required field. Must be less than 256 characters long and cannot contain commas. All characters are converted to lowercase. (required)
+  objectType: string, Type of the object of this dynamic targeting key. This is a required field. (required)
+    Allowed values
+      OBJECT_AD - 
+      OBJECT_ADVERTISER - 
+      OBJECT_CREATIVE - 
+      OBJECT_PLACEMENT - 
+</pre>
+</div>
+
+<div class="method">
+    <code class="details" id="insert">insert(profileId, body)</code>
+  <pre>Inserts a new dynamic targeting key. Keys must be created at the advertiser level before being assigned to the advertiser's ads, creatives, or placements. There is a maximum of 1000 keys per advertiser, out of which a maximum of 20 keys can be assigned per ad, creative, or placement.
+
+Args:
+  profileId: string, User profile ID associated with this request. (required)
+  body: object, The request body. (required)
+    The object takes the form of:
+
+{ # Contains properties of a dynamic targeting key. Dynamic targeting keys are unique, user-friendly labels, created at the advertiser level in DCM, that can be assigned to ads, creatives, and placements and used for targeting with DoubleClick Studio dynamic creatives. Use these labels instead of numeric DCM IDs (such as placement IDs) to save time and avoid errors in your dynamic feeds.
+    "kind": "dfareporting#dynamicTargetingKey", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#dynamicTargetingKey".
+    "name": "A String", # Name of this dynamic targeting key. This is a required field. Must be less than 256 characters long and cannot contain commas. All characters are converted to lowercase.
+    "objectId": "A String", # ID of the object of this dynamic targeting key. This is a required field.
+    "objectType": "A String", # Type of the object of this dynamic targeting key. This is a required field.
+  }
+
+
+Returns:
+  An object of the form:
+
+    { # Contains properties of a dynamic targeting key. Dynamic targeting keys are unique, user-friendly labels, created at the advertiser level in DCM, that can be assigned to ads, creatives, and placements and used for targeting with DoubleClick Studio dynamic creatives. Use these labels instead of numeric DCM IDs (such as placement IDs) to save time and avoid errors in your dynamic feeds.
+      "kind": "dfareporting#dynamicTargetingKey", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#dynamicTargetingKey".
+      "name": "A String", # Name of this dynamic targeting key. This is a required field. Must be less than 256 characters long and cannot contain commas. All characters are converted to lowercase.
+      "objectId": "A String", # ID of the object of this dynamic targeting key. This is a required field.
+      "objectType": "A String", # Type of the object of this dynamic targeting key. This is a required field.
+    }</pre>
+</div>
+
+<div class="method">
+    <code class="details" id="list">list(profileId, advertiserId=None, objectId=None, names=None, objectType=None)</code>
+  <pre>Retrieves a list of dynamic targeting keys.
+
+Args:
+  profileId: string, User profile ID associated with this request. (required)
+  advertiserId: string, Select only dynamic targeting keys whose object has this advertiser ID.
+  objectId: string, Select only dynamic targeting keys with this object ID.
+  names: string, Select only dynamic targeting keys exactly matching these names. (repeated)
+  objectType: string, Select only dynamic targeting keys with this object type.
+    Allowed values
+      OBJECT_AD - 
+      OBJECT_ADVERTISER - 
+      OBJECT_CREATIVE - 
+      OBJECT_PLACEMENT - 
+
+Returns:
+  An object of the form:
+
+    { # Dynamic Targeting Key List Response
+    "kind": "dfareporting#dynamicTargetingKeysListResponse", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#dynamicTargetingKeysListResponse".
+    "dynamicTargetingKeys": [ # Dynamic targeting key collection.
+      { # Contains properties of a dynamic targeting key. Dynamic targeting keys are unique, user-friendly labels, created at the advertiser level in DCM, that can be assigned to ads, creatives, and placements and used for targeting with DoubleClick Studio dynamic creatives. Use these labels instead of numeric DCM IDs (such as placement IDs) to save time and avoid errors in your dynamic feeds.
+          "kind": "dfareporting#dynamicTargetingKey", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#dynamicTargetingKey".
+          "name": "A String", # Name of this dynamic targeting key. This is a required field. Must be less than 256 characters long and cannot contain commas. All characters are converted to lowercase.
+          "objectId": "A String", # ID of the object of this dynamic targeting key. This is a required field.
+          "objectType": "A String", # Type of the object of this dynamic targeting key. This is a required field.
+        },
+    ],
+  }</pre>
+</div>
+
+</body></html>
\ No newline at end of file
diff --git a/docs/dyn/dfareporting_v2_7.eventTags.html b/docs/dyn/dfareporting_v2_7.eventTags.html
new file mode 100644
index 0000000..b4cebf1
--- /dev/null
+++ b/docs/dyn/dfareporting_v2_7.eventTags.html
@@ -0,0 +1,493 @@
+<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="dfareporting_v2_7.html">DCM/DFA Reporting And Trafficking API</a> . <a href="dfareporting_v2_7.eventTags.html">eventTags</a></h1>
+<h2>Instance Methods</h2>
+<p class="toc_element">
+  <code><a href="#delete">delete(profileId, id)</a></code></p>
+<p class="firstline">Deletes an existing event tag.</p>
+<p class="toc_element">
+  <code><a href="#get">get(profileId, id)</a></code></p>
+<p class="firstline">Gets one event tag by ID.</p>
+<p class="toc_element">
+  <code><a href="#insert">insert(profileId, body)</a></code></p>
+<p class="firstline">Inserts a new event tag.</p>
+<p class="toc_element">
+  <code><a href="#list">list(profileId, campaignId=None, advertiserId=None, adId=None, sortOrder=None, definitionsOnly=None, eventTagTypes=None, searchString=None, sortField=None, enabled=None, ids=None)</a></code></p>
+<p class="firstline">Retrieves a list of event tags, possibly filtered.</p>
+<p class="toc_element">
+  <code><a href="#patch">patch(profileId, id, body)</a></code></p>
+<p class="firstline">Updates an existing event tag. This method supports patch semantics.</p>
+<p class="toc_element">
+  <code><a href="#update">update(profileId, body)</a></code></p>
+<p class="firstline">Updates an existing event tag.</p>
+<h3>Method Details</h3>
+<div class="method">
+    <code class="details" id="delete">delete(profileId, id)</code>
+  <pre>Deletes an existing event tag.
+
+Args:
+  profileId: string, User profile ID associated with this request. (required)
+  id: string, Event tag ID. (required)
+</pre>
+</div>
+
+<div class="method">
+    <code class="details" id="get">get(profileId, id)</code>
+  <pre>Gets one event tag by ID.
+
+Args:
+  profileId: string, User profile ID associated with this request. (required)
+  id: string, Event tag ID. (required)
+
+Returns:
+  An object of the form:
+
+    { # Contains properties of an event tag.
+      "status": "A String", # Status of this event tag. Must be ENABLED for this event tag to fire. This is a required field.
+      "campaignIdDimensionValue": { # Represents a DimensionValue resource. # Dimension value for the ID of the campaign. This is a read-only, auto-generated field.
+        "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+        "value": "A String", # The value of the dimension.
+        "dimensionName": "A String", # The name of the dimension.
+        "etag": "A String", # The eTag of this response for caching purposes.
+        "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+        "id": "A String", # The ID associated with the value if available.
+      },
+      "subaccountId": "A String", # Subaccount ID of this event tag. This is a read-only field that can be left blank.
+      "name": "A String", # Name of this event tag. This is a required field and must be less than 256 characters long.
+      "campaignId": "A String", # Campaign ID of this event tag. This field or the advertiserId field is required on insertion.
+      "url": "A String", # Payload URL for this event tag. The URL on a click-through event tag should have a landing page URL appended to the end of it. This field is required on insertion.
+      "sslCompliant": True or False, # Whether this tag is SSL-compliant or not. This is a read-only field.
+      "urlEscapeLevels": 42, # Number of times the landing page URL should be URL-escaped before being appended to the click-through event tag URL. Only applies to click-through event tags as specified by the event tag type.
+      "kind": "dfareporting#eventTag", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#eventTag".
+      "enabledByDefault": True or False, # Whether this event tag should be automatically enabled for all of the advertiser's campaigns and ads.
+      "advertiserId": "A String", # Advertiser ID of this event tag. This field or the campaignId field is required on insertion.
+      "siteFilterType": "A String", # Site filter type for this event tag. If no type is specified then the event tag will be applied to all sites.
+      "advertiserIdDimensionValue": { # Represents a DimensionValue resource. # Dimension value for the ID of the advertiser. This is a read-only, auto-generated field.
+        "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+        "value": "A String", # The value of the dimension.
+        "dimensionName": "A String", # The name of the dimension.
+        "etag": "A String", # The eTag of this response for caching purposes.
+        "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+        "id": "A String", # The ID associated with the value if available.
+      },
+      "siteIds": [ # Filter list of site IDs associated with this event tag. The siteFilterType determines whether this is a whitelist or blacklist filter.
+        "A String",
+      ],
+      "excludeFromAdxRequests": True or False, # Whether to remove this event tag from ads that are trafficked through DoubleClick Bid Manager to Ad Exchange. This may be useful if the event tag uses a pixel that is unapproved for Ad Exchange bids on one or more networks, such as the Google Display Network.
+      "type": "A String", # Event tag type. Can be used to specify whether to use a third-party pixel, a third-party JavaScript URL, or a third-party click-through URL for either impression or click tracking. This is a required field.
+      "id": "A String", # ID of this event tag. This is a read-only, auto-generated field.
+      "accountId": "A String", # Account ID of this event tag. This is a read-only field that can be left blank.
+    }</pre>
+</div>
+
+<div class="method">
+    <code class="details" id="insert">insert(profileId, body)</code>
+  <pre>Inserts a new event tag.
+
+Args:
+  profileId: string, User profile ID associated with this request. (required)
+  body: object, The request body. (required)
+    The object takes the form of:
+
+{ # Contains properties of an event tag.
+    "status": "A String", # Status of this event tag. Must be ENABLED for this event tag to fire. This is a required field.
+    "campaignIdDimensionValue": { # Represents a DimensionValue resource. # Dimension value for the ID of the campaign. This is a read-only, auto-generated field.
+      "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+      "value": "A String", # The value of the dimension.
+      "dimensionName": "A String", # The name of the dimension.
+      "etag": "A String", # The eTag of this response for caching purposes.
+      "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+      "id": "A String", # The ID associated with the value if available.
+    },
+    "subaccountId": "A String", # Subaccount ID of this event tag. This is a read-only field that can be left blank.
+    "name": "A String", # Name of this event tag. This is a required field and must be less than 256 characters long.
+    "campaignId": "A String", # Campaign ID of this event tag. This field or the advertiserId field is required on insertion.
+    "url": "A String", # Payload URL for this event tag. The URL on a click-through event tag should have a landing page URL appended to the end of it. This field is required on insertion.
+    "sslCompliant": True or False, # Whether this tag is SSL-compliant or not. This is a read-only field.
+    "urlEscapeLevels": 42, # Number of times the landing page URL should be URL-escaped before being appended to the click-through event tag URL. Only applies to click-through event tags as specified by the event tag type.
+    "kind": "dfareporting#eventTag", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#eventTag".
+    "enabledByDefault": True or False, # Whether this event tag should be automatically enabled for all of the advertiser's campaigns and ads.
+    "advertiserId": "A String", # Advertiser ID of this event tag. This field or the campaignId field is required on insertion.
+    "siteFilterType": "A String", # Site filter type for this event tag. If no type is specified then the event tag will be applied to all sites.
+    "advertiserIdDimensionValue": { # Represents a DimensionValue resource. # Dimension value for the ID of the advertiser. This is a read-only, auto-generated field.
+      "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+      "value": "A String", # The value of the dimension.
+      "dimensionName": "A String", # The name of the dimension.
+      "etag": "A String", # The eTag of this response for caching purposes.
+      "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+      "id": "A String", # The ID associated with the value if available.
+    },
+    "siteIds": [ # Filter list of site IDs associated with this event tag. The siteFilterType determines whether this is a whitelist or blacklist filter.
+      "A String",
+    ],
+    "excludeFromAdxRequests": True or False, # Whether to remove this event tag from ads that are trafficked through DoubleClick Bid Manager to Ad Exchange. This may be useful if the event tag uses a pixel that is unapproved for Ad Exchange bids on one or more networks, such as the Google Display Network.
+    "type": "A String", # Event tag type. Can be used to specify whether to use a third-party pixel, a third-party JavaScript URL, or a third-party click-through URL for either impression or click tracking. This is a required field.
+    "id": "A String", # ID of this event tag. This is a read-only, auto-generated field.
+    "accountId": "A String", # Account ID of this event tag. This is a read-only field that can be left blank.
+  }
+
+
+Returns:
+  An object of the form:
+
+    { # Contains properties of an event tag.
+      "status": "A String", # Status of this event tag. Must be ENABLED for this event tag to fire. This is a required field.
+      "campaignIdDimensionValue": { # Represents a DimensionValue resource. # Dimension value for the ID of the campaign. This is a read-only, auto-generated field.
+        "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+        "value": "A String", # The value of the dimension.
+        "dimensionName": "A String", # The name of the dimension.
+        "etag": "A String", # The eTag of this response for caching purposes.
+        "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+        "id": "A String", # The ID associated with the value if available.
+      },
+      "subaccountId": "A String", # Subaccount ID of this event tag. This is a read-only field that can be left blank.
+      "name": "A String", # Name of this event tag. This is a required field and must be less than 256 characters long.
+      "campaignId": "A String", # Campaign ID of this event tag. This field or the advertiserId field is required on insertion.
+      "url": "A String", # Payload URL for this event tag. The URL on a click-through event tag should have a landing page URL appended to the end of it. This field is required on insertion.
+      "sslCompliant": True or False, # Whether this tag is SSL-compliant or not. This is a read-only field.
+      "urlEscapeLevels": 42, # Number of times the landing page URL should be URL-escaped before being appended to the click-through event tag URL. Only applies to click-through event tags as specified by the event tag type.
+      "kind": "dfareporting#eventTag", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#eventTag".
+      "enabledByDefault": True or False, # Whether this event tag should be automatically enabled for all of the advertiser's campaigns and ads.
+      "advertiserId": "A String", # Advertiser ID of this event tag. This field or the campaignId field is required on insertion.
+      "siteFilterType": "A String", # Site filter type for this event tag. If no type is specified then the event tag will be applied to all sites.
+      "advertiserIdDimensionValue": { # Represents a DimensionValue resource. # Dimension value for the ID of the advertiser. This is a read-only, auto-generated field.
+        "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+        "value": "A String", # The value of the dimension.
+        "dimensionName": "A String", # The name of the dimension.
+        "etag": "A String", # The eTag of this response for caching purposes.
+        "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+        "id": "A String", # The ID associated with the value if available.
+      },
+      "siteIds": [ # Filter list of site IDs associated with this event tag. The siteFilterType determines whether this is a whitelist or blacklist filter.
+        "A String",
+      ],
+      "excludeFromAdxRequests": True or False, # Whether to remove this event tag from ads that are trafficked through DoubleClick Bid Manager to Ad Exchange. This may be useful if the event tag uses a pixel that is unapproved for Ad Exchange bids on one or more networks, such as the Google Display Network.
+      "type": "A String", # Event tag type. Can be used to specify whether to use a third-party pixel, a third-party JavaScript URL, or a third-party click-through URL for either impression or click tracking. This is a required field.
+      "id": "A String", # ID of this event tag. This is a read-only, auto-generated field.
+      "accountId": "A String", # Account ID of this event tag. This is a read-only field that can be left blank.
+    }</pre>
+</div>
+
+<div class="method">
+    <code class="details" id="list">list(profileId, campaignId=None, advertiserId=None, adId=None, sortOrder=None, definitionsOnly=None, eventTagTypes=None, searchString=None, sortField=None, enabled=None, ids=None)</code>
+  <pre>Retrieves a list of event tags, possibly filtered.
+
+Args:
+  profileId: string, User profile ID associated with this request. (required)
+  campaignId: string, Select only event tags that belong to this campaign.
+  advertiserId: string, Select only event tags that belong to this advertiser.
+  adId: string, Select only event tags that belong to this ad.
+  sortOrder: string, Order of sorted results, default is ASCENDING.
+    Allowed values
+      ASCENDING - 
+      DESCENDING - 
+  definitionsOnly: boolean, Examine only the specified campaign or advertiser's event tags for matching selector criteria. When set to false, the parent advertiser and parent campaign of the specified ad or campaign is examined as well. In addition, when set to false, the status field is examined as well, along with the enabledByDefault field. This parameter can not be set to true when adId is specified as ads do not define their own even tags.
+  eventTagTypes: string, Select only event tags with the specified event tag types. Event tag types can be used to specify whether to use a third-party pixel, a third-party JavaScript URL, or a third-party click-through URL for either impression or click tracking. (repeated)
+    Allowed values
+      CLICK_THROUGH_EVENT_TAG - 
+      IMPRESSION_IMAGE_EVENT_TAG - 
+      IMPRESSION_JAVASCRIPT_EVENT_TAG - 
+  searchString: string, Allows searching for objects by name or ID. Wildcards (*) are allowed. For example, "eventtag*2015" will return objects with names like "eventtag June 2015", "eventtag April 2015", or simply "eventtag 2015". Most of the searches also add wildcards implicitly at the start and the end of the search string. For example, a search string of "eventtag" will match objects with name "my eventtag", "eventtag 2015", or simply "eventtag".
+  sortField: string, Field by which to sort the list.
+    Allowed values
+      ID - 
+      NAME - 
+  enabled: boolean, Select only enabled event tags. What is considered enabled or disabled depends on the definitionsOnly parameter. When definitionsOnly is set to true, only the specified advertiser or campaign's event tags' enabledByDefault field is examined. When definitionsOnly is set to false, the specified ad or specified campaign's parent advertiser's or parent campaign's event tags' enabledByDefault and status fields are examined as well.
+  ids: string, Select only event tags with these IDs. (repeated)
+
+Returns:
+  An object of the form:
+
+    { # Event Tag List Response
+    "eventTags": [ # Event tag collection.
+      { # Contains properties of an event tag.
+          "status": "A String", # Status of this event tag. Must be ENABLED for this event tag to fire. This is a required field.
+          "campaignIdDimensionValue": { # Represents a DimensionValue resource. # Dimension value for the ID of the campaign. This is a read-only, auto-generated field.
+            "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+            "value": "A String", # The value of the dimension.
+            "dimensionName": "A String", # The name of the dimension.
+            "etag": "A String", # The eTag of this response for caching purposes.
+            "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+            "id": "A String", # The ID associated with the value if available.
+          },
+          "subaccountId": "A String", # Subaccount ID of this event tag. This is a read-only field that can be left blank.
+          "name": "A String", # Name of this event tag. This is a required field and must be less than 256 characters long.
+          "campaignId": "A String", # Campaign ID of this event tag. This field or the advertiserId field is required on insertion.
+          "url": "A String", # Payload URL for this event tag. The URL on a click-through event tag should have a landing page URL appended to the end of it. This field is required on insertion.
+          "sslCompliant": True or False, # Whether this tag is SSL-compliant or not. This is a read-only field.
+          "urlEscapeLevels": 42, # Number of times the landing page URL should be URL-escaped before being appended to the click-through event tag URL. Only applies to click-through event tags as specified by the event tag type.
+          "kind": "dfareporting#eventTag", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#eventTag".
+          "enabledByDefault": True or False, # Whether this event tag should be automatically enabled for all of the advertiser's campaigns and ads.
+          "advertiserId": "A String", # Advertiser ID of this event tag. This field or the campaignId field is required on insertion.
+          "siteFilterType": "A String", # Site filter type for this event tag. If no type is specified then the event tag will be applied to all sites.
+          "advertiserIdDimensionValue": { # Represents a DimensionValue resource. # Dimension value for the ID of the advertiser. This is a read-only, auto-generated field.
+            "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+            "value": "A String", # The value of the dimension.
+            "dimensionName": "A String", # The name of the dimension.
+            "etag": "A String", # The eTag of this response for caching purposes.
+            "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+            "id": "A String", # The ID associated with the value if available.
+          },
+          "siteIds": [ # Filter list of site IDs associated with this event tag. The siteFilterType determines whether this is a whitelist or blacklist filter.
+            "A String",
+          ],
+          "excludeFromAdxRequests": True or False, # Whether to remove this event tag from ads that are trafficked through DoubleClick Bid Manager to Ad Exchange. This may be useful if the event tag uses a pixel that is unapproved for Ad Exchange bids on one or more networks, such as the Google Display Network.
+          "type": "A String", # Event tag type. Can be used to specify whether to use a third-party pixel, a third-party JavaScript URL, or a third-party click-through URL for either impression or click tracking. This is a required field.
+          "id": "A String", # ID of this event tag. This is a read-only, auto-generated field.
+          "accountId": "A String", # Account ID of this event tag. This is a read-only field that can be left blank.
+        },
+    ],
+    "kind": "dfareporting#eventTagsListResponse", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#eventTagsListResponse".
+  }</pre>
+</div>
+
+<div class="method">
+    <code class="details" id="patch">patch(profileId, id, body)</code>
+  <pre>Updates an existing event tag. This method supports patch semantics.
+
+Args:
+  profileId: string, User profile ID associated with this request. (required)
+  id: string, Event tag ID. (required)
+  body: object, The request body. (required)
+    The object takes the form of:
+
+{ # Contains properties of an event tag.
+    "status": "A String", # Status of this event tag. Must be ENABLED for this event tag to fire. This is a required field.
+    "campaignIdDimensionValue": { # Represents a DimensionValue resource. # Dimension value for the ID of the campaign. This is a read-only, auto-generated field.
+      "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+      "value": "A String", # The value of the dimension.
+      "dimensionName": "A String", # The name of the dimension.
+      "etag": "A String", # The eTag of this response for caching purposes.
+      "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+      "id": "A String", # The ID associated with the value if available.
+    },
+    "subaccountId": "A String", # Subaccount ID of this event tag. This is a read-only field that can be left blank.
+    "name": "A String", # Name of this event tag. This is a required field and must be less than 256 characters long.
+    "campaignId": "A String", # Campaign ID of this event tag. This field or the advertiserId field is required on insertion.
+    "url": "A String", # Payload URL for this event tag. The URL on a click-through event tag should have a landing page URL appended to the end of it. This field is required on insertion.
+    "sslCompliant": True or False, # Whether this tag is SSL-compliant or not. This is a read-only field.
+    "urlEscapeLevels": 42, # Number of times the landing page URL should be URL-escaped before being appended to the click-through event tag URL. Only applies to click-through event tags as specified by the event tag type.
+    "kind": "dfareporting#eventTag", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#eventTag".
+    "enabledByDefault": True or False, # Whether this event tag should be automatically enabled for all of the advertiser's campaigns and ads.
+    "advertiserId": "A String", # Advertiser ID of this event tag. This field or the campaignId field is required on insertion.
+    "siteFilterType": "A String", # Site filter type for this event tag. If no type is specified then the event tag will be applied to all sites.
+    "advertiserIdDimensionValue": { # Represents a DimensionValue resource. # Dimension value for the ID of the advertiser. This is a read-only, auto-generated field.
+      "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+      "value": "A String", # The value of the dimension.
+      "dimensionName": "A String", # The name of the dimension.
+      "etag": "A String", # The eTag of this response for caching purposes.
+      "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+      "id": "A String", # The ID associated with the value if available.
+    },
+    "siteIds": [ # Filter list of site IDs associated with this event tag. The siteFilterType determines whether this is a whitelist or blacklist filter.
+      "A String",
+    ],
+    "excludeFromAdxRequests": True or False, # Whether to remove this event tag from ads that are trafficked through DoubleClick Bid Manager to Ad Exchange. This may be useful if the event tag uses a pixel that is unapproved for Ad Exchange bids on one or more networks, such as the Google Display Network.
+    "type": "A String", # Event tag type. Can be used to specify whether to use a third-party pixel, a third-party JavaScript URL, or a third-party click-through URL for either impression or click tracking. This is a required field.
+    "id": "A String", # ID of this event tag. This is a read-only, auto-generated field.
+    "accountId": "A String", # Account ID of this event tag. This is a read-only field that can be left blank.
+  }
+
+
+Returns:
+  An object of the form:
+
+    { # Contains properties of an event tag.
+      "status": "A String", # Status of this event tag. Must be ENABLED for this event tag to fire. This is a required field.
+      "campaignIdDimensionValue": { # Represents a DimensionValue resource. # Dimension value for the ID of the campaign. This is a read-only, auto-generated field.
+        "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+        "value": "A String", # The value of the dimension.
+        "dimensionName": "A String", # The name of the dimension.
+        "etag": "A String", # The eTag of this response for caching purposes.
+        "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+        "id": "A String", # The ID associated with the value if available.
+      },
+      "subaccountId": "A String", # Subaccount ID of this event tag. This is a read-only field that can be left blank.
+      "name": "A String", # Name of this event tag. This is a required field and must be less than 256 characters long.
+      "campaignId": "A String", # Campaign ID of this event tag. This field or the advertiserId field is required on insertion.
+      "url": "A String", # Payload URL for this event tag. The URL on a click-through event tag should have a landing page URL appended to the end of it. This field is required on insertion.
+      "sslCompliant": True or False, # Whether this tag is SSL-compliant or not. This is a read-only field.
+      "urlEscapeLevels": 42, # Number of times the landing page URL should be URL-escaped before being appended to the click-through event tag URL. Only applies to click-through event tags as specified by the event tag type.
+      "kind": "dfareporting#eventTag", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#eventTag".
+      "enabledByDefault": True or False, # Whether this event tag should be automatically enabled for all of the advertiser's campaigns and ads.
+      "advertiserId": "A String", # Advertiser ID of this event tag. This field or the campaignId field is required on insertion.
+      "siteFilterType": "A String", # Site filter type for this event tag. If no type is specified then the event tag will be applied to all sites.
+      "advertiserIdDimensionValue": { # Represents a DimensionValue resource. # Dimension value for the ID of the advertiser. This is a read-only, auto-generated field.
+        "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+        "value": "A String", # The value of the dimension.
+        "dimensionName": "A String", # The name of the dimension.
+        "etag": "A String", # The eTag of this response for caching purposes.
+        "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+        "id": "A String", # The ID associated with the value if available.
+      },
+      "siteIds": [ # Filter list of site IDs associated with this event tag. The siteFilterType determines whether this is a whitelist or blacklist filter.
+        "A String",
+      ],
+      "excludeFromAdxRequests": True or False, # Whether to remove this event tag from ads that are trafficked through DoubleClick Bid Manager to Ad Exchange. This may be useful if the event tag uses a pixel that is unapproved for Ad Exchange bids on one or more networks, such as the Google Display Network.
+      "type": "A String", # Event tag type. Can be used to specify whether to use a third-party pixel, a third-party JavaScript URL, or a third-party click-through URL for either impression or click tracking. This is a required field.
+      "id": "A String", # ID of this event tag. This is a read-only, auto-generated field.
+      "accountId": "A String", # Account ID of this event tag. This is a read-only field that can be left blank.
+    }</pre>
+</div>
+
+<div class="method">
+    <code class="details" id="update">update(profileId, body)</code>
+  <pre>Updates an existing event tag.
+
+Args:
+  profileId: string, User profile ID associated with this request. (required)
+  body: object, The request body. (required)
+    The object takes the form of:
+
+{ # Contains properties of an event tag.
+    "status": "A String", # Status of this event tag. Must be ENABLED for this event tag to fire. This is a required field.
+    "campaignIdDimensionValue": { # Represents a DimensionValue resource. # Dimension value for the ID of the campaign. This is a read-only, auto-generated field.
+      "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+      "value": "A String", # The value of the dimension.
+      "dimensionName": "A String", # The name of the dimension.
+      "etag": "A String", # The eTag of this response for caching purposes.
+      "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+      "id": "A String", # The ID associated with the value if available.
+    },
+    "subaccountId": "A String", # Subaccount ID of this event tag. This is a read-only field that can be left blank.
+    "name": "A String", # Name of this event tag. This is a required field and must be less than 256 characters long.
+    "campaignId": "A String", # Campaign ID of this event tag. This field or the advertiserId field is required on insertion.
+    "url": "A String", # Payload URL for this event tag. The URL on a click-through event tag should have a landing page URL appended to the end of it. This field is required on insertion.
+    "sslCompliant": True or False, # Whether this tag is SSL-compliant or not. This is a read-only field.
+    "urlEscapeLevels": 42, # Number of times the landing page URL should be URL-escaped before being appended to the click-through event tag URL. Only applies to click-through event tags as specified by the event tag type.
+    "kind": "dfareporting#eventTag", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#eventTag".
+    "enabledByDefault": True or False, # Whether this event tag should be automatically enabled for all of the advertiser's campaigns and ads.
+    "advertiserId": "A String", # Advertiser ID of this event tag. This field or the campaignId field is required on insertion.
+    "siteFilterType": "A String", # Site filter type for this event tag. If no type is specified then the event tag will be applied to all sites.
+    "advertiserIdDimensionValue": { # Represents a DimensionValue resource. # Dimension value for the ID of the advertiser. This is a read-only, auto-generated field.
+      "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+      "value": "A String", # The value of the dimension.
+      "dimensionName": "A String", # The name of the dimension.
+      "etag": "A String", # The eTag of this response for caching purposes.
+      "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+      "id": "A String", # The ID associated with the value if available.
+    },
+    "siteIds": [ # Filter list of site IDs associated with this event tag. The siteFilterType determines whether this is a whitelist or blacklist filter.
+      "A String",
+    ],
+    "excludeFromAdxRequests": True or False, # Whether to remove this event tag from ads that are trafficked through DoubleClick Bid Manager to Ad Exchange. This may be useful if the event tag uses a pixel that is unapproved for Ad Exchange bids on one or more networks, such as the Google Display Network.
+    "type": "A String", # Event tag type. Can be used to specify whether to use a third-party pixel, a third-party JavaScript URL, or a third-party click-through URL for either impression or click tracking. This is a required field.
+    "id": "A String", # ID of this event tag. This is a read-only, auto-generated field.
+    "accountId": "A String", # Account ID of this event tag. This is a read-only field that can be left blank.
+  }
+
+
+Returns:
+  An object of the form:
+
+    { # Contains properties of an event tag.
+      "status": "A String", # Status of this event tag. Must be ENABLED for this event tag to fire. This is a required field.
+      "campaignIdDimensionValue": { # Represents a DimensionValue resource. # Dimension value for the ID of the campaign. This is a read-only, auto-generated field.
+        "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+        "value": "A String", # The value of the dimension.
+        "dimensionName": "A String", # The name of the dimension.
+        "etag": "A String", # The eTag of this response for caching purposes.
+        "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+        "id": "A String", # The ID associated with the value if available.
+      },
+      "subaccountId": "A String", # Subaccount ID of this event tag. This is a read-only field that can be left blank.
+      "name": "A String", # Name of this event tag. This is a required field and must be less than 256 characters long.
+      "campaignId": "A String", # Campaign ID of this event tag. This field or the advertiserId field is required on insertion.
+      "url": "A String", # Payload URL for this event tag. The URL on a click-through event tag should have a landing page URL appended to the end of it. This field is required on insertion.
+      "sslCompliant": True or False, # Whether this tag is SSL-compliant or not. This is a read-only field.
+      "urlEscapeLevels": 42, # Number of times the landing page URL should be URL-escaped before being appended to the click-through event tag URL. Only applies to click-through event tags as specified by the event tag type.
+      "kind": "dfareporting#eventTag", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#eventTag".
+      "enabledByDefault": True or False, # Whether this event tag should be automatically enabled for all of the advertiser's campaigns and ads.
+      "advertiserId": "A String", # Advertiser ID of this event tag. This field or the campaignId field is required on insertion.
+      "siteFilterType": "A String", # Site filter type for this event tag. If no type is specified then the event tag will be applied to all sites.
+      "advertiserIdDimensionValue": { # Represents a DimensionValue resource. # Dimension value for the ID of the advertiser. This is a read-only, auto-generated field.
+        "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+        "value": "A String", # The value of the dimension.
+        "dimensionName": "A String", # The name of the dimension.
+        "etag": "A String", # The eTag of this response for caching purposes.
+        "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+        "id": "A String", # The ID associated with the value if available.
+      },
+      "siteIds": [ # Filter list of site IDs associated with this event tag. The siteFilterType determines whether this is a whitelist or blacklist filter.
+        "A String",
+      ],
+      "excludeFromAdxRequests": True or False, # Whether to remove this event tag from ads that are trafficked through DoubleClick Bid Manager to Ad Exchange. This may be useful if the event tag uses a pixel that is unapproved for Ad Exchange bids on one or more networks, such as the Google Display Network.
+      "type": "A String", # Event tag type. Can be used to specify whether to use a third-party pixel, a third-party JavaScript URL, or a third-party click-through URL for either impression or click tracking. This is a required field.
+      "id": "A String", # ID of this event tag. This is a read-only, auto-generated field.
+      "accountId": "A String", # Account ID of this event tag. This is a read-only field that can be left blank.
+    }</pre>
+</div>
+
+</body></html>
\ No newline at end of file
diff --git a/docs/dyn/dfareporting_v2_7.files.html b/docs/dyn/dfareporting_v2_7.files.html
new file mode 100644
index 0000000..5f5851a
--- /dev/null
+++ b/docs/dyn/dfareporting_v2_7.files.html
@@ -0,0 +1,205 @@
+<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="dfareporting_v2_7.html">DCM/DFA Reporting And Trafficking API</a> . <a href="dfareporting_v2_7.files.html">files</a></h1>
+<h2>Instance Methods</h2>
+<p class="toc_element">
+  <code><a href="#get">get(reportId, fileId)</a></code></p>
+<p class="firstline">Retrieves a report file by its report ID and file ID.</p>
+<p class="toc_element">
+  <code><a href="#get_media">get_media(reportId, fileId)</a></code></p>
+<p class="firstline">Retrieves a report file by its report ID and file ID.</p>
+<p class="toc_element">
+  <code><a href="#list">list(profileId, pageToken=None, maxResults=None, sortOrder=None, sortField=None, scope=None)</a></code></p>
+<p class="firstline">Lists files for a user profile.</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>
+<h3>Method Details</h3>
+<div class="method">
+    <code class="details" id="get">get(reportId, fileId)</code>
+  <pre>Retrieves a report file by its report ID and file ID.
+
+Args:
+  reportId: string, The ID of the report. (required)
+  fileId: string, The ID of the report file. (required)
+
+Returns:
+  An object of the form:
+
+    { # Represents a File resource. A file contains the metadata for a report run. It shows the status of the run and holds the URLs to the generated report data if the run is finished and the status is "REPORT_AVAILABLE".
+    "status": "A String", # The status of the report file.
+    "kind": "dfareporting#file", # The kind of resource this is, in this case dfareporting#file.
+    "format": "A String", # The output format of the report. Only available once the file is available.
+    "dateRange": { # Represents a date range. # The date range for which the file has report data. The date range will always be the absolute date range for which the report is run.
+      "startDate": "A String", # The start date of the date range, inclusive. A string of the format: "yyyy-MM-dd".
+      "kind": "dfareporting#dateRange", # The kind of resource this is, in this case dfareporting#dateRange.
+      "endDate": "A String", # The end date of the date range, inclusive. A string of the format: "yyyy-MM-dd".
+      "relativeDateRange": "A String", # The date range relative to the date of when the report is run.
+    },
+    "fileName": "A String", # The filename of the file.
+    "etag": "A String", # The eTag of this response for caching purposes.
+    "reportId": "A String", # The ID of the report this file was generated from.
+    "urls": { # The URLs where the completed report file can be downloaded.
+      "browserUrl": "A String", # The URL for downloading the report data through a browser.
+      "apiUrl": "A String", # The URL for downloading the report data through the API.
+    },
+    "lastModifiedTime": "A String", # The timestamp in milliseconds since epoch when this file was last modified.
+    "id": "A String", # The unique ID of this report file.
+  }</pre>
+</div>
+
+<div class="method">
+    <code class="details" id="get_media">get_media(reportId, fileId)</code>
+  <pre>Retrieves a report file by its report ID and file ID.
+
+Args:
+  reportId: string, The ID of the report. (required)
+  fileId: string, The ID of the report file. (required)
+
+Returns:
+  The media object as a string.
+
+    </pre>
+</div>
+
+<div class="method">
+    <code class="details" id="list">list(profileId, pageToken=None, maxResults=None, sortOrder=None, sortField=None, scope=None)</code>
+  <pre>Lists files for a user profile.
+
+Args:
+  profileId: string, The DFA profile ID. (required)
+  pageToken: string, The value of the nextToken from the previous result page.
+  maxResults: integer, Maximum number of results to return.
+  sortOrder: string, Order of sorted results, default is 'DESCENDING'.
+    Allowed values
+      ASCENDING - Ascending order.
+      DESCENDING - Descending order.
+  sortField: string, The field by which to sort the list.
+    Allowed values
+      ID - Sort by file ID.
+      LAST_MODIFIED_TIME - Sort by 'lastmodifiedAt' field.
+  scope: string, The scope that defines which results are returned, default is 'MINE'.
+    Allowed values
+      ALL - All files in account.
+      MINE - My files.
+      SHARED_WITH_ME - Files shared with me.
+
+Returns:
+  An object of the form:
+
+    { # Represents the list of File resources.
+    "nextPageToken": "A String", # Continuation token used to page through files. To retrieve the next page of results, set the next request's "pageToken" to the value of this field. The page token is only valid for a limited amount of time and should not be persisted.
+    "items": [ # The files returned in this response.
+      { # Represents a File resource. A file contains the metadata for a report run. It shows the status of the run and holds the URLs to the generated report data if the run is finished and the status is "REPORT_AVAILABLE".
+        "status": "A String", # The status of the report file.
+        "kind": "dfareporting#file", # The kind of resource this is, in this case dfareporting#file.
+        "format": "A String", # The output format of the report. Only available once the file is available.
+        "dateRange": { # Represents a date range. # The date range for which the file has report data. The date range will always be the absolute date range for which the report is run.
+          "startDate": "A String", # The start date of the date range, inclusive. A string of the format: "yyyy-MM-dd".
+          "kind": "dfareporting#dateRange", # The kind of resource this is, in this case dfareporting#dateRange.
+          "endDate": "A String", # The end date of the date range, inclusive. A string of the format: "yyyy-MM-dd".
+          "relativeDateRange": "A String", # The date range relative to the date of when the report is run.
+        },
+        "fileName": "A String", # The filename of the file.
+        "etag": "A String", # The eTag of this response for caching purposes.
+        "reportId": "A String", # The ID of the report this file was generated from.
+        "urls": { # The URLs where the completed report file can be downloaded.
+          "browserUrl": "A String", # The URL for downloading the report data through a browser.
+          "apiUrl": "A String", # The URL for downloading the report data through the API.
+        },
+        "lastModifiedTime": "A String", # The timestamp in milliseconds since epoch when this file was last modified.
+        "id": "A String", # The unique ID of this report file.
+      },
+    ],
+    "kind": "dfareporting#fileList", # The kind of list this is, in this case dfareporting#fileList.
+    "etag": "A String", # The eTag of this response for caching purposes.
+  }</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>
+
+</body></html>
\ No newline at end of file
diff --git a/docs/dyn/dfareporting_v2_7.floodlightActivities.html b/docs/dyn/dfareporting_v2_7.floodlightActivities.html
new file mode 100644
index 0000000..8c88286
--- /dev/null
+++ b/docs/dyn/dfareporting_v2_7.floodlightActivities.html
@@ -0,0 +1,1045 @@
+<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="dfareporting_v2_7.html">DCM/DFA Reporting And Trafficking API</a> . <a href="dfareporting_v2_7.floodlightActivities.html">floodlightActivities</a></h1>
+<h2>Instance Methods</h2>
+<p class="toc_element">
+  <code><a href="#delete">delete(profileId, id)</a></code></p>
+<p class="firstline">Deletes an existing floodlight activity.</p>
+<p class="toc_element">
+  <code><a href="#generatetag">generatetag(profileId, floodlightActivityId=None)</a></code></p>
+<p class="firstline">Generates a tag for a floodlight activity.</p>
+<p class="toc_element">
+  <code><a href="#get">get(profileId, id)</a></code></p>
+<p class="firstline">Gets one floodlight activity by ID.</p>
+<p class="toc_element">
+  <code><a href="#insert">insert(profileId, body)</a></code></p>
+<p class="firstline">Inserts a new floodlight activity.</p>
+<p class="toc_element">
+  <code><a href="#list">list(profileId, floodlightActivityGroupName=None, advertiserId=None, tagString=None, floodlightActivityGroupTagString=None, floodlightActivityGroupIds=None, pageToken=None, sortOrder=None, maxResults=None, searchString=None, sortField=None, floodlightConfigurationId=None, ids=None, floodlightActivityGroupType=None)</a></code></p>
+<p class="firstline">Retrieves a list of floodlight activities, possibly filtered. This method supports paging.</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="#patch">patch(profileId, id, body)</a></code></p>
+<p class="firstline">Updates an existing floodlight activity. This method supports patch semantics.</p>
+<p class="toc_element">
+  <code><a href="#update">update(profileId, body)</a></code></p>
+<p class="firstline">Updates an existing floodlight activity.</p>
+<h3>Method Details</h3>
+<div class="method">
+    <code class="details" id="delete">delete(profileId, id)</code>
+  <pre>Deletes an existing floodlight activity.
+
+Args:
+  profileId: string, User profile ID associated with this request. (required)
+  id: string, Floodlight activity ID. (required)
+</pre>
+</div>
+
+<div class="method">
+    <code class="details" id="generatetag">generatetag(profileId, floodlightActivityId=None)</code>
+  <pre>Generates a tag for a floodlight activity.
+
+Args:
+  profileId: string, User profile ID associated with this request. (required)
+  floodlightActivityId: string, Floodlight activity ID for which we want to generate a tag.
+
+Returns:
+  An object of the form:
+
+    { # Floodlight Activity GenerateTag Response
+    "kind": "dfareporting#floodlightActivitiesGenerateTagResponse", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#floodlightActivitiesGenerateTagResponse".
+    "floodlightActivityTag": "A String", # Generated tag for this floodlight activity.
+  }</pre>
+</div>
+
+<div class="method">
+    <code class="details" id="get">get(profileId, id)</code>
+  <pre>Gets one floodlight activity by ID.
+
+Args:
+  profileId: string, User profile ID associated with this request. (required)
+  id: string, Floodlight activity ID. (required)
+
+Returns:
+  An object of the form:
+
+    { # Contains properties of a Floodlight activity.
+      "tagString": "A String", # Value of the cat= paramter in the floodlight tag, which the ad servers use to identify the activity. This is optional: if empty, a new tag string will be generated for you. This string must be 1 to 8 characters long, with valid characters being [a-z][A-Z][0-9][-][ _ ]. This tag string must also be unique among activities of the same activity group. This field is read-only after insertion.
+      "secure": True or False, # Whether this tag should use SSL.
+      "floodlightActivityGroupName": "A String", # Name of the associated floodlight activity group. This is a read-only field.
+      "imageTagEnabled": True or False, # Whether the image tag is enabled for this activity.
+      "advertiserId": "A String", # Advertiser ID of this floodlight activity. If this field is left blank, the value will be copied over either from the activity group's advertiser or the existing activity's advertiser.
+      "tagFormat": "A String", # Tag format type for the floodlight activity. If left blank, the tag format will default to HTML.
+      "advertiserIdDimensionValue": { # Represents a DimensionValue resource. # Dimension value for the ID of the advertiser. This is a read-only, auto-generated field.
+        "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+        "value": "A String", # The value of the dimension.
+        "dimensionName": "A String", # The name of the dimension.
+        "etag": "A String", # The eTag of this response for caching purposes.
+        "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+        "id": "A String", # The ID associated with the value if available.
+      },
+      "floodlightActivityGroupId": "A String", # Floodlight activity group ID of this floodlight activity. This is a required field.
+      "id": "A String", # ID of this floodlight activity. This is a read-only, auto-generated field.
+      "floodlightActivityGroupTagString": "A String", # Tag string of the associated floodlight activity group. This is a read-only field.
+      "publisherTags": [ # Publisher dynamic floodlight tags.
+        { # Publisher Dynamic Tag
+          "viewThrough": True or False, # Whether this tag is applicable only for view-throughs.
+          "clickThrough": True or False, # Whether this tag is applicable only for click-throughs.
+          "siteId": "A String", # Site ID of this dynamic tag.
+          "dynamicTag": { # Dynamic Tag # Dynamic floodlight tag.
+            "tag": "A String", # Tag code.
+            "id": "A String", # ID of this dynamic tag. This is a read-only, auto-generated field.
+            "name": "A String", # Name of this tag.
+          },
+          "directorySiteId": "A String", # Directory site ID of this dynamic tag. This is a write-only field that can be used as an alternative to the siteId field. When this resource is retrieved, only the siteId field will be populated.
+          "siteIdDimensionValue": { # Represents a DimensionValue resource. # Dimension value for the ID of the site. This is a read-only, auto-generated field.
+            "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+            "value": "A String", # The value of the dimension.
+            "dimensionName": "A String", # The name of the dimension.
+            "etag": "A String", # The eTag of this response for caching purposes.
+            "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+            "id": "A String", # The ID associated with the value if available.
+          },
+        },
+      ],
+      "sslCompliant": True or False, # Whether the floodlight activity is SSL-compliant. This is a read-only field, its value detected by the system from the floodlight tags.
+      "floodlightConfigurationIdDimensionValue": { # Represents a DimensionValue resource. # Dimension value for the ID of the floodlight configuration. This is a read-only, auto-generated field.
+        "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+        "value": "A String", # The value of the dimension.
+        "dimensionName": "A String", # The name of the dimension.
+        "etag": "A String", # The eTag of this response for caching purposes.
+        "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+        "id": "A String", # The ID associated with the value if available.
+      },
+      "idDimensionValue": { # Represents a DimensionValue resource. # Dimension value for the ID of this floodlight activity. This is a read-only, auto-generated field.
+        "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+        "value": "A String", # The value of the dimension.
+        "dimensionName": "A String", # The name of the dimension.
+        "etag": "A String", # The eTag of this response for caching purposes.
+        "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+        "id": "A String", # The ID associated with the value if available.
+      },
+      "hidden": True or False, # Whether this activity is archived.
+      "accountId": "A String", # Account ID of this floodlight activity. This is a read-only field that can be left blank.
+      "sslRequired": True or False, # Whether this floodlight activity must be SSL-compliant.
+      "expectedUrl": "A String", # URL where this tag will be deployed. If specified, must be less than 256 characters long.
+      "cacheBustingType": "A String", # Code type used for cache busting in the generated tag.
+      "kind": "dfareporting#floodlightActivity", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#floodlightActivity".
+      "subaccountId": "A String", # Subaccount ID of this floodlight activity. This is a read-only field that can be left blank.
+      "name": "A String", # Name of this floodlight activity. This is a required field. Must be less than 129 characters long and cannot contain quotes.
+      "notes": "A String", # General notes or implementation instructions for the tag.
+      "floodlightConfigurationId": "A String", # Floodlight configuration ID of this floodlight activity. If this field is left blank, the value will be copied over either from the activity group's floodlight configuration or from the existing activity's floodlight configuration.
+      "userDefinedVariableTypes": [ # List of the user-defined variables used by this conversion tag. These map to the "u[1-20]=" in the tags. Each of these can have a user defined type.
+          # Acceptable values are:
+          # - "U1"
+          # - "U2"
+          # - "U3"
+          # - "U4"
+          # - "U5"
+          # - "U6"
+          # - "U7"
+          # - "U8"
+          # - "U9"
+          # - "U10"
+          # - "U11"
+          # - "U12"
+          # - "U13"
+          # - "U14"
+          # - "U15"
+          # - "U16"
+          # - "U17"
+          # - "U18"
+          # - "U19"
+          # - "U20"
+        "A String",
+      ],
+      "defaultTags": [ # Dynamic floodlight tags.
+        { # Dynamic Tag
+          "tag": "A String", # Tag code.
+          "id": "A String", # ID of this dynamic tag. This is a read-only, auto-generated field.
+          "name": "A String", # Name of this tag.
+        },
+      ],
+      "countingMethod": "A String", # Counting method for conversions for this floodlight activity. This is a required field.
+      "floodlightActivityGroupType": "A String", # Type of the associated floodlight activity group. This is a read-only field.
+    }</pre>
+</div>
+
+<div class="method">
+    <code class="details" id="insert">insert(profileId, body)</code>
+  <pre>Inserts a new floodlight activity.
+
+Args:
+  profileId: string, User profile ID associated with this request. (required)
+  body: object, The request body. (required)
+    The object takes the form of:
+
+{ # Contains properties of a Floodlight activity.
+    "tagString": "A String", # Value of the cat= paramter in the floodlight tag, which the ad servers use to identify the activity. This is optional: if empty, a new tag string will be generated for you. This string must be 1 to 8 characters long, with valid characters being [a-z][A-Z][0-9][-][ _ ]. This tag string must also be unique among activities of the same activity group. This field is read-only after insertion.
+    "secure": True or False, # Whether this tag should use SSL.
+    "floodlightActivityGroupName": "A String", # Name of the associated floodlight activity group. This is a read-only field.
+    "imageTagEnabled": True or False, # Whether the image tag is enabled for this activity.
+    "advertiserId": "A String", # Advertiser ID of this floodlight activity. If this field is left blank, the value will be copied over either from the activity group's advertiser or the existing activity's advertiser.
+    "tagFormat": "A String", # Tag format type for the floodlight activity. If left blank, the tag format will default to HTML.
+    "advertiserIdDimensionValue": { # Represents a DimensionValue resource. # Dimension value for the ID of the advertiser. This is a read-only, auto-generated field.
+      "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+      "value": "A String", # The value of the dimension.
+      "dimensionName": "A String", # The name of the dimension.
+      "etag": "A String", # The eTag of this response for caching purposes.
+      "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+      "id": "A String", # The ID associated with the value if available.
+    },
+    "floodlightActivityGroupId": "A String", # Floodlight activity group ID of this floodlight activity. This is a required field.
+    "id": "A String", # ID of this floodlight activity. This is a read-only, auto-generated field.
+    "floodlightActivityGroupTagString": "A String", # Tag string of the associated floodlight activity group. This is a read-only field.
+    "publisherTags": [ # Publisher dynamic floodlight tags.
+      { # Publisher Dynamic Tag
+        "viewThrough": True or False, # Whether this tag is applicable only for view-throughs.
+        "clickThrough": True or False, # Whether this tag is applicable only for click-throughs.
+        "siteId": "A String", # Site ID of this dynamic tag.
+        "dynamicTag": { # Dynamic Tag # Dynamic floodlight tag.
+          "tag": "A String", # Tag code.
+          "id": "A String", # ID of this dynamic tag. This is a read-only, auto-generated field.
+          "name": "A String", # Name of this tag.
+        },
+        "directorySiteId": "A String", # Directory site ID of this dynamic tag. This is a write-only field that can be used as an alternative to the siteId field. When this resource is retrieved, only the siteId field will be populated.
+        "siteIdDimensionValue": { # Represents a DimensionValue resource. # Dimension value for the ID of the site. This is a read-only, auto-generated field.
+          "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+          "value": "A String", # The value of the dimension.
+          "dimensionName": "A String", # The name of the dimension.
+          "etag": "A String", # The eTag of this response for caching purposes.
+          "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+          "id": "A String", # The ID associated with the value if available.
+        },
+      },
+    ],
+    "sslCompliant": True or False, # Whether the floodlight activity is SSL-compliant. This is a read-only field, its value detected by the system from the floodlight tags.
+    "floodlightConfigurationIdDimensionValue": { # Represents a DimensionValue resource. # Dimension value for the ID of the floodlight configuration. This is a read-only, auto-generated field.
+      "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+      "value": "A String", # The value of the dimension.
+      "dimensionName": "A String", # The name of the dimension.
+      "etag": "A String", # The eTag of this response for caching purposes.
+      "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+      "id": "A String", # The ID associated with the value if available.
+    },
+    "idDimensionValue": { # Represents a DimensionValue resource. # Dimension value for the ID of this floodlight activity. This is a read-only, auto-generated field.
+      "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+      "value": "A String", # The value of the dimension.
+      "dimensionName": "A String", # The name of the dimension.
+      "etag": "A String", # The eTag of this response for caching purposes.
+      "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+      "id": "A String", # The ID associated with the value if available.
+    },
+    "hidden": True or False, # Whether this activity is archived.
+    "accountId": "A String", # Account ID of this floodlight activity. This is a read-only field that can be left blank.
+    "sslRequired": True or False, # Whether this floodlight activity must be SSL-compliant.
+    "expectedUrl": "A String", # URL where this tag will be deployed. If specified, must be less than 256 characters long.
+    "cacheBustingType": "A String", # Code type used for cache busting in the generated tag.
+    "kind": "dfareporting#floodlightActivity", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#floodlightActivity".
+    "subaccountId": "A String", # Subaccount ID of this floodlight activity. This is a read-only field that can be left blank.
+    "name": "A String", # Name of this floodlight activity. This is a required field. Must be less than 129 characters long and cannot contain quotes.
+    "notes": "A String", # General notes or implementation instructions for the tag.
+    "floodlightConfigurationId": "A String", # Floodlight configuration ID of this floodlight activity. If this field is left blank, the value will be copied over either from the activity group's floodlight configuration or from the existing activity's floodlight configuration.
+    "userDefinedVariableTypes": [ # List of the user-defined variables used by this conversion tag. These map to the "u[1-20]=" in the tags. Each of these can have a user defined type.
+        # Acceptable values are:
+        # - "U1"
+        # - "U2"
+        # - "U3"
+        # - "U4"
+        # - "U5"
+        # - "U6"
+        # - "U7"
+        # - "U8"
+        # - "U9"
+        # - "U10"
+        # - "U11"
+        # - "U12"
+        # - "U13"
+        # - "U14"
+        # - "U15"
+        # - "U16"
+        # - "U17"
+        # - "U18"
+        # - "U19"
+        # - "U20"
+      "A String",
+    ],
+    "defaultTags": [ # Dynamic floodlight tags.
+      { # Dynamic Tag
+        "tag": "A String", # Tag code.
+        "id": "A String", # ID of this dynamic tag. This is a read-only, auto-generated field.
+        "name": "A String", # Name of this tag.
+      },
+    ],
+    "countingMethod": "A String", # Counting method for conversions for this floodlight activity. This is a required field.
+    "floodlightActivityGroupType": "A String", # Type of the associated floodlight activity group. This is a read-only field.
+  }
+
+
+Returns:
+  An object of the form:
+
+    { # Contains properties of a Floodlight activity.
+      "tagString": "A String", # Value of the cat= paramter in the floodlight tag, which the ad servers use to identify the activity. This is optional: if empty, a new tag string will be generated for you. This string must be 1 to 8 characters long, with valid characters being [a-z][A-Z][0-9][-][ _ ]. This tag string must also be unique among activities of the same activity group. This field is read-only after insertion.
+      "secure": True or False, # Whether this tag should use SSL.
+      "floodlightActivityGroupName": "A String", # Name of the associated floodlight activity group. This is a read-only field.
+      "imageTagEnabled": True or False, # Whether the image tag is enabled for this activity.
+      "advertiserId": "A String", # Advertiser ID of this floodlight activity. If this field is left blank, the value will be copied over either from the activity group's advertiser or the existing activity's advertiser.
+      "tagFormat": "A String", # Tag format type for the floodlight activity. If left blank, the tag format will default to HTML.
+      "advertiserIdDimensionValue": { # Represents a DimensionValue resource. # Dimension value for the ID of the advertiser. This is a read-only, auto-generated field.
+        "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+        "value": "A String", # The value of the dimension.
+        "dimensionName": "A String", # The name of the dimension.
+        "etag": "A String", # The eTag of this response for caching purposes.
+        "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+        "id": "A String", # The ID associated with the value if available.
+      },
+      "floodlightActivityGroupId": "A String", # Floodlight activity group ID of this floodlight activity. This is a required field.
+      "id": "A String", # ID of this floodlight activity. This is a read-only, auto-generated field.
+      "floodlightActivityGroupTagString": "A String", # Tag string of the associated floodlight activity group. This is a read-only field.
+      "publisherTags": [ # Publisher dynamic floodlight tags.
+        { # Publisher Dynamic Tag
+          "viewThrough": True or False, # Whether this tag is applicable only for view-throughs.
+          "clickThrough": True or False, # Whether this tag is applicable only for click-throughs.
+          "siteId": "A String", # Site ID of this dynamic tag.
+          "dynamicTag": { # Dynamic Tag # Dynamic floodlight tag.
+            "tag": "A String", # Tag code.
+            "id": "A String", # ID of this dynamic tag. This is a read-only, auto-generated field.
+            "name": "A String", # Name of this tag.
+          },
+          "directorySiteId": "A String", # Directory site ID of this dynamic tag. This is a write-only field that can be used as an alternative to the siteId field. When this resource is retrieved, only the siteId field will be populated.
+          "siteIdDimensionValue": { # Represents a DimensionValue resource. # Dimension value for the ID of the site. This is a read-only, auto-generated field.
+            "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+            "value": "A String", # The value of the dimension.
+            "dimensionName": "A String", # The name of the dimension.
+            "etag": "A String", # The eTag of this response for caching purposes.
+            "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+            "id": "A String", # The ID associated with the value if available.
+          },
+        },
+      ],
+      "sslCompliant": True or False, # Whether the floodlight activity is SSL-compliant. This is a read-only field, its value detected by the system from the floodlight tags.
+      "floodlightConfigurationIdDimensionValue": { # Represents a DimensionValue resource. # Dimension value for the ID of the floodlight configuration. This is a read-only, auto-generated field.
+        "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+        "value": "A String", # The value of the dimension.
+        "dimensionName": "A String", # The name of the dimension.
+        "etag": "A String", # The eTag of this response for caching purposes.
+        "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+        "id": "A String", # The ID associated with the value if available.
+      },
+      "idDimensionValue": { # Represents a DimensionValue resource. # Dimension value for the ID of this floodlight activity. This is a read-only, auto-generated field.
+        "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+        "value": "A String", # The value of the dimension.
+        "dimensionName": "A String", # The name of the dimension.
+        "etag": "A String", # The eTag of this response for caching purposes.
+        "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+        "id": "A String", # The ID associated with the value if available.
+      },
+      "hidden": True or False, # Whether this activity is archived.
+      "accountId": "A String", # Account ID of this floodlight activity. This is a read-only field that can be left blank.
+      "sslRequired": True or False, # Whether this floodlight activity must be SSL-compliant.
+      "expectedUrl": "A String", # URL where this tag will be deployed. If specified, must be less than 256 characters long.
+      "cacheBustingType": "A String", # Code type used for cache busting in the generated tag.
+      "kind": "dfareporting#floodlightActivity", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#floodlightActivity".
+      "subaccountId": "A String", # Subaccount ID of this floodlight activity. This is a read-only field that can be left blank.
+      "name": "A String", # Name of this floodlight activity. This is a required field. Must be less than 129 characters long and cannot contain quotes.
+      "notes": "A String", # General notes or implementation instructions for the tag.
+      "floodlightConfigurationId": "A String", # Floodlight configuration ID of this floodlight activity. If this field is left blank, the value will be copied over either from the activity group's floodlight configuration or from the existing activity's floodlight configuration.
+      "userDefinedVariableTypes": [ # List of the user-defined variables used by this conversion tag. These map to the "u[1-20]=" in the tags. Each of these can have a user defined type.
+          # Acceptable values are:
+          # - "U1"
+          # - "U2"
+          # - "U3"
+          # - "U4"
+          # - "U5"
+          # - "U6"
+          # - "U7"
+          # - "U8"
+          # - "U9"
+          # - "U10"
+          # - "U11"
+          # - "U12"
+          # - "U13"
+          # - "U14"
+          # - "U15"
+          # - "U16"
+          # - "U17"
+          # - "U18"
+          # - "U19"
+          # - "U20"
+        "A String",
+      ],
+      "defaultTags": [ # Dynamic floodlight tags.
+        { # Dynamic Tag
+          "tag": "A String", # Tag code.
+          "id": "A String", # ID of this dynamic tag. This is a read-only, auto-generated field.
+          "name": "A String", # Name of this tag.
+        },
+      ],
+      "countingMethod": "A String", # Counting method for conversions for this floodlight activity. This is a required field.
+      "floodlightActivityGroupType": "A String", # Type of the associated floodlight activity group. This is a read-only field.
+    }</pre>
+</div>
+
+<div class="method">
+    <code class="details" id="list">list(profileId, floodlightActivityGroupName=None, advertiserId=None, tagString=None, floodlightActivityGroupTagString=None, floodlightActivityGroupIds=None, pageToken=None, sortOrder=None, maxResults=None, searchString=None, sortField=None, floodlightConfigurationId=None, ids=None, floodlightActivityGroupType=None)</code>
+  <pre>Retrieves a list of floodlight activities, possibly filtered. This method supports paging.
+
+Args:
+  profileId: string, User profile ID associated with this request. (required)
+  floodlightActivityGroupName: string, Select only floodlight activities with the specified floodlight activity group name.
+  advertiserId: string, Select only floodlight activities for the specified advertiser ID. Must specify either ids, advertiserId, or floodlightConfigurationId for a non-empty result.
+  tagString: string, Select only floodlight activities with the specified tag string.
+  floodlightActivityGroupTagString: string, Select only floodlight activities with the specified floodlight activity group tag string.
+  floodlightActivityGroupIds: string, Select only floodlight activities with the specified floodlight activity group IDs. (repeated)
+  pageToken: string, Value of the nextPageToken from the previous result page.
+  sortOrder: string, Order of sorted results, default is ASCENDING.
+    Allowed values
+      ASCENDING - 
+      DESCENDING - 
+  maxResults: integer, Maximum number of results to return.
+  searchString: string, Allows searching for objects by name or ID. Wildcards (*) are allowed. For example, "floodlightactivity*2015" will return objects with names like "floodlightactivity June 2015", "floodlightactivity April 2015", or simply "floodlightactivity 2015". Most of the searches also add wildcards implicitly at the start and the end of the search string. For example, a search string of "floodlightactivity" will match objects with name "my floodlightactivity activity", "floodlightactivity 2015", or simply "floodlightactivity".
+  sortField: string, Field by which to sort the list.
+    Allowed values
+      ID - 
+      NAME - 
+  floodlightConfigurationId: string, Select only floodlight activities for the specified floodlight configuration ID. Must specify either ids, advertiserId, or floodlightConfigurationId for a non-empty result.
+  ids: string, Select only floodlight activities with the specified IDs. Must specify either ids, advertiserId, or floodlightConfigurationId for a non-empty result. (repeated)
+  floodlightActivityGroupType: string, Select only floodlight activities with the specified floodlight activity group type.
+    Allowed values
+      COUNTER - 
+      SALE - 
+
+Returns:
+  An object of the form:
+
+    { # Floodlight Activity List Response
+    "nextPageToken": "A String", # Pagination token to be used for the next list operation.
+    "kind": "dfareporting#floodlightActivitiesListResponse", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#floodlightActivitiesListResponse".
+    "floodlightActivities": [ # Floodlight activity collection.
+      { # Contains properties of a Floodlight activity.
+          "tagString": "A String", # Value of the cat= paramter in the floodlight tag, which the ad servers use to identify the activity. This is optional: if empty, a new tag string will be generated for you. This string must be 1 to 8 characters long, with valid characters being [a-z][A-Z][0-9][-][ _ ]. This tag string must also be unique among activities of the same activity group. This field is read-only after insertion.
+          "secure": True or False, # Whether this tag should use SSL.
+          "floodlightActivityGroupName": "A String", # Name of the associated floodlight activity group. This is a read-only field.
+          "imageTagEnabled": True or False, # Whether the image tag is enabled for this activity.
+          "advertiserId": "A String", # Advertiser ID of this floodlight activity. If this field is left blank, the value will be copied over either from the activity group's advertiser or the existing activity's advertiser.
+          "tagFormat": "A String", # Tag format type for the floodlight activity. If left blank, the tag format will default to HTML.
+          "advertiserIdDimensionValue": { # Represents a DimensionValue resource. # Dimension value for the ID of the advertiser. This is a read-only, auto-generated field.
+            "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+            "value": "A String", # The value of the dimension.
+            "dimensionName": "A String", # The name of the dimension.
+            "etag": "A String", # The eTag of this response for caching purposes.
+            "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+            "id": "A String", # The ID associated with the value if available.
+          },
+          "floodlightActivityGroupId": "A String", # Floodlight activity group ID of this floodlight activity. This is a required field.
+          "id": "A String", # ID of this floodlight activity. This is a read-only, auto-generated field.
+          "floodlightActivityGroupTagString": "A String", # Tag string of the associated floodlight activity group. This is a read-only field.
+          "publisherTags": [ # Publisher dynamic floodlight tags.
+            { # Publisher Dynamic Tag
+              "viewThrough": True or False, # Whether this tag is applicable only for view-throughs.
+              "clickThrough": True or False, # Whether this tag is applicable only for click-throughs.
+              "siteId": "A String", # Site ID of this dynamic tag.
+              "dynamicTag": { # Dynamic Tag # Dynamic floodlight tag.
+                "tag": "A String", # Tag code.
+                "id": "A String", # ID of this dynamic tag. This is a read-only, auto-generated field.
+                "name": "A String", # Name of this tag.
+              },
+              "directorySiteId": "A String", # Directory site ID of this dynamic tag. This is a write-only field that can be used as an alternative to the siteId field. When this resource is retrieved, only the siteId field will be populated.
+              "siteIdDimensionValue": { # Represents a DimensionValue resource. # Dimension value for the ID of the site. This is a read-only, auto-generated field.
+                "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+                "value": "A String", # The value of the dimension.
+                "dimensionName": "A String", # The name of the dimension.
+                "etag": "A String", # The eTag of this response for caching purposes.
+                "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+                "id": "A String", # The ID associated with the value if available.
+              },
+            },
+          ],
+          "sslCompliant": True or False, # Whether the floodlight activity is SSL-compliant. This is a read-only field, its value detected by the system from the floodlight tags.
+          "floodlightConfigurationIdDimensionValue": { # Represents a DimensionValue resource. # Dimension value for the ID of the floodlight configuration. This is a read-only, auto-generated field.
+            "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+            "value": "A String", # The value of the dimension.
+            "dimensionName": "A String", # The name of the dimension.
+            "etag": "A String", # The eTag of this response for caching purposes.
+            "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+            "id": "A String", # The ID associated with the value if available.
+          },
+          "idDimensionValue": { # Represents a DimensionValue resource. # Dimension value for the ID of this floodlight activity. This is a read-only, auto-generated field.
+            "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+            "value": "A String", # The value of the dimension.
+            "dimensionName": "A String", # The name of the dimension.
+            "etag": "A String", # The eTag of this response for caching purposes.
+            "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+            "id": "A String", # The ID associated with the value if available.
+          },
+          "hidden": True or False, # Whether this activity is archived.
+          "accountId": "A String", # Account ID of this floodlight activity. This is a read-only field that can be left blank.
+          "sslRequired": True or False, # Whether this floodlight activity must be SSL-compliant.
+          "expectedUrl": "A String", # URL where this tag will be deployed. If specified, must be less than 256 characters long.
+          "cacheBustingType": "A String", # Code type used for cache busting in the generated tag.
+          "kind": "dfareporting#floodlightActivity", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#floodlightActivity".
+          "subaccountId": "A String", # Subaccount ID of this floodlight activity. This is a read-only field that can be left blank.
+          "name": "A String", # Name of this floodlight activity. This is a required field. Must be less than 129 characters long and cannot contain quotes.
+          "notes": "A String", # General notes or implementation instructions for the tag.
+          "floodlightConfigurationId": "A String", # Floodlight configuration ID of this floodlight activity. If this field is left blank, the value will be copied over either from the activity group's floodlight configuration or from the existing activity's floodlight configuration.
+          "userDefinedVariableTypes": [ # List of the user-defined variables used by this conversion tag. These map to the "u[1-20]=" in the tags. Each of these can have a user defined type.
+              # Acceptable values are:
+              # - "U1"
+              # - "U2"
+              # - "U3"
+              # - "U4"
+              # - "U5"
+              # - "U6"
+              # - "U7"
+              # - "U8"
+              # - "U9"
+              # - "U10"
+              # - "U11"
+              # - "U12"
+              # - "U13"
+              # - "U14"
+              # - "U15"
+              # - "U16"
+              # - "U17"
+              # - "U18"
+              # - "U19"
+              # - "U20"
+            "A String",
+          ],
+          "defaultTags": [ # Dynamic floodlight tags.
+            { # Dynamic Tag
+              "tag": "A String", # Tag code.
+              "id": "A String", # ID of this dynamic tag. This is a read-only, auto-generated field.
+              "name": "A String", # Name of this tag.
+            },
+          ],
+          "countingMethod": "A String", # Counting method for conversions for this floodlight activity. This is a required field.
+          "floodlightActivityGroupType": "A String", # Type of the associated floodlight activity group. This is a read-only field.
+        },
+    ],
+  }</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="patch">patch(profileId, id, body)</code>
+  <pre>Updates an existing floodlight activity. This method supports patch semantics.
+
+Args:
+  profileId: string, User profile ID associated with this request. (required)
+  id: string, Floodlight activity ID. (required)
+  body: object, The request body. (required)
+    The object takes the form of:
+
+{ # Contains properties of a Floodlight activity.
+    "tagString": "A String", # Value of the cat= paramter in the floodlight tag, which the ad servers use to identify the activity. This is optional: if empty, a new tag string will be generated for you. This string must be 1 to 8 characters long, with valid characters being [a-z][A-Z][0-9][-][ _ ]. This tag string must also be unique among activities of the same activity group. This field is read-only after insertion.
+    "secure": True or False, # Whether this tag should use SSL.
+    "floodlightActivityGroupName": "A String", # Name of the associated floodlight activity group. This is a read-only field.
+    "imageTagEnabled": True or False, # Whether the image tag is enabled for this activity.
+    "advertiserId": "A String", # Advertiser ID of this floodlight activity. If this field is left blank, the value will be copied over either from the activity group's advertiser or the existing activity's advertiser.
+    "tagFormat": "A String", # Tag format type for the floodlight activity. If left blank, the tag format will default to HTML.
+    "advertiserIdDimensionValue": { # Represents a DimensionValue resource. # Dimension value for the ID of the advertiser. This is a read-only, auto-generated field.
+      "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+      "value": "A String", # The value of the dimension.
+      "dimensionName": "A String", # The name of the dimension.
+      "etag": "A String", # The eTag of this response for caching purposes.
+      "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+      "id": "A String", # The ID associated with the value if available.
+    },
+    "floodlightActivityGroupId": "A String", # Floodlight activity group ID of this floodlight activity. This is a required field.
+    "id": "A String", # ID of this floodlight activity. This is a read-only, auto-generated field.
+    "floodlightActivityGroupTagString": "A String", # Tag string of the associated floodlight activity group. This is a read-only field.
+    "publisherTags": [ # Publisher dynamic floodlight tags.
+      { # Publisher Dynamic Tag
+        "viewThrough": True or False, # Whether this tag is applicable only for view-throughs.
+        "clickThrough": True or False, # Whether this tag is applicable only for click-throughs.
+        "siteId": "A String", # Site ID of this dynamic tag.
+        "dynamicTag": { # Dynamic Tag # Dynamic floodlight tag.
+          "tag": "A String", # Tag code.
+          "id": "A String", # ID of this dynamic tag. This is a read-only, auto-generated field.
+          "name": "A String", # Name of this tag.
+        },
+        "directorySiteId": "A String", # Directory site ID of this dynamic tag. This is a write-only field that can be used as an alternative to the siteId field. When this resource is retrieved, only the siteId field will be populated.
+        "siteIdDimensionValue": { # Represents a DimensionValue resource. # Dimension value for the ID of the site. This is a read-only, auto-generated field.
+          "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+          "value": "A String", # The value of the dimension.
+          "dimensionName": "A String", # The name of the dimension.
+          "etag": "A String", # The eTag of this response for caching purposes.
+          "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+          "id": "A String", # The ID associated with the value if available.
+        },
+      },
+    ],
+    "sslCompliant": True or False, # Whether the floodlight activity is SSL-compliant. This is a read-only field, its value detected by the system from the floodlight tags.
+    "floodlightConfigurationIdDimensionValue": { # Represents a DimensionValue resource. # Dimension value for the ID of the floodlight configuration. This is a read-only, auto-generated field.
+      "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+      "value": "A String", # The value of the dimension.
+      "dimensionName": "A String", # The name of the dimension.
+      "etag": "A String", # The eTag of this response for caching purposes.
+      "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+      "id": "A String", # The ID associated with the value if available.
+    },
+    "idDimensionValue": { # Represents a DimensionValue resource. # Dimension value for the ID of this floodlight activity. This is a read-only, auto-generated field.
+      "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+      "value": "A String", # The value of the dimension.
+      "dimensionName": "A String", # The name of the dimension.
+      "etag": "A String", # The eTag of this response for caching purposes.
+      "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+      "id": "A String", # The ID associated with the value if available.
+    },
+    "hidden": True or False, # Whether this activity is archived.
+    "accountId": "A String", # Account ID of this floodlight activity. This is a read-only field that can be left blank.
+    "sslRequired": True or False, # Whether this floodlight activity must be SSL-compliant.
+    "expectedUrl": "A String", # URL where this tag will be deployed. If specified, must be less than 256 characters long.
+    "cacheBustingType": "A String", # Code type used for cache busting in the generated tag.
+    "kind": "dfareporting#floodlightActivity", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#floodlightActivity".
+    "subaccountId": "A String", # Subaccount ID of this floodlight activity. This is a read-only field that can be left blank.
+    "name": "A String", # Name of this floodlight activity. This is a required field. Must be less than 129 characters long and cannot contain quotes.
+    "notes": "A String", # General notes or implementation instructions for the tag.
+    "floodlightConfigurationId": "A String", # Floodlight configuration ID of this floodlight activity. If this field is left blank, the value will be copied over either from the activity group's floodlight configuration or from the existing activity's floodlight configuration.
+    "userDefinedVariableTypes": [ # List of the user-defined variables used by this conversion tag. These map to the "u[1-20]=" in the tags. Each of these can have a user defined type.
+        # Acceptable values are:
+        # - "U1"
+        # - "U2"
+        # - "U3"
+        # - "U4"
+        # - "U5"
+        # - "U6"
+        # - "U7"
+        # - "U8"
+        # - "U9"
+        # - "U10"
+        # - "U11"
+        # - "U12"
+        # - "U13"
+        # - "U14"
+        # - "U15"
+        # - "U16"
+        # - "U17"
+        # - "U18"
+        # - "U19"
+        # - "U20"
+      "A String",
+    ],
+    "defaultTags": [ # Dynamic floodlight tags.
+      { # Dynamic Tag
+        "tag": "A String", # Tag code.
+        "id": "A String", # ID of this dynamic tag. This is a read-only, auto-generated field.
+        "name": "A String", # Name of this tag.
+      },
+    ],
+    "countingMethod": "A String", # Counting method for conversions for this floodlight activity. This is a required field.
+    "floodlightActivityGroupType": "A String", # Type of the associated floodlight activity group. This is a read-only field.
+  }
+
+
+Returns:
+  An object of the form:
+
+    { # Contains properties of a Floodlight activity.
+      "tagString": "A String", # Value of the cat= paramter in the floodlight tag, which the ad servers use to identify the activity. This is optional: if empty, a new tag string will be generated for you. This string must be 1 to 8 characters long, with valid characters being [a-z][A-Z][0-9][-][ _ ]. This tag string must also be unique among activities of the same activity group. This field is read-only after insertion.
+      "secure": True or False, # Whether this tag should use SSL.
+      "floodlightActivityGroupName": "A String", # Name of the associated floodlight activity group. This is a read-only field.
+      "imageTagEnabled": True or False, # Whether the image tag is enabled for this activity.
+      "advertiserId": "A String", # Advertiser ID of this floodlight activity. If this field is left blank, the value will be copied over either from the activity group's advertiser or the existing activity's advertiser.
+      "tagFormat": "A String", # Tag format type for the floodlight activity. If left blank, the tag format will default to HTML.
+      "advertiserIdDimensionValue": { # Represents a DimensionValue resource. # Dimension value for the ID of the advertiser. This is a read-only, auto-generated field.
+        "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+        "value": "A String", # The value of the dimension.
+        "dimensionName": "A String", # The name of the dimension.
+        "etag": "A String", # The eTag of this response for caching purposes.
+        "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+        "id": "A String", # The ID associated with the value if available.
+      },
+      "floodlightActivityGroupId": "A String", # Floodlight activity group ID of this floodlight activity. This is a required field.
+      "id": "A String", # ID of this floodlight activity. This is a read-only, auto-generated field.
+      "floodlightActivityGroupTagString": "A String", # Tag string of the associated floodlight activity group. This is a read-only field.
+      "publisherTags": [ # Publisher dynamic floodlight tags.
+        { # Publisher Dynamic Tag
+          "viewThrough": True or False, # Whether this tag is applicable only for view-throughs.
+          "clickThrough": True or False, # Whether this tag is applicable only for click-throughs.
+          "siteId": "A String", # Site ID of this dynamic tag.
+          "dynamicTag": { # Dynamic Tag # Dynamic floodlight tag.
+            "tag": "A String", # Tag code.
+            "id": "A String", # ID of this dynamic tag. This is a read-only, auto-generated field.
+            "name": "A String", # Name of this tag.
+          },
+          "directorySiteId": "A String", # Directory site ID of this dynamic tag. This is a write-only field that can be used as an alternative to the siteId field. When this resource is retrieved, only the siteId field will be populated.
+          "siteIdDimensionValue": { # Represents a DimensionValue resource. # Dimension value for the ID of the site. This is a read-only, auto-generated field.
+            "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+            "value": "A String", # The value of the dimension.
+            "dimensionName": "A String", # The name of the dimension.
+            "etag": "A String", # The eTag of this response for caching purposes.
+            "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+            "id": "A String", # The ID associated with the value if available.
+          },
+        },
+      ],
+      "sslCompliant": True or False, # Whether the floodlight activity is SSL-compliant. This is a read-only field, its value detected by the system from the floodlight tags.
+      "floodlightConfigurationIdDimensionValue": { # Represents a DimensionValue resource. # Dimension value for the ID of the floodlight configuration. This is a read-only, auto-generated field.
+        "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+        "value": "A String", # The value of the dimension.
+        "dimensionName": "A String", # The name of the dimension.
+        "etag": "A String", # The eTag of this response for caching purposes.
+        "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+        "id": "A String", # The ID associated with the value if available.
+      },
+      "idDimensionValue": { # Represents a DimensionValue resource. # Dimension value for the ID of this floodlight activity. This is a read-only, auto-generated field.
+        "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+        "value": "A String", # The value of the dimension.
+        "dimensionName": "A String", # The name of the dimension.
+        "etag": "A String", # The eTag of this response for caching purposes.
+        "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+        "id": "A String", # The ID associated with the value if available.
+      },
+      "hidden": True or False, # Whether this activity is archived.
+      "accountId": "A String", # Account ID of this floodlight activity. This is a read-only field that can be left blank.
+      "sslRequired": True or False, # Whether this floodlight activity must be SSL-compliant.
+      "expectedUrl": "A String", # URL where this tag will be deployed. If specified, must be less than 256 characters long.
+      "cacheBustingType": "A String", # Code type used for cache busting in the generated tag.
+      "kind": "dfareporting#floodlightActivity", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#floodlightActivity".
+      "subaccountId": "A String", # Subaccount ID of this floodlight activity. This is a read-only field that can be left blank.
+      "name": "A String", # Name of this floodlight activity. This is a required field. Must be less than 129 characters long and cannot contain quotes.
+      "notes": "A String", # General notes or implementation instructions for the tag.
+      "floodlightConfigurationId": "A String", # Floodlight configuration ID of this floodlight activity. If this field is left blank, the value will be copied over either from the activity group's floodlight configuration or from the existing activity's floodlight configuration.
+      "userDefinedVariableTypes": [ # List of the user-defined variables used by this conversion tag. These map to the "u[1-20]=" in the tags. Each of these can have a user defined type.
+          # Acceptable values are:
+          # - "U1"
+          # - "U2"
+          # - "U3"
+          # - "U4"
+          # - "U5"
+          # - "U6"
+          # - "U7"
+          # - "U8"
+          # - "U9"
+          # - "U10"
+          # - "U11"
+          # - "U12"
+          # - "U13"
+          # - "U14"
+          # - "U15"
+          # - "U16"
+          # - "U17"
+          # - "U18"
+          # - "U19"
+          # - "U20"
+        "A String",
+      ],
+      "defaultTags": [ # Dynamic floodlight tags.
+        { # Dynamic Tag
+          "tag": "A String", # Tag code.
+          "id": "A String", # ID of this dynamic tag. This is a read-only, auto-generated field.
+          "name": "A String", # Name of this tag.
+        },
+      ],
+      "countingMethod": "A String", # Counting method for conversions for this floodlight activity. This is a required field.
+      "floodlightActivityGroupType": "A String", # Type of the associated floodlight activity group. This is a read-only field.
+    }</pre>
+</div>
+
+<div class="method">
+    <code class="details" id="update">update(profileId, body)</code>
+  <pre>Updates an existing floodlight activity.
+
+Args:
+  profileId: string, User profile ID associated with this request. (required)
+  body: object, The request body. (required)
+    The object takes the form of:
+
+{ # Contains properties of a Floodlight activity.
+    "tagString": "A String", # Value of the cat= paramter in the floodlight tag, which the ad servers use to identify the activity. This is optional: if empty, a new tag string will be generated for you. This string must be 1 to 8 characters long, with valid characters being [a-z][A-Z][0-9][-][ _ ]. This tag string must also be unique among activities of the same activity group. This field is read-only after insertion.
+    "secure": True or False, # Whether this tag should use SSL.
+    "floodlightActivityGroupName": "A String", # Name of the associated floodlight activity group. This is a read-only field.
+    "imageTagEnabled": True or False, # Whether the image tag is enabled for this activity.
+    "advertiserId": "A String", # Advertiser ID of this floodlight activity. If this field is left blank, the value will be copied over either from the activity group's advertiser or the existing activity's advertiser.
+    "tagFormat": "A String", # Tag format type for the floodlight activity. If left blank, the tag format will default to HTML.
+    "advertiserIdDimensionValue": { # Represents a DimensionValue resource. # Dimension value for the ID of the advertiser. This is a read-only, auto-generated field.
+      "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+      "value": "A String", # The value of the dimension.
+      "dimensionName": "A String", # The name of the dimension.
+      "etag": "A String", # The eTag of this response for caching purposes.
+      "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+      "id": "A String", # The ID associated with the value if available.
+    },
+    "floodlightActivityGroupId": "A String", # Floodlight activity group ID of this floodlight activity. This is a required field.
+    "id": "A String", # ID of this floodlight activity. This is a read-only, auto-generated field.
+    "floodlightActivityGroupTagString": "A String", # Tag string of the associated floodlight activity group. This is a read-only field.
+    "publisherTags": [ # Publisher dynamic floodlight tags.
+      { # Publisher Dynamic Tag
+        "viewThrough": True or False, # Whether this tag is applicable only for view-throughs.
+        "clickThrough": True or False, # Whether this tag is applicable only for click-throughs.
+        "siteId": "A String", # Site ID of this dynamic tag.
+        "dynamicTag": { # Dynamic Tag # Dynamic floodlight tag.
+          "tag": "A String", # Tag code.
+          "id": "A String", # ID of this dynamic tag. This is a read-only, auto-generated field.
+          "name": "A String", # Name of this tag.
+        },
+        "directorySiteId": "A String", # Directory site ID of this dynamic tag. This is a write-only field that can be used as an alternative to the siteId field. When this resource is retrieved, only the siteId field will be populated.
+        "siteIdDimensionValue": { # Represents a DimensionValue resource. # Dimension value for the ID of the site. This is a read-only, auto-generated field.
+          "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+          "value": "A String", # The value of the dimension.
+          "dimensionName": "A String", # The name of the dimension.
+          "etag": "A String", # The eTag of this response for caching purposes.
+          "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+          "id": "A String", # The ID associated with the value if available.
+        },
+      },
+    ],
+    "sslCompliant": True or False, # Whether the floodlight activity is SSL-compliant. This is a read-only field, its value detected by the system from the floodlight tags.
+    "floodlightConfigurationIdDimensionValue": { # Represents a DimensionValue resource. # Dimension value for the ID of the floodlight configuration. This is a read-only, auto-generated field.
+      "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+      "value": "A String", # The value of the dimension.
+      "dimensionName": "A String", # The name of the dimension.
+      "etag": "A String", # The eTag of this response for caching purposes.
+      "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+      "id": "A String", # The ID associated with the value if available.
+    },
+    "idDimensionValue": { # Represents a DimensionValue resource. # Dimension value for the ID of this floodlight activity. This is a read-only, auto-generated field.
+      "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+      "value": "A String", # The value of the dimension.
+      "dimensionName": "A String", # The name of the dimension.
+      "etag": "A String", # The eTag of this response for caching purposes.
+      "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+      "id": "A String", # The ID associated with the value if available.
+    },
+    "hidden": True or False, # Whether this activity is archived.
+    "accountId": "A String", # Account ID of this floodlight activity. This is a read-only field that can be left blank.
+    "sslRequired": True or False, # Whether this floodlight activity must be SSL-compliant.
+    "expectedUrl": "A String", # URL where this tag will be deployed. If specified, must be less than 256 characters long.
+    "cacheBustingType": "A String", # Code type used for cache busting in the generated tag.
+    "kind": "dfareporting#floodlightActivity", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#floodlightActivity".
+    "subaccountId": "A String", # Subaccount ID of this floodlight activity. This is a read-only field that can be left blank.
+    "name": "A String", # Name of this floodlight activity. This is a required field. Must be less than 129 characters long and cannot contain quotes.
+    "notes": "A String", # General notes or implementation instructions for the tag.
+    "floodlightConfigurationId": "A String", # Floodlight configuration ID of this floodlight activity. If this field is left blank, the value will be copied over either from the activity group's floodlight configuration or from the existing activity's floodlight configuration.
+    "userDefinedVariableTypes": [ # List of the user-defined variables used by this conversion tag. These map to the "u[1-20]=" in the tags. Each of these can have a user defined type.
+        # Acceptable values are:
+        # - "U1"
+        # - "U2"
+        # - "U3"
+        # - "U4"
+        # - "U5"
+        # - "U6"
+        # - "U7"
+        # - "U8"
+        # - "U9"
+        # - "U10"
+        # - "U11"
+        # - "U12"
+        # - "U13"
+        # - "U14"
+        # - "U15"
+        # - "U16"
+        # - "U17"
+        # - "U18"
+        # - "U19"
+        # - "U20"
+      "A String",
+    ],
+    "defaultTags": [ # Dynamic floodlight tags.
+      { # Dynamic Tag
+        "tag": "A String", # Tag code.
+        "id": "A String", # ID of this dynamic tag. This is a read-only, auto-generated field.
+        "name": "A String", # Name of this tag.
+      },
+    ],
+    "countingMethod": "A String", # Counting method for conversions for this floodlight activity. This is a required field.
+    "floodlightActivityGroupType": "A String", # Type of the associated floodlight activity group. This is a read-only field.
+  }
+
+
+Returns:
+  An object of the form:
+
+    { # Contains properties of a Floodlight activity.
+      "tagString": "A String", # Value of the cat= paramter in the floodlight tag, which the ad servers use to identify the activity. This is optional: if empty, a new tag string will be generated for you. This string must be 1 to 8 characters long, with valid characters being [a-z][A-Z][0-9][-][ _ ]. This tag string must also be unique among activities of the same activity group. This field is read-only after insertion.
+      "secure": True or False, # Whether this tag should use SSL.
+      "floodlightActivityGroupName": "A String", # Name of the associated floodlight activity group. This is a read-only field.
+      "imageTagEnabled": True or False, # Whether the image tag is enabled for this activity.
+      "advertiserId": "A String", # Advertiser ID of this floodlight activity. If this field is left blank, the value will be copied over either from the activity group's advertiser or the existing activity's advertiser.
+      "tagFormat": "A String", # Tag format type for the floodlight activity. If left blank, the tag format will default to HTML.
+      "advertiserIdDimensionValue": { # Represents a DimensionValue resource. # Dimension value for the ID of the advertiser. This is a read-only, auto-generated field.
+        "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+        "value": "A String", # The value of the dimension.
+        "dimensionName": "A String", # The name of the dimension.
+        "etag": "A String", # The eTag of this response for caching purposes.
+        "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+        "id": "A String", # The ID associated with the value if available.
+      },
+      "floodlightActivityGroupId": "A String", # Floodlight activity group ID of this floodlight activity. This is a required field.
+      "id": "A String", # ID of this floodlight activity. This is a read-only, auto-generated field.
+      "floodlightActivityGroupTagString": "A String", # Tag string of the associated floodlight activity group. This is a read-only field.
+      "publisherTags": [ # Publisher dynamic floodlight tags.
+        { # Publisher Dynamic Tag
+          "viewThrough": True or False, # Whether this tag is applicable only for view-throughs.
+          "clickThrough": True or False, # Whether this tag is applicable only for click-throughs.
+          "siteId": "A String", # Site ID of this dynamic tag.
+          "dynamicTag": { # Dynamic Tag # Dynamic floodlight tag.
+            "tag": "A String", # Tag code.
+            "id": "A String", # ID of this dynamic tag. This is a read-only, auto-generated field.
+            "name": "A String", # Name of this tag.
+          },
+          "directorySiteId": "A String", # Directory site ID of this dynamic tag. This is a write-only field that can be used as an alternative to the siteId field. When this resource is retrieved, only the siteId field will be populated.
+          "siteIdDimensionValue": { # Represents a DimensionValue resource. # Dimension value for the ID of the site. This is a read-only, auto-generated field.
+            "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+            "value": "A String", # The value of the dimension.
+            "dimensionName": "A String", # The name of the dimension.
+            "etag": "A String", # The eTag of this response for caching purposes.
+            "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+            "id": "A String", # The ID associated with the value if available.
+          },
+        },
+      ],
+      "sslCompliant": True or False, # Whether the floodlight activity is SSL-compliant. This is a read-only field, its value detected by the system from the floodlight tags.
+      "floodlightConfigurationIdDimensionValue": { # Represents a DimensionValue resource. # Dimension value for the ID of the floodlight configuration. This is a read-only, auto-generated field.
+        "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+        "value": "A String", # The value of the dimension.
+        "dimensionName": "A String", # The name of the dimension.
+        "etag": "A String", # The eTag of this response for caching purposes.
+        "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+        "id": "A String", # The ID associated with the value if available.
+      },
+      "idDimensionValue": { # Represents a DimensionValue resource. # Dimension value for the ID of this floodlight activity. This is a read-only, auto-generated field.
+        "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+        "value": "A String", # The value of the dimension.
+        "dimensionName": "A String", # The name of the dimension.
+        "etag": "A String", # The eTag of this response for caching purposes.
+        "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+        "id": "A String", # The ID associated with the value if available.
+      },
+      "hidden": True or False, # Whether this activity is archived.
+      "accountId": "A String", # Account ID of this floodlight activity. This is a read-only field that can be left blank.
+      "sslRequired": True or False, # Whether this floodlight activity must be SSL-compliant.
+      "expectedUrl": "A String", # URL where this tag will be deployed. If specified, must be less than 256 characters long.
+      "cacheBustingType": "A String", # Code type used for cache busting in the generated tag.
+      "kind": "dfareporting#floodlightActivity", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#floodlightActivity".
+      "subaccountId": "A String", # Subaccount ID of this floodlight activity. This is a read-only field that can be left blank.
+      "name": "A String", # Name of this floodlight activity. This is a required field. Must be less than 129 characters long and cannot contain quotes.
+      "notes": "A String", # General notes or implementation instructions for the tag.
+      "floodlightConfigurationId": "A String", # Floodlight configuration ID of this floodlight activity. If this field is left blank, the value will be copied over either from the activity group's floodlight configuration or from the existing activity's floodlight configuration.
+      "userDefinedVariableTypes": [ # List of the user-defined variables used by this conversion tag. These map to the "u[1-20]=" in the tags. Each of these can have a user defined type.
+          # Acceptable values are:
+          # - "U1"
+          # - "U2"
+          # - "U3"
+          # - "U4"
+          # - "U5"
+          # - "U6"
+          # - "U7"
+          # - "U8"
+          # - "U9"
+          # - "U10"
+          # - "U11"
+          # - "U12"
+          # - "U13"
+          # - "U14"
+          # - "U15"
+          # - "U16"
+          # - "U17"
+          # - "U18"
+          # - "U19"
+          # - "U20"
+        "A String",
+      ],
+      "defaultTags": [ # Dynamic floodlight tags.
+        { # Dynamic Tag
+          "tag": "A String", # Tag code.
+          "id": "A String", # ID of this dynamic tag. This is a read-only, auto-generated field.
+          "name": "A String", # Name of this tag.
+        },
+      ],
+      "countingMethod": "A String", # Counting method for conversions for this floodlight activity. This is a required field.
+      "floodlightActivityGroupType": "A String", # Type of the associated floodlight activity group. This is a read-only field.
+    }</pre>
+</div>
+
+</body></html>
\ No newline at end of file
diff --git a/docs/dyn/dfareporting_v2_7.floodlightActivityGroups.html b/docs/dyn/dfareporting_v2_7.floodlightActivityGroups.html
new file mode 100644
index 0000000..e0d7ddd
--- /dev/null
+++ b/docs/dyn/dfareporting_v2_7.floodlightActivityGroups.html
@@ -0,0 +1,488 @@
+<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="dfareporting_v2_7.html">DCM/DFA Reporting And Trafficking API</a> . <a href="dfareporting_v2_7.floodlightActivityGroups.html">floodlightActivityGroups</a></h1>
+<h2>Instance Methods</h2>
+<p class="toc_element">
+  <code><a href="#get">get(profileId, id)</a></code></p>
+<p class="firstline">Gets one floodlight activity group by ID.</p>
+<p class="toc_element">
+  <code><a href="#insert">insert(profileId, body)</a></code></p>
+<p class="firstline">Inserts a new floodlight activity group.</p>
+<p class="toc_element">
+  <code><a href="#list">list(profileId, advertiserId=None, searchString=None, pageToken=None, sortField=None, floodlightConfigurationId=None, ids=None, maxResults=None, sortOrder=None, type=None)</a></code></p>
+<p class="firstline">Retrieves a list of floodlight activity groups, possibly filtered. This method supports paging.</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="#patch">patch(profileId, id, body)</a></code></p>
+<p class="firstline">Updates an existing floodlight activity group. This method supports patch semantics.</p>
+<p class="toc_element">
+  <code><a href="#update">update(profileId, body)</a></code></p>
+<p class="firstline">Updates an existing floodlight activity group.</p>
+<h3>Method Details</h3>
+<div class="method">
+    <code class="details" id="get">get(profileId, id)</code>
+  <pre>Gets one floodlight activity group by ID.
+
+Args:
+  profileId: string, User profile ID associated with this request. (required)
+  id: string, Floodlight activity Group ID. (required)
+
+Returns:
+  An object of the form:
+
+    { # Contains properties of a Floodlight activity group.
+      "kind": "dfareporting#floodlightActivityGroup", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#floodlightActivityGroup".
+      "subaccountId": "A String", # Subaccount ID of this floodlight activity group. This is a read-only field that can be left blank.
+      "name": "A String", # Name of this floodlight activity group. This is a required field. Must be less than 65 characters long and cannot contain quotes.
+      "floodlightConfigurationId": "A String", # Floodlight configuration ID of this floodlight activity group. This is a required field.
+      "advertiserId": "A String", # Advertiser ID of this floodlight activity group. If this field is left blank, the value will be copied over either from the floodlight configuration's advertiser or from the existing activity group's advertiser.
+      "floodlightConfigurationIdDimensionValue": { # Represents a DimensionValue resource. # Dimension value for the ID of the floodlight configuration. This is a read-only, auto-generated field.
+        "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+        "value": "A String", # The value of the dimension.
+        "dimensionName": "A String", # The name of the dimension.
+        "etag": "A String", # The eTag of this response for caching purposes.
+        "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+        "id": "A String", # The ID associated with the value if available.
+      },
+      "idDimensionValue": { # Represents a DimensionValue resource. # Dimension value for the ID of this floodlight activity group. This is a read-only, auto-generated field.
+        "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+        "value": "A String", # The value of the dimension.
+        "dimensionName": "A String", # The name of the dimension.
+        "etag": "A String", # The eTag of this response for caching purposes.
+        "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+        "id": "A String", # The ID associated with the value if available.
+      },
+      "advertiserIdDimensionValue": { # Represents a DimensionValue resource. # Dimension value for the ID of the advertiser. This is a read-only, auto-generated field.
+        "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+        "value": "A String", # The value of the dimension.
+        "dimensionName": "A String", # The name of the dimension.
+        "etag": "A String", # The eTag of this response for caching purposes.
+        "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+        "id": "A String", # The ID associated with the value if available.
+      },
+      "tagString": "A String", # Value of the type= parameter in the floodlight tag, which the ad servers use to identify the activity group that the activity belongs to. This is optional: if empty, a new tag string will be generated for you. This string must be 1 to 8 characters long, with valid characters being [a-z][A-Z][0-9][-][ _ ]. This tag string must also be unique among activity groups of the same floodlight configuration. This field is read-only after insertion.
+      "type": "A String", # Type of the floodlight activity group. This is a required field that is read-only after insertion.
+      "id": "A String", # ID of this floodlight activity group. This is a read-only, auto-generated field.
+      "accountId": "A String", # Account ID of this floodlight activity group. This is a read-only field that can be left blank.
+    }</pre>
+</div>
+
+<div class="method">
+    <code class="details" id="insert">insert(profileId, body)</code>
+  <pre>Inserts a new floodlight activity group.
+
+Args:
+  profileId: string, User profile ID associated with this request. (required)
+  body: object, The request body. (required)
+    The object takes the form of:
+
+{ # Contains properties of a Floodlight activity group.
+    "kind": "dfareporting#floodlightActivityGroup", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#floodlightActivityGroup".
+    "subaccountId": "A String", # Subaccount ID of this floodlight activity group. This is a read-only field that can be left blank.
+    "name": "A String", # Name of this floodlight activity group. This is a required field. Must be less than 65 characters long and cannot contain quotes.
+    "floodlightConfigurationId": "A String", # Floodlight configuration ID of this floodlight activity group. This is a required field.
+    "advertiserId": "A String", # Advertiser ID of this floodlight activity group. If this field is left blank, the value will be copied over either from the floodlight configuration's advertiser or from the existing activity group's advertiser.
+    "floodlightConfigurationIdDimensionValue": { # Represents a DimensionValue resource. # Dimension value for the ID of the floodlight configuration. This is a read-only, auto-generated field.
+      "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+      "value": "A String", # The value of the dimension.
+      "dimensionName": "A String", # The name of the dimension.
+      "etag": "A String", # The eTag of this response for caching purposes.
+      "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+      "id": "A String", # The ID associated with the value if available.
+    },
+    "idDimensionValue": { # Represents a DimensionValue resource. # Dimension value for the ID of this floodlight activity group. This is a read-only, auto-generated field.
+      "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+      "value": "A String", # The value of the dimension.
+      "dimensionName": "A String", # The name of the dimension.
+      "etag": "A String", # The eTag of this response for caching purposes.
+      "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+      "id": "A String", # The ID associated with the value if available.
+    },
+    "advertiserIdDimensionValue": { # Represents a DimensionValue resource. # Dimension value for the ID of the advertiser. This is a read-only, auto-generated field.
+      "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+      "value": "A String", # The value of the dimension.
+      "dimensionName": "A String", # The name of the dimension.
+      "etag": "A String", # The eTag of this response for caching purposes.
+      "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+      "id": "A String", # The ID associated with the value if available.
+    },
+    "tagString": "A String", # Value of the type= parameter in the floodlight tag, which the ad servers use to identify the activity group that the activity belongs to. This is optional: if empty, a new tag string will be generated for you. This string must be 1 to 8 characters long, with valid characters being [a-z][A-Z][0-9][-][ _ ]. This tag string must also be unique among activity groups of the same floodlight configuration. This field is read-only after insertion.
+    "type": "A String", # Type of the floodlight activity group. This is a required field that is read-only after insertion.
+    "id": "A String", # ID of this floodlight activity group. This is a read-only, auto-generated field.
+    "accountId": "A String", # Account ID of this floodlight activity group. This is a read-only field that can be left blank.
+  }
+
+
+Returns:
+  An object of the form:
+
+    { # Contains properties of a Floodlight activity group.
+      "kind": "dfareporting#floodlightActivityGroup", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#floodlightActivityGroup".
+      "subaccountId": "A String", # Subaccount ID of this floodlight activity group. This is a read-only field that can be left blank.
+      "name": "A String", # Name of this floodlight activity group. This is a required field. Must be less than 65 characters long and cannot contain quotes.
+      "floodlightConfigurationId": "A String", # Floodlight configuration ID of this floodlight activity group. This is a required field.
+      "advertiserId": "A String", # Advertiser ID of this floodlight activity group. If this field is left blank, the value will be copied over either from the floodlight configuration's advertiser or from the existing activity group's advertiser.
+      "floodlightConfigurationIdDimensionValue": { # Represents a DimensionValue resource. # Dimension value for the ID of the floodlight configuration. This is a read-only, auto-generated field.
+        "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+        "value": "A String", # The value of the dimension.
+        "dimensionName": "A String", # The name of the dimension.
+        "etag": "A String", # The eTag of this response for caching purposes.
+        "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+        "id": "A String", # The ID associated with the value if available.
+      },
+      "idDimensionValue": { # Represents a DimensionValue resource. # Dimension value for the ID of this floodlight activity group. This is a read-only, auto-generated field.
+        "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+        "value": "A String", # The value of the dimension.
+        "dimensionName": "A String", # The name of the dimension.
+        "etag": "A String", # The eTag of this response for caching purposes.
+        "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+        "id": "A String", # The ID associated with the value if available.
+      },
+      "advertiserIdDimensionValue": { # Represents a DimensionValue resource. # Dimension value for the ID of the advertiser. This is a read-only, auto-generated field.
+        "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+        "value": "A String", # The value of the dimension.
+        "dimensionName": "A String", # The name of the dimension.
+        "etag": "A String", # The eTag of this response for caching purposes.
+        "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+        "id": "A String", # The ID associated with the value if available.
+      },
+      "tagString": "A String", # Value of the type= parameter in the floodlight tag, which the ad servers use to identify the activity group that the activity belongs to. This is optional: if empty, a new tag string will be generated for you. This string must be 1 to 8 characters long, with valid characters being [a-z][A-Z][0-9][-][ _ ]. This tag string must also be unique among activity groups of the same floodlight configuration. This field is read-only after insertion.
+      "type": "A String", # Type of the floodlight activity group. This is a required field that is read-only after insertion.
+      "id": "A String", # ID of this floodlight activity group. This is a read-only, auto-generated field.
+      "accountId": "A String", # Account ID of this floodlight activity group. This is a read-only field that can be left blank.
+    }</pre>
+</div>
+
+<div class="method">
+    <code class="details" id="list">list(profileId, advertiserId=None, searchString=None, pageToken=None, sortField=None, floodlightConfigurationId=None, ids=None, maxResults=None, sortOrder=None, type=None)</code>
+  <pre>Retrieves a list of floodlight activity groups, possibly filtered. This method supports paging.
+
+Args:
+  profileId: string, User profile ID associated with this request. (required)
+  advertiserId: string, Select only floodlight activity groups with the specified advertiser ID. Must specify either advertiserId or floodlightConfigurationId for a non-empty result.
+  searchString: string, Allows searching for objects by name or ID. Wildcards (*) are allowed. For example, "floodlightactivitygroup*2015" will return objects with names like "floodlightactivitygroup June 2015", "floodlightactivitygroup April 2015", or simply "floodlightactivitygroup 2015". Most of the searches also add wildcards implicitly at the start and the end of the search string. For example, a search string of "floodlightactivitygroup" will match objects with name "my floodlightactivitygroup activity", "floodlightactivitygroup 2015", or simply "floodlightactivitygroup".
+  pageToken: string, Value of the nextPageToken from the previous result page.
+  sortField: string, Field by which to sort the list.
+    Allowed values
+      ID - 
+      NAME - 
+  floodlightConfigurationId: string, Select only floodlight activity groups with the specified floodlight configuration ID. Must specify either advertiserId, or floodlightConfigurationId for a non-empty result.
+  ids: string, Select only floodlight activity groups with the specified IDs. Must specify either advertiserId or floodlightConfigurationId for a non-empty result. (repeated)
+  maxResults: integer, Maximum number of results to return.
+  sortOrder: string, Order of sorted results, default is ASCENDING.
+    Allowed values
+      ASCENDING - 
+      DESCENDING - 
+  type: string, Select only floodlight activity groups with the specified floodlight activity group type.
+    Allowed values
+      COUNTER - 
+      SALE - 
+
+Returns:
+  An object of the form:
+
+    { # Floodlight Activity Group List Response
+    "nextPageToken": "A String", # Pagination token to be used for the next list operation.
+    "kind": "dfareporting#floodlightActivityGroupsListResponse", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#floodlightActivityGroupsListResponse".
+    "floodlightActivityGroups": [ # Floodlight activity group collection.
+      { # Contains properties of a Floodlight activity group.
+          "kind": "dfareporting#floodlightActivityGroup", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#floodlightActivityGroup".
+          "subaccountId": "A String", # Subaccount ID of this floodlight activity group. This is a read-only field that can be left blank.
+          "name": "A String", # Name of this floodlight activity group. This is a required field. Must be less than 65 characters long and cannot contain quotes.
+          "floodlightConfigurationId": "A String", # Floodlight configuration ID of this floodlight activity group. This is a required field.
+          "advertiserId": "A String", # Advertiser ID of this floodlight activity group. If this field is left blank, the value will be copied over either from the floodlight configuration's advertiser or from the existing activity group's advertiser.
+          "floodlightConfigurationIdDimensionValue": { # Represents a DimensionValue resource. # Dimension value for the ID of the floodlight configuration. This is a read-only, auto-generated field.
+            "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+            "value": "A String", # The value of the dimension.
+            "dimensionName": "A String", # The name of the dimension.
+            "etag": "A String", # The eTag of this response for caching purposes.
+            "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+            "id": "A String", # The ID associated with the value if available.
+          },
+          "idDimensionValue": { # Represents a DimensionValue resource. # Dimension value for the ID of this floodlight activity group. This is a read-only, auto-generated field.
+            "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+            "value": "A String", # The value of the dimension.
+            "dimensionName": "A String", # The name of the dimension.
+            "etag": "A String", # The eTag of this response for caching purposes.
+            "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+            "id": "A String", # The ID associated with the value if available.
+          },
+          "advertiserIdDimensionValue": { # Represents a DimensionValue resource. # Dimension value for the ID of the advertiser. This is a read-only, auto-generated field.
+            "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+            "value": "A String", # The value of the dimension.
+            "dimensionName": "A String", # The name of the dimension.
+            "etag": "A String", # The eTag of this response for caching purposes.
+            "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+            "id": "A String", # The ID associated with the value if available.
+          },
+          "tagString": "A String", # Value of the type= parameter in the floodlight tag, which the ad servers use to identify the activity group that the activity belongs to. This is optional: if empty, a new tag string will be generated for you. This string must be 1 to 8 characters long, with valid characters being [a-z][A-Z][0-9][-][ _ ]. This tag string must also be unique among activity groups of the same floodlight configuration. This field is read-only after insertion.
+          "type": "A String", # Type of the floodlight activity group. This is a required field that is read-only after insertion.
+          "id": "A String", # ID of this floodlight activity group. This is a read-only, auto-generated field.
+          "accountId": "A String", # Account ID of this floodlight activity group. This is a read-only field that can be left blank.
+        },
+    ],
+  }</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="patch">patch(profileId, id, body)</code>
+  <pre>Updates an existing floodlight activity group. This method supports patch semantics.
+
+Args:
+  profileId: string, User profile ID associated with this request. (required)
+  id: string, Floodlight activity Group ID. (required)
+  body: object, The request body. (required)
+    The object takes the form of:
+
+{ # Contains properties of a Floodlight activity group.
+    "kind": "dfareporting#floodlightActivityGroup", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#floodlightActivityGroup".
+    "subaccountId": "A String", # Subaccount ID of this floodlight activity group. This is a read-only field that can be left blank.
+    "name": "A String", # Name of this floodlight activity group. This is a required field. Must be less than 65 characters long and cannot contain quotes.
+    "floodlightConfigurationId": "A String", # Floodlight configuration ID of this floodlight activity group. This is a required field.
+    "advertiserId": "A String", # Advertiser ID of this floodlight activity group. If this field is left blank, the value will be copied over either from the floodlight configuration's advertiser or from the existing activity group's advertiser.
+    "floodlightConfigurationIdDimensionValue": { # Represents a DimensionValue resource. # Dimension value for the ID of the floodlight configuration. This is a read-only, auto-generated field.
+      "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+      "value": "A String", # The value of the dimension.
+      "dimensionName": "A String", # The name of the dimension.
+      "etag": "A String", # The eTag of this response for caching purposes.
+      "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+      "id": "A String", # The ID associated with the value if available.
+    },
+    "idDimensionValue": { # Represents a DimensionValue resource. # Dimension value for the ID of this floodlight activity group. This is a read-only, auto-generated field.
+      "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+      "value": "A String", # The value of the dimension.
+      "dimensionName": "A String", # The name of the dimension.
+      "etag": "A String", # The eTag of this response for caching purposes.
+      "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+      "id": "A String", # The ID associated with the value if available.
+    },
+    "advertiserIdDimensionValue": { # Represents a DimensionValue resource. # Dimension value for the ID of the advertiser. This is a read-only, auto-generated field.
+      "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+      "value": "A String", # The value of the dimension.
+      "dimensionName": "A String", # The name of the dimension.
+      "etag": "A String", # The eTag of this response for caching purposes.
+      "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+      "id": "A String", # The ID associated with the value if available.
+    },
+    "tagString": "A String", # Value of the type= parameter in the floodlight tag, which the ad servers use to identify the activity group that the activity belongs to. This is optional: if empty, a new tag string will be generated for you. This string must be 1 to 8 characters long, with valid characters being [a-z][A-Z][0-9][-][ _ ]. This tag string must also be unique among activity groups of the same floodlight configuration. This field is read-only after insertion.
+    "type": "A String", # Type of the floodlight activity group. This is a required field that is read-only after insertion.
+    "id": "A String", # ID of this floodlight activity group. This is a read-only, auto-generated field.
+    "accountId": "A String", # Account ID of this floodlight activity group. This is a read-only field that can be left blank.
+  }
+
+
+Returns:
+  An object of the form:
+
+    { # Contains properties of a Floodlight activity group.
+      "kind": "dfareporting#floodlightActivityGroup", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#floodlightActivityGroup".
+      "subaccountId": "A String", # Subaccount ID of this floodlight activity group. This is a read-only field that can be left blank.
+      "name": "A String", # Name of this floodlight activity group. This is a required field. Must be less than 65 characters long and cannot contain quotes.
+      "floodlightConfigurationId": "A String", # Floodlight configuration ID of this floodlight activity group. This is a required field.
+      "advertiserId": "A String", # Advertiser ID of this floodlight activity group. If this field is left blank, the value will be copied over either from the floodlight configuration's advertiser or from the existing activity group's advertiser.
+      "floodlightConfigurationIdDimensionValue": { # Represents a DimensionValue resource. # Dimension value for the ID of the floodlight configuration. This is a read-only, auto-generated field.
+        "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+        "value": "A String", # The value of the dimension.
+        "dimensionName": "A String", # The name of the dimension.
+        "etag": "A String", # The eTag of this response for caching purposes.
+        "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+        "id": "A String", # The ID associated with the value if available.
+      },
+      "idDimensionValue": { # Represents a DimensionValue resource. # Dimension value for the ID of this floodlight activity group. This is a read-only, auto-generated field.
+        "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+        "value": "A String", # The value of the dimension.
+        "dimensionName": "A String", # The name of the dimension.
+        "etag": "A String", # The eTag of this response for caching purposes.
+        "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+        "id": "A String", # The ID associated with the value if available.
+      },
+      "advertiserIdDimensionValue": { # Represents a DimensionValue resource. # Dimension value for the ID of the advertiser. This is a read-only, auto-generated field.
+        "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+        "value": "A String", # The value of the dimension.
+        "dimensionName": "A String", # The name of the dimension.
+        "etag": "A String", # The eTag of this response for caching purposes.
+        "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+        "id": "A String", # The ID associated with the value if available.
+      },
+      "tagString": "A String", # Value of the type= parameter in the floodlight tag, which the ad servers use to identify the activity group that the activity belongs to. This is optional: if empty, a new tag string will be generated for you. This string must be 1 to 8 characters long, with valid characters being [a-z][A-Z][0-9][-][ _ ]. This tag string must also be unique among activity groups of the same floodlight configuration. This field is read-only after insertion.
+      "type": "A String", # Type of the floodlight activity group. This is a required field that is read-only after insertion.
+      "id": "A String", # ID of this floodlight activity group. This is a read-only, auto-generated field.
+      "accountId": "A String", # Account ID of this floodlight activity group. This is a read-only field that can be left blank.
+    }</pre>
+</div>
+
+<div class="method">
+    <code class="details" id="update">update(profileId, body)</code>
+  <pre>Updates an existing floodlight activity group.
+
+Args:
+  profileId: string, User profile ID associated with this request. (required)
+  body: object, The request body. (required)
+    The object takes the form of:
+
+{ # Contains properties of a Floodlight activity group.
+    "kind": "dfareporting#floodlightActivityGroup", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#floodlightActivityGroup".
+    "subaccountId": "A String", # Subaccount ID of this floodlight activity group. This is a read-only field that can be left blank.
+    "name": "A String", # Name of this floodlight activity group. This is a required field. Must be less than 65 characters long and cannot contain quotes.
+    "floodlightConfigurationId": "A String", # Floodlight configuration ID of this floodlight activity group. This is a required field.
+    "advertiserId": "A String", # Advertiser ID of this floodlight activity group. If this field is left blank, the value will be copied over either from the floodlight configuration's advertiser or from the existing activity group's advertiser.
+    "floodlightConfigurationIdDimensionValue": { # Represents a DimensionValue resource. # Dimension value for the ID of the floodlight configuration. This is a read-only, auto-generated field.
+      "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+      "value": "A String", # The value of the dimension.
+      "dimensionName": "A String", # The name of the dimension.
+      "etag": "A String", # The eTag of this response for caching purposes.
+      "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+      "id": "A String", # The ID associated with the value if available.
+    },
+    "idDimensionValue": { # Represents a DimensionValue resource. # Dimension value for the ID of this floodlight activity group. This is a read-only, auto-generated field.
+      "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+      "value": "A String", # The value of the dimension.
+      "dimensionName": "A String", # The name of the dimension.
+      "etag": "A String", # The eTag of this response for caching purposes.
+      "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+      "id": "A String", # The ID associated with the value if available.
+    },
+    "advertiserIdDimensionValue": { # Represents a DimensionValue resource. # Dimension value for the ID of the advertiser. This is a read-only, auto-generated field.
+      "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+      "value": "A String", # The value of the dimension.
+      "dimensionName": "A String", # The name of the dimension.
+      "etag": "A String", # The eTag of this response for caching purposes.
+      "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+      "id": "A String", # The ID associated with the value if available.
+    },
+    "tagString": "A String", # Value of the type= parameter in the floodlight tag, which the ad servers use to identify the activity group that the activity belongs to. This is optional: if empty, a new tag string will be generated for you. This string must be 1 to 8 characters long, with valid characters being [a-z][A-Z][0-9][-][ _ ]. This tag string must also be unique among activity groups of the same floodlight configuration. This field is read-only after insertion.
+    "type": "A String", # Type of the floodlight activity group. This is a required field that is read-only after insertion.
+    "id": "A String", # ID of this floodlight activity group. This is a read-only, auto-generated field.
+    "accountId": "A String", # Account ID of this floodlight activity group. This is a read-only field that can be left blank.
+  }
+
+
+Returns:
+  An object of the form:
+
+    { # Contains properties of a Floodlight activity group.
+      "kind": "dfareporting#floodlightActivityGroup", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#floodlightActivityGroup".
+      "subaccountId": "A String", # Subaccount ID of this floodlight activity group. This is a read-only field that can be left blank.
+      "name": "A String", # Name of this floodlight activity group. This is a required field. Must be less than 65 characters long and cannot contain quotes.
+      "floodlightConfigurationId": "A String", # Floodlight configuration ID of this floodlight activity group. This is a required field.
+      "advertiserId": "A String", # Advertiser ID of this floodlight activity group. If this field is left blank, the value will be copied over either from the floodlight configuration's advertiser or from the existing activity group's advertiser.
+      "floodlightConfigurationIdDimensionValue": { # Represents a DimensionValue resource. # Dimension value for the ID of the floodlight configuration. This is a read-only, auto-generated field.
+        "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+        "value": "A String", # The value of the dimension.
+        "dimensionName": "A String", # The name of the dimension.
+        "etag": "A String", # The eTag of this response for caching purposes.
+        "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+        "id": "A String", # The ID associated with the value if available.
+      },
+      "idDimensionValue": { # Represents a DimensionValue resource. # Dimension value for the ID of this floodlight activity group. This is a read-only, auto-generated field.
+        "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+        "value": "A String", # The value of the dimension.
+        "dimensionName": "A String", # The name of the dimension.
+        "etag": "A String", # The eTag of this response for caching purposes.
+        "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+        "id": "A String", # The ID associated with the value if available.
+      },
+      "advertiserIdDimensionValue": { # Represents a DimensionValue resource. # Dimension value for the ID of the advertiser. This is a read-only, auto-generated field.
+        "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+        "value": "A String", # The value of the dimension.
+        "dimensionName": "A String", # The name of the dimension.
+        "etag": "A String", # The eTag of this response for caching purposes.
+        "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+        "id": "A String", # The ID associated with the value if available.
+      },
+      "tagString": "A String", # Value of the type= parameter in the floodlight tag, which the ad servers use to identify the activity group that the activity belongs to. This is optional: if empty, a new tag string will be generated for you. This string must be 1 to 8 characters long, with valid characters being [a-z][A-Z][0-9][-][ _ ]. This tag string must also be unique among activity groups of the same floodlight configuration. This field is read-only after insertion.
+      "type": "A String", # Type of the floodlight activity group. This is a required field that is read-only after insertion.
+      "id": "A String", # ID of this floodlight activity group. This is a read-only, auto-generated field.
+      "accountId": "A String", # Account ID of this floodlight activity group. This is a read-only field that can be left blank.
+    }</pre>
+</div>
+
+</body></html>
\ No newline at end of file
diff --git a/docs/dyn/dfareporting_v2_7.floodlightConfigurations.html b/docs/dyn/dfareporting_v2_7.floodlightConfigurations.html
new file mode 100644
index 0000000..d2c947f
--- /dev/null
+++ b/docs/dyn/dfareporting_v2_7.floodlightConfigurations.html
@@ -0,0 +1,514 @@
+<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="dfareporting_v2_7.html">DCM/DFA Reporting And Trafficking API</a> . <a href="dfareporting_v2_7.floodlightConfigurations.html">floodlightConfigurations</a></h1>
+<h2>Instance Methods</h2>
+<p class="toc_element">
+  <code><a href="#get">get(profileId, id)</a></code></p>
+<p class="firstline">Gets one floodlight configuration by ID.</p>
+<p class="toc_element">
+  <code><a href="#list">list(profileId, ids=None)</a></code></p>
+<p class="firstline">Retrieves a list of floodlight configurations, possibly filtered.</p>
+<p class="toc_element">
+  <code><a href="#patch">patch(profileId, id, body)</a></code></p>
+<p class="firstline">Updates an existing floodlight configuration. This method supports patch semantics.</p>
+<p class="toc_element">
+  <code><a href="#update">update(profileId, body)</a></code></p>
+<p class="firstline">Updates an existing floodlight configuration.</p>
+<h3>Method Details</h3>
+<div class="method">
+    <code class="details" id="get">get(profileId, id)</code>
+  <pre>Gets one floodlight configuration by ID.
+
+Args:
+  profileId: string, User profile ID associated with this request. (required)
+  id: string, Floodlight configuration ID. (required)
+
+Returns:
+  An object of the form:
+
+    { # Contains properties of a Floodlight configuration.
+      "naturalSearchConversionAttributionOption": "A String", # Types of attribution options for natural search conversions.
+      "kind": "dfareporting#floodlightConfiguration", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#floodlightConfiguration".
+      "exposureToConversionEnabled": True or False, # Whether the exposure-to-conversion report is enabled. This report shows detailed pathway information on up to 10 of the most recent ad exposures seen by a user before converting.
+      "lookbackConfiguration": { # Lookback configuration settings. # Lookback window settings for this floodlight configuration.
+        "clickDuration": 42, # Lookback window, in days, from the last time a given user clicked on one of your ads. If you enter 0, clicks will not be considered as triggering events for floodlight tracking. If you leave this field blank, the default value for your account will be used.
+        "postImpressionActivitiesDuration": 42, # Lookback window, in days, from the last time a given user viewed one of your ads. If you enter 0, impressions will not be considered as triggering events for floodlight tracking. If you leave this field blank, the default value for your account will be used.
+      },
+      "tagSettings": { # Dynamic and Image Tag Settings. # Configuration settings for dynamic and image floodlight tags.
+        "dynamicTagEnabled": True or False, # Whether dynamic floodlight tags are enabled.
+        "imageTagEnabled": True or False, # Whether image tags are enabled.
+      },
+      "firstDayOfWeek": "A String", # Day that will be counted as the first day of the week in reports. This is a required field.
+      "standardVariableTypes": [ # List of standard variables enabled for this configuration.
+          #
+          # Acceptable values are:
+          # - "ORD"
+          # - "NUM"
+        "A String",
+      ],
+      "omnitureSettings": { # Omniture Integration Settings. # Settings for DCM Omniture integration.
+        "omnitureCostDataEnabled": True or False, # Whether placement cost data will be sent to Omniture. This property can be enabled only if omnitureIntegrationEnabled is true.
+        "omnitureIntegrationEnabled": True or False, # Whether Omniture integration is enabled. This property can be enabled only when the "Advanced Ad Serving" account setting is enabled.
+      },
+      "subaccountId": "A String", # Subaccount ID of this floodlight configuration. This is a read-only field that can be left blank.
+      "advertiserId": "A String", # Advertiser ID of the parent advertiser of this floodlight configuration.
+      "analyticsDataSharingEnabled": True or False, # Whether advertiser data is shared with Google Analytics.
+      "inAppAttributionTrackingEnabled": True or False, # Whether in-app attribution tracking is enabled.
+      "thirdPartyAuthenticationTokens": [ # List of third-party authentication tokens enabled for this configuration.
+        { # Third Party Authentication Token
+          "name": "A String", # Name of the third-party authentication token.
+          "value": "A String", # Value of the third-party authentication token. This is a read-only, auto-generated field.
+        },
+      ],
+      "idDimensionValue": { # Represents a DimensionValue resource. # Dimension value for the ID of this floodlight configuration. This is a read-only, auto-generated field.
+        "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+        "value": "A String", # The value of the dimension.
+        "dimensionName": "A String", # The name of the dimension.
+        "etag": "A String", # The eTag of this response for caching purposes.
+        "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+        "id": "A String", # The ID associated with the value if available.
+      },
+      "advertiserIdDimensionValue": { # Represents a DimensionValue resource. # Dimension value for the ID of the advertiser. This is a read-only, auto-generated field.
+        "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+        "value": "A String", # The value of the dimension.
+        "dimensionName": "A String", # The name of the dimension.
+        "etag": "A String", # The eTag of this response for caching purposes.
+        "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+        "id": "A String", # The ID associated with the value if available.
+      },
+      "id": "A String", # ID of this floodlight configuration. This is a read-only, auto-generated field.
+      "userDefinedVariableConfigurations": [ # List of user defined variables enabled for this configuration.
+        { # User Defined Variable configuration.
+          "dataType": "A String", # Data type for the variable. This is a required field.
+          "reportName": "A String", # User-friendly name for the variable which will appear in reports. This is a required field, must be less than 64 characters long, and cannot contain the following characters: ""<>".
+          "variableType": "A String", # Variable name in the tag. This is a required field.
+        },
+      ],
+      "accountId": "A String", # Account ID of this floodlight configuration. This is a read-only field that can be left blank.
+    }</pre>
+</div>
+
+<div class="method">
+    <code class="details" id="list">list(profileId, ids=None)</code>
+  <pre>Retrieves a list of floodlight configurations, possibly filtered.
+
+Args:
+  profileId: string, User profile ID associated with this request. (required)
+  ids: string, Set of IDs of floodlight configurations to retrieve. Required field; otherwise an empty list will be returned. (repeated)
+
+Returns:
+  An object of the form:
+
+    { # Floodlight Configuration List Response
+    "floodlightConfigurations": [ # Floodlight configuration collection.
+      { # Contains properties of a Floodlight configuration.
+          "naturalSearchConversionAttributionOption": "A String", # Types of attribution options for natural search conversions.
+          "kind": "dfareporting#floodlightConfiguration", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#floodlightConfiguration".
+          "exposureToConversionEnabled": True or False, # Whether the exposure-to-conversion report is enabled. This report shows detailed pathway information on up to 10 of the most recent ad exposures seen by a user before converting.
+          "lookbackConfiguration": { # Lookback configuration settings. # Lookback window settings for this floodlight configuration.
+            "clickDuration": 42, # Lookback window, in days, from the last time a given user clicked on one of your ads. If you enter 0, clicks will not be considered as triggering events for floodlight tracking. If you leave this field blank, the default value for your account will be used.
+            "postImpressionActivitiesDuration": 42, # Lookback window, in days, from the last time a given user viewed one of your ads. If you enter 0, impressions will not be considered as triggering events for floodlight tracking. If you leave this field blank, the default value for your account will be used.
+          },
+          "tagSettings": { # Dynamic and Image Tag Settings. # Configuration settings for dynamic and image floodlight tags.
+            "dynamicTagEnabled": True or False, # Whether dynamic floodlight tags are enabled.
+            "imageTagEnabled": True or False, # Whether image tags are enabled.
+          },
+          "firstDayOfWeek": "A String", # Day that will be counted as the first day of the week in reports. This is a required field.
+          "standardVariableTypes": [ # List of standard variables enabled for this configuration.
+              #
+              # Acceptable values are:
+              # - "ORD"
+              # - "NUM"
+            "A String",
+          ],
+          "omnitureSettings": { # Omniture Integration Settings. # Settings for DCM Omniture integration.
+            "omnitureCostDataEnabled": True or False, # Whether placement cost data will be sent to Omniture. This property can be enabled only if omnitureIntegrationEnabled is true.
+            "omnitureIntegrationEnabled": True or False, # Whether Omniture integration is enabled. This property can be enabled only when the "Advanced Ad Serving" account setting is enabled.
+          },
+          "subaccountId": "A String", # Subaccount ID of this floodlight configuration. This is a read-only field that can be left blank.
+          "advertiserId": "A String", # Advertiser ID of the parent advertiser of this floodlight configuration.
+          "analyticsDataSharingEnabled": True or False, # Whether advertiser data is shared with Google Analytics.
+          "inAppAttributionTrackingEnabled": True or False, # Whether in-app attribution tracking is enabled.
+          "thirdPartyAuthenticationTokens": [ # List of third-party authentication tokens enabled for this configuration.
+            { # Third Party Authentication Token
+              "name": "A String", # Name of the third-party authentication token.
+              "value": "A String", # Value of the third-party authentication token. This is a read-only, auto-generated field.
+            },
+          ],
+          "idDimensionValue": { # Represents a DimensionValue resource. # Dimension value for the ID of this floodlight configuration. This is a read-only, auto-generated field.
+            "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+            "value": "A String", # The value of the dimension.
+            "dimensionName": "A String", # The name of the dimension.
+            "etag": "A String", # The eTag of this response for caching purposes.
+            "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+            "id": "A String", # The ID associated with the value if available.
+          },
+          "advertiserIdDimensionValue": { # Represents a DimensionValue resource. # Dimension value for the ID of the advertiser. This is a read-only, auto-generated field.
+            "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+            "value": "A String", # The value of the dimension.
+            "dimensionName": "A String", # The name of the dimension.
+            "etag": "A String", # The eTag of this response for caching purposes.
+            "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+            "id": "A String", # The ID associated with the value if available.
+          },
+          "id": "A String", # ID of this floodlight configuration. This is a read-only, auto-generated field.
+          "userDefinedVariableConfigurations": [ # List of user defined variables enabled for this configuration.
+            { # User Defined Variable configuration.
+              "dataType": "A String", # Data type for the variable. This is a required field.
+              "reportName": "A String", # User-friendly name for the variable which will appear in reports. This is a required field, must be less than 64 characters long, and cannot contain the following characters: ""<>".
+              "variableType": "A String", # Variable name in the tag. This is a required field.
+            },
+          ],
+          "accountId": "A String", # Account ID of this floodlight configuration. This is a read-only field that can be left blank.
+        },
+    ],
+    "kind": "dfareporting#floodlightConfigurationsListResponse", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#floodlightConfigurationsListResponse".
+  }</pre>
+</div>
+
+<div class="method">
+    <code class="details" id="patch">patch(profileId, id, body)</code>
+  <pre>Updates an existing floodlight configuration. This method supports patch semantics.
+
+Args:
+  profileId: string, User profile ID associated with this request. (required)
+  id: string, Floodlight configuration ID. (required)
+  body: object, The request body. (required)
+    The object takes the form of:
+
+{ # Contains properties of a Floodlight configuration.
+    "naturalSearchConversionAttributionOption": "A String", # Types of attribution options for natural search conversions.
+    "kind": "dfareporting#floodlightConfiguration", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#floodlightConfiguration".
+    "exposureToConversionEnabled": True or False, # Whether the exposure-to-conversion report is enabled. This report shows detailed pathway information on up to 10 of the most recent ad exposures seen by a user before converting.
+    "lookbackConfiguration": { # Lookback configuration settings. # Lookback window settings for this floodlight configuration.
+      "clickDuration": 42, # Lookback window, in days, from the last time a given user clicked on one of your ads. If you enter 0, clicks will not be considered as triggering events for floodlight tracking. If you leave this field blank, the default value for your account will be used.
+      "postImpressionActivitiesDuration": 42, # Lookback window, in days, from the last time a given user viewed one of your ads. If you enter 0, impressions will not be considered as triggering events for floodlight tracking. If you leave this field blank, the default value for your account will be used.
+    },
+    "tagSettings": { # Dynamic and Image Tag Settings. # Configuration settings for dynamic and image floodlight tags.
+      "dynamicTagEnabled": True or False, # Whether dynamic floodlight tags are enabled.
+      "imageTagEnabled": True or False, # Whether image tags are enabled.
+    },
+    "firstDayOfWeek": "A String", # Day that will be counted as the first day of the week in reports. This is a required field.
+    "standardVariableTypes": [ # List of standard variables enabled for this configuration.
+        # 
+        # Acceptable values are:
+        # - "ORD"
+        # - "NUM"
+      "A String",
+    ],
+    "omnitureSettings": { # Omniture Integration Settings. # Settings for DCM Omniture integration.
+      "omnitureCostDataEnabled": True or False, # Whether placement cost data will be sent to Omniture. This property can be enabled only if omnitureIntegrationEnabled is true.
+      "omnitureIntegrationEnabled": True or False, # Whether Omniture integration is enabled. This property can be enabled only when the "Advanced Ad Serving" account setting is enabled.
+    },
+    "subaccountId": "A String", # Subaccount ID of this floodlight configuration. This is a read-only field that can be left blank.
+    "advertiserId": "A String", # Advertiser ID of the parent advertiser of this floodlight configuration.
+    "analyticsDataSharingEnabled": True or False, # Whether advertiser data is shared with Google Analytics.
+    "inAppAttributionTrackingEnabled": True or False, # Whether in-app attribution tracking is enabled.
+    "thirdPartyAuthenticationTokens": [ # List of third-party authentication tokens enabled for this configuration.
+      { # Third Party Authentication Token
+        "name": "A String", # Name of the third-party authentication token.
+        "value": "A String", # Value of the third-party authentication token. This is a read-only, auto-generated field.
+      },
+    ],
+    "idDimensionValue": { # Represents a DimensionValue resource. # Dimension value for the ID of this floodlight configuration. This is a read-only, auto-generated field.
+      "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+      "value": "A String", # The value of the dimension.
+      "dimensionName": "A String", # The name of the dimension.
+      "etag": "A String", # The eTag of this response for caching purposes.
+      "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+      "id": "A String", # The ID associated with the value if available.
+    },
+    "advertiserIdDimensionValue": { # Represents a DimensionValue resource. # Dimension value for the ID of the advertiser. This is a read-only, auto-generated field.
+      "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+      "value": "A String", # The value of the dimension.
+      "dimensionName": "A String", # The name of the dimension.
+      "etag": "A String", # The eTag of this response for caching purposes.
+      "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+      "id": "A String", # The ID associated with the value if available.
+    },
+    "id": "A String", # ID of this floodlight configuration. This is a read-only, auto-generated field.
+    "userDefinedVariableConfigurations": [ # List of user defined variables enabled for this configuration.
+      { # User Defined Variable configuration.
+        "dataType": "A String", # Data type for the variable. This is a required field.
+        "reportName": "A String", # User-friendly name for the variable which will appear in reports. This is a required field, must be less than 64 characters long, and cannot contain the following characters: ""<>".
+        "variableType": "A String", # Variable name in the tag. This is a required field.
+      },
+    ],
+    "accountId": "A String", # Account ID of this floodlight configuration. This is a read-only field that can be left blank.
+  }
+
+
+Returns:
+  An object of the form:
+
+    { # Contains properties of a Floodlight configuration.
+      "naturalSearchConversionAttributionOption": "A String", # Types of attribution options for natural search conversions.
+      "kind": "dfareporting#floodlightConfiguration", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#floodlightConfiguration".
+      "exposureToConversionEnabled": True or False, # Whether the exposure-to-conversion report is enabled. This report shows detailed pathway information on up to 10 of the most recent ad exposures seen by a user before converting.
+      "lookbackConfiguration": { # Lookback configuration settings. # Lookback window settings for this floodlight configuration.
+        "clickDuration": 42, # Lookback window, in days, from the last time a given user clicked on one of your ads. If you enter 0, clicks will not be considered as triggering events for floodlight tracking. If you leave this field blank, the default value for your account will be used.
+        "postImpressionActivitiesDuration": 42, # Lookback window, in days, from the last time a given user viewed one of your ads. If you enter 0, impressions will not be considered as triggering events for floodlight tracking. If you leave this field blank, the default value for your account will be used.
+      },
+      "tagSettings": { # Dynamic and Image Tag Settings. # Configuration settings for dynamic and image floodlight tags.
+        "dynamicTagEnabled": True or False, # Whether dynamic floodlight tags are enabled.
+        "imageTagEnabled": True or False, # Whether image tags are enabled.
+      },
+      "firstDayOfWeek": "A String", # Day that will be counted as the first day of the week in reports. This is a required field.
+      "standardVariableTypes": [ # List of standard variables enabled for this configuration.
+          #
+          # Acceptable values are:
+          # - "ORD"
+          # - "NUM"
+        "A String",
+      ],
+      "omnitureSettings": { # Omniture Integration Settings. # Settings for DCM Omniture integration.
+        "omnitureCostDataEnabled": True or False, # Whether placement cost data will be sent to Omniture. This property can be enabled only if omnitureIntegrationEnabled is true.
+        "omnitureIntegrationEnabled": True or False, # Whether Omniture integration is enabled. This property can be enabled only when the "Advanced Ad Serving" account setting is enabled.
+      },
+      "subaccountId": "A String", # Subaccount ID of this floodlight configuration. This is a read-only field that can be left blank.
+      "advertiserId": "A String", # Advertiser ID of the parent advertiser of this floodlight configuration.
+      "analyticsDataSharingEnabled": True or False, # Whether advertiser data is shared with Google Analytics.
+      "inAppAttributionTrackingEnabled": True or False, # Whether in-app attribution tracking is enabled.
+      "thirdPartyAuthenticationTokens": [ # List of third-party authentication tokens enabled for this configuration.
+        { # Third Party Authentication Token
+          "name": "A String", # Name of the third-party authentication token.
+          "value": "A String", # Value of the third-party authentication token. This is a read-only, auto-generated field.
+        },
+      ],
+      "idDimensionValue": { # Represents a DimensionValue resource. # Dimension value for the ID of this floodlight configuration. This is a read-only, auto-generated field.
+        "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+        "value": "A String", # The value of the dimension.
+        "dimensionName": "A String", # The name of the dimension.
+        "etag": "A String", # The eTag of this response for caching purposes.
+        "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+        "id": "A String", # The ID associated with the value if available.
+      },
+      "advertiserIdDimensionValue": { # Represents a DimensionValue resource. # Dimension value for the ID of the advertiser. This is a read-only, auto-generated field.
+        "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+        "value": "A String", # The value of the dimension.
+        "dimensionName": "A String", # The name of the dimension.
+        "etag": "A String", # The eTag of this response for caching purposes.
+        "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+        "id": "A String", # The ID associated with the value if available.
+      },
+      "id": "A String", # ID of this floodlight configuration. This is a read-only, auto-generated field.
+      "userDefinedVariableConfigurations": [ # List of user defined variables enabled for this configuration.
+        { # User Defined Variable configuration.
+          "dataType": "A String", # Data type for the variable. This is a required field.
+          "reportName": "A String", # User-friendly name for the variable which will appear in reports. This is a required field, must be less than 64 characters long, and cannot contain the following characters: ""<>".
+          "variableType": "A String", # Variable name in the tag. This is a required field.
+        },
+      ],
+      "accountId": "A String", # Account ID of this floodlight configuration. This is a read-only field that can be left blank.
+    }</pre>
+</div>
+
+<div class="method">
+    <code class="details" id="update">update(profileId, body)</code>
+  <pre>Updates an existing floodlight configuration.
+
+Args:
+  profileId: string, User profile ID associated with this request. (required)
+  body: object, The request body. (required)
+    The object takes the form of:
+
+{ # Contains properties of a Floodlight configuration.
+    "naturalSearchConversionAttributionOption": "A String", # Types of attribution options for natural search conversions.
+    "kind": "dfareporting#floodlightConfiguration", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#floodlightConfiguration".
+    "exposureToConversionEnabled": True or False, # Whether the exposure-to-conversion report is enabled. This report shows detailed pathway information on up to 10 of the most recent ad exposures seen by a user before converting.
+    "lookbackConfiguration": { # Lookback configuration settings. # Lookback window settings for this floodlight configuration.
+      "clickDuration": 42, # Lookback window, in days, from the last time a given user clicked on one of your ads. If you enter 0, clicks will not be considered as triggering events for floodlight tracking. If you leave this field blank, the default value for your account will be used.
+      "postImpressionActivitiesDuration": 42, # Lookback window, in days, from the last time a given user viewed one of your ads. If you enter 0, impressions will not be considered as triggering events for floodlight tracking. If you leave this field blank, the default value for your account will be used.
+    },
+    "tagSettings": { # Dynamic and Image Tag Settings. # Configuration settings for dynamic and image floodlight tags.
+      "dynamicTagEnabled": True or False, # Whether dynamic floodlight tags are enabled.
+      "imageTagEnabled": True or False, # Whether image tags are enabled.
+    },
+    "firstDayOfWeek": "A String", # Day that will be counted as the first day of the week in reports. This is a required field.
+    "standardVariableTypes": [ # List of standard variables enabled for this configuration.
+        # 
+        # Acceptable values are:
+        # - "ORD"
+        # - "NUM"
+      "A String",
+    ],
+    "omnitureSettings": { # Omniture Integration Settings. # Settings for DCM Omniture integration.
+      "omnitureCostDataEnabled": True or False, # Whether placement cost data will be sent to Omniture. This property can be enabled only if omnitureIntegrationEnabled is true.
+      "omnitureIntegrationEnabled": True or False, # Whether Omniture integration is enabled. This property can be enabled only when the "Advanced Ad Serving" account setting is enabled.
+    },
+    "subaccountId": "A String", # Subaccount ID of this floodlight configuration. This is a read-only field that can be left blank.
+    "advertiserId": "A String", # Advertiser ID of the parent advertiser of this floodlight configuration.
+    "analyticsDataSharingEnabled": True or False, # Whether advertiser data is shared with Google Analytics.
+    "inAppAttributionTrackingEnabled": True or False, # Whether in-app attribution tracking is enabled.
+    "thirdPartyAuthenticationTokens": [ # List of third-party authentication tokens enabled for this configuration.
+      { # Third Party Authentication Token
+        "name": "A String", # Name of the third-party authentication token.
+        "value": "A String", # Value of the third-party authentication token. This is a read-only, auto-generated field.
+      },
+    ],
+    "idDimensionValue": { # Represents a DimensionValue resource. # Dimension value for the ID of this floodlight configuration. This is a read-only, auto-generated field.
+      "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+      "value": "A String", # The value of the dimension.
+      "dimensionName": "A String", # The name of the dimension.
+      "etag": "A String", # The eTag of this response for caching purposes.
+      "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+      "id": "A String", # The ID associated with the value if available.
+    },
+    "advertiserIdDimensionValue": { # Represents a DimensionValue resource. # Dimension value for the ID of the advertiser. This is a read-only, auto-generated field.
+      "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+      "value": "A String", # The value of the dimension.
+      "dimensionName": "A String", # The name of the dimension.
+      "etag": "A String", # The eTag of this response for caching purposes.
+      "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+      "id": "A String", # The ID associated with the value if available.
+    },
+    "id": "A String", # ID of this floodlight configuration. This is a read-only, auto-generated field.
+    "userDefinedVariableConfigurations": [ # List of user defined variables enabled for this configuration.
+      { # User Defined Variable configuration.
+        "dataType": "A String", # Data type for the variable. This is a required field.
+        "reportName": "A String", # User-friendly name for the variable which will appear in reports. This is a required field, must be less than 64 characters long, and cannot contain the following characters: ""<>".
+        "variableType": "A String", # Variable name in the tag. This is a required field.
+      },
+    ],
+    "accountId": "A String", # Account ID of this floodlight configuration. This is a read-only field that can be left blank.
+  }
+
+
+Returns:
+  An object of the form:
+
+    { # Contains properties of a Floodlight configuration.
+      "naturalSearchConversionAttributionOption": "A String", # Types of attribution options for natural search conversions.
+      "kind": "dfareporting#floodlightConfiguration", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#floodlightConfiguration".
+      "exposureToConversionEnabled": True or False, # Whether the exposure-to-conversion report is enabled. This report shows detailed pathway information on up to 10 of the most recent ad exposures seen by a user before converting.
+      "lookbackConfiguration": { # Lookback configuration settings. # Lookback window settings for this floodlight configuration.
+        "clickDuration": 42, # Lookback window, in days, from the last time a given user clicked on one of your ads. If you enter 0, clicks will not be considered as triggering events for floodlight tracking. If you leave this field blank, the default value for your account will be used.
+        "postImpressionActivitiesDuration": 42, # Lookback window, in days, from the last time a given user viewed one of your ads. If you enter 0, impressions will not be considered as triggering events for floodlight tracking. If you leave this field blank, the default value for your account will be used.
+      },
+      "tagSettings": { # Dynamic and Image Tag Settings. # Configuration settings for dynamic and image floodlight tags.
+        "dynamicTagEnabled": True or False, # Whether dynamic floodlight tags are enabled.
+        "imageTagEnabled": True or False, # Whether image tags are enabled.
+      },
+      "firstDayOfWeek": "A String", # Day that will be counted as the first day of the week in reports. This is a required field.
+      "standardVariableTypes": [ # List of standard variables enabled for this configuration.
+          #
+          # Acceptable values are:
+          # - "ORD"
+          # - "NUM"
+        "A String",
+      ],
+      "omnitureSettings": { # Omniture Integration Settings. # Settings for DCM Omniture integration.
+        "omnitureCostDataEnabled": True or False, # Whether placement cost data will be sent to Omniture. This property can be enabled only if omnitureIntegrationEnabled is true.
+        "omnitureIntegrationEnabled": True or False, # Whether Omniture integration is enabled. This property can be enabled only when the "Advanced Ad Serving" account setting is enabled.
+      },
+      "subaccountId": "A String", # Subaccount ID of this floodlight configuration. This is a read-only field that can be left blank.
+      "advertiserId": "A String", # Advertiser ID of the parent advertiser of this floodlight configuration.
+      "analyticsDataSharingEnabled": True or False, # Whether advertiser data is shared with Google Analytics.
+      "inAppAttributionTrackingEnabled": True or False, # Whether in-app attribution tracking is enabled.
+      "thirdPartyAuthenticationTokens": [ # List of third-party authentication tokens enabled for this configuration.
+        { # Third Party Authentication Token
+          "name": "A String", # Name of the third-party authentication token.
+          "value": "A String", # Value of the third-party authentication token. This is a read-only, auto-generated field.
+        },
+      ],
+      "idDimensionValue": { # Represents a DimensionValue resource. # Dimension value for the ID of this floodlight configuration. This is a read-only, auto-generated field.
+        "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+        "value": "A String", # The value of the dimension.
+        "dimensionName": "A String", # The name of the dimension.
+        "etag": "A String", # The eTag of this response for caching purposes.
+        "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+        "id": "A String", # The ID associated with the value if available.
+      },
+      "advertiserIdDimensionValue": { # Represents a DimensionValue resource. # Dimension value for the ID of the advertiser. This is a read-only, auto-generated field.
+        "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+        "value": "A String", # The value of the dimension.
+        "dimensionName": "A String", # The name of the dimension.
+        "etag": "A String", # The eTag of this response for caching purposes.
+        "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+        "id": "A String", # The ID associated with the value if available.
+      },
+      "id": "A String", # ID of this floodlight configuration. This is a read-only, auto-generated field.
+      "userDefinedVariableConfigurations": [ # List of user defined variables enabled for this configuration.
+        { # User Defined Variable configuration.
+          "dataType": "A String", # Data type for the variable. This is a required field.
+          "reportName": "A String", # User-friendly name for the variable which will appear in reports. This is a required field, must be less than 64 characters long, and cannot contain the following characters: ""<>".
+          "variableType": "A String", # Variable name in the tag. This is a required field.
+        },
+      ],
+      "accountId": "A String", # Account ID of this floodlight configuration. This is a read-only field that can be left blank.
+    }</pre>
+</div>
+
+</body></html>
\ No newline at end of file
diff --git a/docs/dyn/dfareporting_v2_7.html b/docs/dyn/dfareporting_v2_7.html
new file mode 100644
index 0000000..1a7a665
--- /dev/null
+++ b/docs/dyn/dfareporting_v2_7.html
@@ -0,0 +1,398 @@
+<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="dfareporting_v2_7.html">DCM/DFA Reporting And Trafficking API</a></h1>
+<h2>Instance Methods</h2>
+<p class="toc_element">
+  <code><a href="dfareporting_v2_7.accountActiveAdSummaries.html">accountActiveAdSummaries()</a></code>
+</p>
+<p class="firstline">Returns the accountActiveAdSummaries Resource.</p>
+
+<p class="toc_element">
+  <code><a href="dfareporting_v2_7.accountPermissionGroups.html">accountPermissionGroups()</a></code>
+</p>
+<p class="firstline">Returns the accountPermissionGroups Resource.</p>
+
+<p class="toc_element">
+  <code><a href="dfareporting_v2_7.accountPermissions.html">accountPermissions()</a></code>
+</p>
+<p class="firstline">Returns the accountPermissions Resource.</p>
+
+<p class="toc_element">
+  <code><a href="dfareporting_v2_7.accountUserProfiles.html">accountUserProfiles()</a></code>
+</p>
+<p class="firstline">Returns the accountUserProfiles Resource.</p>
+
+<p class="toc_element">
+  <code><a href="dfareporting_v2_7.accounts.html">accounts()</a></code>
+</p>
+<p class="firstline">Returns the accounts Resource.</p>
+
+<p class="toc_element">
+  <code><a href="dfareporting_v2_7.ads.html">ads()</a></code>
+</p>
+<p class="firstline">Returns the ads Resource.</p>
+
+<p class="toc_element">
+  <code><a href="dfareporting_v2_7.advertiserGroups.html">advertiserGroups()</a></code>
+</p>
+<p class="firstline">Returns the advertiserGroups Resource.</p>
+
+<p class="toc_element">
+  <code><a href="dfareporting_v2_7.advertisers.html">advertisers()</a></code>
+</p>
+<p class="firstline">Returns the advertisers Resource.</p>
+
+<p class="toc_element">
+  <code><a href="dfareporting_v2_7.browsers.html">browsers()</a></code>
+</p>
+<p class="firstline">Returns the browsers Resource.</p>
+
+<p class="toc_element">
+  <code><a href="dfareporting_v2_7.campaignCreativeAssociations.html">campaignCreativeAssociations()</a></code>
+</p>
+<p class="firstline">Returns the campaignCreativeAssociations Resource.</p>
+
+<p class="toc_element">
+  <code><a href="dfareporting_v2_7.campaigns.html">campaigns()</a></code>
+</p>
+<p class="firstline">Returns the campaigns Resource.</p>
+
+<p class="toc_element">
+  <code><a href="dfareporting_v2_7.changeLogs.html">changeLogs()</a></code>
+</p>
+<p class="firstline">Returns the changeLogs Resource.</p>
+
+<p class="toc_element">
+  <code><a href="dfareporting_v2_7.cities.html">cities()</a></code>
+</p>
+<p class="firstline">Returns the cities Resource.</p>
+
+<p class="toc_element">
+  <code><a href="dfareporting_v2_7.connectionTypes.html">connectionTypes()</a></code>
+</p>
+<p class="firstline">Returns the connectionTypes Resource.</p>
+
+<p class="toc_element">
+  <code><a href="dfareporting_v2_7.contentCategories.html">contentCategories()</a></code>
+</p>
+<p class="firstline">Returns the contentCategories Resource.</p>
+
+<p class="toc_element">
+  <code><a href="dfareporting_v2_7.conversions.html">conversions()</a></code>
+</p>
+<p class="firstline">Returns the conversions Resource.</p>
+
+<p class="toc_element">
+  <code><a href="dfareporting_v2_7.countries.html">countries()</a></code>
+</p>
+<p class="firstline">Returns the countries Resource.</p>
+
+<p class="toc_element">
+  <code><a href="dfareporting_v2_7.creativeAssets.html">creativeAssets()</a></code>
+</p>
+<p class="firstline">Returns the creativeAssets Resource.</p>
+
+<p class="toc_element">
+  <code><a href="dfareporting_v2_7.creativeFieldValues.html">creativeFieldValues()</a></code>
+</p>
+<p class="firstline">Returns the creativeFieldValues Resource.</p>
+
+<p class="toc_element">
+  <code><a href="dfareporting_v2_7.creativeFields.html">creativeFields()</a></code>
+</p>
+<p class="firstline">Returns the creativeFields Resource.</p>
+
+<p class="toc_element">
+  <code><a href="dfareporting_v2_7.creativeGroups.html">creativeGroups()</a></code>
+</p>
+<p class="firstline">Returns the creativeGroups Resource.</p>
+
+<p class="toc_element">
+  <code><a href="dfareporting_v2_7.creatives.html">creatives()</a></code>
+</p>
+<p class="firstline">Returns the creatives Resource.</p>
+
+<p class="toc_element">
+  <code><a href="dfareporting_v2_7.dimensionValues.html">dimensionValues()</a></code>
+</p>
+<p class="firstline">Returns the dimensionValues Resource.</p>
+
+<p class="toc_element">
+  <code><a href="dfareporting_v2_7.directorySiteContacts.html">directorySiteContacts()</a></code>
+</p>
+<p class="firstline">Returns the directorySiteContacts Resource.</p>
+
+<p class="toc_element">
+  <code><a href="dfareporting_v2_7.directorySites.html">directorySites()</a></code>
+</p>
+<p class="firstline">Returns the directorySites Resource.</p>
+
+<p class="toc_element">
+  <code><a href="dfareporting_v2_7.dynamicTargetingKeys.html">dynamicTargetingKeys()</a></code>
+</p>
+<p class="firstline">Returns the dynamicTargetingKeys Resource.</p>
+
+<p class="toc_element">
+  <code><a href="dfareporting_v2_7.eventTags.html">eventTags()</a></code>
+</p>
+<p class="firstline">Returns the eventTags Resource.</p>
+
+<p class="toc_element">
+  <code><a href="dfareporting_v2_7.files.html">files()</a></code>
+</p>
+<p class="firstline">Returns the files Resource.</p>
+
+<p class="toc_element">
+  <code><a href="dfareporting_v2_7.floodlightActivities.html">floodlightActivities()</a></code>
+</p>
+<p class="firstline">Returns the floodlightActivities Resource.</p>
+
+<p class="toc_element">
+  <code><a href="dfareporting_v2_7.floodlightActivityGroups.html">floodlightActivityGroups()</a></code>
+</p>
+<p class="firstline">Returns the floodlightActivityGroups Resource.</p>
+
+<p class="toc_element">
+  <code><a href="dfareporting_v2_7.floodlightConfigurations.html">floodlightConfigurations()</a></code>
+</p>
+<p class="firstline">Returns the floodlightConfigurations Resource.</p>
+
+<p class="toc_element">
+  <code><a href="dfareporting_v2_7.inventoryItems.html">inventoryItems()</a></code>
+</p>
+<p class="firstline">Returns the inventoryItems Resource.</p>
+
+<p class="toc_element">
+  <code><a href="dfareporting_v2_7.landingPages.html">landingPages()</a></code>
+</p>
+<p class="firstline">Returns the landingPages Resource.</p>
+
+<p class="toc_element">
+  <code><a href="dfareporting_v2_7.languages.html">languages()</a></code>
+</p>
+<p class="firstline">Returns the languages Resource.</p>
+
+<p class="toc_element">
+  <code><a href="dfareporting_v2_7.metros.html">metros()</a></code>
+</p>
+<p class="firstline">Returns the metros Resource.</p>
+
+<p class="toc_element">
+  <code><a href="dfareporting_v2_7.mobileCarriers.html">mobileCarriers()</a></code>
+</p>
+<p class="firstline">Returns the mobileCarriers Resource.</p>
+
+<p class="toc_element">
+  <code><a href="dfareporting_v2_7.operatingSystemVersions.html">operatingSystemVersions()</a></code>
+</p>
+<p class="firstline">Returns the operatingSystemVersions Resource.</p>
+
+<p class="toc_element">
+  <code><a href="dfareporting_v2_7.operatingSystems.html">operatingSystems()</a></code>
+</p>
+<p class="firstline">Returns the operatingSystems Resource.</p>
+
+<p class="toc_element">
+  <code><a href="dfareporting_v2_7.orderDocuments.html">orderDocuments()</a></code>
+</p>
+<p class="firstline">Returns the orderDocuments Resource.</p>
+
+<p class="toc_element">
+  <code><a href="dfareporting_v2_7.orders.html">orders()</a></code>
+</p>
+<p class="firstline">Returns the orders Resource.</p>
+
+<p class="toc_element">
+  <code><a href="dfareporting_v2_7.placementGroups.html">placementGroups()</a></code>
+</p>
+<p class="firstline">Returns the placementGroups Resource.</p>
+
+<p class="toc_element">
+  <code><a href="dfareporting_v2_7.placementStrategies.html">placementStrategies()</a></code>
+</p>
+<p class="firstline">Returns the placementStrategies Resource.</p>
+
+<p class="toc_element">
+  <code><a href="dfareporting_v2_7.placements.html">placements()</a></code>
+</p>
+<p class="firstline">Returns the placements Resource.</p>
+
+<p class="toc_element">
+  <code><a href="dfareporting_v2_7.platformTypes.html">platformTypes()</a></code>
+</p>
+<p class="firstline">Returns the platformTypes Resource.</p>
+
+<p class="toc_element">
+  <code><a href="dfareporting_v2_7.postalCodes.html">postalCodes()</a></code>
+</p>
+<p class="firstline">Returns the postalCodes Resource.</p>
+
+<p class="toc_element">
+  <code><a href="dfareporting_v2_7.projects.html">projects()</a></code>
+</p>
+<p class="firstline">Returns the projects Resource.</p>
+
+<p class="toc_element">
+  <code><a href="dfareporting_v2_7.regions.html">regions()</a></code>
+</p>
+<p class="firstline">Returns the regions Resource.</p>
+
+<p class="toc_element">
+  <code><a href="dfareporting_v2_7.remarketingListShares.html">remarketingListShares()</a></code>
+</p>
+<p class="firstline">Returns the remarketingListShares Resource.</p>
+
+<p class="toc_element">
+  <code><a href="dfareporting_v2_7.remarketingLists.html">remarketingLists()</a></code>
+</p>
+<p class="firstline">Returns the remarketingLists Resource.</p>
+
+<p class="toc_element">
+  <code><a href="dfareporting_v2_7.reports.html">reports()</a></code>
+</p>
+<p class="firstline">Returns the reports Resource.</p>
+
+<p class="toc_element">
+  <code><a href="dfareporting_v2_7.sites.html">sites()</a></code>
+</p>
+<p class="firstline">Returns the sites Resource.</p>
+
+<p class="toc_element">
+  <code><a href="dfareporting_v2_7.sizes.html">sizes()</a></code>
+</p>
+<p class="firstline">Returns the sizes Resource.</p>
+
+<p class="toc_element">
+  <code><a href="dfareporting_v2_7.subaccounts.html">subaccounts()</a></code>
+</p>
+<p class="firstline">Returns the subaccounts Resource.</p>
+
+<p class="toc_element">
+  <code><a href="dfareporting_v2_7.targetableRemarketingLists.html">targetableRemarketingLists()</a></code>
+</p>
+<p class="firstline">Returns the targetableRemarketingLists Resource.</p>
+
+<p class="toc_element">
+  <code><a href="dfareporting_v2_7.targetingTemplates.html">targetingTemplates()</a></code>
+</p>
+<p class="firstline">Returns the targetingTemplates Resource.</p>
+
+<p class="toc_element">
+  <code><a href="dfareporting_v2_7.userProfiles.html">userProfiles()</a></code>
+</p>
+<p class="firstline">Returns the userProfiles Resource.</p>
+
+<p class="toc_element">
+  <code><a href="dfareporting_v2_7.userRolePermissionGroups.html">userRolePermissionGroups()</a></code>
+</p>
+<p class="firstline">Returns the userRolePermissionGroups Resource.</p>
+
+<p class="toc_element">
+  <code><a href="dfareporting_v2_7.userRolePermissions.html">userRolePermissions()</a></code>
+</p>
+<p class="firstline">Returns the userRolePermissions Resource.</p>
+
+<p class="toc_element">
+  <code><a href="dfareporting_v2_7.userRoles.html">userRoles()</a></code>
+</p>
+<p class="firstline">Returns the userRoles Resource.</p>
+
+<p class="toc_element">
+  <code><a href="dfareporting_v2_7.videoFormats.html">videoFormats()</a></code>
+</p>
+<p class="firstline">Returns the videoFormats Resource.</p>
+
+<p class="toc_element">
+  <code><a href="#new_batch_http_request">new_batch_http_request()</a></code></p>
+<p class="firstline">Create a BatchHttpRequest object based on the discovery document.</p>
+<h3>Method Details</h3>
+<div class="method">
+    <code class="details" id="new_batch_http_request">new_batch_http_request()</code>
+  <pre>Create a BatchHttpRequest object based on the discovery document.
+
+        Args:
+          callback: callable, A callback to be called for each response, of the
+            form callback(id, response, exception). The first parameter is the
+            request id, and the second is the deserialized response object. The
+            third is an apiclient.errors.HttpError exception object if an HTTP
+            error occurred while processing the request, or None if no error
+            occurred.
+
+        Returns:
+          A BatchHttpRequest object based on the discovery document.
+        </pre>
+</div>
+
+</body></html>
\ No newline at end of file
diff --git a/docs/dyn/dfareporting_v2_7.inventoryItems.html b/docs/dyn/dfareporting_v2_7.inventoryItems.html
new file mode 100644
index 0000000..2f281f9
--- /dev/null
+++ b/docs/dyn/dfareporting_v2_7.inventoryItems.html
@@ -0,0 +1,250 @@
+<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="dfareporting_v2_7.html">DCM/DFA Reporting And Trafficking API</a> . <a href="dfareporting_v2_7.inventoryItems.html">inventoryItems</a></h1>
+<h2>Instance Methods</h2>
+<p class="toc_element">
+  <code><a href="#get">get(profileId, projectId, id)</a></code></p>
+<p class="firstline">Gets one inventory item by ID.</p>
+<p class="toc_element">
+  <code><a href="#list">list(profileId, projectId, pageToken=None, inPlan=None, sortOrder=None, type=None, orderId=None, maxResults=None, siteId=None, sortField=None, ids=None)</a></code></p>
+<p class="firstline">Retrieves a list of inventory items, possibly filtered. This method supports paging.</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>
+<h3>Method Details</h3>
+<div class="method">
+    <code class="details" id="get">get(profileId, projectId, id)</code>
+  <pre>Gets one inventory item by ID.
+
+Args:
+  profileId: string, User profile ID associated with this request. (required)
+  projectId: string, Project ID for order documents. (required)
+  id: string, Inventory item ID. (required)
+
+Returns:
+  An object of the form:
+
+    { # Represents a buy from the DoubleClick Planning inventory store.
+    "orderId": "A String", # Order ID of this inventory item.
+    "pricing": { # Pricing Information # Pricing of this inventory item.
+      "groupType": "A String", # Group type of this inventory item if it represents a placement group. Is null otherwise. There are two type of placement groups: PLANNING_PLACEMENT_GROUP_TYPE_PACKAGE is a simple group of inventory items that acts as a single pricing point for a group of tags. PLANNING_PLACEMENT_GROUP_TYPE_ROADBLOCK is a group of inventory items that not only acts as a single pricing point, but also assumes that all the tags in it will be served at the same time. A roadblock requires one of its assigned inventory items to be marked as primary.
+      "startDate": "A String", # Start date of this inventory item.
+      "endDate": "A String", # End date of this inventory item.
+      "pricingType": "A String", # Pricing type of this inventory item.
+      "flights": [ # Flights of this inventory item. A flight (a.k.a. pricing period) represents the inventory item pricing information for a specific period of time.
+        { # Flight
+          "rateOrCost": "A String", # Rate or cost of this flight.
+          "startDate": "A String", # Inventory item flight start date.
+          "units": "A String", # Units of this flight.
+          "endDate": "A String", # Inventory item flight end date.
+        },
+      ],
+      "capCostType": "A String", # Cap cost type of this inventory item.
+    },
+    "kind": "dfareporting#inventoryItem", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#inventoryItem".
+    "negotiationChannelId": "A String", # Negotiation channel ID of this inventory item.
+    "subaccountId": "A String", # Subaccount ID of this inventory item.
+    "name": "A String", # Name of this inventory item. For standalone inventory items, this is the same name as that of its only ad slot. For group inventory items, this can differ from the name of any of its ad slots.
+    "estimatedClickThroughRate": "A String", # Estimated click-through rate of this inventory item.
+    "lastModifiedInfo": { # Modification timestamp. # Information about the most recent modification of this inventory item.
+      "time": "A String", # Timestamp of the last change in milliseconds since epoch.
+    },
+    "estimatedConversionRate": "A String", # Estimated conversion rate of this inventory item.
+    "inPlan": True or False, # Whether this inventory item is in plan.
+    "id": "A String", # ID of this inventory item.
+    "advertiserId": "A String", # Advertiser ID of this inventory item.
+    "siteId": "A String", # ID of the site this inventory item is associated with.
+    "adSlots": [ # Ad slots of this inventory item. If this inventory item represents a standalone placement, there will be exactly one ad slot. If this inventory item represents a placement group, there will be more than one ad slot, each representing one child placement in that placement group.
+      { # Ad Slot
+        "comment": "A String", # Comment for this ad slot.
+        "linkedPlacementId": "A String", # ID of the placement from an external platform that is linked to this ad slot.
+        "name": "A String", # Name of this ad slot.
+        "primary": True or False, # Primary ad slot of a roadblock inventory item.
+        "height": "A String", # Height of this ad slot.
+        "width": "A String", # Width of this ad slot.
+        "paymentSourceType": "A String", # Payment source type of this ad slot.
+        "compatibility": "A String", # Ad slot compatibility. DISPLAY and DISPLAY_INTERSTITIAL refer to rendering either on desktop, mobile devices or in mobile apps for regular or interstitial ads respectively. APP and APP_INTERSTITIAL are for rendering in mobile apps. IN_STREAM_VIDEO refers to rendering in in-stream video ads developed with the VAST standard.
+      },
+    ],
+    "projectId": "A String", # Project ID of this inventory item.
+    "rfpId": "A String", # RFP ID of this inventory item.
+    "type": "A String", # Type of inventory item.
+    "contentCategoryId": "A String", # Content category ID of this inventory item.
+    "placementStrategyId": "A String", # Placement strategy ID of this inventory item.
+    "accountId": "A String", # Account ID of this inventory item.
+  }</pre>
+</div>
+
+<div class="method">
+    <code class="details" id="list">list(profileId, projectId, pageToken=None, inPlan=None, sortOrder=None, type=None, orderId=None, maxResults=None, siteId=None, sortField=None, ids=None)</code>
+  <pre>Retrieves a list of inventory items, possibly filtered. This method supports paging.
+
+Args:
+  profileId: string, User profile ID associated with this request. (required)
+  projectId: string, Project ID for order documents. (required)
+  pageToken: string, Value of the nextPageToken from the previous result page.
+  inPlan: boolean, Select only inventory items that are in plan.
+  sortOrder: string, Order of sorted results, default is ASCENDING.
+    Allowed values
+      ASCENDING - 
+      DESCENDING - 
+  type: string, Select only inventory items with this type.
+    Allowed values
+      PLANNING_PLACEMENT_TYPE_CREDIT - 
+      PLANNING_PLACEMENT_TYPE_REGULAR - 
+  orderId: string, Select only inventory items that belong to specified orders. (repeated)
+  maxResults: integer, Maximum number of results to return.
+  siteId: string, Select only inventory items that are associated with these sites. (repeated)
+  sortField: string, Field by which to sort the list.
+    Allowed values
+      ID - 
+      NAME - 
+  ids: string, Select only inventory items with these IDs. (repeated)
+
+Returns:
+  An object of the form:
+
+    { # Inventory item List Response
+    "nextPageToken": "A String", # Pagination token to be used for the next list operation.
+    "kind": "dfareporting#inventoryItemsListResponse", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#inventoryItemsListResponse".
+    "inventoryItems": [ # Inventory item collection
+      { # Represents a buy from the DoubleClick Planning inventory store.
+        "orderId": "A String", # Order ID of this inventory item.
+        "pricing": { # Pricing Information # Pricing of this inventory item.
+          "groupType": "A String", # Group type of this inventory item if it represents a placement group. Is null otherwise. There are two type of placement groups: PLANNING_PLACEMENT_GROUP_TYPE_PACKAGE is a simple group of inventory items that acts as a single pricing point for a group of tags. PLANNING_PLACEMENT_GROUP_TYPE_ROADBLOCK is a group of inventory items that not only acts as a single pricing point, but also assumes that all the tags in it will be served at the same time. A roadblock requires one of its assigned inventory items to be marked as primary.
+          "startDate": "A String", # Start date of this inventory item.
+          "endDate": "A String", # End date of this inventory item.
+          "pricingType": "A String", # Pricing type of this inventory item.
+          "flights": [ # Flights of this inventory item. A flight (a.k.a. pricing period) represents the inventory item pricing information for a specific period of time.
+            { # Flight
+              "rateOrCost": "A String", # Rate or cost of this flight.
+              "startDate": "A String", # Inventory item flight start date.
+              "units": "A String", # Units of this flight.
+              "endDate": "A String", # Inventory item flight end date.
+            },
+          ],
+          "capCostType": "A String", # Cap cost type of this inventory item.
+        },
+        "kind": "dfareporting#inventoryItem", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#inventoryItem".
+        "negotiationChannelId": "A String", # Negotiation channel ID of this inventory item.
+        "subaccountId": "A String", # Subaccount ID of this inventory item.
+        "name": "A String", # Name of this inventory item. For standalone inventory items, this is the same name as that of its only ad slot. For group inventory items, this can differ from the name of any of its ad slots.
+        "estimatedClickThroughRate": "A String", # Estimated click-through rate of this inventory item.
+        "lastModifiedInfo": { # Modification timestamp. # Information about the most recent modification of this inventory item.
+          "time": "A String", # Timestamp of the last change in milliseconds since epoch.
+        },
+        "estimatedConversionRate": "A String", # Estimated conversion rate of this inventory item.
+        "inPlan": True or False, # Whether this inventory item is in plan.
+        "id": "A String", # ID of this inventory item.
+        "advertiserId": "A String", # Advertiser ID of this inventory item.
+        "siteId": "A String", # ID of the site this inventory item is associated with.
+        "adSlots": [ # Ad slots of this inventory item. If this inventory item represents a standalone placement, there will be exactly one ad slot. If this inventory item represents a placement group, there will be more than one ad slot, each representing one child placement in that placement group.
+          { # Ad Slot
+            "comment": "A String", # Comment for this ad slot.
+            "linkedPlacementId": "A String", # ID of the placement from an external platform that is linked to this ad slot.
+            "name": "A String", # Name of this ad slot.
+            "primary": True or False, # Primary ad slot of a roadblock inventory item.
+            "height": "A String", # Height of this ad slot.
+            "width": "A String", # Width of this ad slot.
+            "paymentSourceType": "A String", # Payment source type of this ad slot.
+            "compatibility": "A String", # Ad slot compatibility. DISPLAY and DISPLAY_INTERSTITIAL refer to rendering either on desktop, mobile devices or in mobile apps for regular or interstitial ads respectively. APP and APP_INTERSTITIAL are for rendering in mobile apps. IN_STREAM_VIDEO refers to rendering in in-stream video ads developed with the VAST standard.
+          },
+        ],
+        "projectId": "A String", # Project ID of this inventory item.
+        "rfpId": "A String", # RFP ID of this inventory item.
+        "type": "A String", # Type of inventory item.
+        "contentCategoryId": "A String", # Content category ID of this inventory item.
+        "placementStrategyId": "A String", # Placement strategy ID of this inventory item.
+        "accountId": "A String", # Account ID of this inventory item.
+      },
+    ],
+  }</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>
+
+</body></html>
\ No newline at end of file
diff --git a/docs/dyn/dfareporting_v2_7.landingPages.html b/docs/dyn/dfareporting_v2_7.landingPages.html
new file mode 100644
index 0000000..0d3e9a8
--- /dev/null
+++ b/docs/dyn/dfareporting_v2_7.landingPages.html
@@ -0,0 +1,247 @@
+<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="dfareporting_v2_7.html">DCM/DFA Reporting And Trafficking API</a> . <a href="dfareporting_v2_7.landingPages.html">landingPages</a></h1>
+<h2>Instance Methods</h2>
+<p class="toc_element">
+  <code><a href="#delete">delete(profileId, campaignId, id)</a></code></p>
+<p class="firstline">Deletes an existing campaign landing page.</p>
+<p class="toc_element">
+  <code><a href="#get">get(profileId, campaignId, id)</a></code></p>
+<p class="firstline">Gets one campaign landing page by ID.</p>
+<p class="toc_element">
+  <code><a href="#insert">insert(profileId, campaignId, body)</a></code></p>
+<p class="firstline">Inserts a new landing page for the specified campaign.</p>
+<p class="toc_element">
+  <code><a href="#list">list(profileId, campaignId)</a></code></p>
+<p class="firstline">Retrieves the list of landing pages for the specified campaign.</p>
+<p class="toc_element">
+  <code><a href="#patch">patch(profileId, campaignId, id, body)</a></code></p>
+<p class="firstline">Updates an existing campaign landing page. This method supports patch semantics.</p>
+<p class="toc_element">
+  <code><a href="#update">update(profileId, campaignId, body)</a></code></p>
+<p class="firstline">Updates an existing campaign landing page.</p>
+<h3>Method Details</h3>
+<div class="method">
+    <code class="details" id="delete">delete(profileId, campaignId, id)</code>
+  <pre>Deletes an existing campaign landing page.
+
+Args:
+  profileId: string, User profile ID associated with this request. (required)
+  campaignId: string, Landing page campaign ID. (required)
+  id: string, Landing page ID. (required)
+</pre>
+</div>
+
+<div class="method">
+    <code class="details" id="get">get(profileId, campaignId, id)</code>
+  <pre>Gets one campaign landing page by ID.
+
+Args:
+  profileId: string, User profile ID associated with this request. (required)
+  campaignId: string, Landing page campaign ID. (required)
+  id: string, Landing page ID. (required)
+
+Returns:
+  An object of the form:
+
+    { # Contains information about where a user's browser is taken after the user clicks an ad.
+      "default": True or False, # Whether or not this landing page will be assigned to any ads or creatives that do not have a landing page assigned explicitly. Only one default landing page is allowed per campaign.
+      "url": "A String", # URL of this landing page. This is a required field.
+      "kind": "dfareporting#landingPage", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#landingPage".
+      "id": "A String", # ID of this landing page. This is a read-only, auto-generated field.
+      "name": "A String", # Name of this landing page. This is a required field. It must be less than 256 characters long, and must be unique among landing pages of the same campaign.
+    }</pre>
+</div>
+
+<div class="method">
+    <code class="details" id="insert">insert(profileId, campaignId, body)</code>
+  <pre>Inserts a new landing page for the specified campaign.
+
+Args:
+  profileId: string, User profile ID associated with this request. (required)
+  campaignId: string, Landing page campaign ID. (required)
+  body: object, The request body. (required)
+    The object takes the form of:
+
+{ # Contains information about where a user's browser is taken after the user clicks an ad.
+    "default": True or False, # Whether or not this landing page will be assigned to any ads or creatives that do not have a landing page assigned explicitly. Only one default landing page is allowed per campaign.
+    "url": "A String", # URL of this landing page. This is a required field.
+    "kind": "dfareporting#landingPage", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#landingPage".
+    "id": "A String", # ID of this landing page. This is a read-only, auto-generated field.
+    "name": "A String", # Name of this landing page. This is a required field. It must be less than 256 characters long, and must be unique among landing pages of the same campaign.
+  }
+
+
+Returns:
+  An object of the form:
+
+    { # Contains information about where a user's browser is taken after the user clicks an ad.
+      "default": True or False, # Whether or not this landing page will be assigned to any ads or creatives that do not have a landing page assigned explicitly. Only one default landing page is allowed per campaign.
+      "url": "A String", # URL of this landing page. This is a required field.
+      "kind": "dfareporting#landingPage", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#landingPage".
+      "id": "A String", # ID of this landing page. This is a read-only, auto-generated field.
+      "name": "A String", # Name of this landing page. This is a required field. It must be less than 256 characters long, and must be unique among landing pages of the same campaign.
+    }</pre>
+</div>
+
+<div class="method">
+    <code class="details" id="list">list(profileId, campaignId)</code>
+  <pre>Retrieves the list of landing pages for the specified campaign.
+
+Args:
+  profileId: string, User profile ID associated with this request. (required)
+  campaignId: string, Landing page campaign ID. (required)
+
+Returns:
+  An object of the form:
+
+    { # Landing Page List Response
+    "kind": "dfareporting#landingPagesListResponse", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#landingPagesListResponse".
+    "landingPages": [ # Landing page collection
+      { # Contains information about where a user's browser is taken after the user clicks an ad.
+          "default": True or False, # Whether or not this landing page will be assigned to any ads or creatives that do not have a landing page assigned explicitly. Only one default landing page is allowed per campaign.
+          "url": "A String", # URL of this landing page. This is a required field.
+          "kind": "dfareporting#landingPage", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#landingPage".
+          "id": "A String", # ID of this landing page. This is a read-only, auto-generated field.
+          "name": "A String", # Name of this landing page. This is a required field. It must be less than 256 characters long, and must be unique among landing pages of the same campaign.
+        },
+    ],
+  }</pre>
+</div>
+
+<div class="method">
+    <code class="details" id="patch">patch(profileId, campaignId, id, body)</code>
+  <pre>Updates an existing campaign landing page. This method supports patch semantics.
+
+Args:
+  profileId: string, User profile ID associated with this request. (required)
+  campaignId: string, Landing page campaign ID. (required)
+  id: string, Landing page ID. (required)
+  body: object, The request body. (required)
+    The object takes the form of:
+
+{ # Contains information about where a user's browser is taken after the user clicks an ad.
+    "default": True or False, # Whether or not this landing page will be assigned to any ads or creatives that do not have a landing page assigned explicitly. Only one default landing page is allowed per campaign.
+    "url": "A String", # URL of this landing page. This is a required field.
+    "kind": "dfareporting#landingPage", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#landingPage".
+    "id": "A String", # ID of this landing page. This is a read-only, auto-generated field.
+    "name": "A String", # Name of this landing page. This is a required field. It must be less than 256 characters long, and must be unique among landing pages of the same campaign.
+  }
+
+
+Returns:
+  An object of the form:
+
+    { # Contains information about where a user's browser is taken after the user clicks an ad.
+      "default": True or False, # Whether or not this landing page will be assigned to any ads or creatives that do not have a landing page assigned explicitly. Only one default landing page is allowed per campaign.
+      "url": "A String", # URL of this landing page. This is a required field.
+      "kind": "dfareporting#landingPage", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#landingPage".
+      "id": "A String", # ID of this landing page. This is a read-only, auto-generated field.
+      "name": "A String", # Name of this landing page. This is a required field. It must be less than 256 characters long, and must be unique among landing pages of the same campaign.
+    }</pre>
+</div>
+
+<div class="method">
+    <code class="details" id="update">update(profileId, campaignId, body)</code>
+  <pre>Updates an existing campaign landing page.
+
+Args:
+  profileId: string, User profile ID associated with this request. (required)
+  campaignId: string, Landing page campaign ID. (required)
+  body: object, The request body. (required)
+    The object takes the form of:
+
+{ # Contains information about where a user's browser is taken after the user clicks an ad.
+    "default": True or False, # Whether or not this landing page will be assigned to any ads or creatives that do not have a landing page assigned explicitly. Only one default landing page is allowed per campaign.
+    "url": "A String", # URL of this landing page. This is a required field.
+    "kind": "dfareporting#landingPage", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#landingPage".
+    "id": "A String", # ID of this landing page. This is a read-only, auto-generated field.
+    "name": "A String", # Name of this landing page. This is a required field. It must be less than 256 characters long, and must be unique among landing pages of the same campaign.
+  }
+
+
+Returns:
+  An object of the form:
+
+    { # Contains information about where a user's browser is taken after the user clicks an ad.
+      "default": True or False, # Whether or not this landing page will be assigned to any ads or creatives that do not have a landing page assigned explicitly. Only one default landing page is allowed per campaign.
+      "url": "A String", # URL of this landing page. This is a required field.
+      "kind": "dfareporting#landingPage", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#landingPage".
+      "id": "A String", # ID of this landing page. This is a read-only, auto-generated field.
+      "name": "A String", # Name of this landing page. This is a required field. It must be less than 256 characters long, and must be unique among landing pages of the same campaign.
+    }</pre>
+</div>
+
+</body></html>
\ No newline at end of file
diff --git a/docs/dyn/dfareporting_v2_7.languages.html b/docs/dyn/dfareporting_v2_7.languages.html
new file mode 100644
index 0000000..d098075
--- /dev/null
+++ b/docs/dyn/dfareporting_v2_7.languages.html
@@ -0,0 +1,104 @@
+<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="dfareporting_v2_7.html">DCM/DFA Reporting And Trafficking API</a> . <a href="dfareporting_v2_7.languages.html">languages</a></h1>
+<h2>Instance Methods</h2>
+<p class="toc_element">
+  <code><a href="#list">list(profileId)</a></code></p>
+<p class="firstline">Retrieves a list of languages.</p>
+<h3>Method Details</h3>
+<div class="method">
+    <code class="details" id="list">list(profileId)</code>
+  <pre>Retrieves a list of languages.
+
+Args:
+  profileId: string, User profile ID associated with this request. (required)
+
+Returns:
+  An object of the form:
+
+    { # Language List Response
+    "languages": [ # Language collection.
+      { # Contains information about a language that can be targeted by ads.
+        "languageCode": "A String", # Format of language code is an ISO 639 two-letter language code optionally followed by an underscore followed by an ISO 3166 code. Examples are "en" for English or "zh_CN" for Simplified Chinese.
+        "kind": "dfareporting#language", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#language".
+        "id": "A String", # Language ID of this language. This is the ID used for targeting and generating reports.
+        "name": "A String", # Name of this language.
+      },
+    ],
+    "kind": "dfareporting#languagesListResponse", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#languagesListResponse".
+  }</pre>
+</div>
+
+</body></html>
\ No newline at end of file
diff --git a/docs/dyn/dfareporting_v2_7.metros.html b/docs/dyn/dfareporting_v2_7.metros.html
new file mode 100644
index 0000000..81faa5b
--- /dev/null
+++ b/docs/dyn/dfareporting_v2_7.metros.html
@@ -0,0 +1,107 @@
+<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="dfareporting_v2_7.html">DCM/DFA Reporting And Trafficking API</a> . <a href="dfareporting_v2_7.metros.html">metros</a></h1>
+<h2>Instance Methods</h2>
+<p class="toc_element">
+  <code><a href="#list">list(profileId)</a></code></p>
+<p class="firstline">Retrieves a list of metros.</p>
+<h3>Method Details</h3>
+<div class="method">
+    <code class="details" id="list">list(profileId)</code>
+  <pre>Retrieves a list of metros.
+
+Args:
+  profileId: string, User profile ID associated with this request. (required)
+
+Returns:
+  An object of the form:
+
+    { # Metro List Response
+    "kind": "dfareporting#metrosListResponse", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#metrosListResponse".
+    "metros": [ # Metro collection.
+      { # Contains information about a metro region that can be targeted by ads.
+        "kind": "dfareporting#metro", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#metro".
+        "countryDartId": "A String", # DART ID of the country to which this metro region belongs.
+        "name": "A String", # Name of this metro region.
+        "countryCode": "A String", # Country code of the country to which this metro region belongs.
+        "metroCode": "A String", # Metro code of this metro region. This is equivalent to dma_id.
+        "dmaId": "A String", # DMA ID of this metro region. This is the ID used for targeting and generating reports, and is equivalent to metro_code.
+        "dartId": "A String", # DART ID of this metro region.
+      },
+    ],
+  }</pre>
+</div>
+
+</body></html>
\ No newline at end of file
diff --git a/docs/dyn/dfareporting_v2_7.mobileCarriers.html b/docs/dyn/dfareporting_v2_7.mobileCarriers.html
new file mode 100644
index 0000000..48d3e89
--- /dev/null
+++ b/docs/dyn/dfareporting_v2_7.mobileCarriers.html
@@ -0,0 +1,128 @@
+<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="dfareporting_v2_7.html">DCM/DFA Reporting And Trafficking API</a> . <a href="dfareporting_v2_7.mobileCarriers.html">mobileCarriers</a></h1>
+<h2>Instance Methods</h2>
+<p class="toc_element">
+  <code><a href="#get">get(profileId, id)</a></code></p>
+<p class="firstline">Gets one mobile carrier by ID.</p>
+<p class="toc_element">
+  <code><a href="#list">list(profileId)</a></code></p>
+<p class="firstline">Retrieves a list of mobile carriers.</p>
+<h3>Method Details</h3>
+<div class="method">
+    <code class="details" id="get">get(profileId, id)</code>
+  <pre>Gets one mobile carrier by ID.
+
+Args:
+  profileId: string, User profile ID associated with this request. (required)
+  id: string, Mobile carrier ID. (required)
+
+Returns:
+  An object of the form:
+
+    { # Contains information about a mobile carrier that can be targeted by ads.
+    "kind": "dfareporting#mobileCarrier", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#mobileCarrier".
+    "countryDartId": "A String", # DART ID of the country to which this mobile carrier belongs.
+    "id": "A String", # ID of this mobile carrier.
+    "countryCode": "A String", # Country code of the country to which this mobile carrier belongs.
+    "name": "A String", # Name of this mobile carrier.
+  }</pre>
+</div>
+
+<div class="method">
+    <code class="details" id="list">list(profileId)</code>
+  <pre>Retrieves a list of mobile carriers.
+
+Args:
+  profileId: string, User profile ID associated with this request. (required)
+
+Returns:
+  An object of the form:
+
+    { # Mobile Carrier List Response
+    "kind": "dfareporting#mobileCarriersListResponse", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#mobileCarriersListResponse".
+    "mobileCarriers": [ # Mobile carrier collection.
+      { # Contains information about a mobile carrier that can be targeted by ads.
+        "kind": "dfareporting#mobileCarrier", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#mobileCarrier".
+        "countryDartId": "A String", # DART ID of the country to which this mobile carrier belongs.
+        "id": "A String", # ID of this mobile carrier.
+        "countryCode": "A String", # Country code of the country to which this mobile carrier belongs.
+        "name": "A String", # Name of this mobile carrier.
+      },
+    ],
+  }</pre>
+</div>
+
+</body></html>
\ No newline at end of file
diff --git a/docs/dyn/dfareporting_v2_7.operatingSystemVersions.html b/docs/dyn/dfareporting_v2_7.operatingSystemVersions.html
new file mode 100644
index 0000000..ae706e6
--- /dev/null
+++ b/docs/dyn/dfareporting_v2_7.operatingSystemVersions.html
@@ -0,0 +1,142 @@
+<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="dfareporting_v2_7.html">DCM/DFA Reporting And Trafficking API</a> . <a href="dfareporting_v2_7.operatingSystemVersions.html">operatingSystemVersions</a></h1>
+<h2>Instance Methods</h2>
+<p class="toc_element">
+  <code><a href="#get">get(profileId, id)</a></code></p>
+<p class="firstline">Gets one operating system version by ID.</p>
+<p class="toc_element">
+  <code><a href="#list">list(profileId)</a></code></p>
+<p class="firstline">Retrieves a list of operating system versions.</p>
+<h3>Method Details</h3>
+<div class="method">
+    <code class="details" id="get">get(profileId, id)</code>
+  <pre>Gets one operating system version by ID.
+
+Args:
+  profileId: string, User profile ID associated with this request. (required)
+  id: string, Operating system version ID. (required)
+
+Returns:
+  An object of the form:
+
+    { # Contains information about a particular version of an operating system that can be targeted by ads.
+    "majorVersion": "A String", # Major version (leftmost number) of this operating system version.
+    "kind": "dfareporting#operatingSystemVersion", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#operatingSystemVersion".
+    "name": "A String", # Name of this operating system version.
+    "id": "A String", # ID of this operating system version.
+    "operatingSystem": { # Contains information about an operating system that can be targeted by ads. # Operating system of this operating system version.
+      "mobile": True or False, # Whether this operating system is for mobile.
+      "dartId": "A String", # DART ID of this operating system. This is the ID used for targeting.
+      "kind": "dfareporting#operatingSystem", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#operatingSystem".
+      "name": "A String", # Name of this operating system.
+      "desktop": True or False, # Whether this operating system is for desktop.
+    },
+    "minorVersion": "A String", # Minor version (number after the first dot) of this operating system version.
+  }</pre>
+</div>
+
+<div class="method">
+    <code class="details" id="list">list(profileId)</code>
+  <pre>Retrieves a list of operating system versions.
+
+Args:
+  profileId: string, User profile ID associated with this request. (required)
+
+Returns:
+  An object of the form:
+
+    { # Operating System Version List Response
+    "kind": "dfareporting#operatingSystemVersionsListResponse", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#operatingSystemVersionsListResponse".
+    "operatingSystemVersions": [ # Operating system version collection.
+      { # Contains information about a particular version of an operating system that can be targeted by ads.
+        "majorVersion": "A String", # Major version (leftmost number) of this operating system version.
+        "kind": "dfareporting#operatingSystemVersion", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#operatingSystemVersion".
+        "name": "A String", # Name of this operating system version.
+        "id": "A String", # ID of this operating system version.
+        "operatingSystem": { # Contains information about an operating system that can be targeted by ads. # Operating system of this operating system version.
+          "mobile": True or False, # Whether this operating system is for mobile.
+          "dartId": "A String", # DART ID of this operating system. This is the ID used for targeting.
+          "kind": "dfareporting#operatingSystem", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#operatingSystem".
+          "name": "A String", # Name of this operating system.
+          "desktop": True or False, # Whether this operating system is for desktop.
+        },
+        "minorVersion": "A String", # Minor version (number after the first dot) of this operating system version.
+      },
+    ],
+  }</pre>
+</div>
+
+</body></html>
\ No newline at end of file
diff --git a/docs/dyn/dfareporting_v2_7.operatingSystems.html b/docs/dyn/dfareporting_v2_7.operatingSystems.html
new file mode 100644
index 0000000..dda4f49
--- /dev/null
+++ b/docs/dyn/dfareporting_v2_7.operatingSystems.html
@@ -0,0 +1,128 @@
+<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="dfareporting_v2_7.html">DCM/DFA Reporting And Trafficking API</a> . <a href="dfareporting_v2_7.operatingSystems.html">operatingSystems</a></h1>
+<h2>Instance Methods</h2>
+<p class="toc_element">
+  <code><a href="#get">get(profileId, dartId)</a></code></p>
+<p class="firstline">Gets one operating system by DART ID.</p>
+<p class="toc_element">
+  <code><a href="#list">list(profileId)</a></code></p>
+<p class="firstline">Retrieves a list of operating systems.</p>
+<h3>Method Details</h3>
+<div class="method">
+    <code class="details" id="get">get(profileId, dartId)</code>
+  <pre>Gets one operating system by DART ID.
+
+Args:
+  profileId: string, User profile ID associated with this request. (required)
+  dartId: string, Operating system DART ID. (required)
+
+Returns:
+  An object of the form:
+
+    { # Contains information about an operating system that can be targeted by ads.
+    "mobile": True or False, # Whether this operating system is for mobile.
+    "dartId": "A String", # DART ID of this operating system. This is the ID used for targeting.
+    "kind": "dfareporting#operatingSystem", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#operatingSystem".
+    "name": "A String", # Name of this operating system.
+    "desktop": True or False, # Whether this operating system is for desktop.
+  }</pre>
+</div>
+
+<div class="method">
+    <code class="details" id="list">list(profileId)</code>
+  <pre>Retrieves a list of operating systems.
+
+Args:
+  profileId: string, User profile ID associated with this request. (required)
+
+Returns:
+  An object of the form:
+
+    { # Operating System List Response
+    "kind": "dfareporting#operatingSystemsListResponse", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#operatingSystemsListResponse".
+    "operatingSystems": [ # Operating system collection.
+      { # Contains information about an operating system that can be targeted by ads.
+        "mobile": True or False, # Whether this operating system is for mobile.
+        "dartId": "A String", # DART ID of this operating system. This is the ID used for targeting.
+        "kind": "dfareporting#operatingSystem", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#operatingSystem".
+        "name": "A String", # Name of this operating system.
+        "desktop": True or False, # Whether this operating system is for desktop.
+      },
+    ],
+  }</pre>
+</div>
+
+</body></html>
\ No newline at end of file
diff --git a/docs/dyn/dfareporting_v2_7.orderDocuments.html b/docs/dyn/dfareporting_v2_7.orderDocuments.html
new file mode 100644
index 0000000..4d250d1
--- /dev/null
+++ b/docs/dyn/dfareporting_v2_7.orderDocuments.html
@@ -0,0 +1,199 @@
+<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="dfareporting_v2_7.html">DCM/DFA Reporting And Trafficking API</a> . <a href="dfareporting_v2_7.orderDocuments.html">orderDocuments</a></h1>
+<h2>Instance Methods</h2>
+<p class="toc_element">
+  <code><a href="#get">get(profileId, projectId, id)</a></code></p>
+<p class="firstline">Gets one order document by ID.</p>
+<p class="toc_element">
+  <code><a href="#list">list(profileId, projectId, pageToken=None, sortOrder=None, orderId=None, maxResults=None, siteId=None, approved=None, searchString=None, sortField=None, ids=None)</a></code></p>
+<p class="firstline">Retrieves a list of order documents, possibly filtered. This method supports paging.</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>
+<h3>Method Details</h3>
+<div class="method">
+    <code class="details" id="get">get(profileId, projectId, id)</code>
+  <pre>Gets one order document by ID.
+
+Args:
+  profileId: string, User profile ID associated with this request. (required)
+  projectId: string, Project ID for order documents. (required)
+  id: string, Order document ID. (required)
+
+Returns:
+  An object of the form:
+
+    { # Contains properties of a DoubleClick Planning order document.
+    "orderId": "A String", # ID of the order from which this order document is created.
+    "approvedByUserProfileIds": [ # IDs of users who have approved this order document.
+      "A String",
+    ],
+    "kind": "dfareporting#orderDocument", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#orderDocument".
+    "subaccountId": "A String", # Subaccount ID of this order document.
+    "effectiveDate": "A String", # Effective date of this order document.
+    "lastSentTime": "A String", # Timestamp of the last email sent with this order document.
+    "lastSentRecipients": [ # List of email addresses that received the last sent document.
+      "A String",
+    ],
+    "title": "A String", # Title of this order document.
+    "amendedOrderDocumentId": "A String", # The amended order document ID of this order document. An order document can be created by optionally amending another order document so that the change history can be preserved.
+    "signed": True or False, # Whether this order document has been signed.
+    "createdInfo": { # Modification timestamp. # Information about the creation of this order document.
+      "time": "A String", # Timestamp of the last change in milliseconds since epoch.
+    },
+    "advertiserId": "A String", # Advertiser ID of this order document.
+    "projectId": "A String", # Project ID of this order document.
+    "cancelled": True or False, # Whether this order document is cancelled.
+    "type": "A String", # Type of this order document
+    "id": "A String", # ID of this order document.
+    "accountId": "A String", # Account ID of this order document.
+  }</pre>
+</div>
+
+<div class="method">
+    <code class="details" id="list">list(profileId, projectId, pageToken=None, sortOrder=None, orderId=None, maxResults=None, siteId=None, approved=None, searchString=None, sortField=None, ids=None)</code>
+  <pre>Retrieves a list of order documents, possibly filtered. This method supports paging.
+
+Args:
+  profileId: string, User profile ID associated with this request. (required)
+  projectId: string, Project ID for order documents. (required)
+  pageToken: string, Value of the nextPageToken from the previous result page.
+  sortOrder: string, Order of sorted results, default is ASCENDING.
+    Allowed values
+      ASCENDING - 
+      DESCENDING - 
+  orderId: string, Select only order documents for specified orders. (repeated)
+  maxResults: integer, Maximum number of results to return.
+  siteId: string, Select only order documents that are associated with these sites. (repeated)
+  approved: boolean, Select only order documents that have been approved by at least one user.
+  searchString: string, Allows searching for order documents by name or ID. Wildcards (*) are allowed. For example, "orderdocument*2015" will return order documents with names like "orderdocument June 2015", "orderdocument April 2015", or simply "orderdocument 2015". Most of the searches also add wildcards implicitly at the start and the end of the search string. For example, a search string of "orderdocument" will match order documents with name "my orderdocument", "orderdocument 2015", or simply "orderdocument".
+  sortField: string, Field by which to sort the list.
+    Allowed values
+      ID - 
+      NAME - 
+  ids: string, Select only order documents with these IDs. (repeated)
+
+Returns:
+  An object of the form:
+
+    { # Order document List Response
+    "nextPageToken": "A String", # Pagination token to be used for the next list operation.
+    "kind": "dfareporting#orderDocumentsListResponse", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#orderDocumentsListResponse".
+    "orderDocuments": [ # Order document collection
+      { # Contains properties of a DoubleClick Planning order document.
+        "orderId": "A String", # ID of the order from which this order document is created.
+        "approvedByUserProfileIds": [ # IDs of users who have approved this order document.
+          "A String",
+        ],
+        "kind": "dfareporting#orderDocument", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#orderDocument".
+        "subaccountId": "A String", # Subaccount ID of this order document.
+        "effectiveDate": "A String", # Effective date of this order document.
+        "lastSentTime": "A String", # Timestamp of the last email sent with this order document.
+        "lastSentRecipients": [ # List of email addresses that received the last sent document.
+          "A String",
+        ],
+        "title": "A String", # Title of this order document.
+        "amendedOrderDocumentId": "A String", # The amended order document ID of this order document. An order document can be created by optionally amending another order document so that the change history can be preserved.
+        "signed": True or False, # Whether this order document has been signed.
+        "createdInfo": { # Modification timestamp. # Information about the creation of this order document.
+          "time": "A String", # Timestamp of the last change in milliseconds since epoch.
+        },
+        "advertiserId": "A String", # Advertiser ID of this order document.
+        "projectId": "A String", # Project ID of this order document.
+        "cancelled": True or False, # Whether this order document is cancelled.
+        "type": "A String", # Type of this order document
+        "id": "A String", # ID of this order document.
+        "accountId": "A String", # Account ID of this order document.
+      },
+    ],
+  }</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>
+
+</body></html>
\ No newline at end of file
diff --git a/docs/dyn/dfareporting_v2_7.orders.html b/docs/dyn/dfareporting_v2_7.orders.html
new file mode 100644
index 0000000..d1c05f1
--- /dev/null
+++ b/docs/dyn/dfareporting_v2_7.orders.html
@@ -0,0 +1,223 @@
+<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="dfareporting_v2_7.html">DCM/DFA Reporting And Trafficking API</a> . <a href="dfareporting_v2_7.orders.html">orders</a></h1>
+<h2>Instance Methods</h2>
+<p class="toc_element">
+  <code><a href="#get">get(profileId, projectId, id)</a></code></p>
+<p class="firstline">Gets one order by ID.</p>
+<p class="toc_element">
+  <code><a href="#list">list(profileId, projectId, searchString=None, pageToken=None, sortField=None, ids=None, maxResults=None, sortOrder=None, siteId=None)</a></code></p>
+<p class="firstline">Retrieves a list of orders, possibly filtered. This method supports paging.</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>
+<h3>Method Details</h3>
+<div class="method">
+    <code class="details" id="get">get(profileId, projectId, id)</code>
+  <pre>Gets one order by ID.
+
+Args:
+  profileId: string, User profile ID associated with this request. (required)
+  projectId: string, Project ID for orders. (required)
+  id: string, Order ID. (required)
+
+Returns:
+  An object of the form:
+
+    { # Describes properties of a DoubleClick Planning order.
+    "termsAndConditions": "A String", # Terms and conditions of this order.
+    "kind": "dfareporting#order", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#order".
+    "sellerOrganizationName": "A String", # Name of the seller organization.
+    "subaccountId": "A String", # Subaccount ID of this order.
+    "name": "A String", # Name of this order.
+    "buyerInvoiceId": "A String", # Buyer invoice ID associated with this order.
+    "lastModifiedInfo": { # Modification timestamp. # Information about the most recent modification of this order.
+      "time": "A String", # Timestamp of the last change in milliseconds since epoch.
+    },
+    "notes": "A String", # Notes of this order.
+    "contacts": [ # Contacts for this order.
+      { # Contact of an order.
+        "signatureUserProfileId": "A String", # ID of the user profile containing the signature that will be embedded into order documents.
+        "contactTitle": "A String", # Title of this contact.
+        "contactInfo": "A String", # Free-form information about this contact. It could be any information related to this contact in addition to type, title, name, and signature user profile ID.
+        "contactName": "A String", # Name of this contact.
+        "contactType": "A String", # Type of this contact.
+      },
+    ],
+    "buyerOrganizationName": "A String", # Name of the buyer organization.
+    "comments": "A String", # Comments in this order.
+    "advertiserId": "A String", # Advertiser ID of this order.
+    "approverUserProfileIds": [ # IDs for users that have to approve documents created for this order.
+      "A String",
+    ],
+    "siteId": [ # Site IDs this order is associated with.
+      "A String",
+    ],
+    "sellerOrderId": "A String", # Seller order ID associated with this order.
+    "projectId": "A String", # Project ID of this order.
+    "siteNames": [ # Free-form site names this order is associated with.
+      "A String",
+    ],
+    "planningTermId": "A String", # ID of the terms and conditions template used in this order.
+    "id": "A String", # ID of this order. This is a read-only, auto-generated field.
+    "accountId": "A String", # Account ID of this order.
+  }</pre>
+</div>
+
+<div class="method">
+    <code class="details" id="list">list(profileId, projectId, searchString=None, pageToken=None, sortField=None, ids=None, maxResults=None, sortOrder=None, siteId=None)</code>
+  <pre>Retrieves a list of orders, possibly filtered. This method supports paging.
+
+Args:
+  profileId: string, User profile ID associated with this request. (required)
+  projectId: string, Project ID for orders. (required)
+  searchString: string, Allows searching for orders by name or ID. Wildcards (*) are allowed. For example, "order*2015" will return orders with names like "order June 2015", "order April 2015", or simply "order 2015". Most of the searches also add wildcards implicitly at the start and the end of the search string. For example, a search string of "order" will match orders with name "my order", "order 2015", or simply "order".
+  pageToken: string, Value of the nextPageToken from the previous result page.
+  sortField: string, Field by which to sort the list.
+    Allowed values
+      ID - 
+      NAME - 
+  ids: string, Select only orders with these IDs. (repeated)
+  maxResults: integer, Maximum number of results to return.
+  sortOrder: string, Order of sorted results, default is ASCENDING.
+    Allowed values
+      ASCENDING - 
+      DESCENDING - 
+  siteId: string, Select only orders that are associated with these site IDs. (repeated)
+
+Returns:
+  An object of the form:
+
+    { # Order List Response
+    "nextPageToken": "A String", # Pagination token to be used for the next list operation.
+    "kind": "dfareporting#ordersListResponse", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#ordersListResponse".
+    "orders": [ # Order collection.
+      { # Describes properties of a DoubleClick Planning order.
+        "termsAndConditions": "A String", # Terms and conditions of this order.
+        "kind": "dfareporting#order", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#order".
+        "sellerOrganizationName": "A String", # Name of the seller organization.
+        "subaccountId": "A String", # Subaccount ID of this order.
+        "name": "A String", # Name of this order.
+        "buyerInvoiceId": "A String", # Buyer invoice ID associated with this order.
+        "lastModifiedInfo": { # Modification timestamp. # Information about the most recent modification of this order.
+          "time": "A String", # Timestamp of the last change in milliseconds since epoch.
+        },
+        "notes": "A String", # Notes of this order.
+        "contacts": [ # Contacts for this order.
+          { # Contact of an order.
+            "signatureUserProfileId": "A String", # ID of the user profile containing the signature that will be embedded into order documents.
+            "contactTitle": "A String", # Title of this contact.
+            "contactInfo": "A String", # Free-form information about this contact. It could be any information related to this contact in addition to type, title, name, and signature user profile ID.
+            "contactName": "A String", # Name of this contact.
+            "contactType": "A String", # Type of this contact.
+          },
+        ],
+        "buyerOrganizationName": "A String", # Name of the buyer organization.
+        "comments": "A String", # Comments in this order.
+        "advertiserId": "A String", # Advertiser ID of this order.
+        "approverUserProfileIds": [ # IDs for users that have to approve documents created for this order.
+          "A String",
+        ],
+        "siteId": [ # Site IDs this order is associated with.
+          "A String",
+        ],
+        "sellerOrderId": "A String", # Seller order ID associated with this order.
+        "projectId": "A String", # Project ID of this order.
+        "siteNames": [ # Free-form site names this order is associated with.
+          "A String",
+        ],
+        "planningTermId": "A String", # ID of the terms and conditions template used in this order.
+        "id": "A String", # ID of this order. This is a read-only, auto-generated field.
+        "accountId": "A String", # Account ID of this order.
+      },
+    ],
+  }</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>
+
+</body></html>
\ No newline at end of file
diff --git a/docs/dyn/dfareporting_v2_7.placementGroups.html b/docs/dyn/dfareporting_v2_7.placementGroups.html
new file mode 100644
index 0000000..162a205
--- /dev/null
+++ b/docs/dyn/dfareporting_v2_7.placementGroups.html
@@ -0,0 +1,977 @@
+<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="dfareporting_v2_7.html">DCM/DFA Reporting And Trafficking API</a> . <a href="dfareporting_v2_7.placementGroups.html">placementGroups</a></h1>
+<h2>Instance Methods</h2>
+<p class="toc_element">
+  <code><a href="#get">get(profileId, id)</a></code></p>
+<p class="firstline">Gets one placement group by ID.</p>
+<p class="toc_element">
+  <code><a href="#insert">insert(profileId, body)</a></code></p>
+<p class="firstline">Inserts a new placement group.</p>
+<p class="toc_element">
+  <code><a href="#list">list(profileId, siteIds=None, placementGroupType=None, pricingTypes=None, campaignIds=None, advertiserIds=None, pageToken=None, maxStartDate=None, sortOrder=None, maxEndDate=None, placementStrategyIds=None, contentCategoryIds=None, archived=None, maxResults=None, minStartDate=None, searchString=None, minEndDate=None, directorySiteIds=None, ids=None, sortField=None)</a></code></p>
+<p class="firstline">Retrieves a list of placement groups, possibly filtered. This method supports paging.</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="#patch">patch(profileId, id, body)</a></code></p>
+<p class="firstline">Updates an existing placement group. This method supports patch semantics.</p>
+<p class="toc_element">
+  <code><a href="#update">update(profileId, body)</a></code></p>
+<p class="firstline">Updates an existing placement group.</p>
+<h3>Method Details</h3>
+<div class="method">
+    <code class="details" id="get">get(profileId, id)</code>
+  <pre>Gets one placement group by ID.
+
+Args:
+  profileId: string, User profile ID associated with this request. (required)
+  id: string, Placement group ID. (required)
+
+Returns:
+  An object of the form:
+
+    { # Contains properties of a package or roadblock.
+      "comment": "A String", # Comments for this placement group.
+      "primaryPlacementId": "A String", # ID of the primary placement, used to calculate the media cost of a roadblock (placement group). Modifying this field will automatically modify the primary field on all affected roadblock child placements.
+      "campaignId": "A String", # Campaign ID of this placement group. This field is required on insertion.
+      "directorySiteIdDimensionValue": { # Represents a DimensionValue resource. # Dimension value for the ID of the directory site. This is a read-only, auto-generated field.
+        "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+        "value": "A String", # The value of the dimension.
+        "dimensionName": "A String", # The name of the dimension.
+        "etag": "A String", # The eTag of this response for caching purposes.
+        "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+        "id": "A String", # The ID associated with the value if available.
+      },
+      "advertiserId": "A String", # Advertiser ID of this placement group. This is a required field on insertion.
+      "directorySiteId": "A String", # Directory site ID associated with this placement group. On insert, you must set either this field or the site_id field to specify the site associated with this placement group. This is a required field that is read-only after insertion.
+      "placementGroupType": "A String", # Type of this placement group. A package is a simple group of placements that acts as a single pricing point for a group of tags. A roadblock is a group of placements that not only acts as a single pricing point, but also assumes that all the tags in it will be served at the same time. A roadblock requires one of its assigned placements to be marked as primary for reporting. This field is required on insertion.
+      "advertiserIdDimensionValue": { # Represents a DimensionValue resource. # Dimension value for the ID of the advertiser. This is a read-only, auto-generated field.
+        "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+        "value": "A String", # The value of the dimension.
+        "dimensionName": "A String", # The name of the dimension.
+        "etag": "A String", # The eTag of this response for caching purposes.
+        "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+        "id": "A String", # The ID associated with the value if available.
+      },
+      "id": "A String", # ID of this placement group. This is a read-only, auto-generated field.
+      "accountId": "A String", # Account ID of this placement group. This is a read-only field that can be left blank.
+      "archived": True or False, # Whether this placement group is archived.
+      "childPlacementIds": [ # IDs of placements which are assigned to this placement group. This is a read-only, auto-generated field.
+        "A String",
+      ],
+      "contentCategoryId": "A String", # ID of the content category assigned to this placement group.
+      "externalId": "A String", # External ID for this placement.
+      "idDimensionValue": { # Represents a DimensionValue resource. # Dimension value for the ID of this placement group. This is a read-only, auto-generated field.
+        "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+        "value": "A String", # The value of the dimension.
+        "dimensionName": "A String", # The name of the dimension.
+        "etag": "A String", # The eTag of this response for caching purposes.
+        "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+        "id": "A String", # The ID associated with the value if available.
+      },
+      "primaryPlacementIdDimensionValue": { # Represents a DimensionValue resource. # Dimension value for the ID of the primary placement. This is a read-only, auto-generated field.
+        "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+        "value": "A String", # The value of the dimension.
+        "dimensionName": "A String", # The name of the dimension.
+        "etag": "A String", # The eTag of this response for caching purposes.
+        "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+        "id": "A String", # The ID associated with the value if available.
+      },
+      "campaignIdDimensionValue": { # Represents a DimensionValue resource. # Dimension value for the ID of the campaign. This is a read-only, auto-generated field.
+        "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+        "value": "A String", # The value of the dimension.
+        "dimensionName": "A String", # The name of the dimension.
+        "etag": "A String", # The eTag of this response for caching purposes.
+        "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+        "id": "A String", # The ID associated with the value if available.
+      },
+      "createInfo": { # Modification timestamp. # Information about the creation of this placement group. This is a read-only field.
+        "time": "A String", # Timestamp of the last change in milliseconds since epoch.
+      },
+      "siteId": "A String", # Site ID associated with this placement group. On insert, you must set either this field or the directorySiteId field to specify the site associated with this placement group. This is a required field that is read-only after insertion.
+      "siteIdDimensionValue": { # Represents a DimensionValue resource. # Dimension value for the ID of the site. This is a read-only, auto-generated field.
+        "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+        "value": "A String", # The value of the dimension.
+        "dimensionName": "A String", # The name of the dimension.
+        "etag": "A String", # The eTag of this response for caching purposes.
+        "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+        "id": "A String", # The ID associated with the value if available.
+      },
+      "placementStrategyId": "A String", # ID of the placement strategy assigned to this placement group.
+      "kind": "dfareporting#placementGroup", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#placementGroup".
+      "subaccountId": "A String", # Subaccount ID of this placement group. This is a read-only field that can be left blank.
+      "name": "A String", # Name of this placement group. This is a required field and must be less than 256 characters long.
+      "lastModifiedInfo": { # Modification timestamp. # Information about the most recent modification of this placement group. This is a read-only field.
+        "time": "A String", # Timestamp of the last change in milliseconds since epoch.
+      },
+      "pricingSchedule": { # Pricing Schedule # Pricing schedule of this placement group. This field is required on insertion.
+        "startDate": "A String", # Placement start date. This date must be later than, or the same day as, the campaign start date. The hours, minutes, and seconds of the start date should not be set, as doing so will result in an error. This field is required on insertion.
+        "endDate": "A String", # Placement end date. This date must be later than, or the same day as, the placement start date, but not later than the campaign end date. If, for example, you set 6/25/2015 as both the start and end dates, the effective placement date is just that day only, 6/25/2015. The hours, minutes, and seconds of the end date should not be set, as doing so will result in an error. This field is required on insertion.
+        "flighted": True or False, # Whether this placement is flighted. If true, pricing periods will be computed automatically.
+        "disregardOverdelivery": True or False, # Whether cap costs are ignored by ad serving.
+        "capCostOption": "A String", # Placement cap cost option.
+        "pricingPeriods": [ # Pricing periods for this placement.
+          { # Pricing Period
+            "units": "A String", # Units of this pricing period.
+            "rateOrCostNanos": "A String", # Rate or cost of this pricing period.
+            "startDate": "A String", # Pricing period start date. This date must be later than, or the same day as, the placement start date. The hours, minutes, and seconds of the start date should not be set, as doing so will result in an error.
+            "endDate": "A String", # Pricing period end date. This date must be later than, or the same day as, the pricing period start date, but not later than the placement end date. The period end date can be the same date as the period start date. If, for example, you set 6/25/2015 as both the start and end dates, the effective pricing period date is just that day only, 6/25/2015. The hours, minutes, and seconds of the end date should not be set, as doing so will result in an error.
+            "pricingComment": "A String", # Comments for this pricing period.
+          },
+        ],
+        "pricingType": "A String", # Placement pricing type. This field is required on insertion.
+        "testingStartDate": "A String", # Testing start date of this placement. The hours, minutes, and seconds of the start date should not be set, as doing so will result in an error.
+        "floodlightActivityId": "A String", # Floodlight activity ID associated with this placement. This field should be set when placement pricing type is set to PRICING_TYPE_CPA.
+      },
+    }</pre>
+</div>
+
+<div class="method">
+    <code class="details" id="insert">insert(profileId, body)</code>
+  <pre>Inserts a new placement group.
+
+Args:
+  profileId: string, User profile ID associated with this request. (required)
+  body: object, The request body. (required)
+    The object takes the form of:
+
+{ # Contains properties of a package or roadblock.
+    "comment": "A String", # Comments for this placement group.
+    "primaryPlacementId": "A String", # ID of the primary placement, used to calculate the media cost of a roadblock (placement group). Modifying this field will automatically modify the primary field on all affected roadblock child placements.
+    "campaignId": "A String", # Campaign ID of this placement group. This field is required on insertion.
+    "directorySiteIdDimensionValue": { # Represents a DimensionValue resource. # Dimension value for the ID of the directory site. This is a read-only, auto-generated field.
+      "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+      "value": "A String", # The value of the dimension.
+      "dimensionName": "A String", # The name of the dimension.
+      "etag": "A String", # The eTag of this response for caching purposes.
+      "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+      "id": "A String", # The ID associated with the value if available.
+    },
+    "advertiserId": "A String", # Advertiser ID of this placement group. This is a required field on insertion.
+    "directorySiteId": "A String", # Directory site ID associated with this placement group. On insert, you must set either this field or the site_id field to specify the site associated with this placement group. This is a required field that is read-only after insertion.
+    "placementGroupType": "A String", # Type of this placement group. A package is a simple group of placements that acts as a single pricing point for a group of tags. A roadblock is a group of placements that not only acts as a single pricing point, but also assumes that all the tags in it will be served at the same time. A roadblock requires one of its assigned placements to be marked as primary for reporting. This field is required on insertion.
+    "advertiserIdDimensionValue": { # Represents a DimensionValue resource. # Dimension value for the ID of the advertiser. This is a read-only, auto-generated field.
+      "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+      "value": "A String", # The value of the dimension.
+      "dimensionName": "A String", # The name of the dimension.
+      "etag": "A String", # The eTag of this response for caching purposes.
+      "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+      "id": "A String", # The ID associated with the value if available.
+    },
+    "id": "A String", # ID of this placement group. This is a read-only, auto-generated field.
+    "accountId": "A String", # Account ID of this placement group. This is a read-only field that can be left blank.
+    "archived": True or False, # Whether this placement group is archived.
+    "childPlacementIds": [ # IDs of placements which are assigned to this placement group. This is a read-only, auto-generated field.
+      "A String",
+    ],
+    "contentCategoryId": "A String", # ID of the content category assigned to this placement group.
+    "externalId": "A String", # External ID for this placement.
+    "idDimensionValue": { # Represents a DimensionValue resource. # Dimension value for the ID of this placement group. This is a read-only, auto-generated field.
+      "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+      "value": "A String", # The value of the dimension.
+      "dimensionName": "A String", # The name of the dimension.
+      "etag": "A String", # The eTag of this response for caching purposes.
+      "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+      "id": "A String", # The ID associated with the value if available.
+    },
+    "primaryPlacementIdDimensionValue": { # Represents a DimensionValue resource. # Dimension value for the ID of the primary placement. This is a read-only, auto-generated field.
+      "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+      "value": "A String", # The value of the dimension.
+      "dimensionName": "A String", # The name of the dimension.
+      "etag": "A String", # The eTag of this response for caching purposes.
+      "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+      "id": "A String", # The ID associated with the value if available.
+    },
+    "campaignIdDimensionValue": { # Represents a DimensionValue resource. # Dimension value for the ID of the campaign. This is a read-only, auto-generated field.
+      "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+      "value": "A String", # The value of the dimension.
+      "dimensionName": "A String", # The name of the dimension.
+      "etag": "A String", # The eTag of this response for caching purposes.
+      "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+      "id": "A String", # The ID associated with the value if available.
+    },
+    "createInfo": { # Modification timestamp. # Information about the creation of this placement group. This is a read-only field.
+      "time": "A String", # Timestamp of the last change in milliseconds since epoch.
+    },
+    "siteId": "A String", # Site ID associated with this placement group. On insert, you must set either this field or the directorySiteId field to specify the site associated with this placement group. This is a required field that is read-only after insertion.
+    "siteIdDimensionValue": { # Represents a DimensionValue resource. # Dimension value for the ID of the site. This is a read-only, auto-generated field.
+      "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+      "value": "A String", # The value of the dimension.
+      "dimensionName": "A String", # The name of the dimension.
+      "etag": "A String", # The eTag of this response for caching purposes.
+      "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+      "id": "A String", # The ID associated with the value if available.
+    },
+    "placementStrategyId": "A String", # ID of the placement strategy assigned to this placement group.
+    "kind": "dfareporting#placementGroup", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#placementGroup".
+    "subaccountId": "A String", # Subaccount ID of this placement group. This is a read-only field that can be left blank.
+    "name": "A String", # Name of this placement group. This is a required field and must be less than 256 characters long.
+    "lastModifiedInfo": { # Modification timestamp. # Information about the most recent modification of this placement group. This is a read-only field.
+      "time": "A String", # Timestamp of the last change in milliseconds since epoch.
+    },
+    "pricingSchedule": { # Pricing Schedule # Pricing schedule of this placement group. This field is required on insertion.
+      "startDate": "A String", # Placement start date. This date must be later than, or the same day as, the campaign start date. The hours, minutes, and seconds of the start date should not be set, as doing so will result in an error. This field is required on insertion.
+      "endDate": "A String", # Placement end date. This date must be later than, or the same day as, the placement start date, but not later than the campaign end date. If, for example, you set 6/25/2015 as both the start and end dates, the effective placement date is just that day only, 6/25/2015. The hours, minutes, and seconds of the end date should not be set, as doing so will result in an error. This field is required on insertion.
+      "flighted": True or False, # Whether this placement is flighted. If true, pricing periods will be computed automatically.
+      "disregardOverdelivery": True or False, # Whether cap costs are ignored by ad serving.
+      "capCostOption": "A String", # Placement cap cost option.
+      "pricingPeriods": [ # Pricing periods for this placement.
+        { # Pricing Period
+          "units": "A String", # Units of this pricing period.
+          "rateOrCostNanos": "A String", # Rate or cost of this pricing period.
+          "startDate": "A String", # Pricing period start date. This date must be later than, or the same day as, the placement start date. The hours, minutes, and seconds of the start date should not be set, as doing so will result in an error.
+          "endDate": "A String", # Pricing period end date. This date must be later than, or the same day as, the pricing period start date, but not later than the placement end date. The period end date can be the same date as the period start date. If, for example, you set 6/25/2015 as both the start and end dates, the effective pricing period date is just that day only, 6/25/2015. The hours, minutes, and seconds of the end date should not be set, as doing so will result in an error.
+          "pricingComment": "A String", # Comments for this pricing period.
+        },
+      ],
+      "pricingType": "A String", # Placement pricing type. This field is required on insertion.
+      "testingStartDate": "A String", # Testing start date of this placement. The hours, minutes, and seconds of the start date should not be set, as doing so will result in an error.
+      "floodlightActivityId": "A String", # Floodlight activity ID associated with this placement. This field should be set when placement pricing type is set to PRICING_TYPE_CPA.
+    },
+  }
+
+
+Returns:
+  An object of the form:
+
+    { # Contains properties of a package or roadblock.
+      "comment": "A String", # Comments for this placement group.
+      "primaryPlacementId": "A String", # ID of the primary placement, used to calculate the media cost of a roadblock (placement group). Modifying this field will automatically modify the primary field on all affected roadblock child placements.
+      "campaignId": "A String", # Campaign ID of this placement group. This field is required on insertion.
+      "directorySiteIdDimensionValue": { # Represents a DimensionValue resource. # Dimension value for the ID of the directory site. This is a read-only, auto-generated field.
+        "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+        "value": "A String", # The value of the dimension.
+        "dimensionName": "A String", # The name of the dimension.
+        "etag": "A String", # The eTag of this response for caching purposes.
+        "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+        "id": "A String", # The ID associated with the value if available.
+      },
+      "advertiserId": "A String", # Advertiser ID of this placement group. This is a required field on insertion.
+      "directorySiteId": "A String", # Directory site ID associated with this placement group. On insert, you must set either this field or the site_id field to specify the site associated with this placement group. This is a required field that is read-only after insertion.
+      "placementGroupType": "A String", # Type of this placement group. A package is a simple group of placements that acts as a single pricing point for a group of tags. A roadblock is a group of placements that not only acts as a single pricing point, but also assumes that all the tags in it will be served at the same time. A roadblock requires one of its assigned placements to be marked as primary for reporting. This field is required on insertion.
+      "advertiserIdDimensionValue": { # Represents a DimensionValue resource. # Dimension value for the ID of the advertiser. This is a read-only, auto-generated field.
+        "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+        "value": "A String", # The value of the dimension.
+        "dimensionName": "A String", # The name of the dimension.
+        "etag": "A String", # The eTag of this response for caching purposes.
+        "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+        "id": "A String", # The ID associated with the value if available.
+      },
+      "id": "A String", # ID of this placement group. This is a read-only, auto-generated field.
+      "accountId": "A String", # Account ID of this placement group. This is a read-only field that can be left blank.
+      "archived": True or False, # Whether this placement group is archived.
+      "childPlacementIds": [ # IDs of placements which are assigned to this placement group. This is a read-only, auto-generated field.
+        "A String",
+      ],
+      "contentCategoryId": "A String", # ID of the content category assigned to this placement group.
+      "externalId": "A String", # External ID for this placement.
+      "idDimensionValue": { # Represents a DimensionValue resource. # Dimension value for the ID of this placement group. This is a read-only, auto-generated field.
+        "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+        "value": "A String", # The value of the dimension.
+        "dimensionName": "A String", # The name of the dimension.
+        "etag": "A String", # The eTag of this response for caching purposes.
+        "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+        "id": "A String", # The ID associated with the value if available.
+      },
+      "primaryPlacementIdDimensionValue": { # Represents a DimensionValue resource. # Dimension value for the ID of the primary placement. This is a read-only, auto-generated field.
+        "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+        "value": "A String", # The value of the dimension.
+        "dimensionName": "A String", # The name of the dimension.
+        "etag": "A String", # The eTag of this response for caching purposes.
+        "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+        "id": "A String", # The ID associated with the value if available.
+      },
+      "campaignIdDimensionValue": { # Represents a DimensionValue resource. # Dimension value for the ID of the campaign. This is a read-only, auto-generated field.
+        "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+        "value": "A String", # The value of the dimension.
+        "dimensionName": "A String", # The name of the dimension.
+        "etag": "A String", # The eTag of this response for caching purposes.
+        "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+        "id": "A String", # The ID associated with the value if available.
+      },
+      "createInfo": { # Modification timestamp. # Information about the creation of this placement group. This is a read-only field.
+        "time": "A String", # Timestamp of the last change in milliseconds since epoch.
+      },
+      "siteId": "A String", # Site ID associated with this placement group. On insert, you must set either this field or the directorySiteId field to specify the site associated with this placement group. This is a required field that is read-only after insertion.
+      "siteIdDimensionValue": { # Represents a DimensionValue resource. # Dimension value for the ID of the site. This is a read-only, auto-generated field.
+        "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+        "value": "A String", # The value of the dimension.
+        "dimensionName": "A String", # The name of the dimension.
+        "etag": "A String", # The eTag of this response for caching purposes.
+        "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+        "id": "A String", # The ID associated with the value if available.
+      },
+      "placementStrategyId": "A String", # ID of the placement strategy assigned to this placement group.
+      "kind": "dfareporting#placementGroup", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#placementGroup".
+      "subaccountId": "A String", # Subaccount ID of this placement group. This is a read-only field that can be left blank.
+      "name": "A String", # Name of this placement group. This is a required field and must be less than 256 characters long.
+      "lastModifiedInfo": { # Modification timestamp. # Information about the most recent modification of this placement group. This is a read-only field.
+        "time": "A String", # Timestamp of the last change in milliseconds since epoch.
+      },
+      "pricingSchedule": { # Pricing Schedule # Pricing schedule of this placement group. This field is required on insertion.
+        "startDate": "A String", # Placement start date. This date must be later than, or the same day as, the campaign start date. The hours, minutes, and seconds of the start date should not be set, as doing so will result in an error. This field is required on insertion.
+        "endDate": "A String", # Placement end date. This date must be later than, or the same day as, the placement start date, but not later than the campaign end date. If, for example, you set 6/25/2015 as both the start and end dates, the effective placement date is just that day only, 6/25/2015. The hours, minutes, and seconds of the end date should not be set, as doing so will result in an error. This field is required on insertion.
+        "flighted": True or False, # Whether this placement is flighted. If true, pricing periods will be computed automatically.
+        "disregardOverdelivery": True or False, # Whether cap costs are ignored by ad serving.
+        "capCostOption": "A String", # Placement cap cost option.
+        "pricingPeriods": [ # Pricing periods for this placement.
+          { # Pricing Period
+            "units": "A String", # Units of this pricing period.
+            "rateOrCostNanos": "A String", # Rate or cost of this pricing period.
+            "startDate": "A String", # Pricing period start date. This date must be later than, or the same day as, the placement start date. The hours, minutes, and seconds of the start date should not be set, as doing so will result in an error.
+            "endDate": "A String", # Pricing period end date. This date must be later than, or the same day as, the pricing period start date, but not later than the placement end date. The period end date can be the same date as the period start date. If, for example, you set 6/25/2015 as both the start and end dates, the effective pricing period date is just that day only, 6/25/2015. The hours, minutes, and seconds of the end date should not be set, as doing so will result in an error.
+            "pricingComment": "A String", # Comments for this pricing period.
+          },
+        ],
+        "pricingType": "A String", # Placement pricing type. This field is required on insertion.
+        "testingStartDate": "A String", # Testing start date of this placement. The hours, minutes, and seconds of the start date should not be set, as doing so will result in an error.
+        "floodlightActivityId": "A String", # Floodlight activity ID associated with this placement. This field should be set when placement pricing type is set to PRICING_TYPE_CPA.
+      },
+    }</pre>
+</div>
+
+<div class="method">
+    <code class="details" id="list">list(profileId, siteIds=None, placementGroupType=None, pricingTypes=None, campaignIds=None, advertiserIds=None, pageToken=None, maxStartDate=None, sortOrder=None, maxEndDate=None, placementStrategyIds=None, contentCategoryIds=None, archived=None, maxResults=None, minStartDate=None, searchString=None, minEndDate=None, directorySiteIds=None, ids=None, sortField=None)</code>
+  <pre>Retrieves a list of placement groups, possibly filtered. This method supports paging.
+
+Args:
+  profileId: string, User profile ID associated with this request. (required)
+  siteIds: string, Select only placement groups that are associated with these sites. (repeated)
+  placementGroupType: string, Select only placement groups belonging with this group type. A package is a simple group of placements that acts as a single pricing point for a group of tags. A roadblock is a group of placements that not only acts as a single pricing point but also assumes that all the tags in it will be served at the same time. A roadblock requires one of its assigned placements to be marked as primary for reporting.
+    Allowed values
+      PLACEMENT_PACKAGE - 
+      PLACEMENT_ROADBLOCK - 
+  pricingTypes: string, Select only placement groups with these pricing types. (repeated)
+    Allowed values
+      PRICING_TYPE_CPA - 
+      PRICING_TYPE_CPC - 
+      PRICING_TYPE_CPM - 
+      PRICING_TYPE_CPM_ACTIVEVIEW - 
+      PRICING_TYPE_FLAT_RATE_CLICKS - 
+      PRICING_TYPE_FLAT_RATE_IMPRESSIONS - 
+  campaignIds: string, Select only placement groups that belong to these campaigns. (repeated)
+  advertiserIds: string, Select only placement groups that belong to these advertisers. (repeated)
+  pageToken: string, Value of the nextPageToken from the previous result page.
+  maxStartDate: string, Select only placements or placement groups whose start date is on or before the specified maxStartDate. The date should be formatted as "yyyy-MM-dd".
+  sortOrder: string, Order of sorted results, default is ASCENDING.
+    Allowed values
+      ASCENDING - 
+      DESCENDING - 
+  maxEndDate: string, Select only placements or placement groups whose end date is on or before the specified maxEndDate. The date should be formatted as "yyyy-MM-dd".
+  placementStrategyIds: string, Select only placement groups that are associated with these placement strategies. (repeated)
+  contentCategoryIds: string, Select only placement groups that are associated with these content categories. (repeated)
+  archived: boolean, Select only archived placements. Don't set this field to select both archived and non-archived placements.
+  maxResults: integer, Maximum number of results to return.
+  minStartDate: string, Select only placements or placement groups whose start date is on or after the specified minStartDate. The date should be formatted as "yyyy-MM-dd".
+  searchString: string, Allows searching for placement groups by name or ID. Wildcards (*) are allowed. For example, "placement*2015" will return placement groups with names like "placement group June 2015", "placement group May 2015", or simply "placements 2015". Most of the searches also add wildcards implicitly at the start and the end of the search string. For example, a search string of "placementgroup" will match placement groups with name "my placementgroup", "placementgroup 2015", or simply "placementgroup".
+  minEndDate: string, Select only placements or placement groups whose end date is on or after the specified minEndDate. The date should be formatted as "yyyy-MM-dd".
+  directorySiteIds: string, Select only placement groups that are associated with these directory sites. (repeated)
+  ids: string, Select only placement groups with these IDs. (repeated)
+  sortField: string, Field by which to sort the list.
+    Allowed values
+      ID - 
+      NAME - 
+
+Returns:
+  An object of the form:
+
+    { # Placement Group List Response
+    "nextPageToken": "A String", # Pagination token to be used for the next list operation.
+    "kind": "dfareporting#placementGroupsListResponse", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#placementGroupsListResponse".
+    "placementGroups": [ # Placement group collection.
+      { # Contains properties of a package or roadblock.
+          "comment": "A String", # Comments for this placement group.
+          "primaryPlacementId": "A String", # ID of the primary placement, used to calculate the media cost of a roadblock (placement group). Modifying this field will automatically modify the primary field on all affected roadblock child placements.
+          "campaignId": "A String", # Campaign ID of this placement group. This field is required on insertion.
+          "directorySiteIdDimensionValue": { # Represents a DimensionValue resource. # Dimension value for the ID of the directory site. This is a read-only, auto-generated field.
+            "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+            "value": "A String", # The value of the dimension.
+            "dimensionName": "A String", # The name of the dimension.
+            "etag": "A String", # The eTag of this response for caching purposes.
+            "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+            "id": "A String", # The ID associated with the value if available.
+          },
+          "advertiserId": "A String", # Advertiser ID of this placement group. This is a required field on insertion.
+          "directorySiteId": "A String", # Directory site ID associated with this placement group. On insert, you must set either this field or the site_id field to specify the site associated with this placement group. This is a required field that is read-only after insertion.
+          "placementGroupType": "A String", # Type of this placement group. A package is a simple group of placements that acts as a single pricing point for a group of tags. A roadblock is a group of placements that not only acts as a single pricing point, but also assumes that all the tags in it will be served at the same time. A roadblock requires one of its assigned placements to be marked as primary for reporting. This field is required on insertion.
+          "advertiserIdDimensionValue": { # Represents a DimensionValue resource. # Dimension value for the ID of the advertiser. This is a read-only, auto-generated field.
+            "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+            "value": "A String", # The value of the dimension.
+            "dimensionName": "A String", # The name of the dimension.
+            "etag": "A String", # The eTag of this response for caching purposes.
+            "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+            "id": "A String", # The ID associated with the value if available.
+          },
+          "id": "A String", # ID of this placement group. This is a read-only, auto-generated field.
+          "accountId": "A String", # Account ID of this placement group. This is a read-only field that can be left blank.
+          "archived": True or False, # Whether this placement group is archived.
+          "childPlacementIds": [ # IDs of placements which are assigned to this placement group. This is a read-only, auto-generated field.
+            "A String",
+          ],
+          "contentCategoryId": "A String", # ID of the content category assigned to this placement group.
+          "externalId": "A String", # External ID for this placement.
+          "idDimensionValue": { # Represents a DimensionValue resource. # Dimension value for the ID of this placement group. This is a read-only, auto-generated field.
+            "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+            "value": "A String", # The value of the dimension.
+            "dimensionName": "A String", # The name of the dimension.
+            "etag": "A String", # The eTag of this response for caching purposes.
+            "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+            "id": "A String", # The ID associated with the value if available.
+          },
+          "primaryPlacementIdDimensionValue": { # Represents a DimensionValue resource. # Dimension value for the ID of the primary placement. This is a read-only, auto-generated field.
+            "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+            "value": "A String", # The value of the dimension.
+            "dimensionName": "A String", # The name of the dimension.
+            "etag": "A String", # The eTag of this response for caching purposes.
+            "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+            "id": "A String", # The ID associated with the value if available.
+          },
+          "campaignIdDimensionValue": { # Represents a DimensionValue resource. # Dimension value for the ID of the campaign. This is a read-only, auto-generated field.
+            "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+            "value": "A String", # The value of the dimension.
+            "dimensionName": "A String", # The name of the dimension.
+            "etag": "A String", # The eTag of this response for caching purposes.
+            "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+            "id": "A String", # The ID associated with the value if available.
+          },
+          "createInfo": { # Modification timestamp. # Information about the creation of this placement group. This is a read-only field.
+            "time": "A String", # Timestamp of the last change in milliseconds since epoch.
+          },
+          "siteId": "A String", # Site ID associated with this placement group. On insert, you must set either this field or the directorySiteId field to specify the site associated with this placement group. This is a required field that is read-only after insertion.
+          "siteIdDimensionValue": { # Represents a DimensionValue resource. # Dimension value for the ID of the site. This is a read-only, auto-generated field.
+            "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+            "value": "A String", # The value of the dimension.
+            "dimensionName": "A String", # The name of the dimension.
+            "etag": "A String", # The eTag of this response for caching purposes.
+            "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+            "id": "A String", # The ID associated with the value if available.
+          },
+          "placementStrategyId": "A String", # ID of the placement strategy assigned to this placement group.
+          "kind": "dfareporting#placementGroup", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#placementGroup".
+          "subaccountId": "A String", # Subaccount ID of this placement group. This is a read-only field that can be left blank.
+          "name": "A String", # Name of this placement group. This is a required field and must be less than 256 characters long.
+          "lastModifiedInfo": { # Modification timestamp. # Information about the most recent modification of this placement group. This is a read-only field.
+            "time": "A String", # Timestamp of the last change in milliseconds since epoch.
+          },
+          "pricingSchedule": { # Pricing Schedule # Pricing schedule of this placement group. This field is required on insertion.
+            "startDate": "A String", # Placement start date. This date must be later than, or the same day as, the campaign start date. The hours, minutes, and seconds of the start date should not be set, as doing so will result in an error. This field is required on insertion.
+            "endDate": "A String", # Placement end date. This date must be later than, or the same day as, the placement start date, but not later than the campaign end date. If, for example, you set 6/25/2015 as both the start and end dates, the effective placement date is just that day only, 6/25/2015. The hours, minutes, and seconds of the end date should not be set, as doing so will result in an error. This field is required on insertion.
+            "flighted": True or False, # Whether this placement is flighted. If true, pricing periods will be computed automatically.
+            "disregardOverdelivery": True or False, # Whether cap costs are ignored by ad serving.
+            "capCostOption": "A String", # Placement cap cost option.
+            "pricingPeriods": [ # Pricing periods for this placement.
+              { # Pricing Period
+                "units": "A String", # Units of this pricing period.
+                "rateOrCostNanos": "A String", # Rate or cost of this pricing period.
+                "startDate": "A String", # Pricing period start date. This date must be later than, or the same day as, the placement start date. The hours, minutes, and seconds of the start date should not be set, as doing so will result in an error.
+                "endDate": "A String", # Pricing period end date. This date must be later than, or the same day as, the pricing period start date, but not later than the placement end date. The period end date can be the same date as the period start date. If, for example, you set 6/25/2015 as both the start and end dates, the effective pricing period date is just that day only, 6/25/2015. The hours, minutes, and seconds of the end date should not be set, as doing so will result in an error.
+                "pricingComment": "A String", # Comments for this pricing period.
+              },
+            ],
+            "pricingType": "A String", # Placement pricing type. This field is required on insertion.
+            "testingStartDate": "A String", # Testing start date of this placement. The hours, minutes, and seconds of the start date should not be set, as doing so will result in an error.
+            "floodlightActivityId": "A String", # Floodlight activity ID associated with this placement. This field should be set when placement pricing type is set to PRICING_TYPE_CPA.
+          },
+        },
+    ],
+  }</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="patch">patch(profileId, id, body)</code>
+  <pre>Updates an existing placement group. This method supports patch semantics.
+
+Args:
+  profileId: string, User profile ID associated with this request. (required)
+  id: string, Placement group ID. (required)
+  body: object, The request body. (required)
+    The object takes the form of:
+
+{ # Contains properties of a package or roadblock.
+    "comment": "A String", # Comments for this placement group.
+    "primaryPlacementId": "A String", # ID of the primary placement, used to calculate the media cost of a roadblock (placement group). Modifying this field will automatically modify the primary field on all affected roadblock child placements.
+    "campaignId": "A String", # Campaign ID of this placement group. This field is required on insertion.
+    "directorySiteIdDimensionValue": { # Represents a DimensionValue resource. # Dimension value for the ID of the directory site. This is a read-only, auto-generated field.
+      "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+      "value": "A String", # The value of the dimension.
+      "dimensionName": "A String", # The name of the dimension.
+      "etag": "A String", # The eTag of this response for caching purposes.
+      "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+      "id": "A String", # The ID associated with the value if available.
+    },
+    "advertiserId": "A String", # Advertiser ID of this placement group. This is a required field on insertion.
+    "directorySiteId": "A String", # Directory site ID associated with this placement group. On insert, you must set either this field or the site_id field to specify the site associated with this placement group. This is a required field that is read-only after insertion.
+    "placementGroupType": "A String", # Type of this placement group. A package is a simple group of placements that acts as a single pricing point for a group of tags. A roadblock is a group of placements that not only acts as a single pricing point, but also assumes that all the tags in it will be served at the same time. A roadblock requires one of its assigned placements to be marked as primary for reporting. This field is required on insertion.
+    "advertiserIdDimensionValue": { # Represents a DimensionValue resource. # Dimension value for the ID of the advertiser. This is a read-only, auto-generated field.
+      "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+      "value": "A String", # The value of the dimension.
+      "dimensionName": "A String", # The name of the dimension.
+      "etag": "A String", # The eTag of this response for caching purposes.
+      "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+      "id": "A String", # The ID associated with the value if available.
+    },
+    "id": "A String", # ID of this placement group. This is a read-only, auto-generated field.
+    "accountId": "A String", # Account ID of this placement group. This is a read-only field that can be left blank.
+    "archived": True or False, # Whether this placement group is archived.
+    "childPlacementIds": [ # IDs of placements which are assigned to this placement group. This is a read-only, auto-generated field.
+      "A String",
+    ],
+    "contentCategoryId": "A String", # ID of the content category assigned to this placement group.
+    "externalId": "A String", # External ID for this placement.
+    "idDimensionValue": { # Represents a DimensionValue resource. # Dimension value for the ID of this placement group. This is a read-only, auto-generated field.
+      "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+      "value": "A String", # The value of the dimension.
+      "dimensionName": "A String", # The name of the dimension.
+      "etag": "A String", # The eTag of this response for caching purposes.
+      "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+      "id": "A String", # The ID associated with the value if available.
+    },
+    "primaryPlacementIdDimensionValue": { # Represents a DimensionValue resource. # Dimension value for the ID of the primary placement. This is a read-only, auto-generated field.
+      "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+      "value": "A String", # The value of the dimension.
+      "dimensionName": "A String", # The name of the dimension.
+      "etag": "A String", # The eTag of this response for caching purposes.
+      "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+      "id": "A String", # The ID associated with the value if available.
+    },
+    "campaignIdDimensionValue": { # Represents a DimensionValue resource. # Dimension value for the ID of the campaign. This is a read-only, auto-generated field.
+      "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+      "value": "A String", # The value of the dimension.
+      "dimensionName": "A String", # The name of the dimension.
+      "etag": "A String", # The eTag of this response for caching purposes.
+      "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+      "id": "A String", # The ID associated with the value if available.
+    },
+    "createInfo": { # Modification timestamp. # Information about the creation of this placement group. This is a read-only field.
+      "time": "A String", # Timestamp of the last change in milliseconds since epoch.
+    },
+    "siteId": "A String", # Site ID associated with this placement group. On insert, you must set either this field or the directorySiteId field to specify the site associated with this placement group. This is a required field that is read-only after insertion.
+    "siteIdDimensionValue": { # Represents a DimensionValue resource. # Dimension value for the ID of the site. This is a read-only, auto-generated field.
+      "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+      "value": "A String", # The value of the dimension.
+      "dimensionName": "A String", # The name of the dimension.
+      "etag": "A String", # The eTag of this response for caching purposes.
+      "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+      "id": "A String", # The ID associated with the value if available.
+    },
+    "placementStrategyId": "A String", # ID of the placement strategy assigned to this placement group.
+    "kind": "dfareporting#placementGroup", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#placementGroup".
+    "subaccountId": "A String", # Subaccount ID of this placement group. This is a read-only field that can be left blank.
+    "name": "A String", # Name of this placement group. This is a required field and must be less than 256 characters long.
+    "lastModifiedInfo": { # Modification timestamp. # Information about the most recent modification of this placement group. This is a read-only field.
+      "time": "A String", # Timestamp of the last change in milliseconds since epoch.
+    },
+    "pricingSchedule": { # Pricing Schedule # Pricing schedule of this placement group. This field is required on insertion.
+      "startDate": "A String", # Placement start date. This date must be later than, or the same day as, the campaign start date. The hours, minutes, and seconds of the start date should not be set, as doing so will result in an error. This field is required on insertion.
+      "endDate": "A String", # Placement end date. This date must be later than, or the same day as, the placement start date, but not later than the campaign end date. If, for example, you set 6/25/2015 as both the start and end dates, the effective placement date is just that day only, 6/25/2015. The hours, minutes, and seconds of the end date should not be set, as doing so will result in an error. This field is required on insertion.
+      "flighted": True or False, # Whether this placement is flighted. If true, pricing periods will be computed automatically.
+      "disregardOverdelivery": True or False, # Whether cap costs are ignored by ad serving.
+      "capCostOption": "A String", # Placement cap cost option.
+      "pricingPeriods": [ # Pricing periods for this placement.
+        { # Pricing Period
+          "units": "A String", # Units of this pricing period.
+          "rateOrCostNanos": "A String", # Rate or cost of this pricing period.
+          "startDate": "A String", # Pricing period start date. This date must be later than, or the same day as, the placement start date. The hours, minutes, and seconds of the start date should not be set, as doing so will result in an error.
+          "endDate": "A String", # Pricing period end date. This date must be later than, or the same day as, the pricing period start date, but not later than the placement end date. The period end date can be the same date as the period start date. If, for example, you set 6/25/2015 as both the start and end dates, the effective pricing period date is just that day only, 6/25/2015. The hours, minutes, and seconds of the end date should not be set, as doing so will result in an error.
+          "pricingComment": "A String", # Comments for this pricing period.
+        },
+      ],
+      "pricingType": "A String", # Placement pricing type. This field is required on insertion.
+      "testingStartDate": "A String", # Testing start date of this placement. The hours, minutes, and seconds of the start date should not be set, as doing so will result in an error.
+      "floodlightActivityId": "A String", # Floodlight activity ID associated with this placement. This field should be set when placement pricing type is set to PRICING_TYPE_CPA.
+    },
+  }
+
+
+Returns:
+  An object of the form:
+
+    { # Contains properties of a package or roadblock.
+      "comment": "A String", # Comments for this placement group.
+      "primaryPlacementId": "A String", # ID of the primary placement, used to calculate the media cost of a roadblock (placement group). Modifying this field will automatically modify the primary field on all affected roadblock child placements.
+      "campaignId": "A String", # Campaign ID of this placement group. This field is required on insertion.
+      "directorySiteIdDimensionValue": { # Represents a DimensionValue resource. # Dimension value for the ID of the directory site. This is a read-only, auto-generated field.
+        "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+        "value": "A String", # The value of the dimension.
+        "dimensionName": "A String", # The name of the dimension.
+        "etag": "A String", # The eTag of this response for caching purposes.
+        "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+        "id": "A String", # The ID associated with the value if available.
+      },
+      "advertiserId": "A String", # Advertiser ID of this placement group. This is a required field on insertion.
+      "directorySiteId": "A String", # Directory site ID associated with this placement group. On insert, you must set either this field or the site_id field to specify the site associated with this placement group. This is a required field that is read-only after insertion.
+      "placementGroupType": "A String", # Type of this placement group. A package is a simple group of placements that acts as a single pricing point for a group of tags. A roadblock is a group of placements that not only acts as a single pricing point, but also assumes that all the tags in it will be served at the same time. A roadblock requires one of its assigned placements to be marked as primary for reporting. This field is required on insertion.
+      "advertiserIdDimensionValue": { # Represents a DimensionValue resource. # Dimension value for the ID of the advertiser. This is a read-only, auto-generated field.
+        "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+        "value": "A String", # The value of the dimension.
+        "dimensionName": "A String", # The name of the dimension.
+        "etag": "A String", # The eTag of this response for caching purposes.
+        "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+        "id": "A String", # The ID associated with the value if available.
+      },
+      "id": "A String", # ID of this placement group. This is a read-only, auto-generated field.
+      "accountId": "A String", # Account ID of this placement group. This is a read-only field that can be left blank.
+      "archived": True or False, # Whether this placement group is archived.
+      "childPlacementIds": [ # IDs of placements which are assigned to this placement group. This is a read-only, auto-generated field.
+        "A String",
+      ],
+      "contentCategoryId": "A String", # ID of the content category assigned to this placement group.
+      "externalId": "A String", # External ID for this placement.
+      "idDimensionValue": { # Represents a DimensionValue resource. # Dimension value for the ID of this placement group. This is a read-only, auto-generated field.
+        "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+        "value": "A String", # The value of the dimension.
+        "dimensionName": "A String", # The name of the dimension.
+        "etag": "A String", # The eTag of this response for caching purposes.
+        "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+        "id": "A String", # The ID associated with the value if available.
+      },
+      "primaryPlacementIdDimensionValue": { # Represents a DimensionValue resource. # Dimension value for the ID of the primary placement. This is a read-only, auto-generated field.
+        "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+        "value": "A String", # The value of the dimension.
+        "dimensionName": "A String", # The name of the dimension.
+        "etag": "A String", # The eTag of this response for caching purposes.
+        "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+        "id": "A String", # The ID associated with the value if available.
+      },
+      "campaignIdDimensionValue": { # Represents a DimensionValue resource. # Dimension value for the ID of the campaign. This is a read-only, auto-generated field.
+        "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+        "value": "A String", # The value of the dimension.
+        "dimensionName": "A String", # The name of the dimension.
+        "etag": "A String", # The eTag of this response for caching purposes.
+        "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+        "id": "A String", # The ID associated with the value if available.
+      },
+      "createInfo": { # Modification timestamp. # Information about the creation of this placement group. This is a read-only field.
+        "time": "A String", # Timestamp of the last change in milliseconds since epoch.
+      },
+      "siteId": "A String", # Site ID associated with this placement group. On insert, you must set either this field or the directorySiteId field to specify the site associated with this placement group. This is a required field that is read-only after insertion.
+      "siteIdDimensionValue": { # Represents a DimensionValue resource. # Dimension value for the ID of the site. This is a read-only, auto-generated field.
+        "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+        "value": "A String", # The value of the dimension.
+        "dimensionName": "A String", # The name of the dimension.
+        "etag": "A String", # The eTag of this response for caching purposes.
+        "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+        "id": "A String", # The ID associated with the value if available.
+      },
+      "placementStrategyId": "A String", # ID of the placement strategy assigned to this placement group.
+      "kind": "dfareporting#placementGroup", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#placementGroup".
+      "subaccountId": "A String", # Subaccount ID of this placement group. This is a read-only field that can be left blank.
+      "name": "A String", # Name of this placement group. This is a required field and must be less than 256 characters long.
+      "lastModifiedInfo": { # Modification timestamp. # Information about the most recent modification of this placement group. This is a read-only field.
+        "time": "A String", # Timestamp of the last change in milliseconds since epoch.
+      },
+      "pricingSchedule": { # Pricing Schedule # Pricing schedule of this placement group. This field is required on insertion.
+        "startDate": "A String", # Placement start date. This date must be later than, or the same day as, the campaign start date. The hours, minutes, and seconds of the start date should not be set, as doing so will result in an error. This field is required on insertion.
+        "endDate": "A String", # Placement end date. This date must be later than, or the same day as, the placement start date, but not later than the campaign end date. If, for example, you set 6/25/2015 as both the start and end dates, the effective placement date is just that day only, 6/25/2015. The hours, minutes, and seconds of the end date should not be set, as doing so will result in an error. This field is required on insertion.
+        "flighted": True or False, # Whether this placement is flighted. If true, pricing periods will be computed automatically.
+        "disregardOverdelivery": True or False, # Whether cap costs are ignored by ad serving.
+        "capCostOption": "A String", # Placement cap cost option.
+        "pricingPeriods": [ # Pricing periods for this placement.
+          { # Pricing Period
+            "units": "A String", # Units of this pricing period.
+            "rateOrCostNanos": "A String", # Rate or cost of this pricing period.
+            "startDate": "A String", # Pricing period start date. This date must be later than, or the same day as, the placement start date. The hours, minutes, and seconds of the start date should not be set, as doing so will result in an error.
+            "endDate": "A String", # Pricing period end date. This date must be later than, or the same day as, the pricing period start date, but not later than the placement end date. The period end date can be the same date as the period start date. If, for example, you set 6/25/2015 as both the start and end dates, the effective pricing period date is just that day only, 6/25/2015. The hours, minutes, and seconds of the end date should not be set, as doing so will result in an error.
+            "pricingComment": "A String", # Comments for this pricing period.
+          },
+        ],
+        "pricingType": "A String", # Placement pricing type. This field is required on insertion.
+        "testingStartDate": "A String", # Testing start date of this placement. The hours, minutes, and seconds of the start date should not be set, as doing so will result in an error.
+        "floodlightActivityId": "A String", # Floodlight activity ID associated with this placement. This field should be set when placement pricing type is set to PRICING_TYPE_CPA.
+      },
+    }</pre>
+</div>
+
+<div class="method">
+    <code class="details" id="update">update(profileId, body)</code>
+  <pre>Updates an existing placement group.
+
+Args:
+  profileId: string, User profile ID associated with this request. (required)
+  body: object, The request body. (required)
+    The object takes the form of:
+
+{ # Contains properties of a package or roadblock.
+    "comment": "A String", # Comments for this placement group.
+    "primaryPlacementId": "A String", # ID of the primary placement, used to calculate the media cost of a roadblock (placement group). Modifying this field will automatically modify the primary field on all affected roadblock child placements.
+    "campaignId": "A String", # Campaign ID of this placement group. This field is required on insertion.
+    "directorySiteIdDimensionValue": { # Represents a DimensionValue resource. # Dimension value for the ID of the directory site. This is a read-only, auto-generated field.
+      "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+      "value": "A String", # The value of the dimension.
+      "dimensionName": "A String", # The name of the dimension.
+      "etag": "A String", # The eTag of this response for caching purposes.
+      "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+      "id": "A String", # The ID associated with the value if available.
+    },
+    "advertiserId": "A String", # Advertiser ID of this placement group. This is a required field on insertion.
+    "directorySiteId": "A String", # Directory site ID associated with this placement group. On insert, you must set either this field or the site_id field to specify the site associated with this placement group. This is a required field that is read-only after insertion.
+    "placementGroupType": "A String", # Type of this placement group. A package is a simple group of placements that acts as a single pricing point for a group of tags. A roadblock is a group of placements that not only acts as a single pricing point, but also assumes that all the tags in it will be served at the same time. A roadblock requires one of its assigned placements to be marked as primary for reporting. This field is required on insertion.
+    "advertiserIdDimensionValue": { # Represents a DimensionValue resource. # Dimension value for the ID of the advertiser. This is a read-only, auto-generated field.
+      "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+      "value": "A String", # The value of the dimension.
+      "dimensionName": "A String", # The name of the dimension.
+      "etag": "A String", # The eTag of this response for caching purposes.
+      "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+      "id": "A String", # The ID associated with the value if available.
+    },
+    "id": "A String", # ID of this placement group. This is a read-only, auto-generated field.
+    "accountId": "A String", # Account ID of this placement group. This is a read-only field that can be left blank.
+    "archived": True or False, # Whether this placement group is archived.
+    "childPlacementIds": [ # IDs of placements which are assigned to this placement group. This is a read-only, auto-generated field.
+      "A String",
+    ],
+    "contentCategoryId": "A String", # ID of the content category assigned to this placement group.
+    "externalId": "A String", # External ID for this placement.
+    "idDimensionValue": { # Represents a DimensionValue resource. # Dimension value for the ID of this placement group. This is a read-only, auto-generated field.
+      "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+      "value": "A String", # The value of the dimension.
+      "dimensionName": "A String", # The name of the dimension.
+      "etag": "A String", # The eTag of this response for caching purposes.
+      "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+      "id": "A String", # The ID associated with the value if available.
+    },
+    "primaryPlacementIdDimensionValue": { # Represents a DimensionValue resource. # Dimension value for the ID of the primary placement. This is a read-only, auto-generated field.
+      "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+      "value": "A String", # The value of the dimension.
+      "dimensionName": "A String", # The name of the dimension.
+      "etag": "A String", # The eTag of this response for caching purposes.
+      "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+      "id": "A String", # The ID associated with the value if available.
+    },
+    "campaignIdDimensionValue": { # Represents a DimensionValue resource. # Dimension value for the ID of the campaign. This is a read-only, auto-generated field.
+      "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+      "value": "A String", # The value of the dimension.
+      "dimensionName": "A String", # The name of the dimension.
+      "etag": "A String", # The eTag of this response for caching purposes.
+      "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+      "id": "A String", # The ID associated with the value if available.
+    },
+    "createInfo": { # Modification timestamp. # Information about the creation of this placement group. This is a read-only field.
+      "time": "A String", # Timestamp of the last change in milliseconds since epoch.
+    },
+    "siteId": "A String", # Site ID associated with this placement group. On insert, you must set either this field or the directorySiteId field to specify the site associated with this placement group. This is a required field that is read-only after insertion.
+    "siteIdDimensionValue": { # Represents a DimensionValue resource. # Dimension value for the ID of the site. This is a read-only, auto-generated field.
+      "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+      "value": "A String", # The value of the dimension.
+      "dimensionName": "A String", # The name of the dimension.
+      "etag": "A String", # The eTag of this response for caching purposes.
+      "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+      "id": "A String", # The ID associated with the value if available.
+    },
+    "placementStrategyId": "A String", # ID of the placement strategy assigned to this placement group.
+    "kind": "dfareporting#placementGroup", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#placementGroup".
+    "subaccountId": "A String", # Subaccount ID of this placement group. This is a read-only field that can be left blank.
+    "name": "A String", # Name of this placement group. This is a required field and must be less than 256 characters long.
+    "lastModifiedInfo": { # Modification timestamp. # Information about the most recent modification of this placement group. This is a read-only field.
+      "time": "A String", # Timestamp of the last change in milliseconds since epoch.
+    },
+    "pricingSchedule": { # Pricing Schedule # Pricing schedule of this placement group. This field is required on insertion.
+      "startDate": "A String", # Placement start date. This date must be later than, or the same day as, the campaign start date. The hours, minutes, and seconds of the start date should not be set, as doing so will result in an error. This field is required on insertion.
+      "endDate": "A String", # Placement end date. This date must be later than, or the same day as, the placement start date, but not later than the campaign end date. If, for example, you set 6/25/2015 as both the start and end dates, the effective placement date is just that day only, 6/25/2015. The hours, minutes, and seconds of the end date should not be set, as doing so will result in an error. This field is required on insertion.
+      "flighted": True or False, # Whether this placement is flighted. If true, pricing periods will be computed automatically.
+      "disregardOverdelivery": True or False, # Whether cap costs are ignored by ad serving.
+      "capCostOption": "A String", # Placement cap cost option.
+      "pricingPeriods": [ # Pricing periods for this placement.
+        { # Pricing Period
+          "units": "A String", # Units of this pricing period.
+          "rateOrCostNanos": "A String", # Rate or cost of this pricing period.
+          "startDate": "A String", # Pricing period start date. This date must be later than, or the same day as, the placement start date. The hours, minutes, and seconds of the start date should not be set, as doing so will result in an error.
+          "endDate": "A String", # Pricing period end date. This date must be later than, or the same day as, the pricing period start date, but not later than the placement end date. The period end date can be the same date as the period start date. If, for example, you set 6/25/2015 as both the start and end dates, the effective pricing period date is just that day only, 6/25/2015. The hours, minutes, and seconds of the end date should not be set, as doing so will result in an error.
+          "pricingComment": "A String", # Comments for this pricing period.
+        },
+      ],
+      "pricingType": "A String", # Placement pricing type. This field is required on insertion.
+      "testingStartDate": "A String", # Testing start date of this placement. The hours, minutes, and seconds of the start date should not be set, as doing so will result in an error.
+      "floodlightActivityId": "A String", # Floodlight activity ID associated with this placement. This field should be set when placement pricing type is set to PRICING_TYPE_CPA.
+    },
+  }
+
+
+Returns:
+  An object of the form:
+
+    { # Contains properties of a package or roadblock.
+      "comment": "A String", # Comments for this placement group.
+      "primaryPlacementId": "A String", # ID of the primary placement, used to calculate the media cost of a roadblock (placement group). Modifying this field will automatically modify the primary field on all affected roadblock child placements.
+      "campaignId": "A String", # Campaign ID of this placement group. This field is required on insertion.
+      "directorySiteIdDimensionValue": { # Represents a DimensionValue resource. # Dimension value for the ID of the directory site. This is a read-only, auto-generated field.
+        "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+        "value": "A String", # The value of the dimension.
+        "dimensionName": "A String", # The name of the dimension.
+        "etag": "A String", # The eTag of this response for caching purposes.
+        "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+        "id": "A String", # The ID associated with the value if available.
+      },
+      "advertiserId": "A String", # Advertiser ID of this placement group. This is a required field on insertion.
+      "directorySiteId": "A String", # Directory site ID associated with this placement group. On insert, you must set either this field or the site_id field to specify the site associated with this placement group. This is a required field that is read-only after insertion.
+      "placementGroupType": "A String", # Type of this placement group. A package is a simple group of placements that acts as a single pricing point for a group of tags. A roadblock is a group of placements that not only acts as a single pricing point, but also assumes that all the tags in it will be served at the same time. A roadblock requires one of its assigned placements to be marked as primary for reporting. This field is required on insertion.
+      "advertiserIdDimensionValue": { # Represents a DimensionValue resource. # Dimension value for the ID of the advertiser. This is a read-only, auto-generated field.
+        "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+        "value": "A String", # The value of the dimension.
+        "dimensionName": "A String", # The name of the dimension.
+        "etag": "A String", # The eTag of this response for caching purposes.
+        "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+        "id": "A String", # The ID associated with the value if available.
+      },
+      "id": "A String", # ID of this placement group. This is a read-only, auto-generated field.
+      "accountId": "A String", # Account ID of this placement group. This is a read-only field that can be left blank.
+      "archived": True or False, # Whether this placement group is archived.
+      "childPlacementIds": [ # IDs of placements which are assigned to this placement group. This is a read-only, auto-generated field.
+        "A String",
+      ],
+      "contentCategoryId": "A String", # ID of the content category assigned to this placement group.
+      "externalId": "A String", # External ID for this placement.
+      "idDimensionValue": { # Represents a DimensionValue resource. # Dimension value for the ID of this placement group. This is a read-only, auto-generated field.
+        "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+        "value": "A String", # The value of the dimension.
+        "dimensionName": "A String", # The name of the dimension.
+        "etag": "A String", # The eTag of this response for caching purposes.
+        "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+        "id": "A String", # The ID associated with the value if available.
+      },
+      "primaryPlacementIdDimensionValue": { # Represents a DimensionValue resource. # Dimension value for the ID of the primary placement. This is a read-only, auto-generated field.
+        "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+        "value": "A String", # The value of the dimension.
+        "dimensionName": "A String", # The name of the dimension.
+        "etag": "A String", # The eTag of this response for caching purposes.
+        "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+        "id": "A String", # The ID associated with the value if available.
+      },
+      "campaignIdDimensionValue": { # Represents a DimensionValue resource. # Dimension value for the ID of the campaign. This is a read-only, auto-generated field.
+        "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+        "value": "A String", # The value of the dimension.
+        "dimensionName": "A String", # The name of the dimension.
+        "etag": "A String", # The eTag of this response for caching purposes.
+        "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+        "id": "A String", # The ID associated with the value if available.
+      },
+      "createInfo": { # Modification timestamp. # Information about the creation of this placement group. This is a read-only field.
+        "time": "A String", # Timestamp of the last change in milliseconds since epoch.
+      },
+      "siteId": "A String", # Site ID associated with this placement group. On insert, you must set either this field or the directorySiteId field to specify the site associated with this placement group. This is a required field that is read-only after insertion.
+      "siteIdDimensionValue": { # Represents a DimensionValue resource. # Dimension value for the ID of the site. This is a read-only, auto-generated field.
+        "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+        "value": "A String", # The value of the dimension.
+        "dimensionName": "A String", # The name of the dimension.
+        "etag": "A String", # The eTag of this response for caching purposes.
+        "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+        "id": "A String", # The ID associated with the value if available.
+      },
+      "placementStrategyId": "A String", # ID of the placement strategy assigned to this placement group.
+      "kind": "dfareporting#placementGroup", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#placementGroup".
+      "subaccountId": "A String", # Subaccount ID of this placement group. This is a read-only field that can be left blank.
+      "name": "A String", # Name of this placement group. This is a required field and must be less than 256 characters long.
+      "lastModifiedInfo": { # Modification timestamp. # Information about the most recent modification of this placement group. This is a read-only field.
+        "time": "A String", # Timestamp of the last change in milliseconds since epoch.
+      },
+      "pricingSchedule": { # Pricing Schedule # Pricing schedule of this placement group. This field is required on insertion.
+        "startDate": "A String", # Placement start date. This date must be later than, or the same day as, the campaign start date. The hours, minutes, and seconds of the start date should not be set, as doing so will result in an error. This field is required on insertion.
+        "endDate": "A String", # Placement end date. This date must be later than, or the same day as, the placement start date, but not later than the campaign end date. If, for example, you set 6/25/2015 as both the start and end dates, the effective placement date is just that day only, 6/25/2015. The hours, minutes, and seconds of the end date should not be set, as doing so will result in an error. This field is required on insertion.
+        "flighted": True or False, # Whether this placement is flighted. If true, pricing periods will be computed automatically.
+        "disregardOverdelivery": True or False, # Whether cap costs are ignored by ad serving.
+        "capCostOption": "A String", # Placement cap cost option.
+        "pricingPeriods": [ # Pricing periods for this placement.
+          { # Pricing Period
+            "units": "A String", # Units of this pricing period.
+            "rateOrCostNanos": "A String", # Rate or cost of this pricing period.
+            "startDate": "A String", # Pricing period start date. This date must be later than, or the same day as, the placement start date. The hours, minutes, and seconds of the start date should not be set, as doing so will result in an error.
+            "endDate": "A String", # Pricing period end date. This date must be later than, or the same day as, the pricing period start date, but not later than the placement end date. The period end date can be the same date as the period start date. If, for example, you set 6/25/2015 as both the start and end dates, the effective pricing period date is just that day only, 6/25/2015. The hours, minutes, and seconds of the end date should not be set, as doing so will result in an error.
+            "pricingComment": "A String", # Comments for this pricing period.
+          },
+        ],
+        "pricingType": "A String", # Placement pricing type. This field is required on insertion.
+        "testingStartDate": "A String", # Testing start date of this placement. The hours, minutes, and seconds of the start date should not be set, as doing so will result in an error.
+        "floodlightActivityId": "A String", # Floodlight activity ID associated with this placement. This field should be set when placement pricing type is set to PRICING_TYPE_CPA.
+      },
+    }</pre>
+</div>
+
+</body></html>
\ No newline at end of file
diff --git a/docs/dyn/dfareporting_v2_7.placementStrategies.html b/docs/dyn/dfareporting_v2_7.placementStrategies.html
new file mode 100644
index 0000000..011f8ab
--- /dev/null
+++ b/docs/dyn/dfareporting_v2_7.placementStrategies.html
@@ -0,0 +1,263 @@
+<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="dfareporting_v2_7.html">DCM/DFA Reporting And Trafficking API</a> . <a href="dfareporting_v2_7.placementStrategies.html">placementStrategies</a></h1>
+<h2>Instance Methods</h2>
+<p class="toc_element">
+  <code><a href="#delete">delete(profileId, id)</a></code></p>
+<p class="firstline">Deletes an existing placement strategy.</p>
+<p class="toc_element">
+  <code><a href="#get">get(profileId, id)</a></code></p>
+<p class="firstline">Gets one placement strategy by ID.</p>
+<p class="toc_element">
+  <code><a href="#insert">insert(profileId, body)</a></code></p>
+<p class="firstline">Inserts a new placement strategy.</p>
+<p class="toc_element">
+  <code><a href="#list">list(profileId, searchString=None, pageToken=None, sortField=None, ids=None, maxResults=None, sortOrder=None)</a></code></p>
+<p class="firstline">Retrieves a list of placement strategies, possibly filtered. This method supports paging.</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="#patch">patch(profileId, id, body)</a></code></p>
+<p class="firstline">Updates an existing placement strategy. This method supports patch semantics.</p>
+<p class="toc_element">
+  <code><a href="#update">update(profileId, body)</a></code></p>
+<p class="firstline">Updates an existing placement strategy.</p>
+<h3>Method Details</h3>
+<div class="method">
+    <code class="details" id="delete">delete(profileId, id)</code>
+  <pre>Deletes an existing placement strategy.
+
+Args:
+  profileId: string, User profile ID associated with this request. (required)
+  id: string, Placement strategy ID. (required)
+</pre>
+</div>
+
+<div class="method">
+    <code class="details" id="get">get(profileId, id)</code>
+  <pre>Gets one placement strategy by ID.
+
+Args:
+  profileId: string, User profile ID associated with this request. (required)
+  id: string, Placement strategy ID. (required)
+
+Returns:
+  An object of the form:
+
+    { # Contains properties of a placement strategy.
+      "kind": "dfareporting#placementStrategy", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#placementStrategy".
+      "id": "A String", # ID of this placement strategy. This is a read-only, auto-generated field.
+      "name": "A String", # Name of this placement strategy. This is a required field. It must be less than 256 characters long and unique among placement strategies of the same account.
+      "accountId": "A String", # Account ID of this placement strategy.This is a read-only field that can be left blank.
+    }</pre>
+</div>
+
+<div class="method">
+    <code class="details" id="insert">insert(profileId, body)</code>
+  <pre>Inserts a new placement strategy.
+
+Args:
+  profileId: string, User profile ID associated with this request. (required)
+  body: object, The request body. (required)
+    The object takes the form of:
+
+{ # Contains properties of a placement strategy.
+    "kind": "dfareporting#placementStrategy", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#placementStrategy".
+    "id": "A String", # ID of this placement strategy. This is a read-only, auto-generated field.
+    "name": "A String", # Name of this placement strategy. This is a required field. It must be less than 256 characters long and unique among placement strategies of the same account.
+    "accountId": "A String", # Account ID of this placement strategy.This is a read-only field that can be left blank.
+  }
+
+
+Returns:
+  An object of the form:
+
+    { # Contains properties of a placement strategy.
+      "kind": "dfareporting#placementStrategy", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#placementStrategy".
+      "id": "A String", # ID of this placement strategy. This is a read-only, auto-generated field.
+      "name": "A String", # Name of this placement strategy. This is a required field. It must be less than 256 characters long and unique among placement strategies of the same account.
+      "accountId": "A String", # Account ID of this placement strategy.This is a read-only field that can be left blank.
+    }</pre>
+</div>
+
+<div class="method">
+    <code class="details" id="list">list(profileId, searchString=None, pageToken=None, sortField=None, ids=None, maxResults=None, sortOrder=None)</code>
+  <pre>Retrieves a list of placement strategies, possibly filtered. This method supports paging.
+
+Args:
+  profileId: string, User profile ID associated with this request. (required)
+  searchString: string, Allows searching for objects by name or ID. Wildcards (*) are allowed. For example, "placementstrategy*2015" will return objects with names like "placementstrategy June 2015", "placementstrategy April 2015", or simply "placementstrategy 2015". Most of the searches also add wildcards implicitly at the start and the end of the search string. For example, a search string of "placementstrategy" will match objects with name "my placementstrategy", "placementstrategy 2015", or simply "placementstrategy".
+  pageToken: string, Value of the nextPageToken from the previous result page.
+  sortField: string, Field by which to sort the list.
+    Allowed values
+      ID - 
+      NAME - 
+  ids: string, Select only placement strategies with these IDs. (repeated)
+  maxResults: integer, Maximum number of results to return.
+  sortOrder: string, Order of sorted results, default is ASCENDING.
+    Allowed values
+      ASCENDING - 
+      DESCENDING - 
+
+Returns:
+  An object of the form:
+
+    { # Placement Strategy List Response
+    "nextPageToken": "A String", # Pagination token to be used for the next list operation.
+    "kind": "dfareporting#placementStrategiesListResponse", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#placementStrategiesListResponse".
+    "placementStrategies": [ # Placement strategy collection.
+      { # Contains properties of a placement strategy.
+          "kind": "dfareporting#placementStrategy", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#placementStrategy".
+          "id": "A String", # ID of this placement strategy. This is a read-only, auto-generated field.
+          "name": "A String", # Name of this placement strategy. This is a required field. It must be less than 256 characters long and unique among placement strategies of the same account.
+          "accountId": "A String", # Account ID of this placement strategy.This is a read-only field that can be left blank.
+        },
+    ],
+  }</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="patch">patch(profileId, id, body)</code>
+  <pre>Updates an existing placement strategy. This method supports patch semantics.
+
+Args:
+  profileId: string, User profile ID associated with this request. (required)
+  id: string, Placement strategy ID. (required)
+  body: object, The request body. (required)
+    The object takes the form of:
+
+{ # Contains properties of a placement strategy.
+    "kind": "dfareporting#placementStrategy", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#placementStrategy".
+    "id": "A String", # ID of this placement strategy. This is a read-only, auto-generated field.
+    "name": "A String", # Name of this placement strategy. This is a required field. It must be less than 256 characters long and unique among placement strategies of the same account.
+    "accountId": "A String", # Account ID of this placement strategy.This is a read-only field that can be left blank.
+  }
+
+
+Returns:
+  An object of the form:
+
+    { # Contains properties of a placement strategy.
+      "kind": "dfareporting#placementStrategy", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#placementStrategy".
+      "id": "A String", # ID of this placement strategy. This is a read-only, auto-generated field.
+      "name": "A String", # Name of this placement strategy. This is a required field. It must be less than 256 characters long and unique among placement strategies of the same account.
+      "accountId": "A String", # Account ID of this placement strategy.This is a read-only field that can be left blank.
+    }</pre>
+</div>
+
+<div class="method">
+    <code class="details" id="update">update(profileId, body)</code>
+  <pre>Updates an existing placement strategy.
+
+Args:
+  profileId: string, User profile ID associated with this request. (required)
+  body: object, The request body. (required)
+    The object takes the form of:
+
+{ # Contains properties of a placement strategy.
+    "kind": "dfareporting#placementStrategy", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#placementStrategy".
+    "id": "A String", # ID of this placement strategy. This is a read-only, auto-generated field.
+    "name": "A String", # Name of this placement strategy. This is a required field. It must be less than 256 characters long and unique among placement strategies of the same account.
+    "accountId": "A String", # Account ID of this placement strategy.This is a read-only field that can be left blank.
+  }
+
+
+Returns:
+  An object of the form:
+
+    { # Contains properties of a placement strategy.
+      "kind": "dfareporting#placementStrategy", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#placementStrategy".
+      "id": "A String", # ID of this placement strategy. This is a read-only, auto-generated field.
+      "name": "A String", # Name of this placement strategy. This is a required field. It must be less than 256 characters long and unique among placement strategies of the same account.
+      "accountId": "A String", # Account ID of this placement strategy.This is a read-only field that can be left blank.
+    }</pre>
+</div>
+
+</body></html>
\ No newline at end of file
diff --git a/docs/dyn/dfareporting_v2_7.placements.html b/docs/dyn/dfareporting_v2_7.placements.html
new file mode 100644
index 0000000..99dbcf3
--- /dev/null
+++ b/docs/dyn/dfareporting_v2_7.placements.html
@@ -0,0 +1,1656 @@
+<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="dfareporting_v2_7.html">DCM/DFA Reporting And Trafficking API</a> . <a href="dfareporting_v2_7.placements.html">placements</a></h1>
+<h2>Instance Methods</h2>
+<p class="toc_element">
+  <code><a href="#generatetags">generatetags(profileId, campaignId=None, tagFormats=None, placementIds=None)</a></code></p>
+<p class="firstline">Generates tags for a placement.</p>
+<p class="toc_element">
+  <code><a href="#get">get(profileId, id)</a></code></p>
+<p class="firstline">Gets one placement by ID.</p>
+<p class="toc_element">
+  <code><a href="#insert">insert(profileId, body)</a></code></p>
+<p class="firstline">Inserts a new placement.</p>
+<p class="toc_element">
+  <code><a href="#list">list(profileId, siteIds=None, paymentSource=None, pricingTypes=None, campaignIds=None, advertiserIds=None, sizeIds=None, pageToken=None, maxStartDate=None, sortOrder=None, maxEndDate=None, placementStrategyIds=None, contentCategoryIds=None, archived=None, maxResults=None, minStartDate=None, compatibilities=None, searchString=None, minEndDate=None, directorySiteIds=None, sortField=None, ids=None, groupIds=None)</a></code></p>
+<p class="firstline">Retrieves a list of placements, possibly filtered. This method supports paging.</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="#patch">patch(profileId, id, body)</a></code></p>
+<p class="firstline">Updates an existing placement. This method supports patch semantics.</p>
+<p class="toc_element">
+  <code><a href="#update">update(profileId, body)</a></code></p>
+<p class="firstline">Updates an existing placement.</p>
+<h3>Method Details</h3>
+<div class="method">
+    <code class="details" id="generatetags">generatetags(profileId, campaignId=None, tagFormats=None, placementIds=None)</code>
+  <pre>Generates tags for a placement.
+
+Args:
+  profileId: string, User profile ID associated with this request. (required)
+  campaignId: string, Generate placements belonging to this campaign. This is a required field.
+  tagFormats: string, Tag formats to generate for these placements. (repeated)
+    Allowed values
+      PLACEMENT_TAG_CLICK_COMMANDS - 
+      PLACEMENT_TAG_IFRAME_ILAYER - 
+      PLACEMENT_TAG_IFRAME_JAVASCRIPT - 
+      PLACEMENT_TAG_IFRAME_JAVASCRIPT_LEGACY - 
+      PLACEMENT_TAG_INSTREAM_VIDEO_PREFETCH - 
+      PLACEMENT_TAG_INSTREAM_VIDEO_PREFETCH_VAST_3 - 
+      PLACEMENT_TAG_INTERNAL_REDIRECT - 
+      PLACEMENT_TAG_INTERSTITIAL_IFRAME_JAVASCRIPT - 
+      PLACEMENT_TAG_INTERSTITIAL_IFRAME_JAVASCRIPT_LEGACY - 
+      PLACEMENT_TAG_INTERSTITIAL_INTERNAL_REDIRECT - 
+      PLACEMENT_TAG_INTERSTITIAL_JAVASCRIPT - 
+      PLACEMENT_TAG_INTERSTITIAL_JAVASCRIPT_LEGACY - 
+      PLACEMENT_TAG_JAVASCRIPT - 
+      PLACEMENT_TAG_JAVASCRIPT_LEGACY - 
+      PLACEMENT_TAG_STANDARD - 
+      PLACEMENT_TAG_TRACKING - 
+      PLACEMENT_TAG_TRACKING_IFRAME - 
+      PLACEMENT_TAG_TRACKING_JAVASCRIPT - 
+  placementIds: string, Generate tags for these placements. (repeated)
+
+Returns:
+  An object of the form:
+
+    { # Placement GenerateTags Response
+    "kind": "dfareporting#placementsGenerateTagsResponse", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#placementsGenerateTagsResponse".
+    "placementTags": [ # Set of generated tags for the specified placements.
+      { # Placement Tag
+        "tagDatas": [ # Tags generated for this placement.
+          { # Placement Tag Data
+            "clickTag": "A String", # Tag string to record a click.
+            "impressionTag": "A String", # Tag string for serving an ad.
+            "creativeId": "A String", # Creative associated with this placement tag.
+            "adId": "A String", # Ad associated with this placement tag.
+            "format": "A String", # TagData tag format of this tag.
+          },
+        ],
+        "placementId": "A String", # Placement ID
+      },
+    ],
+  }</pre>
+</div>
+
+<div class="method">
+    <code class="details" id="get">get(profileId, id)</code>
+  <pre>Gets one placement by ID.
+
+Args:
+  profileId: string, User profile ID associated with this request. (required)
+  id: string, Placement ID. (required)
+
+Returns:
+  An object of the form:
+
+    { # Contains properties of a placement.
+      "comment": "A String", # Comments for this placement.
+      "videoActiveViewOptOut": True or False, # Whether Verification and ActiveView are disabled for in-stream video creatives for this placement. The same setting videoActiveViewOptOut exists on the site level -- the opt out occurs if either of these settings are true. These settings are distinct from DirectorySites.settings.activeViewOptOut or Sites.siteSettings.activeViewOptOut which only apply to display ads. However, Accounts.activeViewOptOut opts out both video traffic, as well as display ads, from Verification and ActiveView.
+      "campaignId": "A String", # Campaign ID of this placement. This field is a required field on insertion.
+      "paymentSource": "A String", # Payment source for this placement. This is a required field that is read-only after insertion.
+      "directorySiteIdDimensionValue": { # Represents a DimensionValue resource. # Dimension value for the ID of the directory site. This is a read-only, auto-generated field.
+        "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+        "value": "A String", # The value of the dimension.
+        "dimensionName": "A String", # The name of the dimension.
+        "etag": "A String", # The eTag of this response for caching purposes.
+        "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+        "id": "A String", # The ID associated with the value if available.
+      },
+      "advertiserId": "A String", # Advertiser ID of this placement. This field can be left blank.
+      "keyName": "A String", # Key name of this placement. This is a read-only, auto-generated field.
+      "directorySiteId": "A String", # Directory site ID of this placement. On insert, you must set either this field or the siteId field to specify the site associated with this placement. This is a required field that is read-only after insertion.
+      "advertiserIdDimensionValue": { # Represents a DimensionValue resource. # Dimension value for the ID of the advertiser. This is a read-only, auto-generated field.
+        "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+        "value": "A String", # The value of the dimension.
+        "dimensionName": "A String", # The name of the dimension.
+        "etag": "A String", # The eTag of this response for caching purposes.
+        "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+        "id": "A String", # The ID associated with the value if available.
+      },
+      "id": "A String", # ID of this placement. This is a read-only, auto-generated field.
+      "accountId": "A String", # Account ID of this placement. This field can be left blank.
+      "archived": True or False, # Whether this placement is archived.
+      "videoSettings": { # Video Settings # A collection of settings which affect video creatives served through this placement. Applicable to placements with IN_STREAM_VIDEO compatibility.
+        "skippableSettings": { # Skippable Settings # Settings for the skippability of video creatives served to this placement. If this object is provided, the creative-level skippable settings will be overridden.
+          "skippable": True or False, # Whether the user can skip creatives served to this placement.
+          "kind": "dfareporting#skippableSetting", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#skippableSetting".
+          "skipOffset": { # Video Offset # Amount of time to play videos served to this placement before the skip button should appear. Applicable when skippable is true.
+            "offsetPercentage": 42, # Duration, as a percentage of video duration. Do not set when offsetSeconds is set.
+            "offsetSeconds": 42, # Duration, in seconds. Do not set when offsetPercentage is set.
+          },
+          "progressOffset": { # Video Offset # Amount of time to play videos served to this placement before counting a view. Applicable when skippable is true.
+            "offsetPercentage": 42, # Duration, as a percentage of video duration. Do not set when offsetSeconds is set.
+            "offsetSeconds": 42, # Duration, in seconds. Do not set when offsetPercentage is set.
+          },
+        },
+        "kind": "dfareporting#videoSettings", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#videoSettings".
+        "companionSettings": { # Companion Settings # Settings for the companion creatives of video creatives served to this placement.
+          "kind": "dfareporting#companionSetting", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#companionSetting".
+          "companionsDisabled": True or False, # Whether companions are disabled for this placement.
+          "imageOnly": True or False, # Whether to serve only static images as companions.
+          "enabledSizes": [ # Whitelist of companion sizes to be served to this placement. Set this list to null or empty to serve all companion sizes.
+            { # Represents the dimensions of ads, placements, creatives, or creative assets.
+              "width": 42, # Width of this size.
+              "kind": "dfareporting#size", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#size".
+              "iab": True or False, # IAB standard size. This is a read-only, auto-generated field.
+              "id": "A String", # ID of this size. This is a read-only, auto-generated field.
+              "height": 42, # Height of this size.
+            },
+          ],
+        },
+        "transcodeSettings": { # Transcode Settings # Settings for the transcodes of video creatives served to this placement. If this object is provided, the creative-level transcode settings will be overridden.
+          "kind": "dfareporting#transcodeSetting", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#transcodeSetting".
+          "enabledVideoFormats": [ # Whitelist of video formats to be served to this placement. Set this list to null or empty to serve all video formats.
+            42,
+          ],
+        },
+      },
+      "publisherUpdateInfo": { # Modification timestamp. # Information about the last publisher update. This is a read-only field.
+        "time": "A String", # Timestamp of the last change in milliseconds since epoch.
+      },
+      "tagFormats": [ # Tag formats to generate for this placement. This field is required on insertion.
+          # Acceptable values are:
+          # - "PLACEMENT_TAG_STANDARD"
+          # - "PLACEMENT_TAG_IFRAME_JAVASCRIPT"
+          # - "PLACEMENT_TAG_IFRAME_ILAYER"
+          # - "PLACEMENT_TAG_INTERNAL_REDIRECT"
+          # - "PLACEMENT_TAG_JAVASCRIPT"
+          # - "PLACEMENT_TAG_INTERSTITIAL_IFRAME_JAVASCRIPT"
+          # - "PLACEMENT_TAG_INTERSTITIAL_INTERNAL_REDIRECT"
+          # - "PLACEMENT_TAG_INTERSTITIAL_JAVASCRIPT"
+          # - "PLACEMENT_TAG_CLICK_COMMANDS"
+          # - "PLACEMENT_TAG_INSTREAM_VIDEO_PREFETCH"
+          # - "PLACEMENT_TAG_TRACKING"
+          # - "PLACEMENT_TAG_TRACKING_IFRAME"
+          # - "PLACEMENT_TAG_TRACKING_JAVASCRIPT"
+        "A String",
+      ],
+      "paymentApproved": True or False, # Whether payment was approved for this placement. This is a read-only field relevant only to publisher-paid placements.
+      "tagSetting": { # Tag Settings # Tag settings for this placement.
+        "includeClickThroughUrls": True or False, # Whether static landing page URLs should be included in the tags. This setting applies only to placements.
+        "includeClickTracking": True or False, # Whether click-tracking string should be included in the tags.
+        "additionalKeyValues": "A String", # Additional key-values to be included in tags. Each key-value pair must be of the form key=value, and pairs must be separated by a semicolon (;). Keys and values must not contain commas. For example, id=2;color=red is a valid value for this field.
+        "keywordOption": "A String", # Option specifying how keywords are embedded in ad tags. This setting can be used to specify whether keyword placeholders are inserted in placement tags for this site. Publishers can then add keywords to those placeholders.
+      },
+      "contentCategoryId": "A String", # ID of the content category assigned to this placement.
+      "externalId": "A String", # External ID for this placement.
+      "idDimensionValue": { # Represents a DimensionValue resource. # Dimension value for the ID of this placement. This is a read-only, auto-generated field.
+        "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+        "value": "A String", # The value of the dimension.
+        "dimensionName": "A String", # The name of the dimension.
+        "etag": "A String", # The eTag of this response for caching purposes.
+        "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+        "id": "A String", # The ID associated with the value if available.
+      },
+      "size": { # Represents the dimensions of ads, placements, creatives, or creative assets. # Size associated with this placement. When inserting or updating a placement, only the size ID field is used. This field is required on insertion.
+        "width": 42, # Width of this size.
+        "kind": "dfareporting#size", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#size".
+        "iab": True or False, # IAB standard size. This is a read-only, auto-generated field.
+        "id": "A String", # ID of this size. This is a read-only, auto-generated field.
+        "height": 42, # Height of this size.
+      },
+      "sslRequired": True or False, # Whether creatives assigned to this placement must be SSL-compliant.
+      "status": "A String", # Third-party placement status.
+      "campaignIdDimensionValue": { # Represents a DimensionValue resource. # Dimension value for the ID of the campaign. This is a read-only, auto-generated field.
+        "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+        "value": "A String", # The value of the dimension.
+        "dimensionName": "A String", # The name of the dimension.
+        "etag": "A String", # The eTag of this response for caching purposes.
+        "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+        "id": "A String", # The ID associated with the value if available.
+      },
+      "primary": True or False, # Whether this placement is the primary placement of a roadblock (placement group). You cannot change this field from true to false. Setting this field to true will automatically set the primary field on the original primary placement of the roadblock to false, and it will automatically set the roadblock's primaryPlacementId field to the ID of this placement.
+      "placementGroupId": "A String", # ID of this placement's group, if applicable.
+      "createInfo": { # Modification timestamp. # Information about the creation of this placement. This is a read-only field.
+        "time": "A String", # Timestamp of the last change in milliseconds since epoch.
+      },
+      "siteId": "A String", # Site ID associated with this placement. On insert, you must set either this field or the directorySiteId field to specify the site associated with this placement. This is a required field that is read-only after insertion.
+      "siteIdDimensionValue": { # Represents a DimensionValue resource. # Dimension value for the ID of the site. This is a read-only, auto-generated field.
+        "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+        "value": "A String", # The value of the dimension.
+        "dimensionName": "A String", # The name of the dimension.
+        "etag": "A String", # The eTag of this response for caching purposes.
+        "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+        "id": "A String", # The ID associated with the value if available.
+      },
+      "compatibility": "A String", # Placement compatibility. DISPLAY and DISPLAY_INTERSTITIAL refer to rendering on desktop, on mobile devices or in mobile apps for regular or interstitial ads respectively. APP and APP_INTERSTITIAL are no longer allowed for new placement insertions. Instead, use DISPLAY or DISPLAY_INTERSTITIAL. IN_STREAM_VIDEO refers to rendering in in-stream video ads developed with the VAST standard. This field is required on insertion.
+      "placementStrategyId": "A String", # ID of the placement strategy assigned to this placement.
+      "placementGroupIdDimensionValue": { # Represents a DimensionValue resource. # Dimension value for the ID of the placement group. This is a read-only, auto-generated field.
+        "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+        "value": "A String", # The value of the dimension.
+        "dimensionName": "A String", # The name of the dimension.
+        "etag": "A String", # The eTag of this response for caching purposes.
+        "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+        "id": "A String", # The ID associated with the value if available.
+      },
+      "kind": "dfareporting#placement", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#placement".
+      "subaccountId": "A String", # Subaccount ID of this placement. This field can be left blank.
+      "name": "A String", # Name of this placement.This is a required field and must be less than 256 characters long.
+      "lookbackConfiguration": { # Lookback configuration settings. # Lookback window settings for this placement.
+        "clickDuration": 42, # Lookback window, in days, from the last time a given user clicked on one of your ads. If you enter 0, clicks will not be considered as triggering events for floodlight tracking. If you leave this field blank, the default value for your account will be used.
+        "postImpressionActivitiesDuration": 42, # Lookback window, in days, from the last time a given user viewed one of your ads. If you enter 0, impressions will not be considered as triggering events for floodlight tracking. If you leave this field blank, the default value for your account will be used.
+      },
+      "lastModifiedInfo": { # Modification timestamp. # Information about the most recent modification of this placement. This is a read-only field.
+        "time": "A String", # Timestamp of the last change in milliseconds since epoch.
+      },
+      "pricingSchedule": { # Pricing Schedule # Pricing schedule of this placement. This field is required on insertion, specifically subfields startDate, endDate and pricingType.
+        "startDate": "A String", # Placement start date. This date must be later than, or the same day as, the campaign start date. The hours, minutes, and seconds of the start date should not be set, as doing so will result in an error. This field is required on insertion.
+        "endDate": "A String", # Placement end date. This date must be later than, or the same day as, the placement start date, but not later than the campaign end date. If, for example, you set 6/25/2015 as both the start and end dates, the effective placement date is just that day only, 6/25/2015. The hours, minutes, and seconds of the end date should not be set, as doing so will result in an error. This field is required on insertion.
+        "flighted": True or False, # Whether this placement is flighted. If true, pricing periods will be computed automatically.
+        "disregardOverdelivery": True or False, # Whether cap costs are ignored by ad serving.
+        "capCostOption": "A String", # Placement cap cost option.
+        "pricingPeriods": [ # Pricing periods for this placement.
+          { # Pricing Period
+            "units": "A String", # Units of this pricing period.
+            "rateOrCostNanos": "A String", # Rate or cost of this pricing period.
+            "startDate": "A String", # Pricing period start date. This date must be later than, or the same day as, the placement start date. The hours, minutes, and seconds of the start date should not be set, as doing so will result in an error.
+            "endDate": "A String", # Pricing period end date. This date must be later than, or the same day as, the pricing period start date, but not later than the placement end date. The period end date can be the same date as the period start date. If, for example, you set 6/25/2015 as both the start and end dates, the effective pricing period date is just that day only, 6/25/2015. The hours, minutes, and seconds of the end date should not be set, as doing so will result in an error.
+            "pricingComment": "A String", # Comments for this pricing period.
+          },
+        ],
+        "pricingType": "A String", # Placement pricing type. This field is required on insertion.
+        "testingStartDate": "A String", # Testing start date of this placement. The hours, minutes, and seconds of the start date should not be set, as doing so will result in an error.
+        "floodlightActivityId": "A String", # Floodlight activity ID associated with this placement. This field should be set when placement pricing type is set to PRICING_TYPE_CPA.
+      },
+      "vpaidAdapterChoice": "A String", # VPAID adapter setting for this placement. Controls which VPAID format the measurement adapter will use for in-stream video creatives assigned to this placement.
+    }</pre>
+</div>
+
+<div class="method">
+    <code class="details" id="insert">insert(profileId, body)</code>
+  <pre>Inserts a new placement.
+
+Args:
+  profileId: string, User profile ID associated with this request. (required)
+  body: object, The request body. (required)
+    The object takes the form of:
+
+{ # Contains properties of a placement.
+    "comment": "A String", # Comments for this placement.
+    "videoActiveViewOptOut": True or False, # Whether Verification and ActiveView are disabled for in-stream video creatives for this placement. The same setting videoActiveViewOptOut exists on the site level -- the opt out occurs if either of these settings are true. These settings are distinct from DirectorySites.settings.activeViewOptOut or Sites.siteSettings.activeViewOptOut which only apply to display ads. However, Accounts.activeViewOptOut opts out both video traffic, as well as display ads, from Verification and ActiveView.
+    "campaignId": "A String", # Campaign ID of this placement. This field is a required field on insertion.
+    "paymentSource": "A String", # Payment source for this placement. This is a required field that is read-only after insertion.
+    "directorySiteIdDimensionValue": { # Represents a DimensionValue resource. # Dimension value for the ID of the directory site. This is a read-only, auto-generated field.
+      "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+      "value": "A String", # The value of the dimension.
+      "dimensionName": "A String", # The name of the dimension.
+      "etag": "A String", # The eTag of this response for caching purposes.
+      "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+      "id": "A String", # The ID associated with the value if available.
+    },
+    "advertiserId": "A String", # Advertiser ID of this placement. This field can be left blank.
+    "keyName": "A String", # Key name of this placement. This is a read-only, auto-generated field.
+    "directorySiteId": "A String", # Directory site ID of this placement. On insert, you must set either this field or the siteId field to specify the site associated with this placement. This is a required field that is read-only after insertion.
+    "advertiserIdDimensionValue": { # Represents a DimensionValue resource. # Dimension value for the ID of the advertiser. This is a read-only, auto-generated field.
+      "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+      "value": "A String", # The value of the dimension.
+      "dimensionName": "A String", # The name of the dimension.
+      "etag": "A String", # The eTag of this response for caching purposes.
+      "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+      "id": "A String", # The ID associated with the value if available.
+    },
+    "id": "A String", # ID of this placement. This is a read-only, auto-generated field.
+    "accountId": "A String", # Account ID of this placement. This field can be left blank.
+    "archived": True or False, # Whether this placement is archived.
+    "videoSettings": { # Video Settings # A collection of settings which affect video creatives served through this placement. Applicable to placements with IN_STREAM_VIDEO compatibility.
+      "skippableSettings": { # Skippable Settings # Settings for the skippability of video creatives served to this placement. If this object is provided, the creative-level skippable settings will be overridden.
+        "skippable": True or False, # Whether the user can skip creatives served to this placement.
+        "kind": "dfareporting#skippableSetting", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#skippableSetting".
+        "skipOffset": { # Video Offset # Amount of time to play videos served to this placement before the skip button should appear. Applicable when skippable is true.
+          "offsetPercentage": 42, # Duration, as a percentage of video duration. Do not set when offsetSeconds is set.
+          "offsetSeconds": 42, # Duration, in seconds. Do not set when offsetPercentage is set.
+        },
+        "progressOffset": { # Video Offset # Amount of time to play videos served to this placement before counting a view. Applicable when skippable is true.
+          "offsetPercentage": 42, # Duration, as a percentage of video duration. Do not set when offsetSeconds is set.
+          "offsetSeconds": 42, # Duration, in seconds. Do not set when offsetPercentage is set.
+        },
+      },
+      "kind": "dfareporting#videoSettings", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#videoSettings".
+      "companionSettings": { # Companion Settings # Settings for the companion creatives of video creatives served to this placement.
+        "kind": "dfareporting#companionSetting", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#companionSetting".
+        "companionsDisabled": True or False, # Whether companions are disabled for this placement.
+        "imageOnly": True or False, # Whether to serve only static images as companions.
+        "enabledSizes": [ # Whitelist of companion sizes to be served to this placement. Set this list to null or empty to serve all companion sizes.
+          { # Represents the dimensions of ads, placements, creatives, or creative assets.
+            "width": 42, # Width of this size.
+            "kind": "dfareporting#size", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#size".
+            "iab": True or False, # IAB standard size. This is a read-only, auto-generated field.
+            "id": "A String", # ID of this size. This is a read-only, auto-generated field.
+            "height": 42, # Height of this size.
+          },
+        ],
+      },
+      "transcodeSettings": { # Transcode Settings # Settings for the transcodes of video creatives served to this placement. If this object is provided, the creative-level transcode settings will be overridden.
+        "kind": "dfareporting#transcodeSetting", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#transcodeSetting".
+        "enabledVideoFormats": [ # Whitelist of video formats to be served to this placement. Set this list to null or empty to serve all video formats.
+          42,
+        ],
+      },
+    },
+    "publisherUpdateInfo": { # Modification timestamp. # Information about the last publisher update. This is a read-only field.
+      "time": "A String", # Timestamp of the last change in milliseconds since epoch.
+    },
+    "tagFormats": [ # Tag formats to generate for this placement. This field is required on insertion.
+        # Acceptable values are:
+        # - "PLACEMENT_TAG_STANDARD"
+        # - "PLACEMENT_TAG_IFRAME_JAVASCRIPT"
+        # - "PLACEMENT_TAG_IFRAME_ILAYER"
+        # - "PLACEMENT_TAG_INTERNAL_REDIRECT"
+        # - "PLACEMENT_TAG_JAVASCRIPT"
+        # - "PLACEMENT_TAG_INTERSTITIAL_IFRAME_JAVASCRIPT"
+        # - "PLACEMENT_TAG_INTERSTITIAL_INTERNAL_REDIRECT"
+        # - "PLACEMENT_TAG_INTERSTITIAL_JAVASCRIPT"
+        # - "PLACEMENT_TAG_CLICK_COMMANDS"
+        # - "PLACEMENT_TAG_INSTREAM_VIDEO_PREFETCH"
+        # - "PLACEMENT_TAG_TRACKING"
+        # - "PLACEMENT_TAG_TRACKING_IFRAME"
+        # - "PLACEMENT_TAG_TRACKING_JAVASCRIPT"
+      "A String",
+    ],
+    "paymentApproved": True or False, # Whether payment was approved for this placement. This is a read-only field relevant only to publisher-paid placements.
+    "tagSetting": { # Tag Settings # Tag settings for this placement.
+      "includeClickThroughUrls": True or False, # Whether static landing page URLs should be included in the tags. This setting applies only to placements.
+      "includeClickTracking": True or False, # Whether click-tracking string should be included in the tags.
+      "additionalKeyValues": "A String", # Additional key-values to be included in tags. Each key-value pair must be of the form key=value, and pairs must be separated by a semicolon (;). Keys and values must not contain commas. For example, id=2;color=red is a valid value for this field.
+      "keywordOption": "A String", # Option specifying how keywords are embedded in ad tags. This setting can be used to specify whether keyword placeholders are inserted in placement tags for this site. Publishers can then add keywords to those placeholders.
+    },
+    "contentCategoryId": "A String", # ID of the content category assigned to this placement.
+    "externalId": "A String", # External ID for this placement.
+    "idDimensionValue": { # Represents a DimensionValue resource. # Dimension value for the ID of this placement. This is a read-only, auto-generated field.
+      "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+      "value": "A String", # The value of the dimension.
+      "dimensionName": "A String", # The name of the dimension.
+      "etag": "A String", # The eTag of this response for caching purposes.
+      "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+      "id": "A String", # The ID associated with the value if available.
+    },
+    "size": { # Represents the dimensions of ads, placements, creatives, or creative assets. # Size associated with this placement. When inserting or updating a placement, only the size ID field is used. This field is required on insertion.
+      "width": 42, # Width of this size.
+      "kind": "dfareporting#size", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#size".
+      "iab": True or False, # IAB standard size. This is a read-only, auto-generated field.
+      "id": "A String", # ID of this size. This is a read-only, auto-generated field.
+      "height": 42, # Height of this size.
+    },
+    "sslRequired": True or False, # Whether creatives assigned to this placement must be SSL-compliant.
+    "status": "A String", # Third-party placement status.
+    "campaignIdDimensionValue": { # Represents a DimensionValue resource. # Dimension value for the ID of the campaign. This is a read-only, auto-generated field.
+      "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+      "value": "A String", # The value of the dimension.
+      "dimensionName": "A String", # The name of the dimension.
+      "etag": "A String", # The eTag of this response for caching purposes.
+      "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+      "id": "A String", # The ID associated with the value if available.
+    },
+    "primary": True or False, # Whether this placement is the primary placement of a roadblock (placement group). You cannot change this field from true to false. Setting this field to true will automatically set the primary field on the original primary placement of the roadblock to false, and it will automatically set the roadblock's primaryPlacementId field to the ID of this placement.
+    "placementGroupId": "A String", # ID of this placement's group, if applicable.
+    "createInfo": { # Modification timestamp. # Information about the creation of this placement. This is a read-only field.
+      "time": "A String", # Timestamp of the last change in milliseconds since epoch.
+    },
+    "siteId": "A String", # Site ID associated with this placement. On insert, you must set either this field or the directorySiteId field to specify the site associated with this placement. This is a required field that is read-only after insertion.
+    "siteIdDimensionValue": { # Represents a DimensionValue resource. # Dimension value for the ID of the site. This is a read-only, auto-generated field.
+      "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+      "value": "A String", # The value of the dimension.
+      "dimensionName": "A String", # The name of the dimension.
+      "etag": "A String", # The eTag of this response for caching purposes.
+      "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+      "id": "A String", # The ID associated with the value if available.
+    },
+    "compatibility": "A String", # Placement compatibility. DISPLAY and DISPLAY_INTERSTITIAL refer to rendering on desktop, on mobile devices or in mobile apps for regular or interstitial ads respectively. APP and APP_INTERSTITIAL are no longer allowed for new placement insertions. Instead, use DISPLAY or DISPLAY_INTERSTITIAL. IN_STREAM_VIDEO refers to rendering in in-stream video ads developed with the VAST standard. This field is required on insertion.
+    "placementStrategyId": "A String", # ID of the placement strategy assigned to this placement.
+    "placementGroupIdDimensionValue": { # Represents a DimensionValue resource. # Dimension value for the ID of the placement group. This is a read-only, auto-generated field.
+      "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+      "value": "A String", # The value of the dimension.
+      "dimensionName": "A String", # The name of the dimension.
+      "etag": "A String", # The eTag of this response for caching purposes.
+      "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+      "id": "A String", # The ID associated with the value if available.
+    },
+    "kind": "dfareporting#placement", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#placement".
+    "subaccountId": "A String", # Subaccount ID of this placement. This field can be left blank.
+    "name": "A String", # Name of this placement.This is a required field and must be less than 256 characters long.
+    "lookbackConfiguration": { # Lookback configuration settings. # Lookback window settings for this placement.
+      "clickDuration": 42, # Lookback window, in days, from the last time a given user clicked on one of your ads. If you enter 0, clicks will not be considered as triggering events for floodlight tracking. If you leave this field blank, the default value for your account will be used.
+      "postImpressionActivitiesDuration": 42, # Lookback window, in days, from the last time a given user viewed one of your ads. If you enter 0, impressions will not be considered as triggering events for floodlight tracking. If you leave this field blank, the default value for your account will be used.
+    },
+    "lastModifiedInfo": { # Modification timestamp. # Information about the most recent modification of this placement. This is a read-only field.
+      "time": "A String", # Timestamp of the last change in milliseconds since epoch.
+    },
+    "pricingSchedule": { # Pricing Schedule # Pricing schedule of this placement. This field is required on insertion, specifically subfields startDate, endDate and pricingType.
+      "startDate": "A String", # Placement start date. This date must be later than, or the same day as, the campaign start date. The hours, minutes, and seconds of the start date should not be set, as doing so will result in an error. This field is required on insertion.
+      "endDate": "A String", # Placement end date. This date must be later than, or the same day as, the placement start date, but not later than the campaign end date. If, for example, you set 6/25/2015 as both the start and end dates, the effective placement date is just that day only, 6/25/2015. The hours, minutes, and seconds of the end date should not be set, as doing so will result in an error. This field is required on insertion.
+      "flighted": True or False, # Whether this placement is flighted. If true, pricing periods will be computed automatically.
+      "disregardOverdelivery": True or False, # Whether cap costs are ignored by ad serving.
+      "capCostOption": "A String", # Placement cap cost option.
+      "pricingPeriods": [ # Pricing periods for this placement.
+        { # Pricing Period
+          "units": "A String", # Units of this pricing period.
+          "rateOrCostNanos": "A String", # Rate or cost of this pricing period.
+          "startDate": "A String", # Pricing period start date. This date must be later than, or the same day as, the placement start date. The hours, minutes, and seconds of the start date should not be set, as doing so will result in an error.
+          "endDate": "A String", # Pricing period end date. This date must be later than, or the same day as, the pricing period start date, but not later than the placement end date. The period end date can be the same date as the period start date. If, for example, you set 6/25/2015 as both the start and end dates, the effective pricing period date is just that day only, 6/25/2015. The hours, minutes, and seconds of the end date should not be set, as doing so will result in an error.
+          "pricingComment": "A String", # Comments for this pricing period.
+        },
+      ],
+      "pricingType": "A String", # Placement pricing type. This field is required on insertion.
+      "testingStartDate": "A String", # Testing start date of this placement. The hours, minutes, and seconds of the start date should not be set, as doing so will result in an error.
+      "floodlightActivityId": "A String", # Floodlight activity ID associated with this placement. This field should be set when placement pricing type is set to PRICING_TYPE_CPA.
+    },
+    "vpaidAdapterChoice": "A String", # VPAID adapter setting for this placement. Controls which VPAID format the measurement adapter will use for in-stream video creatives assigned to this placement.
+  }
+
+
+Returns:
+  An object of the form:
+
+    { # Contains properties of a placement.
+      "comment": "A String", # Comments for this placement.
+      "videoActiveViewOptOut": True or False, # Whether Verification and ActiveView are disabled for in-stream video creatives for this placement. The same setting videoActiveViewOptOut exists on the site level -- the opt out occurs if either of these settings are true. These settings are distinct from DirectorySites.settings.activeViewOptOut or Sites.siteSettings.activeViewOptOut which only apply to display ads. However, Accounts.activeViewOptOut opts out both video traffic, as well as display ads, from Verification and ActiveView.
+      "campaignId": "A String", # Campaign ID of this placement. This field is a required field on insertion.
+      "paymentSource": "A String", # Payment source for this placement. This is a required field that is read-only after insertion.
+      "directorySiteIdDimensionValue": { # Represents a DimensionValue resource. # Dimension value for the ID of the directory site. This is a read-only, auto-generated field.
+        "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+        "value": "A String", # The value of the dimension.
+        "dimensionName": "A String", # The name of the dimension.
+        "etag": "A String", # The eTag of this response for caching purposes.
+        "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+        "id": "A String", # The ID associated with the value if available.
+      },
+      "advertiserId": "A String", # Advertiser ID of this placement. This field can be left blank.
+      "keyName": "A String", # Key name of this placement. This is a read-only, auto-generated field.
+      "directorySiteId": "A String", # Directory site ID of this placement. On insert, you must set either this field or the siteId field to specify the site associated with this placement. This is a required field that is read-only after insertion.
+      "advertiserIdDimensionValue": { # Represents a DimensionValue resource. # Dimension value for the ID of the advertiser. This is a read-only, auto-generated field.
+        "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+        "value": "A String", # The value of the dimension.
+        "dimensionName": "A String", # The name of the dimension.
+        "etag": "A String", # The eTag of this response for caching purposes.
+        "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+        "id": "A String", # The ID associated with the value if available.
+      },
+      "id": "A String", # ID of this placement. This is a read-only, auto-generated field.
+      "accountId": "A String", # Account ID of this placement. This field can be left blank.
+      "archived": True or False, # Whether this placement is archived.
+      "videoSettings": { # Video Settings # A collection of settings which affect video creatives served through this placement. Applicable to placements with IN_STREAM_VIDEO compatibility.
+        "skippableSettings": { # Skippable Settings # Settings for the skippability of video creatives served to this placement. If this object is provided, the creative-level skippable settings will be overridden.
+          "skippable": True or False, # Whether the user can skip creatives served to this placement.
+          "kind": "dfareporting#skippableSetting", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#skippableSetting".
+          "skipOffset": { # Video Offset # Amount of time to play videos served to this placement before the skip button should appear. Applicable when skippable is true.
+            "offsetPercentage": 42, # Duration, as a percentage of video duration. Do not set when offsetSeconds is set.
+            "offsetSeconds": 42, # Duration, in seconds. Do not set when offsetPercentage is set.
+          },
+          "progressOffset": { # Video Offset # Amount of time to play videos served to this placement before counting a view. Applicable when skippable is true.
+            "offsetPercentage": 42, # Duration, as a percentage of video duration. Do not set when offsetSeconds is set.
+            "offsetSeconds": 42, # Duration, in seconds. Do not set when offsetPercentage is set.
+          },
+        },
+        "kind": "dfareporting#videoSettings", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#videoSettings".
+        "companionSettings": { # Companion Settings # Settings for the companion creatives of video creatives served to this placement.
+          "kind": "dfareporting#companionSetting", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#companionSetting".
+          "companionsDisabled": True or False, # Whether companions are disabled for this placement.
+          "imageOnly": True or False, # Whether to serve only static images as companions.
+          "enabledSizes": [ # Whitelist of companion sizes to be served to this placement. Set this list to null or empty to serve all companion sizes.
+            { # Represents the dimensions of ads, placements, creatives, or creative assets.
+              "width": 42, # Width of this size.
+              "kind": "dfareporting#size", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#size".
+              "iab": True or False, # IAB standard size. This is a read-only, auto-generated field.
+              "id": "A String", # ID of this size. This is a read-only, auto-generated field.
+              "height": 42, # Height of this size.
+            },
+          ],
+        },
+        "transcodeSettings": { # Transcode Settings # Settings for the transcodes of video creatives served to this placement. If this object is provided, the creative-level transcode settings will be overridden.
+          "kind": "dfareporting#transcodeSetting", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#transcodeSetting".
+          "enabledVideoFormats": [ # Whitelist of video formats to be served to this placement. Set this list to null or empty to serve all video formats.
+            42,
+          ],
+        },
+      },
+      "publisherUpdateInfo": { # Modification timestamp. # Information about the last publisher update. This is a read-only field.
+        "time": "A String", # Timestamp of the last change in milliseconds since epoch.
+      },
+      "tagFormats": [ # Tag formats to generate for this placement. This field is required on insertion.
+          # Acceptable values are:
+          # - "PLACEMENT_TAG_STANDARD"
+          # - "PLACEMENT_TAG_IFRAME_JAVASCRIPT"
+          # - "PLACEMENT_TAG_IFRAME_ILAYER"
+          # - "PLACEMENT_TAG_INTERNAL_REDIRECT"
+          # - "PLACEMENT_TAG_JAVASCRIPT"
+          # - "PLACEMENT_TAG_INTERSTITIAL_IFRAME_JAVASCRIPT"
+          # - "PLACEMENT_TAG_INTERSTITIAL_INTERNAL_REDIRECT"
+          # - "PLACEMENT_TAG_INTERSTITIAL_JAVASCRIPT"
+          # - "PLACEMENT_TAG_CLICK_COMMANDS"
+          # - "PLACEMENT_TAG_INSTREAM_VIDEO_PREFETCH"
+          # - "PLACEMENT_TAG_TRACKING"
+          # - "PLACEMENT_TAG_TRACKING_IFRAME"
+          # - "PLACEMENT_TAG_TRACKING_JAVASCRIPT"
+        "A String",
+      ],
+      "paymentApproved": True or False, # Whether payment was approved for this placement. This is a read-only field relevant only to publisher-paid placements.
+      "tagSetting": { # Tag Settings # Tag settings for this placement.
+        "includeClickThroughUrls": True or False, # Whether static landing page URLs should be included in the tags. This setting applies only to placements.
+        "includeClickTracking": True or False, # Whether click-tracking string should be included in the tags.
+        "additionalKeyValues": "A String", # Additional key-values to be included in tags. Each key-value pair must be of the form key=value, and pairs must be separated by a semicolon (;). Keys and values must not contain commas. For example, id=2;color=red is a valid value for this field.
+        "keywordOption": "A String", # Option specifying how keywords are embedded in ad tags. This setting can be used to specify whether keyword placeholders are inserted in placement tags for this site. Publishers can then add keywords to those placeholders.
+      },
+      "contentCategoryId": "A String", # ID of the content category assigned to this placement.
+      "externalId": "A String", # External ID for this placement.
+      "idDimensionValue": { # Represents a DimensionValue resource. # Dimension value for the ID of this placement. This is a read-only, auto-generated field.
+        "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+        "value": "A String", # The value of the dimension.
+        "dimensionName": "A String", # The name of the dimension.
+        "etag": "A String", # The eTag of this response for caching purposes.
+        "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+        "id": "A String", # The ID associated with the value if available.
+      },
+      "size": { # Represents the dimensions of ads, placements, creatives, or creative assets. # Size associated with this placement. When inserting or updating a placement, only the size ID field is used. This field is required on insertion.
+        "width": 42, # Width of this size.
+        "kind": "dfareporting#size", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#size".
+        "iab": True or False, # IAB standard size. This is a read-only, auto-generated field.
+        "id": "A String", # ID of this size. This is a read-only, auto-generated field.
+        "height": 42, # Height of this size.
+      },
+      "sslRequired": True or False, # Whether creatives assigned to this placement must be SSL-compliant.
+      "status": "A String", # Third-party placement status.
+      "campaignIdDimensionValue": { # Represents a DimensionValue resource. # Dimension value for the ID of the campaign. This is a read-only, auto-generated field.
+        "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+        "value": "A String", # The value of the dimension.
+        "dimensionName": "A String", # The name of the dimension.
+        "etag": "A String", # The eTag of this response for caching purposes.
+        "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+        "id": "A String", # The ID associated with the value if available.
+      },
+      "primary": True or False, # Whether this placement is the primary placement of a roadblock (placement group). You cannot change this field from true to false. Setting this field to true will automatically set the primary field on the original primary placement of the roadblock to false, and it will automatically set the roadblock's primaryPlacementId field to the ID of this placement.
+      "placementGroupId": "A String", # ID of this placement's group, if applicable.
+      "createInfo": { # Modification timestamp. # Information about the creation of this placement. This is a read-only field.
+        "time": "A String", # Timestamp of the last change in milliseconds since epoch.
+      },
+      "siteId": "A String", # Site ID associated with this placement. On insert, you must set either this field or the directorySiteId field to specify the site associated with this placement. This is a required field that is read-only after insertion.
+      "siteIdDimensionValue": { # Represents a DimensionValue resource. # Dimension value for the ID of the site. This is a read-only, auto-generated field.
+        "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+        "value": "A String", # The value of the dimension.
+        "dimensionName": "A String", # The name of the dimension.
+        "etag": "A String", # The eTag of this response for caching purposes.
+        "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+        "id": "A String", # The ID associated with the value if available.
+      },
+      "compatibility": "A String", # Placement compatibility. DISPLAY and DISPLAY_INTERSTITIAL refer to rendering on desktop, on mobile devices or in mobile apps for regular or interstitial ads respectively. APP and APP_INTERSTITIAL are no longer allowed for new placement insertions. Instead, use DISPLAY or DISPLAY_INTERSTITIAL. IN_STREAM_VIDEO refers to rendering in in-stream video ads developed with the VAST standard. This field is required on insertion.
+      "placementStrategyId": "A String", # ID of the placement strategy assigned to this placement.
+      "placementGroupIdDimensionValue": { # Represents a DimensionValue resource. # Dimension value for the ID of the placement group. This is a read-only, auto-generated field.
+        "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+        "value": "A String", # The value of the dimension.
+        "dimensionName": "A String", # The name of the dimension.
+        "etag": "A String", # The eTag of this response for caching purposes.
+        "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+        "id": "A String", # The ID associated with the value if available.
+      },
+      "kind": "dfareporting#placement", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#placement".
+      "subaccountId": "A String", # Subaccount ID of this placement. This field can be left blank.
+      "name": "A String", # Name of this placement.This is a required field and must be less than 256 characters long.
+      "lookbackConfiguration": { # Lookback configuration settings. # Lookback window settings for this placement.
+        "clickDuration": 42, # Lookback window, in days, from the last time a given user clicked on one of your ads. If you enter 0, clicks will not be considered as triggering events for floodlight tracking. If you leave this field blank, the default value for your account will be used.
+        "postImpressionActivitiesDuration": 42, # Lookback window, in days, from the last time a given user viewed one of your ads. If you enter 0, impressions will not be considered as triggering events for floodlight tracking. If you leave this field blank, the default value for your account will be used.
+      },
+      "lastModifiedInfo": { # Modification timestamp. # Information about the most recent modification of this placement. This is a read-only field.
+        "time": "A String", # Timestamp of the last change in milliseconds since epoch.
+      },
+      "pricingSchedule": { # Pricing Schedule # Pricing schedule of this placement. This field is required on insertion, specifically subfields startDate, endDate and pricingType.
+        "startDate": "A String", # Placement start date. This date must be later than, or the same day as, the campaign start date. The hours, minutes, and seconds of the start date should not be set, as doing so will result in an error. This field is required on insertion.
+        "endDate": "A String", # Placement end date. This date must be later than, or the same day as, the placement start date, but not later than the campaign end date. If, for example, you set 6/25/2015 as both the start and end dates, the effective placement date is just that day only, 6/25/2015. The hours, minutes, and seconds of the end date should not be set, as doing so will result in an error. This field is required on insertion.
+        "flighted": True or False, # Whether this placement is flighted. If true, pricing periods will be computed automatically.
+        "disregardOverdelivery": True or False, # Whether cap costs are ignored by ad serving.
+        "capCostOption": "A String", # Placement cap cost option.
+        "pricingPeriods": [ # Pricing periods for this placement.
+          { # Pricing Period
+            "units": "A String", # Units of this pricing period.
+            "rateOrCostNanos": "A String", # Rate or cost of this pricing period.
+            "startDate": "A String", # Pricing period start date. This date must be later than, or the same day as, the placement start date. The hours, minutes, and seconds of the start date should not be set, as doing so will result in an error.
+            "endDate": "A String", # Pricing period end date. This date must be later than, or the same day as, the pricing period start date, but not later than the placement end date. The period end date can be the same date as the period start date. If, for example, you set 6/25/2015 as both the start and end dates, the effective pricing period date is just that day only, 6/25/2015. The hours, minutes, and seconds of the end date should not be set, as doing so will result in an error.
+            "pricingComment": "A String", # Comments for this pricing period.
+          },
+        ],
+        "pricingType": "A String", # Placement pricing type. This field is required on insertion.
+        "testingStartDate": "A String", # Testing start date of this placement. The hours, minutes, and seconds of the start date should not be set, as doing so will result in an error.
+        "floodlightActivityId": "A String", # Floodlight activity ID associated with this placement. This field should be set when placement pricing type is set to PRICING_TYPE_CPA.
+      },
+      "vpaidAdapterChoice": "A String", # VPAID adapter setting for this placement. Controls which VPAID format the measurement adapter will use for in-stream video creatives assigned to this placement.
+    }</pre>
+</div>
+
+<div class="method">
+    <code class="details" id="list">list(profileId, siteIds=None, paymentSource=None, pricingTypes=None, campaignIds=None, advertiserIds=None, sizeIds=None, pageToken=None, maxStartDate=None, sortOrder=None, maxEndDate=None, placementStrategyIds=None, contentCategoryIds=None, archived=None, maxResults=None, minStartDate=None, compatibilities=None, searchString=None, minEndDate=None, directorySiteIds=None, sortField=None, ids=None, groupIds=None)</code>
+  <pre>Retrieves a list of placements, possibly filtered. This method supports paging.
+
+Args:
+  profileId: string, User profile ID associated with this request. (required)
+  siteIds: string, Select only placements that are associated with these sites. (repeated)
+  paymentSource: string, Select only placements with this payment source.
+    Allowed values
+      PLACEMENT_AGENCY_PAID - 
+      PLACEMENT_PUBLISHER_PAID - 
+  pricingTypes: string, Select only placements with these pricing types. (repeated)
+    Allowed values
+      PRICING_TYPE_CPA - 
+      PRICING_TYPE_CPC - 
+      PRICING_TYPE_CPM - 
+      PRICING_TYPE_CPM_ACTIVEVIEW - 
+      PRICING_TYPE_FLAT_RATE_CLICKS - 
+      PRICING_TYPE_FLAT_RATE_IMPRESSIONS - 
+  campaignIds: string, Select only placements that belong to these campaigns. (repeated)
+  advertiserIds: string, Select only placements that belong to these advertisers. (repeated)
+  sizeIds: string, Select only placements that are associated with these sizes. (repeated)
+  pageToken: string, Value of the nextPageToken from the previous result page.
+  maxStartDate: string, Select only placements or placement groups whose start date is on or before the specified maxStartDate. The date should be formatted as "yyyy-MM-dd".
+  sortOrder: string, Order of sorted results, default is ASCENDING.
+    Allowed values
+      ASCENDING - 
+      DESCENDING - 
+  maxEndDate: string, Select only placements or placement groups whose end date is on or before the specified maxEndDate. The date should be formatted as "yyyy-MM-dd".
+  placementStrategyIds: string, Select only placements that are associated with these placement strategies. (repeated)
+  contentCategoryIds: string, Select only placements that are associated with these content categories. (repeated)
+  archived: boolean, Select only archived placements. Don't set this field to select both archived and non-archived placements.
+  maxResults: integer, Maximum number of results to return.
+  minStartDate: string, Select only placements or placement groups whose start date is on or after the specified minStartDate. The date should be formatted as "yyyy-MM-dd".
+  compatibilities: string, Select only placements that are associated with these compatibilities. DISPLAY and DISPLAY_INTERSTITIAL refer to rendering either on desktop or on mobile devices for regular or interstitial ads respectively. APP and APP_INTERSTITIAL are for rendering in mobile apps. IN_STREAM_VIDEO refers to rendering in in-stream video ads developed with the VAST standard. (repeated)
+    Allowed values
+      APP - 
+      APP_INTERSTITIAL - 
+      DISPLAY - 
+      DISPLAY_INTERSTITIAL - 
+      IN_STREAM_VIDEO - 
+  searchString: string, Allows searching for placements by name or ID. Wildcards (*) are allowed. For example, "placement*2015" will return placements with names like "placement June 2015", "placement May 2015", or simply "placements 2015". Most of the searches also add wildcards implicitly at the start and the end of the search string. For example, a search string of "placement" will match placements with name "my placement", "placement 2015", or simply "placement".
+  minEndDate: string, Select only placements or placement groups whose end date is on or after the specified minEndDate. The date should be formatted as "yyyy-MM-dd".
+  directorySiteIds: string, Select only placements that are associated with these directory sites. (repeated)
+  sortField: string, Field by which to sort the list.
+    Allowed values
+      ID - 
+      NAME - 
+  ids: string, Select only placements with these IDs. (repeated)
+  groupIds: string, Select only placements that belong to these placement groups. (repeated)
+
+Returns:
+  An object of the form:
+
+    { # Placement List Response
+    "nextPageToken": "A String", # Pagination token to be used for the next list operation.
+    "kind": "dfareporting#placementsListResponse", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#placementsListResponse".
+    "placements": [ # Placement collection.
+      { # Contains properties of a placement.
+          "comment": "A String", # Comments for this placement.
+          "videoActiveViewOptOut": True or False, # Whether Verification and ActiveView are disabled for in-stream video creatives for this placement. The same setting videoActiveViewOptOut exists on the site level -- the opt out occurs if either of these settings are true. These settings are distinct from DirectorySites.settings.activeViewOptOut or Sites.siteSettings.activeViewOptOut which only apply to display ads. However, Accounts.activeViewOptOut opts out both video traffic, as well as display ads, from Verification and ActiveView.
+          "campaignId": "A String", # Campaign ID of this placement. This field is a required field on insertion.
+          "paymentSource": "A String", # Payment source for this placement. This is a required field that is read-only after insertion.
+          "directorySiteIdDimensionValue": { # Represents a DimensionValue resource. # Dimension value for the ID of the directory site. This is a read-only, auto-generated field.
+            "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+            "value": "A String", # The value of the dimension.
+            "dimensionName": "A String", # The name of the dimension.
+            "etag": "A String", # The eTag of this response for caching purposes.
+            "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+            "id": "A String", # The ID associated with the value if available.
+          },
+          "advertiserId": "A String", # Advertiser ID of this placement. This field can be left blank.
+          "keyName": "A String", # Key name of this placement. This is a read-only, auto-generated field.
+          "directorySiteId": "A String", # Directory site ID of this placement. On insert, you must set either this field or the siteId field to specify the site associated with this placement. This is a required field that is read-only after insertion.
+          "advertiserIdDimensionValue": { # Represents a DimensionValue resource. # Dimension value for the ID of the advertiser. This is a read-only, auto-generated field.
+            "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+            "value": "A String", # The value of the dimension.
+            "dimensionName": "A String", # The name of the dimension.
+            "etag": "A String", # The eTag of this response for caching purposes.
+            "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+            "id": "A String", # The ID associated with the value if available.
+          },
+          "id": "A String", # ID of this placement. This is a read-only, auto-generated field.
+          "accountId": "A String", # Account ID of this placement. This field can be left blank.
+          "archived": True or False, # Whether this placement is archived.
+          "videoSettings": { # Video Settings # A collection of settings which affect video creatives served through this placement. Applicable to placements with IN_STREAM_VIDEO compatibility.
+            "skippableSettings": { # Skippable Settings # Settings for the skippability of video creatives served to this placement. If this object is provided, the creative-level skippable settings will be overridden.
+              "skippable": True or False, # Whether the user can skip creatives served to this placement.
+              "kind": "dfareporting#skippableSetting", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#skippableSetting".
+              "skipOffset": { # Video Offset # Amount of time to play videos served to this placement before the skip button should appear. Applicable when skippable is true.
+                "offsetPercentage": 42, # Duration, as a percentage of video duration. Do not set when offsetSeconds is set.
+                "offsetSeconds": 42, # Duration, in seconds. Do not set when offsetPercentage is set.
+              },
+              "progressOffset": { # Video Offset # Amount of time to play videos served to this placement before counting a view. Applicable when skippable is true.
+                "offsetPercentage": 42, # Duration, as a percentage of video duration. Do not set when offsetSeconds is set.
+                "offsetSeconds": 42, # Duration, in seconds. Do not set when offsetPercentage is set.
+              },
+            },
+            "kind": "dfareporting#videoSettings", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#videoSettings".
+            "companionSettings": { # Companion Settings # Settings for the companion creatives of video creatives served to this placement.
+              "kind": "dfareporting#companionSetting", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#companionSetting".
+              "companionsDisabled": True or False, # Whether companions are disabled for this placement.
+              "imageOnly": True or False, # Whether to serve only static images as companions.
+              "enabledSizes": [ # Whitelist of companion sizes to be served to this placement. Set this list to null or empty to serve all companion sizes.
+                { # Represents the dimensions of ads, placements, creatives, or creative assets.
+                  "width": 42, # Width of this size.
+                  "kind": "dfareporting#size", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#size".
+                  "iab": True or False, # IAB standard size. This is a read-only, auto-generated field.
+                  "id": "A String", # ID of this size. This is a read-only, auto-generated field.
+                  "height": 42, # Height of this size.
+                },
+              ],
+            },
+            "transcodeSettings": { # Transcode Settings # Settings for the transcodes of video creatives served to this placement. If this object is provided, the creative-level transcode settings will be overridden.
+              "kind": "dfareporting#transcodeSetting", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#transcodeSetting".
+              "enabledVideoFormats": [ # Whitelist of video formats to be served to this placement. Set this list to null or empty to serve all video formats.
+                42,
+              ],
+            },
+          },
+          "publisherUpdateInfo": { # Modification timestamp. # Information about the last publisher update. This is a read-only field.
+            "time": "A String", # Timestamp of the last change in milliseconds since epoch.
+          },
+          "tagFormats": [ # Tag formats to generate for this placement. This field is required on insertion.
+              # Acceptable values are:
+              # - "PLACEMENT_TAG_STANDARD"
+              # - "PLACEMENT_TAG_IFRAME_JAVASCRIPT"
+              # - "PLACEMENT_TAG_IFRAME_ILAYER"
+              # - "PLACEMENT_TAG_INTERNAL_REDIRECT"
+              # - "PLACEMENT_TAG_JAVASCRIPT"
+              # - "PLACEMENT_TAG_INTERSTITIAL_IFRAME_JAVASCRIPT"
+              # - "PLACEMENT_TAG_INTERSTITIAL_INTERNAL_REDIRECT"
+              # - "PLACEMENT_TAG_INTERSTITIAL_JAVASCRIPT"
+              # - "PLACEMENT_TAG_CLICK_COMMANDS"
+              # - "PLACEMENT_TAG_INSTREAM_VIDEO_PREFETCH"
+              # - "PLACEMENT_TAG_TRACKING"
+              # - "PLACEMENT_TAG_TRACKING_IFRAME"
+              # - "PLACEMENT_TAG_TRACKING_JAVASCRIPT"
+            "A String",
+          ],
+          "paymentApproved": True or False, # Whether payment was approved for this placement. This is a read-only field relevant only to publisher-paid placements.
+          "tagSetting": { # Tag Settings # Tag settings for this placement.
+            "includeClickThroughUrls": True or False, # Whether static landing page URLs should be included in the tags. This setting applies only to placements.
+            "includeClickTracking": True or False, # Whether click-tracking string should be included in the tags.
+            "additionalKeyValues": "A String", # Additional key-values to be included in tags. Each key-value pair must be of the form key=value, and pairs must be separated by a semicolon (;). Keys and values must not contain commas. For example, id=2;color=red is a valid value for this field.
+            "keywordOption": "A String", # Option specifying how keywords are embedded in ad tags. This setting can be used to specify whether keyword placeholders are inserted in placement tags for this site. Publishers can then add keywords to those placeholders.
+          },
+          "contentCategoryId": "A String", # ID of the content category assigned to this placement.
+          "externalId": "A String", # External ID for this placement.
+          "idDimensionValue": { # Represents a DimensionValue resource. # Dimension value for the ID of this placement. This is a read-only, auto-generated field.
+            "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+            "value": "A String", # The value of the dimension.
+            "dimensionName": "A String", # The name of the dimension.
+            "etag": "A String", # The eTag of this response for caching purposes.
+            "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+            "id": "A String", # The ID associated with the value if available.
+          },
+          "size": { # Represents the dimensions of ads, placements, creatives, or creative assets. # Size associated with this placement. When inserting or updating a placement, only the size ID field is used. This field is required on insertion.
+            "width": 42, # Width of this size.
+            "kind": "dfareporting#size", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#size".
+            "iab": True or False, # IAB standard size. This is a read-only, auto-generated field.
+            "id": "A String", # ID of this size. This is a read-only, auto-generated field.
+            "height": 42, # Height of this size.
+          },
+          "sslRequired": True or False, # Whether creatives assigned to this placement must be SSL-compliant.
+          "status": "A String", # Third-party placement status.
+          "campaignIdDimensionValue": { # Represents a DimensionValue resource. # Dimension value for the ID of the campaign. This is a read-only, auto-generated field.
+            "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+            "value": "A String", # The value of the dimension.
+            "dimensionName": "A String", # The name of the dimension.
+            "etag": "A String", # The eTag of this response for caching purposes.
+            "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+            "id": "A String", # The ID associated with the value if available.
+          },
+          "primary": True or False, # Whether this placement is the primary placement of a roadblock (placement group). You cannot change this field from true to false. Setting this field to true will automatically set the primary field on the original primary placement of the roadblock to false, and it will automatically set the roadblock's primaryPlacementId field to the ID of this placement.
+          "placementGroupId": "A String", # ID of this placement's group, if applicable.
+          "createInfo": { # Modification timestamp. # Information about the creation of this placement. This is a read-only field.
+            "time": "A String", # Timestamp of the last change in milliseconds since epoch.
+          },
+          "siteId": "A String", # Site ID associated with this placement. On insert, you must set either this field or the directorySiteId field to specify the site associated with this placement. This is a required field that is read-only after insertion.
+          "siteIdDimensionValue": { # Represents a DimensionValue resource. # Dimension value for the ID of the site. This is a read-only, auto-generated field.
+            "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+            "value": "A String", # The value of the dimension.
+            "dimensionName": "A String", # The name of the dimension.
+            "etag": "A String", # The eTag of this response for caching purposes.
+            "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+            "id": "A String", # The ID associated with the value if available.
+          },
+          "compatibility": "A String", # Placement compatibility. DISPLAY and DISPLAY_INTERSTITIAL refer to rendering on desktop, on mobile devices or in mobile apps for regular or interstitial ads respectively. APP and APP_INTERSTITIAL are no longer allowed for new placement insertions. Instead, use DISPLAY or DISPLAY_INTERSTITIAL. IN_STREAM_VIDEO refers to rendering in in-stream video ads developed with the VAST standard. This field is required on insertion.
+          "placementStrategyId": "A String", # ID of the placement strategy assigned to this placement.
+          "placementGroupIdDimensionValue": { # Represents a DimensionValue resource. # Dimension value for the ID of the placement group. This is a read-only, auto-generated field.
+            "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+            "value": "A String", # The value of the dimension.
+            "dimensionName": "A String", # The name of the dimension.
+            "etag": "A String", # The eTag of this response for caching purposes.
+            "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+            "id": "A String", # The ID associated with the value if available.
+          },
+          "kind": "dfareporting#placement", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#placement".
+          "subaccountId": "A String", # Subaccount ID of this placement. This field can be left blank.
+          "name": "A String", # Name of this placement.This is a required field and must be less than 256 characters long.
+          "lookbackConfiguration": { # Lookback configuration settings. # Lookback window settings for this placement.
+            "clickDuration": 42, # Lookback window, in days, from the last time a given user clicked on one of your ads. If you enter 0, clicks will not be considered as triggering events for floodlight tracking. If you leave this field blank, the default value for your account will be used.
+            "postImpressionActivitiesDuration": 42, # Lookback window, in days, from the last time a given user viewed one of your ads. If you enter 0, impressions will not be considered as triggering events for floodlight tracking. If you leave this field blank, the default value for your account will be used.
+          },
+          "lastModifiedInfo": { # Modification timestamp. # Information about the most recent modification of this placement. This is a read-only field.
+            "time": "A String", # Timestamp of the last change in milliseconds since epoch.
+          },
+          "pricingSchedule": { # Pricing Schedule # Pricing schedule of this placement. This field is required on insertion, specifically subfields startDate, endDate and pricingType.
+            "startDate": "A String", # Placement start date. This date must be later than, or the same day as, the campaign start date. The hours, minutes, and seconds of the start date should not be set, as doing so will result in an error. This field is required on insertion.
+            "endDate": "A String", # Placement end date. This date must be later than, or the same day as, the placement start date, but not later than the campaign end date. If, for example, you set 6/25/2015 as both the start and end dates, the effective placement date is just that day only, 6/25/2015. The hours, minutes, and seconds of the end date should not be set, as doing so will result in an error. This field is required on insertion.
+            "flighted": True or False, # Whether this placement is flighted. If true, pricing periods will be computed automatically.
+            "disregardOverdelivery": True or False, # Whether cap costs are ignored by ad serving.
+            "capCostOption": "A String", # Placement cap cost option.
+            "pricingPeriods": [ # Pricing periods for this placement.
+              { # Pricing Period
+                "units": "A String", # Units of this pricing period.
+                "rateOrCostNanos": "A String", # Rate or cost of this pricing period.
+                "startDate": "A String", # Pricing period start date. This date must be later than, or the same day as, the placement start date. The hours, minutes, and seconds of the start date should not be set, as doing so will result in an error.
+                "endDate": "A String", # Pricing period end date. This date must be later than, or the same day as, the pricing period start date, but not later than the placement end date. The period end date can be the same date as the period start date. If, for example, you set 6/25/2015 as both the start and end dates, the effective pricing period date is just that day only, 6/25/2015. The hours, minutes, and seconds of the end date should not be set, as doing so will result in an error.
+                "pricingComment": "A String", # Comments for this pricing period.
+              },
+            ],
+            "pricingType": "A String", # Placement pricing type. This field is required on insertion.
+            "testingStartDate": "A String", # Testing start date of this placement. The hours, minutes, and seconds of the start date should not be set, as doing so will result in an error.
+            "floodlightActivityId": "A String", # Floodlight activity ID associated with this placement. This field should be set when placement pricing type is set to PRICING_TYPE_CPA.
+          },
+          "vpaidAdapterChoice": "A String", # VPAID adapter setting for this placement. Controls which VPAID format the measurement adapter will use for in-stream video creatives assigned to this placement.
+        },
+    ],
+  }</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="patch">patch(profileId, id, body)</code>
+  <pre>Updates an existing placement. This method supports patch semantics.
+
+Args:
+  profileId: string, User profile ID associated with this request. (required)
+  id: string, Placement ID. (required)
+  body: object, The request body. (required)
+    The object takes the form of:
+
+{ # Contains properties of a placement.
+    "comment": "A String", # Comments for this placement.
+    "videoActiveViewOptOut": True or False, # Whether Verification and ActiveView are disabled for in-stream video creatives for this placement. The same setting videoActiveViewOptOut exists on the site level -- the opt out occurs if either of these settings are true. These settings are distinct from DirectorySites.settings.activeViewOptOut or Sites.siteSettings.activeViewOptOut which only apply to display ads. However, Accounts.activeViewOptOut opts out both video traffic, as well as display ads, from Verification and ActiveView.
+    "campaignId": "A String", # Campaign ID of this placement. This field is a required field on insertion.
+    "paymentSource": "A String", # Payment source for this placement. This is a required field that is read-only after insertion.
+    "directorySiteIdDimensionValue": { # Represents a DimensionValue resource. # Dimension value for the ID of the directory site. This is a read-only, auto-generated field.
+      "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+      "value": "A String", # The value of the dimension.
+      "dimensionName": "A String", # The name of the dimension.
+      "etag": "A String", # The eTag of this response for caching purposes.
+      "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+      "id": "A String", # The ID associated with the value if available.
+    },
+    "advertiserId": "A String", # Advertiser ID of this placement. This field can be left blank.
+    "keyName": "A String", # Key name of this placement. This is a read-only, auto-generated field.
+    "directorySiteId": "A String", # Directory site ID of this placement. On insert, you must set either this field or the siteId field to specify the site associated with this placement. This is a required field that is read-only after insertion.
+    "advertiserIdDimensionValue": { # Represents a DimensionValue resource. # Dimension value for the ID of the advertiser. This is a read-only, auto-generated field.
+      "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+      "value": "A String", # The value of the dimension.
+      "dimensionName": "A String", # The name of the dimension.
+      "etag": "A String", # The eTag of this response for caching purposes.
+      "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+      "id": "A String", # The ID associated with the value if available.
+    },
+    "id": "A String", # ID of this placement. This is a read-only, auto-generated field.
+    "accountId": "A String", # Account ID of this placement. This field can be left blank.
+    "archived": True or False, # Whether this placement is archived.
+    "videoSettings": { # Video Settings # A collection of settings which affect video creatives served through this placement. Applicable to placements with IN_STREAM_VIDEO compatibility.
+      "skippableSettings": { # Skippable Settings # Settings for the skippability of video creatives served to this placement. If this object is provided, the creative-level skippable settings will be overridden.
+        "skippable": True or False, # Whether the user can skip creatives served to this placement.
+        "kind": "dfareporting#skippableSetting", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#skippableSetting".
+        "skipOffset": { # Video Offset # Amount of time to play videos served to this placement before the skip button should appear. Applicable when skippable is true.
+          "offsetPercentage": 42, # Duration, as a percentage of video duration. Do not set when offsetSeconds is set.
+          "offsetSeconds": 42, # Duration, in seconds. Do not set when offsetPercentage is set.
+        },
+        "progressOffset": { # Video Offset # Amount of time to play videos served to this placement before counting a view. Applicable when skippable is true.
+          "offsetPercentage": 42, # Duration, as a percentage of video duration. Do not set when offsetSeconds is set.
+          "offsetSeconds": 42, # Duration, in seconds. Do not set when offsetPercentage is set.
+        },
+      },
+      "kind": "dfareporting#videoSettings", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#videoSettings".
+      "companionSettings": { # Companion Settings # Settings for the companion creatives of video creatives served to this placement.
+        "kind": "dfareporting#companionSetting", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#companionSetting".
+        "companionsDisabled": True or False, # Whether companions are disabled for this placement.
+        "imageOnly": True or False, # Whether to serve only static images as companions.
+        "enabledSizes": [ # Whitelist of companion sizes to be served to this placement. Set this list to null or empty to serve all companion sizes.
+          { # Represents the dimensions of ads, placements, creatives, or creative assets.
+            "width": 42, # Width of this size.
+            "kind": "dfareporting#size", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#size".
+            "iab": True or False, # IAB standard size. This is a read-only, auto-generated field.
+            "id": "A String", # ID of this size. This is a read-only, auto-generated field.
+            "height": 42, # Height of this size.
+          },
+        ],
+      },
+      "transcodeSettings": { # Transcode Settings # Settings for the transcodes of video creatives served to this placement. If this object is provided, the creative-level transcode settings will be overridden.
+        "kind": "dfareporting#transcodeSetting", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#transcodeSetting".
+        "enabledVideoFormats": [ # Whitelist of video formats to be served to this placement. Set this list to null or empty to serve all video formats.
+          42,
+        ],
+      },
+    },
+    "publisherUpdateInfo": { # Modification timestamp. # Information about the last publisher update. This is a read-only field.
+      "time": "A String", # Timestamp of the last change in milliseconds since epoch.
+    },
+    "tagFormats": [ # Tag formats to generate for this placement. This field is required on insertion.
+        # Acceptable values are:
+        # - "PLACEMENT_TAG_STANDARD"
+        # - "PLACEMENT_TAG_IFRAME_JAVASCRIPT"
+        # - "PLACEMENT_TAG_IFRAME_ILAYER"
+        # - "PLACEMENT_TAG_INTERNAL_REDIRECT"
+        # - "PLACEMENT_TAG_JAVASCRIPT"
+        # - "PLACEMENT_TAG_INTERSTITIAL_IFRAME_JAVASCRIPT"
+        # - "PLACEMENT_TAG_INTERSTITIAL_INTERNAL_REDIRECT"
+        # - "PLACEMENT_TAG_INTERSTITIAL_JAVASCRIPT"
+        # - "PLACEMENT_TAG_CLICK_COMMANDS"
+        # - "PLACEMENT_TAG_INSTREAM_VIDEO_PREFETCH"
+        # - "PLACEMENT_TAG_TRACKING"
+        # - "PLACEMENT_TAG_TRACKING_IFRAME"
+        # - "PLACEMENT_TAG_TRACKING_JAVASCRIPT"
+      "A String",
+    ],
+    "paymentApproved": True or False, # Whether payment was approved for this placement. This is a read-only field relevant only to publisher-paid placements.
+    "tagSetting": { # Tag Settings # Tag settings for this placement.
+      "includeClickThroughUrls": True or False, # Whether static landing page URLs should be included in the tags. This setting applies only to placements.
+      "includeClickTracking": True or False, # Whether click-tracking string should be included in the tags.
+      "additionalKeyValues": "A String", # Additional key-values to be included in tags. Each key-value pair must be of the form key=value, and pairs must be separated by a semicolon (;). Keys and values must not contain commas. For example, id=2;color=red is a valid value for this field.
+      "keywordOption": "A String", # Option specifying how keywords are embedded in ad tags. This setting can be used to specify whether keyword placeholders are inserted in placement tags for this site. Publishers can then add keywords to those placeholders.
+    },
+    "contentCategoryId": "A String", # ID of the content category assigned to this placement.
+    "externalId": "A String", # External ID for this placement.
+    "idDimensionValue": { # Represents a DimensionValue resource. # Dimension value for the ID of this placement. This is a read-only, auto-generated field.
+      "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+      "value": "A String", # The value of the dimension.
+      "dimensionName": "A String", # The name of the dimension.
+      "etag": "A String", # The eTag of this response for caching purposes.
+      "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+      "id": "A String", # The ID associated with the value if available.
+    },
+    "size": { # Represents the dimensions of ads, placements, creatives, or creative assets. # Size associated with this placement. When inserting or updating a placement, only the size ID field is used. This field is required on insertion.
+      "width": 42, # Width of this size.
+      "kind": "dfareporting#size", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#size".
+      "iab": True or False, # IAB standard size. This is a read-only, auto-generated field.
+      "id": "A String", # ID of this size. This is a read-only, auto-generated field.
+      "height": 42, # Height of this size.
+    },
+    "sslRequired": True or False, # Whether creatives assigned to this placement must be SSL-compliant.
+    "status": "A String", # Third-party placement status.
+    "campaignIdDimensionValue": { # Represents a DimensionValue resource. # Dimension value for the ID of the campaign. This is a read-only, auto-generated field.
+      "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+      "value": "A String", # The value of the dimension.
+      "dimensionName": "A String", # The name of the dimension.
+      "etag": "A String", # The eTag of this response for caching purposes.
+      "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+      "id": "A String", # The ID associated with the value if available.
+    },
+    "primary": True or False, # Whether this placement is the primary placement of a roadblock (placement group). You cannot change this field from true to false. Setting this field to true will automatically set the primary field on the original primary placement of the roadblock to false, and it will automatically set the roadblock's primaryPlacementId field to the ID of this placement.
+    "placementGroupId": "A String", # ID of this placement's group, if applicable.
+    "createInfo": { # Modification timestamp. # Information about the creation of this placement. This is a read-only field.
+      "time": "A String", # Timestamp of the last change in milliseconds since epoch.
+    },
+    "siteId": "A String", # Site ID associated with this placement. On insert, you must set either this field or the directorySiteId field to specify the site associated with this placement. This is a required field that is read-only after insertion.
+    "siteIdDimensionValue": { # Represents a DimensionValue resource. # Dimension value for the ID of the site. This is a read-only, auto-generated field.
+      "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+      "value": "A String", # The value of the dimension.
+      "dimensionName": "A String", # The name of the dimension.
+      "etag": "A String", # The eTag of this response for caching purposes.
+      "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+      "id": "A String", # The ID associated with the value if available.
+    },
+    "compatibility": "A String", # Placement compatibility. DISPLAY and DISPLAY_INTERSTITIAL refer to rendering on desktop, on mobile devices or in mobile apps for regular or interstitial ads respectively. APP and APP_INTERSTITIAL are no longer allowed for new placement insertions. Instead, use DISPLAY or DISPLAY_INTERSTITIAL. IN_STREAM_VIDEO refers to rendering in in-stream video ads developed with the VAST standard. This field is required on insertion.
+    "placementStrategyId": "A String", # ID of the placement strategy assigned to this placement.
+    "placementGroupIdDimensionValue": { # Represents a DimensionValue resource. # Dimension value for the ID of the placement group. This is a read-only, auto-generated field.
+      "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+      "value": "A String", # The value of the dimension.
+      "dimensionName": "A String", # The name of the dimension.
+      "etag": "A String", # The eTag of this response for caching purposes.
+      "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+      "id": "A String", # The ID associated with the value if available.
+    },
+    "kind": "dfareporting#placement", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#placement".
+    "subaccountId": "A String", # Subaccount ID of this placement. This field can be left blank.
+    "name": "A String", # Name of this placement.This is a required field and must be less than 256 characters long.
+    "lookbackConfiguration": { # Lookback configuration settings. # Lookback window settings for this placement.
+      "clickDuration": 42, # Lookback window, in days, from the last time a given user clicked on one of your ads. If you enter 0, clicks will not be considered as triggering events for floodlight tracking. If you leave this field blank, the default value for your account will be used.
+      "postImpressionActivitiesDuration": 42, # Lookback window, in days, from the last time a given user viewed one of your ads. If you enter 0, impressions will not be considered as triggering events for floodlight tracking. If you leave this field blank, the default value for your account will be used.
+    },
+    "lastModifiedInfo": { # Modification timestamp. # Information about the most recent modification of this placement. This is a read-only field.
+      "time": "A String", # Timestamp of the last change in milliseconds since epoch.
+    },
+    "pricingSchedule": { # Pricing Schedule # Pricing schedule of this placement. This field is required on insertion, specifically subfields startDate, endDate and pricingType.
+      "startDate": "A String", # Placement start date. This date must be later than, or the same day as, the campaign start date. The hours, minutes, and seconds of the start date should not be set, as doing so will result in an error. This field is required on insertion.
+      "endDate": "A String", # Placement end date. This date must be later than, or the same day as, the placement start date, but not later than the campaign end date. If, for example, you set 6/25/2015 as both the start and end dates, the effective placement date is just that day only, 6/25/2015. The hours, minutes, and seconds of the end date should not be set, as doing so will result in an error. This field is required on insertion.
+      "flighted": True or False, # Whether this placement is flighted. If true, pricing periods will be computed automatically.
+      "disregardOverdelivery": True or False, # Whether cap costs are ignored by ad serving.
+      "capCostOption": "A String", # Placement cap cost option.
+      "pricingPeriods": [ # Pricing periods for this placement.
+        { # Pricing Period
+          "units": "A String", # Units of this pricing period.
+          "rateOrCostNanos": "A String", # Rate or cost of this pricing period.
+          "startDate": "A String", # Pricing period start date. This date must be later than, or the same day as, the placement start date. The hours, minutes, and seconds of the start date should not be set, as doing so will result in an error.
+          "endDate": "A String", # Pricing period end date. This date must be later than, or the same day as, the pricing period start date, but not later than the placement end date. The period end date can be the same date as the period start date. If, for example, you set 6/25/2015 as both the start and end dates, the effective pricing period date is just that day only, 6/25/2015. The hours, minutes, and seconds of the end date should not be set, as doing so will result in an error.
+          "pricingComment": "A String", # Comments for this pricing period.
+        },
+      ],
+      "pricingType": "A String", # Placement pricing type. This field is required on insertion.
+      "testingStartDate": "A String", # Testing start date of this placement. The hours, minutes, and seconds of the start date should not be set, as doing so will result in an error.
+      "floodlightActivityId": "A String", # Floodlight activity ID associated with this placement. This field should be set when placement pricing type is set to PRICING_TYPE_CPA.
+    },
+    "vpaidAdapterChoice": "A String", # VPAID adapter setting for this placement. Controls which VPAID format the measurement adapter will use for in-stream video creatives assigned to this placement.
+  }
+
+
+Returns:
+  An object of the form:
+
+    { # Contains properties of a placement.
+      "comment": "A String", # Comments for this placement.
+      "videoActiveViewOptOut": True or False, # Whether Verification and ActiveView are disabled for in-stream video creatives for this placement. The same setting videoActiveViewOptOut exists on the site level -- the opt out occurs if either of these settings are true. These settings are distinct from DirectorySites.settings.activeViewOptOut or Sites.siteSettings.activeViewOptOut which only apply to display ads. However, Accounts.activeViewOptOut opts out both video traffic, as well as display ads, from Verification and ActiveView.
+      "campaignId": "A String", # Campaign ID of this placement. This field is a required field on insertion.
+      "paymentSource": "A String", # Payment source for this placement. This is a required field that is read-only after insertion.
+      "directorySiteIdDimensionValue": { # Represents a DimensionValue resource. # Dimension value for the ID of the directory site. This is a read-only, auto-generated field.
+        "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+        "value": "A String", # The value of the dimension.
+        "dimensionName": "A String", # The name of the dimension.
+        "etag": "A String", # The eTag of this response for caching purposes.
+        "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+        "id": "A String", # The ID associated with the value if available.
+      },
+      "advertiserId": "A String", # Advertiser ID of this placement. This field can be left blank.
+      "keyName": "A String", # Key name of this placement. This is a read-only, auto-generated field.
+      "directorySiteId": "A String", # Directory site ID of this placement. On insert, you must set either this field or the siteId field to specify the site associated with this placement. This is a required field that is read-only after insertion.
+      "advertiserIdDimensionValue": { # Represents a DimensionValue resource. # Dimension value for the ID of the advertiser. This is a read-only, auto-generated field.
+        "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+        "value": "A String", # The value of the dimension.
+        "dimensionName": "A String", # The name of the dimension.
+        "etag": "A String", # The eTag of this response for caching purposes.
+        "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+        "id": "A String", # The ID associated with the value if available.
+      },
+      "id": "A String", # ID of this placement. This is a read-only, auto-generated field.
+      "accountId": "A String", # Account ID of this placement. This field can be left blank.
+      "archived": True or False, # Whether this placement is archived.
+      "videoSettings": { # Video Settings # A collection of settings which affect video creatives served through this placement. Applicable to placements with IN_STREAM_VIDEO compatibility.
+        "skippableSettings": { # Skippable Settings # Settings for the skippability of video creatives served to this placement. If this object is provided, the creative-level skippable settings will be overridden.
+          "skippable": True or False, # Whether the user can skip creatives served to this placement.
+          "kind": "dfareporting#skippableSetting", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#skippableSetting".
+          "skipOffset": { # Video Offset # Amount of time to play videos served to this placement before the skip button should appear. Applicable when skippable is true.
+            "offsetPercentage": 42, # Duration, as a percentage of video duration. Do not set when offsetSeconds is set.
+            "offsetSeconds": 42, # Duration, in seconds. Do not set when offsetPercentage is set.
+          },
+          "progressOffset": { # Video Offset # Amount of time to play videos served to this placement before counting a view. Applicable when skippable is true.
+            "offsetPercentage": 42, # Duration, as a percentage of video duration. Do not set when offsetSeconds is set.
+            "offsetSeconds": 42, # Duration, in seconds. Do not set when offsetPercentage is set.
+          },
+        },
+        "kind": "dfareporting#videoSettings", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#videoSettings".
+        "companionSettings": { # Companion Settings # Settings for the companion creatives of video creatives served to this placement.
+          "kind": "dfareporting#companionSetting", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#companionSetting".
+          "companionsDisabled": True or False, # Whether companions are disabled for this placement.
+          "imageOnly": True or False, # Whether to serve only static images as companions.
+          "enabledSizes": [ # Whitelist of companion sizes to be served to this placement. Set this list to null or empty to serve all companion sizes.
+            { # Represents the dimensions of ads, placements, creatives, or creative assets.
+              "width": 42, # Width of this size.
+              "kind": "dfareporting#size", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#size".
+              "iab": True or False, # IAB standard size. This is a read-only, auto-generated field.
+              "id": "A String", # ID of this size. This is a read-only, auto-generated field.
+              "height": 42, # Height of this size.
+            },
+          ],
+        },
+        "transcodeSettings": { # Transcode Settings # Settings for the transcodes of video creatives served to this placement. If this object is provided, the creative-level transcode settings will be overridden.
+          "kind": "dfareporting#transcodeSetting", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#transcodeSetting".
+          "enabledVideoFormats": [ # Whitelist of video formats to be served to this placement. Set this list to null or empty to serve all video formats.
+            42,
+          ],
+        },
+      },
+      "publisherUpdateInfo": { # Modification timestamp. # Information about the last publisher update. This is a read-only field.
+        "time": "A String", # Timestamp of the last change in milliseconds since epoch.
+      },
+      "tagFormats": [ # Tag formats to generate for this placement. This field is required on insertion.
+          # Acceptable values are:
+          # - "PLACEMENT_TAG_STANDARD"
+          # - "PLACEMENT_TAG_IFRAME_JAVASCRIPT"
+          # - "PLACEMENT_TAG_IFRAME_ILAYER"
+          # - "PLACEMENT_TAG_INTERNAL_REDIRECT"
+          # - "PLACEMENT_TAG_JAVASCRIPT"
+          # - "PLACEMENT_TAG_INTERSTITIAL_IFRAME_JAVASCRIPT"
+          # - "PLACEMENT_TAG_INTERSTITIAL_INTERNAL_REDIRECT"
+          # - "PLACEMENT_TAG_INTERSTITIAL_JAVASCRIPT"
+          # - "PLACEMENT_TAG_CLICK_COMMANDS"
+          # - "PLACEMENT_TAG_INSTREAM_VIDEO_PREFETCH"
+          # - "PLACEMENT_TAG_TRACKING"
+          # - "PLACEMENT_TAG_TRACKING_IFRAME"
+          # - "PLACEMENT_TAG_TRACKING_JAVASCRIPT"
+        "A String",
+      ],
+      "paymentApproved": True or False, # Whether payment was approved for this placement. This is a read-only field relevant only to publisher-paid placements.
+      "tagSetting": { # Tag Settings # Tag settings for this placement.
+        "includeClickThroughUrls": True or False, # Whether static landing page URLs should be included in the tags. This setting applies only to placements.
+        "includeClickTracking": True or False, # Whether click-tracking string should be included in the tags.
+        "additionalKeyValues": "A String", # Additional key-values to be included in tags. Each key-value pair must be of the form key=value, and pairs must be separated by a semicolon (;). Keys and values must not contain commas. For example, id=2;color=red is a valid value for this field.
+        "keywordOption": "A String", # Option specifying how keywords are embedded in ad tags. This setting can be used to specify whether keyword placeholders are inserted in placement tags for this site. Publishers can then add keywords to those placeholders.
+      },
+      "contentCategoryId": "A String", # ID of the content category assigned to this placement.
+      "externalId": "A String", # External ID for this placement.
+      "idDimensionValue": { # Represents a DimensionValue resource. # Dimension value for the ID of this placement. This is a read-only, auto-generated field.
+        "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+        "value": "A String", # The value of the dimension.
+        "dimensionName": "A String", # The name of the dimension.
+        "etag": "A String", # The eTag of this response for caching purposes.
+        "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+        "id": "A String", # The ID associated with the value if available.
+      },
+      "size": { # Represents the dimensions of ads, placements, creatives, or creative assets. # Size associated with this placement. When inserting or updating a placement, only the size ID field is used. This field is required on insertion.
+        "width": 42, # Width of this size.
+        "kind": "dfareporting#size", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#size".
+        "iab": True or False, # IAB standard size. This is a read-only, auto-generated field.
+        "id": "A String", # ID of this size. This is a read-only, auto-generated field.
+        "height": 42, # Height of this size.
+      },
+      "sslRequired": True or False, # Whether creatives assigned to this placement must be SSL-compliant.
+      "status": "A String", # Third-party placement status.
+      "campaignIdDimensionValue": { # Represents a DimensionValue resource. # Dimension value for the ID of the campaign. This is a read-only, auto-generated field.
+        "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+        "value": "A String", # The value of the dimension.
+        "dimensionName": "A String", # The name of the dimension.
+        "etag": "A String", # The eTag of this response for caching purposes.
+        "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+        "id": "A String", # The ID associated with the value if available.
+      },
+      "primary": True or False, # Whether this placement is the primary placement of a roadblock (placement group). You cannot change this field from true to false. Setting this field to true will automatically set the primary field on the original primary placement of the roadblock to false, and it will automatically set the roadblock's primaryPlacementId field to the ID of this placement.
+      "placementGroupId": "A String", # ID of this placement's group, if applicable.
+      "createInfo": { # Modification timestamp. # Information about the creation of this placement. This is a read-only field.
+        "time": "A String", # Timestamp of the last change in milliseconds since epoch.
+      },
+      "siteId": "A String", # Site ID associated with this placement. On insert, you must set either this field or the directorySiteId field to specify the site associated with this placement. This is a required field that is read-only after insertion.
+      "siteIdDimensionValue": { # Represents a DimensionValue resource. # Dimension value for the ID of the site. This is a read-only, auto-generated field.
+        "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+        "value": "A String", # The value of the dimension.
+        "dimensionName": "A String", # The name of the dimension.
+        "etag": "A String", # The eTag of this response for caching purposes.
+        "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+        "id": "A String", # The ID associated with the value if available.
+      },
+      "compatibility": "A String", # Placement compatibility. DISPLAY and DISPLAY_INTERSTITIAL refer to rendering on desktop, on mobile devices or in mobile apps for regular or interstitial ads respectively. APP and APP_INTERSTITIAL are no longer allowed for new placement insertions. Instead, use DISPLAY or DISPLAY_INTERSTITIAL. IN_STREAM_VIDEO refers to rendering in in-stream video ads developed with the VAST standard. This field is required on insertion.
+      "placementStrategyId": "A String", # ID of the placement strategy assigned to this placement.
+      "placementGroupIdDimensionValue": { # Represents a DimensionValue resource. # Dimension value for the ID of the placement group. This is a read-only, auto-generated field.
+        "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+        "value": "A String", # The value of the dimension.
+        "dimensionName": "A String", # The name of the dimension.
+        "etag": "A String", # The eTag of this response for caching purposes.
+        "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+        "id": "A String", # The ID associated with the value if available.
+      },
+      "kind": "dfareporting#placement", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#placement".
+      "subaccountId": "A String", # Subaccount ID of this placement. This field can be left blank.
+      "name": "A String", # Name of this placement.This is a required field and must be less than 256 characters long.
+      "lookbackConfiguration": { # Lookback configuration settings. # Lookback window settings for this placement.
+        "clickDuration": 42, # Lookback window, in days, from the last time a given user clicked on one of your ads. If you enter 0, clicks will not be considered as triggering events for floodlight tracking. If you leave this field blank, the default value for your account will be used.
+        "postImpressionActivitiesDuration": 42, # Lookback window, in days, from the last time a given user viewed one of your ads. If you enter 0, impressions will not be considered as triggering events for floodlight tracking. If you leave this field blank, the default value for your account will be used.
+      },
+      "lastModifiedInfo": { # Modification timestamp. # Information about the most recent modification of this placement. This is a read-only field.
+        "time": "A String", # Timestamp of the last change in milliseconds since epoch.
+      },
+      "pricingSchedule": { # Pricing Schedule # Pricing schedule of this placement. This field is required on insertion, specifically subfields startDate, endDate and pricingType.
+        "startDate": "A String", # Placement start date. This date must be later than, or the same day as, the campaign start date. The hours, minutes, and seconds of the start date should not be set, as doing so will result in an error. This field is required on insertion.
+        "endDate": "A String", # Placement end date. This date must be later than, or the same day as, the placement start date, but not later than the campaign end date. If, for example, you set 6/25/2015 as both the start and end dates, the effective placement date is just that day only, 6/25/2015. The hours, minutes, and seconds of the end date should not be set, as doing so will result in an error. This field is required on insertion.
+        "flighted": True or False, # Whether this placement is flighted. If true, pricing periods will be computed automatically.
+        "disregardOverdelivery": True or False, # Whether cap costs are ignored by ad serving.
+        "capCostOption": "A String", # Placement cap cost option.
+        "pricingPeriods": [ # Pricing periods for this placement.
+          { # Pricing Period
+            "units": "A String", # Units of this pricing period.
+            "rateOrCostNanos": "A String", # Rate or cost of this pricing period.
+            "startDate": "A String", # Pricing period start date. This date must be later than, or the same day as, the placement start date. The hours, minutes, and seconds of the start date should not be set, as doing so will result in an error.
+            "endDate": "A String", # Pricing period end date. This date must be later than, or the same day as, the pricing period start date, but not later than the placement end date. The period end date can be the same date as the period start date. If, for example, you set 6/25/2015 as both the start and end dates, the effective pricing period date is just that day only, 6/25/2015. The hours, minutes, and seconds of the end date should not be set, as doing so will result in an error.
+            "pricingComment": "A String", # Comments for this pricing period.
+          },
+        ],
+        "pricingType": "A String", # Placement pricing type. This field is required on insertion.
+        "testingStartDate": "A String", # Testing start date of this placement. The hours, minutes, and seconds of the start date should not be set, as doing so will result in an error.
+        "floodlightActivityId": "A String", # Floodlight activity ID associated with this placement. This field should be set when placement pricing type is set to PRICING_TYPE_CPA.
+      },
+      "vpaidAdapterChoice": "A String", # VPAID adapter setting for this placement. Controls which VPAID format the measurement adapter will use for in-stream video creatives assigned to this placement.
+    }</pre>
+</div>
+
+<div class="method">
+    <code class="details" id="update">update(profileId, body)</code>
+  <pre>Updates an existing placement.
+
+Args:
+  profileId: string, User profile ID associated with this request. (required)
+  body: object, The request body. (required)
+    The object takes the form of:
+
+{ # Contains properties of a placement.
+    "comment": "A String", # Comments for this placement.
+    "videoActiveViewOptOut": True or False, # Whether Verification and ActiveView are disabled for in-stream video creatives for this placement. The same setting videoActiveViewOptOut exists on the site level -- the opt out occurs if either of these settings are true. These settings are distinct from DirectorySites.settings.activeViewOptOut or Sites.siteSettings.activeViewOptOut which only apply to display ads. However, Accounts.activeViewOptOut opts out both video traffic, as well as display ads, from Verification and ActiveView.
+    "campaignId": "A String", # Campaign ID of this placement. This field is a required field on insertion.
+    "paymentSource": "A String", # Payment source for this placement. This is a required field that is read-only after insertion.
+    "directorySiteIdDimensionValue": { # Represents a DimensionValue resource. # Dimension value for the ID of the directory site. This is a read-only, auto-generated field.
+      "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+      "value": "A String", # The value of the dimension.
+      "dimensionName": "A String", # The name of the dimension.
+      "etag": "A String", # The eTag of this response for caching purposes.
+      "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+      "id": "A String", # The ID associated with the value if available.
+    },
+    "advertiserId": "A String", # Advertiser ID of this placement. This field can be left blank.
+    "keyName": "A String", # Key name of this placement. This is a read-only, auto-generated field.
+    "directorySiteId": "A String", # Directory site ID of this placement. On insert, you must set either this field or the siteId field to specify the site associated with this placement. This is a required field that is read-only after insertion.
+    "advertiserIdDimensionValue": { # Represents a DimensionValue resource. # Dimension value for the ID of the advertiser. This is a read-only, auto-generated field.
+      "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+      "value": "A String", # The value of the dimension.
+      "dimensionName": "A String", # The name of the dimension.
+      "etag": "A String", # The eTag of this response for caching purposes.
+      "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+      "id": "A String", # The ID associated with the value if available.
+    },
+    "id": "A String", # ID of this placement. This is a read-only, auto-generated field.
+    "accountId": "A String", # Account ID of this placement. This field can be left blank.
+    "archived": True or False, # Whether this placement is archived.
+    "videoSettings": { # Video Settings # A collection of settings which affect video creatives served through this placement. Applicable to placements with IN_STREAM_VIDEO compatibility.
+      "skippableSettings": { # Skippable Settings # Settings for the skippability of video creatives served to this placement. If this object is provided, the creative-level skippable settings will be overridden.
+        "skippable": True or False, # Whether the user can skip creatives served to this placement.
+        "kind": "dfareporting#skippableSetting", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#skippableSetting".
+        "skipOffset": { # Video Offset # Amount of time to play videos served to this placement before the skip button should appear. Applicable when skippable is true.
+          "offsetPercentage": 42, # Duration, as a percentage of video duration. Do not set when offsetSeconds is set.
+          "offsetSeconds": 42, # Duration, in seconds. Do not set when offsetPercentage is set.
+        },
+        "progressOffset": { # Video Offset # Amount of time to play videos served to this placement before counting a view. Applicable when skippable is true.
+          "offsetPercentage": 42, # Duration, as a percentage of video duration. Do not set when offsetSeconds is set.
+          "offsetSeconds": 42, # Duration, in seconds. Do not set when offsetPercentage is set.
+        },
+      },
+      "kind": "dfareporting#videoSettings", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#videoSettings".
+      "companionSettings": { # Companion Settings # Settings for the companion creatives of video creatives served to this placement.
+        "kind": "dfareporting#companionSetting", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#companionSetting".
+        "companionsDisabled": True or False, # Whether companions are disabled for this placement.
+        "imageOnly": True or False, # Whether to serve only static images as companions.
+        "enabledSizes": [ # Whitelist of companion sizes to be served to this placement. Set this list to null or empty to serve all companion sizes.
+          { # Represents the dimensions of ads, placements, creatives, or creative assets.
+            "width": 42, # Width of this size.
+            "kind": "dfareporting#size", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#size".
+            "iab": True or False, # IAB standard size. This is a read-only, auto-generated field.
+            "id": "A String", # ID of this size. This is a read-only, auto-generated field.
+            "height": 42, # Height of this size.
+          },
+        ],
+      },
+      "transcodeSettings": { # Transcode Settings # Settings for the transcodes of video creatives served to this placement. If this object is provided, the creative-level transcode settings will be overridden.
+        "kind": "dfareporting#transcodeSetting", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#transcodeSetting".
+        "enabledVideoFormats": [ # Whitelist of video formats to be served to this placement. Set this list to null or empty to serve all video formats.
+          42,
+        ],
+      },
+    },
+    "publisherUpdateInfo": { # Modification timestamp. # Information about the last publisher update. This is a read-only field.
+      "time": "A String", # Timestamp of the last change in milliseconds since epoch.
+    },
+    "tagFormats": [ # Tag formats to generate for this placement. This field is required on insertion.
+        # Acceptable values are:
+        # - "PLACEMENT_TAG_STANDARD"
+        # - "PLACEMENT_TAG_IFRAME_JAVASCRIPT"
+        # - "PLACEMENT_TAG_IFRAME_ILAYER"
+        # - "PLACEMENT_TAG_INTERNAL_REDIRECT"
+        # - "PLACEMENT_TAG_JAVASCRIPT"
+        # - "PLACEMENT_TAG_INTERSTITIAL_IFRAME_JAVASCRIPT"
+        # - "PLACEMENT_TAG_INTERSTITIAL_INTERNAL_REDIRECT"
+        # - "PLACEMENT_TAG_INTERSTITIAL_JAVASCRIPT"
+        # - "PLACEMENT_TAG_CLICK_COMMANDS"
+        # - "PLACEMENT_TAG_INSTREAM_VIDEO_PREFETCH"
+        # - "PLACEMENT_TAG_TRACKING"
+        # - "PLACEMENT_TAG_TRACKING_IFRAME"
+        # - "PLACEMENT_TAG_TRACKING_JAVASCRIPT"
+      "A String",
+    ],
+    "paymentApproved": True or False, # Whether payment was approved for this placement. This is a read-only field relevant only to publisher-paid placements.
+    "tagSetting": { # Tag Settings # Tag settings for this placement.
+      "includeClickThroughUrls": True or False, # Whether static landing page URLs should be included in the tags. This setting applies only to placements.
+      "includeClickTracking": True or False, # Whether click-tracking string should be included in the tags.
+      "additionalKeyValues": "A String", # Additional key-values to be included in tags. Each key-value pair must be of the form key=value, and pairs must be separated by a semicolon (;). Keys and values must not contain commas. For example, id=2;color=red is a valid value for this field.
+      "keywordOption": "A String", # Option specifying how keywords are embedded in ad tags. This setting can be used to specify whether keyword placeholders are inserted in placement tags for this site. Publishers can then add keywords to those placeholders.
+    },
+    "contentCategoryId": "A String", # ID of the content category assigned to this placement.
+    "externalId": "A String", # External ID for this placement.
+    "idDimensionValue": { # Represents a DimensionValue resource. # Dimension value for the ID of this placement. This is a read-only, auto-generated field.
+      "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+      "value": "A String", # The value of the dimension.
+      "dimensionName": "A String", # The name of the dimension.
+      "etag": "A String", # The eTag of this response for caching purposes.
+      "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+      "id": "A String", # The ID associated with the value if available.
+    },
+    "size": { # Represents the dimensions of ads, placements, creatives, or creative assets. # Size associated with this placement. When inserting or updating a placement, only the size ID field is used. This field is required on insertion.
+      "width": 42, # Width of this size.
+      "kind": "dfareporting#size", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#size".
+      "iab": True or False, # IAB standard size. This is a read-only, auto-generated field.
+      "id": "A String", # ID of this size. This is a read-only, auto-generated field.
+      "height": 42, # Height of this size.
+    },
+    "sslRequired": True or False, # Whether creatives assigned to this placement must be SSL-compliant.
+    "status": "A String", # Third-party placement status.
+    "campaignIdDimensionValue": { # Represents a DimensionValue resource. # Dimension value for the ID of the campaign. This is a read-only, auto-generated field.
+      "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+      "value": "A String", # The value of the dimension.
+      "dimensionName": "A String", # The name of the dimension.
+      "etag": "A String", # The eTag of this response for caching purposes.
+      "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+      "id": "A String", # The ID associated with the value if available.
+    },
+    "primary": True or False, # Whether this placement is the primary placement of a roadblock (placement group). You cannot change this field from true to false. Setting this field to true will automatically set the primary field on the original primary placement of the roadblock to false, and it will automatically set the roadblock's primaryPlacementId field to the ID of this placement.
+    "placementGroupId": "A String", # ID of this placement's group, if applicable.
+    "createInfo": { # Modification timestamp. # Information about the creation of this placement. This is a read-only field.
+      "time": "A String", # Timestamp of the last change in milliseconds since epoch.
+    },
+    "siteId": "A String", # Site ID associated with this placement. On insert, you must set either this field or the directorySiteId field to specify the site associated with this placement. This is a required field that is read-only after insertion.
+    "siteIdDimensionValue": { # Represents a DimensionValue resource. # Dimension value for the ID of the site. This is a read-only, auto-generated field.
+      "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+      "value": "A String", # The value of the dimension.
+      "dimensionName": "A String", # The name of the dimension.
+      "etag": "A String", # The eTag of this response for caching purposes.
+      "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+      "id": "A String", # The ID associated with the value if available.
+    },
+    "compatibility": "A String", # Placement compatibility. DISPLAY and DISPLAY_INTERSTITIAL refer to rendering on desktop, on mobile devices or in mobile apps for regular or interstitial ads respectively. APP and APP_INTERSTITIAL are no longer allowed for new placement insertions. Instead, use DISPLAY or DISPLAY_INTERSTITIAL. IN_STREAM_VIDEO refers to rendering in in-stream video ads developed with the VAST standard. This field is required on insertion.
+    "placementStrategyId": "A String", # ID of the placement strategy assigned to this placement.
+    "placementGroupIdDimensionValue": { # Represents a DimensionValue resource. # Dimension value for the ID of the placement group. This is a read-only, auto-generated field.
+      "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+      "value": "A String", # The value of the dimension.
+      "dimensionName": "A String", # The name of the dimension.
+      "etag": "A String", # The eTag of this response for caching purposes.
+      "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+      "id": "A String", # The ID associated with the value if available.
+    },
+    "kind": "dfareporting#placement", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#placement".
+    "subaccountId": "A String", # Subaccount ID of this placement. This field can be left blank.
+    "name": "A String", # Name of this placement.This is a required field and must be less than 256 characters long.
+    "lookbackConfiguration": { # Lookback configuration settings. # Lookback window settings for this placement.
+      "clickDuration": 42, # Lookback window, in days, from the last time a given user clicked on one of your ads. If you enter 0, clicks will not be considered as triggering events for floodlight tracking. If you leave this field blank, the default value for your account will be used.
+      "postImpressionActivitiesDuration": 42, # Lookback window, in days, from the last time a given user viewed one of your ads. If you enter 0, impressions will not be considered as triggering events for floodlight tracking. If you leave this field blank, the default value for your account will be used.
+    },
+    "lastModifiedInfo": { # Modification timestamp. # Information about the most recent modification of this placement. This is a read-only field.
+      "time": "A String", # Timestamp of the last change in milliseconds since epoch.
+    },
+    "pricingSchedule": { # Pricing Schedule # Pricing schedule of this placement. This field is required on insertion, specifically subfields startDate, endDate and pricingType.
+      "startDate": "A String", # Placement start date. This date must be later than, or the same day as, the campaign start date. The hours, minutes, and seconds of the start date should not be set, as doing so will result in an error. This field is required on insertion.
+      "endDate": "A String", # Placement end date. This date must be later than, or the same day as, the placement start date, but not later than the campaign end date. If, for example, you set 6/25/2015 as both the start and end dates, the effective placement date is just that day only, 6/25/2015. The hours, minutes, and seconds of the end date should not be set, as doing so will result in an error. This field is required on insertion.
+      "flighted": True or False, # Whether this placement is flighted. If true, pricing periods will be computed automatically.
+      "disregardOverdelivery": True or False, # Whether cap costs are ignored by ad serving.
+      "capCostOption": "A String", # Placement cap cost option.
+      "pricingPeriods": [ # Pricing periods for this placement.
+        { # Pricing Period
+          "units": "A String", # Units of this pricing period.
+          "rateOrCostNanos": "A String", # Rate or cost of this pricing period.
+          "startDate": "A String", # Pricing period start date. This date must be later than, or the same day as, the placement start date. The hours, minutes, and seconds of the start date should not be set, as doing so will result in an error.
+          "endDate": "A String", # Pricing period end date. This date must be later than, or the same day as, the pricing period start date, but not later than the placement end date. The period end date can be the same date as the period start date. If, for example, you set 6/25/2015 as both the start and end dates, the effective pricing period date is just that day only, 6/25/2015. The hours, minutes, and seconds of the end date should not be set, as doing so will result in an error.
+          "pricingComment": "A String", # Comments for this pricing period.
+        },
+      ],
+      "pricingType": "A String", # Placement pricing type. This field is required on insertion.
+      "testingStartDate": "A String", # Testing start date of this placement. The hours, minutes, and seconds of the start date should not be set, as doing so will result in an error.
+      "floodlightActivityId": "A String", # Floodlight activity ID associated with this placement. This field should be set when placement pricing type is set to PRICING_TYPE_CPA.
+    },
+    "vpaidAdapterChoice": "A String", # VPAID adapter setting for this placement. Controls which VPAID format the measurement adapter will use for in-stream video creatives assigned to this placement.
+  }
+
+
+Returns:
+  An object of the form:
+
+    { # Contains properties of a placement.
+      "comment": "A String", # Comments for this placement.
+      "videoActiveViewOptOut": True or False, # Whether Verification and ActiveView are disabled for in-stream video creatives for this placement. The same setting videoActiveViewOptOut exists on the site level -- the opt out occurs if either of these settings are true. These settings are distinct from DirectorySites.settings.activeViewOptOut or Sites.siteSettings.activeViewOptOut which only apply to display ads. However, Accounts.activeViewOptOut opts out both video traffic, as well as display ads, from Verification and ActiveView.
+      "campaignId": "A String", # Campaign ID of this placement. This field is a required field on insertion.
+      "paymentSource": "A String", # Payment source for this placement. This is a required field that is read-only after insertion.
+      "directorySiteIdDimensionValue": { # Represents a DimensionValue resource. # Dimension value for the ID of the directory site. This is a read-only, auto-generated field.
+        "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+        "value": "A String", # The value of the dimension.
+        "dimensionName": "A String", # The name of the dimension.
+        "etag": "A String", # The eTag of this response for caching purposes.
+        "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+        "id": "A String", # The ID associated with the value if available.
+      },
+      "advertiserId": "A String", # Advertiser ID of this placement. This field can be left blank.
+      "keyName": "A String", # Key name of this placement. This is a read-only, auto-generated field.
+      "directorySiteId": "A String", # Directory site ID of this placement. On insert, you must set either this field or the siteId field to specify the site associated with this placement. This is a required field that is read-only after insertion.
+      "advertiserIdDimensionValue": { # Represents a DimensionValue resource. # Dimension value for the ID of the advertiser. This is a read-only, auto-generated field.
+        "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+        "value": "A String", # The value of the dimension.
+        "dimensionName": "A String", # The name of the dimension.
+        "etag": "A String", # The eTag of this response for caching purposes.
+        "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+        "id": "A String", # The ID associated with the value if available.
+      },
+      "id": "A String", # ID of this placement. This is a read-only, auto-generated field.
+      "accountId": "A String", # Account ID of this placement. This field can be left blank.
+      "archived": True or False, # Whether this placement is archived.
+      "videoSettings": { # Video Settings # A collection of settings which affect video creatives served through this placement. Applicable to placements with IN_STREAM_VIDEO compatibility.
+        "skippableSettings": { # Skippable Settings # Settings for the skippability of video creatives served to this placement. If this object is provided, the creative-level skippable settings will be overridden.
+          "skippable": True or False, # Whether the user can skip creatives served to this placement.
+          "kind": "dfareporting#skippableSetting", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#skippableSetting".
+          "skipOffset": { # Video Offset # Amount of time to play videos served to this placement before the skip button should appear. Applicable when skippable is true.
+            "offsetPercentage": 42, # Duration, as a percentage of video duration. Do not set when offsetSeconds is set.
+            "offsetSeconds": 42, # Duration, in seconds. Do not set when offsetPercentage is set.
+          },
+          "progressOffset": { # Video Offset # Amount of time to play videos served to this placement before counting a view. Applicable when skippable is true.
+            "offsetPercentage": 42, # Duration, as a percentage of video duration. Do not set when offsetSeconds is set.
+            "offsetSeconds": 42, # Duration, in seconds. Do not set when offsetPercentage is set.
+          },
+        },
+        "kind": "dfareporting#videoSettings", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#videoSettings".
+        "companionSettings": { # Companion Settings # Settings for the companion creatives of video creatives served to this placement.
+          "kind": "dfareporting#companionSetting", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#companionSetting".
+          "companionsDisabled": True or False, # Whether companions are disabled for this placement.
+          "imageOnly": True or False, # Whether to serve only static images as companions.
+          "enabledSizes": [ # Whitelist of companion sizes to be served to this placement. Set this list to null or empty to serve all companion sizes.
+            { # Represents the dimensions of ads, placements, creatives, or creative assets.
+              "width": 42, # Width of this size.
+              "kind": "dfareporting#size", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#size".
+              "iab": True or False, # IAB standard size. This is a read-only, auto-generated field.
+              "id": "A String", # ID of this size. This is a read-only, auto-generated field.
+              "height": 42, # Height of this size.
+            },
+          ],
+        },
+        "transcodeSettings": { # Transcode Settings # Settings for the transcodes of video creatives served to this placement. If this object is provided, the creative-level transcode settings will be overridden.
+          "kind": "dfareporting#transcodeSetting", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#transcodeSetting".
+          "enabledVideoFormats": [ # Whitelist of video formats to be served to this placement. Set this list to null or empty to serve all video formats.
+            42,
+          ],
+        },
+      },
+      "publisherUpdateInfo": { # Modification timestamp. # Information about the last publisher update. This is a read-only field.
+        "time": "A String", # Timestamp of the last change in milliseconds since epoch.
+      },
+      "tagFormats": [ # Tag formats to generate for this placement. This field is required on insertion.
+          # Acceptable values are:
+          # - "PLACEMENT_TAG_STANDARD"
+          # - "PLACEMENT_TAG_IFRAME_JAVASCRIPT"
+          # - "PLACEMENT_TAG_IFRAME_ILAYER"
+          # - "PLACEMENT_TAG_INTERNAL_REDIRECT"
+          # - "PLACEMENT_TAG_JAVASCRIPT"
+          # - "PLACEMENT_TAG_INTERSTITIAL_IFRAME_JAVASCRIPT"
+          # - "PLACEMENT_TAG_INTERSTITIAL_INTERNAL_REDIRECT"
+          # - "PLACEMENT_TAG_INTERSTITIAL_JAVASCRIPT"
+          # - "PLACEMENT_TAG_CLICK_COMMANDS"
+          # - "PLACEMENT_TAG_INSTREAM_VIDEO_PREFETCH"
+          # - "PLACEMENT_TAG_TRACKING"
+          # - "PLACEMENT_TAG_TRACKING_IFRAME"
+          # - "PLACEMENT_TAG_TRACKING_JAVASCRIPT"
+        "A String",
+      ],
+      "paymentApproved": True or False, # Whether payment was approved for this placement. This is a read-only field relevant only to publisher-paid placements.
+      "tagSetting": { # Tag Settings # Tag settings for this placement.
+        "includeClickThroughUrls": True or False, # Whether static landing page URLs should be included in the tags. This setting applies only to placements.
+        "includeClickTracking": True or False, # Whether click-tracking string should be included in the tags.
+        "additionalKeyValues": "A String", # Additional key-values to be included in tags. Each key-value pair must be of the form key=value, and pairs must be separated by a semicolon (;). Keys and values must not contain commas. For example, id=2;color=red is a valid value for this field.
+        "keywordOption": "A String", # Option specifying how keywords are embedded in ad tags. This setting can be used to specify whether keyword placeholders are inserted in placement tags for this site. Publishers can then add keywords to those placeholders.
+      },
+      "contentCategoryId": "A String", # ID of the content category assigned to this placement.
+      "externalId": "A String", # External ID for this placement.
+      "idDimensionValue": { # Represents a DimensionValue resource. # Dimension value for the ID of this placement. This is a read-only, auto-generated field.
+        "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+        "value": "A String", # The value of the dimension.
+        "dimensionName": "A String", # The name of the dimension.
+        "etag": "A String", # The eTag of this response for caching purposes.
+        "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+        "id": "A String", # The ID associated with the value if available.
+      },
+      "size": { # Represents the dimensions of ads, placements, creatives, or creative assets. # Size associated with this placement. When inserting or updating a placement, only the size ID field is used. This field is required on insertion.
+        "width": 42, # Width of this size.
+        "kind": "dfareporting#size", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#size".
+        "iab": True or False, # IAB standard size. This is a read-only, auto-generated field.
+        "id": "A String", # ID of this size. This is a read-only, auto-generated field.
+        "height": 42, # Height of this size.
+      },
+      "sslRequired": True or False, # Whether creatives assigned to this placement must be SSL-compliant.
+      "status": "A String", # Third-party placement status.
+      "campaignIdDimensionValue": { # Represents a DimensionValue resource. # Dimension value for the ID of the campaign. This is a read-only, auto-generated field.
+        "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+        "value": "A String", # The value of the dimension.
+        "dimensionName": "A String", # The name of the dimension.
+        "etag": "A String", # The eTag of this response for caching purposes.
+        "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+        "id": "A String", # The ID associated with the value if available.
+      },
+      "primary": True or False, # Whether this placement is the primary placement of a roadblock (placement group). You cannot change this field from true to false. Setting this field to true will automatically set the primary field on the original primary placement of the roadblock to false, and it will automatically set the roadblock's primaryPlacementId field to the ID of this placement.
+      "placementGroupId": "A String", # ID of this placement's group, if applicable.
+      "createInfo": { # Modification timestamp. # Information about the creation of this placement. This is a read-only field.
+        "time": "A String", # Timestamp of the last change in milliseconds since epoch.
+      },
+      "siteId": "A String", # Site ID associated with this placement. On insert, you must set either this field or the directorySiteId field to specify the site associated with this placement. This is a required field that is read-only after insertion.
+      "siteIdDimensionValue": { # Represents a DimensionValue resource. # Dimension value for the ID of the site. This is a read-only, auto-generated field.
+        "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+        "value": "A String", # The value of the dimension.
+        "dimensionName": "A String", # The name of the dimension.
+        "etag": "A String", # The eTag of this response for caching purposes.
+        "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+        "id": "A String", # The ID associated with the value if available.
+      },
+      "compatibility": "A String", # Placement compatibility. DISPLAY and DISPLAY_INTERSTITIAL refer to rendering on desktop, on mobile devices or in mobile apps for regular or interstitial ads respectively. APP and APP_INTERSTITIAL are no longer allowed for new placement insertions. Instead, use DISPLAY or DISPLAY_INTERSTITIAL. IN_STREAM_VIDEO refers to rendering in in-stream video ads developed with the VAST standard. This field is required on insertion.
+      "placementStrategyId": "A String", # ID of the placement strategy assigned to this placement.
+      "placementGroupIdDimensionValue": { # Represents a DimensionValue resource. # Dimension value for the ID of the placement group. This is a read-only, auto-generated field.
+        "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+        "value": "A String", # The value of the dimension.
+        "dimensionName": "A String", # The name of the dimension.
+        "etag": "A String", # The eTag of this response for caching purposes.
+        "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+        "id": "A String", # The ID associated with the value if available.
+      },
+      "kind": "dfareporting#placement", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#placement".
+      "subaccountId": "A String", # Subaccount ID of this placement. This field can be left blank.
+      "name": "A String", # Name of this placement.This is a required field and must be less than 256 characters long.
+      "lookbackConfiguration": { # Lookback configuration settings. # Lookback window settings for this placement.
+        "clickDuration": 42, # Lookback window, in days, from the last time a given user clicked on one of your ads. If you enter 0, clicks will not be considered as triggering events for floodlight tracking. If you leave this field blank, the default value for your account will be used.
+        "postImpressionActivitiesDuration": 42, # Lookback window, in days, from the last time a given user viewed one of your ads. If you enter 0, impressions will not be considered as triggering events for floodlight tracking. If you leave this field blank, the default value for your account will be used.
+      },
+      "lastModifiedInfo": { # Modification timestamp. # Information about the most recent modification of this placement. This is a read-only field.
+        "time": "A String", # Timestamp of the last change in milliseconds since epoch.
+      },
+      "pricingSchedule": { # Pricing Schedule # Pricing schedule of this placement. This field is required on insertion, specifically subfields startDate, endDate and pricingType.
+        "startDate": "A String", # Placement start date. This date must be later than, or the same day as, the campaign start date. The hours, minutes, and seconds of the start date should not be set, as doing so will result in an error. This field is required on insertion.
+        "endDate": "A String", # Placement end date. This date must be later than, or the same day as, the placement start date, but not later than the campaign end date. If, for example, you set 6/25/2015 as both the start and end dates, the effective placement date is just that day only, 6/25/2015. The hours, minutes, and seconds of the end date should not be set, as doing so will result in an error. This field is required on insertion.
+        "flighted": True or False, # Whether this placement is flighted. If true, pricing periods will be computed automatically.
+        "disregardOverdelivery": True or False, # Whether cap costs are ignored by ad serving.
+        "capCostOption": "A String", # Placement cap cost option.
+        "pricingPeriods": [ # Pricing periods for this placement.
+          { # Pricing Period
+            "units": "A String", # Units of this pricing period.
+            "rateOrCostNanos": "A String", # Rate or cost of this pricing period.
+            "startDate": "A String", # Pricing period start date. This date must be later than, or the same day as, the placement start date. The hours, minutes, and seconds of the start date should not be set, as doing so will result in an error.
+            "endDate": "A String", # Pricing period end date. This date must be later than, or the same day as, the pricing period start date, but not later than the placement end date. The period end date can be the same date as the period start date. If, for example, you set 6/25/2015 as both the start and end dates, the effective pricing period date is just that day only, 6/25/2015. The hours, minutes, and seconds of the end date should not be set, as doing so will result in an error.
+            "pricingComment": "A String", # Comments for this pricing period.
+          },
+        ],
+        "pricingType": "A String", # Placement pricing type. This field is required on insertion.
+        "testingStartDate": "A String", # Testing start date of this placement. The hours, minutes, and seconds of the start date should not be set, as doing so will result in an error.
+        "floodlightActivityId": "A String", # Floodlight activity ID associated with this placement. This field should be set when placement pricing type is set to PRICING_TYPE_CPA.
+      },
+      "vpaidAdapterChoice": "A String", # VPAID adapter setting for this placement. Controls which VPAID format the measurement adapter will use for in-stream video creatives assigned to this placement.
+    }</pre>
+</div>
+
+</body></html>
\ No newline at end of file
diff --git a/docs/dyn/dfareporting_v2_7.platformTypes.html b/docs/dyn/dfareporting_v2_7.platformTypes.html
new file mode 100644
index 0000000..f5b36fc
--- /dev/null
+++ b/docs/dyn/dfareporting_v2_7.platformTypes.html
@@ -0,0 +1,124 @@
+<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="dfareporting_v2_7.html">DCM/DFA Reporting And Trafficking API</a> . <a href="dfareporting_v2_7.platformTypes.html">platformTypes</a></h1>
+<h2>Instance Methods</h2>
+<p class="toc_element">
+  <code><a href="#get">get(profileId, id)</a></code></p>
+<p class="firstline">Gets one platform type by ID.</p>
+<p class="toc_element">
+  <code><a href="#list">list(profileId)</a></code></p>
+<p class="firstline">Retrieves a list of platform types.</p>
+<h3>Method Details</h3>
+<div class="method">
+    <code class="details" id="get">get(profileId, id)</code>
+  <pre>Gets one platform type by ID.
+
+Args:
+  profileId: string, User profile ID associated with this request. (required)
+  id: string, Platform type ID. (required)
+
+Returns:
+  An object of the form:
+
+    { # Contains information about a platform type that can be targeted by ads.
+    "kind": "dfareporting#platformType", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#platformType".
+    "id": "A String", # ID of this platform type.
+    "name": "A String", # Name of this platform type.
+  }</pre>
+</div>
+
+<div class="method">
+    <code class="details" id="list">list(profileId)</code>
+  <pre>Retrieves a list of platform types.
+
+Args:
+  profileId: string, User profile ID associated with this request. (required)
+
+Returns:
+  An object of the form:
+
+    { # Platform Type List Response
+    "kind": "dfareporting#platformTypesListResponse", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#platformTypesListResponse".
+    "platformTypes": [ # Platform type collection.
+      { # Contains information about a platform type that can be targeted by ads.
+        "kind": "dfareporting#platformType", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#platformType".
+        "id": "A String", # ID of this platform type.
+        "name": "A String", # Name of this platform type.
+      },
+    ],
+  }</pre>
+</div>
+
+</body></html>
\ No newline at end of file
diff --git a/docs/dyn/dfareporting_v2_7.postalCodes.html b/docs/dyn/dfareporting_v2_7.postalCodes.html
new file mode 100644
index 0000000..5d43a97
--- /dev/null
+++ b/docs/dyn/dfareporting_v2_7.postalCodes.html
@@ -0,0 +1,128 @@
+<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="dfareporting_v2_7.html">DCM/DFA Reporting And Trafficking API</a> . <a href="dfareporting_v2_7.postalCodes.html">postalCodes</a></h1>
+<h2>Instance Methods</h2>
+<p class="toc_element">
+  <code><a href="#get">get(profileId, code)</a></code></p>
+<p class="firstline">Gets one postal code by ID.</p>
+<p class="toc_element">
+  <code><a href="#list">list(profileId)</a></code></p>
+<p class="firstline">Retrieves a list of postal codes.</p>
+<h3>Method Details</h3>
+<div class="method">
+    <code class="details" id="get">get(profileId, code)</code>
+  <pre>Gets one postal code by ID.
+
+Args:
+  profileId: string, User profile ID associated with this request. (required)
+  code: string, Postal code ID. (required)
+
+Returns:
+  An object of the form:
+
+    { # Contains information about a postal code that can be targeted by ads.
+    "countryDartId": "A String", # DART ID of the country to which this postal code belongs.
+    "kind": "dfareporting#postalCode", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#postalCode".
+    "code": "A String", # Postal code. This is equivalent to the id field.
+    "id": "A String", # ID of this postal code.
+    "countryCode": "A String", # Country code of the country to which this postal code belongs.
+  }</pre>
+</div>
+
+<div class="method">
+    <code class="details" id="list">list(profileId)</code>
+  <pre>Retrieves a list of postal codes.
+
+Args:
+  profileId: string, User profile ID associated with this request. (required)
+
+Returns:
+  An object of the form:
+
+    { # Postal Code List Response
+    "kind": "dfareporting#postalCodesListResponse", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#postalCodesListResponse".
+    "postalCodes": [ # Postal code collection.
+      { # Contains information about a postal code that can be targeted by ads.
+        "countryDartId": "A String", # DART ID of the country to which this postal code belongs.
+        "kind": "dfareporting#postalCode", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#postalCode".
+        "code": "A String", # Postal code. This is equivalent to the id field.
+        "id": "A String", # ID of this postal code.
+        "countryCode": "A String", # Country code of the country to which this postal code belongs.
+      },
+    ],
+  }</pre>
+</div>
+
+</body></html>
\ No newline at end of file
diff --git a/docs/dyn/dfareporting_v2_7.projects.html b/docs/dyn/dfareporting_v2_7.projects.html
new file mode 100644
index 0000000..297d004
--- /dev/null
+++ b/docs/dyn/dfareporting_v2_7.projects.html
@@ -0,0 +1,197 @@
+<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="dfareporting_v2_7.html">DCM/DFA Reporting And Trafficking API</a> . <a href="dfareporting_v2_7.projects.html">projects</a></h1>
+<h2>Instance Methods</h2>
+<p class="toc_element">
+  <code><a href="#get">get(profileId, id)</a></code></p>
+<p class="firstline">Gets one project by ID.</p>
+<p class="toc_element">
+  <code><a href="#list">list(profileId, searchString=None, pageToken=None, sortField=None, advertiserIds=None, ids=None, maxResults=None, sortOrder=None)</a></code></p>
+<p class="firstline">Retrieves a list of projects, possibly filtered. This method supports paging.</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>
+<h3>Method Details</h3>
+<div class="method">
+    <code class="details" id="get">get(profileId, id)</code>
+  <pre>Gets one project by ID.
+
+Args:
+  profileId: string, User profile ID associated with this request. (required)
+  id: string, Project ID. (required)
+
+Returns:
+  An object of the form:
+
+    { # Contains properties of a DoubleClick Planning project.
+    "startDate": "A String", # Start date of the project.
+    "targetCpmNanos": "A String", # CPM that the advertiser is targeting.
+    "endDate": "A String", # End date of the project.
+    "clientBillingCode": "A String", # Client billing code of this project.
+    "overview": "A String", # Overview of this project.
+    "targetCpaNanos": "A String", # CPA that the advertiser is targeting.
+    "advertiserId": "A String", # Advertiser ID of this project.
+    "targetImpressions": "A String", # Number of impressions that the advertiser is targeting.
+    "id": "A String", # ID of this project. This is a read-only, auto-generated field.
+    "accountId": "A String", # Account ID of this project.
+    "targetCpcNanos": "A String", # CPC that the advertiser is targeting.
+    "targetCpmActiveViewNanos": "A String", # vCPM from Active View that the advertiser is targeting.
+    "targetClicks": "A String", # Number of clicks that the advertiser is targeting.
+    "audienceGender": "A String", # Audience gender of this project.
+    "kind": "dfareporting#project", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#project".
+    "subaccountId": "A String", # Subaccount ID of this project.
+    "name": "A String", # Name of this project.
+    "lastModifiedInfo": { # Modification timestamp. # Information about the most recent modification of this project.
+      "time": "A String", # Timestamp of the last change in milliseconds since epoch.
+    },
+    "budget": "A String", # Budget of this project in the currency specified by the current account. The value stored in this field represents only the non-fractional amount. For example, for USD, the smallest value that can be represented by this field is 1 US dollar.
+    "audienceAgeGroup": "A String", # Audience age group of this project.
+    "targetConversions": "A String", # Number of conversions that the advertiser is targeting.
+    "clientName": "A String", # Name of the project client.
+  }</pre>
+</div>
+
+<div class="method">
+    <code class="details" id="list">list(profileId, searchString=None, pageToken=None, sortField=None, advertiserIds=None, ids=None, maxResults=None, sortOrder=None)</code>
+  <pre>Retrieves a list of projects, possibly filtered. This method supports paging.
+
+Args:
+  profileId: string, User profile ID associated with this request. (required)
+  searchString: string, Allows searching for projects by name or ID. Wildcards (*) are allowed. For example, "project*2015" will return projects with names like "project June 2015", "project April 2015", or simply "project 2015". Most of the searches also add wildcards implicitly at the start and the end of the search string. For example, a search string of "project" will match projects with name "my project", "project 2015", or simply "project".
+  pageToken: string, Value of the nextPageToken from the previous result page.
+  sortField: string, Field by which to sort the list.
+    Allowed values
+      ID - 
+      NAME - 
+  advertiserIds: string, Select only projects with these advertiser IDs. (repeated)
+  ids: string, Select only projects with these IDs. (repeated)
+  maxResults: integer, Maximum number of results to return.
+  sortOrder: string, Order of sorted results, default is ASCENDING.
+    Allowed values
+      ASCENDING - 
+      DESCENDING - 
+
+Returns:
+  An object of the form:
+
+    { # Project List Response
+    "nextPageToken": "A String", # Pagination token to be used for the next list operation.
+    "kind": "dfareporting#projectsListResponse", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#projectsListResponse".
+    "projects": [ # Project collection.
+      { # Contains properties of a DoubleClick Planning project.
+        "startDate": "A String", # Start date of the project.
+        "targetCpmNanos": "A String", # CPM that the advertiser is targeting.
+        "endDate": "A String", # End date of the project.
+        "clientBillingCode": "A String", # Client billing code of this project.
+        "overview": "A String", # Overview of this project.
+        "targetCpaNanos": "A String", # CPA that the advertiser is targeting.
+        "advertiserId": "A String", # Advertiser ID of this project.
+        "targetImpressions": "A String", # Number of impressions that the advertiser is targeting.
+        "id": "A String", # ID of this project. This is a read-only, auto-generated field.
+        "accountId": "A String", # Account ID of this project.
+        "targetCpcNanos": "A String", # CPC that the advertiser is targeting.
+        "targetCpmActiveViewNanos": "A String", # vCPM from Active View that the advertiser is targeting.
+        "targetClicks": "A String", # Number of clicks that the advertiser is targeting.
+        "audienceGender": "A String", # Audience gender of this project.
+        "kind": "dfareporting#project", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#project".
+        "subaccountId": "A String", # Subaccount ID of this project.
+        "name": "A String", # Name of this project.
+        "lastModifiedInfo": { # Modification timestamp. # Information about the most recent modification of this project.
+          "time": "A String", # Timestamp of the last change in milliseconds since epoch.
+        },
+        "budget": "A String", # Budget of this project in the currency specified by the current account. The value stored in this field represents only the non-fractional amount. For example, for USD, the smallest value that can be represented by this field is 1 US dollar.
+        "audienceAgeGroup": "A String", # Audience age group of this project.
+        "targetConversions": "A String", # Number of conversions that the advertiser is targeting.
+        "clientName": "A String", # Name of the project client.
+      },
+    ],
+  }</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>
+
+</body></html>
\ No newline at end of file
diff --git a/docs/dyn/dfareporting_v2_7.regions.html b/docs/dyn/dfareporting_v2_7.regions.html
new file mode 100644
index 0000000..cf2c373
--- /dev/null
+++ b/docs/dyn/dfareporting_v2_7.regions.html
@@ -0,0 +1,106 @@
+<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="dfareporting_v2_7.html">DCM/DFA Reporting And Trafficking API</a> . <a href="dfareporting_v2_7.regions.html">regions</a></h1>
+<h2>Instance Methods</h2>
+<p class="toc_element">
+  <code><a href="#list">list(profileId)</a></code></p>
+<p class="firstline">Retrieves a list of regions.</p>
+<h3>Method Details</h3>
+<div class="method">
+    <code class="details" id="list">list(profileId)</code>
+  <pre>Retrieves a list of regions.
+
+Args:
+  profileId: string, User profile ID associated with this request. (required)
+
+Returns:
+  An object of the form:
+
+    { # Region List Response
+    "regions": [ # Region collection.
+      { # Contains information about a region that can be targeted by ads.
+        "kind": "dfareporting#region", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#region".
+        "countryDartId": "A String", # DART ID of the country to which this region belongs.
+        "name": "A String", # Name of this region.
+        "countryCode": "A String", # Country code of the country to which this region belongs.
+        "regionCode": "A String", # Region code.
+        "dartId": "A String", # DART ID of this region.
+      },
+    ],
+    "kind": "dfareporting#regionsListResponse", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#regionsListResponse".
+  }</pre>
+</div>
+
+</body></html>
\ No newline at end of file
diff --git a/docs/dyn/dfareporting_v2_7.remarketingListShares.html b/docs/dyn/dfareporting_v2_7.remarketingListShares.html
new file mode 100644
index 0000000..de90579
--- /dev/null
+++ b/docs/dyn/dfareporting_v2_7.remarketingListShares.html
@@ -0,0 +1,183 @@
+<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="dfareporting_v2_7.html">DCM/DFA Reporting And Trafficking API</a> . <a href="dfareporting_v2_7.remarketingListShares.html">remarketingListShares</a></h1>
+<h2>Instance Methods</h2>
+<p class="toc_element">
+  <code><a href="#get">get(profileId, remarketingListId)</a></code></p>
+<p class="firstline">Gets one remarketing list share by remarketing list ID.</p>
+<p class="toc_element">
+  <code><a href="#patch">patch(profileId, remarketingListId, body)</a></code></p>
+<p class="firstline">Updates an existing remarketing list share. This method supports patch semantics.</p>
+<p class="toc_element">
+  <code><a href="#update">update(profileId, body)</a></code></p>
+<p class="firstline">Updates an existing remarketing list share.</p>
+<h3>Method Details</h3>
+<div class="method">
+    <code class="details" id="get">get(profileId, remarketingListId)</code>
+  <pre>Gets one remarketing list share by remarketing list ID.
+
+Args:
+  profileId: string, User profile ID associated with this request. (required)
+  remarketingListId: string, Remarketing list ID. (required)
+
+Returns:
+  An object of the form:
+
+    { # Contains properties of a remarketing list's sharing information. Sharing allows other accounts or advertisers to target to your remarketing lists. This resource can be used to manage remarketing list sharing to other accounts and advertisers.
+      "sharedAdvertiserIds": [ # Advertisers that the remarketing list is shared with.
+        "A String",
+      ],
+      "kind": "dfareporting#remarketingListShare", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#remarketingListShare".
+      "remarketingListId": "A String", # Remarketing list ID. This is a read-only, auto-generated field.
+      "sharedAccountIds": [ # Accounts that the remarketing list is shared with.
+        "A String",
+      ],
+    }</pre>
+</div>
+
+<div class="method">
+    <code class="details" id="patch">patch(profileId, remarketingListId, body)</code>
+  <pre>Updates an existing remarketing list share. This method supports patch semantics.
+
+Args:
+  profileId: string, User profile ID associated with this request. (required)
+  remarketingListId: string, Remarketing list ID. (required)
+  body: object, The request body. (required)
+    The object takes the form of:
+
+{ # Contains properties of a remarketing list's sharing information. Sharing allows other accounts or advertisers to target to your remarketing lists. This resource can be used to manage remarketing list sharing to other accounts and advertisers.
+    "sharedAdvertiserIds": [ # Advertisers that the remarketing list is shared with.
+      "A String",
+    ],
+    "kind": "dfareporting#remarketingListShare", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#remarketingListShare".
+    "remarketingListId": "A String", # Remarketing list ID. This is a read-only, auto-generated field.
+    "sharedAccountIds": [ # Accounts that the remarketing list is shared with.
+      "A String",
+    ],
+  }
+
+
+Returns:
+  An object of the form:
+
+    { # Contains properties of a remarketing list's sharing information. Sharing allows other accounts or advertisers to target to your remarketing lists. This resource can be used to manage remarketing list sharing to other accounts and advertisers.
+      "sharedAdvertiserIds": [ # Advertisers that the remarketing list is shared with.
+        "A String",
+      ],
+      "kind": "dfareporting#remarketingListShare", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#remarketingListShare".
+      "remarketingListId": "A String", # Remarketing list ID. This is a read-only, auto-generated field.
+      "sharedAccountIds": [ # Accounts that the remarketing list is shared with.
+        "A String",
+      ],
+    }</pre>
+</div>
+
+<div class="method">
+    <code class="details" id="update">update(profileId, body)</code>
+  <pre>Updates an existing remarketing list share.
+
+Args:
+  profileId: string, User profile ID associated with this request. (required)
+  body: object, The request body. (required)
+    The object takes the form of:
+
+{ # Contains properties of a remarketing list's sharing information. Sharing allows other accounts or advertisers to target to your remarketing lists. This resource can be used to manage remarketing list sharing to other accounts and advertisers.
+    "sharedAdvertiserIds": [ # Advertisers that the remarketing list is shared with.
+      "A String",
+    ],
+    "kind": "dfareporting#remarketingListShare", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#remarketingListShare".
+    "remarketingListId": "A String", # Remarketing list ID. This is a read-only, auto-generated field.
+    "sharedAccountIds": [ # Accounts that the remarketing list is shared with.
+      "A String",
+    ],
+  }
+
+
+Returns:
+  An object of the form:
+
+    { # Contains properties of a remarketing list's sharing information. Sharing allows other accounts or advertisers to target to your remarketing lists. This resource can be used to manage remarketing list sharing to other accounts and advertisers.
+      "sharedAdvertiserIds": [ # Advertisers that the remarketing list is shared with.
+        "A String",
+      ],
+      "kind": "dfareporting#remarketingListShare", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#remarketingListShare".
+      "remarketingListId": "A String", # Remarketing list ID. This is a read-only, auto-generated field.
+      "sharedAccountIds": [ # Accounts that the remarketing list is shared with.
+        "A String",
+      ],
+    }</pre>
+</div>
+
+</body></html>
\ No newline at end of file
diff --git a/docs/dyn/dfareporting_v2_7.remarketingLists.html b/docs/dyn/dfareporting_v2_7.remarketingLists.html
new file mode 100644
index 0000000..4fd3133
--- /dev/null
+++ b/docs/dyn/dfareporting_v2_7.remarketingLists.html
@@ -0,0 +1,532 @@
+<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="dfareporting_v2_7.html">DCM/DFA Reporting And Trafficking API</a> . <a href="dfareporting_v2_7.remarketingLists.html">remarketingLists</a></h1>
+<h2>Instance Methods</h2>
+<p class="toc_element">
+  <code><a href="#get">get(profileId, id)</a></code></p>
+<p class="firstline">Gets one remarketing list by ID.</p>
+<p class="toc_element">
+  <code><a href="#insert">insert(profileId, body)</a></code></p>
+<p class="firstline">Inserts a new remarketing list.</p>
+<p class="toc_element">
+  <code><a href="#list">list(profileId, advertiserId, name=None, pageToken=None, sortField=None, floodlightActivityId=None, maxResults=None, active=None, sortOrder=None)</a></code></p>
+<p class="firstline">Retrieves a list of remarketing lists, possibly filtered. This method supports paging.</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="#patch">patch(profileId, id, body)</a></code></p>
+<p class="firstline">Updates an existing remarketing list. This method supports patch semantics.</p>
+<p class="toc_element">
+  <code><a href="#update">update(profileId, body)</a></code></p>
+<p class="firstline">Updates an existing remarketing list.</p>
+<h3>Method Details</h3>
+<div class="method">
+    <code class="details" id="get">get(profileId, id)</code>
+  <pre>Gets one remarketing list by ID.
+
+Args:
+  profileId: string, User profile ID associated with this request. (required)
+  id: string, Remarketing list ID. (required)
+
+Returns:
+  An object of the form:
+
+    { # Contains properties of a remarketing list. Remarketing enables you to create lists of users who have performed specific actions on a site, then target ads to members of those lists. This resource can be used to manage remarketing lists that are owned by your advertisers. To see all remarketing lists that are visible to your advertisers, including those that are shared to your advertiser or account, use the TargetableRemarketingLists resource.
+      "listPopulationRule": { # Remarketing List Population Rule. # Rule used to populate the remarketing list with users.
+        "floodlightActivityName": "A String", # Name of floodlight activity associated with this rule. This is a read-only, auto-generated field.
+        "floodlightActivityId": "A String", # Floodlight activity ID associated with this rule. This field can be left blank.
+        "listPopulationClauses": [ # Clauses that make up this list population rule. Clauses are joined by ANDs, and the clauses themselves are made up of list population terms which are joined by ORs.
+          { # A group clause made up of list population terms representing constraints joined by ORs.
+            "terms": [ # Terms of this list population clause. Each clause is made up of list population terms representing constraints and are joined by ORs.
+              { # Remarketing List Population Rule Term.
+                "remarketingListId": "A String", # ID of the list in question. This field is only relevant when type is set to LIST_MEMBERSHIP_TERM.
+                "contains": True or False, # Will be true if the term should check if the user is in the list and false if the term should check if the user is not in the list. This field is only relevant when type is set to LIST_MEMBERSHIP_TERM. False by default.
+                "negation": True or False, # Whether to negate the comparison result of this term during rule evaluation. This field is only relevant when type is left unset or set to CUSTOM_VARIABLE_TERM or REFERRER_TERM.
+                "value": "A String", # Literal to compare the variable to. This field is only relevant when type is left unset or set to CUSTOM_VARIABLE_TERM or REFERRER_TERM.
+                "variableFriendlyName": "A String", # Friendly name of this term's variable. This is a read-only, auto-generated field. This field is only relevant when type is left unset or set to CUSTOM_VARIABLE_TERM.
+                "operator": "A String", # Comparison operator of this term. This field is only relevant when type is left unset or set to CUSTOM_VARIABLE_TERM or REFERRER_TERM.
+                "type": "A String", # List population term type determines the applicable fields in this object. If left unset or set to CUSTOM_VARIABLE_TERM, then variableName, variableFriendlyName, operator, value, and negation are applicable. If set to LIST_MEMBERSHIP_TERM then remarketingListId and contains are applicable. If set to REFERRER_TERM then operator, value, and negation are applicable.
+                "variableName": "A String", # Name of the variable (U1, U2, etc.) being compared in this term. This field is only relevant when type is set to null, CUSTOM_VARIABLE_TERM or REFERRER_TERM.
+              },
+            ],
+          },
+        ],
+      },
+      "kind": "dfareporting#remarketingList", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#remarketingList".
+      "subaccountId": "A String", # Subaccount ID of this remarketing list. This is a read-only, auto-generated field that is only returned in GET requests.
+      "description": "A String", # Remarketing list description.
+      "listSize": "A String", # Number of users currently in the list. This is a read-only field.
+      "lifeSpan": "A String", # Number of days that a user should remain in the remarketing list without an impression.
+      "name": "A String", # Name of the remarketing list. This is a required field. Must be no greater than 128 characters long.
+      "advertiserId": "A String", # Dimension value for the advertiser ID that owns this remarketing list. This is a required field.
+      "listSource": "A String", # Product from which this remarketing list was originated.
+      "active": True or False, # Whether this remarketing list is active.
+      "advertiserIdDimensionValue": { # Represents a DimensionValue resource. # Dimension value for the ID of the advertiser. This is a read-only, auto-generated field.
+        "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+        "value": "A String", # The value of the dimension.
+        "dimensionName": "A String", # The name of the dimension.
+        "etag": "A String", # The eTag of this response for caching purposes.
+        "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+        "id": "A String", # The ID associated with the value if available.
+      },
+      "id": "A String", # Remarketing list ID. This is a read-only, auto-generated field.
+      "accountId": "A String", # Account ID of this remarketing list. This is a read-only, auto-generated field that is only returned in GET requests.
+    }</pre>
+</div>
+
+<div class="method">
+    <code class="details" id="insert">insert(profileId, body)</code>
+  <pre>Inserts a new remarketing list.
+
+Args:
+  profileId: string, User profile ID associated with this request. (required)
+  body: object, The request body. (required)
+    The object takes the form of:
+
+{ # Contains properties of a remarketing list. Remarketing enables you to create lists of users who have performed specific actions on a site, then target ads to members of those lists. This resource can be used to manage remarketing lists that are owned by your advertisers. To see all remarketing lists that are visible to your advertisers, including those that are shared to your advertiser or account, use the TargetableRemarketingLists resource.
+    "listPopulationRule": { # Remarketing List Population Rule. # Rule used to populate the remarketing list with users.
+      "floodlightActivityName": "A String", # Name of floodlight activity associated with this rule. This is a read-only, auto-generated field.
+      "floodlightActivityId": "A String", # Floodlight activity ID associated with this rule. This field can be left blank.
+      "listPopulationClauses": [ # Clauses that make up this list population rule. Clauses are joined by ANDs, and the clauses themselves are made up of list population terms which are joined by ORs.
+        { # A group clause made up of list population terms representing constraints joined by ORs.
+          "terms": [ # Terms of this list population clause. Each clause is made up of list population terms representing constraints and are joined by ORs.
+            { # Remarketing List Population Rule Term.
+              "remarketingListId": "A String", # ID of the list in question. This field is only relevant when type is set to LIST_MEMBERSHIP_TERM.
+              "contains": True or False, # Will be true if the term should check if the user is in the list and false if the term should check if the user is not in the list. This field is only relevant when type is set to LIST_MEMBERSHIP_TERM. False by default.
+              "negation": True or False, # Whether to negate the comparison result of this term during rule evaluation. This field is only relevant when type is left unset or set to CUSTOM_VARIABLE_TERM or REFERRER_TERM.
+              "value": "A String", # Literal to compare the variable to. This field is only relevant when type is left unset or set to CUSTOM_VARIABLE_TERM or REFERRER_TERM.
+              "variableFriendlyName": "A String", # Friendly name of this term's variable. This is a read-only, auto-generated field. This field is only relevant when type is left unset or set to CUSTOM_VARIABLE_TERM.
+              "operator": "A String", # Comparison operator of this term. This field is only relevant when type is left unset or set to CUSTOM_VARIABLE_TERM or REFERRER_TERM.
+              "type": "A String", # List population term type determines the applicable fields in this object. If left unset or set to CUSTOM_VARIABLE_TERM, then variableName, variableFriendlyName, operator, value, and negation are applicable. If set to LIST_MEMBERSHIP_TERM then remarketingListId and contains are applicable. If set to REFERRER_TERM then operator, value, and negation are applicable.
+              "variableName": "A String", # Name of the variable (U1, U2, etc.) being compared in this term. This field is only relevant when type is set to null, CUSTOM_VARIABLE_TERM or REFERRER_TERM.
+            },
+          ],
+        },
+      ],
+    },
+    "kind": "dfareporting#remarketingList", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#remarketingList".
+    "subaccountId": "A String", # Subaccount ID of this remarketing list. This is a read-only, auto-generated field that is only returned in GET requests.
+    "description": "A String", # Remarketing list description.
+    "listSize": "A String", # Number of users currently in the list. This is a read-only field.
+    "lifeSpan": "A String", # Number of days that a user should remain in the remarketing list without an impression.
+    "name": "A String", # Name of the remarketing list. This is a required field. Must be no greater than 128 characters long.
+    "advertiserId": "A String", # Dimension value for the advertiser ID that owns this remarketing list. This is a required field.
+    "listSource": "A String", # Product from which this remarketing list was originated.
+    "active": True or False, # Whether this remarketing list is active.
+    "advertiserIdDimensionValue": { # Represents a DimensionValue resource. # Dimension value for the ID of the advertiser. This is a read-only, auto-generated field.
+      "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+      "value": "A String", # The value of the dimension.
+      "dimensionName": "A String", # The name of the dimension.
+      "etag": "A String", # The eTag of this response for caching purposes.
+      "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+      "id": "A String", # The ID associated with the value if available.
+    },
+    "id": "A String", # Remarketing list ID. This is a read-only, auto-generated field.
+    "accountId": "A String", # Account ID of this remarketing list. This is a read-only, auto-generated field that is only returned in GET requests.
+  }
+
+
+Returns:
+  An object of the form:
+
+    { # Contains properties of a remarketing list. Remarketing enables you to create lists of users who have performed specific actions on a site, then target ads to members of those lists. This resource can be used to manage remarketing lists that are owned by your advertisers. To see all remarketing lists that are visible to your advertisers, including those that are shared to your advertiser or account, use the TargetableRemarketingLists resource.
+      "listPopulationRule": { # Remarketing List Population Rule. # Rule used to populate the remarketing list with users.
+        "floodlightActivityName": "A String", # Name of floodlight activity associated with this rule. This is a read-only, auto-generated field.
+        "floodlightActivityId": "A String", # Floodlight activity ID associated with this rule. This field can be left blank.
+        "listPopulationClauses": [ # Clauses that make up this list population rule. Clauses are joined by ANDs, and the clauses themselves are made up of list population terms which are joined by ORs.
+          { # A group clause made up of list population terms representing constraints joined by ORs.
+            "terms": [ # Terms of this list population clause. Each clause is made up of list population terms representing constraints and are joined by ORs.
+              { # Remarketing List Population Rule Term.
+                "remarketingListId": "A String", # ID of the list in question. This field is only relevant when type is set to LIST_MEMBERSHIP_TERM.
+                "contains": True or False, # Will be true if the term should check if the user is in the list and false if the term should check if the user is not in the list. This field is only relevant when type is set to LIST_MEMBERSHIP_TERM. False by default.
+                "negation": True or False, # Whether to negate the comparison result of this term during rule evaluation. This field is only relevant when type is left unset or set to CUSTOM_VARIABLE_TERM or REFERRER_TERM.
+                "value": "A String", # Literal to compare the variable to. This field is only relevant when type is left unset or set to CUSTOM_VARIABLE_TERM or REFERRER_TERM.
+                "variableFriendlyName": "A String", # Friendly name of this term's variable. This is a read-only, auto-generated field. This field is only relevant when type is left unset or set to CUSTOM_VARIABLE_TERM.
+                "operator": "A String", # Comparison operator of this term. This field is only relevant when type is left unset or set to CUSTOM_VARIABLE_TERM or REFERRER_TERM.
+                "type": "A String", # List population term type determines the applicable fields in this object. If left unset or set to CUSTOM_VARIABLE_TERM, then variableName, variableFriendlyName, operator, value, and negation are applicable. If set to LIST_MEMBERSHIP_TERM then remarketingListId and contains are applicable. If set to REFERRER_TERM then operator, value, and negation are applicable.
+                "variableName": "A String", # Name of the variable (U1, U2, etc.) being compared in this term. This field is only relevant when type is set to null, CUSTOM_VARIABLE_TERM or REFERRER_TERM.
+              },
+            ],
+          },
+        ],
+      },
+      "kind": "dfareporting#remarketingList", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#remarketingList".
+      "subaccountId": "A String", # Subaccount ID of this remarketing list. This is a read-only, auto-generated field that is only returned in GET requests.
+      "description": "A String", # Remarketing list description.
+      "listSize": "A String", # Number of users currently in the list. This is a read-only field.
+      "lifeSpan": "A String", # Number of days that a user should remain in the remarketing list without an impression.
+      "name": "A String", # Name of the remarketing list. This is a required field. Must be no greater than 128 characters long.
+      "advertiserId": "A String", # Dimension value for the advertiser ID that owns this remarketing list. This is a required field.
+      "listSource": "A String", # Product from which this remarketing list was originated.
+      "active": True or False, # Whether this remarketing list is active.
+      "advertiserIdDimensionValue": { # Represents a DimensionValue resource. # Dimension value for the ID of the advertiser. This is a read-only, auto-generated field.
+        "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+        "value": "A String", # The value of the dimension.
+        "dimensionName": "A String", # The name of the dimension.
+        "etag": "A String", # The eTag of this response for caching purposes.
+        "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+        "id": "A String", # The ID associated with the value if available.
+      },
+      "id": "A String", # Remarketing list ID. This is a read-only, auto-generated field.
+      "accountId": "A String", # Account ID of this remarketing list. This is a read-only, auto-generated field that is only returned in GET requests.
+    }</pre>
+</div>
+
+<div class="method">
+    <code class="details" id="list">list(profileId, advertiserId, name=None, pageToken=None, sortField=None, floodlightActivityId=None, maxResults=None, active=None, sortOrder=None)</code>
+  <pre>Retrieves a list of remarketing lists, possibly filtered. This method supports paging.
+
+Args:
+  profileId: string, User profile ID associated with this request. (required)
+  advertiserId: string, Select only remarketing lists owned by this advertiser. (required)
+  name: string, Allows searching for objects by name or ID. Wildcards (*) are allowed. For example, "remarketing list*2015" will return objects with names like "remarketing list June 2015", "remarketing list April 2015", or simply "remarketing list 2015". Most of the searches also add wildcards implicitly at the start and the end of the search string. For example, a search string of "remarketing list" will match objects with name "my remarketing list", "remarketing list 2015", or simply "remarketing list".
+  pageToken: string, Value of the nextPageToken from the previous result page.
+  sortField: string, Field by which to sort the list.
+    Allowed values
+      ID - 
+      NAME - 
+  floodlightActivityId: string, Select only remarketing lists that have this floodlight activity ID.
+  maxResults: integer, Maximum number of results to return.
+  active: boolean, Select only active or only inactive remarketing lists.
+  sortOrder: string, Order of sorted results, default is ASCENDING.
+    Allowed values
+      ASCENDING - 
+      DESCENDING - 
+
+Returns:
+  An object of the form:
+
+    { # Remarketing list response
+    "nextPageToken": "A String", # Pagination token to be used for the next list operation.
+    "remarketingLists": [ # Remarketing list collection.
+      { # Contains properties of a remarketing list. Remarketing enables you to create lists of users who have performed specific actions on a site, then target ads to members of those lists. This resource can be used to manage remarketing lists that are owned by your advertisers. To see all remarketing lists that are visible to your advertisers, including those that are shared to your advertiser or account, use the TargetableRemarketingLists resource.
+          "listPopulationRule": { # Remarketing List Population Rule. # Rule used to populate the remarketing list with users.
+            "floodlightActivityName": "A String", # Name of floodlight activity associated with this rule. This is a read-only, auto-generated field.
+            "floodlightActivityId": "A String", # Floodlight activity ID associated with this rule. This field can be left blank.
+            "listPopulationClauses": [ # Clauses that make up this list population rule. Clauses are joined by ANDs, and the clauses themselves are made up of list population terms which are joined by ORs.
+              { # A group clause made up of list population terms representing constraints joined by ORs.
+                "terms": [ # Terms of this list population clause. Each clause is made up of list population terms representing constraints and are joined by ORs.
+                  { # Remarketing List Population Rule Term.
+                    "remarketingListId": "A String", # ID of the list in question. This field is only relevant when type is set to LIST_MEMBERSHIP_TERM.
+                    "contains": True or False, # Will be true if the term should check if the user is in the list and false if the term should check if the user is not in the list. This field is only relevant when type is set to LIST_MEMBERSHIP_TERM. False by default.
+                    "negation": True or False, # Whether to negate the comparison result of this term during rule evaluation. This field is only relevant when type is left unset or set to CUSTOM_VARIABLE_TERM or REFERRER_TERM.
+                    "value": "A String", # Literal to compare the variable to. This field is only relevant when type is left unset or set to CUSTOM_VARIABLE_TERM or REFERRER_TERM.
+                    "variableFriendlyName": "A String", # Friendly name of this term's variable. This is a read-only, auto-generated field. This field is only relevant when type is left unset or set to CUSTOM_VARIABLE_TERM.
+                    "operator": "A String", # Comparison operator of this term. This field is only relevant when type is left unset or set to CUSTOM_VARIABLE_TERM or REFERRER_TERM.
+                    "type": "A String", # List population term type determines the applicable fields in this object. If left unset or set to CUSTOM_VARIABLE_TERM, then variableName, variableFriendlyName, operator, value, and negation are applicable. If set to LIST_MEMBERSHIP_TERM then remarketingListId and contains are applicable. If set to REFERRER_TERM then operator, value, and negation are applicable.
+                    "variableName": "A String", # Name of the variable (U1, U2, etc.) being compared in this term. This field is only relevant when type is set to null, CUSTOM_VARIABLE_TERM or REFERRER_TERM.
+                  },
+                ],
+              },
+            ],
+          },
+          "kind": "dfareporting#remarketingList", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#remarketingList".
+          "subaccountId": "A String", # Subaccount ID of this remarketing list. This is a read-only, auto-generated field that is only returned in GET requests.
+          "description": "A String", # Remarketing list description.
+          "listSize": "A String", # Number of users currently in the list. This is a read-only field.
+          "lifeSpan": "A String", # Number of days that a user should remain in the remarketing list without an impression.
+          "name": "A String", # Name of the remarketing list. This is a required field. Must be no greater than 128 characters long.
+          "advertiserId": "A String", # Dimension value for the advertiser ID that owns this remarketing list. This is a required field.
+          "listSource": "A String", # Product from which this remarketing list was originated.
+          "active": True or False, # Whether this remarketing list is active.
+          "advertiserIdDimensionValue": { # Represents a DimensionValue resource. # Dimension value for the ID of the advertiser. This is a read-only, auto-generated field.
+            "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+            "value": "A String", # The value of the dimension.
+            "dimensionName": "A String", # The name of the dimension.
+            "etag": "A String", # The eTag of this response for caching purposes.
+            "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+            "id": "A String", # The ID associated with the value if available.
+          },
+          "id": "A String", # Remarketing list ID. This is a read-only, auto-generated field.
+          "accountId": "A String", # Account ID of this remarketing list. This is a read-only, auto-generated field that is only returned in GET requests.
+        },
+    ],
+    "kind": "dfareporting#remarketingListsListResponse", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#remarketingListsListResponse".
+  }</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="patch">patch(profileId, id, body)</code>
+  <pre>Updates an existing remarketing list. This method supports patch semantics.
+
+Args:
+  profileId: string, User profile ID associated with this request. (required)
+  id: string, Remarketing list ID. (required)
+  body: object, The request body. (required)
+    The object takes the form of:
+
+{ # Contains properties of a remarketing list. Remarketing enables you to create lists of users who have performed specific actions on a site, then target ads to members of those lists. This resource can be used to manage remarketing lists that are owned by your advertisers. To see all remarketing lists that are visible to your advertisers, including those that are shared to your advertiser or account, use the TargetableRemarketingLists resource.
+    "listPopulationRule": { # Remarketing List Population Rule. # Rule used to populate the remarketing list with users.
+      "floodlightActivityName": "A String", # Name of floodlight activity associated with this rule. This is a read-only, auto-generated field.
+      "floodlightActivityId": "A String", # Floodlight activity ID associated with this rule. This field can be left blank.
+      "listPopulationClauses": [ # Clauses that make up this list population rule. Clauses are joined by ANDs, and the clauses themselves are made up of list population terms which are joined by ORs.
+        { # A group clause made up of list population terms representing constraints joined by ORs.
+          "terms": [ # Terms of this list population clause. Each clause is made up of list population terms representing constraints and are joined by ORs.
+            { # Remarketing List Population Rule Term.
+              "remarketingListId": "A String", # ID of the list in question. This field is only relevant when type is set to LIST_MEMBERSHIP_TERM.
+              "contains": True or False, # Will be true if the term should check if the user is in the list and false if the term should check if the user is not in the list. This field is only relevant when type is set to LIST_MEMBERSHIP_TERM. False by default.
+              "negation": True or False, # Whether to negate the comparison result of this term during rule evaluation. This field is only relevant when type is left unset or set to CUSTOM_VARIABLE_TERM or REFERRER_TERM.
+              "value": "A String", # Literal to compare the variable to. This field is only relevant when type is left unset or set to CUSTOM_VARIABLE_TERM or REFERRER_TERM.
+              "variableFriendlyName": "A String", # Friendly name of this term's variable. This is a read-only, auto-generated field. This field is only relevant when type is left unset or set to CUSTOM_VARIABLE_TERM.
+              "operator": "A String", # Comparison operator of this term. This field is only relevant when type is left unset or set to CUSTOM_VARIABLE_TERM or REFERRER_TERM.
+              "type": "A String", # List population term type determines the applicable fields in this object. If left unset or set to CUSTOM_VARIABLE_TERM, then variableName, variableFriendlyName, operator, value, and negation are applicable. If set to LIST_MEMBERSHIP_TERM then remarketingListId and contains are applicable. If set to REFERRER_TERM then operator, value, and negation are applicable.
+              "variableName": "A String", # Name of the variable (U1, U2, etc.) being compared in this term. This field is only relevant when type is set to null, CUSTOM_VARIABLE_TERM or REFERRER_TERM.
+            },
+          ],
+        },
+      ],
+    },
+    "kind": "dfareporting#remarketingList", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#remarketingList".
+    "subaccountId": "A String", # Subaccount ID of this remarketing list. This is a read-only, auto-generated field that is only returned in GET requests.
+    "description": "A String", # Remarketing list description.
+    "listSize": "A String", # Number of users currently in the list. This is a read-only field.
+    "lifeSpan": "A String", # Number of days that a user should remain in the remarketing list without an impression.
+    "name": "A String", # Name of the remarketing list. This is a required field. Must be no greater than 128 characters long.
+    "advertiserId": "A String", # Dimension value for the advertiser ID that owns this remarketing list. This is a required field.
+    "listSource": "A String", # Product from which this remarketing list was originated.
+    "active": True or False, # Whether this remarketing list is active.
+    "advertiserIdDimensionValue": { # Represents a DimensionValue resource. # Dimension value for the ID of the advertiser. This is a read-only, auto-generated field.
+      "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+      "value": "A String", # The value of the dimension.
+      "dimensionName": "A String", # The name of the dimension.
+      "etag": "A String", # The eTag of this response for caching purposes.
+      "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+      "id": "A String", # The ID associated with the value if available.
+    },
+    "id": "A String", # Remarketing list ID. This is a read-only, auto-generated field.
+    "accountId": "A String", # Account ID of this remarketing list. This is a read-only, auto-generated field that is only returned in GET requests.
+  }
+
+
+Returns:
+  An object of the form:
+
+    { # Contains properties of a remarketing list. Remarketing enables you to create lists of users who have performed specific actions on a site, then target ads to members of those lists. This resource can be used to manage remarketing lists that are owned by your advertisers. To see all remarketing lists that are visible to your advertisers, including those that are shared to your advertiser or account, use the TargetableRemarketingLists resource.
+      "listPopulationRule": { # Remarketing List Population Rule. # Rule used to populate the remarketing list with users.
+        "floodlightActivityName": "A String", # Name of floodlight activity associated with this rule. This is a read-only, auto-generated field.
+        "floodlightActivityId": "A String", # Floodlight activity ID associated with this rule. This field can be left blank.
+        "listPopulationClauses": [ # Clauses that make up this list population rule. Clauses are joined by ANDs, and the clauses themselves are made up of list population terms which are joined by ORs.
+          { # A group clause made up of list population terms representing constraints joined by ORs.
+            "terms": [ # Terms of this list population clause. Each clause is made up of list population terms representing constraints and are joined by ORs.
+              { # Remarketing List Population Rule Term.
+                "remarketingListId": "A String", # ID of the list in question. This field is only relevant when type is set to LIST_MEMBERSHIP_TERM.
+                "contains": True or False, # Will be true if the term should check if the user is in the list and false if the term should check if the user is not in the list. This field is only relevant when type is set to LIST_MEMBERSHIP_TERM. False by default.
+                "negation": True or False, # Whether to negate the comparison result of this term during rule evaluation. This field is only relevant when type is left unset or set to CUSTOM_VARIABLE_TERM or REFERRER_TERM.
+                "value": "A String", # Literal to compare the variable to. This field is only relevant when type is left unset or set to CUSTOM_VARIABLE_TERM or REFERRER_TERM.
+                "variableFriendlyName": "A String", # Friendly name of this term's variable. This is a read-only, auto-generated field. This field is only relevant when type is left unset or set to CUSTOM_VARIABLE_TERM.
+                "operator": "A String", # Comparison operator of this term. This field is only relevant when type is left unset or set to CUSTOM_VARIABLE_TERM or REFERRER_TERM.
+                "type": "A String", # List population term type determines the applicable fields in this object. If left unset or set to CUSTOM_VARIABLE_TERM, then variableName, variableFriendlyName, operator, value, and negation are applicable. If set to LIST_MEMBERSHIP_TERM then remarketingListId and contains are applicable. If set to REFERRER_TERM then operator, value, and negation are applicable.
+                "variableName": "A String", # Name of the variable (U1, U2, etc.) being compared in this term. This field is only relevant when type is set to null, CUSTOM_VARIABLE_TERM or REFERRER_TERM.
+              },
+            ],
+          },
+        ],
+      },
+      "kind": "dfareporting#remarketingList", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#remarketingList".
+      "subaccountId": "A String", # Subaccount ID of this remarketing list. This is a read-only, auto-generated field that is only returned in GET requests.
+      "description": "A String", # Remarketing list description.
+      "listSize": "A String", # Number of users currently in the list. This is a read-only field.
+      "lifeSpan": "A String", # Number of days that a user should remain in the remarketing list without an impression.
+      "name": "A String", # Name of the remarketing list. This is a required field. Must be no greater than 128 characters long.
+      "advertiserId": "A String", # Dimension value for the advertiser ID that owns this remarketing list. This is a required field.
+      "listSource": "A String", # Product from which this remarketing list was originated.
+      "active": True or False, # Whether this remarketing list is active.
+      "advertiserIdDimensionValue": { # Represents a DimensionValue resource. # Dimension value for the ID of the advertiser. This is a read-only, auto-generated field.
+        "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+        "value": "A String", # The value of the dimension.
+        "dimensionName": "A String", # The name of the dimension.
+        "etag": "A String", # The eTag of this response for caching purposes.
+        "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+        "id": "A String", # The ID associated with the value if available.
+      },
+      "id": "A String", # Remarketing list ID. This is a read-only, auto-generated field.
+      "accountId": "A String", # Account ID of this remarketing list. This is a read-only, auto-generated field that is only returned in GET requests.
+    }</pre>
+</div>
+
+<div class="method">
+    <code class="details" id="update">update(profileId, body)</code>
+  <pre>Updates an existing remarketing list.
+
+Args:
+  profileId: string, User profile ID associated with this request. (required)
+  body: object, The request body. (required)
+    The object takes the form of:
+
+{ # Contains properties of a remarketing list. Remarketing enables you to create lists of users who have performed specific actions on a site, then target ads to members of those lists. This resource can be used to manage remarketing lists that are owned by your advertisers. To see all remarketing lists that are visible to your advertisers, including those that are shared to your advertiser or account, use the TargetableRemarketingLists resource.
+    "listPopulationRule": { # Remarketing List Population Rule. # Rule used to populate the remarketing list with users.
+      "floodlightActivityName": "A String", # Name of floodlight activity associated with this rule. This is a read-only, auto-generated field.
+      "floodlightActivityId": "A String", # Floodlight activity ID associated with this rule. This field can be left blank.
+      "listPopulationClauses": [ # Clauses that make up this list population rule. Clauses are joined by ANDs, and the clauses themselves are made up of list population terms which are joined by ORs.
+        { # A group clause made up of list population terms representing constraints joined by ORs.
+          "terms": [ # Terms of this list population clause. Each clause is made up of list population terms representing constraints and are joined by ORs.
+            { # Remarketing List Population Rule Term.
+              "remarketingListId": "A String", # ID of the list in question. This field is only relevant when type is set to LIST_MEMBERSHIP_TERM.
+              "contains": True or False, # Will be true if the term should check if the user is in the list and false if the term should check if the user is not in the list. This field is only relevant when type is set to LIST_MEMBERSHIP_TERM. False by default.
+              "negation": True or False, # Whether to negate the comparison result of this term during rule evaluation. This field is only relevant when type is left unset or set to CUSTOM_VARIABLE_TERM or REFERRER_TERM.
+              "value": "A String", # Literal to compare the variable to. This field is only relevant when type is left unset or set to CUSTOM_VARIABLE_TERM or REFERRER_TERM.
+              "variableFriendlyName": "A String", # Friendly name of this term's variable. This is a read-only, auto-generated field. This field is only relevant when type is left unset or set to CUSTOM_VARIABLE_TERM.
+              "operator": "A String", # Comparison operator of this term. This field is only relevant when type is left unset or set to CUSTOM_VARIABLE_TERM or REFERRER_TERM.
+              "type": "A String", # List population term type determines the applicable fields in this object. If left unset or set to CUSTOM_VARIABLE_TERM, then variableName, variableFriendlyName, operator, value, and negation are applicable. If set to LIST_MEMBERSHIP_TERM then remarketingListId and contains are applicable. If set to REFERRER_TERM then operator, value, and negation are applicable.
+              "variableName": "A String", # Name of the variable (U1, U2, etc.) being compared in this term. This field is only relevant when type is set to null, CUSTOM_VARIABLE_TERM or REFERRER_TERM.
+            },
+          ],
+        },
+      ],
+    },
+    "kind": "dfareporting#remarketingList", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#remarketingList".
+    "subaccountId": "A String", # Subaccount ID of this remarketing list. This is a read-only, auto-generated field that is only returned in GET requests.
+    "description": "A String", # Remarketing list description.
+    "listSize": "A String", # Number of users currently in the list. This is a read-only field.
+    "lifeSpan": "A String", # Number of days that a user should remain in the remarketing list without an impression.
+    "name": "A String", # Name of the remarketing list. This is a required field. Must be no greater than 128 characters long.
+    "advertiserId": "A String", # Dimension value for the advertiser ID that owns this remarketing list. This is a required field.
+    "listSource": "A String", # Product from which this remarketing list was originated.
+    "active": True or False, # Whether this remarketing list is active.
+    "advertiserIdDimensionValue": { # Represents a DimensionValue resource. # Dimension value for the ID of the advertiser. This is a read-only, auto-generated field.
+      "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+      "value": "A String", # The value of the dimension.
+      "dimensionName": "A String", # The name of the dimension.
+      "etag": "A String", # The eTag of this response for caching purposes.
+      "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+      "id": "A String", # The ID associated with the value if available.
+    },
+    "id": "A String", # Remarketing list ID. This is a read-only, auto-generated field.
+    "accountId": "A String", # Account ID of this remarketing list. This is a read-only, auto-generated field that is only returned in GET requests.
+  }
+
+
+Returns:
+  An object of the form:
+
+    { # Contains properties of a remarketing list. Remarketing enables you to create lists of users who have performed specific actions on a site, then target ads to members of those lists. This resource can be used to manage remarketing lists that are owned by your advertisers. To see all remarketing lists that are visible to your advertisers, including those that are shared to your advertiser or account, use the TargetableRemarketingLists resource.
+      "listPopulationRule": { # Remarketing List Population Rule. # Rule used to populate the remarketing list with users.
+        "floodlightActivityName": "A String", # Name of floodlight activity associated with this rule. This is a read-only, auto-generated field.
+        "floodlightActivityId": "A String", # Floodlight activity ID associated with this rule. This field can be left blank.
+        "listPopulationClauses": [ # Clauses that make up this list population rule. Clauses are joined by ANDs, and the clauses themselves are made up of list population terms which are joined by ORs.
+          { # A group clause made up of list population terms representing constraints joined by ORs.
+            "terms": [ # Terms of this list population clause. Each clause is made up of list population terms representing constraints and are joined by ORs.
+              { # Remarketing List Population Rule Term.
+                "remarketingListId": "A String", # ID of the list in question. This field is only relevant when type is set to LIST_MEMBERSHIP_TERM.
+                "contains": True or False, # Will be true if the term should check if the user is in the list and false if the term should check if the user is not in the list. This field is only relevant when type is set to LIST_MEMBERSHIP_TERM. False by default.
+                "negation": True or False, # Whether to negate the comparison result of this term during rule evaluation. This field is only relevant when type is left unset or set to CUSTOM_VARIABLE_TERM or REFERRER_TERM.
+                "value": "A String", # Literal to compare the variable to. This field is only relevant when type is left unset or set to CUSTOM_VARIABLE_TERM or REFERRER_TERM.
+                "variableFriendlyName": "A String", # Friendly name of this term's variable. This is a read-only, auto-generated field. This field is only relevant when type is left unset or set to CUSTOM_VARIABLE_TERM.
+                "operator": "A String", # Comparison operator of this term. This field is only relevant when type is left unset or set to CUSTOM_VARIABLE_TERM or REFERRER_TERM.
+                "type": "A String", # List population term type determines the applicable fields in this object. If left unset or set to CUSTOM_VARIABLE_TERM, then variableName, variableFriendlyName, operator, value, and negation are applicable. If set to LIST_MEMBERSHIP_TERM then remarketingListId and contains are applicable. If set to REFERRER_TERM then operator, value, and negation are applicable.
+                "variableName": "A String", # Name of the variable (U1, U2, etc.) being compared in this term. This field is only relevant when type is set to null, CUSTOM_VARIABLE_TERM or REFERRER_TERM.
+              },
+            ],
+          },
+        ],
+      },
+      "kind": "dfareporting#remarketingList", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#remarketingList".
+      "subaccountId": "A String", # Subaccount ID of this remarketing list. This is a read-only, auto-generated field that is only returned in GET requests.
+      "description": "A String", # Remarketing list description.
+      "listSize": "A String", # Number of users currently in the list. This is a read-only field.
+      "lifeSpan": "A String", # Number of days that a user should remain in the remarketing list without an impression.
+      "name": "A String", # Name of the remarketing list. This is a required field. Must be no greater than 128 characters long.
+      "advertiserId": "A String", # Dimension value for the advertiser ID that owns this remarketing list. This is a required field.
+      "listSource": "A String", # Product from which this remarketing list was originated.
+      "active": True or False, # Whether this remarketing list is active.
+      "advertiserIdDimensionValue": { # Represents a DimensionValue resource. # Dimension value for the ID of the advertiser. This is a read-only, auto-generated field.
+        "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+        "value": "A String", # The value of the dimension.
+        "dimensionName": "A String", # The name of the dimension.
+        "etag": "A String", # The eTag of this response for caching purposes.
+        "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+        "id": "A String", # The ID associated with the value if available.
+      },
+      "id": "A String", # Remarketing list ID. This is a read-only, auto-generated field.
+      "accountId": "A String", # Account ID of this remarketing list. This is a read-only, auto-generated field that is only returned in GET requests.
+    }</pre>
+</div>
+
+</body></html>
\ No newline at end of file
diff --git a/docs/dyn/dfareporting_v2_7.reports.compatibleFields.html b/docs/dyn/dfareporting_v2_7.reports.compatibleFields.html
new file mode 100644
index 0000000..887db76
--- /dev/null
+++ b/docs/dyn/dfareporting_v2_7.reports.compatibleFields.html
@@ -0,0 +1,551 @@
+<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="dfareporting_v2_7.html">DCM/DFA Reporting And Trafficking API</a> . <a href="dfareporting_v2_7.reports.html">reports</a> . <a href="dfareporting_v2_7.reports.compatibleFields.html">compatibleFields</a></h1>
+<h2>Instance Methods</h2>
+<p class="toc_element">
+  <code><a href="#query">query(profileId, body)</a></code></p>
+<p class="firstline">Returns the fields that are compatible to be selected in the respective sections of a report criteria, given the fields already selected in the input report and user permissions.</p>
+<h3>Method Details</h3>
+<div class="method">
+    <code class="details" id="query">query(profileId, body)</code>
+  <pre>Returns the fields that are compatible to be selected in the respective sections of a report criteria, given the fields already selected in the input report and user permissions.
+
+Args:
+  profileId: string, The DFA user profile ID. (required)
+  body: object, The request body. (required)
+    The object takes the form of:
+
+{ # Represents a Report resource.
+    "pathToConversionCriteria": { # The report criteria for a report of type "PATH_TO_CONVERSION".
+      "conversionDimensions": [ # The list of conversion dimensions the report should include.
+        { # Represents a sorted dimension.
+          "kind": "dfareporting#sortedDimension", # The kind of resource this is, in this case dfareporting#sortedDimension.
+          "name": "A String", # The name of the dimension.
+          "sortOrder": "A String", # An optional sort order for the dimension column.
+        },
+      ],
+      "metricNames": [ # The list of names of metrics the report should include.
+        "A String",
+      ],
+      "dateRange": { # Represents a date range. # The date range this report should be run for.
+        "startDate": "A String", # The start date of the date range, inclusive. A string of the format: "yyyy-MM-dd".
+        "kind": "dfareporting#dateRange", # The kind of resource this is, in this case dfareporting#dateRange.
+        "endDate": "A String", # The end date of the date range, inclusive. A string of the format: "yyyy-MM-dd".
+        "relativeDateRange": "A String", # The date range relative to the date of when the report is run.
+      },
+      "reportProperties": { # The properties of the report.
+        "clicksLookbackWindow": 42, # DFA checks to see if a click interaction occurred within the specified period of time before a conversion. By default the value is pulled from Floodlight or you can manually enter a custom value. Valid values: 1-90.
+        "pivotOnInteractionPath": True or False, # Enable pivoting on interaction path.
+        "impressionsLookbackWindow": 42, # DFA checks to see if an impression interaction occurred within the specified period of time before a conversion. By default the value is pulled from Floodlight or you can manually enter a custom value. Valid values: 1-90.
+        "includeUnattributedIPConversions": True or False, # Include conversions that have no associated cookies and no exposures. It’s therefore impossible to know how the user was exposed to your ads during the lookback window prior to a conversion.
+        "includeUnattributedCookieConversions": True or False, # Include conversions of users with a DoubleClick cookie but without an exposure. That means the user did not click or see an ad from the advertiser within the Floodlight group, or that the interaction happened outside the lookback window.
+        "maximumInteractionGap": 42, # The maximum amount of time that can take place between interactions (clicks or impressions) by the same user. Valid values: 1-90.
+        "includeAttributedIPConversions": True or False, # Deprecated: has no effect.
+        "maximumClickInteractions": 42, # The maximum number of click interactions to include in the report. Advertisers currently paying for E2C reports get up to 200 (100 clicks, 100 impressions). If another advertiser in your network is paying for E2C, you can have up to 5 total exposures per report.
+        "maximumImpressionInteractions": 42, # The maximum number of click interactions to include in the report. Advertisers currently paying for E2C reports get up to 200 (100 clicks, 100 impressions). If another advertiser in your network is paying for E2C, you can have up to 5 total exposures per report.
+      },
+      "perInteractionDimensions": [ # The list of per interaction dimensions the report should include.
+        { # Represents a sorted dimension.
+          "kind": "dfareporting#sortedDimension", # The kind of resource this is, in this case dfareporting#sortedDimension.
+          "name": "A String", # The name of the dimension.
+          "sortOrder": "A String", # An optional sort order for the dimension column.
+        },
+      ],
+      "activityFilters": [ # The list of 'dfa:activity' values to filter on.
+        { # Represents a DimensionValue resource.
+          "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+          "value": "A String", # The value of the dimension.
+          "dimensionName": "A String", # The name of the dimension.
+          "etag": "A String", # The eTag of this response for caching purposes.
+          "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+          "id": "A String", # The ID associated with the value if available.
+        },
+      ],
+      "customRichMediaEvents": [ # The list of custom rich media events to include.
+        { # Represents a DimensionValue resource.
+          "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+          "value": "A String", # The value of the dimension.
+          "dimensionName": "A String", # The name of the dimension.
+          "etag": "A String", # The eTag of this response for caching purposes.
+          "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+          "id": "A String", # The ID associated with the value if available.
+        },
+      ],
+      "floodlightConfigId": { # Represents a DimensionValue resource. # The floodlight ID for which to show data in this report. All advertisers associated with that ID will automatically be added. The dimension of the value needs to be 'dfa:floodlightConfigId'.
+        "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+        "value": "A String", # The value of the dimension.
+        "dimensionName": "A String", # The name of the dimension.
+        "etag": "A String", # The eTag of this response for caching purposes.
+        "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+        "id": "A String", # The ID associated with the value if available.
+      },
+      "customFloodlightVariables": [ # The list of custom floodlight variables the report should include.
+        { # Represents a sorted dimension.
+          "kind": "dfareporting#sortedDimension", # The kind of resource this is, in this case dfareporting#sortedDimension.
+          "name": "A String", # The name of the dimension.
+          "sortOrder": "A String", # An optional sort order for the dimension column.
+        },
+      ],
+    },
+    "kind": "dfareporting#report", # The kind of resource this is, in this case dfareporting#report.
+    "subAccountId": "A String", # The subaccount ID to which this report belongs if applicable.
+    "name": "A String", # The name of the report.
+    "schedule": { # The report's schedule. Can only be set if the report's 'dateRange' is a relative date range and the relative date range is not "TODAY".
+      "startDate": "A String", # Start date of date range for which scheduled reports should be run.
+      "runsOnDayOfMonth": "A String", # Enum to define for "MONTHLY" scheduled reports whether reports should be repeated on the same day of the month as "startDate" or the same day of the week of the month.
+          # Example: If 'startDate' is Monday, April 2nd 2012 (2012-04-02), "DAY_OF_MONTH" would run subsequent reports on the 2nd of every Month, and "WEEK_OF_MONTH" would run subsequent reports on the first Monday of the month.
+      "every": 42, # Defines every how many days, weeks or months the report should be run. Needs to be set when "repeats" is either "DAILY", "WEEKLY" or "MONTHLY".
+      "expirationDate": "A String", # The expiration date when the scheduled report stops running.
+      "active": True or False, # Whether the schedule is active or not. Must be set to either true or false.
+      "repeats": "A String", # The interval for which the report is repeated. Note:
+          # - "DAILY" also requires field "every" to be set.
+          # - "WEEKLY" also requires fields "every" and "repeatsOnWeekDays" to be set.
+          # - "MONTHLY" also requires fields "every" and "runsOnDayOfMonth" to be set.
+      "repeatsOnWeekDays": [ # List of week days "WEEKLY" on which scheduled reports should run.
+        "A String",
+      ],
+    },
+    "format": "A String", # The output format of the report. If not specified, default format is "CSV". Note that the actual format in the completed report file might differ if for instance the report's size exceeds the format's capabilities. "CSV" will then be the fallback format.
+    "ownerProfileId": "A String", # The user profile id of the owner of this report.
+    "reachCriteria": { # The report criteria for a report of type "REACH".
+      "activities": { # Represents an activity group. # Activity group.
+        "kind": "dfareporting#activities", # The kind of resource this is, in this case dfareporting#activities.
+        "filters": [ # List of activity filters. The dimension values need to be all either of type "dfa:activity" or "dfa:activityGroup".
+          { # Represents a DimensionValue resource.
+            "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+            "value": "A String", # The value of the dimension.
+            "dimensionName": "A String", # The name of the dimension.
+            "etag": "A String", # The eTag of this response for caching purposes.
+            "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+            "id": "A String", # The ID associated with the value if available.
+          },
+        ],
+        "metricNames": [ # List of names of floodlight activity metrics.
+          "A String",
+        ],
+      },
+      "dimensions": [ # The list of dimensions the report should include.
+        { # Represents a sorted dimension.
+          "kind": "dfareporting#sortedDimension", # The kind of resource this is, in this case dfareporting#sortedDimension.
+          "name": "A String", # The name of the dimension.
+          "sortOrder": "A String", # An optional sort order for the dimension column.
+        },
+      ],
+      "metricNames": [ # The list of names of metrics the report should include.
+        "A String",
+      ],
+      "dateRange": { # Represents a date range. # The date range this report should be run for.
+        "startDate": "A String", # The start date of the date range, inclusive. A string of the format: "yyyy-MM-dd".
+        "kind": "dfareporting#dateRange", # The kind of resource this is, in this case dfareporting#dateRange.
+        "endDate": "A String", # The end date of the date range, inclusive. A string of the format: "yyyy-MM-dd".
+        "relativeDateRange": "A String", # The date range relative to the date of when the report is run.
+      },
+      "dimensionFilters": [ # The list of filters on which dimensions are filtered.
+          # Filters for different dimensions are ANDed, filters for the same dimension are grouped together and ORed.
+        { # Represents a DimensionValue resource.
+          "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+          "value": "A String", # The value of the dimension.
+          "dimensionName": "A String", # The name of the dimension.
+          "etag": "A String", # The eTag of this response for caching purposes.
+          "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+          "id": "A String", # The ID associated with the value if available.
+        },
+      ],
+      "reachByFrequencyMetricNames": [ # The list of names of  Reach By Frequency metrics the report should include.
+        "A String",
+      ],
+      "customRichMediaEvents": { # Represents a Custom Rich Media Events group. # Custom Rich Media Events group.
+        "kind": "dfareporting#customRichMediaEvents", # The kind of resource this is, in this case dfareporting#customRichMediaEvents.
+        "filteredEventIds": [ # List of custom rich media event IDs. Dimension values must be all of type dfa:richMediaEventTypeIdAndName.
+          { # Represents a DimensionValue resource.
+            "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+            "value": "A String", # The value of the dimension.
+            "dimensionName": "A String", # The name of the dimension.
+            "etag": "A String", # The eTag of this response for caching purposes.
+            "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+            "id": "A String", # The ID associated with the value if available.
+          },
+        ],
+      },
+      "enableAllDimensionCombinations": True or False, # Whether to enable all reach dimension combinations in the report. Defaults to false. If enabled, the date range of the report should be within the last three months.
+    },
+    "floodlightCriteria": { # The report criteria for a report of type "FLOODLIGHT".
+      "dimensions": [ # The list of dimensions the report should include.
+        { # Represents a sorted dimension.
+          "kind": "dfareporting#sortedDimension", # The kind of resource this is, in this case dfareporting#sortedDimension.
+          "name": "A String", # The name of the dimension.
+          "sortOrder": "A String", # An optional sort order for the dimension column.
+        },
+      ],
+      "metricNames": [ # The list of names of metrics the report should include.
+        "A String",
+      ],
+      "dateRange": { # Represents a date range. # The date range this report should be run for.
+        "startDate": "A String", # The start date of the date range, inclusive. A string of the format: "yyyy-MM-dd".
+        "kind": "dfareporting#dateRange", # The kind of resource this is, in this case dfareporting#dateRange.
+        "endDate": "A String", # The end date of the date range, inclusive. A string of the format: "yyyy-MM-dd".
+        "relativeDateRange": "A String", # The date range relative to the date of when the report is run.
+      },
+      "dimensionFilters": [ # The list of filters on which dimensions are filtered.
+          # Filters for different dimensions are ANDed, filters for the same dimension are grouped together and ORed.
+        { # Represents a DimensionValue resource.
+          "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+          "value": "A String", # The value of the dimension.
+          "dimensionName": "A String", # The name of the dimension.
+          "etag": "A String", # The eTag of this response for caching purposes.
+          "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+          "id": "A String", # The ID associated with the value if available.
+        },
+      ],
+      "floodlightConfigId": { # Represents a DimensionValue resource. # The floodlight ID for which to show data in this report. All advertisers associated with that ID will automatically be added. The dimension of the value needs to be 'dfa:floodlightConfigId'.
+        "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+        "value": "A String", # The value of the dimension.
+        "dimensionName": "A String", # The name of the dimension.
+        "etag": "A String", # The eTag of this response for caching purposes.
+        "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+        "id": "A String", # The ID associated with the value if available.
+      },
+      "customRichMediaEvents": [ # The list of custom rich media events to include.
+        { # Represents a DimensionValue resource.
+          "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+          "value": "A String", # The value of the dimension.
+          "dimensionName": "A String", # The name of the dimension.
+          "etag": "A String", # The eTag of this response for caching purposes.
+          "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+          "id": "A String", # The ID associated with the value if available.
+        },
+      ],
+      "reportProperties": { # The properties of the report.
+        "includeUnattributedIPConversions": True or False, # Include conversions that have no associated cookies and no exposures. It’s therefore impossible to know how the user was exposed to your ads during the lookback window prior to a conversion.
+        "includeUnattributedCookieConversions": True or False, # Include conversions of users with a DoubleClick cookie but without an exposure. That means the user did not click or see an ad from the advertiser within the Floodlight group, or that the interaction happened outside the lookback window.
+        "includeAttributedIPConversions": True or False, # Include conversions that have no cookie, but do have an exposure path.
+      },
+    },
+    "fileName": "A String", # The filename used when generating report files for this report.
+    "delivery": { # The report's email delivery settings.
+      "message": "A String", # The message to be sent with each email.
+      "emailOwnerDeliveryType": "A String", # The type of delivery for the owner to receive, if enabled.
+      "recipients": [ # The list of recipients to which to email the report.
+        { # Represents a recipient.
+          "kind": "dfareporting#recipient", # The kind of resource this is, in this case dfareporting#recipient.
+          "deliveryType": "A String", # The delivery type for the recipient.
+          "email": "A String", # The email address of the recipient.
+        },
+      ],
+      "emailOwner": True or False, # Whether the report should be emailed to the report owner.
+    },
+    "etag": "A String", # The eTag of this response for caching purposes.
+    "criteria": { # The report criteria for a report of type "STANDARD".
+      "activities": { # Represents an activity group. # Activity group.
+        "kind": "dfareporting#activities", # The kind of resource this is, in this case dfareporting#activities.
+        "filters": [ # List of activity filters. The dimension values need to be all either of type "dfa:activity" or "dfa:activityGroup".
+          { # Represents a DimensionValue resource.
+            "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+            "value": "A String", # The value of the dimension.
+            "dimensionName": "A String", # The name of the dimension.
+            "etag": "A String", # The eTag of this response for caching purposes.
+            "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+            "id": "A String", # The ID associated with the value if available.
+          },
+        ],
+        "metricNames": [ # List of names of floodlight activity metrics.
+          "A String",
+        ],
+      },
+      "dimensions": [ # The list of standard dimensions the report should include.
+        { # Represents a sorted dimension.
+          "kind": "dfareporting#sortedDimension", # The kind of resource this is, in this case dfareporting#sortedDimension.
+          "name": "A String", # The name of the dimension.
+          "sortOrder": "A String", # An optional sort order for the dimension column.
+        },
+      ],
+      "metricNames": [ # The list of names of metrics the report should include.
+        "A String",
+      ],
+      "dateRange": { # Represents a date range. # The date range for which this report should be run.
+        "startDate": "A String", # The start date of the date range, inclusive. A string of the format: "yyyy-MM-dd".
+        "kind": "dfareporting#dateRange", # The kind of resource this is, in this case dfareporting#dateRange.
+        "endDate": "A String", # The end date of the date range, inclusive. A string of the format: "yyyy-MM-dd".
+        "relativeDateRange": "A String", # The date range relative to the date of when the report is run.
+      },
+      "dimensionFilters": [ # The list of filters on which dimensions are filtered.
+          # Filters for different dimensions are ANDed, filters for the same dimension are grouped together and ORed.
+        { # Represents a DimensionValue resource.
+          "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+          "value": "A String", # The value of the dimension.
+          "dimensionName": "A String", # The name of the dimension.
+          "etag": "A String", # The eTag of this response for caching purposes.
+          "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+          "id": "A String", # The ID associated with the value if available.
+        },
+      ],
+      "customRichMediaEvents": { # Represents a Custom Rich Media Events group. # Custom Rich Media Events group.
+        "kind": "dfareporting#customRichMediaEvents", # The kind of resource this is, in this case dfareporting#customRichMediaEvents.
+        "filteredEventIds": [ # List of custom rich media event IDs. Dimension values must be all of type dfa:richMediaEventTypeIdAndName.
+          { # Represents a DimensionValue resource.
+            "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+            "value": "A String", # The value of the dimension.
+            "dimensionName": "A String", # The name of the dimension.
+            "etag": "A String", # The eTag of this response for caching purposes.
+            "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+            "id": "A String", # The ID associated with the value if available.
+          },
+        ],
+      },
+    },
+    "id": "A String", # The unique ID identifying this report resource.
+    "lastModifiedTime": "A String", # The timestamp (in milliseconds since epoch) of when this report was last modified.
+    "type": "A String", # The type of the report.
+    "crossDimensionReachCriteria": { # The report criteria for a report of type "CROSS_DIMENSION_REACH".
+      "breakdown": [ # The list of dimensions the report should include.
+        { # Represents a sorted dimension.
+          "kind": "dfareporting#sortedDimension", # The kind of resource this is, in this case dfareporting#sortedDimension.
+          "name": "A String", # The name of the dimension.
+          "sortOrder": "A String", # An optional sort order for the dimension column.
+        },
+      ],
+      "overlapMetricNames": [ # The list of names of overlap metrics the report should include.
+        "A String",
+      ],
+      "metricNames": [ # The list of names of metrics the report should include.
+        "A String",
+      ],
+      "dateRange": { # Represents a date range. # The date range this report should be run for.
+        "startDate": "A String", # The start date of the date range, inclusive. A string of the format: "yyyy-MM-dd".
+        "kind": "dfareporting#dateRange", # The kind of resource this is, in this case dfareporting#dateRange.
+        "endDate": "A String", # The end date of the date range, inclusive. A string of the format: "yyyy-MM-dd".
+        "relativeDateRange": "A String", # The date range relative to the date of when the report is run.
+      },
+      "dimensionFilters": [ # The list of filters on which dimensions are filtered.
+        { # Represents a DimensionValue resource.
+          "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+          "value": "A String", # The value of the dimension.
+          "dimensionName": "A String", # The name of the dimension.
+          "etag": "A String", # The eTag of this response for caching purposes.
+          "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+          "id": "A String", # The ID associated with the value if available.
+        },
+      ],
+      "pivoted": True or False, # Whether the report is pivoted or not. Defaults to true.
+      "dimension": "A String", # The dimension option.
+    },
+    "accountId": "A String", # The account ID to which this report belongs.
+  }
+
+
+Returns:
+  An object of the form:
+
+    { # Represents a response to the queryCompatibleFields method.
+    "kind": "dfareporting#compatibleFields", # The kind of resource this is, in this case dfareporting#compatibleFields.
+    "reachReportCompatibleFields": { # Represents fields that are compatible to be selected for a report of type "REACH". # Contains items that are compatible to be selected for a report of type "REACH".
+      "kind": "dfareporting#reachReportCompatibleFields", # The kind of resource this is, in this case dfareporting#reachReportCompatibleFields.
+      "dimensions": [ # Dimensions which are compatible to be selected in the "dimensions" section of the report.
+        { # Represents a dimension.
+          "kind": "dfareporting#dimension", # The kind of resource this is, in this case dfareporting#dimension.
+          "name": "A String", # The dimension name, e.g. dfa:advertiser
+        },
+      ],
+      "reachByFrequencyMetrics": [ # Metrics which are compatible to be selected in the "reachByFrequencyMetricNames" section of the report.
+        { # Represents a metric.
+          "kind": "dfareporting#metric", # The kind of resource this is, in this case dfareporting#metric.
+          "name": "A String", # The metric name, e.g. dfa:impressions
+        },
+      ],
+      "pivotedActivityMetrics": [ # Metrics which are compatible to be selected as activity metrics to pivot on in the "activities" section of the report.
+        { # Represents a metric.
+          "kind": "dfareporting#metric", # The kind of resource this is, in this case dfareporting#metric.
+          "name": "A String", # The metric name, e.g. dfa:impressions
+        },
+      ],
+      "dimensionFilters": [ # Dimensions which are compatible to be selected in the "dimensionFilters" section of the report.
+        { # Represents a dimension.
+          "kind": "dfareporting#dimension", # The kind of resource this is, in this case dfareporting#dimension.
+          "name": "A String", # The dimension name, e.g. dfa:advertiser
+        },
+      ],
+      "metrics": [ # Metrics which are compatible to be selected in the "metricNames" section of the report.
+        { # Represents a metric.
+          "kind": "dfareporting#metric", # The kind of resource this is, in this case dfareporting#metric.
+          "name": "A String", # The metric name, e.g. dfa:impressions
+        },
+      ],
+    },
+    "pathToConversionReportCompatibleFields": { # Represents fields that are compatible to be selected for a report of type "PATH_TO_CONVERSION". # Contains items that are compatible to be selected for a report of type "PATH_TO_CONVERSION".
+      "metrics": [ # Metrics which are compatible to be selected in the "metricNames" section of the report.
+        { # Represents a metric.
+          "kind": "dfareporting#metric", # The kind of resource this is, in this case dfareporting#metric.
+          "name": "A String", # The metric name, e.g. dfa:impressions
+        },
+      ],
+      "perInteractionDimensions": [ # Per-interaction dimensions which are compatible to be selected in the "perInteractionDimensions" section of the report.
+        { # Represents a dimension.
+          "kind": "dfareporting#dimension", # The kind of resource this is, in this case dfareporting#dimension.
+          "name": "A String", # The dimension name, e.g. dfa:advertiser
+        },
+      ],
+      "kind": "dfareporting#pathToConversionReportCompatibleFields", # The kind of resource this is, in this case dfareporting#pathToConversionReportCompatibleFields.
+      "conversionDimensions": [ # Conversion dimensions which are compatible to be selected in the "conversionDimensions" section of the report.
+        { # Represents a dimension.
+          "kind": "dfareporting#dimension", # The kind of resource this is, in this case dfareporting#dimension.
+          "name": "A String", # The dimension name, e.g. dfa:advertiser
+        },
+      ],
+      "customFloodlightVariables": [ # Custom floodlight variables which are compatible to be selected in the "customFloodlightVariables" section of the report.
+        { # Represents a dimension.
+          "kind": "dfareporting#dimension", # The kind of resource this is, in this case dfareporting#dimension.
+          "name": "A String", # The dimension name, e.g. dfa:advertiser
+        },
+      ],
+    },
+    "crossDimensionReachReportCompatibleFields": { # Represents fields that are compatible to be selected for a report of type "CROSS_DIMENSION_REACH". # Contains items that are compatible to be selected for a report of type "CROSS_DIMENSION_REACH".
+      "breakdown": [ # Dimensions which are compatible to be selected in the "breakdown" section of the report.
+        { # Represents a dimension.
+          "kind": "dfareporting#dimension", # The kind of resource this is, in this case dfareporting#dimension.
+          "name": "A String", # The dimension name, e.g. dfa:advertiser
+        },
+      ],
+      "metrics": [ # Metrics which are compatible to be selected in the "metricNames" section of the report.
+        { # Represents a metric.
+          "kind": "dfareporting#metric", # The kind of resource this is, in this case dfareporting#metric.
+          "name": "A String", # The metric name, e.g. dfa:impressions
+        },
+      ],
+      "kind": "dfareporting#crossDimensionReachReportCompatibleFields", # The kind of resource this is, in this case dfareporting#crossDimensionReachReportCompatibleFields.
+      "overlapMetrics": [ # Metrics which are compatible to be selected in the "overlapMetricNames" section of the report.
+        { # Represents a metric.
+          "kind": "dfareporting#metric", # The kind of resource this is, in this case dfareporting#metric.
+          "name": "A String", # The metric name, e.g. dfa:impressions
+        },
+      ],
+      "dimensionFilters": [ # Dimensions which are compatible to be selected in the "dimensionFilters" section of the report.
+        { # Represents a dimension.
+          "kind": "dfareporting#dimension", # The kind of resource this is, in this case dfareporting#dimension.
+          "name": "A String", # The dimension name, e.g. dfa:advertiser
+        },
+      ],
+    },
+    "floodlightReportCompatibleFields": { # Represents fields that are compatible to be selected for a report of type "FlOODLIGHT". # Contains items that are compatible to be selected for a report of type "FLOODLIGHT".
+      "metrics": [ # Metrics which are compatible to be selected in the "metricNames" section of the report.
+        { # Represents a metric.
+          "kind": "dfareporting#metric", # The kind of resource this is, in this case dfareporting#metric.
+          "name": "A String", # The metric name, e.g. dfa:impressions
+        },
+      ],
+      "kind": "dfareporting#floodlightReportCompatibleFields", # The kind of resource this is, in this case dfareporting#floodlightReportCompatibleFields.
+      "dimensionFilters": [ # Dimensions which are compatible to be selected in the "dimensionFilters" section of the report.
+        { # Represents a dimension.
+          "kind": "dfareporting#dimension", # The kind of resource this is, in this case dfareporting#dimension.
+          "name": "A String", # The dimension name, e.g. dfa:advertiser
+        },
+      ],
+      "dimensions": [ # Dimensions which are compatible to be selected in the "dimensions" section of the report.
+        { # Represents a dimension.
+          "kind": "dfareporting#dimension", # The kind of resource this is, in this case dfareporting#dimension.
+          "name": "A String", # The dimension name, e.g. dfa:advertiser
+        },
+      ],
+    },
+    "reportCompatibleFields": { # Represents fields that are compatible to be selected for a report of type "STANDARD". # Contains items that are compatible to be selected for a report of type "STANDARD".
+      "metrics": [ # Metrics which are compatible to be selected in the "metricNames" section of the report.
+        { # Represents a metric.
+          "kind": "dfareporting#metric", # The kind of resource this is, in this case dfareporting#metric.
+          "name": "A String", # The metric name, e.g. dfa:impressions
+        },
+      ],
+      "kind": "dfareporting#reportCompatibleFields", # The kind of resource this is, in this case dfareporting#reportCompatibleFields.
+      "pivotedActivityMetrics": [ # Metrics which are compatible to be selected as activity metrics to pivot on in the "activities" section of the report.
+        { # Represents a metric.
+          "kind": "dfareporting#metric", # The kind of resource this is, in this case dfareporting#metric.
+          "name": "A String", # The metric name, e.g. dfa:impressions
+        },
+      ],
+      "dimensionFilters": [ # Dimensions which are compatible to be selected in the "dimensionFilters" section of the report.
+        { # Represents a dimension.
+          "kind": "dfareporting#dimension", # The kind of resource this is, in this case dfareporting#dimension.
+          "name": "A String", # The dimension name, e.g. dfa:advertiser
+        },
+      ],
+      "dimensions": [ # Dimensions which are compatible to be selected in the "dimensions" section of the report.
+        { # Represents a dimension.
+          "kind": "dfareporting#dimension", # The kind of resource this is, in this case dfareporting#dimension.
+          "name": "A String", # The dimension name, e.g. dfa:advertiser
+        },
+      ],
+    },
+  }</pre>
+</div>
+
+</body></html>
\ No newline at end of file
diff --git a/docs/dyn/dfareporting_v2_7.reports.files.html b/docs/dyn/dfareporting_v2_7.reports.files.html
new file mode 100644
index 0000000..6c8e4f0
--- /dev/null
+++ b/docs/dyn/dfareporting_v2_7.reports.files.html
@@ -0,0 +1,203 @@
+<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="dfareporting_v2_7.html">DCM/DFA Reporting And Trafficking API</a> . <a href="dfareporting_v2_7.reports.html">reports</a> . <a href="dfareporting_v2_7.reports.files.html">files</a></h1>
+<h2>Instance Methods</h2>
+<p class="toc_element">
+  <code><a href="#get">get(profileId, reportId, fileId)</a></code></p>
+<p class="firstline">Retrieves a report file.</p>
+<p class="toc_element">
+  <code><a href="#get_media">get_media(profileId, reportId, fileId)</a></code></p>
+<p class="firstline">Retrieves a report file.</p>
+<p class="toc_element">
+  <code><a href="#list">list(profileId, reportId, pageToken=None, sortField=None, maxResults=None, sortOrder=None)</a></code></p>
+<p class="firstline">Lists files for a report.</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>
+<h3>Method Details</h3>
+<div class="method">
+    <code class="details" id="get">get(profileId, reportId, fileId)</code>
+  <pre>Retrieves a report file.
+
+Args:
+  profileId: string, The DFA profile ID. (required)
+  reportId: string, The ID of the report. (required)
+  fileId: string, The ID of the report file. (required)
+
+Returns:
+  An object of the form:
+
+    { # Represents a File resource. A file contains the metadata for a report run. It shows the status of the run and holds the URLs to the generated report data if the run is finished and the status is "REPORT_AVAILABLE".
+    "status": "A String", # The status of the report file.
+    "kind": "dfareporting#file", # The kind of resource this is, in this case dfareporting#file.
+    "format": "A String", # The output format of the report. Only available once the file is available.
+    "dateRange": { # Represents a date range. # The date range for which the file has report data. The date range will always be the absolute date range for which the report is run.
+      "startDate": "A String", # The start date of the date range, inclusive. A string of the format: "yyyy-MM-dd".
+      "kind": "dfareporting#dateRange", # The kind of resource this is, in this case dfareporting#dateRange.
+      "endDate": "A String", # The end date of the date range, inclusive. A string of the format: "yyyy-MM-dd".
+      "relativeDateRange": "A String", # The date range relative to the date of when the report is run.
+    },
+    "fileName": "A String", # The filename of the file.
+    "etag": "A String", # The eTag of this response for caching purposes.
+    "reportId": "A String", # The ID of the report this file was generated from.
+    "urls": { # The URLs where the completed report file can be downloaded.
+      "browserUrl": "A String", # The URL for downloading the report data through a browser.
+      "apiUrl": "A String", # The URL for downloading the report data through the API.
+    },
+    "lastModifiedTime": "A String", # The timestamp in milliseconds since epoch when this file was last modified.
+    "id": "A String", # The unique ID of this report file.
+  }</pre>
+</div>
+
+<div class="method">
+    <code class="details" id="get_media">get_media(profileId, reportId, fileId)</code>
+  <pre>Retrieves a report file.
+
+Args:
+  profileId: string, The DFA profile ID. (required)
+  reportId: string, The ID of the report. (required)
+  fileId: string, The ID of the report file. (required)
+
+Returns:
+  The media object as a string.
+
+    </pre>
+</div>
+
+<div class="method">
+    <code class="details" id="list">list(profileId, reportId, pageToken=None, sortField=None, maxResults=None, sortOrder=None)</code>
+  <pre>Lists files for a report.
+
+Args:
+  profileId: string, The DFA profile ID. (required)
+  reportId: string, The ID of the parent report. (required)
+  pageToken: string, The value of the nextToken from the previous result page.
+  sortField: string, The field by which to sort the list.
+    Allowed values
+      ID - Sort by file ID.
+      LAST_MODIFIED_TIME - Sort by 'lastmodifiedAt' field.
+  maxResults: integer, Maximum number of results to return.
+  sortOrder: string, Order of sorted results, default is 'DESCENDING'.
+    Allowed values
+      ASCENDING - Ascending order.
+      DESCENDING - Descending order.
+
+Returns:
+  An object of the form:
+
+    { # Represents the list of File resources.
+    "nextPageToken": "A String", # Continuation token used to page through files. To retrieve the next page of results, set the next request's "pageToken" to the value of this field. The page token is only valid for a limited amount of time and should not be persisted.
+    "items": [ # The files returned in this response.
+      { # Represents a File resource. A file contains the metadata for a report run. It shows the status of the run and holds the URLs to the generated report data if the run is finished and the status is "REPORT_AVAILABLE".
+        "status": "A String", # The status of the report file.
+        "kind": "dfareporting#file", # The kind of resource this is, in this case dfareporting#file.
+        "format": "A String", # The output format of the report. Only available once the file is available.
+        "dateRange": { # Represents a date range. # The date range for which the file has report data. The date range will always be the absolute date range for which the report is run.
+          "startDate": "A String", # The start date of the date range, inclusive. A string of the format: "yyyy-MM-dd".
+          "kind": "dfareporting#dateRange", # The kind of resource this is, in this case dfareporting#dateRange.
+          "endDate": "A String", # The end date of the date range, inclusive. A string of the format: "yyyy-MM-dd".
+          "relativeDateRange": "A String", # The date range relative to the date of when the report is run.
+        },
+        "fileName": "A String", # The filename of the file.
+        "etag": "A String", # The eTag of this response for caching purposes.
+        "reportId": "A String", # The ID of the report this file was generated from.
+        "urls": { # The URLs where the completed report file can be downloaded.
+          "browserUrl": "A String", # The URL for downloading the report data through a browser.
+          "apiUrl": "A String", # The URL for downloading the report data through the API.
+        },
+        "lastModifiedTime": "A String", # The timestamp in milliseconds since epoch when this file was last modified.
+        "id": "A String", # The unique ID of this report file.
+      },
+    ],
+    "kind": "dfareporting#fileList", # The kind of list this is, in this case dfareporting#fileList.
+    "etag": "A String", # The eTag of this response for caching purposes.
+  }</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>
+
+</body></html>
\ No newline at end of file
diff --git a/docs/dyn/dfareporting_v2_7.reports.html b/docs/dyn/dfareporting_v2_7.reports.html
new file mode 100644
index 0000000..8ac050c
--- /dev/null
+++ b/docs/dyn/dfareporting_v2_7.reports.html
@@ -0,0 +1,2795 @@
+<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="dfareporting_v2_7.html">DCM/DFA Reporting And Trafficking API</a> . <a href="dfareporting_v2_7.reports.html">reports</a></h1>
+<h2>Instance Methods</h2>
+<p class="toc_element">
+  <code><a href="dfareporting_v2_7.reports.compatibleFields.html">compatibleFields()</a></code>
+</p>
+<p class="firstline">Returns the compatibleFields Resource.</p>
+
+<p class="toc_element">
+  <code><a href="dfareporting_v2_7.reports.files.html">files()</a></code>
+</p>
+<p class="firstline">Returns the files Resource.</p>
+
+<p class="toc_element">
+  <code><a href="#delete">delete(profileId, reportId)</a></code></p>
+<p class="firstline">Deletes a report by its ID.</p>
+<p class="toc_element">
+  <code><a href="#get">get(profileId, reportId)</a></code></p>
+<p class="firstline">Retrieves a report by its ID.</p>
+<p class="toc_element">
+  <code><a href="#insert">insert(profileId, body)</a></code></p>
+<p class="firstline">Creates a report.</p>
+<p class="toc_element">
+  <code><a href="#list">list(profileId, pageToken=None, maxResults=None, sortOrder=None, sortField=None, scope=None)</a></code></p>
+<p class="firstline">Retrieves list of reports.</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="#patch">patch(profileId, reportId, body)</a></code></p>
+<p class="firstline">Updates a report. This method supports patch semantics.</p>
+<p class="toc_element">
+  <code><a href="#run">run(profileId, reportId, synchronous=None)</a></code></p>
+<p class="firstline">Runs a report.</p>
+<p class="toc_element">
+  <code><a href="#update">update(profileId, reportId, body)</a></code></p>
+<p class="firstline">Updates a report.</p>
+<h3>Method Details</h3>
+<div class="method">
+    <code class="details" id="delete">delete(profileId, reportId)</code>
+  <pre>Deletes a report by its ID.
+
+Args:
+  profileId: string, The DFA user profile ID. (required)
+  reportId: string, The ID of the report. (required)
+</pre>
+</div>
+
+<div class="method">
+    <code class="details" id="get">get(profileId, reportId)</code>
+  <pre>Retrieves a report by its ID.
+
+Args:
+  profileId: string, The DFA user profile ID. (required)
+  reportId: string, The ID of the report. (required)
+
+Returns:
+  An object of the form:
+
+    { # Represents a Report resource.
+      "pathToConversionCriteria": { # The report criteria for a report of type "PATH_TO_CONVERSION".
+        "conversionDimensions": [ # The list of conversion dimensions the report should include.
+          { # Represents a sorted dimension.
+            "kind": "dfareporting#sortedDimension", # The kind of resource this is, in this case dfareporting#sortedDimension.
+            "name": "A String", # The name of the dimension.
+            "sortOrder": "A String", # An optional sort order for the dimension column.
+          },
+        ],
+        "metricNames": [ # The list of names of metrics the report should include.
+          "A String",
+        ],
+        "dateRange": { # Represents a date range. # The date range this report should be run for.
+          "startDate": "A String", # The start date of the date range, inclusive. A string of the format: "yyyy-MM-dd".
+          "kind": "dfareporting#dateRange", # The kind of resource this is, in this case dfareporting#dateRange.
+          "endDate": "A String", # The end date of the date range, inclusive. A string of the format: "yyyy-MM-dd".
+          "relativeDateRange": "A String", # The date range relative to the date of when the report is run.
+        },
+        "reportProperties": { # The properties of the report.
+          "clicksLookbackWindow": 42, # DFA checks to see if a click interaction occurred within the specified period of time before a conversion. By default the value is pulled from Floodlight or you can manually enter a custom value. Valid values: 1-90.
+          "pivotOnInteractionPath": True or False, # Enable pivoting on interaction path.
+          "impressionsLookbackWindow": 42, # DFA checks to see if an impression interaction occurred within the specified period of time before a conversion. By default the value is pulled from Floodlight or you can manually enter a custom value. Valid values: 1-90.
+          "includeUnattributedIPConversions": True or False, # Include conversions that have no associated cookies and no exposures. It’s therefore impossible to know how the user was exposed to your ads during the lookback window prior to a conversion.
+          "includeUnattributedCookieConversions": True or False, # Include conversions of users with a DoubleClick cookie but without an exposure. That means the user did not click or see an ad from the advertiser within the Floodlight group, or that the interaction happened outside the lookback window.
+          "maximumInteractionGap": 42, # The maximum amount of time that can take place between interactions (clicks or impressions) by the same user. Valid values: 1-90.
+          "includeAttributedIPConversions": True or False, # Deprecated: has no effect.
+          "maximumClickInteractions": 42, # The maximum number of click interactions to include in the report. Advertisers currently paying for E2C reports get up to 200 (100 clicks, 100 impressions). If another advertiser in your network is paying for E2C, you can have up to 5 total exposures per report.
+          "maximumImpressionInteractions": 42, # The maximum number of click interactions to include in the report. Advertisers currently paying for E2C reports get up to 200 (100 clicks, 100 impressions). If another advertiser in your network is paying for E2C, you can have up to 5 total exposures per report.
+        },
+        "perInteractionDimensions": [ # The list of per interaction dimensions the report should include.
+          { # Represents a sorted dimension.
+            "kind": "dfareporting#sortedDimension", # The kind of resource this is, in this case dfareporting#sortedDimension.
+            "name": "A String", # The name of the dimension.
+            "sortOrder": "A String", # An optional sort order for the dimension column.
+          },
+        ],
+        "activityFilters": [ # The list of 'dfa:activity' values to filter on.
+          { # Represents a DimensionValue resource.
+            "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+            "value": "A String", # The value of the dimension.
+            "dimensionName": "A String", # The name of the dimension.
+            "etag": "A String", # The eTag of this response for caching purposes.
+            "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+            "id": "A String", # The ID associated with the value if available.
+          },
+        ],
+        "customRichMediaEvents": [ # The list of custom rich media events to include.
+          { # Represents a DimensionValue resource.
+            "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+            "value": "A String", # The value of the dimension.
+            "dimensionName": "A String", # The name of the dimension.
+            "etag": "A String", # The eTag of this response for caching purposes.
+            "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+            "id": "A String", # The ID associated with the value if available.
+          },
+        ],
+        "floodlightConfigId": { # Represents a DimensionValue resource. # The floodlight ID for which to show data in this report. All advertisers associated with that ID will automatically be added. The dimension of the value needs to be 'dfa:floodlightConfigId'.
+          "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+          "value": "A String", # The value of the dimension.
+          "dimensionName": "A String", # The name of the dimension.
+          "etag": "A String", # The eTag of this response for caching purposes.
+          "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+          "id": "A String", # The ID associated with the value if available.
+        },
+        "customFloodlightVariables": [ # The list of custom floodlight variables the report should include.
+          { # Represents a sorted dimension.
+            "kind": "dfareporting#sortedDimension", # The kind of resource this is, in this case dfareporting#sortedDimension.
+            "name": "A String", # The name of the dimension.
+            "sortOrder": "A String", # An optional sort order for the dimension column.
+          },
+        ],
+      },
+      "kind": "dfareporting#report", # The kind of resource this is, in this case dfareporting#report.
+      "subAccountId": "A String", # The subaccount ID to which this report belongs if applicable.
+      "name": "A String", # The name of the report.
+      "schedule": { # The report's schedule. Can only be set if the report's 'dateRange' is a relative date range and the relative date range is not "TODAY".
+        "startDate": "A String", # Start date of date range for which scheduled reports should be run.
+        "runsOnDayOfMonth": "A String", # Enum to define for "MONTHLY" scheduled reports whether reports should be repeated on the same day of the month as "startDate" or the same day of the week of the month.
+            # Example: If 'startDate' is Monday, April 2nd 2012 (2012-04-02), "DAY_OF_MONTH" would run subsequent reports on the 2nd of every Month, and "WEEK_OF_MONTH" would run subsequent reports on the first Monday of the month.
+        "every": 42, # Defines every how many days, weeks or months the report should be run. Needs to be set when "repeats" is either "DAILY", "WEEKLY" or "MONTHLY".
+        "expirationDate": "A String", # The expiration date when the scheduled report stops running.
+        "active": True or False, # Whether the schedule is active or not. Must be set to either true or false.
+        "repeats": "A String", # The interval for which the report is repeated. Note:
+            # - "DAILY" also requires field "every" to be set.
+            # - "WEEKLY" also requires fields "every" and "repeatsOnWeekDays" to be set.
+            # - "MONTHLY" also requires fields "every" and "runsOnDayOfMonth" to be set.
+        "repeatsOnWeekDays": [ # List of week days "WEEKLY" on which scheduled reports should run.
+          "A String",
+        ],
+      },
+      "format": "A String", # The output format of the report. If not specified, default format is "CSV". Note that the actual format in the completed report file might differ if for instance the report's size exceeds the format's capabilities. "CSV" will then be the fallback format.
+      "ownerProfileId": "A String", # The user profile id of the owner of this report.
+      "reachCriteria": { # The report criteria for a report of type "REACH".
+        "activities": { # Represents an activity group. # Activity group.
+          "kind": "dfareporting#activities", # The kind of resource this is, in this case dfareporting#activities.
+          "filters": [ # List of activity filters. The dimension values need to be all either of type "dfa:activity" or "dfa:activityGroup".
+            { # Represents a DimensionValue resource.
+              "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+              "value": "A String", # The value of the dimension.
+              "dimensionName": "A String", # The name of the dimension.
+              "etag": "A String", # The eTag of this response for caching purposes.
+              "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+              "id": "A String", # The ID associated with the value if available.
+            },
+          ],
+          "metricNames": [ # List of names of floodlight activity metrics.
+            "A String",
+          ],
+        },
+        "dimensions": [ # The list of dimensions the report should include.
+          { # Represents a sorted dimension.
+            "kind": "dfareporting#sortedDimension", # The kind of resource this is, in this case dfareporting#sortedDimension.
+            "name": "A String", # The name of the dimension.
+            "sortOrder": "A String", # An optional sort order for the dimension column.
+          },
+        ],
+        "metricNames": [ # The list of names of metrics the report should include.
+          "A String",
+        ],
+        "dateRange": { # Represents a date range. # The date range this report should be run for.
+          "startDate": "A String", # The start date of the date range, inclusive. A string of the format: "yyyy-MM-dd".
+          "kind": "dfareporting#dateRange", # The kind of resource this is, in this case dfareporting#dateRange.
+          "endDate": "A String", # The end date of the date range, inclusive. A string of the format: "yyyy-MM-dd".
+          "relativeDateRange": "A String", # The date range relative to the date of when the report is run.
+        },
+        "dimensionFilters": [ # The list of filters on which dimensions are filtered.
+            # Filters for different dimensions are ANDed, filters for the same dimension are grouped together and ORed.
+          { # Represents a DimensionValue resource.
+            "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+            "value": "A String", # The value of the dimension.
+            "dimensionName": "A String", # The name of the dimension.
+            "etag": "A String", # The eTag of this response for caching purposes.
+            "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+            "id": "A String", # The ID associated with the value if available.
+          },
+        ],
+        "reachByFrequencyMetricNames": [ # The list of names of  Reach By Frequency metrics the report should include.
+          "A String",
+        ],
+        "customRichMediaEvents": { # Represents a Custom Rich Media Events group. # Custom Rich Media Events group.
+          "kind": "dfareporting#customRichMediaEvents", # The kind of resource this is, in this case dfareporting#customRichMediaEvents.
+          "filteredEventIds": [ # List of custom rich media event IDs. Dimension values must be all of type dfa:richMediaEventTypeIdAndName.
+            { # Represents a DimensionValue resource.
+              "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+              "value": "A String", # The value of the dimension.
+              "dimensionName": "A String", # The name of the dimension.
+              "etag": "A String", # The eTag of this response for caching purposes.
+              "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+              "id": "A String", # The ID associated with the value if available.
+            },
+          ],
+        },
+        "enableAllDimensionCombinations": True or False, # Whether to enable all reach dimension combinations in the report. Defaults to false. If enabled, the date range of the report should be within the last three months.
+      },
+      "floodlightCriteria": { # The report criteria for a report of type "FLOODLIGHT".
+        "dimensions": [ # The list of dimensions the report should include.
+          { # Represents a sorted dimension.
+            "kind": "dfareporting#sortedDimension", # The kind of resource this is, in this case dfareporting#sortedDimension.
+            "name": "A String", # The name of the dimension.
+            "sortOrder": "A String", # An optional sort order for the dimension column.
+          },
+        ],
+        "metricNames": [ # The list of names of metrics the report should include.
+          "A String",
+        ],
+        "dateRange": { # Represents a date range. # The date range this report should be run for.
+          "startDate": "A String", # The start date of the date range, inclusive. A string of the format: "yyyy-MM-dd".
+          "kind": "dfareporting#dateRange", # The kind of resource this is, in this case dfareporting#dateRange.
+          "endDate": "A String", # The end date of the date range, inclusive. A string of the format: "yyyy-MM-dd".
+          "relativeDateRange": "A String", # The date range relative to the date of when the report is run.
+        },
+        "dimensionFilters": [ # The list of filters on which dimensions are filtered.
+            # Filters for different dimensions are ANDed, filters for the same dimension are grouped together and ORed.
+          { # Represents a DimensionValue resource.
+            "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+            "value": "A String", # The value of the dimension.
+            "dimensionName": "A String", # The name of the dimension.
+            "etag": "A String", # The eTag of this response for caching purposes.
+            "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+            "id": "A String", # The ID associated with the value if available.
+          },
+        ],
+        "floodlightConfigId": { # Represents a DimensionValue resource. # The floodlight ID for which to show data in this report. All advertisers associated with that ID will automatically be added. The dimension of the value needs to be 'dfa:floodlightConfigId'.
+          "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+          "value": "A String", # The value of the dimension.
+          "dimensionName": "A String", # The name of the dimension.
+          "etag": "A String", # The eTag of this response for caching purposes.
+          "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+          "id": "A String", # The ID associated with the value if available.
+        },
+        "customRichMediaEvents": [ # The list of custom rich media events to include.
+          { # Represents a DimensionValue resource.
+            "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+            "value": "A String", # The value of the dimension.
+            "dimensionName": "A String", # The name of the dimension.
+            "etag": "A String", # The eTag of this response for caching purposes.
+            "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+            "id": "A String", # The ID associated with the value if available.
+          },
+        ],
+        "reportProperties": { # The properties of the report.
+          "includeUnattributedIPConversions": True or False, # Include conversions that have no associated cookies and no exposures. It’s therefore impossible to know how the user was exposed to your ads during the lookback window prior to a conversion.
+          "includeUnattributedCookieConversions": True or False, # Include conversions of users with a DoubleClick cookie but without an exposure. That means the user did not click or see an ad from the advertiser within the Floodlight group, or that the interaction happened outside the lookback window.
+          "includeAttributedIPConversions": True or False, # Include conversions that have no cookie, but do have an exposure path.
+        },
+      },
+      "fileName": "A String", # The filename used when generating report files for this report.
+      "delivery": { # The report's email delivery settings.
+        "message": "A String", # The message to be sent with each email.
+        "emailOwnerDeliveryType": "A String", # The type of delivery for the owner to receive, if enabled.
+        "recipients": [ # The list of recipients to which to email the report.
+          { # Represents a recipient.
+            "kind": "dfareporting#recipient", # The kind of resource this is, in this case dfareporting#recipient.
+            "deliveryType": "A String", # The delivery type for the recipient.
+            "email": "A String", # The email address of the recipient.
+          },
+        ],
+        "emailOwner": True or False, # Whether the report should be emailed to the report owner.
+      },
+      "etag": "A String", # The eTag of this response for caching purposes.
+      "criteria": { # The report criteria for a report of type "STANDARD".
+        "activities": { # Represents an activity group. # Activity group.
+          "kind": "dfareporting#activities", # The kind of resource this is, in this case dfareporting#activities.
+          "filters": [ # List of activity filters. The dimension values need to be all either of type "dfa:activity" or "dfa:activityGroup".
+            { # Represents a DimensionValue resource.
+              "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+              "value": "A String", # The value of the dimension.
+              "dimensionName": "A String", # The name of the dimension.
+              "etag": "A String", # The eTag of this response for caching purposes.
+              "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+              "id": "A String", # The ID associated with the value if available.
+            },
+          ],
+          "metricNames": [ # List of names of floodlight activity metrics.
+            "A String",
+          ],
+        },
+        "dimensions": [ # The list of standard dimensions the report should include.
+          { # Represents a sorted dimension.
+            "kind": "dfareporting#sortedDimension", # The kind of resource this is, in this case dfareporting#sortedDimension.
+            "name": "A String", # The name of the dimension.
+            "sortOrder": "A String", # An optional sort order for the dimension column.
+          },
+        ],
+        "metricNames": [ # The list of names of metrics the report should include.
+          "A String",
+        ],
+        "dateRange": { # Represents a date range. # The date range for which this report should be run.
+          "startDate": "A String", # The start date of the date range, inclusive. A string of the format: "yyyy-MM-dd".
+          "kind": "dfareporting#dateRange", # The kind of resource this is, in this case dfareporting#dateRange.
+          "endDate": "A String", # The end date of the date range, inclusive. A string of the format: "yyyy-MM-dd".
+          "relativeDateRange": "A String", # The date range relative to the date of when the report is run.
+        },
+        "dimensionFilters": [ # The list of filters on which dimensions are filtered.
+            # Filters for different dimensions are ANDed, filters for the same dimension are grouped together and ORed.
+          { # Represents a DimensionValue resource.
+            "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+            "value": "A String", # The value of the dimension.
+            "dimensionName": "A String", # The name of the dimension.
+            "etag": "A String", # The eTag of this response for caching purposes.
+            "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+            "id": "A String", # The ID associated with the value if available.
+          },
+        ],
+        "customRichMediaEvents": { # Represents a Custom Rich Media Events group. # Custom Rich Media Events group.
+          "kind": "dfareporting#customRichMediaEvents", # The kind of resource this is, in this case dfareporting#customRichMediaEvents.
+          "filteredEventIds": [ # List of custom rich media event IDs. Dimension values must be all of type dfa:richMediaEventTypeIdAndName.
+            { # Represents a DimensionValue resource.
+              "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+              "value": "A String", # The value of the dimension.
+              "dimensionName": "A String", # The name of the dimension.
+              "etag": "A String", # The eTag of this response for caching purposes.
+              "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+              "id": "A String", # The ID associated with the value if available.
+            },
+          ],
+        },
+      },
+      "id": "A String", # The unique ID identifying this report resource.
+      "lastModifiedTime": "A String", # The timestamp (in milliseconds since epoch) of when this report was last modified.
+      "type": "A String", # The type of the report.
+      "crossDimensionReachCriteria": { # The report criteria for a report of type "CROSS_DIMENSION_REACH".
+        "breakdown": [ # The list of dimensions the report should include.
+          { # Represents a sorted dimension.
+            "kind": "dfareporting#sortedDimension", # The kind of resource this is, in this case dfareporting#sortedDimension.
+            "name": "A String", # The name of the dimension.
+            "sortOrder": "A String", # An optional sort order for the dimension column.
+          },
+        ],
+        "overlapMetricNames": [ # The list of names of overlap metrics the report should include.
+          "A String",
+        ],
+        "metricNames": [ # The list of names of metrics the report should include.
+          "A String",
+        ],
+        "dateRange": { # Represents a date range. # The date range this report should be run for.
+          "startDate": "A String", # The start date of the date range, inclusive. A string of the format: "yyyy-MM-dd".
+          "kind": "dfareporting#dateRange", # The kind of resource this is, in this case dfareporting#dateRange.
+          "endDate": "A String", # The end date of the date range, inclusive. A string of the format: "yyyy-MM-dd".
+          "relativeDateRange": "A String", # The date range relative to the date of when the report is run.
+        },
+        "dimensionFilters": [ # The list of filters on which dimensions are filtered.
+          { # Represents a DimensionValue resource.
+            "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+            "value": "A String", # The value of the dimension.
+            "dimensionName": "A String", # The name of the dimension.
+            "etag": "A String", # The eTag of this response for caching purposes.
+            "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+            "id": "A String", # The ID associated with the value if available.
+          },
+        ],
+        "pivoted": True or False, # Whether the report is pivoted or not. Defaults to true.
+        "dimension": "A String", # The dimension option.
+      },
+      "accountId": "A String", # The account ID to which this report belongs.
+    }</pre>
+</div>
+
+<div class="method">
+    <code class="details" id="insert">insert(profileId, body)</code>
+  <pre>Creates a report.
+
+Args:
+  profileId: string, The DFA user profile ID. (required)
+  body: object, The request body. (required)
+    The object takes the form of:
+
+{ # Represents a Report resource.
+    "pathToConversionCriteria": { # The report criteria for a report of type "PATH_TO_CONVERSION".
+      "conversionDimensions": [ # The list of conversion dimensions the report should include.
+        { # Represents a sorted dimension.
+          "kind": "dfareporting#sortedDimension", # The kind of resource this is, in this case dfareporting#sortedDimension.
+          "name": "A String", # The name of the dimension.
+          "sortOrder": "A String", # An optional sort order for the dimension column.
+        },
+      ],
+      "metricNames": [ # The list of names of metrics the report should include.
+        "A String",
+      ],
+      "dateRange": { # Represents a date range. # The date range this report should be run for.
+        "startDate": "A String", # The start date of the date range, inclusive. A string of the format: "yyyy-MM-dd".
+        "kind": "dfareporting#dateRange", # The kind of resource this is, in this case dfareporting#dateRange.
+        "endDate": "A String", # The end date of the date range, inclusive. A string of the format: "yyyy-MM-dd".
+        "relativeDateRange": "A String", # The date range relative to the date of when the report is run.
+      },
+      "reportProperties": { # The properties of the report.
+        "clicksLookbackWindow": 42, # DFA checks to see if a click interaction occurred within the specified period of time before a conversion. By default the value is pulled from Floodlight or you can manually enter a custom value. Valid values: 1-90.
+        "pivotOnInteractionPath": True or False, # Enable pivoting on interaction path.
+        "impressionsLookbackWindow": 42, # DFA checks to see if an impression interaction occurred within the specified period of time before a conversion. By default the value is pulled from Floodlight or you can manually enter a custom value. Valid values: 1-90.
+        "includeUnattributedIPConversions": True or False, # Include conversions that have no associated cookies and no exposures. It’s therefore impossible to know how the user was exposed to your ads during the lookback window prior to a conversion.
+        "includeUnattributedCookieConversions": True or False, # Include conversions of users with a DoubleClick cookie but without an exposure. That means the user did not click or see an ad from the advertiser within the Floodlight group, or that the interaction happened outside the lookback window.
+        "maximumInteractionGap": 42, # The maximum amount of time that can take place between interactions (clicks or impressions) by the same user. Valid values: 1-90.
+        "includeAttributedIPConversions": True or False, # Deprecated: has no effect.
+        "maximumClickInteractions": 42, # The maximum number of click interactions to include in the report. Advertisers currently paying for E2C reports get up to 200 (100 clicks, 100 impressions). If another advertiser in your network is paying for E2C, you can have up to 5 total exposures per report.
+        "maximumImpressionInteractions": 42, # The maximum number of click interactions to include in the report. Advertisers currently paying for E2C reports get up to 200 (100 clicks, 100 impressions). If another advertiser in your network is paying for E2C, you can have up to 5 total exposures per report.
+      },
+      "perInteractionDimensions": [ # The list of per interaction dimensions the report should include.
+        { # Represents a sorted dimension.
+          "kind": "dfareporting#sortedDimension", # The kind of resource this is, in this case dfareporting#sortedDimension.
+          "name": "A String", # The name of the dimension.
+          "sortOrder": "A String", # An optional sort order for the dimension column.
+        },
+      ],
+      "activityFilters": [ # The list of 'dfa:activity' values to filter on.
+        { # Represents a DimensionValue resource.
+          "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+          "value": "A String", # The value of the dimension.
+          "dimensionName": "A String", # The name of the dimension.
+          "etag": "A String", # The eTag of this response for caching purposes.
+          "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+          "id": "A String", # The ID associated with the value if available.
+        },
+      ],
+      "customRichMediaEvents": [ # The list of custom rich media events to include.
+        { # Represents a DimensionValue resource.
+          "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+          "value": "A String", # The value of the dimension.
+          "dimensionName": "A String", # The name of the dimension.
+          "etag": "A String", # The eTag of this response for caching purposes.
+          "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+          "id": "A String", # The ID associated with the value if available.
+        },
+      ],
+      "floodlightConfigId": { # Represents a DimensionValue resource. # The floodlight ID for which to show data in this report. All advertisers associated with that ID will automatically be added. The dimension of the value needs to be 'dfa:floodlightConfigId'.
+        "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+        "value": "A String", # The value of the dimension.
+        "dimensionName": "A String", # The name of the dimension.
+        "etag": "A String", # The eTag of this response for caching purposes.
+        "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+        "id": "A String", # The ID associated with the value if available.
+      },
+      "customFloodlightVariables": [ # The list of custom floodlight variables the report should include.
+        { # Represents a sorted dimension.
+          "kind": "dfareporting#sortedDimension", # The kind of resource this is, in this case dfareporting#sortedDimension.
+          "name": "A String", # The name of the dimension.
+          "sortOrder": "A String", # An optional sort order for the dimension column.
+        },
+      ],
+    },
+    "kind": "dfareporting#report", # The kind of resource this is, in this case dfareporting#report.
+    "subAccountId": "A String", # The subaccount ID to which this report belongs if applicable.
+    "name": "A String", # The name of the report.
+    "schedule": { # The report's schedule. Can only be set if the report's 'dateRange' is a relative date range and the relative date range is not "TODAY".
+      "startDate": "A String", # Start date of date range for which scheduled reports should be run.
+      "runsOnDayOfMonth": "A String", # Enum to define for "MONTHLY" scheduled reports whether reports should be repeated on the same day of the month as "startDate" or the same day of the week of the month.
+          # Example: If 'startDate' is Monday, April 2nd 2012 (2012-04-02), "DAY_OF_MONTH" would run subsequent reports on the 2nd of every Month, and "WEEK_OF_MONTH" would run subsequent reports on the first Monday of the month.
+      "every": 42, # Defines every how many days, weeks or months the report should be run. Needs to be set when "repeats" is either "DAILY", "WEEKLY" or "MONTHLY".
+      "expirationDate": "A String", # The expiration date when the scheduled report stops running.
+      "active": True or False, # Whether the schedule is active or not. Must be set to either true or false.
+      "repeats": "A String", # The interval for which the report is repeated. Note:
+          # - "DAILY" also requires field "every" to be set.
+          # - "WEEKLY" also requires fields "every" and "repeatsOnWeekDays" to be set.
+          # - "MONTHLY" also requires fields "every" and "runsOnDayOfMonth" to be set.
+      "repeatsOnWeekDays": [ # List of week days "WEEKLY" on which scheduled reports should run.
+        "A String",
+      ],
+    },
+    "format": "A String", # The output format of the report. If not specified, default format is "CSV". Note that the actual format in the completed report file might differ if for instance the report's size exceeds the format's capabilities. "CSV" will then be the fallback format.
+    "ownerProfileId": "A String", # The user profile id of the owner of this report.
+    "reachCriteria": { # The report criteria for a report of type "REACH".
+      "activities": { # Represents an activity group. # Activity group.
+        "kind": "dfareporting#activities", # The kind of resource this is, in this case dfareporting#activities.
+        "filters": [ # List of activity filters. The dimension values need to be all either of type "dfa:activity" or "dfa:activityGroup".
+          { # Represents a DimensionValue resource.
+            "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+            "value": "A String", # The value of the dimension.
+            "dimensionName": "A String", # The name of the dimension.
+            "etag": "A String", # The eTag of this response for caching purposes.
+            "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+            "id": "A String", # The ID associated with the value if available.
+          },
+        ],
+        "metricNames": [ # List of names of floodlight activity metrics.
+          "A String",
+        ],
+      },
+      "dimensions": [ # The list of dimensions the report should include.
+        { # Represents a sorted dimension.
+          "kind": "dfareporting#sortedDimension", # The kind of resource this is, in this case dfareporting#sortedDimension.
+          "name": "A String", # The name of the dimension.
+          "sortOrder": "A String", # An optional sort order for the dimension column.
+        },
+      ],
+      "metricNames": [ # The list of names of metrics the report should include.
+        "A String",
+      ],
+      "dateRange": { # Represents a date range. # The date range this report should be run for.
+        "startDate": "A String", # The start date of the date range, inclusive. A string of the format: "yyyy-MM-dd".
+        "kind": "dfareporting#dateRange", # The kind of resource this is, in this case dfareporting#dateRange.
+        "endDate": "A String", # The end date of the date range, inclusive. A string of the format: "yyyy-MM-dd".
+        "relativeDateRange": "A String", # The date range relative to the date of when the report is run.
+      },
+      "dimensionFilters": [ # The list of filters on which dimensions are filtered.
+          # Filters for different dimensions are ANDed, filters for the same dimension are grouped together and ORed.
+        { # Represents a DimensionValue resource.
+          "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+          "value": "A String", # The value of the dimension.
+          "dimensionName": "A String", # The name of the dimension.
+          "etag": "A String", # The eTag of this response for caching purposes.
+          "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+          "id": "A String", # The ID associated with the value if available.
+        },
+      ],
+      "reachByFrequencyMetricNames": [ # The list of names of  Reach By Frequency metrics the report should include.
+        "A String",
+      ],
+      "customRichMediaEvents": { # Represents a Custom Rich Media Events group. # Custom Rich Media Events group.
+        "kind": "dfareporting#customRichMediaEvents", # The kind of resource this is, in this case dfareporting#customRichMediaEvents.
+        "filteredEventIds": [ # List of custom rich media event IDs. Dimension values must be all of type dfa:richMediaEventTypeIdAndName.
+          { # Represents a DimensionValue resource.
+            "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+            "value": "A String", # The value of the dimension.
+            "dimensionName": "A String", # The name of the dimension.
+            "etag": "A String", # The eTag of this response for caching purposes.
+            "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+            "id": "A String", # The ID associated with the value if available.
+          },
+        ],
+      },
+      "enableAllDimensionCombinations": True or False, # Whether to enable all reach dimension combinations in the report. Defaults to false. If enabled, the date range of the report should be within the last three months.
+    },
+    "floodlightCriteria": { # The report criteria for a report of type "FLOODLIGHT".
+      "dimensions": [ # The list of dimensions the report should include.
+        { # Represents a sorted dimension.
+          "kind": "dfareporting#sortedDimension", # The kind of resource this is, in this case dfareporting#sortedDimension.
+          "name": "A String", # The name of the dimension.
+          "sortOrder": "A String", # An optional sort order for the dimension column.
+        },
+      ],
+      "metricNames": [ # The list of names of metrics the report should include.
+        "A String",
+      ],
+      "dateRange": { # Represents a date range. # The date range this report should be run for.
+        "startDate": "A String", # The start date of the date range, inclusive. A string of the format: "yyyy-MM-dd".
+        "kind": "dfareporting#dateRange", # The kind of resource this is, in this case dfareporting#dateRange.
+        "endDate": "A String", # The end date of the date range, inclusive. A string of the format: "yyyy-MM-dd".
+        "relativeDateRange": "A String", # The date range relative to the date of when the report is run.
+      },
+      "dimensionFilters": [ # The list of filters on which dimensions are filtered.
+          # Filters for different dimensions are ANDed, filters for the same dimension are grouped together and ORed.
+        { # Represents a DimensionValue resource.
+          "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+          "value": "A String", # The value of the dimension.
+          "dimensionName": "A String", # The name of the dimension.
+          "etag": "A String", # The eTag of this response for caching purposes.
+          "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+          "id": "A String", # The ID associated with the value if available.
+        },
+      ],
+      "floodlightConfigId": { # Represents a DimensionValue resource. # The floodlight ID for which to show data in this report. All advertisers associated with that ID will automatically be added. The dimension of the value needs to be 'dfa:floodlightConfigId'.
+        "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+        "value": "A String", # The value of the dimension.
+        "dimensionName": "A String", # The name of the dimension.
+        "etag": "A String", # The eTag of this response for caching purposes.
+        "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+        "id": "A String", # The ID associated with the value if available.
+      },
+      "customRichMediaEvents": [ # The list of custom rich media events to include.
+        { # Represents a DimensionValue resource.
+          "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+          "value": "A String", # The value of the dimension.
+          "dimensionName": "A String", # The name of the dimension.
+          "etag": "A String", # The eTag of this response for caching purposes.
+          "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+          "id": "A String", # The ID associated with the value if available.
+        },
+      ],
+      "reportProperties": { # The properties of the report.
+        "includeUnattributedIPConversions": True or False, # Include conversions that have no associated cookies and no exposures. It’s therefore impossible to know how the user was exposed to your ads during the lookback window prior to a conversion.
+        "includeUnattributedCookieConversions": True or False, # Include conversions of users with a DoubleClick cookie but without an exposure. That means the user did not click or see an ad from the advertiser within the Floodlight group, or that the interaction happened outside the lookback window.
+        "includeAttributedIPConversions": True or False, # Include conversions that have no cookie, but do have an exposure path.
+      },
+    },
+    "fileName": "A String", # The filename used when generating report files for this report.
+    "delivery": { # The report's email delivery settings.
+      "message": "A String", # The message to be sent with each email.
+      "emailOwnerDeliveryType": "A String", # The type of delivery for the owner to receive, if enabled.
+      "recipients": [ # The list of recipients to which to email the report.
+        { # Represents a recipient.
+          "kind": "dfareporting#recipient", # The kind of resource this is, in this case dfareporting#recipient.
+          "deliveryType": "A String", # The delivery type for the recipient.
+          "email": "A String", # The email address of the recipient.
+        },
+      ],
+      "emailOwner": True or False, # Whether the report should be emailed to the report owner.
+    },
+    "etag": "A String", # The eTag of this response for caching purposes.
+    "criteria": { # The report criteria for a report of type "STANDARD".
+      "activities": { # Represents an activity group. # Activity group.
+        "kind": "dfareporting#activities", # The kind of resource this is, in this case dfareporting#activities.
+        "filters": [ # List of activity filters. The dimension values need to be all either of type "dfa:activity" or "dfa:activityGroup".
+          { # Represents a DimensionValue resource.
+            "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+            "value": "A String", # The value of the dimension.
+            "dimensionName": "A String", # The name of the dimension.
+            "etag": "A String", # The eTag of this response for caching purposes.
+            "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+            "id": "A String", # The ID associated with the value if available.
+          },
+        ],
+        "metricNames": [ # List of names of floodlight activity metrics.
+          "A String",
+        ],
+      },
+      "dimensions": [ # The list of standard dimensions the report should include.
+        { # Represents a sorted dimension.
+          "kind": "dfareporting#sortedDimension", # The kind of resource this is, in this case dfareporting#sortedDimension.
+          "name": "A String", # The name of the dimension.
+          "sortOrder": "A String", # An optional sort order for the dimension column.
+        },
+      ],
+      "metricNames": [ # The list of names of metrics the report should include.
+        "A String",
+      ],
+      "dateRange": { # Represents a date range. # The date range for which this report should be run.
+        "startDate": "A String", # The start date of the date range, inclusive. A string of the format: "yyyy-MM-dd".
+        "kind": "dfareporting#dateRange", # The kind of resource this is, in this case dfareporting#dateRange.
+        "endDate": "A String", # The end date of the date range, inclusive. A string of the format: "yyyy-MM-dd".
+        "relativeDateRange": "A String", # The date range relative to the date of when the report is run.
+      },
+      "dimensionFilters": [ # The list of filters on which dimensions are filtered.
+          # Filters for different dimensions are ANDed, filters for the same dimension are grouped together and ORed.
+        { # Represents a DimensionValue resource.
+          "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+          "value": "A String", # The value of the dimension.
+          "dimensionName": "A String", # The name of the dimension.
+          "etag": "A String", # The eTag of this response for caching purposes.
+          "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+          "id": "A String", # The ID associated with the value if available.
+        },
+      ],
+      "customRichMediaEvents": { # Represents a Custom Rich Media Events group. # Custom Rich Media Events group.
+        "kind": "dfareporting#customRichMediaEvents", # The kind of resource this is, in this case dfareporting#customRichMediaEvents.
+        "filteredEventIds": [ # List of custom rich media event IDs. Dimension values must be all of type dfa:richMediaEventTypeIdAndName.
+          { # Represents a DimensionValue resource.
+            "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+            "value": "A String", # The value of the dimension.
+            "dimensionName": "A String", # The name of the dimension.
+            "etag": "A String", # The eTag of this response for caching purposes.
+            "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+            "id": "A String", # The ID associated with the value if available.
+          },
+        ],
+      },
+    },
+    "id": "A String", # The unique ID identifying this report resource.
+    "lastModifiedTime": "A String", # The timestamp (in milliseconds since epoch) of when this report was last modified.
+    "type": "A String", # The type of the report.
+    "crossDimensionReachCriteria": { # The report criteria for a report of type "CROSS_DIMENSION_REACH".
+      "breakdown": [ # The list of dimensions the report should include.
+        { # Represents a sorted dimension.
+          "kind": "dfareporting#sortedDimension", # The kind of resource this is, in this case dfareporting#sortedDimension.
+          "name": "A String", # The name of the dimension.
+          "sortOrder": "A String", # An optional sort order for the dimension column.
+        },
+      ],
+      "overlapMetricNames": [ # The list of names of overlap metrics the report should include.
+        "A String",
+      ],
+      "metricNames": [ # The list of names of metrics the report should include.
+        "A String",
+      ],
+      "dateRange": { # Represents a date range. # The date range this report should be run for.
+        "startDate": "A String", # The start date of the date range, inclusive. A string of the format: "yyyy-MM-dd".
+        "kind": "dfareporting#dateRange", # The kind of resource this is, in this case dfareporting#dateRange.
+        "endDate": "A String", # The end date of the date range, inclusive. A string of the format: "yyyy-MM-dd".
+        "relativeDateRange": "A String", # The date range relative to the date of when the report is run.
+      },
+      "dimensionFilters": [ # The list of filters on which dimensions are filtered.
+        { # Represents a DimensionValue resource.
+          "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+          "value": "A String", # The value of the dimension.
+          "dimensionName": "A String", # The name of the dimension.
+          "etag": "A String", # The eTag of this response for caching purposes.
+          "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+          "id": "A String", # The ID associated with the value if available.
+        },
+      ],
+      "pivoted": True or False, # Whether the report is pivoted or not. Defaults to true.
+      "dimension": "A String", # The dimension option.
+    },
+    "accountId": "A String", # The account ID to which this report belongs.
+  }
+
+
+Returns:
+  An object of the form:
+
+    { # Represents a Report resource.
+      "pathToConversionCriteria": { # The report criteria for a report of type "PATH_TO_CONVERSION".
+        "conversionDimensions": [ # The list of conversion dimensions the report should include.
+          { # Represents a sorted dimension.
+            "kind": "dfareporting#sortedDimension", # The kind of resource this is, in this case dfareporting#sortedDimension.
+            "name": "A String", # The name of the dimension.
+            "sortOrder": "A String", # An optional sort order for the dimension column.
+          },
+        ],
+        "metricNames": [ # The list of names of metrics the report should include.
+          "A String",
+        ],
+        "dateRange": { # Represents a date range. # The date range this report should be run for.
+          "startDate": "A String", # The start date of the date range, inclusive. A string of the format: "yyyy-MM-dd".
+          "kind": "dfareporting#dateRange", # The kind of resource this is, in this case dfareporting#dateRange.
+          "endDate": "A String", # The end date of the date range, inclusive. A string of the format: "yyyy-MM-dd".
+          "relativeDateRange": "A String", # The date range relative to the date of when the report is run.
+        },
+        "reportProperties": { # The properties of the report.
+          "clicksLookbackWindow": 42, # DFA checks to see if a click interaction occurred within the specified period of time before a conversion. By default the value is pulled from Floodlight or you can manually enter a custom value. Valid values: 1-90.
+          "pivotOnInteractionPath": True or False, # Enable pivoting on interaction path.
+          "impressionsLookbackWindow": 42, # DFA checks to see if an impression interaction occurred within the specified period of time before a conversion. By default the value is pulled from Floodlight or you can manually enter a custom value. Valid values: 1-90.
+          "includeUnattributedIPConversions": True or False, # Include conversions that have no associated cookies and no exposures. It’s therefore impossible to know how the user was exposed to your ads during the lookback window prior to a conversion.
+          "includeUnattributedCookieConversions": True or False, # Include conversions of users with a DoubleClick cookie but without an exposure. That means the user did not click or see an ad from the advertiser within the Floodlight group, or that the interaction happened outside the lookback window.
+          "maximumInteractionGap": 42, # The maximum amount of time that can take place between interactions (clicks or impressions) by the same user. Valid values: 1-90.
+          "includeAttributedIPConversions": True or False, # Deprecated: has no effect.
+          "maximumClickInteractions": 42, # The maximum number of click interactions to include in the report. Advertisers currently paying for E2C reports get up to 200 (100 clicks, 100 impressions). If another advertiser in your network is paying for E2C, you can have up to 5 total exposures per report.
+          "maximumImpressionInteractions": 42, # The maximum number of click interactions to include in the report. Advertisers currently paying for E2C reports get up to 200 (100 clicks, 100 impressions). If another advertiser in your network is paying for E2C, you can have up to 5 total exposures per report.
+        },
+        "perInteractionDimensions": [ # The list of per interaction dimensions the report should include.
+          { # Represents a sorted dimension.
+            "kind": "dfareporting#sortedDimension", # The kind of resource this is, in this case dfareporting#sortedDimension.
+            "name": "A String", # The name of the dimension.
+            "sortOrder": "A String", # An optional sort order for the dimension column.
+          },
+        ],
+        "activityFilters": [ # The list of 'dfa:activity' values to filter on.
+          { # Represents a DimensionValue resource.
+            "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+            "value": "A String", # The value of the dimension.
+            "dimensionName": "A String", # The name of the dimension.
+            "etag": "A String", # The eTag of this response for caching purposes.
+            "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+            "id": "A String", # The ID associated with the value if available.
+          },
+        ],
+        "customRichMediaEvents": [ # The list of custom rich media events to include.
+          { # Represents a DimensionValue resource.
+            "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+            "value": "A String", # The value of the dimension.
+            "dimensionName": "A String", # The name of the dimension.
+            "etag": "A String", # The eTag of this response for caching purposes.
+            "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+            "id": "A String", # The ID associated with the value if available.
+          },
+        ],
+        "floodlightConfigId": { # Represents a DimensionValue resource. # The floodlight ID for which to show data in this report. All advertisers associated with that ID will automatically be added. The dimension of the value needs to be 'dfa:floodlightConfigId'.
+          "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+          "value": "A String", # The value of the dimension.
+          "dimensionName": "A String", # The name of the dimension.
+          "etag": "A String", # The eTag of this response for caching purposes.
+          "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+          "id": "A String", # The ID associated with the value if available.
+        },
+        "customFloodlightVariables": [ # The list of custom floodlight variables the report should include.
+          { # Represents a sorted dimension.
+            "kind": "dfareporting#sortedDimension", # The kind of resource this is, in this case dfareporting#sortedDimension.
+            "name": "A String", # The name of the dimension.
+            "sortOrder": "A String", # An optional sort order for the dimension column.
+          },
+        ],
+      },
+      "kind": "dfareporting#report", # The kind of resource this is, in this case dfareporting#report.
+      "subAccountId": "A String", # The subaccount ID to which this report belongs if applicable.
+      "name": "A String", # The name of the report.
+      "schedule": { # The report's schedule. Can only be set if the report's 'dateRange' is a relative date range and the relative date range is not "TODAY".
+        "startDate": "A String", # Start date of date range for which scheduled reports should be run.
+        "runsOnDayOfMonth": "A String", # Enum to define for "MONTHLY" scheduled reports whether reports should be repeated on the same day of the month as "startDate" or the same day of the week of the month.
+            # Example: If 'startDate' is Monday, April 2nd 2012 (2012-04-02), "DAY_OF_MONTH" would run subsequent reports on the 2nd of every Month, and "WEEK_OF_MONTH" would run subsequent reports on the first Monday of the month.
+        "every": 42, # Defines every how many days, weeks or months the report should be run. Needs to be set when "repeats" is either "DAILY", "WEEKLY" or "MONTHLY".
+        "expirationDate": "A String", # The expiration date when the scheduled report stops running.
+        "active": True or False, # Whether the schedule is active or not. Must be set to either true or false.
+        "repeats": "A String", # The interval for which the report is repeated. Note:
+            # - "DAILY" also requires field "every" to be set.
+            # - "WEEKLY" also requires fields "every" and "repeatsOnWeekDays" to be set.
+            # - "MONTHLY" also requires fields "every" and "runsOnDayOfMonth" to be set.
+        "repeatsOnWeekDays": [ # List of week days "WEEKLY" on which scheduled reports should run.
+          "A String",
+        ],
+      },
+      "format": "A String", # The output format of the report. If not specified, default format is "CSV". Note that the actual format in the completed report file might differ if for instance the report's size exceeds the format's capabilities. "CSV" will then be the fallback format.
+      "ownerProfileId": "A String", # The user profile id of the owner of this report.
+      "reachCriteria": { # The report criteria for a report of type "REACH".
+        "activities": { # Represents an activity group. # Activity group.
+          "kind": "dfareporting#activities", # The kind of resource this is, in this case dfareporting#activities.
+          "filters": [ # List of activity filters. The dimension values need to be all either of type "dfa:activity" or "dfa:activityGroup".
+            { # Represents a DimensionValue resource.
+              "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+              "value": "A String", # The value of the dimension.
+              "dimensionName": "A String", # The name of the dimension.
+              "etag": "A String", # The eTag of this response for caching purposes.
+              "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+              "id": "A String", # The ID associated with the value if available.
+            },
+          ],
+          "metricNames": [ # List of names of floodlight activity metrics.
+            "A String",
+          ],
+        },
+        "dimensions": [ # The list of dimensions the report should include.
+          { # Represents a sorted dimension.
+            "kind": "dfareporting#sortedDimension", # The kind of resource this is, in this case dfareporting#sortedDimension.
+            "name": "A String", # The name of the dimension.
+            "sortOrder": "A String", # An optional sort order for the dimension column.
+          },
+        ],
+        "metricNames": [ # The list of names of metrics the report should include.
+          "A String",
+        ],
+        "dateRange": { # Represents a date range. # The date range this report should be run for.
+          "startDate": "A String", # The start date of the date range, inclusive. A string of the format: "yyyy-MM-dd".
+          "kind": "dfareporting#dateRange", # The kind of resource this is, in this case dfareporting#dateRange.
+          "endDate": "A String", # The end date of the date range, inclusive. A string of the format: "yyyy-MM-dd".
+          "relativeDateRange": "A String", # The date range relative to the date of when the report is run.
+        },
+        "dimensionFilters": [ # The list of filters on which dimensions are filtered.
+            # Filters for different dimensions are ANDed, filters for the same dimension are grouped together and ORed.
+          { # Represents a DimensionValue resource.
+            "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+            "value": "A String", # The value of the dimension.
+            "dimensionName": "A String", # The name of the dimension.
+            "etag": "A String", # The eTag of this response for caching purposes.
+            "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+            "id": "A String", # The ID associated with the value if available.
+          },
+        ],
+        "reachByFrequencyMetricNames": [ # The list of names of  Reach By Frequency metrics the report should include.
+          "A String",
+        ],
+        "customRichMediaEvents": { # Represents a Custom Rich Media Events group. # Custom Rich Media Events group.
+          "kind": "dfareporting#customRichMediaEvents", # The kind of resource this is, in this case dfareporting#customRichMediaEvents.
+          "filteredEventIds": [ # List of custom rich media event IDs. Dimension values must be all of type dfa:richMediaEventTypeIdAndName.
+            { # Represents a DimensionValue resource.
+              "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+              "value": "A String", # The value of the dimension.
+              "dimensionName": "A String", # The name of the dimension.
+              "etag": "A String", # The eTag of this response for caching purposes.
+              "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+              "id": "A String", # The ID associated with the value if available.
+            },
+          ],
+        },
+        "enableAllDimensionCombinations": True or False, # Whether to enable all reach dimension combinations in the report. Defaults to false. If enabled, the date range of the report should be within the last three months.
+      },
+      "floodlightCriteria": { # The report criteria for a report of type "FLOODLIGHT".
+        "dimensions": [ # The list of dimensions the report should include.
+          { # Represents a sorted dimension.
+            "kind": "dfareporting#sortedDimension", # The kind of resource this is, in this case dfareporting#sortedDimension.
+            "name": "A String", # The name of the dimension.
+            "sortOrder": "A String", # An optional sort order for the dimension column.
+          },
+        ],
+        "metricNames": [ # The list of names of metrics the report should include.
+          "A String",
+        ],
+        "dateRange": { # Represents a date range. # The date range this report should be run for.
+          "startDate": "A String", # The start date of the date range, inclusive. A string of the format: "yyyy-MM-dd".
+          "kind": "dfareporting#dateRange", # The kind of resource this is, in this case dfareporting#dateRange.
+          "endDate": "A String", # The end date of the date range, inclusive. A string of the format: "yyyy-MM-dd".
+          "relativeDateRange": "A String", # The date range relative to the date of when the report is run.
+        },
+        "dimensionFilters": [ # The list of filters on which dimensions are filtered.
+            # Filters for different dimensions are ANDed, filters for the same dimension are grouped together and ORed.
+          { # Represents a DimensionValue resource.
+            "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+            "value": "A String", # The value of the dimension.
+            "dimensionName": "A String", # The name of the dimension.
+            "etag": "A String", # The eTag of this response for caching purposes.
+            "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+            "id": "A String", # The ID associated with the value if available.
+          },
+        ],
+        "floodlightConfigId": { # Represents a DimensionValue resource. # The floodlight ID for which to show data in this report. All advertisers associated with that ID will automatically be added. The dimension of the value needs to be 'dfa:floodlightConfigId'.
+          "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+          "value": "A String", # The value of the dimension.
+          "dimensionName": "A String", # The name of the dimension.
+          "etag": "A String", # The eTag of this response for caching purposes.
+          "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+          "id": "A String", # The ID associated with the value if available.
+        },
+        "customRichMediaEvents": [ # The list of custom rich media events to include.
+          { # Represents a DimensionValue resource.
+            "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+            "value": "A String", # The value of the dimension.
+            "dimensionName": "A String", # The name of the dimension.
+            "etag": "A String", # The eTag of this response for caching purposes.
+            "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+            "id": "A String", # The ID associated with the value if available.
+          },
+        ],
+        "reportProperties": { # The properties of the report.
+          "includeUnattributedIPConversions": True or False, # Include conversions that have no associated cookies and no exposures. It’s therefore impossible to know how the user was exposed to your ads during the lookback window prior to a conversion.
+          "includeUnattributedCookieConversions": True or False, # Include conversions of users with a DoubleClick cookie but without an exposure. That means the user did not click or see an ad from the advertiser within the Floodlight group, or that the interaction happened outside the lookback window.
+          "includeAttributedIPConversions": True or False, # Include conversions that have no cookie, but do have an exposure path.
+        },
+      },
+      "fileName": "A String", # The filename used when generating report files for this report.
+      "delivery": { # The report's email delivery settings.
+        "message": "A String", # The message to be sent with each email.
+        "emailOwnerDeliveryType": "A String", # The type of delivery for the owner to receive, if enabled.
+        "recipients": [ # The list of recipients to which to email the report.
+          { # Represents a recipient.
+            "kind": "dfareporting#recipient", # The kind of resource this is, in this case dfareporting#recipient.
+            "deliveryType": "A String", # The delivery type for the recipient.
+            "email": "A String", # The email address of the recipient.
+          },
+        ],
+        "emailOwner": True or False, # Whether the report should be emailed to the report owner.
+      },
+      "etag": "A String", # The eTag of this response for caching purposes.
+      "criteria": { # The report criteria for a report of type "STANDARD".
+        "activities": { # Represents an activity group. # Activity group.
+          "kind": "dfareporting#activities", # The kind of resource this is, in this case dfareporting#activities.
+          "filters": [ # List of activity filters. The dimension values need to be all either of type "dfa:activity" or "dfa:activityGroup".
+            { # Represents a DimensionValue resource.
+              "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+              "value": "A String", # The value of the dimension.
+              "dimensionName": "A String", # The name of the dimension.
+              "etag": "A String", # The eTag of this response for caching purposes.
+              "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+              "id": "A String", # The ID associated with the value if available.
+            },
+          ],
+          "metricNames": [ # List of names of floodlight activity metrics.
+            "A String",
+          ],
+        },
+        "dimensions": [ # The list of standard dimensions the report should include.
+          { # Represents a sorted dimension.
+            "kind": "dfareporting#sortedDimension", # The kind of resource this is, in this case dfareporting#sortedDimension.
+            "name": "A String", # The name of the dimension.
+            "sortOrder": "A String", # An optional sort order for the dimension column.
+          },
+        ],
+        "metricNames": [ # The list of names of metrics the report should include.
+          "A String",
+        ],
+        "dateRange": { # Represents a date range. # The date range for which this report should be run.
+          "startDate": "A String", # The start date of the date range, inclusive. A string of the format: "yyyy-MM-dd".
+          "kind": "dfareporting#dateRange", # The kind of resource this is, in this case dfareporting#dateRange.
+          "endDate": "A String", # The end date of the date range, inclusive. A string of the format: "yyyy-MM-dd".
+          "relativeDateRange": "A String", # The date range relative to the date of when the report is run.
+        },
+        "dimensionFilters": [ # The list of filters on which dimensions are filtered.
+            # Filters for different dimensions are ANDed, filters for the same dimension are grouped together and ORed.
+          { # Represents a DimensionValue resource.
+            "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+            "value": "A String", # The value of the dimension.
+            "dimensionName": "A String", # The name of the dimension.
+            "etag": "A String", # The eTag of this response for caching purposes.
+            "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+            "id": "A String", # The ID associated with the value if available.
+          },
+        ],
+        "customRichMediaEvents": { # Represents a Custom Rich Media Events group. # Custom Rich Media Events group.
+          "kind": "dfareporting#customRichMediaEvents", # The kind of resource this is, in this case dfareporting#customRichMediaEvents.
+          "filteredEventIds": [ # List of custom rich media event IDs. Dimension values must be all of type dfa:richMediaEventTypeIdAndName.
+            { # Represents a DimensionValue resource.
+              "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+              "value": "A String", # The value of the dimension.
+              "dimensionName": "A String", # The name of the dimension.
+              "etag": "A String", # The eTag of this response for caching purposes.
+              "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+              "id": "A String", # The ID associated with the value if available.
+            },
+          ],
+        },
+      },
+      "id": "A String", # The unique ID identifying this report resource.
+      "lastModifiedTime": "A String", # The timestamp (in milliseconds since epoch) of when this report was last modified.
+      "type": "A String", # The type of the report.
+      "crossDimensionReachCriteria": { # The report criteria for a report of type "CROSS_DIMENSION_REACH".
+        "breakdown": [ # The list of dimensions the report should include.
+          { # Represents a sorted dimension.
+            "kind": "dfareporting#sortedDimension", # The kind of resource this is, in this case dfareporting#sortedDimension.
+            "name": "A String", # The name of the dimension.
+            "sortOrder": "A String", # An optional sort order for the dimension column.
+          },
+        ],
+        "overlapMetricNames": [ # The list of names of overlap metrics the report should include.
+          "A String",
+        ],
+        "metricNames": [ # The list of names of metrics the report should include.
+          "A String",
+        ],
+        "dateRange": { # Represents a date range. # The date range this report should be run for.
+          "startDate": "A String", # The start date of the date range, inclusive. A string of the format: "yyyy-MM-dd".
+          "kind": "dfareporting#dateRange", # The kind of resource this is, in this case dfareporting#dateRange.
+          "endDate": "A String", # The end date of the date range, inclusive. A string of the format: "yyyy-MM-dd".
+          "relativeDateRange": "A String", # The date range relative to the date of when the report is run.
+        },
+        "dimensionFilters": [ # The list of filters on which dimensions are filtered.
+          { # Represents a DimensionValue resource.
+            "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+            "value": "A String", # The value of the dimension.
+            "dimensionName": "A String", # The name of the dimension.
+            "etag": "A String", # The eTag of this response for caching purposes.
+            "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+            "id": "A String", # The ID associated with the value if available.
+          },
+        ],
+        "pivoted": True or False, # Whether the report is pivoted or not. Defaults to true.
+        "dimension": "A String", # The dimension option.
+      },
+      "accountId": "A String", # The account ID to which this report belongs.
+    }</pre>
+</div>
+
+<div class="method">
+    <code class="details" id="list">list(profileId, pageToken=None, maxResults=None, sortOrder=None, sortField=None, scope=None)</code>
+  <pre>Retrieves list of reports.
+
+Args:
+  profileId: string, The DFA user profile ID. (required)
+  pageToken: string, The value of the nextToken from the previous result page.
+  maxResults: integer, Maximum number of results to return.
+  sortOrder: string, Order of sorted results, default is 'DESCENDING'.
+    Allowed values
+      ASCENDING - Ascending order.
+      DESCENDING - Descending order.
+  sortField: string, The field by which to sort the list.
+    Allowed values
+      ID - Sort by report ID.
+      LAST_MODIFIED_TIME - Sort by 'lastModifiedTime' field.
+      NAME - Sort by name of reports.
+  scope: string, The scope that defines which results are returned, default is 'MINE'.
+    Allowed values
+      ALL - All reports in account.
+      MINE - My reports.
+
+Returns:
+  An object of the form:
+
+    { # Represents the list of reports.
+    "nextPageToken": "A String", # Continuation token used to page through reports. To retrieve the next page of results, set the next request's "pageToken" to the value of this field. The page token is only valid for a limited amount of time and should not be persisted.
+    "items": [ # The reports returned in this response.
+      { # Represents a Report resource.
+          "pathToConversionCriteria": { # The report criteria for a report of type "PATH_TO_CONVERSION".
+            "conversionDimensions": [ # The list of conversion dimensions the report should include.
+              { # Represents a sorted dimension.
+                "kind": "dfareporting#sortedDimension", # The kind of resource this is, in this case dfareporting#sortedDimension.
+                "name": "A String", # The name of the dimension.
+                "sortOrder": "A String", # An optional sort order for the dimension column.
+              },
+            ],
+            "metricNames": [ # The list of names of metrics the report should include.
+              "A String",
+            ],
+            "dateRange": { # Represents a date range. # The date range this report should be run for.
+              "startDate": "A String", # The start date of the date range, inclusive. A string of the format: "yyyy-MM-dd".
+              "kind": "dfareporting#dateRange", # The kind of resource this is, in this case dfareporting#dateRange.
+              "endDate": "A String", # The end date of the date range, inclusive. A string of the format: "yyyy-MM-dd".
+              "relativeDateRange": "A String", # The date range relative to the date of when the report is run.
+            },
+            "reportProperties": { # The properties of the report.
+              "clicksLookbackWindow": 42, # DFA checks to see if a click interaction occurred within the specified period of time before a conversion. By default the value is pulled from Floodlight or you can manually enter a custom value. Valid values: 1-90.
+              "pivotOnInteractionPath": True or False, # Enable pivoting on interaction path.
+              "impressionsLookbackWindow": 42, # DFA checks to see if an impression interaction occurred within the specified period of time before a conversion. By default the value is pulled from Floodlight or you can manually enter a custom value. Valid values: 1-90.
+              "includeUnattributedIPConversions": True or False, # Include conversions that have no associated cookies and no exposures. It’s therefore impossible to know how the user was exposed to your ads during the lookback window prior to a conversion.
+              "includeUnattributedCookieConversions": True or False, # Include conversions of users with a DoubleClick cookie but without an exposure. That means the user did not click or see an ad from the advertiser within the Floodlight group, or that the interaction happened outside the lookback window.
+              "maximumInteractionGap": 42, # The maximum amount of time that can take place between interactions (clicks or impressions) by the same user. Valid values: 1-90.
+              "includeAttributedIPConversions": True or False, # Deprecated: has no effect.
+              "maximumClickInteractions": 42, # The maximum number of click interactions to include in the report. Advertisers currently paying for E2C reports get up to 200 (100 clicks, 100 impressions). If another advertiser in your network is paying for E2C, you can have up to 5 total exposures per report.
+              "maximumImpressionInteractions": 42, # The maximum number of click interactions to include in the report. Advertisers currently paying for E2C reports get up to 200 (100 clicks, 100 impressions). If another advertiser in your network is paying for E2C, you can have up to 5 total exposures per report.
+            },
+            "perInteractionDimensions": [ # The list of per interaction dimensions the report should include.
+              { # Represents a sorted dimension.
+                "kind": "dfareporting#sortedDimension", # The kind of resource this is, in this case dfareporting#sortedDimension.
+                "name": "A String", # The name of the dimension.
+                "sortOrder": "A String", # An optional sort order for the dimension column.
+              },
+            ],
+            "activityFilters": [ # The list of 'dfa:activity' values to filter on.
+              { # Represents a DimensionValue resource.
+                "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+                "value": "A String", # The value of the dimension.
+                "dimensionName": "A String", # The name of the dimension.
+                "etag": "A String", # The eTag of this response for caching purposes.
+                "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+                "id": "A String", # The ID associated with the value if available.
+              },
+            ],
+            "customRichMediaEvents": [ # The list of custom rich media events to include.
+              { # Represents a DimensionValue resource.
+                "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+                "value": "A String", # The value of the dimension.
+                "dimensionName": "A String", # The name of the dimension.
+                "etag": "A String", # The eTag of this response for caching purposes.
+                "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+                "id": "A String", # The ID associated with the value if available.
+              },
+            ],
+            "floodlightConfigId": { # Represents a DimensionValue resource. # The floodlight ID for which to show data in this report. All advertisers associated with that ID will automatically be added. The dimension of the value needs to be 'dfa:floodlightConfigId'.
+              "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+              "value": "A String", # The value of the dimension.
+              "dimensionName": "A String", # The name of the dimension.
+              "etag": "A String", # The eTag of this response for caching purposes.
+              "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+              "id": "A String", # The ID associated with the value if available.
+            },
+            "customFloodlightVariables": [ # The list of custom floodlight variables the report should include.
+              { # Represents a sorted dimension.
+                "kind": "dfareporting#sortedDimension", # The kind of resource this is, in this case dfareporting#sortedDimension.
+                "name": "A String", # The name of the dimension.
+                "sortOrder": "A String", # An optional sort order for the dimension column.
+              },
+            ],
+          },
+          "kind": "dfareporting#report", # The kind of resource this is, in this case dfareporting#report.
+          "subAccountId": "A String", # The subaccount ID to which this report belongs if applicable.
+          "name": "A String", # The name of the report.
+          "schedule": { # The report's schedule. Can only be set if the report's 'dateRange' is a relative date range and the relative date range is not "TODAY".
+            "startDate": "A String", # Start date of date range for which scheduled reports should be run.
+            "runsOnDayOfMonth": "A String", # Enum to define for "MONTHLY" scheduled reports whether reports should be repeated on the same day of the month as "startDate" or the same day of the week of the month.
+                # Example: If 'startDate' is Monday, April 2nd 2012 (2012-04-02), "DAY_OF_MONTH" would run subsequent reports on the 2nd of every Month, and "WEEK_OF_MONTH" would run subsequent reports on the first Monday of the month.
+            "every": 42, # Defines every how many days, weeks or months the report should be run. Needs to be set when "repeats" is either "DAILY", "WEEKLY" or "MONTHLY".
+            "expirationDate": "A String", # The expiration date when the scheduled report stops running.
+            "active": True or False, # Whether the schedule is active or not. Must be set to either true or false.
+            "repeats": "A String", # The interval for which the report is repeated. Note:
+                # - "DAILY" also requires field "every" to be set.
+                # - "WEEKLY" also requires fields "every" and "repeatsOnWeekDays" to be set.
+                # - "MONTHLY" also requires fields "every" and "runsOnDayOfMonth" to be set.
+            "repeatsOnWeekDays": [ # List of week days "WEEKLY" on which scheduled reports should run.
+              "A String",
+            ],
+          },
+          "format": "A String", # The output format of the report. If not specified, default format is "CSV". Note that the actual format in the completed report file might differ if for instance the report's size exceeds the format's capabilities. "CSV" will then be the fallback format.
+          "ownerProfileId": "A String", # The user profile id of the owner of this report.
+          "reachCriteria": { # The report criteria for a report of type "REACH".
+            "activities": { # Represents an activity group. # Activity group.
+              "kind": "dfareporting#activities", # The kind of resource this is, in this case dfareporting#activities.
+              "filters": [ # List of activity filters. The dimension values need to be all either of type "dfa:activity" or "dfa:activityGroup".
+                { # Represents a DimensionValue resource.
+                  "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+                  "value": "A String", # The value of the dimension.
+                  "dimensionName": "A String", # The name of the dimension.
+                  "etag": "A String", # The eTag of this response for caching purposes.
+                  "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+                  "id": "A String", # The ID associated with the value if available.
+                },
+              ],
+              "metricNames": [ # List of names of floodlight activity metrics.
+                "A String",
+              ],
+            },
+            "dimensions": [ # The list of dimensions the report should include.
+              { # Represents a sorted dimension.
+                "kind": "dfareporting#sortedDimension", # The kind of resource this is, in this case dfareporting#sortedDimension.
+                "name": "A String", # The name of the dimension.
+                "sortOrder": "A String", # An optional sort order for the dimension column.
+              },
+            ],
+            "metricNames": [ # The list of names of metrics the report should include.
+              "A String",
+            ],
+            "dateRange": { # Represents a date range. # The date range this report should be run for.
+              "startDate": "A String", # The start date of the date range, inclusive. A string of the format: "yyyy-MM-dd".
+              "kind": "dfareporting#dateRange", # The kind of resource this is, in this case dfareporting#dateRange.
+              "endDate": "A String", # The end date of the date range, inclusive. A string of the format: "yyyy-MM-dd".
+              "relativeDateRange": "A String", # The date range relative to the date of when the report is run.
+            },
+            "dimensionFilters": [ # The list of filters on which dimensions are filtered.
+                # Filters for different dimensions are ANDed, filters for the same dimension are grouped together and ORed.
+              { # Represents a DimensionValue resource.
+                "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+                "value": "A String", # The value of the dimension.
+                "dimensionName": "A String", # The name of the dimension.
+                "etag": "A String", # The eTag of this response for caching purposes.
+                "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+                "id": "A String", # The ID associated with the value if available.
+              },
+            ],
+            "reachByFrequencyMetricNames": [ # The list of names of  Reach By Frequency metrics the report should include.
+              "A String",
+            ],
+            "customRichMediaEvents": { # Represents a Custom Rich Media Events group. # Custom Rich Media Events group.
+              "kind": "dfareporting#customRichMediaEvents", # The kind of resource this is, in this case dfareporting#customRichMediaEvents.
+              "filteredEventIds": [ # List of custom rich media event IDs. Dimension values must be all of type dfa:richMediaEventTypeIdAndName.
+                { # Represents a DimensionValue resource.
+                  "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+                  "value": "A String", # The value of the dimension.
+                  "dimensionName": "A String", # The name of the dimension.
+                  "etag": "A String", # The eTag of this response for caching purposes.
+                  "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+                  "id": "A String", # The ID associated with the value if available.
+                },
+              ],
+            },
+            "enableAllDimensionCombinations": True or False, # Whether to enable all reach dimension combinations in the report. Defaults to false. If enabled, the date range of the report should be within the last three months.
+          },
+          "floodlightCriteria": { # The report criteria for a report of type "FLOODLIGHT".
+            "dimensions": [ # The list of dimensions the report should include.
+              { # Represents a sorted dimension.
+                "kind": "dfareporting#sortedDimension", # The kind of resource this is, in this case dfareporting#sortedDimension.
+                "name": "A String", # The name of the dimension.
+                "sortOrder": "A String", # An optional sort order for the dimension column.
+              },
+            ],
+            "metricNames": [ # The list of names of metrics the report should include.
+              "A String",
+            ],
+            "dateRange": { # Represents a date range. # The date range this report should be run for.
+              "startDate": "A String", # The start date of the date range, inclusive. A string of the format: "yyyy-MM-dd".
+              "kind": "dfareporting#dateRange", # The kind of resource this is, in this case dfareporting#dateRange.
+              "endDate": "A String", # The end date of the date range, inclusive. A string of the format: "yyyy-MM-dd".
+              "relativeDateRange": "A String", # The date range relative to the date of when the report is run.
+            },
+            "dimensionFilters": [ # The list of filters on which dimensions are filtered.
+                # Filters for different dimensions are ANDed, filters for the same dimension are grouped together and ORed.
+              { # Represents a DimensionValue resource.
+                "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+                "value": "A String", # The value of the dimension.
+                "dimensionName": "A String", # The name of the dimension.
+                "etag": "A String", # The eTag of this response for caching purposes.
+                "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+                "id": "A String", # The ID associated with the value if available.
+              },
+            ],
+            "floodlightConfigId": { # Represents a DimensionValue resource. # The floodlight ID for which to show data in this report. All advertisers associated with that ID will automatically be added. The dimension of the value needs to be 'dfa:floodlightConfigId'.
+              "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+              "value": "A String", # The value of the dimension.
+              "dimensionName": "A String", # The name of the dimension.
+              "etag": "A String", # The eTag of this response for caching purposes.
+              "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+              "id": "A String", # The ID associated with the value if available.
+            },
+            "customRichMediaEvents": [ # The list of custom rich media events to include.
+              { # Represents a DimensionValue resource.
+                "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+                "value": "A String", # The value of the dimension.
+                "dimensionName": "A String", # The name of the dimension.
+                "etag": "A String", # The eTag of this response for caching purposes.
+                "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+                "id": "A String", # The ID associated with the value if available.
+              },
+            ],
+            "reportProperties": { # The properties of the report.
+              "includeUnattributedIPConversions": True or False, # Include conversions that have no associated cookies and no exposures. It’s therefore impossible to know how the user was exposed to your ads during the lookback window prior to a conversion.
+              "includeUnattributedCookieConversions": True or False, # Include conversions of users with a DoubleClick cookie but without an exposure. That means the user did not click or see an ad from the advertiser within the Floodlight group, or that the interaction happened outside the lookback window.
+              "includeAttributedIPConversions": True or False, # Include conversions that have no cookie, but do have an exposure path.
+            },
+          },
+          "fileName": "A String", # The filename used when generating report files for this report.
+          "delivery": { # The report's email delivery settings.
+            "message": "A String", # The message to be sent with each email.
+            "emailOwnerDeliveryType": "A String", # The type of delivery for the owner to receive, if enabled.
+            "recipients": [ # The list of recipients to which to email the report.
+              { # Represents a recipient.
+                "kind": "dfareporting#recipient", # The kind of resource this is, in this case dfareporting#recipient.
+                "deliveryType": "A String", # The delivery type for the recipient.
+                "email": "A String", # The email address of the recipient.
+              },
+            ],
+            "emailOwner": True or False, # Whether the report should be emailed to the report owner.
+          },
+          "etag": "A String", # The eTag of this response for caching purposes.
+          "criteria": { # The report criteria for a report of type "STANDARD".
+            "activities": { # Represents an activity group. # Activity group.
+              "kind": "dfareporting#activities", # The kind of resource this is, in this case dfareporting#activities.
+              "filters": [ # List of activity filters. The dimension values need to be all either of type "dfa:activity" or "dfa:activityGroup".
+                { # Represents a DimensionValue resource.
+                  "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+                  "value": "A String", # The value of the dimension.
+                  "dimensionName": "A String", # The name of the dimension.
+                  "etag": "A String", # The eTag of this response for caching purposes.
+                  "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+                  "id": "A String", # The ID associated with the value if available.
+                },
+              ],
+              "metricNames": [ # List of names of floodlight activity metrics.
+                "A String",
+              ],
+            },
+            "dimensions": [ # The list of standard dimensions the report should include.
+              { # Represents a sorted dimension.
+                "kind": "dfareporting#sortedDimension", # The kind of resource this is, in this case dfareporting#sortedDimension.
+                "name": "A String", # The name of the dimension.
+                "sortOrder": "A String", # An optional sort order for the dimension column.
+              },
+            ],
+            "metricNames": [ # The list of names of metrics the report should include.
+              "A String",
+            ],
+            "dateRange": { # Represents a date range. # The date range for which this report should be run.
+              "startDate": "A String", # The start date of the date range, inclusive. A string of the format: "yyyy-MM-dd".
+              "kind": "dfareporting#dateRange", # The kind of resource this is, in this case dfareporting#dateRange.
+              "endDate": "A String", # The end date of the date range, inclusive. A string of the format: "yyyy-MM-dd".
+              "relativeDateRange": "A String", # The date range relative to the date of when the report is run.
+            },
+            "dimensionFilters": [ # The list of filters on which dimensions are filtered.
+                # Filters for different dimensions are ANDed, filters for the same dimension are grouped together and ORed.
+              { # Represents a DimensionValue resource.
+                "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+                "value": "A String", # The value of the dimension.
+                "dimensionName": "A String", # The name of the dimension.
+                "etag": "A String", # The eTag of this response for caching purposes.
+                "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+                "id": "A String", # The ID associated with the value if available.
+              },
+            ],
+            "customRichMediaEvents": { # Represents a Custom Rich Media Events group. # Custom Rich Media Events group.
+              "kind": "dfareporting#customRichMediaEvents", # The kind of resource this is, in this case dfareporting#customRichMediaEvents.
+              "filteredEventIds": [ # List of custom rich media event IDs. Dimension values must be all of type dfa:richMediaEventTypeIdAndName.
+                { # Represents a DimensionValue resource.
+                  "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+                  "value": "A String", # The value of the dimension.
+                  "dimensionName": "A String", # The name of the dimension.
+                  "etag": "A String", # The eTag of this response for caching purposes.
+                  "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+                  "id": "A String", # The ID associated with the value if available.
+                },
+              ],
+            },
+          },
+          "id": "A String", # The unique ID identifying this report resource.
+          "lastModifiedTime": "A String", # The timestamp (in milliseconds since epoch) of when this report was last modified.
+          "type": "A String", # The type of the report.
+          "crossDimensionReachCriteria": { # The report criteria for a report of type "CROSS_DIMENSION_REACH".
+            "breakdown": [ # The list of dimensions the report should include.
+              { # Represents a sorted dimension.
+                "kind": "dfareporting#sortedDimension", # The kind of resource this is, in this case dfareporting#sortedDimension.
+                "name": "A String", # The name of the dimension.
+                "sortOrder": "A String", # An optional sort order for the dimension column.
+              },
+            ],
+            "overlapMetricNames": [ # The list of names of overlap metrics the report should include.
+              "A String",
+            ],
+            "metricNames": [ # The list of names of metrics the report should include.
+              "A String",
+            ],
+            "dateRange": { # Represents a date range. # The date range this report should be run for.
+              "startDate": "A String", # The start date of the date range, inclusive. A string of the format: "yyyy-MM-dd".
+              "kind": "dfareporting#dateRange", # The kind of resource this is, in this case dfareporting#dateRange.
+              "endDate": "A String", # The end date of the date range, inclusive. A string of the format: "yyyy-MM-dd".
+              "relativeDateRange": "A String", # The date range relative to the date of when the report is run.
+            },
+            "dimensionFilters": [ # The list of filters on which dimensions are filtered.
+              { # Represents a DimensionValue resource.
+                "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+                "value": "A String", # The value of the dimension.
+                "dimensionName": "A String", # The name of the dimension.
+                "etag": "A String", # The eTag of this response for caching purposes.
+                "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+                "id": "A String", # The ID associated with the value if available.
+              },
+            ],
+            "pivoted": True or False, # Whether the report is pivoted or not. Defaults to true.
+            "dimension": "A String", # The dimension option.
+          },
+          "accountId": "A String", # The account ID to which this report belongs.
+        },
+    ],
+    "kind": "dfareporting#reportList", # The kind of list this is, in this case dfareporting#reportList.
+    "etag": "A String", # The eTag of this response for caching purposes.
+  }</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="patch">patch(profileId, reportId, body)</code>
+  <pre>Updates a report. This method supports patch semantics.
+
+Args:
+  profileId: string, The DFA user profile ID. (required)
+  reportId: string, The ID of the report. (required)
+  body: object, The request body. (required)
+    The object takes the form of:
+
+{ # Represents a Report resource.
+    "pathToConversionCriteria": { # The report criteria for a report of type "PATH_TO_CONVERSION".
+      "conversionDimensions": [ # The list of conversion dimensions the report should include.
+        { # Represents a sorted dimension.
+          "kind": "dfareporting#sortedDimension", # The kind of resource this is, in this case dfareporting#sortedDimension.
+          "name": "A String", # The name of the dimension.
+          "sortOrder": "A String", # An optional sort order for the dimension column.
+        },
+      ],
+      "metricNames": [ # The list of names of metrics the report should include.
+        "A String",
+      ],
+      "dateRange": { # Represents a date range. # The date range this report should be run for.
+        "startDate": "A String", # The start date of the date range, inclusive. A string of the format: "yyyy-MM-dd".
+        "kind": "dfareporting#dateRange", # The kind of resource this is, in this case dfareporting#dateRange.
+        "endDate": "A String", # The end date of the date range, inclusive. A string of the format: "yyyy-MM-dd".
+        "relativeDateRange": "A String", # The date range relative to the date of when the report is run.
+      },
+      "reportProperties": { # The properties of the report.
+        "clicksLookbackWindow": 42, # DFA checks to see if a click interaction occurred within the specified period of time before a conversion. By default the value is pulled from Floodlight or you can manually enter a custom value. Valid values: 1-90.
+        "pivotOnInteractionPath": True or False, # Enable pivoting on interaction path.
+        "impressionsLookbackWindow": 42, # DFA checks to see if an impression interaction occurred within the specified period of time before a conversion. By default the value is pulled from Floodlight or you can manually enter a custom value. Valid values: 1-90.
+        "includeUnattributedIPConversions": True or False, # Include conversions that have no associated cookies and no exposures. It’s therefore impossible to know how the user was exposed to your ads during the lookback window prior to a conversion.
+        "includeUnattributedCookieConversions": True or False, # Include conversions of users with a DoubleClick cookie but without an exposure. That means the user did not click or see an ad from the advertiser within the Floodlight group, or that the interaction happened outside the lookback window.
+        "maximumInteractionGap": 42, # The maximum amount of time that can take place between interactions (clicks or impressions) by the same user. Valid values: 1-90.
+        "includeAttributedIPConversions": True or False, # Deprecated: has no effect.
+        "maximumClickInteractions": 42, # The maximum number of click interactions to include in the report. Advertisers currently paying for E2C reports get up to 200 (100 clicks, 100 impressions). If another advertiser in your network is paying for E2C, you can have up to 5 total exposures per report.
+        "maximumImpressionInteractions": 42, # The maximum number of click interactions to include in the report. Advertisers currently paying for E2C reports get up to 200 (100 clicks, 100 impressions). If another advertiser in your network is paying for E2C, you can have up to 5 total exposures per report.
+      },
+      "perInteractionDimensions": [ # The list of per interaction dimensions the report should include.
+        { # Represents a sorted dimension.
+          "kind": "dfareporting#sortedDimension", # The kind of resource this is, in this case dfareporting#sortedDimension.
+          "name": "A String", # The name of the dimension.
+          "sortOrder": "A String", # An optional sort order for the dimension column.
+        },
+      ],
+      "activityFilters": [ # The list of 'dfa:activity' values to filter on.
+        { # Represents a DimensionValue resource.
+          "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+          "value": "A String", # The value of the dimension.
+          "dimensionName": "A String", # The name of the dimension.
+          "etag": "A String", # The eTag of this response for caching purposes.
+          "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+          "id": "A String", # The ID associated with the value if available.
+        },
+      ],
+      "customRichMediaEvents": [ # The list of custom rich media events to include.
+        { # Represents a DimensionValue resource.
+          "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+          "value": "A String", # The value of the dimension.
+          "dimensionName": "A String", # The name of the dimension.
+          "etag": "A String", # The eTag of this response for caching purposes.
+          "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+          "id": "A String", # The ID associated with the value if available.
+        },
+      ],
+      "floodlightConfigId": { # Represents a DimensionValue resource. # The floodlight ID for which to show data in this report. All advertisers associated with that ID will automatically be added. The dimension of the value needs to be 'dfa:floodlightConfigId'.
+        "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+        "value": "A String", # The value of the dimension.
+        "dimensionName": "A String", # The name of the dimension.
+        "etag": "A String", # The eTag of this response for caching purposes.
+        "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+        "id": "A String", # The ID associated with the value if available.
+      },
+      "customFloodlightVariables": [ # The list of custom floodlight variables the report should include.
+        { # Represents a sorted dimension.
+          "kind": "dfareporting#sortedDimension", # The kind of resource this is, in this case dfareporting#sortedDimension.
+          "name": "A String", # The name of the dimension.
+          "sortOrder": "A String", # An optional sort order for the dimension column.
+        },
+      ],
+    },
+    "kind": "dfareporting#report", # The kind of resource this is, in this case dfareporting#report.
+    "subAccountId": "A String", # The subaccount ID to which this report belongs if applicable.
+    "name": "A String", # The name of the report.
+    "schedule": { # The report's schedule. Can only be set if the report's 'dateRange' is a relative date range and the relative date range is not "TODAY".
+      "startDate": "A String", # Start date of date range for which scheduled reports should be run.
+      "runsOnDayOfMonth": "A String", # Enum to define for "MONTHLY" scheduled reports whether reports should be repeated on the same day of the month as "startDate" or the same day of the week of the month.
+          # Example: If 'startDate' is Monday, April 2nd 2012 (2012-04-02), "DAY_OF_MONTH" would run subsequent reports on the 2nd of every Month, and "WEEK_OF_MONTH" would run subsequent reports on the first Monday of the month.
+      "every": 42, # Defines every how many days, weeks or months the report should be run. Needs to be set when "repeats" is either "DAILY", "WEEKLY" or "MONTHLY".
+      "expirationDate": "A String", # The expiration date when the scheduled report stops running.
+      "active": True or False, # Whether the schedule is active or not. Must be set to either true or false.
+      "repeats": "A String", # The interval for which the report is repeated. Note:
+          # - "DAILY" also requires field "every" to be set.
+          # - "WEEKLY" also requires fields "every" and "repeatsOnWeekDays" to be set.
+          # - "MONTHLY" also requires fields "every" and "runsOnDayOfMonth" to be set.
+      "repeatsOnWeekDays": [ # List of week days "WEEKLY" on which scheduled reports should run.
+        "A String",
+      ],
+    },
+    "format": "A String", # The output format of the report. If not specified, default format is "CSV". Note that the actual format in the completed report file might differ if for instance the report's size exceeds the format's capabilities. "CSV" will then be the fallback format.
+    "ownerProfileId": "A String", # The user profile id of the owner of this report.
+    "reachCriteria": { # The report criteria for a report of type "REACH".
+      "activities": { # Represents an activity group. # Activity group.
+        "kind": "dfareporting#activities", # The kind of resource this is, in this case dfareporting#activities.
+        "filters": [ # List of activity filters. The dimension values need to be all either of type "dfa:activity" or "dfa:activityGroup".
+          { # Represents a DimensionValue resource.
+            "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+            "value": "A String", # The value of the dimension.
+            "dimensionName": "A String", # The name of the dimension.
+            "etag": "A String", # The eTag of this response for caching purposes.
+            "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+            "id": "A String", # The ID associated with the value if available.
+          },
+        ],
+        "metricNames": [ # List of names of floodlight activity metrics.
+          "A String",
+        ],
+      },
+      "dimensions": [ # The list of dimensions the report should include.
+        { # Represents a sorted dimension.
+          "kind": "dfareporting#sortedDimension", # The kind of resource this is, in this case dfareporting#sortedDimension.
+          "name": "A String", # The name of the dimension.
+          "sortOrder": "A String", # An optional sort order for the dimension column.
+        },
+      ],
+      "metricNames": [ # The list of names of metrics the report should include.
+        "A String",
+      ],
+      "dateRange": { # Represents a date range. # The date range this report should be run for.
+        "startDate": "A String", # The start date of the date range, inclusive. A string of the format: "yyyy-MM-dd".
+        "kind": "dfareporting#dateRange", # The kind of resource this is, in this case dfareporting#dateRange.
+        "endDate": "A String", # The end date of the date range, inclusive. A string of the format: "yyyy-MM-dd".
+        "relativeDateRange": "A String", # The date range relative to the date of when the report is run.
+      },
+      "dimensionFilters": [ # The list of filters on which dimensions are filtered.
+          # Filters for different dimensions are ANDed, filters for the same dimension are grouped together and ORed.
+        { # Represents a DimensionValue resource.
+          "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+          "value": "A String", # The value of the dimension.
+          "dimensionName": "A String", # The name of the dimension.
+          "etag": "A String", # The eTag of this response for caching purposes.
+          "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+          "id": "A String", # The ID associated with the value if available.
+        },
+      ],
+      "reachByFrequencyMetricNames": [ # The list of names of  Reach By Frequency metrics the report should include.
+        "A String",
+      ],
+      "customRichMediaEvents": { # Represents a Custom Rich Media Events group. # Custom Rich Media Events group.
+        "kind": "dfareporting#customRichMediaEvents", # The kind of resource this is, in this case dfareporting#customRichMediaEvents.
+        "filteredEventIds": [ # List of custom rich media event IDs. Dimension values must be all of type dfa:richMediaEventTypeIdAndName.
+          { # Represents a DimensionValue resource.
+            "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+            "value": "A String", # The value of the dimension.
+            "dimensionName": "A String", # The name of the dimension.
+            "etag": "A String", # The eTag of this response for caching purposes.
+            "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+            "id": "A String", # The ID associated with the value if available.
+          },
+        ],
+      },
+      "enableAllDimensionCombinations": True or False, # Whether to enable all reach dimension combinations in the report. Defaults to false. If enabled, the date range of the report should be within the last three months.
+    },
+    "floodlightCriteria": { # The report criteria for a report of type "FLOODLIGHT".
+      "dimensions": [ # The list of dimensions the report should include.
+        { # Represents a sorted dimension.
+          "kind": "dfareporting#sortedDimension", # The kind of resource this is, in this case dfareporting#sortedDimension.
+          "name": "A String", # The name of the dimension.
+          "sortOrder": "A String", # An optional sort order for the dimension column.
+        },
+      ],
+      "metricNames": [ # The list of names of metrics the report should include.
+        "A String",
+      ],
+      "dateRange": { # Represents a date range. # The date range this report should be run for.
+        "startDate": "A String", # The start date of the date range, inclusive. A string of the format: "yyyy-MM-dd".
+        "kind": "dfareporting#dateRange", # The kind of resource this is, in this case dfareporting#dateRange.
+        "endDate": "A String", # The end date of the date range, inclusive. A string of the format: "yyyy-MM-dd".
+        "relativeDateRange": "A String", # The date range relative to the date of when the report is run.
+      },
+      "dimensionFilters": [ # The list of filters on which dimensions are filtered.
+          # Filters for different dimensions are ANDed, filters for the same dimension are grouped together and ORed.
+        { # Represents a DimensionValue resource.
+          "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+          "value": "A String", # The value of the dimension.
+          "dimensionName": "A String", # The name of the dimension.
+          "etag": "A String", # The eTag of this response for caching purposes.
+          "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+          "id": "A String", # The ID associated with the value if available.
+        },
+      ],
+      "floodlightConfigId": { # Represents a DimensionValue resource. # The floodlight ID for which to show data in this report. All advertisers associated with that ID will automatically be added. The dimension of the value needs to be 'dfa:floodlightConfigId'.
+        "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+        "value": "A String", # The value of the dimension.
+        "dimensionName": "A String", # The name of the dimension.
+        "etag": "A String", # The eTag of this response for caching purposes.
+        "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+        "id": "A String", # The ID associated with the value if available.
+      },
+      "customRichMediaEvents": [ # The list of custom rich media events to include.
+        { # Represents a DimensionValue resource.
+          "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+          "value": "A String", # The value of the dimension.
+          "dimensionName": "A String", # The name of the dimension.
+          "etag": "A String", # The eTag of this response for caching purposes.
+          "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+          "id": "A String", # The ID associated with the value if available.
+        },
+      ],
+      "reportProperties": { # The properties of the report.
+        "includeUnattributedIPConversions": True or False, # Include conversions that have no associated cookies and no exposures. It’s therefore impossible to know how the user was exposed to your ads during the lookback window prior to a conversion.
+        "includeUnattributedCookieConversions": True or False, # Include conversions of users with a DoubleClick cookie but without an exposure. That means the user did not click or see an ad from the advertiser within the Floodlight group, or that the interaction happened outside the lookback window.
+        "includeAttributedIPConversions": True or False, # Include conversions that have no cookie, but do have an exposure path.
+      },
+    },
+    "fileName": "A String", # The filename used when generating report files for this report.
+    "delivery": { # The report's email delivery settings.
+      "message": "A String", # The message to be sent with each email.
+      "emailOwnerDeliveryType": "A String", # The type of delivery for the owner to receive, if enabled.
+      "recipients": [ # The list of recipients to which to email the report.
+        { # Represents a recipient.
+          "kind": "dfareporting#recipient", # The kind of resource this is, in this case dfareporting#recipient.
+          "deliveryType": "A String", # The delivery type for the recipient.
+          "email": "A String", # The email address of the recipient.
+        },
+      ],
+      "emailOwner": True or False, # Whether the report should be emailed to the report owner.
+    },
+    "etag": "A String", # The eTag of this response for caching purposes.
+    "criteria": { # The report criteria for a report of type "STANDARD".
+      "activities": { # Represents an activity group. # Activity group.
+        "kind": "dfareporting#activities", # The kind of resource this is, in this case dfareporting#activities.
+        "filters": [ # List of activity filters. The dimension values need to be all either of type "dfa:activity" or "dfa:activityGroup".
+          { # Represents a DimensionValue resource.
+            "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+            "value": "A String", # The value of the dimension.
+            "dimensionName": "A String", # The name of the dimension.
+            "etag": "A String", # The eTag of this response for caching purposes.
+            "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+            "id": "A String", # The ID associated with the value if available.
+          },
+        ],
+        "metricNames": [ # List of names of floodlight activity metrics.
+          "A String",
+        ],
+      },
+      "dimensions": [ # The list of standard dimensions the report should include.
+        { # Represents a sorted dimension.
+          "kind": "dfareporting#sortedDimension", # The kind of resource this is, in this case dfareporting#sortedDimension.
+          "name": "A String", # The name of the dimension.
+          "sortOrder": "A String", # An optional sort order for the dimension column.
+        },
+      ],
+      "metricNames": [ # The list of names of metrics the report should include.
+        "A String",
+      ],
+      "dateRange": { # Represents a date range. # The date range for which this report should be run.
+        "startDate": "A String", # The start date of the date range, inclusive. A string of the format: "yyyy-MM-dd".
+        "kind": "dfareporting#dateRange", # The kind of resource this is, in this case dfareporting#dateRange.
+        "endDate": "A String", # The end date of the date range, inclusive. A string of the format: "yyyy-MM-dd".
+        "relativeDateRange": "A String", # The date range relative to the date of when the report is run.
+      },
+      "dimensionFilters": [ # The list of filters on which dimensions are filtered.
+          # Filters for different dimensions are ANDed, filters for the same dimension are grouped together and ORed.
+        { # Represents a DimensionValue resource.
+          "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+          "value": "A String", # The value of the dimension.
+          "dimensionName": "A String", # The name of the dimension.
+          "etag": "A String", # The eTag of this response for caching purposes.
+          "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+          "id": "A String", # The ID associated with the value if available.
+        },
+      ],
+      "customRichMediaEvents": { # Represents a Custom Rich Media Events group. # Custom Rich Media Events group.
+        "kind": "dfareporting#customRichMediaEvents", # The kind of resource this is, in this case dfareporting#customRichMediaEvents.
+        "filteredEventIds": [ # List of custom rich media event IDs. Dimension values must be all of type dfa:richMediaEventTypeIdAndName.
+          { # Represents a DimensionValue resource.
+            "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+            "value": "A String", # The value of the dimension.
+            "dimensionName": "A String", # The name of the dimension.
+            "etag": "A String", # The eTag of this response for caching purposes.
+            "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+            "id": "A String", # The ID associated with the value if available.
+          },
+        ],
+      },
+    },
+    "id": "A String", # The unique ID identifying this report resource.
+    "lastModifiedTime": "A String", # The timestamp (in milliseconds since epoch) of when this report was last modified.
+    "type": "A String", # The type of the report.
+    "crossDimensionReachCriteria": { # The report criteria for a report of type "CROSS_DIMENSION_REACH".
+      "breakdown": [ # The list of dimensions the report should include.
+        { # Represents a sorted dimension.
+          "kind": "dfareporting#sortedDimension", # The kind of resource this is, in this case dfareporting#sortedDimension.
+          "name": "A String", # The name of the dimension.
+          "sortOrder": "A String", # An optional sort order for the dimension column.
+        },
+      ],
+      "overlapMetricNames": [ # The list of names of overlap metrics the report should include.
+        "A String",
+      ],
+      "metricNames": [ # The list of names of metrics the report should include.
+        "A String",
+      ],
+      "dateRange": { # Represents a date range. # The date range this report should be run for.
+        "startDate": "A String", # The start date of the date range, inclusive. A string of the format: "yyyy-MM-dd".
+        "kind": "dfareporting#dateRange", # The kind of resource this is, in this case dfareporting#dateRange.
+        "endDate": "A String", # The end date of the date range, inclusive. A string of the format: "yyyy-MM-dd".
+        "relativeDateRange": "A String", # The date range relative to the date of when the report is run.
+      },
+      "dimensionFilters": [ # The list of filters on which dimensions are filtered.
+        { # Represents a DimensionValue resource.
+          "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+          "value": "A String", # The value of the dimension.
+          "dimensionName": "A String", # The name of the dimension.
+          "etag": "A String", # The eTag of this response for caching purposes.
+          "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+          "id": "A String", # The ID associated with the value if available.
+        },
+      ],
+      "pivoted": True or False, # Whether the report is pivoted or not. Defaults to true.
+      "dimension": "A String", # The dimension option.
+    },
+    "accountId": "A String", # The account ID to which this report belongs.
+  }
+
+
+Returns:
+  An object of the form:
+
+    { # Represents a Report resource.
+      "pathToConversionCriteria": { # The report criteria for a report of type "PATH_TO_CONVERSION".
+        "conversionDimensions": [ # The list of conversion dimensions the report should include.
+          { # Represents a sorted dimension.
+            "kind": "dfareporting#sortedDimension", # The kind of resource this is, in this case dfareporting#sortedDimension.
+            "name": "A String", # The name of the dimension.
+            "sortOrder": "A String", # An optional sort order for the dimension column.
+          },
+        ],
+        "metricNames": [ # The list of names of metrics the report should include.
+          "A String",
+        ],
+        "dateRange": { # Represents a date range. # The date range this report should be run for.
+          "startDate": "A String", # The start date of the date range, inclusive. A string of the format: "yyyy-MM-dd".
+          "kind": "dfareporting#dateRange", # The kind of resource this is, in this case dfareporting#dateRange.
+          "endDate": "A String", # The end date of the date range, inclusive. A string of the format: "yyyy-MM-dd".
+          "relativeDateRange": "A String", # The date range relative to the date of when the report is run.
+        },
+        "reportProperties": { # The properties of the report.
+          "clicksLookbackWindow": 42, # DFA checks to see if a click interaction occurred within the specified period of time before a conversion. By default the value is pulled from Floodlight or you can manually enter a custom value. Valid values: 1-90.
+          "pivotOnInteractionPath": True or False, # Enable pivoting on interaction path.
+          "impressionsLookbackWindow": 42, # DFA checks to see if an impression interaction occurred within the specified period of time before a conversion. By default the value is pulled from Floodlight or you can manually enter a custom value. Valid values: 1-90.
+          "includeUnattributedIPConversions": True or False, # Include conversions that have no associated cookies and no exposures. It’s therefore impossible to know how the user was exposed to your ads during the lookback window prior to a conversion.
+          "includeUnattributedCookieConversions": True or False, # Include conversions of users with a DoubleClick cookie but without an exposure. That means the user did not click or see an ad from the advertiser within the Floodlight group, or that the interaction happened outside the lookback window.
+          "maximumInteractionGap": 42, # The maximum amount of time that can take place between interactions (clicks or impressions) by the same user. Valid values: 1-90.
+          "includeAttributedIPConversions": True or False, # Deprecated: has no effect.
+          "maximumClickInteractions": 42, # The maximum number of click interactions to include in the report. Advertisers currently paying for E2C reports get up to 200 (100 clicks, 100 impressions). If another advertiser in your network is paying for E2C, you can have up to 5 total exposures per report.
+          "maximumImpressionInteractions": 42, # The maximum number of click interactions to include in the report. Advertisers currently paying for E2C reports get up to 200 (100 clicks, 100 impressions). If another advertiser in your network is paying for E2C, you can have up to 5 total exposures per report.
+        },
+        "perInteractionDimensions": [ # The list of per interaction dimensions the report should include.
+          { # Represents a sorted dimension.
+            "kind": "dfareporting#sortedDimension", # The kind of resource this is, in this case dfareporting#sortedDimension.
+            "name": "A String", # The name of the dimension.
+            "sortOrder": "A String", # An optional sort order for the dimension column.
+          },
+        ],
+        "activityFilters": [ # The list of 'dfa:activity' values to filter on.
+          { # Represents a DimensionValue resource.
+            "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+            "value": "A String", # The value of the dimension.
+            "dimensionName": "A String", # The name of the dimension.
+            "etag": "A String", # The eTag of this response for caching purposes.
+            "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+            "id": "A String", # The ID associated with the value if available.
+          },
+        ],
+        "customRichMediaEvents": [ # The list of custom rich media events to include.
+          { # Represents a DimensionValue resource.
+            "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+            "value": "A String", # The value of the dimension.
+            "dimensionName": "A String", # The name of the dimension.
+            "etag": "A String", # The eTag of this response for caching purposes.
+            "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+            "id": "A String", # The ID associated with the value if available.
+          },
+        ],
+        "floodlightConfigId": { # Represents a DimensionValue resource. # The floodlight ID for which to show data in this report. All advertisers associated with that ID will automatically be added. The dimension of the value needs to be 'dfa:floodlightConfigId'.
+          "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+          "value": "A String", # The value of the dimension.
+          "dimensionName": "A String", # The name of the dimension.
+          "etag": "A String", # The eTag of this response for caching purposes.
+          "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+          "id": "A String", # The ID associated with the value if available.
+        },
+        "customFloodlightVariables": [ # The list of custom floodlight variables the report should include.
+          { # Represents a sorted dimension.
+            "kind": "dfareporting#sortedDimension", # The kind of resource this is, in this case dfareporting#sortedDimension.
+            "name": "A String", # The name of the dimension.
+            "sortOrder": "A String", # An optional sort order for the dimension column.
+          },
+        ],
+      },
+      "kind": "dfareporting#report", # The kind of resource this is, in this case dfareporting#report.
+      "subAccountId": "A String", # The subaccount ID to which this report belongs if applicable.
+      "name": "A String", # The name of the report.
+      "schedule": { # The report's schedule. Can only be set if the report's 'dateRange' is a relative date range and the relative date range is not "TODAY".
+        "startDate": "A String", # Start date of date range for which scheduled reports should be run.
+        "runsOnDayOfMonth": "A String", # Enum to define for "MONTHLY" scheduled reports whether reports should be repeated on the same day of the month as "startDate" or the same day of the week of the month.
+            # Example: If 'startDate' is Monday, April 2nd 2012 (2012-04-02), "DAY_OF_MONTH" would run subsequent reports on the 2nd of every Month, and "WEEK_OF_MONTH" would run subsequent reports on the first Monday of the month.
+        "every": 42, # Defines every how many days, weeks or months the report should be run. Needs to be set when "repeats" is either "DAILY", "WEEKLY" or "MONTHLY".
+        "expirationDate": "A String", # The expiration date when the scheduled report stops running.
+        "active": True or False, # Whether the schedule is active or not. Must be set to either true or false.
+        "repeats": "A String", # The interval for which the report is repeated. Note:
+            # - "DAILY" also requires field "every" to be set.
+            # - "WEEKLY" also requires fields "every" and "repeatsOnWeekDays" to be set.
+            # - "MONTHLY" also requires fields "every" and "runsOnDayOfMonth" to be set.
+        "repeatsOnWeekDays": [ # List of week days "WEEKLY" on which scheduled reports should run.
+          "A String",
+        ],
+      },
+      "format": "A String", # The output format of the report. If not specified, default format is "CSV". Note that the actual format in the completed report file might differ if for instance the report's size exceeds the format's capabilities. "CSV" will then be the fallback format.
+      "ownerProfileId": "A String", # The user profile id of the owner of this report.
+      "reachCriteria": { # The report criteria for a report of type "REACH".
+        "activities": { # Represents an activity group. # Activity group.
+          "kind": "dfareporting#activities", # The kind of resource this is, in this case dfareporting#activities.
+          "filters": [ # List of activity filters. The dimension values need to be all either of type "dfa:activity" or "dfa:activityGroup".
+            { # Represents a DimensionValue resource.
+              "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+              "value": "A String", # The value of the dimension.
+              "dimensionName": "A String", # The name of the dimension.
+              "etag": "A String", # The eTag of this response for caching purposes.
+              "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+              "id": "A String", # The ID associated with the value if available.
+            },
+          ],
+          "metricNames": [ # List of names of floodlight activity metrics.
+            "A String",
+          ],
+        },
+        "dimensions": [ # The list of dimensions the report should include.
+          { # Represents a sorted dimension.
+            "kind": "dfareporting#sortedDimension", # The kind of resource this is, in this case dfareporting#sortedDimension.
+            "name": "A String", # The name of the dimension.
+            "sortOrder": "A String", # An optional sort order for the dimension column.
+          },
+        ],
+        "metricNames": [ # The list of names of metrics the report should include.
+          "A String",
+        ],
+        "dateRange": { # Represents a date range. # The date range this report should be run for.
+          "startDate": "A String", # The start date of the date range, inclusive. A string of the format: "yyyy-MM-dd".
+          "kind": "dfareporting#dateRange", # The kind of resource this is, in this case dfareporting#dateRange.
+          "endDate": "A String", # The end date of the date range, inclusive. A string of the format: "yyyy-MM-dd".
+          "relativeDateRange": "A String", # The date range relative to the date of when the report is run.
+        },
+        "dimensionFilters": [ # The list of filters on which dimensions are filtered.
+            # Filters for different dimensions are ANDed, filters for the same dimension are grouped together and ORed.
+          { # Represents a DimensionValue resource.
+            "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+            "value": "A String", # The value of the dimension.
+            "dimensionName": "A String", # The name of the dimension.
+            "etag": "A String", # The eTag of this response for caching purposes.
+            "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+            "id": "A String", # The ID associated with the value if available.
+          },
+        ],
+        "reachByFrequencyMetricNames": [ # The list of names of  Reach By Frequency metrics the report should include.
+          "A String",
+        ],
+        "customRichMediaEvents": { # Represents a Custom Rich Media Events group. # Custom Rich Media Events group.
+          "kind": "dfareporting#customRichMediaEvents", # The kind of resource this is, in this case dfareporting#customRichMediaEvents.
+          "filteredEventIds": [ # List of custom rich media event IDs. Dimension values must be all of type dfa:richMediaEventTypeIdAndName.
+            { # Represents a DimensionValue resource.
+              "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+              "value": "A String", # The value of the dimension.
+              "dimensionName": "A String", # The name of the dimension.
+              "etag": "A String", # The eTag of this response for caching purposes.
+              "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+              "id": "A String", # The ID associated with the value if available.
+            },
+          ],
+        },
+        "enableAllDimensionCombinations": True or False, # Whether to enable all reach dimension combinations in the report. Defaults to false. If enabled, the date range of the report should be within the last three months.
+      },
+      "floodlightCriteria": { # The report criteria for a report of type "FLOODLIGHT".
+        "dimensions": [ # The list of dimensions the report should include.
+          { # Represents a sorted dimension.
+            "kind": "dfareporting#sortedDimension", # The kind of resource this is, in this case dfareporting#sortedDimension.
+            "name": "A String", # The name of the dimension.
+            "sortOrder": "A String", # An optional sort order for the dimension column.
+          },
+        ],
+        "metricNames": [ # The list of names of metrics the report should include.
+          "A String",
+        ],
+        "dateRange": { # Represents a date range. # The date range this report should be run for.
+          "startDate": "A String", # The start date of the date range, inclusive. A string of the format: "yyyy-MM-dd".
+          "kind": "dfareporting#dateRange", # The kind of resource this is, in this case dfareporting#dateRange.
+          "endDate": "A String", # The end date of the date range, inclusive. A string of the format: "yyyy-MM-dd".
+          "relativeDateRange": "A String", # The date range relative to the date of when the report is run.
+        },
+        "dimensionFilters": [ # The list of filters on which dimensions are filtered.
+            # Filters for different dimensions are ANDed, filters for the same dimension are grouped together and ORed.
+          { # Represents a DimensionValue resource.
+            "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+            "value": "A String", # The value of the dimension.
+            "dimensionName": "A String", # The name of the dimension.
+            "etag": "A String", # The eTag of this response for caching purposes.
+            "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+            "id": "A String", # The ID associated with the value if available.
+          },
+        ],
+        "floodlightConfigId": { # Represents a DimensionValue resource. # The floodlight ID for which to show data in this report. All advertisers associated with that ID will automatically be added. The dimension of the value needs to be 'dfa:floodlightConfigId'.
+          "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+          "value": "A String", # The value of the dimension.
+          "dimensionName": "A String", # The name of the dimension.
+          "etag": "A String", # The eTag of this response for caching purposes.
+          "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+          "id": "A String", # The ID associated with the value if available.
+        },
+        "customRichMediaEvents": [ # The list of custom rich media events to include.
+          { # Represents a DimensionValue resource.
+            "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+            "value": "A String", # The value of the dimension.
+            "dimensionName": "A String", # The name of the dimension.
+            "etag": "A String", # The eTag of this response for caching purposes.
+            "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+            "id": "A String", # The ID associated with the value if available.
+          },
+        ],
+        "reportProperties": { # The properties of the report.
+          "includeUnattributedIPConversions": True or False, # Include conversions that have no associated cookies and no exposures. It’s therefore impossible to know how the user was exposed to your ads during the lookback window prior to a conversion.
+          "includeUnattributedCookieConversions": True or False, # Include conversions of users with a DoubleClick cookie but without an exposure. That means the user did not click or see an ad from the advertiser within the Floodlight group, or that the interaction happened outside the lookback window.
+          "includeAttributedIPConversions": True or False, # Include conversions that have no cookie, but do have an exposure path.
+        },
+      },
+      "fileName": "A String", # The filename used when generating report files for this report.
+      "delivery": { # The report's email delivery settings.
+        "message": "A String", # The message to be sent with each email.
+        "emailOwnerDeliveryType": "A String", # The type of delivery for the owner to receive, if enabled.
+        "recipients": [ # The list of recipients to which to email the report.
+          { # Represents a recipient.
+            "kind": "dfareporting#recipient", # The kind of resource this is, in this case dfareporting#recipient.
+            "deliveryType": "A String", # The delivery type for the recipient.
+            "email": "A String", # The email address of the recipient.
+          },
+        ],
+        "emailOwner": True or False, # Whether the report should be emailed to the report owner.
+      },
+      "etag": "A String", # The eTag of this response for caching purposes.
+      "criteria": { # The report criteria for a report of type "STANDARD".
+        "activities": { # Represents an activity group. # Activity group.
+          "kind": "dfareporting#activities", # The kind of resource this is, in this case dfareporting#activities.
+          "filters": [ # List of activity filters. The dimension values need to be all either of type "dfa:activity" or "dfa:activityGroup".
+            { # Represents a DimensionValue resource.
+              "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+              "value": "A String", # The value of the dimension.
+              "dimensionName": "A String", # The name of the dimension.
+              "etag": "A String", # The eTag of this response for caching purposes.
+              "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+              "id": "A String", # The ID associated with the value if available.
+            },
+          ],
+          "metricNames": [ # List of names of floodlight activity metrics.
+            "A String",
+          ],
+        },
+        "dimensions": [ # The list of standard dimensions the report should include.
+          { # Represents a sorted dimension.
+            "kind": "dfareporting#sortedDimension", # The kind of resource this is, in this case dfareporting#sortedDimension.
+            "name": "A String", # The name of the dimension.
+            "sortOrder": "A String", # An optional sort order for the dimension column.
+          },
+        ],
+        "metricNames": [ # The list of names of metrics the report should include.
+          "A String",
+        ],
+        "dateRange": { # Represents a date range. # The date range for which this report should be run.
+          "startDate": "A String", # The start date of the date range, inclusive. A string of the format: "yyyy-MM-dd".
+          "kind": "dfareporting#dateRange", # The kind of resource this is, in this case dfareporting#dateRange.
+          "endDate": "A String", # The end date of the date range, inclusive. A string of the format: "yyyy-MM-dd".
+          "relativeDateRange": "A String", # The date range relative to the date of when the report is run.
+        },
+        "dimensionFilters": [ # The list of filters on which dimensions are filtered.
+            # Filters for different dimensions are ANDed, filters for the same dimension are grouped together and ORed.
+          { # Represents a DimensionValue resource.
+            "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+            "value": "A String", # The value of the dimension.
+            "dimensionName": "A String", # The name of the dimension.
+            "etag": "A String", # The eTag of this response for caching purposes.
+            "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+            "id": "A String", # The ID associated with the value if available.
+          },
+        ],
+        "customRichMediaEvents": { # Represents a Custom Rich Media Events group. # Custom Rich Media Events group.
+          "kind": "dfareporting#customRichMediaEvents", # The kind of resource this is, in this case dfareporting#customRichMediaEvents.
+          "filteredEventIds": [ # List of custom rich media event IDs. Dimension values must be all of type dfa:richMediaEventTypeIdAndName.
+            { # Represents a DimensionValue resource.
+              "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+              "value": "A String", # The value of the dimension.
+              "dimensionName": "A String", # The name of the dimension.
+              "etag": "A String", # The eTag of this response for caching purposes.
+              "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+              "id": "A String", # The ID associated with the value if available.
+            },
+          ],
+        },
+      },
+      "id": "A String", # The unique ID identifying this report resource.
+      "lastModifiedTime": "A String", # The timestamp (in milliseconds since epoch) of when this report was last modified.
+      "type": "A String", # The type of the report.
+      "crossDimensionReachCriteria": { # The report criteria for a report of type "CROSS_DIMENSION_REACH".
+        "breakdown": [ # The list of dimensions the report should include.
+          { # Represents a sorted dimension.
+            "kind": "dfareporting#sortedDimension", # The kind of resource this is, in this case dfareporting#sortedDimension.
+            "name": "A String", # The name of the dimension.
+            "sortOrder": "A String", # An optional sort order for the dimension column.
+          },
+        ],
+        "overlapMetricNames": [ # The list of names of overlap metrics the report should include.
+          "A String",
+        ],
+        "metricNames": [ # The list of names of metrics the report should include.
+          "A String",
+        ],
+        "dateRange": { # Represents a date range. # The date range this report should be run for.
+          "startDate": "A String", # The start date of the date range, inclusive. A string of the format: "yyyy-MM-dd".
+          "kind": "dfareporting#dateRange", # The kind of resource this is, in this case dfareporting#dateRange.
+          "endDate": "A String", # The end date of the date range, inclusive. A string of the format: "yyyy-MM-dd".
+          "relativeDateRange": "A String", # The date range relative to the date of when the report is run.
+        },
+        "dimensionFilters": [ # The list of filters on which dimensions are filtered.
+          { # Represents a DimensionValue resource.
+            "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+            "value": "A String", # The value of the dimension.
+            "dimensionName": "A String", # The name of the dimension.
+            "etag": "A String", # The eTag of this response for caching purposes.
+            "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+            "id": "A String", # The ID associated with the value if available.
+          },
+        ],
+        "pivoted": True or False, # Whether the report is pivoted or not. Defaults to true.
+        "dimension": "A String", # The dimension option.
+      },
+      "accountId": "A String", # The account ID to which this report belongs.
+    }</pre>
+</div>
+
+<div class="method">
+    <code class="details" id="run">run(profileId, reportId, synchronous=None)</code>
+  <pre>Runs a report.
+
+Args:
+  profileId: string, The DFA profile ID. (required)
+  reportId: string, The ID of the report. (required)
+  synchronous: boolean, If set and true, tries to run the report synchronously.
+
+Returns:
+  An object of the form:
+
+    { # Represents a File resource. A file contains the metadata for a report run. It shows the status of the run and holds the URLs to the generated report data if the run is finished and the status is "REPORT_AVAILABLE".
+    "status": "A String", # The status of the report file.
+    "kind": "dfareporting#file", # The kind of resource this is, in this case dfareporting#file.
+    "format": "A String", # The output format of the report. Only available once the file is available.
+    "dateRange": { # Represents a date range. # The date range for which the file has report data. The date range will always be the absolute date range for which the report is run.
+      "startDate": "A String", # The start date of the date range, inclusive. A string of the format: "yyyy-MM-dd".
+      "kind": "dfareporting#dateRange", # The kind of resource this is, in this case dfareporting#dateRange.
+      "endDate": "A String", # The end date of the date range, inclusive. A string of the format: "yyyy-MM-dd".
+      "relativeDateRange": "A String", # The date range relative to the date of when the report is run.
+    },
+    "fileName": "A String", # The filename of the file.
+    "etag": "A String", # The eTag of this response for caching purposes.
+    "reportId": "A String", # The ID of the report this file was generated from.
+    "urls": { # The URLs where the completed report file can be downloaded.
+      "browserUrl": "A String", # The URL for downloading the report data through a browser.
+      "apiUrl": "A String", # The URL for downloading the report data through the API.
+    },
+    "lastModifiedTime": "A String", # The timestamp in milliseconds since epoch when this file was last modified.
+    "id": "A String", # The unique ID of this report file.
+  }</pre>
+</div>
+
+<div class="method">
+    <code class="details" id="update">update(profileId, reportId, body)</code>
+  <pre>Updates a report.
+
+Args:
+  profileId: string, The DFA user profile ID. (required)
+  reportId: string, The ID of the report. (required)
+  body: object, The request body. (required)
+    The object takes the form of:
+
+{ # Represents a Report resource.
+    "pathToConversionCriteria": { # The report criteria for a report of type "PATH_TO_CONVERSION".
+      "conversionDimensions": [ # The list of conversion dimensions the report should include.
+        { # Represents a sorted dimension.
+          "kind": "dfareporting#sortedDimension", # The kind of resource this is, in this case dfareporting#sortedDimension.
+          "name": "A String", # The name of the dimension.
+          "sortOrder": "A String", # An optional sort order for the dimension column.
+        },
+      ],
+      "metricNames": [ # The list of names of metrics the report should include.
+        "A String",
+      ],
+      "dateRange": { # Represents a date range. # The date range this report should be run for.
+        "startDate": "A String", # The start date of the date range, inclusive. A string of the format: "yyyy-MM-dd".
+        "kind": "dfareporting#dateRange", # The kind of resource this is, in this case dfareporting#dateRange.
+        "endDate": "A String", # The end date of the date range, inclusive. A string of the format: "yyyy-MM-dd".
+        "relativeDateRange": "A String", # The date range relative to the date of when the report is run.
+      },
+      "reportProperties": { # The properties of the report.
+        "clicksLookbackWindow": 42, # DFA checks to see if a click interaction occurred within the specified period of time before a conversion. By default the value is pulled from Floodlight or you can manually enter a custom value. Valid values: 1-90.
+        "pivotOnInteractionPath": True or False, # Enable pivoting on interaction path.
+        "impressionsLookbackWindow": 42, # DFA checks to see if an impression interaction occurred within the specified period of time before a conversion. By default the value is pulled from Floodlight or you can manually enter a custom value. Valid values: 1-90.
+        "includeUnattributedIPConversions": True or False, # Include conversions that have no associated cookies and no exposures. It’s therefore impossible to know how the user was exposed to your ads during the lookback window prior to a conversion.
+        "includeUnattributedCookieConversions": True or False, # Include conversions of users with a DoubleClick cookie but without an exposure. That means the user did not click or see an ad from the advertiser within the Floodlight group, or that the interaction happened outside the lookback window.
+        "maximumInteractionGap": 42, # The maximum amount of time that can take place between interactions (clicks or impressions) by the same user. Valid values: 1-90.
+        "includeAttributedIPConversions": True or False, # Deprecated: has no effect.
+        "maximumClickInteractions": 42, # The maximum number of click interactions to include in the report. Advertisers currently paying for E2C reports get up to 200 (100 clicks, 100 impressions). If another advertiser in your network is paying for E2C, you can have up to 5 total exposures per report.
+        "maximumImpressionInteractions": 42, # The maximum number of click interactions to include in the report. Advertisers currently paying for E2C reports get up to 200 (100 clicks, 100 impressions). If another advertiser in your network is paying for E2C, you can have up to 5 total exposures per report.
+      },
+      "perInteractionDimensions": [ # The list of per interaction dimensions the report should include.
+        { # Represents a sorted dimension.
+          "kind": "dfareporting#sortedDimension", # The kind of resource this is, in this case dfareporting#sortedDimension.
+          "name": "A String", # The name of the dimension.
+          "sortOrder": "A String", # An optional sort order for the dimension column.
+        },
+      ],
+      "activityFilters": [ # The list of 'dfa:activity' values to filter on.
+        { # Represents a DimensionValue resource.
+          "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+          "value": "A String", # The value of the dimension.
+          "dimensionName": "A String", # The name of the dimension.
+          "etag": "A String", # The eTag of this response for caching purposes.
+          "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+          "id": "A String", # The ID associated with the value if available.
+        },
+      ],
+      "customRichMediaEvents": [ # The list of custom rich media events to include.
+        { # Represents a DimensionValue resource.
+          "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+          "value": "A String", # The value of the dimension.
+          "dimensionName": "A String", # The name of the dimension.
+          "etag": "A String", # The eTag of this response for caching purposes.
+          "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+          "id": "A String", # The ID associated with the value if available.
+        },
+      ],
+      "floodlightConfigId": { # Represents a DimensionValue resource. # The floodlight ID for which to show data in this report. All advertisers associated with that ID will automatically be added. The dimension of the value needs to be 'dfa:floodlightConfigId'.
+        "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+        "value": "A String", # The value of the dimension.
+        "dimensionName": "A String", # The name of the dimension.
+        "etag": "A String", # The eTag of this response for caching purposes.
+        "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+        "id": "A String", # The ID associated with the value if available.
+      },
+      "customFloodlightVariables": [ # The list of custom floodlight variables the report should include.
+        { # Represents a sorted dimension.
+          "kind": "dfareporting#sortedDimension", # The kind of resource this is, in this case dfareporting#sortedDimension.
+          "name": "A String", # The name of the dimension.
+          "sortOrder": "A String", # An optional sort order for the dimension column.
+        },
+      ],
+    },
+    "kind": "dfareporting#report", # The kind of resource this is, in this case dfareporting#report.
+    "subAccountId": "A String", # The subaccount ID to which this report belongs if applicable.
+    "name": "A String", # The name of the report.
+    "schedule": { # The report's schedule. Can only be set if the report's 'dateRange' is a relative date range and the relative date range is not "TODAY".
+      "startDate": "A String", # Start date of date range for which scheduled reports should be run.
+      "runsOnDayOfMonth": "A String", # Enum to define for "MONTHLY" scheduled reports whether reports should be repeated on the same day of the month as "startDate" or the same day of the week of the month.
+          # Example: If 'startDate' is Monday, April 2nd 2012 (2012-04-02), "DAY_OF_MONTH" would run subsequent reports on the 2nd of every Month, and "WEEK_OF_MONTH" would run subsequent reports on the first Monday of the month.
+      "every": 42, # Defines every how many days, weeks or months the report should be run. Needs to be set when "repeats" is either "DAILY", "WEEKLY" or "MONTHLY".
+      "expirationDate": "A String", # The expiration date when the scheduled report stops running.
+      "active": True or False, # Whether the schedule is active or not. Must be set to either true or false.
+      "repeats": "A String", # The interval for which the report is repeated. Note:
+          # - "DAILY" also requires field "every" to be set.
+          # - "WEEKLY" also requires fields "every" and "repeatsOnWeekDays" to be set.
+          # - "MONTHLY" also requires fields "every" and "runsOnDayOfMonth" to be set.
+      "repeatsOnWeekDays": [ # List of week days "WEEKLY" on which scheduled reports should run.
+        "A String",
+      ],
+    },
+    "format": "A String", # The output format of the report. If not specified, default format is "CSV". Note that the actual format in the completed report file might differ if for instance the report's size exceeds the format's capabilities. "CSV" will then be the fallback format.
+    "ownerProfileId": "A String", # The user profile id of the owner of this report.
+    "reachCriteria": { # The report criteria for a report of type "REACH".
+      "activities": { # Represents an activity group. # Activity group.
+        "kind": "dfareporting#activities", # The kind of resource this is, in this case dfareporting#activities.
+        "filters": [ # List of activity filters. The dimension values need to be all either of type "dfa:activity" or "dfa:activityGroup".
+          { # Represents a DimensionValue resource.
+            "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+            "value": "A String", # The value of the dimension.
+            "dimensionName": "A String", # The name of the dimension.
+            "etag": "A String", # The eTag of this response for caching purposes.
+            "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+            "id": "A String", # The ID associated with the value if available.
+          },
+        ],
+        "metricNames": [ # List of names of floodlight activity metrics.
+          "A String",
+        ],
+      },
+      "dimensions": [ # The list of dimensions the report should include.
+        { # Represents a sorted dimension.
+          "kind": "dfareporting#sortedDimension", # The kind of resource this is, in this case dfareporting#sortedDimension.
+          "name": "A String", # The name of the dimension.
+          "sortOrder": "A String", # An optional sort order for the dimension column.
+        },
+      ],
+      "metricNames": [ # The list of names of metrics the report should include.
+        "A String",
+      ],
+      "dateRange": { # Represents a date range. # The date range this report should be run for.
+        "startDate": "A String", # The start date of the date range, inclusive. A string of the format: "yyyy-MM-dd".
+        "kind": "dfareporting#dateRange", # The kind of resource this is, in this case dfareporting#dateRange.
+        "endDate": "A String", # The end date of the date range, inclusive. A string of the format: "yyyy-MM-dd".
+        "relativeDateRange": "A String", # The date range relative to the date of when the report is run.
+      },
+      "dimensionFilters": [ # The list of filters on which dimensions are filtered.
+          # Filters for different dimensions are ANDed, filters for the same dimension are grouped together and ORed.
+        { # Represents a DimensionValue resource.
+          "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+          "value": "A String", # The value of the dimension.
+          "dimensionName": "A String", # The name of the dimension.
+          "etag": "A String", # The eTag of this response for caching purposes.
+          "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+          "id": "A String", # The ID associated with the value if available.
+        },
+      ],
+      "reachByFrequencyMetricNames": [ # The list of names of  Reach By Frequency metrics the report should include.
+        "A String",
+      ],
+      "customRichMediaEvents": { # Represents a Custom Rich Media Events group. # Custom Rich Media Events group.
+        "kind": "dfareporting#customRichMediaEvents", # The kind of resource this is, in this case dfareporting#customRichMediaEvents.
+        "filteredEventIds": [ # List of custom rich media event IDs. Dimension values must be all of type dfa:richMediaEventTypeIdAndName.
+          { # Represents a DimensionValue resource.
+            "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+            "value": "A String", # The value of the dimension.
+            "dimensionName": "A String", # The name of the dimension.
+            "etag": "A String", # The eTag of this response for caching purposes.
+            "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+            "id": "A String", # The ID associated with the value if available.
+          },
+        ],
+      },
+      "enableAllDimensionCombinations": True or False, # Whether to enable all reach dimension combinations in the report. Defaults to false. If enabled, the date range of the report should be within the last three months.
+    },
+    "floodlightCriteria": { # The report criteria for a report of type "FLOODLIGHT".
+      "dimensions": [ # The list of dimensions the report should include.
+        { # Represents a sorted dimension.
+          "kind": "dfareporting#sortedDimension", # The kind of resource this is, in this case dfareporting#sortedDimension.
+          "name": "A String", # The name of the dimension.
+          "sortOrder": "A String", # An optional sort order for the dimension column.
+        },
+      ],
+      "metricNames": [ # The list of names of metrics the report should include.
+        "A String",
+      ],
+      "dateRange": { # Represents a date range. # The date range this report should be run for.
+        "startDate": "A String", # The start date of the date range, inclusive. A string of the format: "yyyy-MM-dd".
+        "kind": "dfareporting#dateRange", # The kind of resource this is, in this case dfareporting#dateRange.
+        "endDate": "A String", # The end date of the date range, inclusive. A string of the format: "yyyy-MM-dd".
+        "relativeDateRange": "A String", # The date range relative to the date of when the report is run.
+      },
+      "dimensionFilters": [ # The list of filters on which dimensions are filtered.
+          # Filters for different dimensions are ANDed, filters for the same dimension are grouped together and ORed.
+        { # Represents a DimensionValue resource.
+          "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+          "value": "A String", # The value of the dimension.
+          "dimensionName": "A String", # The name of the dimension.
+          "etag": "A String", # The eTag of this response for caching purposes.
+          "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+          "id": "A String", # The ID associated with the value if available.
+        },
+      ],
+      "floodlightConfigId": { # Represents a DimensionValue resource. # The floodlight ID for which to show data in this report. All advertisers associated with that ID will automatically be added. The dimension of the value needs to be 'dfa:floodlightConfigId'.
+        "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+        "value": "A String", # The value of the dimension.
+        "dimensionName": "A String", # The name of the dimension.
+        "etag": "A String", # The eTag of this response for caching purposes.
+        "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+        "id": "A String", # The ID associated with the value if available.
+      },
+      "customRichMediaEvents": [ # The list of custom rich media events to include.
+        { # Represents a DimensionValue resource.
+          "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+          "value": "A String", # The value of the dimension.
+          "dimensionName": "A String", # The name of the dimension.
+          "etag": "A String", # The eTag of this response for caching purposes.
+          "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+          "id": "A String", # The ID associated with the value if available.
+        },
+      ],
+      "reportProperties": { # The properties of the report.
+        "includeUnattributedIPConversions": True or False, # Include conversions that have no associated cookies and no exposures. It’s therefore impossible to know how the user was exposed to your ads during the lookback window prior to a conversion.
+        "includeUnattributedCookieConversions": True or False, # Include conversions of users with a DoubleClick cookie but without an exposure. That means the user did not click or see an ad from the advertiser within the Floodlight group, or that the interaction happened outside the lookback window.
+        "includeAttributedIPConversions": True or False, # Include conversions that have no cookie, but do have an exposure path.
+      },
+    },
+    "fileName": "A String", # The filename used when generating report files for this report.
+    "delivery": { # The report's email delivery settings.
+      "message": "A String", # The message to be sent with each email.
+      "emailOwnerDeliveryType": "A String", # The type of delivery for the owner to receive, if enabled.
+      "recipients": [ # The list of recipients to which to email the report.
+        { # Represents a recipient.
+          "kind": "dfareporting#recipient", # The kind of resource this is, in this case dfareporting#recipient.
+          "deliveryType": "A String", # The delivery type for the recipient.
+          "email": "A String", # The email address of the recipient.
+        },
+      ],
+      "emailOwner": True or False, # Whether the report should be emailed to the report owner.
+    },
+    "etag": "A String", # The eTag of this response for caching purposes.
+    "criteria": { # The report criteria for a report of type "STANDARD".
+      "activities": { # Represents an activity group. # Activity group.
+        "kind": "dfareporting#activities", # The kind of resource this is, in this case dfareporting#activities.
+        "filters": [ # List of activity filters. The dimension values need to be all either of type "dfa:activity" or "dfa:activityGroup".
+          { # Represents a DimensionValue resource.
+            "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+            "value": "A String", # The value of the dimension.
+            "dimensionName": "A String", # The name of the dimension.
+            "etag": "A String", # The eTag of this response for caching purposes.
+            "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+            "id": "A String", # The ID associated with the value if available.
+          },
+        ],
+        "metricNames": [ # List of names of floodlight activity metrics.
+          "A String",
+        ],
+      },
+      "dimensions": [ # The list of standard dimensions the report should include.
+        { # Represents a sorted dimension.
+          "kind": "dfareporting#sortedDimension", # The kind of resource this is, in this case dfareporting#sortedDimension.
+          "name": "A String", # The name of the dimension.
+          "sortOrder": "A String", # An optional sort order for the dimension column.
+        },
+      ],
+      "metricNames": [ # The list of names of metrics the report should include.
+        "A String",
+      ],
+      "dateRange": { # Represents a date range. # The date range for which this report should be run.
+        "startDate": "A String", # The start date of the date range, inclusive. A string of the format: "yyyy-MM-dd".
+        "kind": "dfareporting#dateRange", # The kind of resource this is, in this case dfareporting#dateRange.
+        "endDate": "A String", # The end date of the date range, inclusive. A string of the format: "yyyy-MM-dd".
+        "relativeDateRange": "A String", # The date range relative to the date of when the report is run.
+      },
+      "dimensionFilters": [ # The list of filters on which dimensions are filtered.
+          # Filters for different dimensions are ANDed, filters for the same dimension are grouped together and ORed.
+        { # Represents a DimensionValue resource.
+          "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+          "value": "A String", # The value of the dimension.
+          "dimensionName": "A String", # The name of the dimension.
+          "etag": "A String", # The eTag of this response for caching purposes.
+          "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+          "id": "A String", # The ID associated with the value if available.
+        },
+      ],
+      "customRichMediaEvents": { # Represents a Custom Rich Media Events group. # Custom Rich Media Events group.
+        "kind": "dfareporting#customRichMediaEvents", # The kind of resource this is, in this case dfareporting#customRichMediaEvents.
+        "filteredEventIds": [ # List of custom rich media event IDs. Dimension values must be all of type dfa:richMediaEventTypeIdAndName.
+          { # Represents a DimensionValue resource.
+            "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+            "value": "A String", # The value of the dimension.
+            "dimensionName": "A String", # The name of the dimension.
+            "etag": "A String", # The eTag of this response for caching purposes.
+            "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+            "id": "A String", # The ID associated with the value if available.
+          },
+        ],
+      },
+    },
+    "id": "A String", # The unique ID identifying this report resource.
+    "lastModifiedTime": "A String", # The timestamp (in milliseconds since epoch) of when this report was last modified.
+    "type": "A String", # The type of the report.
+    "crossDimensionReachCriteria": { # The report criteria for a report of type "CROSS_DIMENSION_REACH".
+      "breakdown": [ # The list of dimensions the report should include.
+        { # Represents a sorted dimension.
+          "kind": "dfareporting#sortedDimension", # The kind of resource this is, in this case dfareporting#sortedDimension.
+          "name": "A String", # The name of the dimension.
+          "sortOrder": "A String", # An optional sort order for the dimension column.
+        },
+      ],
+      "overlapMetricNames": [ # The list of names of overlap metrics the report should include.
+        "A String",
+      ],
+      "metricNames": [ # The list of names of metrics the report should include.
+        "A String",
+      ],
+      "dateRange": { # Represents a date range. # The date range this report should be run for.
+        "startDate": "A String", # The start date of the date range, inclusive. A string of the format: "yyyy-MM-dd".
+        "kind": "dfareporting#dateRange", # The kind of resource this is, in this case dfareporting#dateRange.
+        "endDate": "A String", # The end date of the date range, inclusive. A string of the format: "yyyy-MM-dd".
+        "relativeDateRange": "A String", # The date range relative to the date of when the report is run.
+      },
+      "dimensionFilters": [ # The list of filters on which dimensions are filtered.
+        { # Represents a DimensionValue resource.
+          "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+          "value": "A String", # The value of the dimension.
+          "dimensionName": "A String", # The name of the dimension.
+          "etag": "A String", # The eTag of this response for caching purposes.
+          "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+          "id": "A String", # The ID associated with the value if available.
+        },
+      ],
+      "pivoted": True or False, # Whether the report is pivoted or not. Defaults to true.
+      "dimension": "A String", # The dimension option.
+    },
+    "accountId": "A String", # The account ID to which this report belongs.
+  }
+
+
+Returns:
+  An object of the form:
+
+    { # Represents a Report resource.
+      "pathToConversionCriteria": { # The report criteria for a report of type "PATH_TO_CONVERSION".
+        "conversionDimensions": [ # The list of conversion dimensions the report should include.
+          { # Represents a sorted dimension.
+            "kind": "dfareporting#sortedDimension", # The kind of resource this is, in this case dfareporting#sortedDimension.
+            "name": "A String", # The name of the dimension.
+            "sortOrder": "A String", # An optional sort order for the dimension column.
+          },
+        ],
+        "metricNames": [ # The list of names of metrics the report should include.
+          "A String",
+        ],
+        "dateRange": { # Represents a date range. # The date range this report should be run for.
+          "startDate": "A String", # The start date of the date range, inclusive. A string of the format: "yyyy-MM-dd".
+          "kind": "dfareporting#dateRange", # The kind of resource this is, in this case dfareporting#dateRange.
+          "endDate": "A String", # The end date of the date range, inclusive. A string of the format: "yyyy-MM-dd".
+          "relativeDateRange": "A String", # The date range relative to the date of when the report is run.
+        },
+        "reportProperties": { # The properties of the report.
+          "clicksLookbackWindow": 42, # DFA checks to see if a click interaction occurred within the specified period of time before a conversion. By default the value is pulled from Floodlight or you can manually enter a custom value. Valid values: 1-90.
+          "pivotOnInteractionPath": True or False, # Enable pivoting on interaction path.
+          "impressionsLookbackWindow": 42, # DFA checks to see if an impression interaction occurred within the specified period of time before a conversion. By default the value is pulled from Floodlight or you can manually enter a custom value. Valid values: 1-90.
+          "includeUnattributedIPConversions": True or False, # Include conversions that have no associated cookies and no exposures. It’s therefore impossible to know how the user was exposed to your ads during the lookback window prior to a conversion.
+          "includeUnattributedCookieConversions": True or False, # Include conversions of users with a DoubleClick cookie but without an exposure. That means the user did not click or see an ad from the advertiser within the Floodlight group, or that the interaction happened outside the lookback window.
+          "maximumInteractionGap": 42, # The maximum amount of time that can take place between interactions (clicks or impressions) by the same user. Valid values: 1-90.
+          "includeAttributedIPConversions": True or False, # Deprecated: has no effect.
+          "maximumClickInteractions": 42, # The maximum number of click interactions to include in the report. Advertisers currently paying for E2C reports get up to 200 (100 clicks, 100 impressions). If another advertiser in your network is paying for E2C, you can have up to 5 total exposures per report.
+          "maximumImpressionInteractions": 42, # The maximum number of click interactions to include in the report. Advertisers currently paying for E2C reports get up to 200 (100 clicks, 100 impressions). If another advertiser in your network is paying for E2C, you can have up to 5 total exposures per report.
+        },
+        "perInteractionDimensions": [ # The list of per interaction dimensions the report should include.
+          { # Represents a sorted dimension.
+            "kind": "dfareporting#sortedDimension", # The kind of resource this is, in this case dfareporting#sortedDimension.
+            "name": "A String", # The name of the dimension.
+            "sortOrder": "A String", # An optional sort order for the dimension column.
+          },
+        ],
+        "activityFilters": [ # The list of 'dfa:activity' values to filter on.
+          { # Represents a DimensionValue resource.
+            "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+            "value": "A String", # The value of the dimension.
+            "dimensionName": "A String", # The name of the dimension.
+            "etag": "A String", # The eTag of this response for caching purposes.
+            "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+            "id": "A String", # The ID associated with the value if available.
+          },
+        ],
+        "customRichMediaEvents": [ # The list of custom rich media events to include.
+          { # Represents a DimensionValue resource.
+            "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+            "value": "A String", # The value of the dimension.
+            "dimensionName": "A String", # The name of the dimension.
+            "etag": "A String", # The eTag of this response for caching purposes.
+            "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+            "id": "A String", # The ID associated with the value if available.
+          },
+        ],
+        "floodlightConfigId": { # Represents a DimensionValue resource. # The floodlight ID for which to show data in this report. All advertisers associated with that ID will automatically be added. The dimension of the value needs to be 'dfa:floodlightConfigId'.
+          "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+          "value": "A String", # The value of the dimension.
+          "dimensionName": "A String", # The name of the dimension.
+          "etag": "A String", # The eTag of this response for caching purposes.
+          "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+          "id": "A String", # The ID associated with the value if available.
+        },
+        "customFloodlightVariables": [ # The list of custom floodlight variables the report should include.
+          { # Represents a sorted dimension.
+            "kind": "dfareporting#sortedDimension", # The kind of resource this is, in this case dfareporting#sortedDimension.
+            "name": "A String", # The name of the dimension.
+            "sortOrder": "A String", # An optional sort order for the dimension column.
+          },
+        ],
+      },
+      "kind": "dfareporting#report", # The kind of resource this is, in this case dfareporting#report.
+      "subAccountId": "A String", # The subaccount ID to which this report belongs if applicable.
+      "name": "A String", # The name of the report.
+      "schedule": { # The report's schedule. Can only be set if the report's 'dateRange' is a relative date range and the relative date range is not "TODAY".
+        "startDate": "A String", # Start date of date range for which scheduled reports should be run.
+        "runsOnDayOfMonth": "A String", # Enum to define for "MONTHLY" scheduled reports whether reports should be repeated on the same day of the month as "startDate" or the same day of the week of the month.
+            # Example: If 'startDate' is Monday, April 2nd 2012 (2012-04-02), "DAY_OF_MONTH" would run subsequent reports on the 2nd of every Month, and "WEEK_OF_MONTH" would run subsequent reports on the first Monday of the month.
+        "every": 42, # Defines every how many days, weeks or months the report should be run. Needs to be set when "repeats" is either "DAILY", "WEEKLY" or "MONTHLY".
+        "expirationDate": "A String", # The expiration date when the scheduled report stops running.
+        "active": True or False, # Whether the schedule is active or not. Must be set to either true or false.
+        "repeats": "A String", # The interval for which the report is repeated. Note:
+            # - "DAILY" also requires field "every" to be set.
+            # - "WEEKLY" also requires fields "every" and "repeatsOnWeekDays" to be set.
+            # - "MONTHLY" also requires fields "every" and "runsOnDayOfMonth" to be set.
+        "repeatsOnWeekDays": [ # List of week days "WEEKLY" on which scheduled reports should run.
+          "A String",
+        ],
+      },
+      "format": "A String", # The output format of the report. If not specified, default format is "CSV". Note that the actual format in the completed report file might differ if for instance the report's size exceeds the format's capabilities. "CSV" will then be the fallback format.
+      "ownerProfileId": "A String", # The user profile id of the owner of this report.
+      "reachCriteria": { # The report criteria for a report of type "REACH".
+        "activities": { # Represents an activity group. # Activity group.
+          "kind": "dfareporting#activities", # The kind of resource this is, in this case dfareporting#activities.
+          "filters": [ # List of activity filters. The dimension values need to be all either of type "dfa:activity" or "dfa:activityGroup".
+            { # Represents a DimensionValue resource.
+              "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+              "value": "A String", # The value of the dimension.
+              "dimensionName": "A String", # The name of the dimension.
+              "etag": "A String", # The eTag of this response for caching purposes.
+              "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+              "id": "A String", # The ID associated with the value if available.
+            },
+          ],
+          "metricNames": [ # List of names of floodlight activity metrics.
+            "A String",
+          ],
+        },
+        "dimensions": [ # The list of dimensions the report should include.
+          { # Represents a sorted dimension.
+            "kind": "dfareporting#sortedDimension", # The kind of resource this is, in this case dfareporting#sortedDimension.
+            "name": "A String", # The name of the dimension.
+            "sortOrder": "A String", # An optional sort order for the dimension column.
+          },
+        ],
+        "metricNames": [ # The list of names of metrics the report should include.
+          "A String",
+        ],
+        "dateRange": { # Represents a date range. # The date range this report should be run for.
+          "startDate": "A String", # The start date of the date range, inclusive. A string of the format: "yyyy-MM-dd".
+          "kind": "dfareporting#dateRange", # The kind of resource this is, in this case dfareporting#dateRange.
+          "endDate": "A String", # The end date of the date range, inclusive. A string of the format: "yyyy-MM-dd".
+          "relativeDateRange": "A String", # The date range relative to the date of when the report is run.
+        },
+        "dimensionFilters": [ # The list of filters on which dimensions are filtered.
+            # Filters for different dimensions are ANDed, filters for the same dimension are grouped together and ORed.
+          { # Represents a DimensionValue resource.
+            "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+            "value": "A String", # The value of the dimension.
+            "dimensionName": "A String", # The name of the dimension.
+            "etag": "A String", # The eTag of this response for caching purposes.
+            "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+            "id": "A String", # The ID associated with the value if available.
+          },
+        ],
+        "reachByFrequencyMetricNames": [ # The list of names of  Reach By Frequency metrics the report should include.
+          "A String",
+        ],
+        "customRichMediaEvents": { # Represents a Custom Rich Media Events group. # Custom Rich Media Events group.
+          "kind": "dfareporting#customRichMediaEvents", # The kind of resource this is, in this case dfareporting#customRichMediaEvents.
+          "filteredEventIds": [ # List of custom rich media event IDs. Dimension values must be all of type dfa:richMediaEventTypeIdAndName.
+            { # Represents a DimensionValue resource.
+              "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+              "value": "A String", # The value of the dimension.
+              "dimensionName": "A String", # The name of the dimension.
+              "etag": "A String", # The eTag of this response for caching purposes.
+              "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+              "id": "A String", # The ID associated with the value if available.
+            },
+          ],
+        },
+        "enableAllDimensionCombinations": True or False, # Whether to enable all reach dimension combinations in the report. Defaults to false. If enabled, the date range of the report should be within the last three months.
+      },
+      "floodlightCriteria": { # The report criteria for a report of type "FLOODLIGHT".
+        "dimensions": [ # The list of dimensions the report should include.
+          { # Represents a sorted dimension.
+            "kind": "dfareporting#sortedDimension", # The kind of resource this is, in this case dfareporting#sortedDimension.
+            "name": "A String", # The name of the dimension.
+            "sortOrder": "A String", # An optional sort order for the dimension column.
+          },
+        ],
+        "metricNames": [ # The list of names of metrics the report should include.
+          "A String",
+        ],
+        "dateRange": { # Represents a date range. # The date range this report should be run for.
+          "startDate": "A String", # The start date of the date range, inclusive. A string of the format: "yyyy-MM-dd".
+          "kind": "dfareporting#dateRange", # The kind of resource this is, in this case dfareporting#dateRange.
+          "endDate": "A String", # The end date of the date range, inclusive. A string of the format: "yyyy-MM-dd".
+          "relativeDateRange": "A String", # The date range relative to the date of when the report is run.
+        },
+        "dimensionFilters": [ # The list of filters on which dimensions are filtered.
+            # Filters for different dimensions are ANDed, filters for the same dimension are grouped together and ORed.
+          { # Represents a DimensionValue resource.
+            "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+            "value": "A String", # The value of the dimension.
+            "dimensionName": "A String", # The name of the dimension.
+            "etag": "A String", # The eTag of this response for caching purposes.
+            "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+            "id": "A String", # The ID associated with the value if available.
+          },
+        ],
+        "floodlightConfigId": { # Represents a DimensionValue resource. # The floodlight ID for which to show data in this report. All advertisers associated with that ID will automatically be added. The dimension of the value needs to be 'dfa:floodlightConfigId'.
+          "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+          "value": "A String", # The value of the dimension.
+          "dimensionName": "A String", # The name of the dimension.
+          "etag": "A String", # The eTag of this response for caching purposes.
+          "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+          "id": "A String", # The ID associated with the value if available.
+        },
+        "customRichMediaEvents": [ # The list of custom rich media events to include.
+          { # Represents a DimensionValue resource.
+            "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+            "value": "A String", # The value of the dimension.
+            "dimensionName": "A String", # The name of the dimension.
+            "etag": "A String", # The eTag of this response for caching purposes.
+            "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+            "id": "A String", # The ID associated with the value if available.
+          },
+        ],
+        "reportProperties": { # The properties of the report.
+          "includeUnattributedIPConversions": True or False, # Include conversions that have no associated cookies and no exposures. It’s therefore impossible to know how the user was exposed to your ads during the lookback window prior to a conversion.
+          "includeUnattributedCookieConversions": True or False, # Include conversions of users with a DoubleClick cookie but without an exposure. That means the user did not click or see an ad from the advertiser within the Floodlight group, or that the interaction happened outside the lookback window.
+          "includeAttributedIPConversions": True or False, # Include conversions that have no cookie, but do have an exposure path.
+        },
+      },
+      "fileName": "A String", # The filename used when generating report files for this report.
+      "delivery": { # The report's email delivery settings.
+        "message": "A String", # The message to be sent with each email.
+        "emailOwnerDeliveryType": "A String", # The type of delivery for the owner to receive, if enabled.
+        "recipients": [ # The list of recipients to which to email the report.
+          { # Represents a recipient.
+            "kind": "dfareporting#recipient", # The kind of resource this is, in this case dfareporting#recipient.
+            "deliveryType": "A String", # The delivery type for the recipient.
+            "email": "A String", # The email address of the recipient.
+          },
+        ],
+        "emailOwner": True or False, # Whether the report should be emailed to the report owner.
+      },
+      "etag": "A String", # The eTag of this response for caching purposes.
+      "criteria": { # The report criteria for a report of type "STANDARD".
+        "activities": { # Represents an activity group. # Activity group.
+          "kind": "dfareporting#activities", # The kind of resource this is, in this case dfareporting#activities.
+          "filters": [ # List of activity filters. The dimension values need to be all either of type "dfa:activity" or "dfa:activityGroup".
+            { # Represents a DimensionValue resource.
+              "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+              "value": "A String", # The value of the dimension.
+              "dimensionName": "A String", # The name of the dimension.
+              "etag": "A String", # The eTag of this response for caching purposes.
+              "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+              "id": "A String", # The ID associated with the value if available.
+            },
+          ],
+          "metricNames": [ # List of names of floodlight activity metrics.
+            "A String",
+          ],
+        },
+        "dimensions": [ # The list of standard dimensions the report should include.
+          { # Represents a sorted dimension.
+            "kind": "dfareporting#sortedDimension", # The kind of resource this is, in this case dfareporting#sortedDimension.
+            "name": "A String", # The name of the dimension.
+            "sortOrder": "A String", # An optional sort order for the dimension column.
+          },
+        ],
+        "metricNames": [ # The list of names of metrics the report should include.
+          "A String",
+        ],
+        "dateRange": { # Represents a date range. # The date range for which this report should be run.
+          "startDate": "A String", # The start date of the date range, inclusive. A string of the format: "yyyy-MM-dd".
+          "kind": "dfareporting#dateRange", # The kind of resource this is, in this case dfareporting#dateRange.
+          "endDate": "A String", # The end date of the date range, inclusive. A string of the format: "yyyy-MM-dd".
+          "relativeDateRange": "A String", # The date range relative to the date of when the report is run.
+        },
+        "dimensionFilters": [ # The list of filters on which dimensions are filtered.
+            # Filters for different dimensions are ANDed, filters for the same dimension are grouped together and ORed.
+          { # Represents a DimensionValue resource.
+            "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+            "value": "A String", # The value of the dimension.
+            "dimensionName": "A String", # The name of the dimension.
+            "etag": "A String", # The eTag of this response for caching purposes.
+            "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+            "id": "A String", # The ID associated with the value if available.
+          },
+        ],
+        "customRichMediaEvents": { # Represents a Custom Rich Media Events group. # Custom Rich Media Events group.
+          "kind": "dfareporting#customRichMediaEvents", # The kind of resource this is, in this case dfareporting#customRichMediaEvents.
+          "filteredEventIds": [ # List of custom rich media event IDs. Dimension values must be all of type dfa:richMediaEventTypeIdAndName.
+            { # Represents a DimensionValue resource.
+              "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+              "value": "A String", # The value of the dimension.
+              "dimensionName": "A String", # The name of the dimension.
+              "etag": "A String", # The eTag of this response for caching purposes.
+              "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+              "id": "A String", # The ID associated with the value if available.
+            },
+          ],
+        },
+      },
+      "id": "A String", # The unique ID identifying this report resource.
+      "lastModifiedTime": "A String", # The timestamp (in milliseconds since epoch) of when this report was last modified.
+      "type": "A String", # The type of the report.
+      "crossDimensionReachCriteria": { # The report criteria for a report of type "CROSS_DIMENSION_REACH".
+        "breakdown": [ # The list of dimensions the report should include.
+          { # Represents a sorted dimension.
+            "kind": "dfareporting#sortedDimension", # The kind of resource this is, in this case dfareporting#sortedDimension.
+            "name": "A String", # The name of the dimension.
+            "sortOrder": "A String", # An optional sort order for the dimension column.
+          },
+        ],
+        "overlapMetricNames": [ # The list of names of overlap metrics the report should include.
+          "A String",
+        ],
+        "metricNames": [ # The list of names of metrics the report should include.
+          "A String",
+        ],
+        "dateRange": { # Represents a date range. # The date range this report should be run for.
+          "startDate": "A String", # The start date of the date range, inclusive. A string of the format: "yyyy-MM-dd".
+          "kind": "dfareporting#dateRange", # The kind of resource this is, in this case dfareporting#dateRange.
+          "endDate": "A String", # The end date of the date range, inclusive. A string of the format: "yyyy-MM-dd".
+          "relativeDateRange": "A String", # The date range relative to the date of when the report is run.
+        },
+        "dimensionFilters": [ # The list of filters on which dimensions are filtered.
+          { # Represents a DimensionValue resource.
+            "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+            "value": "A String", # The value of the dimension.
+            "dimensionName": "A String", # The name of the dimension.
+            "etag": "A String", # The eTag of this response for caching purposes.
+            "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+            "id": "A String", # The ID associated with the value if available.
+          },
+        ],
+        "pivoted": True or False, # Whether the report is pivoted or not. Defaults to true.
+        "dimension": "A String", # The dimension option.
+      },
+      "accountId": "A String", # The account ID to which this report belongs.
+    }</pre>
+</div>
+
+</body></html>
\ No newline at end of file
diff --git a/docs/dyn/dfareporting_v2_7.sites.html b/docs/dyn/dfareporting_v2_7.sites.html
new file mode 100644
index 0000000..4912582
--- /dev/null
+++ b/docs/dyn/dfareporting_v2_7.sites.html
@@ -0,0 +1,683 @@
+<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="dfareporting_v2_7.html">DCM/DFA Reporting And Trafficking API</a> . <a href="dfareporting_v2_7.sites.html">sites</a></h1>
+<h2>Instance Methods</h2>
+<p class="toc_element">
+  <code><a href="#get">get(profileId, id)</a></code></p>
+<p class="firstline">Gets one site by ID.</p>
+<p class="toc_element">
+  <code><a href="#insert">insert(profileId, body)</a></code></p>
+<p class="firstline">Inserts a new site.</p>
+<p class="toc_element">
+  <code><a href="#list">list(profileId, unmappedSite=None, campaignIds=None, acceptsInStreamVideoPlacements=None, pageToken=None, acceptsPublisherPaidPlacements=None, sortOrder=None, acceptsInterstitialPlacements=None, maxResults=None, adWordsSite=None, approved=None, searchString=None, subaccountId=None, directorySiteIds=None, sortField=None, ids=None)</a></code></p>
+<p class="firstline">Retrieves a list of sites, possibly filtered. This method supports paging.</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="#patch">patch(profileId, id, body)</a></code></p>
+<p class="firstline">Updates an existing site. This method supports patch semantics.</p>
+<p class="toc_element">
+  <code><a href="#update">update(profileId, body)</a></code></p>
+<p class="firstline">Updates an existing site.</p>
+<h3>Method Details</h3>
+<div class="method">
+    <code class="details" id="get">get(profileId, id)</code>
+  <pre>Gets one site by ID.
+
+Args:
+  profileId: string, User profile ID associated with this request. (required)
+  id: string, Site ID. (required)
+
+Returns:
+  An object of the form:
+
+    { # Contains properties of a site.
+      "kind": "dfareporting#site", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#site".
+      "subaccountId": "A String", # Subaccount ID of this site. This is a read-only field that can be left blank.
+      "name": "A String", # Name of this site.This is a required field. Must be less than 128 characters long. If this site is under a subaccount, the name must be unique among sites of the same subaccount. Otherwise, this site is a top-level site, and the name must be unique among top-level sites of the same account.
+      "directorySiteIdDimensionValue": { # Represents a DimensionValue resource. # Dimension value for the ID of the directory site. This is a read-only, auto-generated field.
+        "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+        "value": "A String", # The value of the dimension.
+        "dimensionName": "A String", # The name of the dimension.
+        "etag": "A String", # The eTag of this response for caching purposes.
+        "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+        "id": "A String", # The ID associated with the value if available.
+      },
+      "siteSettings": { # Site Settings # Site-wide settings.
+        "disableBrandSafeAds": True or False, # Whether brand safe ads are disabled for this site.
+        "activeViewOptOut": True or False, # Whether active view creatives are disabled for this site.
+        "videoActiveViewOptOutTemplate": True or False, # Whether Verification and ActiveView for in-stream video creatives are disabled by default for new placements created under this site. This value will be used to populate the placement.videoActiveViewOptOut field, when no value is specified for the new placement.
+        "lookbackConfiguration": { # Lookback configuration settings. # Lookback window settings for this site.
+          "clickDuration": 42, # Lookback window, in days, from the last time a given user clicked on one of your ads. If you enter 0, clicks will not be considered as triggering events for floodlight tracking. If you leave this field blank, the default value for your account will be used.
+          "postImpressionActivitiesDuration": 42, # Lookback window, in days, from the last time a given user viewed one of your ads. If you enter 0, impressions will not be considered as triggering events for floodlight tracking. If you leave this field blank, the default value for your account will be used.
+        },
+        "disableNewCookie": True or False, # Whether new cookies are disabled for this site.
+        "tagSetting": { # Tag Settings # Configuration settings for dynamic and image floodlight tags.
+          "includeClickThroughUrls": True or False, # Whether static landing page URLs should be included in the tags. This setting applies only to placements.
+          "includeClickTracking": True or False, # Whether click-tracking string should be included in the tags.
+          "additionalKeyValues": "A String", # Additional key-values to be included in tags. Each key-value pair must be of the form key=value, and pairs must be separated by a semicolon (;). Keys and values must not contain commas. For example, id=2;color=red is a valid value for this field.
+          "keywordOption": "A String", # Option specifying how keywords are embedded in ad tags. This setting can be used to specify whether keyword placeholders are inserted in placement tags for this site. Publishers can then add keywords to those placeholders.
+        },
+        "vpaidAdapterChoiceTemplate": "A String", # Default VPAID adapter setting for new placements created under this site. This value will be used to populate the placements.vpaidAdapterChoice field, when no value is specified for the new placement. Controls which VPAID format the measurement adapter will use for in-stream video creatives assigned to the placement. The publisher's specifications will typically determine this setting. For VPAID creatives, the adapter format will match the VPAID format (HTML5 VPAID creatives use the HTML5 adapter, and Flash VPAID creatives use the Flash adapter).
+        "creativeSettings": { # Creative Settings # Site-wide creative settings.
+          "iFrameHeader": "A String", # Header text for iFrames for this site. Must be less than or equal to 2000 characters long.
+          "iFrameFooter": "A String", # Header text for iFrames for this site. Must be less than or equal to 2000 characters long.
+        },
+      },
+      "approved": True or False, # Whether this site is approved.
+      "idDimensionValue": { # Represents a DimensionValue resource. # Dimension value for the ID of this site. This is a read-only, auto-generated field.
+        "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+        "value": "A String", # The value of the dimension.
+        "dimensionName": "A String", # The name of the dimension.
+        "etag": "A String", # The eTag of this response for caching purposes.
+        "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+        "id": "A String", # The ID associated with the value if available.
+      },
+      "siteContacts": [ # Site contacts.
+        { # Site Contact
+          "firstName": "A String", # First name of this site contact.
+          "title": "A String", # Title or designation of this site contact.
+          "lastName": "A String", # Last name of this site contact.
+          "address": "A String", # Address of this site contact.
+          "email": "A String", # Email address of this site contact. This is a required field.
+          "phone": "A String", # Primary phone number of this site contact.
+          "contactType": "A String", # Site contact type.
+          "id": "A String", # ID of this site contact. This is a read-only, auto-generated field.
+        },
+      ],
+      "keyName": "A String", # Key name of this site. This is a read-only, auto-generated field.
+      "directorySiteId": "A String", # Directory site associated with this site. This is a required field that is read-only after insertion.
+      "id": "A String", # ID of this site. This is a read-only, auto-generated field.
+      "accountId": "A String", # Account ID of this site. This is a read-only field that can be left blank.
+    }</pre>
+</div>
+
+<div class="method">
+    <code class="details" id="insert">insert(profileId, body)</code>
+  <pre>Inserts a new site.
+
+Args:
+  profileId: string, User profile ID associated with this request. (required)
+  body: object, The request body. (required)
+    The object takes the form of:
+
+{ # Contains properties of a site.
+    "kind": "dfareporting#site", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#site".
+    "subaccountId": "A String", # Subaccount ID of this site. This is a read-only field that can be left blank.
+    "name": "A String", # Name of this site.This is a required field. Must be less than 128 characters long. If this site is under a subaccount, the name must be unique among sites of the same subaccount. Otherwise, this site is a top-level site, and the name must be unique among top-level sites of the same account.
+    "directorySiteIdDimensionValue": { # Represents a DimensionValue resource. # Dimension value for the ID of the directory site. This is a read-only, auto-generated field.
+      "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+      "value": "A String", # The value of the dimension.
+      "dimensionName": "A String", # The name of the dimension.
+      "etag": "A String", # The eTag of this response for caching purposes.
+      "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+      "id": "A String", # The ID associated with the value if available.
+    },
+    "siteSettings": { # Site Settings # Site-wide settings.
+      "disableBrandSafeAds": True or False, # Whether brand safe ads are disabled for this site.
+      "activeViewOptOut": True or False, # Whether active view creatives are disabled for this site.
+      "videoActiveViewOptOutTemplate": True or False, # Whether Verification and ActiveView for in-stream video creatives are disabled by default for new placements created under this site. This value will be used to populate the placement.videoActiveViewOptOut field, when no value is specified for the new placement.
+      "lookbackConfiguration": { # Lookback configuration settings. # Lookback window settings for this site.
+        "clickDuration": 42, # Lookback window, in days, from the last time a given user clicked on one of your ads. If you enter 0, clicks will not be considered as triggering events for floodlight tracking. If you leave this field blank, the default value for your account will be used.
+        "postImpressionActivitiesDuration": 42, # Lookback window, in days, from the last time a given user viewed one of your ads. If you enter 0, impressions will not be considered as triggering events for floodlight tracking. If you leave this field blank, the default value for your account will be used.
+      },
+      "disableNewCookie": True or False, # Whether new cookies are disabled for this site.
+      "tagSetting": { # Tag Settings # Configuration settings for dynamic and image floodlight tags.
+        "includeClickThroughUrls": True or False, # Whether static landing page URLs should be included in the tags. This setting applies only to placements.
+        "includeClickTracking": True or False, # Whether click-tracking string should be included in the tags.
+        "additionalKeyValues": "A String", # Additional key-values to be included in tags. Each key-value pair must be of the form key=value, and pairs must be separated by a semicolon (;). Keys and values must not contain commas. For example, id=2;color=red is a valid value for this field.
+        "keywordOption": "A String", # Option specifying how keywords are embedded in ad tags. This setting can be used to specify whether keyword placeholders are inserted in placement tags for this site. Publishers can then add keywords to those placeholders.
+      },
+      "vpaidAdapterChoiceTemplate": "A String", # Default VPAID adapter setting for new placements created under this site. This value will be used to populate the placements.vpaidAdapterChoice field, when no value is specified for the new placement. Controls which VPAID format the measurement adapter will use for in-stream video creatives assigned to the placement. The publisher's specifications will typically determine this setting. For VPAID creatives, the adapter format will match the VPAID format (HTML5 VPAID creatives use the HTML5 adapter, and Flash VPAID creatives use the Flash adapter).
+      "creativeSettings": { # Creative Settings # Site-wide creative settings.
+        "iFrameHeader": "A String", # Header text for iFrames for this site. Must be less than or equal to 2000 characters long.
+        "iFrameFooter": "A String", # Header text for iFrames for this site. Must be less than or equal to 2000 characters long.
+      },
+    },
+    "approved": True or False, # Whether this site is approved.
+    "idDimensionValue": { # Represents a DimensionValue resource. # Dimension value for the ID of this site. This is a read-only, auto-generated field.
+      "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+      "value": "A String", # The value of the dimension.
+      "dimensionName": "A String", # The name of the dimension.
+      "etag": "A String", # The eTag of this response for caching purposes.
+      "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+      "id": "A String", # The ID associated with the value if available.
+    },
+    "siteContacts": [ # Site contacts.
+      { # Site Contact
+        "firstName": "A String", # First name of this site contact.
+        "title": "A String", # Title or designation of this site contact.
+        "lastName": "A String", # Last name of this site contact.
+        "address": "A String", # Address of this site contact.
+        "email": "A String", # Email address of this site contact. This is a required field.
+        "phone": "A String", # Primary phone number of this site contact.
+        "contactType": "A String", # Site contact type.
+        "id": "A String", # ID of this site contact. This is a read-only, auto-generated field.
+      },
+    ],
+    "keyName": "A String", # Key name of this site. This is a read-only, auto-generated field.
+    "directorySiteId": "A String", # Directory site associated with this site. This is a required field that is read-only after insertion.
+    "id": "A String", # ID of this site. This is a read-only, auto-generated field.
+    "accountId": "A String", # Account ID of this site. This is a read-only field that can be left blank.
+  }
+
+
+Returns:
+  An object of the form:
+
+    { # Contains properties of a site.
+      "kind": "dfareporting#site", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#site".
+      "subaccountId": "A String", # Subaccount ID of this site. This is a read-only field that can be left blank.
+      "name": "A String", # Name of this site.This is a required field. Must be less than 128 characters long. If this site is under a subaccount, the name must be unique among sites of the same subaccount. Otherwise, this site is a top-level site, and the name must be unique among top-level sites of the same account.
+      "directorySiteIdDimensionValue": { # Represents a DimensionValue resource. # Dimension value for the ID of the directory site. This is a read-only, auto-generated field.
+        "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+        "value": "A String", # The value of the dimension.
+        "dimensionName": "A String", # The name of the dimension.
+        "etag": "A String", # The eTag of this response for caching purposes.
+        "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+        "id": "A String", # The ID associated with the value if available.
+      },
+      "siteSettings": { # Site Settings # Site-wide settings.
+        "disableBrandSafeAds": True or False, # Whether brand safe ads are disabled for this site.
+        "activeViewOptOut": True or False, # Whether active view creatives are disabled for this site.
+        "videoActiveViewOptOutTemplate": True or False, # Whether Verification and ActiveView for in-stream video creatives are disabled by default for new placements created under this site. This value will be used to populate the placement.videoActiveViewOptOut field, when no value is specified for the new placement.
+        "lookbackConfiguration": { # Lookback configuration settings. # Lookback window settings for this site.
+          "clickDuration": 42, # Lookback window, in days, from the last time a given user clicked on one of your ads. If you enter 0, clicks will not be considered as triggering events for floodlight tracking. If you leave this field blank, the default value for your account will be used.
+          "postImpressionActivitiesDuration": 42, # Lookback window, in days, from the last time a given user viewed one of your ads. If you enter 0, impressions will not be considered as triggering events for floodlight tracking. If you leave this field blank, the default value for your account will be used.
+        },
+        "disableNewCookie": True or False, # Whether new cookies are disabled for this site.
+        "tagSetting": { # Tag Settings # Configuration settings for dynamic and image floodlight tags.
+          "includeClickThroughUrls": True or False, # Whether static landing page URLs should be included in the tags. This setting applies only to placements.
+          "includeClickTracking": True or False, # Whether click-tracking string should be included in the tags.
+          "additionalKeyValues": "A String", # Additional key-values to be included in tags. Each key-value pair must be of the form key=value, and pairs must be separated by a semicolon (;). Keys and values must not contain commas. For example, id=2;color=red is a valid value for this field.
+          "keywordOption": "A String", # Option specifying how keywords are embedded in ad tags. This setting can be used to specify whether keyword placeholders are inserted in placement tags for this site. Publishers can then add keywords to those placeholders.
+        },
+        "vpaidAdapterChoiceTemplate": "A String", # Default VPAID adapter setting for new placements created under this site. This value will be used to populate the placements.vpaidAdapterChoice field, when no value is specified for the new placement. Controls which VPAID format the measurement adapter will use for in-stream video creatives assigned to the placement. The publisher's specifications will typically determine this setting. For VPAID creatives, the adapter format will match the VPAID format (HTML5 VPAID creatives use the HTML5 adapter, and Flash VPAID creatives use the Flash adapter).
+        "creativeSettings": { # Creative Settings # Site-wide creative settings.
+          "iFrameHeader": "A String", # Header text for iFrames for this site. Must be less than or equal to 2000 characters long.
+          "iFrameFooter": "A String", # Header text for iFrames for this site. Must be less than or equal to 2000 characters long.
+        },
+      },
+      "approved": True or False, # Whether this site is approved.
+      "idDimensionValue": { # Represents a DimensionValue resource. # Dimension value for the ID of this site. This is a read-only, auto-generated field.
+        "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+        "value": "A String", # The value of the dimension.
+        "dimensionName": "A String", # The name of the dimension.
+        "etag": "A String", # The eTag of this response for caching purposes.
+        "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+        "id": "A String", # The ID associated with the value if available.
+      },
+      "siteContacts": [ # Site contacts.
+        { # Site Contact
+          "firstName": "A String", # First name of this site contact.
+          "title": "A String", # Title or designation of this site contact.
+          "lastName": "A String", # Last name of this site contact.
+          "address": "A String", # Address of this site contact.
+          "email": "A String", # Email address of this site contact. This is a required field.
+          "phone": "A String", # Primary phone number of this site contact.
+          "contactType": "A String", # Site contact type.
+          "id": "A String", # ID of this site contact. This is a read-only, auto-generated field.
+        },
+      ],
+      "keyName": "A String", # Key name of this site. This is a read-only, auto-generated field.
+      "directorySiteId": "A String", # Directory site associated with this site. This is a required field that is read-only after insertion.
+      "id": "A String", # ID of this site. This is a read-only, auto-generated field.
+      "accountId": "A String", # Account ID of this site. This is a read-only field that can be left blank.
+    }</pre>
+</div>
+
+<div class="method">
+    <code class="details" id="list">list(profileId, unmappedSite=None, campaignIds=None, acceptsInStreamVideoPlacements=None, pageToken=None, acceptsPublisherPaidPlacements=None, sortOrder=None, acceptsInterstitialPlacements=None, maxResults=None, adWordsSite=None, approved=None, searchString=None, subaccountId=None, directorySiteIds=None, sortField=None, ids=None)</code>
+  <pre>Retrieves a list of sites, possibly filtered. This method supports paging.
+
+Args:
+  profileId: string, User profile ID associated with this request. (required)
+  unmappedSite: boolean, Select only sites that have not been mapped to a directory site.
+  campaignIds: string, Select only sites with these campaign IDs. (repeated)
+  acceptsInStreamVideoPlacements: boolean, This search filter is no longer supported and will have no effect on the results returned.
+  pageToken: string, Value of the nextPageToken from the previous result page.
+  acceptsPublisherPaidPlacements: boolean, Select only sites that accept publisher paid placements.
+  sortOrder: string, Order of sorted results, default is ASCENDING.
+    Allowed values
+      ASCENDING - 
+      DESCENDING - 
+  acceptsInterstitialPlacements: boolean, This search filter is no longer supported and will have no effect on the results returned.
+  maxResults: integer, Maximum number of results to return.
+  adWordsSite: boolean, Select only AdWords sites.
+  approved: boolean, Select only approved sites.
+  searchString: string, Allows searching for objects by name, ID or keyName. Wildcards (*) are allowed. For example, "site*2015" will return objects with names like "site June 2015", "site April 2015", or simply "site 2015". Most of the searches also add wildcards implicitly at the start and the end of the search string. For example, a search string of "site" will match objects with name "my site", "site 2015", or simply "site".
+  subaccountId: string, Select only sites with this subaccount ID.
+  directorySiteIds: string, Select only sites with these directory site IDs. (repeated)
+  sortField: string, Field by which to sort the list.
+    Allowed values
+      ID - 
+      NAME - 
+  ids: string, Select only sites with these IDs. (repeated)
+
+Returns:
+  An object of the form:
+
+    { # Site List Response
+    "nextPageToken": "A String", # Pagination token to be used for the next list operation.
+    "kind": "dfareporting#sitesListResponse", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#sitesListResponse".
+    "sites": [ # Site collection.
+      { # Contains properties of a site.
+          "kind": "dfareporting#site", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#site".
+          "subaccountId": "A String", # Subaccount ID of this site. This is a read-only field that can be left blank.
+          "name": "A String", # Name of this site.This is a required field. Must be less than 128 characters long. If this site is under a subaccount, the name must be unique among sites of the same subaccount. Otherwise, this site is a top-level site, and the name must be unique among top-level sites of the same account.
+          "directorySiteIdDimensionValue": { # Represents a DimensionValue resource. # Dimension value for the ID of the directory site. This is a read-only, auto-generated field.
+            "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+            "value": "A String", # The value of the dimension.
+            "dimensionName": "A String", # The name of the dimension.
+            "etag": "A String", # The eTag of this response for caching purposes.
+            "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+            "id": "A String", # The ID associated with the value if available.
+          },
+          "siteSettings": { # Site Settings # Site-wide settings.
+            "disableBrandSafeAds": True or False, # Whether brand safe ads are disabled for this site.
+            "activeViewOptOut": True or False, # Whether active view creatives are disabled for this site.
+            "videoActiveViewOptOutTemplate": True or False, # Whether Verification and ActiveView for in-stream video creatives are disabled by default for new placements created under this site. This value will be used to populate the placement.videoActiveViewOptOut field, when no value is specified for the new placement.
+            "lookbackConfiguration": { # Lookback configuration settings. # Lookback window settings for this site.
+              "clickDuration": 42, # Lookback window, in days, from the last time a given user clicked on one of your ads. If you enter 0, clicks will not be considered as triggering events for floodlight tracking. If you leave this field blank, the default value for your account will be used.
+              "postImpressionActivitiesDuration": 42, # Lookback window, in days, from the last time a given user viewed one of your ads. If you enter 0, impressions will not be considered as triggering events for floodlight tracking. If you leave this field blank, the default value for your account will be used.
+            },
+            "disableNewCookie": True or False, # Whether new cookies are disabled for this site.
+            "tagSetting": { # Tag Settings # Configuration settings for dynamic and image floodlight tags.
+              "includeClickThroughUrls": True or False, # Whether static landing page URLs should be included in the tags. This setting applies only to placements.
+              "includeClickTracking": True or False, # Whether click-tracking string should be included in the tags.
+              "additionalKeyValues": "A String", # Additional key-values to be included in tags. Each key-value pair must be of the form key=value, and pairs must be separated by a semicolon (;). Keys and values must not contain commas. For example, id=2;color=red is a valid value for this field.
+              "keywordOption": "A String", # Option specifying how keywords are embedded in ad tags. This setting can be used to specify whether keyword placeholders are inserted in placement tags for this site. Publishers can then add keywords to those placeholders.
+            },
+            "vpaidAdapterChoiceTemplate": "A String", # Default VPAID adapter setting for new placements created under this site. This value will be used to populate the placements.vpaidAdapterChoice field, when no value is specified for the new placement. Controls which VPAID format the measurement adapter will use for in-stream video creatives assigned to the placement. The publisher's specifications will typically determine this setting. For VPAID creatives, the adapter format will match the VPAID format (HTML5 VPAID creatives use the HTML5 adapter, and Flash VPAID creatives use the Flash adapter).
+            "creativeSettings": { # Creative Settings # Site-wide creative settings.
+              "iFrameHeader": "A String", # Header text for iFrames for this site. Must be less than or equal to 2000 characters long.
+              "iFrameFooter": "A String", # Header text for iFrames for this site. Must be less than or equal to 2000 characters long.
+            },
+          },
+          "approved": True or False, # Whether this site is approved.
+          "idDimensionValue": { # Represents a DimensionValue resource. # Dimension value for the ID of this site. This is a read-only, auto-generated field.
+            "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+            "value": "A String", # The value of the dimension.
+            "dimensionName": "A String", # The name of the dimension.
+            "etag": "A String", # The eTag of this response for caching purposes.
+            "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+            "id": "A String", # The ID associated with the value if available.
+          },
+          "siteContacts": [ # Site contacts.
+            { # Site Contact
+              "firstName": "A String", # First name of this site contact.
+              "title": "A String", # Title or designation of this site contact.
+              "lastName": "A String", # Last name of this site contact.
+              "address": "A String", # Address of this site contact.
+              "email": "A String", # Email address of this site contact. This is a required field.
+              "phone": "A String", # Primary phone number of this site contact.
+              "contactType": "A String", # Site contact type.
+              "id": "A String", # ID of this site contact. This is a read-only, auto-generated field.
+            },
+          ],
+          "keyName": "A String", # Key name of this site. This is a read-only, auto-generated field.
+          "directorySiteId": "A String", # Directory site associated with this site. This is a required field that is read-only after insertion.
+          "id": "A String", # ID of this site. This is a read-only, auto-generated field.
+          "accountId": "A String", # Account ID of this site. This is a read-only field that can be left blank.
+        },
+    ],
+  }</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="patch">patch(profileId, id, body)</code>
+  <pre>Updates an existing site. This method supports patch semantics.
+
+Args:
+  profileId: string, User profile ID associated with this request. (required)
+  id: string, Site ID. (required)
+  body: object, The request body. (required)
+    The object takes the form of:
+
+{ # Contains properties of a site.
+    "kind": "dfareporting#site", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#site".
+    "subaccountId": "A String", # Subaccount ID of this site. This is a read-only field that can be left blank.
+    "name": "A String", # Name of this site.This is a required field. Must be less than 128 characters long. If this site is under a subaccount, the name must be unique among sites of the same subaccount. Otherwise, this site is a top-level site, and the name must be unique among top-level sites of the same account.
+    "directorySiteIdDimensionValue": { # Represents a DimensionValue resource. # Dimension value for the ID of the directory site. This is a read-only, auto-generated field.
+      "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+      "value": "A String", # The value of the dimension.
+      "dimensionName": "A String", # The name of the dimension.
+      "etag": "A String", # The eTag of this response for caching purposes.
+      "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+      "id": "A String", # The ID associated with the value if available.
+    },
+    "siteSettings": { # Site Settings # Site-wide settings.
+      "disableBrandSafeAds": True or False, # Whether brand safe ads are disabled for this site.
+      "activeViewOptOut": True or False, # Whether active view creatives are disabled for this site.
+      "videoActiveViewOptOutTemplate": True or False, # Whether Verification and ActiveView for in-stream video creatives are disabled by default for new placements created under this site. This value will be used to populate the placement.videoActiveViewOptOut field, when no value is specified for the new placement.
+      "lookbackConfiguration": { # Lookback configuration settings. # Lookback window settings for this site.
+        "clickDuration": 42, # Lookback window, in days, from the last time a given user clicked on one of your ads. If you enter 0, clicks will not be considered as triggering events for floodlight tracking. If you leave this field blank, the default value for your account will be used.
+        "postImpressionActivitiesDuration": 42, # Lookback window, in days, from the last time a given user viewed one of your ads. If you enter 0, impressions will not be considered as triggering events for floodlight tracking. If you leave this field blank, the default value for your account will be used.
+      },
+      "disableNewCookie": True or False, # Whether new cookies are disabled for this site.
+      "tagSetting": { # Tag Settings # Configuration settings for dynamic and image floodlight tags.
+        "includeClickThroughUrls": True or False, # Whether static landing page URLs should be included in the tags. This setting applies only to placements.
+        "includeClickTracking": True or False, # Whether click-tracking string should be included in the tags.
+        "additionalKeyValues": "A String", # Additional key-values to be included in tags. Each key-value pair must be of the form key=value, and pairs must be separated by a semicolon (;). Keys and values must not contain commas. For example, id=2;color=red is a valid value for this field.
+        "keywordOption": "A String", # Option specifying how keywords are embedded in ad tags. This setting can be used to specify whether keyword placeholders are inserted in placement tags for this site. Publishers can then add keywords to those placeholders.
+      },
+      "vpaidAdapterChoiceTemplate": "A String", # Default VPAID adapter setting for new placements created under this site. This value will be used to populate the placements.vpaidAdapterChoice field, when no value is specified for the new placement. Controls which VPAID format the measurement adapter will use for in-stream video creatives assigned to the placement. The publisher's specifications will typically determine this setting. For VPAID creatives, the adapter format will match the VPAID format (HTML5 VPAID creatives use the HTML5 adapter, and Flash VPAID creatives use the Flash adapter).
+      "creativeSettings": { # Creative Settings # Site-wide creative settings.
+        "iFrameHeader": "A String", # Header text for iFrames for this site. Must be less than or equal to 2000 characters long.
+        "iFrameFooter": "A String", # Header text for iFrames for this site. Must be less than or equal to 2000 characters long.
+      },
+    },
+    "approved": True or False, # Whether this site is approved.
+    "idDimensionValue": { # Represents a DimensionValue resource. # Dimension value for the ID of this site. This is a read-only, auto-generated field.
+      "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+      "value": "A String", # The value of the dimension.
+      "dimensionName": "A String", # The name of the dimension.
+      "etag": "A String", # The eTag of this response for caching purposes.
+      "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+      "id": "A String", # The ID associated with the value if available.
+    },
+    "siteContacts": [ # Site contacts.
+      { # Site Contact
+        "firstName": "A String", # First name of this site contact.
+        "title": "A String", # Title or designation of this site contact.
+        "lastName": "A String", # Last name of this site contact.
+        "address": "A String", # Address of this site contact.
+        "email": "A String", # Email address of this site contact. This is a required field.
+        "phone": "A String", # Primary phone number of this site contact.
+        "contactType": "A String", # Site contact type.
+        "id": "A String", # ID of this site contact. This is a read-only, auto-generated field.
+      },
+    ],
+    "keyName": "A String", # Key name of this site. This is a read-only, auto-generated field.
+    "directorySiteId": "A String", # Directory site associated with this site. This is a required field that is read-only after insertion.
+    "id": "A String", # ID of this site. This is a read-only, auto-generated field.
+    "accountId": "A String", # Account ID of this site. This is a read-only field that can be left blank.
+  }
+
+
+Returns:
+  An object of the form:
+
+    { # Contains properties of a site.
+      "kind": "dfareporting#site", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#site".
+      "subaccountId": "A String", # Subaccount ID of this site. This is a read-only field that can be left blank.
+      "name": "A String", # Name of this site.This is a required field. Must be less than 128 characters long. If this site is under a subaccount, the name must be unique among sites of the same subaccount. Otherwise, this site is a top-level site, and the name must be unique among top-level sites of the same account.
+      "directorySiteIdDimensionValue": { # Represents a DimensionValue resource. # Dimension value for the ID of the directory site. This is a read-only, auto-generated field.
+        "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+        "value": "A String", # The value of the dimension.
+        "dimensionName": "A String", # The name of the dimension.
+        "etag": "A String", # The eTag of this response for caching purposes.
+        "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+        "id": "A String", # The ID associated with the value if available.
+      },
+      "siteSettings": { # Site Settings # Site-wide settings.
+        "disableBrandSafeAds": True or False, # Whether brand safe ads are disabled for this site.
+        "activeViewOptOut": True or False, # Whether active view creatives are disabled for this site.
+        "videoActiveViewOptOutTemplate": True or False, # Whether Verification and ActiveView for in-stream video creatives are disabled by default for new placements created under this site. This value will be used to populate the placement.videoActiveViewOptOut field, when no value is specified for the new placement.
+        "lookbackConfiguration": { # Lookback configuration settings. # Lookback window settings for this site.
+          "clickDuration": 42, # Lookback window, in days, from the last time a given user clicked on one of your ads. If you enter 0, clicks will not be considered as triggering events for floodlight tracking. If you leave this field blank, the default value for your account will be used.
+          "postImpressionActivitiesDuration": 42, # Lookback window, in days, from the last time a given user viewed one of your ads. If you enter 0, impressions will not be considered as triggering events for floodlight tracking. If you leave this field blank, the default value for your account will be used.
+        },
+        "disableNewCookie": True or False, # Whether new cookies are disabled for this site.
+        "tagSetting": { # Tag Settings # Configuration settings for dynamic and image floodlight tags.
+          "includeClickThroughUrls": True or False, # Whether static landing page URLs should be included in the tags. This setting applies only to placements.
+          "includeClickTracking": True or False, # Whether click-tracking string should be included in the tags.
+          "additionalKeyValues": "A String", # Additional key-values to be included in tags. Each key-value pair must be of the form key=value, and pairs must be separated by a semicolon (;). Keys and values must not contain commas. For example, id=2;color=red is a valid value for this field.
+          "keywordOption": "A String", # Option specifying how keywords are embedded in ad tags. This setting can be used to specify whether keyword placeholders are inserted in placement tags for this site. Publishers can then add keywords to those placeholders.
+        },
+        "vpaidAdapterChoiceTemplate": "A String", # Default VPAID adapter setting for new placements created under this site. This value will be used to populate the placements.vpaidAdapterChoice field, when no value is specified for the new placement. Controls which VPAID format the measurement adapter will use for in-stream video creatives assigned to the placement. The publisher's specifications will typically determine this setting. For VPAID creatives, the adapter format will match the VPAID format (HTML5 VPAID creatives use the HTML5 adapter, and Flash VPAID creatives use the Flash adapter).
+        "creativeSettings": { # Creative Settings # Site-wide creative settings.
+          "iFrameHeader": "A String", # Header text for iFrames for this site. Must be less than or equal to 2000 characters long.
+          "iFrameFooter": "A String", # Header text for iFrames for this site. Must be less than or equal to 2000 characters long.
+        },
+      },
+      "approved": True or False, # Whether this site is approved.
+      "idDimensionValue": { # Represents a DimensionValue resource. # Dimension value for the ID of this site. This is a read-only, auto-generated field.
+        "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+        "value": "A String", # The value of the dimension.
+        "dimensionName": "A String", # The name of the dimension.
+        "etag": "A String", # The eTag of this response for caching purposes.
+        "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+        "id": "A String", # The ID associated with the value if available.
+      },
+      "siteContacts": [ # Site contacts.
+        { # Site Contact
+          "firstName": "A String", # First name of this site contact.
+          "title": "A String", # Title or designation of this site contact.
+          "lastName": "A String", # Last name of this site contact.
+          "address": "A String", # Address of this site contact.
+          "email": "A String", # Email address of this site contact. This is a required field.
+          "phone": "A String", # Primary phone number of this site contact.
+          "contactType": "A String", # Site contact type.
+          "id": "A String", # ID of this site contact. This is a read-only, auto-generated field.
+        },
+      ],
+      "keyName": "A String", # Key name of this site. This is a read-only, auto-generated field.
+      "directorySiteId": "A String", # Directory site associated with this site. This is a required field that is read-only after insertion.
+      "id": "A String", # ID of this site. This is a read-only, auto-generated field.
+      "accountId": "A String", # Account ID of this site. This is a read-only field that can be left blank.
+    }</pre>
+</div>
+
+<div class="method">
+    <code class="details" id="update">update(profileId, body)</code>
+  <pre>Updates an existing site.
+
+Args:
+  profileId: string, User profile ID associated with this request. (required)
+  body: object, The request body. (required)
+    The object takes the form of:
+
+{ # Contains properties of a site.
+    "kind": "dfareporting#site", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#site".
+    "subaccountId": "A String", # Subaccount ID of this site. This is a read-only field that can be left blank.
+    "name": "A String", # Name of this site.This is a required field. Must be less than 128 characters long. If this site is under a subaccount, the name must be unique among sites of the same subaccount. Otherwise, this site is a top-level site, and the name must be unique among top-level sites of the same account.
+    "directorySiteIdDimensionValue": { # Represents a DimensionValue resource. # Dimension value for the ID of the directory site. This is a read-only, auto-generated field.
+      "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+      "value": "A String", # The value of the dimension.
+      "dimensionName": "A String", # The name of the dimension.
+      "etag": "A String", # The eTag of this response for caching purposes.
+      "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+      "id": "A String", # The ID associated with the value if available.
+    },
+    "siteSettings": { # Site Settings # Site-wide settings.
+      "disableBrandSafeAds": True or False, # Whether brand safe ads are disabled for this site.
+      "activeViewOptOut": True or False, # Whether active view creatives are disabled for this site.
+      "videoActiveViewOptOutTemplate": True or False, # Whether Verification and ActiveView for in-stream video creatives are disabled by default for new placements created under this site. This value will be used to populate the placement.videoActiveViewOptOut field, when no value is specified for the new placement.
+      "lookbackConfiguration": { # Lookback configuration settings. # Lookback window settings for this site.
+        "clickDuration": 42, # Lookback window, in days, from the last time a given user clicked on one of your ads. If you enter 0, clicks will not be considered as triggering events for floodlight tracking. If you leave this field blank, the default value for your account will be used.
+        "postImpressionActivitiesDuration": 42, # Lookback window, in days, from the last time a given user viewed one of your ads. If you enter 0, impressions will not be considered as triggering events for floodlight tracking. If you leave this field blank, the default value for your account will be used.
+      },
+      "disableNewCookie": True or False, # Whether new cookies are disabled for this site.
+      "tagSetting": { # Tag Settings # Configuration settings for dynamic and image floodlight tags.
+        "includeClickThroughUrls": True or False, # Whether static landing page URLs should be included in the tags. This setting applies only to placements.
+        "includeClickTracking": True or False, # Whether click-tracking string should be included in the tags.
+        "additionalKeyValues": "A String", # Additional key-values to be included in tags. Each key-value pair must be of the form key=value, and pairs must be separated by a semicolon (;). Keys and values must not contain commas. For example, id=2;color=red is a valid value for this field.
+        "keywordOption": "A String", # Option specifying how keywords are embedded in ad tags. This setting can be used to specify whether keyword placeholders are inserted in placement tags for this site. Publishers can then add keywords to those placeholders.
+      },
+      "vpaidAdapterChoiceTemplate": "A String", # Default VPAID adapter setting for new placements created under this site. This value will be used to populate the placements.vpaidAdapterChoice field, when no value is specified for the new placement. Controls which VPAID format the measurement adapter will use for in-stream video creatives assigned to the placement. The publisher's specifications will typically determine this setting. For VPAID creatives, the adapter format will match the VPAID format (HTML5 VPAID creatives use the HTML5 adapter, and Flash VPAID creatives use the Flash adapter).
+      "creativeSettings": { # Creative Settings # Site-wide creative settings.
+        "iFrameHeader": "A String", # Header text for iFrames for this site. Must be less than or equal to 2000 characters long.
+        "iFrameFooter": "A String", # Header text for iFrames for this site. Must be less than or equal to 2000 characters long.
+      },
+    },
+    "approved": True or False, # Whether this site is approved.
+    "idDimensionValue": { # Represents a DimensionValue resource. # Dimension value for the ID of this site. This is a read-only, auto-generated field.
+      "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+      "value": "A String", # The value of the dimension.
+      "dimensionName": "A String", # The name of the dimension.
+      "etag": "A String", # The eTag of this response for caching purposes.
+      "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+      "id": "A String", # The ID associated with the value if available.
+    },
+    "siteContacts": [ # Site contacts.
+      { # Site Contact
+        "firstName": "A String", # First name of this site contact.
+        "title": "A String", # Title or designation of this site contact.
+        "lastName": "A String", # Last name of this site contact.
+        "address": "A String", # Address of this site contact.
+        "email": "A String", # Email address of this site contact. This is a required field.
+        "phone": "A String", # Primary phone number of this site contact.
+        "contactType": "A String", # Site contact type.
+        "id": "A String", # ID of this site contact. This is a read-only, auto-generated field.
+      },
+    ],
+    "keyName": "A String", # Key name of this site. This is a read-only, auto-generated field.
+    "directorySiteId": "A String", # Directory site associated with this site. This is a required field that is read-only after insertion.
+    "id": "A String", # ID of this site. This is a read-only, auto-generated field.
+    "accountId": "A String", # Account ID of this site. This is a read-only field that can be left blank.
+  }
+
+
+Returns:
+  An object of the form:
+
+    { # Contains properties of a site.
+      "kind": "dfareporting#site", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#site".
+      "subaccountId": "A String", # Subaccount ID of this site. This is a read-only field that can be left blank.
+      "name": "A String", # Name of this site.This is a required field. Must be less than 128 characters long. If this site is under a subaccount, the name must be unique among sites of the same subaccount. Otherwise, this site is a top-level site, and the name must be unique among top-level sites of the same account.
+      "directorySiteIdDimensionValue": { # Represents a DimensionValue resource. # Dimension value for the ID of the directory site. This is a read-only, auto-generated field.
+        "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+        "value": "A String", # The value of the dimension.
+        "dimensionName": "A String", # The name of the dimension.
+        "etag": "A String", # The eTag of this response for caching purposes.
+        "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+        "id": "A String", # The ID associated with the value if available.
+      },
+      "siteSettings": { # Site Settings # Site-wide settings.
+        "disableBrandSafeAds": True or False, # Whether brand safe ads are disabled for this site.
+        "activeViewOptOut": True or False, # Whether active view creatives are disabled for this site.
+        "videoActiveViewOptOutTemplate": True or False, # Whether Verification and ActiveView for in-stream video creatives are disabled by default for new placements created under this site. This value will be used to populate the placement.videoActiveViewOptOut field, when no value is specified for the new placement.
+        "lookbackConfiguration": { # Lookback configuration settings. # Lookback window settings for this site.
+          "clickDuration": 42, # Lookback window, in days, from the last time a given user clicked on one of your ads. If you enter 0, clicks will not be considered as triggering events for floodlight tracking. If you leave this field blank, the default value for your account will be used.
+          "postImpressionActivitiesDuration": 42, # Lookback window, in days, from the last time a given user viewed one of your ads. If you enter 0, impressions will not be considered as triggering events for floodlight tracking. If you leave this field blank, the default value for your account will be used.
+        },
+        "disableNewCookie": True or False, # Whether new cookies are disabled for this site.
+        "tagSetting": { # Tag Settings # Configuration settings for dynamic and image floodlight tags.
+          "includeClickThroughUrls": True or False, # Whether static landing page URLs should be included in the tags. This setting applies only to placements.
+          "includeClickTracking": True or False, # Whether click-tracking string should be included in the tags.
+          "additionalKeyValues": "A String", # Additional key-values to be included in tags. Each key-value pair must be of the form key=value, and pairs must be separated by a semicolon (;). Keys and values must not contain commas. For example, id=2;color=red is a valid value for this field.
+          "keywordOption": "A String", # Option specifying how keywords are embedded in ad tags. This setting can be used to specify whether keyword placeholders are inserted in placement tags for this site. Publishers can then add keywords to those placeholders.
+        },
+        "vpaidAdapterChoiceTemplate": "A String", # Default VPAID adapter setting for new placements created under this site. This value will be used to populate the placements.vpaidAdapterChoice field, when no value is specified for the new placement. Controls which VPAID format the measurement adapter will use for in-stream video creatives assigned to the placement. The publisher's specifications will typically determine this setting. For VPAID creatives, the adapter format will match the VPAID format (HTML5 VPAID creatives use the HTML5 adapter, and Flash VPAID creatives use the Flash adapter).
+        "creativeSettings": { # Creative Settings # Site-wide creative settings.
+          "iFrameHeader": "A String", # Header text for iFrames for this site. Must be less than or equal to 2000 characters long.
+          "iFrameFooter": "A String", # Header text for iFrames for this site. Must be less than or equal to 2000 characters long.
+        },
+      },
+      "approved": True or False, # Whether this site is approved.
+      "idDimensionValue": { # Represents a DimensionValue resource. # Dimension value for the ID of this site. This is a read-only, auto-generated field.
+        "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+        "value": "A String", # The value of the dimension.
+        "dimensionName": "A String", # The name of the dimension.
+        "etag": "A String", # The eTag of this response for caching purposes.
+        "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+        "id": "A String", # The ID associated with the value if available.
+      },
+      "siteContacts": [ # Site contacts.
+        { # Site Contact
+          "firstName": "A String", # First name of this site contact.
+          "title": "A String", # Title or designation of this site contact.
+          "lastName": "A String", # Last name of this site contact.
+          "address": "A String", # Address of this site contact.
+          "email": "A String", # Email address of this site contact. This is a required field.
+          "phone": "A String", # Primary phone number of this site contact.
+          "contactType": "A String", # Site contact type.
+          "id": "A String", # ID of this site contact. This is a read-only, auto-generated field.
+        },
+      ],
+      "keyName": "A String", # Key name of this site. This is a read-only, auto-generated field.
+      "directorySiteId": "A String", # Directory site associated with this site. This is a required field that is read-only after insertion.
+      "id": "A String", # ID of this site. This is a read-only, auto-generated field.
+      "accountId": "A String", # Account ID of this site. This is a read-only field that can be left blank.
+    }</pre>
+</div>
+
+</body></html>
\ No newline at end of file
diff --git a/docs/dyn/dfareporting_v2_7.sizes.html b/docs/dyn/dfareporting_v2_7.sizes.html
new file mode 100644
index 0000000..f2122aa
--- /dev/null
+++ b/docs/dyn/dfareporting_v2_7.sizes.html
@@ -0,0 +1,165 @@
+<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="dfareporting_v2_7.html">DCM/DFA Reporting And Trafficking API</a> . <a href="dfareporting_v2_7.sizes.html">sizes</a></h1>
+<h2>Instance Methods</h2>
+<p class="toc_element">
+  <code><a href="#get">get(profileId, id)</a></code></p>
+<p class="firstline">Gets one size by ID.</p>
+<p class="toc_element">
+  <code><a href="#insert">insert(profileId, body)</a></code></p>
+<p class="firstline">Inserts a new size.</p>
+<p class="toc_element">
+  <code><a href="#list">list(profileId, iabStandard=None, width=None, ids=None, height=None)</a></code></p>
+<p class="firstline">Retrieves a list of sizes, possibly filtered.</p>
+<h3>Method Details</h3>
+<div class="method">
+    <code class="details" id="get">get(profileId, id)</code>
+  <pre>Gets one size by ID.
+
+Args:
+  profileId: string, User profile ID associated with this request. (required)
+  id: string, Size ID. (required)
+
+Returns:
+  An object of the form:
+
+    { # Represents the dimensions of ads, placements, creatives, or creative assets.
+    "width": 42, # Width of this size.
+    "kind": "dfareporting#size", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#size".
+    "iab": True or False, # IAB standard size. This is a read-only, auto-generated field.
+    "id": "A String", # ID of this size. This is a read-only, auto-generated field.
+    "height": 42, # Height of this size.
+  }</pre>
+</div>
+
+<div class="method">
+    <code class="details" id="insert">insert(profileId, body)</code>
+  <pre>Inserts a new size.
+
+Args:
+  profileId: string, User profile ID associated with this request. (required)
+  body: object, The request body. (required)
+    The object takes the form of:
+
+{ # Represents the dimensions of ads, placements, creatives, or creative assets.
+  "width": 42, # Width of this size.
+  "kind": "dfareporting#size", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#size".
+  "iab": True or False, # IAB standard size. This is a read-only, auto-generated field.
+  "id": "A String", # ID of this size. This is a read-only, auto-generated field.
+  "height": 42, # Height of this size.
+}
+
+
+Returns:
+  An object of the form:
+
+    { # Represents the dimensions of ads, placements, creatives, or creative assets.
+    "width": 42, # Width of this size.
+    "kind": "dfareporting#size", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#size".
+    "iab": True or False, # IAB standard size. This is a read-only, auto-generated field.
+    "id": "A String", # ID of this size. This is a read-only, auto-generated field.
+    "height": 42, # Height of this size.
+  }</pre>
+</div>
+
+<div class="method">
+    <code class="details" id="list">list(profileId, iabStandard=None, width=None, ids=None, height=None)</code>
+  <pre>Retrieves a list of sizes, possibly filtered.
+
+Args:
+  profileId: string, User profile ID associated with this request. (required)
+  iabStandard: boolean, Select only IAB standard sizes.
+  width: integer, Select only sizes with this width.
+  ids: string, Select only sizes with these IDs. (repeated)
+  height: integer, Select only sizes with this height.
+
+Returns:
+  An object of the form:
+
+    { # Size List Response
+    "kind": "dfareporting#sizesListResponse", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#sizesListResponse".
+    "sizes": [ # Size collection.
+      { # Represents the dimensions of ads, placements, creatives, or creative assets.
+        "width": 42, # Width of this size.
+        "kind": "dfareporting#size", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#size".
+        "iab": True or False, # IAB standard size. This is a read-only, auto-generated field.
+        "id": "A String", # ID of this size. This is a read-only, auto-generated field.
+        "height": 42, # Height of this size.
+      },
+    ],
+  }</pre>
+</div>
+
+</body></html>
\ No newline at end of file
diff --git a/docs/dyn/dfareporting_v2_7.subaccounts.html b/docs/dyn/dfareporting_v2_7.subaccounts.html
new file mode 100644
index 0000000..aea098b
--- /dev/null
+++ b/docs/dyn/dfareporting_v2_7.subaccounts.html
@@ -0,0 +1,274 @@
+<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="dfareporting_v2_7.html">DCM/DFA Reporting And Trafficking API</a> . <a href="dfareporting_v2_7.subaccounts.html">subaccounts</a></h1>
+<h2>Instance Methods</h2>
+<p class="toc_element">
+  <code><a href="#get">get(profileId, id)</a></code></p>
+<p class="firstline">Gets one subaccount by ID.</p>
+<p class="toc_element">
+  <code><a href="#insert">insert(profileId, body)</a></code></p>
+<p class="firstline">Inserts a new subaccount.</p>
+<p class="toc_element">
+  <code><a href="#list">list(profileId, searchString=None, pageToken=None, sortField=None, ids=None, maxResults=None, sortOrder=None)</a></code></p>
+<p class="firstline">Gets a list of subaccounts, possibly filtered. This method supports paging.</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="#patch">patch(profileId, id, body)</a></code></p>
+<p class="firstline">Updates an existing subaccount. This method supports patch semantics.</p>
+<p class="toc_element">
+  <code><a href="#update">update(profileId, body)</a></code></p>
+<p class="firstline">Updates an existing subaccount.</p>
+<h3>Method Details</h3>
+<div class="method">
+    <code class="details" id="get">get(profileId, id)</code>
+  <pre>Gets one subaccount by ID.
+
+Args:
+  profileId: string, User profile ID associated with this request. (required)
+  id: string, Subaccount ID. (required)
+
+Returns:
+  An object of the form:
+
+    { # Contains properties of a DCM subaccount.
+      "kind": "dfareporting#subaccount", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#subaccount".
+      "availablePermissionIds": [ # IDs of the available user role permissions for this subaccount.
+        "A String",
+      ],
+      "id": "A String", # ID of this subaccount. This is a read-only, auto-generated field.
+      "name": "A String", # Name of this subaccount. This is a required field. Must be less than 128 characters long and be unique among subaccounts of the same account.
+      "accountId": "A String", # ID of the account that contains this subaccount. This is a read-only field that can be left blank.
+    }</pre>
+</div>
+
+<div class="method">
+    <code class="details" id="insert">insert(profileId, body)</code>
+  <pre>Inserts a new subaccount.
+
+Args:
+  profileId: string, User profile ID associated with this request. (required)
+  body: object, The request body. (required)
+    The object takes the form of:
+
+{ # Contains properties of a DCM subaccount.
+    "kind": "dfareporting#subaccount", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#subaccount".
+    "availablePermissionIds": [ # IDs of the available user role permissions for this subaccount.
+      "A String",
+    ],
+    "id": "A String", # ID of this subaccount. This is a read-only, auto-generated field.
+    "name": "A String", # Name of this subaccount. This is a required field. Must be less than 128 characters long and be unique among subaccounts of the same account.
+    "accountId": "A String", # ID of the account that contains this subaccount. This is a read-only field that can be left blank.
+  }
+
+
+Returns:
+  An object of the form:
+
+    { # Contains properties of a DCM subaccount.
+      "kind": "dfareporting#subaccount", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#subaccount".
+      "availablePermissionIds": [ # IDs of the available user role permissions for this subaccount.
+        "A String",
+      ],
+      "id": "A String", # ID of this subaccount. This is a read-only, auto-generated field.
+      "name": "A String", # Name of this subaccount. This is a required field. Must be less than 128 characters long and be unique among subaccounts of the same account.
+      "accountId": "A String", # ID of the account that contains this subaccount. This is a read-only field that can be left blank.
+    }</pre>
+</div>
+
+<div class="method">
+    <code class="details" id="list">list(profileId, searchString=None, pageToken=None, sortField=None, ids=None, maxResults=None, sortOrder=None)</code>
+  <pre>Gets a list of subaccounts, possibly filtered. This method supports paging.
+
+Args:
+  profileId: string, User profile ID associated with this request. (required)
+  searchString: string, Allows searching for objects by name or ID. Wildcards (*) are allowed. For example, "subaccount*2015" will return objects with names like "subaccount June 2015", "subaccount April 2015", or simply "subaccount 2015". Most of the searches also add wildcards implicitly at the start and the end of the search string. For example, a search string of "subaccount" will match objects with name "my subaccount", "subaccount 2015", or simply "subaccount".
+  pageToken: string, Value of the nextPageToken from the previous result page.
+  sortField: string, Field by which to sort the list.
+    Allowed values
+      ID - 
+      NAME - 
+  ids: string, Select only subaccounts with these IDs. (repeated)
+  maxResults: integer, Maximum number of results to return.
+  sortOrder: string, Order of sorted results, default is ASCENDING.
+    Allowed values
+      ASCENDING - 
+      DESCENDING - 
+
+Returns:
+  An object of the form:
+
+    { # Subaccount List Response
+    "nextPageToken": "A String", # Pagination token to be used for the next list operation.
+    "kind": "dfareporting#subaccountsListResponse", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#subaccountsListResponse".
+    "subaccounts": [ # Subaccount collection.
+      { # Contains properties of a DCM subaccount.
+          "kind": "dfareporting#subaccount", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#subaccount".
+          "availablePermissionIds": [ # IDs of the available user role permissions for this subaccount.
+            "A String",
+          ],
+          "id": "A String", # ID of this subaccount. This is a read-only, auto-generated field.
+          "name": "A String", # Name of this subaccount. This is a required field. Must be less than 128 characters long and be unique among subaccounts of the same account.
+          "accountId": "A String", # ID of the account that contains this subaccount. This is a read-only field that can be left blank.
+        },
+    ],
+  }</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="patch">patch(profileId, id, body)</code>
+  <pre>Updates an existing subaccount. This method supports patch semantics.
+
+Args:
+  profileId: string, User profile ID associated with this request. (required)
+  id: string, Subaccount ID. (required)
+  body: object, The request body. (required)
+    The object takes the form of:
+
+{ # Contains properties of a DCM subaccount.
+    "kind": "dfareporting#subaccount", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#subaccount".
+    "availablePermissionIds": [ # IDs of the available user role permissions for this subaccount.
+      "A String",
+    ],
+    "id": "A String", # ID of this subaccount. This is a read-only, auto-generated field.
+    "name": "A String", # Name of this subaccount. This is a required field. Must be less than 128 characters long and be unique among subaccounts of the same account.
+    "accountId": "A String", # ID of the account that contains this subaccount. This is a read-only field that can be left blank.
+  }
+
+
+Returns:
+  An object of the form:
+
+    { # Contains properties of a DCM subaccount.
+      "kind": "dfareporting#subaccount", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#subaccount".
+      "availablePermissionIds": [ # IDs of the available user role permissions for this subaccount.
+        "A String",
+      ],
+      "id": "A String", # ID of this subaccount. This is a read-only, auto-generated field.
+      "name": "A String", # Name of this subaccount. This is a required field. Must be less than 128 characters long and be unique among subaccounts of the same account.
+      "accountId": "A String", # ID of the account that contains this subaccount. This is a read-only field that can be left blank.
+    }</pre>
+</div>
+
+<div class="method">
+    <code class="details" id="update">update(profileId, body)</code>
+  <pre>Updates an existing subaccount.
+
+Args:
+  profileId: string, User profile ID associated with this request. (required)
+  body: object, The request body. (required)
+    The object takes the form of:
+
+{ # Contains properties of a DCM subaccount.
+    "kind": "dfareporting#subaccount", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#subaccount".
+    "availablePermissionIds": [ # IDs of the available user role permissions for this subaccount.
+      "A String",
+    ],
+    "id": "A String", # ID of this subaccount. This is a read-only, auto-generated field.
+    "name": "A String", # Name of this subaccount. This is a required field. Must be less than 128 characters long and be unique among subaccounts of the same account.
+    "accountId": "A String", # ID of the account that contains this subaccount. This is a read-only field that can be left blank.
+  }
+
+
+Returns:
+  An object of the form:
+
+    { # Contains properties of a DCM subaccount.
+      "kind": "dfareporting#subaccount", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#subaccount".
+      "availablePermissionIds": [ # IDs of the available user role permissions for this subaccount.
+        "A String",
+      ],
+      "id": "A String", # ID of this subaccount. This is a read-only, auto-generated field.
+      "name": "A String", # Name of this subaccount. This is a required field. Must be less than 128 characters long and be unique among subaccounts of the same account.
+      "accountId": "A String", # ID of the account that contains this subaccount. This is a read-only field that can be left blank.
+    }</pre>
+</div>
+
+</body></html>
\ No newline at end of file
diff --git a/docs/dyn/dfareporting_v2_7.targetableRemarketingLists.html b/docs/dyn/dfareporting_v2_7.targetableRemarketingLists.html
new file mode 100644
index 0000000..0906660
--- /dev/null
+++ b/docs/dyn/dfareporting_v2_7.targetableRemarketingLists.html
@@ -0,0 +1,187 @@
+<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="dfareporting_v2_7.html">DCM/DFA Reporting And Trafficking API</a> . <a href="dfareporting_v2_7.targetableRemarketingLists.html">targetableRemarketingLists</a></h1>
+<h2>Instance Methods</h2>
+<p class="toc_element">
+  <code><a href="#get">get(profileId, id)</a></code></p>
+<p class="firstline">Gets one remarketing list by ID.</p>
+<p class="toc_element">
+  <code><a href="#list">list(profileId, advertiserId, name=None, pageToken=None, sortField=None, maxResults=None, active=None, sortOrder=None)</a></code></p>
+<p class="firstline">Retrieves a list of targetable remarketing lists, possibly filtered. This method supports paging.</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>
+<h3>Method Details</h3>
+<div class="method">
+    <code class="details" id="get">get(profileId, id)</code>
+  <pre>Gets one remarketing list by ID.
+
+Args:
+  profileId: string, User profile ID associated with this request. (required)
+  id: string, Remarketing list ID. (required)
+
+Returns:
+  An object of the form:
+
+    { # Contains properties of a targetable remarketing list. Remarketing enables you to create lists of users who have performed specific actions on a site, then target ads to members of those lists. This resource is a read-only view of a remarketing list to be used to faciliate targeting ads to specific lists. Remarketing lists that are owned by your advertisers and those that are shared to your advertisers or account are accessible via this resource. To manage remarketing lists that are owned by your advertisers, use the RemarketingLists resource.
+    "kind": "dfareporting#targetableRemarketingList", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#targetableRemarketingList".
+    "subaccountId": "A String", # Subaccount ID of this remarketing list. This is a read-only, auto-generated field that is only returned in GET requests.
+    "description": "A String", # Targetable remarketing list description.
+    "listSize": "A String", # Number of users currently in the list. This is a read-only field.
+    "lifeSpan": "A String", # Number of days that a user should remain in the targetable remarketing list without an impression.
+    "name": "A String", # Name of the targetable remarketing list. Is no greater than 128 characters long.
+    "advertiserId": "A String", # Dimension value for the advertiser ID that owns this targetable remarketing list.
+    "listSource": "A String", # Product from which this targetable remarketing list was originated.
+    "active": True or False, # Whether this targetable remarketing list is active.
+    "advertiserIdDimensionValue": { # Represents a DimensionValue resource. # Dimension value for the ID of the advertiser.
+      "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+      "value": "A String", # The value of the dimension.
+      "dimensionName": "A String", # The name of the dimension.
+      "etag": "A String", # The eTag of this response for caching purposes.
+      "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+      "id": "A String", # The ID associated with the value if available.
+    },
+    "id": "A String", # Targetable remarketing list ID.
+    "accountId": "A String", # Account ID of this remarketing list. This is a read-only, auto-generated field that is only returned in GET requests.
+  }</pre>
+</div>
+
+<div class="method">
+    <code class="details" id="list">list(profileId, advertiserId, name=None, pageToken=None, sortField=None, maxResults=None, active=None, sortOrder=None)</code>
+  <pre>Retrieves a list of targetable remarketing lists, possibly filtered. This method supports paging.
+
+Args:
+  profileId: string, User profile ID associated with this request. (required)
+  advertiserId: string, Select only targetable remarketing lists targetable by these advertisers. (required)
+  name: string, Allows searching for objects by name or ID. Wildcards (*) are allowed. For example, "remarketing list*2015" will return objects with names like "remarketing list June 2015", "remarketing list April 2015", or simply "remarketing list 2015". Most of the searches also add wildcards implicitly at the start and the end of the search string. For example, a search string of "remarketing list" will match objects with name "my remarketing list", "remarketing list 2015", or simply "remarketing list".
+  pageToken: string, Value of the nextPageToken from the previous result page.
+  sortField: string, Field by which to sort the list.
+    Allowed values
+      ID - 
+      NAME - 
+  maxResults: integer, Maximum number of results to return.
+  active: boolean, Select only active or only inactive targetable remarketing lists.
+  sortOrder: string, Order of sorted results, default is ASCENDING.
+    Allowed values
+      ASCENDING - 
+      DESCENDING - 
+
+Returns:
+  An object of the form:
+
+    { # Targetable remarketing list response
+    "nextPageToken": "A String", # Pagination token to be used for the next list operation.
+    "kind": "dfareporting#targetableRemarketingListsListResponse", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#targetableRemarketingListsListResponse".
+    "targetableRemarketingLists": [ # Targetable remarketing list collection.
+      { # Contains properties of a targetable remarketing list. Remarketing enables you to create lists of users who have performed specific actions on a site, then target ads to members of those lists. This resource is a read-only view of a remarketing list to be used to faciliate targeting ads to specific lists. Remarketing lists that are owned by your advertisers and those that are shared to your advertisers or account are accessible via this resource. To manage remarketing lists that are owned by your advertisers, use the RemarketingLists resource.
+        "kind": "dfareporting#targetableRemarketingList", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#targetableRemarketingList".
+        "subaccountId": "A String", # Subaccount ID of this remarketing list. This is a read-only, auto-generated field that is only returned in GET requests.
+        "description": "A String", # Targetable remarketing list description.
+        "listSize": "A String", # Number of users currently in the list. This is a read-only field.
+        "lifeSpan": "A String", # Number of days that a user should remain in the targetable remarketing list without an impression.
+        "name": "A String", # Name of the targetable remarketing list. Is no greater than 128 characters long.
+        "advertiserId": "A String", # Dimension value for the advertiser ID that owns this targetable remarketing list.
+        "listSource": "A String", # Product from which this targetable remarketing list was originated.
+        "active": True or False, # Whether this targetable remarketing list is active.
+        "advertiserIdDimensionValue": { # Represents a DimensionValue resource. # Dimension value for the ID of the advertiser.
+          "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+          "value": "A String", # The value of the dimension.
+          "dimensionName": "A String", # The name of the dimension.
+          "etag": "A String", # The eTag of this response for caching purposes.
+          "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+          "id": "A String", # The ID associated with the value if available.
+        },
+        "id": "A String", # Targetable remarketing list ID.
+        "accountId": "A String", # Account ID of this remarketing list. This is a read-only, auto-generated field that is only returned in GET requests.
+      },
+    ],
+  }</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>
+
+</body></html>
\ No newline at end of file
diff --git a/docs/dyn/dfareporting_v2_7.targetingTemplates.html b/docs/dyn/dfareporting_v2_7.targetingTemplates.html
new file mode 100644
index 0000000..17fb522
--- /dev/null
+++ b/docs/dyn/dfareporting_v2_7.targetingTemplates.html
@@ -0,0 +1,1523 @@
+<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="dfareporting_v2_7.html">DCM/DFA Reporting And Trafficking API</a> . <a href="dfareporting_v2_7.targetingTemplates.html">targetingTemplates</a></h1>
+<h2>Instance Methods</h2>
+<p class="toc_element">
+  <code><a href="#get">get(profileId, id)</a></code></p>
+<p class="firstline">Gets one targeting template by ID.</p>
+<p class="toc_element">
+  <code><a href="#insert">insert(profileId, body)</a></code></p>
+<p class="firstline">Inserts a new targeting template.</p>
+<p class="toc_element">
+  <code><a href="#list">list(profileId, advertiserId=None, searchString=None, pageToken=None, sortField=None, ids=None, maxResults=None, sortOrder=None)</a></code></p>
+<p class="firstline">Retrieves a list of targeting templates, optionally filtered. This method supports paging.</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="#patch">patch(profileId, id, body)</a></code></p>
+<p class="firstline">Updates an existing targeting template. This method supports patch semantics.</p>
+<p class="toc_element">
+  <code><a href="#update">update(profileId, body)</a></code></p>
+<p class="firstline">Updates an existing targeting template.</p>
+<h3>Method Details</h3>
+<div class="method">
+    <code class="details" id="get">get(profileId, id)</code>
+  <pre>Gets one targeting template by ID.
+
+Args:
+  profileId: string, User profile ID associated with this request. (required)
+  id: string, Targeting template ID. (required)
+
+Returns:
+  An object of the form:
+
+    { # Contains properties of a targeting template. A targeting template encapsulates targeting information which can be reused across multiple ads.
+      "kind": "dfareporting#targetingTemplate", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#targetingTemplate".
+      "subaccountId": "A String", # Subaccount ID of this targeting template. This field, if left unset, will be auto-generated on insert and is read-only after insert.
+      "name": "A String", # Name of this targeting template. This field is required. It must be less than 256 characters long and unique within an advertiser.
+      "dayPartTargeting": { # Day Part Targeting. # Time and day targeting criteria.
+        "userLocalTime": True or False, # Whether or not to use the user's local time. If false, the America/New York time zone applies.
+        "hoursOfDay": [ # Hours of the day when the ad will serve. Must be an integer between 0 and 23 (inclusive), where 0 is midnight to 1 AM, and 23 is 11 PM to midnight. Can be specified with days of week, in which case the ad would serve during these hours on the specified days. For example, if Monday, Wednesday, Friday are the days of week specified and 9-10am, 3-5pm (hours 9, 15, and 16) is specified, the ad would serve Monday, Wednesdays, and Fridays at 9-10am and 3-5pm.
+          42,
+        ],
+        "daysOfWeek": [ # Days of the week when the ad will serve.
+            #
+            # Acceptable values are:
+            # - "SUNDAY"
+            # - "MONDAY"
+            # - "TUESDAY"
+            # - "WEDNESDAY"
+            # - "THURSDAY"
+            # - "FRIDAY"
+            # - "SATURDAY"
+          "A String",
+        ],
+      },
+      "technologyTargeting": { # Technology Targeting. # Technology platform targeting criteria.
+        "platformTypes": [ # Platform types that this ad targets. For example, desktop, mobile, or tablet. For each platform type, only id is required, and the other fields are populated automatically when the ad is inserted or updated.
+          { # Contains information about a platform type that can be targeted by ads.
+            "kind": "dfareporting#platformType", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#platformType".
+            "id": "A String", # ID of this platform type.
+            "name": "A String", # Name of this platform type.
+          },
+        ],
+        "operatingSystemVersions": [ # Operating system versions that this ad targets. To target all versions, use operatingSystems. For each operating system version, only id is required. The other fields are populated automatically when the ad is inserted or updated. If targeting an operating system version, do not set targeting for the corresponding operating system in operatingSystems.
+          { # Contains information about a particular version of an operating system that can be targeted by ads.
+            "majorVersion": "A String", # Major version (leftmost number) of this operating system version.
+            "kind": "dfareporting#operatingSystemVersion", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#operatingSystemVersion".
+            "name": "A String", # Name of this operating system version.
+            "id": "A String", # ID of this operating system version.
+            "operatingSystem": { # Contains information about an operating system that can be targeted by ads. # Operating system of this operating system version.
+              "mobile": True or False, # Whether this operating system is for mobile.
+              "dartId": "A String", # DART ID of this operating system. This is the ID used for targeting.
+              "kind": "dfareporting#operatingSystem", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#operatingSystem".
+              "name": "A String", # Name of this operating system.
+              "desktop": True or False, # Whether this operating system is for desktop.
+            },
+            "minorVersion": "A String", # Minor version (number after the first dot) of this operating system version.
+          },
+        ],
+        "browsers": [ # Browsers that this ad targets. For each browser either set browserVersionId or dartId along with the version numbers. If both are specified, only browserVersionId will be used. The other fields are populated automatically when the ad is inserted or updated.
+          { # Contains information about a browser that can be targeted by ads.
+            "majorVersion": "A String", # Major version number (leftmost number) of this browser. For example, for Chrome 5.0.376.86 beta, this field should be set to 5. An asterisk (*) may be used to target any version number, and a question mark (?) may be used to target cases where the version number cannot be identified. For example, Chrome *.* targets any version of Chrome: 1.2, 2.5, 3.5, and so on. Chrome 3.* targets Chrome 3.1, 3.5, but not 4.0. Firefox ?.? targets cases where the ad server knows the browser is Firefox but can't tell which version it is.
+            "kind": "dfareporting#browser", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#browser".
+            "name": "A String", # Name of this browser.
+            "browserVersionId": "A String", # ID referring to this grouping of browser and version numbers. This is the ID used for targeting.
+            "dartId": "A String", # DART ID of this browser. This is the ID used when generating reports.
+            "minorVersion": "A String", # Minor version number (number after first dot on left) of this browser. For example, for Chrome 5.0.375.86 beta, this field should be set to 0. An asterisk (*) may be used to target any version number, and a question mark (?) may be used to target cases where the version number cannot be identified. For example, Chrome *.* targets any version of Chrome: 1.2, 2.5, 3.5, and so on. Chrome 3.* targets Chrome 3.1, 3.5, but not 4.0. Firefox ?.? targets cases where the ad server knows the browser is Firefox but can't tell which version it is.
+          },
+        ],
+        "operatingSystems": [ # Operating systems that this ad targets. To target specific versions, use operatingSystemVersions. For each operating system only dartId is required. The other fields are populated automatically when the ad is inserted or updated. If targeting an operating system, do not set targeting for operating system versions for the same operating system.
+          { # Contains information about an operating system that can be targeted by ads.
+            "mobile": True or False, # Whether this operating system is for mobile.
+            "dartId": "A String", # DART ID of this operating system. This is the ID used for targeting.
+            "kind": "dfareporting#operatingSystem", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#operatingSystem".
+            "name": "A String", # Name of this operating system.
+            "desktop": True or False, # Whether this operating system is for desktop.
+          },
+        ],
+        "mobileCarriers": [ # Mobile carriers that this ad targets. For each mobile carrier only id is required, and the other fields are populated automatically when the ad is inserted or updated. If targeting a mobile carrier, do not set targeting for any zip codes.
+          { # Contains information about a mobile carrier that can be targeted by ads.
+            "kind": "dfareporting#mobileCarrier", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#mobileCarrier".
+            "countryDartId": "A String", # DART ID of the country to which this mobile carrier belongs.
+            "id": "A String", # ID of this mobile carrier.
+            "countryCode": "A String", # Country code of the country to which this mobile carrier belongs.
+            "name": "A String", # Name of this mobile carrier.
+          },
+        ],
+        "connectionTypes": [ # Connection types that this ad targets. For each connection type only id is required. The other fields are populated automatically when the ad is inserted or updated.
+          { # Contains information about an internet connection type that can be targeted by ads. Clients can use the connection type to target mobile vs. broadband users.
+            "kind": "dfareporting#connectionType", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#connectionType".
+            "id": "A String", # ID of this connection type.
+            "name": "A String", # Name of this connection type.
+          },
+        ],
+      },
+      "listTargetingExpression": { # Remarketing List Targeting Expression. # Remarketing list targeting criteria.
+        "expression": "A String", # Expression describing which lists are being targeted by the ad.
+      },
+      "keyValueTargetingExpression": { # Key Value Targeting Expression. # Key-value targeting criteria.
+        "expression": "A String", # Keyword expression being targeted by the ad.
+      },
+      "languageTargeting": { # Language Targeting. # Language targeting criteria.
+        "languages": [ # Languages that this ad targets. For each language only languageId is required. The other fields are populated automatically when the ad is inserted or updated.
+          { # Contains information about a language that can be targeted by ads.
+            "languageCode": "A String", # Format of language code is an ISO 639 two-letter language code optionally followed by an underscore followed by an ISO 3166 code. Examples are "en" for English or "zh_CN" for Simplified Chinese.
+            "kind": "dfareporting#language", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#language".
+            "id": "A String", # Language ID of this language. This is the ID used for targeting and generating reports.
+            "name": "A String", # Name of this language.
+          },
+        ],
+      },
+      "advertiserId": "A String", # Advertiser ID of this targeting template. This is a required field on insert and is read-only after insert.
+      "geoTargeting": { # Geographical Targeting. # Geographical targeting criteria.
+        "countries": [ # Countries to be targeted or excluded from targeting, depending on the setting of the excludeCountries field. For each country only dartId is required. The other fields are populated automatically when the ad is inserted or updated. If targeting or excluding a country, do not target regions, cities, metros, or postal codes in the same country.
+          { # Contains information about a country that can be targeted by ads.
+            "dartId": "A String", # DART ID of this country. This is the ID used for targeting and generating reports.
+            "sslEnabled": True or False, # Whether ad serving supports secure servers in this country.
+            "kind": "dfareporting#country", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#country".
+            "countryCode": "A String", # Country code.
+            "name": "A String", # Name of this country.
+          },
+        ],
+        "excludeCountries": True or False, # Whether or not to exclude the countries in the countries field from targeting. If false, the countries field refers to countries which will be targeted by the ad.
+        "postalCodes": [ # Postal codes to be targeted. For each postal code only id is required. The other fields are populated automatically when the ad is inserted or updated. If targeting a postal code, do not target or exclude the country of the postal code.
+          { # Contains information about a postal code that can be targeted by ads.
+            "countryDartId": "A String", # DART ID of the country to which this postal code belongs.
+            "kind": "dfareporting#postalCode", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#postalCode".
+            "code": "A String", # Postal code. This is equivalent to the id field.
+            "id": "A String", # ID of this postal code.
+            "countryCode": "A String", # Country code of the country to which this postal code belongs.
+          },
+        ],
+        "regions": [ # Regions to be targeted. For each region only dartId is required. The other fields are populated automatically when the ad is inserted or updated. If targeting a region, do not target or exclude the country of the region.
+          { # Contains information about a region that can be targeted by ads.
+            "kind": "dfareporting#region", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#region".
+            "countryDartId": "A String", # DART ID of the country to which this region belongs.
+            "name": "A String", # Name of this region.
+            "countryCode": "A String", # Country code of the country to which this region belongs.
+            "regionCode": "A String", # Region code.
+            "dartId": "A String", # DART ID of this region.
+          },
+        ],
+        "cities": [ # Cities to be targeted. For each city only dartId is required. The other fields are populated automatically when the ad is inserted or updated. If targeting a city, do not target or exclude the country of the city, and do not target the metro or region of the city.
+          { # Contains information about a city that can be targeted by ads.
+            "kind": "dfareporting#city", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#city".
+            "countryDartId": "A String", # DART ID of the country to which this city belongs.
+            "name": "A String", # Name of this city.
+            "countryCode": "A String", # Country code of the country to which this city belongs.
+            "metroCode": "A String", # Metro region code of the metro region (DMA) to which this city belongs.
+            "regionCode": "A String", # Region code of the region to which this city belongs.
+            "metroDmaId": "A String", # ID of the metro region (DMA) to which this city belongs.
+            "dartId": "A String", # DART ID of this city. This is the ID used for targeting and generating reports.
+            "regionDartId": "A String", # DART ID of the region to which this city belongs.
+          },
+        ],
+        "metros": [ # Metros to be targeted. For each metro only dmaId is required. The other fields are populated automatically when the ad is inserted or updated. If targeting a metro, do not target or exclude the country of the metro.
+          { # Contains information about a metro region that can be targeted by ads.
+            "kind": "dfareporting#metro", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#metro".
+            "countryDartId": "A String", # DART ID of the country to which this metro region belongs.
+            "name": "A String", # Name of this metro region.
+            "countryCode": "A String", # Country code of the country to which this metro region belongs.
+            "metroCode": "A String", # Metro code of this metro region. This is equivalent to dma_id.
+            "dmaId": "A String", # DMA ID of this metro region. This is the ID used for targeting and generating reports, and is equivalent to metro_code.
+            "dartId": "A String", # DART ID of this metro region.
+          },
+        ],
+      },
+      "advertiserIdDimensionValue": { # Represents a DimensionValue resource. # Dimension value for the ID of the advertiser. This is a read-only, auto-generated field.
+        "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+        "value": "A String", # The value of the dimension.
+        "dimensionName": "A String", # The name of the dimension.
+        "etag": "A String", # The eTag of this response for caching purposes.
+        "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+        "id": "A String", # The ID associated with the value if available.
+      },
+      "id": "A String", # ID of this targeting template. This is a read-only, auto-generated field.
+      "accountId": "A String", # Account ID of this targeting template. This field, if left unset, will be auto-generated on insert and is read-only after insert.
+    }</pre>
+</div>
+
+<div class="method">
+    <code class="details" id="insert">insert(profileId, body)</code>
+  <pre>Inserts a new targeting template.
+
+Args:
+  profileId: string, User profile ID associated with this request. (required)
+  body: object, The request body. (required)
+    The object takes the form of:
+
+{ # Contains properties of a targeting template. A targeting template encapsulates targeting information which can be reused across multiple ads.
+    "kind": "dfareporting#targetingTemplate", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#targetingTemplate".
+    "subaccountId": "A String", # Subaccount ID of this targeting template. This field, if left unset, will be auto-generated on insert and is read-only after insert.
+    "name": "A String", # Name of this targeting template. This field is required. It must be less than 256 characters long and unique within an advertiser.
+    "dayPartTargeting": { # Day Part Targeting. # Time and day targeting criteria.
+      "userLocalTime": True or False, # Whether or not to use the user's local time. If false, the America/New York time zone applies.
+      "hoursOfDay": [ # Hours of the day when the ad will serve. Must be an integer between 0 and 23 (inclusive), where 0 is midnight to 1 AM, and 23 is 11 PM to midnight. Can be specified with days of week, in which case the ad would serve during these hours on the specified days. For example, if Monday, Wednesday, Friday are the days of week specified and 9-10am, 3-5pm (hours 9, 15, and 16) is specified, the ad would serve Monday, Wednesdays, and Fridays at 9-10am and 3-5pm.
+        42,
+      ],
+      "daysOfWeek": [ # Days of the week when the ad will serve.
+          #
+          # Acceptable values are:
+          # - "SUNDAY"
+          # - "MONDAY"
+          # - "TUESDAY"
+          # - "WEDNESDAY"
+          # - "THURSDAY"
+          # - "FRIDAY"
+          # - "SATURDAY"
+        "A String",
+      ],
+    },
+    "technologyTargeting": { # Technology Targeting. # Technology platform targeting criteria.
+      "platformTypes": [ # Platform types that this ad targets. For example, desktop, mobile, or tablet. For each platform type, only id is required, and the other fields are populated automatically when the ad is inserted or updated.
+        { # Contains information about a platform type that can be targeted by ads.
+          "kind": "dfareporting#platformType", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#platformType".
+          "id": "A String", # ID of this platform type.
+          "name": "A String", # Name of this platform type.
+        },
+      ],
+      "operatingSystemVersions": [ # Operating system versions that this ad targets. To target all versions, use operatingSystems. For each operating system version, only id is required. The other fields are populated automatically when the ad is inserted or updated. If targeting an operating system version, do not set targeting for the corresponding operating system in operatingSystems.
+        { # Contains information about a particular version of an operating system that can be targeted by ads.
+          "majorVersion": "A String", # Major version (leftmost number) of this operating system version.
+          "kind": "dfareporting#operatingSystemVersion", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#operatingSystemVersion".
+          "name": "A String", # Name of this operating system version.
+          "id": "A String", # ID of this operating system version.
+          "operatingSystem": { # Contains information about an operating system that can be targeted by ads. # Operating system of this operating system version.
+            "mobile": True or False, # Whether this operating system is for mobile.
+            "dartId": "A String", # DART ID of this operating system. This is the ID used for targeting.
+            "kind": "dfareporting#operatingSystem", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#operatingSystem".
+            "name": "A String", # Name of this operating system.
+            "desktop": True or False, # Whether this operating system is for desktop.
+          },
+          "minorVersion": "A String", # Minor version (number after the first dot) of this operating system version.
+        },
+      ],
+      "browsers": [ # Browsers that this ad targets. For each browser either set browserVersionId or dartId along with the version numbers. If both are specified, only browserVersionId will be used. The other fields are populated automatically when the ad is inserted or updated.
+        { # Contains information about a browser that can be targeted by ads.
+          "majorVersion": "A String", # Major version number (leftmost number) of this browser. For example, for Chrome 5.0.376.86 beta, this field should be set to 5. An asterisk (*) may be used to target any version number, and a question mark (?) may be used to target cases where the version number cannot be identified. For example, Chrome *.* targets any version of Chrome: 1.2, 2.5, 3.5, and so on. Chrome 3.* targets Chrome 3.1, 3.5, but not 4.0. Firefox ?.? targets cases where the ad server knows the browser is Firefox but can't tell which version it is.
+          "kind": "dfareporting#browser", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#browser".
+          "name": "A String", # Name of this browser.
+          "browserVersionId": "A String", # ID referring to this grouping of browser and version numbers. This is the ID used for targeting.
+          "dartId": "A String", # DART ID of this browser. This is the ID used when generating reports.
+          "minorVersion": "A String", # Minor version number (number after first dot on left) of this browser. For example, for Chrome 5.0.375.86 beta, this field should be set to 0. An asterisk (*) may be used to target any version number, and a question mark (?) may be used to target cases where the version number cannot be identified. For example, Chrome *.* targets any version of Chrome: 1.2, 2.5, 3.5, and so on. Chrome 3.* targets Chrome 3.1, 3.5, but not 4.0. Firefox ?.? targets cases where the ad server knows the browser is Firefox but can't tell which version it is.
+        },
+      ],
+      "operatingSystems": [ # Operating systems that this ad targets. To target specific versions, use operatingSystemVersions. For each operating system only dartId is required. The other fields are populated automatically when the ad is inserted or updated. If targeting an operating system, do not set targeting for operating system versions for the same operating system.
+        { # Contains information about an operating system that can be targeted by ads.
+          "mobile": True or False, # Whether this operating system is for mobile.
+          "dartId": "A String", # DART ID of this operating system. This is the ID used for targeting.
+          "kind": "dfareporting#operatingSystem", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#operatingSystem".
+          "name": "A String", # Name of this operating system.
+          "desktop": True or False, # Whether this operating system is for desktop.
+        },
+      ],
+      "mobileCarriers": [ # Mobile carriers that this ad targets. For each mobile carrier only id is required, and the other fields are populated automatically when the ad is inserted or updated. If targeting a mobile carrier, do not set targeting for any zip codes.
+        { # Contains information about a mobile carrier that can be targeted by ads.
+          "kind": "dfareporting#mobileCarrier", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#mobileCarrier".
+          "countryDartId": "A String", # DART ID of the country to which this mobile carrier belongs.
+          "id": "A String", # ID of this mobile carrier.
+          "countryCode": "A String", # Country code of the country to which this mobile carrier belongs.
+          "name": "A String", # Name of this mobile carrier.
+        },
+      ],
+      "connectionTypes": [ # Connection types that this ad targets. For each connection type only id is required. The other fields are populated automatically when the ad is inserted or updated.
+        { # Contains information about an internet connection type that can be targeted by ads. Clients can use the connection type to target mobile vs. broadband users.
+          "kind": "dfareporting#connectionType", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#connectionType".
+          "id": "A String", # ID of this connection type.
+          "name": "A String", # Name of this connection type.
+        },
+      ],
+    },
+    "listTargetingExpression": { # Remarketing List Targeting Expression. # Remarketing list targeting criteria.
+      "expression": "A String", # Expression describing which lists are being targeted by the ad.
+    },
+    "keyValueTargetingExpression": { # Key Value Targeting Expression. # Key-value targeting criteria.
+      "expression": "A String", # Keyword expression being targeted by the ad.
+    },
+    "languageTargeting": { # Language Targeting. # Language targeting criteria.
+      "languages": [ # Languages that this ad targets. For each language only languageId is required. The other fields are populated automatically when the ad is inserted or updated.
+        { # Contains information about a language that can be targeted by ads.
+          "languageCode": "A String", # Format of language code is an ISO 639 two-letter language code optionally followed by an underscore followed by an ISO 3166 code. Examples are "en" for English or "zh_CN" for Simplified Chinese.
+          "kind": "dfareporting#language", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#language".
+          "id": "A String", # Language ID of this language. This is the ID used for targeting and generating reports.
+          "name": "A String", # Name of this language.
+        },
+      ],
+    },
+    "advertiserId": "A String", # Advertiser ID of this targeting template. This is a required field on insert and is read-only after insert.
+    "geoTargeting": { # Geographical Targeting. # Geographical targeting criteria.
+      "countries": [ # Countries to be targeted or excluded from targeting, depending on the setting of the excludeCountries field. For each country only dartId is required. The other fields are populated automatically when the ad is inserted or updated. If targeting or excluding a country, do not target regions, cities, metros, or postal codes in the same country.
+        { # Contains information about a country that can be targeted by ads.
+          "dartId": "A String", # DART ID of this country. This is the ID used for targeting and generating reports.
+          "sslEnabled": True or False, # Whether ad serving supports secure servers in this country.
+          "kind": "dfareporting#country", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#country".
+          "countryCode": "A String", # Country code.
+          "name": "A String", # Name of this country.
+        },
+      ],
+      "excludeCountries": True or False, # Whether or not to exclude the countries in the countries field from targeting. If false, the countries field refers to countries which will be targeted by the ad.
+      "postalCodes": [ # Postal codes to be targeted. For each postal code only id is required. The other fields are populated automatically when the ad is inserted or updated. If targeting a postal code, do not target or exclude the country of the postal code.
+        { # Contains information about a postal code that can be targeted by ads.
+          "countryDartId": "A String", # DART ID of the country to which this postal code belongs.
+          "kind": "dfareporting#postalCode", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#postalCode".
+          "code": "A String", # Postal code. This is equivalent to the id field.
+          "id": "A String", # ID of this postal code.
+          "countryCode": "A String", # Country code of the country to which this postal code belongs.
+        },
+      ],
+      "regions": [ # Regions to be targeted. For each region only dartId is required. The other fields are populated automatically when the ad is inserted or updated. If targeting a region, do not target or exclude the country of the region.
+        { # Contains information about a region that can be targeted by ads.
+          "kind": "dfareporting#region", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#region".
+          "countryDartId": "A String", # DART ID of the country to which this region belongs.
+          "name": "A String", # Name of this region.
+          "countryCode": "A String", # Country code of the country to which this region belongs.
+          "regionCode": "A String", # Region code.
+          "dartId": "A String", # DART ID of this region.
+        },
+      ],
+      "cities": [ # Cities to be targeted. For each city only dartId is required. The other fields are populated automatically when the ad is inserted or updated. If targeting a city, do not target or exclude the country of the city, and do not target the metro or region of the city.
+        { # Contains information about a city that can be targeted by ads.
+          "kind": "dfareporting#city", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#city".
+          "countryDartId": "A String", # DART ID of the country to which this city belongs.
+          "name": "A String", # Name of this city.
+          "countryCode": "A String", # Country code of the country to which this city belongs.
+          "metroCode": "A String", # Metro region code of the metro region (DMA) to which this city belongs.
+          "regionCode": "A String", # Region code of the region to which this city belongs.
+          "metroDmaId": "A String", # ID of the metro region (DMA) to which this city belongs.
+          "dartId": "A String", # DART ID of this city. This is the ID used for targeting and generating reports.
+          "regionDartId": "A String", # DART ID of the region to which this city belongs.
+        },
+      ],
+      "metros": [ # Metros to be targeted. For each metro only dmaId is required. The other fields are populated automatically when the ad is inserted or updated. If targeting a metro, do not target or exclude the country of the metro.
+        { # Contains information about a metro region that can be targeted by ads.
+          "kind": "dfareporting#metro", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#metro".
+          "countryDartId": "A String", # DART ID of the country to which this metro region belongs.
+          "name": "A String", # Name of this metro region.
+          "countryCode": "A String", # Country code of the country to which this metro region belongs.
+          "metroCode": "A String", # Metro code of this metro region. This is equivalent to dma_id.
+          "dmaId": "A String", # DMA ID of this metro region. This is the ID used for targeting and generating reports, and is equivalent to metro_code.
+          "dartId": "A String", # DART ID of this metro region.
+        },
+      ],
+    },
+    "advertiserIdDimensionValue": { # Represents a DimensionValue resource. # Dimension value for the ID of the advertiser. This is a read-only, auto-generated field.
+      "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+      "value": "A String", # The value of the dimension.
+      "dimensionName": "A String", # The name of the dimension.
+      "etag": "A String", # The eTag of this response for caching purposes.
+      "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+      "id": "A String", # The ID associated with the value if available.
+    },
+    "id": "A String", # ID of this targeting template. This is a read-only, auto-generated field.
+    "accountId": "A String", # Account ID of this targeting template. This field, if left unset, will be auto-generated on insert and is read-only after insert.
+  }
+
+
+Returns:
+  An object of the form:
+
+    { # Contains properties of a targeting template. A targeting template encapsulates targeting information which can be reused across multiple ads.
+      "kind": "dfareporting#targetingTemplate", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#targetingTemplate".
+      "subaccountId": "A String", # Subaccount ID of this targeting template. This field, if left unset, will be auto-generated on insert and is read-only after insert.
+      "name": "A String", # Name of this targeting template. This field is required. It must be less than 256 characters long and unique within an advertiser.
+      "dayPartTargeting": { # Day Part Targeting. # Time and day targeting criteria.
+        "userLocalTime": True or False, # Whether or not to use the user's local time. If false, the America/New York time zone applies.
+        "hoursOfDay": [ # Hours of the day when the ad will serve. Must be an integer between 0 and 23 (inclusive), where 0 is midnight to 1 AM, and 23 is 11 PM to midnight. Can be specified with days of week, in which case the ad would serve during these hours on the specified days. For example, if Monday, Wednesday, Friday are the days of week specified and 9-10am, 3-5pm (hours 9, 15, and 16) is specified, the ad would serve Monday, Wednesdays, and Fridays at 9-10am and 3-5pm.
+          42,
+        ],
+        "daysOfWeek": [ # Days of the week when the ad will serve.
+            #
+            # Acceptable values are:
+            # - "SUNDAY"
+            # - "MONDAY"
+            # - "TUESDAY"
+            # - "WEDNESDAY"
+            # - "THURSDAY"
+            # - "FRIDAY"
+            # - "SATURDAY"
+          "A String",
+        ],
+      },
+      "technologyTargeting": { # Technology Targeting. # Technology platform targeting criteria.
+        "platformTypes": [ # Platform types that this ad targets. For example, desktop, mobile, or tablet. For each platform type, only id is required, and the other fields are populated automatically when the ad is inserted or updated.
+          { # Contains information about a platform type that can be targeted by ads.
+            "kind": "dfareporting#platformType", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#platformType".
+            "id": "A String", # ID of this platform type.
+            "name": "A String", # Name of this platform type.
+          },
+        ],
+        "operatingSystemVersions": [ # Operating system versions that this ad targets. To target all versions, use operatingSystems. For each operating system version, only id is required. The other fields are populated automatically when the ad is inserted or updated. If targeting an operating system version, do not set targeting for the corresponding operating system in operatingSystems.
+          { # Contains information about a particular version of an operating system that can be targeted by ads.
+            "majorVersion": "A String", # Major version (leftmost number) of this operating system version.
+            "kind": "dfareporting#operatingSystemVersion", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#operatingSystemVersion".
+            "name": "A String", # Name of this operating system version.
+            "id": "A String", # ID of this operating system version.
+            "operatingSystem": { # Contains information about an operating system that can be targeted by ads. # Operating system of this operating system version.
+              "mobile": True or False, # Whether this operating system is for mobile.
+              "dartId": "A String", # DART ID of this operating system. This is the ID used for targeting.
+              "kind": "dfareporting#operatingSystem", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#operatingSystem".
+              "name": "A String", # Name of this operating system.
+              "desktop": True or False, # Whether this operating system is for desktop.
+            },
+            "minorVersion": "A String", # Minor version (number after the first dot) of this operating system version.
+          },
+        ],
+        "browsers": [ # Browsers that this ad targets. For each browser either set browserVersionId or dartId along with the version numbers. If both are specified, only browserVersionId will be used. The other fields are populated automatically when the ad is inserted or updated.
+          { # Contains information about a browser that can be targeted by ads.
+            "majorVersion": "A String", # Major version number (leftmost number) of this browser. For example, for Chrome 5.0.376.86 beta, this field should be set to 5. An asterisk (*) may be used to target any version number, and a question mark (?) may be used to target cases where the version number cannot be identified. For example, Chrome *.* targets any version of Chrome: 1.2, 2.5, 3.5, and so on. Chrome 3.* targets Chrome 3.1, 3.5, but not 4.0. Firefox ?.? targets cases where the ad server knows the browser is Firefox but can't tell which version it is.
+            "kind": "dfareporting#browser", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#browser".
+            "name": "A String", # Name of this browser.
+            "browserVersionId": "A String", # ID referring to this grouping of browser and version numbers. This is the ID used for targeting.
+            "dartId": "A String", # DART ID of this browser. This is the ID used when generating reports.
+            "minorVersion": "A String", # Minor version number (number after first dot on left) of this browser. For example, for Chrome 5.0.375.86 beta, this field should be set to 0. An asterisk (*) may be used to target any version number, and a question mark (?) may be used to target cases where the version number cannot be identified. For example, Chrome *.* targets any version of Chrome: 1.2, 2.5, 3.5, and so on. Chrome 3.* targets Chrome 3.1, 3.5, but not 4.0. Firefox ?.? targets cases where the ad server knows the browser is Firefox but can't tell which version it is.
+          },
+        ],
+        "operatingSystems": [ # Operating systems that this ad targets. To target specific versions, use operatingSystemVersions. For each operating system only dartId is required. The other fields are populated automatically when the ad is inserted or updated. If targeting an operating system, do not set targeting for operating system versions for the same operating system.
+          { # Contains information about an operating system that can be targeted by ads.
+            "mobile": True or False, # Whether this operating system is for mobile.
+            "dartId": "A String", # DART ID of this operating system. This is the ID used for targeting.
+            "kind": "dfareporting#operatingSystem", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#operatingSystem".
+            "name": "A String", # Name of this operating system.
+            "desktop": True or False, # Whether this operating system is for desktop.
+          },
+        ],
+        "mobileCarriers": [ # Mobile carriers that this ad targets. For each mobile carrier only id is required, and the other fields are populated automatically when the ad is inserted or updated. If targeting a mobile carrier, do not set targeting for any zip codes.
+          { # Contains information about a mobile carrier that can be targeted by ads.
+            "kind": "dfareporting#mobileCarrier", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#mobileCarrier".
+            "countryDartId": "A String", # DART ID of the country to which this mobile carrier belongs.
+            "id": "A String", # ID of this mobile carrier.
+            "countryCode": "A String", # Country code of the country to which this mobile carrier belongs.
+            "name": "A String", # Name of this mobile carrier.
+          },
+        ],
+        "connectionTypes": [ # Connection types that this ad targets. For each connection type only id is required. The other fields are populated automatically when the ad is inserted or updated.
+          { # Contains information about an internet connection type that can be targeted by ads. Clients can use the connection type to target mobile vs. broadband users.
+            "kind": "dfareporting#connectionType", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#connectionType".
+            "id": "A String", # ID of this connection type.
+            "name": "A String", # Name of this connection type.
+          },
+        ],
+      },
+      "listTargetingExpression": { # Remarketing List Targeting Expression. # Remarketing list targeting criteria.
+        "expression": "A String", # Expression describing which lists are being targeted by the ad.
+      },
+      "keyValueTargetingExpression": { # Key Value Targeting Expression. # Key-value targeting criteria.
+        "expression": "A String", # Keyword expression being targeted by the ad.
+      },
+      "languageTargeting": { # Language Targeting. # Language targeting criteria.
+        "languages": [ # Languages that this ad targets. For each language only languageId is required. The other fields are populated automatically when the ad is inserted or updated.
+          { # Contains information about a language that can be targeted by ads.
+            "languageCode": "A String", # Format of language code is an ISO 639 two-letter language code optionally followed by an underscore followed by an ISO 3166 code. Examples are "en" for English or "zh_CN" for Simplified Chinese.
+            "kind": "dfareporting#language", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#language".
+            "id": "A String", # Language ID of this language. This is the ID used for targeting and generating reports.
+            "name": "A String", # Name of this language.
+          },
+        ],
+      },
+      "advertiserId": "A String", # Advertiser ID of this targeting template. This is a required field on insert and is read-only after insert.
+      "geoTargeting": { # Geographical Targeting. # Geographical targeting criteria.
+        "countries": [ # Countries to be targeted or excluded from targeting, depending on the setting of the excludeCountries field. For each country only dartId is required. The other fields are populated automatically when the ad is inserted or updated. If targeting or excluding a country, do not target regions, cities, metros, or postal codes in the same country.
+          { # Contains information about a country that can be targeted by ads.
+            "dartId": "A String", # DART ID of this country. This is the ID used for targeting and generating reports.
+            "sslEnabled": True or False, # Whether ad serving supports secure servers in this country.
+            "kind": "dfareporting#country", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#country".
+            "countryCode": "A String", # Country code.
+            "name": "A String", # Name of this country.
+          },
+        ],
+        "excludeCountries": True or False, # Whether or not to exclude the countries in the countries field from targeting. If false, the countries field refers to countries which will be targeted by the ad.
+        "postalCodes": [ # Postal codes to be targeted. For each postal code only id is required. The other fields are populated automatically when the ad is inserted or updated. If targeting a postal code, do not target or exclude the country of the postal code.
+          { # Contains information about a postal code that can be targeted by ads.
+            "countryDartId": "A String", # DART ID of the country to which this postal code belongs.
+            "kind": "dfareporting#postalCode", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#postalCode".
+            "code": "A String", # Postal code. This is equivalent to the id field.
+            "id": "A String", # ID of this postal code.
+            "countryCode": "A String", # Country code of the country to which this postal code belongs.
+          },
+        ],
+        "regions": [ # Regions to be targeted. For each region only dartId is required. The other fields are populated automatically when the ad is inserted or updated. If targeting a region, do not target or exclude the country of the region.
+          { # Contains information about a region that can be targeted by ads.
+            "kind": "dfareporting#region", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#region".
+            "countryDartId": "A String", # DART ID of the country to which this region belongs.
+            "name": "A String", # Name of this region.
+            "countryCode": "A String", # Country code of the country to which this region belongs.
+            "regionCode": "A String", # Region code.
+            "dartId": "A String", # DART ID of this region.
+          },
+        ],
+        "cities": [ # Cities to be targeted. For each city only dartId is required. The other fields are populated automatically when the ad is inserted or updated. If targeting a city, do not target or exclude the country of the city, and do not target the metro or region of the city.
+          { # Contains information about a city that can be targeted by ads.
+            "kind": "dfareporting#city", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#city".
+            "countryDartId": "A String", # DART ID of the country to which this city belongs.
+            "name": "A String", # Name of this city.
+            "countryCode": "A String", # Country code of the country to which this city belongs.
+            "metroCode": "A String", # Metro region code of the metro region (DMA) to which this city belongs.
+            "regionCode": "A String", # Region code of the region to which this city belongs.
+            "metroDmaId": "A String", # ID of the metro region (DMA) to which this city belongs.
+            "dartId": "A String", # DART ID of this city. This is the ID used for targeting and generating reports.
+            "regionDartId": "A String", # DART ID of the region to which this city belongs.
+          },
+        ],
+        "metros": [ # Metros to be targeted. For each metro only dmaId is required. The other fields are populated automatically when the ad is inserted or updated. If targeting a metro, do not target or exclude the country of the metro.
+          { # Contains information about a metro region that can be targeted by ads.
+            "kind": "dfareporting#metro", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#metro".
+            "countryDartId": "A String", # DART ID of the country to which this metro region belongs.
+            "name": "A String", # Name of this metro region.
+            "countryCode": "A String", # Country code of the country to which this metro region belongs.
+            "metroCode": "A String", # Metro code of this metro region. This is equivalent to dma_id.
+            "dmaId": "A String", # DMA ID of this metro region. This is the ID used for targeting and generating reports, and is equivalent to metro_code.
+            "dartId": "A String", # DART ID of this metro region.
+          },
+        ],
+      },
+      "advertiserIdDimensionValue": { # Represents a DimensionValue resource. # Dimension value for the ID of the advertiser. This is a read-only, auto-generated field.
+        "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+        "value": "A String", # The value of the dimension.
+        "dimensionName": "A String", # The name of the dimension.
+        "etag": "A String", # The eTag of this response for caching purposes.
+        "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+        "id": "A String", # The ID associated with the value if available.
+      },
+      "id": "A String", # ID of this targeting template. This is a read-only, auto-generated field.
+      "accountId": "A String", # Account ID of this targeting template. This field, if left unset, will be auto-generated on insert and is read-only after insert.
+    }</pre>
+</div>
+
+<div class="method">
+    <code class="details" id="list">list(profileId, advertiserId=None, searchString=None, pageToken=None, sortField=None, ids=None, maxResults=None, sortOrder=None)</code>
+  <pre>Retrieves a list of targeting templates, optionally filtered. This method supports paging.
+
+Args:
+  profileId: string, User profile ID associated with this request. (required)
+  advertiserId: string, Select only targeting templates with this advertiser ID.
+  searchString: string, Allows searching for objects by name or ID. Wildcards (*) are allowed. For example, "template*2015" will return objects with names like "template June 2015", "template April 2015", or simply "template 2015". Most of the searches also add wildcards implicitly at the start and the end of the search string. For example, a search string of "template" will match objects with name "my template", "template 2015", or simply "template".
+  pageToken: string, Value of the nextPageToken from the previous result page.
+  sortField: string, Field by which to sort the list.
+    Allowed values
+      ID - 
+      NAME - 
+  ids: string, Select only targeting templates with these IDs. (repeated)
+  maxResults: integer, Maximum number of results to return.
+  sortOrder: string, Order of sorted results, default is ASCENDING.
+    Allowed values
+      ASCENDING - 
+      DESCENDING - 
+
+Returns:
+  An object of the form:
+
+    { # Targeting Template List Response
+    "nextPageToken": "A String", # Pagination token to be used for the next list operation.
+    "kind": "dfareporting#targetingTemplatesListResponse", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#targetingTemplatesListResponse".
+    "targetingTemplates": [ # Targeting template collection.
+      { # Contains properties of a targeting template. A targeting template encapsulates targeting information which can be reused across multiple ads.
+          "kind": "dfareporting#targetingTemplate", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#targetingTemplate".
+          "subaccountId": "A String", # Subaccount ID of this targeting template. This field, if left unset, will be auto-generated on insert and is read-only after insert.
+          "name": "A String", # Name of this targeting template. This field is required. It must be less than 256 characters long and unique within an advertiser.
+          "dayPartTargeting": { # Day Part Targeting. # Time and day targeting criteria.
+            "userLocalTime": True or False, # Whether or not to use the user's local time. If false, the America/New York time zone applies.
+            "hoursOfDay": [ # Hours of the day when the ad will serve. Must be an integer between 0 and 23 (inclusive), where 0 is midnight to 1 AM, and 23 is 11 PM to midnight. Can be specified with days of week, in which case the ad would serve during these hours on the specified days. For example, if Monday, Wednesday, Friday are the days of week specified and 9-10am, 3-5pm (hours 9, 15, and 16) is specified, the ad would serve Monday, Wednesdays, and Fridays at 9-10am and 3-5pm.
+              42,
+            ],
+            "daysOfWeek": [ # Days of the week when the ad will serve.
+                #
+                # Acceptable values are:
+                # - "SUNDAY"
+                # - "MONDAY"
+                # - "TUESDAY"
+                # - "WEDNESDAY"
+                # - "THURSDAY"
+                # - "FRIDAY"
+                # - "SATURDAY"
+              "A String",
+            ],
+          },
+          "technologyTargeting": { # Technology Targeting. # Technology platform targeting criteria.
+            "platformTypes": [ # Platform types that this ad targets. For example, desktop, mobile, or tablet. For each platform type, only id is required, and the other fields are populated automatically when the ad is inserted or updated.
+              { # Contains information about a platform type that can be targeted by ads.
+                "kind": "dfareporting#platformType", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#platformType".
+                "id": "A String", # ID of this platform type.
+                "name": "A String", # Name of this platform type.
+              },
+            ],
+            "operatingSystemVersions": [ # Operating system versions that this ad targets. To target all versions, use operatingSystems. For each operating system version, only id is required. The other fields are populated automatically when the ad is inserted or updated. If targeting an operating system version, do not set targeting for the corresponding operating system in operatingSystems.
+              { # Contains information about a particular version of an operating system that can be targeted by ads.
+                "majorVersion": "A String", # Major version (leftmost number) of this operating system version.
+                "kind": "dfareporting#operatingSystemVersion", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#operatingSystemVersion".
+                "name": "A String", # Name of this operating system version.
+                "id": "A String", # ID of this operating system version.
+                "operatingSystem": { # Contains information about an operating system that can be targeted by ads. # Operating system of this operating system version.
+                  "mobile": True or False, # Whether this operating system is for mobile.
+                  "dartId": "A String", # DART ID of this operating system. This is the ID used for targeting.
+                  "kind": "dfareporting#operatingSystem", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#operatingSystem".
+                  "name": "A String", # Name of this operating system.
+                  "desktop": True or False, # Whether this operating system is for desktop.
+                },
+                "minorVersion": "A String", # Minor version (number after the first dot) of this operating system version.
+              },
+            ],
+            "browsers": [ # Browsers that this ad targets. For each browser either set browserVersionId or dartId along with the version numbers. If both are specified, only browserVersionId will be used. The other fields are populated automatically when the ad is inserted or updated.
+              { # Contains information about a browser that can be targeted by ads.
+                "majorVersion": "A String", # Major version number (leftmost number) of this browser. For example, for Chrome 5.0.376.86 beta, this field should be set to 5. An asterisk (*) may be used to target any version number, and a question mark (?) may be used to target cases where the version number cannot be identified. For example, Chrome *.* targets any version of Chrome: 1.2, 2.5, 3.5, and so on. Chrome 3.* targets Chrome 3.1, 3.5, but not 4.0. Firefox ?.? targets cases where the ad server knows the browser is Firefox but can't tell which version it is.
+                "kind": "dfareporting#browser", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#browser".
+                "name": "A String", # Name of this browser.
+                "browserVersionId": "A String", # ID referring to this grouping of browser and version numbers. This is the ID used for targeting.
+                "dartId": "A String", # DART ID of this browser. This is the ID used when generating reports.
+                "minorVersion": "A String", # Minor version number (number after first dot on left) of this browser. For example, for Chrome 5.0.375.86 beta, this field should be set to 0. An asterisk (*) may be used to target any version number, and a question mark (?) may be used to target cases where the version number cannot be identified. For example, Chrome *.* targets any version of Chrome: 1.2, 2.5, 3.5, and so on. Chrome 3.* targets Chrome 3.1, 3.5, but not 4.0. Firefox ?.? targets cases where the ad server knows the browser is Firefox but can't tell which version it is.
+              },
+            ],
+            "operatingSystems": [ # Operating systems that this ad targets. To target specific versions, use operatingSystemVersions. For each operating system only dartId is required. The other fields are populated automatically when the ad is inserted or updated. If targeting an operating system, do not set targeting for operating system versions for the same operating system.
+              { # Contains information about an operating system that can be targeted by ads.
+                "mobile": True or False, # Whether this operating system is for mobile.
+                "dartId": "A String", # DART ID of this operating system. This is the ID used for targeting.
+                "kind": "dfareporting#operatingSystem", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#operatingSystem".
+                "name": "A String", # Name of this operating system.
+                "desktop": True or False, # Whether this operating system is for desktop.
+              },
+            ],
+            "mobileCarriers": [ # Mobile carriers that this ad targets. For each mobile carrier only id is required, and the other fields are populated automatically when the ad is inserted or updated. If targeting a mobile carrier, do not set targeting for any zip codes.
+              { # Contains information about a mobile carrier that can be targeted by ads.
+                "kind": "dfareporting#mobileCarrier", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#mobileCarrier".
+                "countryDartId": "A String", # DART ID of the country to which this mobile carrier belongs.
+                "id": "A String", # ID of this mobile carrier.
+                "countryCode": "A String", # Country code of the country to which this mobile carrier belongs.
+                "name": "A String", # Name of this mobile carrier.
+              },
+            ],
+            "connectionTypes": [ # Connection types that this ad targets. For each connection type only id is required. The other fields are populated automatically when the ad is inserted or updated.
+              { # Contains information about an internet connection type that can be targeted by ads. Clients can use the connection type to target mobile vs. broadband users.
+                "kind": "dfareporting#connectionType", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#connectionType".
+                "id": "A String", # ID of this connection type.
+                "name": "A String", # Name of this connection type.
+              },
+            ],
+          },
+          "listTargetingExpression": { # Remarketing List Targeting Expression. # Remarketing list targeting criteria.
+            "expression": "A String", # Expression describing which lists are being targeted by the ad.
+          },
+          "keyValueTargetingExpression": { # Key Value Targeting Expression. # Key-value targeting criteria.
+            "expression": "A String", # Keyword expression being targeted by the ad.
+          },
+          "languageTargeting": { # Language Targeting. # Language targeting criteria.
+            "languages": [ # Languages that this ad targets. For each language only languageId is required. The other fields are populated automatically when the ad is inserted or updated.
+              { # Contains information about a language that can be targeted by ads.
+                "languageCode": "A String", # Format of language code is an ISO 639 two-letter language code optionally followed by an underscore followed by an ISO 3166 code. Examples are "en" for English or "zh_CN" for Simplified Chinese.
+                "kind": "dfareporting#language", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#language".
+                "id": "A String", # Language ID of this language. This is the ID used for targeting and generating reports.
+                "name": "A String", # Name of this language.
+              },
+            ],
+          },
+          "advertiserId": "A String", # Advertiser ID of this targeting template. This is a required field on insert and is read-only after insert.
+          "geoTargeting": { # Geographical Targeting. # Geographical targeting criteria.
+            "countries": [ # Countries to be targeted or excluded from targeting, depending on the setting of the excludeCountries field. For each country only dartId is required. The other fields are populated automatically when the ad is inserted or updated. If targeting or excluding a country, do not target regions, cities, metros, or postal codes in the same country.
+              { # Contains information about a country that can be targeted by ads.
+                "dartId": "A String", # DART ID of this country. This is the ID used for targeting and generating reports.
+                "sslEnabled": True or False, # Whether ad serving supports secure servers in this country.
+                "kind": "dfareporting#country", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#country".
+                "countryCode": "A String", # Country code.
+                "name": "A String", # Name of this country.
+              },
+            ],
+            "excludeCountries": True or False, # Whether or not to exclude the countries in the countries field from targeting. If false, the countries field refers to countries which will be targeted by the ad.
+            "postalCodes": [ # Postal codes to be targeted. For each postal code only id is required. The other fields are populated automatically when the ad is inserted or updated. If targeting a postal code, do not target or exclude the country of the postal code.
+              { # Contains information about a postal code that can be targeted by ads.
+                "countryDartId": "A String", # DART ID of the country to which this postal code belongs.
+                "kind": "dfareporting#postalCode", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#postalCode".
+                "code": "A String", # Postal code. This is equivalent to the id field.
+                "id": "A String", # ID of this postal code.
+                "countryCode": "A String", # Country code of the country to which this postal code belongs.
+              },
+            ],
+            "regions": [ # Regions to be targeted. For each region only dartId is required. The other fields are populated automatically when the ad is inserted or updated. If targeting a region, do not target or exclude the country of the region.
+              { # Contains information about a region that can be targeted by ads.
+                "kind": "dfareporting#region", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#region".
+                "countryDartId": "A String", # DART ID of the country to which this region belongs.
+                "name": "A String", # Name of this region.
+                "countryCode": "A String", # Country code of the country to which this region belongs.
+                "regionCode": "A String", # Region code.
+                "dartId": "A String", # DART ID of this region.
+              },
+            ],
+            "cities": [ # Cities to be targeted. For each city only dartId is required. The other fields are populated automatically when the ad is inserted or updated. If targeting a city, do not target or exclude the country of the city, and do not target the metro or region of the city.
+              { # Contains information about a city that can be targeted by ads.
+                "kind": "dfareporting#city", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#city".
+                "countryDartId": "A String", # DART ID of the country to which this city belongs.
+                "name": "A String", # Name of this city.
+                "countryCode": "A String", # Country code of the country to which this city belongs.
+                "metroCode": "A String", # Metro region code of the metro region (DMA) to which this city belongs.
+                "regionCode": "A String", # Region code of the region to which this city belongs.
+                "metroDmaId": "A String", # ID of the metro region (DMA) to which this city belongs.
+                "dartId": "A String", # DART ID of this city. This is the ID used for targeting and generating reports.
+                "regionDartId": "A String", # DART ID of the region to which this city belongs.
+              },
+            ],
+            "metros": [ # Metros to be targeted. For each metro only dmaId is required. The other fields are populated automatically when the ad is inserted or updated. If targeting a metro, do not target or exclude the country of the metro.
+              { # Contains information about a metro region that can be targeted by ads.
+                "kind": "dfareporting#metro", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#metro".
+                "countryDartId": "A String", # DART ID of the country to which this metro region belongs.
+                "name": "A String", # Name of this metro region.
+                "countryCode": "A String", # Country code of the country to which this metro region belongs.
+                "metroCode": "A String", # Metro code of this metro region. This is equivalent to dma_id.
+                "dmaId": "A String", # DMA ID of this metro region. This is the ID used for targeting and generating reports, and is equivalent to metro_code.
+                "dartId": "A String", # DART ID of this metro region.
+              },
+            ],
+          },
+          "advertiserIdDimensionValue": { # Represents a DimensionValue resource. # Dimension value for the ID of the advertiser. This is a read-only, auto-generated field.
+            "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+            "value": "A String", # The value of the dimension.
+            "dimensionName": "A String", # The name of the dimension.
+            "etag": "A String", # The eTag of this response for caching purposes.
+            "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+            "id": "A String", # The ID associated with the value if available.
+          },
+          "id": "A String", # ID of this targeting template. This is a read-only, auto-generated field.
+          "accountId": "A String", # Account ID of this targeting template. This field, if left unset, will be auto-generated on insert and is read-only after insert.
+        },
+    ],
+  }</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="patch">patch(profileId, id, body)</code>
+  <pre>Updates an existing targeting template. This method supports patch semantics.
+
+Args:
+  profileId: string, User profile ID associated with this request. (required)
+  id: string, Targeting template ID. (required)
+  body: object, The request body. (required)
+    The object takes the form of:
+
+{ # Contains properties of a targeting template. A targeting template encapsulates targeting information which can be reused across multiple ads.
+    "kind": "dfareporting#targetingTemplate", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#targetingTemplate".
+    "subaccountId": "A String", # Subaccount ID of this targeting template. This field, if left unset, will be auto-generated on insert and is read-only after insert.
+    "name": "A String", # Name of this targeting template. This field is required. It must be less than 256 characters long and unique within an advertiser.
+    "dayPartTargeting": { # Day Part Targeting. # Time and day targeting criteria.
+      "userLocalTime": True or False, # Whether or not to use the user's local time. If false, the America/New York time zone applies.
+      "hoursOfDay": [ # Hours of the day when the ad will serve. Must be an integer between 0 and 23 (inclusive), where 0 is midnight to 1 AM, and 23 is 11 PM to midnight. Can be specified with days of week, in which case the ad would serve during these hours on the specified days. For example, if Monday, Wednesday, Friday are the days of week specified and 9-10am, 3-5pm (hours 9, 15, and 16) is specified, the ad would serve Monday, Wednesdays, and Fridays at 9-10am and 3-5pm.
+        42,
+      ],
+      "daysOfWeek": [ # Days of the week when the ad will serve.
+          #
+          # Acceptable values are:
+          # - "SUNDAY"
+          # - "MONDAY"
+          # - "TUESDAY"
+          # - "WEDNESDAY"
+          # - "THURSDAY"
+          # - "FRIDAY"
+          # - "SATURDAY"
+        "A String",
+      ],
+    },
+    "technologyTargeting": { # Technology Targeting. # Technology platform targeting criteria.
+      "platformTypes": [ # Platform types that this ad targets. For example, desktop, mobile, or tablet. For each platform type, only id is required, and the other fields are populated automatically when the ad is inserted or updated.
+        { # Contains information about a platform type that can be targeted by ads.
+          "kind": "dfareporting#platformType", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#platformType".
+          "id": "A String", # ID of this platform type.
+          "name": "A String", # Name of this platform type.
+        },
+      ],
+      "operatingSystemVersions": [ # Operating system versions that this ad targets. To target all versions, use operatingSystems. For each operating system version, only id is required. The other fields are populated automatically when the ad is inserted or updated. If targeting an operating system version, do not set targeting for the corresponding operating system in operatingSystems.
+        { # Contains information about a particular version of an operating system that can be targeted by ads.
+          "majorVersion": "A String", # Major version (leftmost number) of this operating system version.
+          "kind": "dfareporting#operatingSystemVersion", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#operatingSystemVersion".
+          "name": "A String", # Name of this operating system version.
+          "id": "A String", # ID of this operating system version.
+          "operatingSystem": { # Contains information about an operating system that can be targeted by ads. # Operating system of this operating system version.
+            "mobile": True or False, # Whether this operating system is for mobile.
+            "dartId": "A String", # DART ID of this operating system. This is the ID used for targeting.
+            "kind": "dfareporting#operatingSystem", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#operatingSystem".
+            "name": "A String", # Name of this operating system.
+            "desktop": True or False, # Whether this operating system is for desktop.
+          },
+          "minorVersion": "A String", # Minor version (number after the first dot) of this operating system version.
+        },
+      ],
+      "browsers": [ # Browsers that this ad targets. For each browser either set browserVersionId or dartId along with the version numbers. If both are specified, only browserVersionId will be used. The other fields are populated automatically when the ad is inserted or updated.
+        { # Contains information about a browser that can be targeted by ads.
+          "majorVersion": "A String", # Major version number (leftmost number) of this browser. For example, for Chrome 5.0.376.86 beta, this field should be set to 5. An asterisk (*) may be used to target any version number, and a question mark (?) may be used to target cases where the version number cannot be identified. For example, Chrome *.* targets any version of Chrome: 1.2, 2.5, 3.5, and so on. Chrome 3.* targets Chrome 3.1, 3.5, but not 4.0. Firefox ?.? targets cases where the ad server knows the browser is Firefox but can't tell which version it is.
+          "kind": "dfareporting#browser", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#browser".
+          "name": "A String", # Name of this browser.
+          "browserVersionId": "A String", # ID referring to this grouping of browser and version numbers. This is the ID used for targeting.
+          "dartId": "A String", # DART ID of this browser. This is the ID used when generating reports.
+          "minorVersion": "A String", # Minor version number (number after first dot on left) of this browser. For example, for Chrome 5.0.375.86 beta, this field should be set to 0. An asterisk (*) may be used to target any version number, and a question mark (?) may be used to target cases where the version number cannot be identified. For example, Chrome *.* targets any version of Chrome: 1.2, 2.5, 3.5, and so on. Chrome 3.* targets Chrome 3.1, 3.5, but not 4.0. Firefox ?.? targets cases where the ad server knows the browser is Firefox but can't tell which version it is.
+        },
+      ],
+      "operatingSystems": [ # Operating systems that this ad targets. To target specific versions, use operatingSystemVersions. For each operating system only dartId is required. The other fields are populated automatically when the ad is inserted or updated. If targeting an operating system, do not set targeting for operating system versions for the same operating system.
+        { # Contains information about an operating system that can be targeted by ads.
+          "mobile": True or False, # Whether this operating system is for mobile.
+          "dartId": "A String", # DART ID of this operating system. This is the ID used for targeting.
+          "kind": "dfareporting#operatingSystem", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#operatingSystem".
+          "name": "A String", # Name of this operating system.
+          "desktop": True or False, # Whether this operating system is for desktop.
+        },
+      ],
+      "mobileCarriers": [ # Mobile carriers that this ad targets. For each mobile carrier only id is required, and the other fields are populated automatically when the ad is inserted or updated. If targeting a mobile carrier, do not set targeting for any zip codes.
+        { # Contains information about a mobile carrier that can be targeted by ads.
+          "kind": "dfareporting#mobileCarrier", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#mobileCarrier".
+          "countryDartId": "A String", # DART ID of the country to which this mobile carrier belongs.
+          "id": "A String", # ID of this mobile carrier.
+          "countryCode": "A String", # Country code of the country to which this mobile carrier belongs.
+          "name": "A String", # Name of this mobile carrier.
+        },
+      ],
+      "connectionTypes": [ # Connection types that this ad targets. For each connection type only id is required. The other fields are populated automatically when the ad is inserted or updated.
+        { # Contains information about an internet connection type that can be targeted by ads. Clients can use the connection type to target mobile vs. broadband users.
+          "kind": "dfareporting#connectionType", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#connectionType".
+          "id": "A String", # ID of this connection type.
+          "name": "A String", # Name of this connection type.
+        },
+      ],
+    },
+    "listTargetingExpression": { # Remarketing List Targeting Expression. # Remarketing list targeting criteria.
+      "expression": "A String", # Expression describing which lists are being targeted by the ad.
+    },
+    "keyValueTargetingExpression": { # Key Value Targeting Expression. # Key-value targeting criteria.
+      "expression": "A String", # Keyword expression being targeted by the ad.
+    },
+    "languageTargeting": { # Language Targeting. # Language targeting criteria.
+      "languages": [ # Languages that this ad targets. For each language only languageId is required. The other fields are populated automatically when the ad is inserted or updated.
+        { # Contains information about a language that can be targeted by ads.
+          "languageCode": "A String", # Format of language code is an ISO 639 two-letter language code optionally followed by an underscore followed by an ISO 3166 code. Examples are "en" for English or "zh_CN" for Simplified Chinese.
+          "kind": "dfareporting#language", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#language".
+          "id": "A String", # Language ID of this language. This is the ID used for targeting and generating reports.
+          "name": "A String", # Name of this language.
+        },
+      ],
+    },
+    "advertiserId": "A String", # Advertiser ID of this targeting template. This is a required field on insert and is read-only after insert.
+    "geoTargeting": { # Geographical Targeting. # Geographical targeting criteria.
+      "countries": [ # Countries to be targeted or excluded from targeting, depending on the setting of the excludeCountries field. For each country only dartId is required. The other fields are populated automatically when the ad is inserted or updated. If targeting or excluding a country, do not target regions, cities, metros, or postal codes in the same country.
+        { # Contains information about a country that can be targeted by ads.
+          "dartId": "A String", # DART ID of this country. This is the ID used for targeting and generating reports.
+          "sslEnabled": True or False, # Whether ad serving supports secure servers in this country.
+          "kind": "dfareporting#country", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#country".
+          "countryCode": "A String", # Country code.
+          "name": "A String", # Name of this country.
+        },
+      ],
+      "excludeCountries": True or False, # Whether or not to exclude the countries in the countries field from targeting. If false, the countries field refers to countries which will be targeted by the ad.
+      "postalCodes": [ # Postal codes to be targeted. For each postal code only id is required. The other fields are populated automatically when the ad is inserted or updated. If targeting a postal code, do not target or exclude the country of the postal code.
+        { # Contains information about a postal code that can be targeted by ads.
+          "countryDartId": "A String", # DART ID of the country to which this postal code belongs.
+          "kind": "dfareporting#postalCode", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#postalCode".
+          "code": "A String", # Postal code. This is equivalent to the id field.
+          "id": "A String", # ID of this postal code.
+          "countryCode": "A String", # Country code of the country to which this postal code belongs.
+        },
+      ],
+      "regions": [ # Regions to be targeted. For each region only dartId is required. The other fields are populated automatically when the ad is inserted or updated. If targeting a region, do not target or exclude the country of the region.
+        { # Contains information about a region that can be targeted by ads.
+          "kind": "dfareporting#region", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#region".
+          "countryDartId": "A String", # DART ID of the country to which this region belongs.
+          "name": "A String", # Name of this region.
+          "countryCode": "A String", # Country code of the country to which this region belongs.
+          "regionCode": "A String", # Region code.
+          "dartId": "A String", # DART ID of this region.
+        },
+      ],
+      "cities": [ # Cities to be targeted. For each city only dartId is required. The other fields are populated automatically when the ad is inserted or updated. If targeting a city, do not target or exclude the country of the city, and do not target the metro or region of the city.
+        { # Contains information about a city that can be targeted by ads.
+          "kind": "dfareporting#city", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#city".
+          "countryDartId": "A String", # DART ID of the country to which this city belongs.
+          "name": "A String", # Name of this city.
+          "countryCode": "A String", # Country code of the country to which this city belongs.
+          "metroCode": "A String", # Metro region code of the metro region (DMA) to which this city belongs.
+          "regionCode": "A String", # Region code of the region to which this city belongs.
+          "metroDmaId": "A String", # ID of the metro region (DMA) to which this city belongs.
+          "dartId": "A String", # DART ID of this city. This is the ID used for targeting and generating reports.
+          "regionDartId": "A String", # DART ID of the region to which this city belongs.
+        },
+      ],
+      "metros": [ # Metros to be targeted. For each metro only dmaId is required. The other fields are populated automatically when the ad is inserted or updated. If targeting a metro, do not target or exclude the country of the metro.
+        { # Contains information about a metro region that can be targeted by ads.
+          "kind": "dfareporting#metro", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#metro".
+          "countryDartId": "A String", # DART ID of the country to which this metro region belongs.
+          "name": "A String", # Name of this metro region.
+          "countryCode": "A String", # Country code of the country to which this metro region belongs.
+          "metroCode": "A String", # Metro code of this metro region. This is equivalent to dma_id.
+          "dmaId": "A String", # DMA ID of this metro region. This is the ID used for targeting and generating reports, and is equivalent to metro_code.
+          "dartId": "A String", # DART ID of this metro region.
+        },
+      ],
+    },
+    "advertiserIdDimensionValue": { # Represents a DimensionValue resource. # Dimension value for the ID of the advertiser. This is a read-only, auto-generated field.
+      "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+      "value": "A String", # The value of the dimension.
+      "dimensionName": "A String", # The name of the dimension.
+      "etag": "A String", # The eTag of this response for caching purposes.
+      "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+      "id": "A String", # The ID associated with the value if available.
+    },
+    "id": "A String", # ID of this targeting template. This is a read-only, auto-generated field.
+    "accountId": "A String", # Account ID of this targeting template. This field, if left unset, will be auto-generated on insert and is read-only after insert.
+  }
+
+
+Returns:
+  An object of the form:
+
+    { # Contains properties of a targeting template. A targeting template encapsulates targeting information which can be reused across multiple ads.
+      "kind": "dfareporting#targetingTemplate", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#targetingTemplate".
+      "subaccountId": "A String", # Subaccount ID of this targeting template. This field, if left unset, will be auto-generated on insert and is read-only after insert.
+      "name": "A String", # Name of this targeting template. This field is required. It must be less than 256 characters long and unique within an advertiser.
+      "dayPartTargeting": { # Day Part Targeting. # Time and day targeting criteria.
+        "userLocalTime": True or False, # Whether or not to use the user's local time. If false, the America/New York time zone applies.
+        "hoursOfDay": [ # Hours of the day when the ad will serve. Must be an integer between 0 and 23 (inclusive), where 0 is midnight to 1 AM, and 23 is 11 PM to midnight. Can be specified with days of week, in which case the ad would serve during these hours on the specified days. For example, if Monday, Wednesday, Friday are the days of week specified and 9-10am, 3-5pm (hours 9, 15, and 16) is specified, the ad would serve Monday, Wednesdays, and Fridays at 9-10am and 3-5pm.
+          42,
+        ],
+        "daysOfWeek": [ # Days of the week when the ad will serve.
+            #
+            # Acceptable values are:
+            # - "SUNDAY"
+            # - "MONDAY"
+            # - "TUESDAY"
+            # - "WEDNESDAY"
+            # - "THURSDAY"
+            # - "FRIDAY"
+            # - "SATURDAY"
+          "A String",
+        ],
+      },
+      "technologyTargeting": { # Technology Targeting. # Technology platform targeting criteria.
+        "platformTypes": [ # Platform types that this ad targets. For example, desktop, mobile, or tablet. For each platform type, only id is required, and the other fields are populated automatically when the ad is inserted or updated.
+          { # Contains information about a platform type that can be targeted by ads.
+            "kind": "dfareporting#platformType", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#platformType".
+            "id": "A String", # ID of this platform type.
+            "name": "A String", # Name of this platform type.
+          },
+        ],
+        "operatingSystemVersions": [ # Operating system versions that this ad targets. To target all versions, use operatingSystems. For each operating system version, only id is required. The other fields are populated automatically when the ad is inserted or updated. If targeting an operating system version, do not set targeting for the corresponding operating system in operatingSystems.
+          { # Contains information about a particular version of an operating system that can be targeted by ads.
+            "majorVersion": "A String", # Major version (leftmost number) of this operating system version.
+            "kind": "dfareporting#operatingSystemVersion", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#operatingSystemVersion".
+            "name": "A String", # Name of this operating system version.
+            "id": "A String", # ID of this operating system version.
+            "operatingSystem": { # Contains information about an operating system that can be targeted by ads. # Operating system of this operating system version.
+              "mobile": True or False, # Whether this operating system is for mobile.
+              "dartId": "A String", # DART ID of this operating system. This is the ID used for targeting.
+              "kind": "dfareporting#operatingSystem", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#operatingSystem".
+              "name": "A String", # Name of this operating system.
+              "desktop": True or False, # Whether this operating system is for desktop.
+            },
+            "minorVersion": "A String", # Minor version (number after the first dot) of this operating system version.
+          },
+        ],
+        "browsers": [ # Browsers that this ad targets. For each browser either set browserVersionId or dartId along with the version numbers. If both are specified, only browserVersionId will be used. The other fields are populated automatically when the ad is inserted or updated.
+          { # Contains information about a browser that can be targeted by ads.
+            "majorVersion": "A String", # Major version number (leftmost number) of this browser. For example, for Chrome 5.0.376.86 beta, this field should be set to 5. An asterisk (*) may be used to target any version number, and a question mark (?) may be used to target cases where the version number cannot be identified. For example, Chrome *.* targets any version of Chrome: 1.2, 2.5, 3.5, and so on. Chrome 3.* targets Chrome 3.1, 3.5, but not 4.0. Firefox ?.? targets cases where the ad server knows the browser is Firefox but can't tell which version it is.
+            "kind": "dfareporting#browser", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#browser".
+            "name": "A String", # Name of this browser.
+            "browserVersionId": "A String", # ID referring to this grouping of browser and version numbers. This is the ID used for targeting.
+            "dartId": "A String", # DART ID of this browser. This is the ID used when generating reports.
+            "minorVersion": "A String", # Minor version number (number after first dot on left) of this browser. For example, for Chrome 5.0.375.86 beta, this field should be set to 0. An asterisk (*) may be used to target any version number, and a question mark (?) may be used to target cases where the version number cannot be identified. For example, Chrome *.* targets any version of Chrome: 1.2, 2.5, 3.5, and so on. Chrome 3.* targets Chrome 3.1, 3.5, but not 4.0. Firefox ?.? targets cases where the ad server knows the browser is Firefox but can't tell which version it is.
+          },
+        ],
+        "operatingSystems": [ # Operating systems that this ad targets. To target specific versions, use operatingSystemVersions. For each operating system only dartId is required. The other fields are populated automatically when the ad is inserted or updated. If targeting an operating system, do not set targeting for operating system versions for the same operating system.
+          { # Contains information about an operating system that can be targeted by ads.
+            "mobile": True or False, # Whether this operating system is for mobile.
+            "dartId": "A String", # DART ID of this operating system. This is the ID used for targeting.
+            "kind": "dfareporting#operatingSystem", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#operatingSystem".
+            "name": "A String", # Name of this operating system.
+            "desktop": True or False, # Whether this operating system is for desktop.
+          },
+        ],
+        "mobileCarriers": [ # Mobile carriers that this ad targets. For each mobile carrier only id is required, and the other fields are populated automatically when the ad is inserted or updated. If targeting a mobile carrier, do not set targeting for any zip codes.
+          { # Contains information about a mobile carrier that can be targeted by ads.
+            "kind": "dfareporting#mobileCarrier", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#mobileCarrier".
+            "countryDartId": "A String", # DART ID of the country to which this mobile carrier belongs.
+            "id": "A String", # ID of this mobile carrier.
+            "countryCode": "A String", # Country code of the country to which this mobile carrier belongs.
+            "name": "A String", # Name of this mobile carrier.
+          },
+        ],
+        "connectionTypes": [ # Connection types that this ad targets. For each connection type only id is required. The other fields are populated automatically when the ad is inserted or updated.
+          { # Contains information about an internet connection type that can be targeted by ads. Clients can use the connection type to target mobile vs. broadband users.
+            "kind": "dfareporting#connectionType", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#connectionType".
+            "id": "A String", # ID of this connection type.
+            "name": "A String", # Name of this connection type.
+          },
+        ],
+      },
+      "listTargetingExpression": { # Remarketing List Targeting Expression. # Remarketing list targeting criteria.
+        "expression": "A String", # Expression describing which lists are being targeted by the ad.
+      },
+      "keyValueTargetingExpression": { # Key Value Targeting Expression. # Key-value targeting criteria.
+        "expression": "A String", # Keyword expression being targeted by the ad.
+      },
+      "languageTargeting": { # Language Targeting. # Language targeting criteria.
+        "languages": [ # Languages that this ad targets. For each language only languageId is required. The other fields are populated automatically when the ad is inserted or updated.
+          { # Contains information about a language that can be targeted by ads.
+            "languageCode": "A String", # Format of language code is an ISO 639 two-letter language code optionally followed by an underscore followed by an ISO 3166 code. Examples are "en" for English or "zh_CN" for Simplified Chinese.
+            "kind": "dfareporting#language", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#language".
+            "id": "A String", # Language ID of this language. This is the ID used for targeting and generating reports.
+            "name": "A String", # Name of this language.
+          },
+        ],
+      },
+      "advertiserId": "A String", # Advertiser ID of this targeting template. This is a required field on insert and is read-only after insert.
+      "geoTargeting": { # Geographical Targeting. # Geographical targeting criteria.
+        "countries": [ # Countries to be targeted or excluded from targeting, depending on the setting of the excludeCountries field. For each country only dartId is required. The other fields are populated automatically when the ad is inserted or updated. If targeting or excluding a country, do not target regions, cities, metros, or postal codes in the same country.
+          { # Contains information about a country that can be targeted by ads.
+            "dartId": "A String", # DART ID of this country. This is the ID used for targeting and generating reports.
+            "sslEnabled": True or False, # Whether ad serving supports secure servers in this country.
+            "kind": "dfareporting#country", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#country".
+            "countryCode": "A String", # Country code.
+            "name": "A String", # Name of this country.
+          },
+        ],
+        "excludeCountries": True or False, # Whether or not to exclude the countries in the countries field from targeting. If false, the countries field refers to countries which will be targeted by the ad.
+        "postalCodes": [ # Postal codes to be targeted. For each postal code only id is required. The other fields are populated automatically when the ad is inserted or updated. If targeting a postal code, do not target or exclude the country of the postal code.
+          { # Contains information about a postal code that can be targeted by ads.
+            "countryDartId": "A String", # DART ID of the country to which this postal code belongs.
+            "kind": "dfareporting#postalCode", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#postalCode".
+            "code": "A String", # Postal code. This is equivalent to the id field.
+            "id": "A String", # ID of this postal code.
+            "countryCode": "A String", # Country code of the country to which this postal code belongs.
+          },
+        ],
+        "regions": [ # Regions to be targeted. For each region only dartId is required. The other fields are populated automatically when the ad is inserted or updated. If targeting a region, do not target or exclude the country of the region.
+          { # Contains information about a region that can be targeted by ads.
+            "kind": "dfareporting#region", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#region".
+            "countryDartId": "A String", # DART ID of the country to which this region belongs.
+            "name": "A String", # Name of this region.
+            "countryCode": "A String", # Country code of the country to which this region belongs.
+            "regionCode": "A String", # Region code.
+            "dartId": "A String", # DART ID of this region.
+          },
+        ],
+        "cities": [ # Cities to be targeted. For each city only dartId is required. The other fields are populated automatically when the ad is inserted or updated. If targeting a city, do not target or exclude the country of the city, and do not target the metro or region of the city.
+          { # Contains information about a city that can be targeted by ads.
+            "kind": "dfareporting#city", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#city".
+            "countryDartId": "A String", # DART ID of the country to which this city belongs.
+            "name": "A String", # Name of this city.
+            "countryCode": "A String", # Country code of the country to which this city belongs.
+            "metroCode": "A String", # Metro region code of the metro region (DMA) to which this city belongs.
+            "regionCode": "A String", # Region code of the region to which this city belongs.
+            "metroDmaId": "A String", # ID of the metro region (DMA) to which this city belongs.
+            "dartId": "A String", # DART ID of this city. This is the ID used for targeting and generating reports.
+            "regionDartId": "A String", # DART ID of the region to which this city belongs.
+          },
+        ],
+        "metros": [ # Metros to be targeted. For each metro only dmaId is required. The other fields are populated automatically when the ad is inserted or updated. If targeting a metro, do not target or exclude the country of the metro.
+          { # Contains information about a metro region that can be targeted by ads.
+            "kind": "dfareporting#metro", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#metro".
+            "countryDartId": "A String", # DART ID of the country to which this metro region belongs.
+            "name": "A String", # Name of this metro region.
+            "countryCode": "A String", # Country code of the country to which this metro region belongs.
+            "metroCode": "A String", # Metro code of this metro region. This is equivalent to dma_id.
+            "dmaId": "A String", # DMA ID of this metro region. This is the ID used for targeting and generating reports, and is equivalent to metro_code.
+            "dartId": "A String", # DART ID of this metro region.
+          },
+        ],
+      },
+      "advertiserIdDimensionValue": { # Represents a DimensionValue resource. # Dimension value for the ID of the advertiser. This is a read-only, auto-generated field.
+        "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+        "value": "A String", # The value of the dimension.
+        "dimensionName": "A String", # The name of the dimension.
+        "etag": "A String", # The eTag of this response for caching purposes.
+        "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+        "id": "A String", # The ID associated with the value if available.
+      },
+      "id": "A String", # ID of this targeting template. This is a read-only, auto-generated field.
+      "accountId": "A String", # Account ID of this targeting template. This field, if left unset, will be auto-generated on insert and is read-only after insert.
+    }</pre>
+</div>
+
+<div class="method">
+    <code class="details" id="update">update(profileId, body)</code>
+  <pre>Updates an existing targeting template.
+
+Args:
+  profileId: string, User profile ID associated with this request. (required)
+  body: object, The request body. (required)
+    The object takes the form of:
+
+{ # Contains properties of a targeting template. A targeting template encapsulates targeting information which can be reused across multiple ads.
+    "kind": "dfareporting#targetingTemplate", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#targetingTemplate".
+    "subaccountId": "A String", # Subaccount ID of this targeting template. This field, if left unset, will be auto-generated on insert and is read-only after insert.
+    "name": "A String", # Name of this targeting template. This field is required. It must be less than 256 characters long and unique within an advertiser.
+    "dayPartTargeting": { # Day Part Targeting. # Time and day targeting criteria.
+      "userLocalTime": True or False, # Whether or not to use the user's local time. If false, the America/New York time zone applies.
+      "hoursOfDay": [ # Hours of the day when the ad will serve. Must be an integer between 0 and 23 (inclusive), where 0 is midnight to 1 AM, and 23 is 11 PM to midnight. Can be specified with days of week, in which case the ad would serve during these hours on the specified days. For example, if Monday, Wednesday, Friday are the days of week specified and 9-10am, 3-5pm (hours 9, 15, and 16) is specified, the ad would serve Monday, Wednesdays, and Fridays at 9-10am and 3-5pm.
+        42,
+      ],
+      "daysOfWeek": [ # Days of the week when the ad will serve.
+          #
+          # Acceptable values are:
+          # - "SUNDAY"
+          # - "MONDAY"
+          # - "TUESDAY"
+          # - "WEDNESDAY"
+          # - "THURSDAY"
+          # - "FRIDAY"
+          # - "SATURDAY"
+        "A String",
+      ],
+    },
+    "technologyTargeting": { # Technology Targeting. # Technology platform targeting criteria.
+      "platformTypes": [ # Platform types that this ad targets. For example, desktop, mobile, or tablet. For each platform type, only id is required, and the other fields are populated automatically when the ad is inserted or updated.
+        { # Contains information about a platform type that can be targeted by ads.
+          "kind": "dfareporting#platformType", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#platformType".
+          "id": "A String", # ID of this platform type.
+          "name": "A String", # Name of this platform type.
+        },
+      ],
+      "operatingSystemVersions": [ # Operating system versions that this ad targets. To target all versions, use operatingSystems. For each operating system version, only id is required. The other fields are populated automatically when the ad is inserted or updated. If targeting an operating system version, do not set targeting for the corresponding operating system in operatingSystems.
+        { # Contains information about a particular version of an operating system that can be targeted by ads.
+          "majorVersion": "A String", # Major version (leftmost number) of this operating system version.
+          "kind": "dfareporting#operatingSystemVersion", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#operatingSystemVersion".
+          "name": "A String", # Name of this operating system version.
+          "id": "A String", # ID of this operating system version.
+          "operatingSystem": { # Contains information about an operating system that can be targeted by ads. # Operating system of this operating system version.
+            "mobile": True or False, # Whether this operating system is for mobile.
+            "dartId": "A String", # DART ID of this operating system. This is the ID used for targeting.
+            "kind": "dfareporting#operatingSystem", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#operatingSystem".
+            "name": "A String", # Name of this operating system.
+            "desktop": True or False, # Whether this operating system is for desktop.
+          },
+          "minorVersion": "A String", # Minor version (number after the first dot) of this operating system version.
+        },
+      ],
+      "browsers": [ # Browsers that this ad targets. For each browser either set browserVersionId or dartId along with the version numbers. If both are specified, only browserVersionId will be used. The other fields are populated automatically when the ad is inserted or updated.
+        { # Contains information about a browser that can be targeted by ads.
+          "majorVersion": "A String", # Major version number (leftmost number) of this browser. For example, for Chrome 5.0.376.86 beta, this field should be set to 5. An asterisk (*) may be used to target any version number, and a question mark (?) may be used to target cases where the version number cannot be identified. For example, Chrome *.* targets any version of Chrome: 1.2, 2.5, 3.5, and so on. Chrome 3.* targets Chrome 3.1, 3.5, but not 4.0. Firefox ?.? targets cases where the ad server knows the browser is Firefox but can't tell which version it is.
+          "kind": "dfareporting#browser", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#browser".
+          "name": "A String", # Name of this browser.
+          "browserVersionId": "A String", # ID referring to this grouping of browser and version numbers. This is the ID used for targeting.
+          "dartId": "A String", # DART ID of this browser. This is the ID used when generating reports.
+          "minorVersion": "A String", # Minor version number (number after first dot on left) of this browser. For example, for Chrome 5.0.375.86 beta, this field should be set to 0. An asterisk (*) may be used to target any version number, and a question mark (?) may be used to target cases where the version number cannot be identified. For example, Chrome *.* targets any version of Chrome: 1.2, 2.5, 3.5, and so on. Chrome 3.* targets Chrome 3.1, 3.5, but not 4.0. Firefox ?.? targets cases where the ad server knows the browser is Firefox but can't tell which version it is.
+        },
+      ],
+      "operatingSystems": [ # Operating systems that this ad targets. To target specific versions, use operatingSystemVersions. For each operating system only dartId is required. The other fields are populated automatically when the ad is inserted or updated. If targeting an operating system, do not set targeting for operating system versions for the same operating system.
+        { # Contains information about an operating system that can be targeted by ads.
+          "mobile": True or False, # Whether this operating system is for mobile.
+          "dartId": "A String", # DART ID of this operating system. This is the ID used for targeting.
+          "kind": "dfareporting#operatingSystem", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#operatingSystem".
+          "name": "A String", # Name of this operating system.
+          "desktop": True or False, # Whether this operating system is for desktop.
+        },
+      ],
+      "mobileCarriers": [ # Mobile carriers that this ad targets. For each mobile carrier only id is required, and the other fields are populated automatically when the ad is inserted or updated. If targeting a mobile carrier, do not set targeting for any zip codes.
+        { # Contains information about a mobile carrier that can be targeted by ads.
+          "kind": "dfareporting#mobileCarrier", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#mobileCarrier".
+          "countryDartId": "A String", # DART ID of the country to which this mobile carrier belongs.
+          "id": "A String", # ID of this mobile carrier.
+          "countryCode": "A String", # Country code of the country to which this mobile carrier belongs.
+          "name": "A String", # Name of this mobile carrier.
+        },
+      ],
+      "connectionTypes": [ # Connection types that this ad targets. For each connection type only id is required. The other fields are populated automatically when the ad is inserted or updated.
+        { # Contains information about an internet connection type that can be targeted by ads. Clients can use the connection type to target mobile vs. broadband users.
+          "kind": "dfareporting#connectionType", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#connectionType".
+          "id": "A String", # ID of this connection type.
+          "name": "A String", # Name of this connection type.
+        },
+      ],
+    },
+    "listTargetingExpression": { # Remarketing List Targeting Expression. # Remarketing list targeting criteria.
+      "expression": "A String", # Expression describing which lists are being targeted by the ad.
+    },
+    "keyValueTargetingExpression": { # Key Value Targeting Expression. # Key-value targeting criteria.
+      "expression": "A String", # Keyword expression being targeted by the ad.
+    },
+    "languageTargeting": { # Language Targeting. # Language targeting criteria.
+      "languages": [ # Languages that this ad targets. For each language only languageId is required. The other fields are populated automatically when the ad is inserted or updated.
+        { # Contains information about a language that can be targeted by ads.
+          "languageCode": "A String", # Format of language code is an ISO 639 two-letter language code optionally followed by an underscore followed by an ISO 3166 code. Examples are "en" for English or "zh_CN" for Simplified Chinese.
+          "kind": "dfareporting#language", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#language".
+          "id": "A String", # Language ID of this language. This is the ID used for targeting and generating reports.
+          "name": "A String", # Name of this language.
+        },
+      ],
+    },
+    "advertiserId": "A String", # Advertiser ID of this targeting template. This is a required field on insert and is read-only after insert.
+    "geoTargeting": { # Geographical Targeting. # Geographical targeting criteria.
+      "countries": [ # Countries to be targeted or excluded from targeting, depending on the setting of the excludeCountries field. For each country only dartId is required. The other fields are populated automatically when the ad is inserted or updated. If targeting or excluding a country, do not target regions, cities, metros, or postal codes in the same country.
+        { # Contains information about a country that can be targeted by ads.
+          "dartId": "A String", # DART ID of this country. This is the ID used for targeting and generating reports.
+          "sslEnabled": True or False, # Whether ad serving supports secure servers in this country.
+          "kind": "dfareporting#country", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#country".
+          "countryCode": "A String", # Country code.
+          "name": "A String", # Name of this country.
+        },
+      ],
+      "excludeCountries": True or False, # Whether or not to exclude the countries in the countries field from targeting. If false, the countries field refers to countries which will be targeted by the ad.
+      "postalCodes": [ # Postal codes to be targeted. For each postal code only id is required. The other fields are populated automatically when the ad is inserted or updated. If targeting a postal code, do not target or exclude the country of the postal code.
+        { # Contains information about a postal code that can be targeted by ads.
+          "countryDartId": "A String", # DART ID of the country to which this postal code belongs.
+          "kind": "dfareporting#postalCode", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#postalCode".
+          "code": "A String", # Postal code. This is equivalent to the id field.
+          "id": "A String", # ID of this postal code.
+          "countryCode": "A String", # Country code of the country to which this postal code belongs.
+        },
+      ],
+      "regions": [ # Regions to be targeted. For each region only dartId is required. The other fields are populated automatically when the ad is inserted or updated. If targeting a region, do not target or exclude the country of the region.
+        { # Contains information about a region that can be targeted by ads.
+          "kind": "dfareporting#region", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#region".
+          "countryDartId": "A String", # DART ID of the country to which this region belongs.
+          "name": "A String", # Name of this region.
+          "countryCode": "A String", # Country code of the country to which this region belongs.
+          "regionCode": "A String", # Region code.
+          "dartId": "A String", # DART ID of this region.
+        },
+      ],
+      "cities": [ # Cities to be targeted. For each city only dartId is required. The other fields are populated automatically when the ad is inserted or updated. If targeting a city, do not target or exclude the country of the city, and do not target the metro or region of the city.
+        { # Contains information about a city that can be targeted by ads.
+          "kind": "dfareporting#city", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#city".
+          "countryDartId": "A String", # DART ID of the country to which this city belongs.
+          "name": "A String", # Name of this city.
+          "countryCode": "A String", # Country code of the country to which this city belongs.
+          "metroCode": "A String", # Metro region code of the metro region (DMA) to which this city belongs.
+          "regionCode": "A String", # Region code of the region to which this city belongs.
+          "metroDmaId": "A String", # ID of the metro region (DMA) to which this city belongs.
+          "dartId": "A String", # DART ID of this city. This is the ID used for targeting and generating reports.
+          "regionDartId": "A String", # DART ID of the region to which this city belongs.
+        },
+      ],
+      "metros": [ # Metros to be targeted. For each metro only dmaId is required. The other fields are populated automatically when the ad is inserted or updated. If targeting a metro, do not target or exclude the country of the metro.
+        { # Contains information about a metro region that can be targeted by ads.
+          "kind": "dfareporting#metro", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#metro".
+          "countryDartId": "A String", # DART ID of the country to which this metro region belongs.
+          "name": "A String", # Name of this metro region.
+          "countryCode": "A String", # Country code of the country to which this metro region belongs.
+          "metroCode": "A String", # Metro code of this metro region. This is equivalent to dma_id.
+          "dmaId": "A String", # DMA ID of this metro region. This is the ID used for targeting and generating reports, and is equivalent to metro_code.
+          "dartId": "A String", # DART ID of this metro region.
+        },
+      ],
+    },
+    "advertiserIdDimensionValue": { # Represents a DimensionValue resource. # Dimension value for the ID of the advertiser. This is a read-only, auto-generated field.
+      "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+      "value": "A String", # The value of the dimension.
+      "dimensionName": "A String", # The name of the dimension.
+      "etag": "A String", # The eTag of this response for caching purposes.
+      "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+      "id": "A String", # The ID associated with the value if available.
+    },
+    "id": "A String", # ID of this targeting template. This is a read-only, auto-generated field.
+    "accountId": "A String", # Account ID of this targeting template. This field, if left unset, will be auto-generated on insert and is read-only after insert.
+  }
+
+
+Returns:
+  An object of the form:
+
+    { # Contains properties of a targeting template. A targeting template encapsulates targeting information which can be reused across multiple ads.
+      "kind": "dfareporting#targetingTemplate", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#targetingTemplate".
+      "subaccountId": "A String", # Subaccount ID of this targeting template. This field, if left unset, will be auto-generated on insert and is read-only after insert.
+      "name": "A String", # Name of this targeting template. This field is required. It must be less than 256 characters long and unique within an advertiser.
+      "dayPartTargeting": { # Day Part Targeting. # Time and day targeting criteria.
+        "userLocalTime": True or False, # Whether or not to use the user's local time. If false, the America/New York time zone applies.
+        "hoursOfDay": [ # Hours of the day when the ad will serve. Must be an integer between 0 and 23 (inclusive), where 0 is midnight to 1 AM, and 23 is 11 PM to midnight. Can be specified with days of week, in which case the ad would serve during these hours on the specified days. For example, if Monday, Wednesday, Friday are the days of week specified and 9-10am, 3-5pm (hours 9, 15, and 16) is specified, the ad would serve Monday, Wednesdays, and Fridays at 9-10am and 3-5pm.
+          42,
+        ],
+        "daysOfWeek": [ # Days of the week when the ad will serve.
+            #
+            # Acceptable values are:
+            # - "SUNDAY"
+            # - "MONDAY"
+            # - "TUESDAY"
+            # - "WEDNESDAY"
+            # - "THURSDAY"
+            # - "FRIDAY"
+            # - "SATURDAY"
+          "A String",
+        ],
+      },
+      "technologyTargeting": { # Technology Targeting. # Technology platform targeting criteria.
+        "platformTypes": [ # Platform types that this ad targets. For example, desktop, mobile, or tablet. For each platform type, only id is required, and the other fields are populated automatically when the ad is inserted or updated.
+          { # Contains information about a platform type that can be targeted by ads.
+            "kind": "dfareporting#platformType", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#platformType".
+            "id": "A String", # ID of this platform type.
+            "name": "A String", # Name of this platform type.
+          },
+        ],
+        "operatingSystemVersions": [ # Operating system versions that this ad targets. To target all versions, use operatingSystems. For each operating system version, only id is required. The other fields are populated automatically when the ad is inserted or updated. If targeting an operating system version, do not set targeting for the corresponding operating system in operatingSystems.
+          { # Contains information about a particular version of an operating system that can be targeted by ads.
+            "majorVersion": "A String", # Major version (leftmost number) of this operating system version.
+            "kind": "dfareporting#operatingSystemVersion", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#operatingSystemVersion".
+            "name": "A String", # Name of this operating system version.
+            "id": "A String", # ID of this operating system version.
+            "operatingSystem": { # Contains information about an operating system that can be targeted by ads. # Operating system of this operating system version.
+              "mobile": True or False, # Whether this operating system is for mobile.
+              "dartId": "A String", # DART ID of this operating system. This is the ID used for targeting.
+              "kind": "dfareporting#operatingSystem", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#operatingSystem".
+              "name": "A String", # Name of this operating system.
+              "desktop": True or False, # Whether this operating system is for desktop.
+            },
+            "minorVersion": "A String", # Minor version (number after the first dot) of this operating system version.
+          },
+        ],
+        "browsers": [ # Browsers that this ad targets. For each browser either set browserVersionId or dartId along with the version numbers. If both are specified, only browserVersionId will be used. The other fields are populated automatically when the ad is inserted or updated.
+          { # Contains information about a browser that can be targeted by ads.
+            "majorVersion": "A String", # Major version number (leftmost number) of this browser. For example, for Chrome 5.0.376.86 beta, this field should be set to 5. An asterisk (*) may be used to target any version number, and a question mark (?) may be used to target cases where the version number cannot be identified. For example, Chrome *.* targets any version of Chrome: 1.2, 2.5, 3.5, and so on. Chrome 3.* targets Chrome 3.1, 3.5, but not 4.0. Firefox ?.? targets cases where the ad server knows the browser is Firefox but can't tell which version it is.
+            "kind": "dfareporting#browser", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#browser".
+            "name": "A String", # Name of this browser.
+            "browserVersionId": "A String", # ID referring to this grouping of browser and version numbers. This is the ID used for targeting.
+            "dartId": "A String", # DART ID of this browser. This is the ID used when generating reports.
+            "minorVersion": "A String", # Minor version number (number after first dot on left) of this browser. For example, for Chrome 5.0.375.86 beta, this field should be set to 0. An asterisk (*) may be used to target any version number, and a question mark (?) may be used to target cases where the version number cannot be identified. For example, Chrome *.* targets any version of Chrome: 1.2, 2.5, 3.5, and so on. Chrome 3.* targets Chrome 3.1, 3.5, but not 4.0. Firefox ?.? targets cases where the ad server knows the browser is Firefox but can't tell which version it is.
+          },
+        ],
+        "operatingSystems": [ # Operating systems that this ad targets. To target specific versions, use operatingSystemVersions. For each operating system only dartId is required. The other fields are populated automatically when the ad is inserted or updated. If targeting an operating system, do not set targeting for operating system versions for the same operating system.
+          { # Contains information about an operating system that can be targeted by ads.
+            "mobile": True or False, # Whether this operating system is for mobile.
+            "dartId": "A String", # DART ID of this operating system. This is the ID used for targeting.
+            "kind": "dfareporting#operatingSystem", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#operatingSystem".
+            "name": "A String", # Name of this operating system.
+            "desktop": True or False, # Whether this operating system is for desktop.
+          },
+        ],
+        "mobileCarriers": [ # Mobile carriers that this ad targets. For each mobile carrier only id is required, and the other fields are populated automatically when the ad is inserted or updated. If targeting a mobile carrier, do not set targeting for any zip codes.
+          { # Contains information about a mobile carrier that can be targeted by ads.
+            "kind": "dfareporting#mobileCarrier", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#mobileCarrier".
+            "countryDartId": "A String", # DART ID of the country to which this mobile carrier belongs.
+            "id": "A String", # ID of this mobile carrier.
+            "countryCode": "A String", # Country code of the country to which this mobile carrier belongs.
+            "name": "A String", # Name of this mobile carrier.
+          },
+        ],
+        "connectionTypes": [ # Connection types that this ad targets. For each connection type only id is required. The other fields are populated automatically when the ad is inserted or updated.
+          { # Contains information about an internet connection type that can be targeted by ads. Clients can use the connection type to target mobile vs. broadband users.
+            "kind": "dfareporting#connectionType", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#connectionType".
+            "id": "A String", # ID of this connection type.
+            "name": "A String", # Name of this connection type.
+          },
+        ],
+      },
+      "listTargetingExpression": { # Remarketing List Targeting Expression. # Remarketing list targeting criteria.
+        "expression": "A String", # Expression describing which lists are being targeted by the ad.
+      },
+      "keyValueTargetingExpression": { # Key Value Targeting Expression. # Key-value targeting criteria.
+        "expression": "A String", # Keyword expression being targeted by the ad.
+      },
+      "languageTargeting": { # Language Targeting. # Language targeting criteria.
+        "languages": [ # Languages that this ad targets. For each language only languageId is required. The other fields are populated automatically when the ad is inserted or updated.
+          { # Contains information about a language that can be targeted by ads.
+            "languageCode": "A String", # Format of language code is an ISO 639 two-letter language code optionally followed by an underscore followed by an ISO 3166 code. Examples are "en" for English or "zh_CN" for Simplified Chinese.
+            "kind": "dfareporting#language", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#language".
+            "id": "A String", # Language ID of this language. This is the ID used for targeting and generating reports.
+            "name": "A String", # Name of this language.
+          },
+        ],
+      },
+      "advertiserId": "A String", # Advertiser ID of this targeting template. This is a required field on insert and is read-only after insert.
+      "geoTargeting": { # Geographical Targeting. # Geographical targeting criteria.
+        "countries": [ # Countries to be targeted or excluded from targeting, depending on the setting of the excludeCountries field. For each country only dartId is required. The other fields are populated automatically when the ad is inserted or updated. If targeting or excluding a country, do not target regions, cities, metros, or postal codes in the same country.
+          { # Contains information about a country that can be targeted by ads.
+            "dartId": "A String", # DART ID of this country. This is the ID used for targeting and generating reports.
+            "sslEnabled": True or False, # Whether ad serving supports secure servers in this country.
+            "kind": "dfareporting#country", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#country".
+            "countryCode": "A String", # Country code.
+            "name": "A String", # Name of this country.
+          },
+        ],
+        "excludeCountries": True or False, # Whether or not to exclude the countries in the countries field from targeting. If false, the countries field refers to countries which will be targeted by the ad.
+        "postalCodes": [ # Postal codes to be targeted. For each postal code only id is required. The other fields are populated automatically when the ad is inserted or updated. If targeting a postal code, do not target or exclude the country of the postal code.
+          { # Contains information about a postal code that can be targeted by ads.
+            "countryDartId": "A String", # DART ID of the country to which this postal code belongs.
+            "kind": "dfareporting#postalCode", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#postalCode".
+            "code": "A String", # Postal code. This is equivalent to the id field.
+            "id": "A String", # ID of this postal code.
+            "countryCode": "A String", # Country code of the country to which this postal code belongs.
+          },
+        ],
+        "regions": [ # Regions to be targeted. For each region only dartId is required. The other fields are populated automatically when the ad is inserted or updated. If targeting a region, do not target or exclude the country of the region.
+          { # Contains information about a region that can be targeted by ads.
+            "kind": "dfareporting#region", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#region".
+            "countryDartId": "A String", # DART ID of the country to which this region belongs.
+            "name": "A String", # Name of this region.
+            "countryCode": "A String", # Country code of the country to which this region belongs.
+            "regionCode": "A String", # Region code.
+            "dartId": "A String", # DART ID of this region.
+          },
+        ],
+        "cities": [ # Cities to be targeted. For each city only dartId is required. The other fields are populated automatically when the ad is inserted or updated. If targeting a city, do not target or exclude the country of the city, and do not target the metro or region of the city.
+          { # Contains information about a city that can be targeted by ads.
+            "kind": "dfareporting#city", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#city".
+            "countryDartId": "A String", # DART ID of the country to which this city belongs.
+            "name": "A String", # Name of this city.
+            "countryCode": "A String", # Country code of the country to which this city belongs.
+            "metroCode": "A String", # Metro region code of the metro region (DMA) to which this city belongs.
+            "regionCode": "A String", # Region code of the region to which this city belongs.
+            "metroDmaId": "A String", # ID of the metro region (DMA) to which this city belongs.
+            "dartId": "A String", # DART ID of this city. This is the ID used for targeting and generating reports.
+            "regionDartId": "A String", # DART ID of the region to which this city belongs.
+          },
+        ],
+        "metros": [ # Metros to be targeted. For each metro only dmaId is required. The other fields are populated automatically when the ad is inserted or updated. If targeting a metro, do not target or exclude the country of the metro.
+          { # Contains information about a metro region that can be targeted by ads.
+            "kind": "dfareporting#metro", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#metro".
+            "countryDartId": "A String", # DART ID of the country to which this metro region belongs.
+            "name": "A String", # Name of this metro region.
+            "countryCode": "A String", # Country code of the country to which this metro region belongs.
+            "metroCode": "A String", # Metro code of this metro region. This is equivalent to dma_id.
+            "dmaId": "A String", # DMA ID of this metro region. This is the ID used for targeting and generating reports, and is equivalent to metro_code.
+            "dartId": "A String", # DART ID of this metro region.
+          },
+        ],
+      },
+      "advertiserIdDimensionValue": { # Represents a DimensionValue resource. # Dimension value for the ID of the advertiser. This is a read-only, auto-generated field.
+        "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+        "value": "A String", # The value of the dimension.
+        "dimensionName": "A String", # The name of the dimension.
+        "etag": "A String", # The eTag of this response for caching purposes.
+        "matchType": "A String", # Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+        "id": "A String", # The ID associated with the value if available.
+      },
+      "id": "A String", # ID of this targeting template. This is a read-only, auto-generated field.
+      "accountId": "A String", # Account ID of this targeting template. This field, if left unset, will be auto-generated on insert and is read-only after insert.
+    }</pre>
+</div>
+
+</body></html>
\ No newline at end of file
diff --git a/docs/dyn/dfareporting_v2_7.userProfiles.html b/docs/dyn/dfareporting_v2_7.userProfiles.html
new file mode 100644
index 0000000..6c59340
--- /dev/null
+++ b/docs/dyn/dfareporting_v2_7.userProfiles.html
@@ -0,0 +1,133 @@
+<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="dfareporting_v2_7.html">DCM/DFA Reporting And Trafficking API</a> . <a href="dfareporting_v2_7.userProfiles.html">userProfiles</a></h1>
+<h2>Instance Methods</h2>
+<p class="toc_element">
+  <code><a href="#get">get(profileId)</a></code></p>
+<p class="firstline">Gets one user profile by ID.</p>
+<p class="toc_element">
+  <code><a href="#list">list()</a></code></p>
+<p class="firstline">Retrieves list of user profiles for a user.</p>
+<h3>Method Details</h3>
+<div class="method">
+    <code class="details" id="get">get(profileId)</code>
+  <pre>Gets one user profile by ID.
+
+Args:
+  profileId: string, The user profile ID. (required)
+
+Returns:
+  An object of the form:
+
+    { # Represents a UserProfile resource.
+    "userName": "A String", # The user name.
+    "kind": "dfareporting#userProfile", # The kind of resource this is, in this case dfareporting#userProfile.
+    "subAccountId": "A String", # The sub account ID this profile belongs to if applicable.
+    "accountName": "A String", # The account name this profile belongs to.
+    "etag": "A String", # The eTag of this response for caching purposes.
+    "subAccountName": "A String", # The sub account name this profile belongs to if applicable.
+    "profileId": "A String", # The unique ID of the user profile.
+    "accountId": "A String", # The account ID to which this profile belongs.
+  }</pre>
+</div>
+
+<div class="method">
+    <code class="details" id="list">list()</code>
+  <pre>Retrieves list of user profiles for a user.
+
+Args:
+
+Returns:
+  An object of the form:
+
+    { # Represents the list of user profiles.
+    "items": [ # The user profiles returned in this response.
+      { # Represents a UserProfile resource.
+        "userName": "A String", # The user name.
+        "kind": "dfareporting#userProfile", # The kind of resource this is, in this case dfareporting#userProfile.
+        "subAccountId": "A String", # The sub account ID this profile belongs to if applicable.
+        "accountName": "A String", # The account name this profile belongs to.
+        "etag": "A String", # The eTag of this response for caching purposes.
+        "subAccountName": "A String", # The sub account name this profile belongs to if applicable.
+        "profileId": "A String", # The unique ID of the user profile.
+        "accountId": "A String", # The account ID to which this profile belongs.
+      },
+    ],
+    "kind": "dfareporting#userProfileList", # The kind of list this is, in this case dfareporting#userProfileList.
+    "etag": "A String", # The eTag of this response for caching purposes.
+  }</pre>
+</div>
+
+</body></html>
\ No newline at end of file
diff --git a/docs/dyn/dfareporting_v2_7.userRolePermissionGroups.html b/docs/dyn/dfareporting_v2_7.userRolePermissionGroups.html
new file mode 100644
index 0000000..729f643
--- /dev/null
+++ b/docs/dyn/dfareporting_v2_7.userRolePermissionGroups.html
@@ -0,0 +1,124 @@
+<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="dfareporting_v2_7.html">DCM/DFA Reporting And Trafficking API</a> . <a href="dfareporting_v2_7.userRolePermissionGroups.html">userRolePermissionGroups</a></h1>
+<h2>Instance Methods</h2>
+<p class="toc_element">
+  <code><a href="#get">get(profileId, id)</a></code></p>
+<p class="firstline">Gets one user role permission group by ID.</p>
+<p class="toc_element">
+  <code><a href="#list">list(profileId)</a></code></p>
+<p class="firstline">Gets a list of all supported user role permission groups.</p>
+<h3>Method Details</h3>
+<div class="method">
+    <code class="details" id="get">get(profileId, id)</code>
+  <pre>Gets one user role permission group by ID.
+
+Args:
+  profileId: string, User profile ID associated with this request. (required)
+  id: string, User role permission group ID. (required)
+
+Returns:
+  An object of the form:
+
+    { # Represents a grouping of related user role permissions.
+    "kind": "dfareporting#userRolePermissionGroup", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#userRolePermissionGroup".
+    "id": "A String", # ID of this user role permission.
+    "name": "A String", # Name of this user role permission group.
+  }</pre>
+</div>
+
+<div class="method">
+    <code class="details" id="list">list(profileId)</code>
+  <pre>Gets a list of all supported user role permission groups.
+
+Args:
+  profileId: string, User profile ID associated with this request. (required)
+
+Returns:
+  An object of the form:
+
+    { # User Role Permission Group List Response
+    "userRolePermissionGroups": [ # User role permission group collection.
+      { # Represents a grouping of related user role permissions.
+        "kind": "dfareporting#userRolePermissionGroup", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#userRolePermissionGroup".
+        "id": "A String", # ID of this user role permission.
+        "name": "A String", # Name of this user role permission group.
+      },
+    ],
+    "kind": "dfareporting#userRolePermissionGroupsListResponse", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#userRolePermissionGroupsListResponse".
+  }</pre>
+</div>
+
+</body></html>
\ No newline at end of file
diff --git a/docs/dyn/dfareporting_v2_7.userRolePermissions.html b/docs/dyn/dfareporting_v2_7.userRolePermissions.html
new file mode 100644
index 0000000..6edb7d1
--- /dev/null
+++ b/docs/dyn/dfareporting_v2_7.userRolePermissions.html
@@ -0,0 +1,129 @@
+<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="dfareporting_v2_7.html">DCM/DFA Reporting And Trafficking API</a> . <a href="dfareporting_v2_7.userRolePermissions.html">userRolePermissions</a></h1>
+<h2>Instance Methods</h2>
+<p class="toc_element">
+  <code><a href="#get">get(profileId, id)</a></code></p>
+<p class="firstline">Gets one user role permission by ID.</p>
+<p class="toc_element">
+  <code><a href="#list">list(profileId, ids=None)</a></code></p>
+<p class="firstline">Gets a list of user role permissions, possibly filtered.</p>
+<h3>Method Details</h3>
+<div class="method">
+    <code class="details" id="get">get(profileId, id)</code>
+  <pre>Gets one user role permission by ID.
+
+Args:
+  profileId: string, User profile ID associated with this request. (required)
+  id: string, User role permission ID. (required)
+
+Returns:
+  An object of the form:
+
+    { # Contains properties of a user role permission.
+    "permissionGroupId": "A String", # ID of the permission group that this user role permission belongs to.
+    "kind": "dfareporting#userRolePermission", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#userRolePermission".
+    "availability": "A String", # Levels of availability for a user role permission.
+    "name": "A String", # Name of this user role permission.
+    "id": "A String", # ID of this user role permission.
+  }</pre>
+</div>
+
+<div class="method">
+    <code class="details" id="list">list(profileId, ids=None)</code>
+  <pre>Gets a list of user role permissions, possibly filtered.
+
+Args:
+  profileId: string, User profile ID associated with this request. (required)
+  ids: string, Select only user role permissions with these IDs. (repeated)
+
+Returns:
+  An object of the form:
+
+    { # User Role Permission List Response
+    "userRolePermissions": [ # User role permission collection.
+      { # Contains properties of a user role permission.
+        "permissionGroupId": "A String", # ID of the permission group that this user role permission belongs to.
+        "kind": "dfareporting#userRolePermission", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#userRolePermission".
+        "availability": "A String", # Levels of availability for a user role permission.
+        "name": "A String", # Name of this user role permission.
+        "id": "A String", # ID of this user role permission.
+      },
+    ],
+    "kind": "dfareporting#userRolePermissionsListResponse", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#userRolePermissionsListResponse".
+  }</pre>
+</div>
+
+</body></html>
\ No newline at end of file
diff --git a/docs/dyn/dfareporting_v2_7.userRoles.html b/docs/dyn/dfareporting_v2_7.userRoles.html
new file mode 100644
index 0000000..9404d81
--- /dev/null
+++ b/docs/dyn/dfareporting_v2_7.userRoles.html
@@ -0,0 +1,361 @@
+<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="dfareporting_v2_7.html">DCM/DFA Reporting And Trafficking API</a> . <a href="dfareporting_v2_7.userRoles.html">userRoles</a></h1>
+<h2>Instance Methods</h2>
+<p class="toc_element">
+  <code><a href="#delete">delete(profileId, id)</a></code></p>
+<p class="firstline">Deletes an existing user role.</p>
+<p class="toc_element">
+  <code><a href="#get">get(profileId, id)</a></code></p>
+<p class="firstline">Gets one user role by ID.</p>
+<p class="toc_element">
+  <code><a href="#insert">insert(profileId, body)</a></code></p>
+<p class="firstline">Inserts a new user role.</p>
+<p class="toc_element">
+  <code><a href="#list">list(profileId, searchString=None, subaccountId=None, pageToken=None, ids=None, maxResults=None, accountUserRoleOnly=None, sortOrder=None, sortField=None)</a></code></p>
+<p class="firstline">Retrieves a list of user roles, possibly filtered. This method supports paging.</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="#patch">patch(profileId, id, body)</a></code></p>
+<p class="firstline">Updates an existing user role. This method supports patch semantics.</p>
+<p class="toc_element">
+  <code><a href="#update">update(profileId, body)</a></code></p>
+<p class="firstline">Updates an existing user role.</p>
+<h3>Method Details</h3>
+<div class="method">
+    <code class="details" id="delete">delete(profileId, id)</code>
+  <pre>Deletes an existing user role.
+
+Args:
+  profileId: string, User profile ID associated with this request. (required)
+  id: string, User role ID. (required)
+</pre>
+</div>
+
+<div class="method">
+    <code class="details" id="get">get(profileId, id)</code>
+  <pre>Gets one user role by ID.
+
+Args:
+  profileId: string, User profile ID associated with this request. (required)
+  id: string, User role ID. (required)
+
+Returns:
+  An object of the form:
+
+    { # Contains properties of auser role, which is used to manage user access.
+      "defaultUserRole": True or False, # Whether this is a default user role. Default user roles are created by the system for the account/subaccount and cannot be modified or deleted. Each default user role comes with a basic set of preassigned permissions.
+      "kind": "dfareporting#userRole", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#userRole".
+      "subaccountId": "A String", # Subaccount ID of this user role. This is a read-only field that can be left blank.
+      "name": "A String", # Name of this user role. This is a required field. Must be less than 256 characters long. If this user role is under a subaccount, the name must be unique among sites of the same subaccount. Otherwise, this user role is a top-level user role, and the name must be unique among top-level user roles of the same account.
+      "parentUserRoleId": "A String", # ID of the user role that this user role is based on or copied from. This is a required field.
+      "permissions": [ # List of permissions associated with this user role.
+        { # Contains properties of a user role permission.
+          "permissionGroupId": "A String", # ID of the permission group that this user role permission belongs to.
+          "kind": "dfareporting#userRolePermission", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#userRolePermission".
+          "availability": "A String", # Levels of availability for a user role permission.
+          "name": "A String", # Name of this user role permission.
+          "id": "A String", # ID of this user role permission.
+        },
+      ],
+      "id": "A String", # ID of this user role. This is a read-only, auto-generated field.
+      "accountId": "A String", # Account ID of this user role. This is a read-only field that can be left blank.
+    }</pre>
+</div>
+
+<div class="method">
+    <code class="details" id="insert">insert(profileId, body)</code>
+  <pre>Inserts a new user role.
+
+Args:
+  profileId: string, User profile ID associated with this request. (required)
+  body: object, The request body. (required)
+    The object takes the form of:
+
+{ # Contains properties of auser role, which is used to manage user access.
+    "defaultUserRole": True or False, # Whether this is a default user role. Default user roles are created by the system for the account/subaccount and cannot be modified or deleted. Each default user role comes with a basic set of preassigned permissions.
+    "kind": "dfareporting#userRole", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#userRole".
+    "subaccountId": "A String", # Subaccount ID of this user role. This is a read-only field that can be left blank.
+    "name": "A String", # Name of this user role. This is a required field. Must be less than 256 characters long. If this user role is under a subaccount, the name must be unique among sites of the same subaccount. Otherwise, this user role is a top-level user role, and the name must be unique among top-level user roles of the same account.
+    "parentUserRoleId": "A String", # ID of the user role that this user role is based on or copied from. This is a required field.
+    "permissions": [ # List of permissions associated with this user role.
+      { # Contains properties of a user role permission.
+        "permissionGroupId": "A String", # ID of the permission group that this user role permission belongs to.
+        "kind": "dfareporting#userRolePermission", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#userRolePermission".
+        "availability": "A String", # Levels of availability for a user role permission.
+        "name": "A String", # Name of this user role permission.
+        "id": "A String", # ID of this user role permission.
+      },
+    ],
+    "id": "A String", # ID of this user role. This is a read-only, auto-generated field.
+    "accountId": "A String", # Account ID of this user role. This is a read-only field that can be left blank.
+  }
+
+
+Returns:
+  An object of the form:
+
+    { # Contains properties of auser role, which is used to manage user access.
+      "defaultUserRole": True or False, # Whether this is a default user role. Default user roles are created by the system for the account/subaccount and cannot be modified or deleted. Each default user role comes with a basic set of preassigned permissions.
+      "kind": "dfareporting#userRole", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#userRole".
+      "subaccountId": "A String", # Subaccount ID of this user role. This is a read-only field that can be left blank.
+      "name": "A String", # Name of this user role. This is a required field. Must be less than 256 characters long. If this user role is under a subaccount, the name must be unique among sites of the same subaccount. Otherwise, this user role is a top-level user role, and the name must be unique among top-level user roles of the same account.
+      "parentUserRoleId": "A String", # ID of the user role that this user role is based on or copied from. This is a required field.
+      "permissions": [ # List of permissions associated with this user role.
+        { # Contains properties of a user role permission.
+          "permissionGroupId": "A String", # ID of the permission group that this user role permission belongs to.
+          "kind": "dfareporting#userRolePermission", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#userRolePermission".
+          "availability": "A String", # Levels of availability for a user role permission.
+          "name": "A String", # Name of this user role permission.
+          "id": "A String", # ID of this user role permission.
+        },
+      ],
+      "id": "A String", # ID of this user role. This is a read-only, auto-generated field.
+      "accountId": "A String", # Account ID of this user role. This is a read-only field that can be left blank.
+    }</pre>
+</div>
+
+<div class="method">
+    <code class="details" id="list">list(profileId, searchString=None, subaccountId=None, pageToken=None, ids=None, maxResults=None, accountUserRoleOnly=None, sortOrder=None, sortField=None)</code>
+  <pre>Retrieves a list of user roles, possibly filtered. This method supports paging.
+
+Args:
+  profileId: string, User profile ID associated with this request. (required)
+  searchString: string, Allows searching for objects by name or ID. Wildcards (*) are allowed. For example, "userrole*2015" will return objects with names like "userrole June 2015", "userrole April 2015", or simply "userrole 2015". Most of the searches also add wildcards implicitly at the start and the end of the search string. For example, a search string of "userrole" will match objects with name "my userrole", "userrole 2015", or simply "userrole".
+  subaccountId: string, Select only user roles that belong to this subaccount.
+  pageToken: string, Value of the nextPageToken from the previous result page.
+  ids: string, Select only user roles with the specified IDs. (repeated)
+  maxResults: integer, Maximum number of results to return.
+  accountUserRoleOnly: boolean, Select only account level user roles not associated with any specific subaccount.
+  sortOrder: string, Order of sorted results, default is ASCENDING.
+    Allowed values
+      ASCENDING - 
+      DESCENDING - 
+  sortField: string, Field by which to sort the list.
+    Allowed values
+      ID - 
+      NAME - 
+
+Returns:
+  An object of the form:
+
+    { # User Role List Response
+    "nextPageToken": "A String", # Pagination token to be used for the next list operation.
+    "kind": "dfareporting#userRolesListResponse", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#userRolesListResponse".
+    "userRoles": [ # User role collection.
+      { # Contains properties of auser role, which is used to manage user access.
+          "defaultUserRole": True or False, # Whether this is a default user role. Default user roles are created by the system for the account/subaccount and cannot be modified or deleted. Each default user role comes with a basic set of preassigned permissions.
+          "kind": "dfareporting#userRole", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#userRole".
+          "subaccountId": "A String", # Subaccount ID of this user role. This is a read-only field that can be left blank.
+          "name": "A String", # Name of this user role. This is a required field. Must be less than 256 characters long. If this user role is under a subaccount, the name must be unique among sites of the same subaccount. Otherwise, this user role is a top-level user role, and the name must be unique among top-level user roles of the same account.
+          "parentUserRoleId": "A String", # ID of the user role that this user role is based on or copied from. This is a required field.
+          "permissions": [ # List of permissions associated with this user role.
+            { # Contains properties of a user role permission.
+              "permissionGroupId": "A String", # ID of the permission group that this user role permission belongs to.
+              "kind": "dfareporting#userRolePermission", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#userRolePermission".
+              "availability": "A String", # Levels of availability for a user role permission.
+              "name": "A String", # Name of this user role permission.
+              "id": "A String", # ID of this user role permission.
+            },
+          ],
+          "id": "A String", # ID of this user role. This is a read-only, auto-generated field.
+          "accountId": "A String", # Account ID of this user role. This is a read-only field that can be left blank.
+        },
+    ],
+  }</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="patch">patch(profileId, id, body)</code>
+  <pre>Updates an existing user role. This method supports patch semantics.
+
+Args:
+  profileId: string, User profile ID associated with this request. (required)
+  id: string, User role ID. (required)
+  body: object, The request body. (required)
+    The object takes the form of:
+
+{ # Contains properties of auser role, which is used to manage user access.
+    "defaultUserRole": True or False, # Whether this is a default user role. Default user roles are created by the system for the account/subaccount and cannot be modified or deleted. Each default user role comes with a basic set of preassigned permissions.
+    "kind": "dfareporting#userRole", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#userRole".
+    "subaccountId": "A String", # Subaccount ID of this user role. This is a read-only field that can be left blank.
+    "name": "A String", # Name of this user role. This is a required field. Must be less than 256 characters long. If this user role is under a subaccount, the name must be unique among sites of the same subaccount. Otherwise, this user role is a top-level user role, and the name must be unique among top-level user roles of the same account.
+    "parentUserRoleId": "A String", # ID of the user role that this user role is based on or copied from. This is a required field.
+    "permissions": [ # List of permissions associated with this user role.
+      { # Contains properties of a user role permission.
+        "permissionGroupId": "A String", # ID of the permission group that this user role permission belongs to.
+        "kind": "dfareporting#userRolePermission", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#userRolePermission".
+        "availability": "A String", # Levels of availability for a user role permission.
+        "name": "A String", # Name of this user role permission.
+        "id": "A String", # ID of this user role permission.
+      },
+    ],
+    "id": "A String", # ID of this user role. This is a read-only, auto-generated field.
+    "accountId": "A String", # Account ID of this user role. This is a read-only field that can be left blank.
+  }
+
+
+Returns:
+  An object of the form:
+
+    { # Contains properties of auser role, which is used to manage user access.
+      "defaultUserRole": True or False, # Whether this is a default user role. Default user roles are created by the system for the account/subaccount and cannot be modified or deleted. Each default user role comes with a basic set of preassigned permissions.
+      "kind": "dfareporting#userRole", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#userRole".
+      "subaccountId": "A String", # Subaccount ID of this user role. This is a read-only field that can be left blank.
+      "name": "A String", # Name of this user role. This is a required field. Must be less than 256 characters long. If this user role is under a subaccount, the name must be unique among sites of the same subaccount. Otherwise, this user role is a top-level user role, and the name must be unique among top-level user roles of the same account.
+      "parentUserRoleId": "A String", # ID of the user role that this user role is based on or copied from. This is a required field.
+      "permissions": [ # List of permissions associated with this user role.
+        { # Contains properties of a user role permission.
+          "permissionGroupId": "A String", # ID of the permission group that this user role permission belongs to.
+          "kind": "dfareporting#userRolePermission", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#userRolePermission".
+          "availability": "A String", # Levels of availability for a user role permission.
+          "name": "A String", # Name of this user role permission.
+          "id": "A String", # ID of this user role permission.
+        },
+      ],
+      "id": "A String", # ID of this user role. This is a read-only, auto-generated field.
+      "accountId": "A String", # Account ID of this user role. This is a read-only field that can be left blank.
+    }</pre>
+</div>
+
+<div class="method">
+    <code class="details" id="update">update(profileId, body)</code>
+  <pre>Updates an existing user role.
+
+Args:
+  profileId: string, User profile ID associated with this request. (required)
+  body: object, The request body. (required)
+    The object takes the form of:
+
+{ # Contains properties of auser role, which is used to manage user access.
+    "defaultUserRole": True or False, # Whether this is a default user role. Default user roles are created by the system for the account/subaccount and cannot be modified or deleted. Each default user role comes with a basic set of preassigned permissions.
+    "kind": "dfareporting#userRole", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#userRole".
+    "subaccountId": "A String", # Subaccount ID of this user role. This is a read-only field that can be left blank.
+    "name": "A String", # Name of this user role. This is a required field. Must be less than 256 characters long. If this user role is under a subaccount, the name must be unique among sites of the same subaccount. Otherwise, this user role is a top-level user role, and the name must be unique among top-level user roles of the same account.
+    "parentUserRoleId": "A String", # ID of the user role that this user role is based on or copied from. This is a required field.
+    "permissions": [ # List of permissions associated with this user role.
+      { # Contains properties of a user role permission.
+        "permissionGroupId": "A String", # ID of the permission group that this user role permission belongs to.
+        "kind": "dfareporting#userRolePermission", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#userRolePermission".
+        "availability": "A String", # Levels of availability for a user role permission.
+        "name": "A String", # Name of this user role permission.
+        "id": "A String", # ID of this user role permission.
+      },
+    ],
+    "id": "A String", # ID of this user role. This is a read-only, auto-generated field.
+    "accountId": "A String", # Account ID of this user role. This is a read-only field that can be left blank.
+  }
+
+
+Returns:
+  An object of the form:
+
+    { # Contains properties of auser role, which is used to manage user access.
+      "defaultUserRole": True or False, # Whether this is a default user role. Default user roles are created by the system for the account/subaccount and cannot be modified or deleted. Each default user role comes with a basic set of preassigned permissions.
+      "kind": "dfareporting#userRole", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#userRole".
+      "subaccountId": "A String", # Subaccount ID of this user role. This is a read-only field that can be left blank.
+      "name": "A String", # Name of this user role. This is a required field. Must be less than 256 characters long. If this user role is under a subaccount, the name must be unique among sites of the same subaccount. Otherwise, this user role is a top-level user role, and the name must be unique among top-level user roles of the same account.
+      "parentUserRoleId": "A String", # ID of the user role that this user role is based on or copied from. This is a required field.
+      "permissions": [ # List of permissions associated with this user role.
+        { # Contains properties of a user role permission.
+          "permissionGroupId": "A String", # ID of the permission group that this user role permission belongs to.
+          "kind": "dfareporting#userRolePermission", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#userRolePermission".
+          "availability": "A String", # Levels of availability for a user role permission.
+          "name": "A String", # Name of this user role permission.
+          "id": "A String", # ID of this user role permission.
+        },
+      ],
+      "id": "A String", # ID of this user role. This is a read-only, auto-generated field.
+      "accountId": "A String", # Account ID of this user role. This is a read-only field that can be left blank.
+    }</pre>
+</div>
+
+</body></html>
\ No newline at end of file
diff --git a/docs/dyn/dfareporting_v2_7.videoFormats.html b/docs/dyn/dfareporting_v2_7.videoFormats.html
new file mode 100644
index 0000000..8daccca
--- /dev/null
+++ b/docs/dyn/dfareporting_v2_7.videoFormats.html
@@ -0,0 +1,140 @@
+<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="dfareporting_v2_7.html">DCM/DFA Reporting And Trafficking API</a> . <a href="dfareporting_v2_7.videoFormats.html">videoFormats</a></h1>
+<h2>Instance Methods</h2>
+<p class="toc_element">
+  <code><a href="#get">get(profileId, id)</a></code></p>
+<p class="firstline">Gets one video format by ID.</p>
+<p class="toc_element">
+  <code><a href="#list">list(profileId)</a></code></p>
+<p class="firstline">Lists available video formats.</p>
+<h3>Method Details</h3>
+<div class="method">
+    <code class="details" id="get">get(profileId, id)</code>
+  <pre>Gets one video format by ID.
+
+Args:
+  profileId: string, User profile ID associated with this request. (required)
+  id: integer, Video format ID. (required)
+
+Returns:
+  An object of the form:
+
+    { # Contains information about supported video formats.
+    "fileType": "A String", # File type of the video format.
+    "resolution": { # Represents the dimensions of ads, placements, creatives, or creative assets. # The resolution of this video format.
+      "width": 42, # Width of this size.
+      "kind": "dfareporting#size", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#size".
+      "iab": True or False, # IAB standard size. This is a read-only, auto-generated field.
+      "id": "A String", # ID of this size. This is a read-only, auto-generated field.
+      "height": 42, # Height of this size.
+    },
+    "id": 42, # ID of the video format.
+    "kind": "dfareporting#videoFormat", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#videoFormat".
+    "targetBitRate": 42, # The target bit rate of this video format.
+  }</pre>
+</div>
+
+<div class="method">
+    <code class="details" id="list">list(profileId)</code>
+  <pre>Lists available video formats.
+
+Args:
+  profileId: string, User profile ID associated with this request. (required)
+
+Returns:
+  An object of the form:
+
+    { # Video Format List Response
+    "kind": "dfareporting#videoFormatsListResponse", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#videoFormatsListResponse".
+    "videoFormats": [ # Video format collection.
+      { # Contains information about supported video formats.
+        "fileType": "A String", # File type of the video format.
+        "resolution": { # Represents the dimensions of ads, placements, creatives, or creative assets. # The resolution of this video format.
+          "width": 42, # Width of this size.
+          "kind": "dfareporting#size", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#size".
+          "iab": True or False, # IAB standard size. This is a read-only, auto-generated field.
+          "id": "A String", # ID of this size. This is a read-only, auto-generated field.
+          "height": 42, # Height of this size.
+        },
+        "id": 42, # ID of the video format.
+        "kind": "dfareporting#videoFormat", # Identifies what kind of resource this is. Value: the fixed string "dfareporting#videoFormat".
+        "targetBitRate": 42, # The target bit rate of this video format.
+      },
+    ],
+  }</pre>
+</div>
+
+</body></html>
\ No newline at end of file
diff --git a/docs/dyn/dns_v2beta1.dnskeys.html b/docs/dyn/dns_v2beta1.dnskeys.html
index 95d6a9b..9895347 100644
--- a/docs/dyn/dns_v2beta1.dnskeys.html
+++ b/docs/dyn/dns_v2beta1.dnskeys.html
@@ -72,7 +72,7 @@
 
 </style>
 
-<h1><a href="dns_v2beta1.html">Google Cloud DNS API</a> . <a href="dns_v2beta1.dnskeys.html">dnskeys</a></h1>
+<h1><a href="dns_v2beta1.html">Google Cloud DNS API</a> . <a href="dns_v2beta1.dnsKeys.html">dnsKeys</a></h1>
 <h2>Instance Methods</h2>
 <p class="toc_element">
   <code><a href="#get">get(project, managedZone, dnsKeyId, digestType=None, clientOperationId=None)</a></code></p>
diff --git a/docs/dyn/dns_v2beta1.html b/docs/dyn/dns_v2beta1.html
index 6445953..1c1f582 100644
--- a/docs/dyn/dns_v2beta1.html
+++ b/docs/dyn/dns_v2beta1.html
@@ -80,9 +80,9 @@
 <p class="firstline">Returns the changes Resource.</p>
 
 <p class="toc_element">
-  <code><a href="dns_v2beta1.dnskeys.html">dnskeys()</a></code>
+  <code><a href="dns_v2beta1.dnsKeys.html">dnsKeys()</a></code>
 </p>
-<p class="firstline">Returns the dnskeys Resource.</p>
+<p class="firstline">Returns the dnsKeys Resource.</p>
 
 <p class="toc_element">
   <code><a href="dns_v2beta1.managedZoneOperations.html">managedZoneOperations()</a></code>
diff --git a/docs/dyn/drive_v2.changes.html b/docs/dyn/drive_v2.changes.html
index a3eb2eb..e0a37c5 100644
--- a/docs/dyn/drive_v2.changes.html
+++ b/docs/dyn/drive_v2.changes.html
@@ -101,21 +101,23 @@
     "kind": "drive#change", # This is always drive#change.
     "deleted": True or False, # Whether the file has been deleted.
     "file": { # The metadata for a file. # The updated state of the file. Present if the file has not been deleted.
-      "mimeType": "A String", # The MIME type of the file. This is only mutable on update when uploading new content. This field can be left blank, and the mimetype will be determined from the uploaded content's MIME type.
+      "hasThumbnail": True or False, # Whether this file has a thumbnail.
       "lastViewedByMeDate": "A String", # Last time this file was viewed by the user (formatted RFC 3339 timestamp).
       "version": "A String", # A monotonically increasing version number for the file. This reflects every change made to the file on the server, even those not visible to the requesting user.
       "appDataContents": True or False, # Whether this file is in the Application Data folder.
-      "thumbnailLink": "A String", # A short-lived link to the file's thumbnail. Typically lasts on the order of hours.
+      "thumbnailLink": "A String", # A short-lived link to the file's thumbnail. Typically lasts on the order of hours. Only populated when the requesting app can access the file's content.
       "labels": { # A group of labels for the file.
         "restricted": True or False, # Whether viewers and commenters are prevented from downloading, printing, and copying this file.
-        "hidden": True or False, # Deprecated.
-        "viewed": True or False, # Whether this file has been viewed by this user.
-        "starred": True or False, # Whether this file is starred by the user.
+        "modified": True or False, # Whether the file has been modified by this user.
         "trashed": True or False, # Whether this file has been trashed. This label applies to all users accessing the file; however, only owners are allowed to see and untrash files.
+        "hidden": True or False, # Deprecated.
+        "starred": True or False, # Whether this file is starred by the user.
+        "viewed": True or False, # Whether this file has been viewed by this user.
       },
       "indexableText": { # Indexable text attributes for the file (can only be written)
         "text": "A String", # The text to be indexed for this file.
       },
+      "thumbnailVersion": "A String", # The thumbnail version for use in client-contructable thumbnail URLs or thumbnail cache invalidation.
       "explicitlyTrashed": True or False, # Whether this file has been explicitly trashed, as opposed to recursively trashed.
       "isAppAuthorized": True or False, # Whether the file was created or opened by the requesting app.
       "lastModifyingUserName": "A String", # Name of the last user to modify this file.
@@ -144,11 +146,7 @@
         "isAuthenticatedUser": True or False, # Whether this user is the same as the authenticated user for whom the request was made.
         "emailAddress": "A String", # The email address of the user.
       },
-      "videoMediaMetadata": { # Metadata about video media. This will only be present for video types.
-        "width": 42, # The width of the video in pixels.
-        "durationMillis": "A String", # The duration of the video in milliseconds.
-        "height": 42, # The height of the video in pixels.
-      },
+      "mimeType": "A String", # The MIME type of the file. This is only mutable on update when uploading new content. This field can be left blank, and the mimetype will be determined from the uploaded content's MIME type.
       "lastModifyingUser": { # Information about a Drive user. # The last user to modify this file.
         "picture": { # The user's profile picture.
           "url": "A String", # A URL that points to a profile picture of this user.
@@ -188,8 +186,8 @@
           "domain": "A String", # The domain name of the entity this permission refers to. This is an output-only field which is present when the permission type is user, group or domain.
           "name": "A String", # The name for this permission.
           "kind": "drive#permission", # This is always drive#permission.
-          "value": "A String", # The email address or domain name for the entity. This is used during inserts and is not populated in responses. When making a drive.permissions.insert request, exactly one of the id or value fields must be specified unless the permission type anyone, in which case both id and value are ignored.
-          "id": "A String", # The ID of the user this permission refers to, and identical to the permissionId in the About and Files resources. When making a drive.permissions.insert request, exactly one of the id or value fields must be specified unless the permission type anyone, in which case both id and value are ignored.
+          "value": "A String", # The email address or domain name for the entity. This is used during inserts and is not populated in responses. When making a drive.permissions.insert request, exactly one of the id or value fields must be specified unless the permission type is anyone, in which case both id and value are ignored.
+          "id": "A String", # The ID of the user this permission refers to, and identical to the permissionId in the About and Files resources. When making a drive.permissions.insert request, exactly one of the id or value fields must be specified unless the permission type is anyone, in which case both id and value are ignored.
           "authKey": "A String", # The authkey parameter required for this permission.
           "etag": "A String", # The ETag of the permission.
           "emailAddress": "A String", # The email address of the user or group this permission refers to. This is an output-only field which is present when the permission type is user or group.
@@ -244,6 +242,11 @@
       },
       "description": "A String", # A short description of the file.
       "webContentLink": "A String", # A link for downloading the content of the file in a browser using cookie based authentication. In cases where the content is shared publicly, the content can be downloaded without any credentials.
+      "videoMediaMetadata": { # Metadata about video media. This will only be present for video types.
+        "width": 42, # The width of the video in pixels.
+        "durationMillis": "A String", # The duration of the video in milliseconds.
+        "height": 42, # The height of the video in pixels.
+      },
       "editable": True or False, # Whether the file can be edited by the current user.
       "kind": "drive#file", # The type of file. This is always drive#file.
       "canComment": True or False, # Whether the current user can comment on the file.
@@ -272,7 +275,7 @@
       "alternateLink": "A String", # A link for opening the file in a relevant Google editor or viewer.
       "title": "A String", # The title of this file.
       "modifiedByMeDate": "A String", # Last time this file was modified by the user (formatted RFC 3339 timestamp). Note that setting modifiedDate will also update the modifiedByMe date for the user which set the date.
-      "thumbnail": { # Thumbnail for the file. Only accepted on upload and for files that are not already thumbnailed by Google.
+      "thumbnail": { # A thumbnail for the file. This will only be used if Drive cannot generate a standard thumbnail.
         "mimeType": "A String", # The MIME type of the thumbnail.
         "image": "A String", # The URL-safe Base64 encoded bytes of the thumbnail image. It should conform to RFC 4648 section 5.
       },
@@ -282,8 +285,8 @@
         "domain": "A String", # The domain name of the entity this permission refers to. This is an output-only field which is present when the permission type is user, group or domain.
         "name": "A String", # The name for this permission.
         "kind": "drive#permission", # This is always drive#permission.
-        "value": "A String", # The email address or domain name for the entity. This is used during inserts and is not populated in responses. When making a drive.permissions.insert request, exactly one of the id or value fields must be specified unless the permission type anyone, in which case both id and value are ignored.
-        "id": "A String", # The ID of the user this permission refers to, and identical to the permissionId in the About and Files resources. When making a drive.permissions.insert request, exactly one of the id or value fields must be specified unless the permission type anyone, in which case both id and value are ignored.
+        "value": "A String", # The email address or domain name for the entity. This is used during inserts and is not populated in responses. When making a drive.permissions.insert request, exactly one of the id or value fields must be specified unless the permission type is anyone, in which case both id and value are ignored.
+        "id": "A String", # The ID of the user this permission refers to, and identical to the permissionId in the About and Files resources. When making a drive.permissions.insert request, exactly one of the id or value fields must be specified unless the permission type is anyone, in which case both id and value are ignored.
         "authKey": "A String", # The authkey parameter required for this permission.
         "etag": "A String", # The ETag of the permission.
         "emailAddress": "A String", # The email address of the user or group this permission refers to. This is an output-only field which is present when the permission type is user or group.
@@ -343,21 +346,23 @@
         "kind": "drive#change", # This is always drive#change.
         "deleted": True or False, # Whether the file has been deleted.
         "file": { # The metadata for a file. # The updated state of the file. Present if the file has not been deleted.
-          "mimeType": "A String", # The MIME type of the file. This is only mutable on update when uploading new content. This field can be left blank, and the mimetype will be determined from the uploaded content's MIME type.
+          "hasThumbnail": True or False, # Whether this file has a thumbnail.
           "lastViewedByMeDate": "A String", # Last time this file was viewed by the user (formatted RFC 3339 timestamp).
           "version": "A String", # A monotonically increasing version number for the file. This reflects every change made to the file on the server, even those not visible to the requesting user.
           "appDataContents": True or False, # Whether this file is in the Application Data folder.
-          "thumbnailLink": "A String", # A short-lived link to the file's thumbnail. Typically lasts on the order of hours.
+          "thumbnailLink": "A String", # A short-lived link to the file's thumbnail. Typically lasts on the order of hours. Only populated when the requesting app can access the file's content.
           "labels": { # A group of labels for the file.
             "restricted": True or False, # Whether viewers and commenters are prevented from downloading, printing, and copying this file.
-            "hidden": True or False, # Deprecated.
-            "viewed": True or False, # Whether this file has been viewed by this user.
-            "starred": True or False, # Whether this file is starred by the user.
+            "modified": True or False, # Whether the file has been modified by this user.
             "trashed": True or False, # Whether this file has been trashed. This label applies to all users accessing the file; however, only owners are allowed to see and untrash files.
+            "hidden": True or False, # Deprecated.
+            "starred": True or False, # Whether this file is starred by the user.
+            "viewed": True or False, # Whether this file has been viewed by this user.
           },
           "indexableText": { # Indexable text attributes for the file (can only be written)
             "text": "A String", # The text to be indexed for this file.
           },
+          "thumbnailVersion": "A String", # The thumbnail version for use in client-contructable thumbnail URLs or thumbnail cache invalidation.
           "explicitlyTrashed": True or False, # Whether this file has been explicitly trashed, as opposed to recursively trashed.
           "isAppAuthorized": True or False, # Whether the file was created or opened by the requesting app.
           "lastModifyingUserName": "A String", # Name of the last user to modify this file.
@@ -386,11 +391,7 @@
             "isAuthenticatedUser": True or False, # Whether this user is the same as the authenticated user for whom the request was made.
             "emailAddress": "A String", # The email address of the user.
           },
-          "videoMediaMetadata": { # Metadata about video media. This will only be present for video types.
-            "width": 42, # The width of the video in pixels.
-            "durationMillis": "A String", # The duration of the video in milliseconds.
-            "height": 42, # The height of the video in pixels.
-          },
+          "mimeType": "A String", # The MIME type of the file. This is only mutable on update when uploading new content. This field can be left blank, and the mimetype will be determined from the uploaded content's MIME type.
           "lastModifyingUser": { # Information about a Drive user. # The last user to modify this file.
             "picture": { # The user's profile picture.
               "url": "A String", # A URL that points to a profile picture of this user.
@@ -430,8 +431,8 @@
               "domain": "A String", # The domain name of the entity this permission refers to. This is an output-only field which is present when the permission type is user, group or domain.
               "name": "A String", # The name for this permission.
               "kind": "drive#permission", # This is always drive#permission.
-              "value": "A String", # The email address or domain name for the entity. This is used during inserts and is not populated in responses. When making a drive.permissions.insert request, exactly one of the id or value fields must be specified unless the permission type anyone, in which case both id and value are ignored.
-              "id": "A String", # The ID of the user this permission refers to, and identical to the permissionId in the About and Files resources. When making a drive.permissions.insert request, exactly one of the id or value fields must be specified unless the permission type anyone, in which case both id and value are ignored.
+              "value": "A String", # The email address or domain name for the entity. This is used during inserts and is not populated in responses. When making a drive.permissions.insert request, exactly one of the id or value fields must be specified unless the permission type is anyone, in which case both id and value are ignored.
+              "id": "A String", # The ID of the user this permission refers to, and identical to the permissionId in the About and Files resources. When making a drive.permissions.insert request, exactly one of the id or value fields must be specified unless the permission type is anyone, in which case both id and value are ignored.
               "authKey": "A String", # The authkey parameter required for this permission.
               "etag": "A String", # The ETag of the permission.
               "emailAddress": "A String", # The email address of the user or group this permission refers to. This is an output-only field which is present when the permission type is user or group.
@@ -486,6 +487,11 @@
           },
           "description": "A String", # A short description of the file.
           "webContentLink": "A String", # A link for downloading the content of the file in a browser using cookie based authentication. In cases where the content is shared publicly, the content can be downloaded without any credentials.
+          "videoMediaMetadata": { # Metadata about video media. This will only be present for video types.
+            "width": 42, # The width of the video in pixels.
+            "durationMillis": "A String", # The duration of the video in milliseconds.
+            "height": 42, # The height of the video in pixels.
+          },
           "editable": True or False, # Whether the file can be edited by the current user.
           "kind": "drive#file", # The type of file. This is always drive#file.
           "canComment": True or False, # Whether the current user can comment on the file.
@@ -514,7 +520,7 @@
           "alternateLink": "A String", # A link for opening the file in a relevant Google editor or viewer.
           "title": "A String", # The title of this file.
           "modifiedByMeDate": "A String", # Last time this file was modified by the user (formatted RFC 3339 timestamp). Note that setting modifiedDate will also update the modifiedByMe date for the user which set the date.
-          "thumbnail": { # Thumbnail for the file. Only accepted on upload and for files that are not already thumbnailed by Google.
+          "thumbnail": { # A thumbnail for the file. This will only be used if Drive cannot generate a standard thumbnail.
             "mimeType": "A String", # The MIME type of the thumbnail.
             "image": "A String", # The URL-safe Base64 encoded bytes of the thumbnail image. It should conform to RFC 4648 section 5.
           },
@@ -524,8 +530,8 @@
             "domain": "A String", # The domain name of the entity this permission refers to. This is an output-only field which is present when the permission type is user, group or domain.
             "name": "A String", # The name for this permission.
             "kind": "drive#permission", # This is always drive#permission.
-            "value": "A String", # The email address or domain name for the entity. This is used during inserts and is not populated in responses. When making a drive.permissions.insert request, exactly one of the id or value fields must be specified unless the permission type anyone, in which case both id and value are ignored.
-            "id": "A String", # The ID of the user this permission refers to, and identical to the permissionId in the About and Files resources. When making a drive.permissions.insert request, exactly one of the id or value fields must be specified unless the permission type anyone, in which case both id and value are ignored.
+            "value": "A String", # The email address or domain name for the entity. This is used during inserts and is not populated in responses. When making a drive.permissions.insert request, exactly one of the id or value fields must be specified unless the permission type is anyone, in which case both id and value are ignored.
+            "id": "A String", # The ID of the user this permission refers to, and identical to the permissionId in the About and Files resources. When making a drive.permissions.insert request, exactly one of the id or value fields must be specified unless the permission type is anyone, in which case both id and value are ignored.
             "authKey": "A String", # The authkey parameter required for this permission.
             "etag": "A String", # The ETag of the permission.
             "emailAddress": "A String", # The email address of the user or group this permission refers to. This is an output-only field which is present when the permission type is user or group.
diff --git a/docs/dyn/drive_v2.files.html b/docs/dyn/drive_v2.files.html
index 9de4c2c..834122b 100644
--- a/docs/dyn/drive_v2.files.html
+++ b/docs/dyn/drive_v2.files.html
@@ -99,7 +99,7 @@
   <code><a href="#get_media">get_media(fileId, projection=None, revisionId=None, acknowledgeAbuse=None, updateViewedDate=None)</a></code></p>
 <p class="firstline">Gets a file's metadata by ID.</p>
 <p class="toc_element">
-  <code><a href="#insert">insert(body=None, media_body=None, convert=None, useContentAsIndexableText=None, visibility=None, ocrLanguage=None, ocr=None, timedTextLanguage=None, timedTextTrackName=None, pinned=None)</a></code></p>
+  <code><a href="#insert">insert(body=None, media_body=None, ocrLanguage=None, ocr=None, pinned=None, visibility=None, timedTextTrackName=None, convert=None, useContentAsIndexableText=None, media_mime_type=None, timedTextLanguage=None)</a></code></p>
 <p class="firstline">Insert a new file.</p>
 <p class="toc_element">
   <code><a href="#list">list(orderBy=None, q=None, projection=None, pageToken=None, maxResults=None, spaces=None, corpus=None)</a></code></p>
@@ -120,7 +120,7 @@
   <code><a href="#untrash">untrash(fileId)</a></code></p>
 <p class="firstline">Restores a file from the trash.</p>
 <p class="toc_element">
-  <code><a href="#update">update(fileId, body=None, newRevision=None, modifiedDateBehavior=None, media_body=None, ocrLanguage=None, ocr=None, pinned=None, addParents=None, removeParents=None, updateViewedDate=None, timedTextTrackName=None, convert=None, useContentAsIndexableText=None, setModifiedDate=None, timedTextLanguage=None)</a></code></p>
+  <code><a href="#update">update(fileId, body=None, newRevision=None, modifiedDateBehavior=None, media_body=None, ocrLanguage=None, ocr=None, pinned=None, addParents=None, removeParents=None, updateViewedDate=None, timedTextTrackName=None, convert=None, useContentAsIndexableText=None, media_mime_type=None, setModifiedDate=None, timedTextLanguage=None)</a></code></p>
 <p class="firstline">Updates file metadata and/or content.</p>
 <p class="toc_element">
   <code><a href="#watch">watch(fileId, body, projection=None, revisionId=None, acknowledgeAbuse=None, updateViewedDate=None)</a></code></p>
@@ -139,21 +139,23 @@
     The object takes the form of:
 
 { # The metadata for a file.
-  "mimeType": "A String", # The MIME type of the file. This is only mutable on update when uploading new content. This field can be left blank, and the mimetype will be determined from the uploaded content's MIME type.
+  "hasThumbnail": True or False, # Whether this file has a thumbnail.
   "lastViewedByMeDate": "A String", # Last time this file was viewed by the user (formatted RFC 3339 timestamp).
   "version": "A String", # A monotonically increasing version number for the file. This reflects every change made to the file on the server, even those not visible to the requesting user.
   "appDataContents": True or False, # Whether this file is in the Application Data folder.
-  "thumbnailLink": "A String", # A short-lived link to the file's thumbnail. Typically lasts on the order of hours.
+  "thumbnailLink": "A String", # A short-lived link to the file's thumbnail. Typically lasts on the order of hours. Only populated when the requesting app can access the file's content.
   "labels": { # A group of labels for the file.
     "restricted": True or False, # Whether viewers and commenters are prevented from downloading, printing, and copying this file.
-    "hidden": True or False, # Deprecated.
-    "viewed": True or False, # Whether this file has been viewed by this user.
-    "starred": True or False, # Whether this file is starred by the user.
+    "modified": True or False, # Whether the file has been modified by this user.
     "trashed": True or False, # Whether this file has been trashed. This label applies to all users accessing the file; however, only owners are allowed to see and untrash files.
+    "hidden": True or False, # Deprecated.
+    "starred": True or False, # Whether this file is starred by the user.
+    "viewed": True or False, # Whether this file has been viewed by this user.
   },
   "indexableText": { # Indexable text attributes for the file (can only be written)
     "text": "A String", # The text to be indexed for this file.
   },
+  "thumbnailVersion": "A String", # The thumbnail version for use in client-contructable thumbnail URLs or thumbnail cache invalidation.
   "explicitlyTrashed": True or False, # Whether this file has been explicitly trashed, as opposed to recursively trashed.
   "isAppAuthorized": True or False, # Whether the file was created or opened by the requesting app.
   "lastModifyingUserName": "A String", # Name of the last user to modify this file.
@@ -182,11 +184,7 @@
     "isAuthenticatedUser": True or False, # Whether this user is the same as the authenticated user for whom the request was made.
     "emailAddress": "A String", # The email address of the user.
   },
-  "videoMediaMetadata": { # Metadata about video media. This will only be present for video types.
-    "width": 42, # The width of the video in pixels.
-    "durationMillis": "A String", # The duration of the video in milliseconds.
-    "height": 42, # The height of the video in pixels.
-  },
+  "mimeType": "A String", # The MIME type of the file. This is only mutable on update when uploading new content. This field can be left blank, and the mimetype will be determined from the uploaded content's MIME type.
   "lastModifyingUser": { # Information about a Drive user. # The last user to modify this file.
     "picture": { # The user's profile picture.
       "url": "A String", # A URL that points to a profile picture of this user.
@@ -226,8 +224,8 @@
       "domain": "A String", # The domain name of the entity this permission refers to. This is an output-only field which is present when the permission type is user, group or domain.
       "name": "A String", # The name for this permission.
       "kind": "drive#permission", # This is always drive#permission.
-      "value": "A String", # The email address or domain name for the entity. This is used during inserts and is not populated in responses. When making a drive.permissions.insert request, exactly one of the id or value fields must be specified unless the permission type anyone, in which case both id and value are ignored.
-      "id": "A String", # The ID of the user this permission refers to, and identical to the permissionId in the About and Files resources. When making a drive.permissions.insert request, exactly one of the id or value fields must be specified unless the permission type anyone, in which case both id and value are ignored.
+      "value": "A String", # The email address or domain name for the entity. This is used during inserts and is not populated in responses. When making a drive.permissions.insert request, exactly one of the id or value fields must be specified unless the permission type is anyone, in which case both id and value are ignored.
+      "id": "A String", # The ID of the user this permission refers to, and identical to the permissionId in the About and Files resources. When making a drive.permissions.insert request, exactly one of the id or value fields must be specified unless the permission type is anyone, in which case both id and value are ignored.
       "authKey": "A String", # The authkey parameter required for this permission.
       "etag": "A String", # The ETag of the permission.
       "emailAddress": "A String", # The email address of the user or group this permission refers to. This is an output-only field which is present when the permission type is user or group.
@@ -282,6 +280,11 @@
   },
   "description": "A String", # A short description of the file.
   "webContentLink": "A String", # A link for downloading the content of the file in a browser using cookie based authentication. In cases where the content is shared publicly, the content can be downloaded without any credentials.
+  "videoMediaMetadata": { # Metadata about video media. This will only be present for video types.
+    "width": 42, # The width of the video in pixels.
+    "durationMillis": "A String", # The duration of the video in milliseconds.
+    "height": 42, # The height of the video in pixels.
+  },
   "editable": True or False, # Whether the file can be edited by the current user.
   "kind": "drive#file", # The type of file. This is always drive#file.
   "canComment": True or False, # Whether the current user can comment on the file.
@@ -310,7 +313,7 @@
   "alternateLink": "A String", # A link for opening the file in a relevant Google editor or viewer.
   "title": "A String", # The title of this file.
   "modifiedByMeDate": "A String", # Last time this file was modified by the user (formatted RFC 3339 timestamp). Note that setting modifiedDate will also update the modifiedByMe date for the user which set the date.
-  "thumbnail": { # Thumbnail for the file. Only accepted on upload and for files that are not already thumbnailed by Google.
+  "thumbnail": { # A thumbnail for the file. This will only be used if Drive cannot generate a standard thumbnail.
     "mimeType": "A String", # The MIME type of the thumbnail.
     "image": "A String", # The URL-safe Base64 encoded bytes of the thumbnail image. It should conform to RFC 4648 section 5.
   },
@@ -320,8 +323,8 @@
     "domain": "A String", # The domain name of the entity this permission refers to. This is an output-only field which is present when the permission type is user, group or domain.
     "name": "A String", # The name for this permission.
     "kind": "drive#permission", # This is always drive#permission.
-    "value": "A String", # The email address or domain name for the entity. This is used during inserts and is not populated in responses. When making a drive.permissions.insert request, exactly one of the id or value fields must be specified unless the permission type anyone, in which case both id and value are ignored.
-    "id": "A String", # The ID of the user this permission refers to, and identical to the permissionId in the About and Files resources. When making a drive.permissions.insert request, exactly one of the id or value fields must be specified unless the permission type anyone, in which case both id and value are ignored.
+    "value": "A String", # The email address or domain name for the entity. This is used during inserts and is not populated in responses. When making a drive.permissions.insert request, exactly one of the id or value fields must be specified unless the permission type is anyone, in which case both id and value are ignored.
+    "id": "A String", # The ID of the user this permission refers to, and identical to the permissionId in the About and Files resources. When making a drive.permissions.insert request, exactly one of the id or value fields must be specified unless the permission type is anyone, in which case both id and value are ignored.
     "authKey": "A String", # The authkey parameter required for this permission.
     "etag": "A String", # The ETag of the permission.
     "emailAddress": "A String", # The email address of the user or group this permission refers to. This is an output-only field which is present when the permission type is user or group.
@@ -367,21 +370,23 @@
   An object of the form:
 
     { # The metadata for a file.
-    "mimeType": "A String", # The MIME type of the file. This is only mutable on update when uploading new content. This field can be left blank, and the mimetype will be determined from the uploaded content's MIME type.
+    "hasThumbnail": True or False, # Whether this file has a thumbnail.
     "lastViewedByMeDate": "A String", # Last time this file was viewed by the user (formatted RFC 3339 timestamp).
     "version": "A String", # A monotonically increasing version number for the file. This reflects every change made to the file on the server, even those not visible to the requesting user.
     "appDataContents": True or False, # Whether this file is in the Application Data folder.
-    "thumbnailLink": "A String", # A short-lived link to the file's thumbnail. Typically lasts on the order of hours.
+    "thumbnailLink": "A String", # A short-lived link to the file's thumbnail. Typically lasts on the order of hours. Only populated when the requesting app can access the file's content.
     "labels": { # A group of labels for the file.
       "restricted": True or False, # Whether viewers and commenters are prevented from downloading, printing, and copying this file.
-      "hidden": True or False, # Deprecated.
-      "viewed": True or False, # Whether this file has been viewed by this user.
-      "starred": True or False, # Whether this file is starred by the user.
+      "modified": True or False, # Whether the file has been modified by this user.
       "trashed": True or False, # Whether this file has been trashed. This label applies to all users accessing the file; however, only owners are allowed to see and untrash files.
+      "hidden": True or False, # Deprecated.
+      "starred": True or False, # Whether this file is starred by the user.
+      "viewed": True or False, # Whether this file has been viewed by this user.
     },
     "indexableText": { # Indexable text attributes for the file (can only be written)
       "text": "A String", # The text to be indexed for this file.
     },
+    "thumbnailVersion": "A String", # The thumbnail version for use in client-contructable thumbnail URLs or thumbnail cache invalidation.
     "explicitlyTrashed": True or False, # Whether this file has been explicitly trashed, as opposed to recursively trashed.
     "isAppAuthorized": True or False, # Whether the file was created or opened by the requesting app.
     "lastModifyingUserName": "A String", # Name of the last user to modify this file.
@@ -410,11 +415,7 @@
       "isAuthenticatedUser": True or False, # Whether this user is the same as the authenticated user for whom the request was made.
       "emailAddress": "A String", # The email address of the user.
     },
-    "videoMediaMetadata": { # Metadata about video media. This will only be present for video types.
-      "width": 42, # The width of the video in pixels.
-      "durationMillis": "A String", # The duration of the video in milliseconds.
-      "height": 42, # The height of the video in pixels.
-    },
+    "mimeType": "A String", # The MIME type of the file. This is only mutable on update when uploading new content. This field can be left blank, and the mimetype will be determined from the uploaded content's MIME type.
     "lastModifyingUser": { # Information about a Drive user. # The last user to modify this file.
       "picture": { # The user's profile picture.
         "url": "A String", # A URL that points to a profile picture of this user.
@@ -454,8 +455,8 @@
         "domain": "A String", # The domain name of the entity this permission refers to. This is an output-only field which is present when the permission type is user, group or domain.
         "name": "A String", # The name for this permission.
         "kind": "drive#permission", # This is always drive#permission.
-        "value": "A String", # The email address or domain name for the entity. This is used during inserts and is not populated in responses. When making a drive.permissions.insert request, exactly one of the id or value fields must be specified unless the permission type anyone, in which case both id and value are ignored.
-        "id": "A String", # The ID of the user this permission refers to, and identical to the permissionId in the About and Files resources. When making a drive.permissions.insert request, exactly one of the id or value fields must be specified unless the permission type anyone, in which case both id and value are ignored.
+        "value": "A String", # The email address or domain name for the entity. This is used during inserts and is not populated in responses. When making a drive.permissions.insert request, exactly one of the id or value fields must be specified unless the permission type is anyone, in which case both id and value are ignored.
+        "id": "A String", # The ID of the user this permission refers to, and identical to the permissionId in the About and Files resources. When making a drive.permissions.insert request, exactly one of the id or value fields must be specified unless the permission type is anyone, in which case both id and value are ignored.
         "authKey": "A String", # The authkey parameter required for this permission.
         "etag": "A String", # The ETag of the permission.
         "emailAddress": "A String", # The email address of the user or group this permission refers to. This is an output-only field which is present when the permission type is user or group.
@@ -510,6 +511,11 @@
     },
     "description": "A String", # A short description of the file.
     "webContentLink": "A String", # A link for downloading the content of the file in a browser using cookie based authentication. In cases where the content is shared publicly, the content can be downloaded without any credentials.
+    "videoMediaMetadata": { # Metadata about video media. This will only be present for video types.
+      "width": 42, # The width of the video in pixels.
+      "durationMillis": "A String", # The duration of the video in milliseconds.
+      "height": 42, # The height of the video in pixels.
+    },
     "editable": True or False, # Whether the file can be edited by the current user.
     "kind": "drive#file", # The type of file. This is always drive#file.
     "canComment": True or False, # Whether the current user can comment on the file.
@@ -538,7 +544,7 @@
     "alternateLink": "A String", # A link for opening the file in a relevant Google editor or viewer.
     "title": "A String", # The title of this file.
     "modifiedByMeDate": "A String", # Last time this file was modified by the user (formatted RFC 3339 timestamp). Note that setting modifiedDate will also update the modifiedByMe date for the user which set the date.
-    "thumbnail": { # Thumbnail for the file. Only accepted on upload and for files that are not already thumbnailed by Google.
+    "thumbnail": { # A thumbnail for the file. This will only be used if Drive cannot generate a standard thumbnail.
       "mimeType": "A String", # The MIME type of the thumbnail.
       "image": "A String", # The URL-safe Base64 encoded bytes of the thumbnail image. It should conform to RFC 4648 section 5.
     },
@@ -548,8 +554,8 @@
       "domain": "A String", # The domain name of the entity this permission refers to. This is an output-only field which is present when the permission type is user, group or domain.
       "name": "A String", # The name for this permission.
       "kind": "drive#permission", # This is always drive#permission.
-      "value": "A String", # The email address or domain name for the entity. This is used during inserts and is not populated in responses. When making a drive.permissions.insert request, exactly one of the id or value fields must be specified unless the permission type anyone, in which case both id and value are ignored.
-      "id": "A String", # The ID of the user this permission refers to, and identical to the permissionId in the About and Files resources. When making a drive.permissions.insert request, exactly one of the id or value fields must be specified unless the permission type anyone, in which case both id and value are ignored.
+      "value": "A String", # The email address or domain name for the entity. This is used during inserts and is not populated in responses. When making a drive.permissions.insert request, exactly one of the id or value fields must be specified unless the permission type is anyone, in which case both id and value are ignored.
+      "id": "A String", # The ID of the user this permission refers to, and identical to the permissionId in the About and Files resources. When making a drive.permissions.insert request, exactly one of the id or value fields must be specified unless the permission type is anyone, in which case both id and value are ignored.
       "authKey": "A String", # The authkey parameter required for this permission.
       "etag": "A String", # The ETag of the permission.
       "emailAddress": "A String", # The email address of the user or group this permission refers to. This is an output-only field which is present when the permission type is user or group.
@@ -656,21 +662,23 @@
   An object of the form:
 
     { # The metadata for a file.
-    "mimeType": "A String", # The MIME type of the file. This is only mutable on update when uploading new content. This field can be left blank, and the mimetype will be determined from the uploaded content's MIME type.
+    "hasThumbnail": True or False, # Whether this file has a thumbnail.
     "lastViewedByMeDate": "A String", # Last time this file was viewed by the user (formatted RFC 3339 timestamp).
     "version": "A String", # A monotonically increasing version number for the file. This reflects every change made to the file on the server, even those not visible to the requesting user.
     "appDataContents": True or False, # Whether this file is in the Application Data folder.
-    "thumbnailLink": "A String", # A short-lived link to the file's thumbnail. Typically lasts on the order of hours.
+    "thumbnailLink": "A String", # A short-lived link to the file's thumbnail. Typically lasts on the order of hours. Only populated when the requesting app can access the file's content.
     "labels": { # A group of labels for the file.
       "restricted": True or False, # Whether viewers and commenters are prevented from downloading, printing, and copying this file.
-      "hidden": True or False, # Deprecated.
-      "viewed": True or False, # Whether this file has been viewed by this user.
-      "starred": True or False, # Whether this file is starred by the user.
+      "modified": True or False, # Whether the file has been modified by this user.
       "trashed": True or False, # Whether this file has been trashed. This label applies to all users accessing the file; however, only owners are allowed to see and untrash files.
+      "hidden": True or False, # Deprecated.
+      "starred": True or False, # Whether this file is starred by the user.
+      "viewed": True or False, # Whether this file has been viewed by this user.
     },
     "indexableText": { # Indexable text attributes for the file (can only be written)
       "text": "A String", # The text to be indexed for this file.
     },
+    "thumbnailVersion": "A String", # The thumbnail version for use in client-contructable thumbnail URLs or thumbnail cache invalidation.
     "explicitlyTrashed": True or False, # Whether this file has been explicitly trashed, as opposed to recursively trashed.
     "isAppAuthorized": True or False, # Whether the file was created or opened by the requesting app.
     "lastModifyingUserName": "A String", # Name of the last user to modify this file.
@@ -699,11 +707,7 @@
       "isAuthenticatedUser": True or False, # Whether this user is the same as the authenticated user for whom the request was made.
       "emailAddress": "A String", # The email address of the user.
     },
-    "videoMediaMetadata": { # Metadata about video media. This will only be present for video types.
-      "width": 42, # The width of the video in pixels.
-      "durationMillis": "A String", # The duration of the video in milliseconds.
-      "height": 42, # The height of the video in pixels.
-    },
+    "mimeType": "A String", # The MIME type of the file. This is only mutable on update when uploading new content. This field can be left blank, and the mimetype will be determined from the uploaded content's MIME type.
     "lastModifyingUser": { # Information about a Drive user. # The last user to modify this file.
       "picture": { # The user's profile picture.
         "url": "A String", # A URL that points to a profile picture of this user.
@@ -743,8 +747,8 @@
         "domain": "A String", # The domain name of the entity this permission refers to. This is an output-only field which is present when the permission type is user, group or domain.
         "name": "A String", # The name for this permission.
         "kind": "drive#permission", # This is always drive#permission.
-        "value": "A String", # The email address or domain name for the entity. This is used during inserts and is not populated in responses. When making a drive.permissions.insert request, exactly one of the id or value fields must be specified unless the permission type anyone, in which case both id and value are ignored.
-        "id": "A String", # The ID of the user this permission refers to, and identical to the permissionId in the About and Files resources. When making a drive.permissions.insert request, exactly one of the id or value fields must be specified unless the permission type anyone, in which case both id and value are ignored.
+        "value": "A String", # The email address or domain name for the entity. This is used during inserts and is not populated in responses. When making a drive.permissions.insert request, exactly one of the id or value fields must be specified unless the permission type is anyone, in which case both id and value are ignored.
+        "id": "A String", # The ID of the user this permission refers to, and identical to the permissionId in the About and Files resources. When making a drive.permissions.insert request, exactly one of the id or value fields must be specified unless the permission type is anyone, in which case both id and value are ignored.
         "authKey": "A String", # The authkey parameter required for this permission.
         "etag": "A String", # The ETag of the permission.
         "emailAddress": "A String", # The email address of the user or group this permission refers to. This is an output-only field which is present when the permission type is user or group.
@@ -799,6 +803,11 @@
     },
     "description": "A String", # A short description of the file.
     "webContentLink": "A String", # A link for downloading the content of the file in a browser using cookie based authentication. In cases where the content is shared publicly, the content can be downloaded without any credentials.
+    "videoMediaMetadata": { # Metadata about video media. This will only be present for video types.
+      "width": 42, # The width of the video in pixels.
+      "durationMillis": "A String", # The duration of the video in milliseconds.
+      "height": 42, # The height of the video in pixels.
+    },
     "editable": True or False, # Whether the file can be edited by the current user.
     "kind": "drive#file", # The type of file. This is always drive#file.
     "canComment": True or False, # Whether the current user can comment on the file.
@@ -827,7 +836,7 @@
     "alternateLink": "A String", # A link for opening the file in a relevant Google editor or viewer.
     "title": "A String", # The title of this file.
     "modifiedByMeDate": "A String", # Last time this file was modified by the user (formatted RFC 3339 timestamp). Note that setting modifiedDate will also update the modifiedByMe date for the user which set the date.
-    "thumbnail": { # Thumbnail for the file. Only accepted on upload and for files that are not already thumbnailed by Google.
+    "thumbnail": { # A thumbnail for the file. This will only be used if Drive cannot generate a standard thumbnail.
       "mimeType": "A String", # The MIME type of the thumbnail.
       "image": "A String", # The URL-safe Base64 encoded bytes of the thumbnail image. It should conform to RFC 4648 section 5.
     },
@@ -837,8 +846,8 @@
       "domain": "A String", # The domain name of the entity this permission refers to. This is an output-only field which is present when the permission type is user, group or domain.
       "name": "A String", # The name for this permission.
       "kind": "drive#permission", # This is always drive#permission.
-      "value": "A String", # The email address or domain name for the entity. This is used during inserts and is not populated in responses. When making a drive.permissions.insert request, exactly one of the id or value fields must be specified unless the permission type anyone, in which case both id and value are ignored.
-      "id": "A String", # The ID of the user this permission refers to, and identical to the permissionId in the About and Files resources. When making a drive.permissions.insert request, exactly one of the id or value fields must be specified unless the permission type anyone, in which case both id and value are ignored.
+      "value": "A String", # The email address or domain name for the entity. This is used during inserts and is not populated in responses. When making a drive.permissions.insert request, exactly one of the id or value fields must be specified unless the permission type is anyone, in which case both id and value are ignored.
+      "id": "A String", # The ID of the user this permission refers to, and identical to the permissionId in the About and Files resources. When making a drive.permissions.insert request, exactly one of the id or value fields must be specified unless the permission type is anyone, in which case both id and value are ignored.
       "authKey": "A String", # The authkey parameter required for this permission.
       "etag": "A String", # The ETag of the permission.
       "emailAddress": "A String", # The email address of the user or group this permission refers to. This is an output-only field which is present when the permission type is user or group.
@@ -891,7 +900,7 @@
 </div>
 
 <div class="method">
-    <code class="details" id="insert">insert(body=None, media_body=None, convert=None, useContentAsIndexableText=None, visibility=None, ocrLanguage=None, ocr=None, timedTextLanguage=None, timedTextTrackName=None, pinned=None)</code>
+    <code class="details" id="insert">insert(body=None, media_body=None, ocrLanguage=None, ocr=None, pinned=None, visibility=None, timedTextTrackName=None, convert=None, useContentAsIndexableText=None, media_mime_type=None, timedTextLanguage=None)</code>
   <pre>Insert a new file.
 
 Args:
@@ -899,21 +908,23 @@
     The object takes the form of:
 
 { # The metadata for a file.
-  "mimeType": "A String", # The MIME type of the file. This is only mutable on update when uploading new content. This field can be left blank, and the mimetype will be determined from the uploaded content's MIME type.
+  "hasThumbnail": True or False, # Whether this file has a thumbnail.
   "lastViewedByMeDate": "A String", # Last time this file was viewed by the user (formatted RFC 3339 timestamp).
   "version": "A String", # A monotonically increasing version number for the file. This reflects every change made to the file on the server, even those not visible to the requesting user.
   "appDataContents": True or False, # Whether this file is in the Application Data folder.
-  "thumbnailLink": "A String", # A short-lived link to the file's thumbnail. Typically lasts on the order of hours.
+  "thumbnailLink": "A String", # A short-lived link to the file's thumbnail. Typically lasts on the order of hours. Only populated when the requesting app can access the file's content.
   "labels": { # A group of labels for the file.
     "restricted": True or False, # Whether viewers and commenters are prevented from downloading, printing, and copying this file.
-    "hidden": True or False, # Deprecated.
-    "viewed": True or False, # Whether this file has been viewed by this user.
-    "starred": True or False, # Whether this file is starred by the user.
+    "modified": True or False, # Whether the file has been modified by this user.
     "trashed": True or False, # Whether this file has been trashed. This label applies to all users accessing the file; however, only owners are allowed to see and untrash files.
+    "hidden": True or False, # Deprecated.
+    "starred": True or False, # Whether this file is starred by the user.
+    "viewed": True or False, # Whether this file has been viewed by this user.
   },
   "indexableText": { # Indexable text attributes for the file (can only be written)
     "text": "A String", # The text to be indexed for this file.
   },
+  "thumbnailVersion": "A String", # The thumbnail version for use in client-contructable thumbnail URLs or thumbnail cache invalidation.
   "explicitlyTrashed": True or False, # Whether this file has been explicitly trashed, as opposed to recursively trashed.
   "isAppAuthorized": True or False, # Whether the file was created or opened by the requesting app.
   "lastModifyingUserName": "A String", # Name of the last user to modify this file.
@@ -942,11 +953,7 @@
     "isAuthenticatedUser": True or False, # Whether this user is the same as the authenticated user for whom the request was made.
     "emailAddress": "A String", # The email address of the user.
   },
-  "videoMediaMetadata": { # Metadata about video media. This will only be present for video types.
-    "width": 42, # The width of the video in pixels.
-    "durationMillis": "A String", # The duration of the video in milliseconds.
-    "height": 42, # The height of the video in pixels.
-  },
+  "mimeType": "A String", # The MIME type of the file. This is only mutable on update when uploading new content. This field can be left blank, and the mimetype will be determined from the uploaded content's MIME type.
   "lastModifyingUser": { # Information about a Drive user. # The last user to modify this file.
     "picture": { # The user's profile picture.
       "url": "A String", # A URL that points to a profile picture of this user.
@@ -986,8 +993,8 @@
       "domain": "A String", # The domain name of the entity this permission refers to. This is an output-only field which is present when the permission type is user, group or domain.
       "name": "A String", # The name for this permission.
       "kind": "drive#permission", # This is always drive#permission.
-      "value": "A String", # The email address or domain name for the entity. This is used during inserts and is not populated in responses. When making a drive.permissions.insert request, exactly one of the id or value fields must be specified unless the permission type anyone, in which case both id and value are ignored.
-      "id": "A String", # The ID of the user this permission refers to, and identical to the permissionId in the About and Files resources. When making a drive.permissions.insert request, exactly one of the id or value fields must be specified unless the permission type anyone, in which case both id and value are ignored.
+      "value": "A String", # The email address or domain name for the entity. This is used during inserts and is not populated in responses. When making a drive.permissions.insert request, exactly one of the id or value fields must be specified unless the permission type is anyone, in which case both id and value are ignored.
+      "id": "A String", # The ID of the user this permission refers to, and identical to the permissionId in the About and Files resources. When making a drive.permissions.insert request, exactly one of the id or value fields must be specified unless the permission type is anyone, in which case both id and value are ignored.
       "authKey": "A String", # The authkey parameter required for this permission.
       "etag": "A String", # The ETag of the permission.
       "emailAddress": "A String", # The email address of the user or group this permission refers to. This is an output-only field which is present when the permission type is user or group.
@@ -1042,6 +1049,11 @@
   },
   "description": "A String", # A short description of the file.
   "webContentLink": "A String", # A link for downloading the content of the file in a browser using cookie based authentication. In cases where the content is shared publicly, the content can be downloaded without any credentials.
+  "videoMediaMetadata": { # Metadata about video media. This will only be present for video types.
+    "width": 42, # The width of the video in pixels.
+    "durationMillis": "A String", # The duration of the video in milliseconds.
+    "height": 42, # The height of the video in pixels.
+  },
   "editable": True or False, # Whether the file can be edited by the current user.
   "kind": "drive#file", # The type of file. This is always drive#file.
   "canComment": True or False, # Whether the current user can comment on the file.
@@ -1070,7 +1082,7 @@
   "alternateLink": "A String", # A link for opening the file in a relevant Google editor or viewer.
   "title": "A String", # The title of this file.
   "modifiedByMeDate": "A String", # Last time this file was modified by the user (formatted RFC 3339 timestamp). Note that setting modifiedDate will also update the modifiedByMe date for the user which set the date.
-  "thumbnail": { # Thumbnail for the file. Only accepted on upload and for files that are not already thumbnailed by Google.
+  "thumbnail": { # A thumbnail for the file. This will only be used if Drive cannot generate a standard thumbnail.
     "mimeType": "A String", # The MIME type of the thumbnail.
     "image": "A String", # The URL-safe Base64 encoded bytes of the thumbnail image. It should conform to RFC 4648 section 5.
   },
@@ -1080,8 +1092,8 @@
     "domain": "A String", # The domain name of the entity this permission refers to. This is an output-only field which is present when the permission type is user, group or domain.
     "name": "A String", # The name for this permission.
     "kind": "drive#permission", # This is always drive#permission.
-    "value": "A String", # The email address or domain name for the entity. This is used during inserts and is not populated in responses. When making a drive.permissions.insert request, exactly one of the id or value fields must be specified unless the permission type anyone, in which case both id and value are ignored.
-    "id": "A String", # The ID of the user this permission refers to, and identical to the permissionId in the About and Files resources. When making a drive.permissions.insert request, exactly one of the id or value fields must be specified unless the permission type anyone, in which case both id and value are ignored.
+    "value": "A String", # The email address or domain name for the entity. This is used during inserts and is not populated in responses. When making a drive.permissions.insert request, exactly one of the id or value fields must be specified unless the permission type is anyone, in which case both id and value are ignored.
+    "id": "A String", # The ID of the user this permission refers to, and identical to the permissionId in the About and Files resources. When making a drive.permissions.insert request, exactly one of the id or value fields must be specified unless the permission type is anyone, in which case both id and value are ignored.
     "authKey": "A String", # The authkey parameter required for this permission.
     "etag": "A String", # The ETag of the permission.
     "emailAddress": "A String", # The email address of the user or group this permission refers to. This is an output-only field which is present when the permission type is user or group.
@@ -1113,37 +1125,40 @@
 }
 
   media_body: string, The filename of the media request body, or an instance of a MediaUpload object.
-  convert: boolean, Whether to convert this file to the corresponding Google Docs format.
-  useContentAsIndexableText: boolean, Whether to use the content as indexable text.
+  ocrLanguage: string, If ocr is true, hints at the language to use. Valid values are BCP 47 codes.
+  ocr: boolean, Whether to attempt OCR on .jpg, .png, .gif, or .pdf uploads.
+  pinned: boolean, Whether to pin the head revision of the uploaded file. A file can have a maximum of 200 pinned revisions.
   visibility: string, The visibility of the new file. This parameter is only relevant when convert=false.
     Allowed values
       DEFAULT - The visibility of the new file is determined by the user's default visibility/sharing policies.
       PRIVATE - The new file will be visible to only the owner.
-  ocrLanguage: string, If ocr is true, hints at the language to use. Valid values are BCP 47 codes.
-  ocr: boolean, Whether to attempt OCR on .jpg, .png, .gif, or .pdf uploads.
-  timedTextLanguage: string, The language of the timed text.
   timedTextTrackName: string, The timed text track name.
-  pinned: boolean, Whether to pin the head revision of the uploaded file. A file can have a maximum of 200 pinned revisions.
+  convert: boolean, Whether to convert this file to the corresponding Google Docs format.
+  useContentAsIndexableText: boolean, Whether to use the content as indexable text.
+  media_mime_type: string, The MIME type of the media request body, or an instance of a MediaUpload object.
+  timedTextLanguage: string, The language of the timed text.
 
 Returns:
   An object of the form:
 
     { # The metadata for a file.
-    "mimeType": "A String", # The MIME type of the file. This is only mutable on update when uploading new content. This field can be left blank, and the mimetype will be determined from the uploaded content's MIME type.
+    "hasThumbnail": True or False, # Whether this file has a thumbnail.
     "lastViewedByMeDate": "A String", # Last time this file was viewed by the user (formatted RFC 3339 timestamp).
     "version": "A String", # A monotonically increasing version number for the file. This reflects every change made to the file on the server, even those not visible to the requesting user.
     "appDataContents": True or False, # Whether this file is in the Application Data folder.
-    "thumbnailLink": "A String", # A short-lived link to the file's thumbnail. Typically lasts on the order of hours.
+    "thumbnailLink": "A String", # A short-lived link to the file's thumbnail. Typically lasts on the order of hours. Only populated when the requesting app can access the file's content.
     "labels": { # A group of labels for the file.
       "restricted": True or False, # Whether viewers and commenters are prevented from downloading, printing, and copying this file.
-      "hidden": True or False, # Deprecated.
-      "viewed": True or False, # Whether this file has been viewed by this user.
-      "starred": True or False, # Whether this file is starred by the user.
+      "modified": True or False, # Whether the file has been modified by this user.
       "trashed": True or False, # Whether this file has been trashed. This label applies to all users accessing the file; however, only owners are allowed to see and untrash files.
+      "hidden": True or False, # Deprecated.
+      "starred": True or False, # Whether this file is starred by the user.
+      "viewed": True or False, # Whether this file has been viewed by this user.
     },
     "indexableText": { # Indexable text attributes for the file (can only be written)
       "text": "A String", # The text to be indexed for this file.
     },
+    "thumbnailVersion": "A String", # The thumbnail version for use in client-contructable thumbnail URLs or thumbnail cache invalidation.
     "explicitlyTrashed": True or False, # Whether this file has been explicitly trashed, as opposed to recursively trashed.
     "isAppAuthorized": True or False, # Whether the file was created or opened by the requesting app.
     "lastModifyingUserName": "A String", # Name of the last user to modify this file.
@@ -1172,11 +1187,7 @@
       "isAuthenticatedUser": True or False, # Whether this user is the same as the authenticated user for whom the request was made.
       "emailAddress": "A String", # The email address of the user.
     },
-    "videoMediaMetadata": { # Metadata about video media. This will only be present for video types.
-      "width": 42, # The width of the video in pixels.
-      "durationMillis": "A String", # The duration of the video in milliseconds.
-      "height": 42, # The height of the video in pixels.
-    },
+    "mimeType": "A String", # The MIME type of the file. This is only mutable on update when uploading new content. This field can be left blank, and the mimetype will be determined from the uploaded content's MIME type.
     "lastModifyingUser": { # Information about a Drive user. # The last user to modify this file.
       "picture": { # The user's profile picture.
         "url": "A String", # A URL that points to a profile picture of this user.
@@ -1216,8 +1227,8 @@
         "domain": "A String", # The domain name of the entity this permission refers to. This is an output-only field which is present when the permission type is user, group or domain.
         "name": "A String", # The name for this permission.
         "kind": "drive#permission", # This is always drive#permission.
-        "value": "A String", # The email address or domain name for the entity. This is used during inserts and is not populated in responses. When making a drive.permissions.insert request, exactly one of the id or value fields must be specified unless the permission type anyone, in which case both id and value are ignored.
-        "id": "A String", # The ID of the user this permission refers to, and identical to the permissionId in the About and Files resources. When making a drive.permissions.insert request, exactly one of the id or value fields must be specified unless the permission type anyone, in which case both id and value are ignored.
+        "value": "A String", # The email address or domain name for the entity. This is used during inserts and is not populated in responses. When making a drive.permissions.insert request, exactly one of the id or value fields must be specified unless the permission type is anyone, in which case both id and value are ignored.
+        "id": "A String", # The ID of the user this permission refers to, and identical to the permissionId in the About and Files resources. When making a drive.permissions.insert request, exactly one of the id or value fields must be specified unless the permission type is anyone, in which case both id and value are ignored.
         "authKey": "A String", # The authkey parameter required for this permission.
         "etag": "A String", # The ETag of the permission.
         "emailAddress": "A String", # The email address of the user or group this permission refers to. This is an output-only field which is present when the permission type is user or group.
@@ -1272,6 +1283,11 @@
     },
     "description": "A String", # A short description of the file.
     "webContentLink": "A String", # A link for downloading the content of the file in a browser using cookie based authentication. In cases where the content is shared publicly, the content can be downloaded without any credentials.
+    "videoMediaMetadata": { # Metadata about video media. This will only be present for video types.
+      "width": 42, # The width of the video in pixels.
+      "durationMillis": "A String", # The duration of the video in milliseconds.
+      "height": 42, # The height of the video in pixels.
+    },
     "editable": True or False, # Whether the file can be edited by the current user.
     "kind": "drive#file", # The type of file. This is always drive#file.
     "canComment": True or False, # Whether the current user can comment on the file.
@@ -1300,7 +1316,7 @@
     "alternateLink": "A String", # A link for opening the file in a relevant Google editor or viewer.
     "title": "A String", # The title of this file.
     "modifiedByMeDate": "A String", # Last time this file was modified by the user (formatted RFC 3339 timestamp). Note that setting modifiedDate will also update the modifiedByMe date for the user which set the date.
-    "thumbnail": { # Thumbnail for the file. Only accepted on upload and for files that are not already thumbnailed by Google.
+    "thumbnail": { # A thumbnail for the file. This will only be used if Drive cannot generate a standard thumbnail.
       "mimeType": "A String", # The MIME type of the thumbnail.
       "image": "A String", # The URL-safe Base64 encoded bytes of the thumbnail image. It should conform to RFC 4648 section 5.
     },
@@ -1310,8 +1326,8 @@
       "domain": "A String", # The domain name of the entity this permission refers to. This is an output-only field which is present when the permission type is user, group or domain.
       "name": "A String", # The name for this permission.
       "kind": "drive#permission", # This is always drive#permission.
-      "value": "A String", # The email address or domain name for the entity. This is used during inserts and is not populated in responses. When making a drive.permissions.insert request, exactly one of the id or value fields must be specified unless the permission type anyone, in which case both id and value are ignored.
-      "id": "A String", # The ID of the user this permission refers to, and identical to the permissionId in the About and Files resources. When making a drive.permissions.insert request, exactly one of the id or value fields must be specified unless the permission type anyone, in which case both id and value are ignored.
+      "value": "A String", # The email address or domain name for the entity. This is used during inserts and is not populated in responses. When making a drive.permissions.insert request, exactly one of the id or value fields must be specified unless the permission type is anyone, in which case both id and value are ignored.
+      "id": "A String", # The ID of the user this permission refers to, and identical to the permissionId in the About and Files resources. When making a drive.permissions.insert request, exactly one of the id or value fields must be specified unless the permission type is anyone, in which case both id and value are ignored.
       "authKey": "A String", # The authkey parameter required for this permission.
       "etag": "A String", # The ETag of the permission.
       "emailAddress": "A String", # The email address of the user or group this permission refers to. This is an output-only field which is present when the permission type is user or group.
@@ -1370,21 +1386,23 @@
     "kind": "drive#fileList", # This is always drive#fileList.
     "items": [ # The actual list of files.
       { # The metadata for a file.
-        "mimeType": "A String", # The MIME type of the file. This is only mutable on update when uploading new content. This field can be left blank, and the mimetype will be determined from the uploaded content's MIME type.
+        "hasThumbnail": True or False, # Whether this file has a thumbnail.
         "lastViewedByMeDate": "A String", # Last time this file was viewed by the user (formatted RFC 3339 timestamp).
         "version": "A String", # A monotonically increasing version number for the file. This reflects every change made to the file on the server, even those not visible to the requesting user.
         "appDataContents": True or False, # Whether this file is in the Application Data folder.
-        "thumbnailLink": "A String", # A short-lived link to the file's thumbnail. Typically lasts on the order of hours.
+        "thumbnailLink": "A String", # A short-lived link to the file's thumbnail. Typically lasts on the order of hours. Only populated when the requesting app can access the file's content.
         "labels": { # A group of labels for the file.
           "restricted": True or False, # Whether viewers and commenters are prevented from downloading, printing, and copying this file.
-          "hidden": True or False, # Deprecated.
-          "viewed": True or False, # Whether this file has been viewed by this user.
-          "starred": True or False, # Whether this file is starred by the user.
+          "modified": True or False, # Whether the file has been modified by this user.
           "trashed": True or False, # Whether this file has been trashed. This label applies to all users accessing the file; however, only owners are allowed to see and untrash files.
+          "hidden": True or False, # Deprecated.
+          "starred": True or False, # Whether this file is starred by the user.
+          "viewed": True or False, # Whether this file has been viewed by this user.
         },
         "indexableText": { # Indexable text attributes for the file (can only be written)
           "text": "A String", # The text to be indexed for this file.
         },
+        "thumbnailVersion": "A String", # The thumbnail version for use in client-contructable thumbnail URLs or thumbnail cache invalidation.
         "explicitlyTrashed": True or False, # Whether this file has been explicitly trashed, as opposed to recursively trashed.
         "isAppAuthorized": True or False, # Whether the file was created or opened by the requesting app.
         "lastModifyingUserName": "A String", # Name of the last user to modify this file.
@@ -1413,11 +1431,7 @@
           "isAuthenticatedUser": True or False, # Whether this user is the same as the authenticated user for whom the request was made.
           "emailAddress": "A String", # The email address of the user.
         },
-        "videoMediaMetadata": { # Metadata about video media. This will only be present for video types.
-          "width": 42, # The width of the video in pixels.
-          "durationMillis": "A String", # The duration of the video in milliseconds.
-          "height": 42, # The height of the video in pixels.
-        },
+        "mimeType": "A String", # The MIME type of the file. This is only mutable on update when uploading new content. This field can be left blank, and the mimetype will be determined from the uploaded content's MIME type.
         "lastModifyingUser": { # Information about a Drive user. # The last user to modify this file.
           "picture": { # The user's profile picture.
             "url": "A String", # A URL that points to a profile picture of this user.
@@ -1457,8 +1471,8 @@
             "domain": "A String", # The domain name of the entity this permission refers to. This is an output-only field which is present when the permission type is user, group or domain.
             "name": "A String", # The name for this permission.
             "kind": "drive#permission", # This is always drive#permission.
-            "value": "A String", # The email address or domain name for the entity. This is used during inserts and is not populated in responses. When making a drive.permissions.insert request, exactly one of the id or value fields must be specified unless the permission type anyone, in which case both id and value are ignored.
-            "id": "A String", # The ID of the user this permission refers to, and identical to the permissionId in the About and Files resources. When making a drive.permissions.insert request, exactly one of the id or value fields must be specified unless the permission type anyone, in which case both id and value are ignored.
+            "value": "A String", # The email address or domain name for the entity. This is used during inserts and is not populated in responses. When making a drive.permissions.insert request, exactly one of the id or value fields must be specified unless the permission type is anyone, in which case both id and value are ignored.
+            "id": "A String", # The ID of the user this permission refers to, and identical to the permissionId in the About and Files resources. When making a drive.permissions.insert request, exactly one of the id or value fields must be specified unless the permission type is anyone, in which case both id and value are ignored.
             "authKey": "A String", # The authkey parameter required for this permission.
             "etag": "A String", # The ETag of the permission.
             "emailAddress": "A String", # The email address of the user or group this permission refers to. This is an output-only field which is present when the permission type is user or group.
@@ -1513,6 +1527,11 @@
         },
         "description": "A String", # A short description of the file.
         "webContentLink": "A String", # A link for downloading the content of the file in a browser using cookie based authentication. In cases where the content is shared publicly, the content can be downloaded without any credentials.
+        "videoMediaMetadata": { # Metadata about video media. This will only be present for video types.
+          "width": 42, # The width of the video in pixels.
+          "durationMillis": "A String", # The duration of the video in milliseconds.
+          "height": 42, # The height of the video in pixels.
+        },
         "editable": True or False, # Whether the file can be edited by the current user.
         "kind": "drive#file", # The type of file. This is always drive#file.
         "canComment": True or False, # Whether the current user can comment on the file.
@@ -1541,7 +1560,7 @@
         "alternateLink": "A String", # A link for opening the file in a relevant Google editor or viewer.
         "title": "A String", # The title of this file.
         "modifiedByMeDate": "A String", # Last time this file was modified by the user (formatted RFC 3339 timestamp). Note that setting modifiedDate will also update the modifiedByMe date for the user which set the date.
-        "thumbnail": { # Thumbnail for the file. Only accepted on upload and for files that are not already thumbnailed by Google.
+        "thumbnail": { # A thumbnail for the file. This will only be used if Drive cannot generate a standard thumbnail.
           "mimeType": "A String", # The MIME type of the thumbnail.
           "image": "A String", # The URL-safe Base64 encoded bytes of the thumbnail image. It should conform to RFC 4648 section 5.
         },
@@ -1551,8 +1570,8 @@
           "domain": "A String", # The domain name of the entity this permission refers to. This is an output-only field which is present when the permission type is user, group or domain.
           "name": "A String", # The name for this permission.
           "kind": "drive#permission", # This is always drive#permission.
-          "value": "A String", # The email address or domain name for the entity. This is used during inserts and is not populated in responses. When making a drive.permissions.insert request, exactly one of the id or value fields must be specified unless the permission type anyone, in which case both id and value are ignored.
-          "id": "A String", # The ID of the user this permission refers to, and identical to the permissionId in the About and Files resources. When making a drive.permissions.insert request, exactly one of the id or value fields must be specified unless the permission type anyone, in which case both id and value are ignored.
+          "value": "A String", # The email address or domain name for the entity. This is used during inserts and is not populated in responses. When making a drive.permissions.insert request, exactly one of the id or value fields must be specified unless the permission type is anyone, in which case both id and value are ignored.
+          "id": "A String", # The ID of the user this permission refers to, and identical to the permissionId in the About and Files resources. When making a drive.permissions.insert request, exactly one of the id or value fields must be specified unless the permission type is anyone, in which case both id and value are ignored.
           "authKey": "A String", # The authkey parameter required for this permission.
           "etag": "A String", # The ETag of the permission.
           "emailAddress": "A String", # The email address of the user or group this permission refers to. This is an output-only field which is present when the permission type is user or group.
@@ -1613,21 +1632,23 @@
     The object takes the form of:
 
 { # The metadata for a file.
-  "mimeType": "A String", # The MIME type of the file. This is only mutable on update when uploading new content. This field can be left blank, and the mimetype will be determined from the uploaded content's MIME type.
+  "hasThumbnail": True or False, # Whether this file has a thumbnail.
   "lastViewedByMeDate": "A String", # Last time this file was viewed by the user (formatted RFC 3339 timestamp).
   "version": "A String", # A monotonically increasing version number for the file. This reflects every change made to the file on the server, even those not visible to the requesting user.
   "appDataContents": True or False, # Whether this file is in the Application Data folder.
-  "thumbnailLink": "A String", # A short-lived link to the file's thumbnail. Typically lasts on the order of hours.
+  "thumbnailLink": "A String", # A short-lived link to the file's thumbnail. Typically lasts on the order of hours. Only populated when the requesting app can access the file's content.
   "labels": { # A group of labels for the file.
     "restricted": True or False, # Whether viewers and commenters are prevented from downloading, printing, and copying this file.
-    "hidden": True or False, # Deprecated.
-    "viewed": True or False, # Whether this file has been viewed by this user.
-    "starred": True or False, # Whether this file is starred by the user.
+    "modified": True or False, # Whether the file has been modified by this user.
     "trashed": True or False, # Whether this file has been trashed. This label applies to all users accessing the file; however, only owners are allowed to see and untrash files.
+    "hidden": True or False, # Deprecated.
+    "starred": True or False, # Whether this file is starred by the user.
+    "viewed": True or False, # Whether this file has been viewed by this user.
   },
   "indexableText": { # Indexable text attributes for the file (can only be written)
     "text": "A String", # The text to be indexed for this file.
   },
+  "thumbnailVersion": "A String", # The thumbnail version for use in client-contructable thumbnail URLs or thumbnail cache invalidation.
   "explicitlyTrashed": True or False, # Whether this file has been explicitly trashed, as opposed to recursively trashed.
   "isAppAuthorized": True or False, # Whether the file was created or opened by the requesting app.
   "lastModifyingUserName": "A String", # Name of the last user to modify this file.
@@ -1656,11 +1677,7 @@
     "isAuthenticatedUser": True or False, # Whether this user is the same as the authenticated user for whom the request was made.
     "emailAddress": "A String", # The email address of the user.
   },
-  "videoMediaMetadata": { # Metadata about video media. This will only be present for video types.
-    "width": 42, # The width of the video in pixels.
-    "durationMillis": "A String", # The duration of the video in milliseconds.
-    "height": 42, # The height of the video in pixels.
-  },
+  "mimeType": "A String", # The MIME type of the file. This is only mutable on update when uploading new content. This field can be left blank, and the mimetype will be determined from the uploaded content's MIME type.
   "lastModifyingUser": { # Information about a Drive user. # The last user to modify this file.
     "picture": { # The user's profile picture.
       "url": "A String", # A URL that points to a profile picture of this user.
@@ -1700,8 +1717,8 @@
       "domain": "A String", # The domain name of the entity this permission refers to. This is an output-only field which is present when the permission type is user, group or domain.
       "name": "A String", # The name for this permission.
       "kind": "drive#permission", # This is always drive#permission.
-      "value": "A String", # The email address or domain name for the entity. This is used during inserts and is not populated in responses. When making a drive.permissions.insert request, exactly one of the id or value fields must be specified unless the permission type anyone, in which case both id and value are ignored.
-      "id": "A String", # The ID of the user this permission refers to, and identical to the permissionId in the About and Files resources. When making a drive.permissions.insert request, exactly one of the id or value fields must be specified unless the permission type anyone, in which case both id and value are ignored.
+      "value": "A String", # The email address or domain name for the entity. This is used during inserts and is not populated in responses. When making a drive.permissions.insert request, exactly one of the id or value fields must be specified unless the permission type is anyone, in which case both id and value are ignored.
+      "id": "A String", # The ID of the user this permission refers to, and identical to the permissionId in the About and Files resources. When making a drive.permissions.insert request, exactly one of the id or value fields must be specified unless the permission type is anyone, in which case both id and value are ignored.
       "authKey": "A String", # The authkey parameter required for this permission.
       "etag": "A String", # The ETag of the permission.
       "emailAddress": "A String", # The email address of the user or group this permission refers to. This is an output-only field which is present when the permission type is user or group.
@@ -1756,6 +1773,11 @@
   },
   "description": "A String", # A short description of the file.
   "webContentLink": "A String", # A link for downloading the content of the file in a browser using cookie based authentication. In cases where the content is shared publicly, the content can be downloaded without any credentials.
+  "videoMediaMetadata": { # Metadata about video media. This will only be present for video types.
+    "width": 42, # The width of the video in pixels.
+    "durationMillis": "A String", # The duration of the video in milliseconds.
+    "height": 42, # The height of the video in pixels.
+  },
   "editable": True or False, # Whether the file can be edited by the current user.
   "kind": "drive#file", # The type of file. This is always drive#file.
   "canComment": True or False, # Whether the current user can comment on the file.
@@ -1784,7 +1806,7 @@
   "alternateLink": "A String", # A link for opening the file in a relevant Google editor or viewer.
   "title": "A String", # The title of this file.
   "modifiedByMeDate": "A String", # Last time this file was modified by the user (formatted RFC 3339 timestamp). Note that setting modifiedDate will also update the modifiedByMe date for the user which set the date.
-  "thumbnail": { # Thumbnail for the file. Only accepted on upload and for files that are not already thumbnailed by Google.
+  "thumbnail": { # A thumbnail for the file. This will only be used if Drive cannot generate a standard thumbnail.
     "mimeType": "A String", # The MIME type of the thumbnail.
     "image": "A String", # The URL-safe Base64 encoded bytes of the thumbnail image. It should conform to RFC 4648 section 5.
   },
@@ -1794,8 +1816,8 @@
     "domain": "A String", # The domain name of the entity this permission refers to. This is an output-only field which is present when the permission type is user, group or domain.
     "name": "A String", # The name for this permission.
     "kind": "drive#permission", # This is always drive#permission.
-    "value": "A String", # The email address or domain name for the entity. This is used during inserts and is not populated in responses. When making a drive.permissions.insert request, exactly one of the id or value fields must be specified unless the permission type anyone, in which case both id and value are ignored.
-    "id": "A String", # The ID of the user this permission refers to, and identical to the permissionId in the About and Files resources. When making a drive.permissions.insert request, exactly one of the id or value fields must be specified unless the permission type anyone, in which case both id and value are ignored.
+    "value": "A String", # The email address or domain name for the entity. This is used during inserts and is not populated in responses. When making a drive.permissions.insert request, exactly one of the id or value fields must be specified unless the permission type is anyone, in which case both id and value are ignored.
+    "id": "A String", # The ID of the user this permission refers to, and identical to the permissionId in the About and Files resources. When making a drive.permissions.insert request, exactly one of the id or value fields must be specified unless the permission type is anyone, in which case both id and value are ignored.
     "authKey": "A String", # The authkey parameter required for this permission.
     "etag": "A String", # The ETag of the permission.
     "emailAddress": "A String", # The email address of the user or group this permission refers to. This is an output-only field which is present when the permission type is user or group.
@@ -1851,21 +1873,23 @@
   An object of the form:
 
     { # The metadata for a file.
-    "mimeType": "A String", # The MIME type of the file. This is only mutable on update when uploading new content. This field can be left blank, and the mimetype will be determined from the uploaded content's MIME type.
+    "hasThumbnail": True or False, # Whether this file has a thumbnail.
     "lastViewedByMeDate": "A String", # Last time this file was viewed by the user (formatted RFC 3339 timestamp).
     "version": "A String", # A monotonically increasing version number for the file. This reflects every change made to the file on the server, even those not visible to the requesting user.
     "appDataContents": True or False, # Whether this file is in the Application Data folder.
-    "thumbnailLink": "A String", # A short-lived link to the file's thumbnail. Typically lasts on the order of hours.
+    "thumbnailLink": "A String", # A short-lived link to the file's thumbnail. Typically lasts on the order of hours. Only populated when the requesting app can access the file's content.
     "labels": { # A group of labels for the file.
       "restricted": True or False, # Whether viewers and commenters are prevented from downloading, printing, and copying this file.
-      "hidden": True or False, # Deprecated.
-      "viewed": True or False, # Whether this file has been viewed by this user.
-      "starred": True or False, # Whether this file is starred by the user.
+      "modified": True or False, # Whether the file has been modified by this user.
       "trashed": True or False, # Whether this file has been trashed. This label applies to all users accessing the file; however, only owners are allowed to see and untrash files.
+      "hidden": True or False, # Deprecated.
+      "starred": True or False, # Whether this file is starred by the user.
+      "viewed": True or False, # Whether this file has been viewed by this user.
     },
     "indexableText": { # Indexable text attributes for the file (can only be written)
       "text": "A String", # The text to be indexed for this file.
     },
+    "thumbnailVersion": "A String", # The thumbnail version for use in client-contructable thumbnail URLs or thumbnail cache invalidation.
     "explicitlyTrashed": True or False, # Whether this file has been explicitly trashed, as opposed to recursively trashed.
     "isAppAuthorized": True or False, # Whether the file was created or opened by the requesting app.
     "lastModifyingUserName": "A String", # Name of the last user to modify this file.
@@ -1894,11 +1918,7 @@
       "isAuthenticatedUser": True or False, # Whether this user is the same as the authenticated user for whom the request was made.
       "emailAddress": "A String", # The email address of the user.
     },
-    "videoMediaMetadata": { # Metadata about video media. This will only be present for video types.
-      "width": 42, # The width of the video in pixels.
-      "durationMillis": "A String", # The duration of the video in milliseconds.
-      "height": 42, # The height of the video in pixels.
-    },
+    "mimeType": "A String", # The MIME type of the file. This is only mutable on update when uploading new content. This field can be left blank, and the mimetype will be determined from the uploaded content's MIME type.
     "lastModifyingUser": { # Information about a Drive user. # The last user to modify this file.
       "picture": { # The user's profile picture.
         "url": "A String", # A URL that points to a profile picture of this user.
@@ -1938,8 +1958,8 @@
         "domain": "A String", # The domain name of the entity this permission refers to. This is an output-only field which is present when the permission type is user, group or domain.
         "name": "A String", # The name for this permission.
         "kind": "drive#permission", # This is always drive#permission.
-        "value": "A String", # The email address or domain name for the entity. This is used during inserts and is not populated in responses. When making a drive.permissions.insert request, exactly one of the id or value fields must be specified unless the permission type anyone, in which case both id and value are ignored.
-        "id": "A String", # The ID of the user this permission refers to, and identical to the permissionId in the About and Files resources. When making a drive.permissions.insert request, exactly one of the id or value fields must be specified unless the permission type anyone, in which case both id and value are ignored.
+        "value": "A String", # The email address or domain name for the entity. This is used during inserts and is not populated in responses. When making a drive.permissions.insert request, exactly one of the id or value fields must be specified unless the permission type is anyone, in which case both id and value are ignored.
+        "id": "A String", # The ID of the user this permission refers to, and identical to the permissionId in the About and Files resources. When making a drive.permissions.insert request, exactly one of the id or value fields must be specified unless the permission type is anyone, in which case both id and value are ignored.
         "authKey": "A String", # The authkey parameter required for this permission.
         "etag": "A String", # The ETag of the permission.
         "emailAddress": "A String", # The email address of the user or group this permission refers to. This is an output-only field which is present when the permission type is user or group.
@@ -1994,6 +2014,11 @@
     },
     "description": "A String", # A short description of the file.
     "webContentLink": "A String", # A link for downloading the content of the file in a browser using cookie based authentication. In cases where the content is shared publicly, the content can be downloaded without any credentials.
+    "videoMediaMetadata": { # Metadata about video media. This will only be present for video types.
+      "width": 42, # The width of the video in pixels.
+      "durationMillis": "A String", # The duration of the video in milliseconds.
+      "height": 42, # The height of the video in pixels.
+    },
     "editable": True or False, # Whether the file can be edited by the current user.
     "kind": "drive#file", # The type of file. This is always drive#file.
     "canComment": True or False, # Whether the current user can comment on the file.
@@ -2022,7 +2047,7 @@
     "alternateLink": "A String", # A link for opening the file in a relevant Google editor or viewer.
     "title": "A String", # The title of this file.
     "modifiedByMeDate": "A String", # Last time this file was modified by the user (formatted RFC 3339 timestamp). Note that setting modifiedDate will also update the modifiedByMe date for the user which set the date.
-    "thumbnail": { # Thumbnail for the file. Only accepted on upload and for files that are not already thumbnailed by Google.
+    "thumbnail": { # A thumbnail for the file. This will only be used if Drive cannot generate a standard thumbnail.
       "mimeType": "A String", # The MIME type of the thumbnail.
       "image": "A String", # The URL-safe Base64 encoded bytes of the thumbnail image. It should conform to RFC 4648 section 5.
     },
@@ -2032,8 +2057,8 @@
       "domain": "A String", # The domain name of the entity this permission refers to. This is an output-only field which is present when the permission type is user, group or domain.
       "name": "A String", # The name for this permission.
       "kind": "drive#permission", # This is always drive#permission.
-      "value": "A String", # The email address or domain name for the entity. This is used during inserts and is not populated in responses. When making a drive.permissions.insert request, exactly one of the id or value fields must be specified unless the permission type anyone, in which case both id and value are ignored.
-      "id": "A String", # The ID of the user this permission refers to, and identical to the permissionId in the About and Files resources. When making a drive.permissions.insert request, exactly one of the id or value fields must be specified unless the permission type anyone, in which case both id and value are ignored.
+      "value": "A String", # The email address or domain name for the entity. This is used during inserts and is not populated in responses. When making a drive.permissions.insert request, exactly one of the id or value fields must be specified unless the permission type is anyone, in which case both id and value are ignored.
+      "id": "A String", # The ID of the user this permission refers to, and identical to the permissionId in the About and Files resources. When making a drive.permissions.insert request, exactly one of the id or value fields must be specified unless the permission type is anyone, in which case both id and value are ignored.
       "authKey": "A String", # The authkey parameter required for this permission.
       "etag": "A String", # The ETag of the permission.
       "emailAddress": "A String", # The email address of the user or group this permission refers to. This is an output-only field which is present when the permission type is user or group.
@@ -2076,21 +2101,23 @@
   An object of the form:
 
     { # The metadata for a file.
-    "mimeType": "A String", # The MIME type of the file. This is only mutable on update when uploading new content. This field can be left blank, and the mimetype will be determined from the uploaded content's MIME type.
+    "hasThumbnail": True or False, # Whether this file has a thumbnail.
     "lastViewedByMeDate": "A String", # Last time this file was viewed by the user (formatted RFC 3339 timestamp).
     "version": "A String", # A monotonically increasing version number for the file. This reflects every change made to the file on the server, even those not visible to the requesting user.
     "appDataContents": True or False, # Whether this file is in the Application Data folder.
-    "thumbnailLink": "A String", # A short-lived link to the file's thumbnail. Typically lasts on the order of hours.
+    "thumbnailLink": "A String", # A short-lived link to the file's thumbnail. Typically lasts on the order of hours. Only populated when the requesting app can access the file's content.
     "labels": { # A group of labels for the file.
       "restricted": True or False, # Whether viewers and commenters are prevented from downloading, printing, and copying this file.
-      "hidden": True or False, # Deprecated.
-      "viewed": True or False, # Whether this file has been viewed by this user.
-      "starred": True or False, # Whether this file is starred by the user.
+      "modified": True or False, # Whether the file has been modified by this user.
       "trashed": True or False, # Whether this file has been trashed. This label applies to all users accessing the file; however, only owners are allowed to see and untrash files.
+      "hidden": True or False, # Deprecated.
+      "starred": True or False, # Whether this file is starred by the user.
+      "viewed": True or False, # Whether this file has been viewed by this user.
     },
     "indexableText": { # Indexable text attributes for the file (can only be written)
       "text": "A String", # The text to be indexed for this file.
     },
+    "thumbnailVersion": "A String", # The thumbnail version for use in client-contructable thumbnail URLs or thumbnail cache invalidation.
     "explicitlyTrashed": True or False, # Whether this file has been explicitly trashed, as opposed to recursively trashed.
     "isAppAuthorized": True or False, # Whether the file was created or opened by the requesting app.
     "lastModifyingUserName": "A String", # Name of the last user to modify this file.
@@ -2119,11 +2146,7 @@
       "isAuthenticatedUser": True or False, # Whether this user is the same as the authenticated user for whom the request was made.
       "emailAddress": "A String", # The email address of the user.
     },
-    "videoMediaMetadata": { # Metadata about video media. This will only be present for video types.
-      "width": 42, # The width of the video in pixels.
-      "durationMillis": "A String", # The duration of the video in milliseconds.
-      "height": 42, # The height of the video in pixels.
-    },
+    "mimeType": "A String", # The MIME type of the file. This is only mutable on update when uploading new content. This field can be left blank, and the mimetype will be determined from the uploaded content's MIME type.
     "lastModifyingUser": { # Information about a Drive user. # The last user to modify this file.
       "picture": { # The user's profile picture.
         "url": "A String", # A URL that points to a profile picture of this user.
@@ -2163,8 +2186,8 @@
         "domain": "A String", # The domain name of the entity this permission refers to. This is an output-only field which is present when the permission type is user, group or domain.
         "name": "A String", # The name for this permission.
         "kind": "drive#permission", # This is always drive#permission.
-        "value": "A String", # The email address or domain name for the entity. This is used during inserts and is not populated in responses. When making a drive.permissions.insert request, exactly one of the id or value fields must be specified unless the permission type anyone, in which case both id and value are ignored.
-        "id": "A String", # The ID of the user this permission refers to, and identical to the permissionId in the About and Files resources. When making a drive.permissions.insert request, exactly one of the id or value fields must be specified unless the permission type anyone, in which case both id and value are ignored.
+        "value": "A String", # The email address or domain name for the entity. This is used during inserts and is not populated in responses. When making a drive.permissions.insert request, exactly one of the id or value fields must be specified unless the permission type is anyone, in which case both id and value are ignored.
+        "id": "A String", # The ID of the user this permission refers to, and identical to the permissionId in the About and Files resources. When making a drive.permissions.insert request, exactly one of the id or value fields must be specified unless the permission type is anyone, in which case both id and value are ignored.
         "authKey": "A String", # The authkey parameter required for this permission.
         "etag": "A String", # The ETag of the permission.
         "emailAddress": "A String", # The email address of the user or group this permission refers to. This is an output-only field which is present when the permission type is user or group.
@@ -2219,6 +2242,11 @@
     },
     "description": "A String", # A short description of the file.
     "webContentLink": "A String", # A link for downloading the content of the file in a browser using cookie based authentication. In cases where the content is shared publicly, the content can be downloaded without any credentials.
+    "videoMediaMetadata": { # Metadata about video media. This will only be present for video types.
+      "width": 42, # The width of the video in pixels.
+      "durationMillis": "A String", # The duration of the video in milliseconds.
+      "height": 42, # The height of the video in pixels.
+    },
     "editable": True or False, # Whether the file can be edited by the current user.
     "kind": "drive#file", # The type of file. This is always drive#file.
     "canComment": True or False, # Whether the current user can comment on the file.
@@ -2247,7 +2275,7 @@
     "alternateLink": "A String", # A link for opening the file in a relevant Google editor or viewer.
     "title": "A String", # The title of this file.
     "modifiedByMeDate": "A String", # Last time this file was modified by the user (formatted RFC 3339 timestamp). Note that setting modifiedDate will also update the modifiedByMe date for the user which set the date.
-    "thumbnail": { # Thumbnail for the file. Only accepted on upload and for files that are not already thumbnailed by Google.
+    "thumbnail": { # A thumbnail for the file. This will only be used if Drive cannot generate a standard thumbnail.
       "mimeType": "A String", # The MIME type of the thumbnail.
       "image": "A String", # The URL-safe Base64 encoded bytes of the thumbnail image. It should conform to RFC 4648 section 5.
     },
@@ -2257,8 +2285,8 @@
       "domain": "A String", # The domain name of the entity this permission refers to. This is an output-only field which is present when the permission type is user, group or domain.
       "name": "A String", # The name for this permission.
       "kind": "drive#permission", # This is always drive#permission.
-      "value": "A String", # The email address or domain name for the entity. This is used during inserts and is not populated in responses. When making a drive.permissions.insert request, exactly one of the id or value fields must be specified unless the permission type anyone, in which case both id and value are ignored.
-      "id": "A String", # The ID of the user this permission refers to, and identical to the permissionId in the About and Files resources. When making a drive.permissions.insert request, exactly one of the id or value fields must be specified unless the permission type anyone, in which case both id and value are ignored.
+      "value": "A String", # The email address or domain name for the entity. This is used during inserts and is not populated in responses. When making a drive.permissions.insert request, exactly one of the id or value fields must be specified unless the permission type is anyone, in which case both id and value are ignored.
+      "id": "A String", # The ID of the user this permission refers to, and identical to the permissionId in the About and Files resources. When making a drive.permissions.insert request, exactly one of the id or value fields must be specified unless the permission type is anyone, in which case both id and value are ignored.
       "authKey": "A String", # The authkey parameter required for this permission.
       "etag": "A String", # The ETag of the permission.
       "emailAddress": "A String", # The email address of the user or group this permission refers to. This is an output-only field which is present when the permission type is user or group.
@@ -2301,21 +2329,23 @@
   An object of the form:
 
     { # The metadata for a file.
-    "mimeType": "A String", # The MIME type of the file. This is only mutable on update when uploading new content. This field can be left blank, and the mimetype will be determined from the uploaded content's MIME type.
+    "hasThumbnail": True or False, # Whether this file has a thumbnail.
     "lastViewedByMeDate": "A String", # Last time this file was viewed by the user (formatted RFC 3339 timestamp).
     "version": "A String", # A monotonically increasing version number for the file. This reflects every change made to the file on the server, even those not visible to the requesting user.
     "appDataContents": True or False, # Whether this file is in the Application Data folder.
-    "thumbnailLink": "A String", # A short-lived link to the file's thumbnail. Typically lasts on the order of hours.
+    "thumbnailLink": "A String", # A short-lived link to the file's thumbnail. Typically lasts on the order of hours. Only populated when the requesting app can access the file's content.
     "labels": { # A group of labels for the file.
       "restricted": True or False, # Whether viewers and commenters are prevented from downloading, printing, and copying this file.
-      "hidden": True or False, # Deprecated.
-      "viewed": True or False, # Whether this file has been viewed by this user.
-      "starred": True or False, # Whether this file is starred by the user.
+      "modified": True or False, # Whether the file has been modified by this user.
       "trashed": True or False, # Whether this file has been trashed. This label applies to all users accessing the file; however, only owners are allowed to see and untrash files.
+      "hidden": True or False, # Deprecated.
+      "starred": True or False, # Whether this file is starred by the user.
+      "viewed": True or False, # Whether this file has been viewed by this user.
     },
     "indexableText": { # Indexable text attributes for the file (can only be written)
       "text": "A String", # The text to be indexed for this file.
     },
+    "thumbnailVersion": "A String", # The thumbnail version for use in client-contructable thumbnail URLs or thumbnail cache invalidation.
     "explicitlyTrashed": True or False, # Whether this file has been explicitly trashed, as opposed to recursively trashed.
     "isAppAuthorized": True or False, # Whether the file was created or opened by the requesting app.
     "lastModifyingUserName": "A String", # Name of the last user to modify this file.
@@ -2344,11 +2374,7 @@
       "isAuthenticatedUser": True or False, # Whether this user is the same as the authenticated user for whom the request was made.
       "emailAddress": "A String", # The email address of the user.
     },
-    "videoMediaMetadata": { # Metadata about video media. This will only be present for video types.
-      "width": 42, # The width of the video in pixels.
-      "durationMillis": "A String", # The duration of the video in milliseconds.
-      "height": 42, # The height of the video in pixels.
-    },
+    "mimeType": "A String", # The MIME type of the file. This is only mutable on update when uploading new content. This field can be left blank, and the mimetype will be determined from the uploaded content's MIME type.
     "lastModifyingUser": { # Information about a Drive user. # The last user to modify this file.
       "picture": { # The user's profile picture.
         "url": "A String", # A URL that points to a profile picture of this user.
@@ -2388,8 +2414,8 @@
         "domain": "A String", # The domain name of the entity this permission refers to. This is an output-only field which is present when the permission type is user, group or domain.
         "name": "A String", # The name for this permission.
         "kind": "drive#permission", # This is always drive#permission.
-        "value": "A String", # The email address or domain name for the entity. This is used during inserts and is not populated in responses. When making a drive.permissions.insert request, exactly one of the id or value fields must be specified unless the permission type anyone, in which case both id and value are ignored.
-        "id": "A String", # The ID of the user this permission refers to, and identical to the permissionId in the About and Files resources. When making a drive.permissions.insert request, exactly one of the id or value fields must be specified unless the permission type anyone, in which case both id and value are ignored.
+        "value": "A String", # The email address or domain name for the entity. This is used during inserts and is not populated in responses. When making a drive.permissions.insert request, exactly one of the id or value fields must be specified unless the permission type is anyone, in which case both id and value are ignored.
+        "id": "A String", # The ID of the user this permission refers to, and identical to the permissionId in the About and Files resources. When making a drive.permissions.insert request, exactly one of the id or value fields must be specified unless the permission type is anyone, in which case both id and value are ignored.
         "authKey": "A String", # The authkey parameter required for this permission.
         "etag": "A String", # The ETag of the permission.
         "emailAddress": "A String", # The email address of the user or group this permission refers to. This is an output-only field which is present when the permission type is user or group.
@@ -2444,6 +2470,11 @@
     },
     "description": "A String", # A short description of the file.
     "webContentLink": "A String", # A link for downloading the content of the file in a browser using cookie based authentication. In cases where the content is shared publicly, the content can be downloaded without any credentials.
+    "videoMediaMetadata": { # Metadata about video media. This will only be present for video types.
+      "width": 42, # The width of the video in pixels.
+      "durationMillis": "A String", # The duration of the video in milliseconds.
+      "height": 42, # The height of the video in pixels.
+    },
     "editable": True or False, # Whether the file can be edited by the current user.
     "kind": "drive#file", # The type of file. This is always drive#file.
     "canComment": True or False, # Whether the current user can comment on the file.
@@ -2472,7 +2503,7 @@
     "alternateLink": "A String", # A link for opening the file in a relevant Google editor or viewer.
     "title": "A String", # The title of this file.
     "modifiedByMeDate": "A String", # Last time this file was modified by the user (formatted RFC 3339 timestamp). Note that setting modifiedDate will also update the modifiedByMe date for the user which set the date.
-    "thumbnail": { # Thumbnail for the file. Only accepted on upload and for files that are not already thumbnailed by Google.
+    "thumbnail": { # A thumbnail for the file. This will only be used if Drive cannot generate a standard thumbnail.
       "mimeType": "A String", # The MIME type of the thumbnail.
       "image": "A String", # The URL-safe Base64 encoded bytes of the thumbnail image. It should conform to RFC 4648 section 5.
     },
@@ -2482,8 +2513,8 @@
       "domain": "A String", # The domain name of the entity this permission refers to. This is an output-only field which is present when the permission type is user, group or domain.
       "name": "A String", # The name for this permission.
       "kind": "drive#permission", # This is always drive#permission.
-      "value": "A String", # The email address or domain name for the entity. This is used during inserts and is not populated in responses. When making a drive.permissions.insert request, exactly one of the id or value fields must be specified unless the permission type anyone, in which case both id and value are ignored.
-      "id": "A String", # The ID of the user this permission refers to, and identical to the permissionId in the About and Files resources. When making a drive.permissions.insert request, exactly one of the id or value fields must be specified unless the permission type anyone, in which case both id and value are ignored.
+      "value": "A String", # The email address or domain name for the entity. This is used during inserts and is not populated in responses. When making a drive.permissions.insert request, exactly one of the id or value fields must be specified unless the permission type is anyone, in which case both id and value are ignored.
+      "id": "A String", # The ID of the user this permission refers to, and identical to the permissionId in the About and Files resources. When making a drive.permissions.insert request, exactly one of the id or value fields must be specified unless the permission type is anyone, in which case both id and value are ignored.
       "authKey": "A String", # The authkey parameter required for this permission.
       "etag": "A String", # The ETag of the permission.
       "emailAddress": "A String", # The email address of the user or group this permission refers to. This is an output-only field which is present when the permission type is user or group.
@@ -2526,21 +2557,23 @@
   An object of the form:
 
     { # The metadata for a file.
-    "mimeType": "A String", # The MIME type of the file. This is only mutable on update when uploading new content. This field can be left blank, and the mimetype will be determined from the uploaded content's MIME type.
+    "hasThumbnail": True or False, # Whether this file has a thumbnail.
     "lastViewedByMeDate": "A String", # Last time this file was viewed by the user (formatted RFC 3339 timestamp).
     "version": "A String", # A monotonically increasing version number for the file. This reflects every change made to the file on the server, even those not visible to the requesting user.
     "appDataContents": True or False, # Whether this file is in the Application Data folder.
-    "thumbnailLink": "A String", # A short-lived link to the file's thumbnail. Typically lasts on the order of hours.
+    "thumbnailLink": "A String", # A short-lived link to the file's thumbnail. Typically lasts on the order of hours. Only populated when the requesting app can access the file's content.
     "labels": { # A group of labels for the file.
       "restricted": True or False, # Whether viewers and commenters are prevented from downloading, printing, and copying this file.
-      "hidden": True or False, # Deprecated.
-      "viewed": True or False, # Whether this file has been viewed by this user.
-      "starred": True or False, # Whether this file is starred by the user.
+      "modified": True or False, # Whether the file has been modified by this user.
       "trashed": True or False, # Whether this file has been trashed. This label applies to all users accessing the file; however, only owners are allowed to see and untrash files.
+      "hidden": True or False, # Deprecated.
+      "starred": True or False, # Whether this file is starred by the user.
+      "viewed": True or False, # Whether this file has been viewed by this user.
     },
     "indexableText": { # Indexable text attributes for the file (can only be written)
       "text": "A String", # The text to be indexed for this file.
     },
+    "thumbnailVersion": "A String", # The thumbnail version for use in client-contructable thumbnail URLs or thumbnail cache invalidation.
     "explicitlyTrashed": True or False, # Whether this file has been explicitly trashed, as opposed to recursively trashed.
     "isAppAuthorized": True or False, # Whether the file was created or opened by the requesting app.
     "lastModifyingUserName": "A String", # Name of the last user to modify this file.
@@ -2569,11 +2602,7 @@
       "isAuthenticatedUser": True or False, # Whether this user is the same as the authenticated user for whom the request was made.
       "emailAddress": "A String", # The email address of the user.
     },
-    "videoMediaMetadata": { # Metadata about video media. This will only be present for video types.
-      "width": 42, # The width of the video in pixels.
-      "durationMillis": "A String", # The duration of the video in milliseconds.
-      "height": 42, # The height of the video in pixels.
-    },
+    "mimeType": "A String", # The MIME type of the file. This is only mutable on update when uploading new content. This field can be left blank, and the mimetype will be determined from the uploaded content's MIME type.
     "lastModifyingUser": { # Information about a Drive user. # The last user to modify this file.
       "picture": { # The user's profile picture.
         "url": "A String", # A URL that points to a profile picture of this user.
@@ -2613,8 +2642,8 @@
         "domain": "A String", # The domain name of the entity this permission refers to. This is an output-only field which is present when the permission type is user, group or domain.
         "name": "A String", # The name for this permission.
         "kind": "drive#permission", # This is always drive#permission.
-        "value": "A String", # The email address or domain name for the entity. This is used during inserts and is not populated in responses. When making a drive.permissions.insert request, exactly one of the id or value fields must be specified unless the permission type anyone, in which case both id and value are ignored.
-        "id": "A String", # The ID of the user this permission refers to, and identical to the permissionId in the About and Files resources. When making a drive.permissions.insert request, exactly one of the id or value fields must be specified unless the permission type anyone, in which case both id and value are ignored.
+        "value": "A String", # The email address or domain name for the entity. This is used during inserts and is not populated in responses. When making a drive.permissions.insert request, exactly one of the id or value fields must be specified unless the permission type is anyone, in which case both id and value are ignored.
+        "id": "A String", # The ID of the user this permission refers to, and identical to the permissionId in the About and Files resources. When making a drive.permissions.insert request, exactly one of the id or value fields must be specified unless the permission type is anyone, in which case both id and value are ignored.
         "authKey": "A String", # The authkey parameter required for this permission.
         "etag": "A String", # The ETag of the permission.
         "emailAddress": "A String", # The email address of the user or group this permission refers to. This is an output-only field which is present when the permission type is user or group.
@@ -2669,6 +2698,11 @@
     },
     "description": "A String", # A short description of the file.
     "webContentLink": "A String", # A link for downloading the content of the file in a browser using cookie based authentication. In cases where the content is shared publicly, the content can be downloaded without any credentials.
+    "videoMediaMetadata": { # Metadata about video media. This will only be present for video types.
+      "width": 42, # The width of the video in pixels.
+      "durationMillis": "A String", # The duration of the video in milliseconds.
+      "height": 42, # The height of the video in pixels.
+    },
     "editable": True or False, # Whether the file can be edited by the current user.
     "kind": "drive#file", # The type of file. This is always drive#file.
     "canComment": True or False, # Whether the current user can comment on the file.
@@ -2697,7 +2731,7 @@
     "alternateLink": "A String", # A link for opening the file in a relevant Google editor or viewer.
     "title": "A String", # The title of this file.
     "modifiedByMeDate": "A String", # Last time this file was modified by the user (formatted RFC 3339 timestamp). Note that setting modifiedDate will also update the modifiedByMe date for the user which set the date.
-    "thumbnail": { # Thumbnail for the file. Only accepted on upload and for files that are not already thumbnailed by Google.
+    "thumbnail": { # A thumbnail for the file. This will only be used if Drive cannot generate a standard thumbnail.
       "mimeType": "A String", # The MIME type of the thumbnail.
       "image": "A String", # The URL-safe Base64 encoded bytes of the thumbnail image. It should conform to RFC 4648 section 5.
     },
@@ -2707,8 +2741,8 @@
       "domain": "A String", # The domain name of the entity this permission refers to. This is an output-only field which is present when the permission type is user, group or domain.
       "name": "A String", # The name for this permission.
       "kind": "drive#permission", # This is always drive#permission.
-      "value": "A String", # The email address or domain name for the entity. This is used during inserts and is not populated in responses. When making a drive.permissions.insert request, exactly one of the id or value fields must be specified unless the permission type anyone, in which case both id and value are ignored.
-      "id": "A String", # The ID of the user this permission refers to, and identical to the permissionId in the About and Files resources. When making a drive.permissions.insert request, exactly one of the id or value fields must be specified unless the permission type anyone, in which case both id and value are ignored.
+      "value": "A String", # The email address or domain name for the entity. This is used during inserts and is not populated in responses. When making a drive.permissions.insert request, exactly one of the id or value fields must be specified unless the permission type is anyone, in which case both id and value are ignored.
+      "id": "A String", # The ID of the user this permission refers to, and identical to the permissionId in the About and Files resources. When making a drive.permissions.insert request, exactly one of the id or value fields must be specified unless the permission type is anyone, in which case both id and value are ignored.
       "authKey": "A String", # The authkey parameter required for this permission.
       "etag": "A String", # The ETag of the permission.
       "emailAddress": "A String", # The email address of the user or group this permission refers to. This is an output-only field which is present when the permission type is user or group.
@@ -2741,7 +2775,7 @@
 </div>
 
 <div class="method">
-    <code class="details" id="update">update(fileId, body=None, newRevision=None, modifiedDateBehavior=None, media_body=None, ocrLanguage=None, ocr=None, pinned=None, addParents=None, removeParents=None, updateViewedDate=None, timedTextTrackName=None, convert=None, useContentAsIndexableText=None, setModifiedDate=None, timedTextLanguage=None)</code>
+    <code class="details" id="update">update(fileId, body=None, newRevision=None, modifiedDateBehavior=None, media_body=None, ocrLanguage=None, ocr=None, pinned=None, addParents=None, removeParents=None, updateViewedDate=None, timedTextTrackName=None, convert=None, useContentAsIndexableText=None, media_mime_type=None, setModifiedDate=None, timedTextLanguage=None)</code>
   <pre>Updates file metadata and/or content.
 
 Args:
@@ -2750,21 +2784,23 @@
     The object takes the form of:
 
 { # The metadata for a file.
-  "mimeType": "A String", # The MIME type of the file. This is only mutable on update when uploading new content. This field can be left blank, and the mimetype will be determined from the uploaded content's MIME type.
+  "hasThumbnail": True or False, # Whether this file has a thumbnail.
   "lastViewedByMeDate": "A String", # Last time this file was viewed by the user (formatted RFC 3339 timestamp).
   "version": "A String", # A monotonically increasing version number for the file. This reflects every change made to the file on the server, even those not visible to the requesting user.
   "appDataContents": True or False, # Whether this file is in the Application Data folder.
-  "thumbnailLink": "A String", # A short-lived link to the file's thumbnail. Typically lasts on the order of hours.
+  "thumbnailLink": "A String", # A short-lived link to the file's thumbnail. Typically lasts on the order of hours. Only populated when the requesting app can access the file's content.
   "labels": { # A group of labels for the file.
     "restricted": True or False, # Whether viewers and commenters are prevented from downloading, printing, and copying this file.
-    "hidden": True or False, # Deprecated.
-    "viewed": True or False, # Whether this file has been viewed by this user.
-    "starred": True or False, # Whether this file is starred by the user.
+    "modified": True or False, # Whether the file has been modified by this user.
     "trashed": True or False, # Whether this file has been trashed. This label applies to all users accessing the file; however, only owners are allowed to see and untrash files.
+    "hidden": True or False, # Deprecated.
+    "starred": True or False, # Whether this file is starred by the user.
+    "viewed": True or False, # Whether this file has been viewed by this user.
   },
   "indexableText": { # Indexable text attributes for the file (can only be written)
     "text": "A String", # The text to be indexed for this file.
   },
+  "thumbnailVersion": "A String", # The thumbnail version for use in client-contructable thumbnail URLs or thumbnail cache invalidation.
   "explicitlyTrashed": True or False, # Whether this file has been explicitly trashed, as opposed to recursively trashed.
   "isAppAuthorized": True or False, # Whether the file was created or opened by the requesting app.
   "lastModifyingUserName": "A String", # Name of the last user to modify this file.
@@ -2793,11 +2829,7 @@
     "isAuthenticatedUser": True or False, # Whether this user is the same as the authenticated user for whom the request was made.
     "emailAddress": "A String", # The email address of the user.
   },
-  "videoMediaMetadata": { # Metadata about video media. This will only be present for video types.
-    "width": 42, # The width of the video in pixels.
-    "durationMillis": "A String", # The duration of the video in milliseconds.
-    "height": 42, # The height of the video in pixels.
-  },
+  "mimeType": "A String", # The MIME type of the file. This is only mutable on update when uploading new content. This field can be left blank, and the mimetype will be determined from the uploaded content's MIME type.
   "lastModifyingUser": { # Information about a Drive user. # The last user to modify this file.
     "picture": { # The user's profile picture.
       "url": "A String", # A URL that points to a profile picture of this user.
@@ -2837,8 +2869,8 @@
       "domain": "A String", # The domain name of the entity this permission refers to. This is an output-only field which is present when the permission type is user, group or domain.
       "name": "A String", # The name for this permission.
       "kind": "drive#permission", # This is always drive#permission.
-      "value": "A String", # The email address or domain name for the entity. This is used during inserts and is not populated in responses. When making a drive.permissions.insert request, exactly one of the id or value fields must be specified unless the permission type anyone, in which case both id and value are ignored.
-      "id": "A String", # The ID of the user this permission refers to, and identical to the permissionId in the About and Files resources. When making a drive.permissions.insert request, exactly one of the id or value fields must be specified unless the permission type anyone, in which case both id and value are ignored.
+      "value": "A String", # The email address or domain name for the entity. This is used during inserts and is not populated in responses. When making a drive.permissions.insert request, exactly one of the id or value fields must be specified unless the permission type is anyone, in which case both id and value are ignored.
+      "id": "A String", # The ID of the user this permission refers to, and identical to the permissionId in the About and Files resources. When making a drive.permissions.insert request, exactly one of the id or value fields must be specified unless the permission type is anyone, in which case both id and value are ignored.
       "authKey": "A String", # The authkey parameter required for this permission.
       "etag": "A String", # The ETag of the permission.
       "emailAddress": "A String", # The email address of the user or group this permission refers to. This is an output-only field which is present when the permission type is user or group.
@@ -2893,6 +2925,11 @@
   },
   "description": "A String", # A short description of the file.
   "webContentLink": "A String", # A link for downloading the content of the file in a browser using cookie based authentication. In cases where the content is shared publicly, the content can be downloaded without any credentials.
+  "videoMediaMetadata": { # Metadata about video media. This will only be present for video types.
+    "width": 42, # The width of the video in pixels.
+    "durationMillis": "A String", # The duration of the video in milliseconds.
+    "height": 42, # The height of the video in pixels.
+  },
   "editable": True or False, # Whether the file can be edited by the current user.
   "kind": "drive#file", # The type of file. This is always drive#file.
   "canComment": True or False, # Whether the current user can comment on the file.
@@ -2921,7 +2958,7 @@
   "alternateLink": "A String", # A link for opening the file in a relevant Google editor or viewer.
   "title": "A String", # The title of this file.
   "modifiedByMeDate": "A String", # Last time this file was modified by the user (formatted RFC 3339 timestamp). Note that setting modifiedDate will also update the modifiedByMe date for the user which set the date.
-  "thumbnail": { # Thumbnail for the file. Only accepted on upload and for files that are not already thumbnailed by Google.
+  "thumbnail": { # A thumbnail for the file. This will only be used if Drive cannot generate a standard thumbnail.
     "mimeType": "A String", # The MIME type of the thumbnail.
     "image": "A String", # The URL-safe Base64 encoded bytes of the thumbnail image. It should conform to RFC 4648 section 5.
   },
@@ -2931,8 +2968,8 @@
     "domain": "A String", # The domain name of the entity this permission refers to. This is an output-only field which is present when the permission type is user, group or domain.
     "name": "A String", # The name for this permission.
     "kind": "drive#permission", # This is always drive#permission.
-    "value": "A String", # The email address or domain name for the entity. This is used during inserts and is not populated in responses. When making a drive.permissions.insert request, exactly one of the id or value fields must be specified unless the permission type anyone, in which case both id and value are ignored.
-    "id": "A String", # The ID of the user this permission refers to, and identical to the permissionId in the About and Files resources. When making a drive.permissions.insert request, exactly one of the id or value fields must be specified unless the permission type anyone, in which case both id and value are ignored.
+    "value": "A String", # The email address or domain name for the entity. This is used during inserts and is not populated in responses. When making a drive.permissions.insert request, exactly one of the id or value fields must be specified unless the permission type is anyone, in which case both id and value are ignored.
+    "id": "A String", # The ID of the user this permission refers to, and identical to the permissionId in the About and Files resources. When making a drive.permissions.insert request, exactly one of the id or value fields must be specified unless the permission type is anyone, in which case both id and value are ignored.
     "authKey": "A String", # The authkey parameter required for this permission.
     "etag": "A String", # The ETag of the permission.
     "emailAddress": "A String", # The email address of the user or group this permission refers to. This is an output-only field which is present when the permission type is user or group.
@@ -2982,6 +3019,7 @@
   timedTextTrackName: string, The timed text track name.
   convert: boolean, This parameter is deprecated and has no function.
   useContentAsIndexableText: boolean, Whether to use the content as indexable text.
+  media_mime_type: string, The MIME type of the media request body, or an instance of a MediaUpload object.
   setModifiedDate: boolean, Whether to set the modified date with the supplied modified date.
   timedTextLanguage: string, The language of the timed text.
 
@@ -2989,21 +3027,23 @@
   An object of the form:
 
     { # The metadata for a file.
-    "mimeType": "A String", # The MIME type of the file. This is only mutable on update when uploading new content. This field can be left blank, and the mimetype will be determined from the uploaded content's MIME type.
+    "hasThumbnail": True or False, # Whether this file has a thumbnail.
     "lastViewedByMeDate": "A String", # Last time this file was viewed by the user (formatted RFC 3339 timestamp).
     "version": "A String", # A monotonically increasing version number for the file. This reflects every change made to the file on the server, even those not visible to the requesting user.
     "appDataContents": True or False, # Whether this file is in the Application Data folder.
-    "thumbnailLink": "A String", # A short-lived link to the file's thumbnail. Typically lasts on the order of hours.
+    "thumbnailLink": "A String", # A short-lived link to the file's thumbnail. Typically lasts on the order of hours. Only populated when the requesting app can access the file's content.
     "labels": { # A group of labels for the file.
       "restricted": True or False, # Whether viewers and commenters are prevented from downloading, printing, and copying this file.
-      "hidden": True or False, # Deprecated.
-      "viewed": True or False, # Whether this file has been viewed by this user.
-      "starred": True or False, # Whether this file is starred by the user.
+      "modified": True or False, # Whether the file has been modified by this user.
       "trashed": True or False, # Whether this file has been trashed. This label applies to all users accessing the file; however, only owners are allowed to see and untrash files.
+      "hidden": True or False, # Deprecated.
+      "starred": True or False, # Whether this file is starred by the user.
+      "viewed": True or False, # Whether this file has been viewed by this user.
     },
     "indexableText": { # Indexable text attributes for the file (can only be written)
       "text": "A String", # The text to be indexed for this file.
     },
+    "thumbnailVersion": "A String", # The thumbnail version for use in client-contructable thumbnail URLs or thumbnail cache invalidation.
     "explicitlyTrashed": True or False, # Whether this file has been explicitly trashed, as opposed to recursively trashed.
     "isAppAuthorized": True or False, # Whether the file was created or opened by the requesting app.
     "lastModifyingUserName": "A String", # Name of the last user to modify this file.
@@ -3032,11 +3072,7 @@
       "isAuthenticatedUser": True or False, # Whether this user is the same as the authenticated user for whom the request was made.
       "emailAddress": "A String", # The email address of the user.
     },
-    "videoMediaMetadata": { # Metadata about video media. This will only be present for video types.
-      "width": 42, # The width of the video in pixels.
-      "durationMillis": "A String", # The duration of the video in milliseconds.
-      "height": 42, # The height of the video in pixels.
-    },
+    "mimeType": "A String", # The MIME type of the file. This is only mutable on update when uploading new content. This field can be left blank, and the mimetype will be determined from the uploaded content's MIME type.
     "lastModifyingUser": { # Information about a Drive user. # The last user to modify this file.
       "picture": { # The user's profile picture.
         "url": "A String", # A URL that points to a profile picture of this user.
@@ -3076,8 +3112,8 @@
         "domain": "A String", # The domain name of the entity this permission refers to. This is an output-only field which is present when the permission type is user, group or domain.
         "name": "A String", # The name for this permission.
         "kind": "drive#permission", # This is always drive#permission.
-        "value": "A String", # The email address or domain name for the entity. This is used during inserts and is not populated in responses. When making a drive.permissions.insert request, exactly one of the id or value fields must be specified unless the permission type anyone, in which case both id and value are ignored.
-        "id": "A String", # The ID of the user this permission refers to, and identical to the permissionId in the About and Files resources. When making a drive.permissions.insert request, exactly one of the id or value fields must be specified unless the permission type anyone, in which case both id and value are ignored.
+        "value": "A String", # The email address or domain name for the entity. This is used during inserts and is not populated in responses. When making a drive.permissions.insert request, exactly one of the id or value fields must be specified unless the permission type is anyone, in which case both id and value are ignored.
+        "id": "A String", # The ID of the user this permission refers to, and identical to the permissionId in the About and Files resources. When making a drive.permissions.insert request, exactly one of the id or value fields must be specified unless the permission type is anyone, in which case both id and value are ignored.
         "authKey": "A String", # The authkey parameter required for this permission.
         "etag": "A String", # The ETag of the permission.
         "emailAddress": "A String", # The email address of the user or group this permission refers to. This is an output-only field which is present when the permission type is user or group.
@@ -3132,6 +3168,11 @@
     },
     "description": "A String", # A short description of the file.
     "webContentLink": "A String", # A link for downloading the content of the file in a browser using cookie based authentication. In cases where the content is shared publicly, the content can be downloaded without any credentials.
+    "videoMediaMetadata": { # Metadata about video media. This will only be present for video types.
+      "width": 42, # The width of the video in pixels.
+      "durationMillis": "A String", # The duration of the video in milliseconds.
+      "height": 42, # The height of the video in pixels.
+    },
     "editable": True or False, # Whether the file can be edited by the current user.
     "kind": "drive#file", # The type of file. This is always drive#file.
     "canComment": True or False, # Whether the current user can comment on the file.
@@ -3160,7 +3201,7 @@
     "alternateLink": "A String", # A link for opening the file in a relevant Google editor or viewer.
     "title": "A String", # The title of this file.
     "modifiedByMeDate": "A String", # Last time this file was modified by the user (formatted RFC 3339 timestamp). Note that setting modifiedDate will also update the modifiedByMe date for the user which set the date.
-    "thumbnail": { # Thumbnail for the file. Only accepted on upload and for files that are not already thumbnailed by Google.
+    "thumbnail": { # A thumbnail for the file. This will only be used if Drive cannot generate a standard thumbnail.
       "mimeType": "A String", # The MIME type of the thumbnail.
       "image": "A String", # The URL-safe Base64 encoded bytes of the thumbnail image. It should conform to RFC 4648 section 5.
     },
@@ -3170,8 +3211,8 @@
       "domain": "A String", # The domain name of the entity this permission refers to. This is an output-only field which is present when the permission type is user, group or domain.
       "name": "A String", # The name for this permission.
       "kind": "drive#permission", # This is always drive#permission.
-      "value": "A String", # The email address or domain name for the entity. This is used during inserts and is not populated in responses. When making a drive.permissions.insert request, exactly one of the id or value fields must be specified unless the permission type anyone, in which case both id and value are ignored.
-      "id": "A String", # The ID of the user this permission refers to, and identical to the permissionId in the About and Files resources. When making a drive.permissions.insert request, exactly one of the id or value fields must be specified unless the permission type anyone, in which case both id and value are ignored.
+      "value": "A String", # The email address or domain name for the entity. This is used during inserts and is not populated in responses. When making a drive.permissions.insert request, exactly one of the id or value fields must be specified unless the permission type is anyone, in which case both id and value are ignored.
+      "id": "A String", # The ID of the user this permission refers to, and identical to the permissionId in the About and Files resources. When making a drive.permissions.insert request, exactly one of the id or value fields must be specified unless the permission type is anyone, in which case both id and value are ignored.
       "authKey": "A String", # The authkey parameter required for this permission.
       "etag": "A String", # The ETag of the permission.
       "emailAddress": "A String", # The email address of the user or group this permission refers to. This is an output-only field which is present when the permission type is user or group.
diff --git a/docs/dyn/drive_v2.permissions.html b/docs/dyn/drive_v2.permissions.html
index 9d4d480..9434d8a 100644
--- a/docs/dyn/drive_v2.permissions.html
+++ b/docs/dyn/drive_v2.permissions.html
@@ -122,8 +122,8 @@
     "domain": "A String", # The domain name of the entity this permission refers to. This is an output-only field which is present when the permission type is user, group or domain.
     "name": "A String", # The name for this permission.
     "kind": "drive#permission", # This is always drive#permission.
-    "value": "A String", # The email address or domain name for the entity. This is used during inserts and is not populated in responses. When making a drive.permissions.insert request, exactly one of the id or value fields must be specified unless the permission type anyone, in which case both id and value are ignored.
-    "id": "A String", # The ID of the user this permission refers to, and identical to the permissionId in the About and Files resources. When making a drive.permissions.insert request, exactly one of the id or value fields must be specified unless the permission type anyone, in which case both id and value are ignored.
+    "value": "A String", # The email address or domain name for the entity. This is used during inserts and is not populated in responses. When making a drive.permissions.insert request, exactly one of the id or value fields must be specified unless the permission type is anyone, in which case both id and value are ignored.
+    "id": "A String", # The ID of the user this permission refers to, and identical to the permissionId in the About and Files resources. When making a drive.permissions.insert request, exactly one of the id or value fields must be specified unless the permission type is anyone, in which case both id and value are ignored.
     "authKey": "A String", # The authkey parameter required for this permission.
     "etag": "A String", # The ETag of the permission.
     "emailAddress": "A String", # The email address of the user or group this permission refers to. This is an output-only field which is present when the permission type is user or group.
@@ -175,8 +175,8 @@
   "domain": "A String", # The domain name of the entity this permission refers to. This is an output-only field which is present when the permission type is user, group or domain.
   "name": "A String", # The name for this permission.
   "kind": "drive#permission", # This is always drive#permission.
-  "value": "A String", # The email address or domain name for the entity. This is used during inserts and is not populated in responses. When making a drive.permissions.insert request, exactly one of the id or value fields must be specified unless the permission type anyone, in which case both id and value are ignored.
-  "id": "A String", # The ID of the user this permission refers to, and identical to the permissionId in the About and Files resources. When making a drive.permissions.insert request, exactly one of the id or value fields must be specified unless the permission type anyone, in which case both id and value are ignored.
+  "value": "A String", # The email address or domain name for the entity. This is used during inserts and is not populated in responses. When making a drive.permissions.insert request, exactly one of the id or value fields must be specified unless the permission type is anyone, in which case both id and value are ignored.
+  "id": "A String", # The ID of the user this permission refers to, and identical to the permissionId in the About and Files resources. When making a drive.permissions.insert request, exactly one of the id or value fields must be specified unless the permission type is anyone, in which case both id and value are ignored.
   "authKey": "A String", # The authkey parameter required for this permission.
   "etag": "A String", # The ETag of the permission.
   "emailAddress": "A String", # The email address of the user or group this permission refers to. This is an output-only field which is present when the permission type is user or group.
@@ -208,8 +208,8 @@
     "domain": "A String", # The domain name of the entity this permission refers to. This is an output-only field which is present when the permission type is user, group or domain.
     "name": "A String", # The name for this permission.
     "kind": "drive#permission", # This is always drive#permission.
-    "value": "A String", # The email address or domain name for the entity. This is used during inserts and is not populated in responses. When making a drive.permissions.insert request, exactly one of the id or value fields must be specified unless the permission type anyone, in which case both id and value are ignored.
-    "id": "A String", # The ID of the user this permission refers to, and identical to the permissionId in the About and Files resources. When making a drive.permissions.insert request, exactly one of the id or value fields must be specified unless the permission type anyone, in which case both id and value are ignored.
+    "value": "A String", # The email address or domain name for the entity. This is used during inserts and is not populated in responses. When making a drive.permissions.insert request, exactly one of the id or value fields must be specified unless the permission type is anyone, in which case both id and value are ignored.
+    "id": "A String", # The ID of the user this permission refers to, and identical to the permissionId in the About and Files resources. When making a drive.permissions.insert request, exactly one of the id or value fields must be specified unless the permission type is anyone, in which case both id and value are ignored.
     "authKey": "A String", # The authkey parameter required for this permission.
     "etag": "A String", # The ETag of the permission.
     "emailAddress": "A String", # The email address of the user or group this permission refers to. This is an output-only field which is present when the permission type is user or group.
@@ -248,8 +248,8 @@
         "domain": "A String", # The domain name of the entity this permission refers to. This is an output-only field which is present when the permission type is user, group or domain.
         "name": "A String", # The name for this permission.
         "kind": "drive#permission", # This is always drive#permission.
-        "value": "A String", # The email address or domain name for the entity. This is used during inserts and is not populated in responses. When making a drive.permissions.insert request, exactly one of the id or value fields must be specified unless the permission type anyone, in which case both id and value are ignored.
-        "id": "A String", # The ID of the user this permission refers to, and identical to the permissionId in the About and Files resources. When making a drive.permissions.insert request, exactly one of the id or value fields must be specified unless the permission type anyone, in which case both id and value are ignored.
+        "value": "A String", # The email address or domain name for the entity. This is used during inserts and is not populated in responses. When making a drive.permissions.insert request, exactly one of the id or value fields must be specified unless the permission type is anyone, in which case both id and value are ignored.
+        "id": "A String", # The ID of the user this permission refers to, and identical to the permissionId in the About and Files resources. When making a drive.permissions.insert request, exactly one of the id or value fields must be specified unless the permission type is anyone, in which case both id and value are ignored.
         "authKey": "A String", # The authkey parameter required for this permission.
         "etag": "A String", # The ETag of the permission.
         "emailAddress": "A String", # The email address of the user or group this permission refers to. This is an output-only field which is present when the permission type is user or group.
@@ -291,8 +291,8 @@
   "domain": "A String", # The domain name of the entity this permission refers to. This is an output-only field which is present when the permission type is user, group or domain.
   "name": "A String", # The name for this permission.
   "kind": "drive#permission", # This is always drive#permission.
-  "value": "A String", # The email address or domain name for the entity. This is used during inserts and is not populated in responses. When making a drive.permissions.insert request, exactly one of the id or value fields must be specified unless the permission type anyone, in which case both id and value are ignored.
-  "id": "A String", # The ID of the user this permission refers to, and identical to the permissionId in the About and Files resources. When making a drive.permissions.insert request, exactly one of the id or value fields must be specified unless the permission type anyone, in which case both id and value are ignored.
+  "value": "A String", # The email address or domain name for the entity. This is used during inserts and is not populated in responses. When making a drive.permissions.insert request, exactly one of the id or value fields must be specified unless the permission type is anyone, in which case both id and value are ignored.
+  "id": "A String", # The ID of the user this permission refers to, and identical to the permissionId in the About and Files resources. When making a drive.permissions.insert request, exactly one of the id or value fields must be specified unless the permission type is anyone, in which case both id and value are ignored.
   "authKey": "A String", # The authkey parameter required for this permission.
   "etag": "A String", # The ETag of the permission.
   "emailAddress": "A String", # The email address of the user or group this permission refers to. This is an output-only field which is present when the permission type is user or group.
@@ -324,8 +324,8 @@
     "domain": "A String", # The domain name of the entity this permission refers to. This is an output-only field which is present when the permission type is user, group or domain.
     "name": "A String", # The name for this permission.
     "kind": "drive#permission", # This is always drive#permission.
-    "value": "A String", # The email address or domain name for the entity. This is used during inserts and is not populated in responses. When making a drive.permissions.insert request, exactly one of the id or value fields must be specified unless the permission type anyone, in which case both id and value are ignored.
-    "id": "A String", # The ID of the user this permission refers to, and identical to the permissionId in the About and Files resources. When making a drive.permissions.insert request, exactly one of the id or value fields must be specified unless the permission type anyone, in which case both id and value are ignored.
+    "value": "A String", # The email address or domain name for the entity. This is used during inserts and is not populated in responses. When making a drive.permissions.insert request, exactly one of the id or value fields must be specified unless the permission type is anyone, in which case both id and value are ignored.
+    "id": "A String", # The ID of the user this permission refers to, and identical to the permissionId in the About and Files resources. When making a drive.permissions.insert request, exactly one of the id or value fields must be specified unless the permission type is anyone, in which case both id and value are ignored.
     "authKey": "A String", # The authkey parameter required for this permission.
     "etag": "A String", # The ETag of the permission.
     "emailAddress": "A String", # The email address of the user or group this permission refers to. This is an output-only field which is present when the permission type is user or group.
@@ -362,8 +362,8 @@
   "domain": "A String", # The domain name of the entity this permission refers to. This is an output-only field which is present when the permission type is user, group or domain.
   "name": "A String", # The name for this permission.
   "kind": "drive#permission", # This is always drive#permission.
-  "value": "A String", # The email address or domain name for the entity. This is used during inserts and is not populated in responses. When making a drive.permissions.insert request, exactly one of the id or value fields must be specified unless the permission type anyone, in which case both id and value are ignored.
-  "id": "A String", # The ID of the user this permission refers to, and identical to the permissionId in the About and Files resources. When making a drive.permissions.insert request, exactly one of the id or value fields must be specified unless the permission type anyone, in which case both id and value are ignored.
+  "value": "A String", # The email address or domain name for the entity. This is used during inserts and is not populated in responses. When making a drive.permissions.insert request, exactly one of the id or value fields must be specified unless the permission type is anyone, in which case both id and value are ignored.
+  "id": "A String", # The ID of the user this permission refers to, and identical to the permissionId in the About and Files resources. When making a drive.permissions.insert request, exactly one of the id or value fields must be specified unless the permission type is anyone, in which case both id and value are ignored.
   "authKey": "A String", # The authkey parameter required for this permission.
   "etag": "A String", # The ETag of the permission.
   "emailAddress": "A String", # The email address of the user or group this permission refers to. This is an output-only field which is present when the permission type is user or group.
@@ -395,8 +395,8 @@
     "domain": "A String", # The domain name of the entity this permission refers to. This is an output-only field which is present when the permission type is user, group or domain.
     "name": "A String", # The name for this permission.
     "kind": "drive#permission", # This is always drive#permission.
-    "value": "A String", # The email address or domain name for the entity. This is used during inserts and is not populated in responses. When making a drive.permissions.insert request, exactly one of the id or value fields must be specified unless the permission type anyone, in which case both id and value are ignored.
-    "id": "A String", # The ID of the user this permission refers to, and identical to the permissionId in the About and Files resources. When making a drive.permissions.insert request, exactly one of the id or value fields must be specified unless the permission type anyone, in which case both id and value are ignored.
+    "value": "A String", # The email address or domain name for the entity. This is used during inserts and is not populated in responses. When making a drive.permissions.insert request, exactly one of the id or value fields must be specified unless the permission type is anyone, in which case both id and value are ignored.
+    "id": "A String", # The ID of the user this permission refers to, and identical to the permissionId in the About and Files resources. When making a drive.permissions.insert request, exactly one of the id or value fields must be specified unless the permission type is anyone, in which case both id and value are ignored.
     "authKey": "A String", # The authkey parameter required for this permission.
     "etag": "A String", # The ETag of the permission.
     "emailAddress": "A String", # The email address of the user or group this permission refers to. This is an output-only field which is present when the permission type is user or group.
diff --git a/docs/dyn/drive_v2.realtime.html b/docs/dyn/drive_v2.realtime.html
index 63cdfa1..c3e29d2 100644
--- a/docs/dyn/drive_v2.realtime.html
+++ b/docs/dyn/drive_v2.realtime.html
@@ -81,7 +81,7 @@
   <code><a href="#get_media">get_media(fileId, revision=None)</a></code></p>
 <p class="firstline">Exports the contents of the Realtime API data model associated with this file as JSON.</p>
 <p class="toc_element">
-  <code><a href="#update">update(fileId, media_body=None, baseRevision=None)</a></code></p>
+  <code><a href="#update">update(fileId, media_body=None, media_mime_type=None, baseRevision=None)</a></code></p>
 <p class="firstline">Overwrites the Realtime API data model associated with this file with the provided JSON data model.</p>
 <h3>Method Details</h3>
 <div class="method">
@@ -105,12 +105,13 @@
 </div>
 
 <div class="method">
-    <code class="details" id="update">update(fileId, media_body=None, baseRevision=None)</code>
+    <code class="details" id="update">update(fileId, media_body=None, media_mime_type=None, baseRevision=None)</code>
   <pre>Overwrites the Realtime API data model associated with this file with the provided JSON data model.
 
 Args:
   fileId: string, The ID of the file that the Realtime API data model is associated with. (required)
   media_body: string, The filename of the media request body, or an instance of a MediaUpload object.
+  media_mime_type: string, The MIME type of the media request body, or an instance of a MediaUpload object.
   baseRevision: string, The revision of the model to diff the uploaded model against. If set, the uploaded model is diffed against the provided revision and those differences are merged with any changes made to the model after the provided revision. If not set, the uploaded model replaces the current model on the server.
 </pre>
 </div>
diff --git a/docs/dyn/drive_v3.changes.html b/docs/dyn/drive_v3.changes.html
index 68dc542..0dcb58f 100644
--- a/docs/dyn/drive_v3.changes.html
+++ b/docs/dyn/drive_v3.changes.html
@@ -125,11 +125,13 @@
         "removed": True or False, # Whether the file has been removed from the view of the changes list, for example by deletion or lost access.
         "time": "A String", # The time of this change (RFC 3339 date-time).
         "file": { # The metadata for a file. # The updated state of the file. Present if the file has not been removed.
+          "hasThumbnail": True or False, # Whether this file has a thumbnail.
           "mimeType": "A String", # The MIME type of the file.
               # Drive will attempt to automatically detect an appropriate value from uploaded content if no value is provided. The value cannot be changed unless a new revision is uploaded.
               # If a file is created with a Google Doc MIME type, the uploaded content will be imported if possible. The supported import formats are published in the About resource.
           "modifiedByMeTime": "A String", # The last time the file was modified by the user (RFC 3339 date-time).
-          "thumbnailLink": "A String", # A short-lived link to the file's thumbnail, if available. Typically lasts on the order of hours.
+          "thumbnailLink": "A String", # A short-lived link to the file's thumbnail, if available. Typically lasts on the order of hours. Only populated when the requesting app can access the file's content.
+          "thumbnailVersion": "A String", # The thumbnail version for use in client-contructable thumbnail URLs or thumbnail cache invalidation.
           "explicitlyTrashed": True or False, # Whether the file has been explicitly trashed, as opposed to recursively trashed from a parent folder.
           "isAppAuthorized": True or False, # Whether the file was created or opened by the requesting app.
           "writersCanShare": True or False, # Whether users with only writer permission can modify the file's permissions.
@@ -209,6 +211,7 @@
           "modifiedTime": "A String", # The last time the file was modified by anyone (RFC 3339 date-time).
               # Note that setting modifiedTime will also update modifiedByMeTime for the user.
           "viewedByMe": True or False, # Whether the file has been viewed by this user.
+          "modifiedByMe": True or False, # Whether the file has been modified by this user.
           "owners": [ # The owners of the file. Currently, only certain legacy files may have more than one owner.
             { # Information about a Drive user.
               "me": True or False, # Whether this user is the requesting user.
diff --git a/docs/dyn/drive_v3.files.html b/docs/dyn/drive_v3.files.html
index 84dc17c..16cb74e 100644
--- a/docs/dyn/drive_v3.files.html
+++ b/docs/dyn/drive_v3.files.html
@@ -78,7 +78,7 @@
   <code><a href="#copy">copy(fileId, body, keepRevisionForever=None, ignoreDefaultVisibility=None, ocrLanguage=None)</a></code></p>
 <p class="firstline">Creates a copy of a file and applies any requested updates with patch semantics.</p>
 <p class="toc_element">
-  <code><a href="#create">create(body=None, media_body=None, keepRevisionForever=None, useContentAsIndexableText=None, ignoreDefaultVisibility=None, ocrLanguage=None)</a></code></p>
+  <code><a href="#create">create(body=None, media_body=None, keepRevisionForever=None, media_mime_type=None, useContentAsIndexableText=None, ignoreDefaultVisibility=None, ocrLanguage=None)</a></code></p>
 <p class="firstline">Creates a new file.</p>
 <p class="toc_element">
   <code><a href="#delete">delete(fileId)</a></code></p>
@@ -108,7 +108,7 @@
   <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="#update">update(fileId, body=None, media_body=None, addParents=None, removeParents=None, useContentAsIndexableText=None, keepRevisionForever=None, ocrLanguage=None)</a></code></p>
+  <code><a href="#update">update(fileId, body=None, media_body=None, addParents=None, removeParents=None, media_mime_type=None, useContentAsIndexableText=None, keepRevisionForever=None, ocrLanguage=None)</a></code></p>
 <p class="firstline">Updates a file's metadata and/or content with patch semantics.</p>
 <p class="toc_element">
   <code><a href="#watch">watch(fileId, body, acknowledgeAbuse=None)</a></code></p>
@@ -127,11 +127,13 @@
     The object takes the form of:
 
 { # The metadata for a file.
+  "hasThumbnail": True or False, # Whether this file has a thumbnail.
   "mimeType": "A String", # The MIME type of the file.
       # Drive will attempt to automatically detect an appropriate value from uploaded content if no value is provided. The value cannot be changed unless a new revision is uploaded.
       # If a file is created with a Google Doc MIME type, the uploaded content will be imported if possible. The supported import formats are published in the About resource.
   "modifiedByMeTime": "A String", # The last time the file was modified by the user (RFC 3339 date-time).
-  "thumbnailLink": "A String", # A short-lived link to the file's thumbnail, if available. Typically lasts on the order of hours.
+  "thumbnailLink": "A String", # A short-lived link to the file's thumbnail, if available. Typically lasts on the order of hours. Only populated when the requesting app can access the file's content.
+  "thumbnailVersion": "A String", # The thumbnail version for use in client-contructable thumbnail URLs or thumbnail cache invalidation.
   "explicitlyTrashed": True or False, # Whether the file has been explicitly trashed, as opposed to recursively trashed from a parent folder.
   "isAppAuthorized": True or False, # Whether the file was created or opened by the requesting app.
   "writersCanShare": True or False, # Whether users with only writer permission can modify the file's permissions.
@@ -211,6 +213,7 @@
   "modifiedTime": "A String", # The last time the file was modified by anyone (RFC 3339 date-time).
       # Note that setting modifiedTime will also update modifiedByMeTime for the user.
   "viewedByMe": True or False, # Whether the file has been viewed by this user.
+  "modifiedByMe": True or False, # Whether the file has been modified by this user.
   "owners": [ # The owners of the file. Currently, only certain legacy files may have more than one owner.
     { # Information about a Drive user.
       "me": True or False, # Whether this user is the requesting user.
@@ -283,11 +286,13 @@
   An object of the form:
 
     { # The metadata for a file.
+    "hasThumbnail": True or False, # Whether this file has a thumbnail.
     "mimeType": "A String", # The MIME type of the file.
         # Drive will attempt to automatically detect an appropriate value from uploaded content if no value is provided. The value cannot be changed unless a new revision is uploaded.
         # If a file is created with a Google Doc MIME type, the uploaded content will be imported if possible. The supported import formats are published in the About resource.
     "modifiedByMeTime": "A String", # The last time the file was modified by the user (RFC 3339 date-time).
-    "thumbnailLink": "A String", # A short-lived link to the file's thumbnail, if available. Typically lasts on the order of hours.
+    "thumbnailLink": "A String", # A short-lived link to the file's thumbnail, if available. Typically lasts on the order of hours. Only populated when the requesting app can access the file's content.
+    "thumbnailVersion": "A String", # The thumbnail version for use in client-contructable thumbnail URLs or thumbnail cache invalidation.
     "explicitlyTrashed": True or False, # Whether the file has been explicitly trashed, as opposed to recursively trashed from a parent folder.
     "isAppAuthorized": True or False, # Whether the file was created or opened by the requesting app.
     "writersCanShare": True or False, # Whether users with only writer permission can modify the file's permissions.
@@ -367,6 +372,7 @@
     "modifiedTime": "A String", # The last time the file was modified by anyone (RFC 3339 date-time).
         # Note that setting modifiedTime will also update modifiedByMeTime for the user.
     "viewedByMe": True or False, # Whether the file has been viewed by this user.
+    "modifiedByMe": True or False, # Whether the file has been modified by this user.
     "owners": [ # The owners of the file. Currently, only certain legacy files may have more than one owner.
       { # Information about a Drive user.
         "me": True or False, # Whether this user is the requesting user.
@@ -433,7 +439,7 @@
 </div>
 
 <div class="method">
-    <code class="details" id="create">create(body=None, media_body=None, keepRevisionForever=None, useContentAsIndexableText=None, ignoreDefaultVisibility=None, ocrLanguage=None)</code>
+    <code class="details" id="create">create(body=None, media_body=None, keepRevisionForever=None, media_mime_type=None, useContentAsIndexableText=None, ignoreDefaultVisibility=None, ocrLanguage=None)</code>
   <pre>Creates a new file.
 
 Args:
@@ -441,11 +447,13 @@
     The object takes the form of:
 
 { # The metadata for a file.
+  "hasThumbnail": True or False, # Whether this file has a thumbnail.
   "mimeType": "A String", # The MIME type of the file.
       # Drive will attempt to automatically detect an appropriate value from uploaded content if no value is provided. The value cannot be changed unless a new revision is uploaded.
       # If a file is created with a Google Doc MIME type, the uploaded content will be imported if possible. The supported import formats are published in the About resource.
   "modifiedByMeTime": "A String", # The last time the file was modified by the user (RFC 3339 date-time).
-  "thumbnailLink": "A String", # A short-lived link to the file's thumbnail, if available. Typically lasts on the order of hours.
+  "thumbnailLink": "A String", # A short-lived link to the file's thumbnail, if available. Typically lasts on the order of hours. Only populated when the requesting app can access the file's content.
+  "thumbnailVersion": "A String", # The thumbnail version for use in client-contructable thumbnail URLs or thumbnail cache invalidation.
   "explicitlyTrashed": True or False, # Whether the file has been explicitly trashed, as opposed to recursively trashed from a parent folder.
   "isAppAuthorized": True or False, # Whether the file was created or opened by the requesting app.
   "writersCanShare": True or False, # Whether users with only writer permission can modify the file's permissions.
@@ -525,6 +533,7 @@
   "modifiedTime": "A String", # The last time the file was modified by anyone (RFC 3339 date-time).
       # Note that setting modifiedTime will also update modifiedByMeTime for the user.
   "viewedByMe": True or False, # Whether the file has been viewed by this user.
+  "modifiedByMe": True or False, # Whether the file has been modified by this user.
   "owners": [ # The owners of the file. Currently, only certain legacy files may have more than one owner.
     { # Information about a Drive user.
       "me": True or False, # Whether this user is the requesting user.
@@ -591,6 +600,7 @@
 
   media_body: string, The filename of the media request body, or an instance of a MediaUpload object.
   keepRevisionForever: boolean, Whether to set the 'keepForever' field in the new head revision. This is only applicable to files with binary content in Drive.
+  media_mime_type: string, The MIME type of the media request body, or an instance of a MediaUpload object.
   useContentAsIndexableText: boolean, Whether to use the uploaded content as indexable text.
   ignoreDefaultVisibility: boolean, Whether to ignore the domain's default visibility settings for the created file. Domain administrators can choose to make all uploaded files visible to the domain by default; this parameter bypasses that behavior for the request. Permissions are still inherited from parent folders.
   ocrLanguage: string, A language hint for OCR processing during image import (ISO 639-1 code).
@@ -599,11 +609,13 @@
   An object of the form:
 
     { # The metadata for a file.
+    "hasThumbnail": True or False, # Whether this file has a thumbnail.
     "mimeType": "A String", # The MIME type of the file.
         # Drive will attempt to automatically detect an appropriate value from uploaded content if no value is provided. The value cannot be changed unless a new revision is uploaded.
         # If a file is created with a Google Doc MIME type, the uploaded content will be imported if possible. The supported import formats are published in the About resource.
     "modifiedByMeTime": "A String", # The last time the file was modified by the user (RFC 3339 date-time).
-    "thumbnailLink": "A String", # A short-lived link to the file's thumbnail, if available. Typically lasts on the order of hours.
+    "thumbnailLink": "A String", # A short-lived link to the file's thumbnail, if available. Typically lasts on the order of hours. Only populated when the requesting app can access the file's content.
+    "thumbnailVersion": "A String", # The thumbnail version for use in client-contructable thumbnail URLs or thumbnail cache invalidation.
     "explicitlyTrashed": True or False, # Whether the file has been explicitly trashed, as opposed to recursively trashed from a parent folder.
     "isAppAuthorized": True or False, # Whether the file was created or opened by the requesting app.
     "writersCanShare": True or False, # Whether users with only writer permission can modify the file's permissions.
@@ -683,6 +695,7 @@
     "modifiedTime": "A String", # The last time the file was modified by anyone (RFC 3339 date-time).
         # Note that setting modifiedTime will also update modifiedByMeTime for the user.
     "viewedByMe": True or False, # Whether the file has been viewed by this user.
+    "modifiedByMe": True or False, # Whether the file has been modified by this user.
     "owners": [ # The owners of the file. Currently, only certain legacy files may have more than one owner.
       { # Information about a Drive user.
         "me": True or False, # Whether this user is the requesting user.
@@ -817,11 +830,13 @@
   An object of the form:
 
     { # The metadata for a file.
+    "hasThumbnail": True or False, # Whether this file has a thumbnail.
     "mimeType": "A String", # The MIME type of the file.
         # Drive will attempt to automatically detect an appropriate value from uploaded content if no value is provided. The value cannot be changed unless a new revision is uploaded.
         # If a file is created with a Google Doc MIME type, the uploaded content will be imported if possible. The supported import formats are published in the About resource.
     "modifiedByMeTime": "A String", # The last time the file was modified by the user (RFC 3339 date-time).
-    "thumbnailLink": "A String", # A short-lived link to the file's thumbnail, if available. Typically lasts on the order of hours.
+    "thumbnailLink": "A String", # A short-lived link to the file's thumbnail, if available. Typically lasts on the order of hours. Only populated when the requesting app can access the file's content.
+    "thumbnailVersion": "A String", # The thumbnail version for use in client-contructable thumbnail URLs or thumbnail cache invalidation.
     "explicitlyTrashed": True or False, # Whether the file has been explicitly trashed, as opposed to recursively trashed from a parent folder.
     "isAppAuthorized": True or False, # Whether the file was created or opened by the requesting app.
     "writersCanShare": True or False, # Whether users with only writer permission can modify the file's permissions.
@@ -901,6 +916,7 @@
     "modifiedTime": "A String", # The last time the file was modified by anyone (RFC 3339 date-time).
         # Note that setting modifiedTime will also update modifiedByMeTime for the user.
     "viewedByMe": True or False, # Whether the file has been viewed by this user.
+    "modifiedByMe": True or False, # Whether the file has been modified by this user.
     "owners": [ # The owners of the file. Currently, only certain legacy files may have more than one owner.
       { # Information about a Drive user.
         "me": True or False, # Whether this user is the requesting user.
@@ -1001,11 +1017,13 @@
     { # A list of files.
     "files": [ # The page of files.
       { # The metadata for a file.
+        "hasThumbnail": True or False, # Whether this file has a thumbnail.
         "mimeType": "A String", # The MIME type of the file.
             # Drive will attempt to automatically detect an appropriate value from uploaded content if no value is provided. The value cannot be changed unless a new revision is uploaded.
             # If a file is created with a Google Doc MIME type, the uploaded content will be imported if possible. The supported import formats are published in the About resource.
         "modifiedByMeTime": "A String", # The last time the file was modified by the user (RFC 3339 date-time).
-        "thumbnailLink": "A String", # A short-lived link to the file's thumbnail, if available. Typically lasts on the order of hours.
+        "thumbnailLink": "A String", # A short-lived link to the file's thumbnail, if available. Typically lasts on the order of hours. Only populated when the requesting app can access the file's content.
+        "thumbnailVersion": "A String", # The thumbnail version for use in client-contructable thumbnail URLs or thumbnail cache invalidation.
         "explicitlyTrashed": True or False, # Whether the file has been explicitly trashed, as opposed to recursively trashed from a parent folder.
         "isAppAuthorized": True or False, # Whether the file was created or opened by the requesting app.
         "writersCanShare": True or False, # Whether users with only writer permission can modify the file's permissions.
@@ -1085,6 +1103,7 @@
         "modifiedTime": "A String", # The last time the file was modified by anyone (RFC 3339 date-time).
             # Note that setting modifiedTime will also update modifiedByMeTime for the user.
         "viewedByMe": True or False, # Whether the file has been viewed by this user.
+        "modifiedByMe": True or False, # Whether the file has been modified by this user.
         "owners": [ # The owners of the file. Currently, only certain legacy files may have more than one owner.
           { # Information about a Drive user.
             "me": True or False, # Whether this user is the requesting user.
@@ -1169,7 +1188,7 @@
 </div>
 
 <div class="method">
-    <code class="details" id="update">update(fileId, body=None, media_body=None, addParents=None, removeParents=None, useContentAsIndexableText=None, keepRevisionForever=None, ocrLanguage=None)</code>
+    <code class="details" id="update">update(fileId, body=None, media_body=None, addParents=None, removeParents=None, media_mime_type=None, useContentAsIndexableText=None, keepRevisionForever=None, ocrLanguage=None)</code>
   <pre>Updates a file's metadata and/or content with patch semantics.
 
 Args:
@@ -1178,11 +1197,13 @@
     The object takes the form of:
 
 { # The metadata for a file.
+  "hasThumbnail": True or False, # Whether this file has a thumbnail.
   "mimeType": "A String", # The MIME type of the file.
       # Drive will attempt to automatically detect an appropriate value from uploaded content if no value is provided. The value cannot be changed unless a new revision is uploaded.
       # If a file is created with a Google Doc MIME type, the uploaded content will be imported if possible. The supported import formats are published in the About resource.
   "modifiedByMeTime": "A String", # The last time the file was modified by the user (RFC 3339 date-time).
-  "thumbnailLink": "A String", # A short-lived link to the file's thumbnail, if available. Typically lasts on the order of hours.
+  "thumbnailLink": "A String", # A short-lived link to the file's thumbnail, if available. Typically lasts on the order of hours. Only populated when the requesting app can access the file's content.
+  "thumbnailVersion": "A String", # The thumbnail version for use in client-contructable thumbnail URLs or thumbnail cache invalidation.
   "explicitlyTrashed": True or False, # Whether the file has been explicitly trashed, as opposed to recursively trashed from a parent folder.
   "isAppAuthorized": True or False, # Whether the file was created or opened by the requesting app.
   "writersCanShare": True or False, # Whether users with only writer permission can modify the file's permissions.
@@ -1262,6 +1283,7 @@
   "modifiedTime": "A String", # The last time the file was modified by anyone (RFC 3339 date-time).
       # Note that setting modifiedTime will also update modifiedByMeTime for the user.
   "viewedByMe": True or False, # Whether the file has been viewed by this user.
+  "modifiedByMe": True or False, # Whether the file has been modified by this user.
   "owners": [ # The owners of the file. Currently, only certain legacy files may have more than one owner.
     { # Information about a Drive user.
       "me": True or False, # Whether this user is the requesting user.
@@ -1329,6 +1351,7 @@
   media_body: string, The filename of the media request body, or an instance of a MediaUpload object.
   addParents: string, A comma-separated list of parent IDs to add.
   removeParents: string, A comma-separated list of parent IDs to remove.
+  media_mime_type: string, The MIME type of the media request body, or an instance of a MediaUpload object.
   useContentAsIndexableText: boolean, Whether to use the uploaded content as indexable text.
   keepRevisionForever: boolean, Whether to set the 'keepForever' field in the new head revision. This is only applicable to files with binary content in Drive.
   ocrLanguage: string, A language hint for OCR processing during image import (ISO 639-1 code).
@@ -1337,11 +1360,13 @@
   An object of the form:
 
     { # The metadata for a file.
+    "hasThumbnail": True or False, # Whether this file has a thumbnail.
     "mimeType": "A String", # The MIME type of the file.
         # Drive will attempt to automatically detect an appropriate value from uploaded content if no value is provided. The value cannot be changed unless a new revision is uploaded.
         # If a file is created with a Google Doc MIME type, the uploaded content will be imported if possible. The supported import formats are published in the About resource.
     "modifiedByMeTime": "A String", # The last time the file was modified by the user (RFC 3339 date-time).
-    "thumbnailLink": "A String", # A short-lived link to the file's thumbnail, if available. Typically lasts on the order of hours.
+    "thumbnailLink": "A String", # A short-lived link to the file's thumbnail, if available. Typically lasts on the order of hours. Only populated when the requesting app can access the file's content.
+    "thumbnailVersion": "A String", # The thumbnail version for use in client-contructable thumbnail URLs or thumbnail cache invalidation.
     "explicitlyTrashed": True or False, # Whether the file has been explicitly trashed, as opposed to recursively trashed from a parent folder.
     "isAppAuthorized": True or False, # Whether the file was created or opened by the requesting app.
     "writersCanShare": True or False, # Whether users with only writer permission can modify the file's permissions.
@@ -1421,6 +1446,7 @@
     "modifiedTime": "A String", # The last time the file was modified by anyone (RFC 3339 date-time).
         # Note that setting modifiedTime will also update modifiedByMeTime for the user.
     "viewedByMe": True or False, # Whether the file has been viewed by this user.
+    "modifiedByMe": True or False, # Whether the file has been modified by this user.
     "owners": [ # The owners of the file. Currently, only certain legacy files may have more than one owner.
       { # Information about a Drive user.
         "me": True or False, # Whether this user is the requesting user.
diff --git a/docs/dyn/firebasedynamiclinks_v1.shortLinks.html b/docs/dyn/firebasedynamiclinks_v1.shortLinks.html
index ca5bcab..f09450e 100644
--- a/docs/dyn/firebasedynamiclinks_v1.shortLinks.html
+++ b/docs/dyn/firebasedynamiclinks_v1.shortLinks.html
@@ -122,9 +122,6 @@
               # track sales from a specific marketing campaign.
         },
       },
-      "isAd": True or False, # Declares that the Dynamic Link is used in an advertisement.
-          # See the 'ad' parameter in the
-          # [documentation](https://firebase.google.com/docs/dynamic-links/android#create-a-dynamic-link-programmatically).
       "iosInfo": { # iOS related attributes to the Dynamic Link.. # iOS related information. See iOS related parameters in the
           # [documentation](https://firebase.google.com/docs/dynamic-links/ios#create-a-dynamic-link-programmatically).
         "iosCustomScheme": "A String", # Custom (destination) scheme to use for iOS. By default, we’ll use the
diff --git a/docs/dyn/fitness_v1.users.dataSources.datasets.html b/docs/dyn/fitness_v1.users.dataSources.datasets.html
index 8142fae..4bedb9d 100644
--- a/docs/dyn/fitness_v1.users.dataSources.datasets.html
+++ b/docs/dyn/fitness_v1.users.dataSources.datasets.html
@@ -134,7 +134,7 @@
               # Only one of integer and floating point fields will be populated, depending on the format enum value within data source's type field.
             { # Holder object for the value of a single field in a data point.
                 #
-                # A field value has a particular format and is only ever set to one of an integer or a floating point value.
+                # A field value has a particular format and is only ever set to one of an integer or a floating point value. LINT.IfChange
               "mapVal": [ # Map value. The valid key space and units for the corresponding value of each entry should be documented as part of the data type definition. Keys should be kept small whenever possible. Data streams with large keys and high data frequency may be down sampled.
                 {
                   "value": { # Holder object for the value of an entry in a map field of a data point.
@@ -203,7 +203,7 @@
             # Only one of integer and floating point fields will be populated, depending on the format enum value within data source's type field.
           { # Holder object for the value of a single field in a data point.
               #
-              # A field value has a particular format and is only ever set to one of an integer or a floating point value.
+              # A field value has a particular format and is only ever set to one of an integer or a floating point value. LINT.IfChange
             "mapVal": [ # Map value. The valid key space and units for the corresponding value of each entry should be documented as part of the data type definition. Keys should be kept small whenever possible. Data streams with large keys and high data frequency may be down sampled.
               {
                 "value": { # Holder object for the value of an entry in a map field of a data point.
@@ -251,7 +251,7 @@
               # Only one of integer and floating point fields will be populated, depending on the format enum value within data source's type field.
             { # Holder object for the value of a single field in a data point.
                 #
-                # A field value has a particular format and is only ever set to one of an integer or a floating point value.
+                # A field value has a particular format and is only ever set to one of an integer or a floating point value. LINT.IfChange
               "mapVal": [ # Map value. The valid key space and units for the corresponding value of each entry should be documented as part of the data type definition. Keys should be kept small whenever possible. Data streams with large keys and high data frequency may be down sampled.
                 {
                   "value": { # Holder object for the value of an entry in a map field of a data point.
diff --git a/docs/dyn/fitness_v1.users.dataset.html b/docs/dyn/fitness_v1.users.dataset.html
index 5eb1e41..8b68b2f 100644
--- a/docs/dyn/fitness_v1.users.dataset.html
+++ b/docs/dyn/fitness_v1.users.dataset.html
@@ -149,7 +149,7 @@
                       # Only one of integer and floating point fields will be populated, depending on the format enum value within data source's type field.
                     { # Holder object for the value of a single field in a data point.
                         #
-                        # A field value has a particular format and is only ever set to one of an integer or a floating point value.
+                        # A field value has a particular format and is only ever set to one of an integer or a floating point value. LINT.IfChange
                       "mapVal": [ # Map value. The valid key space and units for the corresponding value of each entry should be documented as part of the data type definition. Keys should be kept small whenever possible. Data streams with large keys and high data frequency may be down sampled.
                         {
                           "value": { # Holder object for the value of an entry in a map field of a data point.
diff --git a/docs/dyn/fusiontables_v1.table.html b/docs/dyn/fusiontables_v1.table.html
index 6cba52c..a229092 100644
--- a/docs/dyn/fusiontables_v1.table.html
+++ b/docs/dyn/fusiontables_v1.table.html
@@ -84,10 +84,10 @@
   <code><a href="#get">get(tableId)</a></code></p>
 <p class="firstline">Retrieves a specific table by its id.</p>
 <p class="toc_element">
-  <code><a href="#importRows">importRows(tableId, media_body=None, startLine=None, isStrict=None, encoding=None, delimiter=None, endLine=None)</a></code></p>
+  <code><a href="#importRows">importRows(tableId, media_body=None, startLine=None, isStrict=None, encoding=None, media_mime_type=None, delimiter=None, endLine=None)</a></code></p>
 <p class="firstline">Import more rows into a table.</p>
 <p class="toc_element">
-  <code><a href="#importTable">importTable(name, media_body=None, encoding=None, delimiter=None)</a></code></p>
+  <code><a href="#importTable">importTable(name, media_body=None, encoding=None, delimiter=None, media_mime_type=None)</a></code></p>
 <p class="firstline">Import a new table.</p>
 <p class="toc_element">
   <code><a href="#insert">insert(body)</a></code></p>
@@ -194,7 +194,7 @@
 </div>
 
 <div class="method">
-    <code class="details" id="importRows">importRows(tableId, media_body=None, startLine=None, isStrict=None, encoding=None, delimiter=None, endLine=None)</code>
+    <code class="details" id="importRows">importRows(tableId, media_body=None, startLine=None, isStrict=None, encoding=None, media_mime_type=None, delimiter=None, endLine=None)</code>
   <pre>Import more rows into a table.
 
 Args:
@@ -203,6 +203,7 @@
   startLine: integer, The index of the first line from which to start importing, inclusive. Default is 0.
   isStrict: boolean, Whether the CSV must have the same number of values for each row. If false, rows with fewer values will be padded with empty values. Default is true.
   encoding: string, The encoding of the content. Default is UTF-8. Use 'auto-detect' if you are unsure of the encoding.
+  media_mime_type: string, The MIME type of the media request body, or an instance of a MediaUpload object.
   delimiter: string, The delimiter used to separate cell values. This can only consist of a single character. Default is ','.
   endLine: integer, The index of the last line from which to start importing, exclusive. Thus, the number of imported lines is endLine - startLine. If this parameter is not provided, the file will be imported until the last line of the file. If endLine is negative, then the imported content will exclude the last endLine lines. That is, if endline is negative, no line will be imported whose index is greater than N + endLine where N is the number of lines in the file, and the number of imported lines will be N + endLine - startLine.
 
@@ -216,7 +217,7 @@
 </div>
 
 <div class="method">
-    <code class="details" id="importTable">importTable(name, media_body=None, encoding=None, delimiter=None)</code>
+    <code class="details" id="importTable">importTable(name, media_body=None, encoding=None, delimiter=None, media_mime_type=None)</code>
   <pre>Import a new table.
 
 Args:
@@ -224,6 +225,7 @@
   media_body: string, The filename of the media request body, or an instance of a MediaUpload object.
   encoding: string, The encoding of the content. Default is UTF-8. Use 'auto-detect' if you are unsure of the encoding.
   delimiter: string, The delimiter used to separate cell values. This can only consist of a single character. Default is ','.
+  media_mime_type: string, The MIME type of the media request body, or an instance of a MediaUpload object.
 
 Returns:
   An object of the form:
diff --git a/docs/dyn/fusiontables_v2.table.html b/docs/dyn/fusiontables_v2.table.html
index 52cde04..0f1c00e 100644
--- a/docs/dyn/fusiontables_v2.table.html
+++ b/docs/dyn/fusiontables_v2.table.html
@@ -84,10 +84,10 @@
   <code><a href="#get">get(tableId)</a></code></p>
 <p class="firstline">Retrieves a specific table by its ID.</p>
 <p class="toc_element">
-  <code><a href="#importRows">importRows(tableId, media_body=None, startLine=None, isStrict=None, encoding=None, delimiter=None, endLine=None)</a></code></p>
+  <code><a href="#importRows">importRows(tableId, media_body=None, startLine=None, isStrict=None, encoding=None, media_mime_type=None, delimiter=None, endLine=None)</a></code></p>
 <p class="firstline">Imports more rows into a table.</p>
 <p class="toc_element">
-  <code><a href="#importTable">importTable(name, media_body=None, encoding=None, delimiter=None)</a></code></p>
+  <code><a href="#importTable">importTable(name, media_body=None, encoding=None, delimiter=None, media_mime_type=None)</a></code></p>
 <p class="firstline">Imports a new table.</p>
 <p class="toc_element">
   <code><a href="#insert">insert(body)</a></code></p>
@@ -102,7 +102,7 @@
   <code><a href="#patch">patch(tableId, body, replaceViewDefinition=None)</a></code></p>
 <p class="firstline">Updates an existing table. Unless explicitly requested, only the name, description, and attribution will be updated. This method supports patch semantics.</p>
 <p class="toc_element">
-  <code><a href="#replaceRows">replaceRows(tableId, media_body=None, startLine=None, isStrict=None, encoding=None, delimiter=None, endLine=None)</a></code></p>
+  <code><a href="#replaceRows">replaceRows(tableId, media_body=None, startLine=None, isStrict=None, encoding=None, media_mime_type=None, delimiter=None, endLine=None)</a></code></p>
 <p class="firstline">Replaces rows of an existing table. Current rows remain visible until all replacement rows are ready.</p>
 <p class="toc_element">
   <code><a href="#update">update(tableId, body, replaceViewDefinition=None)</a></code></p>
@@ -223,7 +223,7 @@
 </div>
 
 <div class="method">
-    <code class="details" id="importRows">importRows(tableId, media_body=None, startLine=None, isStrict=None, encoding=None, delimiter=None, endLine=None)</code>
+    <code class="details" id="importRows">importRows(tableId, media_body=None, startLine=None, isStrict=None, encoding=None, media_mime_type=None, delimiter=None, endLine=None)</code>
   <pre>Imports more rows into a table.
 
 Args:
@@ -232,6 +232,7 @@
   startLine: integer, The index of the first line from which to start importing, inclusive. Default is 0.
   isStrict: boolean, Whether the imported CSV must have the same number of values for each row. If false, rows with fewer values will be padded with empty values. Default is true.
   encoding: string, The encoding of the content. Default is UTF-8. Use auto-detect if you are unsure of the encoding.
+  media_mime_type: string, The MIME type of the media request body, or an instance of a MediaUpload object.
   delimiter: string, The delimiter used to separate cell values. This can only consist of a single character. Default is ,.
   endLine: integer, The index of the line up to which data will be imported. Default is to import the entire file. If endLine is negative, it is an offset from the end of the file; the imported content will exclude the last endLine lines.
 
@@ -245,7 +246,7 @@
 </div>
 
 <div class="method">
-    <code class="details" id="importTable">importTable(name, media_body=None, encoding=None, delimiter=None)</code>
+    <code class="details" id="importTable">importTable(name, media_body=None, encoding=None, delimiter=None, media_mime_type=None)</code>
   <pre>Imports a new table.
 
 Args:
@@ -253,6 +254,7 @@
   media_body: string, The filename of the media request body, or an instance of a MediaUpload object.
   encoding: string, The encoding of the content. Default is UTF-8. Use auto-detect if you are unsure of the encoding.
   delimiter: string, The delimiter used to separate cell values. This can only consist of a single character. Default is ,.
+  media_mime_type: string, The MIME type of the media request body, or an instance of a MediaUpload object.
 
 Returns:
   An object of the form:
@@ -565,7 +567,7 @@
 </div>
 
 <div class="method">
-    <code class="details" id="replaceRows">replaceRows(tableId, media_body=None, startLine=None, isStrict=None, encoding=None, delimiter=None, endLine=None)</code>
+    <code class="details" id="replaceRows">replaceRows(tableId, media_body=None, startLine=None, isStrict=None, encoding=None, media_mime_type=None, delimiter=None, endLine=None)</code>
   <pre>Replaces rows of an existing table. Current rows remain visible until all replacement rows are ready.
 
 Args:
@@ -574,6 +576,7 @@
   startLine: integer, The index of the first line from which to start importing, inclusive. Default is 0.
   isStrict: boolean, Whether the imported CSV must have the same number of column values for each row. If true, throws an exception if the CSV does not have the same number of columns. If false, rows with fewer column values will be padded with empty values. Default is true.
   encoding: string, The encoding of the content. Default is UTF-8. Use 'auto-detect' if you are unsure of the encoding.
+  media_mime_type: string, The MIME type of the media request body, or an instance of a MediaUpload object.
   delimiter: string, The delimiter used to separate cell values. This can only consist of a single character. Default is ,.
   endLine: integer, The index of the line up to which data will be imported. Default is to import the entire file. If endLine is negative, it is an offset from the end of the file; the imported content will exclude the last endLine lines.
 
diff --git a/docs/dyn/gamesConfiguration_v1configuration.imageConfigurations.html b/docs/dyn/gamesConfiguration_v1configuration.imageConfigurations.html
index 05d8a8a..5b99373 100644
--- a/docs/dyn/gamesConfiguration_v1configuration.imageConfigurations.html
+++ b/docs/dyn/gamesConfiguration_v1configuration.imageConfigurations.html
@@ -75,11 +75,11 @@
 <h1><a href="gamesConfiguration_v1configuration.html">Google Play Game Services Publishing API</a> . <a href="gamesConfiguration_v1configuration.imageConfigurations.html">imageConfigurations</a></h1>
 <h2>Instance Methods</h2>
 <p class="toc_element">
-  <code><a href="#upload">upload(resourceId, imageType, media_body=None)</a></code></p>
+  <code><a href="#upload">upload(resourceId, imageType, media_body=None, media_mime_type=None)</a></code></p>
 <p class="firstline">Uploads an image for a resource with the given ID and image type.</p>
 <h3>Method Details</h3>
 <div class="method">
-    <code class="details" id="upload">upload(resourceId, imageType, media_body=None)</code>
+    <code class="details" id="upload">upload(resourceId, imageType, media_body=None, media_mime_type=None)</code>
   <pre>Uploads an image for a resource with the given ID and image type.
 
 Args:
@@ -89,6 +89,7 @@
       ACHIEVEMENT_ICON - The icon image for an achievement resource.
       LEADERBOARD_ICON - The icon image for a leaderboard resource.
   media_body: string, The filename of the media request body, or an instance of a MediaUpload object.
+  media_mime_type: string, The MIME type of the media request body, or an instance of a MediaUpload object.
 
 Returns:
   An object of the form:
diff --git a/docs/dyn/genomics_v1.operations.html b/docs/dyn/genomics_v1.operations.html
index b4684a9..590e9f2 100644
--- a/docs/dyn/genomics_v1.operations.html
+++ b/docs/dyn/genomics_v1.operations.html
@@ -147,7 +147,7 @@
 Args:
   name: string, The name of the operation collection. (required)
   pageSize: integer, The maximum number of results to return. If unspecified, defaults to 256. The maximum value is 2048.
-  filter: string, A string for filtering Operations. The following filter fields are supported: * projectId: Required. Corresponds to OperationMetadata.projectId. * createTime: The time this job was created, in seconds from the [epoch](http://en.wikipedia.org/wiki/Unix_time). Can use `>=` and/or `= 1432140000` * `projectId = my-project AND createTime >= 1432140000 AND createTime <= 1432150000 AND status = RUNNING`
+  filter: string, A string for filtering Operations. The following filter fields are supported: * projectId: Required. Corresponds to OperationMetadata.projectId. * createTime: The time this job was created, in seconds from the [epoch](http://en.wikipedia.org/wiki/Unix_time). Can use `>=` and/or `= 1432140000` * `projectId = my-project AND createTime >= 1432140000 AND createTime <= 1432150000 AND status = RUNNING` * `projectId = my-project AND labels.color = *` * `projectId = my-project AND labels.color = red`
   pageToken: string, The standard list page token.
   x__xgafv: string, V1 error format.
 
diff --git a/docs/dyn/genomics_v1alpha2.operations.html b/docs/dyn/genomics_v1alpha2.operations.html
index 39b7939..9c9d39f 100644
--- a/docs/dyn/genomics_v1alpha2.operations.html
+++ b/docs/dyn/genomics_v1alpha2.operations.html
@@ -147,7 +147,7 @@
 Args:
   name: string, The name of the operation collection. (required)
   pageSize: integer, The maximum number of results to return. If unspecified, defaults to 256. The maximum value is 2048.
-  filter: string, A string for filtering Operations. The following filter fields are supported: * projectId: Required. Corresponds to OperationMetadata.projectId. * createTime: The time this job was created, in seconds from the [epoch](http://en.wikipedia.org/wiki/Unix_time). Can use `>=` and/or `= 1432140000` * `projectId = my-project AND createTime >= 1432140000 AND createTime <= 1432150000 AND status = RUNNING`
+  filter: string, A string for filtering Operations. The following filter fields are supported: * projectId: Required. Corresponds to OperationMetadata.projectId. * createTime: The time this job was created, in seconds from the [epoch](http://en.wikipedia.org/wiki/Unix_time). Can use `>=` and/or `= 1432140000` * `projectId = my-project AND createTime >= 1432140000 AND createTime <= 1432150000 AND status = RUNNING` * `projectId = my-project AND labels.color = *` * `projectId = my-project AND labels.color = red`
   pageToken: string, The standard list page token.
   x__xgafv: string, V1 error format.
 
diff --git a/docs/dyn/genomics_v1alpha2.pipelines.html b/docs/dyn/genomics_v1alpha2.pipelines.html
index 993c52b..eb8ab7f 100644
--- a/docs/dyn/genomics_v1alpha2.pipelines.html
+++ b/docs/dyn/genomics_v1alpha2.pipelines.html
@@ -447,13 +447,16 @@
         "gcsPath": "A String", # The location in Google Cloud Storage to which the pipeline logs will be copied. Can be specified as a fully qualified directory path, in which case logs will be output with a unique identifier as the filename in that directory, or as a fully specified path, which must end in `.log`, in which case that path will be used, and the user must ensure that logs are not overwritten. Stdout and stderr logs from the run are also generated and output as `-stdout.log` and `-stderr.log`.
       },
       "projectId": "A String", # Required. The project in which to run the pipeline. The caller must have WRITER access to all Google Cloud services and resources (e.g. Google Compute Engine) will be used.
+      "labels": { # Labels to apply to this pipeline run. Labels will also be applied to compute resources (VM, disks) created by this pipeline run. When listing operations, operations can filtered by labels. Label keys may not be empty; label values may be empty. Non-empty labels must be 1-63 characters long, and comply with [RFC1035] (https://www.ietf.org/rfc/rfc1035.txt). Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.
+        "a_key": "A String",
+      },
       "serviceAccount": { # A Google Cloud Service Account. # The Google Cloud Service Account that will be used to access data and services. By default, the compute service account associated with `projectId` is used.
         "scopes": [ # List of scopes to be enabled for this service account on the VM. The following scopes are automatically included: * https://www.googleapis.com/auth/compute * https://www.googleapis.com/auth/devstorage.full_control * https://www.googleapis.com/auth/genomics * https://www.googleapis.com/auth/logging.write * https://www.googleapis.com/auth/monitoring.write
           "A String",
         ],
         "email": "A String", # Email address of the service account. Defaults to `default`, which uses the compute service account associated with the project.
       },
-      "clientId": "A String", # Client-specified pipeline operation identifier.
+      "clientId": "A String", # This field is deprecated. Use `labels` instead. Client-specified pipeline operation identifier.
       "outputs": { # Pipeline output arguments; keys are defined in the pipeline documentation. All output parameters of without default values must be specified. If parameters with defaults are specified here, the defaults will be overridden.
         "a_key": "A String",
       },
diff --git a/docs/dyn/gmail_v1.users.drafts.html b/docs/dyn/gmail_v1.users.drafts.html
index 702e37c..a021d45 100644
--- a/docs/dyn/gmail_v1.users.drafts.html
+++ b/docs/dyn/gmail_v1.users.drafts.html
@@ -75,7 +75,7 @@
 <h1><a href="gmail_v1.html">Gmail API</a> . <a href="gmail_v1.users.html">users</a> . <a href="gmail_v1.users.drafts.html">drafts</a></h1>
 <h2>Instance Methods</h2>
 <p class="toc_element">
-  <code><a href="#create">create(userId, body=None, media_body=None)</a></code></p>
+  <code><a href="#create">create(userId, body=None, media_body=None, media_mime_type=None)</a></code></p>
 <p class="firstline">Creates a new draft with the DRAFT label.</p>
 <p class="toc_element">
   <code><a href="#delete">delete(userId, id)</a></code></p>
@@ -90,14 +90,14 @@
   <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="#send">send(userId, body=None, media_body=None)</a></code></p>
+  <code><a href="#send">send(userId, body=None, media_body=None, media_mime_type=None)</a></code></p>
 <p class="firstline">Sends the specified, existing draft to the recipients in the To, Cc, and Bcc headers.</p>
 <p class="toc_element">
-  <code><a href="#update">update(userId, id, body=None, media_body=None)</a></code></p>
+  <code><a href="#update">update(userId, id, body=None, media_body=None, media_mime_type=None)</a></code></p>
 <p class="firstline">Replaces a draft's content.</p>
 <h3>Method Details</h3>
 <div class="method">
-    <code class="details" id="create">create(userId, body=None, media_body=None)</code>
+    <code class="details" id="create">create(userId, body=None, media_body=None, media_mime_type=None)</code>
   <pre>Creates a new draft with the DRAFT label.
 
 Args:
@@ -111,9 +111,9 @@
     "historyId": "A String", # The ID of the last history record that modified this message.
     "payload": { # A single MIME message part. # The parsed email structure in the message parts.
       "body": { # The body of a single MIME message part. # The message part body for this part, which may be empty for container MIME message parts.
-        "data": "A String", # The body data of a MIME message part. May be empty for MIME container types that have no message body or when the body data is sent as a separate attachment. An attachment ID is present if the body data is contained in a separate attachment.
+        "data": "A String", # The body data of a MIME message part as a base64url encoded string. May be empty for MIME container types that have no message body or when the body data is sent as a separate attachment. An attachment ID is present if the body data is contained in a separate attachment.
         "attachmentId": "A String", # When present, contains the ID of an external attachment that can be retrieved in a separate messages.attachments.get request. When not present, the entire content of the message part body is contained in the data field.
-        "size": 42, # Total number of bytes in the body of the message part.
+        "size": 42, # Number of bytes for the message part data (encoding notwithstanding).
       },
       "mimeType": "A String", # The MIME type of the message part.
       "partId": "A String", # The immutable ID of the message part.
@@ -144,6 +144,7 @@
 }
 
   media_body: string, The filename of the media request body, or an instance of a MediaUpload object.
+  media_mime_type: string, The MIME type of the media request body, or an instance of a MediaUpload object.
 
 Returns:
   An object of the form:
@@ -154,9 +155,9 @@
       "historyId": "A String", # The ID of the last history record that modified this message.
       "payload": { # A single MIME message part. # The parsed email structure in the message parts.
         "body": { # The body of a single MIME message part. # The message part body for this part, which may be empty for container MIME message parts.
-          "data": "A String", # The body data of a MIME message part. May be empty for MIME container types that have no message body or when the body data is sent as a separate attachment. An attachment ID is present if the body data is contained in a separate attachment.
+          "data": "A String", # The body data of a MIME message part as a base64url encoded string. May be empty for MIME container types that have no message body or when the body data is sent as a separate attachment. An attachment ID is present if the body data is contained in a separate attachment.
           "attachmentId": "A String", # When present, contains the ID of an external attachment that can be retrieved in a separate messages.attachments.get request. When not present, the entire content of the message part body is contained in the data field.
-          "size": 42, # Total number of bytes in the body of the message part.
+          "size": 42, # Number of bytes for the message part data (encoding notwithstanding).
         },
         "mimeType": "A String", # The MIME type of the message part.
         "partId": "A String", # The immutable ID of the message part.
@@ -220,9 +221,9 @@
       "historyId": "A String", # The ID of the last history record that modified this message.
       "payload": { # A single MIME message part. # The parsed email structure in the message parts.
         "body": { # The body of a single MIME message part. # The message part body for this part, which may be empty for container MIME message parts.
-          "data": "A String", # The body data of a MIME message part. May be empty for MIME container types that have no message body or when the body data is sent as a separate attachment. An attachment ID is present if the body data is contained in a separate attachment.
+          "data": "A String", # The body data of a MIME message part as a base64url encoded string. May be empty for MIME container types that have no message body or when the body data is sent as a separate attachment. An attachment ID is present if the body data is contained in a separate attachment.
           "attachmentId": "A String", # When present, contains the ID of an external attachment that can be retrieved in a separate messages.attachments.get request. When not present, the entire content of the message part body is contained in the data field.
-          "size": 42, # Total number of bytes in the body of the message part.
+          "size": 42, # Number of bytes for the message part data (encoding notwithstanding).
         },
         "mimeType": "A String", # The MIME type of the message part.
         "partId": "A String", # The immutable ID of the message part.
@@ -277,9 +278,9 @@
           "historyId": "A String", # The ID of the last history record that modified this message.
           "payload": { # A single MIME message part. # The parsed email structure in the message parts.
             "body": { # The body of a single MIME message part. # The message part body for this part, which may be empty for container MIME message parts.
-              "data": "A String", # The body data of a MIME message part. May be empty for MIME container types that have no message body or when the body data is sent as a separate attachment. An attachment ID is present if the body data is contained in a separate attachment.
+              "data": "A String", # The body data of a MIME message part as a base64url encoded string. May be empty for MIME container types that have no message body or when the body data is sent as a separate attachment. An attachment ID is present if the body data is contained in a separate attachment.
               "attachmentId": "A String", # When present, contains the ID of an external attachment that can be retrieved in a separate messages.attachments.get request. When not present, the entire content of the message part body is contained in the data field.
-              "size": 42, # Total number of bytes in the body of the message part.
+              "size": 42, # Number of bytes for the message part data (encoding notwithstanding).
             },
             "mimeType": "A String", # The MIME type of the message part.
             "partId": "A String", # The immutable ID of the message part.
@@ -327,7 +328,7 @@
 </div>
 
 <div class="method">
-    <code class="details" id="send">send(userId, body=None, media_body=None)</code>
+    <code class="details" id="send">send(userId, body=None, media_body=None, media_mime_type=None)</code>
   <pre>Sends the specified, existing draft to the recipients in the To, Cc, and Bcc headers.
 
 Args:
@@ -341,9 +342,9 @@
     "historyId": "A String", # The ID of the last history record that modified this message.
     "payload": { # A single MIME message part. # The parsed email structure in the message parts.
       "body": { # The body of a single MIME message part. # The message part body for this part, which may be empty for container MIME message parts.
-        "data": "A String", # The body data of a MIME message part. May be empty for MIME container types that have no message body or when the body data is sent as a separate attachment. An attachment ID is present if the body data is contained in a separate attachment.
+        "data": "A String", # The body data of a MIME message part as a base64url encoded string. May be empty for MIME container types that have no message body or when the body data is sent as a separate attachment. An attachment ID is present if the body data is contained in a separate attachment.
         "attachmentId": "A String", # When present, contains the ID of an external attachment that can be retrieved in a separate messages.attachments.get request. When not present, the entire content of the message part body is contained in the data field.
-        "size": 42, # Total number of bytes in the body of the message part.
+        "size": 42, # Number of bytes for the message part data (encoding notwithstanding).
       },
       "mimeType": "A String", # The MIME type of the message part.
       "partId": "A String", # The immutable ID of the message part.
@@ -374,6 +375,7 @@
 }
 
   media_body: string, The filename of the media request body, or an instance of a MediaUpload object.
+  media_mime_type: string, The MIME type of the media request body, or an instance of a MediaUpload object.
 
 Returns:
   An object of the form:
@@ -383,9 +385,9 @@
     "historyId": "A String", # The ID of the last history record that modified this message.
     "payload": { # A single MIME message part. # The parsed email structure in the message parts.
       "body": { # The body of a single MIME message part. # The message part body for this part, which may be empty for container MIME message parts.
-        "data": "A String", # The body data of a MIME message part. May be empty for MIME container types that have no message body or when the body data is sent as a separate attachment. An attachment ID is present if the body data is contained in a separate attachment.
+        "data": "A String", # The body data of a MIME message part as a base64url encoded string. May be empty for MIME container types that have no message body or when the body data is sent as a separate attachment. An attachment ID is present if the body data is contained in a separate attachment.
         "attachmentId": "A String", # When present, contains the ID of an external attachment that can be retrieved in a separate messages.attachments.get request. When not present, the entire content of the message part body is contained in the data field.
-        "size": 42, # Total number of bytes in the body of the message part.
+        "size": 42, # Number of bytes for the message part data (encoding notwithstanding).
       },
       "mimeType": "A String", # The MIME type of the message part.
       "partId": "A String", # The immutable ID of the message part.
@@ -415,7 +417,7 @@
 </div>
 
 <div class="method">
-    <code class="details" id="update">update(userId, id, body=None, media_body=None)</code>
+    <code class="details" id="update">update(userId, id, body=None, media_body=None, media_mime_type=None)</code>
   <pre>Replaces a draft's content.
 
 Args:
@@ -430,9 +432,9 @@
     "historyId": "A String", # The ID of the last history record that modified this message.
     "payload": { # A single MIME message part. # The parsed email structure in the message parts.
       "body": { # The body of a single MIME message part. # The message part body for this part, which may be empty for container MIME message parts.
-        "data": "A String", # The body data of a MIME message part. May be empty for MIME container types that have no message body or when the body data is sent as a separate attachment. An attachment ID is present if the body data is contained in a separate attachment.
+        "data": "A String", # The body data of a MIME message part as a base64url encoded string. May be empty for MIME container types that have no message body or when the body data is sent as a separate attachment. An attachment ID is present if the body data is contained in a separate attachment.
         "attachmentId": "A String", # When present, contains the ID of an external attachment that can be retrieved in a separate messages.attachments.get request. When not present, the entire content of the message part body is contained in the data field.
-        "size": 42, # Total number of bytes in the body of the message part.
+        "size": 42, # Number of bytes for the message part data (encoding notwithstanding).
       },
       "mimeType": "A String", # The MIME type of the message part.
       "partId": "A String", # The immutable ID of the message part.
@@ -463,6 +465,7 @@
 }
 
   media_body: string, The filename of the media request body, or an instance of a MediaUpload object.
+  media_mime_type: string, The MIME type of the media request body, or an instance of a MediaUpload object.
 
 Returns:
   An object of the form:
@@ -473,9 +476,9 @@
       "historyId": "A String", # The ID of the last history record that modified this message.
       "payload": { # A single MIME message part. # The parsed email structure in the message parts.
         "body": { # The body of a single MIME message part. # The message part body for this part, which may be empty for container MIME message parts.
-          "data": "A String", # The body data of a MIME message part. May be empty for MIME container types that have no message body or when the body data is sent as a separate attachment. An attachment ID is present if the body data is contained in a separate attachment.
+          "data": "A String", # The body data of a MIME message part as a base64url encoded string. May be empty for MIME container types that have no message body or when the body data is sent as a separate attachment. An attachment ID is present if the body data is contained in a separate attachment.
           "attachmentId": "A String", # When present, contains the ID of an external attachment that can be retrieved in a separate messages.attachments.get request. When not present, the entire content of the message part body is contained in the data field.
-          "size": 42, # Total number of bytes in the body of the message part.
+          "size": 42, # Number of bytes for the message part data (encoding notwithstanding).
         },
         "mimeType": "A String", # The MIME type of the message part.
         "partId": "A String", # The immutable ID of the message part.
diff --git a/docs/dyn/gmail_v1.users.history.html b/docs/dyn/gmail_v1.users.history.html
index ae0040d..f460c35 100644
--- a/docs/dyn/gmail_v1.users.history.html
+++ b/docs/dyn/gmail_v1.users.history.html
@@ -110,9 +110,9 @@
               "historyId": "A String", # The ID of the last history record that modified this message.
               "payload": { # A single MIME message part. # The parsed email structure in the message parts.
                 "body": { # The body of a single MIME message part. # The message part body for this part, which may be empty for container MIME message parts.
-                  "data": "A String", # The body data of a MIME message part. May be empty for MIME container types that have no message body or when the body data is sent as a separate attachment. An attachment ID is present if the body data is contained in a separate attachment.
+                  "data": "A String", # The body data of a MIME message part as a base64url encoded string. May be empty for MIME container types that have no message body or when the body data is sent as a separate attachment. An attachment ID is present if the body data is contained in a separate attachment.
                   "attachmentId": "A String", # When present, contains the ID of an external attachment that can be retrieved in a separate messages.attachments.get request. When not present, the entire content of the message part body is contained in the data field.
-                  "size": 42, # Total number of bytes in the body of the message part.
+                  "size": 42, # Number of bytes for the message part data (encoding notwithstanding).
                 },
                 "mimeType": "A String", # The MIME type of the message part.
                 "partId": "A String", # The immutable ID of the message part.
@@ -147,9 +147,9 @@
             "historyId": "A String", # The ID of the last history record that modified this message.
             "payload": { # A single MIME message part. # The parsed email structure in the message parts.
               "body": { # The body of a single MIME message part. # The message part body for this part, which may be empty for container MIME message parts.
-                "data": "A String", # The body data of a MIME message part. May be empty for MIME container types that have no message body or when the body data is sent as a separate attachment. An attachment ID is present if the body data is contained in a separate attachment.
+                "data": "A String", # The body data of a MIME message part as a base64url encoded string. May be empty for MIME container types that have no message body or when the body data is sent as a separate attachment. An attachment ID is present if the body data is contained in a separate attachment.
                 "attachmentId": "A String", # When present, contains the ID of an external attachment that can be retrieved in a separate messages.attachments.get request. When not present, the entire content of the message part body is contained in the data field.
-                "size": 42, # Total number of bytes in the body of the message part.
+                "size": 42, # Number of bytes for the message part data (encoding notwithstanding).
               },
               "mimeType": "A String", # The MIME type of the message part.
               "partId": "A String", # The immutable ID of the message part.
@@ -184,9 +184,9 @@
               "historyId": "A String", # The ID of the last history record that modified this message.
               "payload": { # A single MIME message part. # The parsed email structure in the message parts.
                 "body": { # The body of a single MIME message part. # The message part body for this part, which may be empty for container MIME message parts.
-                  "data": "A String", # The body data of a MIME message part. May be empty for MIME container types that have no message body or when the body data is sent as a separate attachment. An attachment ID is present if the body data is contained in a separate attachment.
+                  "data": "A String", # The body data of a MIME message part as a base64url encoded string. May be empty for MIME container types that have no message body or when the body data is sent as a separate attachment. An attachment ID is present if the body data is contained in a separate attachment.
                   "attachmentId": "A String", # When present, contains the ID of an external attachment that can be retrieved in a separate messages.attachments.get request. When not present, the entire content of the message part body is contained in the data field.
-                  "size": 42, # Total number of bytes in the body of the message part.
+                  "size": 42, # Number of bytes for the message part data (encoding notwithstanding).
                 },
                 "mimeType": "A String", # The MIME type of the message part.
                 "partId": "A String", # The immutable ID of the message part.
@@ -225,9 +225,9 @@
               "historyId": "A String", # The ID of the last history record that modified this message.
               "payload": { # A single MIME message part. # The parsed email structure in the message parts.
                 "body": { # The body of a single MIME message part. # The message part body for this part, which may be empty for container MIME message parts.
-                  "data": "A String", # The body data of a MIME message part. May be empty for MIME container types that have no message body or when the body data is sent as a separate attachment. An attachment ID is present if the body data is contained in a separate attachment.
+                  "data": "A String", # The body data of a MIME message part as a base64url encoded string. May be empty for MIME container types that have no message body or when the body data is sent as a separate attachment. An attachment ID is present if the body data is contained in a separate attachment.
                   "attachmentId": "A String", # When present, contains the ID of an external attachment that can be retrieved in a separate messages.attachments.get request. When not present, the entire content of the message part body is contained in the data field.
-                  "size": 42, # Total number of bytes in the body of the message part.
+                  "size": 42, # Number of bytes for the message part data (encoding notwithstanding).
                 },
                 "mimeType": "A String", # The MIME type of the message part.
                 "partId": "A String", # The immutable ID of the message part.
@@ -263,9 +263,9 @@
               "historyId": "A String", # The ID of the last history record that modified this message.
               "payload": { # A single MIME message part. # The parsed email structure in the message parts.
                 "body": { # The body of a single MIME message part. # The message part body for this part, which may be empty for container MIME message parts.
-                  "data": "A String", # The body data of a MIME message part. May be empty for MIME container types that have no message body or when the body data is sent as a separate attachment. An attachment ID is present if the body data is contained in a separate attachment.
+                  "data": "A String", # The body data of a MIME message part as a base64url encoded string. May be empty for MIME container types that have no message body or when the body data is sent as a separate attachment. An attachment ID is present if the body data is contained in a separate attachment.
                   "attachmentId": "A String", # When present, contains the ID of an external attachment that can be retrieved in a separate messages.attachments.get request. When not present, the entire content of the message part body is contained in the data field.
-                  "size": 42, # Total number of bytes in the body of the message part.
+                  "size": 42, # Number of bytes for the message part data (encoding notwithstanding).
                 },
                 "mimeType": "A String", # The MIME type of the message part.
                 "partId": "A String", # The immutable ID of the message part.
diff --git a/docs/dyn/gmail_v1.users.messages.attachments.html b/docs/dyn/gmail_v1.users.messages.attachments.html
index 0e040b2..a5ea7fb 100644
--- a/docs/dyn/gmail_v1.users.messages.attachments.html
+++ b/docs/dyn/gmail_v1.users.messages.attachments.html
@@ -91,9 +91,9 @@
   An object of the form:
 
     { # The body of a single MIME message part.
-    "data": "A String", # The body data of a MIME message part. May be empty for MIME container types that have no message body or when the body data is sent as a separate attachment. An attachment ID is present if the body data is contained in a separate attachment.
+    "data": "A String", # The body data of a MIME message part as a base64url encoded string. May be empty for MIME container types that have no message body or when the body data is sent as a separate attachment. An attachment ID is present if the body data is contained in a separate attachment.
     "attachmentId": "A String", # When present, contains the ID of an external attachment that can be retrieved in a separate messages.attachments.get request. When not present, the entire content of the message part body is contained in the data field.
-    "size": 42, # Total number of bytes in the body of the message part.
+    "size": 42, # Number of bytes for the message part data (encoding notwithstanding).
   }</pre>
 </div>
 
diff --git a/docs/dyn/gmail_v1.users.messages.html b/docs/dyn/gmail_v1.users.messages.html
index 65bb870..e66cef7 100644
--- a/docs/dyn/gmail_v1.users.messages.html
+++ b/docs/dyn/gmail_v1.users.messages.html
@@ -83,16 +83,19 @@
   <code><a href="#batchDelete">batchDelete(userId, body)</a></code></p>
 <p class="firstline">Deletes many messages by message ID. Provides no guarantees that messages were not already deleted or even existed at all.</p>
 <p class="toc_element">
+  <code><a href="#batchModify">batchModify(userId, body)</a></code></p>
+<p class="firstline">Modifies the labels on the specified messages.</p>
+<p class="toc_element">
   <code><a href="#delete">delete(userId, id)</a></code></p>
 <p class="firstline">Immediately and permanently deletes the specified message. This operation cannot be undone. Prefer messages.trash instead.</p>
 <p class="toc_element">
   <code><a href="#get">get(userId, id, format=None, metadataHeaders=None)</a></code></p>
 <p class="firstline">Gets the specified message.</p>
 <p class="toc_element">
-  <code><a href="#import_">import_(userId, body=None, media_body=None, internalDateSource=None, neverMarkSpam=None, processForCalendar=None, deleted=None)</a></code></p>
+  <code><a href="#import_">import_(userId, body=None, media_body=None, internalDateSource=None, neverMarkSpam=None, media_mime_type=None, deleted=None, processForCalendar=None)</a></code></p>
 <p class="firstline">Imports a message into only this user's mailbox, with standard email delivery scanning and classification similar to receiving via SMTP. Does not send a message.</p>
 <p class="toc_element">
-  <code><a href="#insert">insert(userId, body=None, media_body=None, internalDateSource=None, deleted=None)</a></code></p>
+  <code><a href="#insert">insert(userId, body=None, media_body=None, internalDateSource=None, media_mime_type=None, deleted=None)</a></code></p>
 <p class="firstline">Directly inserts a message into only this user's mailbox similar to IMAP APPEND, bypassing most scanning and classification. Does not send a message.</p>
 <p class="toc_element">
   <code><a href="#list">list(userId, labelIds=None, q=None, pageToken=None, maxResults=None, includeSpamTrash=None)</a></code></p>
@@ -104,7 +107,7 @@
   <code><a href="#modify">modify(userId, id, body)</a></code></p>
 <p class="firstline">Modifies the labels on the specified message.</p>
 <p class="toc_element">
-  <code><a href="#send">send(userId, body=None, media_body=None)</a></code></p>
+  <code><a href="#send">send(userId, body=None, media_body=None, media_mime_type=None)</a></code></p>
 <p class="firstline">Sends the specified message to the recipients in the To, Cc, and Bcc headers.</p>
 <p class="toc_element">
   <code><a href="#trash">trash(userId, id)</a></code></p>
@@ -132,6 +135,30 @@
 </div>
 
 <div class="method">
+    <code class="details" id="batchModify">batchModify(userId, body)</code>
+  <pre>Modifies the labels on the specified messages.
+
+Args:
+  userId: string, The user's email address. The special value me can be used to indicate the authenticated user. (required)
+  body: object, The request body. (required)
+    The object takes the form of:
+
+{
+    "removeLabelIds": [ # A list of label IDs to remove from messages.
+      "A String",
+    ],
+    "ids": [ # The IDs of the messages to modify. There is a limit of 1000 ids per request.
+      "A String",
+    ],
+    "addLabelIds": [ # A list of label IDs to add to messages.
+      "A String",
+    ],
+  }
+
+</pre>
+</div>
+
+<div class="method">
     <code class="details" id="delete">delete(userId, id)</code>
   <pre>Immediately and permanently deletes the specified message. This operation cannot be undone. Prefer messages.trash instead.
 
@@ -164,9 +191,9 @@
     "historyId": "A String", # The ID of the last history record that modified this message.
     "payload": { # A single MIME message part. # The parsed email structure in the message parts.
       "body": { # The body of a single MIME message part. # The message part body for this part, which may be empty for container MIME message parts.
-        "data": "A String", # The body data of a MIME message part. May be empty for MIME container types that have no message body or when the body data is sent as a separate attachment. An attachment ID is present if the body data is contained in a separate attachment.
+        "data": "A String", # The body data of a MIME message part as a base64url encoded string. May be empty for MIME container types that have no message body or when the body data is sent as a separate attachment. An attachment ID is present if the body data is contained in a separate attachment.
         "attachmentId": "A String", # When present, contains the ID of an external attachment that can be retrieved in a separate messages.attachments.get request. When not present, the entire content of the message part body is contained in the data field.
-        "size": 42, # Total number of bytes in the body of the message part.
+        "size": 42, # Number of bytes for the message part data (encoding notwithstanding).
       },
       "mimeType": "A String", # The MIME type of the message part.
       "partId": "A String", # The immutable ID of the message part.
@@ -196,7 +223,7 @@
 </div>
 
 <div class="method">
-    <code class="details" id="import_">import_(userId, body=None, media_body=None, internalDateSource=None, neverMarkSpam=None, processForCalendar=None, deleted=None)</code>
+    <code class="details" id="import_">import_(userId, body=None, media_body=None, internalDateSource=None, neverMarkSpam=None, media_mime_type=None, deleted=None, processForCalendar=None)</code>
   <pre>Imports a message into only this user's mailbox, with standard email delivery scanning and classification similar to receiving via SMTP. Does not send a message.
 
 Args:
@@ -209,9 +236,9 @@
   "historyId": "A String", # The ID of the last history record that modified this message.
   "payload": { # A single MIME message part. # The parsed email structure in the message parts.
     "body": { # The body of a single MIME message part. # The message part body for this part, which may be empty for container MIME message parts.
-      "data": "A String", # The body data of a MIME message part. May be empty for MIME container types that have no message body or when the body data is sent as a separate attachment. An attachment ID is present if the body data is contained in a separate attachment.
+      "data": "A String", # The body data of a MIME message part as a base64url encoded string. May be empty for MIME container types that have no message body or when the body data is sent as a separate attachment. An attachment ID is present if the body data is contained in a separate attachment.
       "attachmentId": "A String", # When present, contains the ID of an external attachment that can be retrieved in a separate messages.attachments.get request. When not present, the entire content of the message part body is contained in the data field.
-      "size": 42, # Total number of bytes in the body of the message part.
+      "size": 42, # Number of bytes for the message part data (encoding notwithstanding).
     },
     "mimeType": "A String", # The MIME type of the message part.
     "partId": "A String", # The immutable ID of the message part.
@@ -245,8 +272,9 @@
       dateHeader - 
       receivedTime - 
   neverMarkSpam: boolean, Ignore the Gmail spam classifier decision and never mark this email as SPAM in the mailbox.
-  processForCalendar: boolean, Process calendar invites in the email and add any extracted meetings to the Google Calendar for this user.
+  media_mime_type: string, The MIME type of the media request body, or an instance of a MediaUpload object.
   deleted: boolean, Mark the email as permanently deleted (not TRASH) and only visible in Google Apps Vault to a Vault administrator. Only used for Google Apps for Work accounts.
+  processForCalendar: boolean, Process calendar invites in the email and add any extracted meetings to the Google Calendar for this user.
 
 Returns:
   An object of the form:
@@ -256,9 +284,9 @@
     "historyId": "A String", # The ID of the last history record that modified this message.
     "payload": { # A single MIME message part. # The parsed email structure in the message parts.
       "body": { # The body of a single MIME message part. # The message part body for this part, which may be empty for container MIME message parts.
-        "data": "A String", # The body data of a MIME message part. May be empty for MIME container types that have no message body or when the body data is sent as a separate attachment. An attachment ID is present if the body data is contained in a separate attachment.
+        "data": "A String", # The body data of a MIME message part as a base64url encoded string. May be empty for MIME container types that have no message body or when the body data is sent as a separate attachment. An attachment ID is present if the body data is contained in a separate attachment.
         "attachmentId": "A String", # When present, contains the ID of an external attachment that can be retrieved in a separate messages.attachments.get request. When not present, the entire content of the message part body is contained in the data field.
-        "size": 42, # Total number of bytes in the body of the message part.
+        "size": 42, # Number of bytes for the message part data (encoding notwithstanding).
       },
       "mimeType": "A String", # The MIME type of the message part.
       "partId": "A String", # The immutable ID of the message part.
@@ -288,7 +316,7 @@
 </div>
 
 <div class="method">
-    <code class="details" id="insert">insert(userId, body=None, media_body=None, internalDateSource=None, deleted=None)</code>
+    <code class="details" id="insert">insert(userId, body=None, media_body=None, internalDateSource=None, media_mime_type=None, deleted=None)</code>
   <pre>Directly inserts a message into only this user's mailbox similar to IMAP APPEND, bypassing most scanning and classification. Does not send a message.
 
 Args:
@@ -301,9 +329,9 @@
   "historyId": "A String", # The ID of the last history record that modified this message.
   "payload": { # A single MIME message part. # The parsed email structure in the message parts.
     "body": { # The body of a single MIME message part. # The message part body for this part, which may be empty for container MIME message parts.
-      "data": "A String", # The body data of a MIME message part. May be empty for MIME container types that have no message body or when the body data is sent as a separate attachment. An attachment ID is present if the body data is contained in a separate attachment.
+      "data": "A String", # The body data of a MIME message part as a base64url encoded string. May be empty for MIME container types that have no message body or when the body data is sent as a separate attachment. An attachment ID is present if the body data is contained in a separate attachment.
       "attachmentId": "A String", # When present, contains the ID of an external attachment that can be retrieved in a separate messages.attachments.get request. When not present, the entire content of the message part body is contained in the data field.
-      "size": 42, # Total number of bytes in the body of the message part.
+      "size": 42, # Number of bytes for the message part data (encoding notwithstanding).
     },
     "mimeType": "A String", # The MIME type of the message part.
     "partId": "A String", # The immutable ID of the message part.
@@ -336,6 +364,7 @@
     Allowed values
       dateHeader - 
       receivedTime - 
+  media_mime_type: string, The MIME type of the media request body, or an instance of a MediaUpload object.
   deleted: boolean, Mark the email as permanently deleted (not TRASH) and only visible in Google Apps Vault to a Vault administrator. Only used for Google Apps for Work accounts.
 
 Returns:
@@ -346,9 +375,9 @@
     "historyId": "A String", # The ID of the last history record that modified this message.
     "payload": { # A single MIME message part. # The parsed email structure in the message parts.
       "body": { # The body of a single MIME message part. # The message part body for this part, which may be empty for container MIME message parts.
-        "data": "A String", # The body data of a MIME message part. May be empty for MIME container types that have no message body or when the body data is sent as a separate attachment. An attachment ID is present if the body data is contained in a separate attachment.
+        "data": "A String", # The body data of a MIME message part as a base64url encoded string. May be empty for MIME container types that have no message body or when the body data is sent as a separate attachment. An attachment ID is present if the body data is contained in a separate attachment.
         "attachmentId": "A String", # When present, contains the ID of an external attachment that can be retrieved in a separate messages.attachments.get request. When not present, the entire content of the message part body is contained in the data field.
-        "size": 42, # Total number of bytes in the body of the message part.
+        "size": 42, # Number of bytes for the message part data (encoding notwithstanding).
       },
       "mimeType": "A String", # The MIME type of the message part.
       "partId": "A String", # The immutable ID of the message part.
@@ -384,7 +413,7 @@
 Args:
   userId: string, The user's email address. The special value me can be used to indicate the authenticated user. (required)
   labelIds: string, Only return messages with labels that match all of the specified label IDs. (repeated)
-  q: string, Only return messages matching the specified query. Supports the same query format as the Gmail search box. For example, "from:someuser@example.com rfc822msgid: is:unread".
+  q: string, Only return messages matching the specified query. Supports the same query format as the Gmail search box. For example, "from:someuser@example.com rfc822msgid: is:unread". Parameter cannot be used when accessing the api using the gmail.metadata scope.
   pageToken: string, Page token to retrieve a specific page of results in the list.
   maxResults: integer, Maximum number of messages to return.
   includeSpamTrash: boolean, Include messages from SPAM and TRASH in the results.
@@ -401,9 +430,9 @@
         "historyId": "A String", # The ID of the last history record that modified this message.
         "payload": { # A single MIME message part. # The parsed email structure in the message parts.
           "body": { # The body of a single MIME message part. # The message part body for this part, which may be empty for container MIME message parts.
-            "data": "A String", # The body data of a MIME message part. May be empty for MIME container types that have no message body or when the body data is sent as a separate attachment. An attachment ID is present if the body data is contained in a separate attachment.
+            "data": "A String", # The body data of a MIME message part as a base64url encoded string. May be empty for MIME container types that have no message body or when the body data is sent as a separate attachment. An attachment ID is present if the body data is contained in a separate attachment.
             "attachmentId": "A String", # When present, contains the ID of an external attachment that can be retrieved in a separate messages.attachments.get request. When not present, the entire content of the message part body is contained in the data field.
-            "size": 42, # Total number of bytes in the body of the message part.
+            "size": 42, # Number of bytes for the message part data (encoding notwithstanding).
           },
           "mimeType": "A String", # The MIME type of the message part.
           "partId": "A String", # The immutable ID of the message part.
@@ -476,9 +505,9 @@
     "historyId": "A String", # The ID of the last history record that modified this message.
     "payload": { # A single MIME message part. # The parsed email structure in the message parts.
       "body": { # The body of a single MIME message part. # The message part body for this part, which may be empty for container MIME message parts.
-        "data": "A String", # The body data of a MIME message part. May be empty for MIME container types that have no message body or when the body data is sent as a separate attachment. An attachment ID is present if the body data is contained in a separate attachment.
+        "data": "A String", # The body data of a MIME message part as a base64url encoded string. May be empty for MIME container types that have no message body or when the body data is sent as a separate attachment. An attachment ID is present if the body data is contained in a separate attachment.
         "attachmentId": "A String", # When present, contains the ID of an external attachment that can be retrieved in a separate messages.attachments.get request. When not present, the entire content of the message part body is contained in the data field.
-        "size": 42, # Total number of bytes in the body of the message part.
+        "size": 42, # Number of bytes for the message part data (encoding notwithstanding).
       },
       "mimeType": "A String", # The MIME type of the message part.
       "partId": "A String", # The immutable ID of the message part.
@@ -508,7 +537,7 @@
 </div>
 
 <div class="method">
-    <code class="details" id="send">send(userId, body=None, media_body=None)</code>
+    <code class="details" id="send">send(userId, body=None, media_body=None, media_mime_type=None)</code>
   <pre>Sends the specified message to the recipients in the To, Cc, and Bcc headers.
 
 Args:
@@ -521,9 +550,9 @@
   "historyId": "A String", # The ID of the last history record that modified this message.
   "payload": { # A single MIME message part. # The parsed email structure in the message parts.
     "body": { # The body of a single MIME message part. # The message part body for this part, which may be empty for container MIME message parts.
-      "data": "A String", # The body data of a MIME message part. May be empty for MIME container types that have no message body or when the body data is sent as a separate attachment. An attachment ID is present if the body data is contained in a separate attachment.
+      "data": "A String", # The body data of a MIME message part as a base64url encoded string. May be empty for MIME container types that have no message body or when the body data is sent as a separate attachment. An attachment ID is present if the body data is contained in a separate attachment.
       "attachmentId": "A String", # When present, contains the ID of an external attachment that can be retrieved in a separate messages.attachments.get request. When not present, the entire content of the message part body is contained in the data field.
-      "size": 42, # Total number of bytes in the body of the message part.
+      "size": 42, # Number of bytes for the message part data (encoding notwithstanding).
     },
     "mimeType": "A String", # The MIME type of the message part.
     "partId": "A String", # The immutable ID of the message part.
@@ -552,6 +581,7 @@
 }
 
   media_body: string, The filename of the media request body, or an instance of a MediaUpload object.
+  media_mime_type: string, The MIME type of the media request body, or an instance of a MediaUpload object.
 
 Returns:
   An object of the form:
@@ -561,9 +591,9 @@
     "historyId": "A String", # The ID of the last history record that modified this message.
     "payload": { # A single MIME message part. # The parsed email structure in the message parts.
       "body": { # The body of a single MIME message part. # The message part body for this part, which may be empty for container MIME message parts.
-        "data": "A String", # The body data of a MIME message part. May be empty for MIME container types that have no message body or when the body data is sent as a separate attachment. An attachment ID is present if the body data is contained in a separate attachment.
+        "data": "A String", # The body data of a MIME message part as a base64url encoded string. May be empty for MIME container types that have no message body or when the body data is sent as a separate attachment. An attachment ID is present if the body data is contained in a separate attachment.
         "attachmentId": "A String", # When present, contains the ID of an external attachment that can be retrieved in a separate messages.attachments.get request. When not present, the entire content of the message part body is contained in the data field.
-        "size": 42, # Total number of bytes in the body of the message part.
+        "size": 42, # Number of bytes for the message part data (encoding notwithstanding).
       },
       "mimeType": "A String", # The MIME type of the message part.
       "partId": "A String", # The immutable ID of the message part.
@@ -608,9 +638,9 @@
     "historyId": "A String", # The ID of the last history record that modified this message.
     "payload": { # A single MIME message part. # The parsed email structure in the message parts.
       "body": { # The body of a single MIME message part. # The message part body for this part, which may be empty for container MIME message parts.
-        "data": "A String", # The body data of a MIME message part. May be empty for MIME container types that have no message body or when the body data is sent as a separate attachment. An attachment ID is present if the body data is contained in a separate attachment.
+        "data": "A String", # The body data of a MIME message part as a base64url encoded string. May be empty for MIME container types that have no message body or when the body data is sent as a separate attachment. An attachment ID is present if the body data is contained in a separate attachment.
         "attachmentId": "A String", # When present, contains the ID of an external attachment that can be retrieved in a separate messages.attachments.get request. When not present, the entire content of the message part body is contained in the data field.
-        "size": 42, # Total number of bytes in the body of the message part.
+        "size": 42, # Number of bytes for the message part data (encoding notwithstanding).
       },
       "mimeType": "A String", # The MIME type of the message part.
       "partId": "A String", # The immutable ID of the message part.
@@ -655,9 +685,9 @@
     "historyId": "A String", # The ID of the last history record that modified this message.
     "payload": { # A single MIME message part. # The parsed email structure in the message parts.
       "body": { # The body of a single MIME message part. # The message part body for this part, which may be empty for container MIME message parts.
-        "data": "A String", # The body data of a MIME message part. May be empty for MIME container types that have no message body or when the body data is sent as a separate attachment. An attachment ID is present if the body data is contained in a separate attachment.
+        "data": "A String", # The body data of a MIME message part as a base64url encoded string. May be empty for MIME container types that have no message body or when the body data is sent as a separate attachment. An attachment ID is present if the body data is contained in a separate attachment.
         "attachmentId": "A String", # When present, contains the ID of an external attachment that can be retrieved in a separate messages.attachments.get request. When not present, the entire content of the message part body is contained in the data field.
-        "size": 42, # Total number of bytes in the body of the message part.
+        "size": 42, # Number of bytes for the message part data (encoding notwithstanding).
       },
       "mimeType": "A String", # The MIME type of the message part.
       "partId": "A String", # The immutable ID of the message part.
diff --git a/docs/dyn/gmail_v1.users.settings.html b/docs/dyn/gmail_v1.users.settings.html
index cb5f468..9675a35 100644
--- a/docs/dyn/gmail_v1.users.settings.html
+++ b/docs/dyn/gmail_v1.users.settings.html
@@ -175,7 +175,7 @@
 Returns:
   An object of the form:
 
-    { # Vacation auto-reply settings for an account. These settings correspond to the "Vacation responder" feature in the web interface. See  for more details.
+    { # Vacation auto-reply settings for an account. These settings correspond to the "Vacation responder" feature in the web interface.
       "responseSubject": "A String", # Optional text to prepend to the subject line in vacation responses. In order to enable auto-replies, either the response subject or the response body must be nonempty.
       "responseBodyPlainText": "A String", # Response body in plain text format.
       "restrictToContacts": True or False, # Flag that determines whether responses are sent to recipients who are not in the user's list of contacts.
@@ -274,7 +274,7 @@
   body: object, The request body. (required)
     The object takes the form of:
 
-{ # Vacation auto-reply settings for an account. These settings correspond to the "Vacation responder" feature in the web interface. See  for more details.
+{ # Vacation auto-reply settings for an account. These settings correspond to the "Vacation responder" feature in the web interface.
     "responseSubject": "A String", # Optional text to prepend to the subject line in vacation responses. In order to enable auto-replies, either the response subject or the response body must be nonempty.
     "responseBodyPlainText": "A String", # Response body in plain text format.
     "restrictToContacts": True or False, # Flag that determines whether responses are sent to recipients who are not in the user's list of contacts.
@@ -289,7 +289,7 @@
 Returns:
   An object of the form:
 
-    { # Vacation auto-reply settings for an account. These settings correspond to the "Vacation responder" feature in the web interface. See  for more details.
+    { # Vacation auto-reply settings for an account. These settings correspond to the "Vacation responder" feature in the web interface.
       "responseSubject": "A String", # Optional text to prepend to the subject line in vacation responses. In order to enable auto-replies, either the response subject or the response body must be nonempty.
       "responseBodyPlainText": "A String", # Response body in plain text format.
       "restrictToContacts": True or False, # Flag that determines whether responses are sent to recipients who are not in the user's list of contacts.
diff --git a/docs/dyn/gmail_v1.users.settings.sendAs.html b/docs/dyn/gmail_v1.users.settings.sendAs.html
index dbf37e3..6d0231f 100644
--- a/docs/dyn/gmail_v1.users.settings.sendAs.html
+++ b/docs/dyn/gmail_v1.users.settings.sendAs.html
@@ -105,7 +105,7 @@
   body: object, The request body. (required)
     The object takes the form of:
 
-{ # Settings associated with a send-as alias, which can be either the primary login address associated with the account or a custom "from" address. Send-as aliases correspond to the "Send Mail As" feature in the web interface. See  for more details.
+{ # Settings associated with a send-as alias, which can be either the primary login address associated with the account or a custom "from" address. Send-as aliases correspond to the "Send Mail As" feature in the web interface.
   "smtpMsa": { # Configuration for communication with an SMTP service. # An optional SMTP service that will be used as an outbound relay for mail sent using this alias. If this is empty, outbound mail will be sent directly from Gmail's servers to the destination SMTP service. This setting only applies to custom "from" aliases.
     "securityMode": "A String", # The protocol that will be used to secure communication with the SMTP service. Required.
     "username": "A String", # The username that will be used for authentication with the SMTP service. This is a write-only field that can be specified in requests to create or update SendAs settings; it is never populated in responses.
@@ -116,7 +116,7 @@
   "displayName": "A String", # A name that appears in the "From:" header for mail sent using this alias. For custom "from" addresses, when this is empty, Gmail will populate the "From:" header with the name that is used for the primary address associated with the account.
   "replyToAddress": "A String", # An optional email address that is included in a "Reply-To:" header for mail sent using this alias. If this is empty, Gmail will not generate a "Reply-To:" header.
   "signature": "A String", # An optional HTML signature that is included in messages composed with this alias in the Gmail web UI.
-  "treatAsAlias": True or False, # Whether Gmail should treat this address as an alias for the user's primary email address. See  for more details. This setting only applies to custom "from" aliases.
+  "treatAsAlias": True or False, # Whether Gmail should  treat this address as an alias for the user's primary email address. This setting only applies to custom "from" aliases.
   "sendAsEmail": "A String", # The email address that appears in the "From:" header for mail sent using this alias. This is read-only for all operations except create.
   "isPrimary": True or False, # Whether this address is the primary address used to login to the account. Every Gmail account has exactly one primary address, and it cannot be deleted from the collection of send-as aliases. This field is read-only.
   "verificationStatus": "A String", # Indicates whether this address has been verified for use as a send-as alias. Read-only. This setting only applies to custom "from" aliases.
@@ -127,7 +127,7 @@
 Returns:
   An object of the form:
 
-    { # Settings associated with a send-as alias, which can be either the primary login address associated with the account or a custom "from" address. Send-as aliases correspond to the "Send Mail As" feature in the web interface. See  for more details.
+    { # Settings associated with a send-as alias, which can be either the primary login address associated with the account or a custom "from" address. Send-as aliases correspond to the "Send Mail As" feature in the web interface.
     "smtpMsa": { # Configuration for communication with an SMTP service. # An optional SMTP service that will be used as an outbound relay for mail sent using this alias. If this is empty, outbound mail will be sent directly from Gmail's servers to the destination SMTP service. This setting only applies to custom "from" aliases.
       "securityMode": "A String", # The protocol that will be used to secure communication with the SMTP service. Required.
       "username": "A String", # The username that will be used for authentication with the SMTP service. This is a write-only field that can be specified in requests to create or update SendAs settings; it is never populated in responses.
@@ -138,7 +138,7 @@
     "displayName": "A String", # A name that appears in the "From:" header for mail sent using this alias. For custom "from" addresses, when this is empty, Gmail will populate the "From:" header with the name that is used for the primary address associated with the account.
     "replyToAddress": "A String", # An optional email address that is included in a "Reply-To:" header for mail sent using this alias. If this is empty, Gmail will not generate a "Reply-To:" header.
     "signature": "A String", # An optional HTML signature that is included in messages composed with this alias in the Gmail web UI.
-    "treatAsAlias": True or False, # Whether Gmail should treat this address as an alias for the user's primary email address. See  for more details. This setting only applies to custom "from" aliases.
+    "treatAsAlias": True or False, # Whether Gmail should  treat this address as an alias for the user's primary email address. This setting only applies to custom "from" aliases.
     "sendAsEmail": "A String", # The email address that appears in the "From:" header for mail sent using this alias. This is read-only for all operations except create.
     "isPrimary": True or False, # Whether this address is the primary address used to login to the account. Every Gmail account has exactly one primary address, and it cannot be deleted from the collection of send-as aliases. This field is read-only.
     "verificationStatus": "A String", # Indicates whether this address has been verified for use as a send-as alias. Read-only. This setting only applies to custom "from" aliases.
@@ -167,7 +167,7 @@
 Returns:
   An object of the form:
 
-    { # Settings associated with a send-as alias, which can be either the primary login address associated with the account or a custom "from" address. Send-as aliases correspond to the "Send Mail As" feature in the web interface. See  for more details.
+    { # Settings associated with a send-as alias, which can be either the primary login address associated with the account or a custom "from" address. Send-as aliases correspond to the "Send Mail As" feature in the web interface.
     "smtpMsa": { # Configuration for communication with an SMTP service. # An optional SMTP service that will be used as an outbound relay for mail sent using this alias. If this is empty, outbound mail will be sent directly from Gmail's servers to the destination SMTP service. This setting only applies to custom "from" aliases.
       "securityMode": "A String", # The protocol that will be used to secure communication with the SMTP service. Required.
       "username": "A String", # The username that will be used for authentication with the SMTP service. This is a write-only field that can be specified in requests to create or update SendAs settings; it is never populated in responses.
@@ -178,7 +178,7 @@
     "displayName": "A String", # A name that appears in the "From:" header for mail sent using this alias. For custom "from" addresses, when this is empty, Gmail will populate the "From:" header with the name that is used for the primary address associated with the account.
     "replyToAddress": "A String", # An optional email address that is included in a "Reply-To:" header for mail sent using this alias. If this is empty, Gmail will not generate a "Reply-To:" header.
     "signature": "A String", # An optional HTML signature that is included in messages composed with this alias in the Gmail web UI.
-    "treatAsAlias": True or False, # Whether Gmail should treat this address as an alias for the user's primary email address. See  for more details. This setting only applies to custom "from" aliases.
+    "treatAsAlias": True or False, # Whether Gmail should  treat this address as an alias for the user's primary email address. This setting only applies to custom "from" aliases.
     "sendAsEmail": "A String", # The email address that appears in the "From:" header for mail sent using this alias. This is read-only for all operations except create.
     "isPrimary": True or False, # Whether this address is the primary address used to login to the account. Every Gmail account has exactly one primary address, and it cannot be deleted from the collection of send-as aliases. This field is read-only.
     "verificationStatus": "A String", # Indicates whether this address has been verified for use as a send-as alias. Read-only. This setting only applies to custom "from" aliases.
@@ -198,7 +198,7 @@
 
     { # Response for the ListSendAs method.
     "sendAs": [ # List of send-as aliases.
-      { # Settings associated with a send-as alias, which can be either the primary login address associated with the account or a custom "from" address. Send-as aliases correspond to the "Send Mail As" feature in the web interface. See  for more details.
+      { # Settings associated with a send-as alias, which can be either the primary login address associated with the account or a custom "from" address. Send-as aliases correspond to the "Send Mail As" feature in the web interface.
         "smtpMsa": { # Configuration for communication with an SMTP service. # An optional SMTP service that will be used as an outbound relay for mail sent using this alias. If this is empty, outbound mail will be sent directly from Gmail's servers to the destination SMTP service. This setting only applies to custom "from" aliases.
           "securityMode": "A String", # The protocol that will be used to secure communication with the SMTP service. Required.
           "username": "A String", # The username that will be used for authentication with the SMTP service. This is a write-only field that can be specified in requests to create or update SendAs settings; it is never populated in responses.
@@ -209,7 +209,7 @@
         "displayName": "A String", # A name that appears in the "From:" header for mail sent using this alias. For custom "from" addresses, when this is empty, Gmail will populate the "From:" header with the name that is used for the primary address associated with the account.
         "replyToAddress": "A String", # An optional email address that is included in a "Reply-To:" header for mail sent using this alias. If this is empty, Gmail will not generate a "Reply-To:" header.
         "signature": "A String", # An optional HTML signature that is included in messages composed with this alias in the Gmail web UI.
-        "treatAsAlias": True or False, # Whether Gmail should treat this address as an alias for the user's primary email address. See  for more details. This setting only applies to custom "from" aliases.
+        "treatAsAlias": True or False, # Whether Gmail should  treat this address as an alias for the user's primary email address. This setting only applies to custom "from" aliases.
         "sendAsEmail": "A String", # The email address that appears in the "From:" header for mail sent using this alias. This is read-only for all operations except create.
         "isPrimary": True or False, # Whether this address is the primary address used to login to the account. Every Gmail account has exactly one primary address, and it cannot be deleted from the collection of send-as aliases. This field is read-only.
         "verificationStatus": "A String", # Indicates whether this address has been verified for use as a send-as alias. Read-only. This setting only applies to custom "from" aliases.
@@ -229,7 +229,7 @@
   body: object, The request body. (required)
     The object takes the form of:
 
-{ # Settings associated with a send-as alias, which can be either the primary login address associated with the account or a custom "from" address. Send-as aliases correspond to the "Send Mail As" feature in the web interface. See  for more details.
+{ # Settings associated with a send-as alias, which can be either the primary login address associated with the account or a custom "from" address. Send-as aliases correspond to the "Send Mail As" feature in the web interface.
   "smtpMsa": { # Configuration for communication with an SMTP service. # An optional SMTP service that will be used as an outbound relay for mail sent using this alias. If this is empty, outbound mail will be sent directly from Gmail's servers to the destination SMTP service. This setting only applies to custom "from" aliases.
     "securityMode": "A String", # The protocol that will be used to secure communication with the SMTP service. Required.
     "username": "A String", # The username that will be used for authentication with the SMTP service. This is a write-only field that can be specified in requests to create or update SendAs settings; it is never populated in responses.
@@ -240,7 +240,7 @@
   "displayName": "A String", # A name that appears in the "From:" header for mail sent using this alias. For custom "from" addresses, when this is empty, Gmail will populate the "From:" header with the name that is used for the primary address associated with the account.
   "replyToAddress": "A String", # An optional email address that is included in a "Reply-To:" header for mail sent using this alias. If this is empty, Gmail will not generate a "Reply-To:" header.
   "signature": "A String", # An optional HTML signature that is included in messages composed with this alias in the Gmail web UI.
-  "treatAsAlias": True or False, # Whether Gmail should treat this address as an alias for the user's primary email address. See  for more details. This setting only applies to custom "from" aliases.
+  "treatAsAlias": True or False, # Whether Gmail should  treat this address as an alias for the user's primary email address. This setting only applies to custom "from" aliases.
   "sendAsEmail": "A String", # The email address that appears in the "From:" header for mail sent using this alias. This is read-only for all operations except create.
   "isPrimary": True or False, # Whether this address is the primary address used to login to the account. Every Gmail account has exactly one primary address, and it cannot be deleted from the collection of send-as aliases. This field is read-only.
   "verificationStatus": "A String", # Indicates whether this address has been verified for use as a send-as alias. Read-only. This setting only applies to custom "from" aliases.
@@ -251,7 +251,7 @@
 Returns:
   An object of the form:
 
-    { # Settings associated with a send-as alias, which can be either the primary login address associated with the account or a custom "from" address. Send-as aliases correspond to the "Send Mail As" feature in the web interface. See  for more details.
+    { # Settings associated with a send-as alias, which can be either the primary login address associated with the account or a custom "from" address. Send-as aliases correspond to the "Send Mail As" feature in the web interface.
     "smtpMsa": { # Configuration for communication with an SMTP service. # An optional SMTP service that will be used as an outbound relay for mail sent using this alias. If this is empty, outbound mail will be sent directly from Gmail's servers to the destination SMTP service. This setting only applies to custom "from" aliases.
       "securityMode": "A String", # The protocol that will be used to secure communication with the SMTP service. Required.
       "username": "A String", # The username that will be used for authentication with the SMTP service. This is a write-only field that can be specified in requests to create or update SendAs settings; it is never populated in responses.
@@ -262,7 +262,7 @@
     "displayName": "A String", # A name that appears in the "From:" header for mail sent using this alias. For custom "from" addresses, when this is empty, Gmail will populate the "From:" header with the name that is used for the primary address associated with the account.
     "replyToAddress": "A String", # An optional email address that is included in a "Reply-To:" header for mail sent using this alias. If this is empty, Gmail will not generate a "Reply-To:" header.
     "signature": "A String", # An optional HTML signature that is included in messages composed with this alias in the Gmail web UI.
-    "treatAsAlias": True or False, # Whether Gmail should treat this address as an alias for the user's primary email address. See  for more details. This setting only applies to custom "from" aliases.
+    "treatAsAlias": True or False, # Whether Gmail should  treat this address as an alias for the user's primary email address. This setting only applies to custom "from" aliases.
     "sendAsEmail": "A String", # The email address that appears in the "From:" header for mail sent using this alias. This is read-only for all operations except create.
     "isPrimary": True or False, # Whether this address is the primary address used to login to the account. Every Gmail account has exactly one primary address, and it cannot be deleted from the collection of send-as aliases. This field is read-only.
     "verificationStatus": "A String", # Indicates whether this address has been verified for use as a send-as alias. Read-only. This setting only applies to custom "from" aliases.
@@ -280,7 +280,7 @@
   body: object, The request body. (required)
     The object takes the form of:
 
-{ # Settings associated with a send-as alias, which can be either the primary login address associated with the account or a custom "from" address. Send-as aliases correspond to the "Send Mail As" feature in the web interface. See  for more details.
+{ # Settings associated with a send-as alias, which can be either the primary login address associated with the account or a custom "from" address. Send-as aliases correspond to the "Send Mail As" feature in the web interface.
   "smtpMsa": { # Configuration for communication with an SMTP service. # An optional SMTP service that will be used as an outbound relay for mail sent using this alias. If this is empty, outbound mail will be sent directly from Gmail's servers to the destination SMTP service. This setting only applies to custom "from" aliases.
     "securityMode": "A String", # The protocol that will be used to secure communication with the SMTP service. Required.
     "username": "A String", # The username that will be used for authentication with the SMTP service. This is a write-only field that can be specified in requests to create or update SendAs settings; it is never populated in responses.
@@ -291,7 +291,7 @@
   "displayName": "A String", # A name that appears in the "From:" header for mail sent using this alias. For custom "from" addresses, when this is empty, Gmail will populate the "From:" header with the name that is used for the primary address associated with the account.
   "replyToAddress": "A String", # An optional email address that is included in a "Reply-To:" header for mail sent using this alias. If this is empty, Gmail will not generate a "Reply-To:" header.
   "signature": "A String", # An optional HTML signature that is included in messages composed with this alias in the Gmail web UI.
-  "treatAsAlias": True or False, # Whether Gmail should treat this address as an alias for the user's primary email address. See  for more details. This setting only applies to custom "from" aliases.
+  "treatAsAlias": True or False, # Whether Gmail should  treat this address as an alias for the user's primary email address. This setting only applies to custom "from" aliases.
   "sendAsEmail": "A String", # The email address that appears in the "From:" header for mail sent using this alias. This is read-only for all operations except create.
   "isPrimary": True or False, # Whether this address is the primary address used to login to the account. Every Gmail account has exactly one primary address, and it cannot be deleted from the collection of send-as aliases. This field is read-only.
   "verificationStatus": "A String", # Indicates whether this address has been verified for use as a send-as alias. Read-only. This setting only applies to custom "from" aliases.
@@ -302,7 +302,7 @@
 Returns:
   An object of the form:
 
-    { # Settings associated with a send-as alias, which can be either the primary login address associated with the account or a custom "from" address. Send-as aliases correspond to the "Send Mail As" feature in the web interface. See  for more details.
+    { # Settings associated with a send-as alias, which can be either the primary login address associated with the account or a custom "from" address. Send-as aliases correspond to the "Send Mail As" feature in the web interface.
     "smtpMsa": { # Configuration for communication with an SMTP service. # An optional SMTP service that will be used as an outbound relay for mail sent using this alias. If this is empty, outbound mail will be sent directly from Gmail's servers to the destination SMTP service. This setting only applies to custom "from" aliases.
       "securityMode": "A String", # The protocol that will be used to secure communication with the SMTP service. Required.
       "username": "A String", # The username that will be used for authentication with the SMTP service. This is a write-only field that can be specified in requests to create or update SendAs settings; it is never populated in responses.
@@ -313,7 +313,7 @@
     "displayName": "A String", # A name that appears in the "From:" header for mail sent using this alias. For custom "from" addresses, when this is empty, Gmail will populate the "From:" header with the name that is used for the primary address associated with the account.
     "replyToAddress": "A String", # An optional email address that is included in a "Reply-To:" header for mail sent using this alias. If this is empty, Gmail will not generate a "Reply-To:" header.
     "signature": "A String", # An optional HTML signature that is included in messages composed with this alias in the Gmail web UI.
-    "treatAsAlias": True or False, # Whether Gmail should treat this address as an alias for the user's primary email address. See  for more details. This setting only applies to custom "from" aliases.
+    "treatAsAlias": True or False, # Whether Gmail should  treat this address as an alias for the user's primary email address. This setting only applies to custom "from" aliases.
     "sendAsEmail": "A String", # The email address that appears in the "From:" header for mail sent using this alias. This is read-only for all operations except create.
     "isPrimary": True or False, # Whether this address is the primary address used to login to the account. Every Gmail account has exactly one primary address, and it cannot be deleted from the collection of send-as aliases. This field is read-only.
     "verificationStatus": "A String", # Indicates whether this address has been verified for use as a send-as alias. Read-only. This setting only applies to custom "from" aliases.
diff --git a/docs/dyn/gmail_v1.users.threads.html b/docs/dyn/gmail_v1.users.threads.html
index 334231c..245e9ab 100644
--- a/docs/dyn/gmail_v1.users.threads.html
+++ b/docs/dyn/gmail_v1.users.threads.html
@@ -131,9 +131,9 @@
         "historyId": "A String", # The ID of the last history record that modified this message.
         "payload": { # A single MIME message part. # The parsed email structure in the message parts.
           "body": { # The body of a single MIME message part. # The message part body for this part, which may be empty for container MIME message parts.
-            "data": "A String", # The body data of a MIME message part. May be empty for MIME container types that have no message body or when the body data is sent as a separate attachment. An attachment ID is present if the body data is contained in a separate attachment.
+            "data": "A String", # The body data of a MIME message part as a base64url encoded string. May be empty for MIME container types that have no message body or when the body data is sent as a separate attachment. An attachment ID is present if the body data is contained in a separate attachment.
             "attachmentId": "A String", # When present, contains the ID of an external attachment that can be retrieved in a separate messages.attachments.get request. When not present, the entire content of the message part body is contained in the data field.
-            "size": 42, # Total number of bytes in the body of the message part.
+            "size": 42, # Number of bytes for the message part data (encoding notwithstanding).
           },
           "mimeType": "A String", # The MIME type of the message part.
           "partId": "A String", # The immutable ID of the message part.
@@ -173,7 +173,7 @@
 Args:
   userId: string, The user's email address. The special value me can be used to indicate the authenticated user. (required)
   labelIds: string, Only return threads with labels that match all of the specified label IDs. (repeated)
-  q: string, Only return threads matching the specified query. Supports the same query format as the Gmail search box. For example, "from:someuser@example.com rfc822msgid: is:unread".
+  q: string, Only return threads matching the specified query. Supports the same query format as the Gmail search box. For example, "from:someuser@example.com rfc822msgid: is:unread". Parameter cannot be used when accessing the api using the gmail.metadata scope.
   pageToken: string, Page token to retrieve a specific page of results in the list.
   maxResults: integer, Maximum number of threads to return.
   includeSpamTrash: boolean, Include threads from SPAM and TRASH in the results.
@@ -193,9 +193,9 @@
             "historyId": "A String", # The ID of the last history record that modified this message.
             "payload": { # A single MIME message part. # The parsed email structure in the message parts.
               "body": { # The body of a single MIME message part. # The message part body for this part, which may be empty for container MIME message parts.
-                "data": "A String", # The body data of a MIME message part. May be empty for MIME container types that have no message body or when the body data is sent as a separate attachment. An attachment ID is present if the body data is contained in a separate attachment.
+                "data": "A String", # The body data of a MIME message part as a base64url encoded string. May be empty for MIME container types that have no message body or when the body data is sent as a separate attachment. An attachment ID is present if the body data is contained in a separate attachment.
                 "attachmentId": "A String", # When present, contains the ID of an external attachment that can be retrieved in a separate messages.attachments.get request. When not present, the entire content of the message part body is contained in the data field.
-                "size": 42, # Total number of bytes in the body of the message part.
+                "size": 42, # Number of bytes for the message part data (encoding notwithstanding).
               },
               "mimeType": "A String", # The MIME type of the message part.
               "partId": "A String", # The immutable ID of the message part.
@@ -275,9 +275,9 @@
         "historyId": "A String", # The ID of the last history record that modified this message.
         "payload": { # A single MIME message part. # The parsed email structure in the message parts.
           "body": { # The body of a single MIME message part. # The message part body for this part, which may be empty for container MIME message parts.
-            "data": "A String", # The body data of a MIME message part. May be empty for MIME container types that have no message body or when the body data is sent as a separate attachment. An attachment ID is present if the body data is contained in a separate attachment.
+            "data": "A String", # The body data of a MIME message part as a base64url encoded string. May be empty for MIME container types that have no message body or when the body data is sent as a separate attachment. An attachment ID is present if the body data is contained in a separate attachment.
             "attachmentId": "A String", # When present, contains the ID of an external attachment that can be retrieved in a separate messages.attachments.get request. When not present, the entire content of the message part body is contained in the data field.
-            "size": 42, # Total number of bytes in the body of the message part.
+            "size": 42, # Number of bytes for the message part data (encoding notwithstanding).
           },
           "mimeType": "A String", # The MIME type of the message part.
           "partId": "A String", # The immutable ID of the message part.
@@ -329,9 +329,9 @@
         "historyId": "A String", # The ID of the last history record that modified this message.
         "payload": { # A single MIME message part. # The parsed email structure in the message parts.
           "body": { # The body of a single MIME message part. # The message part body for this part, which may be empty for container MIME message parts.
-            "data": "A String", # The body data of a MIME message part. May be empty for MIME container types that have no message body or when the body data is sent as a separate attachment. An attachment ID is present if the body data is contained in a separate attachment.
+            "data": "A String", # The body data of a MIME message part as a base64url encoded string. May be empty for MIME container types that have no message body or when the body data is sent as a separate attachment. An attachment ID is present if the body data is contained in a separate attachment.
             "attachmentId": "A String", # When present, contains the ID of an external attachment that can be retrieved in a separate messages.attachments.get request. When not present, the entire content of the message part body is contained in the data field.
-            "size": 42, # Total number of bytes in the body of the message part.
+            "size": 42, # Number of bytes for the message part data (encoding notwithstanding).
           },
           "mimeType": "A String", # The MIME type of the message part.
           "partId": "A String", # The immutable ID of the message part.
@@ -383,9 +383,9 @@
         "historyId": "A String", # The ID of the last history record that modified this message.
         "payload": { # A single MIME message part. # The parsed email structure in the message parts.
           "body": { # The body of a single MIME message part. # The message part body for this part, which may be empty for container MIME message parts.
-            "data": "A String", # The body data of a MIME message part. May be empty for MIME container types that have no message body or when the body data is sent as a separate attachment. An attachment ID is present if the body data is contained in a separate attachment.
+            "data": "A String", # The body data of a MIME message part as a base64url encoded string. May be empty for MIME container types that have no message body or when the body data is sent as a separate attachment. An attachment ID is present if the body data is contained in a separate attachment.
             "attachmentId": "A String", # When present, contains the ID of an external attachment that can be retrieved in a separate messages.attachments.get request. When not present, the entire content of the message part body is contained in the data field.
-            "size": 42, # Total number of bytes in the body of the message part.
+            "size": 42, # Number of bytes for the message part data (encoding notwithstanding).
           },
           "mimeType": "A String", # The MIME type of the message part.
           "partId": "A String", # The immutable ID of the message part.
diff --git a/docs/dyn/groupsmigration_v1.archive.html b/docs/dyn/groupsmigration_v1.archive.html
index 8bf8875..87035c0 100644
--- a/docs/dyn/groupsmigration_v1.archive.html
+++ b/docs/dyn/groupsmigration_v1.archive.html
@@ -75,16 +75,17 @@
 <h1><a href="groupsmigration_v1.html">Groups Migration API</a> . <a href="groupsmigration_v1.archive.html">archive</a></h1>
 <h2>Instance Methods</h2>
 <p class="toc_element">
-  <code><a href="#insert">insert(groupId, media_body=None)</a></code></p>
+  <code><a href="#insert">insert(groupId, media_body=None, media_mime_type=None)</a></code></p>
 <p class="firstline">Inserts a new mail into the archive of the Google group.</p>
 <h3>Method Details</h3>
 <div class="method">
-    <code class="details" id="insert">insert(groupId, media_body=None)</code>
+    <code class="details" id="insert">insert(groupId, media_body=None, media_mime_type=None)</code>
   <pre>Inserts a new mail into the archive of the Google group.
 
 Args:
   groupId: string, The group ID (required)
   media_body: string, The filename of the media request body, or an instance of a MediaUpload object.
+  media_mime_type: string, The MIME type of the media request body, or an instance of a MediaUpload object.
 
 Returns:
   An object of the form:
diff --git a/docs/dyn/identitytoolkit_v3.relyingparty.html b/docs/dyn/identitytoolkit_v3.relyingparty.html
index 2d514ab..03e9cbb 100644
--- a/docs/dyn/identitytoolkit_v3.relyingparty.html
+++ b/docs/dyn/identitytoolkit_v3.relyingparty.html
@@ -204,6 +204,7 @@
 
 { # Request to download user account in batch.
     "nextPageToken": "A String", # The token for the next page. This should be taken from the previous response.
+    "targetProjectId": "A String", # Specify which project (field value is actually project id) to operate. Only used when provided credential.
     "delegatedProjectNumber": "A String", # GCP project number of the requesting delegated app. Currently only intended for Firebase V1 migration.
     "maxResults": 42, # The max number of results to return in the response.
   }
@@ -217,6 +218,7 @@
     "kind": "identitytoolkit#DownloadAccountResponse", # The fixed string "identitytoolkit#DownloadAccountResponse".
     "users": [ # The user accounts data.
       { # Template for an individual account info.
+        "rawPassword": "A String", # The user's plain text password.
         "passwordHash": "A String", # The user's hashed password.
         "displayName": "A String", # The name of the user.
         "localId": "A String", # The local ID of the user.
@@ -232,7 +234,6 @@
             "federatedId": "A String", # User's identifier at IDP.
             "displayName": "A String", # The user's display name at the IDP.
             "photoUrl": "A String", # The user's photo url at the IDP.
-            "rawUserInfo": "A String", # Raw IDP-returned user info.
             "providerId": "A String", # The IdP ID. For white listed IdPs it's a short domain name, e.g., google.com, aol.com, live.net and yahoo.com. For other OpenID IdPs it's the OP identifier.
             "rawId": "A String", # User's raw identifier directly returned from IDP.
             "email": "A String", # User's email at IDP.
@@ -276,6 +277,7 @@
     "kind": "identitytoolkit#GetAccountInfoResponse", # The fixed string "identitytoolkit#GetAccountInfoResponse".
     "users": [ # The info of the users.
       { # Template for an individual account info.
+        "rawPassword": "A String", # The user's plain text password.
         "passwordHash": "A String", # The user's hashed password.
         "displayName": "A String", # The name of the user.
         "localId": "A String", # The local ID of the user.
@@ -291,7 +293,6 @@
             "federatedId": "A String", # User's identifier at IDP.
             "displayName": "A String", # The user's display name at the IDP.
             "photoUrl": "A String", # The user's photo url at the IDP.
-            "rawUserInfo": "A String", # Raw IDP-returned user info.
             "providerId": "A String", # The IdP ID. For white listed IdPs it's a short domain name, e.g., google.com, aol.com, live.net and yahoo.com. For other OpenID IdPs it's the OP identifier.
             "rawId": "A String", # User's raw identifier directly returned from IDP.
             "email": "A String", # User's email at IDP.
@@ -350,6 +351,7 @@
   An object of the form:
 
     { # Response of getting the project configuration.
+    "dynamicLinksDomain": "A String",
     "apiKey": "A String", # Browser API key, needed when making http request to Apiary.
     "useEmailSending": True or False, # Whether to use email sending provided by Firebear.
     "projectId": "A String", # Project ID of the relying party.
@@ -631,9 +633,12 @@
 { # Request to signup new user, create anonymous user or anonymous user reauth.
     "instanceId": "A String", # Instance id token of the app.
     "displayName": "A String", # The name of the user.
+    "photoUrl": "A String", # The photo url of the user.
     "captchaResponse": "A String", # Response to the captcha.
-    "idToken": "A String", # The GITKit token of the authenticated user.
+    "emailVerified": True or False, # Mark the email as verified or not. Only can be used by service account.
+    "disabled": True or False, # Whether to disable the user. Only can be used by service account.
     "captchaChallenge": "A String", # The captcha challenge.
+    "idToken": "A String", # The GITKit token of the authenticated user.
     "password": "A String", # The new password of the user.
     "email": "A String", # The email of the user.
   }
@@ -664,8 +669,10 @@
 { # Request to upload user account in batch.
     "hashAlgorithm": "A String", # The password hash algorithm.
     "delegatedProjectNumber": "A String", # GCP project number of the requesting delegated app. Currently only intended for Firebase V1 migration.
+    "allowOverwrite": True or False, # Whether allow overwrite existing account when user local_id exists.
     "users": [ # The account info to be stored.
       { # Template for an individual account info.
+        "rawPassword": "A String", # The user's plain text password.
         "passwordHash": "A String", # The user's hashed password.
         "displayName": "A String", # The name of the user.
         "localId": "A String", # The local ID of the user.
@@ -681,7 +688,6 @@
             "federatedId": "A String", # User's identifier at IDP.
             "displayName": "A String", # The user's display name at the IDP.
             "photoUrl": "A String", # The user's photo url at the IDP.
-            "rawUserInfo": "A String", # Raw IDP-returned user info.
             "providerId": "A String", # The IdP ID. For white listed IdPs it's a short domain name, e.g., google.com, aol.com, live.net and yahoo.com. For other OpenID IdPs it's the OP identifier.
             "rawId": "A String", # User's raw identifier directly returned from IDP.
             "email": "A String", # User's email at IDP.
diff --git a/docs/dyn/language_v1.documents.html b/docs/dyn/language_v1.documents.html
new file mode 100644
index 0000000..3e0e122
--- /dev/null
+++ b/docs/dyn/language_v1.documents.html
@@ -0,0 +1,505 @@
+<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="language_v1.html">Google Cloud Natural Language API</a> . <a href="language_v1.documents.html">documents</a></h1>
+<h2>Instance Methods</h2>
+<p class="toc_element">
+  <code><a href="#analyzeEntities">analyzeEntities(body, x__xgafv=None)</a></code></p>
+<p class="firstline">Finds named entities (currently finds proper names) in the text,</p>
+<p class="toc_element">
+  <code><a href="#analyzeSentiment">analyzeSentiment(body, x__xgafv=None)</a></code></p>
+<p class="firstline">Analyzes the sentiment of the provided text.</p>
+<p class="toc_element">
+  <code><a href="#analyzeSyntax">analyzeSyntax(body, x__xgafv=None)</a></code></p>
+<p class="firstline">Analyzes the syntax of the text and provides sentence boundaries and</p>
+<p class="toc_element">
+  <code><a href="#annotateText">annotateText(body, x__xgafv=None)</a></code></p>
+<p class="firstline">A convenience method that provides all the features that analyzeSentiment,</p>
+<h3>Method Details</h3>
+<div class="method">
+    <code class="details" id="analyzeEntities">analyzeEntities(body, x__xgafv=None)</code>
+  <pre>Finds named entities (currently finds proper names) in the text,
+entity types, salience, mentions for each entity, and other properties.
+
+Args:
+  body: object, The request body. (required)
+    The object takes the form of:
+
+{ # The entity analysis request message.
+    "document": { # ################################################################ # # Input document.
+        #
+        # Represents the input to API methods.
+      "content": "A String", # The content of the input in string format.
+      "type": "A String", # Required. If the type is not set or is `TYPE_UNSPECIFIED`,
+          # returns an `INVALID_ARGUMENT` error.
+      "language": "A String", # The language of the document (if not specified, the language is
+          # automatically detected). Both ISO and BCP-47 language codes are
+          # accepted.<br>
+          # **Current Language Restrictions:**
+          #
+          #  * Only English, Spanish, and Japanese textual content are supported.
+          # If the language (either specified by the caller or automatically detected)
+          # is not supported by the called API method, an `INVALID_ARGUMENT` error
+          # is returned.
+      "gcsContentUri": "A String", # The Google Cloud Storage URI where the file content is located.
+          # This URI must be of the form: gs://bucket_name/object_name. For more
+          # details, see https://cloud.google.com/storage/docs/reference-uris.
+          # NOTE: Cloud Storage object versioning is not supported.
+    },
+    "encodingType": "A String", # The encoding type used by the API to calculate offsets.
+  }
+
+  x__xgafv: string, V1 error format.
+    Allowed values
+      1 - v1 error format
+      2 - v2 error format
+
+Returns:
+  An object of the form:
+
+    { # The entity analysis response message.
+    "entities": [ # The recognized entities in the input document.
+      { # Represents a phrase in the text that is a known entity, such as
+          # a person, an organization, or location. The API associates information, such
+          # as salience and mentions, with entities.
+        "type": "A String", # The entity type.
+        "mentions": [ # The mentions of this entity in the input document. The API currently
+            # supports proper noun mentions.
+          { # Represents a mention for an entity in the text. Currently, proper noun
+              # mentions are supported.
+            "text": { # Represents an output piece of text. # The mention text.
+              "content": "A String", # The content of the output text.
+              "beginOffset": 42, # The API calculates the beginning offset of the content in the original
+                  # document according to the EncodingType specified in the API request.
+            },
+            "type": "A String", # The type of the entity mention.
+          },
+        ],
+        "salience": 3.14, # The salience score associated with the entity in the [0, 1.0] range.
+            #
+            # The salience score for an entity provides information about the
+            # importance or centrality of that entity to the entire document text.
+            # Scores closer to 0 are less salient, while scores closer to 1.0 are highly
+            # salient.
+        "name": "A String", # The representative name for the entity.
+        "metadata": { # Metadata associated with the entity.
+            #
+            # Currently, Wikipedia URLs and Knowledge Graph MIDs are provided, if
+            # available. The associated keys are "wikipedia_url" and "mid", respectively.
+          "a_key": "A String",
+        },
+      },
+    ],
+    "language": "A String", # The language of the text, which will be the same as the language specified
+        # in the request or, if not specified, the automatically-detected language.
+        # See `Document.language` field for more details.
+  }</pre>
+</div>
+
+<div class="method">
+    <code class="details" id="analyzeSentiment">analyzeSentiment(body, x__xgafv=None)</code>
+  <pre>Analyzes the sentiment of the provided text.
+
+Args:
+  body: object, The request body. (required)
+    The object takes the form of:
+
+{ # The sentiment analysis request message.
+    "document": { # ################################################################ # # Input document. Currently, `analyzeSentiment` only supports English text
+        # (Document.language="EN").
+        #
+        # Represents the input to API methods.
+      "content": "A String", # The content of the input in string format.
+      "type": "A String", # Required. If the type is not set or is `TYPE_UNSPECIFIED`,
+          # returns an `INVALID_ARGUMENT` error.
+      "language": "A String", # The language of the document (if not specified, the language is
+          # automatically detected). Both ISO and BCP-47 language codes are
+          # accepted.<br>
+          # **Current Language Restrictions:**
+          #
+          #  * Only English, Spanish, and Japanese textual content are supported.
+          # If the language (either specified by the caller or automatically detected)
+          # is not supported by the called API method, an `INVALID_ARGUMENT` error
+          # is returned.
+      "gcsContentUri": "A String", # The Google Cloud Storage URI where the file content is located.
+          # This URI must be of the form: gs://bucket_name/object_name. For more
+          # details, see https://cloud.google.com/storage/docs/reference-uris.
+          # NOTE: Cloud Storage object versioning is not supported.
+    },
+    "encodingType": "A String", # The encoding type used by the API to calculate sentence offsets.
+  }
+
+  x__xgafv: string, V1 error format.
+    Allowed values
+      1 - v1 error format
+      2 - v2 error format
+
+Returns:
+  An object of the form:
+
+    { # The sentiment analysis response message.
+    "documentSentiment": { # Represents the feeling associated with the entire text or entities in # The overall sentiment of the input document.
+        # the text.
+      "score": 3.14, # Sentiment score between -1.0 (negative sentiment) and 1.0
+          # (positive sentiment).
+      "magnitude": 3.14, # A non-negative number in the [0, +inf) range, which represents
+          # the absolute magnitude of sentiment regardless of score (positive or
+          # negative).
+    },
+    "language": "A String", # The language of the text, which will be the same as the language specified
+        # in the request or, if not specified, the automatically-detected language.
+        # See `Document.language` field for more details.
+    "sentences": [ # The sentiment for all the sentences in the document.
+      { # Represents a sentence in the input document.
+        "text": { # Represents an output piece of text. # The sentence text.
+          "content": "A String", # The content of the output text.
+          "beginOffset": 42, # The API calculates the beginning offset of the content in the original
+              # document according to the EncodingType specified in the API request.
+        },
+        "sentiment": { # Represents the feeling associated with the entire text or entities in # For calls to AnalyzeSentiment or if
+            # AnnotateTextRequest.Features.extract_document_sentiment is set to
+            # true, this field will contain the sentiment for the sentence.
+            # the text.
+          "score": 3.14, # Sentiment score between -1.0 (negative sentiment) and 1.0
+              # (positive sentiment).
+          "magnitude": 3.14, # A non-negative number in the [0, +inf) range, which represents
+              # the absolute magnitude of sentiment regardless of score (positive or
+              # negative).
+        },
+      },
+    ],
+  }</pre>
+</div>
+
+<div class="method">
+    <code class="details" id="analyzeSyntax">analyzeSyntax(body, x__xgafv=None)</code>
+  <pre>Analyzes the syntax of the text and provides sentence boundaries and
+tokenization along with part of speech tags, dependency trees, and other
+properties.
+
+Args:
+  body: object, The request body. (required)
+    The object takes the form of:
+
+{ # The syntax analysis request message.
+    "document": { # ################################################################ # # Input document.
+        #
+        # Represents the input to API methods.
+      "content": "A String", # The content of the input in string format.
+      "type": "A String", # Required. If the type is not set or is `TYPE_UNSPECIFIED`,
+          # returns an `INVALID_ARGUMENT` error.
+      "language": "A String", # The language of the document (if not specified, the language is
+          # automatically detected). Both ISO and BCP-47 language codes are
+          # accepted.<br>
+          # **Current Language Restrictions:**
+          #
+          #  * Only English, Spanish, and Japanese textual content are supported.
+          # If the language (either specified by the caller or automatically detected)
+          # is not supported by the called API method, an `INVALID_ARGUMENT` error
+          # is returned.
+      "gcsContentUri": "A String", # The Google Cloud Storage URI where the file content is located.
+          # This URI must be of the form: gs://bucket_name/object_name. For more
+          # details, see https://cloud.google.com/storage/docs/reference-uris.
+          # NOTE: Cloud Storage object versioning is not supported.
+    },
+    "encodingType": "A String", # The encoding type used by the API to calculate offsets.
+  }
+
+  x__xgafv: string, V1 error format.
+    Allowed values
+      1 - v1 error format
+      2 - v2 error format
+
+Returns:
+  An object of the form:
+
+    { # The syntax analysis response message.
+    "tokens": [ # Tokens, along with their syntactic information, in the input document.
+      { # Represents the smallest syntactic building block of the text.
+        "text": { # Represents an output piece of text. # The token text.
+          "content": "A String", # The content of the output text.
+          "beginOffset": 42, # The API calculates the beginning offset of the content in the original
+              # document according to the EncodingType specified in the API request.
+        },
+        "dependencyEdge": { # Represents dependency parse tree information for a token. (For more # Dependency tree parse for this token.
+            # information on dependency labels, see
+            # http://www.aclweb.org/anthology/P13-2017
+          "headTokenIndex": 42, # Represents the head of this token in the dependency tree.
+              # This is the index of the token which has an arc going to this token.
+              # The index is the position of the token in the array of tokens returned
+              # by the API method. If this token is a root token, then the
+              # `head_token_index` is its own index.
+          "label": "A String", # The parse label for the token.
+        },
+        "partOfSpeech": { # Represents part of speech information for a token. Parts of speech # Parts of speech tag for this token.
+            # are as defined in
+            # http://www.lrec-conf.org/proceedings/lrec2012/pdf/274_Paper.pdf
+          "case": "A String", # The grammatical case.
+          "reciprocity": "A String", # The grammatical reciprocity.
+          "mood": "A String", # The grammatical mood.
+          "form": "A String", # The grammatical form.
+          "gender": "A String", # The grammatical gender.
+          "number": "A String", # The grammatical number.
+          "person": "A String", # The grammatical person.
+          "tag": "A String", # The part of speech tag.
+          "tense": "A String", # The grammatical tense.
+          "aspect": "A String", # The grammatical aspect.
+          "proper": "A String", # The grammatical properness.
+          "voice": "A String", # The grammatical voice.
+        },
+        "lemma": "A String", # [Lemma](https://en.wikipedia.org/wiki/Lemma_%28morphology%29) of the token.
+      },
+    ],
+    "language": "A String", # The language of the text, which will be the same as the language specified
+        # in the request or, if not specified, the automatically-detected language.
+        # See `Document.language` field for more details.
+    "sentences": [ # Sentences in the input document.
+      { # Represents a sentence in the input document.
+        "text": { # Represents an output piece of text. # The sentence text.
+          "content": "A String", # The content of the output text.
+          "beginOffset": 42, # The API calculates the beginning offset of the content in the original
+              # document according to the EncodingType specified in the API request.
+        },
+        "sentiment": { # Represents the feeling associated with the entire text or entities in # For calls to AnalyzeSentiment or if
+            # AnnotateTextRequest.Features.extract_document_sentiment is set to
+            # true, this field will contain the sentiment for the sentence.
+            # the text.
+          "score": 3.14, # Sentiment score between -1.0 (negative sentiment) and 1.0
+              # (positive sentiment).
+          "magnitude": 3.14, # A non-negative number in the [0, +inf) range, which represents
+              # the absolute magnitude of sentiment regardless of score (positive or
+              # negative).
+        },
+      },
+    ],
+  }</pre>
+</div>
+
+<div class="method">
+    <code class="details" id="annotateText">annotateText(body, x__xgafv=None)</code>
+  <pre>A convenience method that provides all the features that analyzeSentiment,
+analyzeEntities, and analyzeSyntax provide in one call.
+
+Args:
+  body: object, The request body. (required)
+    The object takes the form of:
+
+{ # The request message for the text annotation API, which can perform multiple
+      # analysis types (sentiment, entities, and syntax) in one call.
+    "document": { # ################################################################ # # Input document.
+        #
+        # Represents the input to API methods.
+      "content": "A String", # The content of the input in string format.
+      "type": "A String", # Required. If the type is not set or is `TYPE_UNSPECIFIED`,
+          # returns an `INVALID_ARGUMENT` error.
+      "language": "A String", # The language of the document (if not specified, the language is
+          # automatically detected). Both ISO and BCP-47 language codes are
+          # accepted.<br>
+          # **Current Language Restrictions:**
+          #
+          #  * Only English, Spanish, and Japanese textual content are supported.
+          # If the language (either specified by the caller or automatically detected)
+          # is not supported by the called API method, an `INVALID_ARGUMENT` error
+          # is returned.
+      "gcsContentUri": "A String", # The Google Cloud Storage URI where the file content is located.
+          # This URI must be of the form: gs://bucket_name/object_name. For more
+          # details, see https://cloud.google.com/storage/docs/reference-uris.
+          # NOTE: Cloud Storage object versioning is not supported.
+    },
+    "encodingType": "A String", # The encoding type used by the API to calculate offsets.
+    "features": { # All available features for sentiment, syntax, and semantic analysis. # The enabled features.
+        # Setting each one to true will enable that specific analysis for the input.
+      "extractSyntax": True or False, # Extract syntax information.
+      "extractEntities": True or False, # Extract entities.
+      "extractDocumentSentiment": True or False, # Extract document-level sentiment.
+    },
+  }
+
+  x__xgafv: string, V1 error format.
+    Allowed values
+      1 - v1 error format
+      2 - v2 error format
+
+Returns:
+  An object of the form:
+
+    { # The text annotations response message.
+    "tokens": [ # Tokens, along with their syntactic information, in the input document.
+        # Populated if the user enables
+        # AnnotateTextRequest.Features.extract_syntax.
+      { # Represents the smallest syntactic building block of the text.
+        "text": { # Represents an output piece of text. # The token text.
+          "content": "A String", # The content of the output text.
+          "beginOffset": 42, # The API calculates the beginning offset of the content in the original
+              # document according to the EncodingType specified in the API request.
+        },
+        "dependencyEdge": { # Represents dependency parse tree information for a token. (For more # Dependency tree parse for this token.
+            # information on dependency labels, see
+            # http://www.aclweb.org/anthology/P13-2017
+          "headTokenIndex": 42, # Represents the head of this token in the dependency tree.
+              # This is the index of the token which has an arc going to this token.
+              # The index is the position of the token in the array of tokens returned
+              # by the API method. If this token is a root token, then the
+              # `head_token_index` is its own index.
+          "label": "A String", # The parse label for the token.
+        },
+        "partOfSpeech": { # Represents part of speech information for a token. Parts of speech # Parts of speech tag for this token.
+            # are as defined in
+            # http://www.lrec-conf.org/proceedings/lrec2012/pdf/274_Paper.pdf
+          "case": "A String", # The grammatical case.
+          "reciprocity": "A String", # The grammatical reciprocity.
+          "mood": "A String", # The grammatical mood.
+          "form": "A String", # The grammatical form.
+          "gender": "A String", # The grammatical gender.
+          "number": "A String", # The grammatical number.
+          "person": "A String", # The grammatical person.
+          "tag": "A String", # The part of speech tag.
+          "tense": "A String", # The grammatical tense.
+          "aspect": "A String", # The grammatical aspect.
+          "proper": "A String", # The grammatical properness.
+          "voice": "A String", # The grammatical voice.
+        },
+        "lemma": "A String", # [Lemma](https://en.wikipedia.org/wiki/Lemma_%28morphology%29) of the token.
+      },
+    ],
+    "entities": [ # Entities, along with their semantic information, in the input document.
+        # Populated if the user enables
+        # AnnotateTextRequest.Features.extract_entities.
+      { # Represents a phrase in the text that is a known entity, such as
+          # a person, an organization, or location. The API associates information, such
+          # as salience and mentions, with entities.
+        "type": "A String", # The entity type.
+        "mentions": [ # The mentions of this entity in the input document. The API currently
+            # supports proper noun mentions.
+          { # Represents a mention for an entity in the text. Currently, proper noun
+              # mentions are supported.
+            "text": { # Represents an output piece of text. # The mention text.
+              "content": "A String", # The content of the output text.
+              "beginOffset": 42, # The API calculates the beginning offset of the content in the original
+                  # document according to the EncodingType specified in the API request.
+            },
+            "type": "A String", # The type of the entity mention.
+          },
+        ],
+        "salience": 3.14, # The salience score associated with the entity in the [0, 1.0] range.
+            #
+            # The salience score for an entity provides information about the
+            # importance or centrality of that entity to the entire document text.
+            # Scores closer to 0 are less salient, while scores closer to 1.0 are highly
+            # salient.
+        "name": "A String", # The representative name for the entity.
+        "metadata": { # Metadata associated with the entity.
+            #
+            # Currently, Wikipedia URLs and Knowledge Graph MIDs are provided, if
+            # available. The associated keys are "wikipedia_url" and "mid", respectively.
+          "a_key": "A String",
+        },
+      },
+    ],
+    "documentSentiment": { # Represents the feeling associated with the entire text or entities in # The overall sentiment for the document. Populated if the user enables
+        # AnnotateTextRequest.Features.extract_document_sentiment.
+        # the text.
+      "score": 3.14, # Sentiment score between -1.0 (negative sentiment) and 1.0
+          # (positive sentiment).
+      "magnitude": 3.14, # A non-negative number in the [0, +inf) range, which represents
+          # the absolute magnitude of sentiment regardless of score (positive or
+          # negative).
+    },
+    "language": "A String", # The language of the text, which will be the same as the language specified
+        # in the request or, if not specified, the automatically-detected language.
+        # See `Document.language` field for more details.
+    "sentences": [ # Sentences in the input document. Populated if the user enables
+        # AnnotateTextRequest.Features.extract_syntax.
+      { # Represents a sentence in the input document.
+        "text": { # Represents an output piece of text. # The sentence text.
+          "content": "A String", # The content of the output text.
+          "beginOffset": 42, # The API calculates the beginning offset of the content in the original
+              # document according to the EncodingType specified in the API request.
+        },
+        "sentiment": { # Represents the feeling associated with the entire text or entities in # For calls to AnalyzeSentiment or if
+            # AnnotateTextRequest.Features.extract_document_sentiment is set to
+            # true, this field will contain the sentiment for the sentence.
+            # the text.
+          "score": 3.14, # Sentiment score between -1.0 (negative sentiment) and 1.0
+              # (positive sentiment).
+          "magnitude": 3.14, # A non-negative number in the [0, +inf) range, which represents
+              # the absolute magnitude of sentiment regardless of score (positive or
+              # negative).
+        },
+      },
+    ],
+  }</pre>
+</div>
+
+</body></html>
\ No newline at end of file
diff --git a/docs/dyn/language_v1.html b/docs/dyn/language_v1.html
new file mode 100644
index 0000000..10c0c51
--- /dev/null
+++ b/docs/dyn/language_v1.html
@@ -0,0 +1,103 @@
+<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="language_v1.html">Google Cloud Natural Language API</a></h1>
+<h2>Instance Methods</h2>
+<p class="toc_element">
+  <code><a href="language_v1.documents.html">documents()</a></code>
+</p>
+<p class="firstline">Returns the documents Resource.</p>
+
+<p class="toc_element">
+  <code><a href="#new_batch_http_request">new_batch_http_request()</a></code></p>
+<p class="firstline">Create a BatchHttpRequest object based on the discovery document.</p>
+<h3>Method Details</h3>
+<div class="method">
+    <code class="details" id="new_batch_http_request">new_batch_http_request()</code>
+  <pre>Create a BatchHttpRequest object based on the discovery document.
+
+        Args:
+          callback: callable, A callback to be called for each response, of the
+            form callback(id, response, exception). The first parameter is the
+            request id, and the second is the deserialized response object. The
+            third is an apiclient.errors.HttpError exception object if an HTTP
+            error occurred while processing the request, or None if no error
+            occurred.
+
+        Returns:
+          A BatchHttpRequest object based on the discovery document.
+        </pre>
+</div>
+
+</body></html>
\ No newline at end of file
diff --git a/docs/dyn/language_v1beta1.documents.html b/docs/dyn/language_v1beta1.documents.html
index 8e6da6b..bf6cf97 100644
--- a/docs/dyn/language_v1beta1.documents.html
+++ b/docs/dyn/language_v1beta1.documents.html
@@ -81,6 +81,9 @@
   <code><a href="#analyzeSentiment">analyzeSentiment(body, x__xgafv=None)</a></code></p>
 <p class="firstline">Analyzes the sentiment of the provided text.</p>
 <p class="toc_element">
+  <code><a href="#analyzeSyntax">analyzeSyntax(body, x__xgafv=None)</a></code></p>
+<p class="firstline">Analyzes the syntax of the text and provides sentence boundaries and</p>
+<p class="toc_element">
   <code><a href="#annotateText">annotateText(body, x__xgafv=None)</a></code></p>
 <p class="firstline">A convenience method that provides all the features that analyzeSentiment,</p>
 <h3>Method Details</h3>
@@ -105,13 +108,14 @@
           # accepted.<br>
           # **Current Language Restrictions:**
           #
-          #  * Only English, Spanish, and Japanese textual content
-          #    are supported, with the following additional restriction:
-          #    * `analyzeSentiment` only supports English text.
+          #  * Only English, Spanish, and Japanese textual content are supported.
           # If the language (either specified by the caller or automatically detected)
           # is not supported by the called API method, an `INVALID_ARGUMENT` error
           # is returned.
       "gcsContentUri": "A String", # The Google Cloud Storage URI where the file content is located.
+          # This URI must be of the form: gs://bucket_name/object_name. For more
+          # details, see https://cloud.google.com/storage/docs/reference-uris.
+          # NOTE: Cloud Storage object versioning is not supported.
     },
     "encodingType": "A String", # The encoding type used by the API to calculate offsets.
   }
@@ -139,6 +143,7 @@
               "beginOffset": 42, # The API calculates the beginning offset of the content in the original
                   # document according to the EncodingType specified in the API request.
             },
+            "type": "A String", # The type of the entity mention.
           },
         ],
         "salience": 3.14, # The salience score associated with the entity in the [0, 1.0] range.
@@ -150,8 +155,8 @@
         "name": "A String", # The representative name for the entity.
         "metadata": { # Metadata associated with the entity.
             #
-            # Currently, only Wikipedia URLs are provided, if available.
-            # The associated key is "wikipedia_url".
+            # Currently, Wikipedia URLs and Knowledge Graph MIDs are provided, if
+            # available. The associated keys are "wikipedia_url" and "mid", respectively.
           "a_key": "A String",
         },
       },
@@ -183,14 +188,17 @@
           # accepted.<br>
           # **Current Language Restrictions:**
           #
-          #  * Only English, Spanish, and Japanese textual content
-          #    are supported, with the following additional restriction:
-          #    * `analyzeSentiment` only supports English text.
+          #  * Only English, Spanish, and Japanese textual content are supported.
           # If the language (either specified by the caller or automatically detected)
           # is not supported by the called API method, an `INVALID_ARGUMENT` error
           # is returned.
       "gcsContentUri": "A String", # The Google Cloud Storage URI where the file content is located.
+          # This URI must be of the form: gs://bucket_name/object_name. For more
+          # details, see https://cloud.google.com/storage/docs/reference-uris.
+          # NOTE: Cloud Storage object versioning is not supported.
     },
+    "encodingType": "A String", # The encoding type used by the API to calculate sentence offsets for the
+        # sentence sentiment.
   }
 
   x__xgafv: string, V1 error format.
@@ -204,14 +212,142 @@
     { # The sentiment analysis response message.
     "documentSentiment": { # Represents the feeling associated with the entire text or entities in # The overall sentiment of the input document.
         # the text.
-      "polarity": 3.14, # Polarity of the sentiment in the [-1.0, 1.0] range. Larger numbers
-          # represent more positive sentiments.
+      "polarity": 3.14, # DEPRECATED FIELD - This field is being deprecated in
+          # favor of score. Please refer to our documentation at
+          # https://cloud.google.com/natural-language/docs for more information.
+      "score": 3.14, # Sentiment score between -1.0 (negative sentiment) and 1.0
+          # (positive sentiment).
       "magnitude": 3.14, # A non-negative number in the [0, +inf) range, which represents
-          # the absolute magnitude of sentiment regardless of polarity (positive or
+          # the absolute magnitude of sentiment regardless of score (positive or
           # negative).
     },
     "language": "A String", # The language of the text, which will be the same as the language specified
         # in the request or, if not specified, the automatically-detected language.
+    "sentences": [ # The sentiment for all the sentences in the document.
+      { # Represents a sentence in the input document.
+        "text": { # Represents an output piece of text. # The sentence text.
+          "content": "A String", # The content of the output text.
+          "beginOffset": 42, # The API calculates the beginning offset of the content in the original
+              # document according to the EncodingType specified in the API request.
+        },
+        "sentiment": { # Represents the feeling associated with the entire text or entities in # For calls to AnalyzeSentiment or if
+            # AnnotateTextRequest.Features.extract_document_sentiment is set to
+            # true, this field will contain the sentiment for the sentence.
+            # the text.
+          "polarity": 3.14, # DEPRECATED FIELD - This field is being deprecated in
+              # favor of score. Please refer to our documentation at
+              # https://cloud.google.com/natural-language/docs for more information.
+          "score": 3.14, # Sentiment score between -1.0 (negative sentiment) and 1.0
+              # (positive sentiment).
+          "magnitude": 3.14, # A non-negative number in the [0, +inf) range, which represents
+              # the absolute magnitude of sentiment regardless of score (positive or
+              # negative).
+        },
+      },
+    ],
+  }</pre>
+</div>
+
+<div class="method">
+    <code class="details" id="analyzeSyntax">analyzeSyntax(body, x__xgafv=None)</code>
+  <pre>Analyzes the syntax of the text and provides sentence boundaries and
+tokenization along with part of speech tags, dependency trees, and other
+properties.
+
+Args:
+  body: object, The request body. (required)
+    The object takes the form of:
+
+{ # The syntax analysis request message.
+    "document": { # ################################################################ # # Input document.
+        #
+        # Represents the input to API methods.
+      "content": "A String", # The content of the input in string format.
+      "type": "A String", # Required. If the type is not set or is `TYPE_UNSPECIFIED`,
+          # returns an `INVALID_ARGUMENT` error.
+      "language": "A String", # The language of the document (if not specified, the language is
+          # automatically detected). Both ISO and BCP-47 language codes are
+          # accepted.<br>
+          # **Current Language Restrictions:**
+          #
+          #  * Only English, Spanish, and Japanese textual content are supported.
+          # If the language (either specified by the caller or automatically detected)
+          # is not supported by the called API method, an `INVALID_ARGUMENT` error
+          # is returned.
+      "gcsContentUri": "A String", # The Google Cloud Storage URI where the file content is located.
+          # This URI must be of the form: gs://bucket_name/object_name. For more
+          # details, see https://cloud.google.com/storage/docs/reference-uris.
+          # NOTE: Cloud Storage object versioning is not supported.
+    },
+    "encodingType": "A String", # The encoding type used by the API to calculate offsets.
+  }
+
+  x__xgafv: string, V1 error format.
+    Allowed values
+      1 - v1 error format
+      2 - v2 error format
+
+Returns:
+  An object of the form:
+
+    { # The syntax analysis response message.
+    "tokens": [ # Tokens, along with their syntactic information, in the input document.
+      { # Represents the smallest syntactic building block of the text.
+        "text": { # Represents an output piece of text. # The token text.
+          "content": "A String", # The content of the output text.
+          "beginOffset": 42, # The API calculates the beginning offset of the content in the original
+              # document according to the EncodingType specified in the API request.
+        },
+        "dependencyEdge": { # Represents dependency parse tree information for a token. # Dependency tree parse for this token.
+          "headTokenIndex": 42, # Represents the head of this token in the dependency tree.
+              # This is the index of the token which has an arc going to this token.
+              # The index is the position of the token in the array of tokens returned
+              # by the API method. If this token is a root token, then the
+              # `head_token_index` is its own index.
+          "label": "A String", # The parse label for the token.
+        },
+        "partOfSpeech": { # Represents part of speech information for a token. # Parts of speech tag for this token.
+          "case": "A String", # The grammatical case.
+          "reciprocity": "A String", # The grammatical reciprocity.
+          "mood": "A String", # The grammatical mood.
+          "form": "A String", # The grammatical form.
+          "gender": "A String", # The grammatical gender.
+          "number": "A String", # The grammatical number.
+          "person": "A String", # The grammatical person.
+          "tag": "A String", # The part of speech tag.
+          "tense": "A String", # The grammatical tense.
+          "aspect": "A String", # The grammatical aspect.
+          "proper": "A String", # The grammatical properness.
+          "voice": "A String", # The grammatical voice.
+        },
+        "lemma": "A String", # [Lemma](https://en.wikipedia.org/wiki/Lemma_%28morphology%29) of the token.
+      },
+    ],
+    "language": "A String", # The language of the text, which will be the same as the language specified
+        # in the request or, if not specified, the automatically-detected language.
+        # See Document.language field for more details.
+    "sentences": [ # Sentences in the input document.
+      { # Represents a sentence in the input document.
+        "text": { # Represents an output piece of text. # The sentence text.
+          "content": "A String", # The content of the output text.
+          "beginOffset": 42, # The API calculates the beginning offset of the content in the original
+              # document according to the EncodingType specified in the API request.
+        },
+        "sentiment": { # Represents the feeling associated with the entire text or entities in # For calls to AnalyzeSentiment or if
+            # AnnotateTextRequest.Features.extract_document_sentiment is set to
+            # true, this field will contain the sentiment for the sentence.
+            # the text.
+          "polarity": 3.14, # DEPRECATED FIELD - This field is being deprecated in
+              # favor of score. Please refer to our documentation at
+              # https://cloud.google.com/natural-language/docs for more information.
+          "score": 3.14, # Sentiment score between -1.0 (negative sentiment) and 1.0
+              # (positive sentiment).
+          "magnitude": 3.14, # A non-negative number in the [0, +inf) range, which represents
+              # the absolute magnitude of sentiment regardless of score (positive or
+              # negative).
+        },
+      },
+    ],
   }</pre>
 </div>
 
@@ -237,13 +373,14 @@
           # accepted.<br>
           # **Current Language Restrictions:**
           #
-          #  * Only English, Spanish, and Japanese textual content
-          #    are supported, with the following additional restriction:
-          #    * `analyzeSentiment` only supports English text.
+          #  * Only English, Spanish, and Japanese textual content are supported.
           # If the language (either specified by the caller or automatically detected)
           # is not supported by the called API method, an `INVALID_ARGUMENT` error
           # is returned.
       "gcsContentUri": "A String", # The Google Cloud Storage URI where the file content is located.
+          # This URI must be of the form: gs://bucket_name/object_name. For more
+          # details, see https://cloud.google.com/storage/docs/reference-uris.
+          # NOTE: Cloud Storage object versioning is not supported.
     },
     "encodingType": "A String", # The encoding type used by the API to calculate offsets.
     "features": { # All available features for sentiment, syntax, and semantic analysis. # The enabled features.
@@ -281,10 +418,20 @@
           "label": "A String", # The parse label for the token.
         },
         "partOfSpeech": { # Represents part of speech information for a token. # Parts of speech tag for this token.
+          "case": "A String", # The grammatical case.
+          "reciprocity": "A String", # The grammatical reciprocity.
+          "mood": "A String", # The grammatical mood.
+          "form": "A String", # The grammatical form.
+          "gender": "A String", # The grammatical gender.
+          "number": "A String", # The grammatical number.
+          "person": "A String", # The grammatical person.
           "tag": "A String", # The part of speech tag.
+          "tense": "A String", # The grammatical tense.
+          "aspect": "A String", # The grammatical aspect.
+          "proper": "A String", # The grammatical properness.
+          "voice": "A String", # The grammatical voice.
         },
-        "lemma": "A String", # [Lemma](https://en.wikipedia.org/wiki/Lemma_(morphology))
-            # of the token.
+        "lemma": "A String", # [Lemma](https://en.wikipedia.org/wiki/Lemma_%28morphology%29) of the token.
       },
     ],
     "entities": [ # Entities, along with their semantic information, in the input document.
@@ -303,6 +450,7 @@
               "beginOffset": 42, # The API calculates the beginning offset of the content in the original
                   # document according to the EncodingType specified in the API request.
             },
+            "type": "A String", # The type of the entity mention.
           },
         ],
         "salience": 3.14, # The salience score associated with the entity in the [0, 1.0] range.
@@ -314,8 +462,8 @@
         "name": "A String", # The representative name for the entity.
         "metadata": { # Metadata associated with the entity.
             #
-            # Currently, only Wikipedia URLs are provided, if available.
-            # The associated key is "wikipedia_url".
+            # Currently, Wikipedia URLs and Knowledge Graph MIDs are provided, if
+            # available. The associated keys are "wikipedia_url" and "mid", respectively.
           "a_key": "A String",
         },
       },
@@ -323,10 +471,13 @@
     "documentSentiment": { # Represents the feeling associated with the entire text or entities in # The overall sentiment for the document. Populated if the user enables
         # AnnotateTextRequest.Features.extract_document_sentiment.
         # the text.
-      "polarity": 3.14, # Polarity of the sentiment in the [-1.0, 1.0] range. Larger numbers
-          # represent more positive sentiments.
+      "polarity": 3.14, # DEPRECATED FIELD - This field is being deprecated in
+          # favor of score. Please refer to our documentation at
+          # https://cloud.google.com/natural-language/docs for more information.
+      "score": 3.14, # Sentiment score between -1.0 (negative sentiment) and 1.0
+          # (positive sentiment).
       "magnitude": 3.14, # A non-negative number in the [0, +inf) range, which represents
-          # the absolute magnitude of sentiment regardless of polarity (positive or
+          # the absolute magnitude of sentiment regardless of score (positive or
           # negative).
     },
     "language": "A String", # The language of the text, which will be the same as the language specified
@@ -340,6 +491,19 @@
           "beginOffset": 42, # The API calculates the beginning offset of the content in the original
               # document according to the EncodingType specified in the API request.
         },
+        "sentiment": { # Represents the feeling associated with the entire text or entities in # For calls to AnalyzeSentiment or if
+            # AnnotateTextRequest.Features.extract_document_sentiment is set to
+            # true, this field will contain the sentiment for the sentence.
+            # the text.
+          "polarity": 3.14, # DEPRECATED FIELD - This field is being deprecated in
+              # favor of score. Please refer to our documentation at
+              # https://cloud.google.com/natural-language/docs for more information.
+          "score": 3.14, # Sentiment score between -1.0 (negative sentiment) and 1.0
+              # (positive sentiment).
+          "magnitude": 3.14, # A non-negative number in the [0, +inf) range, which represents
+              # the absolute magnitude of sentiment regardless of score (positive or
+              # negative).
+        },
       },
     ],
   }</pre>
diff --git a/docs/dyn/logging_v2.billingAccounts.html b/docs/dyn/logging_v2.billingAccounts.html
index 28a34a1..00172cf 100644
--- a/docs/dyn/logging_v2.billingAccounts.html
+++ b/docs/dyn/logging_v2.billingAccounts.html
@@ -79,4 +79,9 @@
 </p>
 <p class="firstline">Returns the logs Resource.</p>
 
+<p class="toc_element">
+  <code><a href="logging_v2.billingAccounts.sinks.html">sinks()</a></code>
+</p>
+<p class="firstline">Returns the sinks Resource.</p>
+
 </body></html>
\ No newline at end of file
diff --git a/docs/dyn/logging_v2.billingAccounts.logs.html b/docs/dyn/logging_v2.billingAccounts.logs.html
index e606c59..d5d9c12 100644
--- a/docs/dyn/logging_v2.billingAccounts.logs.html
+++ b/docs/dyn/logging_v2.billingAccounts.logs.html
@@ -76,16 +76,23 @@
 <h2>Instance Methods</h2>
 <p class="toc_element">
   <code><a href="#delete">delete(logName=None, x__xgafv=None)</a></code></p>
-<p class="firstline">Deletes a log and all its log entries.</p>
+<p class="firstline">Deletes all the log entries in a log. The log reappears if it receives new entries.</p>
+<p class="toc_element">
+  <code><a href="#list">list(parent=None, pageToken=None, x__xgafv=None, pageSize=None)</a></code></p>
+<p class="firstline">Lists the logs in projects or organizations. Only logs that have entries are listed.</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>
 <h3>Method Details</h3>
 <div class="method">
     <code class="details" id="delete">delete(logName=None, x__xgafv=None)</code>
-  <pre>Deletes a log and all its log entries.
-The log will reappear if it receives new entries.
+  <pre>Deletes all the log entries in a log. The log reappears if it receives new entries.
 
 Args:
-  logName: string, Required. The resource name of the log to delete.  Example:
-`"projects/my-project/logs/syslog"`. (required)
+  logName: string, Required. The resource name of the log to delete:
+"projects/[PROJECT_ID]/logs/[LOG_ID]"
+"organizations/[ORGANIZATION_ID]/logs/[LOG_ID]"
+[LOG_ID] must be URL-encoded. For example, "projects/my-project-id/logs/syslog", "organizations/1234567890/logs/cloudresourcemanager.googleapis.com%2Factivity". For more information about log names, see LogEntry. (required)
   x__xgafv: string, V1 error format.
     Allowed values
       1 - v1 error format
@@ -94,16 +101,53 @@
 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 `{}`.
+    { # 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="list">list(parent=None, pageToken=None, x__xgafv=None, pageSize=None)</code>
+  <pre>Lists the logs in projects or organizations. Only logs that have entries are listed.
+
+Args:
+  parent: string, Required. The resource name that owns the logs:
+"projects/[PROJECT_ID]"
+"organizations/[ORGANIZATION_ID]"
+ (required)
+  pageToken: string, Optional. If present, then retrieve the next batch of results from the preceding call to this method. pageToken must be the value of nextPageToken from the previous response. The values of other method parameters should be identical to those in the previous call.
+  x__xgafv: string, V1 error format.
+    Allowed values
+      1 - v1 error format
+      2 - v2 error format
+  pageSize: integer, Optional. The maximum number of results to return from this request. Non-positive values are ignored. The presence of nextPageToken in the response indicates that more results might be available.
+
+Returns:
+  An object of the form:
+
+    { # Result returned from ListLogs.
+    "nextPageToken": "A String", # If there might be more results than those appearing in this response, then nextPageToken is included. To get the next set of results, call this method again using the value of nextPageToken as pageToken.
+    "logNames": [ # A list of log names. For example, "projects/my-project/syslog" or "organizations/123/cloudresourcemanager.googleapis.com%2Factivity".
+      "A String",
+    ],
+  }</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>
+
 </body></html>
\ No newline at end of file
diff --git a/docs/dyn/logging_v2.billingAccounts.sinks.html b/docs/dyn/logging_v2.billingAccounts.sinks.html
new file mode 100644
index 0000000..4a00d87
--- /dev/null
+++ b/docs/dyn/logging_v2.billingAccounts.sinks.html
@@ -0,0 +1,312 @@
+<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="logging_v2.html">Stackdriver Logging API</a> . <a href="logging_v2.billingAccounts.html">billingAccounts</a> . <a href="logging_v2.billingAccounts.sinks.html">sinks</a></h1>
+<h2>Instance Methods</h2>
+<p class="toc_element">
+  <code><a href="#create">create(parent=None, body, uniqueWriterIdentity=None, x__xgafv=None)</a></code></p>
+<p class="firstline">Creates a sink that exports specified log entries to a destination. The export of newly-ingested log entries begins immediately, unless the current time is outside the sink's start and end times or the sink's writer_identity is not permitted to write to the destination. A sink can export log entries only from the resource owning the sink.</p>
+<p class="toc_element">
+  <code><a href="#delete">delete(sinkName=None, x__xgafv=None)</a></code></p>
+<p class="firstline">Deletes a sink. If the sink has a unique writer_identity, then that service account is also deleted.</p>
+<p class="toc_element">
+  <code><a href="#get">get(sinkName=None, x__xgafv=None)</a></code></p>
+<p class="firstline">Gets a sink.</p>
+<p class="toc_element">
+  <code><a href="#list">list(parent, pageToken=None, x__xgafv=None, pageSize=None)</a></code></p>
+<p class="firstline">Lists sinks.</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="#update">update(sinkName=None, body, uniqueWriterIdentity=None, x__xgafv=None)</a></code></p>
+<p class="firstline">Updates a sink. If the named sink doesn't exist, then this method is identical to sinks.create. If the named sink does exist, then this method replaces the following fields in the existing sink with values from the new sink: destination, filter, output_version_format, start_time, and end_time. The updated filter might also have a new writer_identity; see the unique_writer_identity field.</p>
+<h3>Method Details</h3>
+<div class="method">
+    <code class="details" id="create">create(parent=None, body, uniqueWriterIdentity=None, x__xgafv=None)</code>
+  <pre>Creates a sink that exports specified log entries to a destination. The export of newly-ingested log entries begins immediately, unless the current time is outside the sink's start and end times or the sink's writer_identity is not permitted to write to the destination. A sink can export log entries only from the resource owning the sink.
+
+Args:
+  parent: string, Required. The resource in which to create the sink:
+"projects/[PROJECT_ID]"
+"organizations/[ORGANIZATION_ID]"
+Examples: "projects/my-logging-project", "organizations/123456789". (required)
+  body: object, The request body. (required)
+    The object takes the form of:
+
+{ # Describes a sink used to export log entries to one of the following destinations in any project: a Cloud Storage bucket, a BigQuery dataset, or a Cloud Pub/Sub topic. A logs filter controls which log entries are exported. The sink must be created within a project or organization.
+    "endTime": "A String", # Optional. The time at which this sink will stop exporting log entries. Log entries are exported only if their timestamp is earlier than the end time. If this field is not supplied, there is no end time. If both a start time and an end time are provided, then the end time must be later than the start time.
+    "name": "A String", # Required. The client-assigned sink identifier, unique within the project. Example: "my-syslog-errors-to-pubsub". Sink identifiers are limited to 100 characters and can include only the following characters: upper and lower-case alphanumeric characters, underscores, hyphens, and periods.
+    "destination": "A String", # Required. The export destination:
+        # "storage.googleapis.com/[GCS_BUCKET]"
+        # "bigquery.googleapis.com/projects/[PROJECT_ID]/datasets/[DATASET]"
+        # "pubsub.googleapis.com/projects/[PROJECT_ID]/topics/[TOPIC_ID]"
+        # The sink's writer_identity, set when the sink is created, must have permission to write to the destination or else the log entries are not exported. For more information, see Exporting Logs With Sinks.
+    "filter": "A String", # Optional. An advanced logs filter. The only exported log entries are those that are in the resource owning the sink and that match the filter. The filter must use the log entry format specified by the output_version_format parameter. For example, in the v2 format:
+        # logName="projects/[PROJECT_ID]/logs/[LOG_ID]" AND severity>=ERROR
+    "startTime": "A String", # Optional. The time at which this sink will begin exporting log entries. Log entries are exported only if their timestamp is not earlier than the start time. The default value of this field is the time the sink is created or updated.
+    "outputVersionFormat": "A String", # Optional. The log entry format to use for this sink's exported log entries. The v2 format is used by default. The v1 format is deprecated and should be used only as part of a migration effort to v2. See Migration to the v2 API.
+    "writerIdentity": "A String", # Output only. An IAM identity&mdash;a service account or group&mdash;under which Stackdriver Logging writes the exported log entries to the sink's destination. This field is set by sinks.create and sinks.update, based on the setting of unique_writer_identity in those methods.Until you grant this identity write-access to the destination, log entry exports from this sink will fail. For more information, see Granting access for a resource. Consult the destination service's documentation to determine the appropriate IAM roles to assign to the identity.
+  }
+
+  uniqueWriterIdentity: boolean, Optional. Determines the kind of IAM identity returned as writer_identity in the new sink. If this value is omitted or set to false, and if the sink's parent is a project, then the value returned as writer_identity is cloud-logs@google.com, the same identity used before the addition of writer identities to this API. The sink's destination must be in the same project as the sink itself.If this field is set to true, or if the sink is owned by a non-project resource such as an organization, then the value of writer_identity will be a unique service account used only for exports from the new sink. For more information, see writer_identity in LogSink.
+  x__xgafv: string, V1 error format.
+    Allowed values
+      1 - v1 error format
+      2 - v2 error format
+
+Returns:
+  An object of the form:
+
+    { # Describes a sink used to export log entries to one of the following destinations in any project: a Cloud Storage bucket, a BigQuery dataset, or a Cloud Pub/Sub topic. A logs filter controls which log entries are exported. The sink must be created within a project or organization.
+      "endTime": "A String", # Optional. The time at which this sink will stop exporting log entries. Log entries are exported only if their timestamp is earlier than the end time. If this field is not supplied, there is no end time. If both a start time and an end time are provided, then the end time must be later than the start time.
+      "name": "A String", # Required. The client-assigned sink identifier, unique within the project. Example: "my-syslog-errors-to-pubsub". Sink identifiers are limited to 100 characters and can include only the following characters: upper and lower-case alphanumeric characters, underscores, hyphens, and periods.
+      "destination": "A String", # Required. The export destination:
+          # "storage.googleapis.com/[GCS_BUCKET]"
+          # "bigquery.googleapis.com/projects/[PROJECT_ID]/datasets/[DATASET]"
+          # "pubsub.googleapis.com/projects/[PROJECT_ID]/topics/[TOPIC_ID]"
+          # The sink's writer_identity, set when the sink is created, must have permission to write to the destination or else the log entries are not exported. For more information, see Exporting Logs With Sinks.
+      "filter": "A String", # Optional. An advanced logs filter. The only exported log entries are those that are in the resource owning the sink and that match the filter. The filter must use the log entry format specified by the output_version_format parameter. For example, in the v2 format:
+          # logName="projects/[PROJECT_ID]/logs/[LOG_ID]" AND severity>=ERROR
+      "startTime": "A String", # Optional. The time at which this sink will begin exporting log entries. Log entries are exported only if their timestamp is not earlier than the start time. The default value of this field is the time the sink is created or updated.
+      "outputVersionFormat": "A String", # Optional. The log entry format to use for this sink's exported log entries. The v2 format is used by default. The v1 format is deprecated and should be used only as part of a migration effort to v2. See Migration to the v2 API.
+      "writerIdentity": "A String", # Output only. An IAM identity&mdash;a service account or group&mdash;under which Stackdriver Logging writes the exported log entries to the sink's destination. This field is set by sinks.create and sinks.update, based on the setting of unique_writer_identity in those methods.Until you grant this identity write-access to the destination, log entry exports from this sink will fail. For more information, see Granting access for a resource. Consult the destination service's documentation to determine the appropriate IAM roles to assign to the identity.
+    }</pre>
+</div>
+
+<div class="method">
+    <code class="details" id="delete">delete(sinkName=None, x__xgafv=None)</code>
+  <pre>Deletes a sink. If the sink has a unique writer_identity, then that service account is also deleted.
+
+Args:
+  sinkName: string, Required. The full resource name of the sink to delete, including the parent resource and the sink identifier:
+"projects/[PROJECT_ID]/sinks/[SINK_ID]"
+"organizations/[ORGANIZATION_ID]/sinks/[SINK_ID]"
+It is an error if the sink does not exist. Example: "projects/my-project-id/sinks/my-sink-id". It is an error if the sink does not exist. (required)
+  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(sinkName=None, x__xgafv=None)</code>
+  <pre>Gets a sink.
+
+Args:
+  sinkName: string, Required. The parent resource name of the sink:
+"projects/[PROJECT_ID]/sinks/[SINK_ID]"
+"organizations/[ORGANIZATION_ID]/sinks/[SINK_ID]"
+Example: "projects/my-project-id/sinks/my-sink-id". (required)
+  x__xgafv: string, V1 error format.
+    Allowed values
+      1 - v1 error format
+      2 - v2 error format
+
+Returns:
+  An object of the form:
+
+    { # Describes a sink used to export log entries to one of the following destinations in any project: a Cloud Storage bucket, a BigQuery dataset, or a Cloud Pub/Sub topic. A logs filter controls which log entries are exported. The sink must be created within a project or organization.
+      "endTime": "A String", # Optional. The time at which this sink will stop exporting log entries. Log entries are exported only if their timestamp is earlier than the end time. If this field is not supplied, there is no end time. If both a start time and an end time are provided, then the end time must be later than the start time.
+      "name": "A String", # Required. The client-assigned sink identifier, unique within the project. Example: "my-syslog-errors-to-pubsub". Sink identifiers are limited to 100 characters and can include only the following characters: upper and lower-case alphanumeric characters, underscores, hyphens, and periods.
+      "destination": "A String", # Required. The export destination:
+          # "storage.googleapis.com/[GCS_BUCKET]"
+          # "bigquery.googleapis.com/projects/[PROJECT_ID]/datasets/[DATASET]"
+          # "pubsub.googleapis.com/projects/[PROJECT_ID]/topics/[TOPIC_ID]"
+          # The sink's writer_identity, set when the sink is created, must have permission to write to the destination or else the log entries are not exported. For more information, see Exporting Logs With Sinks.
+      "filter": "A String", # Optional. An advanced logs filter. The only exported log entries are those that are in the resource owning the sink and that match the filter. The filter must use the log entry format specified by the output_version_format parameter. For example, in the v2 format:
+          # logName="projects/[PROJECT_ID]/logs/[LOG_ID]" AND severity>=ERROR
+      "startTime": "A String", # Optional. The time at which this sink will begin exporting log entries. Log entries are exported only if their timestamp is not earlier than the start time. The default value of this field is the time the sink is created or updated.
+      "outputVersionFormat": "A String", # Optional. The log entry format to use for this sink's exported log entries. The v2 format is used by default. The v1 format is deprecated and should be used only as part of a migration effort to v2. See Migration to the v2 API.
+      "writerIdentity": "A String", # Output only. An IAM identity&mdash;a service account or group&mdash;under which Stackdriver Logging writes the exported log entries to the sink's destination. This field is set by sinks.create and sinks.update, based on the setting of unique_writer_identity in those methods.Until you grant this identity write-access to the destination, log entry exports from this sink will fail. For more information, see Granting access for a resource. Consult the destination service's documentation to determine the appropriate IAM roles to assign to the identity.
+    }</pre>
+</div>
+
+<div class="method">
+    <code class="details" id="list">list(parent, pageToken=None, x__xgafv=None, pageSize=None)</code>
+  <pre>Lists sinks.
+
+Args:
+  parent: string, Required. The parent resource whose sinks are to be listed. Examples: "projects/my-logging-project", "organizations/123456789". (required)
+  pageToken: string, Optional. If present, then retrieve the next batch of results from the preceding call to this method. pageToken must be the value of nextPageToken from the previous response. The values of other method parameters should be identical to those in the previous call.
+  x__xgafv: string, V1 error format.
+    Allowed values
+      1 - v1 error format
+      2 - v2 error format
+  pageSize: integer, Optional. The maximum number of results to return from this request. Non-positive values are ignored. The presence of nextPageToken in the response indicates that more results might be available.
+
+Returns:
+  An object of the form:
+
+    { # Result returned from ListSinks.
+    "nextPageToken": "A String", # If there might be more results than appear in this response, then nextPageToken is included. To get the next set of results, call the same method again using the value of nextPageToken as pageToken.
+    "sinks": [ # A list of sinks.
+      { # Describes a sink used to export log entries to one of the following destinations in any project: a Cloud Storage bucket, a BigQuery dataset, or a Cloud Pub/Sub topic. A logs filter controls which log entries are exported. The sink must be created within a project or organization.
+          "endTime": "A String", # Optional. The time at which this sink will stop exporting log entries. Log entries are exported only if their timestamp is earlier than the end time. If this field is not supplied, there is no end time. If both a start time and an end time are provided, then the end time must be later than the start time.
+          "name": "A String", # Required. The client-assigned sink identifier, unique within the project. Example: "my-syslog-errors-to-pubsub". Sink identifiers are limited to 100 characters and can include only the following characters: upper and lower-case alphanumeric characters, underscores, hyphens, and periods.
+          "destination": "A String", # Required. The export destination:
+              # "storage.googleapis.com/[GCS_BUCKET]"
+              # "bigquery.googleapis.com/projects/[PROJECT_ID]/datasets/[DATASET]"
+              # "pubsub.googleapis.com/projects/[PROJECT_ID]/topics/[TOPIC_ID]"
+              # The sink's writer_identity, set when the sink is created, must have permission to write to the destination or else the log entries are not exported. For more information, see Exporting Logs With Sinks.
+          "filter": "A String", # Optional. An advanced logs filter. The only exported log entries are those that are in the resource owning the sink and that match the filter. The filter must use the log entry format specified by the output_version_format parameter. For example, in the v2 format:
+              # logName="projects/[PROJECT_ID]/logs/[LOG_ID]" AND severity>=ERROR
+          "startTime": "A String", # Optional. The time at which this sink will begin exporting log entries. Log entries are exported only if their timestamp is not earlier than the start time. The default value of this field is the time the sink is created or updated.
+          "outputVersionFormat": "A String", # Optional. The log entry format to use for this sink's exported log entries. The v2 format is used by default. The v1 format is deprecated and should be used only as part of a migration effort to v2. See Migration to the v2 API.
+          "writerIdentity": "A String", # Output only. An IAM identity&mdash;a service account or group&mdash;under which Stackdriver Logging writes the exported log entries to the sink's destination. This field is set by sinks.create and sinks.update, based on the setting of unique_writer_identity in those methods.Until you grant this identity write-access to the destination, log entry exports from this sink will fail. For more information, see Granting access for a resource. Consult the destination service's documentation to determine the appropriate IAM roles to assign to the identity.
+        },
+    ],
+  }</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="update">update(sinkName=None, body, uniqueWriterIdentity=None, x__xgafv=None)</code>
+  <pre>Updates a sink. If the named sink doesn't exist, then this method is identical to sinks.create. If the named sink does exist, then this method replaces the following fields in the existing sink with values from the new sink: destination, filter, output_version_format, start_time, and end_time. The updated filter might also have a new writer_identity; see the unique_writer_identity field.
+
+Args:
+  sinkName: string, Required. The full resource name of the sink to update, including the parent resource and the sink identifier:
+"projects/[PROJECT_ID]/sinks/[SINK_ID]"
+"organizations/[ORGANIZATION_ID]/sinks/[SINK_ID]"
+Example: "projects/my-project-id/sinks/my-sink-id". (required)
+  body: object, The request body. (required)
+    The object takes the form of:
+
+{ # Describes a sink used to export log entries to one of the following destinations in any project: a Cloud Storage bucket, a BigQuery dataset, or a Cloud Pub/Sub topic. A logs filter controls which log entries are exported. The sink must be created within a project or organization.
+    "endTime": "A String", # Optional. The time at which this sink will stop exporting log entries. Log entries are exported only if their timestamp is earlier than the end time. If this field is not supplied, there is no end time. If both a start time and an end time are provided, then the end time must be later than the start time.
+    "name": "A String", # Required. The client-assigned sink identifier, unique within the project. Example: "my-syslog-errors-to-pubsub". Sink identifiers are limited to 100 characters and can include only the following characters: upper and lower-case alphanumeric characters, underscores, hyphens, and periods.
+    "destination": "A String", # Required. The export destination:
+        # "storage.googleapis.com/[GCS_BUCKET]"
+        # "bigquery.googleapis.com/projects/[PROJECT_ID]/datasets/[DATASET]"
+        # "pubsub.googleapis.com/projects/[PROJECT_ID]/topics/[TOPIC_ID]"
+        # The sink's writer_identity, set when the sink is created, must have permission to write to the destination or else the log entries are not exported. For more information, see Exporting Logs With Sinks.
+    "filter": "A String", # Optional. An advanced logs filter. The only exported log entries are those that are in the resource owning the sink and that match the filter. The filter must use the log entry format specified by the output_version_format parameter. For example, in the v2 format:
+        # logName="projects/[PROJECT_ID]/logs/[LOG_ID]" AND severity>=ERROR
+    "startTime": "A String", # Optional. The time at which this sink will begin exporting log entries. Log entries are exported only if their timestamp is not earlier than the start time. The default value of this field is the time the sink is created or updated.
+    "outputVersionFormat": "A String", # Optional. The log entry format to use for this sink's exported log entries. The v2 format is used by default. The v1 format is deprecated and should be used only as part of a migration effort to v2. See Migration to the v2 API.
+    "writerIdentity": "A String", # Output only. An IAM identity&mdash;a service account or group&mdash;under which Stackdriver Logging writes the exported log entries to the sink's destination. This field is set by sinks.create and sinks.update, based on the setting of unique_writer_identity in those methods.Until you grant this identity write-access to the destination, log entry exports from this sink will fail. For more information, see Granting access for a resource. Consult the destination service's documentation to determine the appropriate IAM roles to assign to the identity.
+  }
+
+  uniqueWriterIdentity: boolean, Optional. See sinks.create for a description of this field. When updating a sink, the effect of this field on the value of writer_identity in the updated sink depends on both the old and new values of this field:
+If the old and new values of this field are both false or both true, then there is no change to the sink's writer_identity.
+If the old value was false and the new value is true, then writer_identity is changed to a unique service account.
+It is an error if the old value was true and the new value is false.
+  x__xgafv: string, V1 error format.
+    Allowed values
+      1 - v1 error format
+      2 - v2 error format
+
+Returns:
+  An object of the form:
+
+    { # Describes a sink used to export log entries to one of the following destinations in any project: a Cloud Storage bucket, a BigQuery dataset, or a Cloud Pub/Sub topic. A logs filter controls which log entries are exported. The sink must be created within a project or organization.
+      "endTime": "A String", # Optional. The time at which this sink will stop exporting log entries. Log entries are exported only if their timestamp is earlier than the end time. If this field is not supplied, there is no end time. If both a start time and an end time are provided, then the end time must be later than the start time.
+      "name": "A String", # Required. The client-assigned sink identifier, unique within the project. Example: "my-syslog-errors-to-pubsub". Sink identifiers are limited to 100 characters and can include only the following characters: upper and lower-case alphanumeric characters, underscores, hyphens, and periods.
+      "destination": "A String", # Required. The export destination:
+          # "storage.googleapis.com/[GCS_BUCKET]"
+          # "bigquery.googleapis.com/projects/[PROJECT_ID]/datasets/[DATASET]"
+          # "pubsub.googleapis.com/projects/[PROJECT_ID]/topics/[TOPIC_ID]"
+          # The sink's writer_identity, set when the sink is created, must have permission to write to the destination or else the log entries are not exported. For more information, see Exporting Logs With Sinks.
+      "filter": "A String", # Optional. An advanced logs filter. The only exported log entries are those that are in the resource owning the sink and that match the filter. The filter must use the log entry format specified by the output_version_format parameter. For example, in the v2 format:
+          # logName="projects/[PROJECT_ID]/logs/[LOG_ID]" AND severity>=ERROR
+      "startTime": "A String", # Optional. The time at which this sink will begin exporting log entries. Log entries are exported only if their timestamp is not earlier than the start time. The default value of this field is the time the sink is created or updated.
+      "outputVersionFormat": "A String", # Optional. The log entry format to use for this sink's exported log entries. The v2 format is used by default. The v1 format is deprecated and should be used only as part of a migration effort to v2. See Migration to the v2 API.
+      "writerIdentity": "A String", # Output only. An IAM identity&mdash;a service account or group&mdash;under which Stackdriver Logging writes the exported log entries to the sink's destination. This field is set by sinks.create and sinks.update, based on the setting of unique_writer_identity in those methods.Until you grant this identity write-access to the destination, log entry exports from this sink will fail. For more information, see Granting access for a resource. Consult the destination service's documentation to determine the appropriate IAM roles to assign to the identity.
+    }</pre>
+</div>
+
+</body></html>
\ No newline at end of file
diff --git a/docs/dyn/logging_v2.entries.html b/docs/dyn/logging_v2.entries.html
index 923dbaf..d901a2c 100644
--- a/docs/dyn/logging_v2.entries.html
+++ b/docs/dyn/logging_v2.entries.html
@@ -76,48 +76,31 @@
 <h2>Instance Methods</h2>
 <p class="toc_element">
   <code><a href="#list">list(body, x__xgafv=None)</a></code></p>
-<p class="firstline">Lists log entries.  Use this method to retrieve log entries from Cloud</p>
+<p class="firstline">Lists log entries. Use this method to retrieve log entries from Stackdriver Logging. For ways to export log entries, see Exporting Logs.</p>
 <p class="toc_element">
   <code><a href="#write">write(body, x__xgafv=None)</a></code></p>
-<p class="firstline">Writes log entries to Stackdriver Logging.  All log entries are</p>
+<p class="firstline">Writes log entries to Stackdriver Logging. All log entries are written by this method.</p>
 <h3>Method Details</h3>
 <div class="method">
     <code class="details" id="list">list(body, x__xgafv=None)</code>
-  <pre>Lists log entries.  Use this method to retrieve log entries from Cloud
-Logging.  For ways to export log entries, see
-[Exporting Logs](/logging/docs/export).
+  <pre>Lists log entries. Use this method to retrieve log entries from Stackdriver Logging. For ways to export log entries, see Exporting Logs.
 
 Args:
   body: object, The request body. (required)
     The object takes the form of:
 
-{ # The parameters to `ListLogEntries`.
-    "orderBy": "A String", # Optional. How the results should be sorted.  Presently, the only permitted
-        # values are `"timestamp asc"` (default) and `"timestamp desc"`. The first
-        # option returns entries in order of increasing values of
-        # `LogEntry.timestamp` (oldest first), and the second option returns entries
-        # in order of decreasing timestamps (newest first).  Entries with equal
-        # timestamps are returned in order of `LogEntry.insertId`.
-    "resourceNames": [ # Required. One or more cloud resources from which to retrieve log entries.
-        # Example: `"projects/my-project-1A"`, `"projects/1234567890"`.  Projects
-        # listed in `projectIds` are added to this list.
+{ # The parameters to ListLogEntries.
+    "orderBy": "A String", # Optional. How the results should be sorted. Presently, the only permitted values are "timestamp asc" (default) and "timestamp desc". The first option returns entries in order of increasing values of LogEntry.timestamp (oldest first), and the second option returns entries in order of decreasing timestamps (newest first). Entries with equal timestamps are returned in order of LogEntry.insertId.
+    "resourceNames": [ # Required. Names of one or more resources from which to retrieve log entries:
+        # "projects/[PROJECT_ID]"
+        # "organizations/[ORGANIZATION_ID]"
+        # Projects listed in the project_ids field are added to this list.
       "A String",
     ],
-    "pageSize": 42, # Optional. The maximum number of results to return from this request.
-        # Non-positive values are ignored.  The presence of `nextPageToken` in the
-        # response indicates that more results might be available.
-    "filter": "A String", # Optional. A filter that chooses which log entries to return.  See [Advanced
-        # Logs Filters](/logging/docs/view/advanced_filters).  Only log entries that
-        # match the filter are returned.  An empty filter matches all log entries.
-    "pageToken": "A String", # Optional. If present, then retrieve the next batch of results from the
-        # preceding call to this method.  `pageToken` must be the value of
-        # `nextPageToken` from the previous response.  The values of other method
-        # parameters should be identical to those in the previous call.
-    "projectIds": [ # Deprecated. One or more project identifiers or project numbers from which
-        # to retrieve log entries.  Examples: `"my-project-1A"`, `"1234567890"`. If
-        # present, these project identifiers are converted to resource format and
-        # added to the list of resources in `resourceNames`. Callers should use
-        # `resourceNames` rather than this parameter.
+    "pageSize": 42, # Optional. The maximum number of results to return from this request. Non-positive values are ignored. The presence of nextPageToken in the response indicates that more results might be available.
+    "filter": "A String", # Optional. A filter that chooses which log entries to return. See Advanced Logs Filters. Only log entries that match the filter are returned. An empty filter matches all log entries in the resources listed in resource_names. Referencing a parent resource that is not listed in resource_names will cause the filter to return no results. The maximum length of the filter is 20000 characters.
+    "pageToken": "A String", # Optional. If present, then retrieve the next batch of results from the preceding call to this method. pageToken must be the value of nextPageToken from the previous response. The values of other method parameters should be identical to those in the previous call.
+    "projectIds": [ # Deprecated. Use resource_names instead. One or more project identifiers or project numbers from which to retrieve log entries. Example: "my-project-1A". If present, these project identifiers are converted to resource name format and added to the list of resources in resource_names.
       "A String",
     ],
   }
@@ -130,115 +113,64 @@
 Returns:
   An object of the form:
 
-    { # Result returned from `ListLogEntries`.
-    "nextPageToken": "A String", # If there might be more results than appear in this response, then
-        # `nextPageToken` is included.  To get the next set of results, call this
-        # method again using the value of `nextPageToken` as `pageToken`.
+    { # Result returned from ListLogEntries.
+    "nextPageToken": "A String", # If there might be more results than those appearing in this response, then nextPageToken is included. To get the next set of results, call this method again using the value of nextPageToken as pageToken.If a value for next_page_token appears and the entries field is empty, it means that the search found no log entries so far but it did not have time to search all the possible log entries. Retry the method with this value for page_token to continue the search. Alternatively, consider speeding up the search by changing your filter to specify a single log name or resource type, or to narrow the time range of the search.
     "entries": [ # A list of log entries.
       { # An individual entry in a log.
-        "httpRequest": { # A common proto for logging HTTP requests. Only contains semantics # Optional. Information about the HTTP request associated with this
-            # log entry, if applicable.
-            # defined by the HTTP specification. Product-specific logging
-            # information MUST be defined in a separate message.
-          "status": 42, # The response code indicating the status of response.
-              # Examples: 200, 404.
-          "cacheValidatedWithOriginServer": True or False, # Whether or not the response was validated with the origin server before
-              # being served from cache. This field is only meaningful if `cache_hit` is
-              # True.
-          "requestMethod": "A String", # The request method. Examples: `"GET"`, `"HEAD"`, `"PUT"`, `"POST"`.
-          "latency": "A String", # The request processing latency on the server, from the time the request was
-              # received until the response was sent.
-          "cacheFillBytes": "A String", # The number of HTTP response bytes inserted into cache. Set only when a
-              # cache fill was attempted.
-          "requestUrl": "A String", # The scheme (http, https), the host name, the path and the query
-              # portion of the URL that was requested.
-              # Example: `"http://example.com/some/info?color=red"`.
-          "serverIp": "A String", # The IP address (IPv4 or IPv6) of the origin server that the request was
-              # sent to.
+        "httpRequest": { # A common proto for logging HTTP requests. Only contains semantics defined by the HTTP specification. Product-specific logging information MUST be defined in a separate message. # Optional. Information about the HTTP request associated with this log entry, if applicable.
+          "status": 42, # The response code indicating the status of response. Examples: 200, 404.
+          "cacheValidatedWithOriginServer": True or False, # Whether or not the response was validated with the origin server before being served from cache. This field is only meaningful if cache_hit is True.
+          "requestMethod": "A String", # The request method. Examples: "GET", "HEAD", "PUT", "POST".
+          "latency": "A String", # The request processing latency on the server, from the time the request was received until the response was sent.
+          "cacheFillBytes": "A String", # The number of HTTP response bytes inserted into cache. Set only when a cache fill was attempted.
+          "requestUrl": "A String", # The scheme (http, https), the host name, the path and the query portion of the URL that was requested. Example: "http://example.com/some/info?color=red".
+          "serverIp": "A String", # The IP address (IPv4 or IPv6) of the origin server that the request was sent to.
           "cacheLookup": True or False, # Whether or not a cache lookup was attempted.
-          "cacheHit": True or False, # Whether or not an entity was served from cache
-              # (with or without validation).
-          "referer": "A String", # The referer URL of the request, as defined in
-              # [HTTP/1.1 Header Field Definitions](http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html).
-          "remoteIp": "A String", # The IP address (IPv4 or IPv6) of the client that issued the HTTP
-              # request. Examples: `"192.168.1.1"`, `"FE80::0202:B3FF:FE1E:8329"`.
-          "userAgent": "A String", # The user agent sent by the client. Example:
-              # `"Mozilla/4.0 (compatible; MSIE 6.0; Windows 98; Q312461; .NET CLR 1.0.3705)"`.
-          "requestSize": "A String", # The size of the HTTP request message in bytes, including the request
-              # headers and the request body.
-          "responseSize": "A String", # The size of the HTTP response message sent back to the client, in bytes,
-              # including the response headers and the response body.
+          "cacheHit": True or False, # Whether or not an entity was served from cache (with or without validation).
+          "referer": "A String", # The referer URL of the request, as defined in HTTP/1.1 Header Field Definitions (http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html).
+          "remoteIp": "A String", # The IP address (IPv4 or IPv6) of the client that issued the HTTP request. Examples: "192.168.1.1", "FE80::0202:B3FF:FE1E:8329".
+          "userAgent": "A String", # The user agent sent by the client. Example: "Mozilla/4.0 (compatible; MSIE 6.0; Windows 98; Q312461; .NET CLR 1.0.3705)".
+          "requestSize": "A String", # The size of the HTTP request message in bytes, including the request headers and the request body.
+          "responseSize": "A String", # The size of the HTTP response message sent back to the client, in bytes, including the response headers and the response body.
         },
-        "resource": { # An object representing a resource that can be used for monitoring, logging, # Required. The monitored resource associated with this log entry.
-            # Example: a log entry that reports a database error would be
-            # associated with the monitored resource designating the particular
-            # database that reported the error.
-            # billing, or other purposes. Examples include virtual machine instances,
-            # databases, and storage devices such as disks. The `type` field identifies a
-            # MonitoredResourceDescriptor object that describes the resource's
-            # schema. Information in the `labels` field identifies the actual resource and
-            # its attributes according to the schema. For example, a particular Compute
-            # Engine VM instance could be represented by the following object, because the
-            # MonitoredResourceDescriptor for `"gce_instance"` has labels
-            # `"instance_id"` and `"zone"`:
-            #
-            #     { "type": "gce_instance",
-            #       "labels": { "instance_id": "12345678901234",
-            #                   "zone": "us-central1-a" }}
-          "labels": { # Required. Values for all of the labels listed in the associated monitored
-              # resource descriptor. For example, Cloud SQL databases use the labels
-              # `"database_id"` and `"zone"`.
+        "resource": { # An object representing a resource that can be used for monitoring, logging, billing, or other purposes. Examples include virtual machine instances, databases, and storage devices such as disks. The type field identifies a MonitoredResourceDescriptor object that describes the resource's schema. Information in the labels field identifies the actual resource and its attributes according to the schema. For example, a particular Compute Engine VM instance could be represented by the following object, because the MonitoredResourceDescriptor for "gce_instance" has labels "instance_id" and "zone": # Required. The monitored resource associated with this log entry. Example: a log entry that reports a database error would be associated with the monitored resource designating the particular database that reported the error.
+            # { "type": "gce_instance",
+            #   "labels": { "instance_id": "12345678901234",
+            #               "zone": "us-central1-a" }}
+          "labels": { # Required. Values for all of the labels listed in the associated monitored resource descriptor. For example, Cloud SQL databases use the labels "database_id" and "zone".
             "a_key": "A String",
           },
-          "type": "A String", # Required. The monitored resource type. This field must match
-              # the `type` field of a MonitoredResourceDescriptor object. For
-              # example, the type of a Cloud SQL database is `"cloudsql_database"`.
+          "type": "A String", # Required. The monitored resource type. This field must match the type field of a MonitoredResourceDescriptor object. For example, the type of a Cloud SQL database is "cloudsql_database".
         },
-        "severity": "A String", # Optional. The severity of the log entry. The default value is
-            # `LogSeverity.DEFAULT`.
         "textPayload": "A String", # The log entry payload, represented as a Unicode string (UTF-8).
-        "timestamp": "A String", # Optional. The time the event described by the log entry occurred.  If
-            # omitted, Stackdriver Logging will use the time the log entry is received.
-        "labels": { # Optional. A set of user-defined (key, value) data that provides additional
-            # information about the log entry.
+        "trace": "A String", # Optional. Resource name of the trace associated with the log entry, if any. If it contains a relative resource name, the name is assumed to be relative to //tracing.googleapis.com. Example: projects/my-projectid/traces/06796866738c859f2f19b7cfb3214824
+        "timestamp": "A String", # Optional. The time the event described by the log entry occurred. If omitted, Stackdriver Logging will use the time the log entry is received.
+        "labels": { # Optional. A set of user-defined (key, value) data that provides additional information about the log entry.
           "a_key": "A String",
         },
-        "insertId": "A String", # Optional. A unique ID for the log entry. If you provide this
-            # field, the logging service considers other log entries in the
-            # same project with the same ID as duplicates which can be removed.  If
-            # omitted, Stackdriver Logging will generate a unique ID for this
-            # log entry.
-        "jsonPayload": { # The log entry payload, represented as a structure that
-            # is expressed as a JSON object.
+        "insertId": "A String", # Optional. A unique ID for the log entry. If you provide this field, the logging service considers other log entries in the same project with the same ID as duplicates which can be removed. If omitted, Stackdriver Logging will generate a unique ID for this log entry.
+        "jsonPayload": { # The log entry payload, represented as a structure that is expressed as a JSON object.
           "a_key": "", # Properties of the object.
         },
-        "logName": "A String", # Required. The resource name of the log to which this log entry
-            # belongs. The format of the name is
-            # `"projects/<project-id>/logs/<log-id>"`.  Examples:
-            # `"projects/my-projectid/logs/syslog"`,
-            # `"projects/my-projectid/logs/library.googleapis.com%2Fbook_log"`.
-            #
-            # The log ID part of resource name must be less than 512 characters
-            # long and can only include the following characters: upper and
-            # lower case alphanumeric characters: [A-Za-z0-9]; and punctuation
-            # characters: forward-slash, underscore, hyphen, and period.
-            # Forward-slash (`/`) characters in the log ID must be URL-encoded.
-        "protoPayload": { # The log entry payload, represented as a protocol buffer.  Some
-            # Google Cloud Platform services use this field for their log
-            # entry payloads.
+        "logName": "A String", # Required. The resource name of the log to which this log entry belongs:
+            # "projects/[PROJECT_ID]/logs/[LOG_ID]"
+            # "organizations/[ORGANIZATION_ID]/logs/[LOG_ID]"
+            # [LOG_ID] must be URL-encoded within log_name. Example: "organizations/1234567890/logs/cloudresourcemanager.googleapis.com%2Factivity". [LOG_ID] must be less than 512 characters long and can only include the following characters: upper and lower case alphanumeric characters, forward-slash, underscore, hyphen, and period.For backward compatibility, if log_name begins with a forward-slash, such as /projects/..., then the log entry is ingested as usual but the forward-slash is removed. Listing the log entry will not show the leading slash and filtering for a log name with a leading slash will never return any results.
+        "protoPayload": { # The log entry payload, represented as a protocol buffer. Some Google Cloud Platform services use this field for their log entry payloads.
           "a_key": "", # Properties of the object. Contains field @type with type URL.
         },
-        "operation": { # Additional information about a potentially long-running operation with which # Optional. Information about an operation associated with the log entry, if
-            # applicable.
-            # a log entry is associated.
+        "operation": { # Additional information about a potentially long-running operation with which a log entry is associated. # Optional. Information about an operation associated with the log entry, if applicable.
           "last": True or False, # Optional. Set this to True if this is the last log entry in the operation.
-          "id": "A String", # Optional. An arbitrary operation identifier. Log entries with the
-              # same identifier are assumed to be part of the same operation.
-          "producer": "A String", # Optional. An arbitrary producer identifier. The combination of
-              # `id` and `producer` must be globally unique.  Examples for `producer`:
-              # `"MyDivision.MyBigCompany.com"`, `"github.com/MyProject/MyApplication"`.
+          "id": "A String", # Optional. An arbitrary operation identifier. Log entries with the same identifier are assumed to be part of the same operation.
+          "producer": "A String", # Optional. An arbitrary producer identifier. The combination of id and producer must be globally unique. Examples for producer: "MyDivision.MyBigCompany.com", "github.com/MyProject/MyApplication".
           "first": True or False, # Optional. Set this to True if this is the first log entry in the operation.
         },
+        "sourceLocation": { # Additional information about the source code location that produced the log entry. # Optional. Source code location information associated with the log entry, if any.
+          "function": "A String", # Optional. Human-readable name of the function or method being invoked, with optional context such as the class or package name. This information may be used in contexts such as the logs viewer, where a file and line number are less meaningful. The format can vary by language. For example: qual.if.ied.Class.method (Java), dir/package.func (Go), function (Python).
+          "line": "A String", # Optional. Line within the source file. 1-based; 0 indicates no line number available.
+          "file": "A String", # Optional. Source file name. Depending on the runtime environment, this might be a simple name or a fully-qualified name.
+        },
+        "severity": "A String", # Optional. The severity of the log entry. The default value is LogSeverity.DEFAULT.
       },
     ],
   }</pre>
@@ -246,171 +178,90 @@
 
 <div class="method">
     <code class="details" id="write">write(body, x__xgafv=None)</code>
-  <pre>Writes log entries to Stackdriver Logging.  All log entries are
-written by this method.
+  <pre>Writes log entries to Stackdriver Logging. All log entries are written by this method.
 
 Args:
   body: object, The request body. (required)
     The object takes the form of:
 
 { # The parameters to WriteLogEntries.
-    "resource": { # An object representing a resource that can be used for monitoring, logging, # Optional. A default monitored resource object that is assigned to all log
-        # entries in `entries` that do not specify a value for `resource`. Example:
-        # 
-        #     { "type": "gce_instance",
-        #       "labels": {
-        #         "zone": "us-central1-a", "instance_id": "00000000000000000000" }}
-        # 
+    "resource": { # An object representing a resource that can be used for monitoring, logging, billing, or other purposes. Examples include virtual machine instances, databases, and storage devices such as disks. The type field identifies a MonitoredResourceDescriptor object that describes the resource's schema. Information in the labels field identifies the actual resource and its attributes according to the schema. For example, a particular Compute Engine VM instance could be represented by the following object, because the MonitoredResourceDescriptor for "gce_instance" has labels "instance_id" and "zone": # Optional. A default monitored resource object that is assigned to all log entries in entries that do not specify a value for resource. Example:
+        # { "type": "gce_instance",
+        #   "labels": {
+        #     "zone": "us-central1-a", "instance_id": "00000000000000000000" }}
         # See LogEntry.
-        # billing, or other purposes. Examples include virtual machine instances,
-        # databases, and storage devices such as disks. The `type` field identifies a
-        # MonitoredResourceDescriptor object that describes the resource's
-        # schema. Information in the `labels` field identifies the actual resource and
-        # its attributes according to the schema. For example, a particular Compute
-        # Engine VM instance could be represented by the following object, because the
-        # MonitoredResourceDescriptor for `"gce_instance"` has labels
-        # `"instance_id"` and `"zone"`:
-        #
-        #     { "type": "gce_instance",
-        #       "labels": { "instance_id": "12345678901234",
-        #                   "zone": "us-central1-a" }}
-      "labels": { # Required. Values for all of the labels listed in the associated monitored
-          # resource descriptor. For example, Cloud SQL databases use the labels
-          # `"database_id"` and `"zone"`.
+        # { "type": "gce_instance",
+        #   "labels": { "instance_id": "12345678901234",
+        #               "zone": "us-central1-a" }}
+      "labels": { # Required. Values for all of the labels listed in the associated monitored resource descriptor. For example, Cloud SQL databases use the labels "database_id" and "zone".
         "a_key": "A String",
       },
-      "type": "A String", # Required. The monitored resource type. This field must match
-          # the `type` field of a MonitoredResourceDescriptor object. For
-          # example, the type of a Cloud SQL database is `"cloudsql_database"`.
+      "type": "A String", # Required. The monitored resource type. This field must match the type field of a MonitoredResourceDescriptor object. For example, the type of a Cloud SQL database is "cloudsql_database".
     },
-    "partialSuccess": True or False, # Optional. Whether valid entries should be written even if some other
-        # entries fail due to INVALID_ARGUMENT or PERMISSION_DENIED errors. If any
-        # entry is not written, the response status will be the error associated
-        # with one of the failed entries and include error details in the form of
-        # WriteLogEntriesPartialErrors.
-    "labels": { # Optional. Default labels that are added to the `labels` field of all log
-        # entries in `entries`. If a log entry already has a label with the same key
-        # as a label in this parameter, then the log entry's label is not changed.
-        # See LogEntry.
+    "partialSuccess": True or False, # Optional. Whether valid entries should be written even if some other entries fail due to INVALID_ARGUMENT or PERMISSION_DENIED errors. If any entry is not written, the response status will be the error associated with one of the failed entries and include error details in the form of WriteLogEntriesPartialErrors.
+    "labels": { # Optional. Default labels that are added to the labels field of all log entries in entries. If a log entry already has a label with the same key as a label in this parameter, then the log entry's label is not changed. See LogEntry.
       "a_key": "A String",
     },
-    "logName": "A String", # Optional. A default log resource name that is assigned to all log entries
-        # in `entries` that do not specify a value for `log_name`.  Example:
-        # `"projects/my-project/logs/syslog"`.  See
-        # LogEntry.
-    "entries": [ # Required. The log entries to write. Values supplied for the fields
-        # `log_name`, `resource`, and `labels` in this `entries.write` request are
-        # added to those log entries that do not provide their own values for the
-        # fields.
-        # 
-        # To improve throughput and to avoid exceeding the
-        # [quota limit](/logging/quota-policy) for calls to `entries.write`,
-        # you should write multiple log entries at once rather than
-        # calling this method for each individual log entry.
+    "logName": "A String", # Optional. A default log resource name that is assigned to all log entries in entries that do not specify a value for log_name:
+        # "projects/[PROJECT_ID]/logs/[LOG_ID]"
+        # "organizations/[ORGANIZATION_ID]/logs/[LOG_ID]"
+        # [LOG_ID] must be URL-encoded. For example, "projects/my-project-id/logs/syslog" or "organizations/1234567890/logs/cloudresourcemanager.googleapis.com%2Factivity". For more information about log names, see LogEntry.
+    "entries": [ # Required. The log entries to write. Values supplied for the fields log_name, resource, and labels in this entries.write request are added to those log entries that do not provide their own values for the fields.To improve throughput and to avoid exceeding the quota limit for calls to entries.write, you should write multiple log entries at once rather than calling this method for each individual log entry.
       { # An individual entry in a log.
-        "httpRequest": { # A common proto for logging HTTP requests. Only contains semantics # Optional. Information about the HTTP request associated with this
-            # log entry, if applicable.
-            # defined by the HTTP specification. Product-specific logging
-            # information MUST be defined in a separate message.
-          "status": 42, # The response code indicating the status of response.
-              # Examples: 200, 404.
-          "cacheValidatedWithOriginServer": True or False, # Whether or not the response was validated with the origin server before
-              # being served from cache. This field is only meaningful if `cache_hit` is
-              # True.
-          "requestMethod": "A String", # The request method. Examples: `"GET"`, `"HEAD"`, `"PUT"`, `"POST"`.
-          "latency": "A String", # The request processing latency on the server, from the time the request was
-              # received until the response was sent.
-          "cacheFillBytes": "A String", # The number of HTTP response bytes inserted into cache. Set only when a
-              # cache fill was attempted.
-          "requestUrl": "A String", # The scheme (http, https), the host name, the path and the query
-              # portion of the URL that was requested.
-              # Example: `"http://example.com/some/info?color=red"`.
-          "serverIp": "A String", # The IP address (IPv4 or IPv6) of the origin server that the request was
-              # sent to.
+        "httpRequest": { # A common proto for logging HTTP requests. Only contains semantics defined by the HTTP specification. Product-specific logging information MUST be defined in a separate message. # Optional. Information about the HTTP request associated with this log entry, if applicable.
+          "status": 42, # The response code indicating the status of response. Examples: 200, 404.
+          "cacheValidatedWithOriginServer": True or False, # Whether or not the response was validated with the origin server before being served from cache. This field is only meaningful if cache_hit is True.
+          "requestMethod": "A String", # The request method. Examples: "GET", "HEAD", "PUT", "POST".
+          "latency": "A String", # The request processing latency on the server, from the time the request was received until the response was sent.
+          "cacheFillBytes": "A String", # The number of HTTP response bytes inserted into cache. Set only when a cache fill was attempted.
+          "requestUrl": "A String", # The scheme (http, https), the host name, the path and the query portion of the URL that was requested. Example: "http://example.com/some/info?color=red".
+          "serverIp": "A String", # The IP address (IPv4 or IPv6) of the origin server that the request was sent to.
           "cacheLookup": True or False, # Whether or not a cache lookup was attempted.
-          "cacheHit": True or False, # Whether or not an entity was served from cache
-              # (with or without validation).
-          "referer": "A String", # The referer URL of the request, as defined in
-              # [HTTP/1.1 Header Field Definitions](http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html).
-          "remoteIp": "A String", # The IP address (IPv4 or IPv6) of the client that issued the HTTP
-              # request. Examples: `"192.168.1.1"`, `"FE80::0202:B3FF:FE1E:8329"`.
-          "userAgent": "A String", # The user agent sent by the client. Example:
-              # `"Mozilla/4.0 (compatible; MSIE 6.0; Windows 98; Q312461; .NET CLR 1.0.3705)"`.
-          "requestSize": "A String", # The size of the HTTP request message in bytes, including the request
-              # headers and the request body.
-          "responseSize": "A String", # The size of the HTTP response message sent back to the client, in bytes,
-              # including the response headers and the response body.
+          "cacheHit": True or False, # Whether or not an entity was served from cache (with or without validation).
+          "referer": "A String", # The referer URL of the request, as defined in HTTP/1.1 Header Field Definitions (http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html).
+          "remoteIp": "A String", # The IP address (IPv4 or IPv6) of the client that issued the HTTP request. Examples: "192.168.1.1", "FE80::0202:B3FF:FE1E:8329".
+          "userAgent": "A String", # The user agent sent by the client. Example: "Mozilla/4.0 (compatible; MSIE 6.0; Windows 98; Q312461; .NET CLR 1.0.3705)".
+          "requestSize": "A String", # The size of the HTTP request message in bytes, including the request headers and the request body.
+          "responseSize": "A String", # The size of the HTTP response message sent back to the client, in bytes, including the response headers and the response body.
         },
-        "resource": { # An object representing a resource that can be used for monitoring, logging, # Required. The monitored resource associated with this log entry.
-            # Example: a log entry that reports a database error would be
-            # associated with the monitored resource designating the particular
-            # database that reported the error.
-            # billing, or other purposes. Examples include virtual machine instances,
-            # databases, and storage devices such as disks. The `type` field identifies a
-            # MonitoredResourceDescriptor object that describes the resource's
-            # schema. Information in the `labels` field identifies the actual resource and
-            # its attributes according to the schema. For example, a particular Compute
-            # Engine VM instance could be represented by the following object, because the
-            # MonitoredResourceDescriptor for `"gce_instance"` has labels
-            # `"instance_id"` and `"zone"`:
-            #
-            #     { "type": "gce_instance",
-            #       "labels": { "instance_id": "12345678901234",
-            #                   "zone": "us-central1-a" }}
-          "labels": { # Required. Values for all of the labels listed in the associated monitored
-              # resource descriptor. For example, Cloud SQL databases use the labels
-              # `"database_id"` and `"zone"`.
+        "resource": { # An object representing a resource that can be used for monitoring, logging, billing, or other purposes. Examples include virtual machine instances, databases, and storage devices such as disks. The type field identifies a MonitoredResourceDescriptor object that describes the resource's schema. Information in the labels field identifies the actual resource and its attributes according to the schema. For example, a particular Compute Engine VM instance could be represented by the following object, because the MonitoredResourceDescriptor for "gce_instance" has labels "instance_id" and "zone": # Required. The monitored resource associated with this log entry. Example: a log entry that reports a database error would be associated with the monitored resource designating the particular database that reported the error.
+            # { "type": "gce_instance",
+            #   "labels": { "instance_id": "12345678901234",
+            #               "zone": "us-central1-a" }}
+          "labels": { # Required. Values for all of the labels listed in the associated monitored resource descriptor. For example, Cloud SQL databases use the labels "database_id" and "zone".
             "a_key": "A String",
           },
-          "type": "A String", # Required. The monitored resource type. This field must match
-              # the `type` field of a MonitoredResourceDescriptor object. For
-              # example, the type of a Cloud SQL database is `"cloudsql_database"`.
+          "type": "A String", # Required. The monitored resource type. This field must match the type field of a MonitoredResourceDescriptor object. For example, the type of a Cloud SQL database is "cloudsql_database".
         },
-        "severity": "A String", # Optional. The severity of the log entry. The default value is
-            # `LogSeverity.DEFAULT`.
         "textPayload": "A String", # The log entry payload, represented as a Unicode string (UTF-8).
-        "timestamp": "A String", # Optional. The time the event described by the log entry occurred.  If
-            # omitted, Stackdriver Logging will use the time the log entry is received.
-        "labels": { # Optional. A set of user-defined (key, value) data that provides additional
-            # information about the log entry.
+        "trace": "A String", # Optional. Resource name of the trace associated with the log entry, if any. If it contains a relative resource name, the name is assumed to be relative to //tracing.googleapis.com. Example: projects/my-projectid/traces/06796866738c859f2f19b7cfb3214824
+        "timestamp": "A String", # Optional. The time the event described by the log entry occurred. If omitted, Stackdriver Logging will use the time the log entry is received.
+        "labels": { # Optional. A set of user-defined (key, value) data that provides additional information about the log entry.
           "a_key": "A String",
         },
-        "insertId": "A String", # Optional. A unique ID for the log entry. If you provide this
-            # field, the logging service considers other log entries in the
-            # same project with the same ID as duplicates which can be removed.  If
-            # omitted, Stackdriver Logging will generate a unique ID for this
-            # log entry.
-        "jsonPayload": { # The log entry payload, represented as a structure that
-            # is expressed as a JSON object.
+        "insertId": "A String", # Optional. A unique ID for the log entry. If you provide this field, the logging service considers other log entries in the same project with the same ID as duplicates which can be removed. If omitted, Stackdriver Logging will generate a unique ID for this log entry.
+        "jsonPayload": { # The log entry payload, represented as a structure that is expressed as a JSON object.
           "a_key": "", # Properties of the object.
         },
-        "logName": "A String", # Required. The resource name of the log to which this log entry
-            # belongs. The format of the name is
-            # `"projects/<project-id>/logs/<log-id>"`.  Examples:
-            # `"projects/my-projectid/logs/syslog"`,
-            # `"projects/my-projectid/logs/library.googleapis.com%2Fbook_log"`.
-            #
-            # The log ID part of resource name must be less than 512 characters
-            # long and can only include the following characters: upper and
-            # lower case alphanumeric characters: [A-Za-z0-9]; and punctuation
-            # characters: forward-slash, underscore, hyphen, and period.
-            # Forward-slash (`/`) characters in the log ID must be URL-encoded.
-        "protoPayload": { # The log entry payload, represented as a protocol buffer.  Some
-            # Google Cloud Platform services use this field for their log
-            # entry payloads.
+        "logName": "A String", # Required. The resource name of the log to which this log entry belongs:
+            # "projects/[PROJECT_ID]/logs/[LOG_ID]"
+            # "organizations/[ORGANIZATION_ID]/logs/[LOG_ID]"
+            # [LOG_ID] must be URL-encoded within log_name. Example: "organizations/1234567890/logs/cloudresourcemanager.googleapis.com%2Factivity". [LOG_ID] must be less than 512 characters long and can only include the following characters: upper and lower case alphanumeric characters, forward-slash, underscore, hyphen, and period.For backward compatibility, if log_name begins with a forward-slash, such as /projects/..., then the log entry is ingested as usual but the forward-slash is removed. Listing the log entry will not show the leading slash and filtering for a log name with a leading slash will never return any results.
+        "protoPayload": { # The log entry payload, represented as a protocol buffer. Some Google Cloud Platform services use this field for their log entry payloads.
           "a_key": "", # Properties of the object. Contains field @type with type URL.
         },
-        "operation": { # Additional information about a potentially long-running operation with which # Optional. Information about an operation associated with the log entry, if
-            # applicable.
-            # a log entry is associated.
+        "operation": { # Additional information about a potentially long-running operation with which a log entry is associated. # Optional. Information about an operation associated with the log entry, if applicable.
           "last": True or False, # Optional. Set this to True if this is the last log entry in the operation.
-          "id": "A String", # Optional. An arbitrary operation identifier. Log entries with the
-              # same identifier are assumed to be part of the same operation.
-          "producer": "A String", # Optional. An arbitrary producer identifier. The combination of
-              # `id` and `producer` must be globally unique.  Examples for `producer`:
-              # `"MyDivision.MyBigCompany.com"`, `"github.com/MyProject/MyApplication"`.
+          "id": "A String", # Optional. An arbitrary operation identifier. Log entries with the same identifier are assumed to be part of the same operation.
+          "producer": "A String", # Optional. An arbitrary producer identifier. The combination of id and producer must be globally unique. Examples for producer: "MyDivision.MyBigCompany.com", "github.com/MyProject/MyApplication".
           "first": True or False, # Optional. Set this to True if this is the first log entry in the operation.
         },
+        "sourceLocation": { # Additional information about the source code location that produced the log entry. # Optional. Source code location information associated with the log entry, if any.
+          "function": "A String", # Optional. Human-readable name of the function or method being invoked, with optional context such as the class or package name. This information may be used in contexts such as the logs viewer, where a file and line number are less meaningful. The format can vary by language. For example: qual.if.ied.Class.method (Java), dir/package.func (Go), function (Python).
+          "line": "A String", # Optional. Line within the source file. 1-based; 0 indicates no line number available.
+          "file": "A String", # Optional. Source file name. Depending on the runtime environment, this might be a simple name or a fully-qualified name.
+        },
+        "severity": "A String", # Optional. The severity of the log entry. The default value is LogSeverity.DEFAULT.
       },
     ],
   }
@@ -423,8 +274,7 @@
 Returns:
   An object of the form:
 
-    { # Result returned from WriteLogEntries.
-      # empty
+    { # Result returned from WriteLogEntries. empty
   }</pre>
 </div>
 
diff --git a/docs/dyn/logging_v2.folders.html b/docs/dyn/logging_v2.folders.html
new file mode 100644
index 0000000..d4725d4
--- /dev/null
+++ b/docs/dyn/logging_v2.folders.html
@@ -0,0 +1,87 @@
+<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="logging_v2.html">Stackdriver Logging API</a> . <a href="logging_v2.folders.html">folders</a></h1>
+<h2>Instance Methods</h2>
+<p class="toc_element">
+  <code><a href="logging_v2.folders.logs.html">logs()</a></code>
+</p>
+<p class="firstline">Returns the logs Resource.</p>
+
+<p class="toc_element">
+  <code><a href="logging_v2.folders.sinks.html">sinks()</a></code>
+</p>
+<p class="firstline">Returns the sinks Resource.</p>
+
+</body></html>
\ No newline at end of file
diff --git a/docs/dyn/logging_v2.folders.logs.html b/docs/dyn/logging_v2.folders.logs.html
new file mode 100644
index 0000000..c2d6b2c
--- /dev/null
+++ b/docs/dyn/logging_v2.folders.logs.html
@@ -0,0 +1,153 @@
+<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="logging_v2.html">Stackdriver Logging API</a> . <a href="logging_v2.folders.html">folders</a> . <a href="logging_v2.folders.logs.html">logs</a></h1>
+<h2>Instance Methods</h2>
+<p class="toc_element">
+  <code><a href="#delete">delete(logName=None, x__xgafv=None)</a></code></p>
+<p class="firstline">Deletes all the log entries in a log. The log reappears if it receives new entries.</p>
+<p class="toc_element">
+  <code><a href="#list">list(parent=None, pageToken=None, x__xgafv=None, pageSize=None)</a></code></p>
+<p class="firstline">Lists the logs in projects or organizations. Only logs that have entries are listed.</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>
+<h3>Method Details</h3>
+<div class="method">
+    <code class="details" id="delete">delete(logName=None, x__xgafv=None)</code>
+  <pre>Deletes all the log entries in a log. The log reappears if it receives new entries.
+
+Args:
+  logName: string, Required. The resource name of the log to delete:
+"projects/[PROJECT_ID]/logs/[LOG_ID]"
+"organizations/[ORGANIZATION_ID]/logs/[LOG_ID]"
+[LOG_ID] must be URL-encoded. For example, "projects/my-project-id/logs/syslog", "organizations/1234567890/logs/cloudresourcemanager.googleapis.com%2Factivity". For more information about log names, see LogEntry. (required)
+  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="list">list(parent=None, pageToken=None, x__xgafv=None, pageSize=None)</code>
+  <pre>Lists the logs in projects or organizations. Only logs that have entries are listed.
+
+Args:
+  parent: string, Required. The resource name that owns the logs:
+"projects/[PROJECT_ID]"
+"organizations/[ORGANIZATION_ID]"
+ (required)
+  pageToken: string, Optional. If present, then retrieve the next batch of results from the preceding call to this method. pageToken must be the value of nextPageToken from the previous response. The values of other method parameters should be identical to those in the previous call.
+  x__xgafv: string, V1 error format.
+    Allowed values
+      1 - v1 error format
+      2 - v2 error format
+  pageSize: integer, Optional. The maximum number of results to return from this request. Non-positive values are ignored. The presence of nextPageToken in the response indicates that more results might be available.
+
+Returns:
+  An object of the form:
+
+    { # Result returned from ListLogs.
+    "nextPageToken": "A String", # If there might be more results than those appearing in this response, then nextPageToken is included. To get the next set of results, call this method again using the value of nextPageToken as pageToken.
+    "logNames": [ # A list of log names. For example, "projects/my-project/syslog" or "organizations/123/cloudresourcemanager.googleapis.com%2Factivity".
+      "A String",
+    ],
+  }</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>
+
+</body></html>
\ No newline at end of file
diff --git a/docs/dyn/logging_v2.folders.sinks.html b/docs/dyn/logging_v2.folders.sinks.html
new file mode 100644
index 0000000..5fe02f0
--- /dev/null
+++ b/docs/dyn/logging_v2.folders.sinks.html
@@ -0,0 +1,312 @@
+<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="logging_v2.html">Stackdriver Logging API</a> . <a href="logging_v2.folders.html">folders</a> . <a href="logging_v2.folders.sinks.html">sinks</a></h1>
+<h2>Instance Methods</h2>
+<p class="toc_element">
+  <code><a href="#create">create(parent=None, body, uniqueWriterIdentity=None, x__xgafv=None)</a></code></p>
+<p class="firstline">Creates a sink that exports specified log entries to a destination. The export of newly-ingested log entries begins immediately, unless the current time is outside the sink's start and end times or the sink's writer_identity is not permitted to write to the destination. A sink can export log entries only from the resource owning the sink.</p>
+<p class="toc_element">
+  <code><a href="#delete">delete(sinkName=None, x__xgafv=None)</a></code></p>
+<p class="firstline">Deletes a sink. If the sink has a unique writer_identity, then that service account is also deleted.</p>
+<p class="toc_element">
+  <code><a href="#get">get(sinkName=None, x__xgafv=None)</a></code></p>
+<p class="firstline">Gets a sink.</p>
+<p class="toc_element">
+  <code><a href="#list">list(parent, pageToken=None, x__xgafv=None, pageSize=None)</a></code></p>
+<p class="firstline">Lists sinks.</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="#update">update(sinkName=None, body, uniqueWriterIdentity=None, x__xgafv=None)</a></code></p>
+<p class="firstline">Updates a sink. If the named sink doesn't exist, then this method is identical to sinks.create. If the named sink does exist, then this method replaces the following fields in the existing sink with values from the new sink: destination, filter, output_version_format, start_time, and end_time. The updated filter might also have a new writer_identity; see the unique_writer_identity field.</p>
+<h3>Method Details</h3>
+<div class="method">
+    <code class="details" id="create">create(parent=None, body, uniqueWriterIdentity=None, x__xgafv=None)</code>
+  <pre>Creates a sink that exports specified log entries to a destination. The export of newly-ingested log entries begins immediately, unless the current time is outside the sink's start and end times or the sink's writer_identity is not permitted to write to the destination. A sink can export log entries only from the resource owning the sink.
+
+Args:
+  parent: string, Required. The resource in which to create the sink:
+"projects/[PROJECT_ID]"
+"organizations/[ORGANIZATION_ID]"
+Examples: "projects/my-logging-project", "organizations/123456789". (required)
+  body: object, The request body. (required)
+    The object takes the form of:
+
+{ # Describes a sink used to export log entries to one of the following destinations in any project: a Cloud Storage bucket, a BigQuery dataset, or a Cloud Pub/Sub topic. A logs filter controls which log entries are exported. The sink must be created within a project or organization.
+    "endTime": "A String", # Optional. The time at which this sink will stop exporting log entries. Log entries are exported only if their timestamp is earlier than the end time. If this field is not supplied, there is no end time. If both a start time and an end time are provided, then the end time must be later than the start time.
+    "name": "A String", # Required. The client-assigned sink identifier, unique within the project. Example: "my-syslog-errors-to-pubsub". Sink identifiers are limited to 100 characters and can include only the following characters: upper and lower-case alphanumeric characters, underscores, hyphens, and periods.
+    "destination": "A String", # Required. The export destination:
+        # "storage.googleapis.com/[GCS_BUCKET]"
+        # "bigquery.googleapis.com/projects/[PROJECT_ID]/datasets/[DATASET]"
+        # "pubsub.googleapis.com/projects/[PROJECT_ID]/topics/[TOPIC_ID]"
+        # The sink's writer_identity, set when the sink is created, must have permission to write to the destination or else the log entries are not exported. For more information, see Exporting Logs With Sinks.
+    "filter": "A String", # Optional. An advanced logs filter. The only exported log entries are those that are in the resource owning the sink and that match the filter. The filter must use the log entry format specified by the output_version_format parameter. For example, in the v2 format:
+        # logName="projects/[PROJECT_ID]/logs/[LOG_ID]" AND severity>=ERROR
+    "startTime": "A String", # Optional. The time at which this sink will begin exporting log entries. Log entries are exported only if their timestamp is not earlier than the start time. The default value of this field is the time the sink is created or updated.
+    "outputVersionFormat": "A String", # Optional. The log entry format to use for this sink's exported log entries. The v2 format is used by default. The v1 format is deprecated and should be used only as part of a migration effort to v2. See Migration to the v2 API.
+    "writerIdentity": "A String", # Output only. An IAM identity&mdash;a service account or group&mdash;under which Stackdriver Logging writes the exported log entries to the sink's destination. This field is set by sinks.create and sinks.update, based on the setting of unique_writer_identity in those methods.Until you grant this identity write-access to the destination, log entry exports from this sink will fail. For more information, see Granting access for a resource. Consult the destination service's documentation to determine the appropriate IAM roles to assign to the identity.
+  }
+
+  uniqueWriterIdentity: boolean, Optional. Determines the kind of IAM identity returned as writer_identity in the new sink. If this value is omitted or set to false, and if the sink's parent is a project, then the value returned as writer_identity is cloud-logs@google.com, the same identity used before the addition of writer identities to this API. The sink's destination must be in the same project as the sink itself.If this field is set to true, or if the sink is owned by a non-project resource such as an organization, then the value of writer_identity will be a unique service account used only for exports from the new sink. For more information, see writer_identity in LogSink.
+  x__xgafv: string, V1 error format.
+    Allowed values
+      1 - v1 error format
+      2 - v2 error format
+
+Returns:
+  An object of the form:
+
+    { # Describes a sink used to export log entries to one of the following destinations in any project: a Cloud Storage bucket, a BigQuery dataset, or a Cloud Pub/Sub topic. A logs filter controls which log entries are exported. The sink must be created within a project or organization.
+      "endTime": "A String", # Optional. The time at which this sink will stop exporting log entries. Log entries are exported only if their timestamp is earlier than the end time. If this field is not supplied, there is no end time. If both a start time and an end time are provided, then the end time must be later than the start time.
+      "name": "A String", # Required. The client-assigned sink identifier, unique within the project. Example: "my-syslog-errors-to-pubsub". Sink identifiers are limited to 100 characters and can include only the following characters: upper and lower-case alphanumeric characters, underscores, hyphens, and periods.
+      "destination": "A String", # Required. The export destination:
+          # "storage.googleapis.com/[GCS_BUCKET]"
+          # "bigquery.googleapis.com/projects/[PROJECT_ID]/datasets/[DATASET]"
+          # "pubsub.googleapis.com/projects/[PROJECT_ID]/topics/[TOPIC_ID]"
+          # The sink's writer_identity, set when the sink is created, must have permission to write to the destination or else the log entries are not exported. For more information, see Exporting Logs With Sinks.
+      "filter": "A String", # Optional. An advanced logs filter. The only exported log entries are those that are in the resource owning the sink and that match the filter. The filter must use the log entry format specified by the output_version_format parameter. For example, in the v2 format:
+          # logName="projects/[PROJECT_ID]/logs/[LOG_ID]" AND severity>=ERROR
+      "startTime": "A String", # Optional. The time at which this sink will begin exporting log entries. Log entries are exported only if their timestamp is not earlier than the start time. The default value of this field is the time the sink is created or updated.
+      "outputVersionFormat": "A String", # Optional. The log entry format to use for this sink's exported log entries. The v2 format is used by default. The v1 format is deprecated and should be used only as part of a migration effort to v2. See Migration to the v2 API.
+      "writerIdentity": "A String", # Output only. An IAM identity&mdash;a service account or group&mdash;under which Stackdriver Logging writes the exported log entries to the sink's destination. This field is set by sinks.create and sinks.update, based on the setting of unique_writer_identity in those methods.Until you grant this identity write-access to the destination, log entry exports from this sink will fail. For more information, see Granting access for a resource. Consult the destination service's documentation to determine the appropriate IAM roles to assign to the identity.
+    }</pre>
+</div>
+
+<div class="method">
+    <code class="details" id="delete">delete(sinkName=None, x__xgafv=None)</code>
+  <pre>Deletes a sink. If the sink has a unique writer_identity, then that service account is also deleted.
+
+Args:
+  sinkName: string, Required. The full resource name of the sink to delete, including the parent resource and the sink identifier:
+"projects/[PROJECT_ID]/sinks/[SINK_ID]"
+"organizations/[ORGANIZATION_ID]/sinks/[SINK_ID]"
+It is an error if the sink does not exist. Example: "projects/my-project-id/sinks/my-sink-id". It is an error if the sink does not exist. (required)
+  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(sinkName=None, x__xgafv=None)</code>
+  <pre>Gets a sink.
+
+Args:
+  sinkName: string, Required. The parent resource name of the sink:
+"projects/[PROJECT_ID]/sinks/[SINK_ID]"
+"organizations/[ORGANIZATION_ID]/sinks/[SINK_ID]"
+Example: "projects/my-project-id/sinks/my-sink-id". (required)
+  x__xgafv: string, V1 error format.
+    Allowed values
+      1 - v1 error format
+      2 - v2 error format
+
+Returns:
+  An object of the form:
+
+    { # Describes a sink used to export log entries to one of the following destinations in any project: a Cloud Storage bucket, a BigQuery dataset, or a Cloud Pub/Sub topic. A logs filter controls which log entries are exported. The sink must be created within a project or organization.
+      "endTime": "A String", # Optional. The time at which this sink will stop exporting log entries. Log entries are exported only if their timestamp is earlier than the end time. If this field is not supplied, there is no end time. If both a start time and an end time are provided, then the end time must be later than the start time.
+      "name": "A String", # Required. The client-assigned sink identifier, unique within the project. Example: "my-syslog-errors-to-pubsub". Sink identifiers are limited to 100 characters and can include only the following characters: upper and lower-case alphanumeric characters, underscores, hyphens, and periods.
+      "destination": "A String", # Required. The export destination:
+          # "storage.googleapis.com/[GCS_BUCKET]"
+          # "bigquery.googleapis.com/projects/[PROJECT_ID]/datasets/[DATASET]"
+          # "pubsub.googleapis.com/projects/[PROJECT_ID]/topics/[TOPIC_ID]"
+          # The sink's writer_identity, set when the sink is created, must have permission to write to the destination or else the log entries are not exported. For more information, see Exporting Logs With Sinks.
+      "filter": "A String", # Optional. An advanced logs filter. The only exported log entries are those that are in the resource owning the sink and that match the filter. The filter must use the log entry format specified by the output_version_format parameter. For example, in the v2 format:
+          # logName="projects/[PROJECT_ID]/logs/[LOG_ID]" AND severity>=ERROR
+      "startTime": "A String", # Optional. The time at which this sink will begin exporting log entries. Log entries are exported only if their timestamp is not earlier than the start time. The default value of this field is the time the sink is created or updated.
+      "outputVersionFormat": "A String", # Optional. The log entry format to use for this sink's exported log entries. The v2 format is used by default. The v1 format is deprecated and should be used only as part of a migration effort to v2. See Migration to the v2 API.
+      "writerIdentity": "A String", # Output only. An IAM identity&mdash;a service account or group&mdash;under which Stackdriver Logging writes the exported log entries to the sink's destination. This field is set by sinks.create and sinks.update, based on the setting of unique_writer_identity in those methods.Until you grant this identity write-access to the destination, log entry exports from this sink will fail. For more information, see Granting access for a resource. Consult the destination service's documentation to determine the appropriate IAM roles to assign to the identity.
+    }</pre>
+</div>
+
+<div class="method">
+    <code class="details" id="list">list(parent, pageToken=None, x__xgafv=None, pageSize=None)</code>
+  <pre>Lists sinks.
+
+Args:
+  parent: string, Required. The parent resource whose sinks are to be listed. Examples: "projects/my-logging-project", "organizations/123456789". (required)
+  pageToken: string, Optional. If present, then retrieve the next batch of results from the preceding call to this method. pageToken must be the value of nextPageToken from the previous response. The values of other method parameters should be identical to those in the previous call.
+  x__xgafv: string, V1 error format.
+    Allowed values
+      1 - v1 error format
+      2 - v2 error format
+  pageSize: integer, Optional. The maximum number of results to return from this request. Non-positive values are ignored. The presence of nextPageToken in the response indicates that more results might be available.
+
+Returns:
+  An object of the form:
+
+    { # Result returned from ListSinks.
+    "nextPageToken": "A String", # If there might be more results than appear in this response, then nextPageToken is included. To get the next set of results, call the same method again using the value of nextPageToken as pageToken.
+    "sinks": [ # A list of sinks.
+      { # Describes a sink used to export log entries to one of the following destinations in any project: a Cloud Storage bucket, a BigQuery dataset, or a Cloud Pub/Sub topic. A logs filter controls which log entries are exported. The sink must be created within a project or organization.
+          "endTime": "A String", # Optional. The time at which this sink will stop exporting log entries. Log entries are exported only if their timestamp is earlier than the end time. If this field is not supplied, there is no end time. If both a start time and an end time are provided, then the end time must be later than the start time.
+          "name": "A String", # Required. The client-assigned sink identifier, unique within the project. Example: "my-syslog-errors-to-pubsub". Sink identifiers are limited to 100 characters and can include only the following characters: upper and lower-case alphanumeric characters, underscores, hyphens, and periods.
+          "destination": "A String", # Required. The export destination:
+              # "storage.googleapis.com/[GCS_BUCKET]"
+              # "bigquery.googleapis.com/projects/[PROJECT_ID]/datasets/[DATASET]"
+              # "pubsub.googleapis.com/projects/[PROJECT_ID]/topics/[TOPIC_ID]"
+              # The sink's writer_identity, set when the sink is created, must have permission to write to the destination or else the log entries are not exported. For more information, see Exporting Logs With Sinks.
+          "filter": "A String", # Optional. An advanced logs filter. The only exported log entries are those that are in the resource owning the sink and that match the filter. The filter must use the log entry format specified by the output_version_format parameter. For example, in the v2 format:
+              # logName="projects/[PROJECT_ID]/logs/[LOG_ID]" AND severity>=ERROR
+          "startTime": "A String", # Optional. The time at which this sink will begin exporting log entries. Log entries are exported only if their timestamp is not earlier than the start time. The default value of this field is the time the sink is created or updated.
+          "outputVersionFormat": "A String", # Optional. The log entry format to use for this sink's exported log entries. The v2 format is used by default. The v1 format is deprecated and should be used only as part of a migration effort to v2. See Migration to the v2 API.
+          "writerIdentity": "A String", # Output only. An IAM identity&mdash;a service account or group&mdash;under which Stackdriver Logging writes the exported log entries to the sink's destination. This field is set by sinks.create and sinks.update, based on the setting of unique_writer_identity in those methods.Until you grant this identity write-access to the destination, log entry exports from this sink will fail. For more information, see Granting access for a resource. Consult the destination service's documentation to determine the appropriate IAM roles to assign to the identity.
+        },
+    ],
+  }</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="update">update(sinkName=None, body, uniqueWriterIdentity=None, x__xgafv=None)</code>
+  <pre>Updates a sink. If the named sink doesn't exist, then this method is identical to sinks.create. If the named sink does exist, then this method replaces the following fields in the existing sink with values from the new sink: destination, filter, output_version_format, start_time, and end_time. The updated filter might also have a new writer_identity; see the unique_writer_identity field.
+
+Args:
+  sinkName: string, Required. The full resource name of the sink to update, including the parent resource and the sink identifier:
+"projects/[PROJECT_ID]/sinks/[SINK_ID]"
+"organizations/[ORGANIZATION_ID]/sinks/[SINK_ID]"
+Example: "projects/my-project-id/sinks/my-sink-id". (required)
+  body: object, The request body. (required)
+    The object takes the form of:
+
+{ # Describes a sink used to export log entries to one of the following destinations in any project: a Cloud Storage bucket, a BigQuery dataset, or a Cloud Pub/Sub topic. A logs filter controls which log entries are exported. The sink must be created within a project or organization.
+    "endTime": "A String", # Optional. The time at which this sink will stop exporting log entries. Log entries are exported only if their timestamp is earlier than the end time. If this field is not supplied, there is no end time. If both a start time and an end time are provided, then the end time must be later than the start time.
+    "name": "A String", # Required. The client-assigned sink identifier, unique within the project. Example: "my-syslog-errors-to-pubsub". Sink identifiers are limited to 100 characters and can include only the following characters: upper and lower-case alphanumeric characters, underscores, hyphens, and periods.
+    "destination": "A String", # Required. The export destination:
+        # "storage.googleapis.com/[GCS_BUCKET]"
+        # "bigquery.googleapis.com/projects/[PROJECT_ID]/datasets/[DATASET]"
+        # "pubsub.googleapis.com/projects/[PROJECT_ID]/topics/[TOPIC_ID]"
+        # The sink's writer_identity, set when the sink is created, must have permission to write to the destination or else the log entries are not exported. For more information, see Exporting Logs With Sinks.
+    "filter": "A String", # Optional. An advanced logs filter. The only exported log entries are those that are in the resource owning the sink and that match the filter. The filter must use the log entry format specified by the output_version_format parameter. For example, in the v2 format:
+        # logName="projects/[PROJECT_ID]/logs/[LOG_ID]" AND severity>=ERROR
+    "startTime": "A String", # Optional. The time at which this sink will begin exporting log entries. Log entries are exported only if their timestamp is not earlier than the start time. The default value of this field is the time the sink is created or updated.
+    "outputVersionFormat": "A String", # Optional. The log entry format to use for this sink's exported log entries. The v2 format is used by default. The v1 format is deprecated and should be used only as part of a migration effort to v2. See Migration to the v2 API.
+    "writerIdentity": "A String", # Output only. An IAM identity&mdash;a service account or group&mdash;under which Stackdriver Logging writes the exported log entries to the sink's destination. This field is set by sinks.create and sinks.update, based on the setting of unique_writer_identity in those methods.Until you grant this identity write-access to the destination, log entry exports from this sink will fail. For more information, see Granting access for a resource. Consult the destination service's documentation to determine the appropriate IAM roles to assign to the identity.
+  }
+
+  uniqueWriterIdentity: boolean, Optional. See sinks.create for a description of this field. When updating a sink, the effect of this field on the value of writer_identity in the updated sink depends on both the old and new values of this field:
+If the old and new values of this field are both false or both true, then there is no change to the sink's writer_identity.
+If the old value was false and the new value is true, then writer_identity is changed to a unique service account.
+It is an error if the old value was true and the new value is false.
+  x__xgafv: string, V1 error format.
+    Allowed values
+      1 - v1 error format
+      2 - v2 error format
+
+Returns:
+  An object of the form:
+
+    { # Describes a sink used to export log entries to one of the following destinations in any project: a Cloud Storage bucket, a BigQuery dataset, or a Cloud Pub/Sub topic. A logs filter controls which log entries are exported. The sink must be created within a project or organization.
+      "endTime": "A String", # Optional. The time at which this sink will stop exporting log entries. Log entries are exported only if their timestamp is earlier than the end time. If this field is not supplied, there is no end time. If both a start time and an end time are provided, then the end time must be later than the start time.
+      "name": "A String", # Required. The client-assigned sink identifier, unique within the project. Example: "my-syslog-errors-to-pubsub". Sink identifiers are limited to 100 characters and can include only the following characters: upper and lower-case alphanumeric characters, underscores, hyphens, and periods.
+      "destination": "A String", # Required. The export destination:
+          # "storage.googleapis.com/[GCS_BUCKET]"
+          # "bigquery.googleapis.com/projects/[PROJECT_ID]/datasets/[DATASET]"
+          # "pubsub.googleapis.com/projects/[PROJECT_ID]/topics/[TOPIC_ID]"
+          # The sink's writer_identity, set when the sink is created, must have permission to write to the destination or else the log entries are not exported. For more information, see Exporting Logs With Sinks.
+      "filter": "A String", # Optional. An advanced logs filter. The only exported log entries are those that are in the resource owning the sink and that match the filter. The filter must use the log entry format specified by the output_version_format parameter. For example, in the v2 format:
+          # logName="projects/[PROJECT_ID]/logs/[LOG_ID]" AND severity>=ERROR
+      "startTime": "A String", # Optional. The time at which this sink will begin exporting log entries. Log entries are exported only if their timestamp is not earlier than the start time. The default value of this field is the time the sink is created or updated.
+      "outputVersionFormat": "A String", # Optional. The log entry format to use for this sink's exported log entries. The v2 format is used by default. The v1 format is deprecated and should be used only as part of a migration effort to v2. See Migration to the v2 API.
+      "writerIdentity": "A String", # Output only. An IAM identity&mdash;a service account or group&mdash;under which Stackdriver Logging writes the exported log entries to the sink's destination. This field is set by sinks.create and sinks.update, based on the setting of unique_writer_identity in those methods.Until you grant this identity write-access to the destination, log entry exports from this sink will fail. For more information, see Granting access for a resource. Consult the destination service's documentation to determine the appropriate IAM roles to assign to the identity.
+    }</pre>
+</div>
+
+</body></html>
\ No newline at end of file
diff --git a/docs/dyn/logging_v2.html b/docs/dyn/logging_v2.html
index a13b9c1..58b98d2 100644
--- a/docs/dyn/logging_v2.html
+++ b/docs/dyn/logging_v2.html
@@ -85,6 +85,11 @@
 <p class="firstline">Returns the entries Resource.</p>
 
 <p class="toc_element">
+  <code><a href="logging_v2.folders.html">folders()</a></code>
+</p>
+<p class="firstline">Returns the folders Resource.</p>
+
+<p class="toc_element">
   <code><a href="logging_v2.monitoredResourceDescriptors.html">monitoredResourceDescriptors()</a></code>
 </p>
 <p class="firstline">Returns the monitoredResourceDescriptors Resource.</p>
diff --git a/docs/dyn/logging_v2.monitoredResourceDescriptors.html b/docs/dyn/logging_v2.monitoredResourceDescriptors.html
index 8b8c22e..3b54b9b 100644
--- a/docs/dyn/logging_v2.monitoredResourceDescriptors.html
+++ b/docs/dyn/logging_v2.monitoredResourceDescriptors.html
@@ -76,23 +76,18 @@
 <h2>Instance Methods</h2>
 <p class="toc_element">
   <code><a href="#list">list(pageSize=None, pageToken=None, x__xgafv=None)</a></code></p>
-<p class="firstline">Lists the monitored resource descriptors used by Stackdriver Logging.</p>
+<p class="firstline">Lists the descriptors for monitored resource types used by Stackdriver Logging.</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>
 <h3>Method Details</h3>
 <div class="method">
     <code class="details" id="list">list(pageSize=None, pageToken=None, x__xgafv=None)</code>
-  <pre>Lists the monitored resource descriptors used by Stackdriver Logging.
+  <pre>Lists the descriptors for monitored resource types used by Stackdriver Logging.
 
 Args:
-  pageSize: integer, Optional. The maximum number of results to return from this request.
-Non-positive values are ignored.  The presence of `nextPageToken` in the
-response indicates that more results might be available.
-  pageToken: string, Optional. If present, then retrieve the next batch of results from the
-preceding call to this method.  `pageToken` must be the value of
-`nextPageToken` from the previous response.  The values of other method
-parameters should be identical to those in the previous call.
+  pageSize: integer, Optional. The maximum number of results to return from this request. Non-positive values are ignored. The presence of nextPageToken in the response indicates that more results might be available.
+  pageToken: string, Optional. If present, then retrieve the next batch of results from the preceding call to this method. pageToken must be the value of nextPageToken from the previous response. The values of other method parameters should be identical to those in the previous call.
   x__xgafv: string, V1 error format.
     Allowed values
       1 - v1 error format
@@ -102,43 +97,20 @@
   An object of the form:
 
     { # Result returned from ListMonitoredResourceDescriptors.
-    "nextPageToken": "A String", # If there might be more results than appear in this response, then
-        # `nextPageToken` is included.  To get the next set of results, call this
-        # method again using the value of `nextPageToken` as `pageToken`.
+    "nextPageToken": "A String", # If there might be more results than those appearing in this response, then nextPageToken is included. To get the next set of results, call this method again using the value of nextPageToken as pageToken.
     "resourceDescriptors": [ # A list of resource descriptors.
-      { # An object that describes the schema of a MonitoredResource object using a
-          # type name and a set of labels.  For example, the monitored resource
-          # descriptor for Google Compute Engine VM instances has a type of
-          # `"gce_instance"` and specifies the use of the labels `"instance_id"` and
-          # `"zone"` to identify particular VM instances.
-          #
-          # Different APIs can support different monitored resource types. APIs generally
-          # provide a `list` method that returns the monitored resource descriptors used
-          # by the API.
-        "type": "A String", # Required. The monitored resource type. For example, the type
-            # `"cloudsql_database"` represents databases in Google Cloud SQL.
-            # The maximum length of this value is 256 characters.
-        "labels": [ # Required. A set of labels used to describe instances of this monitored
-            # resource type. For example, an individual Google Cloud SQL database is
-            # identified by values for the labels `"database_id"` and `"zone"`.
+      { # An object that describes the schema of a MonitoredResource object using a type name and a set of labels. For example, the monitored resource descriptor for Google Compute Engine VM instances has a type of "gce_instance" and specifies the use of the labels "instance_id" and "zone" to identify particular VM instances.Different APIs can support different monitored resource types. APIs generally provide a list method that returns the monitored resource descriptors used by the API.
+        "type": "A String", # Required. The monitored resource type. For example, the type "cloudsql_database" represents databases in Google Cloud SQL. The maximum length of this value is 256 characters.
+        "labels": [ # Required. A set of labels used to describe instances of this monitored resource type. For example, an individual Google Cloud SQL database is identified by values for the labels "database_id" and "zone".
           { # A description of a label.
             "valueType": "A String", # The type of data that can be assigned to the label.
             "description": "A String", # A human-readable description for the label.
             "key": "A String", # The label key.
           },
         ],
-        "displayName": "A String", # Optional. A concise name for the monitored resource type that might be
-            # displayed in user interfaces. It should be a Title Cased Noun Phrase,
-            # without any article or other determiners. For example,
-            # `"Google Cloud SQL Database"`.
-        "description": "A String", # Optional. A detailed description of the monitored resource type that might
-            # be used in documentation.
-        "name": "A String", # Optional. The resource name of the monitored resource descriptor:
-            # `"projects/{project_id}/monitoredResourceDescriptors/{type}"` where
-            # {type} is the value of the `type` field in this object and
-            # {project_id} is a project ID that provides API-specific context for
-            # accessing the type.  APIs that do not use project information can use the
-            # resource name format `"monitoredResourceDescriptors/{type}"`.
+        "displayName": "A String", # Optional. A concise name for the monitored resource type that might be displayed in user interfaces. It should be a Title Cased Noun Phrase, without any article or other determiners. For example, "Google Cloud SQL Database".
+        "description": "A String", # Optional. A detailed description of the monitored resource type that might be used in documentation.
+        "name": "A String", # Optional. The resource name of the monitored resource descriptor: "projects/{project_id}/monitoredResourceDescriptors/{type}" where {type} is the value of the type field in this object and {project_id} is a project ID that provides API-specific context for accessing the type. APIs that do not use project information can use the resource name format "monitoredResourceDescriptors/{type}".
       },
     ],
   }</pre>
diff --git a/docs/dyn/logging_v2.organizations.logs.html b/docs/dyn/logging_v2.organizations.logs.html
index bfe24d2..323c113 100644
--- a/docs/dyn/logging_v2.organizations.logs.html
+++ b/docs/dyn/logging_v2.organizations.logs.html
@@ -76,16 +76,23 @@
 <h2>Instance Methods</h2>
 <p class="toc_element">
   <code><a href="#delete">delete(logName=None, x__xgafv=None)</a></code></p>
-<p class="firstline">Deletes a log and all its log entries.</p>
+<p class="firstline">Deletes all the log entries in a log. The log reappears if it receives new entries.</p>
+<p class="toc_element">
+  <code><a href="#list">list(parent=None, pageToken=None, x__xgafv=None, pageSize=None)</a></code></p>
+<p class="firstline">Lists the logs in projects or organizations. Only logs that have entries are listed.</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>
 <h3>Method Details</h3>
 <div class="method">
     <code class="details" id="delete">delete(logName=None, x__xgafv=None)</code>
-  <pre>Deletes a log and all its log entries.
-The log will reappear if it receives new entries.
+  <pre>Deletes all the log entries in a log. The log reappears if it receives new entries.
 
 Args:
-  logName: string, Required. The resource name of the log to delete.  Example:
-`"projects/my-project/logs/syslog"`. (required)
+  logName: string, Required. The resource name of the log to delete:
+"projects/[PROJECT_ID]/logs/[LOG_ID]"
+"organizations/[ORGANIZATION_ID]/logs/[LOG_ID]"
+[LOG_ID] must be URL-encoded. For example, "projects/my-project-id/logs/syslog", "organizations/1234567890/logs/cloudresourcemanager.googleapis.com%2Factivity". For more information about log names, see LogEntry. (required)
   x__xgafv: string, V1 error format.
     Allowed values
       1 - v1 error format
@@ -94,16 +101,53 @@
 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 `{}`.
+    { # 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="list">list(parent=None, pageToken=None, x__xgafv=None, pageSize=None)</code>
+  <pre>Lists the logs in projects or organizations. Only logs that have entries are listed.
+
+Args:
+  parent: string, Required. The resource name that owns the logs:
+"projects/[PROJECT_ID]"
+"organizations/[ORGANIZATION_ID]"
+ (required)
+  pageToken: string, Optional. If present, then retrieve the next batch of results from the preceding call to this method. pageToken must be the value of nextPageToken from the previous response. The values of other method parameters should be identical to those in the previous call.
+  x__xgafv: string, V1 error format.
+    Allowed values
+      1 - v1 error format
+      2 - v2 error format
+  pageSize: integer, Optional. The maximum number of results to return from this request. Non-positive values are ignored. The presence of nextPageToken in the response indicates that more results might be available.
+
+Returns:
+  An object of the form:
+
+    { # Result returned from ListLogs.
+    "nextPageToken": "A String", # If there might be more results than those appearing in this response, then nextPageToken is included. To get the next set of results, call this method again using the value of nextPageToken as pageToken.
+    "logNames": [ # A list of log names. For example, "projects/my-project/syslog" or "organizations/123/cloudresourcemanager.googleapis.com%2Factivity".
+      "A String",
+    ],
+  }</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>
+
 </body></html>
\ No newline at end of file
diff --git a/docs/dyn/logging_v2.organizations.sinks.html b/docs/dyn/logging_v2.organizations.sinks.html
index 9a8f758..ad06cec 100644
--- a/docs/dyn/logging_v2.organizations.sinks.html
+++ b/docs/dyn/logging_v2.organizations.sinks.html
@@ -75,77 +75,52 @@
 <h1><a href="logging_v2.html">Stackdriver Logging API</a> . <a href="logging_v2.organizations.html">organizations</a> . <a href="logging_v2.organizations.sinks.html">sinks</a></h1>
 <h2>Instance Methods</h2>
 <p class="toc_element">
-  <code><a href="#create">create(parent=None, body, x__xgafv=None)</a></code></p>
-<p class="firstline">Creates a sink.</p>
+  <code><a href="#create">create(parent=None, body, uniqueWriterIdentity=None, x__xgafv=None)</a></code></p>
+<p class="firstline">Creates a sink that exports specified log entries to a destination. The export of newly-ingested log entries begins immediately, unless the current time is outside the sink's start and end times or the sink's writer_identity is not permitted to write to the destination. A sink can export log entries only from the resource owning the sink.</p>
 <p class="toc_element">
   <code><a href="#delete">delete(sinkName=None, x__xgafv=None)</a></code></p>
-<p class="firstline">Deletes a sink.</p>
+<p class="firstline">Deletes a sink. If the sink has a unique writer_identity, then that service account is also deleted.</p>
 <p class="toc_element">
   <code><a href="#get">get(sinkName=None, x__xgafv=None)</a></code></p>
 <p class="firstline">Gets a sink.</p>
 <p class="toc_element">
-  <code><a href="#list">list(parent=None, pageToken=None, x__xgafv=None, pageSize=None)</a></code></p>
+  <code><a href="#list">list(parent, pageToken=None, x__xgafv=None, pageSize=None)</a></code></p>
 <p class="firstline">Lists sinks.</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="#update">update(sinkName=None, body, x__xgafv=None)</a></code></p>
-<p class="firstline">Updates or creates a sink.</p>
+  <code><a href="#update">update(sinkName=None, body, uniqueWriterIdentity=None, x__xgafv=None)</a></code></p>
+<p class="firstline">Updates a sink. If the named sink doesn't exist, then this method is identical to sinks.create. If the named sink does exist, then this method replaces the following fields in the existing sink with values from the new sink: destination, filter, output_version_format, start_time, and end_time. The updated filter might also have a new writer_identity; see the unique_writer_identity field.</p>
 <h3>Method Details</h3>
 <div class="method">
-    <code class="details" id="create">create(parent=None, body, x__xgafv=None)</code>
-  <pre>Creates a sink.
+    <code class="details" id="create">create(parent=None, body, uniqueWriterIdentity=None, x__xgafv=None)</code>
+  <pre>Creates a sink that exports specified log entries to a destination. The export of newly-ingested log entries begins immediately, unless the current time is outside the sink's start and end times or the sink's writer_identity is not permitted to write to the destination. A sink can export log entries only from the resource owning the sink.
 
 Args:
-  parent: string, Required. The resource in which to create the sink.
-Example: `"projects/my-project-id"`.
-The new sink must be provided in the request. (required)
+  parent: string, Required. The resource in which to create the sink:
+"projects/[PROJECT_ID]"
+"organizations/[ORGANIZATION_ID]"
+Examples: "projects/my-logging-project", "organizations/123456789". (required)
   body: object, The request body. (required)
     The object takes the form of:
 
-{ # Describes a sink used to export log entries outside of Stackdriver Logging.
-    "endTime": "A String", # Optional. Time at which this sink expires.
-    "name": "A String", # Required. The client-assigned sink identifier, unique within the
-        # project. Example: `"my-syslog-errors-to-pubsub"`.  Sink identifiers are
-        # limited to 1000 characters and can include only the following characters:
-        # `A-Z`, `a-z`, `0-9`, and the special characters `_-.`.  The maximum length
-        # of the name is 100 characters.
-    "destination": "A String", # Required. The export destination. See
-        # [Exporting Logs With Sinks](/logging/docs/api/tasks/exporting-logs).
-        # Examples:
-        # 
-        #     "storage.googleapis.com/my-gcs-bucket"
-        #     "bigquery.googleapis.com/projects/my-project-id/datasets/my-dataset"
-        #     "pubsub.googleapis.com/projects/my-project/topics/my-topic"
-    "filter": "A String", # Optional. An [advanced logs filter](/logging/docs/view/advanced_filters).
-        # Only log entries matching the filter are exported. The filter
-        # must be consistent with the log entry format specified by the
-        # `outputVersionFormat` parameter, regardless of the format of the
-        # log entry that was originally written to Stackdriver Logging.
-        # Example filter (V2 format):
-        # 
-        #     logName=projects/my-projectid/logs/syslog AND severity>=ERROR
-    "startTime": "A String", # Optional. Time range for which this sink is active.
-        # Logs are exported only if start_time <= entry.timestamp < end_time
-        # Both start_time and end_time may be omitted to specify
-        # (half) infinite ranges. The start_time must be less than the end_time.
-    "outputVersionFormat": "A String", # Optional. The log entry version to use for this sink's exported log
-        # entries.  This version does not have to correspond to the version of the
-        # log entry that was written to Stackdriver Logging. If omitted, the
-        # v2 format is used.
-    "writerIdentity": "A String", # Output only. The IAM identity to which the destination needs to grant write
-        # access.  This may be a service account or a group.
-        # Examples (Do not assume these specific values):
-        #    "serviceAccount:cloud-logs@system.gserviceaccount.com"
-        #    "group:cloud-logs@google.com"
-        # 
-        #   For GCS destinations, the role "roles/owner" is required on the bucket
-        #   For Cloud Pubsub destinations, the role "roles/pubsub.publisher" is
-        #     required on the topic
-        #   For BigQuery, the role "roles/editor" is required on the dataset
+{ # Describes a sink used to export log entries to one of the following destinations in any project: a Cloud Storage bucket, a BigQuery dataset, or a Cloud Pub/Sub topic. A logs filter controls which log entries are exported. The sink must be created within a project or organization.
+    "endTime": "A String", # Optional. The time at which this sink will stop exporting log entries. Log entries are exported only if their timestamp is earlier than the end time. If this field is not supplied, there is no end time. If both a start time and an end time are provided, then the end time must be later than the start time.
+    "name": "A String", # Required. The client-assigned sink identifier, unique within the project. Example: "my-syslog-errors-to-pubsub". Sink identifiers are limited to 100 characters and can include only the following characters: upper and lower-case alphanumeric characters, underscores, hyphens, and periods.
+    "destination": "A String", # Required. The export destination:
+        # "storage.googleapis.com/[GCS_BUCKET]"
+        # "bigquery.googleapis.com/projects/[PROJECT_ID]/datasets/[DATASET]"
+        # "pubsub.googleapis.com/projects/[PROJECT_ID]/topics/[TOPIC_ID]"
+        # The sink's writer_identity, set when the sink is created, must have permission to write to the destination or else the log entries are not exported. For more information, see Exporting Logs With Sinks.
+    "filter": "A String", # Optional. An advanced logs filter. The only exported log entries are those that are in the resource owning the sink and that match the filter. The filter must use the log entry format specified by the output_version_format parameter. For example, in the v2 format:
+        # logName="projects/[PROJECT_ID]/logs/[LOG_ID]" AND severity>=ERROR
+    "startTime": "A String", # Optional. The time at which this sink will begin exporting log entries. Log entries are exported only if their timestamp is not earlier than the start time. The default value of this field is the time the sink is created or updated.
+    "outputVersionFormat": "A String", # Optional. The log entry format to use for this sink's exported log entries. The v2 format is used by default. The v1 format is deprecated and should be used only as part of a migration effort to v2. See Migration to the v2 API.
+    "writerIdentity": "A String", # Output only. An IAM identity&mdash;a service account or group&mdash;under which Stackdriver Logging writes the exported log entries to the sink's destination. This field is set by sinks.create and sinks.update, based on the setting of unique_writer_identity in those methods.Until you grant this identity write-access to the destination, log entry exports from this sink will fail. For more information, see Granting access for a resource. Consult the destination service's documentation to determine the appropriate IAM roles to assign to the identity.
   }
 
+  uniqueWriterIdentity: boolean, Optional. Determines the kind of IAM identity returned as writer_identity in the new sink. If this value is omitted or set to false, and if the sink's parent is a project, then the value returned as writer_identity is cloud-logs@google.com, the same identity used before the addition of writer identities to this API. The sink's destination must be in the same project as the sink itself.If this field is set to true, or if the sink is owned by a non-project resource such as an organization, then the value of writer_identity will be a unique service account used only for exports from the new sink. For more information, see writer_identity in LogSink.
   x__xgafv: string, V1 error format.
     Allowed values
       1 - v1 error format
@@ -154,58 +129,31 @@
 Returns:
   An object of the form:
 
-    { # Describes a sink used to export log entries outside of Stackdriver Logging.
-      "endTime": "A String", # Optional. Time at which this sink expires.
-      "name": "A String", # Required. The client-assigned sink identifier, unique within the
-          # project. Example: `"my-syslog-errors-to-pubsub"`.  Sink identifiers are
-          # limited to 1000 characters and can include only the following characters:
-          # `A-Z`, `a-z`, `0-9`, and the special characters `_-.`.  The maximum length
-          # of the name is 100 characters.
-      "destination": "A String", # Required. The export destination. See
-          # [Exporting Logs With Sinks](/logging/docs/api/tasks/exporting-logs).
-          # Examples:
-          #
-          #     "storage.googleapis.com/my-gcs-bucket"
-          #     "bigquery.googleapis.com/projects/my-project-id/datasets/my-dataset"
-          #     "pubsub.googleapis.com/projects/my-project/topics/my-topic"
-      "filter": "A String", # Optional. An [advanced logs filter](/logging/docs/view/advanced_filters).
-          # Only log entries matching the filter are exported. The filter
-          # must be consistent with the log entry format specified by the
-          # `outputVersionFormat` parameter, regardless of the format of the
-          # log entry that was originally written to Stackdriver Logging.
-          # Example filter (V2 format):
-          #
-          #     logName=projects/my-projectid/logs/syslog AND severity>=ERROR
-      "startTime": "A String", # Optional. Time range for which this sink is active.
-          # Logs are exported only if start_time <= entry.timestamp < end_time
-          # Both start_time and end_time may be omitted to specify
-          # (half) infinite ranges. The start_time must be less than the end_time.
-      "outputVersionFormat": "A String", # Optional. The log entry version to use for this sink's exported log
-          # entries.  This version does not have to correspond to the version of the
-          # log entry that was written to Stackdriver Logging. If omitted, the
-          # v2 format is used.
-      "writerIdentity": "A String", # Output only. The IAM identity to which the destination needs to grant write
-          # access.  This may be a service account or a group.
-          # Examples (Do not assume these specific values):
-          #    "serviceAccount:cloud-logs@system.gserviceaccount.com"
-          #    "group:cloud-logs@google.com"
-          #
-          #   For GCS destinations, the role "roles/owner" is required on the bucket
-          #   For Cloud Pubsub destinations, the role "roles/pubsub.publisher" is
-          #     required on the topic
-          #   For BigQuery, the role "roles/editor" is required on the dataset
+    { # Describes a sink used to export log entries to one of the following destinations in any project: a Cloud Storage bucket, a BigQuery dataset, or a Cloud Pub/Sub topic. A logs filter controls which log entries are exported. The sink must be created within a project or organization.
+      "endTime": "A String", # Optional. The time at which this sink will stop exporting log entries. Log entries are exported only if their timestamp is earlier than the end time. If this field is not supplied, there is no end time. If both a start time and an end time are provided, then the end time must be later than the start time.
+      "name": "A String", # Required. The client-assigned sink identifier, unique within the project. Example: "my-syslog-errors-to-pubsub". Sink identifiers are limited to 100 characters and can include only the following characters: upper and lower-case alphanumeric characters, underscores, hyphens, and periods.
+      "destination": "A String", # Required. The export destination:
+          # "storage.googleapis.com/[GCS_BUCKET]"
+          # "bigquery.googleapis.com/projects/[PROJECT_ID]/datasets/[DATASET]"
+          # "pubsub.googleapis.com/projects/[PROJECT_ID]/topics/[TOPIC_ID]"
+          # The sink's writer_identity, set when the sink is created, must have permission to write to the destination or else the log entries are not exported. For more information, see Exporting Logs With Sinks.
+      "filter": "A String", # Optional. An advanced logs filter. The only exported log entries are those that are in the resource owning the sink and that match the filter. The filter must use the log entry format specified by the output_version_format parameter. For example, in the v2 format:
+          # logName="projects/[PROJECT_ID]/logs/[LOG_ID]" AND severity>=ERROR
+      "startTime": "A String", # Optional. The time at which this sink will begin exporting log entries. Log entries are exported only if their timestamp is not earlier than the start time. The default value of this field is the time the sink is created or updated.
+      "outputVersionFormat": "A String", # Optional. The log entry format to use for this sink's exported log entries. The v2 format is used by default. The v1 format is deprecated and should be used only as part of a migration effort to v2. See Migration to the v2 API.
+      "writerIdentity": "A String", # Output only. An IAM identity&mdash;a service account or group&mdash;under which Stackdriver Logging writes the exported log entries to the sink's destination. This field is set by sinks.create and sinks.update, based on the setting of unique_writer_identity in those methods.Until you grant this identity write-access to the destination, log entry exports from this sink will fail. For more information, see Granting access for a resource. Consult the destination service's documentation to determine the appropriate IAM roles to assign to the identity.
     }</pre>
 </div>
 
 <div class="method">
     <code class="details" id="delete">delete(sinkName=None, x__xgafv=None)</code>
-  <pre>Deletes a sink.
+  <pre>Deletes a sink. If the sink has a unique writer_identity, then that service account is also deleted.
 
 Args:
-  sinkName: string, Required. The resource name of the sink to delete, including the parent
-resource and the sink identifier.  Example:
-`"projects/my-project-id/sinks/my-sink-id"`.  It is an error if the sink
-does not exist. (required)
+  sinkName: string, Required. The full resource name of the sink to delete, including the parent resource and the sink identifier:
+"projects/[PROJECT_ID]/sinks/[SINK_ID]"
+"organizations/[ORGANIZATION_ID]/sinks/[SINK_ID]"
+It is an error if the sink does not exist. Example: "projects/my-project-id/sinks/my-sink-id". It is an error if the sink does not exist. (required)
   x__xgafv: string, V1 error format.
     Allowed values
       1 - v1 error format
@@ -214,15 +162,11 @@
 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 `{}`.
+    { # 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>
 
@@ -231,8 +175,10 @@
   <pre>Gets a sink.
 
 Args:
-  sinkName: string, Required. The resource name of the sink to return.
-Example: `"projects/my-project-id/sinks/my-sink-id"`. (required)
+  sinkName: string, Required. The parent resource name of the sink:
+"projects/[PROJECT_ID]/sinks/[SINK_ID]"
+"organizations/[ORGANIZATION_ID]/sinks/[SINK_ID]"
+Example: "projects/my-project-id/sinks/my-sink-id". (required)
   x__xgafv: string, V1 error format.
     Allowed values
       1 - v1 error format
@@ -241,116 +187,54 @@
 Returns:
   An object of the form:
 
-    { # Describes a sink used to export log entries outside of Stackdriver Logging.
-      "endTime": "A String", # Optional. Time at which this sink expires.
-      "name": "A String", # Required. The client-assigned sink identifier, unique within the
-          # project. Example: `"my-syslog-errors-to-pubsub"`.  Sink identifiers are
-          # limited to 1000 characters and can include only the following characters:
-          # `A-Z`, `a-z`, `0-9`, and the special characters `_-.`.  The maximum length
-          # of the name is 100 characters.
-      "destination": "A String", # Required. The export destination. See
-          # [Exporting Logs With Sinks](/logging/docs/api/tasks/exporting-logs).
-          # Examples:
-          #
-          #     "storage.googleapis.com/my-gcs-bucket"
-          #     "bigquery.googleapis.com/projects/my-project-id/datasets/my-dataset"
-          #     "pubsub.googleapis.com/projects/my-project/topics/my-topic"
-      "filter": "A String", # Optional. An [advanced logs filter](/logging/docs/view/advanced_filters).
-          # Only log entries matching the filter are exported. The filter
-          # must be consistent with the log entry format specified by the
-          # `outputVersionFormat` parameter, regardless of the format of the
-          # log entry that was originally written to Stackdriver Logging.
-          # Example filter (V2 format):
-          #
-          #     logName=projects/my-projectid/logs/syslog AND severity>=ERROR
-      "startTime": "A String", # Optional. Time range for which this sink is active.
-          # Logs are exported only if start_time <= entry.timestamp < end_time
-          # Both start_time and end_time may be omitted to specify
-          # (half) infinite ranges. The start_time must be less than the end_time.
-      "outputVersionFormat": "A String", # Optional. The log entry version to use for this sink's exported log
-          # entries.  This version does not have to correspond to the version of the
-          # log entry that was written to Stackdriver Logging. If omitted, the
-          # v2 format is used.
-      "writerIdentity": "A String", # Output only. The IAM identity to which the destination needs to grant write
-          # access.  This may be a service account or a group.
-          # Examples (Do not assume these specific values):
-          #    "serviceAccount:cloud-logs@system.gserviceaccount.com"
-          #    "group:cloud-logs@google.com"
-          #
-          #   For GCS destinations, the role "roles/owner" is required on the bucket
-          #   For Cloud Pubsub destinations, the role "roles/pubsub.publisher" is
-          #     required on the topic
-          #   For BigQuery, the role "roles/editor" is required on the dataset
+    { # Describes a sink used to export log entries to one of the following destinations in any project: a Cloud Storage bucket, a BigQuery dataset, or a Cloud Pub/Sub topic. A logs filter controls which log entries are exported. The sink must be created within a project or organization.
+      "endTime": "A String", # Optional. The time at which this sink will stop exporting log entries. Log entries are exported only if their timestamp is earlier than the end time. If this field is not supplied, there is no end time. If both a start time and an end time are provided, then the end time must be later than the start time.
+      "name": "A String", # Required. The client-assigned sink identifier, unique within the project. Example: "my-syslog-errors-to-pubsub". Sink identifiers are limited to 100 characters and can include only the following characters: upper and lower-case alphanumeric characters, underscores, hyphens, and periods.
+      "destination": "A String", # Required. The export destination:
+          # "storage.googleapis.com/[GCS_BUCKET]"
+          # "bigquery.googleapis.com/projects/[PROJECT_ID]/datasets/[DATASET]"
+          # "pubsub.googleapis.com/projects/[PROJECT_ID]/topics/[TOPIC_ID]"
+          # The sink's writer_identity, set when the sink is created, must have permission to write to the destination or else the log entries are not exported. For more information, see Exporting Logs With Sinks.
+      "filter": "A String", # Optional. An advanced logs filter. The only exported log entries are those that are in the resource owning the sink and that match the filter. The filter must use the log entry format specified by the output_version_format parameter. For example, in the v2 format:
+          # logName="projects/[PROJECT_ID]/logs/[LOG_ID]" AND severity>=ERROR
+      "startTime": "A String", # Optional. The time at which this sink will begin exporting log entries. Log entries are exported only if their timestamp is not earlier than the start time. The default value of this field is the time the sink is created or updated.
+      "outputVersionFormat": "A String", # Optional. The log entry format to use for this sink's exported log entries. The v2 format is used by default. The v1 format is deprecated and should be used only as part of a migration effort to v2. See Migration to the v2 API.
+      "writerIdentity": "A String", # Output only. An IAM identity&mdash;a service account or group&mdash;under which Stackdriver Logging writes the exported log entries to the sink's destination. This field is set by sinks.create and sinks.update, based on the setting of unique_writer_identity in those methods.Until you grant this identity write-access to the destination, log entry exports from this sink will fail. For more information, see Granting access for a resource. Consult the destination service's documentation to determine the appropriate IAM roles to assign to the identity.
     }</pre>
 </div>
 
 <div class="method">
-    <code class="details" id="list">list(parent=None, pageToken=None, x__xgafv=None, pageSize=None)</code>
+    <code class="details" id="list">list(parent, pageToken=None, x__xgafv=None, pageSize=None)</code>
   <pre>Lists sinks.
 
 Args:
-  parent: string, Required. The cloud resource containing the sinks.
-Example: `"projects/my-logging-project"`. (required)
-  pageToken: string, Optional. If present, then retrieve the next batch of results from the
-preceding call to this method.  `pageToken` must be the value of
-`nextPageToken` from the previous response.  The values of other method
-parameters should be identical to those in the previous call.
+  parent: string, Required. The parent resource whose sinks are to be listed. Examples: "projects/my-logging-project", "organizations/123456789". (required)
+  pageToken: string, Optional. If present, then retrieve the next batch of results from the preceding call to this method. pageToken must be the value of nextPageToken from the previous response. The values of other method parameters should be identical to those in the previous call.
   x__xgafv: string, V1 error format.
     Allowed values
       1 - v1 error format
       2 - v2 error format
-  pageSize: integer, Optional. The maximum number of results to return from this request.
-Non-positive values are ignored.  The presence of `nextPageToken` in the
-response indicates that more results might be available.
+  pageSize: integer, Optional. The maximum number of results to return from this request. Non-positive values are ignored. The presence of nextPageToken in the response indicates that more results might be available.
 
 Returns:
   An object of the form:
 
-    { # Result returned from `ListSinks`.
-    "nextPageToken": "A String", # If there might be more results than appear in this response, then
-        # `nextPageToken` is included.  To get the next set of results, call the same
-        # method again using the value of `nextPageToken` as `pageToken`.
+    { # Result returned from ListSinks.
+    "nextPageToken": "A String", # If there might be more results than appear in this response, then nextPageToken is included. To get the next set of results, call the same method again using the value of nextPageToken as pageToken.
     "sinks": [ # A list of sinks.
-      { # Describes a sink used to export log entries outside of Stackdriver Logging.
-          "endTime": "A String", # Optional. Time at which this sink expires.
-          "name": "A String", # Required. The client-assigned sink identifier, unique within the
-              # project. Example: `"my-syslog-errors-to-pubsub"`.  Sink identifiers are
-              # limited to 1000 characters and can include only the following characters:
-              # `A-Z`, `a-z`, `0-9`, and the special characters `_-.`.  The maximum length
-              # of the name is 100 characters.
-          "destination": "A String", # Required. The export destination. See
-              # [Exporting Logs With Sinks](/logging/docs/api/tasks/exporting-logs).
-              # Examples:
-              #
-              #     "storage.googleapis.com/my-gcs-bucket"
-              #     "bigquery.googleapis.com/projects/my-project-id/datasets/my-dataset"
-              #     "pubsub.googleapis.com/projects/my-project/topics/my-topic"
-          "filter": "A String", # Optional. An [advanced logs filter](/logging/docs/view/advanced_filters).
-              # Only log entries matching the filter are exported. The filter
-              # must be consistent with the log entry format specified by the
-              # `outputVersionFormat` parameter, regardless of the format of the
-              # log entry that was originally written to Stackdriver Logging.
-              # Example filter (V2 format):
-              #
-              #     logName=projects/my-projectid/logs/syslog AND severity>=ERROR
-          "startTime": "A String", # Optional. Time range for which this sink is active.
-              # Logs are exported only if start_time <= entry.timestamp < end_time
-              # Both start_time and end_time may be omitted to specify
-              # (half) infinite ranges. The start_time must be less than the end_time.
-          "outputVersionFormat": "A String", # Optional. The log entry version to use for this sink's exported log
-              # entries.  This version does not have to correspond to the version of the
-              # log entry that was written to Stackdriver Logging. If omitted, the
-              # v2 format is used.
-          "writerIdentity": "A String", # Output only. The IAM identity to which the destination needs to grant write
-              # access.  This may be a service account or a group.
-              # Examples (Do not assume these specific values):
-              #    "serviceAccount:cloud-logs@system.gserviceaccount.com"
-              #    "group:cloud-logs@google.com"
-              #
-              #   For GCS destinations, the role "roles/owner" is required on the bucket
-              #   For Cloud Pubsub destinations, the role "roles/pubsub.publisher" is
-              #     required on the topic
-              #   For BigQuery, the role "roles/editor" is required on the dataset
+      { # Describes a sink used to export log entries to one of the following destinations in any project: a Cloud Storage bucket, a BigQuery dataset, or a Cloud Pub/Sub topic. A logs filter controls which log entries are exported. The sink must be created within a project or organization.
+          "endTime": "A String", # Optional. The time at which this sink will stop exporting log entries. Log entries are exported only if their timestamp is earlier than the end time. If this field is not supplied, there is no end time. If both a start time and an end time are provided, then the end time must be later than the start time.
+          "name": "A String", # Required. The client-assigned sink identifier, unique within the project. Example: "my-syslog-errors-to-pubsub". Sink identifiers are limited to 100 characters and can include only the following characters: upper and lower-case alphanumeric characters, underscores, hyphens, and periods.
+          "destination": "A String", # Required. The export destination:
+              # "storage.googleapis.com/[GCS_BUCKET]"
+              # "bigquery.googleapis.com/projects/[PROJECT_ID]/datasets/[DATASET]"
+              # "pubsub.googleapis.com/projects/[PROJECT_ID]/topics/[TOPIC_ID]"
+              # The sink's writer_identity, set when the sink is created, must have permission to write to the destination or else the log entries are not exported. For more information, see Exporting Logs With Sinks.
+          "filter": "A String", # Optional. An advanced logs filter. The only exported log entries are those that are in the resource owning the sink and that match the filter. The filter must use the log entry format specified by the output_version_format parameter. For example, in the v2 format:
+              # logName="projects/[PROJECT_ID]/logs/[LOG_ID]" AND severity>=ERROR
+          "startTime": "A String", # Optional. The time at which this sink will begin exporting log entries. Log entries are exported only if their timestamp is not earlier than the start time. The default value of this field is the time the sink is created or updated.
+          "outputVersionFormat": "A String", # Optional. The log entry format to use for this sink's exported log entries. The v2 format is used by default. The v1 format is deprecated and should be used only as part of a migration effort to v2. See Migration to the v2 API.
+          "writerIdentity": "A String", # Output only. An IAM identity&mdash;a service account or group&mdash;under which Stackdriver Logging writes the exported log entries to the sink's destination. This field is set by sinks.create and sinks.update, based on the setting of unique_writer_identity in those methods.Until you grant this identity write-access to the destination, log entry exports from this sink will fail. For more information, see Granting access for a resource. Consult the destination service's documentation to determine the appropriate IAM roles to assign to the identity.
         },
     ],
   }</pre>
@@ -371,58 +255,36 @@
 </div>
 
 <div class="method">
-    <code class="details" id="update">update(sinkName=None, body, x__xgafv=None)</code>
-  <pre>Updates or creates a sink.
+    <code class="details" id="update">update(sinkName=None, body, uniqueWriterIdentity=None, x__xgafv=None)</code>
+  <pre>Updates a sink. If the named sink doesn't exist, then this method is identical to sinks.create. If the named sink does exist, then this method replaces the following fields in the existing sink with values from the new sink: destination, filter, output_version_format, start_time, and end_time. The updated filter might also have a new writer_identity; see the unique_writer_identity field.
 
 Args:
-  sinkName: string, Required. The resource name of the sink to update, including the parent
-resource and the sink identifier.  If the sink does not exist, this method
-creates the sink.  Example: `"projects/my-project-id/sinks/my-sink-id"`. (required)
+  sinkName: string, Required. The full resource name of the sink to update, including the parent resource and the sink identifier:
+"projects/[PROJECT_ID]/sinks/[SINK_ID]"
+"organizations/[ORGANIZATION_ID]/sinks/[SINK_ID]"
+Example: "projects/my-project-id/sinks/my-sink-id". (required)
   body: object, The request body. (required)
     The object takes the form of:
 
-{ # Describes a sink used to export log entries outside of Stackdriver Logging.
-    "endTime": "A String", # Optional. Time at which this sink expires.
-    "name": "A String", # Required. The client-assigned sink identifier, unique within the
-        # project. Example: `"my-syslog-errors-to-pubsub"`.  Sink identifiers are
-        # limited to 1000 characters and can include only the following characters:
-        # `A-Z`, `a-z`, `0-9`, and the special characters `_-.`.  The maximum length
-        # of the name is 100 characters.
-    "destination": "A String", # Required. The export destination. See
-        # [Exporting Logs With Sinks](/logging/docs/api/tasks/exporting-logs).
-        # Examples:
-        # 
-        #     "storage.googleapis.com/my-gcs-bucket"
-        #     "bigquery.googleapis.com/projects/my-project-id/datasets/my-dataset"
-        #     "pubsub.googleapis.com/projects/my-project/topics/my-topic"
-    "filter": "A String", # Optional. An [advanced logs filter](/logging/docs/view/advanced_filters).
-        # Only log entries matching the filter are exported. The filter
-        # must be consistent with the log entry format specified by the
-        # `outputVersionFormat` parameter, regardless of the format of the
-        # log entry that was originally written to Stackdriver Logging.
-        # Example filter (V2 format):
-        # 
-        #     logName=projects/my-projectid/logs/syslog AND severity>=ERROR
-    "startTime": "A String", # Optional. Time range for which this sink is active.
-        # Logs are exported only if start_time <= entry.timestamp < end_time
-        # Both start_time and end_time may be omitted to specify
-        # (half) infinite ranges. The start_time must be less than the end_time.
-    "outputVersionFormat": "A String", # Optional. The log entry version to use for this sink's exported log
-        # entries.  This version does not have to correspond to the version of the
-        # log entry that was written to Stackdriver Logging. If omitted, the
-        # v2 format is used.
-    "writerIdentity": "A String", # Output only. The IAM identity to which the destination needs to grant write
-        # access.  This may be a service account or a group.
-        # Examples (Do not assume these specific values):
-        #    "serviceAccount:cloud-logs@system.gserviceaccount.com"
-        #    "group:cloud-logs@google.com"
-        # 
-        #   For GCS destinations, the role "roles/owner" is required on the bucket
-        #   For Cloud Pubsub destinations, the role "roles/pubsub.publisher" is
-        #     required on the topic
-        #   For BigQuery, the role "roles/editor" is required on the dataset
+{ # Describes a sink used to export log entries to one of the following destinations in any project: a Cloud Storage bucket, a BigQuery dataset, or a Cloud Pub/Sub topic. A logs filter controls which log entries are exported. The sink must be created within a project or organization.
+    "endTime": "A String", # Optional. The time at which this sink will stop exporting log entries. Log entries are exported only if their timestamp is earlier than the end time. If this field is not supplied, there is no end time. If both a start time and an end time are provided, then the end time must be later than the start time.
+    "name": "A String", # Required. The client-assigned sink identifier, unique within the project. Example: "my-syslog-errors-to-pubsub". Sink identifiers are limited to 100 characters and can include only the following characters: upper and lower-case alphanumeric characters, underscores, hyphens, and periods.
+    "destination": "A String", # Required. The export destination:
+        # "storage.googleapis.com/[GCS_BUCKET]"
+        # "bigquery.googleapis.com/projects/[PROJECT_ID]/datasets/[DATASET]"
+        # "pubsub.googleapis.com/projects/[PROJECT_ID]/topics/[TOPIC_ID]"
+        # The sink's writer_identity, set when the sink is created, must have permission to write to the destination or else the log entries are not exported. For more information, see Exporting Logs With Sinks.
+    "filter": "A String", # Optional. An advanced logs filter. The only exported log entries are those that are in the resource owning the sink and that match the filter. The filter must use the log entry format specified by the output_version_format parameter. For example, in the v2 format:
+        # logName="projects/[PROJECT_ID]/logs/[LOG_ID]" AND severity>=ERROR
+    "startTime": "A String", # Optional. The time at which this sink will begin exporting log entries. Log entries are exported only if their timestamp is not earlier than the start time. The default value of this field is the time the sink is created or updated.
+    "outputVersionFormat": "A String", # Optional. The log entry format to use for this sink's exported log entries. The v2 format is used by default. The v1 format is deprecated and should be used only as part of a migration effort to v2. See Migration to the v2 API.
+    "writerIdentity": "A String", # Output only. An IAM identity&mdash;a service account or group&mdash;under which Stackdriver Logging writes the exported log entries to the sink's destination. This field is set by sinks.create and sinks.update, based on the setting of unique_writer_identity in those methods.Until you grant this identity write-access to the destination, log entry exports from this sink will fail. For more information, see Granting access for a resource. Consult the destination service's documentation to determine the appropriate IAM roles to assign to the identity.
   }
 
+  uniqueWriterIdentity: boolean, Optional. See sinks.create for a description of this field. When updating a sink, the effect of this field on the value of writer_identity in the updated sink depends on both the old and new values of this field:
+If the old and new values of this field are both false or both true, then there is no change to the sink's writer_identity.
+If the old value was false and the new value is true, then writer_identity is changed to a unique service account.
+It is an error if the old value was true and the new value is false.
   x__xgafv: string, V1 error format.
     Allowed values
       1 - v1 error format
@@ -431,46 +293,19 @@
 Returns:
   An object of the form:
 
-    { # Describes a sink used to export log entries outside of Stackdriver Logging.
-      "endTime": "A String", # Optional. Time at which this sink expires.
-      "name": "A String", # Required. The client-assigned sink identifier, unique within the
-          # project. Example: `"my-syslog-errors-to-pubsub"`.  Sink identifiers are
-          # limited to 1000 characters and can include only the following characters:
-          # `A-Z`, `a-z`, `0-9`, and the special characters `_-.`.  The maximum length
-          # of the name is 100 characters.
-      "destination": "A String", # Required. The export destination. See
-          # [Exporting Logs With Sinks](/logging/docs/api/tasks/exporting-logs).
-          # Examples:
-          #
-          #     "storage.googleapis.com/my-gcs-bucket"
-          #     "bigquery.googleapis.com/projects/my-project-id/datasets/my-dataset"
-          #     "pubsub.googleapis.com/projects/my-project/topics/my-topic"
-      "filter": "A String", # Optional. An [advanced logs filter](/logging/docs/view/advanced_filters).
-          # Only log entries matching the filter are exported. The filter
-          # must be consistent with the log entry format specified by the
-          # `outputVersionFormat` parameter, regardless of the format of the
-          # log entry that was originally written to Stackdriver Logging.
-          # Example filter (V2 format):
-          #
-          #     logName=projects/my-projectid/logs/syslog AND severity>=ERROR
-      "startTime": "A String", # Optional. Time range for which this sink is active.
-          # Logs are exported only if start_time <= entry.timestamp < end_time
-          # Both start_time and end_time may be omitted to specify
-          # (half) infinite ranges. The start_time must be less than the end_time.
-      "outputVersionFormat": "A String", # Optional. The log entry version to use for this sink's exported log
-          # entries.  This version does not have to correspond to the version of the
-          # log entry that was written to Stackdriver Logging. If omitted, the
-          # v2 format is used.
-      "writerIdentity": "A String", # Output only. The IAM identity to which the destination needs to grant write
-          # access.  This may be a service account or a group.
-          # Examples (Do not assume these specific values):
-          #    "serviceAccount:cloud-logs@system.gserviceaccount.com"
-          #    "group:cloud-logs@google.com"
-          #
-          #   For GCS destinations, the role "roles/owner" is required on the bucket
-          #   For Cloud Pubsub destinations, the role "roles/pubsub.publisher" is
-          #     required on the topic
-          #   For BigQuery, the role "roles/editor" is required on the dataset
+    { # Describes a sink used to export log entries to one of the following destinations in any project: a Cloud Storage bucket, a BigQuery dataset, or a Cloud Pub/Sub topic. A logs filter controls which log entries are exported. The sink must be created within a project or organization.
+      "endTime": "A String", # Optional. The time at which this sink will stop exporting log entries. Log entries are exported only if their timestamp is earlier than the end time. If this field is not supplied, there is no end time. If both a start time and an end time are provided, then the end time must be later than the start time.
+      "name": "A String", # Required. The client-assigned sink identifier, unique within the project. Example: "my-syslog-errors-to-pubsub". Sink identifiers are limited to 100 characters and can include only the following characters: upper and lower-case alphanumeric characters, underscores, hyphens, and periods.
+      "destination": "A String", # Required. The export destination:
+          # "storage.googleapis.com/[GCS_BUCKET]"
+          # "bigquery.googleapis.com/projects/[PROJECT_ID]/datasets/[DATASET]"
+          # "pubsub.googleapis.com/projects/[PROJECT_ID]/topics/[TOPIC_ID]"
+          # The sink's writer_identity, set when the sink is created, must have permission to write to the destination or else the log entries are not exported. For more information, see Exporting Logs With Sinks.
+      "filter": "A String", # Optional. An advanced logs filter. The only exported log entries are those that are in the resource owning the sink and that match the filter. The filter must use the log entry format specified by the output_version_format parameter. For example, in the v2 format:
+          # logName="projects/[PROJECT_ID]/logs/[LOG_ID]" AND severity>=ERROR
+      "startTime": "A String", # Optional. The time at which this sink will begin exporting log entries. Log entries are exported only if their timestamp is not earlier than the start time. The default value of this field is the time the sink is created or updated.
+      "outputVersionFormat": "A String", # Optional. The log entry format to use for this sink's exported log entries. The v2 format is used by default. The v1 format is deprecated and should be used only as part of a migration effort to v2. See Migration to the v2 API.
+      "writerIdentity": "A String", # Output only. An IAM identity&mdash;a service account or group&mdash;under which Stackdriver Logging writes the exported log entries to the sink's destination. This field is set by sinks.create and sinks.update, based on the setting of unique_writer_identity in those methods.Until you grant this identity write-access to the destination, log entry exports from this sink will fail. For more information, see Granting access for a resource. Consult the destination service's documentation to determine the appropriate IAM roles to assign to the identity.
     }</pre>
 </div>
 
diff --git a/docs/dyn/logging_v2.projects.logs.html b/docs/dyn/logging_v2.projects.logs.html
index 061b09d..1e1af12 100644
--- a/docs/dyn/logging_v2.projects.logs.html
+++ b/docs/dyn/logging_v2.projects.logs.html
@@ -76,16 +76,23 @@
 <h2>Instance Methods</h2>
 <p class="toc_element">
   <code><a href="#delete">delete(logName=None, x__xgafv=None)</a></code></p>
-<p class="firstline">Deletes a log and all its log entries.</p>
+<p class="firstline">Deletes all the log entries in a log. The log reappears if it receives new entries.</p>
+<p class="toc_element">
+  <code><a href="#list">list(parent=None, pageToken=None, x__xgafv=None, pageSize=None)</a></code></p>
+<p class="firstline">Lists the logs in projects or organizations. Only logs that have entries are listed.</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>
 <h3>Method Details</h3>
 <div class="method">
     <code class="details" id="delete">delete(logName=None, x__xgafv=None)</code>
-  <pre>Deletes a log and all its log entries.
-The log will reappear if it receives new entries.
+  <pre>Deletes all the log entries in a log. The log reappears if it receives new entries.
 
 Args:
-  logName: string, Required. The resource name of the log to delete.  Example:
-`"projects/my-project/logs/syslog"`. (required)
+  logName: string, Required. The resource name of the log to delete:
+"projects/[PROJECT_ID]/logs/[LOG_ID]"
+"organizations/[ORGANIZATION_ID]/logs/[LOG_ID]"
+[LOG_ID] must be URL-encoded. For example, "projects/my-project-id/logs/syslog", "organizations/1234567890/logs/cloudresourcemanager.googleapis.com%2Factivity". For more information about log names, see LogEntry. (required)
   x__xgafv: string, V1 error format.
     Allowed values
       1 - v1 error format
@@ -94,16 +101,53 @@
 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 `{}`.
+    { # 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="list">list(parent=None, pageToken=None, x__xgafv=None, pageSize=None)</code>
+  <pre>Lists the logs in projects or organizations. Only logs that have entries are listed.
+
+Args:
+  parent: string, Required. The resource name that owns the logs:
+"projects/[PROJECT_ID]"
+"organizations/[ORGANIZATION_ID]"
+ (required)
+  pageToken: string, Optional. If present, then retrieve the next batch of results from the preceding call to this method. pageToken must be the value of nextPageToken from the previous response. The values of other method parameters should be identical to those in the previous call.
+  x__xgafv: string, V1 error format.
+    Allowed values
+      1 - v1 error format
+      2 - v2 error format
+  pageSize: integer, Optional. The maximum number of results to return from this request. Non-positive values are ignored. The presence of nextPageToken in the response indicates that more results might be available.
+
+Returns:
+  An object of the form:
+
+    { # Result returned from ListLogs.
+    "nextPageToken": "A String", # If there might be more results than those appearing in this response, then nextPageToken is included. To get the next set of results, call this method again using the value of nextPageToken as pageToken.
+    "logNames": [ # A list of log names. For example, "projects/my-project/syslog" or "organizations/123/cloudresourcemanager.googleapis.com%2Factivity".
+      "A String",
+    ],
+  }</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>
+
 </body></html>
\ No newline at end of file
diff --git a/docs/dyn/logging_v2.projects.metrics.html b/docs/dyn/logging_v2.projects.metrics.html
index 7f2552b..2e6bcb6 100644
--- a/docs/dyn/logging_v2.projects.metrics.html
+++ b/docs/dyn/logging_v2.projects.metrics.html
@@ -98,29 +98,19 @@
   <pre>Creates a logs-based metric.
 
 Args:
-  parent: string, The resource name of the project in which to create the metric.
-Example: `"projects/my-project-id"`.
-
+  parent: string, The resource name of the project in which to create the metric:
+"projects/[PROJECT_ID]"
 The new metric must be provided in the request. (required)
   body: object, The request body. (required)
     The object takes the form of:
 
-{ # Describes a logs-based metric.  The value of the metric is the
-      # number of log entries that match a logs filter.
-    "filter": "A String", # Required. An [advanced logs filter](/logging/docs/view/advanced_filters).
-        # Example: `"resource.type=gae_app AND severity>=ERROR"`.
-    "version": "A String", # Output only. The API version that created or updated this metric.
-        # The version also dictates the syntax of the filter expression. When a value
-        # for this field is missing, the default value of V2 should be assumed.
+{ # Describes a logs-based metric. The value of the metric is the number of log entries that match a logs filter in a given time interval.
+    "filter": "A String", # Required. An advanced logs filter which is used to match log entries. Example:
+        # "resource.type=gae_app AND severity>=ERROR"
+        # The maximum length of the filter is 20000 characters.
+    "version": "A String", # Output only. The API version that created or updated this metric. The version also dictates the syntax of the filter expression. When a value for this field is missing, the default value of V2 should be assumed.
     "description": "A String", # Optional. A description of this metric, which is used in documentation.
-    "name": "A String", # Required. The client-assigned metric identifier. Example:
-        # `"severe_errors"`.  Metric identifiers are limited to 100
-        # characters and can include only the following characters: `A-Z`,
-        # `a-z`, `0-9`, and the special characters `_-.,+!*',()%/`.  The
-        # forward-slash character (`/`) denotes a hierarchy of name pieces,
-        # and it cannot be the first character of the name.  The '%' character
-        # is used to URL encode unsafe and reserved characters and must be
-        # followed by two hexadecimal digits according to RFC 1738.
+    "name": "A String", # Required. The client-assigned metric identifier. Examples: "error_count", "nginx/requests".Metric identifiers are limited to 100 characters and can include only the following characters: A-Z, a-z, 0-9, and the special characters _-.,+!*',()%/. The forward-slash character (/) denotes a hierarchy of name pieces, and it cannot be the first character of the name.The metric identifier in this field must not be URL-encoded (https://en.wikipedia.org/wiki/Percent-encoding). However, when the metric identifier appears as the [METRIC_ID] part of a metric_name API parameter, then the metric identifier must be URL-encoded. Example: "projects/my-project/metrics/nginx%2Frequests".
   }
 
   x__xgafv: string, V1 error format.
@@ -131,22 +121,13 @@
 Returns:
   An object of the form:
 
-    { # Describes a logs-based metric.  The value of the metric is the
-        # number of log entries that match a logs filter.
-      "filter": "A String", # Required. An [advanced logs filter](/logging/docs/view/advanced_filters).
-          # Example: `"resource.type=gae_app AND severity>=ERROR"`.
-      "version": "A String", # Output only. The API version that created or updated this metric.
-          # The version also dictates the syntax of the filter expression. When a value
-          # for this field is missing, the default value of V2 should be assumed.
+    { # Describes a logs-based metric. The value of the metric is the number of log entries that match a logs filter in a given time interval.
+      "filter": "A String", # Required. An advanced logs filter which is used to match log entries. Example:
+          # "resource.type=gae_app AND severity>=ERROR"
+          # The maximum length of the filter is 20000 characters.
+      "version": "A String", # Output only. The API version that created or updated this metric. The version also dictates the syntax of the filter expression. When a value for this field is missing, the default value of V2 should be assumed.
       "description": "A String", # Optional. A description of this metric, which is used in documentation.
-      "name": "A String", # Required. The client-assigned metric identifier. Example:
-          # `"severe_errors"`.  Metric identifiers are limited to 100
-          # characters and can include only the following characters: `A-Z`,
-          # `a-z`, `0-9`, and the special characters `_-.,+!*',()%/`.  The
-          # forward-slash character (`/`) denotes a hierarchy of name pieces,
-          # and it cannot be the first character of the name.  The '%' character
-          # is used to URL encode unsafe and reserved characters and must be
-          # followed by two hexadecimal digits according to RFC 1738.
+      "name": "A String", # Required. The client-assigned metric identifier. Examples: "error_count", "nginx/requests".Metric identifiers are limited to 100 characters and can include only the following characters: A-Z, a-z, 0-9, and the special characters _-.,+!*',()%/. The forward-slash character (/) denotes a hierarchy of name pieces, and it cannot be the first character of the name.The metric identifier in this field must not be URL-encoded (https://en.wikipedia.org/wiki/Percent-encoding). However, when the metric identifier appears as the [METRIC_ID] part of a metric_name API parameter, then the metric identifier must be URL-encoded. Example: "projects/my-project/metrics/nginx%2Frequests".
     }</pre>
 </div>
 
@@ -155,8 +136,9 @@
   <pre>Deletes a logs-based metric.
 
 Args:
-  metricName: string, The resource name of the metric to delete.
-Example: `"projects/my-project-id/metrics/my-metric-id"`. (required)
+  metricName: string, The resource name of the metric to delete:
+"projects/[PROJECT_ID]/metrics/[METRIC_ID]"
+ (required)
   x__xgafv: string, V1 error format.
     Allowed values
       1 - v1 error format
@@ -165,15 +147,11 @@
 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 `{}`.
+    { # 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>
 
@@ -182,8 +160,9 @@
   <pre>Gets a logs-based metric.
 
 Args:
-  metricName: string, The resource name of the desired metric.
-Example: `"projects/my-project-id/metrics/my-metric-id"`. (required)
+  metricName: string, The resource name of the desired metric:
+"projects/[PROJECT_ID]/metrics/[METRIC_ID]"
+ (required)
   x__xgafv: string, V1 error format.
     Allowed values
       1 - v1 error format
@@ -192,22 +171,13 @@
 Returns:
   An object of the form:
 
-    { # Describes a logs-based metric.  The value of the metric is the
-        # number of log entries that match a logs filter.
-      "filter": "A String", # Required. An [advanced logs filter](/logging/docs/view/advanced_filters).
-          # Example: `"resource.type=gae_app AND severity>=ERROR"`.
-      "version": "A String", # Output only. The API version that created or updated this metric.
-          # The version also dictates the syntax of the filter expression. When a value
-          # for this field is missing, the default value of V2 should be assumed.
+    { # Describes a logs-based metric. The value of the metric is the number of log entries that match a logs filter in a given time interval.
+      "filter": "A String", # Required. An advanced logs filter which is used to match log entries. Example:
+          # "resource.type=gae_app AND severity>=ERROR"
+          # The maximum length of the filter is 20000 characters.
+      "version": "A String", # Output only. The API version that created or updated this metric. The version also dictates the syntax of the filter expression. When a value for this field is missing, the default value of V2 should be assumed.
       "description": "A String", # Optional. A description of this metric, which is used in documentation.
-      "name": "A String", # Required. The client-assigned metric identifier. Example:
-          # `"severe_errors"`.  Metric identifiers are limited to 100
-          # characters and can include only the following characters: `A-Z`,
-          # `a-z`, `0-9`, and the special characters `_-.,+!*',()%/`.  The
-          # forward-slash character (`/`) denotes a hierarchy of name pieces,
-          # and it cannot be the first character of the name.  The '%' character
-          # is used to URL encode unsafe and reserved characters and must be
-          # followed by two hexadecimal digits according to RFC 1738.
+      "name": "A String", # Required. The client-assigned metric identifier. Examples: "error_count", "nginx/requests".Metric identifiers are limited to 100 characters and can include only the following characters: A-Z, a-z, 0-9, and the special characters _-.,+!*',()%/. The forward-slash character (/) denotes a hierarchy of name pieces, and it cannot be the first character of the name.The metric identifier in this field must not be URL-encoded (https://en.wikipedia.org/wiki/Percent-encoding). However, when the metric identifier appears as the [METRIC_ID] part of a metric_name API parameter, then the metric identifier must be URL-encoded. Example: "projects/my-project/metrics/nginx%2Frequests".
     }</pre>
 </div>
 
@@ -216,46 +186,31 @@
   <pre>Lists logs-based metrics.
 
 Args:
-  parent: string, Required. The resource name containing the metrics.
-Example: `"projects/my-project-id"`. (required)
-  pageToken: string, Optional. If present, then retrieve the next batch of results from the
-preceding call to this method.  `pageToken` must be the value of
-`nextPageToken` from the previous response.  The values of other method
-parameters should be identical to those in the previous call.
+  parent: string, Required. The name of the project containing the metrics:
+"projects/[PROJECT_ID]"
+ (required)
+  pageToken: string, Optional. If present, then retrieve the next batch of results from the preceding call to this method. pageToken must be the value of nextPageToken from the previous response. The values of other method parameters should be identical to those in the previous call.
   x__xgafv: string, V1 error format.
     Allowed values
       1 - v1 error format
       2 - v2 error format
-  pageSize: integer, Optional. The maximum number of results to return from this request.
-Non-positive values are ignored.  The presence of `nextPageToken` in the
-response indicates that more results might be available.
+  pageSize: integer, Optional. The maximum number of results to return from this request. Non-positive values are ignored. The presence of nextPageToken in the response indicates that more results might be available.
 
 Returns:
   An object of the form:
 
     { # Result returned from ListLogMetrics.
     "metrics": [ # A list of logs-based metrics.
-      { # Describes a logs-based metric.  The value of the metric is the
-            # number of log entries that match a logs filter.
-          "filter": "A String", # Required. An [advanced logs filter](/logging/docs/view/advanced_filters).
-              # Example: `"resource.type=gae_app AND severity>=ERROR"`.
-          "version": "A String", # Output only. The API version that created or updated this metric.
-              # The version also dictates the syntax of the filter expression. When a value
-              # for this field is missing, the default value of V2 should be assumed.
+      { # Describes a logs-based metric. The value of the metric is the number of log entries that match a logs filter in a given time interval.
+          "filter": "A String", # Required. An advanced logs filter which is used to match log entries. Example:
+              # "resource.type=gae_app AND severity>=ERROR"
+              # The maximum length of the filter is 20000 characters.
+          "version": "A String", # Output only. The API version that created or updated this metric. The version also dictates the syntax of the filter expression. When a value for this field is missing, the default value of V2 should be assumed.
           "description": "A String", # Optional. A description of this metric, which is used in documentation.
-          "name": "A String", # Required. The client-assigned metric identifier. Example:
-              # `"severe_errors"`.  Metric identifiers are limited to 100
-              # characters and can include only the following characters: `A-Z`,
-              # `a-z`, `0-9`, and the special characters `_-.,+!*',()%/`.  The
-              # forward-slash character (`/`) denotes a hierarchy of name pieces,
-              # and it cannot be the first character of the name.  The '%' character
-              # is used to URL encode unsafe and reserved characters and must be
-              # followed by two hexadecimal digits according to RFC 1738.
+          "name": "A String", # Required. The client-assigned metric identifier. Examples: "error_count", "nginx/requests".Metric identifiers are limited to 100 characters and can include only the following characters: A-Z, a-z, 0-9, and the special characters _-.,+!*',()%/. The forward-slash character (/) denotes a hierarchy of name pieces, and it cannot be the first character of the name.The metric identifier in this field must not be URL-encoded (https://en.wikipedia.org/wiki/Percent-encoding). However, when the metric identifier appears as the [METRIC_ID] part of a metric_name API parameter, then the metric identifier must be URL-encoded. Example: "projects/my-project/metrics/nginx%2Frequests".
         },
     ],
-    "nextPageToken": "A String", # If there might be more results than appear in this response, then
-        # `nextPageToken` is included.  To get the next set of results, call this
-        # method again using the value of `nextPageToken` as `pageToken`.
+    "nextPageToken": "A String", # If there might be more results than appear in this response, then nextPageToken is included. To get the next set of results, call this method again using the value of nextPageToken as pageToken.
   }</pre>
 </div>
 
@@ -278,31 +233,19 @@
   <pre>Creates or updates a logs-based metric.
 
 Args:
-  metricName: string, The resource name of the metric to update.
-Example: `"projects/my-project-id/metrics/my-metric-id"`.
-
-The updated metric must be provided in the request and have the
-same identifier that is specified in `metricName`.
-If the metric does not exist, it is created. (required)
+  metricName: string, The resource name of the metric to update:
+"projects/[PROJECT_ID]/metrics/[METRIC_ID]"
+The updated metric must be provided in the request and it's name field must be the same as [METRIC_ID] If the metric does not exist in [PROJECT_ID], then a new metric is created. (required)
   body: object, The request body. (required)
     The object takes the form of:
 
-{ # Describes a logs-based metric.  The value of the metric is the
-      # number of log entries that match a logs filter.
-    "filter": "A String", # Required. An [advanced logs filter](/logging/docs/view/advanced_filters).
-        # Example: `"resource.type=gae_app AND severity>=ERROR"`.
-    "version": "A String", # Output only. The API version that created or updated this metric.
-        # The version also dictates the syntax of the filter expression. When a value
-        # for this field is missing, the default value of V2 should be assumed.
+{ # Describes a logs-based metric. The value of the metric is the number of log entries that match a logs filter in a given time interval.
+    "filter": "A String", # Required. An advanced logs filter which is used to match log entries. Example:
+        # "resource.type=gae_app AND severity>=ERROR"
+        # The maximum length of the filter is 20000 characters.
+    "version": "A String", # Output only. The API version that created or updated this metric. The version also dictates the syntax of the filter expression. When a value for this field is missing, the default value of V2 should be assumed.
     "description": "A String", # Optional. A description of this metric, which is used in documentation.
-    "name": "A String", # Required. The client-assigned metric identifier. Example:
-        # `"severe_errors"`.  Metric identifiers are limited to 100
-        # characters and can include only the following characters: `A-Z`,
-        # `a-z`, `0-9`, and the special characters `_-.,+!*',()%/`.  The
-        # forward-slash character (`/`) denotes a hierarchy of name pieces,
-        # and it cannot be the first character of the name.  The '%' character
-        # is used to URL encode unsafe and reserved characters and must be
-        # followed by two hexadecimal digits according to RFC 1738.
+    "name": "A String", # Required. The client-assigned metric identifier. Examples: "error_count", "nginx/requests".Metric identifiers are limited to 100 characters and can include only the following characters: A-Z, a-z, 0-9, and the special characters _-.,+!*',()%/. The forward-slash character (/) denotes a hierarchy of name pieces, and it cannot be the first character of the name.The metric identifier in this field must not be URL-encoded (https://en.wikipedia.org/wiki/Percent-encoding). However, when the metric identifier appears as the [METRIC_ID] part of a metric_name API parameter, then the metric identifier must be URL-encoded. Example: "projects/my-project/metrics/nginx%2Frequests".
   }
 
   x__xgafv: string, V1 error format.
@@ -313,22 +256,13 @@
 Returns:
   An object of the form:
 
-    { # Describes a logs-based metric.  The value of the metric is the
-        # number of log entries that match a logs filter.
-      "filter": "A String", # Required. An [advanced logs filter](/logging/docs/view/advanced_filters).
-          # Example: `"resource.type=gae_app AND severity>=ERROR"`.
-      "version": "A String", # Output only. The API version that created or updated this metric.
-          # The version also dictates the syntax of the filter expression. When a value
-          # for this field is missing, the default value of V2 should be assumed.
+    { # Describes a logs-based metric. The value of the metric is the number of log entries that match a logs filter in a given time interval.
+      "filter": "A String", # Required. An advanced logs filter which is used to match log entries. Example:
+          # "resource.type=gae_app AND severity>=ERROR"
+          # The maximum length of the filter is 20000 characters.
+      "version": "A String", # Output only. The API version that created or updated this metric. The version also dictates the syntax of the filter expression. When a value for this field is missing, the default value of V2 should be assumed.
       "description": "A String", # Optional. A description of this metric, which is used in documentation.
-      "name": "A String", # Required. The client-assigned metric identifier. Example:
-          # `"severe_errors"`.  Metric identifiers are limited to 100
-          # characters and can include only the following characters: `A-Z`,
-          # `a-z`, `0-9`, and the special characters `_-.,+!*',()%/`.  The
-          # forward-slash character (`/`) denotes a hierarchy of name pieces,
-          # and it cannot be the first character of the name.  The '%' character
-          # is used to URL encode unsafe and reserved characters and must be
-          # followed by two hexadecimal digits according to RFC 1738.
+      "name": "A String", # Required. The client-assigned metric identifier. Examples: "error_count", "nginx/requests".Metric identifiers are limited to 100 characters and can include only the following characters: A-Z, a-z, 0-9, and the special characters _-.,+!*',()%/. The forward-slash character (/) denotes a hierarchy of name pieces, and it cannot be the first character of the name.The metric identifier in this field must not be URL-encoded (https://en.wikipedia.org/wiki/Percent-encoding). However, when the metric identifier appears as the [METRIC_ID] part of a metric_name API parameter, then the metric identifier must be URL-encoded. Example: "projects/my-project/metrics/nginx%2Frequests".
     }</pre>
 </div>
 
diff --git a/docs/dyn/logging_v2.projects.sinks.html b/docs/dyn/logging_v2.projects.sinks.html
index 2866ef9..4019cc6 100644
--- a/docs/dyn/logging_v2.projects.sinks.html
+++ b/docs/dyn/logging_v2.projects.sinks.html
@@ -75,77 +75,52 @@
 <h1><a href="logging_v2.html">Stackdriver Logging API</a> . <a href="logging_v2.projects.html">projects</a> . <a href="logging_v2.projects.sinks.html">sinks</a></h1>
 <h2>Instance Methods</h2>
 <p class="toc_element">
-  <code><a href="#create">create(parent=None, body, x__xgafv=None)</a></code></p>
-<p class="firstline">Creates a sink.</p>
+  <code><a href="#create">create(parent=None, body, uniqueWriterIdentity=None, x__xgafv=None)</a></code></p>
+<p class="firstline">Creates a sink that exports specified log entries to a destination. The export of newly-ingested log entries begins immediately, unless the current time is outside the sink's start and end times or the sink's writer_identity is not permitted to write to the destination. A sink can export log entries only from the resource owning the sink.</p>
 <p class="toc_element">
   <code><a href="#delete">delete(sinkName=None, x__xgafv=None)</a></code></p>
-<p class="firstline">Deletes a sink.</p>
+<p class="firstline">Deletes a sink. If the sink has a unique writer_identity, then that service account is also deleted.</p>
 <p class="toc_element">
   <code><a href="#get">get(sinkName=None, x__xgafv=None)</a></code></p>
 <p class="firstline">Gets a sink.</p>
 <p class="toc_element">
-  <code><a href="#list">list(parent=None, pageToken=None, x__xgafv=None, pageSize=None)</a></code></p>
+  <code><a href="#list">list(parent, pageToken=None, x__xgafv=None, pageSize=None)</a></code></p>
 <p class="firstline">Lists sinks.</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="#update">update(sinkName=None, body, x__xgafv=None)</a></code></p>
-<p class="firstline">Updates or creates a sink.</p>
+  <code><a href="#update">update(sinkName=None, body, uniqueWriterIdentity=None, x__xgafv=None)</a></code></p>
+<p class="firstline">Updates a sink. If the named sink doesn't exist, then this method is identical to sinks.create. If the named sink does exist, then this method replaces the following fields in the existing sink with values from the new sink: destination, filter, output_version_format, start_time, and end_time. The updated filter might also have a new writer_identity; see the unique_writer_identity field.</p>
 <h3>Method Details</h3>
 <div class="method">
-    <code class="details" id="create">create(parent=None, body, x__xgafv=None)</code>
-  <pre>Creates a sink.
+    <code class="details" id="create">create(parent=None, body, uniqueWriterIdentity=None, x__xgafv=None)</code>
+  <pre>Creates a sink that exports specified log entries to a destination. The export of newly-ingested log entries begins immediately, unless the current time is outside the sink's start and end times or the sink's writer_identity is not permitted to write to the destination. A sink can export log entries only from the resource owning the sink.
 
 Args:
-  parent: string, Required. The resource in which to create the sink.
-Example: `"projects/my-project-id"`.
-The new sink must be provided in the request. (required)
+  parent: string, Required. The resource in which to create the sink:
+"projects/[PROJECT_ID]"
+"organizations/[ORGANIZATION_ID]"
+Examples: "projects/my-logging-project", "organizations/123456789". (required)
   body: object, The request body. (required)
     The object takes the form of:
 
-{ # Describes a sink used to export log entries outside of Stackdriver Logging.
-    "endTime": "A String", # Optional. Time at which this sink expires.
-    "name": "A String", # Required. The client-assigned sink identifier, unique within the
-        # project. Example: `"my-syslog-errors-to-pubsub"`.  Sink identifiers are
-        # limited to 1000 characters and can include only the following characters:
-        # `A-Z`, `a-z`, `0-9`, and the special characters `_-.`.  The maximum length
-        # of the name is 100 characters.
-    "destination": "A String", # Required. The export destination. See
-        # [Exporting Logs With Sinks](/logging/docs/api/tasks/exporting-logs).
-        # Examples:
-        # 
-        #     "storage.googleapis.com/my-gcs-bucket"
-        #     "bigquery.googleapis.com/projects/my-project-id/datasets/my-dataset"
-        #     "pubsub.googleapis.com/projects/my-project/topics/my-topic"
-    "filter": "A String", # Optional. An [advanced logs filter](/logging/docs/view/advanced_filters).
-        # Only log entries matching the filter are exported. The filter
-        # must be consistent with the log entry format specified by the
-        # `outputVersionFormat` parameter, regardless of the format of the
-        # log entry that was originally written to Stackdriver Logging.
-        # Example filter (V2 format):
-        # 
-        #     logName=projects/my-projectid/logs/syslog AND severity>=ERROR
-    "startTime": "A String", # Optional. Time range for which this sink is active.
-        # Logs are exported only if start_time <= entry.timestamp < end_time
-        # Both start_time and end_time may be omitted to specify
-        # (half) infinite ranges. The start_time must be less than the end_time.
-    "outputVersionFormat": "A String", # Optional. The log entry version to use for this sink's exported log
-        # entries.  This version does not have to correspond to the version of the
-        # log entry that was written to Stackdriver Logging. If omitted, the
-        # v2 format is used.
-    "writerIdentity": "A String", # Output only. The IAM identity to which the destination needs to grant write
-        # access.  This may be a service account or a group.
-        # Examples (Do not assume these specific values):
-        #    "serviceAccount:cloud-logs@system.gserviceaccount.com"
-        #    "group:cloud-logs@google.com"
-        # 
-        #   For GCS destinations, the role "roles/owner" is required on the bucket
-        #   For Cloud Pubsub destinations, the role "roles/pubsub.publisher" is
-        #     required on the topic
-        #   For BigQuery, the role "roles/editor" is required on the dataset
+{ # Describes a sink used to export log entries to one of the following destinations in any project: a Cloud Storage bucket, a BigQuery dataset, or a Cloud Pub/Sub topic. A logs filter controls which log entries are exported. The sink must be created within a project or organization.
+    "endTime": "A String", # Optional. The time at which this sink will stop exporting log entries. Log entries are exported only if their timestamp is earlier than the end time. If this field is not supplied, there is no end time. If both a start time and an end time are provided, then the end time must be later than the start time.
+    "name": "A String", # Required. The client-assigned sink identifier, unique within the project. Example: "my-syslog-errors-to-pubsub". Sink identifiers are limited to 100 characters and can include only the following characters: upper and lower-case alphanumeric characters, underscores, hyphens, and periods.
+    "destination": "A String", # Required. The export destination:
+        # "storage.googleapis.com/[GCS_BUCKET]"
+        # "bigquery.googleapis.com/projects/[PROJECT_ID]/datasets/[DATASET]"
+        # "pubsub.googleapis.com/projects/[PROJECT_ID]/topics/[TOPIC_ID]"
+        # The sink's writer_identity, set when the sink is created, must have permission to write to the destination or else the log entries are not exported. For more information, see Exporting Logs With Sinks.
+    "filter": "A String", # Optional. An advanced logs filter. The only exported log entries are those that are in the resource owning the sink and that match the filter. The filter must use the log entry format specified by the output_version_format parameter. For example, in the v2 format:
+        # logName="projects/[PROJECT_ID]/logs/[LOG_ID]" AND severity>=ERROR
+    "startTime": "A String", # Optional. The time at which this sink will begin exporting log entries. Log entries are exported only if their timestamp is not earlier than the start time. The default value of this field is the time the sink is created or updated.
+    "outputVersionFormat": "A String", # Optional. The log entry format to use for this sink's exported log entries. The v2 format is used by default. The v1 format is deprecated and should be used only as part of a migration effort to v2. See Migration to the v2 API.
+    "writerIdentity": "A String", # Output only. An IAM identity&mdash;a service account or group&mdash;under which Stackdriver Logging writes the exported log entries to the sink's destination. This field is set by sinks.create and sinks.update, based on the setting of unique_writer_identity in those methods.Until you grant this identity write-access to the destination, log entry exports from this sink will fail. For more information, see Granting access for a resource. Consult the destination service's documentation to determine the appropriate IAM roles to assign to the identity.
   }
 
+  uniqueWriterIdentity: boolean, Optional. Determines the kind of IAM identity returned as writer_identity in the new sink. If this value is omitted or set to false, and if the sink's parent is a project, then the value returned as writer_identity is cloud-logs@google.com, the same identity used before the addition of writer identities to this API. The sink's destination must be in the same project as the sink itself.If this field is set to true, or if the sink is owned by a non-project resource such as an organization, then the value of writer_identity will be a unique service account used only for exports from the new sink. For more information, see writer_identity in LogSink.
   x__xgafv: string, V1 error format.
     Allowed values
       1 - v1 error format
@@ -154,58 +129,31 @@
 Returns:
   An object of the form:
 
-    { # Describes a sink used to export log entries outside of Stackdriver Logging.
-      "endTime": "A String", # Optional. Time at which this sink expires.
-      "name": "A String", # Required. The client-assigned sink identifier, unique within the
-          # project. Example: `"my-syslog-errors-to-pubsub"`.  Sink identifiers are
-          # limited to 1000 characters and can include only the following characters:
-          # `A-Z`, `a-z`, `0-9`, and the special characters `_-.`.  The maximum length
-          # of the name is 100 characters.
-      "destination": "A String", # Required. The export destination. See
-          # [Exporting Logs With Sinks](/logging/docs/api/tasks/exporting-logs).
-          # Examples:
-          #
-          #     "storage.googleapis.com/my-gcs-bucket"
-          #     "bigquery.googleapis.com/projects/my-project-id/datasets/my-dataset"
-          #     "pubsub.googleapis.com/projects/my-project/topics/my-topic"
-      "filter": "A String", # Optional. An [advanced logs filter](/logging/docs/view/advanced_filters).
-          # Only log entries matching the filter are exported. The filter
-          # must be consistent with the log entry format specified by the
-          # `outputVersionFormat` parameter, regardless of the format of the
-          # log entry that was originally written to Stackdriver Logging.
-          # Example filter (V2 format):
-          #
-          #     logName=projects/my-projectid/logs/syslog AND severity>=ERROR
-      "startTime": "A String", # Optional. Time range for which this sink is active.
-          # Logs are exported only if start_time <= entry.timestamp < end_time
-          # Both start_time and end_time may be omitted to specify
-          # (half) infinite ranges. The start_time must be less than the end_time.
-      "outputVersionFormat": "A String", # Optional. The log entry version to use for this sink's exported log
-          # entries.  This version does not have to correspond to the version of the
-          # log entry that was written to Stackdriver Logging. If omitted, the
-          # v2 format is used.
-      "writerIdentity": "A String", # Output only. The IAM identity to which the destination needs to grant write
-          # access.  This may be a service account or a group.
-          # Examples (Do not assume these specific values):
-          #    "serviceAccount:cloud-logs@system.gserviceaccount.com"
-          #    "group:cloud-logs@google.com"
-          #
-          #   For GCS destinations, the role "roles/owner" is required on the bucket
-          #   For Cloud Pubsub destinations, the role "roles/pubsub.publisher" is
-          #     required on the topic
-          #   For BigQuery, the role "roles/editor" is required on the dataset
+    { # Describes a sink used to export log entries to one of the following destinations in any project: a Cloud Storage bucket, a BigQuery dataset, or a Cloud Pub/Sub topic. A logs filter controls which log entries are exported. The sink must be created within a project or organization.
+      "endTime": "A String", # Optional. The time at which this sink will stop exporting log entries. Log entries are exported only if their timestamp is earlier than the end time. If this field is not supplied, there is no end time. If both a start time and an end time are provided, then the end time must be later than the start time.
+      "name": "A String", # Required. The client-assigned sink identifier, unique within the project. Example: "my-syslog-errors-to-pubsub". Sink identifiers are limited to 100 characters and can include only the following characters: upper and lower-case alphanumeric characters, underscores, hyphens, and periods.
+      "destination": "A String", # Required. The export destination:
+          # "storage.googleapis.com/[GCS_BUCKET]"
+          # "bigquery.googleapis.com/projects/[PROJECT_ID]/datasets/[DATASET]"
+          # "pubsub.googleapis.com/projects/[PROJECT_ID]/topics/[TOPIC_ID]"
+          # The sink's writer_identity, set when the sink is created, must have permission to write to the destination or else the log entries are not exported. For more information, see Exporting Logs With Sinks.
+      "filter": "A String", # Optional. An advanced logs filter. The only exported log entries are those that are in the resource owning the sink and that match the filter. The filter must use the log entry format specified by the output_version_format parameter. For example, in the v2 format:
+          # logName="projects/[PROJECT_ID]/logs/[LOG_ID]" AND severity>=ERROR
+      "startTime": "A String", # Optional. The time at which this sink will begin exporting log entries. Log entries are exported only if their timestamp is not earlier than the start time. The default value of this field is the time the sink is created or updated.
+      "outputVersionFormat": "A String", # Optional. The log entry format to use for this sink's exported log entries. The v2 format is used by default. The v1 format is deprecated and should be used only as part of a migration effort to v2. See Migration to the v2 API.
+      "writerIdentity": "A String", # Output only. An IAM identity&mdash;a service account or group&mdash;under which Stackdriver Logging writes the exported log entries to the sink's destination. This field is set by sinks.create and sinks.update, based on the setting of unique_writer_identity in those methods.Until you grant this identity write-access to the destination, log entry exports from this sink will fail. For more information, see Granting access for a resource. Consult the destination service's documentation to determine the appropriate IAM roles to assign to the identity.
     }</pre>
 </div>
 
 <div class="method">
     <code class="details" id="delete">delete(sinkName=None, x__xgafv=None)</code>
-  <pre>Deletes a sink.
+  <pre>Deletes a sink. If the sink has a unique writer_identity, then that service account is also deleted.
 
 Args:
-  sinkName: string, Required. The resource name of the sink to delete, including the parent
-resource and the sink identifier.  Example:
-`"projects/my-project-id/sinks/my-sink-id"`.  It is an error if the sink
-does not exist. (required)
+  sinkName: string, Required. The full resource name of the sink to delete, including the parent resource and the sink identifier:
+"projects/[PROJECT_ID]/sinks/[SINK_ID]"
+"organizations/[ORGANIZATION_ID]/sinks/[SINK_ID]"
+It is an error if the sink does not exist. Example: "projects/my-project-id/sinks/my-sink-id". It is an error if the sink does not exist. (required)
   x__xgafv: string, V1 error format.
     Allowed values
       1 - v1 error format
@@ -214,15 +162,11 @@
 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 `{}`.
+    { # 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>
 
@@ -231,8 +175,10 @@
   <pre>Gets a sink.
 
 Args:
-  sinkName: string, Required. The resource name of the sink to return.
-Example: `"projects/my-project-id/sinks/my-sink-id"`. (required)
+  sinkName: string, Required. The parent resource name of the sink:
+"projects/[PROJECT_ID]/sinks/[SINK_ID]"
+"organizations/[ORGANIZATION_ID]/sinks/[SINK_ID]"
+Example: "projects/my-project-id/sinks/my-sink-id". (required)
   x__xgafv: string, V1 error format.
     Allowed values
       1 - v1 error format
@@ -241,116 +187,54 @@
 Returns:
   An object of the form:
 
-    { # Describes a sink used to export log entries outside of Stackdriver Logging.
-      "endTime": "A String", # Optional. Time at which this sink expires.
-      "name": "A String", # Required. The client-assigned sink identifier, unique within the
-          # project. Example: `"my-syslog-errors-to-pubsub"`.  Sink identifiers are
-          # limited to 1000 characters and can include only the following characters:
-          # `A-Z`, `a-z`, `0-9`, and the special characters `_-.`.  The maximum length
-          # of the name is 100 characters.
-      "destination": "A String", # Required. The export destination. See
-          # [Exporting Logs With Sinks](/logging/docs/api/tasks/exporting-logs).
-          # Examples:
-          #
-          #     "storage.googleapis.com/my-gcs-bucket"
-          #     "bigquery.googleapis.com/projects/my-project-id/datasets/my-dataset"
-          #     "pubsub.googleapis.com/projects/my-project/topics/my-topic"
-      "filter": "A String", # Optional. An [advanced logs filter](/logging/docs/view/advanced_filters).
-          # Only log entries matching the filter are exported. The filter
-          # must be consistent with the log entry format specified by the
-          # `outputVersionFormat` parameter, regardless of the format of the
-          # log entry that was originally written to Stackdriver Logging.
-          # Example filter (V2 format):
-          #
-          #     logName=projects/my-projectid/logs/syslog AND severity>=ERROR
-      "startTime": "A String", # Optional. Time range for which this sink is active.
-          # Logs are exported only if start_time <= entry.timestamp < end_time
-          # Both start_time and end_time may be omitted to specify
-          # (half) infinite ranges. The start_time must be less than the end_time.
-      "outputVersionFormat": "A String", # Optional. The log entry version to use for this sink's exported log
-          # entries.  This version does not have to correspond to the version of the
-          # log entry that was written to Stackdriver Logging. If omitted, the
-          # v2 format is used.
-      "writerIdentity": "A String", # Output only. The IAM identity to which the destination needs to grant write
-          # access.  This may be a service account or a group.
-          # Examples (Do not assume these specific values):
-          #    "serviceAccount:cloud-logs@system.gserviceaccount.com"
-          #    "group:cloud-logs@google.com"
-          #
-          #   For GCS destinations, the role "roles/owner" is required on the bucket
-          #   For Cloud Pubsub destinations, the role "roles/pubsub.publisher" is
-          #     required on the topic
-          #   For BigQuery, the role "roles/editor" is required on the dataset
+    { # Describes a sink used to export log entries to one of the following destinations in any project: a Cloud Storage bucket, a BigQuery dataset, or a Cloud Pub/Sub topic. A logs filter controls which log entries are exported. The sink must be created within a project or organization.
+      "endTime": "A String", # Optional. The time at which this sink will stop exporting log entries. Log entries are exported only if their timestamp is earlier than the end time. If this field is not supplied, there is no end time. If both a start time and an end time are provided, then the end time must be later than the start time.
+      "name": "A String", # Required. The client-assigned sink identifier, unique within the project. Example: "my-syslog-errors-to-pubsub". Sink identifiers are limited to 100 characters and can include only the following characters: upper and lower-case alphanumeric characters, underscores, hyphens, and periods.
+      "destination": "A String", # Required. The export destination:
+          # "storage.googleapis.com/[GCS_BUCKET]"
+          # "bigquery.googleapis.com/projects/[PROJECT_ID]/datasets/[DATASET]"
+          # "pubsub.googleapis.com/projects/[PROJECT_ID]/topics/[TOPIC_ID]"
+          # The sink's writer_identity, set when the sink is created, must have permission to write to the destination or else the log entries are not exported. For more information, see Exporting Logs With Sinks.
+      "filter": "A String", # Optional. An advanced logs filter. The only exported log entries are those that are in the resource owning the sink and that match the filter. The filter must use the log entry format specified by the output_version_format parameter. For example, in the v2 format:
+          # logName="projects/[PROJECT_ID]/logs/[LOG_ID]" AND severity>=ERROR
+      "startTime": "A String", # Optional. The time at which this sink will begin exporting log entries. Log entries are exported only if their timestamp is not earlier than the start time. The default value of this field is the time the sink is created or updated.
+      "outputVersionFormat": "A String", # Optional. The log entry format to use for this sink's exported log entries. The v2 format is used by default. The v1 format is deprecated and should be used only as part of a migration effort to v2. See Migration to the v2 API.
+      "writerIdentity": "A String", # Output only. An IAM identity&mdash;a service account or group&mdash;under which Stackdriver Logging writes the exported log entries to the sink's destination. This field is set by sinks.create and sinks.update, based on the setting of unique_writer_identity in those methods.Until you grant this identity write-access to the destination, log entry exports from this sink will fail. For more information, see Granting access for a resource. Consult the destination service's documentation to determine the appropriate IAM roles to assign to the identity.
     }</pre>
 </div>
 
 <div class="method">
-    <code class="details" id="list">list(parent=None, pageToken=None, x__xgafv=None, pageSize=None)</code>
+    <code class="details" id="list">list(parent, pageToken=None, x__xgafv=None, pageSize=None)</code>
   <pre>Lists sinks.
 
 Args:
-  parent: string, Required. The cloud resource containing the sinks.
-Example: `"projects/my-logging-project"`. (required)
-  pageToken: string, Optional. If present, then retrieve the next batch of results from the
-preceding call to this method.  `pageToken` must be the value of
-`nextPageToken` from the previous response.  The values of other method
-parameters should be identical to those in the previous call.
+  parent: string, Required. The parent resource whose sinks are to be listed. Examples: "projects/my-logging-project", "organizations/123456789". (required)
+  pageToken: string, Optional. If present, then retrieve the next batch of results from the preceding call to this method. pageToken must be the value of nextPageToken from the previous response. The values of other method parameters should be identical to those in the previous call.
   x__xgafv: string, V1 error format.
     Allowed values
       1 - v1 error format
       2 - v2 error format
-  pageSize: integer, Optional. The maximum number of results to return from this request.
-Non-positive values are ignored.  The presence of `nextPageToken` in the
-response indicates that more results might be available.
+  pageSize: integer, Optional. The maximum number of results to return from this request. Non-positive values are ignored. The presence of nextPageToken in the response indicates that more results might be available.
 
 Returns:
   An object of the form:
 
-    { # Result returned from `ListSinks`.
-    "nextPageToken": "A String", # If there might be more results than appear in this response, then
-        # `nextPageToken` is included.  To get the next set of results, call the same
-        # method again using the value of `nextPageToken` as `pageToken`.
+    { # Result returned from ListSinks.
+    "nextPageToken": "A String", # If there might be more results than appear in this response, then nextPageToken is included. To get the next set of results, call the same method again using the value of nextPageToken as pageToken.
     "sinks": [ # A list of sinks.
-      { # Describes a sink used to export log entries outside of Stackdriver Logging.
-          "endTime": "A String", # Optional. Time at which this sink expires.
-          "name": "A String", # Required. The client-assigned sink identifier, unique within the
-              # project. Example: `"my-syslog-errors-to-pubsub"`.  Sink identifiers are
-              # limited to 1000 characters and can include only the following characters:
-              # `A-Z`, `a-z`, `0-9`, and the special characters `_-.`.  The maximum length
-              # of the name is 100 characters.
-          "destination": "A String", # Required. The export destination. See
-              # [Exporting Logs With Sinks](/logging/docs/api/tasks/exporting-logs).
-              # Examples:
-              #
-              #     "storage.googleapis.com/my-gcs-bucket"
-              #     "bigquery.googleapis.com/projects/my-project-id/datasets/my-dataset"
-              #     "pubsub.googleapis.com/projects/my-project/topics/my-topic"
-          "filter": "A String", # Optional. An [advanced logs filter](/logging/docs/view/advanced_filters).
-              # Only log entries matching the filter are exported. The filter
-              # must be consistent with the log entry format specified by the
-              # `outputVersionFormat` parameter, regardless of the format of the
-              # log entry that was originally written to Stackdriver Logging.
-              # Example filter (V2 format):
-              #
-              #     logName=projects/my-projectid/logs/syslog AND severity>=ERROR
-          "startTime": "A String", # Optional. Time range for which this sink is active.
-              # Logs are exported only if start_time <= entry.timestamp < end_time
-              # Both start_time and end_time may be omitted to specify
-              # (half) infinite ranges. The start_time must be less than the end_time.
-          "outputVersionFormat": "A String", # Optional. The log entry version to use for this sink's exported log
-              # entries.  This version does not have to correspond to the version of the
-              # log entry that was written to Stackdriver Logging. If omitted, the
-              # v2 format is used.
-          "writerIdentity": "A String", # Output only. The IAM identity to which the destination needs to grant write
-              # access.  This may be a service account or a group.
-              # Examples (Do not assume these specific values):
-              #    "serviceAccount:cloud-logs@system.gserviceaccount.com"
-              #    "group:cloud-logs@google.com"
-              #
-              #   For GCS destinations, the role "roles/owner" is required on the bucket
-              #   For Cloud Pubsub destinations, the role "roles/pubsub.publisher" is
-              #     required on the topic
-              #   For BigQuery, the role "roles/editor" is required on the dataset
+      { # Describes a sink used to export log entries to one of the following destinations in any project: a Cloud Storage bucket, a BigQuery dataset, or a Cloud Pub/Sub topic. A logs filter controls which log entries are exported. The sink must be created within a project or organization.
+          "endTime": "A String", # Optional. The time at which this sink will stop exporting log entries. Log entries are exported only if their timestamp is earlier than the end time. If this field is not supplied, there is no end time. If both a start time and an end time are provided, then the end time must be later than the start time.
+          "name": "A String", # Required. The client-assigned sink identifier, unique within the project. Example: "my-syslog-errors-to-pubsub". Sink identifiers are limited to 100 characters and can include only the following characters: upper and lower-case alphanumeric characters, underscores, hyphens, and periods.
+          "destination": "A String", # Required. The export destination:
+              # "storage.googleapis.com/[GCS_BUCKET]"
+              # "bigquery.googleapis.com/projects/[PROJECT_ID]/datasets/[DATASET]"
+              # "pubsub.googleapis.com/projects/[PROJECT_ID]/topics/[TOPIC_ID]"
+              # The sink's writer_identity, set when the sink is created, must have permission to write to the destination or else the log entries are not exported. For more information, see Exporting Logs With Sinks.
+          "filter": "A String", # Optional. An advanced logs filter. The only exported log entries are those that are in the resource owning the sink and that match the filter. The filter must use the log entry format specified by the output_version_format parameter. For example, in the v2 format:
+              # logName="projects/[PROJECT_ID]/logs/[LOG_ID]" AND severity>=ERROR
+          "startTime": "A String", # Optional. The time at which this sink will begin exporting log entries. Log entries are exported only if their timestamp is not earlier than the start time. The default value of this field is the time the sink is created or updated.
+          "outputVersionFormat": "A String", # Optional. The log entry format to use for this sink's exported log entries. The v2 format is used by default. The v1 format is deprecated and should be used only as part of a migration effort to v2. See Migration to the v2 API.
+          "writerIdentity": "A String", # Output only. An IAM identity&mdash;a service account or group&mdash;under which Stackdriver Logging writes the exported log entries to the sink's destination. This field is set by sinks.create and sinks.update, based on the setting of unique_writer_identity in those methods.Until you grant this identity write-access to the destination, log entry exports from this sink will fail. For more information, see Granting access for a resource. Consult the destination service's documentation to determine the appropriate IAM roles to assign to the identity.
         },
     ],
   }</pre>
@@ -371,58 +255,36 @@
 </div>
 
 <div class="method">
-    <code class="details" id="update">update(sinkName=None, body, x__xgafv=None)</code>
-  <pre>Updates or creates a sink.
+    <code class="details" id="update">update(sinkName=None, body, uniqueWriterIdentity=None, x__xgafv=None)</code>
+  <pre>Updates a sink. If the named sink doesn't exist, then this method is identical to sinks.create. If the named sink does exist, then this method replaces the following fields in the existing sink with values from the new sink: destination, filter, output_version_format, start_time, and end_time. The updated filter might also have a new writer_identity; see the unique_writer_identity field.
 
 Args:
-  sinkName: string, Required. The resource name of the sink to update, including the parent
-resource and the sink identifier.  If the sink does not exist, this method
-creates the sink.  Example: `"projects/my-project-id/sinks/my-sink-id"`. (required)
+  sinkName: string, Required. The full resource name of the sink to update, including the parent resource and the sink identifier:
+"projects/[PROJECT_ID]/sinks/[SINK_ID]"
+"organizations/[ORGANIZATION_ID]/sinks/[SINK_ID]"
+Example: "projects/my-project-id/sinks/my-sink-id". (required)
   body: object, The request body. (required)
     The object takes the form of:
 
-{ # Describes a sink used to export log entries outside of Stackdriver Logging.
-    "endTime": "A String", # Optional. Time at which this sink expires.
-    "name": "A String", # Required. The client-assigned sink identifier, unique within the
-        # project. Example: `"my-syslog-errors-to-pubsub"`.  Sink identifiers are
-        # limited to 1000 characters and can include only the following characters:
-        # `A-Z`, `a-z`, `0-9`, and the special characters `_-.`.  The maximum length
-        # of the name is 100 characters.
-    "destination": "A String", # Required. The export destination. See
-        # [Exporting Logs With Sinks](/logging/docs/api/tasks/exporting-logs).
-        # Examples:
-        # 
-        #     "storage.googleapis.com/my-gcs-bucket"
-        #     "bigquery.googleapis.com/projects/my-project-id/datasets/my-dataset"
-        #     "pubsub.googleapis.com/projects/my-project/topics/my-topic"
-    "filter": "A String", # Optional. An [advanced logs filter](/logging/docs/view/advanced_filters).
-        # Only log entries matching the filter are exported. The filter
-        # must be consistent with the log entry format specified by the
-        # `outputVersionFormat` parameter, regardless of the format of the
-        # log entry that was originally written to Stackdriver Logging.
-        # Example filter (V2 format):
-        # 
-        #     logName=projects/my-projectid/logs/syslog AND severity>=ERROR
-    "startTime": "A String", # Optional. Time range for which this sink is active.
-        # Logs are exported only if start_time <= entry.timestamp < end_time
-        # Both start_time and end_time may be omitted to specify
-        # (half) infinite ranges. The start_time must be less than the end_time.
-    "outputVersionFormat": "A String", # Optional. The log entry version to use for this sink's exported log
-        # entries.  This version does not have to correspond to the version of the
-        # log entry that was written to Stackdriver Logging. If omitted, the
-        # v2 format is used.
-    "writerIdentity": "A String", # Output only. The IAM identity to which the destination needs to grant write
-        # access.  This may be a service account or a group.
-        # Examples (Do not assume these specific values):
-        #    "serviceAccount:cloud-logs@system.gserviceaccount.com"
-        #    "group:cloud-logs@google.com"
-        # 
-        #   For GCS destinations, the role "roles/owner" is required on the bucket
-        #   For Cloud Pubsub destinations, the role "roles/pubsub.publisher" is
-        #     required on the topic
-        #   For BigQuery, the role "roles/editor" is required on the dataset
+{ # Describes a sink used to export log entries to one of the following destinations in any project: a Cloud Storage bucket, a BigQuery dataset, or a Cloud Pub/Sub topic. A logs filter controls which log entries are exported. The sink must be created within a project or organization.
+    "endTime": "A String", # Optional. The time at which this sink will stop exporting log entries. Log entries are exported only if their timestamp is earlier than the end time. If this field is not supplied, there is no end time. If both a start time and an end time are provided, then the end time must be later than the start time.
+    "name": "A String", # Required. The client-assigned sink identifier, unique within the project. Example: "my-syslog-errors-to-pubsub". Sink identifiers are limited to 100 characters and can include only the following characters: upper and lower-case alphanumeric characters, underscores, hyphens, and periods.
+    "destination": "A String", # Required. The export destination:
+        # "storage.googleapis.com/[GCS_BUCKET]"
+        # "bigquery.googleapis.com/projects/[PROJECT_ID]/datasets/[DATASET]"
+        # "pubsub.googleapis.com/projects/[PROJECT_ID]/topics/[TOPIC_ID]"
+        # The sink's writer_identity, set when the sink is created, must have permission to write to the destination or else the log entries are not exported. For more information, see Exporting Logs With Sinks.
+    "filter": "A String", # Optional. An advanced logs filter. The only exported log entries are those that are in the resource owning the sink and that match the filter. The filter must use the log entry format specified by the output_version_format parameter. For example, in the v2 format:
+        # logName="projects/[PROJECT_ID]/logs/[LOG_ID]" AND severity>=ERROR
+    "startTime": "A String", # Optional. The time at which this sink will begin exporting log entries. Log entries are exported only if their timestamp is not earlier than the start time. The default value of this field is the time the sink is created or updated.
+    "outputVersionFormat": "A String", # Optional. The log entry format to use for this sink's exported log entries. The v2 format is used by default. The v1 format is deprecated and should be used only as part of a migration effort to v2. See Migration to the v2 API.
+    "writerIdentity": "A String", # Output only. An IAM identity&mdash;a service account or group&mdash;under which Stackdriver Logging writes the exported log entries to the sink's destination. This field is set by sinks.create and sinks.update, based on the setting of unique_writer_identity in those methods.Until you grant this identity write-access to the destination, log entry exports from this sink will fail. For more information, see Granting access for a resource. Consult the destination service's documentation to determine the appropriate IAM roles to assign to the identity.
   }
 
+  uniqueWriterIdentity: boolean, Optional. See sinks.create for a description of this field. When updating a sink, the effect of this field on the value of writer_identity in the updated sink depends on both the old and new values of this field:
+If the old and new values of this field are both false or both true, then there is no change to the sink's writer_identity.
+If the old value was false and the new value is true, then writer_identity is changed to a unique service account.
+It is an error if the old value was true and the new value is false.
   x__xgafv: string, V1 error format.
     Allowed values
       1 - v1 error format
@@ -431,46 +293,19 @@
 Returns:
   An object of the form:
 
-    { # Describes a sink used to export log entries outside of Stackdriver Logging.
-      "endTime": "A String", # Optional. Time at which this sink expires.
-      "name": "A String", # Required. The client-assigned sink identifier, unique within the
-          # project. Example: `"my-syslog-errors-to-pubsub"`.  Sink identifiers are
-          # limited to 1000 characters and can include only the following characters:
-          # `A-Z`, `a-z`, `0-9`, and the special characters `_-.`.  The maximum length
-          # of the name is 100 characters.
-      "destination": "A String", # Required. The export destination. See
-          # [Exporting Logs With Sinks](/logging/docs/api/tasks/exporting-logs).
-          # Examples:
-          #
-          #     "storage.googleapis.com/my-gcs-bucket"
-          #     "bigquery.googleapis.com/projects/my-project-id/datasets/my-dataset"
-          #     "pubsub.googleapis.com/projects/my-project/topics/my-topic"
-      "filter": "A String", # Optional. An [advanced logs filter](/logging/docs/view/advanced_filters).
-          # Only log entries matching the filter are exported. The filter
-          # must be consistent with the log entry format specified by the
-          # `outputVersionFormat` parameter, regardless of the format of the
-          # log entry that was originally written to Stackdriver Logging.
-          # Example filter (V2 format):
-          #
-          #     logName=projects/my-projectid/logs/syslog AND severity>=ERROR
-      "startTime": "A String", # Optional. Time range for which this sink is active.
-          # Logs are exported only if start_time <= entry.timestamp < end_time
-          # Both start_time and end_time may be omitted to specify
-          # (half) infinite ranges. The start_time must be less than the end_time.
-      "outputVersionFormat": "A String", # Optional. The log entry version to use for this sink's exported log
-          # entries.  This version does not have to correspond to the version of the
-          # log entry that was written to Stackdriver Logging. If omitted, the
-          # v2 format is used.
-      "writerIdentity": "A String", # Output only. The IAM identity to which the destination needs to grant write
-          # access.  This may be a service account or a group.
-          # Examples (Do not assume these specific values):
-          #    "serviceAccount:cloud-logs@system.gserviceaccount.com"
-          #    "group:cloud-logs@google.com"
-          #
-          #   For GCS destinations, the role "roles/owner" is required on the bucket
-          #   For Cloud Pubsub destinations, the role "roles/pubsub.publisher" is
-          #     required on the topic
-          #   For BigQuery, the role "roles/editor" is required on the dataset
+    { # Describes a sink used to export log entries to one of the following destinations in any project: a Cloud Storage bucket, a BigQuery dataset, or a Cloud Pub/Sub topic. A logs filter controls which log entries are exported. The sink must be created within a project or organization.
+      "endTime": "A String", # Optional. The time at which this sink will stop exporting log entries. Log entries are exported only if their timestamp is earlier than the end time. If this field is not supplied, there is no end time. If both a start time and an end time are provided, then the end time must be later than the start time.
+      "name": "A String", # Required. The client-assigned sink identifier, unique within the project. Example: "my-syslog-errors-to-pubsub". Sink identifiers are limited to 100 characters and can include only the following characters: upper and lower-case alphanumeric characters, underscores, hyphens, and periods.
+      "destination": "A String", # Required. The export destination:
+          # "storage.googleapis.com/[GCS_BUCKET]"
+          # "bigquery.googleapis.com/projects/[PROJECT_ID]/datasets/[DATASET]"
+          # "pubsub.googleapis.com/projects/[PROJECT_ID]/topics/[TOPIC_ID]"
+          # The sink's writer_identity, set when the sink is created, must have permission to write to the destination or else the log entries are not exported. For more information, see Exporting Logs With Sinks.
+      "filter": "A String", # Optional. An advanced logs filter. The only exported log entries are those that are in the resource owning the sink and that match the filter. The filter must use the log entry format specified by the output_version_format parameter. For example, in the v2 format:
+          # logName="projects/[PROJECT_ID]/logs/[LOG_ID]" AND severity>=ERROR
+      "startTime": "A String", # Optional. The time at which this sink will begin exporting log entries. Log entries are exported only if their timestamp is not earlier than the start time. The default value of this field is the time the sink is created or updated.
+      "outputVersionFormat": "A String", # Optional. The log entry format to use for this sink's exported log entries. The v2 format is used by default. The v1 format is deprecated and should be used only as part of a migration effort to v2. See Migration to the v2 API.
+      "writerIdentity": "A String", # Output only. An IAM identity&mdash;a service account or group&mdash;under which Stackdriver Logging writes the exported log entries to the sink's destination. This field is set by sinks.create and sinks.update, based on the setting of unique_writer_identity in those methods.Until you grant this identity write-access to the destination, log entry exports from this sink will fail. For more information, see Granting access for a resource. Consult the destination service's documentation to determine the appropriate IAM roles to assign to the identity.
     }</pre>
 </div>
 
diff --git a/docs/dyn/logging_v2beta1.billingAccounts.logs.html b/docs/dyn/logging_v2beta1.billingAccounts.logs.html
index 9b2dc71..3036096 100644
--- a/docs/dyn/logging_v2beta1.billingAccounts.logs.html
+++ b/docs/dyn/logging_v2beta1.billingAccounts.logs.html
@@ -76,16 +76,23 @@
 <h2>Instance Methods</h2>
 <p class="toc_element">
   <code><a href="#delete">delete(logName=None, x__xgafv=None)</a></code></p>
-<p class="firstline">Deletes a log and all its log entries.</p>
+<p class="firstline">Deletes all the log entries in a log. The log reappears if it receives new entries.</p>
+<p class="toc_element">
+  <code><a href="#list">list(parent=None, pageToken=None, x__xgafv=None, pageSize=None)</a></code></p>
+<p class="firstline">Lists the logs in projects or organizations. Only logs that have entries are listed.</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>
 <h3>Method Details</h3>
 <div class="method">
     <code class="details" id="delete">delete(logName=None, x__xgafv=None)</code>
-  <pre>Deletes a log and all its log entries.
-The log will reappear if it receives new entries.
+  <pre>Deletes all the log entries in a log. The log reappears if it receives new entries.
 
 Args:
-  logName: string, Required. The resource name of the log to delete.  Example:
-`"projects/my-project/logs/syslog"`. (required)
+  logName: string, Required. The resource name of the log to delete:
+"projects/[PROJECT_ID]/logs/[LOG_ID]"
+"organizations/[ORGANIZATION_ID]/logs/[LOG_ID]"
+[LOG_ID] must be URL-encoded. For example, "projects/my-project-id/logs/syslog", "organizations/1234567890/logs/cloudresourcemanager.googleapis.com%2Factivity". For more information about log names, see LogEntry. (required)
   x__xgafv: string, V1 error format.
     Allowed values
       1 - v1 error format
@@ -94,16 +101,53 @@
 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 `{}`.
+    { # 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="list">list(parent=None, pageToken=None, x__xgafv=None, pageSize=None)</code>
+  <pre>Lists the logs in projects or organizations. Only logs that have entries are listed.
+
+Args:
+  parent: string, Required. The resource name that owns the logs:
+"projects/[PROJECT_ID]"
+"organizations/[ORGANIZATION_ID]"
+ (required)
+  pageToken: string, Optional. If present, then retrieve the next batch of results from the preceding call to this method. pageToken must be the value of nextPageToken from the previous response. The values of other method parameters should be identical to those in the previous call.
+  x__xgafv: string, V1 error format.
+    Allowed values
+      1 - v1 error format
+      2 - v2 error format
+  pageSize: integer, Optional. The maximum number of results to return from this request. Non-positive values are ignored. The presence of nextPageToken in the response indicates that more results might be available.
+
+Returns:
+  An object of the form:
+
+    { # Result returned from ListLogs.
+    "nextPageToken": "A String", # If there might be more results than those appearing in this response, then nextPageToken is included. To get the next set of results, call this method again using the value of nextPageToken as pageToken.
+    "logNames": [ # A list of log names. For example, "projects/my-project/syslog" or "organizations/123/cloudresourcemanager.googleapis.com%2Factivity".
+      "A String",
+    ],
+  }</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>
+
 </body></html>
\ No newline at end of file
diff --git a/docs/dyn/logging_v2beta1.entries.html b/docs/dyn/logging_v2beta1.entries.html
index 7edc1f3..6602c0d 100644
--- a/docs/dyn/logging_v2beta1.entries.html
+++ b/docs/dyn/logging_v2beta1.entries.html
@@ -76,48 +76,31 @@
 <h2>Instance Methods</h2>
 <p class="toc_element">
   <code><a href="#list">list(body, x__xgafv=None)</a></code></p>
-<p class="firstline">Lists log entries.  Use this method to retrieve log entries from Cloud</p>
+<p class="firstline">Lists log entries. Use this method to retrieve log entries from Stackdriver Logging. For ways to export log entries, see Exporting Logs.</p>
 <p class="toc_element">
   <code><a href="#write">write(body, x__xgafv=None)</a></code></p>
-<p class="firstline">Writes log entries to Stackdriver Logging.  All log entries are</p>
+<p class="firstline">Writes log entries to Stackdriver Logging. All log entries are written by this method.</p>
 <h3>Method Details</h3>
 <div class="method">
     <code class="details" id="list">list(body, x__xgafv=None)</code>
-  <pre>Lists log entries.  Use this method to retrieve log entries from Cloud
-Logging.  For ways to export log entries, see
-[Exporting Logs](/logging/docs/export).
+  <pre>Lists log entries. Use this method to retrieve log entries from Stackdriver Logging. For ways to export log entries, see Exporting Logs.
 
 Args:
   body: object, The request body. (required)
     The object takes the form of:
 
-{ # The parameters to `ListLogEntries`.
-    "orderBy": "A String", # Optional. How the results should be sorted.  Presently, the only permitted
-        # values are `"timestamp asc"` (default) and `"timestamp desc"`. The first
-        # option returns entries in order of increasing values of
-        # `LogEntry.timestamp` (oldest first), and the second option returns entries
-        # in order of decreasing timestamps (newest first).  Entries with equal
-        # timestamps are returned in order of `LogEntry.insertId`.
-    "resourceNames": [ # Required. One or more cloud resources from which to retrieve log entries.
-        # Example: `"projects/my-project-1A"`, `"projects/1234567890"`.  Projects
-        # listed in `projectIds` are added to this list.
+{ # The parameters to ListLogEntries.
+    "orderBy": "A String", # Optional. How the results should be sorted. Presently, the only permitted values are "timestamp asc" (default) and "timestamp desc". The first option returns entries in order of increasing values of LogEntry.timestamp (oldest first), and the second option returns entries in order of decreasing timestamps (newest first). Entries with equal timestamps are returned in order of LogEntry.insertId.
+    "resourceNames": [ # Required. Names of one or more resources from which to retrieve log entries:
+        # "projects/[PROJECT_ID]"
+        # "organizations/[ORGANIZATION_ID]"
+        # Projects listed in the project_ids field are added to this list.
       "A String",
     ],
-    "pageSize": 42, # Optional. The maximum number of results to return from this request.
-        # Non-positive values are ignored.  The presence of `nextPageToken` in the
-        # response indicates that more results might be available.
-    "filter": "A String", # Optional. A filter that chooses which log entries to return.  See [Advanced
-        # Logs Filters](/logging/docs/view/advanced_filters).  Only log entries that
-        # match the filter are returned.  An empty filter matches all log entries.
-    "pageToken": "A String", # Optional. If present, then retrieve the next batch of results from the
-        # preceding call to this method.  `pageToken` must be the value of
-        # `nextPageToken` from the previous response.  The values of other method
-        # parameters should be identical to those in the previous call.
-    "projectIds": [ # Deprecated. One or more project identifiers or project numbers from which
-        # to retrieve log entries.  Examples: `"my-project-1A"`, `"1234567890"`. If
-        # present, these project identifiers are converted to resource format and
-        # added to the list of resources in `resourceNames`. Callers should use
-        # `resourceNames` rather than this parameter.
+    "pageSize": 42, # Optional. The maximum number of results to return from this request. Non-positive values are ignored. The presence of nextPageToken in the response indicates that more results might be available.
+    "filter": "A String", # Optional. A filter that chooses which log entries to return. See Advanced Logs Filters. Only log entries that match the filter are returned. An empty filter matches all log entries in the resources listed in resource_names. Referencing a parent resource that is not listed in resource_names will cause the filter to return no results. The maximum length of the filter is 20000 characters.
+    "pageToken": "A String", # Optional. If present, then retrieve the next batch of results from the preceding call to this method. pageToken must be the value of nextPageToken from the previous response. The values of other method parameters should be identical to those in the previous call.
+    "projectIds": [ # Deprecated. Use resource_names instead. One or more project identifiers or project numbers from which to retrieve log entries. Example: "my-project-1A". If present, these project identifiers are converted to resource name format and added to the list of resources in resource_names.
       "A String",
     ],
   }
@@ -130,115 +113,64 @@
 Returns:
   An object of the form:
 
-    { # Result returned from `ListLogEntries`.
-    "nextPageToken": "A String", # If there might be more results than appear in this response, then
-        # `nextPageToken` is included.  To get the next set of results, call this
-        # method again using the value of `nextPageToken` as `pageToken`.
+    { # Result returned from ListLogEntries.
+    "nextPageToken": "A String", # If there might be more results than those appearing in this response, then nextPageToken is included. To get the next set of results, call this method again using the value of nextPageToken as pageToken.If a value for next_page_token appears and the entries field is empty, it means that the search found no log entries so far but it did not have time to search all the possible log entries. Retry the method with this value for page_token to continue the search. Alternatively, consider speeding up the search by changing your filter to specify a single log name or resource type, or to narrow the time range of the search.
     "entries": [ # A list of log entries.
       { # An individual entry in a log.
-        "httpRequest": { # A common proto for logging HTTP requests. Only contains semantics # Optional. Information about the HTTP request associated with this
-            # log entry, if applicable.
-            # defined by the HTTP specification. Product-specific logging
-            # information MUST be defined in a separate message.
-          "status": 42, # The response code indicating the status of response.
-              # Examples: 200, 404.
-          "cacheValidatedWithOriginServer": True or False, # Whether or not the response was validated with the origin server before
-              # being served from cache. This field is only meaningful if `cache_hit` is
-              # True.
-          "requestMethod": "A String", # The request method. Examples: `"GET"`, `"HEAD"`, `"PUT"`, `"POST"`.
-          "latency": "A String", # The request processing latency on the server, from the time the request was
-              # received until the response was sent.
-          "cacheFillBytes": "A String", # The number of HTTP response bytes inserted into cache. Set only when a
-              # cache fill was attempted.
-          "requestUrl": "A String", # The scheme (http, https), the host name, the path and the query
-              # portion of the URL that was requested.
-              # Example: `"http://example.com/some/info?color=red"`.
-          "serverIp": "A String", # The IP address (IPv4 or IPv6) of the origin server that the request was
-              # sent to.
+        "httpRequest": { # A common proto for logging HTTP requests. Only contains semantics defined by the HTTP specification. Product-specific logging information MUST be defined in a separate message. # Optional. Information about the HTTP request associated with this log entry, if applicable.
+          "status": 42, # The response code indicating the status of response. Examples: 200, 404.
+          "cacheValidatedWithOriginServer": True or False, # Whether or not the response was validated with the origin server before being served from cache. This field is only meaningful if cache_hit is True.
+          "requestMethod": "A String", # The request method. Examples: "GET", "HEAD", "PUT", "POST".
+          "latency": "A String", # The request processing latency on the server, from the time the request was received until the response was sent.
+          "cacheFillBytes": "A String", # The number of HTTP response bytes inserted into cache. Set only when a cache fill was attempted.
+          "requestUrl": "A String", # The scheme (http, https), the host name, the path and the query portion of the URL that was requested. Example: "http://example.com/some/info?color=red".
+          "serverIp": "A String", # The IP address (IPv4 or IPv6) of the origin server that the request was sent to.
           "cacheLookup": True or False, # Whether or not a cache lookup was attempted.
-          "cacheHit": True or False, # Whether or not an entity was served from cache
-              # (with or without validation).
-          "referer": "A String", # The referer URL of the request, as defined in
-              # [HTTP/1.1 Header Field Definitions](http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html).
-          "remoteIp": "A String", # The IP address (IPv4 or IPv6) of the client that issued the HTTP
-              # request. Examples: `"192.168.1.1"`, `"FE80::0202:B3FF:FE1E:8329"`.
-          "userAgent": "A String", # The user agent sent by the client. Example:
-              # `"Mozilla/4.0 (compatible; MSIE 6.0; Windows 98; Q312461; .NET CLR 1.0.3705)"`.
-          "requestSize": "A String", # The size of the HTTP request message in bytes, including the request
-              # headers and the request body.
-          "responseSize": "A String", # The size of the HTTP response message sent back to the client, in bytes,
-              # including the response headers and the response body.
+          "cacheHit": True or False, # Whether or not an entity was served from cache (with or without validation).
+          "referer": "A String", # The referer URL of the request, as defined in HTTP/1.1 Header Field Definitions (http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html).
+          "remoteIp": "A String", # The IP address (IPv4 or IPv6) of the client that issued the HTTP request. Examples: "192.168.1.1", "FE80::0202:B3FF:FE1E:8329".
+          "userAgent": "A String", # The user agent sent by the client. Example: "Mozilla/4.0 (compatible; MSIE 6.0; Windows 98; Q312461; .NET CLR 1.0.3705)".
+          "requestSize": "A String", # The size of the HTTP request message in bytes, including the request headers and the request body.
+          "responseSize": "A String", # The size of the HTTP response message sent back to the client, in bytes, including the response headers and the response body.
         },
-        "resource": { # An object representing a resource that can be used for monitoring, logging, # Required. The monitored resource associated with this log entry.
-            # Example: a log entry that reports a database error would be
-            # associated with the monitored resource designating the particular
-            # database that reported the error.
-            # billing, or other purposes. Examples include virtual machine instances,
-            # databases, and storage devices such as disks. The `type` field identifies a
-            # MonitoredResourceDescriptor object that describes the resource's
-            # schema. Information in the `labels` field identifies the actual resource and
-            # its attributes according to the schema. For example, a particular Compute
-            # Engine VM instance could be represented by the following object, because the
-            # MonitoredResourceDescriptor for `"gce_instance"` has labels
-            # `"instance_id"` and `"zone"`:
-            #
-            #     { "type": "gce_instance",
-            #       "labels": { "instance_id": "12345678901234",
-            #                   "zone": "us-central1-a" }}
-          "labels": { # Required. Values for all of the labels listed in the associated monitored
-              # resource descriptor. For example, Cloud SQL databases use the labels
-              # `"database_id"` and `"zone"`.
+        "resource": { # An object representing a resource that can be used for monitoring, logging, billing, or other purposes. Examples include virtual machine instances, databases, and storage devices such as disks. The type field identifies a MonitoredResourceDescriptor object that describes the resource's schema. Information in the labels field identifies the actual resource and its attributes according to the schema. For example, a particular Compute Engine VM instance could be represented by the following object, because the MonitoredResourceDescriptor for "gce_instance" has labels "instance_id" and "zone": # Required. The monitored resource associated with this log entry. Example: a log entry that reports a database error would be associated with the monitored resource designating the particular database that reported the error.
+            # { "type": "gce_instance",
+            #   "labels": { "instance_id": "12345678901234",
+            #               "zone": "us-central1-a" }}
+          "labels": { # Required. Values for all of the labels listed in the associated monitored resource descriptor. For example, Cloud SQL databases use the labels "database_id" and "zone".
             "a_key": "A String",
           },
-          "type": "A String", # Required. The monitored resource type. This field must match
-              # the `type` field of a MonitoredResourceDescriptor object. For
-              # example, the type of a Cloud SQL database is `"cloudsql_database"`.
+          "type": "A String", # Required. The monitored resource type. This field must match the type field of a MonitoredResourceDescriptor object. For example, the type of a Cloud SQL database is "cloudsql_database".
         },
-        "severity": "A String", # Optional. The severity of the log entry. The default value is
-            # `LogSeverity.DEFAULT`.
         "textPayload": "A String", # The log entry payload, represented as a Unicode string (UTF-8).
-        "timestamp": "A String", # Optional. The time the event described by the log entry occurred.  If
-            # omitted, Stackdriver Logging will use the time the log entry is received.
-        "labels": { # Optional. A set of user-defined (key, value) data that provides additional
-            # information about the log entry.
+        "trace": "A String", # Optional. Resource name of the trace associated with the log entry, if any. If it contains a relative resource name, the name is assumed to be relative to //tracing.googleapis.com. Example: projects/my-projectid/traces/06796866738c859f2f19b7cfb3214824
+        "timestamp": "A String", # Optional. The time the event described by the log entry occurred. If omitted, Stackdriver Logging will use the time the log entry is received.
+        "labels": { # Optional. A set of user-defined (key, value) data that provides additional information about the log entry.
           "a_key": "A String",
         },
-        "insertId": "A String", # Optional. A unique ID for the log entry. If you provide this
-            # field, the logging service considers other log entries in the
-            # same project with the same ID as duplicates which can be removed.  If
-            # omitted, Stackdriver Logging will generate a unique ID for this
-            # log entry.
-        "jsonPayload": { # The log entry payload, represented as a structure that
-            # is expressed as a JSON object.
+        "insertId": "A String", # Optional. A unique ID for the log entry. If you provide this field, the logging service considers other log entries in the same project with the same ID as duplicates which can be removed. If omitted, Stackdriver Logging will generate a unique ID for this log entry.
+        "jsonPayload": { # The log entry payload, represented as a structure that is expressed as a JSON object.
           "a_key": "", # Properties of the object.
         },
-        "logName": "A String", # Required. The resource name of the log to which this log entry
-            # belongs. The format of the name is
-            # `"projects/<project-id>/logs/<log-id>"`.  Examples:
-            # `"projects/my-projectid/logs/syslog"`,
-            # `"projects/my-projectid/logs/library.googleapis.com%2Fbook_log"`.
-            #
-            # The log ID part of resource name must be less than 512 characters
-            # long and can only include the following characters: upper and
-            # lower case alphanumeric characters: [A-Za-z0-9]; and punctuation
-            # characters: forward-slash, underscore, hyphen, and period.
-            # Forward-slash (`/`) characters in the log ID must be URL-encoded.
-        "protoPayload": { # The log entry payload, represented as a protocol buffer.  Some
-            # Google Cloud Platform services use this field for their log
-            # entry payloads.
+        "logName": "A String", # Required. The resource name of the log to which this log entry belongs:
+            # "projects/[PROJECT_ID]/logs/[LOG_ID]"
+            # "organizations/[ORGANIZATION_ID]/logs/[LOG_ID]"
+            # [LOG_ID] must be URL-encoded within log_name. Example: "organizations/1234567890/logs/cloudresourcemanager.googleapis.com%2Factivity". [LOG_ID] must be less than 512 characters long and can only include the following characters: upper and lower case alphanumeric characters, forward-slash, underscore, hyphen, and period.For backward compatibility, if log_name begins with a forward-slash, such as /projects/..., then the log entry is ingested as usual but the forward-slash is removed. Listing the log entry will not show the leading slash and filtering for a log name with a leading slash will never return any results.
+        "protoPayload": { # The log entry payload, represented as a protocol buffer. Some Google Cloud Platform services use this field for their log entry payloads.
           "a_key": "", # Properties of the object. Contains field @type with type URL.
         },
-        "operation": { # Additional information about a potentially long-running operation with which # Optional. Information about an operation associated with the log entry, if
-            # applicable.
-            # a log entry is associated.
+        "operation": { # Additional information about a potentially long-running operation with which a log entry is associated. # Optional. Information about an operation associated with the log entry, if applicable.
           "last": True or False, # Optional. Set this to True if this is the last log entry in the operation.
-          "id": "A String", # Optional. An arbitrary operation identifier. Log entries with the
-              # same identifier are assumed to be part of the same operation.
-          "producer": "A String", # Optional. An arbitrary producer identifier. The combination of
-              # `id` and `producer` must be globally unique.  Examples for `producer`:
-              # `"MyDivision.MyBigCompany.com"`, `"github.com/MyProject/MyApplication"`.
+          "id": "A String", # Optional. An arbitrary operation identifier. Log entries with the same identifier are assumed to be part of the same operation.
+          "producer": "A String", # Optional. An arbitrary producer identifier. The combination of id and producer must be globally unique. Examples for producer: "MyDivision.MyBigCompany.com", "github.com/MyProject/MyApplication".
           "first": True or False, # Optional. Set this to True if this is the first log entry in the operation.
         },
+        "sourceLocation": { # Additional information about the source code location that produced the log entry. # Optional. Source code location information associated with the log entry, if any.
+          "function": "A String", # Optional. Human-readable name of the function or method being invoked, with optional context such as the class or package name. This information may be used in contexts such as the logs viewer, where a file and line number are less meaningful. The format can vary by language. For example: qual.if.ied.Class.method (Java), dir/package.func (Go), function (Python).
+          "line": "A String", # Optional. Line within the source file. 1-based; 0 indicates no line number available.
+          "file": "A String", # Optional. Source file name. Depending on the runtime environment, this might be a simple name or a fully-qualified name.
+        },
+        "severity": "A String", # Optional. The severity of the log entry. The default value is LogSeverity.DEFAULT.
       },
     ],
   }</pre>
@@ -246,171 +178,90 @@
 
 <div class="method">
     <code class="details" id="write">write(body, x__xgafv=None)</code>
-  <pre>Writes log entries to Stackdriver Logging.  All log entries are
-written by this method.
+  <pre>Writes log entries to Stackdriver Logging. All log entries are written by this method.
 
 Args:
   body: object, The request body. (required)
     The object takes the form of:
 
 { # The parameters to WriteLogEntries.
-    "resource": { # An object representing a resource that can be used for monitoring, logging, # Optional. A default monitored resource object that is assigned to all log
-        # entries in `entries` that do not specify a value for `resource`. Example:
-        # 
-        #     { "type": "gce_instance",
-        #       "labels": {
-        #         "zone": "us-central1-a", "instance_id": "00000000000000000000" }}
-        # 
+    "resource": { # An object representing a resource that can be used for monitoring, logging, billing, or other purposes. Examples include virtual machine instances, databases, and storage devices such as disks. The type field identifies a MonitoredResourceDescriptor object that describes the resource's schema. Information in the labels field identifies the actual resource and its attributes according to the schema. For example, a particular Compute Engine VM instance could be represented by the following object, because the MonitoredResourceDescriptor for "gce_instance" has labels "instance_id" and "zone": # Optional. A default monitored resource object that is assigned to all log entries in entries that do not specify a value for resource. Example:
+        # { "type": "gce_instance",
+        #   "labels": {
+        #     "zone": "us-central1-a", "instance_id": "00000000000000000000" }}
         # See LogEntry.
-        # billing, or other purposes. Examples include virtual machine instances,
-        # databases, and storage devices such as disks. The `type` field identifies a
-        # MonitoredResourceDescriptor object that describes the resource's
-        # schema. Information in the `labels` field identifies the actual resource and
-        # its attributes according to the schema. For example, a particular Compute
-        # Engine VM instance could be represented by the following object, because the
-        # MonitoredResourceDescriptor for `"gce_instance"` has labels
-        # `"instance_id"` and `"zone"`:
-        #
-        #     { "type": "gce_instance",
-        #       "labels": { "instance_id": "12345678901234",
-        #                   "zone": "us-central1-a" }}
-      "labels": { # Required. Values for all of the labels listed in the associated monitored
-          # resource descriptor. For example, Cloud SQL databases use the labels
-          # `"database_id"` and `"zone"`.
+        # { "type": "gce_instance",
+        #   "labels": { "instance_id": "12345678901234",
+        #               "zone": "us-central1-a" }}
+      "labels": { # Required. Values for all of the labels listed in the associated monitored resource descriptor. For example, Cloud SQL databases use the labels "database_id" and "zone".
         "a_key": "A String",
       },
-      "type": "A String", # Required. The monitored resource type. This field must match
-          # the `type` field of a MonitoredResourceDescriptor object. For
-          # example, the type of a Cloud SQL database is `"cloudsql_database"`.
+      "type": "A String", # Required. The monitored resource type. This field must match the type field of a MonitoredResourceDescriptor object. For example, the type of a Cloud SQL database is "cloudsql_database".
     },
-    "partialSuccess": True or False, # Optional. Whether valid entries should be written even if some other
-        # entries fail due to INVALID_ARGUMENT or PERMISSION_DENIED errors. If any
-        # entry is not written, the response status will be the error associated
-        # with one of the failed entries and include error details in the form of
-        # WriteLogEntriesPartialErrors.
-    "labels": { # Optional. Default labels that are added to the `labels` field of all log
-        # entries in `entries`. If a log entry already has a label with the same key
-        # as a label in this parameter, then the log entry's label is not changed.
-        # See LogEntry.
+    "partialSuccess": True or False, # Optional. Whether valid entries should be written even if some other entries fail due to INVALID_ARGUMENT or PERMISSION_DENIED errors. If any entry is not written, the response status will be the error associated with one of the failed entries and include error details in the form of WriteLogEntriesPartialErrors.
+    "labels": { # Optional. Default labels that are added to the labels field of all log entries in entries. If a log entry already has a label with the same key as a label in this parameter, then the log entry's label is not changed. See LogEntry.
       "a_key": "A String",
     },
-    "logName": "A String", # Optional. A default log resource name that is assigned to all log entries
-        # in `entries` that do not specify a value for `log_name`.  Example:
-        # `"projects/my-project/logs/syslog"`.  See
-        # LogEntry.
-    "entries": [ # Required. The log entries to write. Values supplied for the fields
-        # `log_name`, `resource`, and `labels` in this `entries.write` request are
-        # added to those log entries that do not provide their own values for the
-        # fields.
-        # 
-        # To improve throughput and to avoid exceeding the
-        # [quota limit](/logging/quota-policy) for calls to `entries.write`,
-        # you should write multiple log entries at once rather than
-        # calling this method for each individual log entry.
+    "logName": "A String", # Optional. A default log resource name that is assigned to all log entries in entries that do not specify a value for log_name:
+        # "projects/[PROJECT_ID]/logs/[LOG_ID]"
+        # "organizations/[ORGANIZATION_ID]/logs/[LOG_ID]"
+        # [LOG_ID] must be URL-encoded. For example, "projects/my-project-id/logs/syslog" or "organizations/1234567890/logs/cloudresourcemanager.googleapis.com%2Factivity". For more information about log names, see LogEntry.
+    "entries": [ # Required. The log entries to write. Values supplied for the fields log_name, resource, and labels in this entries.write request are added to those log entries that do not provide their own values for the fields.To improve throughput and to avoid exceeding the quota limit for calls to entries.write, you should write multiple log entries at once rather than calling this method for each individual log entry.
       { # An individual entry in a log.
-        "httpRequest": { # A common proto for logging HTTP requests. Only contains semantics # Optional. Information about the HTTP request associated with this
-            # log entry, if applicable.
-            # defined by the HTTP specification. Product-specific logging
-            # information MUST be defined in a separate message.
-          "status": 42, # The response code indicating the status of response.
-              # Examples: 200, 404.
-          "cacheValidatedWithOriginServer": True or False, # Whether or not the response was validated with the origin server before
-              # being served from cache. This field is only meaningful if `cache_hit` is
-              # True.
-          "requestMethod": "A String", # The request method. Examples: `"GET"`, `"HEAD"`, `"PUT"`, `"POST"`.
-          "latency": "A String", # The request processing latency on the server, from the time the request was
-              # received until the response was sent.
-          "cacheFillBytes": "A String", # The number of HTTP response bytes inserted into cache. Set only when a
-              # cache fill was attempted.
-          "requestUrl": "A String", # The scheme (http, https), the host name, the path and the query
-              # portion of the URL that was requested.
-              # Example: `"http://example.com/some/info?color=red"`.
-          "serverIp": "A String", # The IP address (IPv4 or IPv6) of the origin server that the request was
-              # sent to.
+        "httpRequest": { # A common proto for logging HTTP requests. Only contains semantics defined by the HTTP specification. Product-specific logging information MUST be defined in a separate message. # Optional. Information about the HTTP request associated with this log entry, if applicable.
+          "status": 42, # The response code indicating the status of response. Examples: 200, 404.
+          "cacheValidatedWithOriginServer": True or False, # Whether or not the response was validated with the origin server before being served from cache. This field is only meaningful if cache_hit is True.
+          "requestMethod": "A String", # The request method. Examples: "GET", "HEAD", "PUT", "POST".
+          "latency": "A String", # The request processing latency on the server, from the time the request was received until the response was sent.
+          "cacheFillBytes": "A String", # The number of HTTP response bytes inserted into cache. Set only when a cache fill was attempted.
+          "requestUrl": "A String", # The scheme (http, https), the host name, the path and the query portion of the URL that was requested. Example: "http://example.com/some/info?color=red".
+          "serverIp": "A String", # The IP address (IPv4 or IPv6) of the origin server that the request was sent to.
           "cacheLookup": True or False, # Whether or not a cache lookup was attempted.
-          "cacheHit": True or False, # Whether or not an entity was served from cache
-              # (with or without validation).
-          "referer": "A String", # The referer URL of the request, as defined in
-              # [HTTP/1.1 Header Field Definitions](http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html).
-          "remoteIp": "A String", # The IP address (IPv4 or IPv6) of the client that issued the HTTP
-              # request. Examples: `"192.168.1.1"`, `"FE80::0202:B3FF:FE1E:8329"`.
-          "userAgent": "A String", # The user agent sent by the client. Example:
-              # `"Mozilla/4.0 (compatible; MSIE 6.0; Windows 98; Q312461; .NET CLR 1.0.3705)"`.
-          "requestSize": "A String", # The size of the HTTP request message in bytes, including the request
-              # headers and the request body.
-          "responseSize": "A String", # The size of the HTTP response message sent back to the client, in bytes,
-              # including the response headers and the response body.
+          "cacheHit": True or False, # Whether or not an entity was served from cache (with or without validation).
+          "referer": "A String", # The referer URL of the request, as defined in HTTP/1.1 Header Field Definitions (http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html).
+          "remoteIp": "A String", # The IP address (IPv4 or IPv6) of the client that issued the HTTP request. Examples: "192.168.1.1", "FE80::0202:B3FF:FE1E:8329".
+          "userAgent": "A String", # The user agent sent by the client. Example: "Mozilla/4.0 (compatible; MSIE 6.0; Windows 98; Q312461; .NET CLR 1.0.3705)".
+          "requestSize": "A String", # The size of the HTTP request message in bytes, including the request headers and the request body.
+          "responseSize": "A String", # The size of the HTTP response message sent back to the client, in bytes, including the response headers and the response body.
         },
-        "resource": { # An object representing a resource that can be used for monitoring, logging, # Required. The monitored resource associated with this log entry.
-            # Example: a log entry that reports a database error would be
-            # associated with the monitored resource designating the particular
-            # database that reported the error.
-            # billing, or other purposes. Examples include virtual machine instances,
-            # databases, and storage devices such as disks. The `type` field identifies a
-            # MonitoredResourceDescriptor object that describes the resource's
-            # schema. Information in the `labels` field identifies the actual resource and
-            # its attributes according to the schema. For example, a particular Compute
-            # Engine VM instance could be represented by the following object, because the
-            # MonitoredResourceDescriptor for `"gce_instance"` has labels
-            # `"instance_id"` and `"zone"`:
-            #
-            #     { "type": "gce_instance",
-            #       "labels": { "instance_id": "12345678901234",
-            #                   "zone": "us-central1-a" }}
-          "labels": { # Required. Values for all of the labels listed in the associated monitored
-              # resource descriptor. For example, Cloud SQL databases use the labels
-              # `"database_id"` and `"zone"`.
+        "resource": { # An object representing a resource that can be used for monitoring, logging, billing, or other purposes. Examples include virtual machine instances, databases, and storage devices such as disks. The type field identifies a MonitoredResourceDescriptor object that describes the resource's schema. Information in the labels field identifies the actual resource and its attributes according to the schema. For example, a particular Compute Engine VM instance could be represented by the following object, because the MonitoredResourceDescriptor for "gce_instance" has labels "instance_id" and "zone": # Required. The monitored resource associated with this log entry. Example: a log entry that reports a database error would be associated with the monitored resource designating the particular database that reported the error.
+            # { "type": "gce_instance",
+            #   "labels": { "instance_id": "12345678901234",
+            #               "zone": "us-central1-a" }}
+          "labels": { # Required. Values for all of the labels listed in the associated monitored resource descriptor. For example, Cloud SQL databases use the labels "database_id" and "zone".
             "a_key": "A String",
           },
-          "type": "A String", # Required. The monitored resource type. This field must match
-              # the `type` field of a MonitoredResourceDescriptor object. For
-              # example, the type of a Cloud SQL database is `"cloudsql_database"`.
+          "type": "A String", # Required. The monitored resource type. This field must match the type field of a MonitoredResourceDescriptor object. For example, the type of a Cloud SQL database is "cloudsql_database".
         },
-        "severity": "A String", # Optional. The severity of the log entry. The default value is
-            # `LogSeverity.DEFAULT`.
         "textPayload": "A String", # The log entry payload, represented as a Unicode string (UTF-8).
-        "timestamp": "A String", # Optional. The time the event described by the log entry occurred.  If
-            # omitted, Stackdriver Logging will use the time the log entry is received.
-        "labels": { # Optional. A set of user-defined (key, value) data that provides additional
-            # information about the log entry.
+        "trace": "A String", # Optional. Resource name of the trace associated with the log entry, if any. If it contains a relative resource name, the name is assumed to be relative to //tracing.googleapis.com. Example: projects/my-projectid/traces/06796866738c859f2f19b7cfb3214824
+        "timestamp": "A String", # Optional. The time the event described by the log entry occurred. If omitted, Stackdriver Logging will use the time the log entry is received.
+        "labels": { # Optional. A set of user-defined (key, value) data that provides additional information about the log entry.
           "a_key": "A String",
         },
-        "insertId": "A String", # Optional. A unique ID for the log entry. If you provide this
-            # field, the logging service considers other log entries in the
-            # same project with the same ID as duplicates which can be removed.  If
-            # omitted, Stackdriver Logging will generate a unique ID for this
-            # log entry.
-        "jsonPayload": { # The log entry payload, represented as a structure that
-            # is expressed as a JSON object.
+        "insertId": "A String", # Optional. A unique ID for the log entry. If you provide this field, the logging service considers other log entries in the same project with the same ID as duplicates which can be removed. If omitted, Stackdriver Logging will generate a unique ID for this log entry.
+        "jsonPayload": { # The log entry payload, represented as a structure that is expressed as a JSON object.
           "a_key": "", # Properties of the object.
         },
-        "logName": "A String", # Required. The resource name of the log to which this log entry
-            # belongs. The format of the name is
-            # `"projects/<project-id>/logs/<log-id>"`.  Examples:
-            # `"projects/my-projectid/logs/syslog"`,
-            # `"projects/my-projectid/logs/library.googleapis.com%2Fbook_log"`.
-            #
-            # The log ID part of resource name must be less than 512 characters
-            # long and can only include the following characters: upper and
-            # lower case alphanumeric characters: [A-Za-z0-9]; and punctuation
-            # characters: forward-slash, underscore, hyphen, and period.
-            # Forward-slash (`/`) characters in the log ID must be URL-encoded.
-        "protoPayload": { # The log entry payload, represented as a protocol buffer.  Some
-            # Google Cloud Platform services use this field for their log
-            # entry payloads.
+        "logName": "A String", # Required. The resource name of the log to which this log entry belongs:
+            # "projects/[PROJECT_ID]/logs/[LOG_ID]"
+            # "organizations/[ORGANIZATION_ID]/logs/[LOG_ID]"
+            # [LOG_ID] must be URL-encoded within log_name. Example: "organizations/1234567890/logs/cloudresourcemanager.googleapis.com%2Factivity". [LOG_ID] must be less than 512 characters long and can only include the following characters: upper and lower case alphanumeric characters, forward-slash, underscore, hyphen, and period.For backward compatibility, if log_name begins with a forward-slash, such as /projects/..., then the log entry is ingested as usual but the forward-slash is removed. Listing the log entry will not show the leading slash and filtering for a log name with a leading slash will never return any results.
+        "protoPayload": { # The log entry payload, represented as a protocol buffer. Some Google Cloud Platform services use this field for their log entry payloads.
           "a_key": "", # Properties of the object. Contains field @type with type URL.
         },
-        "operation": { # Additional information about a potentially long-running operation with which # Optional. Information about an operation associated with the log entry, if
-            # applicable.
-            # a log entry is associated.
+        "operation": { # Additional information about a potentially long-running operation with which a log entry is associated. # Optional. Information about an operation associated with the log entry, if applicable.
           "last": True or False, # Optional. Set this to True if this is the last log entry in the operation.
-          "id": "A String", # Optional. An arbitrary operation identifier. Log entries with the
-              # same identifier are assumed to be part of the same operation.
-          "producer": "A String", # Optional. An arbitrary producer identifier. The combination of
-              # `id` and `producer` must be globally unique.  Examples for `producer`:
-              # `"MyDivision.MyBigCompany.com"`, `"github.com/MyProject/MyApplication"`.
+          "id": "A String", # Optional. An arbitrary operation identifier. Log entries with the same identifier are assumed to be part of the same operation.
+          "producer": "A String", # Optional. An arbitrary producer identifier. The combination of id and producer must be globally unique. Examples for producer: "MyDivision.MyBigCompany.com", "github.com/MyProject/MyApplication".
           "first": True or False, # Optional. Set this to True if this is the first log entry in the operation.
         },
+        "sourceLocation": { # Additional information about the source code location that produced the log entry. # Optional. Source code location information associated with the log entry, if any.
+          "function": "A String", # Optional. Human-readable name of the function or method being invoked, with optional context such as the class or package name. This information may be used in contexts such as the logs viewer, where a file and line number are less meaningful. The format can vary by language. For example: qual.if.ied.Class.method (Java), dir/package.func (Go), function (Python).
+          "line": "A String", # Optional. Line within the source file. 1-based; 0 indicates no line number available.
+          "file": "A String", # Optional. Source file name. Depending on the runtime environment, this might be a simple name or a fully-qualified name.
+        },
+        "severity": "A String", # Optional. The severity of the log entry. The default value is LogSeverity.DEFAULT.
       },
     ],
   }
@@ -423,8 +274,7 @@
 Returns:
   An object of the form:
 
-    { # Result returned from WriteLogEntries.
-      # empty
+    { # Result returned from WriteLogEntries. empty
   }</pre>
 </div>
 
diff --git a/docs/dyn/logging_v2beta1.monitoredResourceDescriptors.html b/docs/dyn/logging_v2beta1.monitoredResourceDescriptors.html
index 5ed2731..b5ce7bd 100644
--- a/docs/dyn/logging_v2beta1.monitoredResourceDescriptors.html
+++ b/docs/dyn/logging_v2beta1.monitoredResourceDescriptors.html
@@ -76,23 +76,18 @@
 <h2>Instance Methods</h2>
 <p class="toc_element">
   <code><a href="#list">list(pageSize=None, pageToken=None, x__xgafv=None)</a></code></p>
-<p class="firstline">Lists the monitored resource descriptors used by Stackdriver Logging.</p>
+<p class="firstline">Lists the descriptors for monitored resource types used by Stackdriver Logging.</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>
 <h3>Method Details</h3>
 <div class="method">
     <code class="details" id="list">list(pageSize=None, pageToken=None, x__xgafv=None)</code>
-  <pre>Lists the monitored resource descriptors used by Stackdriver Logging.
+  <pre>Lists the descriptors for monitored resource types used by Stackdriver Logging.
 
 Args:
-  pageSize: integer, Optional. The maximum number of results to return from this request.
-Non-positive values are ignored.  The presence of `nextPageToken` in the
-response indicates that more results might be available.
-  pageToken: string, Optional. If present, then retrieve the next batch of results from the
-preceding call to this method.  `pageToken` must be the value of
-`nextPageToken` from the previous response.  The values of other method
-parameters should be identical to those in the previous call.
+  pageSize: integer, Optional. The maximum number of results to return from this request. Non-positive values are ignored. The presence of nextPageToken in the response indicates that more results might be available.
+  pageToken: string, Optional. If present, then retrieve the next batch of results from the preceding call to this method. pageToken must be the value of nextPageToken from the previous response. The values of other method parameters should be identical to those in the previous call.
   x__xgafv: string, V1 error format.
     Allowed values
       1 - v1 error format
@@ -102,43 +97,20 @@
   An object of the form:
 
     { # Result returned from ListMonitoredResourceDescriptors.
-    "nextPageToken": "A String", # If there might be more results than appear in this response, then
-        # `nextPageToken` is included.  To get the next set of results, call this
-        # method again using the value of `nextPageToken` as `pageToken`.
+    "nextPageToken": "A String", # If there might be more results than those appearing in this response, then nextPageToken is included. To get the next set of results, call this method again using the value of nextPageToken as pageToken.
     "resourceDescriptors": [ # A list of resource descriptors.
-      { # An object that describes the schema of a MonitoredResource object using a
-          # type name and a set of labels.  For example, the monitored resource
-          # descriptor for Google Compute Engine VM instances has a type of
-          # `"gce_instance"` and specifies the use of the labels `"instance_id"` and
-          # `"zone"` to identify particular VM instances.
-          #
-          # Different APIs can support different monitored resource types. APIs generally
-          # provide a `list` method that returns the monitored resource descriptors used
-          # by the API.
-        "type": "A String", # Required. The monitored resource type. For example, the type
-            # `"cloudsql_database"` represents databases in Google Cloud SQL.
-            # The maximum length of this value is 256 characters.
-        "labels": [ # Required. A set of labels used to describe instances of this monitored
-            # resource type. For example, an individual Google Cloud SQL database is
-            # identified by values for the labels `"database_id"` and `"zone"`.
+      { # An object that describes the schema of a MonitoredResource object using a type name and a set of labels. For example, the monitored resource descriptor for Google Compute Engine VM instances has a type of "gce_instance" and specifies the use of the labels "instance_id" and "zone" to identify particular VM instances.Different APIs can support different monitored resource types. APIs generally provide a list method that returns the monitored resource descriptors used by the API.
+        "type": "A String", # Required. The monitored resource type. For example, the type "cloudsql_database" represents databases in Google Cloud SQL. The maximum length of this value is 256 characters.
+        "labels": [ # Required. A set of labels used to describe instances of this monitored resource type. For example, an individual Google Cloud SQL database is identified by values for the labels "database_id" and "zone".
           { # A description of a label.
             "valueType": "A String", # The type of data that can be assigned to the label.
             "description": "A String", # A human-readable description for the label.
             "key": "A String", # The label key.
           },
         ],
-        "displayName": "A String", # Optional. A concise name for the monitored resource type that might be
-            # displayed in user interfaces. It should be a Title Cased Noun Phrase,
-            # without any article or other determiners. For example,
-            # `"Google Cloud SQL Database"`.
-        "description": "A String", # Optional. A detailed description of the monitored resource type that might
-            # be used in documentation.
-        "name": "A String", # Optional. The resource name of the monitored resource descriptor:
-            # `"projects/{project_id}/monitoredResourceDescriptors/{type}"` where
-            # {type} is the value of the `type` field in this object and
-            # {project_id} is a project ID that provides API-specific context for
-            # accessing the type.  APIs that do not use project information can use the
-            # resource name format `"monitoredResourceDescriptors/{type}"`.
+        "displayName": "A String", # Optional. A concise name for the monitored resource type that might be displayed in user interfaces. It should be a Title Cased Noun Phrase, without any article or other determiners. For example, "Google Cloud SQL Database".
+        "description": "A String", # Optional. A detailed description of the monitored resource type that might be used in documentation.
+        "name": "A String", # Optional. The resource name of the monitored resource descriptor: "projects/{project_id}/monitoredResourceDescriptors/{type}" where {type} is the value of the type field in this object and {project_id} is a project ID that provides API-specific context for accessing the type. APIs that do not use project information can use the resource name format "monitoredResourceDescriptors/{type}".
       },
     ],
   }</pre>
diff --git a/docs/dyn/logging_v2beta1.organizations.logs.html b/docs/dyn/logging_v2beta1.organizations.logs.html
index 4ae14c5..ed86da3 100644
--- a/docs/dyn/logging_v2beta1.organizations.logs.html
+++ b/docs/dyn/logging_v2beta1.organizations.logs.html
@@ -76,16 +76,23 @@
 <h2>Instance Methods</h2>
 <p class="toc_element">
   <code><a href="#delete">delete(logName=None, x__xgafv=None)</a></code></p>
-<p class="firstline">Deletes a log and all its log entries.</p>
+<p class="firstline">Deletes all the log entries in a log. The log reappears if it receives new entries.</p>
+<p class="toc_element">
+  <code><a href="#list">list(parent=None, pageToken=None, x__xgafv=None, pageSize=None)</a></code></p>
+<p class="firstline">Lists the logs in projects or organizations. Only logs that have entries are listed.</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>
 <h3>Method Details</h3>
 <div class="method">
     <code class="details" id="delete">delete(logName=None, x__xgafv=None)</code>
-  <pre>Deletes a log and all its log entries.
-The log will reappear if it receives new entries.
+  <pre>Deletes all the log entries in a log. The log reappears if it receives new entries.
 
 Args:
-  logName: string, Required. The resource name of the log to delete.  Example:
-`"projects/my-project/logs/syslog"`. (required)
+  logName: string, Required. The resource name of the log to delete:
+"projects/[PROJECT_ID]/logs/[LOG_ID]"
+"organizations/[ORGANIZATION_ID]/logs/[LOG_ID]"
+[LOG_ID] must be URL-encoded. For example, "projects/my-project-id/logs/syslog", "organizations/1234567890/logs/cloudresourcemanager.googleapis.com%2Factivity". For more information about log names, see LogEntry. (required)
   x__xgafv: string, V1 error format.
     Allowed values
       1 - v1 error format
@@ -94,16 +101,53 @@
 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 `{}`.
+    { # 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="list">list(parent=None, pageToken=None, x__xgafv=None, pageSize=None)</code>
+  <pre>Lists the logs in projects or organizations. Only logs that have entries are listed.
+
+Args:
+  parent: string, Required. The resource name that owns the logs:
+"projects/[PROJECT_ID]"
+"organizations/[ORGANIZATION_ID]"
+ (required)
+  pageToken: string, Optional. If present, then retrieve the next batch of results from the preceding call to this method. pageToken must be the value of nextPageToken from the previous response. The values of other method parameters should be identical to those in the previous call.
+  x__xgafv: string, V1 error format.
+    Allowed values
+      1 - v1 error format
+      2 - v2 error format
+  pageSize: integer, Optional. The maximum number of results to return from this request. Non-positive values are ignored. The presence of nextPageToken in the response indicates that more results might be available.
+
+Returns:
+  An object of the form:
+
+    { # Result returned from ListLogs.
+    "nextPageToken": "A String", # If there might be more results than those appearing in this response, then nextPageToken is included. To get the next set of results, call this method again using the value of nextPageToken as pageToken.
+    "logNames": [ # A list of log names. For example, "projects/my-project/syslog" or "organizations/123/cloudresourcemanager.googleapis.com%2Factivity".
+      "A String",
+    ],
+  }</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>
+
 </body></html>
\ No newline at end of file
diff --git a/docs/dyn/logging_v2beta1.projects.logs.html b/docs/dyn/logging_v2beta1.projects.logs.html
index 7894475..f9571c8 100644
--- a/docs/dyn/logging_v2beta1.projects.logs.html
+++ b/docs/dyn/logging_v2beta1.projects.logs.html
@@ -76,16 +76,23 @@
 <h2>Instance Methods</h2>
 <p class="toc_element">
   <code><a href="#delete">delete(logName=None, x__xgafv=None)</a></code></p>
-<p class="firstline">Deletes a log and all its log entries.</p>
+<p class="firstline">Deletes all the log entries in a log. The log reappears if it receives new entries.</p>
+<p class="toc_element">
+  <code><a href="#list">list(parent=None, pageToken=None, x__xgafv=None, pageSize=None)</a></code></p>
+<p class="firstline">Lists the logs in projects or organizations. Only logs that have entries are listed.</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>
 <h3>Method Details</h3>
 <div class="method">
     <code class="details" id="delete">delete(logName=None, x__xgafv=None)</code>
-  <pre>Deletes a log and all its log entries.
-The log will reappear if it receives new entries.
+  <pre>Deletes all the log entries in a log. The log reappears if it receives new entries.
 
 Args:
-  logName: string, Required. The resource name of the log to delete.  Example:
-`"projects/my-project/logs/syslog"`. (required)
+  logName: string, Required. The resource name of the log to delete:
+"projects/[PROJECT_ID]/logs/[LOG_ID]"
+"organizations/[ORGANIZATION_ID]/logs/[LOG_ID]"
+[LOG_ID] must be URL-encoded. For example, "projects/my-project-id/logs/syslog", "organizations/1234567890/logs/cloudresourcemanager.googleapis.com%2Factivity". For more information about log names, see LogEntry. (required)
   x__xgafv: string, V1 error format.
     Allowed values
       1 - v1 error format
@@ -94,16 +101,53 @@
 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 `{}`.
+    { # 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="list">list(parent=None, pageToken=None, x__xgafv=None, pageSize=None)</code>
+  <pre>Lists the logs in projects or organizations. Only logs that have entries are listed.
+
+Args:
+  parent: string, Required. The resource name that owns the logs:
+"projects/[PROJECT_ID]"
+"organizations/[ORGANIZATION_ID]"
+ (required)
+  pageToken: string, Optional. If present, then retrieve the next batch of results from the preceding call to this method. pageToken must be the value of nextPageToken from the previous response. The values of other method parameters should be identical to those in the previous call.
+  x__xgafv: string, V1 error format.
+    Allowed values
+      1 - v1 error format
+      2 - v2 error format
+  pageSize: integer, Optional. The maximum number of results to return from this request. Non-positive values are ignored. The presence of nextPageToken in the response indicates that more results might be available.
+
+Returns:
+  An object of the form:
+
+    { # Result returned from ListLogs.
+    "nextPageToken": "A String", # If there might be more results than those appearing in this response, then nextPageToken is included. To get the next set of results, call this method again using the value of nextPageToken as pageToken.
+    "logNames": [ # A list of log names. For example, "projects/my-project/syslog" or "organizations/123/cloudresourcemanager.googleapis.com%2Factivity".
+      "A String",
+    ],
+  }</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>
+
 </body></html>
\ No newline at end of file
diff --git a/docs/dyn/logging_v2beta1.projects.metrics.html b/docs/dyn/logging_v2beta1.projects.metrics.html
index 6b4ae6c..7bd636d 100644
--- a/docs/dyn/logging_v2beta1.projects.metrics.html
+++ b/docs/dyn/logging_v2beta1.projects.metrics.html
@@ -98,29 +98,19 @@
   <pre>Creates a logs-based metric.
 
 Args:
-  parent: string, The resource name of the project in which to create the metric.
-Example: `"projects/my-project-id"`.
-
+  parent: string, The resource name of the project in which to create the metric:
+"projects/[PROJECT_ID]"
 The new metric must be provided in the request. (required)
   body: object, The request body. (required)
     The object takes the form of:
 
-{ # Describes a logs-based metric.  The value of the metric is the
-      # number of log entries that match a logs filter.
-    "filter": "A String", # Required. An [advanced logs filter](/logging/docs/view/advanced_filters).
-        # Example: `"resource.type=gae_app AND severity>=ERROR"`.
-    "version": "A String", # Output only. The API version that created or updated this metric.
-        # The version also dictates the syntax of the filter expression. When a value
-        # for this field is missing, the default value of V2 should be assumed.
+{ # Describes a logs-based metric. The value of the metric is the number of log entries that match a logs filter in a given time interval.
+    "filter": "A String", # Required. An advanced logs filter which is used to match log entries. Example:
+        # "resource.type=gae_app AND severity>=ERROR"
+        # The maximum length of the filter is 20000 characters.
+    "version": "A String", # Output only. The API version that created or updated this metric. The version also dictates the syntax of the filter expression. When a value for this field is missing, the default value of V2 should be assumed.
     "description": "A String", # Optional. A description of this metric, which is used in documentation.
-    "name": "A String", # Required. The client-assigned metric identifier. Example:
-        # `"severe_errors"`.  Metric identifiers are limited to 100
-        # characters and can include only the following characters: `A-Z`,
-        # `a-z`, `0-9`, and the special characters `_-.,+!*',()%/`.  The
-        # forward-slash character (`/`) denotes a hierarchy of name pieces,
-        # and it cannot be the first character of the name.  The '%' character
-        # is used to URL encode unsafe and reserved characters and must be
-        # followed by two hexadecimal digits according to RFC 1738.
+    "name": "A String", # Required. The client-assigned metric identifier. Examples: "error_count", "nginx/requests".Metric identifiers are limited to 100 characters and can include only the following characters: A-Z, a-z, 0-9, and the special characters _-.,+!*',()%/. The forward-slash character (/) denotes a hierarchy of name pieces, and it cannot be the first character of the name.The metric identifier in this field must not be URL-encoded (https://en.wikipedia.org/wiki/Percent-encoding). However, when the metric identifier appears as the [METRIC_ID] part of a metric_name API parameter, then the metric identifier must be URL-encoded. Example: "projects/my-project/metrics/nginx%2Frequests".
   }
 
   x__xgafv: string, V1 error format.
@@ -131,22 +121,13 @@
 Returns:
   An object of the form:
 
-    { # Describes a logs-based metric.  The value of the metric is the
-        # number of log entries that match a logs filter.
-      "filter": "A String", # Required. An [advanced logs filter](/logging/docs/view/advanced_filters).
-          # Example: `"resource.type=gae_app AND severity>=ERROR"`.
-      "version": "A String", # Output only. The API version that created or updated this metric.
-          # The version also dictates the syntax of the filter expression. When a value
-          # for this field is missing, the default value of V2 should be assumed.
+    { # Describes a logs-based metric. The value of the metric is the number of log entries that match a logs filter in a given time interval.
+      "filter": "A String", # Required. An advanced logs filter which is used to match log entries. Example:
+          # "resource.type=gae_app AND severity>=ERROR"
+          # The maximum length of the filter is 20000 characters.
+      "version": "A String", # Output only. The API version that created or updated this metric. The version also dictates the syntax of the filter expression. When a value for this field is missing, the default value of V2 should be assumed.
       "description": "A String", # Optional. A description of this metric, which is used in documentation.
-      "name": "A String", # Required. The client-assigned metric identifier. Example:
-          # `"severe_errors"`.  Metric identifiers are limited to 100
-          # characters and can include only the following characters: `A-Z`,
-          # `a-z`, `0-9`, and the special characters `_-.,+!*',()%/`.  The
-          # forward-slash character (`/`) denotes a hierarchy of name pieces,
-          # and it cannot be the first character of the name.  The '%' character
-          # is used to URL encode unsafe and reserved characters and must be
-          # followed by two hexadecimal digits according to RFC 1738.
+      "name": "A String", # Required. The client-assigned metric identifier. Examples: "error_count", "nginx/requests".Metric identifiers are limited to 100 characters and can include only the following characters: A-Z, a-z, 0-9, and the special characters _-.,+!*',()%/. The forward-slash character (/) denotes a hierarchy of name pieces, and it cannot be the first character of the name.The metric identifier in this field must not be URL-encoded (https://en.wikipedia.org/wiki/Percent-encoding). However, when the metric identifier appears as the [METRIC_ID] part of a metric_name API parameter, then the metric identifier must be URL-encoded. Example: "projects/my-project/metrics/nginx%2Frequests".
     }</pre>
 </div>
 
@@ -155,8 +136,9 @@
   <pre>Deletes a logs-based metric.
 
 Args:
-  metricName: string, The resource name of the metric to delete.
-Example: `"projects/my-project-id/metrics/my-metric-id"`. (required)
+  metricName: string, The resource name of the metric to delete:
+"projects/[PROJECT_ID]/metrics/[METRIC_ID]"
+ (required)
   x__xgafv: string, V1 error format.
     Allowed values
       1 - v1 error format
@@ -165,15 +147,11 @@
 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 `{}`.
+    { # 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>
 
@@ -182,8 +160,9 @@
   <pre>Gets a logs-based metric.
 
 Args:
-  metricName: string, The resource name of the desired metric.
-Example: `"projects/my-project-id/metrics/my-metric-id"`. (required)
+  metricName: string, The resource name of the desired metric:
+"projects/[PROJECT_ID]/metrics/[METRIC_ID]"
+ (required)
   x__xgafv: string, V1 error format.
     Allowed values
       1 - v1 error format
@@ -192,22 +171,13 @@
 Returns:
   An object of the form:
 
-    { # Describes a logs-based metric.  The value of the metric is the
-        # number of log entries that match a logs filter.
-      "filter": "A String", # Required. An [advanced logs filter](/logging/docs/view/advanced_filters).
-          # Example: `"resource.type=gae_app AND severity>=ERROR"`.
-      "version": "A String", # Output only. The API version that created or updated this metric.
-          # The version also dictates the syntax of the filter expression. When a value
-          # for this field is missing, the default value of V2 should be assumed.
+    { # Describes a logs-based metric. The value of the metric is the number of log entries that match a logs filter in a given time interval.
+      "filter": "A String", # Required. An advanced logs filter which is used to match log entries. Example:
+          # "resource.type=gae_app AND severity>=ERROR"
+          # The maximum length of the filter is 20000 characters.
+      "version": "A String", # Output only. The API version that created or updated this metric. The version also dictates the syntax of the filter expression. When a value for this field is missing, the default value of V2 should be assumed.
       "description": "A String", # Optional. A description of this metric, which is used in documentation.
-      "name": "A String", # Required. The client-assigned metric identifier. Example:
-          # `"severe_errors"`.  Metric identifiers are limited to 100
-          # characters and can include only the following characters: `A-Z`,
-          # `a-z`, `0-9`, and the special characters `_-.,+!*',()%/`.  The
-          # forward-slash character (`/`) denotes a hierarchy of name pieces,
-          # and it cannot be the first character of the name.  The '%' character
-          # is used to URL encode unsafe and reserved characters and must be
-          # followed by two hexadecimal digits according to RFC 1738.
+      "name": "A String", # Required. The client-assigned metric identifier. Examples: "error_count", "nginx/requests".Metric identifiers are limited to 100 characters and can include only the following characters: A-Z, a-z, 0-9, and the special characters _-.,+!*',()%/. The forward-slash character (/) denotes a hierarchy of name pieces, and it cannot be the first character of the name.The metric identifier in this field must not be URL-encoded (https://en.wikipedia.org/wiki/Percent-encoding). However, when the metric identifier appears as the [METRIC_ID] part of a metric_name API parameter, then the metric identifier must be URL-encoded. Example: "projects/my-project/metrics/nginx%2Frequests".
     }</pre>
 </div>
 
@@ -216,46 +186,31 @@
   <pre>Lists logs-based metrics.
 
 Args:
-  parent: string, Required. The resource name containing the metrics.
-Example: `"projects/my-project-id"`. (required)
-  pageToken: string, Optional. If present, then retrieve the next batch of results from the
-preceding call to this method.  `pageToken` must be the value of
-`nextPageToken` from the previous response.  The values of other method
-parameters should be identical to those in the previous call.
+  parent: string, Required. The name of the project containing the metrics:
+"projects/[PROJECT_ID]"
+ (required)
+  pageToken: string, Optional. If present, then retrieve the next batch of results from the preceding call to this method. pageToken must be the value of nextPageToken from the previous response. The values of other method parameters should be identical to those in the previous call.
   x__xgafv: string, V1 error format.
     Allowed values
       1 - v1 error format
       2 - v2 error format
-  pageSize: integer, Optional. The maximum number of results to return from this request.
-Non-positive values are ignored.  The presence of `nextPageToken` in the
-response indicates that more results might be available.
+  pageSize: integer, Optional. The maximum number of results to return from this request. Non-positive values are ignored. The presence of nextPageToken in the response indicates that more results might be available.
 
 Returns:
   An object of the form:
 
     { # Result returned from ListLogMetrics.
     "metrics": [ # A list of logs-based metrics.
-      { # Describes a logs-based metric.  The value of the metric is the
-            # number of log entries that match a logs filter.
-          "filter": "A String", # Required. An [advanced logs filter](/logging/docs/view/advanced_filters).
-              # Example: `"resource.type=gae_app AND severity>=ERROR"`.
-          "version": "A String", # Output only. The API version that created or updated this metric.
-              # The version also dictates the syntax of the filter expression. When a value
-              # for this field is missing, the default value of V2 should be assumed.
+      { # Describes a logs-based metric. The value of the metric is the number of log entries that match a logs filter in a given time interval.
+          "filter": "A String", # Required. An advanced logs filter which is used to match log entries. Example:
+              # "resource.type=gae_app AND severity>=ERROR"
+              # The maximum length of the filter is 20000 characters.
+          "version": "A String", # Output only. The API version that created or updated this metric. The version also dictates the syntax of the filter expression. When a value for this field is missing, the default value of V2 should be assumed.
           "description": "A String", # Optional. A description of this metric, which is used in documentation.
-          "name": "A String", # Required. The client-assigned metric identifier. Example:
-              # `"severe_errors"`.  Metric identifiers are limited to 100
-              # characters and can include only the following characters: `A-Z`,
-              # `a-z`, `0-9`, and the special characters `_-.,+!*',()%/`.  The
-              # forward-slash character (`/`) denotes a hierarchy of name pieces,
-              # and it cannot be the first character of the name.  The '%' character
-              # is used to URL encode unsafe and reserved characters and must be
-              # followed by two hexadecimal digits according to RFC 1738.
+          "name": "A String", # Required. The client-assigned metric identifier. Examples: "error_count", "nginx/requests".Metric identifiers are limited to 100 characters and can include only the following characters: A-Z, a-z, 0-9, and the special characters _-.,+!*',()%/. The forward-slash character (/) denotes a hierarchy of name pieces, and it cannot be the first character of the name.The metric identifier in this field must not be URL-encoded (https://en.wikipedia.org/wiki/Percent-encoding). However, when the metric identifier appears as the [METRIC_ID] part of a metric_name API parameter, then the metric identifier must be URL-encoded. Example: "projects/my-project/metrics/nginx%2Frequests".
         },
     ],
-    "nextPageToken": "A String", # If there might be more results than appear in this response, then
-        # `nextPageToken` is included.  To get the next set of results, call this
-        # method again using the value of `nextPageToken` as `pageToken`.
+    "nextPageToken": "A String", # If there might be more results than appear in this response, then nextPageToken is included. To get the next set of results, call this method again using the value of nextPageToken as pageToken.
   }</pre>
 </div>
 
@@ -278,31 +233,19 @@
   <pre>Creates or updates a logs-based metric.
 
 Args:
-  metricName: string, The resource name of the metric to update.
-Example: `"projects/my-project-id/metrics/my-metric-id"`.
-
-The updated metric must be provided in the request and have the
-same identifier that is specified in `metricName`.
-If the metric does not exist, it is created. (required)
+  metricName: string, The resource name of the metric to update:
+"projects/[PROJECT_ID]/metrics/[METRIC_ID]"
+The updated metric must be provided in the request and it's name field must be the same as [METRIC_ID] If the metric does not exist in [PROJECT_ID], then a new metric is created. (required)
   body: object, The request body. (required)
     The object takes the form of:
 
-{ # Describes a logs-based metric.  The value of the metric is the
-      # number of log entries that match a logs filter.
-    "filter": "A String", # Required. An [advanced logs filter](/logging/docs/view/advanced_filters).
-        # Example: `"resource.type=gae_app AND severity>=ERROR"`.
-    "version": "A String", # Output only. The API version that created or updated this metric.
-        # The version also dictates the syntax of the filter expression. When a value
-        # for this field is missing, the default value of V2 should be assumed.
+{ # Describes a logs-based metric. The value of the metric is the number of log entries that match a logs filter in a given time interval.
+    "filter": "A String", # Required. An advanced logs filter which is used to match log entries. Example:
+        # "resource.type=gae_app AND severity>=ERROR"
+        # The maximum length of the filter is 20000 characters.
+    "version": "A String", # Output only. The API version that created or updated this metric. The version also dictates the syntax of the filter expression. When a value for this field is missing, the default value of V2 should be assumed.
     "description": "A String", # Optional. A description of this metric, which is used in documentation.
-    "name": "A String", # Required. The client-assigned metric identifier. Example:
-        # `"severe_errors"`.  Metric identifiers are limited to 100
-        # characters and can include only the following characters: `A-Z`,
-        # `a-z`, `0-9`, and the special characters `_-.,+!*',()%/`.  The
-        # forward-slash character (`/`) denotes a hierarchy of name pieces,
-        # and it cannot be the first character of the name.  The '%' character
-        # is used to URL encode unsafe and reserved characters and must be
-        # followed by two hexadecimal digits according to RFC 1738.
+    "name": "A String", # Required. The client-assigned metric identifier. Examples: "error_count", "nginx/requests".Metric identifiers are limited to 100 characters and can include only the following characters: A-Z, a-z, 0-9, and the special characters _-.,+!*',()%/. The forward-slash character (/) denotes a hierarchy of name pieces, and it cannot be the first character of the name.The metric identifier in this field must not be URL-encoded (https://en.wikipedia.org/wiki/Percent-encoding). However, when the metric identifier appears as the [METRIC_ID] part of a metric_name API parameter, then the metric identifier must be URL-encoded. Example: "projects/my-project/metrics/nginx%2Frequests".
   }
 
   x__xgafv: string, V1 error format.
@@ -313,22 +256,13 @@
 Returns:
   An object of the form:
 
-    { # Describes a logs-based metric.  The value of the metric is the
-        # number of log entries that match a logs filter.
-      "filter": "A String", # Required. An [advanced logs filter](/logging/docs/view/advanced_filters).
-          # Example: `"resource.type=gae_app AND severity>=ERROR"`.
-      "version": "A String", # Output only. The API version that created or updated this metric.
-          # The version also dictates the syntax of the filter expression. When a value
-          # for this field is missing, the default value of V2 should be assumed.
+    { # Describes a logs-based metric. The value of the metric is the number of log entries that match a logs filter in a given time interval.
+      "filter": "A String", # Required. An advanced logs filter which is used to match log entries. Example:
+          # "resource.type=gae_app AND severity>=ERROR"
+          # The maximum length of the filter is 20000 characters.
+      "version": "A String", # Output only. The API version that created or updated this metric. The version also dictates the syntax of the filter expression. When a value for this field is missing, the default value of V2 should be assumed.
       "description": "A String", # Optional. A description of this metric, which is used in documentation.
-      "name": "A String", # Required. The client-assigned metric identifier. Example:
-          # `"severe_errors"`.  Metric identifiers are limited to 100
-          # characters and can include only the following characters: `A-Z`,
-          # `a-z`, `0-9`, and the special characters `_-.,+!*',()%/`.  The
-          # forward-slash character (`/`) denotes a hierarchy of name pieces,
-          # and it cannot be the first character of the name.  The '%' character
-          # is used to URL encode unsafe and reserved characters and must be
-          # followed by two hexadecimal digits according to RFC 1738.
+      "name": "A String", # Required. The client-assigned metric identifier. Examples: "error_count", "nginx/requests".Metric identifiers are limited to 100 characters and can include only the following characters: A-Z, a-z, 0-9, and the special characters _-.,+!*',()%/. The forward-slash character (/) denotes a hierarchy of name pieces, and it cannot be the first character of the name.The metric identifier in this field must not be URL-encoded (https://en.wikipedia.org/wiki/Percent-encoding). However, when the metric identifier appears as the [METRIC_ID] part of a metric_name API parameter, then the metric identifier must be URL-encoded. Example: "projects/my-project/metrics/nginx%2Frequests".
     }</pre>
 </div>
 
diff --git a/docs/dyn/logging_v2beta1.projects.sinks.html b/docs/dyn/logging_v2beta1.projects.sinks.html
index d3136c9..40d5624 100644
--- a/docs/dyn/logging_v2beta1.projects.sinks.html
+++ b/docs/dyn/logging_v2beta1.projects.sinks.html
@@ -75,77 +75,52 @@
 <h1><a href="logging_v2beta1.html">Stackdriver Logging API</a> . <a href="logging_v2beta1.projects.html">projects</a> . <a href="logging_v2beta1.projects.sinks.html">sinks</a></h1>
 <h2>Instance Methods</h2>
 <p class="toc_element">
-  <code><a href="#create">create(parent=None, body, x__xgafv=None)</a></code></p>
-<p class="firstline">Creates a sink.</p>
+  <code><a href="#create">create(parent=None, body, uniqueWriterIdentity=None, x__xgafv=None)</a></code></p>
+<p class="firstline">Creates a sink that exports specified log entries to a destination. The export of newly-ingested log entries begins immediately, unless the current time is outside the sink's start and end times or the sink's writer_identity is not permitted to write to the destination. A sink can export log entries only from the resource owning the sink.</p>
 <p class="toc_element">
   <code><a href="#delete">delete(sinkName=None, x__xgafv=None)</a></code></p>
-<p class="firstline">Deletes a sink.</p>
+<p class="firstline">Deletes a sink. If the sink has a unique writer_identity, then that service account is also deleted.</p>
 <p class="toc_element">
   <code><a href="#get">get(sinkName=None, x__xgafv=None)</a></code></p>
 <p class="firstline">Gets a sink.</p>
 <p class="toc_element">
-  <code><a href="#list">list(parent=None, pageToken=None, x__xgafv=None, pageSize=None)</a></code></p>
+  <code><a href="#list">list(parent, pageToken=None, x__xgafv=None, pageSize=None)</a></code></p>
 <p class="firstline">Lists sinks.</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="#update">update(sinkName=None, body, x__xgafv=None)</a></code></p>
-<p class="firstline">Updates or creates a sink.</p>
+  <code><a href="#update">update(sinkName=None, body, uniqueWriterIdentity=None, x__xgafv=None)</a></code></p>
+<p class="firstline">Updates a sink. If the named sink doesn't exist, then this method is identical to sinks.create. If the named sink does exist, then this method replaces the following fields in the existing sink with values from the new sink: destination, filter, output_version_format, start_time, and end_time. The updated filter might also have a new writer_identity; see the unique_writer_identity field.</p>
 <h3>Method Details</h3>
 <div class="method">
-    <code class="details" id="create">create(parent=None, body, x__xgafv=None)</code>
-  <pre>Creates a sink.
+    <code class="details" id="create">create(parent=None, body, uniqueWriterIdentity=None, x__xgafv=None)</code>
+  <pre>Creates a sink that exports specified log entries to a destination. The export of newly-ingested log entries begins immediately, unless the current time is outside the sink's start and end times or the sink's writer_identity is not permitted to write to the destination. A sink can export log entries only from the resource owning the sink.
 
 Args:
-  parent: string, Required. The resource in which to create the sink.
-Example: `"projects/my-project-id"`.
-The new sink must be provided in the request. (required)
+  parent: string, Required. The resource in which to create the sink:
+"projects/[PROJECT_ID]"
+"organizations/[ORGANIZATION_ID]"
+Examples: "projects/my-logging-project", "organizations/123456789". (required)
   body: object, The request body. (required)
     The object takes the form of:
 
-{ # Describes a sink used to export log entries outside of Stackdriver Logging.
-    "endTime": "A String", # Optional. Time at which this sink expires.
-    "name": "A String", # Required. The client-assigned sink identifier, unique within the
-        # project. Example: `"my-syslog-errors-to-pubsub"`.  Sink identifiers are
-        # limited to 1000 characters and can include only the following characters:
-        # `A-Z`, `a-z`, `0-9`, and the special characters `_-.`.  The maximum length
-        # of the name is 100 characters.
-    "destination": "A String", # Required. The export destination. See
-        # [Exporting Logs With Sinks](/logging/docs/api/tasks/exporting-logs).
-        # Examples:
-        # 
-        #     "storage.googleapis.com/my-gcs-bucket"
-        #     "bigquery.googleapis.com/projects/my-project-id/datasets/my-dataset"
-        #     "pubsub.googleapis.com/projects/my-project/topics/my-topic"
-    "filter": "A String", # Optional. An [advanced logs filter](/logging/docs/view/advanced_filters).
-        # Only log entries matching the filter are exported. The filter
-        # must be consistent with the log entry format specified by the
-        # `outputVersionFormat` parameter, regardless of the format of the
-        # log entry that was originally written to Stackdriver Logging.
-        # Example filter (V2 format):
-        # 
-        #     logName=projects/my-projectid/logs/syslog AND severity>=ERROR
-    "startTime": "A String", # Optional. Time range for which this sink is active.
-        # Logs are exported only if start_time <= entry.timestamp < end_time
-        # Both start_time and end_time may be omitted to specify
-        # (half) infinite ranges. The start_time must be less than the end_time.
-    "outputVersionFormat": "A String", # Optional. The log entry version to use for this sink's exported log
-        # entries.  This version does not have to correspond to the version of the
-        # log entry that was written to Stackdriver Logging. If omitted, the
-        # v2 format is used.
-    "writerIdentity": "A String", # Output only. The IAM identity to which the destination needs to grant write
-        # access.  This may be a service account or a group.
-        # Examples (Do not assume these specific values):
-        #    "serviceAccount:cloud-logs@system.gserviceaccount.com"
-        #    "group:cloud-logs@google.com"
-        # 
-        #   For GCS destinations, the role "roles/owner" is required on the bucket
-        #   For Cloud Pubsub destinations, the role "roles/pubsub.publisher" is
-        #     required on the topic
-        #   For BigQuery, the role "roles/editor" is required on the dataset
+{ # Describes a sink used to export log entries to one of the following destinations in any project: a Cloud Storage bucket, a BigQuery dataset, or a Cloud Pub/Sub topic. A logs filter controls which log entries are exported. The sink must be created within a project or organization.
+    "endTime": "A String", # Optional. The time at which this sink will stop exporting log entries. Log entries are exported only if their timestamp is earlier than the end time. If this field is not supplied, there is no end time. If both a start time and an end time are provided, then the end time must be later than the start time.
+    "name": "A String", # Required. The client-assigned sink identifier, unique within the project. Example: "my-syslog-errors-to-pubsub". Sink identifiers are limited to 100 characters and can include only the following characters: upper and lower-case alphanumeric characters, underscores, hyphens, and periods.
+    "destination": "A String", # Required. The export destination:
+        # "storage.googleapis.com/[GCS_BUCKET]"
+        # "bigquery.googleapis.com/projects/[PROJECT_ID]/datasets/[DATASET]"
+        # "pubsub.googleapis.com/projects/[PROJECT_ID]/topics/[TOPIC_ID]"
+        # The sink's writer_identity, set when the sink is created, must have permission to write to the destination or else the log entries are not exported. For more information, see Exporting Logs With Sinks.
+    "filter": "A String", # Optional. An advanced logs filter. The only exported log entries are those that are in the resource owning the sink and that match the filter. The filter must use the log entry format specified by the output_version_format parameter. For example, in the v2 format:
+        # logName="projects/[PROJECT_ID]/logs/[LOG_ID]" AND severity>=ERROR
+    "startTime": "A String", # Optional. The time at which this sink will begin exporting log entries. Log entries are exported only if their timestamp is not earlier than the start time. The default value of this field is the time the sink is created or updated.
+    "outputVersionFormat": "A String", # Optional. The log entry format to use for this sink's exported log entries. The v2 format is used by default. The v1 format is deprecated and should be used only as part of a migration effort to v2. See Migration to the v2 API.
+    "writerIdentity": "A String", # Output only. An IAM identity&mdash;a service account or group&mdash;under which Stackdriver Logging writes the exported log entries to the sink's destination. This field is set by sinks.create and sinks.update, based on the setting of unique_writer_identity in those methods.Until you grant this identity write-access to the destination, log entry exports from this sink will fail. For more information, see Granting access for a resource. Consult the destination service's documentation to determine the appropriate IAM roles to assign to the identity.
   }
 
+  uniqueWriterIdentity: boolean, Optional. Determines the kind of IAM identity returned as writer_identity in the new sink. If this value is omitted or set to false, and if the sink's parent is a project, then the value returned as writer_identity is cloud-logs@google.com, the same identity used before the addition of writer identities to this API. The sink's destination must be in the same project as the sink itself.If this field is set to true, or if the sink is owned by a non-project resource such as an organization, then the value of writer_identity will be a unique service account used only for exports from the new sink. For more information, see writer_identity in LogSink.
   x__xgafv: string, V1 error format.
     Allowed values
       1 - v1 error format
@@ -154,58 +129,31 @@
 Returns:
   An object of the form:
 
-    { # Describes a sink used to export log entries outside of Stackdriver Logging.
-      "endTime": "A String", # Optional. Time at which this sink expires.
-      "name": "A String", # Required. The client-assigned sink identifier, unique within the
-          # project. Example: `"my-syslog-errors-to-pubsub"`.  Sink identifiers are
-          # limited to 1000 characters and can include only the following characters:
-          # `A-Z`, `a-z`, `0-9`, and the special characters `_-.`.  The maximum length
-          # of the name is 100 characters.
-      "destination": "A String", # Required. The export destination. See
-          # [Exporting Logs With Sinks](/logging/docs/api/tasks/exporting-logs).
-          # Examples:
-          #
-          #     "storage.googleapis.com/my-gcs-bucket"
-          #     "bigquery.googleapis.com/projects/my-project-id/datasets/my-dataset"
-          #     "pubsub.googleapis.com/projects/my-project/topics/my-topic"
-      "filter": "A String", # Optional. An [advanced logs filter](/logging/docs/view/advanced_filters).
-          # Only log entries matching the filter are exported. The filter
-          # must be consistent with the log entry format specified by the
-          # `outputVersionFormat` parameter, regardless of the format of the
-          # log entry that was originally written to Stackdriver Logging.
-          # Example filter (V2 format):
-          #
-          #     logName=projects/my-projectid/logs/syslog AND severity>=ERROR
-      "startTime": "A String", # Optional. Time range for which this sink is active.
-          # Logs are exported only if start_time <= entry.timestamp < end_time
-          # Both start_time and end_time may be omitted to specify
-          # (half) infinite ranges. The start_time must be less than the end_time.
-      "outputVersionFormat": "A String", # Optional. The log entry version to use for this sink's exported log
-          # entries.  This version does not have to correspond to the version of the
-          # log entry that was written to Stackdriver Logging. If omitted, the
-          # v2 format is used.
-      "writerIdentity": "A String", # Output only. The IAM identity to which the destination needs to grant write
-          # access.  This may be a service account or a group.
-          # Examples (Do not assume these specific values):
-          #    "serviceAccount:cloud-logs@system.gserviceaccount.com"
-          #    "group:cloud-logs@google.com"
-          #
-          #   For GCS destinations, the role "roles/owner" is required on the bucket
-          #   For Cloud Pubsub destinations, the role "roles/pubsub.publisher" is
-          #     required on the topic
-          #   For BigQuery, the role "roles/editor" is required on the dataset
+    { # Describes a sink used to export log entries to one of the following destinations in any project: a Cloud Storage bucket, a BigQuery dataset, or a Cloud Pub/Sub topic. A logs filter controls which log entries are exported. The sink must be created within a project or organization.
+      "endTime": "A String", # Optional. The time at which this sink will stop exporting log entries. Log entries are exported only if their timestamp is earlier than the end time. If this field is not supplied, there is no end time. If both a start time and an end time are provided, then the end time must be later than the start time.
+      "name": "A String", # Required. The client-assigned sink identifier, unique within the project. Example: "my-syslog-errors-to-pubsub". Sink identifiers are limited to 100 characters and can include only the following characters: upper and lower-case alphanumeric characters, underscores, hyphens, and periods.
+      "destination": "A String", # Required. The export destination:
+          # "storage.googleapis.com/[GCS_BUCKET]"
+          # "bigquery.googleapis.com/projects/[PROJECT_ID]/datasets/[DATASET]"
+          # "pubsub.googleapis.com/projects/[PROJECT_ID]/topics/[TOPIC_ID]"
+          # The sink's writer_identity, set when the sink is created, must have permission to write to the destination or else the log entries are not exported. For more information, see Exporting Logs With Sinks.
+      "filter": "A String", # Optional. An advanced logs filter. The only exported log entries are those that are in the resource owning the sink and that match the filter. The filter must use the log entry format specified by the output_version_format parameter. For example, in the v2 format:
+          # logName="projects/[PROJECT_ID]/logs/[LOG_ID]" AND severity>=ERROR
+      "startTime": "A String", # Optional. The time at which this sink will begin exporting log entries. Log entries are exported only if their timestamp is not earlier than the start time. The default value of this field is the time the sink is created or updated.
+      "outputVersionFormat": "A String", # Optional. The log entry format to use for this sink's exported log entries. The v2 format is used by default. The v1 format is deprecated and should be used only as part of a migration effort to v2. See Migration to the v2 API.
+      "writerIdentity": "A String", # Output only. An IAM identity&mdash;a service account or group&mdash;under which Stackdriver Logging writes the exported log entries to the sink's destination. This field is set by sinks.create and sinks.update, based on the setting of unique_writer_identity in those methods.Until you grant this identity write-access to the destination, log entry exports from this sink will fail. For more information, see Granting access for a resource. Consult the destination service's documentation to determine the appropriate IAM roles to assign to the identity.
     }</pre>
 </div>
 
 <div class="method">
     <code class="details" id="delete">delete(sinkName=None, x__xgafv=None)</code>
-  <pre>Deletes a sink.
+  <pre>Deletes a sink. If the sink has a unique writer_identity, then that service account is also deleted.
 
 Args:
-  sinkName: string, Required. The resource name of the sink to delete, including the parent
-resource and the sink identifier.  Example:
-`"projects/my-project-id/sinks/my-sink-id"`.  It is an error if the sink
-does not exist. (required)
+  sinkName: string, Required. The full resource name of the sink to delete, including the parent resource and the sink identifier:
+"projects/[PROJECT_ID]/sinks/[SINK_ID]"
+"organizations/[ORGANIZATION_ID]/sinks/[SINK_ID]"
+It is an error if the sink does not exist. Example: "projects/my-project-id/sinks/my-sink-id". It is an error if the sink does not exist. (required)
   x__xgafv: string, V1 error format.
     Allowed values
       1 - v1 error format
@@ -214,15 +162,11 @@
 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 `{}`.
+    { # 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>
 
@@ -231,8 +175,10 @@
   <pre>Gets a sink.
 
 Args:
-  sinkName: string, Required. The resource name of the sink to return.
-Example: `"projects/my-project-id/sinks/my-sink-id"`. (required)
+  sinkName: string, Required. The parent resource name of the sink:
+"projects/[PROJECT_ID]/sinks/[SINK_ID]"
+"organizations/[ORGANIZATION_ID]/sinks/[SINK_ID]"
+Example: "projects/my-project-id/sinks/my-sink-id". (required)
   x__xgafv: string, V1 error format.
     Allowed values
       1 - v1 error format
@@ -241,116 +187,54 @@
 Returns:
   An object of the form:
 
-    { # Describes a sink used to export log entries outside of Stackdriver Logging.
-      "endTime": "A String", # Optional. Time at which this sink expires.
-      "name": "A String", # Required. The client-assigned sink identifier, unique within the
-          # project. Example: `"my-syslog-errors-to-pubsub"`.  Sink identifiers are
-          # limited to 1000 characters and can include only the following characters:
-          # `A-Z`, `a-z`, `0-9`, and the special characters `_-.`.  The maximum length
-          # of the name is 100 characters.
-      "destination": "A String", # Required. The export destination. See
-          # [Exporting Logs With Sinks](/logging/docs/api/tasks/exporting-logs).
-          # Examples:
-          #
-          #     "storage.googleapis.com/my-gcs-bucket"
-          #     "bigquery.googleapis.com/projects/my-project-id/datasets/my-dataset"
-          #     "pubsub.googleapis.com/projects/my-project/topics/my-topic"
-      "filter": "A String", # Optional. An [advanced logs filter](/logging/docs/view/advanced_filters).
-          # Only log entries matching the filter are exported. The filter
-          # must be consistent with the log entry format specified by the
-          # `outputVersionFormat` parameter, regardless of the format of the
-          # log entry that was originally written to Stackdriver Logging.
-          # Example filter (V2 format):
-          #
-          #     logName=projects/my-projectid/logs/syslog AND severity>=ERROR
-      "startTime": "A String", # Optional. Time range for which this sink is active.
-          # Logs are exported only if start_time <= entry.timestamp < end_time
-          # Both start_time and end_time may be omitted to specify
-          # (half) infinite ranges. The start_time must be less than the end_time.
-      "outputVersionFormat": "A String", # Optional. The log entry version to use for this sink's exported log
-          # entries.  This version does not have to correspond to the version of the
-          # log entry that was written to Stackdriver Logging. If omitted, the
-          # v2 format is used.
-      "writerIdentity": "A String", # Output only. The IAM identity to which the destination needs to grant write
-          # access.  This may be a service account or a group.
-          # Examples (Do not assume these specific values):
-          #    "serviceAccount:cloud-logs@system.gserviceaccount.com"
-          #    "group:cloud-logs@google.com"
-          #
-          #   For GCS destinations, the role "roles/owner" is required on the bucket
-          #   For Cloud Pubsub destinations, the role "roles/pubsub.publisher" is
-          #     required on the topic
-          #   For BigQuery, the role "roles/editor" is required on the dataset
+    { # Describes a sink used to export log entries to one of the following destinations in any project: a Cloud Storage bucket, a BigQuery dataset, or a Cloud Pub/Sub topic. A logs filter controls which log entries are exported. The sink must be created within a project or organization.
+      "endTime": "A String", # Optional. The time at which this sink will stop exporting log entries. Log entries are exported only if their timestamp is earlier than the end time. If this field is not supplied, there is no end time. If both a start time and an end time are provided, then the end time must be later than the start time.
+      "name": "A String", # Required. The client-assigned sink identifier, unique within the project. Example: "my-syslog-errors-to-pubsub". Sink identifiers are limited to 100 characters and can include only the following characters: upper and lower-case alphanumeric characters, underscores, hyphens, and periods.
+      "destination": "A String", # Required. The export destination:
+          # "storage.googleapis.com/[GCS_BUCKET]"
+          # "bigquery.googleapis.com/projects/[PROJECT_ID]/datasets/[DATASET]"
+          # "pubsub.googleapis.com/projects/[PROJECT_ID]/topics/[TOPIC_ID]"
+          # The sink's writer_identity, set when the sink is created, must have permission to write to the destination or else the log entries are not exported. For more information, see Exporting Logs With Sinks.
+      "filter": "A String", # Optional. An advanced logs filter. The only exported log entries are those that are in the resource owning the sink and that match the filter. The filter must use the log entry format specified by the output_version_format parameter. For example, in the v2 format:
+          # logName="projects/[PROJECT_ID]/logs/[LOG_ID]" AND severity>=ERROR
+      "startTime": "A String", # Optional. The time at which this sink will begin exporting log entries. Log entries are exported only if their timestamp is not earlier than the start time. The default value of this field is the time the sink is created or updated.
+      "outputVersionFormat": "A String", # Optional. The log entry format to use for this sink's exported log entries. The v2 format is used by default. The v1 format is deprecated and should be used only as part of a migration effort to v2. See Migration to the v2 API.
+      "writerIdentity": "A String", # Output only. An IAM identity&mdash;a service account or group&mdash;under which Stackdriver Logging writes the exported log entries to the sink's destination. This field is set by sinks.create and sinks.update, based on the setting of unique_writer_identity in those methods.Until you grant this identity write-access to the destination, log entry exports from this sink will fail. For more information, see Granting access for a resource. Consult the destination service's documentation to determine the appropriate IAM roles to assign to the identity.
     }</pre>
 </div>
 
 <div class="method">
-    <code class="details" id="list">list(parent=None, pageToken=None, x__xgafv=None, pageSize=None)</code>
+    <code class="details" id="list">list(parent, pageToken=None, x__xgafv=None, pageSize=None)</code>
   <pre>Lists sinks.
 
 Args:
-  parent: string, Required. The cloud resource containing the sinks.
-Example: `"projects/my-logging-project"`. (required)
-  pageToken: string, Optional. If present, then retrieve the next batch of results from the
-preceding call to this method.  `pageToken` must be the value of
-`nextPageToken` from the previous response.  The values of other method
-parameters should be identical to those in the previous call.
+  parent: string, Required. The parent resource whose sinks are to be listed. Examples: "projects/my-logging-project", "organizations/123456789". (required)
+  pageToken: string, Optional. If present, then retrieve the next batch of results from the preceding call to this method. pageToken must be the value of nextPageToken from the previous response. The values of other method parameters should be identical to those in the previous call.
   x__xgafv: string, V1 error format.
     Allowed values
       1 - v1 error format
       2 - v2 error format
-  pageSize: integer, Optional. The maximum number of results to return from this request.
-Non-positive values are ignored.  The presence of `nextPageToken` in the
-response indicates that more results might be available.
+  pageSize: integer, Optional. The maximum number of results to return from this request. Non-positive values are ignored. The presence of nextPageToken in the response indicates that more results might be available.
 
 Returns:
   An object of the form:
 
-    { # Result returned from `ListSinks`.
-    "nextPageToken": "A String", # If there might be more results than appear in this response, then
-        # `nextPageToken` is included.  To get the next set of results, call the same
-        # method again using the value of `nextPageToken` as `pageToken`.
+    { # Result returned from ListSinks.
+    "nextPageToken": "A String", # If there might be more results than appear in this response, then nextPageToken is included. To get the next set of results, call the same method again using the value of nextPageToken as pageToken.
     "sinks": [ # A list of sinks.
-      { # Describes a sink used to export log entries outside of Stackdriver Logging.
-          "endTime": "A String", # Optional. Time at which this sink expires.
-          "name": "A String", # Required. The client-assigned sink identifier, unique within the
-              # project. Example: `"my-syslog-errors-to-pubsub"`.  Sink identifiers are
-              # limited to 1000 characters and can include only the following characters:
-              # `A-Z`, `a-z`, `0-9`, and the special characters `_-.`.  The maximum length
-              # of the name is 100 characters.
-          "destination": "A String", # Required. The export destination. See
-              # [Exporting Logs With Sinks](/logging/docs/api/tasks/exporting-logs).
-              # Examples:
-              #
-              #     "storage.googleapis.com/my-gcs-bucket"
-              #     "bigquery.googleapis.com/projects/my-project-id/datasets/my-dataset"
-              #     "pubsub.googleapis.com/projects/my-project/topics/my-topic"
-          "filter": "A String", # Optional. An [advanced logs filter](/logging/docs/view/advanced_filters).
-              # Only log entries matching the filter are exported. The filter
-              # must be consistent with the log entry format specified by the
-              # `outputVersionFormat` parameter, regardless of the format of the
-              # log entry that was originally written to Stackdriver Logging.
-              # Example filter (V2 format):
-              #
-              #     logName=projects/my-projectid/logs/syslog AND severity>=ERROR
-          "startTime": "A String", # Optional. Time range for which this sink is active.
-              # Logs are exported only if start_time <= entry.timestamp < end_time
-              # Both start_time and end_time may be omitted to specify
-              # (half) infinite ranges. The start_time must be less than the end_time.
-          "outputVersionFormat": "A String", # Optional. The log entry version to use for this sink's exported log
-              # entries.  This version does not have to correspond to the version of the
-              # log entry that was written to Stackdriver Logging. If omitted, the
-              # v2 format is used.
-          "writerIdentity": "A String", # Output only. The IAM identity to which the destination needs to grant write
-              # access.  This may be a service account or a group.
-              # Examples (Do not assume these specific values):
-              #    "serviceAccount:cloud-logs@system.gserviceaccount.com"
-              #    "group:cloud-logs@google.com"
-              #
-              #   For GCS destinations, the role "roles/owner" is required on the bucket
-              #   For Cloud Pubsub destinations, the role "roles/pubsub.publisher" is
-              #     required on the topic
-              #   For BigQuery, the role "roles/editor" is required on the dataset
+      { # Describes a sink used to export log entries to one of the following destinations in any project: a Cloud Storage bucket, a BigQuery dataset, or a Cloud Pub/Sub topic. A logs filter controls which log entries are exported. The sink must be created within a project or organization.
+          "endTime": "A String", # Optional. The time at which this sink will stop exporting log entries. Log entries are exported only if their timestamp is earlier than the end time. If this field is not supplied, there is no end time. If both a start time and an end time are provided, then the end time must be later than the start time.
+          "name": "A String", # Required. The client-assigned sink identifier, unique within the project. Example: "my-syslog-errors-to-pubsub". Sink identifiers are limited to 100 characters and can include only the following characters: upper and lower-case alphanumeric characters, underscores, hyphens, and periods.
+          "destination": "A String", # Required. The export destination:
+              # "storage.googleapis.com/[GCS_BUCKET]"
+              # "bigquery.googleapis.com/projects/[PROJECT_ID]/datasets/[DATASET]"
+              # "pubsub.googleapis.com/projects/[PROJECT_ID]/topics/[TOPIC_ID]"
+              # The sink's writer_identity, set when the sink is created, must have permission to write to the destination or else the log entries are not exported. For more information, see Exporting Logs With Sinks.
+          "filter": "A String", # Optional. An advanced logs filter. The only exported log entries are those that are in the resource owning the sink and that match the filter. The filter must use the log entry format specified by the output_version_format parameter. For example, in the v2 format:
+              # logName="projects/[PROJECT_ID]/logs/[LOG_ID]" AND severity>=ERROR
+          "startTime": "A String", # Optional. The time at which this sink will begin exporting log entries. Log entries are exported only if their timestamp is not earlier than the start time. The default value of this field is the time the sink is created or updated.
+          "outputVersionFormat": "A String", # Optional. The log entry format to use for this sink's exported log entries. The v2 format is used by default. The v1 format is deprecated and should be used only as part of a migration effort to v2. See Migration to the v2 API.
+          "writerIdentity": "A String", # Output only. An IAM identity&mdash;a service account or group&mdash;under which Stackdriver Logging writes the exported log entries to the sink's destination. This field is set by sinks.create and sinks.update, based on the setting of unique_writer_identity in those methods.Until you grant this identity write-access to the destination, log entry exports from this sink will fail. For more information, see Granting access for a resource. Consult the destination service's documentation to determine the appropriate IAM roles to assign to the identity.
         },
     ],
   }</pre>
@@ -371,58 +255,36 @@
 </div>
 
 <div class="method">
-    <code class="details" id="update">update(sinkName=None, body, x__xgafv=None)</code>
-  <pre>Updates or creates a sink.
+    <code class="details" id="update">update(sinkName=None, body, uniqueWriterIdentity=None, x__xgafv=None)</code>
+  <pre>Updates a sink. If the named sink doesn't exist, then this method is identical to sinks.create. If the named sink does exist, then this method replaces the following fields in the existing sink with values from the new sink: destination, filter, output_version_format, start_time, and end_time. The updated filter might also have a new writer_identity; see the unique_writer_identity field.
 
 Args:
-  sinkName: string, Required. The resource name of the sink to update, including the parent
-resource and the sink identifier.  If the sink does not exist, this method
-creates the sink.  Example: `"projects/my-project-id/sinks/my-sink-id"`. (required)
+  sinkName: string, Required. The full resource name of the sink to update, including the parent resource and the sink identifier:
+"projects/[PROJECT_ID]/sinks/[SINK_ID]"
+"organizations/[ORGANIZATION_ID]/sinks/[SINK_ID]"
+Example: "projects/my-project-id/sinks/my-sink-id". (required)
   body: object, The request body. (required)
     The object takes the form of:
 
-{ # Describes a sink used to export log entries outside of Stackdriver Logging.
-    "endTime": "A String", # Optional. Time at which this sink expires.
-    "name": "A String", # Required. The client-assigned sink identifier, unique within the
-        # project. Example: `"my-syslog-errors-to-pubsub"`.  Sink identifiers are
-        # limited to 1000 characters and can include only the following characters:
-        # `A-Z`, `a-z`, `0-9`, and the special characters `_-.`.  The maximum length
-        # of the name is 100 characters.
-    "destination": "A String", # Required. The export destination. See
-        # [Exporting Logs With Sinks](/logging/docs/api/tasks/exporting-logs).
-        # Examples:
-        # 
-        #     "storage.googleapis.com/my-gcs-bucket"
-        #     "bigquery.googleapis.com/projects/my-project-id/datasets/my-dataset"
-        #     "pubsub.googleapis.com/projects/my-project/topics/my-topic"
-    "filter": "A String", # Optional. An [advanced logs filter](/logging/docs/view/advanced_filters).
-        # Only log entries matching the filter are exported. The filter
-        # must be consistent with the log entry format specified by the
-        # `outputVersionFormat` parameter, regardless of the format of the
-        # log entry that was originally written to Stackdriver Logging.
-        # Example filter (V2 format):
-        # 
-        #     logName=projects/my-projectid/logs/syslog AND severity>=ERROR
-    "startTime": "A String", # Optional. Time range for which this sink is active.
-        # Logs are exported only if start_time <= entry.timestamp < end_time
-        # Both start_time and end_time may be omitted to specify
-        # (half) infinite ranges. The start_time must be less than the end_time.
-    "outputVersionFormat": "A String", # Optional. The log entry version to use for this sink's exported log
-        # entries.  This version does not have to correspond to the version of the
-        # log entry that was written to Stackdriver Logging. If omitted, the
-        # v2 format is used.
-    "writerIdentity": "A String", # Output only. The IAM identity to which the destination needs to grant write
-        # access.  This may be a service account or a group.
-        # Examples (Do not assume these specific values):
-        #    "serviceAccount:cloud-logs@system.gserviceaccount.com"
-        #    "group:cloud-logs@google.com"
-        # 
-        #   For GCS destinations, the role "roles/owner" is required on the bucket
-        #   For Cloud Pubsub destinations, the role "roles/pubsub.publisher" is
-        #     required on the topic
-        #   For BigQuery, the role "roles/editor" is required on the dataset
+{ # Describes a sink used to export log entries to one of the following destinations in any project: a Cloud Storage bucket, a BigQuery dataset, or a Cloud Pub/Sub topic. A logs filter controls which log entries are exported. The sink must be created within a project or organization.
+    "endTime": "A String", # Optional. The time at which this sink will stop exporting log entries. Log entries are exported only if their timestamp is earlier than the end time. If this field is not supplied, there is no end time. If both a start time and an end time are provided, then the end time must be later than the start time.
+    "name": "A String", # Required. The client-assigned sink identifier, unique within the project. Example: "my-syslog-errors-to-pubsub". Sink identifiers are limited to 100 characters and can include only the following characters: upper and lower-case alphanumeric characters, underscores, hyphens, and periods.
+    "destination": "A String", # Required. The export destination:
+        # "storage.googleapis.com/[GCS_BUCKET]"
+        # "bigquery.googleapis.com/projects/[PROJECT_ID]/datasets/[DATASET]"
+        # "pubsub.googleapis.com/projects/[PROJECT_ID]/topics/[TOPIC_ID]"
+        # The sink's writer_identity, set when the sink is created, must have permission to write to the destination or else the log entries are not exported. For more information, see Exporting Logs With Sinks.
+    "filter": "A String", # Optional. An advanced logs filter. The only exported log entries are those that are in the resource owning the sink and that match the filter. The filter must use the log entry format specified by the output_version_format parameter. For example, in the v2 format:
+        # logName="projects/[PROJECT_ID]/logs/[LOG_ID]" AND severity>=ERROR
+    "startTime": "A String", # Optional. The time at which this sink will begin exporting log entries. Log entries are exported only if their timestamp is not earlier than the start time. The default value of this field is the time the sink is created or updated.
+    "outputVersionFormat": "A String", # Optional. The log entry format to use for this sink's exported log entries. The v2 format is used by default. The v1 format is deprecated and should be used only as part of a migration effort to v2. See Migration to the v2 API.
+    "writerIdentity": "A String", # Output only. An IAM identity&mdash;a service account or group&mdash;under which Stackdriver Logging writes the exported log entries to the sink's destination. This field is set by sinks.create and sinks.update, based on the setting of unique_writer_identity in those methods.Until you grant this identity write-access to the destination, log entry exports from this sink will fail. For more information, see Granting access for a resource. Consult the destination service's documentation to determine the appropriate IAM roles to assign to the identity.
   }
 
+  uniqueWriterIdentity: boolean, Optional. See sinks.create for a description of this field. When updating a sink, the effect of this field on the value of writer_identity in the updated sink depends on both the old and new values of this field:
+If the old and new values of this field are both false or both true, then there is no change to the sink's writer_identity.
+If the old value was false and the new value is true, then writer_identity is changed to a unique service account.
+It is an error if the old value was true and the new value is false.
   x__xgafv: string, V1 error format.
     Allowed values
       1 - v1 error format
@@ -431,46 +293,19 @@
 Returns:
   An object of the form:
 
-    { # Describes a sink used to export log entries outside of Stackdriver Logging.
-      "endTime": "A String", # Optional. Time at which this sink expires.
-      "name": "A String", # Required. The client-assigned sink identifier, unique within the
-          # project. Example: `"my-syslog-errors-to-pubsub"`.  Sink identifiers are
-          # limited to 1000 characters and can include only the following characters:
-          # `A-Z`, `a-z`, `0-9`, and the special characters `_-.`.  The maximum length
-          # of the name is 100 characters.
-      "destination": "A String", # Required. The export destination. See
-          # [Exporting Logs With Sinks](/logging/docs/api/tasks/exporting-logs).
-          # Examples:
-          #
-          #     "storage.googleapis.com/my-gcs-bucket"
-          #     "bigquery.googleapis.com/projects/my-project-id/datasets/my-dataset"
-          #     "pubsub.googleapis.com/projects/my-project/topics/my-topic"
-      "filter": "A String", # Optional. An [advanced logs filter](/logging/docs/view/advanced_filters).
-          # Only log entries matching the filter are exported. The filter
-          # must be consistent with the log entry format specified by the
-          # `outputVersionFormat` parameter, regardless of the format of the
-          # log entry that was originally written to Stackdriver Logging.
-          # Example filter (V2 format):
-          #
-          #     logName=projects/my-projectid/logs/syslog AND severity>=ERROR
-      "startTime": "A String", # Optional. Time range for which this sink is active.
-          # Logs are exported only if start_time <= entry.timestamp < end_time
-          # Both start_time and end_time may be omitted to specify
-          # (half) infinite ranges. The start_time must be less than the end_time.
-      "outputVersionFormat": "A String", # Optional. The log entry version to use for this sink's exported log
-          # entries.  This version does not have to correspond to the version of the
-          # log entry that was written to Stackdriver Logging. If omitted, the
-          # v2 format is used.
-      "writerIdentity": "A String", # Output only. The IAM identity to which the destination needs to grant write
-          # access.  This may be a service account or a group.
-          # Examples (Do not assume these specific values):
-          #    "serviceAccount:cloud-logs@system.gserviceaccount.com"
-          #    "group:cloud-logs@google.com"
-          #
-          #   For GCS destinations, the role "roles/owner" is required on the bucket
-          #   For Cloud Pubsub destinations, the role "roles/pubsub.publisher" is
-          #     required on the topic
-          #   For BigQuery, the role "roles/editor" is required on the dataset
+    { # Describes a sink used to export log entries to one of the following destinations in any project: a Cloud Storage bucket, a BigQuery dataset, or a Cloud Pub/Sub topic. A logs filter controls which log entries are exported. The sink must be created within a project or organization.
+      "endTime": "A String", # Optional. The time at which this sink will stop exporting log entries. Log entries are exported only if their timestamp is earlier than the end time. If this field is not supplied, there is no end time. If both a start time and an end time are provided, then the end time must be later than the start time.
+      "name": "A String", # Required. The client-assigned sink identifier, unique within the project. Example: "my-syslog-errors-to-pubsub". Sink identifiers are limited to 100 characters and can include only the following characters: upper and lower-case alphanumeric characters, underscores, hyphens, and periods.
+      "destination": "A String", # Required. The export destination:
+          # "storage.googleapis.com/[GCS_BUCKET]"
+          # "bigquery.googleapis.com/projects/[PROJECT_ID]/datasets/[DATASET]"
+          # "pubsub.googleapis.com/projects/[PROJECT_ID]/topics/[TOPIC_ID]"
+          # The sink's writer_identity, set when the sink is created, must have permission to write to the destination or else the log entries are not exported. For more information, see Exporting Logs With Sinks.
+      "filter": "A String", # Optional. An advanced logs filter. The only exported log entries are those that are in the resource owning the sink and that match the filter. The filter must use the log entry format specified by the output_version_format parameter. For example, in the v2 format:
+          # logName="projects/[PROJECT_ID]/logs/[LOG_ID]" AND severity>=ERROR
+      "startTime": "A String", # Optional. The time at which this sink will begin exporting log entries. Log entries are exported only if their timestamp is not earlier than the start time. The default value of this field is the time the sink is created or updated.
+      "outputVersionFormat": "A String", # Optional. The log entry format to use for this sink's exported log entries. The v2 format is used by default. The v1 format is deprecated and should be used only as part of a migration effort to v2. See Migration to the v2 API.
+      "writerIdentity": "A String", # Output only. An IAM identity&mdash;a service account or group&mdash;under which Stackdriver Logging writes the exported log entries to the sink's destination. This field is set by sinks.create and sinks.update, based on the setting of unique_writer_identity in those methods.Until you grant this identity write-access to the destination, log entry exports from this sink will fail. For more information, see Granting access for a resource. Consult the destination service's documentation to determine the appropriate IAM roles to assign to the identity.
     }</pre>
 </div>
 
diff --git a/docs/dyn/manufacturers_v1.accounts.html b/docs/dyn/manufacturers_v1.accounts.html
new file mode 100644
index 0000000..7a790bf
--- /dev/null
+++ b/docs/dyn/manufacturers_v1.accounts.html
@@ -0,0 +1,82 @@
+<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="manufacturers_v1.html">Manufacturer Center API</a> . <a href="manufacturers_v1.accounts.html">accounts</a></h1>
+<h2>Instance Methods</h2>
+<p class="toc_element">
+  <code><a href="manufacturers_v1.accounts.products.html">products()</a></code>
+</p>
+<p class="firstline">Returns the products Resource.</p>
+
+</body></html>
\ No newline at end of file
diff --git a/docs/dyn/manufacturers_v1.accounts.products.html b/docs/dyn/manufacturers_v1.accounts.products.html
new file mode 100644
index 0000000..240c393
--- /dev/null
+++ b/docs/dyn/manufacturers_v1.accounts.products.html
@@ -0,0 +1,404 @@
+<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="manufacturers_v1.html">Manufacturer Center API</a> . <a href="manufacturers_v1.accounts.html">accounts</a> . <a href="manufacturers_v1.accounts.products.html">products</a></h1>
+<h2>Instance Methods</h2>
+<p class="toc_element">
+  <code><a href="#get">get(parent=None, name=None, x__xgafv=None)</a></code></p>
+<p class="firstline">Gets the product from a Manufacturer Center account, including product</p>
+<p class="toc_element">
+  <code><a href="#list">list(parent=None, pageToken=None, x__xgafv=None, pageSize=None)</a></code></p>
+<p class="firstline">Lists all the products in a Manufacturer Center account.</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>
+<h3>Method Details</h3>
+<div class="method">
+    <code class="details" id="get">get(parent=None, name=None, x__xgafv=None)</code>
+  <pre>Gets the product from a Manufacturer Center account, including product
+issues.
+
+Args:
+  parent: string, Parent ID in the format `accounts/{account_id}`.
+
+`account_id` - The ID of the Manufacturer Center account. (required)
+  name: string, Name in the format `{target_country}:{content_language}:{product_id}`.
+
+`target_country`   - The target country of the product as a CLDR territory
+                     code (for example, US).
+
+`content_language` - The content language of the product as a two-letter
+                     ISO 639-1 language code (for example, en).
+
+`product_id`     -   The ID of the product. For more information, see
+                     https://support.google.com/manufacturers/answer/6124116#id. (required)
+  x__xgafv: string, V1 error format.
+    Allowed values
+      1 - v1 error format
+      2 - v2 error format
+
+Returns:
+  An object of the form:
+
+    { # Product data.
+    "targetCountry": "A String", # The target country of the product as a CLDR territory code (for example,
+        # US).
+        # @OutputOnly
+    "manuallyDeletedAttributes": [ # Names of the attributes of the product deleted manually via the
+        # Manufacturer Center UI.
+        # @OutputOnly
+      "A String",
+    ],
+    "parent": "A String", # Parent ID in the format `accounts/{account_id}`.
+        #
+        # `account_id` - The ID of the Manufacturer Center account.
+        # @OutputOnly
+    "contentLanguage": "A String", # The content language of the product as a two-letter ISO 639-1 language code
+        # (for example, en).
+        # @OutputOnly
+    "name": "A String", # Name in the format `{target_country}:{content_language}:{product_id}`.
+        #
+        # `target_country`   - The target country of the product as a CLDR territory
+        #                      code (for example, US).
+        #
+        # `content_language` - The content language of the product as a two-letter
+        #                      ISO 639-1 language code (for example, en).
+        #
+        # `product_id`     -   The ID of the product. For more information, see
+        #                      https://support.google.com/manufacturers/answer/6124116#id.
+        # @OutputOnly
+    "manuallyProvidedAttributes": { # Attributes of the product. For more information, see # Attributes of the product provided manually via the Manufacturer Center UI.
+        # @OutputOnly
+        # https://support.google.com/manufacturers/answer/6124116.
+      "productLine": "A String", # The name of the group of products related to the product. For more
+          # information, see
+          # https://support.google.com/manufacturers/answer/6124116#productline.
+      "title": "A String", # The title of the product. For more information, see
+          # https://support.google.com/manufacturers/answer/6124116#title.
+      "mpn": "A String", # The Manufacturer Part Number (MPN) of the product. For more information,
+          # see https://support.google.com/manufacturers/answer/6124116#mpn.
+      "brand": "A String", # The brand name of the product. For more information, see
+          # https://support.google.com/manufacturers/answer/6124116#brand.
+      "productName": "A String", # The canonical name of the product. For more information, see
+          # https://support.google.com/manufacturers/answer/6124116#productname.
+      "productPageUrl": "A String", # The URL of the manufacturer's detail page of the product. For more
+          # information, see
+          # https://support.google.com/manufacturers/answer/6124116#productpage.
+      "gtin": [ # The Global Trade Item Number (GTIN) of the product. For more information,
+          # see https://support.google.com/manufacturers/answer/6124116#gtin.
+        "A String",
+      ],
+      "productType": [ # The manufacturer's category of the product. For more information, see
+          # https://support.google.com/manufacturers/answer/6124116#producttype.
+        "A String",
+      ],
+    },
+    "finalAttributes": { # Attributes of the product. For more information, see # Final attributes of the product. The final attributes are obtained by
+        # overriding the uploaded attributes with the manually provided and deleted
+        # attributes. Google systems only process, evaluate, review, and/or use final
+        # attributes.
+        # @OutputOnly
+        # https://support.google.com/manufacturers/answer/6124116.
+      "productLine": "A String", # The name of the group of products related to the product. For more
+          # information, see
+          # https://support.google.com/manufacturers/answer/6124116#productline.
+      "title": "A String", # The title of the product. For more information, see
+          # https://support.google.com/manufacturers/answer/6124116#title.
+      "mpn": "A String", # The Manufacturer Part Number (MPN) of the product. For more information,
+          # see https://support.google.com/manufacturers/answer/6124116#mpn.
+      "brand": "A String", # The brand name of the product. For more information, see
+          # https://support.google.com/manufacturers/answer/6124116#brand.
+      "productName": "A String", # The canonical name of the product. For more information, see
+          # https://support.google.com/manufacturers/answer/6124116#productname.
+      "productPageUrl": "A String", # The URL of the manufacturer's detail page of the product. For more
+          # information, see
+          # https://support.google.com/manufacturers/answer/6124116#productpage.
+      "gtin": [ # The Global Trade Item Number (GTIN) of the product. For more information,
+          # see https://support.google.com/manufacturers/answer/6124116#gtin.
+        "A String",
+      ],
+      "productType": [ # The manufacturer's category of the product. For more information, see
+          # https://support.google.com/manufacturers/answer/6124116#producttype.
+        "A String",
+      ],
+    },
+    "uploadedAttributes": { # Attributes of the product. For more information, see # Attributes of the product uploaded via the Manufacturer Center API or via
+        # feeds.
+        # https://support.google.com/manufacturers/answer/6124116.
+      "productLine": "A String", # The name of the group of products related to the product. For more
+          # information, see
+          # https://support.google.com/manufacturers/answer/6124116#productline.
+      "title": "A String", # The title of the product. For more information, see
+          # https://support.google.com/manufacturers/answer/6124116#title.
+      "mpn": "A String", # The Manufacturer Part Number (MPN) of the product. For more information,
+          # see https://support.google.com/manufacturers/answer/6124116#mpn.
+      "brand": "A String", # The brand name of the product. For more information, see
+          # https://support.google.com/manufacturers/answer/6124116#brand.
+      "productName": "A String", # The canonical name of the product. For more information, see
+          # https://support.google.com/manufacturers/answer/6124116#productname.
+      "productPageUrl": "A String", # The URL of the manufacturer's detail page of the product. For more
+          # information, see
+          # https://support.google.com/manufacturers/answer/6124116#productpage.
+      "gtin": [ # The Global Trade Item Number (GTIN) of the product. For more information,
+          # see https://support.google.com/manufacturers/answer/6124116#gtin.
+        "A String",
+      ],
+      "productType": [ # The manufacturer's category of the product. For more information, see
+          # https://support.google.com/manufacturers/answer/6124116#producttype.
+        "A String",
+      ],
+    },
+    "issues": [ # A server-generated list of issues associated with the product.
+        # @OutputOnly
+      { # Product issue.
+        "attribute": "A String", # If present, the attribute that triggered the issue. For more information
+            # about attributes, see
+            # https://support.google.com/manufacturers/answer/6124116.
+        "type": "A String", # The server-generated type of the issue, for example,
+            # “INCORRECT_TEXT_FORMATTING”, “IMAGE_NOT_SERVEABLE”, etc.
+        "severity": "A String", # The severity of the issue.
+        "description": "A String", # Description of the issue.
+      },
+    ],
+    "productId": "A String", # The ID of the product. For more information, see
+        # https://support.google.com/manufacturers/answer/6124116#id.
+        # @OutputOnly
+  }</pre>
+</div>
+
+<div class="method">
+    <code class="details" id="list">list(parent=None, pageToken=None, x__xgafv=None, pageSize=None)</code>
+  <pre>Lists all the products in a Manufacturer Center account.
+
+Args:
+  parent: string, Parent ID in the format `accounts/{account_id}`.
+
+`account_id` - The ID of the Manufacturer Center account. (required)
+  pageToken: string, The token returned by the previous request.
+  x__xgafv: string, V1 error format.
+    Allowed values
+      1 - v1 error format
+      2 - v2 error format
+  pageSize: integer, Maximum number of product statuses to return in the response, used for
+paging.
+
+Returns:
+  An object of the form:
+
+    {
+    "nextPageToken": "A String", # The token for the retrieval of the next page of product statuses.
+    "products": [ # List of the products.
+      { # Product data.
+        "targetCountry": "A String", # The target country of the product as a CLDR territory code (for example,
+            # US).
+            # @OutputOnly
+        "manuallyDeletedAttributes": [ # Names of the attributes of the product deleted manually via the
+            # Manufacturer Center UI.
+            # @OutputOnly
+          "A String",
+        ],
+        "parent": "A String", # Parent ID in the format `accounts/{account_id}`.
+            #
+            # `account_id` - The ID of the Manufacturer Center account.
+            # @OutputOnly
+        "contentLanguage": "A String", # The content language of the product as a two-letter ISO 639-1 language code
+            # (for example, en).
+            # @OutputOnly
+        "name": "A String", # Name in the format `{target_country}:{content_language}:{product_id}`.
+            #
+            # `target_country`   - The target country of the product as a CLDR territory
+            #                      code (for example, US).
+            #
+            # `content_language` - The content language of the product as a two-letter
+            #                      ISO 639-1 language code (for example, en).
+            #
+            # `product_id`     -   The ID of the product. For more information, see
+            #                      https://support.google.com/manufacturers/answer/6124116#id.
+            # @OutputOnly
+        "manuallyProvidedAttributes": { # Attributes of the product. For more information, see # Attributes of the product provided manually via the Manufacturer Center UI.
+            # @OutputOnly
+            # https://support.google.com/manufacturers/answer/6124116.
+          "productLine": "A String", # The name of the group of products related to the product. For more
+              # information, see
+              # https://support.google.com/manufacturers/answer/6124116#productline.
+          "title": "A String", # The title of the product. For more information, see
+              # https://support.google.com/manufacturers/answer/6124116#title.
+          "mpn": "A String", # The Manufacturer Part Number (MPN) of the product. For more information,
+              # see https://support.google.com/manufacturers/answer/6124116#mpn.
+          "brand": "A String", # The brand name of the product. For more information, see
+              # https://support.google.com/manufacturers/answer/6124116#brand.
+          "productName": "A String", # The canonical name of the product. For more information, see
+              # https://support.google.com/manufacturers/answer/6124116#productname.
+          "productPageUrl": "A String", # The URL of the manufacturer's detail page of the product. For more
+              # information, see
+              # https://support.google.com/manufacturers/answer/6124116#productpage.
+          "gtin": [ # The Global Trade Item Number (GTIN) of the product. For more information,
+              # see https://support.google.com/manufacturers/answer/6124116#gtin.
+            "A String",
+          ],
+          "productType": [ # The manufacturer's category of the product. For more information, see
+              # https://support.google.com/manufacturers/answer/6124116#producttype.
+            "A String",
+          ],
+        },
+        "finalAttributes": { # Attributes of the product. For more information, see # Final attributes of the product. The final attributes are obtained by
+            # overriding the uploaded attributes with the manually provided and deleted
+            # attributes. Google systems only process, evaluate, review, and/or use final
+            # attributes.
+            # @OutputOnly
+            # https://support.google.com/manufacturers/answer/6124116.
+          "productLine": "A String", # The name of the group of products related to the product. For more
+              # information, see
+              # https://support.google.com/manufacturers/answer/6124116#productline.
+          "title": "A String", # The title of the product. For more information, see
+              # https://support.google.com/manufacturers/answer/6124116#title.
+          "mpn": "A String", # The Manufacturer Part Number (MPN) of the product. For more information,
+              # see https://support.google.com/manufacturers/answer/6124116#mpn.
+          "brand": "A String", # The brand name of the product. For more information, see
+              # https://support.google.com/manufacturers/answer/6124116#brand.
+          "productName": "A String", # The canonical name of the product. For more information, see
+              # https://support.google.com/manufacturers/answer/6124116#productname.
+          "productPageUrl": "A String", # The URL of the manufacturer's detail page of the product. For more
+              # information, see
+              # https://support.google.com/manufacturers/answer/6124116#productpage.
+          "gtin": [ # The Global Trade Item Number (GTIN) of the product. For more information,
+              # see https://support.google.com/manufacturers/answer/6124116#gtin.
+            "A String",
+          ],
+          "productType": [ # The manufacturer's category of the product. For more information, see
+              # https://support.google.com/manufacturers/answer/6124116#producttype.
+            "A String",
+          ],
+        },
+        "uploadedAttributes": { # Attributes of the product. For more information, see # Attributes of the product uploaded via the Manufacturer Center API or via
+            # feeds.
+            # https://support.google.com/manufacturers/answer/6124116.
+          "productLine": "A String", # The name of the group of products related to the product. For more
+              # information, see
+              # https://support.google.com/manufacturers/answer/6124116#productline.
+          "title": "A String", # The title of the product. For more information, see
+              # https://support.google.com/manufacturers/answer/6124116#title.
+          "mpn": "A String", # The Manufacturer Part Number (MPN) of the product. For more information,
+              # see https://support.google.com/manufacturers/answer/6124116#mpn.
+          "brand": "A String", # The brand name of the product. For more information, see
+              # https://support.google.com/manufacturers/answer/6124116#brand.
+          "productName": "A String", # The canonical name of the product. For more information, see
+              # https://support.google.com/manufacturers/answer/6124116#productname.
+          "productPageUrl": "A String", # The URL of the manufacturer's detail page of the product. For more
+              # information, see
+              # https://support.google.com/manufacturers/answer/6124116#productpage.
+          "gtin": [ # The Global Trade Item Number (GTIN) of the product. For more information,
+              # see https://support.google.com/manufacturers/answer/6124116#gtin.
+            "A String",
+          ],
+          "productType": [ # The manufacturer's category of the product. For more information, see
+              # https://support.google.com/manufacturers/answer/6124116#producttype.
+            "A String",
+          ],
+        },
+        "issues": [ # A server-generated list of issues associated with the product.
+            # @OutputOnly
+          { # Product issue.
+            "attribute": "A String", # If present, the attribute that triggered the issue. For more information
+                # about attributes, see
+                # https://support.google.com/manufacturers/answer/6124116.
+            "type": "A String", # The server-generated type of the issue, for example,
+                # “INCORRECT_TEXT_FORMATTING”, “IMAGE_NOT_SERVEABLE”, etc.
+            "severity": "A String", # The severity of the issue.
+            "description": "A String", # Description of the issue.
+          },
+        ],
+        "productId": "A String", # The ID of the product. For more information, see
+            # https://support.google.com/manufacturers/answer/6124116#id.
+            # @OutputOnly
+      },
+    ],
+  }</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>
+
+</body></html>
\ No newline at end of file
diff --git a/docs/dyn/manufacturers_v1.html b/docs/dyn/manufacturers_v1.html
new file mode 100644
index 0000000..2bbef4a
--- /dev/null
+++ b/docs/dyn/manufacturers_v1.html
@@ -0,0 +1,103 @@
+<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="manufacturers_v1.html">Manufacturer Center API</a></h1>
+<h2>Instance Methods</h2>
+<p class="toc_element">
+  <code><a href="manufacturers_v1.accounts.html">accounts()</a></code>
+</p>
+<p class="firstline">Returns the accounts Resource.</p>
+
+<p class="toc_element">
+  <code><a href="#new_batch_http_request">new_batch_http_request()</a></code></p>
+<p class="firstline">Create a BatchHttpRequest object based on the discovery document.</p>
+<h3>Method Details</h3>
+<div class="method">
+    <code class="details" id="new_batch_http_request">new_batch_http_request()</code>
+  <pre>Create a BatchHttpRequest object based on the discovery document.
+
+        Args:
+          callback: callable, A callback to be called for each response, of the
+            form callback(id, response, exception). The first parameter is the
+            request id, and the second is the deserialized response object. The
+            third is an apiclient.errors.HttpError exception object if an HTTP
+            error occurred while processing the request, or None if no error
+            occurred.
+
+        Returns:
+          A BatchHttpRequest object based on the discovery document.
+        </pre>
+</div>
+
+</body></html>
\ No newline at end of file
diff --git a/docs/dyn/mirror_v1.timeline.attachments.html b/docs/dyn/mirror_v1.timeline.attachments.html
index 4684465..2d26d50 100644
--- a/docs/dyn/mirror_v1.timeline.attachments.html
+++ b/docs/dyn/mirror_v1.timeline.attachments.html
@@ -84,7 +84,7 @@
   <code><a href="#get_media">get_media(itemId, attachmentId)</a></code></p>
 <p class="firstline">Retrieves an attachment on a timeline item by item ID and attachment ID.</p>
 <p class="toc_element">
-  <code><a href="#insert">insert(itemId, media_body=None)</a></code></p>
+  <code><a href="#insert">insert(itemId, media_body=None, media_mime_type=None)</a></code></p>
 <p class="firstline">Adds a new attachment to a timeline item.</p>
 <p class="toc_element">
   <code><a href="#list">list(itemId)</a></code></p>
@@ -134,12 +134,13 @@
 </div>
 
 <div class="method">
-    <code class="details" id="insert">insert(itemId, media_body=None)</code>
+    <code class="details" id="insert">insert(itemId, media_body=None, media_mime_type=None)</code>
   <pre>Adds a new attachment to a timeline item.
 
 Args:
   itemId: string, The ID of the timeline item the attachment belongs to. (required)
   media_body: string, The filename of the media request body, or an instance of a MediaUpload object.
+  media_mime_type: string, The MIME type of the media request body, or an instance of a MediaUpload object.
 
 Returns:
   An object of the form:
diff --git a/docs/dyn/mirror_v1.timeline.html b/docs/dyn/mirror_v1.timeline.html
index eaa7d34..159f5fa 100644
--- a/docs/dyn/mirror_v1.timeline.html
+++ b/docs/dyn/mirror_v1.timeline.html
@@ -86,7 +86,7 @@
   <code><a href="#get">get(id)</a></code></p>
 <p class="firstline">Gets a single timeline item by ID.</p>
 <p class="toc_element">
-  <code><a href="#insert">insert(body=None, media_body=None)</a></code></p>
+  <code><a href="#insert">insert(body=None, media_body=None, media_mime_type=None)</a></code></p>
 <p class="firstline">Inserts a new item into the timeline.</p>
 <p class="toc_element">
   <code><a href="#list">list(orderBy=None, includeDeleted=None, pageToken=None, maxResults=None, pinnedOnly=None, sourceItemId=None, bundleId=None)</a></code></p>
@@ -98,7 +98,7 @@
   <code><a href="#patch">patch(id, body)</a></code></p>
 <p class="firstline">Updates a timeline item in place. This method supports patch semantics.</p>
 <p class="toc_element">
-  <code><a href="#update">update(id, body=None, media_body=None)</a></code></p>
+  <code><a href="#update">update(id, body=None, media_body=None, media_mime_type=None)</a></code></p>
 <p class="firstline">Updates a timeline item in place.</p>
 <h3>Method Details</h3>
 <div class="method">
@@ -297,7 +297,7 @@
 </div>
 
 <div class="method">
-    <code class="details" id="insert">insert(body=None, media_body=None)</code>
+    <code class="details" id="insert">insert(body=None, media_body=None, media_mime_type=None)</code>
   <pre>Inserts a new item into the timeline.
 
 Args:
@@ -480,6 +480,7 @@
   }
 
   media_body: string, The filename of the media request body, or an instance of a MediaUpload object.
+  media_mime_type: string, The MIME type of the media request body, or an instance of a MediaUpload object.
 
 Returns:
   An object of the form:
@@ -1240,7 +1241,7 @@
 </div>
 
 <div class="method">
-    <code class="details" id="update">update(id, body=None, media_body=None)</code>
+    <code class="details" id="update">update(id, body=None, media_body=None, media_mime_type=None)</code>
   <pre>Updates a timeline item in place.
 
 Args:
@@ -1424,6 +1425,7 @@
   }
 
   media_body: string, The filename of the media request body, or an instance of a MediaUpload object.
+  media_mime_type: string, The MIME type of the media request body, or an instance of a MediaUpload object.
 
 Returns:
   An object of the form:
diff --git a/docs/dyn/ml_v1beta1.projects.jobs.html b/docs/dyn/ml_v1beta1.projects.jobs.html
index 3882bfd..35a941e 100644
--- a/docs/dyn/ml_v1beta1.projects.jobs.html
+++ b/docs/dyn/ml_v1beta1.projects.jobs.html
@@ -137,7 +137,7 @@
 
 { # Represents a training or prediction job.
     "trainingOutput": { # Represents results of a training job. # The current training job result.
-      "completedTrialCount": "A String", # The number of hyperparameter tuning trials that completed successfully.
+      "consumedMLUnits": 3.14, # The amount of ML units consumed by the job.
       "trials": [ # Results for individual Hyperparameter trials.
         { # Represents the result of a single hyperparameter tuning trial from a
             # training job. The TrainingOutput object that is returned on successful
@@ -159,6 +159,7 @@
           },
         },
       ],
+      "completedTrialCount": "A String", # The number of hyperparameter tuning trials that completed successfully.
     },
     "startTime": "A String", # Output only. When the job processing was started.
     "errorMessage": "A String", # Output only. The details of a failure or a cancellation.
@@ -326,7 +327,7 @@
 
     { # Represents a training or prediction job.
       "trainingOutput": { # Represents results of a training job. # The current training job result.
-        "completedTrialCount": "A String", # The number of hyperparameter tuning trials that completed successfully.
+        "consumedMLUnits": 3.14, # The amount of ML units consumed by the job.
         "trials": [ # Results for individual Hyperparameter trials.
           { # Represents the result of a single hyperparameter tuning trial from a
               # training job. The TrainingOutput object that is returned on successful
@@ -348,6 +349,7 @@
             },
           },
         ],
+        "completedTrialCount": "A String", # The number of hyperparameter tuning trials that completed successfully.
       },
       "startTime": "A String", # Output only. When the job processing was started.
       "errorMessage": "A String", # Output only. The details of a failure or a cancellation.
@@ -524,7 +526,7 @@
 
     { # Represents a training or prediction job.
       "trainingOutput": { # Represents results of a training job. # The current training job result.
-        "completedTrialCount": "A String", # The number of hyperparameter tuning trials that completed successfully.
+        "consumedMLUnits": 3.14, # The amount of ML units consumed by the job.
         "trials": [ # Results for individual Hyperparameter trials.
           { # Represents the result of a single hyperparameter tuning trial from a
               # training job. The TrainingOutput object that is returned on successful
@@ -546,6 +548,7 @@
             },
           },
         ],
+        "completedTrialCount": "A String", # The number of hyperparameter tuning trials that completed successfully.
       },
       "startTime": "A String", # Output only. When the job processing was started.
       "errorMessage": "A String", # Output only. The details of a failure or a cancellation.
@@ -736,7 +739,7 @@
     "jobs": [ # The list of jobs.
       { # Represents a training or prediction job.
           "trainingOutput": { # Represents results of a training job. # The current training job result.
-            "completedTrialCount": "A String", # The number of hyperparameter tuning trials that completed successfully.
+            "consumedMLUnits": 3.14, # The amount of ML units consumed by the job.
             "trials": [ # Results for individual Hyperparameter trials.
               { # Represents the result of a single hyperparameter tuning trial from a
                   # training job. The TrainingOutput object that is returned on successful
@@ -758,6 +761,7 @@
                 },
               },
             ],
+            "completedTrialCount": "A String", # The number of hyperparameter tuning trials that completed successfully.
           },
           "startTime": "A String", # Output only. When the job processing was started.
           "errorMessage": "A String", # Output only. The details of a failure or a cancellation.
diff --git a/docs/dyn/monitoring_v3.projects.collectdTimeSeries.html b/docs/dyn/monitoring_v3.projects.collectdTimeSeries.html
index 635ece3..b2eccbb 100644
--- a/docs/dyn/monitoring_v3.projects.collectdTimeSeries.html
+++ b/docs/dyn/monitoring_v3.projects.collectdTimeSeries.html
@@ -83,37 +83,37 @@
   <pre>Stackdriver Monitoring Agent only: Creates a new time series.<aside class="caution">This method is only for use by the Stackdriver Monitoring Agent. Use projects.timeSeries.create instead.</aside>
 
 Args:
-  name: string, The project in which to create the time series. The format is &quot;projects/PROJECT_ID_OR_NUMBER&quot;. (required)
+  name: string, The project in which to create the time series. The format is "projects/PROJECT_ID_OR_NUMBER". (required)
   body: object, The request body. (required)
     The object takes the form of:
 
 { # The CreateCollectdTimeSeries request.
     "collectdPayloads": [ # The collectd payloads representing the time series data. You must not include more than a single point for each time series, so no two payloads can have the same values for all of the fields plugin, plugin_instance, type, and type_instance.
       { # A collection of data points sent from a collectd-based plugin. See the collectd documentation for more information.
-        "plugin": "A String", # The name of the plugin. Example: &quot;disk&quot;.
-        "typeInstance": "A String", # The measurement type instance. Example: &quot;used&quot;.
+        "plugin": "A String", # The name of the plugin. Example: "disk".
+        "typeInstance": "A String", # The measurement type instance. Example: "used".
         "values": [ # The measured values during this time interval. Each value must have a different dataSourceName.
           { # A single data point from a collectd-based plugin.
             "dataSourceType": "A String", # The type of measurement.
-            "dataSourceName": "A String", # The data source for the collectd value. For example there are two data sources for network measurements: &quot;rx&quot; and &quot;tx&quot;.
+            "dataSourceName": "A String", # The data source for the collectd value. For example there are two data sources for network measurements: "rx" and "tx".
             "value": { # A single strongly-typed value. # The measurement value.
               "distributionValue": { # Distribution contains summary statistics for a population of values and, optionally, a histogram representing the distribution of those values across a specified set of histogram buckets.The summary statistics are the count, mean, sum of the squared deviation from the mean, the minimum, and the maximum of the set of population of values.The histogram is based on a sequence of buckets and gives a count of values that fall into each bucket. The boundaries of the buckets are given either explicitly or by specifying parameters for a method of computing them (buckets of fixed width or buckets of exponentially increasing width).Although it is not forbidden, it is generally a bad idea to include non-finite values (infinities or NaNs) in the population of values, as this will render the mean and sum_of_squared_deviation fields meaningless. # A distribution value.
                 "count": "A String", # The number of values in the population. Must be non-negative.
                 "bucketCounts": [ # If bucket_options is given, then the sum of the values in bucket_counts must equal the value in count. If bucket_options is not given, no bucket_counts fields may be given.Bucket counts are given in order under the numbering scheme described above (the underflow bucket has number 0; the finite buckets, if any, have numbers 1 through N-2; the overflow bucket has number N-1).The size of bucket_counts must be no greater than N as defined in bucket_options.Any suffix of trailing zero bucket_count fields may be omitted.
                   "A String",
                 ],
-                "bucketOptions": { # A Distribution may optionally contain a histogram of the values in the population. The histogram is given in bucket_counts as counts of values that fall into one of a sequence of non-overlapping buckets. The sequence of buckets is described by bucket_options.A bucket specifies an inclusive lower bound and exclusive upper bound for the values that are counted for that bucket. The upper bound of a bucket is strictly greater than the lower bound.The sequence of N buckets for a Distribution consists of an underflow bucket (number 0), zero or more finite buckets (number 1 through N - 2) and an overflow bucket (number N - 1). The buckets are contiguous: the lower bound of bucket i (i &gt; 0) is the same as the upper bound of bucket i - 1. The buckets span the whole range of finite values: lower bound of the underflow bucket is -infinity and the upper bound of the overflow bucket is +infinity. The finite buckets are so-called because both bounds are finite.BucketOptions describes bucket boundaries in one of three ways. Two describe the boundaries by giving parameters for a formula to generate boundaries and one gives the bucket boundaries explicitly.If bucket_options is not given, then no bucket_counts may be given. # Defines the histogram bucket boundaries.
-                  "exponentialBuckets": { # Specify a sequence of buckets that have a width that is proportional to the value of the lower bound. Each bucket represents a constant relative uncertainty on a specific value in the bucket.Defines num_finite_buckets + 2 (= N) buckets with these boundaries for bucket i:Upper bound (0 &lt;= i &lt; N-1): scale * (growth_factor ^ i).  Lower bound (1 &lt;= i &lt; N): scale * (growth_factor ^ (i - 1)). # The exponential buckets.
+                "bucketOptions": { # A Distribution may optionally contain a histogram of the values in the population. The histogram is given in bucket_counts as counts of values that fall into one of a sequence of non-overlapping buckets. The sequence of buckets is described by bucket_options.A bucket specifies an inclusive lower bound and exclusive upper bound for the values that are counted for that bucket. The upper bound of a bucket is strictly greater than the lower bound.The sequence of N buckets for a Distribution consists of an underflow bucket (number 0), zero or more finite buckets (number 1 through N - 2) and an overflow bucket (number N - 1). The buckets are contiguous: the lower bound of bucket i (i > 0) is the same as the upper bound of bucket i - 1. The buckets span the whole range of finite values: lower bound of the underflow bucket is -infinity and the upper bound of the overflow bucket is +infinity. The finite buckets are so-called because both bounds are finite.BucketOptions describes bucket boundaries in one of three ways. Two describe the boundaries by giving parameters for a formula to generate boundaries and one gives the bucket boundaries explicitly.If bucket_options is not given, then no bucket_counts may be given. # Defines the histogram bucket boundaries.
+                  "exponentialBuckets": { # Specify a sequence of buckets that have a width that is proportional to the value of the lower bound. Each bucket represents a constant relative uncertainty on a specific value in the bucket.Defines num_finite_buckets + 2 (= N) buckets with these boundaries for bucket i:Upper bound (0 <= i < N-1): scale * (growth_factor ^ i).  Lower bound (1 <= i < N): scale * (growth_factor ^ (i - 1)). # The exponential buckets.
                     "scale": 3.14, # Must be greater than 0.
                     "growthFactor": 3.14, # Must be greater than 1.
                     "numFiniteBuckets": 42, # Must be greater than 0.
                   },
-                  "linearBuckets": { # Specify a sequence of buckets that all have the same width (except overflow and underflow). Each bucket represents a constant absolute uncertainty on the specific value in the bucket.Defines num_finite_buckets + 2 (= N) buckets with these boundaries for bucket i:Upper bound (0 &lt;= i &lt; N-1): offset + (width * i).  Lower bound (1 &lt;= i &lt; N): offset + (width * (i - 1)). # The linear bucket.
+                  "linearBuckets": { # Specify a sequence of buckets that all have the same width (except overflow and underflow). Each bucket represents a constant absolute uncertainty on the specific value in the bucket.Defines num_finite_buckets + 2 (= N) buckets with these boundaries for bucket i:Upper bound (0 <= i < N-1): offset + (width * i).  Lower bound (1 <= i < N): offset + (width * (i - 1)). # The linear bucket.
                     "width": 3.14, # Must be greater than 0.
                     "numFiniteBuckets": 42, # Must be greater than 0.
                     "offset": 3.14, # Lower bound of the first bucket.
                   },
-                  "explicitBuckets": { # A set of buckets with arbitrary widths.Defines size(bounds) + 1 (= N) buckets with these boundaries for bucket i:Upper bound (0 &lt;= i &lt; N-1): boundsi  Lower bound (1 &lt;= i &lt; N); boundsi - 1There must be at least one element in bounds. If bounds has only one element, there are no finite buckets, and that single element is the common boundary of the overflow and underflow buckets. # The explicit buckets.
+                  "explicitBuckets": { # A set of buckets with arbitrary widths.Defines size(bounds) + 1 (= N) buckets with these boundaries for bucket i:Upper bound (0 <= i < N-1): boundsi  Lower bound (1 <= i < N); boundsi - 1There must be at least one element in bounds. If bounds has only one element, there are no finite buckets, and that single element is the common boundary of the overflow and underflow buckets. # The explicit buckets.
                     "bounds": [ # The values must be monotonically increasing.
                       3.14,
                     ],
@@ -137,27 +137,27 @@
         ],
         "startTime": "A String", # The start time of the interval.
         "endTime": "A String", # The end time of the interval.
-        "type": "A String", # The measurement type. Example: &quot;memory&quot;.
-        "pluginInstance": "A String", # The instance name of the plugin Example: &quot;hdcl&quot;.
-        "metadata": { # The measurement metadata. Example: &quot;process_id&quot; -&gt; 12345
+        "type": "A String", # The measurement type. Example: "memory".
+        "pluginInstance": "A String", # The instance name of the plugin Example: "hdcl".
+        "metadata": { # The measurement metadata. Example: "process_id" -> 12345
           "a_key": { # A single strongly-typed value.
             "distributionValue": { # Distribution contains summary statistics for a population of values and, optionally, a histogram representing the distribution of those values across a specified set of histogram buckets.The summary statistics are the count, mean, sum of the squared deviation from the mean, the minimum, and the maximum of the set of population of values.The histogram is based on a sequence of buckets and gives a count of values that fall into each bucket. The boundaries of the buckets are given either explicitly or by specifying parameters for a method of computing them (buckets of fixed width or buckets of exponentially increasing width).Although it is not forbidden, it is generally a bad idea to include non-finite values (infinities or NaNs) in the population of values, as this will render the mean and sum_of_squared_deviation fields meaningless. # A distribution value.
               "count": "A String", # The number of values in the population. Must be non-negative.
               "bucketCounts": [ # If bucket_options is given, then the sum of the values in bucket_counts must equal the value in count. If bucket_options is not given, no bucket_counts fields may be given.Bucket counts are given in order under the numbering scheme described above (the underflow bucket has number 0; the finite buckets, if any, have numbers 1 through N-2; the overflow bucket has number N-1).The size of bucket_counts must be no greater than N as defined in bucket_options.Any suffix of trailing zero bucket_count fields may be omitted.
                 "A String",
               ],
-              "bucketOptions": { # A Distribution may optionally contain a histogram of the values in the population. The histogram is given in bucket_counts as counts of values that fall into one of a sequence of non-overlapping buckets. The sequence of buckets is described by bucket_options.A bucket specifies an inclusive lower bound and exclusive upper bound for the values that are counted for that bucket. The upper bound of a bucket is strictly greater than the lower bound.The sequence of N buckets for a Distribution consists of an underflow bucket (number 0), zero or more finite buckets (number 1 through N - 2) and an overflow bucket (number N - 1). The buckets are contiguous: the lower bound of bucket i (i &gt; 0) is the same as the upper bound of bucket i - 1. The buckets span the whole range of finite values: lower bound of the underflow bucket is -infinity and the upper bound of the overflow bucket is +infinity. The finite buckets are so-called because both bounds are finite.BucketOptions describes bucket boundaries in one of three ways. Two describe the boundaries by giving parameters for a formula to generate boundaries and one gives the bucket boundaries explicitly.If bucket_options is not given, then no bucket_counts may be given. # Defines the histogram bucket boundaries.
-                "exponentialBuckets": { # Specify a sequence of buckets that have a width that is proportional to the value of the lower bound. Each bucket represents a constant relative uncertainty on a specific value in the bucket.Defines num_finite_buckets + 2 (= N) buckets with these boundaries for bucket i:Upper bound (0 &lt;= i &lt; N-1): scale * (growth_factor ^ i).  Lower bound (1 &lt;= i &lt; N): scale * (growth_factor ^ (i - 1)). # The exponential buckets.
+              "bucketOptions": { # A Distribution may optionally contain a histogram of the values in the population. The histogram is given in bucket_counts as counts of values that fall into one of a sequence of non-overlapping buckets. The sequence of buckets is described by bucket_options.A bucket specifies an inclusive lower bound and exclusive upper bound for the values that are counted for that bucket. The upper bound of a bucket is strictly greater than the lower bound.The sequence of N buckets for a Distribution consists of an underflow bucket (number 0), zero or more finite buckets (number 1 through N - 2) and an overflow bucket (number N - 1). The buckets are contiguous: the lower bound of bucket i (i > 0) is the same as the upper bound of bucket i - 1. The buckets span the whole range of finite values: lower bound of the underflow bucket is -infinity and the upper bound of the overflow bucket is +infinity. The finite buckets are so-called because both bounds are finite.BucketOptions describes bucket boundaries in one of three ways. Two describe the boundaries by giving parameters for a formula to generate boundaries and one gives the bucket boundaries explicitly.If bucket_options is not given, then no bucket_counts may be given. # Defines the histogram bucket boundaries.
+                "exponentialBuckets": { # Specify a sequence of buckets that have a width that is proportional to the value of the lower bound. Each bucket represents a constant relative uncertainty on a specific value in the bucket.Defines num_finite_buckets + 2 (= N) buckets with these boundaries for bucket i:Upper bound (0 <= i < N-1): scale * (growth_factor ^ i).  Lower bound (1 <= i < N): scale * (growth_factor ^ (i - 1)). # The exponential buckets.
                   "scale": 3.14, # Must be greater than 0.
                   "growthFactor": 3.14, # Must be greater than 1.
                   "numFiniteBuckets": 42, # Must be greater than 0.
                 },
-                "linearBuckets": { # Specify a sequence of buckets that all have the same width (except overflow and underflow). Each bucket represents a constant absolute uncertainty on the specific value in the bucket.Defines num_finite_buckets + 2 (= N) buckets with these boundaries for bucket i:Upper bound (0 &lt;= i &lt; N-1): offset + (width * i).  Lower bound (1 &lt;= i &lt; N): offset + (width * (i - 1)). # The linear bucket.
+                "linearBuckets": { # Specify a sequence of buckets that all have the same width (except overflow and underflow). Each bucket represents a constant absolute uncertainty on the specific value in the bucket.Defines num_finite_buckets + 2 (= N) buckets with these boundaries for bucket i:Upper bound (0 <= i < N-1): offset + (width * i).  Lower bound (1 <= i < N): offset + (width * (i - 1)). # The linear bucket.
                   "width": 3.14, # Must be greater than 0.
                   "numFiniteBuckets": 42, # Must be greater than 0.
                   "offset": 3.14, # Lower bound of the first bucket.
                 },
-                "explicitBuckets": { # A set of buckets with arbitrary widths.Defines size(bounds) + 1 (= N) buckets with these boundaries for bucket i:Upper bound (0 &lt;= i &lt; N-1): boundsi  Lower bound (1 &lt;= i &lt; N); boundsi - 1There must be at least one element in bounds. If bounds has only one element, there are no finite buckets, and that single element is the common boundary of the overflow and underflow buckets. # The explicit buckets.
+                "explicitBuckets": { # A set of buckets with arbitrary widths.Defines size(bounds) + 1 (= N) buckets with these boundaries for bucket i:Upper bound (0 <= i < N-1): boundsi  Lower bound (1 <= i < N); boundsi - 1There must be at least one element in bounds. If bounds has only one element, there are no finite buckets, and that single element is the common boundary of the overflow and underflow buckets. # The explicit buckets.
                   "bounds": [ # The values must be monotonically increasing.
                     3.14,
                   ],
@@ -180,16 +180,16 @@
         },
       },
     ],
-    "resource": { # An object representing a resource that can be used for monitoring, logging, billing, or other purposes. Examples include virtual machine instances, databases, and storage devices such as disks. The type field identifies a MonitoredResourceDescriptor object that describes the resource's schema. Information in the labels field identifies the actual resource and its attributes according to the schema. For example, a particular Compute Engine VM instance could be represented by the following object, because the MonitoredResourceDescriptor for &quot;gce_instance&quot; has labels &quot;instance_id&quot; and &quot;zone&quot;: # The monitored resource associated with the time series.
-        # { &quot;type&quot;: &quot;gce_instance&quot;,
-        #   &quot;labels&quot;: { &quot;instance_id&quot;: &quot;12345678901234&quot;,
-        #               &quot;zone&quot;: &quot;us-central1-a&quot; }}
-      "labels": { # Required. Values for all of the labels listed in the associated monitored resource descriptor. For example, Cloud SQL databases use the labels &quot;database_id&quot; and &quot;zone&quot;.
+    "resource": { # An object representing a resource that can be used for monitoring, logging, billing, or other purposes. Examples include virtual machine instances, databases, and storage devices such as disks. The type field identifies a MonitoredResourceDescriptor object that describes the resource's schema. Information in the labels field identifies the actual resource and its attributes according to the schema. For example, a particular Compute Engine VM instance could be represented by the following object, because the MonitoredResourceDescriptor for "gce_instance" has labels "instance_id" and "zone": # The monitored resource associated with the time series.
+        # { "type": "gce_instance",
+        #   "labels": { "instance_id": "12345678901234",
+        #               "zone": "us-central1-a" }}
+      "labels": { # Required. Values for all of the labels listed in the associated monitored resource descriptor. For example, Cloud SQL databases use the labels "database_id" and "zone".
         "a_key": "A String",
       },
-      "type": "A String", # Required. The monitored resource type. This field must match the type field of a MonitoredResourceDescriptor object. For example, the type of a Cloud SQL database is &quot;cloudsql_database&quot;.
+      "type": "A String", # Required. The monitored resource type. This field must match the type field of a MonitoredResourceDescriptor object. For example, the type of a Cloud SQL database is "cloudsql_database".
     },
-    "collectdVersion": "A String", # The version of collectd that collected the data. Example: &quot;5.3.0-192.el6&quot;.
+    "collectdVersion": "A String", # The version of collectd that collected the data. Example: "5.3.0-192.el6".
   }
 
   x__xgafv: string, V1 error format.
diff --git a/docs/dyn/monitoring_v3.projects.groups.html b/docs/dyn/monitoring_v3.projects.groups.html
index 1e8481b..4cb2ea3 100644
--- a/docs/dyn/monitoring_v3.projects.groups.html
+++ b/docs/dyn/monitoring_v3.projects.groups.html
@@ -103,15 +103,15 @@
   <pre>Creates a new group.
 
 Args:
-  name: string, The project in which to create the group. The format is &quot;projects/{project_id_or_number}&quot;. (required)
+  name: string, The project in which to create the group. The format is "projects/{project_id_or_number}". (required)
   body: object, The request body. (required)
     The object takes the form of:
 
-{ # The description of a dynamic collection of monitored resources. Each group has a filter that is matched against monitored resources and their associated metadata. If a group's filter matches an available monitored resource, then that resource is a member of that group. Groups can contain any number of monitored resources, and each monitored resource can be a member of any number of groups.Groups can be nested in parent-child hierarchies. The parentName field identifies an optional parent for each group. If a group has a parent, then the only monitored resources available to be matched by the group's filter are the resources contained in the parent group. In other words, a group contains the monitored resources that match its filter and the filters of all the group's ancestors. A group without a parent can contain any monitored resource.For example, consider an infrastructure running a set of instances with two user-defined tags: &quot;environment&quot; and &quot;role&quot;. A parent group has a filter, environment=&quot;production&quot;. A child of that parent group has a filter, role=&quot;transcoder&quot;. The parent group contains all instances in the production environment, regardless of their roles. The child group contains instances that have the transcoder role and are in the production environment.The monitored resources contained in a group can change at any moment, depending on what resources exist and what filters are associated with the group and its ancestors.
+{ # The description of a dynamic collection of monitored resources. Each group has a filter that is matched against monitored resources and their associated metadata. If a group's filter matches an available monitored resource, then that resource is a member of that group. Groups can contain any number of monitored resources, and each monitored resource can be a member of any number of groups.Groups can be nested in parent-child hierarchies. The parentName field identifies an optional parent for each group. If a group has a parent, then the only monitored resources available to be matched by the group's filter are the resources contained in the parent group. In other words, a group contains the monitored resources that match its filter and the filters of all the group's ancestors. A group without a parent can contain any monitored resource.For example, consider an infrastructure running a set of instances with two user-defined tags: "environment" and "role". A parent group has a filter, environment="production". A child of that parent group has a filter, role="transcoder". The parent group contains all instances in the production environment, regardless of their roles. The child group contains instances that have the transcoder role and are in the production environment.The monitored resources contained in a group can change at any moment, depending on what resources exist and what filters are associated with the group and its ancestors.
     "filter": "A String", # The filter used to determine which monitored resources belong to this group.
-    "parentName": "A String", # The name of the group's parent, if it has one. The format is &quot;projects/{project_id_or_number}/groups/{group_id}&quot;. For groups with no parent, parentName is the empty string, &quot;&quot;.
+    "parentName": "A String", # The name of the group's parent, if it has one. The format is "projects/{project_id_or_number}/groups/{group_id}". For groups with no parent, parentName is the empty string, "".
     "displayName": "A String", # A user-assigned name for this group, used only for display purposes.
-    "name": "A String", # Output only. The name of this group. The format is &quot;projects/{project_id_or_number}/groups/{group_id}&quot;. When creating a group, this field is ignored and a new name is created consisting of the project specified in the call to CreateGroup and a unique {group_id} that is generated automatically.
+    "name": "A String", # Output only. The name of this group. The format is "projects/{project_id_or_number}/groups/{group_id}". When creating a group, this field is ignored and a new name is created consisting of the project specified in the call to CreateGroup and a unique {group_id} that is generated automatically.
     "isCluster": True or False, # If true, the members of this group are considered to be a cluster. The system can perform additional analysis on groups that are clusters.
   }
 
@@ -124,11 +124,11 @@
 Returns:
   An object of the form:
 
-    { # The description of a dynamic collection of monitored resources. Each group has a filter that is matched against monitored resources and their associated metadata. If a group's filter matches an available monitored resource, then that resource is a member of that group. Groups can contain any number of monitored resources, and each monitored resource can be a member of any number of groups.Groups can be nested in parent-child hierarchies. The parentName field identifies an optional parent for each group. If a group has a parent, then the only monitored resources available to be matched by the group's filter are the resources contained in the parent group. In other words, a group contains the monitored resources that match its filter and the filters of all the group's ancestors. A group without a parent can contain any monitored resource.For example, consider an infrastructure running a set of instances with two user-defined tags: &quot;environment&quot; and &quot;role&quot;. A parent group has a filter, environment=&quot;production&quot;. A child of that parent group has a filter, role=&quot;transcoder&quot;. The parent group contains all instances in the production environment, regardless of their roles. The child group contains instances that have the transcoder role and are in the production environment.The monitored resources contained in a group can change at any moment, depending on what resources exist and what filters are associated with the group and its ancestors.
+    { # The description of a dynamic collection of monitored resources. Each group has a filter that is matched against monitored resources and their associated metadata. If a group's filter matches an available monitored resource, then that resource is a member of that group. Groups can contain any number of monitored resources, and each monitored resource can be a member of any number of groups.Groups can be nested in parent-child hierarchies. The parentName field identifies an optional parent for each group. If a group has a parent, then the only monitored resources available to be matched by the group's filter are the resources contained in the parent group. In other words, a group contains the monitored resources that match its filter and the filters of all the group's ancestors. A group without a parent can contain any monitored resource.For example, consider an infrastructure running a set of instances with two user-defined tags: "environment" and "role". A parent group has a filter, environment="production". A child of that parent group has a filter, role="transcoder". The parent group contains all instances in the production environment, regardless of their roles. The child group contains instances that have the transcoder role and are in the production environment.The monitored resources contained in a group can change at any moment, depending on what resources exist and what filters are associated with the group and its ancestors.
       "filter": "A String", # The filter used to determine which monitored resources belong to this group.
-      "parentName": "A String", # The name of the group's parent, if it has one. The format is &quot;projects/{project_id_or_number}/groups/{group_id}&quot;. For groups with no parent, parentName is the empty string, &quot;&quot;.
+      "parentName": "A String", # The name of the group's parent, if it has one. The format is "projects/{project_id_or_number}/groups/{group_id}". For groups with no parent, parentName is the empty string, "".
       "displayName": "A String", # A user-assigned name for this group, used only for display purposes.
-      "name": "A String", # Output only. The name of this group. The format is &quot;projects/{project_id_or_number}/groups/{group_id}&quot;. When creating a group, this field is ignored and a new name is created consisting of the project specified in the call to CreateGroup and a unique {group_id} that is generated automatically.
+      "name": "A String", # Output only. The name of this group. The format is "projects/{project_id_or_number}/groups/{group_id}". When creating a group, this field is ignored and a new name is created consisting of the project specified in the call to CreateGroup and a unique {group_id} that is generated automatically.
       "isCluster": True or False, # If true, the members of this group are considered to be a cluster. The system can perform additional analysis on groups that are clusters.
     }</pre>
 </div>
@@ -138,7 +138,7 @@
   <pre>Deletes an existing group.
 
 Args:
-  name: string, The group to delete. The format is &quot;projects/{project_id_or_number}/groups/{group_id}&quot;. (required)
+  name: string, The group to delete. The format is "projects/{project_id_or_number}/groups/{group_id}". (required)
   x__xgafv: string, V1 error format.
     Allowed values
       1 - v1 error format
@@ -160,7 +160,7 @@
   <pre>Gets a single group.
 
 Args:
-  name: string, The group to retrieve. The format is &quot;projects/{project_id_or_number}/groups/{group_id}&quot;. (required)
+  name: string, The group to retrieve. The format is "projects/{project_id_or_number}/groups/{group_id}". (required)
   x__xgafv: string, V1 error format.
     Allowed values
       1 - v1 error format
@@ -169,11 +169,11 @@
 Returns:
   An object of the form:
 
-    { # The description of a dynamic collection of monitored resources. Each group has a filter that is matched against monitored resources and their associated metadata. If a group's filter matches an available monitored resource, then that resource is a member of that group. Groups can contain any number of monitored resources, and each monitored resource can be a member of any number of groups.Groups can be nested in parent-child hierarchies. The parentName field identifies an optional parent for each group. If a group has a parent, then the only monitored resources available to be matched by the group's filter are the resources contained in the parent group. In other words, a group contains the monitored resources that match its filter and the filters of all the group's ancestors. A group without a parent can contain any monitored resource.For example, consider an infrastructure running a set of instances with two user-defined tags: &quot;environment&quot; and &quot;role&quot;. A parent group has a filter, environment=&quot;production&quot;. A child of that parent group has a filter, role=&quot;transcoder&quot;. The parent group contains all instances in the production environment, regardless of their roles. The child group contains instances that have the transcoder role and are in the production environment.The monitored resources contained in a group can change at any moment, depending on what resources exist and what filters are associated with the group and its ancestors.
+    { # The description of a dynamic collection of monitored resources. Each group has a filter that is matched against monitored resources and their associated metadata. If a group's filter matches an available monitored resource, then that resource is a member of that group. Groups can contain any number of monitored resources, and each monitored resource can be a member of any number of groups.Groups can be nested in parent-child hierarchies. The parentName field identifies an optional parent for each group. If a group has a parent, then the only monitored resources available to be matched by the group's filter are the resources contained in the parent group. In other words, a group contains the monitored resources that match its filter and the filters of all the group's ancestors. A group without a parent can contain any monitored resource.For example, consider an infrastructure running a set of instances with two user-defined tags: "environment" and "role". A parent group has a filter, environment="production". A child of that parent group has a filter, role="transcoder". The parent group contains all instances in the production environment, regardless of their roles. The child group contains instances that have the transcoder role and are in the production environment.The monitored resources contained in a group can change at any moment, depending on what resources exist and what filters are associated with the group and its ancestors.
       "filter": "A String", # The filter used to determine which monitored resources belong to this group.
-      "parentName": "A String", # The name of the group's parent, if it has one. The format is &quot;projects/{project_id_or_number}/groups/{group_id}&quot;. For groups with no parent, parentName is the empty string, &quot;&quot;.
+      "parentName": "A String", # The name of the group's parent, if it has one. The format is "projects/{project_id_or_number}/groups/{group_id}". For groups with no parent, parentName is the empty string, "".
       "displayName": "A String", # A user-assigned name for this group, used only for display purposes.
-      "name": "A String", # Output only. The name of this group. The format is &quot;projects/{project_id_or_number}/groups/{group_id}&quot;. When creating a group, this field is ignored and a new name is created consisting of the project specified in the call to CreateGroup and a unique {group_id} that is generated automatically.
+      "name": "A String", # Output only. The name of this group. The format is "projects/{project_id_or_number}/groups/{group_id}". When creating a group, this field is ignored and a new name is created consisting of the project specified in the call to CreateGroup and a unique {group_id} that is generated automatically.
       "isCluster": True or False, # If true, the members of this group are considered to be a cluster. The system can perform additional analysis on groups that are clusters.
     }</pre>
 </div>
@@ -183,16 +183,16 @@
   <pre>Lists the existing groups.
 
 Args:
-  name: string, The project whose groups are to be listed. The format is &quot;projects/{project_id_or_number}&quot;. (required)
-  ancestorsOfGroup: string, A group name: &quot;projects/{project_id_or_number}/groups/{group_id}&quot;. Returns groups that are ancestors of the specified group. The groups are returned in order, starting with the immediate parent and ending with the most distant ancestor. If the specified group has no immediate parent, the results are empty.
-  descendantsOfGroup: string, A group name: &quot;projects/{project_id_or_number}/groups/{group_id}&quot;. Returns the descendants of the specified group. This is a superset of the results returned by the childrenOfGroup filter, and includes children-of-children, and so forth.
+  name: string, The project whose groups are to be listed. The format is "projects/{project_id_or_number}". (required)
+  ancestorsOfGroup: string, A group name: "projects/{project_id_or_number}/groups/{group_id}". Returns groups that are ancestors of the specified group. The groups are returned in order, starting with the immediate parent and ending with the most distant ancestor. If the specified group has no immediate parent, the results are empty.
+  descendantsOfGroup: string, A group name: "projects/{project_id_or_number}/groups/{group_id}". Returns the descendants of the specified group. This is a superset of the results returned by the childrenOfGroup filter, and includes children-of-children, and so forth.
   pageSize: integer, A positive number that is the maximum number of results to return.
   x__xgafv: string, V1 error format.
     Allowed values
       1 - v1 error format
       2 - v2 error format
   pageToken: string, If this field is not empty then it must contain the nextPageToken value returned by a previous call to this method. Using this field causes the method to return additional results from the previous method call.
-  childrenOfGroup: string, A group name: &quot;projects/{project_id_or_number}/groups/{group_id}&quot;. Returns groups whose parentName field contains the group name. If no groups have this parent, the results are empty.
+  childrenOfGroup: string, A group name: "projects/{project_id_or_number}/groups/{group_id}". Returns groups whose parentName field contains the group name. If no groups have this parent, the results are empty.
 
 Returns:
   An object of the form:
@@ -200,11 +200,11 @@
     { # The ListGroups response.
     "nextPageToken": "A String", # If there are more results than have been returned, then this field is set to a non-empty value. To see the additional results, use that value as pageToken in the next call to this method.
     "group": [ # The groups that match the specified filters.
-      { # The description of a dynamic collection of monitored resources. Each group has a filter that is matched against monitored resources and their associated metadata. If a group's filter matches an available monitored resource, then that resource is a member of that group. Groups can contain any number of monitored resources, and each monitored resource can be a member of any number of groups.Groups can be nested in parent-child hierarchies. The parentName field identifies an optional parent for each group. If a group has a parent, then the only monitored resources available to be matched by the group's filter are the resources contained in the parent group. In other words, a group contains the monitored resources that match its filter and the filters of all the group's ancestors. A group without a parent can contain any monitored resource.For example, consider an infrastructure running a set of instances with two user-defined tags: &quot;environment&quot; and &quot;role&quot;. A parent group has a filter, environment=&quot;production&quot;. A child of that parent group has a filter, role=&quot;transcoder&quot;. The parent group contains all instances in the production environment, regardless of their roles. The child group contains instances that have the transcoder role and are in the production environment.The monitored resources contained in a group can change at any moment, depending on what resources exist and what filters are associated with the group and its ancestors.
+      { # The description of a dynamic collection of monitored resources. Each group has a filter that is matched against monitored resources and their associated metadata. If a group's filter matches an available monitored resource, then that resource is a member of that group. Groups can contain any number of monitored resources, and each monitored resource can be a member of any number of groups.Groups can be nested in parent-child hierarchies. The parentName field identifies an optional parent for each group. If a group has a parent, then the only monitored resources available to be matched by the group's filter are the resources contained in the parent group. In other words, a group contains the monitored resources that match its filter and the filters of all the group's ancestors. A group without a parent can contain any monitored resource.For example, consider an infrastructure running a set of instances with two user-defined tags: "environment" and "role". A parent group has a filter, environment="production". A child of that parent group has a filter, role="transcoder". The parent group contains all instances in the production environment, regardless of their roles. The child group contains instances that have the transcoder role and are in the production environment.The monitored resources contained in a group can change at any moment, depending on what resources exist and what filters are associated with the group and its ancestors.
           "filter": "A String", # The filter used to determine which monitored resources belong to this group.
-          "parentName": "A String", # The name of the group's parent, if it has one. The format is &quot;projects/{project_id_or_number}/groups/{group_id}&quot;. For groups with no parent, parentName is the empty string, &quot;&quot;.
+          "parentName": "A String", # The name of the group's parent, if it has one. The format is "projects/{project_id_or_number}/groups/{group_id}". For groups with no parent, parentName is the empty string, "".
           "displayName": "A String", # A user-assigned name for this group, used only for display purposes.
-          "name": "A String", # Output only. The name of this group. The format is &quot;projects/{project_id_or_number}/groups/{group_id}&quot;. When creating a group, this field is ignored and a new name is created consisting of the project specified in the call to CreateGroup and a unique {group_id} that is generated automatically.
+          "name": "A String", # Output only. The name of this group. The format is "projects/{project_id_or_number}/groups/{group_id}". When creating a group, this field is ignored and a new name is created consisting of the project specified in the call to CreateGroup and a unique {group_id} that is generated automatically.
           "isCluster": True or False, # If true, the members of this group are considered to be a cluster. The system can perform additional analysis on groups that are clusters.
         },
     ],
@@ -230,15 +230,15 @@
   <pre>Updates an existing group. You can change any group attributes except name.
 
 Args:
-  name: string, Output only. The name of this group. The format is &quot;projects/{project_id_or_number}/groups/{group_id}&quot;. When creating a group, this field is ignored and a new name is created consisting of the project specified in the call to CreateGroup and a unique {group_id} that is generated automatically. (required)
+  name: string, Output only. The name of this group. The format is "projects/{project_id_or_number}/groups/{group_id}". When creating a group, this field is ignored and a new name is created consisting of the project specified in the call to CreateGroup and a unique {group_id} that is generated automatically. (required)
   body: object, The request body. (required)
     The object takes the form of:
 
-{ # The description of a dynamic collection of monitored resources. Each group has a filter that is matched against monitored resources and their associated metadata. If a group's filter matches an available monitored resource, then that resource is a member of that group. Groups can contain any number of monitored resources, and each monitored resource can be a member of any number of groups.Groups can be nested in parent-child hierarchies. The parentName field identifies an optional parent for each group. If a group has a parent, then the only monitored resources available to be matched by the group's filter are the resources contained in the parent group. In other words, a group contains the monitored resources that match its filter and the filters of all the group's ancestors. A group without a parent can contain any monitored resource.For example, consider an infrastructure running a set of instances with two user-defined tags: &quot;environment&quot; and &quot;role&quot;. A parent group has a filter, environment=&quot;production&quot;. A child of that parent group has a filter, role=&quot;transcoder&quot;. The parent group contains all instances in the production environment, regardless of their roles. The child group contains instances that have the transcoder role and are in the production environment.The monitored resources contained in a group can change at any moment, depending on what resources exist and what filters are associated with the group and its ancestors.
+{ # The description of a dynamic collection of monitored resources. Each group has a filter that is matched against monitored resources and their associated metadata. If a group's filter matches an available monitored resource, then that resource is a member of that group. Groups can contain any number of monitored resources, and each monitored resource can be a member of any number of groups.Groups can be nested in parent-child hierarchies. The parentName field identifies an optional parent for each group. If a group has a parent, then the only monitored resources available to be matched by the group's filter are the resources contained in the parent group. In other words, a group contains the monitored resources that match its filter and the filters of all the group's ancestors. A group without a parent can contain any monitored resource.For example, consider an infrastructure running a set of instances with two user-defined tags: "environment" and "role". A parent group has a filter, environment="production". A child of that parent group has a filter, role="transcoder". The parent group contains all instances in the production environment, regardless of their roles. The child group contains instances that have the transcoder role and are in the production environment.The monitored resources contained in a group can change at any moment, depending on what resources exist and what filters are associated with the group and its ancestors.
     "filter": "A String", # The filter used to determine which monitored resources belong to this group.
-    "parentName": "A String", # The name of the group's parent, if it has one. The format is &quot;projects/{project_id_or_number}/groups/{group_id}&quot;. For groups with no parent, parentName is the empty string, &quot;&quot;.
+    "parentName": "A String", # The name of the group's parent, if it has one. The format is "projects/{project_id_or_number}/groups/{group_id}". For groups with no parent, parentName is the empty string, "".
     "displayName": "A String", # A user-assigned name for this group, used only for display purposes.
-    "name": "A String", # Output only. The name of this group. The format is &quot;projects/{project_id_or_number}/groups/{group_id}&quot;. When creating a group, this field is ignored and a new name is created consisting of the project specified in the call to CreateGroup and a unique {group_id} that is generated automatically.
+    "name": "A String", # Output only. The name of this group. The format is "projects/{project_id_or_number}/groups/{group_id}". When creating a group, this field is ignored and a new name is created consisting of the project specified in the call to CreateGroup and a unique {group_id} that is generated automatically.
     "isCluster": True or False, # If true, the members of this group are considered to be a cluster. The system can perform additional analysis on groups that are clusters.
   }
 
@@ -251,11 +251,11 @@
 Returns:
   An object of the form:
 
-    { # The description of a dynamic collection of monitored resources. Each group has a filter that is matched against monitored resources and their associated metadata. If a group's filter matches an available monitored resource, then that resource is a member of that group. Groups can contain any number of monitored resources, and each monitored resource can be a member of any number of groups.Groups can be nested in parent-child hierarchies. The parentName field identifies an optional parent for each group. If a group has a parent, then the only monitored resources available to be matched by the group's filter are the resources contained in the parent group. In other words, a group contains the monitored resources that match its filter and the filters of all the group's ancestors. A group without a parent can contain any monitored resource.For example, consider an infrastructure running a set of instances with two user-defined tags: &quot;environment&quot; and &quot;role&quot;. A parent group has a filter, environment=&quot;production&quot;. A child of that parent group has a filter, role=&quot;transcoder&quot;. The parent group contains all instances in the production environment, regardless of their roles. The child group contains instances that have the transcoder role and are in the production environment.The monitored resources contained in a group can change at any moment, depending on what resources exist and what filters are associated with the group and its ancestors.
+    { # The description of a dynamic collection of monitored resources. Each group has a filter that is matched against monitored resources and their associated metadata. If a group's filter matches an available monitored resource, then that resource is a member of that group. Groups can contain any number of monitored resources, and each monitored resource can be a member of any number of groups.Groups can be nested in parent-child hierarchies. The parentName field identifies an optional parent for each group. If a group has a parent, then the only monitored resources available to be matched by the group's filter are the resources contained in the parent group. In other words, a group contains the monitored resources that match its filter and the filters of all the group's ancestors. A group without a parent can contain any monitored resource.For example, consider an infrastructure running a set of instances with two user-defined tags: "environment" and "role". A parent group has a filter, environment="production". A child of that parent group has a filter, role="transcoder". The parent group contains all instances in the production environment, regardless of their roles. The child group contains instances that have the transcoder role and are in the production environment.The monitored resources contained in a group can change at any moment, depending on what resources exist and what filters are associated with the group and its ancestors.
       "filter": "A String", # The filter used to determine which monitored resources belong to this group.
-      "parentName": "A String", # The name of the group's parent, if it has one. The format is &quot;projects/{project_id_or_number}/groups/{group_id}&quot;. For groups with no parent, parentName is the empty string, &quot;&quot;.
+      "parentName": "A String", # The name of the group's parent, if it has one. The format is "projects/{project_id_or_number}/groups/{group_id}". For groups with no parent, parentName is the empty string, "".
       "displayName": "A String", # A user-assigned name for this group, used only for display purposes.
-      "name": "A String", # Output only. The name of this group. The format is &quot;projects/{project_id_or_number}/groups/{group_id}&quot;. When creating a group, this field is ignored and a new name is created consisting of the project specified in the call to CreateGroup and a unique {group_id} that is generated automatically.
+      "name": "A String", # Output only. The name of this group. The format is "projects/{project_id_or_number}/groups/{group_id}". When creating a group, this field is ignored and a new name is created consisting of the project specified in the call to CreateGroup and a unique {group_id} that is generated automatically.
       "isCluster": True or False, # If true, the members of this group are considered to be a cluster. The system can perform additional analysis on groups that are clusters.
     }</pre>
 </div>
diff --git a/docs/dyn/monitoring_v3.projects.groups.members.html b/docs/dyn/monitoring_v3.projects.groups.members.html
index 75bc86a..7e0d274 100644
--- a/docs/dyn/monitoring_v3.projects.groups.members.html
+++ b/docs/dyn/monitoring_v3.projects.groups.members.html
@@ -86,7 +86,7 @@
   <pre>Lists the monitored resources that are members of a group.
 
 Args:
-  name: string, The group whose members are listed. The format is &quot;projects/{project_id_or_number}/groups/{group_id}&quot;. (required)
+  name: string, The group whose members are listed. The format is "projects/{project_id_or_number}/groups/{group_id}". (required)
   pageSize: integer, A positive number that is the maximum number of results to return.
   x__xgafv: string, V1 error format.
     Allowed values
@@ -94,8 +94,8 @@
       2 - v2 error format
   pageToken: string, If this field is not empty then it must contain the nextPageToken value returned by a previous call to this method. Using this field causes the method to return additional results from the previous method call.
   interval_endTime: string, Required. The end of the time interval.
-  filter: string, An optional list filter (/monitoring/api/learn_more#filtering) describing the members to be returned. The filter may reference the type, labels, and metadata of monitored resources that comprise the group. For example, to return only resources representing Compute Engine VM instances, use this filter:
-resource.type = &quot;gce_instance&quot;
+  filter: string, An optional list filter describing the members to be returned. The filter may reference the type, labels, and metadata of monitored resources that comprise the group. For example, to return only resources representing Compute Engine VM instances, use this filter:
+resource.type = "gce_instance"
 
   interval_startTime: string, Optional. The beginning of the time interval. The default value for the start time is the end time. The start time must not be later than the end time.
 
@@ -106,14 +106,14 @@
     "nextPageToken": "A String", # If there are more results than have been returned, then this field is set to a non-empty value. To see the additional results, use that value as pageToken in the next call to this method.
     "totalSize": 42, # The total number of elements matching this request.
     "members": [ # A set of monitored resources in the group.
-      { # An object representing a resource that can be used for monitoring, logging, billing, or other purposes. Examples include virtual machine instances, databases, and storage devices such as disks. The type field identifies a MonitoredResourceDescriptor object that describes the resource's schema. Information in the labels field identifies the actual resource and its attributes according to the schema. For example, a particular Compute Engine VM instance could be represented by the following object, because the MonitoredResourceDescriptor for &quot;gce_instance&quot; has labels &quot;instance_id&quot; and &quot;zone&quot;:
-          # { &quot;type&quot;: &quot;gce_instance&quot;,
-          #   &quot;labels&quot;: { &quot;instance_id&quot;: &quot;12345678901234&quot;,
-          #               &quot;zone&quot;: &quot;us-central1-a&quot; }}
-        "labels": { # Required. Values for all of the labels listed in the associated monitored resource descriptor. For example, Cloud SQL databases use the labels &quot;database_id&quot; and &quot;zone&quot;.
+      { # An object representing a resource that can be used for monitoring, logging, billing, or other purposes. Examples include virtual machine instances, databases, and storage devices such as disks. The type field identifies a MonitoredResourceDescriptor object that describes the resource's schema. Information in the labels field identifies the actual resource and its attributes according to the schema. For example, a particular Compute Engine VM instance could be represented by the following object, because the MonitoredResourceDescriptor for "gce_instance" has labels "instance_id" and "zone":
+          # { "type": "gce_instance",
+          #   "labels": { "instance_id": "12345678901234",
+          #               "zone": "us-central1-a" }}
+        "labels": { # Required. Values for all of the labels listed in the associated monitored resource descriptor. For example, Cloud SQL databases use the labels "database_id" and "zone".
           "a_key": "A String",
         },
-        "type": "A String", # Required. The monitored resource type. This field must match the type field of a MonitoredResourceDescriptor object. For example, the type of a Cloud SQL database is &quot;cloudsql_database&quot;.
+        "type": "A String", # Required. The monitored resource type. This field must match the type field of a MonitoredResourceDescriptor object. For example, the type of a Cloud SQL database is "cloudsql_database".
       },
     ],
   }</pre>
diff --git a/docs/dyn/monitoring_v3.projects.metricDescriptors.html b/docs/dyn/monitoring_v3.projects.metricDescriptors.html
index 77f812a..5575b54 100644
--- a/docs/dyn/monitoring_v3.projects.metricDescriptors.html
+++ b/docs/dyn/monitoring_v3.projects.metricDescriptors.html
@@ -76,10 +76,10 @@
 <h2>Instance Methods</h2>
 <p class="toc_element">
   <code><a href="#create">create(name, body, x__xgafv=None)</a></code></p>
-<p class="firstline">Creates a new metric descriptor. User-created metric descriptors define custom metrics (/monitoring/custom-metrics).</p>
+<p class="firstline">Creates a new metric descriptor. User-created metric descriptors define custom metrics.</p>
 <p class="toc_element">
   <code><a href="#delete">delete(name, x__xgafv=None)</a></code></p>
-<p class="firstline">Deletes a metric descriptor. Only user-created custom metrics (/monitoring/custom-metrics) can be deleted.</p>
+<p class="firstline">Deletes a metric descriptor. Only user-created custom metrics can be deleted.</p>
 <p class="toc_element">
   <code><a href="#get">get(name, x__xgafv=None)</a></code></p>
 <p class="firstline">Gets a single metric descriptor. This method does not require a Stackdriver account.</p>
@@ -92,30 +92,28 @@
 <h3>Method Details</h3>
 <div class="method">
     <code class="details" id="create">create(name, body, x__xgafv=None)</code>
-  <pre>Creates a new metric descriptor. User-created metric descriptors define custom metrics (/monitoring/custom-metrics).
+  <pre>Creates a new metric descriptor. User-created metric descriptors define custom metrics.
 
 Args:
-  name: string, The project on which to execute the request. The format is &quot;projects/{project_id_or_number}&quot;. (required)
+  name: string, The project on which to execute the request. The format is "projects/{project_id_or_number}". (required)
   body: object, The request body. (required)
     The object takes the form of:
 
-{ # Defines a metric type and its schema.
+{ # Defines a metric type and its schema. Once a metric descriptor is created, deleting or altering it stops data collection and makes the metric type's existing data unusable.
     "displayName": "A String", # A concise name for the metric, which can be displayed in user interfaces. Use sentence case without an ending period, for example "Request count".
     "description": "A String", # A detailed description of the metric, which can be used in documentation.
     "metricKind": "A String", # Whether the metric records instantaneous values, changes to a value, etc. Some combinations of metric_kind and value_type might not be supported.
     "valueType": "A String", # Whether the measurement is an integer, a floating-point number, etc. Some combinations of metric_kind and value_type might not be supported.
-    "labels": [ # The set of labels that can be used to describe a specific instance of this metric type. For example, the compute.googleapis.com/instance/network/received_bytes_count metric type has a label, loadbalanced, that specifies whether the traffic was received through a load balanced IP address.
+    "labels": [ # The set of labels that can be used to describe a specific instance of this metric type. For example, the appengine.googleapis.com/http/server/response_latencies metric type has a label for the HTTP response code, response_code, so you can look at latencies for successful responses or just for responses that failed.
       { # A description of a label.
         "valueType": "A String", # The type of data that can be assigned to the label.
         "description": "A String", # A human-readable description for the label.
         "key": "A String", # The label key.
       },
     ],
-    "type": "A String", # The metric type including a DNS name prefix, for example &quot;compute.googleapis.com/instance/cpu/utilization&quot;. Metric types should use a natural hierarchical grouping such as the following:
-        # compute.googleapis.com/instance/cpu/utilization
-        # compute.googleapis.com/instance/disk/read_ops_count
-        # compute.googleapis.com/instance/network/received_bytes_count
-        # Note that if the metric type changes, the monitoring data will be discontinued, and anything depends on it will break, such as monitoring dashboards, alerting rules and quota limits. Therefore, once a metric has been published, its type should be immutable.
+    "type": "A String", # The metric type, including its DNS name prefix. The type is not URL-encoded. All user-defined custom metric types have the DNS name custom.googleapis.com. Metric types should use a natural hierarchical grouping. For example:
+        # "custom.googleapis.com/invoice/paid/amount"
+        # "appengine.googleapis.com/http/server/response_latencies"
     "unit": "A String", # The unit in which the metric value is reported. It is only applicable if the value_type is INT64, DOUBLE, or DISTRIBUTION. The supported units are a subset of The Unified Code for Units of Measure (http://unitsofmeasure.org/ucum.html) standard:Basic units (UNIT)
         # bit bit
         # By byte
@@ -145,20 +143,19 @@
         # Ti tebi (2**40)GrammarThe grammar includes the dimensionless unit 1, such as 1/s.The grammar also includes these connectors:
         # / division (as an infix operator, e.g. 1/s).
         # . multiplication (as an infix operator, e.g. GBy.d)The grammar for a unit is as follows:
-        # Expression = Component { &quot;.&quot; Component } { &quot;/&quot; Component } ;
+        # Expression = Component { "." Component } { "/" Component } ;
         # 
         # Component = [ PREFIX ] UNIT [ Annotation ]
         #           | Annotation
-        #           | &quot;1&quot;
+        #           | "1"
         #           ;
         # 
-        # Annotation = &quot;{&quot; NAME &quot;}&quot; ;
+        # Annotation = "{" NAME "}" ;
         # Notes:
         # Annotation is just a comment if it follows a UNIT and is  equivalent to 1 if it is used alone. For examples,  {requests}/s == 1/s, By{transmitted}/s == By/s.
         # NAME is a sequence of non-blank printable ASCII characters not  containing '{' or '}'.
-    "name": "A String", # Resource name. The format of the name may vary between different implementations. For examples:
-        # projects/{project_id}/metricDescriptors/{type=**}
-        # metricDescriptors/{type=**}
+    "name": "A String", # The resource name of the metric descriptor. Depending on the implementation, the name typically includes: (1) the parent resource name that defines the scope of the metric type or of its data; and (2) the metric's URL-encoded type, which also appears in the type field of this descriptor. For example, following is the resource name of a custom metric within the GCP project my-project-id:
+        # "projects/my-project-id/metricDescriptors/custom.googleapis.com%2Finvoice%2Fpaid%2Famount"
   }
 
   x__xgafv: string, V1 error format.
@@ -169,23 +166,21 @@
 Returns:
   An object of the form:
 
-    { # Defines a metric type and its schema.
+    { # Defines a metric type and its schema. Once a metric descriptor is created, deleting or altering it stops data collection and makes the metric type's existing data unusable.
       "displayName": "A String", # A concise name for the metric, which can be displayed in user interfaces. Use sentence case without an ending period, for example "Request count".
       "description": "A String", # A detailed description of the metric, which can be used in documentation.
       "metricKind": "A String", # Whether the metric records instantaneous values, changes to a value, etc. Some combinations of metric_kind and value_type might not be supported.
       "valueType": "A String", # Whether the measurement is an integer, a floating-point number, etc. Some combinations of metric_kind and value_type might not be supported.
-      "labels": [ # The set of labels that can be used to describe a specific instance of this metric type. For example, the compute.googleapis.com/instance/network/received_bytes_count metric type has a label, loadbalanced, that specifies whether the traffic was received through a load balanced IP address.
+      "labels": [ # The set of labels that can be used to describe a specific instance of this metric type. For example, the appengine.googleapis.com/http/server/response_latencies metric type has a label for the HTTP response code, response_code, so you can look at latencies for successful responses or just for responses that failed.
         { # A description of a label.
           "valueType": "A String", # The type of data that can be assigned to the label.
           "description": "A String", # A human-readable description for the label.
           "key": "A String", # The label key.
         },
       ],
-      "type": "A String", # The metric type including a DNS name prefix, for example &quot;compute.googleapis.com/instance/cpu/utilization&quot;. Metric types should use a natural hierarchical grouping such as the following:
-          # compute.googleapis.com/instance/cpu/utilization
-          # compute.googleapis.com/instance/disk/read_ops_count
-          # compute.googleapis.com/instance/network/received_bytes_count
-          # Note that if the metric type changes, the monitoring data will be discontinued, and anything depends on it will break, such as monitoring dashboards, alerting rules and quota limits. Therefore, once a metric has been published, its type should be immutable.
+      "type": "A String", # The metric type, including its DNS name prefix. The type is not URL-encoded. All user-defined custom metric types have the DNS name custom.googleapis.com. Metric types should use a natural hierarchical grouping. For example:
+          # "custom.googleapis.com/invoice/paid/amount"
+          # "appengine.googleapis.com/http/server/response_latencies"
       "unit": "A String", # The unit in which the metric value is reported. It is only applicable if the value_type is INT64, DOUBLE, or DISTRIBUTION. The supported units are a subset of The Unified Code for Units of Measure (http://unitsofmeasure.org/ucum.html) standard:Basic units (UNIT)
           # bit bit
           # By byte
@@ -215,29 +210,28 @@
           # Ti tebi (2**40)GrammarThe grammar includes the dimensionless unit 1, such as 1/s.The grammar also includes these connectors:
           # / division (as an infix operator, e.g. 1/s).
           # . multiplication (as an infix operator, e.g. GBy.d)The grammar for a unit is as follows:
-          # Expression = Component { &quot;.&quot; Component } { &quot;/&quot; Component } ;
+          # Expression = Component { "." Component } { "/" Component } ;
           #
           # Component = [ PREFIX ] UNIT [ Annotation ]
           #           | Annotation
-          #           | &quot;1&quot;
+          #           | "1"
           #           ;
           #
-          # Annotation = &quot;{&quot; NAME &quot;}&quot; ;
+          # Annotation = "{" NAME "}" ;
           # Notes:
           # Annotation is just a comment if it follows a UNIT and is  equivalent to 1 if it is used alone. For examples,  {requests}/s == 1/s, By{transmitted}/s == By/s.
           # NAME is a sequence of non-blank printable ASCII characters not  containing '{' or '}'.
-      "name": "A String", # Resource name. The format of the name may vary between different implementations. For examples:
-          # projects/{project_id}/metricDescriptors/{type=**}
-          # metricDescriptors/{type=**}
+      "name": "A String", # The resource name of the metric descriptor. Depending on the implementation, the name typically includes: (1) the parent resource name that defines the scope of the metric type or of its data; and (2) the metric's URL-encoded type, which also appears in the type field of this descriptor. For example, following is the resource name of a custom metric within the GCP project my-project-id:
+          # "projects/my-project-id/metricDescriptors/custom.googleapis.com%2Finvoice%2Fpaid%2Famount"
     }</pre>
 </div>
 
 <div class="method">
     <code class="details" id="delete">delete(name, x__xgafv=None)</code>
-  <pre>Deletes a metric descriptor. Only user-created custom metrics (/monitoring/custom-metrics) can be deleted.
+  <pre>Deletes a metric descriptor. Only user-created custom metrics can be deleted.
 
 Args:
-  name: string, The metric descriptor on which to execute the request. The format is &quot;projects/{project_id_or_number}/metricDescriptors/{metric_id}&quot;. An example of {metric_id} is: &quot;custom.googleapis.com/my_test_metric&quot;. (required)
+  name: string, The metric descriptor on which to execute the request. The format is "projects/{project_id_or_number}/metricDescriptors/{metric_id}". An example of {metric_id} is: "custom.googleapis.com/my_test_metric". (required)
   x__xgafv: string, V1 error format.
     Allowed values
       1 - v1 error format
@@ -259,7 +253,7 @@
   <pre>Gets a single metric descriptor. This method does not require a Stackdriver account.
 
 Args:
-  name: string, The metric descriptor on which to execute the request. The format is &quot;projects/{project_id_or_number}/metricDescriptors/{metric_id}&quot;. An example value of {metric_id} is &quot;compute.googleapis.com/instance/disk/read_bytes_count&quot;. (required)
+  name: string, The metric descriptor on which to execute the request. The format is "projects/{project_id_or_number}/metricDescriptors/{metric_id}". An example value of {metric_id} is "compute.googleapis.com/instance/disk/read_bytes_count". (required)
   x__xgafv: string, V1 error format.
     Allowed values
       1 - v1 error format
@@ -268,23 +262,21 @@
 Returns:
   An object of the form:
 
-    { # Defines a metric type and its schema.
+    { # Defines a metric type and its schema. Once a metric descriptor is created, deleting or altering it stops data collection and makes the metric type's existing data unusable.
       "displayName": "A String", # A concise name for the metric, which can be displayed in user interfaces. Use sentence case without an ending period, for example "Request count".
       "description": "A String", # A detailed description of the metric, which can be used in documentation.
       "metricKind": "A String", # Whether the metric records instantaneous values, changes to a value, etc. Some combinations of metric_kind and value_type might not be supported.
       "valueType": "A String", # Whether the measurement is an integer, a floating-point number, etc. Some combinations of metric_kind and value_type might not be supported.
-      "labels": [ # The set of labels that can be used to describe a specific instance of this metric type. For example, the compute.googleapis.com/instance/network/received_bytes_count metric type has a label, loadbalanced, that specifies whether the traffic was received through a load balanced IP address.
+      "labels": [ # The set of labels that can be used to describe a specific instance of this metric type. For example, the appengine.googleapis.com/http/server/response_latencies metric type has a label for the HTTP response code, response_code, so you can look at latencies for successful responses or just for responses that failed.
         { # A description of a label.
           "valueType": "A String", # The type of data that can be assigned to the label.
           "description": "A String", # A human-readable description for the label.
           "key": "A String", # The label key.
         },
       ],
-      "type": "A String", # The metric type including a DNS name prefix, for example &quot;compute.googleapis.com/instance/cpu/utilization&quot;. Metric types should use a natural hierarchical grouping such as the following:
-          # compute.googleapis.com/instance/cpu/utilization
-          # compute.googleapis.com/instance/disk/read_ops_count
-          # compute.googleapis.com/instance/network/received_bytes_count
-          # Note that if the metric type changes, the monitoring data will be discontinued, and anything depends on it will break, such as monitoring dashboards, alerting rules and quota limits. Therefore, once a metric has been published, its type should be immutable.
+      "type": "A String", # The metric type, including its DNS name prefix. The type is not URL-encoded. All user-defined custom metric types have the DNS name custom.googleapis.com. Metric types should use a natural hierarchical grouping. For example:
+          # "custom.googleapis.com/invoice/paid/amount"
+          # "appengine.googleapis.com/http/server/response_latencies"
       "unit": "A String", # The unit in which the metric value is reported. It is only applicable if the value_type is INT64, DOUBLE, or DISTRIBUTION. The supported units are a subset of The Unified Code for Units of Measure (http://unitsofmeasure.org/ucum.html) standard:Basic units (UNIT)
           # bit bit
           # By byte
@@ -314,20 +306,19 @@
           # Ti tebi (2**40)GrammarThe grammar includes the dimensionless unit 1, such as 1/s.The grammar also includes these connectors:
           # / division (as an infix operator, e.g. 1/s).
           # . multiplication (as an infix operator, e.g. GBy.d)The grammar for a unit is as follows:
-          # Expression = Component { &quot;.&quot; Component } { &quot;/&quot; Component } ;
+          # Expression = Component { "." Component } { "/" Component } ;
           #
           # Component = [ PREFIX ] UNIT [ Annotation ]
           #           | Annotation
-          #           | &quot;1&quot;
+          #           | "1"
           #           ;
           #
-          # Annotation = &quot;{&quot; NAME &quot;}&quot; ;
+          # Annotation = "{" NAME "}" ;
           # Notes:
           # Annotation is just a comment if it follows a UNIT and is  equivalent to 1 if it is used alone. For examples,  {requests}/s == 1/s, By{transmitted}/s == By/s.
           # NAME is a sequence of non-blank printable ASCII characters not  containing '{' or '}'.
-      "name": "A String", # Resource name. The format of the name may vary between different implementations. For examples:
-          # projects/{project_id}/metricDescriptors/{type=**}
-          # metricDescriptors/{type=**}
+      "name": "A String", # The resource name of the metric descriptor. Depending on the implementation, the name typically includes: (1) the parent resource name that defines the scope of the metric type or of its data; and (2) the metric's URL-encoded type, which also appears in the type field of this descriptor. For example, following is the resource name of a custom metric within the GCP project my-project-id:
+          # "projects/my-project-id/metricDescriptors/custom.googleapis.com%2Finvoice%2Fpaid%2Famount"
     }</pre>
 </div>
 
@@ -336,10 +327,10 @@
   <pre>Lists metric descriptors that match a filter. This method does not require a Stackdriver account.
 
 Args:
-  name: string, The project on which to execute the request. The format is &quot;projects/{project_id_or_number}&quot;. (required)
+  name: string, The project on which to execute the request. The format is "projects/{project_id_or_number}". (required)
   pageSize: integer, A positive number that is the maximum number of results to return.
-  filter: string, If this field is empty, all custom and system-defined metric descriptors are returned. Otherwise, the filter (/monitoring/api/v3/filters) specifies which metric descriptors are to be returned. For example, the following filter matches all custom metrics (/monitoring/custom-metrics):
-metric.type = starts_with(&quot;custom.googleapis.com/&quot;)
+  filter: string, If this field is empty, all custom and system-defined metric descriptors are returned. Otherwise, the filter specifies which metric descriptors are to be returned. For example, the following filter matches all custom metrics:
+metric.type = starts_with("custom.googleapis.com/")
 
   pageToken: string, If this field is not empty then it must contain the nextPageToken value returned by a previous call to this method. Using this field causes the method to return additional results from the previous method call.
   x__xgafv: string, V1 error format.
@@ -353,23 +344,21 @@
     { # The ListMetricDescriptors response.
     "nextPageToken": "A String", # If there are more results than have been returned, then this field is set to a non-empty value. To see the additional results, use that value as pageToken in the next call to this method.
     "metricDescriptors": [ # The metric descriptors that are available to the project and that match the value of filter, if present.
-      { # Defines a metric type and its schema.
+      { # Defines a metric type and its schema. Once a metric descriptor is created, deleting or altering it stops data collection and makes the metric type's existing data unusable.
           "displayName": "A String", # A concise name for the metric, which can be displayed in user interfaces. Use sentence case without an ending period, for example "Request count".
           "description": "A String", # A detailed description of the metric, which can be used in documentation.
           "metricKind": "A String", # Whether the metric records instantaneous values, changes to a value, etc. Some combinations of metric_kind and value_type might not be supported.
           "valueType": "A String", # Whether the measurement is an integer, a floating-point number, etc. Some combinations of metric_kind and value_type might not be supported.
-          "labels": [ # The set of labels that can be used to describe a specific instance of this metric type. For example, the compute.googleapis.com/instance/network/received_bytes_count metric type has a label, loadbalanced, that specifies whether the traffic was received through a load balanced IP address.
+          "labels": [ # The set of labels that can be used to describe a specific instance of this metric type. For example, the appengine.googleapis.com/http/server/response_latencies metric type has a label for the HTTP response code, response_code, so you can look at latencies for successful responses or just for responses that failed.
             { # A description of a label.
               "valueType": "A String", # The type of data that can be assigned to the label.
               "description": "A String", # A human-readable description for the label.
               "key": "A String", # The label key.
             },
           ],
-          "type": "A String", # The metric type including a DNS name prefix, for example &quot;compute.googleapis.com/instance/cpu/utilization&quot;. Metric types should use a natural hierarchical grouping such as the following:
-              # compute.googleapis.com/instance/cpu/utilization
-              # compute.googleapis.com/instance/disk/read_ops_count
-              # compute.googleapis.com/instance/network/received_bytes_count
-              # Note that if the metric type changes, the monitoring data will be discontinued, and anything depends on it will break, such as monitoring dashboards, alerting rules and quota limits. Therefore, once a metric has been published, its type should be immutable.
+          "type": "A String", # The metric type, including its DNS name prefix. The type is not URL-encoded. All user-defined custom metric types have the DNS name custom.googleapis.com. Metric types should use a natural hierarchical grouping. For example:
+              # "custom.googleapis.com/invoice/paid/amount"
+              # "appengine.googleapis.com/http/server/response_latencies"
           "unit": "A String", # The unit in which the metric value is reported. It is only applicable if the value_type is INT64, DOUBLE, or DISTRIBUTION. The supported units are a subset of The Unified Code for Units of Measure (http://unitsofmeasure.org/ucum.html) standard:Basic units (UNIT)
               # bit bit
               # By byte
@@ -399,20 +388,19 @@
               # Ti tebi (2**40)GrammarThe grammar includes the dimensionless unit 1, such as 1/s.The grammar also includes these connectors:
               # / division (as an infix operator, e.g. 1/s).
               # . multiplication (as an infix operator, e.g. GBy.d)The grammar for a unit is as follows:
-              # Expression = Component { &quot;.&quot; Component } { &quot;/&quot; Component } ;
+              # Expression = Component { "." Component } { "/" Component } ;
               #
               # Component = [ PREFIX ] UNIT [ Annotation ]
               #           | Annotation
-              #           | &quot;1&quot;
+              #           | "1"
               #           ;
               #
-              # Annotation = &quot;{&quot; NAME &quot;}&quot; ;
+              # Annotation = "{" NAME "}" ;
               # Notes:
               # Annotation is just a comment if it follows a UNIT and is  equivalent to 1 if it is used alone. For examples,  {requests}/s == 1/s, By{transmitted}/s == By/s.
               # NAME is a sequence of non-blank printable ASCII characters not  containing '{' or '}'.
-          "name": "A String", # Resource name. The format of the name may vary between different implementations. For examples:
-              # projects/{project_id}/metricDescriptors/{type=**}
-              # metricDescriptors/{type=**}
+          "name": "A String", # The resource name of the metric descriptor. Depending on the implementation, the name typically includes: (1) the parent resource name that defines the scope of the metric type or of its data; and (2) the metric's URL-encoded type, which also appears in the type field of this descriptor. For example, following is the resource name of a custom metric within the GCP project my-project-id:
+              # "projects/my-project-id/metricDescriptors/custom.googleapis.com%2Finvoice%2Fpaid%2Famount"
         },
     ],
   }</pre>
diff --git a/docs/dyn/monitoring_v3.projects.monitoredResourceDescriptors.html b/docs/dyn/monitoring_v3.projects.monitoredResourceDescriptors.html
index 6779a79..b2020d1 100644
--- a/docs/dyn/monitoring_v3.projects.monitoredResourceDescriptors.html
+++ b/docs/dyn/monitoring_v3.projects.monitoredResourceDescriptors.html
@@ -89,7 +89,7 @@
   <pre>Gets a single monitored resource descriptor. This method does not require a Stackdriver account.
 
 Args:
-  name: string, The monitored resource descriptor to get. The format is &quot;projects/{project_id_or_number}/monitoredResourceDescriptors/{resource_type}&quot;. The {resource_type} is a predefined type, such as cloudsql_database. (required)
+  name: string, The monitored resource descriptor to get. The format is "projects/{project_id_or_number}/monitoredResourceDescriptors/{resource_type}". The {resource_type} is a predefined type, such as cloudsql_database. (required)
   x__xgafv: string, V1 error format.
     Allowed values
       1 - v1 error format
@@ -98,18 +98,18 @@
 Returns:
   An object of the form:
 
-    { # An object that describes the schema of a MonitoredResource object using a type name and a set of labels. For example, the monitored resource descriptor for Google Compute Engine VM instances has a type of &quot;gce_instance&quot; and specifies the use of the labels &quot;instance_id&quot; and &quot;zone&quot; to identify particular VM instances.Different APIs can support different monitored resource types. APIs generally provide a list method that returns the monitored resource descriptors used by the API.
-    "type": "A String", # Required. The monitored resource type. For example, the type &quot;cloudsql_database&quot; represents databases in Google Cloud SQL. The maximum length of this value is 256 characters.
-    "labels": [ # Required. A set of labels used to describe instances of this monitored resource type. For example, an individual Google Cloud SQL database is identified by values for the labels &quot;database_id&quot; and &quot;zone&quot;.
+    { # An object that describes the schema of a MonitoredResource object using a type name and a set of labels. For example, the monitored resource descriptor for Google Compute Engine VM instances has a type of "gce_instance" and specifies the use of the labels "instance_id" and "zone" to identify particular VM instances.Different APIs can support different monitored resource types. APIs generally provide a list method that returns the monitored resource descriptors used by the API.
+    "type": "A String", # Required. The monitored resource type. For example, the type "cloudsql_database" represents databases in Google Cloud SQL. The maximum length of this value is 256 characters.
+    "labels": [ # Required. A set of labels used to describe instances of this monitored resource type. For example, an individual Google Cloud SQL database is identified by values for the labels "database_id" and "zone".
       { # A description of a label.
         "valueType": "A String", # The type of data that can be assigned to the label.
         "description": "A String", # A human-readable description for the label.
         "key": "A String", # The label key.
       },
     ],
-    "displayName": "A String", # Optional. A concise name for the monitored resource type that might be displayed in user interfaces. It should be a Title Cased Noun Phrase, without any article or other determiners. For example, &quot;Google Cloud SQL Database&quot;.
+    "displayName": "A String", # Optional. A concise name for the monitored resource type that might be displayed in user interfaces. It should be a Title Cased Noun Phrase, without any article or other determiners. For example, "Google Cloud SQL Database".
     "description": "A String", # Optional. A detailed description of the monitored resource type that might be used in documentation.
-    "name": "A String", # Optional. The resource name of the monitored resource descriptor: &quot;projects/{project_id}/monitoredResourceDescriptors/{type}&quot; where {type} is the value of the type field in this object and {project_id} is a project ID that provides API-specific context for accessing the type. APIs that do not use project information can use the resource name format &quot;monitoredResourceDescriptors/{type}&quot;.
+    "name": "A String", # Optional. The resource name of the monitored resource descriptor: "projects/{project_id}/monitoredResourceDescriptors/{type}" where {type} is the value of the type field in this object and {project_id} is a project ID that provides API-specific context for accessing the type. APIs that do not use project information can use the resource name format "monitoredResourceDescriptors/{type}".
   }</pre>
 </div>
 
@@ -118,10 +118,10 @@
   <pre>Lists monitored resource descriptors that match a filter. This method does not require a Stackdriver account.
 
 Args:
-  name: string, The project on which to execute the request. The format is &quot;projects/{project_id_or_number}&quot;. (required)
+  name: string, The project on which to execute the request. The format is "projects/{project_id_or_number}". (required)
   pageSize: integer, A positive number that is the maximum number of results to return.
-  filter: string, An optional filter (/monitoring/api/v3/filters) describing the descriptors to be returned. The filter can reference the descriptor's type and labels. For example, the following filter returns only Google Compute Engine descriptors that have an id label:
-resource.type = starts_with(&quot;gce_&quot;) AND resource.label:id
+  filter: string, An optional filter describing the descriptors to be returned. The filter can reference the descriptor's type and labels. For example, the following filter returns only Google Compute Engine descriptors that have an id label:
+resource.type = starts_with("gce_") AND resource.label:id
 
   pageToken: string, If this field is not empty then it must contain the nextPageToken value returned by a previous call to this method. Using this field causes the method to return additional results from the previous method call.
   x__xgafv: string, V1 error format.
@@ -135,18 +135,18 @@
     { # The ListMonitoredResourcDescriptors response.
     "nextPageToken": "A String", # If there are more results than have been returned, then this field is set to a non-empty value. To see the additional results, use that value as pageToken in the next call to this method.
     "resourceDescriptors": [ # The monitored resource descriptors that are available to this project and that match filter, if present.
-      { # An object that describes the schema of a MonitoredResource object using a type name and a set of labels. For example, the monitored resource descriptor for Google Compute Engine VM instances has a type of &quot;gce_instance&quot; and specifies the use of the labels &quot;instance_id&quot; and &quot;zone&quot; to identify particular VM instances.Different APIs can support different monitored resource types. APIs generally provide a list method that returns the monitored resource descriptors used by the API.
-        "type": "A String", # Required. The monitored resource type. For example, the type &quot;cloudsql_database&quot; represents databases in Google Cloud SQL. The maximum length of this value is 256 characters.
-        "labels": [ # Required. A set of labels used to describe instances of this monitored resource type. For example, an individual Google Cloud SQL database is identified by values for the labels &quot;database_id&quot; and &quot;zone&quot;.
+      { # An object that describes the schema of a MonitoredResource object using a type name and a set of labels. For example, the monitored resource descriptor for Google Compute Engine VM instances has a type of "gce_instance" and specifies the use of the labels "instance_id" and "zone" to identify particular VM instances.Different APIs can support different monitored resource types. APIs generally provide a list method that returns the monitored resource descriptors used by the API.
+        "type": "A String", # Required. The monitored resource type. For example, the type "cloudsql_database" represents databases in Google Cloud SQL. The maximum length of this value is 256 characters.
+        "labels": [ # Required. A set of labels used to describe instances of this monitored resource type. For example, an individual Google Cloud SQL database is identified by values for the labels "database_id" and "zone".
           { # A description of a label.
             "valueType": "A String", # The type of data that can be assigned to the label.
             "description": "A String", # A human-readable description for the label.
             "key": "A String", # The label key.
           },
         ],
-        "displayName": "A String", # Optional. A concise name for the monitored resource type that might be displayed in user interfaces. It should be a Title Cased Noun Phrase, without any article or other determiners. For example, &quot;Google Cloud SQL Database&quot;.
+        "displayName": "A String", # Optional. A concise name for the monitored resource type that might be displayed in user interfaces. It should be a Title Cased Noun Phrase, without any article or other determiners. For example, "Google Cloud SQL Database".
         "description": "A String", # Optional. A detailed description of the monitored resource type that might be used in documentation.
-        "name": "A String", # Optional. The resource name of the monitored resource descriptor: &quot;projects/{project_id}/monitoredResourceDescriptors/{type}&quot; where {type} is the value of the type field in this object and {project_id} is a project ID that provides API-specific context for accessing the type. APIs that do not use project information can use the resource name format &quot;monitoredResourceDescriptors/{type}&quot;.
+        "name": "A String", # Optional. The resource name of the monitored resource descriptor: "projects/{project_id}/monitoredResourceDescriptors/{type}" where {type} is the value of the type field in this object and {project_id} is a project ID that provides API-specific context for accessing the type. APIs that do not use project information can use the resource name format "monitoredResourceDescriptors/{type}".
       },
     ],
   }</pre>
diff --git a/docs/dyn/monitoring_v3.projects.timeSeries.html b/docs/dyn/monitoring_v3.projects.timeSeries.html
index db01ac0..2479bb8 100644
--- a/docs/dyn/monitoring_v3.projects.timeSeries.html
+++ b/docs/dyn/monitoring_v3.projects.timeSeries.html
@@ -89,7 +89,7 @@
   <pre>Creates or adds data to one or more time series. The response is empty if all time series in the request were written. If any time series could not be written, a corresponding failure message is included in the error response.
 
 Args:
-  name: string, The project on which to execute the request. The format is &quot;projects/{project_id_or_number}&quot;. (required)
+  name: string, The project on which to execute the request. The format is "projects/{project_id_or_number}". (required)
   body: object, The request body. (required)
     The object takes the form of:
 
@@ -97,11 +97,11 @@
     "timeSeries": [ # The new data to be added to a list of time series. Adds at most one data point to each of several time series. The new data point must be more recent than any other point in its time series. Each TimeSeries value must fully specify a unique time series by supplying all label values for the metric and the monitored resource.
       { # A collection of data points that describes the time-varying values of a metric. A time series is identified by a combination of a fully-specified monitored resource and a fully-specified metric. This type is used for both listing and creating time series.
         "metricKind": "A String", # The metric kind of the time series. When listing time series, this metric kind might be different from the metric kind of the associated metric if this time series is an alignment or reduction of other time series.When creating a time series, this field is optional. If present, it must be the same as the metric kind of the associated metric. If the associated metric's descriptor must be auto-created, then this field specifies the metric kind of the new descriptor and must be either GAUGE (the default) or CUMULATIVE.
-        "metric": { # A specific metric identified by specifying values for all of the labels of a MetricDescriptor. # The associated metric. A fully-specified metric used to identify the time series.
-          "labels": { # The set of labels that uniquely identify a metric. To specify a metric, all labels enumerated in the MetricDescriptor must be assigned values.
+        "metric": { # A specific metric, identified by specifying values for all of the labels of a MetricDescriptor. # The associated metric. A fully-specified metric used to identify the time series.
+          "labels": { # The set of label values that uniquely identify this metric. All labels listed in the MetricDescriptor must be assigned values.
             "a_key": "A String",
           },
-          "type": "A String", # An existing metric type, see google.api.MetricDescriptor. For example, compute.googleapis.com/instance/cpu/usage_time.
+          "type": "A String", # An existing metric type, see google.api.MetricDescriptor. For example, custom.googleapis.com/invoice/paid/amount.
         },
         "points": [ # The data points of this time series. When listing time series, the order of the points is specified by the list method.When creating a time series, this field must contain exactly one point and the point's type must be the same as the value type of the associated metric. If the associated metric's descriptor must be auto-created, then the value type of the descriptor is determined by the point's type, which must be BOOL, INT64, DOUBLE, or DISTRIBUTION.
           { # A single data point in a time series.
@@ -115,18 +115,18 @@
                 "bucketCounts": [ # If bucket_options is given, then the sum of the values in bucket_counts must equal the value in count. If bucket_options is not given, no bucket_counts fields may be given.Bucket counts are given in order under the numbering scheme described above (the underflow bucket has number 0; the finite buckets, if any, have numbers 1 through N-2; the overflow bucket has number N-1).The size of bucket_counts must be no greater than N as defined in bucket_options.Any suffix of trailing zero bucket_count fields may be omitted.
                   "A String",
                 ],
-                "bucketOptions": { # A Distribution may optionally contain a histogram of the values in the population. The histogram is given in bucket_counts as counts of values that fall into one of a sequence of non-overlapping buckets. The sequence of buckets is described by bucket_options.A bucket specifies an inclusive lower bound and exclusive upper bound for the values that are counted for that bucket. The upper bound of a bucket is strictly greater than the lower bound.The sequence of N buckets for a Distribution consists of an underflow bucket (number 0), zero or more finite buckets (number 1 through N - 2) and an overflow bucket (number N - 1). The buckets are contiguous: the lower bound of bucket i (i &gt; 0) is the same as the upper bound of bucket i - 1. The buckets span the whole range of finite values: lower bound of the underflow bucket is -infinity and the upper bound of the overflow bucket is +infinity. The finite buckets are so-called because both bounds are finite.BucketOptions describes bucket boundaries in one of three ways. Two describe the boundaries by giving parameters for a formula to generate boundaries and one gives the bucket boundaries explicitly.If bucket_options is not given, then no bucket_counts may be given. # Defines the histogram bucket boundaries.
-                  "exponentialBuckets": { # Specify a sequence of buckets that have a width that is proportional to the value of the lower bound. Each bucket represents a constant relative uncertainty on a specific value in the bucket.Defines num_finite_buckets + 2 (= N) buckets with these boundaries for bucket i:Upper bound (0 &lt;= i &lt; N-1): scale * (growth_factor ^ i).  Lower bound (1 &lt;= i &lt; N): scale * (growth_factor ^ (i - 1)). # The exponential buckets.
+                "bucketOptions": { # A Distribution may optionally contain a histogram of the values in the population. The histogram is given in bucket_counts as counts of values that fall into one of a sequence of non-overlapping buckets. The sequence of buckets is described by bucket_options.A bucket specifies an inclusive lower bound and exclusive upper bound for the values that are counted for that bucket. The upper bound of a bucket is strictly greater than the lower bound.The sequence of N buckets for a Distribution consists of an underflow bucket (number 0), zero or more finite buckets (number 1 through N - 2) and an overflow bucket (number N - 1). The buckets are contiguous: the lower bound of bucket i (i > 0) is the same as the upper bound of bucket i - 1. The buckets span the whole range of finite values: lower bound of the underflow bucket is -infinity and the upper bound of the overflow bucket is +infinity. The finite buckets are so-called because both bounds are finite.BucketOptions describes bucket boundaries in one of three ways. Two describe the boundaries by giving parameters for a formula to generate boundaries and one gives the bucket boundaries explicitly.If bucket_options is not given, then no bucket_counts may be given. # Defines the histogram bucket boundaries.
+                  "exponentialBuckets": { # Specify a sequence of buckets that have a width that is proportional to the value of the lower bound. Each bucket represents a constant relative uncertainty on a specific value in the bucket.Defines num_finite_buckets + 2 (= N) buckets with these boundaries for bucket i:Upper bound (0 <= i < N-1): scale * (growth_factor ^ i).  Lower bound (1 <= i < N): scale * (growth_factor ^ (i - 1)). # The exponential buckets.
                     "scale": 3.14, # Must be greater than 0.
                     "growthFactor": 3.14, # Must be greater than 1.
                     "numFiniteBuckets": 42, # Must be greater than 0.
                   },
-                  "linearBuckets": { # Specify a sequence of buckets that all have the same width (except overflow and underflow). Each bucket represents a constant absolute uncertainty on the specific value in the bucket.Defines num_finite_buckets + 2 (= N) buckets with these boundaries for bucket i:Upper bound (0 &lt;= i &lt; N-1): offset + (width * i).  Lower bound (1 &lt;= i &lt; N): offset + (width * (i - 1)). # The linear bucket.
+                  "linearBuckets": { # Specify a sequence of buckets that all have the same width (except overflow and underflow). Each bucket represents a constant absolute uncertainty on the specific value in the bucket.Defines num_finite_buckets + 2 (= N) buckets with these boundaries for bucket i:Upper bound (0 <= i < N-1): offset + (width * i).  Lower bound (1 <= i < N): offset + (width * (i - 1)). # The linear bucket.
                     "width": 3.14, # Must be greater than 0.
                     "numFiniteBuckets": 42, # Must be greater than 0.
                     "offset": 3.14, # Lower bound of the first bucket.
                   },
-                  "explicitBuckets": { # A set of buckets with arbitrary widths.Defines size(bounds) + 1 (= N) buckets with these boundaries for bucket i:Upper bound (0 &lt;= i &lt; N-1): boundsi  Lower bound (1 &lt;= i &lt; N); boundsi - 1There must be at least one element in bounds. If bounds has only one element, there are no finite buckets, and that single element is the common boundary of the overflow and underflow buckets. # The explicit buckets.
+                  "explicitBuckets": { # A set of buckets with arbitrary widths.Defines size(bounds) + 1 (= N) buckets with these boundaries for bucket i:Upper bound (0 <= i < N-1): boundsi  Lower bound (1 <= i < N); boundsi - 1There must be at least one element in bounds. If bounds has only one element, there are no finite buckets, and that single element is the common boundary of the overflow and underflow buckets. # The explicit buckets.
                     "bounds": [ # The values must be monotonically increasing.
                       3.14,
                     ],
@@ -148,14 +148,14 @@
             },
           },
         ],
-        "resource": { # An object representing a resource that can be used for monitoring, logging, billing, or other purposes. Examples include virtual machine instances, databases, and storage devices such as disks. The type field identifies a MonitoredResourceDescriptor object that describes the resource's schema. Information in the labels field identifies the actual resource and its attributes according to the schema. For example, a particular Compute Engine VM instance could be represented by the following object, because the MonitoredResourceDescriptor for &quot;gce_instance&quot; has labels &quot;instance_id&quot; and &quot;zone&quot;: # The associated resource. A fully-specified monitored resource used to identify the time series.
-            # { &quot;type&quot;: &quot;gce_instance&quot;,
-            #   &quot;labels&quot;: { &quot;instance_id&quot;: &quot;12345678901234&quot;,
-            #               &quot;zone&quot;: &quot;us-central1-a&quot; }}
-          "labels": { # Required. Values for all of the labels listed in the associated monitored resource descriptor. For example, Cloud SQL databases use the labels &quot;database_id&quot; and &quot;zone&quot;.
+        "resource": { # An object representing a resource that can be used for monitoring, logging, billing, or other purposes. Examples include virtual machine instances, databases, and storage devices such as disks. The type field identifies a MonitoredResourceDescriptor object that describes the resource's schema. Information in the labels field identifies the actual resource and its attributes according to the schema. For example, a particular Compute Engine VM instance could be represented by the following object, because the MonitoredResourceDescriptor for "gce_instance" has labels "instance_id" and "zone": # The associated resource. A fully-specified monitored resource used to identify the time series.
+            # { "type": "gce_instance",
+            #   "labels": { "instance_id": "12345678901234",
+            #               "zone": "us-central1-a" }}
+          "labels": { # Required. Values for all of the labels listed in the associated monitored resource descriptor. For example, Cloud SQL databases use the labels "database_id" and "zone".
             "a_key": "A String",
           },
-          "type": "A String", # Required. The monitored resource type. This field must match the type field of a MonitoredResourceDescriptor object. For example, the type of a Cloud SQL database is &quot;cloudsql_database&quot;.
+          "type": "A String", # Required. The monitored resource type. This field must match the type field of a MonitoredResourceDescriptor object. For example, the type of a Cloud SQL database is "cloudsql_database".
         },
         "valueType": "A String", # The value type of the time series. When listing time series, this value type might be different from the value type of the associated metric if this time series is an alignment or reduction of other time series.When creating a time series, this field is optional. If present, it must be the same as the type of the data in the points field.
       },
@@ -192,13 +192,13 @@
       2 - v2 error format
   aggregation_alignmentPeriod: string, The alignment period for per-time series alignment. If present, alignmentPeriod must be at least 60 seconds. After per-time series alignment, each time series will contain data points only on the period boundaries. If perSeriesAligner is not specified or equals ALIGN_NONE, then this field is ignored. If perSeriesAligner is specified and does not equal ALIGN_NONE, then this field must be defined; otherwise an error is returned.
   pageToken: string, If this field is not empty then it must contain the nextPageToken value returned by a previous call to this method. Using this field causes the method to return additional results from the previous method call.
-  aggregation_groupByFields: string, The set of fields to preserve when crossSeriesReducer is specified. The groupByFields determine how the time series are partitioned into subsets prior to applying the aggregation function. Each subset contains time series that have the same value for each of the grouping fields. Each individual time series is a member of exactly one subset. The crossSeriesReducer is applied to each subset of time series. Fields not specified in groupByFields are aggregated away. If groupByFields is not specified, the time series are aggregated into a single output time series. If crossSeriesReducer is not defined, this field is ignored. (repeated)
+  aggregation_groupByFields: string, The set of fields to preserve when crossSeriesReducer is specified. The groupByFields determine how the time series are partitioned into subsets prior to applying the aggregation function. Each subset contains time series that have the same value for each of the grouping fields. Each individual time series is a member of exactly one subset. The crossSeriesReducer is applied to each subset of time series. It is not possible to reduce across different resource types, so this field implicitly contains resource.type. Fields not specified in groupByFields are aggregated away. If groupByFields is not specified and all the time series have the same resource type, then the time series are aggregated into a single output time series. If crossSeriesReducer is not defined, this field is ignored. (repeated)
   aggregation_perSeriesAligner: string, The approach to be used to align individual time series. Not all alignment functions may be applied to all time series, depending on the metric type and value type of the original time series. Alignment may change the metric type or the value type of the time series.Time series data must be aligned in order to perform cross-time series reduction. If crossSeriesReducer is specified, then perSeriesAligner must be specified and not equal ALIGN_NONE and alignmentPeriod must be specified; otherwise, an error is returned.
   interval_endTime: string, Required. The end of the time interval.
   aggregation_crossSeriesReducer: string, The approach to be used to combine time series. Not all reducer functions may be applied to all time series, depending on the metric type and the value type of the original time series. Reduction may change the metric type of value type of the time series.Time series data must be aligned in order to perform cross-time series reduction. If crossSeriesReducer is specified, then perSeriesAligner must be specified and not equal ALIGN_NONE and alignmentPeriod must be specified; otherwise, an error is returned.
-  filter: string, A monitoring filter (/monitoring/api/v3/filters) that specifies which time series should be returned. The filter must specify a single metric type, and can additionally specify metric labels and other information. For example:
-metric.type = &quot;compute.googleapis.com/instance/cpu/usage_time&quot; AND
-    metric.label.instance_name = &quot;my-instance-name&quot;
+  filter: string, A monitoring filter that specifies which time series should be returned. The filter must specify a single metric type, and can additionally specify metric labels and other information. For example:
+metric.type = "compute.googleapis.com/instance/cpu/usage_time" AND
+    metric.label.instance_name = "my-instance-name"
 
   interval_startTime: string, Optional. The beginning of the time interval. The default value for the start time is the end time. The start time must not be later than the end time.
   view: string, Specifies which information is returned about the time series.
@@ -211,11 +211,11 @@
     "timeSeries": [ # One or more time series that match the filter included in the request.
       { # A collection of data points that describes the time-varying values of a metric. A time series is identified by a combination of a fully-specified monitored resource and a fully-specified metric. This type is used for both listing and creating time series.
         "metricKind": "A String", # The metric kind of the time series. When listing time series, this metric kind might be different from the metric kind of the associated metric if this time series is an alignment or reduction of other time series.When creating a time series, this field is optional. If present, it must be the same as the metric kind of the associated metric. If the associated metric's descriptor must be auto-created, then this field specifies the metric kind of the new descriptor and must be either GAUGE (the default) or CUMULATIVE.
-        "metric": { # A specific metric identified by specifying values for all of the labels of a MetricDescriptor. # The associated metric. A fully-specified metric used to identify the time series.
-          "labels": { # The set of labels that uniquely identify a metric. To specify a metric, all labels enumerated in the MetricDescriptor must be assigned values.
+        "metric": { # A specific metric, identified by specifying values for all of the labels of a MetricDescriptor. # The associated metric. A fully-specified metric used to identify the time series.
+          "labels": { # The set of label values that uniquely identify this metric. All labels listed in the MetricDescriptor must be assigned values.
             "a_key": "A String",
           },
-          "type": "A String", # An existing metric type, see google.api.MetricDescriptor. For example, compute.googleapis.com/instance/cpu/usage_time.
+          "type": "A String", # An existing metric type, see google.api.MetricDescriptor. For example, custom.googleapis.com/invoice/paid/amount.
         },
         "points": [ # The data points of this time series. When listing time series, the order of the points is specified by the list method.When creating a time series, this field must contain exactly one point and the point's type must be the same as the value type of the associated metric. If the associated metric's descriptor must be auto-created, then the value type of the descriptor is determined by the point's type, which must be BOOL, INT64, DOUBLE, or DISTRIBUTION.
           { # A single data point in a time series.
@@ -229,18 +229,18 @@
                 "bucketCounts": [ # If bucket_options is given, then the sum of the values in bucket_counts must equal the value in count. If bucket_options is not given, no bucket_counts fields may be given.Bucket counts are given in order under the numbering scheme described above (the underflow bucket has number 0; the finite buckets, if any, have numbers 1 through N-2; the overflow bucket has number N-1).The size of bucket_counts must be no greater than N as defined in bucket_options.Any suffix of trailing zero bucket_count fields may be omitted.
                   "A String",
                 ],
-                "bucketOptions": { # A Distribution may optionally contain a histogram of the values in the population. The histogram is given in bucket_counts as counts of values that fall into one of a sequence of non-overlapping buckets. The sequence of buckets is described by bucket_options.A bucket specifies an inclusive lower bound and exclusive upper bound for the values that are counted for that bucket. The upper bound of a bucket is strictly greater than the lower bound.The sequence of N buckets for a Distribution consists of an underflow bucket (number 0), zero or more finite buckets (number 1 through N - 2) and an overflow bucket (number N - 1). The buckets are contiguous: the lower bound of bucket i (i &gt; 0) is the same as the upper bound of bucket i - 1. The buckets span the whole range of finite values: lower bound of the underflow bucket is -infinity and the upper bound of the overflow bucket is +infinity. The finite buckets are so-called because both bounds are finite.BucketOptions describes bucket boundaries in one of three ways. Two describe the boundaries by giving parameters for a formula to generate boundaries and one gives the bucket boundaries explicitly.If bucket_options is not given, then no bucket_counts may be given. # Defines the histogram bucket boundaries.
-                  "exponentialBuckets": { # Specify a sequence of buckets that have a width that is proportional to the value of the lower bound. Each bucket represents a constant relative uncertainty on a specific value in the bucket.Defines num_finite_buckets + 2 (= N) buckets with these boundaries for bucket i:Upper bound (0 &lt;= i &lt; N-1): scale * (growth_factor ^ i).  Lower bound (1 &lt;= i &lt; N): scale * (growth_factor ^ (i - 1)). # The exponential buckets.
+                "bucketOptions": { # A Distribution may optionally contain a histogram of the values in the population. The histogram is given in bucket_counts as counts of values that fall into one of a sequence of non-overlapping buckets. The sequence of buckets is described by bucket_options.A bucket specifies an inclusive lower bound and exclusive upper bound for the values that are counted for that bucket. The upper bound of a bucket is strictly greater than the lower bound.The sequence of N buckets for a Distribution consists of an underflow bucket (number 0), zero or more finite buckets (number 1 through N - 2) and an overflow bucket (number N - 1). The buckets are contiguous: the lower bound of bucket i (i > 0) is the same as the upper bound of bucket i - 1. The buckets span the whole range of finite values: lower bound of the underflow bucket is -infinity and the upper bound of the overflow bucket is +infinity. The finite buckets are so-called because both bounds are finite.BucketOptions describes bucket boundaries in one of three ways. Two describe the boundaries by giving parameters for a formula to generate boundaries and one gives the bucket boundaries explicitly.If bucket_options is not given, then no bucket_counts may be given. # Defines the histogram bucket boundaries.
+                  "exponentialBuckets": { # Specify a sequence of buckets that have a width that is proportional to the value of the lower bound. Each bucket represents a constant relative uncertainty on a specific value in the bucket.Defines num_finite_buckets + 2 (= N) buckets with these boundaries for bucket i:Upper bound (0 <= i < N-1): scale * (growth_factor ^ i).  Lower bound (1 <= i < N): scale * (growth_factor ^ (i - 1)). # The exponential buckets.
                     "scale": 3.14, # Must be greater than 0.
                     "growthFactor": 3.14, # Must be greater than 1.
                     "numFiniteBuckets": 42, # Must be greater than 0.
                   },
-                  "linearBuckets": { # Specify a sequence of buckets that all have the same width (except overflow and underflow). Each bucket represents a constant absolute uncertainty on the specific value in the bucket.Defines num_finite_buckets + 2 (= N) buckets with these boundaries for bucket i:Upper bound (0 &lt;= i &lt; N-1): offset + (width * i).  Lower bound (1 &lt;= i &lt; N): offset + (width * (i - 1)). # The linear bucket.
+                  "linearBuckets": { # Specify a sequence of buckets that all have the same width (except overflow and underflow). Each bucket represents a constant absolute uncertainty on the specific value in the bucket.Defines num_finite_buckets + 2 (= N) buckets with these boundaries for bucket i:Upper bound (0 <= i < N-1): offset + (width * i).  Lower bound (1 <= i < N): offset + (width * (i - 1)). # The linear bucket.
                     "width": 3.14, # Must be greater than 0.
                     "numFiniteBuckets": 42, # Must be greater than 0.
                     "offset": 3.14, # Lower bound of the first bucket.
                   },
-                  "explicitBuckets": { # A set of buckets with arbitrary widths.Defines size(bounds) + 1 (= N) buckets with these boundaries for bucket i:Upper bound (0 &lt;= i &lt; N-1): boundsi  Lower bound (1 &lt;= i &lt; N); boundsi - 1There must be at least one element in bounds. If bounds has only one element, there are no finite buckets, and that single element is the common boundary of the overflow and underflow buckets. # The explicit buckets.
+                  "explicitBuckets": { # A set of buckets with arbitrary widths.Defines size(bounds) + 1 (= N) buckets with these boundaries for bucket i:Upper bound (0 <= i < N-1): boundsi  Lower bound (1 <= i < N); boundsi - 1There must be at least one element in bounds. If bounds has only one element, there are no finite buckets, and that single element is the common boundary of the overflow and underflow buckets. # The explicit buckets.
                     "bounds": [ # The values must be monotonically increasing.
                       3.14,
                     ],
@@ -262,14 +262,14 @@
             },
           },
         ],
-        "resource": { # An object representing a resource that can be used for monitoring, logging, billing, or other purposes. Examples include virtual machine instances, databases, and storage devices such as disks. The type field identifies a MonitoredResourceDescriptor object that describes the resource's schema. Information in the labels field identifies the actual resource and its attributes according to the schema. For example, a particular Compute Engine VM instance could be represented by the following object, because the MonitoredResourceDescriptor for &quot;gce_instance&quot; has labels &quot;instance_id&quot; and &quot;zone&quot;: # The associated resource. A fully-specified monitored resource used to identify the time series.
-            # { &quot;type&quot;: &quot;gce_instance&quot;,
-            #   &quot;labels&quot;: { &quot;instance_id&quot;: &quot;12345678901234&quot;,
-            #               &quot;zone&quot;: &quot;us-central1-a&quot; }}
-          "labels": { # Required. Values for all of the labels listed in the associated monitored resource descriptor. For example, Cloud SQL databases use the labels &quot;database_id&quot; and &quot;zone&quot;.
+        "resource": { # An object representing a resource that can be used for monitoring, logging, billing, or other purposes. Examples include virtual machine instances, databases, and storage devices such as disks. The type field identifies a MonitoredResourceDescriptor object that describes the resource's schema. Information in the labels field identifies the actual resource and its attributes according to the schema. For example, a particular Compute Engine VM instance could be represented by the following object, because the MonitoredResourceDescriptor for "gce_instance" has labels "instance_id" and "zone": # The associated resource. A fully-specified monitored resource used to identify the time series.
+            # { "type": "gce_instance",
+            #   "labels": { "instance_id": "12345678901234",
+            #               "zone": "us-central1-a" }}
+          "labels": { # Required. Values for all of the labels listed in the associated monitored resource descriptor. For example, Cloud SQL databases use the labels "database_id" and "zone".
             "a_key": "A String",
           },
-          "type": "A String", # Required. The monitored resource type. This field must match the type field of a MonitoredResourceDescriptor object. For example, the type of a Cloud SQL database is &quot;cloudsql_database&quot;.
+          "type": "A String", # Required. The monitored resource type. This field must match the type field of a MonitoredResourceDescriptor object. For example, the type of a Cloud SQL database is "cloudsql_database".
         },
         "valueType": "A String", # The value type of the time series. When listing time series, this value type might be different from the value type of the associated metric if this time series is an alignment or reduction of other time series.When creating a time series, this field is optional. If present, it must be the same as the type of the data in the points field.
       },
diff --git a/docs/dyn/plusDomains_v1.media.html b/docs/dyn/plusDomains_v1.media.html
index 36fdbbb..0616027 100644
--- a/docs/dyn/plusDomains_v1.media.html
+++ b/docs/dyn/plusDomains_v1.media.html
@@ -75,11 +75,11 @@
 <h1><a href="plusDomains_v1.html">Google+ Domains API</a> . <a href="plusDomains_v1.media.html">media</a></h1>
 <h2>Instance Methods</h2>
 <p class="toc_element">
-  <code><a href="#insert">insert(userId, collection, body=None, media_body=None)</a></code></p>
+  <code><a href="#insert">insert(userId, collection, body=None, media_body=None, media_mime_type=None)</a></code></p>
 <p class="firstline">Add a new media item to an album. The current upload size limitations are 36MB for a photo and 1GB for a video. Uploads do not count against quota if photos are less than 2048 pixels on their longest side or videos are less than 15 minutes in length.</p>
 <h3>Method Details</h3>
 <div class="method">
-    <code class="details" id="insert">insert(userId, collection, body=None, media_body=None)</code>
+    <code class="details" id="insert">insert(userId, collection, body=None, media_body=None, media_mime_type=None)</code>
   <pre>Add a new media item to an album. The current upload size limitations are 36MB for a photo and 1GB for a video. Uploads do not count against quota if photos are less than 2048 pixels on their longest side or videos are less than 15 minutes in length.
 
 Args:
@@ -133,6 +133,7 @@
   }
 
   media_body: string, The filename of the media request body, or an instance of a MediaUpload object.
+  media_mime_type: string, The MIME type of the media request body, or an instance of a MediaUpload object.
 
 Returns:
   An object of the form:
diff --git a/docs/dyn/pubsub_v1.projects.snapshots.html b/docs/dyn/pubsub_v1.projects.snapshots.html
index 32dbf2c..b872beb 100644
--- a/docs/dyn/pubsub_v1.projects.snapshots.html
+++ b/docs/dyn/pubsub_v1.projects.snapshots.html
@@ -75,105 +75,324 @@
 <h1><a href="pubsub_v1.html">Google Cloud Pub/Sub API</a> . <a href="pubsub_v1.projects.html">projects</a> . <a href="pubsub_v1.projects.snapshots.html">snapshots</a></h1>
 <h2>Instance Methods</h2>
 <p class="toc_element">
-  <code><a href="#getIamPolicy">getIamPolicy(resource, x__xgafv=None)</a></code></p>
-<p class="firstline">Gets the access control policy for a resource. Returns an empty policy if the resource exists and does not have a policy set.</p>
+  <code><a href="#getIamPolicy">getIamPolicy(resource=None, x__xgafv=None)</a></code></p>
+<p class="firstline">Gets the access control policy for a resource.</p>
 <p class="toc_element">
-  <code><a href="#setIamPolicy">setIamPolicy(resource, body, x__xgafv=None)</a></code></p>
-<p class="firstline">Sets the access control policy on the specified resource. Replaces any existing policy.</p>
+  <code><a href="#setIamPolicy">setIamPolicy(resource=None, body, x__xgafv=None)</a></code></p>
+<p class="firstline">Sets the access control policy on the specified resource. Replaces any</p>
 <p class="toc_element">
-  <code><a href="#testIamPermissions">testIamPermissions(resource, body, x__xgafv=None)</a></code></p>
+  <code><a href="#testIamPermissions">testIamPermissions(resource=None, body, x__xgafv=None)</a></code></p>
 <p class="firstline">Returns permissions that a caller has on the specified resource.</p>
 <h3>Method Details</h3>
 <div class="method">
-    <code class="details" id="getIamPolicy">getIamPolicy(resource, x__xgafv=None)</code>
-  <pre>Gets the access control policy for a resource. Returns an empty policy if the resource exists and does not have a policy set.
+    <code class="details" id="getIamPolicy">getIamPolicy(resource=None, x__xgafv=None)</code>
+  <pre>Gets the access control policy for a resource.
+Returns an empty policy if the resource exists and does not have a policy
+set.
 
 Args:
-  resource: string, REQUIRED: The resource for which the policy is being requested. `resource` is usually specified as a path. For example, a Project resource is specified as `projects/{project}`. (required)
+  resource: string, REQUIRED: The resource for which the policy is being requested.
+`resource` is usually specified as a path. For example, a Project
+resource is specified as `projects/{project}`. (required)
   x__xgafv: string, V1 error format.
+    Allowed values
+      1 - v1 error format
+      2 - v2 error format
 
 Returns:
   An object of the form:
 
-    { # Defines an Identity and Access Management (IAM) policy. It is used to specify access control policies for Cloud Platform resources. A `Policy` consists of a list of `bindings`. A `Binding` binds a list of `members` to a `role`, where the members can be user accounts, Google groups, Google domains, and service accounts. A `role` is a named list of permissions defined by IAM. **Example** { "bindings": [ { "role": "roles/owner", "members": [ "user:mike@example.com", "group:admins@example.com", "domain:google.com", "serviceAccount:my-other-app@appspot.gserviceaccount.com", ] }, { "role": "roles/viewer", "members": ["user:sean@example.com"] } ] } For a description of IAM and its features, see the [IAM developer's guide](https://cloud.google.com/iam).
-    "bindings": [ # Associates a list of `members` to a `role`. Multiple `bindings` must not be specified for the same `role`. `bindings` with no members will result in an error.
+    { # Defines an Identity and Access Management (IAM) policy. It is used to
+      # specify access control policies for Cloud Platform resources.
+      #
+      #
+      # A `Policy` consists of a list of `bindings`. A `Binding` binds a list of
+      # `members` to a `role`, where the members can be user accounts, Google groups,
+      # Google domains, and service accounts. A `role` is a named list of permissions
+      # defined by IAM.
+      #
+      # **Example**
+      #
+      #     {
+      #       "bindings": [
+      #         {
+      #           "role": "roles/owner",
+      #           "members": [
+      #             "user:mike@example.com",
+      #             "group:admins@example.com",
+      #             "domain:google.com",
+      #             "serviceAccount:my-other-app@appspot.gserviceaccount.com",
+      #           ]
+      #         },
+      #         {
+      #           "role": "roles/viewer",
+      #           "members": ["user:sean@example.com"]
+      #         }
+      #       ]
+      #     }
+      #
+      # For a description of IAM and its features, see the
+      # [IAM developer's guide](https://cloud.google.com/iam).
+    "bindings": [ # Associates a list of `members` to a `role`.
+        # Multiple `bindings` must not be specified for the same `role`.
+        # `bindings` with no members will result in an error.
       { # Associates `members` with a `role`.
-        "role": "A String", # Role that is assigned to `members`. For example, `roles/viewer`, `roles/editor`, or `roles/owner`. Required
-        "members": [ # Specifies the identities requesting access for a Cloud Platform resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@gmail.com` or `joe@example.com`. * `serviceAccount:{emailid}`: An email address that represents a service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: A Google Apps domain name that represents all the users of that domain. For example, `google.com` or `example.com`.
+        "role": "A String", # Role that is assigned to `members`.
+            # For example, `roles/viewer`, `roles/editor`, or `roles/owner`.
+            # Required
+        "members": [ # Specifies the identities requesting access for a Cloud Platform resource.
+            # `members` can have the following values:
+            #
+            # * `allUsers`: A special identifier that represents anyone who is
+            #    on the internet; with or without a Google account.
+            #
+            # * `allAuthenticatedUsers`: A special identifier that represents anyone
+            #    who is authenticated with a Google account or a service account.
+            #
+            # * `user:{emailid}`: An email address that represents a specific Google
+            #    account. For example, `alice@gmail.com` or `joe@example.com`.
+            #
+            #
+            # * `serviceAccount:{emailid}`: An email address that represents a service
+            #    account. For example, `my-other-app@appspot.gserviceaccount.com`.
+            #
+            # * `group:{emailid}`: An email address that represents a Google group.
+            #    For example, `admins@example.com`.
+            #
+            # * `domain:{domain}`: A Google Apps domain name that represents all the
+            #    users of that domain. For example, `google.com` or `example.com`.
+            #
           "A String",
         ],
       },
     ],
+    "etag": "A String", # `etag` is used for optimistic concurrency control as a way to help
+        # prevent simultaneous updates of a policy from overwriting each other.
+        # It is strongly suggested that systems make use of the `etag` in the
+        # read-modify-write cycle to perform policy updates in order to avoid race
+        # conditions: An `etag` is returned in the response to `getIamPolicy`, and
+        # systems are expected to put that etag in the request to `setIamPolicy` to
+        # ensure that their change will be applied to the same version of the policy.
+        #
+        # If no `etag` is provided in the call to `setIamPolicy`, then the existing
+        # policy is overwritten blindly.
     "version": 42, # Version of the `Policy`. The default version is 0.
-    "etag": "A String", # `etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. If no `etag` is provided in the call to `setIamPolicy`, then the existing policy is overwritten blindly.
   }</pre>
 </div>
 
 <div class="method">
-    <code class="details" id="setIamPolicy">setIamPolicy(resource, body, x__xgafv=None)</code>
-  <pre>Sets the access control policy on the specified resource. Replaces any existing policy.
+    <code class="details" id="setIamPolicy">setIamPolicy(resource=None, body, x__xgafv=None)</code>
+  <pre>Sets the access control policy on the specified resource. Replaces any
+existing policy.
 
 Args:
-  resource: string, REQUIRED: The resource for which the policy is being specified. `resource` is usually specified as a path. For example, a Project resource is specified as `projects/{project}`. (required)
+  resource: string, REQUIRED: The resource for which the policy is being specified.
+`resource` is usually specified as a path. For example, a Project
+resource is specified as `projects/{project}`. (required)
   body: object, The request body. (required)
     The object takes the form of:
 
 { # Request message for `SetIamPolicy` method.
-    "policy": { # Defines an Identity and Access Management (IAM) policy. It is used to specify access control policies for Cloud Platform resources. A `Policy` consists of a list of `bindings`. A `Binding` binds a list of `members` to a `role`, where the members can be user accounts, Google groups, Google domains, and service accounts. A `role` is a named list of permissions defined by IAM. **Example** { "bindings": [ { "role": "roles/owner", "members": [ "user:mike@example.com", "group:admins@example.com", "domain:google.com", "serviceAccount:my-other-app@appspot.gserviceaccount.com", ] }, { "role": "roles/viewer", "members": ["user:sean@example.com"] } ] } For a description of IAM and its features, see the [IAM developer's guide](https://cloud.google.com/iam). # REQUIRED: The complete policy to be applied to the `resource`. The size of the policy is limited to a few 10s of KB. An empty policy is a valid policy but certain Cloud Platform services (such as Projects) might reject them.
-      "bindings": [ # Associates a list of `members` to a `role`. Multiple `bindings` must not be specified for the same `role`. `bindings` with no members will result in an error.
+    "policy": { # Defines an Identity and Access Management (IAM) policy. It is used to # REQUIRED: The complete policy to be applied to the `resource`. The size of
+        # the policy is limited to a few 10s of KB. An empty policy is a
+        # valid policy but certain Cloud Platform services (such as Projects)
+        # might reject them.
+        # specify access control policies for Cloud Platform resources.
+        #
+        #
+        # A `Policy` consists of a list of `bindings`. A `Binding` binds a list of
+        # `members` to a `role`, where the members can be user accounts, Google groups,
+        # Google domains, and service accounts. A `role` is a named list of permissions
+        # defined by IAM.
+        #
+        # **Example**
+        #
+        #     {
+        #       "bindings": [
+        #         {
+        #           "role": "roles/owner",
+        #           "members": [
+        #             "user:mike@example.com",
+        #             "group:admins@example.com",
+        #             "domain:google.com",
+        #             "serviceAccount:my-other-app@appspot.gserviceaccount.com",
+        #           ]
+        #         },
+        #         {
+        #           "role": "roles/viewer",
+        #           "members": ["user:sean@example.com"]
+        #         }
+        #       ]
+        #     }
+        #
+        # For a description of IAM and its features, see the
+        # [IAM developer's guide](https://cloud.google.com/iam).
+      "bindings": [ # Associates a list of `members` to a `role`.
+          # Multiple `bindings` must not be specified for the same `role`.
+          # `bindings` with no members will result in an error.
         { # Associates `members` with a `role`.
-          "role": "A String", # Role that is assigned to `members`. For example, `roles/viewer`, `roles/editor`, or `roles/owner`. Required
-          "members": [ # Specifies the identities requesting access for a Cloud Platform resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@gmail.com` or `joe@example.com`. * `serviceAccount:{emailid}`: An email address that represents a service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: A Google Apps domain name that represents all the users of that domain. For example, `google.com` or `example.com`.
+          "role": "A String", # Role that is assigned to `members`.
+              # For example, `roles/viewer`, `roles/editor`, or `roles/owner`.
+              # Required
+          "members": [ # Specifies the identities requesting access for a Cloud Platform resource.
+              # `members` can have the following values:
+              #
+              # * `allUsers`: A special identifier that represents anyone who is
+              #    on the internet; with or without a Google account.
+              #
+              # * `allAuthenticatedUsers`: A special identifier that represents anyone
+              #    who is authenticated with a Google account or a service account.
+              #
+              # * `user:{emailid}`: An email address that represents a specific Google
+              #    account. For example, `alice@gmail.com` or `joe@example.com`.
+              #
+              #
+              # * `serviceAccount:{emailid}`: An email address that represents a service
+              #    account. For example, `my-other-app@appspot.gserviceaccount.com`.
+              #
+              # * `group:{emailid}`: An email address that represents a Google group.
+              #    For example, `admins@example.com`.
+              #
+              # * `domain:{domain}`: A Google Apps domain name that represents all the
+              #    users of that domain. For example, `google.com` or `example.com`.
+              #
             "A String",
           ],
         },
       ],
+      "etag": "A String", # `etag` is used for optimistic concurrency control as a way to help
+          # prevent simultaneous updates of a policy from overwriting each other.
+          # It is strongly suggested that systems make use of the `etag` in the
+          # read-modify-write cycle to perform policy updates in order to avoid race
+          # conditions: An `etag` is returned in the response to `getIamPolicy`, and
+          # systems are expected to put that etag in the request to `setIamPolicy` to
+          # ensure that their change will be applied to the same version of the policy.
+          #
+          # If no `etag` is provided in the call to `setIamPolicy`, then the existing
+          # policy is overwritten blindly.
       "version": 42, # Version of the `Policy`. The default version is 0.
-      "etag": "A String", # `etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. If no `etag` is provided in the call to `setIamPolicy`, then the existing policy is overwritten blindly.
     },
   }
 
   x__xgafv: string, V1 error format.
+    Allowed values
+      1 - v1 error format
+      2 - v2 error format
 
 Returns:
   An object of the form:
 
-    { # Defines an Identity and Access Management (IAM) policy. It is used to specify access control policies for Cloud Platform resources. A `Policy` consists of a list of `bindings`. A `Binding` binds a list of `members` to a `role`, where the members can be user accounts, Google groups, Google domains, and service accounts. A `role` is a named list of permissions defined by IAM. **Example** { "bindings": [ { "role": "roles/owner", "members": [ "user:mike@example.com", "group:admins@example.com", "domain:google.com", "serviceAccount:my-other-app@appspot.gserviceaccount.com", ] }, { "role": "roles/viewer", "members": ["user:sean@example.com"] } ] } For a description of IAM and its features, see the [IAM developer's guide](https://cloud.google.com/iam).
-    "bindings": [ # Associates a list of `members` to a `role`. Multiple `bindings` must not be specified for the same `role`. `bindings` with no members will result in an error.
+    { # Defines an Identity and Access Management (IAM) policy. It is used to
+      # specify access control policies for Cloud Platform resources.
+      #
+      #
+      # A `Policy` consists of a list of `bindings`. A `Binding` binds a list of
+      # `members` to a `role`, where the members can be user accounts, Google groups,
+      # Google domains, and service accounts. A `role` is a named list of permissions
+      # defined by IAM.
+      #
+      # **Example**
+      #
+      #     {
+      #       "bindings": [
+      #         {
+      #           "role": "roles/owner",
+      #           "members": [
+      #             "user:mike@example.com",
+      #             "group:admins@example.com",
+      #             "domain:google.com",
+      #             "serviceAccount:my-other-app@appspot.gserviceaccount.com",
+      #           ]
+      #         },
+      #         {
+      #           "role": "roles/viewer",
+      #           "members": ["user:sean@example.com"]
+      #         }
+      #       ]
+      #     }
+      #
+      # For a description of IAM and its features, see the
+      # [IAM developer's guide](https://cloud.google.com/iam).
+    "bindings": [ # Associates a list of `members` to a `role`.
+        # Multiple `bindings` must not be specified for the same `role`.
+        # `bindings` with no members will result in an error.
       { # Associates `members` with a `role`.
-        "role": "A String", # Role that is assigned to `members`. For example, `roles/viewer`, `roles/editor`, or `roles/owner`. Required
-        "members": [ # Specifies the identities requesting access for a Cloud Platform resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@gmail.com` or `joe@example.com`. * `serviceAccount:{emailid}`: An email address that represents a service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: A Google Apps domain name that represents all the users of that domain. For example, `google.com` or `example.com`.
+        "role": "A String", # Role that is assigned to `members`.
+            # For example, `roles/viewer`, `roles/editor`, or `roles/owner`.
+            # Required
+        "members": [ # Specifies the identities requesting access for a Cloud Platform resource.
+            # `members` can have the following values:
+            #
+            # * `allUsers`: A special identifier that represents anyone who is
+            #    on the internet; with or without a Google account.
+            #
+            # * `allAuthenticatedUsers`: A special identifier that represents anyone
+            #    who is authenticated with a Google account or a service account.
+            #
+            # * `user:{emailid}`: An email address that represents a specific Google
+            #    account. For example, `alice@gmail.com` or `joe@example.com`.
+            #
+            #
+            # * `serviceAccount:{emailid}`: An email address that represents a service
+            #    account. For example, `my-other-app@appspot.gserviceaccount.com`.
+            #
+            # * `group:{emailid}`: An email address that represents a Google group.
+            #    For example, `admins@example.com`.
+            #
+            # * `domain:{domain}`: A Google Apps domain name that represents all the
+            #    users of that domain. For example, `google.com` or `example.com`.
+            #
           "A String",
         ],
       },
     ],
+    "etag": "A String", # `etag` is used for optimistic concurrency control as a way to help
+        # prevent simultaneous updates of a policy from overwriting each other.
+        # It is strongly suggested that systems make use of the `etag` in the
+        # read-modify-write cycle to perform policy updates in order to avoid race
+        # conditions: An `etag` is returned in the response to `getIamPolicy`, and
+        # systems are expected to put that etag in the request to `setIamPolicy` to
+        # ensure that their change will be applied to the same version of the policy.
+        #
+        # If no `etag` is provided in the call to `setIamPolicy`, then the existing
+        # policy is overwritten blindly.
     "version": 42, # Version of the `Policy`. The default version is 0.
-    "etag": "A String", # `etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. If no `etag` is provided in the call to `setIamPolicy`, then the existing policy is overwritten blindly.
   }</pre>
 </div>
 
 <div class="method">
-    <code class="details" id="testIamPermissions">testIamPermissions(resource, body, x__xgafv=None)</code>
+    <code class="details" id="testIamPermissions">testIamPermissions(resource=None, body, x__xgafv=None)</code>
   <pre>Returns permissions that a caller has on the specified resource.
+If the resource does not exist, this will return an empty set of
+permissions, not a NOT_FOUND error.
 
 Args:
-  resource: string, REQUIRED: The resource for which the policy detail is being requested. `resource` is usually specified as a path. For example, a Project resource is specified as `projects/{project}`. (required)
+  resource: string, REQUIRED: The resource for which the policy detail is being requested.
+`resource` is usually specified as a path. For example, a Project
+resource is specified as `projects/{project}`. (required)
   body: object, The request body. (required)
     The object takes the form of:
 
 { # Request message for `TestIamPermissions` method.
-    "permissions": [ # The set of permissions to check for the `resource`. Permissions with wildcards (such as '*' or 'storage.*') are not allowed. For more information see [IAM Overview](https://cloud.google.com/iam/docs/overview#permissions).
+    "permissions": [ # The set of permissions to check for the `resource`. Permissions with
+        # wildcards (such as '*' or 'storage.*') are not allowed. For more
+        # information see
+        # [IAM Overview](https://cloud.google.com/iam/docs/overview#permissions).
       "A String",
     ],
   }
 
   x__xgafv: string, V1 error format.
+    Allowed values
+      1 - v1 error format
+      2 - v2 error format
 
 Returns:
   An object of the form:
 
     { # Response message for `TestIamPermissions` method.
-    "permissions": [ # A subset of `TestPermissionsRequest.permissions` that the caller is allowed.
+    "permissions": [ # A subset of `TestPermissionsRequest.permissions` that the caller is
+        # allowed.
       "A String",
     ],
   }</pre>
diff --git a/docs/dyn/pubsub_v1.projects.subscriptions.html b/docs/dyn/pubsub_v1.projects.subscriptions.html
index 9bb150b..50eb326 100644
--- a/docs/dyn/pubsub_v1.projects.subscriptions.html
+++ b/docs/dyn/pubsub_v1.projects.subscriptions.html
@@ -75,195 +75,530 @@
 <h1><a href="pubsub_v1.html">Google Cloud Pub/Sub API</a> . <a href="pubsub_v1.projects.html">projects</a> . <a href="pubsub_v1.projects.subscriptions.html">subscriptions</a></h1>
 <h2>Instance Methods</h2>
 <p class="toc_element">
-  <code><a href="#acknowledge">acknowledge(subscription, body, x__xgafv=None)</a></code></p>
-<p class="firstline">Acknowledges the messages associated with the `ack_ids` in the `AcknowledgeRequest`. The Pub/Sub system can remove the relevant messages from the subscription. Acknowledging a message whose ack deadline has expired may succeed, but such a message may be redelivered later. Acknowledging a message more than once will not result in an error.</p>
+  <code><a href="#acknowledge">acknowledge(subscription=None, body, x__xgafv=None)</a></code></p>
+<p class="firstline">Acknowledges the messages associated with the `ack_ids` in the</p>
 <p class="toc_element">
-  <code><a href="#create">create(name, body, x__xgafv=None)</a></code></p>
-<p class="firstline">Creates a subscription to a given topic. If the subscription already exists, returns `ALREADY_EXISTS`. If the corresponding topic doesn't exist, returns `NOT_FOUND`. If the name is not provided in the request, the server will assign a random name for this subscription on the same project as the topic. Note that for REST API requests, you must specify a name.</p>
+  <code><a href="#create">create(name=None, body, x__xgafv=None)</a></code></p>
+<p class="firstline">Creates a subscription to a given topic.</p>
 <p class="toc_element">
-  <code><a href="#delete">delete(subscription, x__xgafv=None)</a></code></p>
-<p class="firstline">Deletes an existing subscription. All messages retained in the subscription are immediately dropped. Calls to `Pull` after deletion will return `NOT_FOUND`. After a subscription is deleted, a new one may be created with the same name, but the new one has no association with the old subscription or its topic unless the same topic is specified.</p>
+  <code><a href="#delete">delete(subscription=None, x__xgafv=None)</a></code></p>
+<p class="firstline">Deletes an existing subscription. All messages retained in the subscription</p>
 <p class="toc_element">
-  <code><a href="#get">get(subscription, x__xgafv=None)</a></code></p>
+  <code><a href="#get">get(subscription=None, x__xgafv=None)</a></code></p>
 <p class="firstline">Gets the configuration details of a subscription.</p>
 <p class="toc_element">
-  <code><a href="#getIamPolicy">getIamPolicy(resource, x__xgafv=None)</a></code></p>
-<p class="firstline">Gets the access control policy for a resource. Returns an empty policy if the resource exists and does not have a policy set.</p>
+  <code><a href="#getIamPolicy">getIamPolicy(resource=None, x__xgafv=None)</a></code></p>
+<p class="firstline">Gets the access control policy for a resource.</p>
 <p class="toc_element">
-  <code><a href="#list">list(project, pageSize=None, pageToken=None, x__xgafv=None)</a></code></p>
+  <code><a href="#list">list(project=None, pageSize=None, pageToken=None, x__xgafv=None)</a></code></p>
 <p class="firstline">Lists matching subscriptions.</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="#modifyAckDeadline">modifyAckDeadline(subscription, body, x__xgafv=None)</a></code></p>
-<p class="firstline">Modifies the ack deadline for a specific message. This method is useful to indicate that more time is needed to process a message by the subscriber, or to make the message available for redelivery if the processing was interrupted. Note that this does not modify the subscription-level `ackDeadlineSeconds` used for subsequent messages.</p>
+  <code><a href="#modifyAckDeadline">modifyAckDeadline(subscription=None, body, x__xgafv=None)</a></code></p>
+<p class="firstline">Modifies the ack deadline for a specific message. This method is useful</p>
 <p class="toc_element">
-  <code><a href="#modifyPushConfig">modifyPushConfig(subscription, body, x__xgafv=None)</a></code></p>
-<p class="firstline">Modifies the `PushConfig` for a specified subscription. This may be used to change a push subscription to a pull one (signified by an empty `PushConfig`) or vice versa, or change the endpoint URL and other attributes of a push subscription. Messages will accumulate for delivery continuously through the call regardless of changes to the `PushConfig`.</p>
+  <code><a href="#modifyPushConfig">modifyPushConfig(subscription=None, body, x__xgafv=None)</a></code></p>
+<p class="firstline">Modifies the `PushConfig` for a specified subscription.</p>
 <p class="toc_element">
-  <code><a href="#pull">pull(subscription, body, x__xgafv=None)</a></code></p>
-<p class="firstline">Pulls messages from the server. Returns an empty list if there are no messages available in the backlog. The server may return `UNAVAILABLE` if there are too many concurrent pull requests pending for the given subscription.</p>
+  <code><a href="#pull">pull(subscription=None, body, x__xgafv=None)</a></code></p>
+<p class="firstline">Pulls messages from the server. Returns an empty list if there are no</p>
 <p class="toc_element">
-  <code><a href="#setIamPolicy">setIamPolicy(resource, body, x__xgafv=None)</a></code></p>
-<p class="firstline">Sets the access control policy on the specified resource. Replaces any existing policy.</p>
+  <code><a href="#setIamPolicy">setIamPolicy(resource=None, body, x__xgafv=None)</a></code></p>
+<p class="firstline">Sets the access control policy on the specified resource. Replaces any</p>
 <p class="toc_element">
-  <code><a href="#testIamPermissions">testIamPermissions(resource, body, x__xgafv=None)</a></code></p>
+  <code><a href="#testIamPermissions">testIamPermissions(resource=None, body, x__xgafv=None)</a></code></p>
 <p class="firstline">Returns permissions that a caller has on the specified resource.</p>
 <h3>Method Details</h3>
 <div class="method">
-    <code class="details" id="acknowledge">acknowledge(subscription, body, x__xgafv=None)</code>
-  <pre>Acknowledges the messages associated with the `ack_ids` in the `AcknowledgeRequest`. The Pub/Sub system can remove the relevant messages from the subscription. Acknowledging a message whose ack deadline has expired may succeed, but such a message may be redelivered later. Acknowledging a message more than once will not result in an error.
+    <code class="details" id="acknowledge">acknowledge(subscription=None, body, x__xgafv=None)</code>
+  <pre>Acknowledges the messages associated with the `ack_ids` in the
+`AcknowledgeRequest`. The Pub/Sub system can remove the relevant messages
+from the subscription.
+
+Acknowledging a message whose ack deadline has expired may succeed,
+but such a message may be redelivered later. Acknowledging a message more
+than once will not result in an error.
 
 Args:
-  subscription: string, The subscription whose message is being acknowledged. (required)
+  subscription: string, The subscription whose message is being acknowledged.
+Format is `projects/{project}/subscriptions/{sub}`. (required)
   body: object, The request body. (required)
     The object takes the form of:
 
 { # Request for the Acknowledge method.
-    "ackIds": [ # The acknowledgment ID for the messages being acknowledged that was returned by the Pub/Sub system in the `Pull` response. Must not be empty.
+    "ackIds": [ # The acknowledgment ID for the messages being acknowledged that was returned
+        # by the Pub/Sub system in the `Pull` response. Must not be empty.
       "A String",
     ],
   }
 
   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 `{}`.
+    { # 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="create">create(name, body, x__xgafv=None)</code>
-  <pre>Creates a subscription to a given topic. If the subscription already exists, returns `ALREADY_EXISTS`. If the corresponding topic doesn't exist, returns `NOT_FOUND`. If the name is not provided in the request, the server will assign a random name for this subscription on the same project as the topic. Note that for REST API requests, you must specify a name.
+    <code class="details" id="create">create(name=None, body, x__xgafv=None)</code>
+  <pre>Creates a subscription to a given topic.
+If the subscription already exists, returns `ALREADY_EXISTS`.
+If the corresponding topic doesn't exist, returns `NOT_FOUND`.
+
+If the name is not provided in the request, the server will assign a random
+name for this subscription on the same project as the topic, conforming
+to the
+[resource name format](https://cloud.google.com/pubsub/docs/overview#names).
+The generated name is populated in the returned Subscription object.
+Note that for REST API requests, you must specify a name in the request.
 
 Args:
-  name: string, The name of the subscription. It must have the format `"projects/{project}/subscriptions/{subscription}"`. `{subscription}` must start with a letter, and contain only letters (`[A-Za-z]`), numbers (`[0-9]`), dashes (`-`), underscores (`_`), periods (`.`), tildes (`~`), plus (`+`) or percent signs (`%`). It must be between 3 and 255 characters in length, and it must not start with `"goog"`. (required)
+  name: string, The name of the subscription. It must have the format
+`"projects/{project}/subscriptions/{subscription}"`. `{subscription}` must
+start with a letter, and contain only letters (`[A-Za-z]`), numbers
+(`[0-9]`), dashes (`-`), underscores (`_`), periods (`.`), tildes (`~`),
+plus (`+`) or percent signs (`%`). It must be between 3 and 255 characters
+in length, and it must not start with `"goog"`. (required)
   body: object, The request body. (required)
     The object takes the form of:
 
 { # A subscription resource.
-  "topic": "A String", # The name of the topic from which this subscription is receiving messages. The value of this field will be `_deleted-topic_` if the topic has been deleted.
-  "ackDeadlineSeconds": 42, # This value is the maximum time after a subscriber receives a message before the subscriber should acknowledge the message. After message delivery but before the ack deadline expires and before the message is acknowledged, it is an outstanding message and will not be delivered again during that time (on a best-effort basis). For pull subscriptions, this value is used as the initial value for the ack deadline. To override this value for a given message, call `ModifyAckDeadline` with the corresponding `ack_id` if using pull. The maximum custom deadline you can specify is 600 seconds (10 minutes). For push delivery, this value is also used to set the request timeout for the call to the push endpoint. If the subscriber never acknowledges the message, the Pub/Sub system will eventually redeliver the message. If this parameter is 0, a default value of 10 seconds is used.
-  "pushConfig": { # Configuration for a push delivery endpoint. # If push delivery is used with this subscription, this field is used to configure it. An empty `pushConfig` signifies that the subscriber will pull and ack messages using API methods.
-    "attributes": { # Endpoint configuration attributes. Every endpoint has a set of API supported attributes that can be used to control different aspects of the message delivery. The currently supported attribute is `x-goog-version`, which you can use to change the format of the push message. This attribute indicates the version of the data expected by the endpoint. This controls the shape of the envelope (i.e. its fields and metadata). The endpoint version is based on the version of the Pub/Sub API. If not present during the `CreateSubscription` call, it will default to the version of the API used to make such call. If not present during a `ModifyPushConfig` call, its value will not be changed. `GetSubscription` calls will always return a valid version, even if the subscription was created without this attribute. The possible values for this attribute are: * `v1beta1`: uses the push format defined in the v1beta1 Pub/Sub API. * `v1` or `v1beta2`: uses the push format defined in the v1 Pub/Sub API.
+  "topic": "A String", # The name of the topic from which this subscription is receiving messages.
+      # Format is `projects/{project}/topics/{topic}`.
+      # The value of this field will be `_deleted-topic_` if the topic has been
+      # deleted.
+  "ackDeadlineSeconds": 42, # This value is the maximum time after a subscriber receives a message
+      # before the subscriber should acknowledge the message. After message
+      # delivery but before the ack deadline expires and before the message is
+      # acknowledged, it is an outstanding message and will not be delivered
+      # again during that time (on a best-effort basis).
+      # 
+      # For pull subscriptions, this value is used as the initial value for the ack
+      # deadline. To override this value for a given message, call
+      # `ModifyAckDeadline` with the corresponding `ack_id` if using
+      # pull.
+      # The minimum custom deadline you can specify is 10 seconds.
+      # The maximum custom deadline you can specify is 600 seconds (10 minutes).
+      # If this parameter is 0, a default value of 10 seconds is used.
+      # 
+      # For push delivery, this value is also used to set the request timeout for
+      # the call to the push endpoint.
+      # 
+      # If the subscriber never acknowledges the message, the Pub/Sub
+      # system will eventually redeliver the message.
+  "pushConfig": { # Configuration for a push delivery endpoint. # If push delivery is used with this subscription, this field is
+      # used to configure it. An empty `pushConfig` signifies that the subscriber
+      # will pull and ack messages using API methods.
+    "attributes": { # Endpoint configuration attributes.
+        #
+        # Every endpoint has a set of API supported attributes that can be used to
+        # control different aspects of the message delivery.
+        #
+        # The currently supported attribute is `x-goog-version`, which you can
+        # use to change the format of the push message. This attribute
+        # indicates the version of the data expected by the endpoint. This
+        # controls the shape of the envelope (i.e. its fields and metadata).
+        # The endpoint version is based on the version of the Pub/Sub
+        # API.
+        #
+        # If not present during the `CreateSubscription` call, it will default to
+        # the version of the API used to make such call. If not present during a
+        # `ModifyPushConfig` call, its value will not be changed. `GetSubscription`
+        # calls will always return a valid version, even if the subscription was
+        # created without this attribute.
+        #
+        # The possible values for this attribute are:
+        #
+        # * `v1beta1`: uses the push format defined in the v1beta1 Pub/Sub API.
+        # * `v1` or `v1beta2`: uses the push format defined in the v1 Pub/Sub API.
       "a_key": "A String",
     },
-    "pushEndpoint": "A String", # A URL locating the endpoint to which messages should be pushed. For example, a Webhook endpoint might use "https://example.com/push".
+    "pushEndpoint": "A String", # A URL locating the endpoint to which messages should be pushed.
+        # For example, a Webhook endpoint might use "https://example.com/push".
   },
-  "name": "A String", # The name of the subscription. It must have the format `"projects/{project}/subscriptions/{subscription}"`. `{subscription}` must start with a letter, and contain only letters (`[A-Za-z]`), numbers (`[0-9]`), dashes (`-`), underscores (`_`), periods (`.`), tildes (`~`), plus (`+`) or percent signs (`%`). It must be between 3 and 255 characters in length, and it must not start with `"goog"`.
+  "name": "A String", # The name of the subscription. It must have the format
+      # `"projects/{project}/subscriptions/{subscription}"`. `{subscription}` must
+      # start with a letter, and contain only letters (`[A-Za-z]`), numbers
+      # (`[0-9]`), dashes (`-`), underscores (`_`), periods (`.`), tildes (`~`),
+      # plus (`+`) or percent signs (`%`). It must be between 3 and 255 characters
+      # in length, and it must not start with `"goog"`.
 }
 
   x__xgafv: string, V1 error format.
+    Allowed values
+      1 - v1 error format
+      2 - v2 error format
 
 Returns:
   An object of the form:
 
     { # A subscription resource.
-    "topic": "A String", # The name of the topic from which this subscription is receiving messages. The value of this field will be `_deleted-topic_` if the topic has been deleted.
-    "ackDeadlineSeconds": 42, # This value is the maximum time after a subscriber receives a message before the subscriber should acknowledge the message. After message delivery but before the ack deadline expires and before the message is acknowledged, it is an outstanding message and will not be delivered again during that time (on a best-effort basis). For pull subscriptions, this value is used as the initial value for the ack deadline. To override this value for a given message, call `ModifyAckDeadline` with the corresponding `ack_id` if using pull. The maximum custom deadline you can specify is 600 seconds (10 minutes). For push delivery, this value is also used to set the request timeout for the call to the push endpoint. If the subscriber never acknowledges the message, the Pub/Sub system will eventually redeliver the message. If this parameter is 0, a default value of 10 seconds is used.
-    "pushConfig": { # Configuration for a push delivery endpoint. # If push delivery is used with this subscription, this field is used to configure it. An empty `pushConfig` signifies that the subscriber will pull and ack messages using API methods.
-      "attributes": { # Endpoint configuration attributes. Every endpoint has a set of API supported attributes that can be used to control different aspects of the message delivery. The currently supported attribute is `x-goog-version`, which you can use to change the format of the push message. This attribute indicates the version of the data expected by the endpoint. This controls the shape of the envelope (i.e. its fields and metadata). The endpoint version is based on the version of the Pub/Sub API. If not present during the `CreateSubscription` call, it will default to the version of the API used to make such call. If not present during a `ModifyPushConfig` call, its value will not be changed. `GetSubscription` calls will always return a valid version, even if the subscription was created without this attribute. The possible values for this attribute are: * `v1beta1`: uses the push format defined in the v1beta1 Pub/Sub API. * `v1` or `v1beta2`: uses the push format defined in the v1 Pub/Sub API.
+    "topic": "A String", # The name of the topic from which this subscription is receiving messages.
+        # Format is `projects/{project}/topics/{topic}`.
+        # The value of this field will be `_deleted-topic_` if the topic has been
+        # deleted.
+    "ackDeadlineSeconds": 42, # This value is the maximum time after a subscriber receives a message
+        # before the subscriber should acknowledge the message. After message
+        # delivery but before the ack deadline expires and before the message is
+        # acknowledged, it is an outstanding message and will not be delivered
+        # again during that time (on a best-effort basis).
+        #
+        # For pull subscriptions, this value is used as the initial value for the ack
+        # deadline. To override this value for a given message, call
+        # `ModifyAckDeadline` with the corresponding `ack_id` if using
+        # pull.
+        # The minimum custom deadline you can specify is 10 seconds.
+        # The maximum custom deadline you can specify is 600 seconds (10 minutes).
+        # If this parameter is 0, a default value of 10 seconds is used.
+        #
+        # For push delivery, this value is also used to set the request timeout for
+        # the call to the push endpoint.
+        #
+        # If the subscriber never acknowledges the message, the Pub/Sub
+        # system will eventually redeliver the message.
+    "pushConfig": { # Configuration for a push delivery endpoint. # If push delivery is used with this subscription, this field is
+        # used to configure it. An empty `pushConfig` signifies that the subscriber
+        # will pull and ack messages using API methods.
+      "attributes": { # Endpoint configuration attributes.
+          #
+          # Every endpoint has a set of API supported attributes that can be used to
+          # control different aspects of the message delivery.
+          #
+          # The currently supported attribute is `x-goog-version`, which you can
+          # use to change the format of the push message. This attribute
+          # indicates the version of the data expected by the endpoint. This
+          # controls the shape of the envelope (i.e. its fields and metadata).
+          # The endpoint version is based on the version of the Pub/Sub
+          # API.
+          #
+          # If not present during the `CreateSubscription` call, it will default to
+          # the version of the API used to make such call. If not present during a
+          # `ModifyPushConfig` call, its value will not be changed. `GetSubscription`
+          # calls will always return a valid version, even if the subscription was
+          # created without this attribute.
+          #
+          # The possible values for this attribute are:
+          #
+          # * `v1beta1`: uses the push format defined in the v1beta1 Pub/Sub API.
+          # * `v1` or `v1beta2`: uses the push format defined in the v1 Pub/Sub API.
         "a_key": "A String",
       },
-      "pushEndpoint": "A String", # A URL locating the endpoint to which messages should be pushed. For example, a Webhook endpoint might use "https://example.com/push".
+      "pushEndpoint": "A String", # A URL locating the endpoint to which messages should be pushed.
+          # For example, a Webhook endpoint might use "https://example.com/push".
     },
-    "name": "A String", # The name of the subscription. It must have the format `"projects/{project}/subscriptions/{subscription}"`. `{subscription}` must start with a letter, and contain only letters (`[A-Za-z]`), numbers (`[0-9]`), dashes (`-`), underscores (`_`), periods (`.`), tildes (`~`), plus (`+`) or percent signs (`%`). It must be between 3 and 255 characters in length, and it must not start with `"goog"`.
+    "name": "A String", # The name of the subscription. It must have the format
+        # `"projects/{project}/subscriptions/{subscription}"`. `{subscription}` must
+        # start with a letter, and contain only letters (`[A-Za-z]`), numbers
+        # (`[0-9]`), dashes (`-`), underscores (`_`), periods (`.`), tildes (`~`),
+        # plus (`+`) or percent signs (`%`). It must be between 3 and 255 characters
+        # in length, and it must not start with `"goog"`.
   }</pre>
 </div>
 
 <div class="method">
-    <code class="details" id="delete">delete(subscription, x__xgafv=None)</code>
-  <pre>Deletes an existing subscription. All messages retained in the subscription are immediately dropped. Calls to `Pull` after deletion will return `NOT_FOUND`. After a subscription is deleted, a new one may be created with the same name, but the new one has no association with the old subscription or its topic unless the same topic is specified.
+    <code class="details" id="delete">delete(subscription=None, x__xgafv=None)</code>
+  <pre>Deletes an existing subscription. All messages retained in the subscription
+are immediately dropped. Calls to `Pull` after deletion will return
+`NOT_FOUND`. After a subscription is deleted, a new one may be created with
+the same name, but the new one has no association with the old
+subscription or its topic unless the same topic is specified.
 
 Args:
-  subscription: string, The subscription to delete. (required)
+  subscription: string, The subscription to delete.
+Format is `projects/{project}/subscriptions/{sub}`. (required)
   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 `{}`.
+    { # 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(subscription, x__xgafv=None)</code>
+    <code class="details" id="get">get(subscription=None, x__xgafv=None)</code>
   <pre>Gets the configuration details of a subscription.
 
 Args:
-  subscription: string, The name of the subscription to get. (required)
+  subscription: string, The name of the subscription to get.
+Format is `projects/{project}/subscriptions/{sub}`. (required)
   x__xgafv: string, V1 error format.
+    Allowed values
+      1 - v1 error format
+      2 - v2 error format
 
 Returns:
   An object of the form:
 
     { # A subscription resource.
-    "topic": "A String", # The name of the topic from which this subscription is receiving messages. The value of this field will be `_deleted-topic_` if the topic has been deleted.
-    "ackDeadlineSeconds": 42, # This value is the maximum time after a subscriber receives a message before the subscriber should acknowledge the message. After message delivery but before the ack deadline expires and before the message is acknowledged, it is an outstanding message and will not be delivered again during that time (on a best-effort basis). For pull subscriptions, this value is used as the initial value for the ack deadline. To override this value for a given message, call `ModifyAckDeadline` with the corresponding `ack_id` if using pull. The maximum custom deadline you can specify is 600 seconds (10 minutes). For push delivery, this value is also used to set the request timeout for the call to the push endpoint. If the subscriber never acknowledges the message, the Pub/Sub system will eventually redeliver the message. If this parameter is 0, a default value of 10 seconds is used.
-    "pushConfig": { # Configuration for a push delivery endpoint. # If push delivery is used with this subscription, this field is used to configure it. An empty `pushConfig` signifies that the subscriber will pull and ack messages using API methods.
-      "attributes": { # Endpoint configuration attributes. Every endpoint has a set of API supported attributes that can be used to control different aspects of the message delivery. The currently supported attribute is `x-goog-version`, which you can use to change the format of the push message. This attribute indicates the version of the data expected by the endpoint. This controls the shape of the envelope (i.e. its fields and metadata). The endpoint version is based on the version of the Pub/Sub API. If not present during the `CreateSubscription` call, it will default to the version of the API used to make such call. If not present during a `ModifyPushConfig` call, its value will not be changed. `GetSubscription` calls will always return a valid version, even if the subscription was created without this attribute. The possible values for this attribute are: * `v1beta1`: uses the push format defined in the v1beta1 Pub/Sub API. * `v1` or `v1beta2`: uses the push format defined in the v1 Pub/Sub API.
+    "topic": "A String", # The name of the topic from which this subscription is receiving messages.
+        # Format is `projects/{project}/topics/{topic}`.
+        # The value of this field will be `_deleted-topic_` if the topic has been
+        # deleted.
+    "ackDeadlineSeconds": 42, # This value is the maximum time after a subscriber receives a message
+        # before the subscriber should acknowledge the message. After message
+        # delivery but before the ack deadline expires and before the message is
+        # acknowledged, it is an outstanding message and will not be delivered
+        # again during that time (on a best-effort basis).
+        #
+        # For pull subscriptions, this value is used as the initial value for the ack
+        # deadline. To override this value for a given message, call
+        # `ModifyAckDeadline` with the corresponding `ack_id` if using
+        # pull.
+        # The minimum custom deadline you can specify is 10 seconds.
+        # The maximum custom deadline you can specify is 600 seconds (10 minutes).
+        # If this parameter is 0, a default value of 10 seconds is used.
+        #
+        # For push delivery, this value is also used to set the request timeout for
+        # the call to the push endpoint.
+        #
+        # If the subscriber never acknowledges the message, the Pub/Sub
+        # system will eventually redeliver the message.
+    "pushConfig": { # Configuration for a push delivery endpoint. # If push delivery is used with this subscription, this field is
+        # used to configure it. An empty `pushConfig` signifies that the subscriber
+        # will pull and ack messages using API methods.
+      "attributes": { # Endpoint configuration attributes.
+          #
+          # Every endpoint has a set of API supported attributes that can be used to
+          # control different aspects of the message delivery.
+          #
+          # The currently supported attribute is `x-goog-version`, which you can
+          # use to change the format of the push message. This attribute
+          # indicates the version of the data expected by the endpoint. This
+          # controls the shape of the envelope (i.e. its fields and metadata).
+          # The endpoint version is based on the version of the Pub/Sub
+          # API.
+          #
+          # If not present during the `CreateSubscription` call, it will default to
+          # the version of the API used to make such call. If not present during a
+          # `ModifyPushConfig` call, its value will not be changed. `GetSubscription`
+          # calls will always return a valid version, even if the subscription was
+          # created without this attribute.
+          #
+          # The possible values for this attribute are:
+          #
+          # * `v1beta1`: uses the push format defined in the v1beta1 Pub/Sub API.
+          # * `v1` or `v1beta2`: uses the push format defined in the v1 Pub/Sub API.
         "a_key": "A String",
       },
-      "pushEndpoint": "A String", # A URL locating the endpoint to which messages should be pushed. For example, a Webhook endpoint might use "https://example.com/push".
+      "pushEndpoint": "A String", # A URL locating the endpoint to which messages should be pushed.
+          # For example, a Webhook endpoint might use "https://example.com/push".
     },
-    "name": "A String", # The name of the subscription. It must have the format `"projects/{project}/subscriptions/{subscription}"`. `{subscription}` must start with a letter, and contain only letters (`[A-Za-z]`), numbers (`[0-9]`), dashes (`-`), underscores (`_`), periods (`.`), tildes (`~`), plus (`+`) or percent signs (`%`). It must be between 3 and 255 characters in length, and it must not start with `"goog"`.
+    "name": "A String", # The name of the subscription. It must have the format
+        # `"projects/{project}/subscriptions/{subscription}"`. `{subscription}` must
+        # start with a letter, and contain only letters (`[A-Za-z]`), numbers
+        # (`[0-9]`), dashes (`-`), underscores (`_`), periods (`.`), tildes (`~`),
+        # plus (`+`) or percent signs (`%`). It must be between 3 and 255 characters
+        # in length, and it must not start with `"goog"`.
   }</pre>
 </div>
 
 <div class="method">
-    <code class="details" id="getIamPolicy">getIamPolicy(resource, x__xgafv=None)</code>
-  <pre>Gets the access control policy for a resource. Returns an empty policy if the resource exists and does not have a policy set.
+    <code class="details" id="getIamPolicy">getIamPolicy(resource=None, x__xgafv=None)</code>
+  <pre>Gets the access control policy for a resource.
+Returns an empty policy if the resource exists and does not have a policy
+set.
 
 Args:
-  resource: string, REQUIRED: The resource for which the policy is being requested. `resource` is usually specified as a path. For example, a Project resource is specified as `projects/{project}`. (required)
+  resource: string, REQUIRED: The resource for which the policy is being requested.
+`resource` is usually specified as a path. For example, a Project
+resource is specified as `projects/{project}`. (required)
   x__xgafv: string, V1 error format.
+    Allowed values
+      1 - v1 error format
+      2 - v2 error format
 
 Returns:
   An object of the form:
 
-    { # Defines an Identity and Access Management (IAM) policy. It is used to specify access control policies for Cloud Platform resources. A `Policy` consists of a list of `bindings`. A `Binding` binds a list of `members` to a `role`, where the members can be user accounts, Google groups, Google domains, and service accounts. A `role` is a named list of permissions defined by IAM. **Example** { "bindings": [ { "role": "roles/owner", "members": [ "user:mike@example.com", "group:admins@example.com", "domain:google.com", "serviceAccount:my-other-app@appspot.gserviceaccount.com", ] }, { "role": "roles/viewer", "members": ["user:sean@example.com"] } ] } For a description of IAM and its features, see the [IAM developer's guide](https://cloud.google.com/iam).
-    "bindings": [ # Associates a list of `members` to a `role`. Multiple `bindings` must not be specified for the same `role`. `bindings` with no members will result in an error.
+    { # Defines an Identity and Access Management (IAM) policy. It is used to
+      # specify access control policies for Cloud Platform resources.
+      #
+      #
+      # A `Policy` consists of a list of `bindings`. A `Binding` binds a list of
+      # `members` to a `role`, where the members can be user accounts, Google groups,
+      # Google domains, and service accounts. A `role` is a named list of permissions
+      # defined by IAM.
+      #
+      # **Example**
+      #
+      #     {
+      #       "bindings": [
+      #         {
+      #           "role": "roles/owner",
+      #           "members": [
+      #             "user:mike@example.com",
+      #             "group:admins@example.com",
+      #             "domain:google.com",
+      #             "serviceAccount:my-other-app@appspot.gserviceaccount.com",
+      #           ]
+      #         },
+      #         {
+      #           "role": "roles/viewer",
+      #           "members": ["user:sean@example.com"]
+      #         }
+      #       ]
+      #     }
+      #
+      # For a description of IAM and its features, see the
+      # [IAM developer's guide](https://cloud.google.com/iam).
+    "bindings": [ # Associates a list of `members` to a `role`.
+        # Multiple `bindings` must not be specified for the same `role`.
+        # `bindings` with no members will result in an error.
       { # Associates `members` with a `role`.
-        "role": "A String", # Role that is assigned to `members`. For example, `roles/viewer`, `roles/editor`, or `roles/owner`. Required
-        "members": [ # Specifies the identities requesting access for a Cloud Platform resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@gmail.com` or `joe@example.com`. * `serviceAccount:{emailid}`: An email address that represents a service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: A Google Apps domain name that represents all the users of that domain. For example, `google.com` or `example.com`.
+        "role": "A String", # Role that is assigned to `members`.
+            # For example, `roles/viewer`, `roles/editor`, or `roles/owner`.
+            # Required
+        "members": [ # Specifies the identities requesting access for a Cloud Platform resource.
+            # `members` can have the following values:
+            #
+            # * `allUsers`: A special identifier that represents anyone who is
+            #    on the internet; with or without a Google account.
+            #
+            # * `allAuthenticatedUsers`: A special identifier that represents anyone
+            #    who is authenticated with a Google account or a service account.
+            #
+            # * `user:{emailid}`: An email address that represents a specific Google
+            #    account. For example, `alice@gmail.com` or `joe@example.com`.
+            #
+            #
+            # * `serviceAccount:{emailid}`: An email address that represents a service
+            #    account. For example, `my-other-app@appspot.gserviceaccount.com`.
+            #
+            # * `group:{emailid}`: An email address that represents a Google group.
+            #    For example, `admins@example.com`.
+            #
+            # * `domain:{domain}`: A Google Apps domain name that represents all the
+            #    users of that domain. For example, `google.com` or `example.com`.
+            #
           "A String",
         ],
       },
     ],
+    "etag": "A String", # `etag` is used for optimistic concurrency control as a way to help
+        # prevent simultaneous updates of a policy from overwriting each other.
+        # It is strongly suggested that systems make use of the `etag` in the
+        # read-modify-write cycle to perform policy updates in order to avoid race
+        # conditions: An `etag` is returned in the response to `getIamPolicy`, and
+        # systems are expected to put that etag in the request to `setIamPolicy` to
+        # ensure that their change will be applied to the same version of the policy.
+        #
+        # If no `etag` is provided in the call to `setIamPolicy`, then the existing
+        # policy is overwritten blindly.
     "version": 42, # Version of the `Policy`. The default version is 0.
-    "etag": "A String", # `etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. If no `etag` is provided in the call to `setIamPolicy`, then the existing policy is overwritten blindly.
   }</pre>
 </div>
 
 <div class="method">
-    <code class="details" id="list">list(project, pageSize=None, pageToken=None, x__xgafv=None)</code>
+    <code class="details" id="list">list(project=None, pageSize=None, pageToken=None, x__xgafv=None)</code>
   <pre>Lists matching subscriptions.
 
 Args:
-  project: string, The name of the cloud project that subscriptions belong to. (required)
+  project: string, The name of the cloud project that subscriptions belong to.
+Format is `projects/{project}`. (required)
   pageSize: integer, Maximum number of subscriptions to return.
-  pageToken: string, The value returned by the last `ListSubscriptionsResponse`; indicates that this is a continuation of a prior `ListSubscriptions` call, and that the system should return the next page of data.
+  pageToken: string, The value returned by the last `ListSubscriptionsResponse`; indicates that
+this is a continuation of a prior `ListSubscriptions` call, and that the
+system should return the next page of data.
   x__xgafv: string, V1 error format.
+    Allowed values
+      1 - v1 error format
+      2 - v2 error format
 
 Returns:
   An object of the form:
 
     { # Response for the `ListSubscriptions` method.
-    "nextPageToken": "A String", # If not empty, indicates that there may be more subscriptions that match the request; this value should be passed in a new `ListSubscriptionsRequest` to get more subscriptions.
+    "nextPageToken": "A String", # If not empty, indicates that there may be more subscriptions that match
+        # the request; this value should be passed in a new
+        # `ListSubscriptionsRequest` to get more subscriptions.
     "subscriptions": [ # The subscriptions that match the request.
       { # A subscription resource.
-        "topic": "A String", # The name of the topic from which this subscription is receiving messages. The value of this field will be `_deleted-topic_` if the topic has been deleted.
-        "ackDeadlineSeconds": 42, # This value is the maximum time after a subscriber receives a message before the subscriber should acknowledge the message. After message delivery but before the ack deadline expires and before the message is acknowledged, it is an outstanding message and will not be delivered again during that time (on a best-effort basis). For pull subscriptions, this value is used as the initial value for the ack deadline. To override this value for a given message, call `ModifyAckDeadline` with the corresponding `ack_id` if using pull. The maximum custom deadline you can specify is 600 seconds (10 minutes). For push delivery, this value is also used to set the request timeout for the call to the push endpoint. If the subscriber never acknowledges the message, the Pub/Sub system will eventually redeliver the message. If this parameter is 0, a default value of 10 seconds is used.
-        "pushConfig": { # Configuration for a push delivery endpoint. # If push delivery is used with this subscription, this field is used to configure it. An empty `pushConfig` signifies that the subscriber will pull and ack messages using API methods.
-          "attributes": { # Endpoint configuration attributes. Every endpoint has a set of API supported attributes that can be used to control different aspects of the message delivery. The currently supported attribute is `x-goog-version`, which you can use to change the format of the push message. This attribute indicates the version of the data expected by the endpoint. This controls the shape of the envelope (i.e. its fields and metadata). The endpoint version is based on the version of the Pub/Sub API. If not present during the `CreateSubscription` call, it will default to the version of the API used to make such call. If not present during a `ModifyPushConfig` call, its value will not be changed. `GetSubscription` calls will always return a valid version, even if the subscription was created without this attribute. The possible values for this attribute are: * `v1beta1`: uses the push format defined in the v1beta1 Pub/Sub API. * `v1` or `v1beta2`: uses the push format defined in the v1 Pub/Sub API.
+        "topic": "A String", # The name of the topic from which this subscription is receiving messages.
+            # Format is `projects/{project}/topics/{topic}`.
+            # The value of this field will be `_deleted-topic_` if the topic has been
+            # deleted.
+        "ackDeadlineSeconds": 42, # This value is the maximum time after a subscriber receives a message
+            # before the subscriber should acknowledge the message. After message
+            # delivery but before the ack deadline expires and before the message is
+            # acknowledged, it is an outstanding message and will not be delivered
+            # again during that time (on a best-effort basis).
+            #
+            # For pull subscriptions, this value is used as the initial value for the ack
+            # deadline. To override this value for a given message, call
+            # `ModifyAckDeadline` with the corresponding `ack_id` if using
+            # pull.
+            # The minimum custom deadline you can specify is 10 seconds.
+            # The maximum custom deadline you can specify is 600 seconds (10 minutes).
+            # If this parameter is 0, a default value of 10 seconds is used.
+            #
+            # For push delivery, this value is also used to set the request timeout for
+            # the call to the push endpoint.
+            #
+            # If the subscriber never acknowledges the message, the Pub/Sub
+            # system will eventually redeliver the message.
+        "pushConfig": { # Configuration for a push delivery endpoint. # If push delivery is used with this subscription, this field is
+            # used to configure it. An empty `pushConfig` signifies that the subscriber
+            # will pull and ack messages using API methods.
+          "attributes": { # Endpoint configuration attributes.
+              #
+              # Every endpoint has a set of API supported attributes that can be used to
+              # control different aspects of the message delivery.
+              #
+              # The currently supported attribute is `x-goog-version`, which you can
+              # use to change the format of the push message. This attribute
+              # indicates the version of the data expected by the endpoint. This
+              # controls the shape of the envelope (i.e. its fields and metadata).
+              # The endpoint version is based on the version of the Pub/Sub
+              # API.
+              #
+              # If not present during the `CreateSubscription` call, it will default to
+              # the version of the API used to make such call. If not present during a
+              # `ModifyPushConfig` call, its value will not be changed. `GetSubscription`
+              # calls will always return a valid version, even if the subscription was
+              # created without this attribute.
+              #
+              # The possible values for this attribute are:
+              #
+              # * `v1beta1`: uses the push format defined in the v1beta1 Pub/Sub API.
+              # * `v1` or `v1beta2`: uses the push format defined in the v1 Pub/Sub API.
             "a_key": "A String",
           },
-          "pushEndpoint": "A String", # A URL locating the endpoint to which messages should be pushed. For example, a Webhook endpoint might use "https://example.com/push".
+          "pushEndpoint": "A String", # A URL locating the endpoint to which messages should be pushed.
+              # For example, a Webhook endpoint might use "https://example.com/push".
         },
-        "name": "A String", # The name of the subscription. It must have the format `"projects/{project}/subscriptions/{subscription}"`. `{subscription}` must start with a letter, and contain only letters (`[A-Za-z]`), numbers (`[0-9]`), dashes (`-`), underscores (`_`), periods (`.`), tildes (`~`), plus (`+`) or percent signs (`%`). It must be between 3 and 255 characters in length, and it must not start with `"goog"`.
+        "name": "A String", # The name of the subscription. It must have the format
+            # `"projects/{project}/subscriptions/{subscription}"`. `{subscription}` must
+            # start with a letter, and contain only letters (`[A-Za-z]`), numbers
+            # (`[0-9]`), dashes (`-`), underscores (`_`), periods (`.`), tildes (`~`),
+            # plus (`+`) or percent signs (`%`). It must be between 3 and 255 characters
+            # in length, and it must not start with `"goog"`.
       },
     ],
   }</pre>
@@ -284,87 +619,175 @@
 </div>
 
 <div class="method">
-    <code class="details" id="modifyAckDeadline">modifyAckDeadline(subscription, body, x__xgafv=None)</code>
-  <pre>Modifies the ack deadline for a specific message. This method is useful to indicate that more time is needed to process a message by the subscriber, or to make the message available for redelivery if the processing was interrupted. Note that this does not modify the subscription-level `ackDeadlineSeconds` used for subsequent messages.
+    <code class="details" id="modifyAckDeadline">modifyAckDeadline(subscription=None, body, x__xgafv=None)</code>
+  <pre>Modifies the ack deadline for a specific message. This method is useful
+to indicate that more time is needed to process a message by the
+subscriber, or to make the message available for redelivery if the
+processing was interrupted. Note that this does not modify the
+subscription-level `ackDeadlineSeconds` used for subsequent messages.
 
 Args:
-  subscription: string, The name of the subscription. (required)
+  subscription: string, The name of the subscription.
+Format is `projects/{project}/subscriptions/{sub}`. (required)
   body: object, The request body. (required)
     The object takes the form of:
 
 { # Request for the ModifyAckDeadline method.
-    "ackDeadlineSeconds": 42, # The new ack deadline with respect to the time this request was sent to the Pub/Sub system. Must be >= 0. For example, if the value is 10, the new ack deadline will expire 10 seconds after the `ModifyAckDeadline` call was made. Specifying zero may immediately make the message available for another pull request.
+    "ackDeadlineSeconds": 42, # The new ack deadline with respect to the time this request was sent to
+        # the Pub/Sub system. For example, if the value is 10, the new
+        # ack deadline will expire 10 seconds after the `ModifyAckDeadline` call
+        # was made. Specifying zero may immediately make the message available for
+        # another pull request.
+        # The minimum deadline you can specify is 0 seconds.
+        # The maximum deadline you can specify is 600 seconds (10 minutes).
     "ackIds": [ # List of acknowledgment IDs.
       "A String",
     ],
   }
 
   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 `{}`.
+    { # 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="modifyPushConfig">modifyPushConfig(subscription, body, x__xgafv=None)</code>
-  <pre>Modifies the `PushConfig` for a specified subscription. This may be used to change a push subscription to a pull one (signified by an empty `PushConfig`) or vice versa, or change the endpoint URL and other attributes of a push subscription. Messages will accumulate for delivery continuously through the call regardless of changes to the `PushConfig`.
+    <code class="details" id="modifyPushConfig">modifyPushConfig(subscription=None, body, x__xgafv=None)</code>
+  <pre>Modifies the `PushConfig` for a specified subscription.
+
+This may be used to change a push subscription to a pull one (signified by
+an empty `PushConfig`) or vice versa, or change the endpoint URL and other
+attributes of a push subscription. Messages will accumulate for delivery
+continuously through the call regardless of changes to the `PushConfig`.
 
 Args:
-  subscription: string, The name of the subscription. (required)
+  subscription: string, The name of the subscription.
+Format is `projects/{project}/subscriptions/{sub}`. (required)
   body: object, The request body. (required)
     The object takes the form of:
 
 { # Request for the ModifyPushConfig method.
-    "pushConfig": { # Configuration for a push delivery endpoint. # The push configuration for future deliveries. An empty `pushConfig` indicates that the Pub/Sub system should stop pushing messages from the given subscription and allow messages to be pulled and acknowledged - effectively pausing the subscription if `Pull` is not called.
-      "attributes": { # Endpoint configuration attributes. Every endpoint has a set of API supported attributes that can be used to control different aspects of the message delivery. The currently supported attribute is `x-goog-version`, which you can use to change the format of the push message. This attribute indicates the version of the data expected by the endpoint. This controls the shape of the envelope (i.e. its fields and metadata). The endpoint version is based on the version of the Pub/Sub API. If not present during the `CreateSubscription` call, it will default to the version of the API used to make such call. If not present during a `ModifyPushConfig` call, its value will not be changed. `GetSubscription` calls will always return a valid version, even if the subscription was created without this attribute. The possible values for this attribute are: * `v1beta1`: uses the push format defined in the v1beta1 Pub/Sub API. * `v1` or `v1beta2`: uses the push format defined in the v1 Pub/Sub API.
+    "pushConfig": { # Configuration for a push delivery endpoint. # The push configuration for future deliveries.
+        # 
+        # An empty `pushConfig` indicates that the Pub/Sub system should
+        # stop pushing messages from the given subscription and allow
+        # messages to be pulled and acknowledged - effectively pausing
+        # the subscription if `Pull` is not called.
+      "attributes": { # Endpoint configuration attributes.
+          #
+          # Every endpoint has a set of API supported attributes that can be used to
+          # control different aspects of the message delivery.
+          #
+          # The currently supported attribute is `x-goog-version`, which you can
+          # use to change the format of the push message. This attribute
+          # indicates the version of the data expected by the endpoint. This
+          # controls the shape of the envelope (i.e. its fields and metadata).
+          # The endpoint version is based on the version of the Pub/Sub
+          # API.
+          #
+          # If not present during the `CreateSubscription` call, it will default to
+          # the version of the API used to make such call. If not present during a
+          # `ModifyPushConfig` call, its value will not be changed. `GetSubscription`
+          # calls will always return a valid version, even if the subscription was
+          # created without this attribute.
+          #
+          # The possible values for this attribute are:
+          #
+          # * `v1beta1`: uses the push format defined in the v1beta1 Pub/Sub API.
+          # * `v1` or `v1beta2`: uses the push format defined in the v1 Pub/Sub API.
         "a_key": "A String",
       },
-      "pushEndpoint": "A String", # A URL locating the endpoint to which messages should be pushed. For example, a Webhook endpoint might use "https://example.com/push".
+      "pushEndpoint": "A String", # A URL locating the endpoint to which messages should be pushed.
+          # For example, a Webhook endpoint might use "https://example.com/push".
     },
   }
 
   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 `{}`.
+    { # 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="pull">pull(subscription, body, x__xgafv=None)</code>
-  <pre>Pulls messages from the server. Returns an empty list if there are no messages available in the backlog. The server may return `UNAVAILABLE` if there are too many concurrent pull requests pending for the given subscription.
+    <code class="details" id="pull">pull(subscription=None, body, x__xgafv=None)</code>
+  <pre>Pulls messages from the server. Returns an empty list if there are no
+messages available in the backlog. The server may return `UNAVAILABLE` if
+there are too many concurrent pull requests pending for the given
+subscription.
 
 Args:
-  subscription: string, The subscription from which messages should be pulled. (required)
+  subscription: string, The subscription from which messages should be pulled.
+Format is `projects/{project}/subscriptions/{sub}`. (required)
   body: object, The request body. (required)
     The object takes the form of:
 
 { # Request for the `Pull` method.
-    "returnImmediately": True or False, # If this is specified as true the system will respond immediately even if it is not able to return a message in the `Pull` response. Otherwise the system is allowed to wait until at least one message is available rather than returning no messages. The client may cancel the request if it does not wish to wait any longer for the response.
-    "maxMessages": 42, # The maximum number of messages returned for this request. The Pub/Sub system may return fewer than the number specified.
+    "returnImmediately": True or False, # If this field set to true, the system will respond immediately even if
+        # it there are no messages available to return in the `Pull` response.
+        # Otherwise, the system may wait (for a bounded amount of time) until at
+        # least one message is available, rather than returning no messages. The
+        # client may cancel the request if it does not wish to wait any longer for
+        # the response.
+    "maxMessages": 42, # The maximum number of messages returned for this request. The Pub/Sub
+        # system may return fewer than the number specified.
   }
 
   x__xgafv: string, V1 error format.
+    Allowed values
+      1 - v1 error format
+      2 - v2 error format
 
 Returns:
   An object of the form:
 
     { # Response for the `Pull` method.
-    "receivedMessages": [ # Received Pub/Sub messages. The Pub/Sub system will return zero messages if there are no more available in the backlog. The Pub/Sub system may return fewer than the `maxMessages` requested even if there are more messages available in the backlog.
+    "receivedMessages": [ # Received Pub/Sub messages. The Pub/Sub system will return zero messages if
+        # there are no more available in the backlog. The Pub/Sub system may return
+        # fewer than the `maxMessages` requested even if there are more messages
+        # available in the backlog.
       { # A message and its corresponding acknowledgment ID.
         "ackId": "A String", # This ID can be used to acknowledge the received message.
-        "message": { # A message data and its attributes. The message payload must not be empty; it must contain either a non-empty data field, or at least one attribute. # The message.
+        "message": { # A message data and its attributes. The message payload must not be empty; # The message.
+            # it must contain either a non-empty data field, or at least one attribute.
           "attributes": { # Optional attributes for this message.
             "a_key": "A String",
           },
-          "data": "A String", # The message payload. For JSON requests, the value of this field must be [base64-encoded](https://tools.ietf.org/html/rfc4648).
-          "publishTime": "A String", # The time at which the message was published, populated by the server when it receives the `Publish` call. It must not be populated by the publisher in a `Publish` call.
-          "messageId": "A String", # ID of this message, assigned by the server when the message is published. Guaranteed to be unique within the topic. This value may be read by a subscriber that receives a `PubsubMessage` via a `Pull` call or a push delivery. It must not be populated by the publisher in a `Publish` call.
+          "data": "A String", # The message payload.
+          "publishTime": "A String", # The time at which the message was published, populated by the server when
+              # it receives the `Publish` call. It must not be populated by the
+              # publisher in a `Publish` call.
+          "messageId": "A String", # ID of this message, assigned by the server when the message is published.
+              # Guaranteed to be unique within the topic. This value may be read by a
+              # subscriber that receives a `PubsubMessage` via a `Pull` call or a push
+              # delivery. It must not be populated by the publisher in a `Publish` call.
         },
       },
     ],
@@ -372,70 +795,218 @@
 </div>
 
 <div class="method">
-    <code class="details" id="setIamPolicy">setIamPolicy(resource, body, x__xgafv=None)</code>
-  <pre>Sets the access control policy on the specified resource. Replaces any existing policy.
+    <code class="details" id="setIamPolicy">setIamPolicy(resource=None, body, x__xgafv=None)</code>
+  <pre>Sets the access control policy on the specified resource. Replaces any
+existing policy.
 
 Args:
-  resource: string, REQUIRED: The resource for which the policy is being specified. `resource` is usually specified as a path. For example, a Project resource is specified as `projects/{project}`. (required)
+  resource: string, REQUIRED: The resource for which the policy is being specified.
+`resource` is usually specified as a path. For example, a Project
+resource is specified as `projects/{project}`. (required)
   body: object, The request body. (required)
     The object takes the form of:
 
 { # Request message for `SetIamPolicy` method.
-    "policy": { # Defines an Identity and Access Management (IAM) policy. It is used to specify access control policies for Cloud Platform resources. A `Policy` consists of a list of `bindings`. A `Binding` binds a list of `members` to a `role`, where the members can be user accounts, Google groups, Google domains, and service accounts. A `role` is a named list of permissions defined by IAM. **Example** { "bindings": [ { "role": "roles/owner", "members": [ "user:mike@example.com", "group:admins@example.com", "domain:google.com", "serviceAccount:my-other-app@appspot.gserviceaccount.com", ] }, { "role": "roles/viewer", "members": ["user:sean@example.com"] } ] } For a description of IAM and its features, see the [IAM developer's guide](https://cloud.google.com/iam). # REQUIRED: The complete policy to be applied to the `resource`. The size of the policy is limited to a few 10s of KB. An empty policy is a valid policy but certain Cloud Platform services (such as Projects) might reject them.
-      "bindings": [ # Associates a list of `members` to a `role`. Multiple `bindings` must not be specified for the same `role`. `bindings` with no members will result in an error.
+    "policy": { # Defines an Identity and Access Management (IAM) policy. It is used to # REQUIRED: The complete policy to be applied to the `resource`. The size of
+        # the policy is limited to a few 10s of KB. An empty policy is a
+        # valid policy but certain Cloud Platform services (such as Projects)
+        # might reject them.
+        # specify access control policies for Cloud Platform resources.
+        #
+        #
+        # A `Policy` consists of a list of `bindings`. A `Binding` binds a list of
+        # `members` to a `role`, where the members can be user accounts, Google groups,
+        # Google domains, and service accounts. A `role` is a named list of permissions
+        # defined by IAM.
+        #
+        # **Example**
+        #
+        #     {
+        #       "bindings": [
+        #         {
+        #           "role": "roles/owner",
+        #           "members": [
+        #             "user:mike@example.com",
+        #             "group:admins@example.com",
+        #             "domain:google.com",
+        #             "serviceAccount:my-other-app@appspot.gserviceaccount.com",
+        #           ]
+        #         },
+        #         {
+        #           "role": "roles/viewer",
+        #           "members": ["user:sean@example.com"]
+        #         }
+        #       ]
+        #     }
+        #
+        # For a description of IAM and its features, see the
+        # [IAM developer's guide](https://cloud.google.com/iam).
+      "bindings": [ # Associates a list of `members` to a `role`.
+          # Multiple `bindings` must not be specified for the same `role`.
+          # `bindings` with no members will result in an error.
         { # Associates `members` with a `role`.
-          "role": "A String", # Role that is assigned to `members`. For example, `roles/viewer`, `roles/editor`, or `roles/owner`. Required
-          "members": [ # Specifies the identities requesting access for a Cloud Platform resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@gmail.com` or `joe@example.com`. * `serviceAccount:{emailid}`: An email address that represents a service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: A Google Apps domain name that represents all the users of that domain. For example, `google.com` or `example.com`.
+          "role": "A String", # Role that is assigned to `members`.
+              # For example, `roles/viewer`, `roles/editor`, or `roles/owner`.
+              # Required
+          "members": [ # Specifies the identities requesting access for a Cloud Platform resource.
+              # `members` can have the following values:
+              #
+              # * `allUsers`: A special identifier that represents anyone who is
+              #    on the internet; with or without a Google account.
+              #
+              # * `allAuthenticatedUsers`: A special identifier that represents anyone
+              #    who is authenticated with a Google account or a service account.
+              #
+              # * `user:{emailid}`: An email address that represents a specific Google
+              #    account. For example, `alice@gmail.com` or `joe@example.com`.
+              #
+              #
+              # * `serviceAccount:{emailid}`: An email address that represents a service
+              #    account. For example, `my-other-app@appspot.gserviceaccount.com`.
+              #
+              # * `group:{emailid}`: An email address that represents a Google group.
+              #    For example, `admins@example.com`.
+              #
+              # * `domain:{domain}`: A Google Apps domain name that represents all the
+              #    users of that domain. For example, `google.com` or `example.com`.
+              #
             "A String",
           ],
         },
       ],
+      "etag": "A String", # `etag` is used for optimistic concurrency control as a way to help
+          # prevent simultaneous updates of a policy from overwriting each other.
+          # It is strongly suggested that systems make use of the `etag` in the
+          # read-modify-write cycle to perform policy updates in order to avoid race
+          # conditions: An `etag` is returned in the response to `getIamPolicy`, and
+          # systems are expected to put that etag in the request to `setIamPolicy` to
+          # ensure that their change will be applied to the same version of the policy.
+          #
+          # If no `etag` is provided in the call to `setIamPolicy`, then the existing
+          # policy is overwritten blindly.
       "version": 42, # Version of the `Policy`. The default version is 0.
-      "etag": "A String", # `etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. If no `etag` is provided in the call to `setIamPolicy`, then the existing policy is overwritten blindly.
     },
   }
 
   x__xgafv: string, V1 error format.
+    Allowed values
+      1 - v1 error format
+      2 - v2 error format
 
 Returns:
   An object of the form:
 
-    { # Defines an Identity and Access Management (IAM) policy. It is used to specify access control policies for Cloud Platform resources. A `Policy` consists of a list of `bindings`. A `Binding` binds a list of `members` to a `role`, where the members can be user accounts, Google groups, Google domains, and service accounts. A `role` is a named list of permissions defined by IAM. **Example** { "bindings": [ { "role": "roles/owner", "members": [ "user:mike@example.com", "group:admins@example.com", "domain:google.com", "serviceAccount:my-other-app@appspot.gserviceaccount.com", ] }, { "role": "roles/viewer", "members": ["user:sean@example.com"] } ] } For a description of IAM and its features, see the [IAM developer's guide](https://cloud.google.com/iam).
-    "bindings": [ # Associates a list of `members` to a `role`. Multiple `bindings` must not be specified for the same `role`. `bindings` with no members will result in an error.
+    { # Defines an Identity and Access Management (IAM) policy. It is used to
+      # specify access control policies for Cloud Platform resources.
+      #
+      #
+      # A `Policy` consists of a list of `bindings`. A `Binding` binds a list of
+      # `members` to a `role`, where the members can be user accounts, Google groups,
+      # Google domains, and service accounts. A `role` is a named list of permissions
+      # defined by IAM.
+      #
+      # **Example**
+      #
+      #     {
+      #       "bindings": [
+      #         {
+      #           "role": "roles/owner",
+      #           "members": [
+      #             "user:mike@example.com",
+      #             "group:admins@example.com",
+      #             "domain:google.com",
+      #             "serviceAccount:my-other-app@appspot.gserviceaccount.com",
+      #           ]
+      #         },
+      #         {
+      #           "role": "roles/viewer",
+      #           "members": ["user:sean@example.com"]
+      #         }
+      #       ]
+      #     }
+      #
+      # For a description of IAM and its features, see the
+      # [IAM developer's guide](https://cloud.google.com/iam).
+    "bindings": [ # Associates a list of `members` to a `role`.
+        # Multiple `bindings` must not be specified for the same `role`.
+        # `bindings` with no members will result in an error.
       { # Associates `members` with a `role`.
-        "role": "A String", # Role that is assigned to `members`. For example, `roles/viewer`, `roles/editor`, or `roles/owner`. Required
-        "members": [ # Specifies the identities requesting access for a Cloud Platform resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@gmail.com` or `joe@example.com`. * `serviceAccount:{emailid}`: An email address that represents a service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: A Google Apps domain name that represents all the users of that domain. For example, `google.com` or `example.com`.
+        "role": "A String", # Role that is assigned to `members`.
+            # For example, `roles/viewer`, `roles/editor`, or `roles/owner`.
+            # Required
+        "members": [ # Specifies the identities requesting access for a Cloud Platform resource.
+            # `members` can have the following values:
+            #
+            # * `allUsers`: A special identifier that represents anyone who is
+            #    on the internet; with or without a Google account.
+            #
+            # * `allAuthenticatedUsers`: A special identifier that represents anyone
+            #    who is authenticated with a Google account or a service account.
+            #
+            # * `user:{emailid}`: An email address that represents a specific Google
+            #    account. For example, `alice@gmail.com` or `joe@example.com`.
+            #
+            #
+            # * `serviceAccount:{emailid}`: An email address that represents a service
+            #    account. For example, `my-other-app@appspot.gserviceaccount.com`.
+            #
+            # * `group:{emailid}`: An email address that represents a Google group.
+            #    For example, `admins@example.com`.
+            #
+            # * `domain:{domain}`: A Google Apps domain name that represents all the
+            #    users of that domain. For example, `google.com` or `example.com`.
+            #
           "A String",
         ],
       },
     ],
+    "etag": "A String", # `etag` is used for optimistic concurrency control as a way to help
+        # prevent simultaneous updates of a policy from overwriting each other.
+        # It is strongly suggested that systems make use of the `etag` in the
+        # read-modify-write cycle to perform policy updates in order to avoid race
+        # conditions: An `etag` is returned in the response to `getIamPolicy`, and
+        # systems are expected to put that etag in the request to `setIamPolicy` to
+        # ensure that their change will be applied to the same version of the policy.
+        #
+        # If no `etag` is provided in the call to `setIamPolicy`, then the existing
+        # policy is overwritten blindly.
     "version": 42, # Version of the `Policy`. The default version is 0.
-    "etag": "A String", # `etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. If no `etag` is provided in the call to `setIamPolicy`, then the existing policy is overwritten blindly.
   }</pre>
 </div>
 
 <div class="method">
-    <code class="details" id="testIamPermissions">testIamPermissions(resource, body, x__xgafv=None)</code>
+    <code class="details" id="testIamPermissions">testIamPermissions(resource=None, body, x__xgafv=None)</code>
   <pre>Returns permissions that a caller has on the specified resource.
+If the resource does not exist, this will return an empty set of
+permissions, not a NOT_FOUND error.
 
 Args:
-  resource: string, REQUIRED: The resource for which the policy detail is being requested. `resource` is usually specified as a path. For example, a Project resource is specified as `projects/{project}`. (required)
+  resource: string, REQUIRED: The resource for which the policy detail is being requested.
+`resource` is usually specified as a path. For example, a Project
+resource is specified as `projects/{project}`. (required)
   body: object, The request body. (required)
     The object takes the form of:
 
 { # Request message for `TestIamPermissions` method.
-    "permissions": [ # The set of permissions to check for the `resource`. Permissions with wildcards (such as '*' or 'storage.*') are not allowed. For more information see [IAM Overview](https://cloud.google.com/iam/docs/overview#permissions).
+    "permissions": [ # The set of permissions to check for the `resource`. Permissions with
+        # wildcards (such as '*' or 'storage.*') are not allowed. For more
+        # information see
+        # [IAM Overview](https://cloud.google.com/iam/docs/overview#permissions).
       "A String",
     ],
   }
 
   x__xgafv: string, V1 error format.
+    Allowed values
+      1 - v1 error format
+      2 - v2 error format
 
 Returns:
   An object of the form:
 
     { # Response message for `TestIamPermissions` method.
-    "permissions": [ # A subset of `TestPermissionsRequest.permissions` that the caller is allowed.
+    "permissions": [ # A subset of `TestPermissionsRequest.permissions` that the caller is
+        # allowed.
       "A String",
     ],
   }</pre>
diff --git a/docs/dyn/pubsub_v1.projects.topics.html b/docs/dyn/pubsub_v1.projects.topics.html
index 0d960fa..026d91b 100644
--- a/docs/dyn/pubsub_v1.projects.topics.html
+++ b/docs/dyn/pubsub_v1.projects.topics.html
@@ -80,130 +80,256 @@
 <p class="firstline">Returns the subscriptions Resource.</p>
 
 <p class="toc_element">
-  <code><a href="#create">create(name, body, x__xgafv=None)</a></code></p>
+  <code><a href="#create">create(name=None, body, x__xgafv=None)</a></code></p>
 <p class="firstline">Creates the given topic with the given name.</p>
 <p class="toc_element">
-  <code><a href="#delete">delete(topic, x__xgafv=None)</a></code></p>
-<p class="firstline">Deletes the topic with the given name. Returns `NOT_FOUND` if the topic does not exist. After a topic is deleted, a new topic may be created with the same name; this is an entirely new topic with none of the old configuration or subscriptions. Existing subscriptions to this topic are not deleted, but their `topic` field is set to `_deleted-topic_`.</p>
+  <code><a href="#delete">delete(topic=None, x__xgafv=None)</a></code></p>
+<p class="firstline">Deletes the topic with the given name. Returns `NOT_FOUND` if the topic</p>
 <p class="toc_element">
-  <code><a href="#get">get(topic, x__xgafv=None)</a></code></p>
+  <code><a href="#get">get(topic=None, x__xgafv=None)</a></code></p>
 <p class="firstline">Gets the configuration of a topic.</p>
 <p class="toc_element">
-  <code><a href="#getIamPolicy">getIamPolicy(resource, x__xgafv=None)</a></code></p>
-<p class="firstline">Gets the access control policy for a resource. Returns an empty policy if the resource exists and does not have a policy set.</p>
+  <code><a href="#getIamPolicy">getIamPolicy(resource=None, x__xgafv=None)</a></code></p>
+<p class="firstline">Gets the access control policy for a resource.</p>
 <p class="toc_element">
-  <code><a href="#list">list(project, pageSize=None, pageToken=None, x__xgafv=None)</a></code></p>
+  <code><a href="#list">list(project=None, pageSize=None, pageToken=None, x__xgafv=None)</a></code></p>
 <p class="firstline">Lists matching topics.</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="#publish">publish(topic, body, x__xgafv=None)</a></code></p>
-<p class="firstline">Adds one or more messages to the topic. Returns `NOT_FOUND` if the topic does not exist. The message payload must not be empty; it must contain either a non-empty data field, or at least one attribute.</p>
+  <code><a href="#publish">publish(topic=None, body, x__xgafv=None)</a></code></p>
+<p class="firstline">Adds one or more messages to the topic. Returns `NOT_FOUND` if the topic</p>
 <p class="toc_element">
-  <code><a href="#setIamPolicy">setIamPolicy(resource, body, x__xgafv=None)</a></code></p>
-<p class="firstline">Sets the access control policy on the specified resource. Replaces any existing policy.</p>
+  <code><a href="#setIamPolicy">setIamPolicy(resource=None, body, x__xgafv=None)</a></code></p>
+<p class="firstline">Sets the access control policy on the specified resource. Replaces any</p>
 <p class="toc_element">
-  <code><a href="#testIamPermissions">testIamPermissions(resource, body, x__xgafv=None)</a></code></p>
+  <code><a href="#testIamPermissions">testIamPermissions(resource=None, body, x__xgafv=None)</a></code></p>
 <p class="firstline">Returns permissions that a caller has on the specified resource.</p>
 <h3>Method Details</h3>
 <div class="method">
-    <code class="details" id="create">create(name, body, x__xgafv=None)</code>
+    <code class="details" id="create">create(name=None, body, x__xgafv=None)</code>
   <pre>Creates the given topic with the given name.
 
 Args:
-  name: string, The name of the topic. It must have the format `"projects/{project}/topics/{topic}"`. `{topic}` must start with a letter, and contain only letters (`[A-Za-z]`), numbers (`[0-9]`), dashes (`-`), underscores (`_`), periods (`.`), tildes (`~`), plus (`+`) or percent signs (`%`). It must be between 3 and 255 characters in length, and it must not start with `"goog"`. (required)
+  name: string, The name of the topic. It must have the format
+`"projects/{project}/topics/{topic}"`. `{topic}` must start with a letter,
+and contain only letters (`[A-Za-z]`), numbers (`[0-9]`), dashes (`-`),
+underscores (`_`), periods (`.`), tildes (`~`), plus (`+`) or percent
+signs (`%`). It must be between 3 and 255 characters in length, and it
+must not start with `"goog"`. (required)
   body: object, The request body. (required)
     The object takes the form of:
 
 { # A topic resource.
-  "name": "A String", # The name of the topic. It must have the format `"projects/{project}/topics/{topic}"`. `{topic}` must start with a letter, and contain only letters (`[A-Za-z]`), numbers (`[0-9]`), dashes (`-`), underscores (`_`), periods (`.`), tildes (`~`), plus (`+`) or percent signs (`%`). It must be between 3 and 255 characters in length, and it must not start with `"goog"`.
+  "name": "A String", # The name of the topic. It must have the format
+      # `"projects/{project}/topics/{topic}"`. `{topic}` must start with a letter,
+      # and contain only letters (`[A-Za-z]`), numbers (`[0-9]`), dashes (`-`),
+      # underscores (`_`), periods (`.`), tildes (`~`), plus (`+`) or percent
+      # signs (`%`). It must be between 3 and 255 characters in length, and it
+      # must not start with `"goog"`.
 }
 
   x__xgafv: string, V1 error format.
+    Allowed values
+      1 - v1 error format
+      2 - v2 error format
 
 Returns:
   An object of the form:
 
     { # A topic resource.
-    "name": "A String", # The name of the topic. It must have the format `"projects/{project}/topics/{topic}"`. `{topic}` must start with a letter, and contain only letters (`[A-Za-z]`), numbers (`[0-9]`), dashes (`-`), underscores (`_`), periods (`.`), tildes (`~`), plus (`+`) or percent signs (`%`). It must be between 3 and 255 characters in length, and it must not start with `"goog"`.
+    "name": "A String", # The name of the topic. It must have the format
+        # `"projects/{project}/topics/{topic}"`. `{topic}` must start with a letter,
+        # and contain only letters (`[A-Za-z]`), numbers (`[0-9]`), dashes (`-`),
+        # underscores (`_`), periods (`.`), tildes (`~`), plus (`+`) or percent
+        # signs (`%`). It must be between 3 and 255 characters in length, and it
+        # must not start with `"goog"`.
   }</pre>
 </div>
 
 <div class="method">
-    <code class="details" id="delete">delete(topic, x__xgafv=None)</code>
-  <pre>Deletes the topic with the given name. Returns `NOT_FOUND` if the topic does not exist. After a topic is deleted, a new topic may be created with the same name; this is an entirely new topic with none of the old configuration or subscriptions. Existing subscriptions to this topic are not deleted, but their `topic` field is set to `_deleted-topic_`.
+    <code class="details" id="delete">delete(topic=None, x__xgafv=None)</code>
+  <pre>Deletes the topic with the given name. Returns `NOT_FOUND` if the topic
+does not exist. After a topic is deleted, a new topic may be created with
+the same name; this is an entirely new topic with none of the old
+configuration or subscriptions. Existing subscriptions to this topic are
+not deleted, but their `topic` field is set to `_deleted-topic_`.
 
 Args:
-  topic: string, Name of the topic to delete. (required)
+  topic: string, Name of the topic to delete.
+Format is `projects/{project}/topics/{topic}`. (required)
   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 `{}`.
+    { # 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(topic, x__xgafv=None)</code>
+    <code class="details" id="get">get(topic=None, x__xgafv=None)</code>
   <pre>Gets the configuration of a topic.
 
 Args:
-  topic: string, The name of the topic to get. (required)
+  topic: string, The name of the topic to get.
+Format is `projects/{project}/topics/{topic}`. (required)
   x__xgafv: string, V1 error format.
+    Allowed values
+      1 - v1 error format
+      2 - v2 error format
 
 Returns:
   An object of the form:
 
     { # A topic resource.
-    "name": "A String", # The name of the topic. It must have the format `"projects/{project}/topics/{topic}"`. `{topic}` must start with a letter, and contain only letters (`[A-Za-z]`), numbers (`[0-9]`), dashes (`-`), underscores (`_`), periods (`.`), tildes (`~`), plus (`+`) or percent signs (`%`). It must be between 3 and 255 characters in length, and it must not start with `"goog"`.
+    "name": "A String", # The name of the topic. It must have the format
+        # `"projects/{project}/topics/{topic}"`. `{topic}` must start with a letter,
+        # and contain only letters (`[A-Za-z]`), numbers (`[0-9]`), dashes (`-`),
+        # underscores (`_`), periods (`.`), tildes (`~`), plus (`+`) or percent
+        # signs (`%`). It must be between 3 and 255 characters in length, and it
+        # must not start with `"goog"`.
   }</pre>
 </div>
 
 <div class="method">
-    <code class="details" id="getIamPolicy">getIamPolicy(resource, x__xgafv=None)</code>
-  <pre>Gets the access control policy for a resource. Returns an empty policy if the resource exists and does not have a policy set.
+    <code class="details" id="getIamPolicy">getIamPolicy(resource=None, x__xgafv=None)</code>
+  <pre>Gets the access control policy for a resource.
+Returns an empty policy if the resource exists and does not have a policy
+set.
 
 Args:
-  resource: string, REQUIRED: The resource for which the policy is being requested. `resource` is usually specified as a path. For example, a Project resource is specified as `projects/{project}`. (required)
+  resource: string, REQUIRED: The resource for which the policy is being requested.
+`resource` is usually specified as a path. For example, a Project
+resource is specified as `projects/{project}`. (required)
   x__xgafv: string, V1 error format.
+    Allowed values
+      1 - v1 error format
+      2 - v2 error format
 
 Returns:
   An object of the form:
 
-    { # Defines an Identity and Access Management (IAM) policy. It is used to specify access control policies for Cloud Platform resources. A `Policy` consists of a list of `bindings`. A `Binding` binds a list of `members` to a `role`, where the members can be user accounts, Google groups, Google domains, and service accounts. A `role` is a named list of permissions defined by IAM. **Example** { "bindings": [ { "role": "roles/owner", "members": [ "user:mike@example.com", "group:admins@example.com", "domain:google.com", "serviceAccount:my-other-app@appspot.gserviceaccount.com", ] }, { "role": "roles/viewer", "members": ["user:sean@example.com"] } ] } For a description of IAM and its features, see the [IAM developer's guide](https://cloud.google.com/iam).
-    "bindings": [ # Associates a list of `members` to a `role`. Multiple `bindings` must not be specified for the same `role`. `bindings` with no members will result in an error.
+    { # Defines an Identity and Access Management (IAM) policy. It is used to
+      # specify access control policies for Cloud Platform resources.
+      #
+      #
+      # A `Policy` consists of a list of `bindings`. A `Binding` binds a list of
+      # `members` to a `role`, where the members can be user accounts, Google groups,
+      # Google domains, and service accounts. A `role` is a named list of permissions
+      # defined by IAM.
+      #
+      # **Example**
+      #
+      #     {
+      #       "bindings": [
+      #         {
+      #           "role": "roles/owner",
+      #           "members": [
+      #             "user:mike@example.com",
+      #             "group:admins@example.com",
+      #             "domain:google.com",
+      #             "serviceAccount:my-other-app@appspot.gserviceaccount.com",
+      #           ]
+      #         },
+      #         {
+      #           "role": "roles/viewer",
+      #           "members": ["user:sean@example.com"]
+      #         }
+      #       ]
+      #     }
+      #
+      # For a description of IAM and its features, see the
+      # [IAM developer's guide](https://cloud.google.com/iam).
+    "bindings": [ # Associates a list of `members` to a `role`.
+        # Multiple `bindings` must not be specified for the same `role`.
+        # `bindings` with no members will result in an error.
       { # Associates `members` with a `role`.
-        "role": "A String", # Role that is assigned to `members`. For example, `roles/viewer`, `roles/editor`, or `roles/owner`. Required
-        "members": [ # Specifies the identities requesting access for a Cloud Platform resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@gmail.com` or `joe@example.com`. * `serviceAccount:{emailid}`: An email address that represents a service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: A Google Apps domain name that represents all the users of that domain. For example, `google.com` or `example.com`.
+        "role": "A String", # Role that is assigned to `members`.
+            # For example, `roles/viewer`, `roles/editor`, or `roles/owner`.
+            # Required
+        "members": [ # Specifies the identities requesting access for a Cloud Platform resource.
+            # `members` can have the following values:
+            #
+            # * `allUsers`: A special identifier that represents anyone who is
+            #    on the internet; with or without a Google account.
+            #
+            # * `allAuthenticatedUsers`: A special identifier that represents anyone
+            #    who is authenticated with a Google account or a service account.
+            #
+            # * `user:{emailid}`: An email address that represents a specific Google
+            #    account. For example, `alice@gmail.com` or `joe@example.com`.
+            #
+            #
+            # * `serviceAccount:{emailid}`: An email address that represents a service
+            #    account. For example, `my-other-app@appspot.gserviceaccount.com`.
+            #
+            # * `group:{emailid}`: An email address that represents a Google group.
+            #    For example, `admins@example.com`.
+            #
+            # * `domain:{domain}`: A Google Apps domain name that represents all the
+            #    users of that domain. For example, `google.com` or `example.com`.
+            #
           "A String",
         ],
       },
     ],
+    "etag": "A String", # `etag` is used for optimistic concurrency control as a way to help
+        # prevent simultaneous updates of a policy from overwriting each other.
+        # It is strongly suggested that systems make use of the `etag` in the
+        # read-modify-write cycle to perform policy updates in order to avoid race
+        # conditions: An `etag` is returned in the response to `getIamPolicy`, and
+        # systems are expected to put that etag in the request to `setIamPolicy` to
+        # ensure that their change will be applied to the same version of the policy.
+        #
+        # If no `etag` is provided in the call to `setIamPolicy`, then the existing
+        # policy is overwritten blindly.
     "version": 42, # Version of the `Policy`. The default version is 0.
-    "etag": "A String", # `etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. If no `etag` is provided in the call to `setIamPolicy`, then the existing policy is overwritten blindly.
   }</pre>
 </div>
 
 <div class="method">
-    <code class="details" id="list">list(project, pageSize=None, pageToken=None, x__xgafv=None)</code>
+    <code class="details" id="list">list(project=None, pageSize=None, pageToken=None, x__xgafv=None)</code>
   <pre>Lists matching topics.
 
 Args:
-  project: string, The name of the cloud project that topics belong to. (required)
+  project: string, The name of the cloud project that topics belong to.
+Format is `projects/{project}`. (required)
   pageSize: integer, Maximum number of topics to return.
-  pageToken: string, The value returned by the last `ListTopicsResponse`; indicates that this is a continuation of a prior `ListTopics` call, and that the system should return the next page of data.
+  pageToken: string, The value returned by the last `ListTopicsResponse`; indicates that this is
+a continuation of a prior `ListTopics` call, and that the system should
+return the next page of data.
   x__xgafv: string, V1 error format.
+    Allowed values
+      1 - v1 error format
+      2 - v2 error format
 
 Returns:
   An object of the form:
 
     { # Response for the `ListTopics` method.
-    "nextPageToken": "A String", # If not empty, indicates that there may be more topics that match the request; this value should be passed in a new `ListTopicsRequest`.
+    "nextPageToken": "A String", # If not empty, indicates that there may be more topics that match the
+        # request; this value should be passed in a new `ListTopicsRequest`.
     "topics": [ # The resulting topics.
       { # A topic resource.
-        "name": "A String", # The name of the topic. It must have the format `"projects/{project}/topics/{topic}"`. `{topic}` must start with a letter, and contain only letters (`[A-Za-z]`), numbers (`[0-9]`), dashes (`-`), underscores (`_`), periods (`.`), tildes (`~`), plus (`+`) or percent signs (`%`). It must be between 3 and 255 characters in length, and it must not start with `"goog"`.
+        "name": "A String", # The name of the topic. It must have the format
+            # `"projects/{project}/topics/{topic}"`. `{topic}` must start with a letter,
+            # and contain only letters (`[A-Za-z]`), numbers (`[0-9]`), dashes (`-`),
+            # underscores (`_`), periods (`.`), tildes (`~`), plus (`+`) or percent
+            # signs (`%`). It must be between 3 and 255 characters in length, and it
+            # must not start with `"goog"`.
       },
     ],
   }</pre>
@@ -224,104 +350,266 @@
 </div>
 
 <div class="method">
-    <code class="details" id="publish">publish(topic, body, x__xgafv=None)</code>
-  <pre>Adds one or more messages to the topic. Returns `NOT_FOUND` if the topic does not exist. The message payload must not be empty; it must contain either a non-empty data field, or at least one attribute.
+    <code class="details" id="publish">publish(topic=None, body, x__xgafv=None)</code>
+  <pre>Adds one or more messages to the topic. Returns `NOT_FOUND` if the topic
+does not exist. The message payload must not be empty; it must contain
+ either a non-empty data field, or at least one attribute.
 
 Args:
-  topic: string, The messages in the request will be published on this topic. (required)
+  topic: string, The messages in the request will be published on this topic.
+Format is `projects/{project}/topics/{topic}`. (required)
   body: object, The request body. (required)
     The object takes the form of:
 
 { # Request for the Publish method.
     "messages": [ # The messages to publish.
-      { # A message data and its attributes. The message payload must not be empty; it must contain either a non-empty data field, or at least one attribute.
+      { # A message data and its attributes. The message payload must not be empty;
+          # it must contain either a non-empty data field, or at least one attribute.
         "attributes": { # Optional attributes for this message.
           "a_key": "A String",
         },
-        "data": "A String", # The message payload. For JSON requests, the value of this field must be [base64-encoded](https://tools.ietf.org/html/rfc4648).
-        "publishTime": "A String", # The time at which the message was published, populated by the server when it receives the `Publish` call. It must not be populated by the publisher in a `Publish` call.
-        "messageId": "A String", # ID of this message, assigned by the server when the message is published. Guaranteed to be unique within the topic. This value may be read by a subscriber that receives a `PubsubMessage` via a `Pull` call or a push delivery. It must not be populated by the publisher in a `Publish` call.
+        "data": "A String", # The message payload.
+        "publishTime": "A String", # The time at which the message was published, populated by the server when
+            # it receives the `Publish` call. It must not be populated by the
+            # publisher in a `Publish` call.
+        "messageId": "A String", # ID of this message, assigned by the server when the message is published.
+            # Guaranteed to be unique within the topic. This value may be read by a
+            # subscriber that receives a `PubsubMessage` via a `Pull` call or a push
+            # delivery. It must not be populated by the publisher in a `Publish` call.
       },
     ],
   }
 
   x__xgafv: string, V1 error format.
+    Allowed values
+      1 - v1 error format
+      2 - v2 error format
 
 Returns:
   An object of the form:
 
     { # Response for the `Publish` method.
-    "messageIds": [ # The server-assigned ID of each published message, in the same order as the messages in the request. IDs are guaranteed to be unique within the topic.
+    "messageIds": [ # The server-assigned ID of each published message, in the same order as
+        # the messages in the request. IDs are guaranteed to be unique within
+        # the topic.
       "A String",
     ],
   }</pre>
 </div>
 
 <div class="method">
-    <code class="details" id="setIamPolicy">setIamPolicy(resource, body, x__xgafv=None)</code>
-  <pre>Sets the access control policy on the specified resource. Replaces any existing policy.
+    <code class="details" id="setIamPolicy">setIamPolicy(resource=None, body, x__xgafv=None)</code>
+  <pre>Sets the access control policy on the specified resource. Replaces any
+existing policy.
 
 Args:
-  resource: string, REQUIRED: The resource for which the policy is being specified. `resource` is usually specified as a path. For example, a Project resource is specified as `projects/{project}`. (required)
+  resource: string, REQUIRED: The resource for which the policy is being specified.
+`resource` is usually specified as a path. For example, a Project
+resource is specified as `projects/{project}`. (required)
   body: object, The request body. (required)
     The object takes the form of:
 
 { # Request message for `SetIamPolicy` method.
-    "policy": { # Defines an Identity and Access Management (IAM) policy. It is used to specify access control policies for Cloud Platform resources. A `Policy` consists of a list of `bindings`. A `Binding` binds a list of `members` to a `role`, where the members can be user accounts, Google groups, Google domains, and service accounts. A `role` is a named list of permissions defined by IAM. **Example** { "bindings": [ { "role": "roles/owner", "members": [ "user:mike@example.com", "group:admins@example.com", "domain:google.com", "serviceAccount:my-other-app@appspot.gserviceaccount.com", ] }, { "role": "roles/viewer", "members": ["user:sean@example.com"] } ] } For a description of IAM and its features, see the [IAM developer's guide](https://cloud.google.com/iam). # REQUIRED: The complete policy to be applied to the `resource`. The size of the policy is limited to a few 10s of KB. An empty policy is a valid policy but certain Cloud Platform services (such as Projects) might reject them.
-      "bindings": [ # Associates a list of `members` to a `role`. Multiple `bindings` must not be specified for the same `role`. `bindings` with no members will result in an error.
+    "policy": { # Defines an Identity and Access Management (IAM) policy. It is used to # REQUIRED: The complete policy to be applied to the `resource`. The size of
+        # the policy is limited to a few 10s of KB. An empty policy is a
+        # valid policy but certain Cloud Platform services (such as Projects)
+        # might reject them.
+        # specify access control policies for Cloud Platform resources.
+        #
+        #
+        # A `Policy` consists of a list of `bindings`. A `Binding` binds a list of
+        # `members` to a `role`, where the members can be user accounts, Google groups,
+        # Google domains, and service accounts. A `role` is a named list of permissions
+        # defined by IAM.
+        #
+        # **Example**
+        #
+        #     {
+        #       "bindings": [
+        #         {
+        #           "role": "roles/owner",
+        #           "members": [
+        #             "user:mike@example.com",
+        #             "group:admins@example.com",
+        #             "domain:google.com",
+        #             "serviceAccount:my-other-app@appspot.gserviceaccount.com",
+        #           ]
+        #         },
+        #         {
+        #           "role": "roles/viewer",
+        #           "members": ["user:sean@example.com"]
+        #         }
+        #       ]
+        #     }
+        #
+        # For a description of IAM and its features, see the
+        # [IAM developer's guide](https://cloud.google.com/iam).
+      "bindings": [ # Associates a list of `members` to a `role`.
+          # Multiple `bindings` must not be specified for the same `role`.
+          # `bindings` with no members will result in an error.
         { # Associates `members` with a `role`.
-          "role": "A String", # Role that is assigned to `members`. For example, `roles/viewer`, `roles/editor`, or `roles/owner`. Required
-          "members": [ # Specifies the identities requesting access for a Cloud Platform resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@gmail.com` or `joe@example.com`. * `serviceAccount:{emailid}`: An email address that represents a service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: A Google Apps domain name that represents all the users of that domain. For example, `google.com` or `example.com`.
+          "role": "A String", # Role that is assigned to `members`.
+              # For example, `roles/viewer`, `roles/editor`, or `roles/owner`.
+              # Required
+          "members": [ # Specifies the identities requesting access for a Cloud Platform resource.
+              # `members` can have the following values:
+              #
+              # * `allUsers`: A special identifier that represents anyone who is
+              #    on the internet; with or without a Google account.
+              #
+              # * `allAuthenticatedUsers`: A special identifier that represents anyone
+              #    who is authenticated with a Google account or a service account.
+              #
+              # * `user:{emailid}`: An email address that represents a specific Google
+              #    account. For example, `alice@gmail.com` or `joe@example.com`.
+              #
+              #
+              # * `serviceAccount:{emailid}`: An email address that represents a service
+              #    account. For example, `my-other-app@appspot.gserviceaccount.com`.
+              #
+              # * `group:{emailid}`: An email address that represents a Google group.
+              #    For example, `admins@example.com`.
+              #
+              # * `domain:{domain}`: A Google Apps domain name that represents all the
+              #    users of that domain. For example, `google.com` or `example.com`.
+              #
             "A String",
           ],
         },
       ],
+      "etag": "A String", # `etag` is used for optimistic concurrency control as a way to help
+          # prevent simultaneous updates of a policy from overwriting each other.
+          # It is strongly suggested that systems make use of the `etag` in the
+          # read-modify-write cycle to perform policy updates in order to avoid race
+          # conditions: An `etag` is returned in the response to `getIamPolicy`, and
+          # systems are expected to put that etag in the request to `setIamPolicy` to
+          # ensure that their change will be applied to the same version of the policy.
+          #
+          # If no `etag` is provided in the call to `setIamPolicy`, then the existing
+          # policy is overwritten blindly.
       "version": 42, # Version of the `Policy`. The default version is 0.
-      "etag": "A String", # `etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. If no `etag` is provided in the call to `setIamPolicy`, then the existing policy is overwritten blindly.
     },
   }
 
   x__xgafv: string, V1 error format.
+    Allowed values
+      1 - v1 error format
+      2 - v2 error format
 
 Returns:
   An object of the form:
 
-    { # Defines an Identity and Access Management (IAM) policy. It is used to specify access control policies for Cloud Platform resources. A `Policy` consists of a list of `bindings`. A `Binding` binds a list of `members` to a `role`, where the members can be user accounts, Google groups, Google domains, and service accounts. A `role` is a named list of permissions defined by IAM. **Example** { "bindings": [ { "role": "roles/owner", "members": [ "user:mike@example.com", "group:admins@example.com", "domain:google.com", "serviceAccount:my-other-app@appspot.gserviceaccount.com", ] }, { "role": "roles/viewer", "members": ["user:sean@example.com"] } ] } For a description of IAM and its features, see the [IAM developer's guide](https://cloud.google.com/iam).
-    "bindings": [ # Associates a list of `members` to a `role`. Multiple `bindings` must not be specified for the same `role`. `bindings` with no members will result in an error.
+    { # Defines an Identity and Access Management (IAM) policy. It is used to
+      # specify access control policies for Cloud Platform resources.
+      #
+      #
+      # A `Policy` consists of a list of `bindings`. A `Binding` binds a list of
+      # `members` to a `role`, where the members can be user accounts, Google groups,
+      # Google domains, and service accounts. A `role` is a named list of permissions
+      # defined by IAM.
+      #
+      # **Example**
+      #
+      #     {
+      #       "bindings": [
+      #         {
+      #           "role": "roles/owner",
+      #           "members": [
+      #             "user:mike@example.com",
+      #             "group:admins@example.com",
+      #             "domain:google.com",
+      #             "serviceAccount:my-other-app@appspot.gserviceaccount.com",
+      #           ]
+      #         },
+      #         {
+      #           "role": "roles/viewer",
+      #           "members": ["user:sean@example.com"]
+      #         }
+      #       ]
+      #     }
+      #
+      # For a description of IAM and its features, see the
+      # [IAM developer's guide](https://cloud.google.com/iam).
+    "bindings": [ # Associates a list of `members` to a `role`.
+        # Multiple `bindings` must not be specified for the same `role`.
+        # `bindings` with no members will result in an error.
       { # Associates `members` with a `role`.
-        "role": "A String", # Role that is assigned to `members`. For example, `roles/viewer`, `roles/editor`, or `roles/owner`. Required
-        "members": [ # Specifies the identities requesting access for a Cloud Platform resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@gmail.com` or `joe@example.com`. * `serviceAccount:{emailid}`: An email address that represents a service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: A Google Apps domain name that represents all the users of that domain. For example, `google.com` or `example.com`.
+        "role": "A String", # Role that is assigned to `members`.
+            # For example, `roles/viewer`, `roles/editor`, or `roles/owner`.
+            # Required
+        "members": [ # Specifies the identities requesting access for a Cloud Platform resource.
+            # `members` can have the following values:
+            #
+            # * `allUsers`: A special identifier that represents anyone who is
+            #    on the internet; with or without a Google account.
+            #
+            # * `allAuthenticatedUsers`: A special identifier that represents anyone
+            #    who is authenticated with a Google account or a service account.
+            #
+            # * `user:{emailid}`: An email address that represents a specific Google
+            #    account. For example, `alice@gmail.com` or `joe@example.com`.
+            #
+            #
+            # * `serviceAccount:{emailid}`: An email address that represents a service
+            #    account. For example, `my-other-app@appspot.gserviceaccount.com`.
+            #
+            # * `group:{emailid}`: An email address that represents a Google group.
+            #    For example, `admins@example.com`.
+            #
+            # * `domain:{domain}`: A Google Apps domain name that represents all the
+            #    users of that domain. For example, `google.com` or `example.com`.
+            #
           "A String",
         ],
       },
     ],
+    "etag": "A String", # `etag` is used for optimistic concurrency control as a way to help
+        # prevent simultaneous updates of a policy from overwriting each other.
+        # It is strongly suggested that systems make use of the `etag` in the
+        # read-modify-write cycle to perform policy updates in order to avoid race
+        # conditions: An `etag` is returned in the response to `getIamPolicy`, and
+        # systems are expected to put that etag in the request to `setIamPolicy` to
+        # ensure that their change will be applied to the same version of the policy.
+        #
+        # If no `etag` is provided in the call to `setIamPolicy`, then the existing
+        # policy is overwritten blindly.
     "version": 42, # Version of the `Policy`. The default version is 0.
-    "etag": "A String", # `etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. If no `etag` is provided in the call to `setIamPolicy`, then the existing policy is overwritten blindly.
   }</pre>
 </div>
 
 <div class="method">
-    <code class="details" id="testIamPermissions">testIamPermissions(resource, body, x__xgafv=None)</code>
+    <code class="details" id="testIamPermissions">testIamPermissions(resource=None, body, x__xgafv=None)</code>
   <pre>Returns permissions that a caller has on the specified resource.
+If the resource does not exist, this will return an empty set of
+permissions, not a NOT_FOUND error.
 
 Args:
-  resource: string, REQUIRED: The resource for which the policy detail is being requested. `resource` is usually specified as a path. For example, a Project resource is specified as `projects/{project}`. (required)
+  resource: string, REQUIRED: The resource for which the policy detail is being requested.
+`resource` is usually specified as a path. For example, a Project
+resource is specified as `projects/{project}`. (required)
   body: object, The request body. (required)
     The object takes the form of:
 
 { # Request message for `TestIamPermissions` method.
-    "permissions": [ # The set of permissions to check for the `resource`. Permissions with wildcards (such as '*' or 'storage.*') are not allowed. For more information see [IAM Overview](https://cloud.google.com/iam/docs/overview#permissions).
+    "permissions": [ # The set of permissions to check for the `resource`. Permissions with
+        # wildcards (such as '*' or 'storage.*') are not allowed. For more
+        # information see
+        # [IAM Overview](https://cloud.google.com/iam/docs/overview#permissions).
       "A String",
     ],
   }
 
   x__xgafv: string, V1 error format.
+    Allowed values
+      1 - v1 error format
+      2 - v2 error format
 
 Returns:
   An object of the form:
 
     { # Response message for `TestIamPermissions` method.
-    "permissions": [ # A subset of `TestPermissionsRequest.permissions` that the caller is allowed.
+    "permissions": [ # A subset of `TestPermissionsRequest.permissions` that the caller is
+        # allowed.
       "A String",
     ],
   }</pre>
diff --git a/docs/dyn/pubsub_v1.projects.topics.subscriptions.html b/docs/dyn/pubsub_v1.projects.topics.subscriptions.html
index 02b2b2f..c89540c 100644
--- a/docs/dyn/pubsub_v1.projects.topics.subscriptions.html
+++ b/docs/dyn/pubsub_v1.projects.topics.subscriptions.html
@@ -75,27 +75,35 @@
 <h1><a href="pubsub_v1.html">Google Cloud Pub/Sub API</a> . <a href="pubsub_v1.projects.html">projects</a> . <a href="pubsub_v1.projects.topics.html">topics</a> . <a href="pubsub_v1.projects.topics.subscriptions.html">subscriptions</a></h1>
 <h2>Instance Methods</h2>
 <p class="toc_element">
-  <code><a href="#list">list(topic, pageSize=None, pageToken=None, x__xgafv=None)</a></code></p>
+  <code><a href="#list">list(topic=None, pageSize=None, pageToken=None, x__xgafv=None)</a></code></p>
 <p class="firstline">Lists the name of the subscriptions for this topic.</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>
 <h3>Method Details</h3>
 <div class="method">
-    <code class="details" id="list">list(topic, pageSize=None, pageToken=None, x__xgafv=None)</code>
+    <code class="details" id="list">list(topic=None, pageSize=None, pageToken=None, x__xgafv=None)</code>
   <pre>Lists the name of the subscriptions for this topic.
 
 Args:
-  topic: string, The name of the topic that subscriptions are attached to. (required)
+  topic: string, The name of the topic that subscriptions are attached to.
+Format is `projects/{project}/topics/{topic}`. (required)
   pageSize: integer, Maximum number of subscription names to return.
-  pageToken: string, The value returned by the last `ListTopicSubscriptionsResponse`; indicates that this is a continuation of a prior `ListTopicSubscriptions` call, and that the system should return the next page of data.
+  pageToken: string, The value returned by the last `ListTopicSubscriptionsResponse`; indicates
+that this is a continuation of a prior `ListTopicSubscriptions` call, and
+that the system should return the next page of data.
   x__xgafv: string, V1 error format.
+    Allowed values
+      1 - v1 error format
+      2 - v2 error format
 
 Returns:
   An object of the form:
 
     { # Response for the `ListTopicSubscriptions` method.
-    "nextPageToken": "A String", # If not empty, indicates that there may be more subscriptions that match the request; this value should be passed in a new `ListTopicSubscriptionsRequest` to get more subscriptions.
+    "nextPageToken": "A String", # If not empty, indicates that there may be more subscriptions that match
+        # the request; this value should be passed in a new
+        # `ListTopicSubscriptionsRequest` to get more subscriptions.
     "subscriptions": [ # The names of the subscriptions that match the request.
       "A String",
     ],
diff --git a/docs/dyn/pubsub_v1beta1a.subscriptions.html b/docs/dyn/pubsub_v1beta1a.subscriptions.html
index cdd1712..92a10ca 100644
--- a/docs/dyn/pubsub_v1beta1a.subscriptions.html
+++ b/docs/dyn/pubsub_v1beta1a.subscriptions.html
@@ -76,13 +76,13 @@
 <h2>Instance Methods</h2>
 <p class="toc_element">
   <code><a href="#acknowledge">acknowledge(body, x__xgafv=None)</a></code></p>
-<p class="firstline">Acknowledges a particular received message: the Pub/Sub system can remove the given message from the subscription. Acknowledging a message whose Ack deadline has expired may succeed, but the message could have been already redelivered. Acknowledging a message more than once will not result in an error. This is only used for messages received via pull.</p>
+<p class="firstline">Acknowledges a particular received message: the Pub/Sub system can remove</p>
 <p class="toc_element">
   <code><a href="#create">create(body, x__xgafv=None)</a></code></p>
-<p class="firstline">Creates a subscription on a given topic for a given subscriber. If the subscription already exists, returns ALREADY_EXISTS. If the corresponding topic doesn't exist, returns NOT_FOUND. If the name is not provided in the request, the server will assign a random name for this subscription on the same project as the topic.</p>
+<p class="firstline">Creates a subscription on a given topic for a given subscriber.</p>
 <p class="toc_element">
   <code><a href="#delete">delete(subscription, x__xgafv=None)</a></code></p>
-<p class="firstline">Deletes an existing subscription. All pending messages in the subscription are immediately dropped. Calls to Pull after deletion will return NOT_FOUND.</p>
+<p class="firstline">Deletes an existing subscription. All pending messages in the subscription</p>
 <p class="toc_element">
   <code><a href="#get">get(subscription, x__xgafv=None)</a></code></p>
 <p class="firstline">Gets the configuration details of a subscription.</p>
@@ -97,41 +97,67 @@
 <p class="firstline">Modifies the Ack deadline for a message received from a pull request.</p>
 <p class="toc_element">
   <code><a href="#modifyPushConfig">modifyPushConfig(body, x__xgafv=None)</a></code></p>
-<p class="firstline">Modifies the PushConfig for a specified subscription. This method can be used to suspend the flow of messages to an endpoint by clearing the PushConfig field in the request. Messages will be accumulated for delivery even if no push configuration is defined or while the configuration is modified.</p>
+<p class="firstline">Modifies the <code>PushConfig</code> for a specified subscription.</p>
 <p class="toc_element">
   <code><a href="#pull">pull(body, x__xgafv=None)</a></code></p>
-<p class="firstline">Pulls a single message from the server. If return_immediately is true, and no messages are available in the subscription, this method returns FAILED_PRECONDITION. The system is free to return an UNAVAILABLE error if no messages are available in a reasonable amount of time (to reduce system load).</p>
+<p class="firstline">Pulls a single message from the server.</p>
 <p class="toc_element">
   <code><a href="#pullBatch">pullBatch(body, x__xgafv=None)</a></code></p>
-<p class="firstline">Pulls messages from the server. Returns an empty list if there are no messages available in the backlog. The system is free to return UNAVAILABLE if there are too many pull requests outstanding for the given subscription.</p>
+<p class="firstline">Pulls messages from the server. Returns an empty list if there are no</p>
 <h3>Method Details</h3>
 <div class="method">
     <code class="details" id="acknowledge">acknowledge(body, x__xgafv=None)</code>
-  <pre>Acknowledges a particular received message: the Pub/Sub system can remove the given message from the subscription. Acknowledging a message whose Ack deadline has expired may succeed, but the message could have been already redelivered. Acknowledging a message more than once will not result in an error. This is only used for messages received via pull.
+  <pre>Acknowledges a particular received message: the Pub/Sub system can remove
+the given message from the subscription. Acknowledging a message whose
+Ack deadline has expired may succeed, but the message could have been
+already redelivered. Acknowledging a message more than once will not
+result in an error. This is only used for messages received via pull.
 
 Args:
   body: object, The request body. (required)
     The object takes the form of:
 
 { # Request for the Acknowledge method.
-    "ackId": [ # The acknowledgment ID for the message being acknowledged. This was returned by the Pub/Sub system in the Pull response.
+    "ackId": [ # The acknowledgment ID for the message being acknowledged. This was
+        # returned by the Pub/Sub system in the Pull response.
       "A String",
     ],
     "subscription": "A String", # The subscription whose message is being acknowledged.
   }
 
   x__xgafv: string, V1 error format.
+    Allowed values
+      1 - v1 error format
+      2 - v2 error format
 
 Returns:
   An object of the form:
 
-    { # An empty message that you can re-use to avoid defining duplicated empty messages in your project. A typical example is to use it as argument or the return value of a service API. For instance: service Foo { rpc Bar (proto2.Empty) returns (proto2.Empty) { }; }; BEGIN GOOGLE-INTERNAL The difference between this one and net/rpc/empty-message.proto is that 1) The generated message here is in proto2 C++ API. 2) The proto2.Empty has minimum dependencies (no message_set or net/rpc dependencies) END GOOGLE-INTERNAL
+    { # An empty message that you can re-use to avoid defining duplicated empty
+      # messages in your project. A typical example is to use it as argument or the
+      # return value of a service API. For instance:
+      #
+      #   service Foo {
+      #     rpc Bar (proto2.Empty) returns (proto2.Empty) { };
+      #   };
+      #
+      # BEGIN GOOGLE-INTERNAL
+      # The difference between this one and net/rpc/empty-message.proto is that
+      # 1) The generated message here is in proto2 C++ API.
+      # 2) The proto2.Empty has minimum dependencies
+      #    (no message_set or net/rpc dependencies)
+      # END GOOGLE-INTERNAL
   }</pre>
 </div>
 
 <div class="method">
     <code class="details" id="create">create(body, x__xgafv=None)</code>
-  <pre>Creates a subscription on a given topic for a given subscriber. If the subscription already exists, returns ALREADY_EXISTS. If the corresponding topic doesn't exist, returns NOT_FOUND. If the name is not provided in the request, the server will assign a random name for this subscription on the same project as the topic.
+  <pre>Creates a subscription on a given topic for a given subscriber.
+If the subscription already exists, returns ALREADY_EXISTS.
+If the corresponding topic doesn't exist, returns NOT_FOUND.
+
+If the name is not provided in the request, the server will assign a random
+name for this subscription on the same project as the topic.
 
 Args:
   body: object, The request body. (required)
@@ -139,23 +165,66 @@
 
 { # A subscription resource.
   "topic": "A String", # The name of the topic from which this subscription is receiving messages.
-  "ackDeadlineSeconds": 42, # For either push or pull delivery, the value is the maximum time after a subscriber receives a message before the subscriber should acknowledge or Nack the message. If the Ack deadline for a message passes without an Ack or a Nack, the Pub/Sub system will eventually redeliver the message. If a subscriber acknowledges after the deadline, the Pub/Sub system may accept the Ack, but it is possible that the message has been already delivered again. Multiple Acks to the message are allowed and will succeed. For push delivery, this value is used to set the request timeout for the call to the push endpoint. For pull delivery, this value is used as the initial value for the Ack deadline. It may be overridden for each message using its corresponding ack_id with ModifyAckDeadline. While a message is outstanding (i.e. it has been delivered to a pull subscriber and the subscriber has not yet Acked or Nacked), the Pub/Sub system will not deliver that message to another pull subscriber (on a best-effort basis).
-  "pushConfig": { # Configuration for a push delivery endpoint. # If push delivery is used with this subscription, this field is used to configure it.
-    "pushEndpoint": "A String", # A URL locating the endpoint to which messages should be pushed. For example, a Webhook endpoint might use "https://example.com/push".
+  "ackDeadlineSeconds": 42, # For either push or pull delivery, the value is the maximum time after a
+      # subscriber receives a message before the subscriber should acknowledge or
+      # Nack the message. If the Ack deadline for a message passes without an
+      # Ack or a Nack, the Pub/Sub system will eventually redeliver the message.
+      # If a subscriber acknowledges after the deadline, the Pub/Sub system may
+      # accept the Ack, but it is possible that the message has been already
+      # delivered again. Multiple Acks to the message are allowed and will
+      # succeed.
+      # 
+      # For push delivery, this value is used to set the request timeout for
+      # the call to the push endpoint.
+      # 
+      # For pull delivery, this value is used as the initial value for the Ack
+      # deadline. It may be overridden for each message using its corresponding
+      # ack_id with <code>ModifyAckDeadline</code>.
+      # While a message is outstanding (i.e. it has been delivered to a pull
+      # subscriber and the subscriber has not yet Acked or Nacked), the Pub/Sub
+      # system will not deliver that message to another pull subscriber
+      # (on a best-effort basis).
+  "pushConfig": { # Configuration for a push delivery endpoint. # If push delivery is used with this subscription, this field is
+      # used to configure it.
+    "pushEndpoint": "A String", # A URL locating the endpoint to which messages should be pushed.
+        # For example, a Webhook endpoint might use "https://example.com/push".
   },
   "name": "A String", # Name of the subscription.
 }
 
   x__xgafv: string, V1 error format.
+    Allowed values
+      1 - v1 error format
+      2 - v2 error format
 
 Returns:
   An object of the form:
 
     { # A subscription resource.
     "topic": "A String", # The name of the topic from which this subscription is receiving messages.
-    "ackDeadlineSeconds": 42, # For either push or pull delivery, the value is the maximum time after a subscriber receives a message before the subscriber should acknowledge or Nack the message. If the Ack deadline for a message passes without an Ack or a Nack, the Pub/Sub system will eventually redeliver the message. If a subscriber acknowledges after the deadline, the Pub/Sub system may accept the Ack, but it is possible that the message has been already delivered again. Multiple Acks to the message are allowed and will succeed. For push delivery, this value is used to set the request timeout for the call to the push endpoint. For pull delivery, this value is used as the initial value for the Ack deadline. It may be overridden for each message using its corresponding ack_id with ModifyAckDeadline. While a message is outstanding (i.e. it has been delivered to a pull subscriber and the subscriber has not yet Acked or Nacked), the Pub/Sub system will not deliver that message to another pull subscriber (on a best-effort basis).
-    "pushConfig": { # Configuration for a push delivery endpoint. # If push delivery is used with this subscription, this field is used to configure it.
-      "pushEndpoint": "A String", # A URL locating the endpoint to which messages should be pushed. For example, a Webhook endpoint might use "https://example.com/push".
+    "ackDeadlineSeconds": 42, # For either push or pull delivery, the value is the maximum time after a
+        # subscriber receives a message before the subscriber should acknowledge or
+        # Nack the message. If the Ack deadline for a message passes without an
+        # Ack or a Nack, the Pub/Sub system will eventually redeliver the message.
+        # If a subscriber acknowledges after the deadline, the Pub/Sub system may
+        # accept the Ack, but it is possible that the message has been already
+        # delivered again. Multiple Acks to the message are allowed and will
+        # succeed.
+        #
+        # For push delivery, this value is used to set the request timeout for
+        # the call to the push endpoint.
+        #
+        # For pull delivery, this value is used as the initial value for the Ack
+        # deadline. It may be overridden for each message using its corresponding
+        # ack_id with <code>ModifyAckDeadline</code>.
+        # While a message is outstanding (i.e. it has been delivered to a pull
+        # subscriber and the subscriber has not yet Acked or Nacked), the Pub/Sub
+        # system will not deliver that message to another pull subscriber
+        # (on a best-effort basis).
+    "pushConfig": { # Configuration for a push delivery endpoint. # If push delivery is used with this subscription, this field is
+        # used to configure it.
+      "pushEndpoint": "A String", # A URL locating the endpoint to which messages should be pushed.
+          # For example, a Webhook endpoint might use "https://example.com/push".
     },
     "name": "A String", # Name of the subscription.
   }</pre>
@@ -163,16 +232,34 @@
 
 <div class="method">
     <code class="details" id="delete">delete(subscription, x__xgafv=None)</code>
-  <pre>Deletes an existing subscription. All pending messages in the subscription are immediately dropped. Calls to Pull after deletion will return NOT_FOUND.
+  <pre>Deletes an existing subscription. All pending messages in the subscription
+are immediately dropped. Calls to Pull after deletion will return
+NOT_FOUND.
 
 Args:
   subscription: string, The subscription to delete. (required)
   x__xgafv: string, V1 error format.
+    Allowed values
+      1 - v1 error format
+      2 - v2 error format
 
 Returns:
   An object of the form:
 
-    { # An empty message that you can re-use to avoid defining duplicated empty messages in your project. A typical example is to use it as argument or the return value of a service API. For instance: service Foo { rpc Bar (proto2.Empty) returns (proto2.Empty) { }; }; BEGIN GOOGLE-INTERNAL The difference between this one and net/rpc/empty-message.proto is that 1) The generated message here is in proto2 C++ API. 2) The proto2.Empty has minimum dependencies (no message_set or net/rpc dependencies) END GOOGLE-INTERNAL
+    { # An empty message that you can re-use to avoid defining duplicated empty
+      # messages in your project. A typical example is to use it as argument or the
+      # return value of a service API. For instance:
+      #
+      #   service Foo {
+      #     rpc Bar (proto2.Empty) returns (proto2.Empty) { };
+      #   };
+      #
+      # BEGIN GOOGLE-INTERNAL
+      # The difference between this one and net/rpc/empty-message.proto is that
+      # 1) The generated message here is in proto2 C++ API.
+      # 2) The proto2.Empty has minimum dependencies
+      #    (no message_set or net/rpc dependencies)
+      # END GOOGLE-INTERNAL
   }</pre>
 </div>
 
@@ -183,15 +270,38 @@
 Args:
   subscription: string, The name of the subscription to get. (required)
   x__xgafv: string, V1 error format.
+    Allowed values
+      1 - v1 error format
+      2 - v2 error format
 
 Returns:
   An object of the form:
 
     { # A subscription resource.
     "topic": "A String", # The name of the topic from which this subscription is receiving messages.
-    "ackDeadlineSeconds": 42, # For either push or pull delivery, the value is the maximum time after a subscriber receives a message before the subscriber should acknowledge or Nack the message. If the Ack deadline for a message passes without an Ack or a Nack, the Pub/Sub system will eventually redeliver the message. If a subscriber acknowledges after the deadline, the Pub/Sub system may accept the Ack, but it is possible that the message has been already delivered again. Multiple Acks to the message are allowed and will succeed. For push delivery, this value is used to set the request timeout for the call to the push endpoint. For pull delivery, this value is used as the initial value for the Ack deadline. It may be overridden for each message using its corresponding ack_id with ModifyAckDeadline. While a message is outstanding (i.e. it has been delivered to a pull subscriber and the subscriber has not yet Acked or Nacked), the Pub/Sub system will not deliver that message to another pull subscriber (on a best-effort basis).
-    "pushConfig": { # Configuration for a push delivery endpoint. # If push delivery is used with this subscription, this field is used to configure it.
-      "pushEndpoint": "A String", # A URL locating the endpoint to which messages should be pushed. For example, a Webhook endpoint might use "https://example.com/push".
+    "ackDeadlineSeconds": 42, # For either push or pull delivery, the value is the maximum time after a
+        # subscriber receives a message before the subscriber should acknowledge or
+        # Nack the message. If the Ack deadline for a message passes without an
+        # Ack or a Nack, the Pub/Sub system will eventually redeliver the message.
+        # If a subscriber acknowledges after the deadline, the Pub/Sub system may
+        # accept the Ack, but it is possible that the message has been already
+        # delivered again. Multiple Acks to the message are allowed and will
+        # succeed.
+        #
+        # For push delivery, this value is used to set the request timeout for
+        # the call to the push endpoint.
+        #
+        # For pull delivery, this value is used as the initial value for the Ack
+        # deadline. It may be overridden for each message using its corresponding
+        # ack_id with <code>ModifyAckDeadline</code>.
+        # While a message is outstanding (i.e. it has been delivered to a pull
+        # subscriber and the subscriber has not yet Acked or Nacked), the Pub/Sub
+        # system will not deliver that message to another pull subscriber
+        # (on a best-effort basis).
+    "pushConfig": { # Configuration for a push delivery endpoint. # If push delivery is used with this subscription, this field is
+        # used to configure it.
+      "pushEndpoint": "A String", # A URL locating the endpoint to which messages should be pushed.
+          # For example, a Webhook endpoint might use "https://example.com/push".
     },
     "name": "A String", # Name of the subscription.
   }</pre>
@@ -203,21 +313,47 @@
 
 Args:
   maxResults: integer, Maximum number of subscriptions to return.
-  pageToken: string, The value obtained in the last ListSubscriptionsResponse for continuation.
+  pageToken: string, The value obtained in the last <code>ListSubscriptionsResponse</code>
+for continuation.
   query: string, A valid label query expression.
   x__xgafv: string, V1 error format.
+    Allowed values
+      1 - v1 error format
+      2 - v2 error format
 
 Returns:
   An object of the form:
 
     { # Response for the ListSubscriptions method.
-    "nextPageToken": "A String", # If not empty, indicates that there are more subscriptions that match the request and this value should be passed to the next ListSubscriptionsRequest to continue.
+    "nextPageToken": "A String", # If not empty, indicates that there are more subscriptions that match the
+        # request and this value should be passed to the next
+        # <code>ListSubscriptionsRequest</code> to continue.
     "subscription": [ # The subscriptions that match the request.
       { # A subscription resource.
         "topic": "A String", # The name of the topic from which this subscription is receiving messages.
-        "ackDeadlineSeconds": 42, # For either push or pull delivery, the value is the maximum time after a subscriber receives a message before the subscriber should acknowledge or Nack the message. If the Ack deadline for a message passes without an Ack or a Nack, the Pub/Sub system will eventually redeliver the message. If a subscriber acknowledges after the deadline, the Pub/Sub system may accept the Ack, but it is possible that the message has been already delivered again. Multiple Acks to the message are allowed and will succeed. For push delivery, this value is used to set the request timeout for the call to the push endpoint. For pull delivery, this value is used as the initial value for the Ack deadline. It may be overridden for each message using its corresponding ack_id with ModifyAckDeadline. While a message is outstanding (i.e. it has been delivered to a pull subscriber and the subscriber has not yet Acked or Nacked), the Pub/Sub system will not deliver that message to another pull subscriber (on a best-effort basis).
-        "pushConfig": { # Configuration for a push delivery endpoint. # If push delivery is used with this subscription, this field is used to configure it.
-          "pushEndpoint": "A String", # A URL locating the endpoint to which messages should be pushed. For example, a Webhook endpoint might use "https://example.com/push".
+        "ackDeadlineSeconds": 42, # For either push or pull delivery, the value is the maximum time after a
+            # subscriber receives a message before the subscriber should acknowledge or
+            # Nack the message. If the Ack deadline for a message passes without an
+            # Ack or a Nack, the Pub/Sub system will eventually redeliver the message.
+            # If a subscriber acknowledges after the deadline, the Pub/Sub system may
+            # accept the Ack, but it is possible that the message has been already
+            # delivered again. Multiple Acks to the message are allowed and will
+            # succeed.
+            #
+            # For push delivery, this value is used to set the request timeout for
+            # the call to the push endpoint.
+            #
+            # For pull delivery, this value is used as the initial value for the Ack
+            # deadline. It may be overridden for each message using its corresponding
+            # ack_id with <code>ModifyAckDeadline</code>.
+            # While a message is outstanding (i.e. it has been delivered to a pull
+            # subscriber and the subscriber has not yet Acked or Nacked), the Pub/Sub
+            # system will not deliver that message to another pull subscriber
+            # (on a best-effort basis).
+        "pushConfig": { # Configuration for a push delivery endpoint. # If push delivery is used with this subscription, this field is
+            # used to configure it.
+          "pushEndpoint": "A String", # A URL locating the endpoint to which messages should be pushed.
+              # For example, a Webhook endpoint might use "https://example.com/push".
         },
         "name": "A String", # Name of the subscription.
       },
@@ -248,82 +384,163 @@
     The object takes the form of:
 
 { # Request for the ModifyAckDeadline method.
-    "ackDeadlineSeconds": 42, # The new ack deadline with respect to the time this request was sent to the Pub/Sub system. Must be >= 0. For example, if the value is 10, the new ack deadline will expire 10 seconds after the ModifyAckDeadline call was made. Specifying zero may immediately make the message available for another pull request.
-    "ackId": "A String", # The acknowledgment ID. Either this or ack_ids must be populated, not both.
-    "ackIds": [ # List of acknowledgment IDs. Either this field or ack_id should be populated, not both.
+    "ackDeadlineSeconds": 42, # The new ack deadline with respect to the time this request was sent to the
+        # Pub/Sub system. Must be >= 0. For example, if the value is 10, the new ack
+        # deadline will expire 10 seconds after the ModifyAckDeadline call was made.
+        # Specifying zero may immediately make the message available for another pull
+        # request.
+    "ackId": "A String", # The acknowledgment ID. Either this or ack_ids must be populated,
+        # not both.
+    "ackIds": [ # List of acknowledgment IDs. Either this field or ack_id
+        # should be populated, not both.
       "A String",
     ],
-    "subscription": "A String", # Next Index: 5 The name of the subscription from which messages are being pulled.
+    "subscription": "A String", # Next Index: 5
+        # The name of the subscription from which messages are being pulled.
   }
 
   x__xgafv: string, V1 error format.
+    Allowed values
+      1 - v1 error format
+      2 - v2 error format
 
 Returns:
   An object of the form:
 
-    { # An empty message that you can re-use to avoid defining duplicated empty messages in your project. A typical example is to use it as argument or the return value of a service API. For instance: service Foo { rpc Bar (proto2.Empty) returns (proto2.Empty) { }; }; BEGIN GOOGLE-INTERNAL The difference between this one and net/rpc/empty-message.proto is that 1) The generated message here is in proto2 C++ API. 2) The proto2.Empty has minimum dependencies (no message_set or net/rpc dependencies) END GOOGLE-INTERNAL
+    { # An empty message that you can re-use to avoid defining duplicated empty
+      # messages in your project. A typical example is to use it as argument or the
+      # return value of a service API. For instance:
+      #
+      #   service Foo {
+      #     rpc Bar (proto2.Empty) returns (proto2.Empty) { };
+      #   };
+      #
+      # BEGIN GOOGLE-INTERNAL
+      # The difference between this one and net/rpc/empty-message.proto is that
+      # 1) The generated message here is in proto2 C++ API.
+      # 2) The proto2.Empty has minimum dependencies
+      #    (no message_set or net/rpc dependencies)
+      # END GOOGLE-INTERNAL
   }</pre>
 </div>
 
 <div class="method">
     <code class="details" id="modifyPushConfig">modifyPushConfig(body, x__xgafv=None)</code>
-  <pre>Modifies the PushConfig for a specified subscription. This method can be used to suspend the flow of messages to an endpoint by clearing the PushConfig field in the request. Messages will be accumulated for delivery even if no push configuration is defined or while the configuration is modified.
+  <pre>Modifies the <code>PushConfig</code> for a specified subscription.
+This method can be used to suspend the flow of messages to an endpoint
+by clearing the <code>PushConfig</code> field in the request. Messages
+will be accumulated for delivery even if no push configuration is
+defined or while the configuration is modified.
 
 Args:
   body: object, The request body. (required)
     The object takes the form of:
 
 { # Request for the ModifyPushConfig method.
-    "pushConfig": { # Configuration for a push delivery endpoint. # An empty push_config indicates that the Pub/Sub system should pause pushing messages from the given subscription.
-      "pushEndpoint": "A String", # A URL locating the endpoint to which messages should be pushed. For example, a Webhook endpoint might use "https://example.com/push".
+    "pushConfig": { # Configuration for a push delivery endpoint. # An empty <code>push_config</code> indicates that the Pub/Sub system should
+        # pause pushing messages from the given subscription.
+      "pushEndpoint": "A String", # A URL locating the endpoint to which messages should be pushed.
+          # For example, a Webhook endpoint might use "https://example.com/push".
     },
     "subscription": "A String", # The name of the subscription.
   }
 
   x__xgafv: string, V1 error format.
+    Allowed values
+      1 - v1 error format
+      2 - v2 error format
 
 Returns:
   An object of the form:
 
-    { # An empty message that you can re-use to avoid defining duplicated empty messages in your project. A typical example is to use it as argument or the return value of a service API. For instance: service Foo { rpc Bar (proto2.Empty) returns (proto2.Empty) { }; }; BEGIN GOOGLE-INTERNAL The difference between this one and net/rpc/empty-message.proto is that 1) The generated message here is in proto2 C++ API. 2) The proto2.Empty has minimum dependencies (no message_set or net/rpc dependencies) END GOOGLE-INTERNAL
+    { # An empty message that you can re-use to avoid defining duplicated empty
+      # messages in your project. A typical example is to use it as argument or the
+      # return value of a service API. For instance:
+      #
+      #   service Foo {
+      #     rpc Bar (proto2.Empty) returns (proto2.Empty) { };
+      #   };
+      #
+      # BEGIN GOOGLE-INTERNAL
+      # The difference between this one and net/rpc/empty-message.proto is that
+      # 1) The generated message here is in proto2 C++ API.
+      # 2) The proto2.Empty has minimum dependencies
+      #    (no message_set or net/rpc dependencies)
+      # END GOOGLE-INTERNAL
   }</pre>
 </div>
 
 <div class="method">
     <code class="details" id="pull">pull(body, x__xgafv=None)</code>
-  <pre>Pulls a single message from the server. If return_immediately is true, and no messages are available in the subscription, this method returns FAILED_PRECONDITION. The system is free to return an UNAVAILABLE error if no messages are available in a reasonable amount of time (to reduce system load).
+  <pre>Pulls a single message from the server.
+If return_immediately is true, and no messages are available in the
+subscription, this method returns FAILED_PRECONDITION. The system is free
+to return an UNAVAILABLE error if no messages are available in a
+reasonable amount of time (to reduce system load).
 
 Args:
   body: object, The request body. (required)
     The object takes the form of:
 
 { # Request for the Pull method.
-    "returnImmediately": True or False, # If this is specified as true the system will respond immediately even if it is not able to return a message in the Pull response. Otherwise the system is allowed to wait until at least one message is available rather than returning FAILED_PRECONDITION. The client may cancel the request if it does not wish to wait any longer for the response.
+    "returnImmediately": True or False, # If this is specified as true the system will respond immediately even if
+        # it is not able to return a message in the Pull response. Otherwise the
+        # system is allowed to wait until at least one message is available rather
+        # than returning FAILED_PRECONDITION. The client may cancel the request if
+        # it does not wish to wait any longer for the response.
     "subscription": "A String", # The subscription from which a message should be pulled.
   }
 
   x__xgafv: string, V1 error format.
+    Allowed values
+      1 - v1 error format
+      2 - v2 error format
 
 Returns:
   An object of the form:
 
-    { # Either a PubsubMessage or a truncation event. One of these two must be populated.
+    { # Either a <code>PubsubMessage</code> or a truncation event. One of these two
+      # must be populated.
     "pubsubEvent": { # An event indicating a received message or truncation event. # A pubsub message or truncation event.
-      "deleted": True or False, # Indicates that this subscription has been deleted. (Note that pull subscribers will always receive NOT_FOUND in response in their pull request on the subscription, rather than seeing this boolean.)
+      "deleted": True or False, # Indicates that this subscription has been deleted. (Note that pull
+          # subscribers will always receive NOT_FOUND in response in their pull
+          # request on the subscription, rather than seeing this boolean.)
       "message": { # A message data and its labels. # A received message.
-        "messageId": "A String", # ID of this message assigned by the server at publication time. Guaranteed to be unique within the topic. This value may be read by a subscriber that receives a PubsubMessage via a Pull call or a push delivery. It must not be populated by a publisher in a Publish call.
-        "data": "A String", # The message payload.
-        "publishTime": "A String", # The time at which the message was published. The time is milliseconds since the UNIX epoch.
-        "label": [ # Optional list of labels for this message. Keys in this collection must be unique.
+        "label": [ # Optional list of labels for this message. Keys in this collection must
+            # be unique.
           { # A key-value pair applied to a given object.
             "numValue": "A String", # An integer value.
             "strValue": "A String", # A string value.
-            "key": "A String", # The key of a label is a syntactically valid URL (as per RFC 1738) with the "scheme" and initial slashes omitted and with the additional restrictions noted below. Each key should be globally unique. The "host" portion is called the "namespace" and is not necessarily resolvable to a network endpoint. Instead, the namespace indicates what system or entity defines the semantics of the label. Namespaces do not restrict the set of objects to which a label may be associated. Keys are defined by the following grammar: key = hostname "/" kpath kpath = ksegment *[ "/" ksegment ] ksegment = alphadigit | *[ alphadigit | "-" | "_" | "." ] where "hostname" and "alphadigit" are defined as in RFC 1738. Example key: spanner.google.com/universe
+            "key": "A String", # The key of a label is a syntactically valid URL (as per RFC 1738) with
+                # the "scheme" and initial slashes omitted and with the additional
+                # restrictions noted below.  Each key should be globally unique.  The
+                # "host" portion is called the "namespace" and is not necessarily
+                # resolvable to a network endpoint.  Instead, the namespace indicates what
+                # system or entity defines the semantics of the label.  Namespaces do not
+                # restrict the set of objects to which a label may be associated.
+                #
+                # Keys are defined by the following grammar:
+                #
+                #   key          = hostname "/" kpath
+                #   kpath        = ksegment *[ "/" ksegment ]
+                #   ksegment     = alphadigit | *[ alphadigit | "-" | "_" | "." ]
+                #
+                # where "hostname" and "alphadigit" are defined as in RFC 1738.
+                #
+                # Example key:
+                #   spanner.google.com/universe
           },
         ],
+        "data": "A String", # The message payload.
+        "publishTime": "A String", # The time at which the message was published.
+            # The time is milliseconds since the UNIX epoch.
+        "messageId": "A String", # ID of this message assigned by the server at publication time. Guaranteed
+            # to be unique within the topic. This value may be read by a subscriber
+            # that receives a PubsubMessage via a Pull call or a push delivery. It must
+            # not be populated by a publisher in a Publish call.
       },
-      "truncated": True or False, # Indicates that this subscription has been truncated.
       "subscription": "A String", # The subscription that received the event.
+      "truncated": True or False, # Indicates that this subscription has been truncated.
     },
     "ackId": "A String", # This ID must be used to acknowledge the received event or message.
   }</pre>
@@ -331,42 +548,80 @@
 
 <div class="method">
     <code class="details" id="pullBatch">pullBatch(body, x__xgafv=None)</code>
-  <pre>Pulls messages from the server. Returns an empty list if there are no messages available in the backlog. The system is free to return UNAVAILABLE if there are too many pull requests outstanding for the given subscription.
+  <pre>Pulls messages from the server. Returns an empty list if there are no
+messages available in the backlog. The system is free to return UNAVAILABLE
+if there are too many pull requests outstanding for the given subscription.
 
 Args:
   body: object, The request body. (required)
     The object takes the form of:
 
 { # Request for the PullBatch method.
-    "maxEvents": 42, # The maximum number of PubsubEvents returned for this request. The Pub/Sub system may return fewer than the number of events specified.
-    "returnImmediately": True or False, # If this is specified as true the system will respond immediately even if it is not able to return a message in the Pull response. Otherwise the system is allowed to wait until at least one message is available rather than returning no messages. The client may cancel the request if it does not wish to wait any longer for the response.
+    "maxEvents": 42, # The maximum number of PubsubEvents returned for this request. The Pub/Sub
+        # system may return fewer than the number of events specified.
+    "returnImmediately": True or False, # If this is specified as true the system will respond immediately even if
+        # it is not able to return a message in the Pull response. Otherwise the
+        # system is allowed to wait until at least one message is available rather
+        # than returning no messages. The client may cancel the request if it does
+        # not wish to wait any longer for the response.
     "subscription": "A String", # The subscription from which messages should be pulled.
   }
 
   x__xgafv: string, V1 error format.
+    Allowed values
+      1 - v1 error format
+      2 - v2 error format
 
 Returns:
   An object of the form:
 
     { # Response for the PullBatch method.
-    "pullResponses": [ # Received Pub/Sub messages or status events. The Pub/Sub system will return zero messages if there are no more messages available in the backlog. The Pub/Sub system may return fewer than the max_events requested even if there are more messages available in the backlog.
-      { # Either a PubsubMessage or a truncation event. One of these two must be populated.
+    "pullResponses": [ # Received Pub/Sub messages or status events. The Pub/Sub system will return
+        # zero messages if there are no more messages available in the backlog. The
+        # Pub/Sub system may return fewer than the max_events requested even if
+        # there are more messages available in the backlog.
+      { # Either a <code>PubsubMessage</code> or a truncation event. One of these two
+          # must be populated.
         "pubsubEvent": { # An event indicating a received message or truncation event. # A pubsub message or truncation event.
-          "deleted": True or False, # Indicates that this subscription has been deleted. (Note that pull subscribers will always receive NOT_FOUND in response in their pull request on the subscription, rather than seeing this boolean.)
+          "deleted": True or False, # Indicates that this subscription has been deleted. (Note that pull
+              # subscribers will always receive NOT_FOUND in response in their pull
+              # request on the subscription, rather than seeing this boolean.)
           "message": { # A message data and its labels. # A received message.
-            "messageId": "A String", # ID of this message assigned by the server at publication time. Guaranteed to be unique within the topic. This value may be read by a subscriber that receives a PubsubMessage via a Pull call or a push delivery. It must not be populated by a publisher in a Publish call.
-            "data": "A String", # The message payload.
-            "publishTime": "A String", # The time at which the message was published. The time is milliseconds since the UNIX epoch.
-            "label": [ # Optional list of labels for this message. Keys in this collection must be unique.
+            "label": [ # Optional list of labels for this message. Keys in this collection must
+                # be unique.
               { # A key-value pair applied to a given object.
                 "numValue": "A String", # An integer value.
                 "strValue": "A String", # A string value.
-                "key": "A String", # The key of a label is a syntactically valid URL (as per RFC 1738) with the "scheme" and initial slashes omitted and with the additional restrictions noted below. Each key should be globally unique. The "host" portion is called the "namespace" and is not necessarily resolvable to a network endpoint. Instead, the namespace indicates what system or entity defines the semantics of the label. Namespaces do not restrict the set of objects to which a label may be associated. Keys are defined by the following grammar: key = hostname "/" kpath kpath = ksegment *[ "/" ksegment ] ksegment = alphadigit | *[ alphadigit | "-" | "_" | "." ] where "hostname" and "alphadigit" are defined as in RFC 1738. Example key: spanner.google.com/universe
+                "key": "A String", # The key of a label is a syntactically valid URL (as per RFC 1738) with
+                    # the "scheme" and initial slashes omitted and with the additional
+                    # restrictions noted below.  Each key should be globally unique.  The
+                    # "host" portion is called the "namespace" and is not necessarily
+                    # resolvable to a network endpoint.  Instead, the namespace indicates what
+                    # system or entity defines the semantics of the label.  Namespaces do not
+                    # restrict the set of objects to which a label may be associated.
+                    #
+                    # Keys are defined by the following grammar:
+                    #
+                    #   key          = hostname "/" kpath
+                    #   kpath        = ksegment *[ "/" ksegment ]
+                    #   ksegment     = alphadigit | *[ alphadigit | "-" | "_" | "." ]
+                    #
+                    # where "hostname" and "alphadigit" are defined as in RFC 1738.
+                    #
+                    # Example key:
+                    #   spanner.google.com/universe
               },
             ],
+            "data": "A String", # The message payload.
+            "publishTime": "A String", # The time at which the message was published.
+                # The time is milliseconds since the UNIX epoch.
+            "messageId": "A String", # ID of this message assigned by the server at publication time. Guaranteed
+                # to be unique within the topic. This value may be read by a subscriber
+                # that receives a PubsubMessage via a Pull call or a push delivery. It must
+                # not be populated by a publisher in a Publish call.
           },
-          "truncated": True or False, # Indicates that this subscription has been truncated.
           "subscription": "A String", # The subscription that received the event.
+          "truncated": True or False, # Indicates that this subscription has been truncated.
         },
         "ackId": "A String", # This ID must be used to acknowledge the received event or message.
       },
diff --git a/docs/dyn/pubsub_v1beta1a.topics.html b/docs/dyn/pubsub_v1beta1a.topics.html
index 17132a6..a46385c 100644
--- a/docs/dyn/pubsub_v1beta1a.topics.html
+++ b/docs/dyn/pubsub_v1beta1a.topics.html
@@ -79,10 +79,10 @@
 <p class="firstline">Creates the given topic with the given name.</p>
 <p class="toc_element">
   <code><a href="#delete">delete(topic, x__xgafv=None)</a></code></p>
-<p class="firstline">Deletes the topic with the given name. Returns NOT_FOUND if the topic does not exist. After a topic is deleted, a new topic may be created with the same name.</p>
+<p class="firstline">Deletes the topic with the given name. Returns NOT_FOUND if the topic does</p>
 <p class="toc_element">
   <code><a href="#get">get(topic, x__xgafv=None)</a></code></p>
-<p class="firstline">Gets the configuration of a topic. Since the topic only has the name attribute, this method is only useful to check the existence of a topic. If other attributes are added in the future, they will be returned here.</p>
+<p class="firstline">Gets the configuration of a topic. Since the topic only has the name</p>
 <p class="toc_element">
   <code><a href="#list">list(maxResults=None, pageToken=None, query=None, x__xgafv=None)</a></code></p>
 <p class="firstline">Lists matching topics.</p>
@@ -91,10 +91,10 @@
 <p class="firstline">Retrieves the next page of results.</p>
 <p class="toc_element">
   <code><a href="#publish">publish(body, x__xgafv=None)</a></code></p>
-<p class="firstline">Adds a message to the topic. Returns NOT_FOUND if the topic does not exist.</p>
+<p class="firstline">Adds a message to the topic.  Returns NOT_FOUND if the topic does not</p>
 <p class="toc_element">
   <code><a href="#publishBatch">publishBatch(body, x__xgafv=None)</a></code></p>
-<p class="firstline">Adds one or more messages to the topic. Returns NOT_FOUND if the topic does not exist.</p>
+<p class="firstline">Adds one or more messages to the topic. Returns NOT_FOUND if the topic does</p>
 <h3>Method Details</h3>
 <div class="method">
     <code class="details" id="create">create(body, x__xgafv=None)</code>
@@ -109,6 +109,9 @@
 }
 
   x__xgafv: string, V1 error format.
+    Allowed values
+      1 - v1 error format
+      2 - v2 error format
 
 Returns:
   An object of the form:
@@ -120,26 +123,49 @@
 
 <div class="method">
     <code class="details" id="delete">delete(topic, x__xgafv=None)</code>
-  <pre>Deletes the topic with the given name. Returns NOT_FOUND if the topic does not exist. After a topic is deleted, a new topic may be created with the same name.
+  <pre>Deletes the topic with the given name. Returns NOT_FOUND if the topic does
+not exist. After a topic is deleted, a new topic may be created with the
+same name.
 
 Args:
   topic: string, Name of the topic to delete. (required)
   x__xgafv: string, V1 error format.
+    Allowed values
+      1 - v1 error format
+      2 - v2 error format
 
 Returns:
   An object of the form:
 
-    { # An empty message that you can re-use to avoid defining duplicated empty messages in your project. A typical example is to use it as argument or the return value of a service API. For instance: service Foo { rpc Bar (proto2.Empty) returns (proto2.Empty) { }; }; BEGIN GOOGLE-INTERNAL The difference between this one and net/rpc/empty-message.proto is that 1) The generated message here is in proto2 C++ API. 2) The proto2.Empty has minimum dependencies (no message_set or net/rpc dependencies) END GOOGLE-INTERNAL
+    { # An empty message that you can re-use to avoid defining duplicated empty
+      # messages in your project. A typical example is to use it as argument or the
+      # return value of a service API. For instance:
+      #
+      #   service Foo {
+      #     rpc Bar (proto2.Empty) returns (proto2.Empty) { };
+      #   };
+      #
+      # BEGIN GOOGLE-INTERNAL
+      # The difference between this one and net/rpc/empty-message.proto is that
+      # 1) The generated message here is in proto2 C++ API.
+      # 2) The proto2.Empty has minimum dependencies
+      #    (no message_set or net/rpc dependencies)
+      # END GOOGLE-INTERNAL
   }</pre>
 </div>
 
 <div class="method">
     <code class="details" id="get">get(topic, x__xgafv=None)</code>
-  <pre>Gets the configuration of a topic. Since the topic only has the name attribute, this method is only useful to check the existence of a topic. If other attributes are added in the future, they will be returned here.
+  <pre>Gets the configuration of a topic. Since the topic only has the name
+attribute, this method is only useful to check the existence of a topic.
+If other attributes are added in the future, they will be returned here.
 
 Args:
   topic: string, The name of the topic to get. (required)
   x__xgafv: string, V1 error format.
+    Allowed values
+      1 - v1 error format
+      2 - v2 error format
 
 Returns:
   An object of the form:
@@ -155,9 +181,13 @@
 
 Args:
   maxResults: integer, Maximum number of topics to return.
-  pageToken: string, The value obtained in the last ListTopicsResponse for continuation.
+  pageToken: string, The value obtained in the last <code>ListTopicsResponse</code>
+for continuation.
   query: string, A valid label query expression.
   x__xgafv: string, V1 error format.
+    Allowed values
+      1 - v1 error format
+      2 - v2 error format
 
 Returns:
   An object of the form:
@@ -168,7 +198,9 @@
         "name": "A String", # Name of the topic.
       },
     ],
-    "nextPageToken": "A String", # If not empty, indicates that there are more topics that match the request, and this value should be passed to the next ListTopicsRequest to continue.
+    "nextPageToken": "A String", # If not empty, indicates that there are more topics that match the request,
+        # and this value should be passed to the next <code>ListTopicsRequest</code>
+        # to continue.
   }</pre>
 </div>
 
@@ -188,7 +220,8 @@
 
 <div class="method">
     <code class="details" id="publish">publish(body, x__xgafv=None)</code>
-  <pre>Adds a message to the topic. Returns NOT_FOUND if the topic does not exist.
+  <pre>Adds a message to the topic.  Returns NOT_FOUND if the topic does not
+exist.
 
 Args:
   body: object, The request body. (required)
@@ -197,31 +230,70 @@
 { # Request for the Publish method.
     "topic": "A String", # The message in the request will be published on this topic.
     "message": { # A message data and its labels. # The message to publish.
-      "messageId": "A String", # ID of this message assigned by the server at publication time. Guaranteed to be unique within the topic. This value may be read by a subscriber that receives a PubsubMessage via a Pull call or a push delivery. It must not be populated by a publisher in a Publish call.
-      "data": "A String", # The message payload.
-      "publishTime": "A String", # The time at which the message was published. The time is milliseconds since the UNIX epoch.
-      "label": [ # Optional list of labels for this message. Keys in this collection must be unique.
+      "label": [ # Optional list of labels for this message. Keys in this collection must
+          # be unique.
         { # A key-value pair applied to a given object.
           "numValue": "A String", # An integer value.
           "strValue": "A String", # A string value.
-          "key": "A String", # The key of a label is a syntactically valid URL (as per RFC 1738) with the "scheme" and initial slashes omitted and with the additional restrictions noted below. Each key should be globally unique. The "host" portion is called the "namespace" and is not necessarily resolvable to a network endpoint. Instead, the namespace indicates what system or entity defines the semantics of the label. Namespaces do not restrict the set of objects to which a label may be associated. Keys are defined by the following grammar: key = hostname "/" kpath kpath = ksegment *[ "/" ksegment ] ksegment = alphadigit | *[ alphadigit | "-" | "_" | "." ] where "hostname" and "alphadigit" are defined as in RFC 1738. Example key: spanner.google.com/universe
+          "key": "A String", # The key of a label is a syntactically valid URL (as per RFC 1738) with
+              # the "scheme" and initial slashes omitted and with the additional
+              # restrictions noted below.  Each key should be globally unique.  The
+              # "host" portion is called the "namespace" and is not necessarily
+              # resolvable to a network endpoint.  Instead, the namespace indicates what
+              # system or entity defines the semantics of the label.  Namespaces do not
+              # restrict the set of objects to which a label may be associated.
+              #
+              # Keys are defined by the following grammar:
+              #
+              #   key          = hostname "/" kpath
+              #   kpath        = ksegment *[ "/" ksegment ]
+              #   ksegment     = alphadigit | *[ alphadigit | "-" | "_" | "." ]
+              #
+              # where "hostname" and "alphadigit" are defined as in RFC 1738.
+              #
+              # Example key:
+              #   spanner.google.com/universe
         },
       ],
+      "data": "A String", # The message payload.
+      "publishTime": "A String", # The time at which the message was published.
+          # The time is milliseconds since the UNIX epoch.
+      "messageId": "A String", # ID of this message assigned by the server at publication time. Guaranteed
+          # to be unique within the topic. This value may be read by a subscriber
+          # that receives a PubsubMessage via a Pull call or a push delivery. It must
+          # not be populated by a publisher in a Publish call.
     },
   }
 
   x__xgafv: string, V1 error format.
+    Allowed values
+      1 - v1 error format
+      2 - v2 error format
 
 Returns:
   An object of the form:
 
-    { # An empty message that you can re-use to avoid defining duplicated empty messages in your project. A typical example is to use it as argument or the return value of a service API. For instance: service Foo { rpc Bar (proto2.Empty) returns (proto2.Empty) { }; }; BEGIN GOOGLE-INTERNAL The difference between this one and net/rpc/empty-message.proto is that 1) The generated message here is in proto2 C++ API. 2) The proto2.Empty has minimum dependencies (no message_set or net/rpc dependencies) END GOOGLE-INTERNAL
+    { # An empty message that you can re-use to avoid defining duplicated empty
+      # messages in your project. A typical example is to use it as argument or the
+      # return value of a service API. For instance:
+      #
+      #   service Foo {
+      #     rpc Bar (proto2.Empty) returns (proto2.Empty) { };
+      #   };
+      #
+      # BEGIN GOOGLE-INTERNAL
+      # The difference between this one and net/rpc/empty-message.proto is that
+      # 1) The generated message here is in proto2 C++ API.
+      # 2) The proto2.Empty has minimum dependencies
+      #    (no message_set or net/rpc dependencies)
+      # END GOOGLE-INTERNAL
   }</pre>
 </div>
 
 <div class="method">
     <code class="details" id="publishBatch">publishBatch(body, x__xgafv=None)</code>
-  <pre>Adds one or more messages to the topic. Returns NOT_FOUND if the topic does not exist.
+  <pre>Adds one or more messages to the topic. Returns NOT_FOUND if the topic does
+not exist.
 
 Args:
   body: object, The request body. (required)
@@ -231,27 +303,54 @@
     "topic": "A String", # The messages in the request will be published on this topic.
     "messages": [ # The messages to publish.
       { # A message data and its labels.
-        "messageId": "A String", # ID of this message assigned by the server at publication time. Guaranteed to be unique within the topic. This value may be read by a subscriber that receives a PubsubMessage via a Pull call or a push delivery. It must not be populated by a publisher in a Publish call.
-        "data": "A String", # The message payload.
-        "publishTime": "A String", # The time at which the message was published. The time is milliseconds since the UNIX epoch.
-        "label": [ # Optional list of labels for this message. Keys in this collection must be unique.
+        "label": [ # Optional list of labels for this message. Keys in this collection must
+            # be unique.
           { # A key-value pair applied to a given object.
             "numValue": "A String", # An integer value.
             "strValue": "A String", # A string value.
-            "key": "A String", # The key of a label is a syntactically valid URL (as per RFC 1738) with the "scheme" and initial slashes omitted and with the additional restrictions noted below. Each key should be globally unique. The "host" portion is called the "namespace" and is not necessarily resolvable to a network endpoint. Instead, the namespace indicates what system or entity defines the semantics of the label. Namespaces do not restrict the set of objects to which a label may be associated. Keys are defined by the following grammar: key = hostname "/" kpath kpath = ksegment *[ "/" ksegment ] ksegment = alphadigit | *[ alphadigit | "-" | "_" | "." ] where "hostname" and "alphadigit" are defined as in RFC 1738. Example key: spanner.google.com/universe
+            "key": "A String", # The key of a label is a syntactically valid URL (as per RFC 1738) with
+                # the "scheme" and initial slashes omitted and with the additional
+                # restrictions noted below.  Each key should be globally unique.  The
+                # "host" portion is called the "namespace" and is not necessarily
+                # resolvable to a network endpoint.  Instead, the namespace indicates what
+                # system or entity defines the semantics of the label.  Namespaces do not
+                # restrict the set of objects to which a label may be associated.
+                #
+                # Keys are defined by the following grammar:
+                #
+                #   key          = hostname "/" kpath
+                #   kpath        = ksegment *[ "/" ksegment ]
+                #   ksegment     = alphadigit | *[ alphadigit | "-" | "_" | "." ]
+                #
+                # where "hostname" and "alphadigit" are defined as in RFC 1738.
+                #
+                # Example key:
+                #   spanner.google.com/universe
           },
         ],
+        "data": "A String", # The message payload.
+        "publishTime": "A String", # The time at which the message was published.
+            # The time is milliseconds since the UNIX epoch.
+        "messageId": "A String", # ID of this message assigned by the server at publication time. Guaranteed
+            # to be unique within the topic. This value may be read by a subscriber
+            # that receives a PubsubMessage via a Pull call or a push delivery. It must
+            # not be populated by a publisher in a Publish call.
       },
     ],
   }
 
   x__xgafv: string, V1 error format.
+    Allowed values
+      1 - v1 error format
+      2 - v2 error format
 
 Returns:
   An object of the form:
 
     { # Response for the PublishBatch method.
-    "messageIds": [ # The server-assigned ID of each published message, in the same order as the messages in the request. IDs are guaranteed to be unique within the topic.
+    "messageIds": [ # The server-assigned ID of each published message, in the same order as
+        # the messages in the request. IDs are guaranteed to be unique within
+        # the topic.
       "A String",
     ],
   }</pre>
diff --git a/docs/dyn/pubsub_v1beta2.projects.subscriptions.html b/docs/dyn/pubsub_v1beta2.projects.subscriptions.html
index 84a4678..1b34bc4 100644
--- a/docs/dyn/pubsub_v1beta2.projects.subscriptions.html
+++ b/docs/dyn/pubsub_v1beta2.projects.subscriptions.html
@@ -76,19 +76,19 @@
 <h2>Instance Methods</h2>
 <p class="toc_element">
   <code><a href="#acknowledge">acknowledge(subscription, body, x__xgafv=None)</a></code></p>
-<p class="firstline">Acknowledges the messages associated with the `ack_ids` in the `AcknowledgeRequest`. The Pub/Sub system can remove the relevant messages from the subscription. Acknowledging a message whose ack deadline has expired may succeed, but such a message may be redelivered later. Acknowledging a message more than once will not result in an error.</p>
+<p class="firstline">Acknowledges the messages associated with the `ack_ids` in the</p>
 <p class="toc_element">
-  <code><a href="#create">create(name, body, x__xgafv=None)</a></code></p>
-<p class="firstline">Creates a subscription to a given topic. If the subscription already exists, returns `ALREADY_EXISTS`. If the corresponding topic doesn't exist, returns `NOT_FOUND`. If the name is not provided in the request, the server will assign a random name for this subscription on the same project as the topic. Note that for REST API requests, you must specify a name.</p>
+  <code><a href="#create">create(name=None, body, x__xgafv=None)</a></code></p>
+<p class="firstline">Creates a subscription to a given topic.</p>
 <p class="toc_element">
   <code><a href="#delete">delete(subscription, x__xgafv=None)</a></code></p>
-<p class="firstline">Deletes an existing subscription. All pending messages in the subscription are immediately dropped. Calls to `Pull` after deletion will return `NOT_FOUND`. After a subscription is deleted, a new one may be created with the same name, but the new one has no association with the old subscription, or its topic unless the same topic is specified.</p>
+<p class="firstline">Deletes an existing subscription. All pending messages in the subscription</p>
 <p class="toc_element">
   <code><a href="#get">get(subscription, x__xgafv=None)</a></code></p>
 <p class="firstline">Gets the configuration details of a subscription.</p>
 <p class="toc_element">
-  <code><a href="#getIamPolicy">getIamPolicy(resource, x__xgafv=None)</a></code></p>
-<p class="firstline">Gets the access control policy for a resource. Returns an empty policy if the resource exists and does not have a policy set.</p>
+  <code><a href="#getIamPolicy">getIamPolicy(resource=None, x__xgafv=None)</a></code></p>
+<p class="firstline">Gets the access control policy for a resource.</p>
 <p class="toc_element">
   <code><a href="#list">list(project, pageSize=None, pageToken=None, x__xgafv=None)</a></code></p>
 <p class="firstline">Lists matching subscriptions.</p>
@@ -97,23 +97,29 @@
 <p class="firstline">Retrieves the next page of results.</p>
 <p class="toc_element">
   <code><a href="#modifyAckDeadline">modifyAckDeadline(subscription, body, x__xgafv=None)</a></code></p>
-<p class="firstline">Modifies the ack deadline for a specific message. This method is useful to indicate that more time is needed to process a message by the subscriber, or to make the message available for redelivery if the processing was interrupted. Note that this does not modify the subscription-level `ackDeadlineSeconds` used for subsequent messages.</p>
+<p class="firstline">Modifies the ack deadline for a specific message. This method is useful</p>
 <p class="toc_element">
   <code><a href="#modifyPushConfig">modifyPushConfig(subscription, body, x__xgafv=None)</a></code></p>
-<p class="firstline">Modifies the `PushConfig` for a specified subscription. This may be used to change a push subscription to a pull one (signified by an empty `PushConfig`) or vice versa, or change the endpoint URL and other attributes of a push subscription. Messages will accumulate for delivery continuously through the call regardless of changes to the `PushConfig`.</p>
+<p class="firstline">Modifies the `PushConfig` for a specified subscription.</p>
 <p class="toc_element">
   <code><a href="#pull">pull(subscription, body, x__xgafv=None)</a></code></p>
-<p class="firstline">Pulls messages from the server. Returns an empty list if there are no messages available in the backlog. The server may return `UNAVAILABLE` if there are too many concurrent pull requests pending for the given subscription.</p>
+<p class="firstline">Pulls messages from the server. Returns an empty list if there are no</p>
 <p class="toc_element">
-  <code><a href="#setIamPolicy">setIamPolicy(resource, body, x__xgafv=None)</a></code></p>
-<p class="firstline">Sets the access control policy on the specified resource. Replaces any existing policy.</p>
+  <code><a href="#setIamPolicy">setIamPolicy(resource=None, body, x__xgafv=None)</a></code></p>
+<p class="firstline">Sets the access control policy on the specified resource. Replaces any</p>
 <p class="toc_element">
-  <code><a href="#testIamPermissions">testIamPermissions(resource, body, x__xgafv=None)</a></code></p>
+  <code><a href="#testIamPermissions">testIamPermissions(resource=None, body, x__xgafv=None)</a></code></p>
 <p class="firstline">Returns permissions that a caller has on the specified resource.</p>
 <h3>Method Details</h3>
 <div class="method">
     <code class="details" id="acknowledge">acknowledge(subscription, body, x__xgafv=None)</code>
-  <pre>Acknowledges the messages associated with the `ack_ids` in the `AcknowledgeRequest`. The Pub/Sub system can remove the relevant messages from the subscription. Acknowledging a message whose ack deadline has expired may succeed, but such a message may be redelivered later. Acknowledging a message more than once will not result in an error.
+  <pre>Acknowledges the messages associated with the `ack_ids` in the
+`AcknowledgeRequest`. The Pub/Sub system can remove the relevant messages
+from the subscription.
+
+Acknowledging a message whose ack deadline has expired may succeed,
+but such a message may be redelivered later. Acknowledging a message more
+than once will not result in an error.
 
 Args:
   subscription: string, The subscription whose message is being acknowledged. (required)
@@ -121,71 +127,208 @@
     The object takes the form of:
 
 { # Request for the Acknowledge method.
-    "ackIds": [ # The acknowledgment ID for the messages being acknowledged that was returned by the Pub/Sub system in the `Pull` response. Must not be empty.
+    "ackIds": [ # The acknowledgment ID for the messages being acknowledged that was returned
+        # by the Pub/Sub system in the `Pull` response. Must not be empty.
       "A String",
     ],
   }
 
   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 `{}`.
+    { # 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="create">create(name, body, x__xgafv=None)</code>
-  <pre>Creates a subscription to a given topic. If the subscription already exists, returns `ALREADY_EXISTS`. If the corresponding topic doesn't exist, returns `NOT_FOUND`. If the name is not provided in the request, the server will assign a random name for this subscription on the same project as the topic. Note that for REST API requests, you must specify a name.
+    <code class="details" id="create">create(name=None, body, x__xgafv=None)</code>
+  <pre>Creates a subscription to a given topic.
+If the subscription already exists, returns `ALREADY_EXISTS`.
+If the corresponding topic doesn't exist, returns `NOT_FOUND`.
+
+If the name is not provided in the request, the server will assign a random
+name for this subscription on the same project as the topic. Note that
+for REST API requests, you must specify a name.
 
 Args:
-  name: string, The name of the subscription. It must have the format `"projects/{project}/subscriptions/{subscription}"`. `{subscription}` must start with a letter, and contain only letters (`[A-Za-z]`), numbers (`[0-9]`), dashes (`-`), underscores (`_`), periods (`.`), tildes (`~`), plus (`+`) or percent signs (`%`). It must be between 3 and 255 characters in length, and it must not start with `"goog"`. (required)
+  name: string, The name of the subscription. It must have the format
+`"projects/{project}/subscriptions/{subscription}"`. `{subscription}` must
+start with a letter, and contain only letters (`[A-Za-z]`), numbers
+(`[0-9]`), dashes (`-`), underscores (`_`), periods (`.`), tildes (`~`),
+plus (`+`) or percent signs (`%`). It must be between 3 and 255 characters
+in length, and it must not start with `"goog"`. (required)
   body: object, The request body. (required)
     The object takes the form of:
 
 { # A subscription resource.
-  "topic": "A String", # The name of the topic from which this subscription is receiving messages. The value of this field will be `_deleted-topic_` if the topic has been deleted.
-  "ackDeadlineSeconds": 42, # This value is the maximum time after a subscriber receives a message before the subscriber should acknowledge the message. After message delivery but before the ack deadline expires and before the message is acknowledged, it is an outstanding message and will not be delivered again during that time (on a best-effort basis). For pull subscriptions, this value is used as the initial value for the ack deadline. To override this value for a given message, call `ModifyAckDeadline` with the corresponding `ack_id` if using pull. The maximum custom deadline you can specify is 600 seconds (10 minutes). For push delivery, this value is also used to set the request timeout for the call to the push endpoint. If the subscriber never acknowledges the message, the Pub/Sub system will eventually redeliver the message. If this parameter is 0, a default value of 10 seconds is used.
-  "pushConfig": { # Configuration for a push delivery endpoint. # If push delivery is used with this subscription, this field is used to configure it. An empty `pushConfig` signifies that the subscriber will pull and ack messages using API methods.
-    "attributes": { # Endpoint configuration attributes. Every endpoint has a set of API supported attributes that can be used to control different aspects of the message delivery. The currently supported attribute is `x-goog-version`, which you can use to change the format of the push message. This attribute indicates the version of the data expected by the endpoint. This controls the shape of the envelope (i.e. its fields and metadata). The endpoint version is based on the version of the Pub/Sub API. If not present during the `CreateSubscription` call, it will default to the version of the API used to make such call. If not present during a `ModifyPushConfig` call, its value will not be changed. `GetSubscription` calls will always return a valid version, even if the subscription was created without this attribute. The possible values for this attribute are: * `v1beta1`: uses the push format defined in the v1beta1 Pub/Sub API. * `v1` or `v1beta2`: uses the push format defined in the v1 Pub/Sub API.
+  "topic": "A String", # The name of the topic from which this subscription is receiving messages.
+      # The value of this field will be `_deleted-topic_` if the topic has been
+      # deleted.
+  "ackDeadlineSeconds": 42, # This value is the maximum time after a subscriber receives a message
+      # before the subscriber should acknowledge the message. After message
+      # delivery but before the ack deadline expires and before the message is
+      # acknowledged, it is an outstanding message and will not be delivered
+      # again during that time (on a best-effort basis).
+      # 
+      # For pull subscriptions, this value is used as the initial value for the ack
+      # deadline. To override this value for a given message, call
+      # `ModifyAckDeadline` with the corresponding `ack_id` if using pull.
+      # The maximum custom deadline you can specify is 600 seconds (10 minutes).
+      # 
+      # For push delivery, this value is also used to set the request timeout for
+      # the call to the push endpoint.
+      # 
+      # If the subscriber never acknowledges the message, the Pub/Sub
+      # system will eventually redeliver the message.
+      # 
+      # If this parameter is 0, a default value of 10 seconds is used.
+  "pushConfig": { # Configuration for a push delivery endpoint. # If push delivery is used with this subscription, this field is
+      # used to configure it. An empty `pushConfig` signifies that the subscriber
+      # will pull and ack messages using API methods.
+    "attributes": { # Endpoint configuration attributes.
+        #
+        # Every endpoint has a set of API supported attributes that can be used to
+        # control different aspects of the message delivery.
+        #
+        # The currently supported attribute is `x-goog-version`, which you can
+        # use to change the format of the push message. This attribute
+        # indicates the version of the data expected by the endpoint. This
+        # controls the shape of the envelope (i.e. its fields and metadata).
+        # The endpoint version is based on the version of the Pub/Sub
+        # API.
+        #
+        # If not present during the `CreateSubscription` call, it will default to
+        # the version of the API used to make such call. If not present during a
+        # `ModifyPushConfig` call, its value will not be changed. `GetSubscription`
+        # calls will always return a valid version, even if the subscription was
+        # created without this attribute.
+        #
+        # The possible values for this attribute are:
+        #
+        # * `v1beta1`: uses the push format defined in the v1beta1 Pub/Sub API.
+        # * `v1` or `v1beta2`: uses the push format defined in the v1 Pub/Sub API.
       "a_key": "A String",
     },
-    "pushEndpoint": "A String", # A URL locating the endpoint to which messages should be pushed. For example, a Webhook endpoint might use "https://example.com/push".
+    "pushEndpoint": "A String", # A URL locating the endpoint to which messages should be pushed.
+        # For example, a Webhook endpoint might use "https://example.com/push".
   },
-  "name": "A String", # The name of the subscription. It must have the format `"projects/{project}/subscriptions/{subscription}"`. `{subscription}` must start with a letter, and contain only letters (`[A-Za-z]`), numbers (`[0-9]`), dashes (`-`), underscores (`_`), periods (`.`), tildes (`~`), plus (`+`) or percent signs (`%`). It must be between 3 and 255 characters in length, and it must not start with `"goog"`.
+  "name": "A String", # The name of the subscription. It must have the format
+      # `"projects/{project}/subscriptions/{subscription}"`. `{subscription}` must
+      # start with a letter, and contain only letters (`[A-Za-z]`), numbers
+      # (`[0-9]`), dashes (`-`), underscores (`_`), periods (`.`), tildes (`~`),
+      # plus (`+`) or percent signs (`%`). It must be between 3 and 255 characters
+      # in length, and it must not start with `"goog"`.
 }
 
   x__xgafv: string, V1 error format.
+    Allowed values
+      1 - v1 error format
+      2 - v2 error format
 
 Returns:
   An object of the form:
 
     { # A subscription resource.
-    "topic": "A String", # The name of the topic from which this subscription is receiving messages. The value of this field will be `_deleted-topic_` if the topic has been deleted.
-    "ackDeadlineSeconds": 42, # This value is the maximum time after a subscriber receives a message before the subscriber should acknowledge the message. After message delivery but before the ack deadline expires and before the message is acknowledged, it is an outstanding message and will not be delivered again during that time (on a best-effort basis). For pull subscriptions, this value is used as the initial value for the ack deadline. To override this value for a given message, call `ModifyAckDeadline` with the corresponding `ack_id` if using pull. The maximum custom deadline you can specify is 600 seconds (10 minutes). For push delivery, this value is also used to set the request timeout for the call to the push endpoint. If the subscriber never acknowledges the message, the Pub/Sub system will eventually redeliver the message. If this parameter is 0, a default value of 10 seconds is used.
-    "pushConfig": { # Configuration for a push delivery endpoint. # If push delivery is used with this subscription, this field is used to configure it. An empty `pushConfig` signifies that the subscriber will pull and ack messages using API methods.
-      "attributes": { # Endpoint configuration attributes. Every endpoint has a set of API supported attributes that can be used to control different aspects of the message delivery. The currently supported attribute is `x-goog-version`, which you can use to change the format of the push message. This attribute indicates the version of the data expected by the endpoint. This controls the shape of the envelope (i.e. its fields and metadata). The endpoint version is based on the version of the Pub/Sub API. If not present during the `CreateSubscription` call, it will default to the version of the API used to make such call. If not present during a `ModifyPushConfig` call, its value will not be changed. `GetSubscription` calls will always return a valid version, even if the subscription was created without this attribute. The possible values for this attribute are: * `v1beta1`: uses the push format defined in the v1beta1 Pub/Sub API. * `v1` or `v1beta2`: uses the push format defined in the v1 Pub/Sub API.
+    "topic": "A String", # The name of the topic from which this subscription is receiving messages.
+        # The value of this field will be `_deleted-topic_` if the topic has been
+        # deleted.
+    "ackDeadlineSeconds": 42, # This value is the maximum time after a subscriber receives a message
+        # before the subscriber should acknowledge the message. After message
+        # delivery but before the ack deadline expires and before the message is
+        # acknowledged, it is an outstanding message and will not be delivered
+        # again during that time (on a best-effort basis).
+        #
+        # For pull subscriptions, this value is used as the initial value for the ack
+        # deadline. To override this value for a given message, call
+        # `ModifyAckDeadline` with the corresponding `ack_id` if using pull.
+        # The maximum custom deadline you can specify is 600 seconds (10 minutes).
+        #
+        # For push delivery, this value is also used to set the request timeout for
+        # the call to the push endpoint.
+        #
+        # If the subscriber never acknowledges the message, the Pub/Sub
+        # system will eventually redeliver the message.
+        #
+        # If this parameter is 0, a default value of 10 seconds is used.
+    "pushConfig": { # Configuration for a push delivery endpoint. # If push delivery is used with this subscription, this field is
+        # used to configure it. An empty `pushConfig` signifies that the subscriber
+        # will pull and ack messages using API methods.
+      "attributes": { # Endpoint configuration attributes.
+          #
+          # Every endpoint has a set of API supported attributes that can be used to
+          # control different aspects of the message delivery.
+          #
+          # The currently supported attribute is `x-goog-version`, which you can
+          # use to change the format of the push message. This attribute
+          # indicates the version of the data expected by the endpoint. This
+          # controls the shape of the envelope (i.e. its fields and metadata).
+          # The endpoint version is based on the version of the Pub/Sub
+          # API.
+          #
+          # If not present during the `CreateSubscription` call, it will default to
+          # the version of the API used to make such call. If not present during a
+          # `ModifyPushConfig` call, its value will not be changed. `GetSubscription`
+          # calls will always return a valid version, even if the subscription was
+          # created without this attribute.
+          #
+          # The possible values for this attribute are:
+          #
+          # * `v1beta1`: uses the push format defined in the v1beta1 Pub/Sub API.
+          # * `v1` or `v1beta2`: uses the push format defined in the v1 Pub/Sub API.
         "a_key": "A String",
       },
-      "pushEndpoint": "A String", # A URL locating the endpoint to which messages should be pushed. For example, a Webhook endpoint might use "https://example.com/push".
+      "pushEndpoint": "A String", # A URL locating the endpoint to which messages should be pushed.
+          # For example, a Webhook endpoint might use "https://example.com/push".
     },
-    "name": "A String", # The name of the subscription. It must have the format `"projects/{project}/subscriptions/{subscription}"`. `{subscription}` must start with a letter, and contain only letters (`[A-Za-z]`), numbers (`[0-9]`), dashes (`-`), underscores (`_`), periods (`.`), tildes (`~`), plus (`+`) or percent signs (`%`). It must be between 3 and 255 characters in length, and it must not start with `"goog"`.
+    "name": "A String", # The name of the subscription. It must have the format
+        # `"projects/{project}/subscriptions/{subscription}"`. `{subscription}` must
+        # start with a letter, and contain only letters (`[A-Za-z]`), numbers
+        # (`[0-9]`), dashes (`-`), underscores (`_`), periods (`.`), tildes (`~`),
+        # plus (`+`) or percent signs (`%`). It must be between 3 and 255 characters
+        # in length, and it must not start with `"goog"`.
   }</pre>
 </div>
 
 <div class="method">
     <code class="details" id="delete">delete(subscription, x__xgafv=None)</code>
-  <pre>Deletes an existing subscription. All pending messages in the subscription are immediately dropped. Calls to `Pull` after deletion will return `NOT_FOUND`. After a subscription is deleted, a new one may be created with the same name, but the new one has no association with the old subscription, or its topic unless the same topic is specified.
+  <pre>Deletes an existing subscription. All pending messages in the subscription
+are immediately dropped. Calls to `Pull` after deletion will return
+`NOT_FOUND`. After a subscription is deleted, a new one may be created with
+the same name, but the new one has no association with the old
+subscription, or its topic unless the same topic is specified.
 
 Args:
   subscription: string, The subscription to delete. (required)
   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 `{}`.
+    { # 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>
 
@@ -196,45 +339,167 @@
 Args:
   subscription: string, The name of the subscription to get. (required)
   x__xgafv: string, V1 error format.
+    Allowed values
+      1 - v1 error format
+      2 - v2 error format
 
 Returns:
   An object of the form:
 
     { # A subscription resource.
-    "topic": "A String", # The name of the topic from which this subscription is receiving messages. The value of this field will be `_deleted-topic_` if the topic has been deleted.
-    "ackDeadlineSeconds": 42, # This value is the maximum time after a subscriber receives a message before the subscriber should acknowledge the message. After message delivery but before the ack deadline expires and before the message is acknowledged, it is an outstanding message and will not be delivered again during that time (on a best-effort basis). For pull subscriptions, this value is used as the initial value for the ack deadline. To override this value for a given message, call `ModifyAckDeadline` with the corresponding `ack_id` if using pull. The maximum custom deadline you can specify is 600 seconds (10 minutes). For push delivery, this value is also used to set the request timeout for the call to the push endpoint. If the subscriber never acknowledges the message, the Pub/Sub system will eventually redeliver the message. If this parameter is 0, a default value of 10 seconds is used.
-    "pushConfig": { # Configuration for a push delivery endpoint. # If push delivery is used with this subscription, this field is used to configure it. An empty `pushConfig` signifies that the subscriber will pull and ack messages using API methods.
-      "attributes": { # Endpoint configuration attributes. Every endpoint has a set of API supported attributes that can be used to control different aspects of the message delivery. The currently supported attribute is `x-goog-version`, which you can use to change the format of the push message. This attribute indicates the version of the data expected by the endpoint. This controls the shape of the envelope (i.e. its fields and metadata). The endpoint version is based on the version of the Pub/Sub API. If not present during the `CreateSubscription` call, it will default to the version of the API used to make such call. If not present during a `ModifyPushConfig` call, its value will not be changed. `GetSubscription` calls will always return a valid version, even if the subscription was created without this attribute. The possible values for this attribute are: * `v1beta1`: uses the push format defined in the v1beta1 Pub/Sub API. * `v1` or `v1beta2`: uses the push format defined in the v1 Pub/Sub API.
+    "topic": "A String", # The name of the topic from which this subscription is receiving messages.
+        # The value of this field will be `_deleted-topic_` if the topic has been
+        # deleted.
+    "ackDeadlineSeconds": 42, # This value is the maximum time after a subscriber receives a message
+        # before the subscriber should acknowledge the message. After message
+        # delivery but before the ack deadline expires and before the message is
+        # acknowledged, it is an outstanding message and will not be delivered
+        # again during that time (on a best-effort basis).
+        #
+        # For pull subscriptions, this value is used as the initial value for the ack
+        # deadline. To override this value for a given message, call
+        # `ModifyAckDeadline` with the corresponding `ack_id` if using pull.
+        # The maximum custom deadline you can specify is 600 seconds (10 minutes).
+        #
+        # For push delivery, this value is also used to set the request timeout for
+        # the call to the push endpoint.
+        #
+        # If the subscriber never acknowledges the message, the Pub/Sub
+        # system will eventually redeliver the message.
+        #
+        # If this parameter is 0, a default value of 10 seconds is used.
+    "pushConfig": { # Configuration for a push delivery endpoint. # If push delivery is used with this subscription, this field is
+        # used to configure it. An empty `pushConfig` signifies that the subscriber
+        # will pull and ack messages using API methods.
+      "attributes": { # Endpoint configuration attributes.
+          #
+          # Every endpoint has a set of API supported attributes that can be used to
+          # control different aspects of the message delivery.
+          #
+          # The currently supported attribute is `x-goog-version`, which you can
+          # use to change the format of the push message. This attribute
+          # indicates the version of the data expected by the endpoint. This
+          # controls the shape of the envelope (i.e. its fields and metadata).
+          # The endpoint version is based on the version of the Pub/Sub
+          # API.
+          #
+          # If not present during the `CreateSubscription` call, it will default to
+          # the version of the API used to make such call. If not present during a
+          # `ModifyPushConfig` call, its value will not be changed. `GetSubscription`
+          # calls will always return a valid version, even if the subscription was
+          # created without this attribute.
+          #
+          # The possible values for this attribute are:
+          #
+          # * `v1beta1`: uses the push format defined in the v1beta1 Pub/Sub API.
+          # * `v1` or `v1beta2`: uses the push format defined in the v1 Pub/Sub API.
         "a_key": "A String",
       },
-      "pushEndpoint": "A String", # A URL locating the endpoint to which messages should be pushed. For example, a Webhook endpoint might use "https://example.com/push".
+      "pushEndpoint": "A String", # A URL locating the endpoint to which messages should be pushed.
+          # For example, a Webhook endpoint might use "https://example.com/push".
     },
-    "name": "A String", # The name of the subscription. It must have the format `"projects/{project}/subscriptions/{subscription}"`. `{subscription}` must start with a letter, and contain only letters (`[A-Za-z]`), numbers (`[0-9]`), dashes (`-`), underscores (`_`), periods (`.`), tildes (`~`), plus (`+`) or percent signs (`%`). It must be between 3 and 255 characters in length, and it must not start with `"goog"`.
+    "name": "A String", # The name of the subscription. It must have the format
+        # `"projects/{project}/subscriptions/{subscription}"`. `{subscription}` must
+        # start with a letter, and contain only letters (`[A-Za-z]`), numbers
+        # (`[0-9]`), dashes (`-`), underscores (`_`), periods (`.`), tildes (`~`),
+        # plus (`+`) or percent signs (`%`). It must be between 3 and 255 characters
+        # in length, and it must not start with `"goog"`.
   }</pre>
 </div>
 
 <div class="method">
-    <code class="details" id="getIamPolicy">getIamPolicy(resource, x__xgafv=None)</code>
-  <pre>Gets the access control policy for a resource. Returns an empty policy if the resource exists and does not have a policy set.
+    <code class="details" id="getIamPolicy">getIamPolicy(resource=None, x__xgafv=None)</code>
+  <pre>Gets the access control policy for a resource.
+Returns an empty policy if the resource exists and does not have a policy
+set.
 
 Args:
-  resource: string, REQUIRED: The resource for which the policy is being requested. `resource` is usually specified as a path. For example, a Project resource is specified as `projects/{project}`. (required)
+  resource: string, REQUIRED: The resource for which the policy is being requested.
+`resource` is usually specified as a path. For example, a Project
+resource is specified as `projects/{project}`. (required)
   x__xgafv: string, V1 error format.
+    Allowed values
+      1 - v1 error format
+      2 - v2 error format
 
 Returns:
   An object of the form:
 
-    { # Defines an Identity and Access Management (IAM) policy. It is used to specify access control policies for Cloud Platform resources. A `Policy` consists of a list of `bindings`. A `Binding` binds a list of `members` to a `role`, where the members can be user accounts, Google groups, Google domains, and service accounts. A `role` is a named list of permissions defined by IAM. **Example** { "bindings": [ { "role": "roles/owner", "members": [ "user:mike@example.com", "group:admins@example.com", "domain:google.com", "serviceAccount:my-other-app@appspot.gserviceaccount.com", ] }, { "role": "roles/viewer", "members": ["user:sean@example.com"] } ] } For a description of IAM and its features, see the [IAM developer's guide](https://cloud.google.com/iam).
-    "bindings": [ # Associates a list of `members` to a `role`. Multiple `bindings` must not be specified for the same `role`. `bindings` with no members will result in an error.
+    { # Defines an Identity and Access Management (IAM) policy. It is used to
+      # specify access control policies for Cloud Platform resources.
+      #
+      #
+      # A `Policy` consists of a list of `bindings`. A `Binding` binds a list of
+      # `members` to a `role`, where the members can be user accounts, Google groups,
+      # Google domains, and service accounts. A `role` is a named list of permissions
+      # defined by IAM.
+      #
+      # **Example**
+      #
+      #     {
+      #       "bindings": [
+      #         {
+      #           "role": "roles/owner",
+      #           "members": [
+      #             "user:mike@example.com",
+      #             "group:admins@example.com",
+      #             "domain:google.com",
+      #             "serviceAccount:my-other-app@appspot.gserviceaccount.com",
+      #           ]
+      #         },
+      #         {
+      #           "role": "roles/viewer",
+      #           "members": ["user:sean@example.com"]
+      #         }
+      #       ]
+      #     }
+      #
+      # For a description of IAM and its features, see the
+      # [IAM developer's guide](https://cloud.google.com/iam).
+    "bindings": [ # Associates a list of `members` to a `role`.
+        # Multiple `bindings` must not be specified for the same `role`.
+        # `bindings` with no members will result in an error.
       { # Associates `members` with a `role`.
-        "role": "A String", # Role that is assigned to `members`. For example, `roles/viewer`, `roles/editor`, or `roles/owner`. Required
-        "members": [ # Specifies the identities requesting access for a Cloud Platform resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@gmail.com` or `joe@example.com`. * `serviceAccount:{emailid}`: An email address that represents a service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: A Google Apps domain name that represents all the users of that domain. For example, `google.com` or `example.com`.
+        "role": "A String", # Role that is assigned to `members`.
+            # For example, `roles/viewer`, `roles/editor`, or `roles/owner`.
+            # Required
+        "members": [ # Specifies the identities requesting access for a Cloud Platform resource.
+            # `members` can have the following values:
+            #
+            # * `allUsers`: A special identifier that represents anyone who is
+            #    on the internet; with or without a Google account.
+            #
+            # * `allAuthenticatedUsers`: A special identifier that represents anyone
+            #    who is authenticated with a Google account or a service account.
+            #
+            # * `user:{emailid}`: An email address that represents a specific Google
+            #    account. For example, `alice@gmail.com` or `joe@example.com`.
+            #
+            #
+            # * `serviceAccount:{emailid}`: An email address that represents a service
+            #    account. For example, `my-other-app@appspot.gserviceaccount.com`.
+            #
+            # * `group:{emailid}`: An email address that represents a Google group.
+            #    For example, `admins@example.com`.
+            #
+            # * `domain:{domain}`: A Google Apps domain name that represents all the
+            #    users of that domain. For example, `google.com` or `example.com`.
+            #
           "A String",
         ],
       },
     ],
+    "etag": "A String", # `etag` is used for optimistic concurrency control as a way to help
+        # prevent simultaneous updates of a policy from overwriting each other.
+        # It is strongly suggested that systems make use of the `etag` in the
+        # read-modify-write cycle to perform policy updates in order to avoid race
+        # conditions: An `etag` is returned in the response to `getIamPolicy`, and
+        # systems are expected to put that etag in the request to `setIamPolicy` to
+        # ensure that their change will be applied to the same version of the policy.
+        #
+        # If no `etag` is provided in the call to `setIamPolicy`, then the existing
+        # policy is overwritten blindly.
     "version": 42, # Version of the `Policy`. The default version is 0.
-    "etag": "A String", # `etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. If no `etag` is provided in the call to `setIamPolicy`, then the existing policy is overwritten blindly.
   }</pre>
 </div>
 
@@ -245,25 +510,80 @@
 Args:
   project: string, The name of the cloud project that subscriptions belong to. (required)
   pageSize: integer, Maximum number of subscriptions to return.
-  pageToken: string, The value returned by the last `ListSubscriptionsResponse`; indicates that this is a continuation of a prior `ListSubscriptions` call, and that the system should return the next page of data.
+  pageToken: string, The value returned by the last `ListSubscriptionsResponse`; indicates that
+this is a continuation of a prior `ListSubscriptions` call, and that the
+system should return the next page of data.
   x__xgafv: string, V1 error format.
+    Allowed values
+      1 - v1 error format
+      2 - v2 error format
 
 Returns:
   An object of the form:
 
     { # Response for the `ListSubscriptions` method.
-    "nextPageToken": "A String", # If not empty, indicates that there may be more subscriptions that match the request; this value should be passed in a new `ListSubscriptionsRequest` to get more subscriptions.
+    "nextPageToken": "A String", # If not empty, indicates that there may be more subscriptions that match
+        # the request; this value should be passed in a new
+        # `ListSubscriptionsRequest` to get more subscriptions.
     "subscriptions": [ # The subscriptions that match the request.
       { # A subscription resource.
-        "topic": "A String", # The name of the topic from which this subscription is receiving messages. The value of this field will be `_deleted-topic_` if the topic has been deleted.
-        "ackDeadlineSeconds": 42, # This value is the maximum time after a subscriber receives a message before the subscriber should acknowledge the message. After message delivery but before the ack deadline expires and before the message is acknowledged, it is an outstanding message and will not be delivered again during that time (on a best-effort basis). For pull subscriptions, this value is used as the initial value for the ack deadline. To override this value for a given message, call `ModifyAckDeadline` with the corresponding `ack_id` if using pull. The maximum custom deadline you can specify is 600 seconds (10 minutes). For push delivery, this value is also used to set the request timeout for the call to the push endpoint. If the subscriber never acknowledges the message, the Pub/Sub system will eventually redeliver the message. If this parameter is 0, a default value of 10 seconds is used.
-        "pushConfig": { # Configuration for a push delivery endpoint. # If push delivery is used with this subscription, this field is used to configure it. An empty `pushConfig` signifies that the subscriber will pull and ack messages using API methods.
-          "attributes": { # Endpoint configuration attributes. Every endpoint has a set of API supported attributes that can be used to control different aspects of the message delivery. The currently supported attribute is `x-goog-version`, which you can use to change the format of the push message. This attribute indicates the version of the data expected by the endpoint. This controls the shape of the envelope (i.e. its fields and metadata). The endpoint version is based on the version of the Pub/Sub API. If not present during the `CreateSubscription` call, it will default to the version of the API used to make such call. If not present during a `ModifyPushConfig` call, its value will not be changed. `GetSubscription` calls will always return a valid version, even if the subscription was created without this attribute. The possible values for this attribute are: * `v1beta1`: uses the push format defined in the v1beta1 Pub/Sub API. * `v1` or `v1beta2`: uses the push format defined in the v1 Pub/Sub API.
+        "topic": "A String", # The name of the topic from which this subscription is receiving messages.
+            # The value of this field will be `_deleted-topic_` if the topic has been
+            # deleted.
+        "ackDeadlineSeconds": 42, # This value is the maximum time after a subscriber receives a message
+            # before the subscriber should acknowledge the message. After message
+            # delivery but before the ack deadline expires and before the message is
+            # acknowledged, it is an outstanding message and will not be delivered
+            # again during that time (on a best-effort basis).
+            #
+            # For pull subscriptions, this value is used as the initial value for the ack
+            # deadline. To override this value for a given message, call
+            # `ModifyAckDeadline` with the corresponding `ack_id` if using pull.
+            # The maximum custom deadline you can specify is 600 seconds (10 minutes).
+            #
+            # For push delivery, this value is also used to set the request timeout for
+            # the call to the push endpoint.
+            #
+            # If the subscriber never acknowledges the message, the Pub/Sub
+            # system will eventually redeliver the message.
+            #
+            # If this parameter is 0, a default value of 10 seconds is used.
+        "pushConfig": { # Configuration for a push delivery endpoint. # If push delivery is used with this subscription, this field is
+            # used to configure it. An empty `pushConfig` signifies that the subscriber
+            # will pull and ack messages using API methods.
+          "attributes": { # Endpoint configuration attributes.
+              #
+              # Every endpoint has a set of API supported attributes that can be used to
+              # control different aspects of the message delivery.
+              #
+              # The currently supported attribute is `x-goog-version`, which you can
+              # use to change the format of the push message. This attribute
+              # indicates the version of the data expected by the endpoint. This
+              # controls the shape of the envelope (i.e. its fields and metadata).
+              # The endpoint version is based on the version of the Pub/Sub
+              # API.
+              #
+              # If not present during the `CreateSubscription` call, it will default to
+              # the version of the API used to make such call. If not present during a
+              # `ModifyPushConfig` call, its value will not be changed. `GetSubscription`
+              # calls will always return a valid version, even if the subscription was
+              # created without this attribute.
+              #
+              # The possible values for this attribute are:
+              #
+              # * `v1beta1`: uses the push format defined in the v1beta1 Pub/Sub API.
+              # * `v1` or `v1beta2`: uses the push format defined in the v1 Pub/Sub API.
             "a_key": "A String",
           },
-          "pushEndpoint": "A String", # A URL locating the endpoint to which messages should be pushed. For example, a Webhook endpoint might use "https://example.com/push".
+          "pushEndpoint": "A String", # A URL locating the endpoint to which messages should be pushed.
+              # For example, a Webhook endpoint might use "https://example.com/push".
         },
-        "name": "A String", # The name of the subscription. It must have the format `"projects/{project}/subscriptions/{subscription}"`. `{subscription}` must start with a letter, and contain only letters (`[A-Za-z]`), numbers (`[0-9]`), dashes (`-`), underscores (`_`), periods (`.`), tildes (`~`), plus (`+`) or percent signs (`%`). It must be between 3 and 255 characters in length, and it must not start with `"goog"`.
+        "name": "A String", # The name of the subscription. It must have the format
+            # `"projects/{project}/subscriptions/{subscription}"`. `{subscription}` must
+            # start with a letter, and contain only letters (`[A-Za-z]`), numbers
+            # (`[0-9]`), dashes (`-`), underscores (`_`), periods (`.`), tildes (`~`),
+            # plus (`+`) or percent signs (`%`). It must be between 3 and 255 characters
+            # in length, and it must not start with `"goog"`.
       },
     ],
   }</pre>
@@ -285,7 +605,11 @@
 
 <div class="method">
     <code class="details" id="modifyAckDeadline">modifyAckDeadline(subscription, body, x__xgafv=None)</code>
-  <pre>Modifies the ack deadline for a specific message. This method is useful to indicate that more time is needed to process a message by the subscriber, or to make the message available for redelivery if the processing was interrupted. Note that this does not modify the subscription-level `ackDeadlineSeconds` used for subsequent messages.
+  <pre>Modifies the ack deadline for a specific message. This method is useful
+to indicate that more time is needed to process a message by the
+subscriber, or to make the message available for redelivery if the
+processing was interrupted. Note that this does not modify the
+subscription-level `ackDeadlineSeconds` used for subsequent messages.
 
 Args:
   subscription: string, The name of the subscription. (required)
@@ -293,25 +617,46 @@
     The object takes the form of:
 
 { # Request for the ModifyAckDeadline method.
-    "ackDeadlineSeconds": 42, # The new ack deadline with respect to the time this request was sent to the Pub/Sub system. Must be >= 0. For example, if the value is 10, the new ack deadline will expire 10 seconds after the `ModifyAckDeadline` call was made. Specifying zero may immediately make the message available for another pull request.
-    "ackId": "A String", # The acknowledgment ID. Either this or ack_ids must be populated, but not both.
+    "ackDeadlineSeconds": 42, # The new ack deadline with respect to the time this request was sent to
+        # the Pub/Sub system. Must be >= 0. For example, if the value is 10, the new
+        # ack deadline will expire 10 seconds after the `ModifyAckDeadline` call
+        # was made. Specifying zero may immediately make the message available for
+        # another pull request.
+    "ackId": "A String", # The acknowledgment ID. Either this or ack_ids must be populated, but not
+        # both.
     "ackIds": [ # List of acknowledgment IDs.
       "A String",
     ],
   }
 
   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 `{}`.
+    { # 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="modifyPushConfig">modifyPushConfig(subscription, body, x__xgafv=None)</code>
-  <pre>Modifies the `PushConfig` for a specified subscription. This may be used to change a push subscription to a pull one (signified by an empty `PushConfig`) or vice versa, or change the endpoint URL and other attributes of a push subscription. Messages will accumulate for delivery continuously through the call regardless of changes to the `PushConfig`.
+  <pre>Modifies the `PushConfig` for a specified subscription.
+
+This may be used to change a push subscription to a pull one (signified by
+an empty `PushConfig`) or vice versa, or change the endpoint URL and other
+attributes of a push subscription. Messages will accumulate for delivery
+continuously through the call regardless of changes to the `PushConfig`.
 
 Args:
   subscription: string, The name of the subscription. (required)
@@ -319,26 +664,67 @@
     The object takes the form of:
 
 { # Request for the ModifyPushConfig method.
-    "pushConfig": { # Configuration for a push delivery endpoint. # The push configuration for future deliveries. An empty `pushConfig` indicates that the Pub/Sub system should stop pushing messages from the given subscription and allow messages to be pulled and acknowledged - effectively pausing the subscription if `Pull` is not called.
-      "attributes": { # Endpoint configuration attributes. Every endpoint has a set of API supported attributes that can be used to control different aspects of the message delivery. The currently supported attribute is `x-goog-version`, which you can use to change the format of the push message. This attribute indicates the version of the data expected by the endpoint. This controls the shape of the envelope (i.e. its fields and metadata). The endpoint version is based on the version of the Pub/Sub API. If not present during the `CreateSubscription` call, it will default to the version of the API used to make such call. If not present during a `ModifyPushConfig` call, its value will not be changed. `GetSubscription` calls will always return a valid version, even if the subscription was created without this attribute. The possible values for this attribute are: * `v1beta1`: uses the push format defined in the v1beta1 Pub/Sub API. * `v1` or `v1beta2`: uses the push format defined in the v1 Pub/Sub API.
+    "pushConfig": { # Configuration for a push delivery endpoint. # The push configuration for future deliveries.
+        # 
+        # An empty `pushConfig` indicates that the Pub/Sub system should
+        # stop pushing messages from the given subscription and allow
+        # messages to be pulled and acknowledged - effectively pausing
+        # the subscription if `Pull` is not called.
+      "attributes": { # Endpoint configuration attributes.
+          #
+          # Every endpoint has a set of API supported attributes that can be used to
+          # control different aspects of the message delivery.
+          #
+          # The currently supported attribute is `x-goog-version`, which you can
+          # use to change the format of the push message. This attribute
+          # indicates the version of the data expected by the endpoint. This
+          # controls the shape of the envelope (i.e. its fields and metadata).
+          # The endpoint version is based on the version of the Pub/Sub
+          # API.
+          #
+          # If not present during the `CreateSubscription` call, it will default to
+          # the version of the API used to make such call. If not present during a
+          # `ModifyPushConfig` call, its value will not be changed. `GetSubscription`
+          # calls will always return a valid version, even if the subscription was
+          # created without this attribute.
+          #
+          # The possible values for this attribute are:
+          #
+          # * `v1beta1`: uses the push format defined in the v1beta1 Pub/Sub API.
+          # * `v1` or `v1beta2`: uses the push format defined in the v1 Pub/Sub API.
         "a_key": "A String",
       },
-      "pushEndpoint": "A String", # A URL locating the endpoint to which messages should be pushed. For example, a Webhook endpoint might use "https://example.com/push".
+      "pushEndpoint": "A String", # A URL locating the endpoint to which messages should be pushed.
+          # For example, a Webhook endpoint might use "https://example.com/push".
     },
   }
 
   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 `{}`.
+    { # 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="pull">pull(subscription, body, x__xgafv=None)</code>
-  <pre>Pulls messages from the server. Returns an empty list if there are no messages available in the backlog. The server may return `UNAVAILABLE` if there are too many concurrent pull requests pending for the given subscription.
+  <pre>Pulls messages from the server. Returns an empty list if there are no
+messages available in the backlog. The server may return `UNAVAILABLE` if
+there are too many concurrent pull requests pending for the given
+subscription.
 
 Args:
   subscription: string, The subscription from which messages should be pulled. (required)
@@ -346,26 +732,44 @@
     The object takes the form of:
 
 { # Request for the `Pull` method.
-    "returnImmediately": True or False, # If this is specified as true the system will respond immediately even if it is not able to return a message in the `Pull` response. Otherwise the system is allowed to wait until at least one message is available rather than returning no messages. The client may cancel the request if it does not wish to wait any longer for the response.
-    "maxMessages": 42, # The maximum number of messages returned for this request. The Pub/Sub system may return fewer than the number specified.
+    "returnImmediately": True or False, # If this is specified as true the system will respond immediately even if
+        # it is not able to return a message in the `Pull` response. Otherwise the
+        # system is allowed to wait until at least one message is available rather
+        # than returning no messages. The client may cancel the request if it does
+        # not wish to wait any longer for the response.
+    "maxMessages": 42, # The maximum number of messages returned for this request. The Pub/Sub
+        # system may return fewer than the number specified.
   }
 
   x__xgafv: string, V1 error format.
+    Allowed values
+      1 - v1 error format
+      2 - v2 error format
 
 Returns:
   An object of the form:
 
     { # Response for the `Pull` method.
-    "receivedMessages": [ # Received Pub/Sub messages. The Pub/Sub system will return zero messages if there are no more available in the backlog. The Pub/Sub system may return fewer than the `maxMessages` requested even if there are more messages available in the backlog.
+    "receivedMessages": [ # Received Pub/Sub messages. The Pub/Sub system will return zero messages if
+        # there are no more available in the backlog. The Pub/Sub system may return
+        # fewer than the `maxMessages` requested even if there are more messages
+        # available in the backlog.
       { # A message and its corresponding acknowledgment ID.
         "ackId": "A String", # This ID can be used to acknowledge the received message.
-        "message": { # A message data and its attributes. The message payload must not be empty; it must contain either a non-empty data field, or at least one attribute. # The message.
+        "message": { # A message data and its attributes. The message payload must not be empty; # The message.
+            # it must contain either a non-empty data field, or at least one attribute.
           "attributes": { # Optional attributes for this message.
             "a_key": "A String",
           },
-          "data": "A String", # The message payload. For JSON requests, the value of this field must be [base64-encoded](https://tools.ietf.org/html/rfc4648).
-          "publishTime": "A String", # The time at which the message was published, populated by the server when it receives the `Publish` call. It must not be populated by the publisher in a `Publish` call.
-          "messageId": "A String", # ID of this message, assigned by the server when the message is published. Guaranteed to be unique within the topic. This value may be read by a subscriber that receives a `PubsubMessage` via a `Pull` call or a push delivery. It must not be populated by the publisher in a `Publish` call.
+          "data": "A String", # The message payload. For JSON requests, the value of this field must be
+              # [base64-encoded](https://tools.ietf.org/html/rfc4648).
+          "publishTime": "A String", # The time at which the message was published, populated by the server when
+              # it receives the `Publish` call. It must not be populated by the
+              # publisher in a `Publish` call.
+          "messageId": "A String", # ID of this message, assigned by the server when the message is published.
+              # Guaranteed to be unique within the topic. This value may be read by a
+              # subscriber that receives a `PubsubMessage` via a `Pull` call or a push
+              # delivery. It must not be populated by the publisher in a `Publish` call.
         },
       },
     ],
@@ -373,70 +777,218 @@
 </div>
 
 <div class="method">
-    <code class="details" id="setIamPolicy">setIamPolicy(resource, body, x__xgafv=None)</code>
-  <pre>Sets the access control policy on the specified resource. Replaces any existing policy.
+    <code class="details" id="setIamPolicy">setIamPolicy(resource=None, body, x__xgafv=None)</code>
+  <pre>Sets the access control policy on the specified resource. Replaces any
+existing policy.
 
 Args:
-  resource: string, REQUIRED: The resource for which the policy is being specified. `resource` is usually specified as a path. For example, a Project resource is specified as `projects/{project}`. (required)
+  resource: string, REQUIRED: The resource for which the policy is being specified.
+`resource` is usually specified as a path. For example, a Project
+resource is specified as `projects/{project}`. (required)
   body: object, The request body. (required)
     The object takes the form of:
 
 { # Request message for `SetIamPolicy` method.
-    "policy": { # Defines an Identity and Access Management (IAM) policy. It is used to specify access control policies for Cloud Platform resources. A `Policy` consists of a list of `bindings`. A `Binding` binds a list of `members` to a `role`, where the members can be user accounts, Google groups, Google domains, and service accounts. A `role` is a named list of permissions defined by IAM. **Example** { "bindings": [ { "role": "roles/owner", "members": [ "user:mike@example.com", "group:admins@example.com", "domain:google.com", "serviceAccount:my-other-app@appspot.gserviceaccount.com", ] }, { "role": "roles/viewer", "members": ["user:sean@example.com"] } ] } For a description of IAM and its features, see the [IAM developer's guide](https://cloud.google.com/iam). # REQUIRED: The complete policy to be applied to the `resource`. The size of the policy is limited to a few 10s of KB. An empty policy is a valid policy but certain Cloud Platform services (such as Projects) might reject them.
-      "bindings": [ # Associates a list of `members` to a `role`. Multiple `bindings` must not be specified for the same `role`. `bindings` with no members will result in an error.
+    "policy": { # Defines an Identity and Access Management (IAM) policy. It is used to # REQUIRED: The complete policy to be applied to the `resource`. The size of
+        # the policy is limited to a few 10s of KB. An empty policy is a
+        # valid policy but certain Cloud Platform services (such as Projects)
+        # might reject them.
+        # specify access control policies for Cloud Platform resources.
+        #
+        #
+        # A `Policy` consists of a list of `bindings`. A `Binding` binds a list of
+        # `members` to a `role`, where the members can be user accounts, Google groups,
+        # Google domains, and service accounts. A `role` is a named list of permissions
+        # defined by IAM.
+        #
+        # **Example**
+        #
+        #     {
+        #       "bindings": [
+        #         {
+        #           "role": "roles/owner",
+        #           "members": [
+        #             "user:mike@example.com",
+        #             "group:admins@example.com",
+        #             "domain:google.com",
+        #             "serviceAccount:my-other-app@appspot.gserviceaccount.com",
+        #           ]
+        #         },
+        #         {
+        #           "role": "roles/viewer",
+        #           "members": ["user:sean@example.com"]
+        #         }
+        #       ]
+        #     }
+        #
+        # For a description of IAM and its features, see the
+        # [IAM developer's guide](https://cloud.google.com/iam).
+      "bindings": [ # Associates a list of `members` to a `role`.
+          # Multiple `bindings` must not be specified for the same `role`.
+          # `bindings` with no members will result in an error.
         { # Associates `members` with a `role`.
-          "role": "A String", # Role that is assigned to `members`. For example, `roles/viewer`, `roles/editor`, or `roles/owner`. Required
-          "members": [ # Specifies the identities requesting access for a Cloud Platform resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@gmail.com` or `joe@example.com`. * `serviceAccount:{emailid}`: An email address that represents a service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: A Google Apps domain name that represents all the users of that domain. For example, `google.com` or `example.com`.
+          "role": "A String", # Role that is assigned to `members`.
+              # For example, `roles/viewer`, `roles/editor`, or `roles/owner`.
+              # Required
+          "members": [ # Specifies the identities requesting access for a Cloud Platform resource.
+              # `members` can have the following values:
+              #
+              # * `allUsers`: A special identifier that represents anyone who is
+              #    on the internet; with or without a Google account.
+              #
+              # * `allAuthenticatedUsers`: A special identifier that represents anyone
+              #    who is authenticated with a Google account or a service account.
+              #
+              # * `user:{emailid}`: An email address that represents a specific Google
+              #    account. For example, `alice@gmail.com` or `joe@example.com`.
+              #
+              #
+              # * `serviceAccount:{emailid}`: An email address that represents a service
+              #    account. For example, `my-other-app@appspot.gserviceaccount.com`.
+              #
+              # * `group:{emailid}`: An email address that represents a Google group.
+              #    For example, `admins@example.com`.
+              #
+              # * `domain:{domain}`: A Google Apps domain name that represents all the
+              #    users of that domain. For example, `google.com` or `example.com`.
+              #
             "A String",
           ],
         },
       ],
+      "etag": "A String", # `etag` is used for optimistic concurrency control as a way to help
+          # prevent simultaneous updates of a policy from overwriting each other.
+          # It is strongly suggested that systems make use of the `etag` in the
+          # read-modify-write cycle to perform policy updates in order to avoid race
+          # conditions: An `etag` is returned in the response to `getIamPolicy`, and
+          # systems are expected to put that etag in the request to `setIamPolicy` to
+          # ensure that their change will be applied to the same version of the policy.
+          #
+          # If no `etag` is provided in the call to `setIamPolicy`, then the existing
+          # policy is overwritten blindly.
       "version": 42, # Version of the `Policy`. The default version is 0.
-      "etag": "A String", # `etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. If no `etag` is provided in the call to `setIamPolicy`, then the existing policy is overwritten blindly.
     },
   }
 
   x__xgafv: string, V1 error format.
+    Allowed values
+      1 - v1 error format
+      2 - v2 error format
 
 Returns:
   An object of the form:
 
-    { # Defines an Identity and Access Management (IAM) policy. It is used to specify access control policies for Cloud Platform resources. A `Policy` consists of a list of `bindings`. A `Binding` binds a list of `members` to a `role`, where the members can be user accounts, Google groups, Google domains, and service accounts. A `role` is a named list of permissions defined by IAM. **Example** { "bindings": [ { "role": "roles/owner", "members": [ "user:mike@example.com", "group:admins@example.com", "domain:google.com", "serviceAccount:my-other-app@appspot.gserviceaccount.com", ] }, { "role": "roles/viewer", "members": ["user:sean@example.com"] } ] } For a description of IAM and its features, see the [IAM developer's guide](https://cloud.google.com/iam).
-    "bindings": [ # Associates a list of `members` to a `role`. Multiple `bindings` must not be specified for the same `role`. `bindings` with no members will result in an error.
+    { # Defines an Identity and Access Management (IAM) policy. It is used to
+      # specify access control policies for Cloud Platform resources.
+      #
+      #
+      # A `Policy` consists of a list of `bindings`. A `Binding` binds a list of
+      # `members` to a `role`, where the members can be user accounts, Google groups,
+      # Google domains, and service accounts. A `role` is a named list of permissions
+      # defined by IAM.
+      #
+      # **Example**
+      #
+      #     {
+      #       "bindings": [
+      #         {
+      #           "role": "roles/owner",
+      #           "members": [
+      #             "user:mike@example.com",
+      #             "group:admins@example.com",
+      #             "domain:google.com",
+      #             "serviceAccount:my-other-app@appspot.gserviceaccount.com",
+      #           ]
+      #         },
+      #         {
+      #           "role": "roles/viewer",
+      #           "members": ["user:sean@example.com"]
+      #         }
+      #       ]
+      #     }
+      #
+      # For a description of IAM and its features, see the
+      # [IAM developer's guide](https://cloud.google.com/iam).
+    "bindings": [ # Associates a list of `members` to a `role`.
+        # Multiple `bindings` must not be specified for the same `role`.
+        # `bindings` with no members will result in an error.
       { # Associates `members` with a `role`.
-        "role": "A String", # Role that is assigned to `members`. For example, `roles/viewer`, `roles/editor`, or `roles/owner`. Required
-        "members": [ # Specifies the identities requesting access for a Cloud Platform resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@gmail.com` or `joe@example.com`. * `serviceAccount:{emailid}`: An email address that represents a service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: A Google Apps domain name that represents all the users of that domain. For example, `google.com` or `example.com`.
+        "role": "A String", # Role that is assigned to `members`.
+            # For example, `roles/viewer`, `roles/editor`, or `roles/owner`.
+            # Required
+        "members": [ # Specifies the identities requesting access for a Cloud Platform resource.
+            # `members` can have the following values:
+            #
+            # * `allUsers`: A special identifier that represents anyone who is
+            #    on the internet; with or without a Google account.
+            #
+            # * `allAuthenticatedUsers`: A special identifier that represents anyone
+            #    who is authenticated with a Google account or a service account.
+            #
+            # * `user:{emailid}`: An email address that represents a specific Google
+            #    account. For example, `alice@gmail.com` or `joe@example.com`.
+            #
+            #
+            # * `serviceAccount:{emailid}`: An email address that represents a service
+            #    account. For example, `my-other-app@appspot.gserviceaccount.com`.
+            #
+            # * `group:{emailid}`: An email address that represents a Google group.
+            #    For example, `admins@example.com`.
+            #
+            # * `domain:{domain}`: A Google Apps domain name that represents all the
+            #    users of that domain. For example, `google.com` or `example.com`.
+            #
           "A String",
         ],
       },
     ],
+    "etag": "A String", # `etag` is used for optimistic concurrency control as a way to help
+        # prevent simultaneous updates of a policy from overwriting each other.
+        # It is strongly suggested that systems make use of the `etag` in the
+        # read-modify-write cycle to perform policy updates in order to avoid race
+        # conditions: An `etag` is returned in the response to `getIamPolicy`, and
+        # systems are expected to put that etag in the request to `setIamPolicy` to
+        # ensure that their change will be applied to the same version of the policy.
+        #
+        # If no `etag` is provided in the call to `setIamPolicy`, then the existing
+        # policy is overwritten blindly.
     "version": 42, # Version of the `Policy`. The default version is 0.
-    "etag": "A String", # `etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. If no `etag` is provided in the call to `setIamPolicy`, then the existing policy is overwritten blindly.
   }</pre>
 </div>
 
 <div class="method">
-    <code class="details" id="testIamPermissions">testIamPermissions(resource, body, x__xgafv=None)</code>
+    <code class="details" id="testIamPermissions">testIamPermissions(resource=None, body, x__xgafv=None)</code>
   <pre>Returns permissions that a caller has on the specified resource.
+If the resource does not exist, this will return an empty set of
+permissions, not a NOT_FOUND error.
 
 Args:
-  resource: string, REQUIRED: The resource for which the policy detail is being requested. `resource` is usually specified as a path. For example, a Project resource is specified as `projects/{project}`. (required)
+  resource: string, REQUIRED: The resource for which the policy detail is being requested.
+`resource` is usually specified as a path. For example, a Project
+resource is specified as `projects/{project}`. (required)
   body: object, The request body. (required)
     The object takes the form of:
 
 { # Request message for `TestIamPermissions` method.
-    "permissions": [ # The set of permissions to check for the `resource`. Permissions with wildcards (such as '*' or 'storage.*') are not allowed. For more information see [IAM Overview](https://cloud.google.com/iam/docs/overview#permissions).
+    "permissions": [ # The set of permissions to check for the `resource`. Permissions with
+        # wildcards (such as '*' or 'storage.*') are not allowed. For more
+        # information see
+        # [IAM Overview](https://cloud.google.com/iam/docs/overview#permissions).
       "A String",
     ],
   }
 
   x__xgafv: string, V1 error format.
+    Allowed values
+      1 - v1 error format
+      2 - v2 error format
 
 Returns:
   An object of the form:
 
     { # Response message for `TestIamPermissions` method.
-    "permissions": [ # A subset of `TestPermissionsRequest.permissions` that the caller is allowed.
+    "permissions": [ # A subset of `TestPermissionsRequest.permissions` that the caller is
+        # allowed.
       "A String",
     ],
   }</pre>
diff --git a/docs/dyn/pubsub_v1beta2.projects.topics.html b/docs/dyn/pubsub_v1beta2.projects.topics.html
index ace8c6b..9898eaa 100644
--- a/docs/dyn/pubsub_v1beta2.projects.topics.html
+++ b/docs/dyn/pubsub_v1beta2.projects.topics.html
@@ -80,17 +80,17 @@
 <p class="firstline">Returns the subscriptions Resource.</p>
 
 <p class="toc_element">
-  <code><a href="#create">create(name, body, x__xgafv=None)</a></code></p>
+  <code><a href="#create">create(name=None, body, x__xgafv=None)</a></code></p>
 <p class="firstline">Creates the given topic with the given name.</p>
 <p class="toc_element">
   <code><a href="#delete">delete(topic, x__xgafv=None)</a></code></p>
-<p class="firstline">Deletes the topic with the given name. Returns `NOT_FOUND` if the topic does not exist. After a topic is deleted, a new topic may be created with the same name; this is an entirely new topic with none of the old configuration or subscriptions. Existing subscriptions to this topic are not deleted, but their `topic` field is set to `_deleted-topic_`.</p>
+<p class="firstline">Deletes the topic with the given name. Returns `NOT_FOUND` if the topic</p>
 <p class="toc_element">
   <code><a href="#get">get(topic, x__xgafv=None)</a></code></p>
 <p class="firstline">Gets the configuration of a topic.</p>
 <p class="toc_element">
-  <code><a href="#getIamPolicy">getIamPolicy(resource, x__xgafv=None)</a></code></p>
-<p class="firstline">Gets the access control policy for a resource. Returns an empty policy if the resource exists and does not have a policy set.</p>
+  <code><a href="#getIamPolicy">getIamPolicy(resource=None, x__xgafv=None)</a></code></p>
+<p class="firstline">Gets the access control policy for a resource.</p>
 <p class="toc_element">
   <code><a href="#list">list(project, pageSize=None, pageToken=None, x__xgafv=None)</a></code></p>
 <p class="firstline">Lists matching topics.</p>
@@ -99,49 +99,82 @@
 <p class="firstline">Retrieves the next page of results.</p>
 <p class="toc_element">
   <code><a href="#publish">publish(topic, body, x__xgafv=None)</a></code></p>
-<p class="firstline">Adds one or more messages to the topic. Returns `NOT_FOUND` if the topic does not exist. The message payload must not be empty; it must contain either a non-empty data field, or at least one attribute.</p>
+<p class="firstline">Adds one or more messages to the topic. Returns `NOT_FOUND` if the topic</p>
 <p class="toc_element">
-  <code><a href="#setIamPolicy">setIamPolicy(resource, body, x__xgafv=None)</a></code></p>
-<p class="firstline">Sets the access control policy on the specified resource. Replaces any existing policy.</p>
+  <code><a href="#setIamPolicy">setIamPolicy(resource=None, body, x__xgafv=None)</a></code></p>
+<p class="firstline">Sets the access control policy on the specified resource. Replaces any</p>
 <p class="toc_element">
-  <code><a href="#testIamPermissions">testIamPermissions(resource, body, x__xgafv=None)</a></code></p>
+  <code><a href="#testIamPermissions">testIamPermissions(resource=None, body, x__xgafv=None)</a></code></p>
 <p class="firstline">Returns permissions that a caller has on the specified resource.</p>
 <h3>Method Details</h3>
 <div class="method">
-    <code class="details" id="create">create(name, body, x__xgafv=None)</code>
+    <code class="details" id="create">create(name=None, body, x__xgafv=None)</code>
   <pre>Creates the given topic with the given name.
 
 Args:
-  name: string, The name of the topic. It must have the format `"projects/{project}/topics/{topic}"`. `{topic}` must start with a letter, and contain only letters (`[A-Za-z]`), numbers (`[0-9]`), dashes (`-`), underscores (`_`), periods (`.`), tildes (`~`), plus (`+`) or percent signs (`%`). It must be between 3 and 255 characters in length, and it must not start with `"goog"`. (required)
+  name: string, The name of the topic. It must have the format
+`"projects/{project}/topics/{topic}"`. `{topic}` must start with a letter,
+and contain only letters (`[A-Za-z]`), numbers (`[0-9]`), dashes (`-`),
+underscores (`_`), periods (`.`), tildes (`~`), plus (`+`) or percent
+signs (`%`). It must be between 3 and 255 characters in length, and it
+must not start with `"goog"`. (required)
   body: object, The request body. (required)
     The object takes the form of:
 
 { # A topic resource.
-  "name": "A String", # The name of the topic. It must have the format `"projects/{project}/topics/{topic}"`. `{topic}` must start with a letter, and contain only letters (`[A-Za-z]`), numbers (`[0-9]`), dashes (`-`), underscores (`_`), periods (`.`), tildes (`~`), plus (`+`) or percent signs (`%`). It must be between 3 and 255 characters in length, and it must not start with `"goog"`.
+  "name": "A String", # The name of the topic. It must have the format
+      # `"projects/{project}/topics/{topic}"`. `{topic}` must start with a letter,
+      # and contain only letters (`[A-Za-z]`), numbers (`[0-9]`), dashes (`-`),
+      # underscores (`_`), periods (`.`), tildes (`~`), plus (`+`) or percent
+      # signs (`%`). It must be between 3 and 255 characters in length, and it
+      # must not start with `"goog"`.
 }
 
   x__xgafv: string, V1 error format.
+    Allowed values
+      1 - v1 error format
+      2 - v2 error format
 
 Returns:
   An object of the form:
 
     { # A topic resource.
-    "name": "A String", # The name of the topic. It must have the format `"projects/{project}/topics/{topic}"`. `{topic}` must start with a letter, and contain only letters (`[A-Za-z]`), numbers (`[0-9]`), dashes (`-`), underscores (`_`), periods (`.`), tildes (`~`), plus (`+`) or percent signs (`%`). It must be between 3 and 255 characters in length, and it must not start with `"goog"`.
+    "name": "A String", # The name of the topic. It must have the format
+        # `"projects/{project}/topics/{topic}"`. `{topic}` must start with a letter,
+        # and contain only letters (`[A-Za-z]`), numbers (`[0-9]`), dashes (`-`),
+        # underscores (`_`), periods (`.`), tildes (`~`), plus (`+`) or percent
+        # signs (`%`). It must be between 3 and 255 characters in length, and it
+        # must not start with `"goog"`.
   }</pre>
 </div>
 
 <div class="method">
     <code class="details" id="delete">delete(topic, x__xgafv=None)</code>
-  <pre>Deletes the topic with the given name. Returns `NOT_FOUND` if the topic does not exist. After a topic is deleted, a new topic may be created with the same name; this is an entirely new topic with none of the old configuration or subscriptions. Existing subscriptions to this topic are not deleted, but their `topic` field is set to `_deleted-topic_`.
+  <pre>Deletes the topic with the given name. Returns `NOT_FOUND` if the topic
+does not exist. After a topic is deleted, a new topic may be created with
+the same name; this is an entirely new topic with none of the old
+configuration or subscriptions. Existing subscriptions to this topic are
+not deleted, but their `topic` field is set to `_deleted-topic_`.
 
 Args:
   topic: string, Name of the topic to delete. (required)
   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 `{}`.
+    { # 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>
 
@@ -152,37 +185,116 @@
 Args:
   topic: string, The name of the topic to get. (required)
   x__xgafv: string, V1 error format.
+    Allowed values
+      1 - v1 error format
+      2 - v2 error format
 
 Returns:
   An object of the form:
 
     { # A topic resource.
-    "name": "A String", # The name of the topic. It must have the format `"projects/{project}/topics/{topic}"`. `{topic}` must start with a letter, and contain only letters (`[A-Za-z]`), numbers (`[0-9]`), dashes (`-`), underscores (`_`), periods (`.`), tildes (`~`), plus (`+`) or percent signs (`%`). It must be between 3 and 255 characters in length, and it must not start with `"goog"`.
+    "name": "A String", # The name of the topic. It must have the format
+        # `"projects/{project}/topics/{topic}"`. `{topic}` must start with a letter,
+        # and contain only letters (`[A-Za-z]`), numbers (`[0-9]`), dashes (`-`),
+        # underscores (`_`), periods (`.`), tildes (`~`), plus (`+`) or percent
+        # signs (`%`). It must be between 3 and 255 characters in length, and it
+        # must not start with `"goog"`.
   }</pre>
 </div>
 
 <div class="method">
-    <code class="details" id="getIamPolicy">getIamPolicy(resource, x__xgafv=None)</code>
-  <pre>Gets the access control policy for a resource. Returns an empty policy if the resource exists and does not have a policy set.
+    <code class="details" id="getIamPolicy">getIamPolicy(resource=None, x__xgafv=None)</code>
+  <pre>Gets the access control policy for a resource.
+Returns an empty policy if the resource exists and does not have a policy
+set.
 
 Args:
-  resource: string, REQUIRED: The resource for which the policy is being requested. `resource` is usually specified as a path. For example, a Project resource is specified as `projects/{project}`. (required)
+  resource: string, REQUIRED: The resource for which the policy is being requested.
+`resource` is usually specified as a path. For example, a Project
+resource is specified as `projects/{project}`. (required)
   x__xgafv: string, V1 error format.
+    Allowed values
+      1 - v1 error format
+      2 - v2 error format
 
 Returns:
   An object of the form:
 
-    { # Defines an Identity and Access Management (IAM) policy. It is used to specify access control policies for Cloud Platform resources. A `Policy` consists of a list of `bindings`. A `Binding` binds a list of `members` to a `role`, where the members can be user accounts, Google groups, Google domains, and service accounts. A `role` is a named list of permissions defined by IAM. **Example** { "bindings": [ { "role": "roles/owner", "members": [ "user:mike@example.com", "group:admins@example.com", "domain:google.com", "serviceAccount:my-other-app@appspot.gserviceaccount.com", ] }, { "role": "roles/viewer", "members": ["user:sean@example.com"] } ] } For a description of IAM and its features, see the [IAM developer's guide](https://cloud.google.com/iam).
-    "bindings": [ # Associates a list of `members` to a `role`. Multiple `bindings` must not be specified for the same `role`. `bindings` with no members will result in an error.
+    { # Defines an Identity and Access Management (IAM) policy. It is used to
+      # specify access control policies for Cloud Platform resources.
+      #
+      #
+      # A `Policy` consists of a list of `bindings`. A `Binding` binds a list of
+      # `members` to a `role`, where the members can be user accounts, Google groups,
+      # Google domains, and service accounts. A `role` is a named list of permissions
+      # defined by IAM.
+      #
+      # **Example**
+      #
+      #     {
+      #       "bindings": [
+      #         {
+      #           "role": "roles/owner",
+      #           "members": [
+      #             "user:mike@example.com",
+      #             "group:admins@example.com",
+      #             "domain:google.com",
+      #             "serviceAccount:my-other-app@appspot.gserviceaccount.com",
+      #           ]
+      #         },
+      #         {
+      #           "role": "roles/viewer",
+      #           "members": ["user:sean@example.com"]
+      #         }
+      #       ]
+      #     }
+      #
+      # For a description of IAM and its features, see the
+      # [IAM developer's guide](https://cloud.google.com/iam).
+    "bindings": [ # Associates a list of `members` to a `role`.
+        # Multiple `bindings` must not be specified for the same `role`.
+        # `bindings` with no members will result in an error.
       { # Associates `members` with a `role`.
-        "role": "A String", # Role that is assigned to `members`. For example, `roles/viewer`, `roles/editor`, or `roles/owner`. Required
-        "members": [ # Specifies the identities requesting access for a Cloud Platform resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@gmail.com` or `joe@example.com`. * `serviceAccount:{emailid}`: An email address that represents a service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: A Google Apps domain name that represents all the users of that domain. For example, `google.com` or `example.com`.
+        "role": "A String", # Role that is assigned to `members`.
+            # For example, `roles/viewer`, `roles/editor`, or `roles/owner`.
+            # Required
+        "members": [ # Specifies the identities requesting access for a Cloud Platform resource.
+            # `members` can have the following values:
+            #
+            # * `allUsers`: A special identifier that represents anyone who is
+            #    on the internet; with or without a Google account.
+            #
+            # * `allAuthenticatedUsers`: A special identifier that represents anyone
+            #    who is authenticated with a Google account or a service account.
+            #
+            # * `user:{emailid}`: An email address that represents a specific Google
+            #    account. For example, `alice@gmail.com` or `joe@example.com`.
+            #
+            #
+            # * `serviceAccount:{emailid}`: An email address that represents a service
+            #    account. For example, `my-other-app@appspot.gserviceaccount.com`.
+            #
+            # * `group:{emailid}`: An email address that represents a Google group.
+            #    For example, `admins@example.com`.
+            #
+            # * `domain:{domain}`: A Google Apps domain name that represents all the
+            #    users of that domain. For example, `google.com` or `example.com`.
+            #
           "A String",
         ],
       },
     ],
+    "etag": "A String", # `etag` is used for optimistic concurrency control as a way to help
+        # prevent simultaneous updates of a policy from overwriting each other.
+        # It is strongly suggested that systems make use of the `etag` in the
+        # read-modify-write cycle to perform policy updates in order to avoid race
+        # conditions: An `etag` is returned in the response to `getIamPolicy`, and
+        # systems are expected to put that etag in the request to `setIamPolicy` to
+        # ensure that their change will be applied to the same version of the policy.
+        #
+        # If no `etag` is provided in the call to `setIamPolicy`, then the existing
+        # policy is overwritten blindly.
     "version": 42, # Version of the `Policy`. The default version is 0.
-    "etag": "A String", # `etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. If no `etag` is provided in the call to `setIamPolicy`, then the existing policy is overwritten blindly.
   }</pre>
 </div>
 
@@ -193,17 +305,28 @@
 Args:
   project: string, The name of the cloud project that topics belong to. (required)
   pageSize: integer, Maximum number of topics to return.
-  pageToken: string, The value returned by the last `ListTopicsResponse`; indicates that this is a continuation of a prior `ListTopics` call, and that the system should return the next page of data.
+  pageToken: string, The value returned by the last `ListTopicsResponse`; indicates that this is
+a continuation of a prior `ListTopics` call, and that the system should
+return the next page of data.
   x__xgafv: string, V1 error format.
+    Allowed values
+      1 - v1 error format
+      2 - v2 error format
 
 Returns:
   An object of the form:
 
     { # Response for the `ListTopics` method.
-    "nextPageToken": "A String", # If not empty, indicates that there may be more topics that match the request; this value should be passed in a new `ListTopicsRequest`.
+    "nextPageToken": "A String", # If not empty, indicates that there may be more topics that match the
+        # request; this value should be passed in a new `ListTopicsRequest`.
     "topics": [ # The resulting topics.
       { # A topic resource.
-        "name": "A String", # The name of the topic. It must have the format `"projects/{project}/topics/{topic}"`. `{topic}` must start with a letter, and contain only letters (`[A-Za-z]`), numbers (`[0-9]`), dashes (`-`), underscores (`_`), periods (`.`), tildes (`~`), plus (`+`) or percent signs (`%`). It must be between 3 and 255 characters in length, and it must not start with `"goog"`.
+        "name": "A String", # The name of the topic. It must have the format
+            # `"projects/{project}/topics/{topic}"`. `{topic}` must start with a letter,
+            # and contain only letters (`[A-Za-z]`), numbers (`[0-9]`), dashes (`-`),
+            # underscores (`_`), periods (`.`), tildes (`~`), plus (`+`) or percent
+            # signs (`%`). It must be between 3 and 255 characters in length, and it
+            # must not start with `"goog"`.
       },
     ],
   }</pre>
@@ -225,7 +348,9 @@
 
 <div class="method">
     <code class="details" id="publish">publish(topic, body, x__xgafv=None)</code>
-  <pre>Adds one or more messages to the topic. Returns `NOT_FOUND` if the topic does not exist. The message payload must not be empty; it must contain either a non-empty data field, or at least one attribute.
+  <pre>Adds one or more messages to the topic. Returns `NOT_FOUND` if the topic
+does not exist. The message payload must not be empty; it must contain
+ either a non-empty data field, or at least one attribute.
 
 Args:
   topic: string, The messages in the request will be published on this topic. (required)
@@ -234,94 +359,254 @@
 
 { # Request for the Publish method.
     "messages": [ # The messages to publish.
-      { # A message data and its attributes. The message payload must not be empty; it must contain either a non-empty data field, or at least one attribute.
+      { # A message data and its attributes. The message payload must not be empty;
+          # it must contain either a non-empty data field, or at least one attribute.
         "attributes": { # Optional attributes for this message.
           "a_key": "A String",
         },
-        "data": "A String", # The message payload. For JSON requests, the value of this field must be [base64-encoded](https://tools.ietf.org/html/rfc4648).
-        "publishTime": "A String", # The time at which the message was published, populated by the server when it receives the `Publish` call. It must not be populated by the publisher in a `Publish` call.
-        "messageId": "A String", # ID of this message, assigned by the server when the message is published. Guaranteed to be unique within the topic. This value may be read by a subscriber that receives a `PubsubMessage` via a `Pull` call or a push delivery. It must not be populated by the publisher in a `Publish` call.
+        "data": "A String", # The message payload. For JSON requests, the value of this field must be
+            # [base64-encoded](https://tools.ietf.org/html/rfc4648).
+        "publishTime": "A String", # The time at which the message was published, populated by the server when
+            # it receives the `Publish` call. It must not be populated by the
+            # publisher in a `Publish` call.
+        "messageId": "A String", # ID of this message, assigned by the server when the message is published.
+            # Guaranteed to be unique within the topic. This value may be read by a
+            # subscriber that receives a `PubsubMessage` via a `Pull` call or a push
+            # delivery. It must not be populated by the publisher in a `Publish` call.
       },
     ],
   }
 
   x__xgafv: string, V1 error format.
+    Allowed values
+      1 - v1 error format
+      2 - v2 error format
 
 Returns:
   An object of the form:
 
     { # Response for the `Publish` method.
-    "messageIds": [ # The server-assigned ID of each published message, in the same order as the messages in the request. IDs are guaranteed to be unique within the topic.
+    "messageIds": [ # The server-assigned ID of each published message, in the same order as
+        # the messages in the request. IDs are guaranteed to be unique within
+        # the topic.
       "A String",
     ],
   }</pre>
 </div>
 
 <div class="method">
-    <code class="details" id="setIamPolicy">setIamPolicy(resource, body, x__xgafv=None)</code>
-  <pre>Sets the access control policy on the specified resource. Replaces any existing policy.
+    <code class="details" id="setIamPolicy">setIamPolicy(resource=None, body, x__xgafv=None)</code>
+  <pre>Sets the access control policy on the specified resource. Replaces any
+existing policy.
 
 Args:
-  resource: string, REQUIRED: The resource for which the policy is being specified. `resource` is usually specified as a path. For example, a Project resource is specified as `projects/{project}`. (required)
+  resource: string, REQUIRED: The resource for which the policy is being specified.
+`resource` is usually specified as a path. For example, a Project
+resource is specified as `projects/{project}`. (required)
   body: object, The request body. (required)
     The object takes the form of:
 
 { # Request message for `SetIamPolicy` method.
-    "policy": { # Defines an Identity and Access Management (IAM) policy. It is used to specify access control policies for Cloud Platform resources. A `Policy` consists of a list of `bindings`. A `Binding` binds a list of `members` to a `role`, where the members can be user accounts, Google groups, Google domains, and service accounts. A `role` is a named list of permissions defined by IAM. **Example** { "bindings": [ { "role": "roles/owner", "members": [ "user:mike@example.com", "group:admins@example.com", "domain:google.com", "serviceAccount:my-other-app@appspot.gserviceaccount.com", ] }, { "role": "roles/viewer", "members": ["user:sean@example.com"] } ] } For a description of IAM and its features, see the [IAM developer's guide](https://cloud.google.com/iam). # REQUIRED: The complete policy to be applied to the `resource`. The size of the policy is limited to a few 10s of KB. An empty policy is a valid policy but certain Cloud Platform services (such as Projects) might reject them.
-      "bindings": [ # Associates a list of `members` to a `role`. Multiple `bindings` must not be specified for the same `role`. `bindings` with no members will result in an error.
+    "policy": { # Defines an Identity and Access Management (IAM) policy. It is used to # REQUIRED: The complete policy to be applied to the `resource`. The size of
+        # the policy is limited to a few 10s of KB. An empty policy is a
+        # valid policy but certain Cloud Platform services (such as Projects)
+        # might reject them.
+        # specify access control policies for Cloud Platform resources.
+        #
+        #
+        # A `Policy` consists of a list of `bindings`. A `Binding` binds a list of
+        # `members` to a `role`, where the members can be user accounts, Google groups,
+        # Google domains, and service accounts. A `role` is a named list of permissions
+        # defined by IAM.
+        #
+        # **Example**
+        #
+        #     {
+        #       "bindings": [
+        #         {
+        #           "role": "roles/owner",
+        #           "members": [
+        #             "user:mike@example.com",
+        #             "group:admins@example.com",
+        #             "domain:google.com",
+        #             "serviceAccount:my-other-app@appspot.gserviceaccount.com",
+        #           ]
+        #         },
+        #         {
+        #           "role": "roles/viewer",
+        #           "members": ["user:sean@example.com"]
+        #         }
+        #       ]
+        #     }
+        #
+        # For a description of IAM and its features, see the
+        # [IAM developer's guide](https://cloud.google.com/iam).
+      "bindings": [ # Associates a list of `members` to a `role`.
+          # Multiple `bindings` must not be specified for the same `role`.
+          # `bindings` with no members will result in an error.
         { # Associates `members` with a `role`.
-          "role": "A String", # Role that is assigned to `members`. For example, `roles/viewer`, `roles/editor`, or `roles/owner`. Required
-          "members": [ # Specifies the identities requesting access for a Cloud Platform resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@gmail.com` or `joe@example.com`. * `serviceAccount:{emailid}`: An email address that represents a service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: A Google Apps domain name that represents all the users of that domain. For example, `google.com` or `example.com`.
+          "role": "A String", # Role that is assigned to `members`.
+              # For example, `roles/viewer`, `roles/editor`, or `roles/owner`.
+              # Required
+          "members": [ # Specifies the identities requesting access for a Cloud Platform resource.
+              # `members` can have the following values:
+              #
+              # * `allUsers`: A special identifier that represents anyone who is
+              #    on the internet; with or without a Google account.
+              #
+              # * `allAuthenticatedUsers`: A special identifier that represents anyone
+              #    who is authenticated with a Google account or a service account.
+              #
+              # * `user:{emailid}`: An email address that represents a specific Google
+              #    account. For example, `alice@gmail.com` or `joe@example.com`.
+              #
+              #
+              # * `serviceAccount:{emailid}`: An email address that represents a service
+              #    account. For example, `my-other-app@appspot.gserviceaccount.com`.
+              #
+              # * `group:{emailid}`: An email address that represents a Google group.
+              #    For example, `admins@example.com`.
+              #
+              # * `domain:{domain}`: A Google Apps domain name that represents all the
+              #    users of that domain. For example, `google.com` or `example.com`.
+              #
             "A String",
           ],
         },
       ],
+      "etag": "A String", # `etag` is used for optimistic concurrency control as a way to help
+          # prevent simultaneous updates of a policy from overwriting each other.
+          # It is strongly suggested that systems make use of the `etag` in the
+          # read-modify-write cycle to perform policy updates in order to avoid race
+          # conditions: An `etag` is returned in the response to `getIamPolicy`, and
+          # systems are expected to put that etag in the request to `setIamPolicy` to
+          # ensure that their change will be applied to the same version of the policy.
+          #
+          # If no `etag` is provided in the call to `setIamPolicy`, then the existing
+          # policy is overwritten blindly.
       "version": 42, # Version of the `Policy`. The default version is 0.
-      "etag": "A String", # `etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. If no `etag` is provided in the call to `setIamPolicy`, then the existing policy is overwritten blindly.
     },
   }
 
   x__xgafv: string, V1 error format.
+    Allowed values
+      1 - v1 error format
+      2 - v2 error format
 
 Returns:
   An object of the form:
 
-    { # Defines an Identity and Access Management (IAM) policy. It is used to specify access control policies for Cloud Platform resources. A `Policy` consists of a list of `bindings`. A `Binding` binds a list of `members` to a `role`, where the members can be user accounts, Google groups, Google domains, and service accounts. A `role` is a named list of permissions defined by IAM. **Example** { "bindings": [ { "role": "roles/owner", "members": [ "user:mike@example.com", "group:admins@example.com", "domain:google.com", "serviceAccount:my-other-app@appspot.gserviceaccount.com", ] }, { "role": "roles/viewer", "members": ["user:sean@example.com"] } ] } For a description of IAM and its features, see the [IAM developer's guide](https://cloud.google.com/iam).
-    "bindings": [ # Associates a list of `members` to a `role`. Multiple `bindings` must not be specified for the same `role`. `bindings` with no members will result in an error.
+    { # Defines an Identity and Access Management (IAM) policy. It is used to
+      # specify access control policies for Cloud Platform resources.
+      #
+      #
+      # A `Policy` consists of a list of `bindings`. A `Binding` binds a list of
+      # `members` to a `role`, where the members can be user accounts, Google groups,
+      # Google domains, and service accounts. A `role` is a named list of permissions
+      # defined by IAM.
+      #
+      # **Example**
+      #
+      #     {
+      #       "bindings": [
+      #         {
+      #           "role": "roles/owner",
+      #           "members": [
+      #             "user:mike@example.com",
+      #             "group:admins@example.com",
+      #             "domain:google.com",
+      #             "serviceAccount:my-other-app@appspot.gserviceaccount.com",
+      #           ]
+      #         },
+      #         {
+      #           "role": "roles/viewer",
+      #           "members": ["user:sean@example.com"]
+      #         }
+      #       ]
+      #     }
+      #
+      # For a description of IAM and its features, see the
+      # [IAM developer's guide](https://cloud.google.com/iam).
+    "bindings": [ # Associates a list of `members` to a `role`.
+        # Multiple `bindings` must not be specified for the same `role`.
+        # `bindings` with no members will result in an error.
       { # Associates `members` with a `role`.
-        "role": "A String", # Role that is assigned to `members`. For example, `roles/viewer`, `roles/editor`, or `roles/owner`. Required
-        "members": [ # Specifies the identities requesting access for a Cloud Platform resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@gmail.com` or `joe@example.com`. * `serviceAccount:{emailid}`: An email address that represents a service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: A Google Apps domain name that represents all the users of that domain. For example, `google.com` or `example.com`.
+        "role": "A String", # Role that is assigned to `members`.
+            # For example, `roles/viewer`, `roles/editor`, or `roles/owner`.
+            # Required
+        "members": [ # Specifies the identities requesting access for a Cloud Platform resource.
+            # `members` can have the following values:
+            #
+            # * `allUsers`: A special identifier that represents anyone who is
+            #    on the internet; with or without a Google account.
+            #
+            # * `allAuthenticatedUsers`: A special identifier that represents anyone
+            #    who is authenticated with a Google account or a service account.
+            #
+            # * `user:{emailid}`: An email address that represents a specific Google
+            #    account. For example, `alice@gmail.com` or `joe@example.com`.
+            #
+            #
+            # * `serviceAccount:{emailid}`: An email address that represents a service
+            #    account. For example, `my-other-app@appspot.gserviceaccount.com`.
+            #
+            # * `group:{emailid}`: An email address that represents a Google group.
+            #    For example, `admins@example.com`.
+            #
+            # * `domain:{domain}`: A Google Apps domain name that represents all the
+            #    users of that domain. For example, `google.com` or `example.com`.
+            #
           "A String",
         ],
       },
     ],
+    "etag": "A String", # `etag` is used for optimistic concurrency control as a way to help
+        # prevent simultaneous updates of a policy from overwriting each other.
+        # It is strongly suggested that systems make use of the `etag` in the
+        # read-modify-write cycle to perform policy updates in order to avoid race
+        # conditions: An `etag` is returned in the response to `getIamPolicy`, and
+        # systems are expected to put that etag in the request to `setIamPolicy` to
+        # ensure that their change will be applied to the same version of the policy.
+        #
+        # If no `etag` is provided in the call to `setIamPolicy`, then the existing
+        # policy is overwritten blindly.
     "version": 42, # Version of the `Policy`. The default version is 0.
-    "etag": "A String", # `etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. If no `etag` is provided in the call to `setIamPolicy`, then the existing policy is overwritten blindly.
   }</pre>
 </div>
 
 <div class="method">
-    <code class="details" id="testIamPermissions">testIamPermissions(resource, body, x__xgafv=None)</code>
+    <code class="details" id="testIamPermissions">testIamPermissions(resource=None, body, x__xgafv=None)</code>
   <pre>Returns permissions that a caller has on the specified resource.
+If the resource does not exist, this will return an empty set of
+permissions, not a NOT_FOUND error.
 
 Args:
-  resource: string, REQUIRED: The resource for which the policy detail is being requested. `resource` is usually specified as a path. For example, a Project resource is specified as `projects/{project}`. (required)
+  resource: string, REQUIRED: The resource for which the policy detail is being requested.
+`resource` is usually specified as a path. For example, a Project
+resource is specified as `projects/{project}`. (required)
   body: object, The request body. (required)
     The object takes the form of:
 
 { # Request message for `TestIamPermissions` method.
-    "permissions": [ # The set of permissions to check for the `resource`. Permissions with wildcards (such as '*' or 'storage.*') are not allowed. For more information see [IAM Overview](https://cloud.google.com/iam/docs/overview#permissions).
+    "permissions": [ # The set of permissions to check for the `resource`. Permissions with
+        # wildcards (such as '*' or 'storage.*') are not allowed. For more
+        # information see
+        # [IAM Overview](https://cloud.google.com/iam/docs/overview#permissions).
       "A String",
     ],
   }
 
   x__xgafv: string, V1 error format.
+    Allowed values
+      1 - v1 error format
+      2 - v2 error format
 
 Returns:
   An object of the form:
 
     { # Response message for `TestIamPermissions` method.
-    "permissions": [ # A subset of `TestPermissionsRequest.permissions` that the caller is allowed.
+    "permissions": [ # A subset of `TestPermissionsRequest.permissions` that the caller is
+        # allowed.
       "A String",
     ],
   }</pre>
diff --git a/docs/dyn/pubsub_v1beta2.projects.topics.subscriptions.html b/docs/dyn/pubsub_v1beta2.projects.topics.subscriptions.html
index 1bb1547..4fa9683 100644
--- a/docs/dyn/pubsub_v1beta2.projects.topics.subscriptions.html
+++ b/docs/dyn/pubsub_v1beta2.projects.topics.subscriptions.html
@@ -88,14 +88,21 @@
 Args:
   topic: string, The name of the topic that subscriptions are attached to. (required)
   pageSize: integer, Maximum number of subscription names to return.
-  pageToken: string, The value returned by the last `ListTopicSubscriptionsResponse`; indicates that this is a continuation of a prior `ListTopicSubscriptions` call, and that the system should return the next page of data.
+  pageToken: string, The value returned by the last `ListTopicSubscriptionsResponse`; indicates
+that this is a continuation of a prior `ListTopicSubscriptions` call, and
+that the system should return the next page of data.
   x__xgafv: string, V1 error format.
+    Allowed values
+      1 - v1 error format
+      2 - v2 error format
 
 Returns:
   An object of the form:
 
     { # Response for the `ListTopicSubscriptions` method.
-    "nextPageToken": "A String", # If not empty, indicates that there may be more subscriptions that match the request; this value should be passed in a new `ListTopicSubscriptionsRequest` to get more subscriptions.
+    "nextPageToken": "A String", # If not empty, indicates that there may be more subscriptions that match
+        # the request; this value should be passed in a new
+        # `ListTopicSubscriptionsRequest` to get more subscriptions.
     "subscriptions": [ # The names of the subscriptions that match the request.
       "A String",
     ],
diff --git a/docs/dyn/runtimeconfig_v1beta1.projects.configs.html b/docs/dyn/runtimeconfig_v1beta1.projects.configs.html
index b25b8e3..d0dec11 100644
--- a/docs/dyn/runtimeconfig_v1beta1.projects.configs.html
+++ b/docs/dyn/runtimeconfig_v1beta1.projects.configs.html
@@ -99,12 +99,21 @@
   <code><a href="#get">get(name=None, x__xgafv=None)</a></code></p>
 <p class="firstline">Gets information about a RuntimeConfig resource.</p>
 <p class="toc_element">
+  <code><a href="#getIamPolicy">getIamPolicy(resource=None, x__xgafv=None)</a></code></p>
+<p class="firstline">Gets the access control policy for a resource.</p>
+<p class="toc_element">
   <code><a href="#list">list(parent=None, pageToken=None, x__xgafv=None, pageSize=None)</a></code></p>
 <p class="firstline">Lists all the RuntimeConfig resources within project.</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="#setIamPolicy">setIamPolicy(resource=None, body, x__xgafv=None)</a></code></p>
+<p class="firstline">Sets the access control policy on the specified resource. Replaces any</p>
+<p class="toc_element">
+  <code><a href="#testIamPermissions">testIamPermissions(resource=None, body, x__xgafv=None)</a></code></p>
+<p class="firstline">Returns permissions that a caller has on the specified resource.</p>
+<p class="toc_element">
   <code><a href="#update">update(name=None, body, x__xgafv=None)</a></code></p>
 <p class="firstline">Updates a RuntimeConfig resource. The configuration must exist beforehand.</p>
 <h3>Method Details</h3>
@@ -120,30 +129,32 @@
     The object takes the form of:
 
 { # A RuntimeConfig resource is the primary resource in the Cloud RuntimeConfig
-      # service. A RuntimeConfig resource consists of metadata and a hierarchy of
-      # variables.
-    "description": "A String", # An optional description of the RuntimeConfig object.
-        # The length of the description must be less than 256 bytes.
-    "name": "A String", # The resource name of a runtime config. The name must have the format:
-        # 
-        #     projects/[PROJECT_ID]/configs/[CONFIG_NAME]
-        # 
-        # The `[PROJECT_ID]` must be a valid project ID, and `[CONFIG_NAME]` is an
-        # arbitrary name that matches RFC 1035 segment specification. The length of
-        # `[CONFIG_NAME]` must be less than 64 bytes.
-        # 
-        # You pick the RuntimeConfig resource name, but the server will validate that
-        # the name adheres to this format. After you create the resource, you cannot
-        # change the resource's name.
-  }
+    # service. A RuntimeConfig resource consists of metadata and a hierarchy of
+    # variables.
+  "description": "A String", # An optional description of the RuntimeConfig object.
+  "name": "A String", # The resource name of a runtime config. The name must have the format:
+      # 
+      #     projects/[PROJECT_ID]/configs/[CONFIG_NAME]
+      # 
+      # The `[PROJECT_ID]` must be a valid project ID, and `[CONFIG_NAME]` is an
+      # arbitrary name that matches RFC 1035 segment specification. The length of
+      # `[CONFIG_NAME]` must be less than 64 bytes.
+      # 
+      # You pick the RuntimeConfig resource name, but the server will validate that
+      # the name adheres to this format. After you create the resource, you cannot
+      # change the resource's name.
+}
 
-  requestId: string, An optional unique request_id. If server receives two Create requests with
-the same request_id then second request will be ignored and the resource
-stored in the backend will be returned. Empty request_id fields are
-ignored.
-It is responsibility of the client to ensure uniqueness of the request_id
-strings.
-The strings are limited to 64 characters.
+  requestId: string, An optional but recommended unique <code>request_id</code>. If the server
+receives two <code>create()</code> requests  with the same
+<code>request_id</code>, then the second request will be ignored and the
+first resource created and stored in the backend is returned.
+Empty <code>request_id</code> fields are ignored.
+
+It is responsibility of the client to ensure uniqueness of the
+<code>request_id</code> strings.
+
+<code>request_id</code> strings are limited to 64 characters.
   x__xgafv: string, V1 error format.
     Allowed values
       1 - v1 error format
@@ -153,22 +164,21 @@
   An object of the form:
 
     { # A RuntimeConfig resource is the primary resource in the Cloud RuntimeConfig
-        # service. A RuntimeConfig resource consists of metadata and a hierarchy of
-        # variables.
-      "description": "A String", # An optional description of the RuntimeConfig object.
-          # The length of the description must be less than 256 bytes.
-      "name": "A String", # The resource name of a runtime config. The name must have the format:
-          #
-          #     projects/[PROJECT_ID]/configs/[CONFIG_NAME]
-          #
-          # The `[PROJECT_ID]` must be a valid project ID, and `[CONFIG_NAME]` is an
-          # arbitrary name that matches RFC 1035 segment specification. The length of
-          # `[CONFIG_NAME]` must be less than 64 bytes.
-          #
-          # You pick the RuntimeConfig resource name, but the server will validate that
-          # the name adheres to this format. After you create the resource, you cannot
-          # change the resource's name.
-    }</pre>
+      # service. A RuntimeConfig resource consists of metadata and a hierarchy of
+      # variables.
+    "description": "A String", # An optional description of the RuntimeConfig object.
+    "name": "A String", # The resource name of a runtime config. The name must have the format:
+        #
+        #     projects/[PROJECT_ID]/configs/[CONFIG_NAME]
+        #
+        # The `[PROJECT_ID]` must be a valid project ID, and `[CONFIG_NAME]` is an
+        # arbitrary name that matches RFC 1035 segment specification. The length of
+        # `[CONFIG_NAME]` must be less than 64 bytes.
+        #
+        # You pick the RuntimeConfig resource name, but the server will validate that
+        # the name adheres to this format. After you create the resource, you cannot
+        # change the resource's name.
+  }</pre>
 </div>
 
 <div class="method">
@@ -216,22 +226,117 @@
   An object of the form:
 
     { # A RuntimeConfig resource is the primary resource in the Cloud RuntimeConfig
-        # service. A RuntimeConfig resource consists of metadata and a hierarchy of
-        # variables.
-      "description": "A String", # An optional description of the RuntimeConfig object.
-          # The length of the description must be less than 256 bytes.
-      "name": "A String", # The resource name of a runtime config. The name must have the format:
-          #
-          #     projects/[PROJECT_ID]/configs/[CONFIG_NAME]
-          #
-          # The `[PROJECT_ID]` must be a valid project ID, and `[CONFIG_NAME]` is an
-          # arbitrary name that matches RFC 1035 segment specification. The length of
-          # `[CONFIG_NAME]` must be less than 64 bytes.
-          #
-          # You pick the RuntimeConfig resource name, but the server will validate that
-          # the name adheres to this format. After you create the resource, you cannot
-          # change the resource's name.
-    }</pre>
+      # service. A RuntimeConfig resource consists of metadata and a hierarchy of
+      # variables.
+    "description": "A String", # An optional description of the RuntimeConfig object.
+    "name": "A String", # The resource name of a runtime config. The name must have the format:
+        #
+        #     projects/[PROJECT_ID]/configs/[CONFIG_NAME]
+        #
+        # The `[PROJECT_ID]` must be a valid project ID, and `[CONFIG_NAME]` is an
+        # arbitrary name that matches RFC 1035 segment specification. The length of
+        # `[CONFIG_NAME]` must be less than 64 bytes.
+        #
+        # You pick the RuntimeConfig resource name, but the server will validate that
+        # the name adheres to this format. After you create the resource, you cannot
+        # change the resource's name.
+  }</pre>
+</div>
+
+<div class="method">
+    <code class="details" id="getIamPolicy">getIamPolicy(resource=None, x__xgafv=None)</code>
+  <pre>Gets the access control policy for a resource.
+Returns an empty policy if the resource exists and does not have a policy
+set.
+
+Args:
+  resource: string, REQUIRED: The resource for which the policy is being requested.
+`resource` is usually specified as a path. For example, a Project
+resource is specified as `projects/{project}`. (required)
+  x__xgafv: string, V1 error format.
+    Allowed values
+      1 - v1 error format
+      2 - v2 error format
+
+Returns:
+  An object of the form:
+
+    { # Defines an Identity and Access Management (IAM) policy. It is used to
+      # specify access control policies for Cloud Platform resources.
+      #
+      #
+      # A `Policy` consists of a list of `bindings`. A `Binding` binds a list of
+      # `members` to a `role`, where the members can be user accounts, Google groups,
+      # Google domains, and service accounts. A `role` is a named list of permissions
+      # defined by IAM.
+      #
+      # **Example**
+      #
+      #     {
+      #       "bindings": [
+      #         {
+      #           "role": "roles/owner",
+      #           "members": [
+      #             "user:mike@example.com",
+      #             "group:admins@example.com",
+      #             "domain:google.com",
+      #             "serviceAccount:my-other-app@appspot.gserviceaccount.com",
+      #           ]
+      #         },
+      #         {
+      #           "role": "roles/viewer",
+      #           "members": ["user:sean@example.com"]
+      #         }
+      #       ]
+      #     }
+      #
+      # For a description of IAM and its features, see the
+      # [IAM developer's guide](https://cloud.google.com/iam).
+    "bindings": [ # Associates a list of `members` to a `role`.
+        # Multiple `bindings` must not be specified for the same `role`.
+        # `bindings` with no members will result in an error.
+      { # Associates `members` with a `role`.
+        "role": "A String", # Role that is assigned to `members`.
+            # For example, `roles/viewer`, `roles/editor`, or `roles/owner`.
+            # Required
+        "members": [ # Specifies the identities requesting access for a Cloud Platform resource.
+            # `members` can have the following values:
+            #
+            # * `allUsers`: A special identifier that represents anyone who is
+            #    on the internet; with or without a Google account.
+            #
+            # * `allAuthenticatedUsers`: A special identifier that represents anyone
+            #    who is authenticated with a Google account or a service account.
+            #
+            # * `user:{emailid}`: An email address that represents a specific Google
+            #    account. For example, `alice@gmail.com` or `joe@example.com`.
+            #
+            #
+            # * `serviceAccount:{emailid}`: An email address that represents a service
+            #    account. For example, `my-other-app@appspot.gserviceaccount.com`.
+            #
+            # * `group:{emailid}`: An email address that represents a Google group.
+            #    For example, `admins@example.com`.
+            #
+            # * `domain:{domain}`: A Google Apps domain name that represents all the
+            #    users of that domain. For example, `google.com` or `example.com`.
+            #
+          "A String",
+        ],
+      },
+    ],
+    "etag": "A String", # `etag` is used for optimistic concurrency control as a way to help
+        # prevent simultaneous updates of a policy from overwriting each other.
+        # It is strongly suggested that systems make use of the `etag` in the
+        # read-modify-write cycle to perform policy updates in order to avoid race
+        # conditions: An `etag` is returned in the response to `getIamPolicy`, and
+        # systems are expected to put that etag in the request to `setIamPolicy` to
+        # ensure that their change will be applied to the same version of the policy.
+        #
+        # If no `etag` is provided in the call to `setIamPolicy`, then the existing
+        # policy is overwritten blindly.
+    "version": 42, # Version of the `Policy`. The default version is 0.
+  }</pre>
 </div>
 
 <div class="method">
@@ -263,22 +368,21 @@
     "configs": [ # A list of the configurations in the project. The order of returned
         # objects is arbitrary; that is, it is not ordered in any particular way.
       { # A RuntimeConfig resource is the primary resource in the Cloud RuntimeConfig
-            # service. A RuntimeConfig resource consists of metadata and a hierarchy of
-            # variables.
-          "description": "A String", # An optional description of the RuntimeConfig object.
-              # The length of the description must be less than 256 bytes.
-          "name": "A String", # The resource name of a runtime config. The name must have the format:
-              #
-              #     projects/[PROJECT_ID]/configs/[CONFIG_NAME]
-              #
-              # The `[PROJECT_ID]` must be a valid project ID, and `[CONFIG_NAME]` is an
-              # arbitrary name that matches RFC 1035 segment specification. The length of
-              # `[CONFIG_NAME]` must be less than 64 bytes.
-              #
-              # You pick the RuntimeConfig resource name, but the server will validate that
-              # the name adheres to this format. After you create the resource, you cannot
-              # change the resource's name.
-        },
+          # service. A RuntimeConfig resource consists of metadata and a hierarchy of
+          # variables.
+        "description": "A String", # An optional description of the RuntimeConfig object.
+        "name": "A String", # The resource name of a runtime config. The name must have the format:
+            #
+            #     projects/[PROJECT_ID]/configs/[CONFIG_NAME]
+            #
+            # The `[PROJECT_ID]` must be a valid project ID, and `[CONFIG_NAME]` is an
+            # arbitrary name that matches RFC 1035 segment specification. The length of
+            # `[CONFIG_NAME]` must be less than 64 bytes.
+            #
+            # You pick the RuntimeConfig resource name, but the server will validate that
+            # the name adheres to this format. After you create the resource, you cannot
+            # change the resource's name.
+      },
     ],
   }</pre>
 </div>
@@ -298,6 +402,224 @@
 </div>
 
 <div class="method">
+    <code class="details" id="setIamPolicy">setIamPolicy(resource=None, body, x__xgafv=None)</code>
+  <pre>Sets the access control policy on the specified resource. Replaces any
+existing policy.
+
+Args:
+  resource: string, REQUIRED: The resource for which the policy is being specified.
+`resource` is usually specified as a path. For example, a Project
+resource is specified as `projects/{project}`. (required)
+  body: object, The request body. (required)
+    The object takes the form of:
+
+{ # Request message for `SetIamPolicy` method.
+    "policy": { # Defines an Identity and Access Management (IAM) policy. It is used to # REQUIRED: The complete policy to be applied to the `resource`. The size of
+        # the policy is limited to a few 10s of KB. An empty policy is a
+        # valid policy but certain Cloud Platform services (such as Projects)
+        # might reject them.
+        # specify access control policies for Cloud Platform resources.
+        #
+        #
+        # A `Policy` consists of a list of `bindings`. A `Binding` binds a list of
+        # `members` to a `role`, where the members can be user accounts, Google groups,
+        # Google domains, and service accounts. A `role` is a named list of permissions
+        # defined by IAM.
+        #
+        # **Example**
+        #
+        #     {
+        #       "bindings": [
+        #         {
+        #           "role": "roles/owner",
+        #           "members": [
+        #             "user:mike@example.com",
+        #             "group:admins@example.com",
+        #             "domain:google.com",
+        #             "serviceAccount:my-other-app@appspot.gserviceaccount.com",
+        #           ]
+        #         },
+        #         {
+        #           "role": "roles/viewer",
+        #           "members": ["user:sean@example.com"]
+        #         }
+        #       ]
+        #     }
+        #
+        # For a description of IAM and its features, see the
+        # [IAM developer's guide](https://cloud.google.com/iam).
+      "bindings": [ # Associates a list of `members` to a `role`.
+          # Multiple `bindings` must not be specified for the same `role`.
+          # `bindings` with no members will result in an error.
+        { # Associates `members` with a `role`.
+          "role": "A String", # Role that is assigned to `members`.
+              # For example, `roles/viewer`, `roles/editor`, or `roles/owner`.
+              # Required
+          "members": [ # Specifies the identities requesting access for a Cloud Platform resource.
+              # `members` can have the following values:
+              #
+              # * `allUsers`: A special identifier that represents anyone who is
+              #    on the internet; with or without a Google account.
+              #
+              # * `allAuthenticatedUsers`: A special identifier that represents anyone
+              #    who is authenticated with a Google account or a service account.
+              #
+              # * `user:{emailid}`: An email address that represents a specific Google
+              #    account. For example, `alice@gmail.com` or `joe@example.com`.
+              #
+              #
+              # * `serviceAccount:{emailid}`: An email address that represents a service
+              #    account. For example, `my-other-app@appspot.gserviceaccount.com`.
+              #
+              # * `group:{emailid}`: An email address that represents a Google group.
+              #    For example, `admins@example.com`.
+              #
+              # * `domain:{domain}`: A Google Apps domain name that represents all the
+              #    users of that domain. For example, `google.com` or `example.com`.
+              #
+            "A String",
+          ],
+        },
+      ],
+      "etag": "A String", # `etag` is used for optimistic concurrency control as a way to help
+          # prevent simultaneous updates of a policy from overwriting each other.
+          # It is strongly suggested that systems make use of the `etag` in the
+          # read-modify-write cycle to perform policy updates in order to avoid race
+          # conditions: An `etag` is returned in the response to `getIamPolicy`, and
+          # systems are expected to put that etag in the request to `setIamPolicy` to
+          # ensure that their change will be applied to the same version of the policy.
+          #
+          # If no `etag` is provided in the call to `setIamPolicy`, then the existing
+          # policy is overwritten blindly.
+      "version": 42, # Version of the `Policy`. The default version is 0.
+    },
+  }
+
+  x__xgafv: string, V1 error format.
+    Allowed values
+      1 - v1 error format
+      2 - v2 error format
+
+Returns:
+  An object of the form:
+
+    { # Defines an Identity and Access Management (IAM) policy. It is used to
+      # specify access control policies for Cloud Platform resources.
+      #
+      #
+      # A `Policy` consists of a list of `bindings`. A `Binding` binds a list of
+      # `members` to a `role`, where the members can be user accounts, Google groups,
+      # Google domains, and service accounts. A `role` is a named list of permissions
+      # defined by IAM.
+      #
+      # **Example**
+      #
+      #     {
+      #       "bindings": [
+      #         {
+      #           "role": "roles/owner",
+      #           "members": [
+      #             "user:mike@example.com",
+      #             "group:admins@example.com",
+      #             "domain:google.com",
+      #             "serviceAccount:my-other-app@appspot.gserviceaccount.com",
+      #           ]
+      #         },
+      #         {
+      #           "role": "roles/viewer",
+      #           "members": ["user:sean@example.com"]
+      #         }
+      #       ]
+      #     }
+      #
+      # For a description of IAM and its features, see the
+      # [IAM developer's guide](https://cloud.google.com/iam).
+    "bindings": [ # Associates a list of `members` to a `role`.
+        # Multiple `bindings` must not be specified for the same `role`.
+        # `bindings` with no members will result in an error.
+      { # Associates `members` with a `role`.
+        "role": "A String", # Role that is assigned to `members`.
+            # For example, `roles/viewer`, `roles/editor`, or `roles/owner`.
+            # Required
+        "members": [ # Specifies the identities requesting access for a Cloud Platform resource.
+            # `members` can have the following values:
+            #
+            # * `allUsers`: A special identifier that represents anyone who is
+            #    on the internet; with or without a Google account.
+            #
+            # * `allAuthenticatedUsers`: A special identifier that represents anyone
+            #    who is authenticated with a Google account or a service account.
+            #
+            # * `user:{emailid}`: An email address that represents a specific Google
+            #    account. For example, `alice@gmail.com` or `joe@example.com`.
+            #
+            #
+            # * `serviceAccount:{emailid}`: An email address that represents a service
+            #    account. For example, `my-other-app@appspot.gserviceaccount.com`.
+            #
+            # * `group:{emailid}`: An email address that represents a Google group.
+            #    For example, `admins@example.com`.
+            #
+            # * `domain:{domain}`: A Google Apps domain name that represents all the
+            #    users of that domain. For example, `google.com` or `example.com`.
+            #
+          "A String",
+        ],
+      },
+    ],
+    "etag": "A String", # `etag` is used for optimistic concurrency control as a way to help
+        # prevent simultaneous updates of a policy from overwriting each other.
+        # It is strongly suggested that systems make use of the `etag` in the
+        # read-modify-write cycle to perform policy updates in order to avoid race
+        # conditions: An `etag` is returned in the response to `getIamPolicy`, and
+        # systems are expected to put that etag in the request to `setIamPolicy` to
+        # ensure that their change will be applied to the same version of the policy.
+        #
+        # If no `etag` is provided in the call to `setIamPolicy`, then the existing
+        # policy is overwritten blindly.
+    "version": 42, # Version of the `Policy`. The default version is 0.
+  }</pre>
+</div>
+
+<div class="method">
+    <code class="details" id="testIamPermissions">testIamPermissions(resource=None, body, x__xgafv=None)</code>
+  <pre>Returns permissions that a caller has on the specified resource.
+If the resource does not exist, this will return an empty set of
+permissions, not a NOT_FOUND error.
+
+Args:
+  resource: string, REQUIRED: The resource for which the policy detail is being requested.
+`resource` is usually specified as a path. For example, a Project
+resource is specified as `projects/{project}`. (required)
+  body: object, The request body. (required)
+    The object takes the form of:
+
+{ # Request message for `TestIamPermissions` method.
+    "permissions": [ # The set of permissions to check for the `resource`. Permissions with
+        # wildcards (such as '*' or 'storage.*') are not allowed. For more
+        # information see
+        # [IAM Overview](https://cloud.google.com/iam/docs/overview#permissions).
+      "A String",
+    ],
+  }
+
+  x__xgafv: string, V1 error format.
+    Allowed values
+      1 - v1 error format
+      2 - v2 error format
+
+Returns:
+  An object of the form:
+
+    { # Response message for `TestIamPermissions` method.
+    "permissions": [ # A subset of `TestPermissionsRequest.permissions` that the caller is
+        # allowed.
+      "A String",
+    ],
+  }</pre>
+</div>
+
+<div class="method">
     <code class="details" id="update">update(name=None, body, x__xgafv=None)</code>
   <pre>Updates a RuntimeConfig resource. The configuration must exist beforehand.
 
@@ -309,22 +631,21 @@
     The object takes the form of:
 
 { # A RuntimeConfig resource is the primary resource in the Cloud RuntimeConfig
-      # service. A RuntimeConfig resource consists of metadata and a hierarchy of
-      # variables.
-    "description": "A String", # An optional description of the RuntimeConfig object.
-        # The length of the description must be less than 256 bytes.
-    "name": "A String", # The resource name of a runtime config. The name must have the format:
-        # 
-        #     projects/[PROJECT_ID]/configs/[CONFIG_NAME]
-        # 
-        # The `[PROJECT_ID]` must be a valid project ID, and `[CONFIG_NAME]` is an
-        # arbitrary name that matches RFC 1035 segment specification. The length of
-        # `[CONFIG_NAME]` must be less than 64 bytes.
-        # 
-        # You pick the RuntimeConfig resource name, but the server will validate that
-        # the name adheres to this format. After you create the resource, you cannot
-        # change the resource's name.
-  }
+    # service. A RuntimeConfig resource consists of metadata and a hierarchy of
+    # variables.
+  "description": "A String", # An optional description of the RuntimeConfig object.
+  "name": "A String", # The resource name of a runtime config. The name must have the format:
+      # 
+      #     projects/[PROJECT_ID]/configs/[CONFIG_NAME]
+      # 
+      # The `[PROJECT_ID]` must be a valid project ID, and `[CONFIG_NAME]` is an
+      # arbitrary name that matches RFC 1035 segment specification. The length of
+      # `[CONFIG_NAME]` must be less than 64 bytes.
+      # 
+      # You pick the RuntimeConfig resource name, but the server will validate that
+      # the name adheres to this format. After you create the resource, you cannot
+      # change the resource's name.
+}
 
   x__xgafv: string, V1 error format.
     Allowed values
@@ -335,22 +656,21 @@
   An object of the form:
 
     { # A RuntimeConfig resource is the primary resource in the Cloud RuntimeConfig
-        # service. A RuntimeConfig resource consists of metadata and a hierarchy of
-        # variables.
-      "description": "A String", # An optional description of the RuntimeConfig object.
-          # The length of the description must be less than 256 bytes.
-      "name": "A String", # The resource name of a runtime config. The name must have the format:
-          #
-          #     projects/[PROJECT_ID]/configs/[CONFIG_NAME]
-          #
-          # The `[PROJECT_ID]` must be a valid project ID, and `[CONFIG_NAME]` is an
-          # arbitrary name that matches RFC 1035 segment specification. The length of
-          # `[CONFIG_NAME]` must be less than 64 bytes.
-          #
-          # You pick the RuntimeConfig resource name, but the server will validate that
-          # the name adheres to this format. After you create the resource, you cannot
-          # change the resource's name.
-    }</pre>
+      # service. A RuntimeConfig resource consists of metadata and a hierarchy of
+      # variables.
+    "description": "A String", # An optional description of the RuntimeConfig object.
+    "name": "A String", # The resource name of a runtime config. The name must have the format:
+        #
+        #     projects/[PROJECT_ID]/configs/[CONFIG_NAME]
+        #
+        # The `[PROJECT_ID]` must be a valid project ID, and `[CONFIG_NAME]` is an
+        # arbitrary name that matches RFC 1035 segment specification. The length of
+        # `[CONFIG_NAME]` must be less than 64 bytes.
+        #
+        # You pick the RuntimeConfig resource name, but the server will validate that
+        # the name adheres to this format. After you create the resource, you cannot
+        # change the resource's name.
+  }</pre>
 </div>
 
 </body></html>
\ No newline at end of file
diff --git a/docs/dyn/runtimeconfig_v1beta1.projects.configs.operations.html b/docs/dyn/runtimeconfig_v1beta1.projects.configs.operations.html
index 3ce5357..4c62c59 100644
--- a/docs/dyn/runtimeconfig_v1beta1.projects.configs.operations.html
+++ b/docs/dyn/runtimeconfig_v1beta1.projects.configs.operations.html
@@ -77,6 +77,9 @@
 <p class="toc_element">
   <code><a href="#get">get(name, x__xgafv=None)</a></code></p>
 <p class="firstline">Gets the latest state of a long-running operation.  Clients can use this</p>
+<p class="toc_element">
+  <code><a href="#testIamPermissions">testIamPermissions(resource=None, x__xgafv=None, permissions=None)</a></code></p>
+<p class="firstline">Returns permissions that a caller has on the specified resource.</p>
 <h3>Method Details</h3>
 <div class="method">
     <code class="details" id="get">get(name, x__xgafv=None)</code>
@@ -184,4 +187,34 @@
   }</pre>
 </div>
 
+<div class="method">
+    <code class="details" id="testIamPermissions">testIamPermissions(resource=None, x__xgafv=None, permissions=None)</code>
+  <pre>Returns permissions that a caller has on the specified resource.
+If the resource does not exist, this will return an empty set of
+permissions, not a NOT_FOUND error.
+
+Args:
+  resource: string, REQUIRED: The resource for which the policy detail is being requested.
+`resource` is usually specified as a path. For example, a Project
+resource is specified as `projects/{project}`. (required)
+  x__xgafv: string, V1 error format.
+    Allowed values
+      1 - v1 error format
+      2 - v2 error format
+  permissions: string, The set of permissions to check for the `resource`. Permissions with
+wildcards (such as '*' or 'storage.*') are not allowed. For more
+information see
+[IAM Overview](https://cloud.google.com/iam/docs/overview#permissions). (repeated)
+
+Returns:
+  An object of the form:
+
+    { # Response message for `TestIamPermissions` method.
+    "permissions": [ # A subset of `TestPermissionsRequest.permissions` that the caller is
+        # allowed.
+      "A String",
+    ],
+  }</pre>
+</div>
+
 </body></html>
\ No newline at end of file
diff --git a/docs/dyn/runtimeconfig_v1beta1.projects.configs.variables.html b/docs/dyn/runtimeconfig_v1beta1.projects.configs.variables.html
index 003e455..b1837b9 100644
--- a/docs/dyn/runtimeconfig_v1beta1.projects.configs.variables.html
+++ b/docs/dyn/runtimeconfig_v1beta1.projects.configs.variables.html
@@ -90,6 +90,9 @@
   <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="#testIamPermissions">testIamPermissions(resource=None, x__xgafv=None, permissions=None)</a></code></p>
+<p class="firstline">Returns permissions that a caller has on the specified resource.</p>
+<p class="toc_element">
   <code><a href="#update">update(name=None, body, x__xgafv=None)</a></code></p>
 <p class="firstline">Updates an existing variable with a new value.</p>
 <p class="toc_element">
@@ -119,17 +122,16 @@
     # `ports/serving_port` is a valid variable name. The variable value is an
     # opaque string and only leaf variables can have values (that is, variables
     # that do not have any child variables).
-  "text": "A String", # The textual value of the variable. The length of the value must be less
-      # than 4096 bytes. Empty values are also accepted.
-      # NB: Only one of value and string_value can be set at the same time.
+  "text": "A String", # The string value of the variable. The length of the value must be less
+      # than 4096 bytes. Empty values are also accepted. For example,
+      # <code>text: "my text value"</code>.
   "updateTime": "A String", # [Output Only] The time of the last variable update.
   "state": "A String", # [Ouput only] The current state of the variable. The variable state indicates
       # the outcome of the `variables().watch` call and is visible through the
       # `get` and `list` calls.
   "value": "A String", # The binary value of the variable. The length of the value must be less
       # than 4096 bytes. Empty values are also accepted. The value must be
-      # Base64 encoded.
-      # NB: Only one of value and string_value can be set at the same time.
+      # base64 encoded. Only one of `value` or `text` can be set.
   "name": "A String", # The name of the variable resource, in the format:
       # 
       #     projects/[PROJECT_ID]/configs/[CONFIG_NAME]/variables/[VARIABLE_NAME]
@@ -148,13 +150,16 @@
       # Once you create a variable, you cannot change the variable name.
 }
 
-  requestId: string, An optional unique request_id. If server receives two Create requests with
-the same request_id then second request will be ignored and the resource
-stored in the backend will be returned. Empty request_id fields are
-ignored.
-It is responsibility of the client to ensure uniqueness of the request_id
-strings.
-The strings are limited to 64 characters.
+  requestId: string, An optional but recommended unique <code>request_id</code>. If the server
+receives two <code>create()</code> requests  with the same
+<code>request_id</code>, then the second request will be ignored and the
+first resource created and stored in the backend is returned.
+Empty <code>request_id</code> fields are ignored.
+
+It is responsibility of the client to ensure uniqueness of the
+<code>request_id</code> strings.
+
+<code>request_id</code> strings are limited to 64 characters.
   x__xgafv: string, V1 error format.
     Allowed values
       1 - v1 error format
@@ -168,17 +173,16 @@
       # `ports/serving_port` is a valid variable name. The variable value is an
       # opaque string and only leaf variables can have values (that is, variables
       # that do not have any child variables).
-    "text": "A String", # The textual value of the variable. The length of the value must be less
-        # than 4096 bytes. Empty values are also accepted.
-        # NB: Only one of value and string_value can be set at the same time.
+    "text": "A String", # The string value of the variable. The length of the value must be less
+        # than 4096 bytes. Empty values are also accepted. For example,
+        # <code>text: "my text value"</code>.
     "updateTime": "A String", # [Output Only] The time of the last variable update.
     "state": "A String", # [Ouput only] The current state of the variable. The variable state indicates
         # the outcome of the `variables().watch` call and is visible through the
         # `get` and `list` calls.
     "value": "A String", # The binary value of the variable. The length of the value must be less
         # than 4096 bytes. Empty values are also accepted. The value must be
-        # Base64 encoded.
-        # NB: Only one of value and string_value can be set at the same time.
+        # base64 encoded. Only one of `value` or `text` can be set.
     "name": "A String", # The name of the variable resource, in the format:
         #
         #     projects/[PROJECT_ID]/configs/[CONFIG_NAME]/variables/[VARIABLE_NAME]
@@ -254,17 +258,16 @@
       # `ports/serving_port` is a valid variable name. The variable value is an
       # opaque string and only leaf variables can have values (that is, variables
       # that do not have any child variables).
-    "text": "A String", # The textual value of the variable. The length of the value must be less
-        # than 4096 bytes. Empty values are also accepted.
-        # NB: Only one of value and string_value can be set at the same time.
+    "text": "A String", # The string value of the variable. The length of the value must be less
+        # than 4096 bytes. Empty values are also accepted. For example,
+        # <code>text: "my text value"</code>.
     "updateTime": "A String", # [Output Only] The time of the last variable update.
     "state": "A String", # [Ouput only] The current state of the variable. The variable state indicates
         # the outcome of the `variables().watch` call and is visible through the
         # `get` and `list` calls.
     "value": "A String", # The binary value of the variable. The length of the value must be less
         # than 4096 bytes. Empty values are also accepted. The value must be
-        # Base64 encoded.
-        # NB: Only one of value and string_value can be set at the same time.
+        # base64 encoded. Only one of `value` or `text` can be set.
     "name": "A String", # The name of the variable resource, in the format:
         #
         #     projects/[PROJECT_ID]/configs/[CONFIG_NAME]/variables/[VARIABLE_NAME]
@@ -322,17 +325,16 @@
           # `ports/serving_port` is a valid variable name. The variable value is an
           # opaque string and only leaf variables can have values (that is, variables
           # that do not have any child variables).
-        "text": "A String", # The textual value of the variable. The length of the value must be less
-            # than 4096 bytes. Empty values are also accepted.
-            # NB: Only one of value and string_value can be set at the same time.
+        "text": "A String", # The string value of the variable. The length of the value must be less
+            # than 4096 bytes. Empty values are also accepted. For example,
+            # <code>text: "my text value"</code>.
         "updateTime": "A String", # [Output Only] The time of the last variable update.
         "state": "A String", # [Ouput only] The current state of the variable. The variable state indicates
             # the outcome of the `variables().watch` call and is visible through the
             # `get` and `list` calls.
         "value": "A String", # The binary value of the variable. The length of the value must be less
             # than 4096 bytes. Empty values are also accepted. The value must be
-            # Base64 encoded.
-            # NB: Only one of value and string_value can be set at the same time.
+            # base64 encoded. Only one of `value` or `text` can be set.
         "name": "A String", # The name of the variable resource, in the format:
             #
             #     projects/[PROJECT_ID]/configs/[CONFIG_NAME]/variables/[VARIABLE_NAME]
@@ -369,6 +371,36 @@
 </div>
 
 <div class="method">
+    <code class="details" id="testIamPermissions">testIamPermissions(resource=None, x__xgafv=None, permissions=None)</code>
+  <pre>Returns permissions that a caller has on the specified resource.
+If the resource does not exist, this will return an empty set of
+permissions, not a NOT_FOUND error.
+
+Args:
+  resource: string, REQUIRED: The resource for which the policy detail is being requested.
+`resource` is usually specified as a path. For example, a Project
+resource is specified as `projects/{project}`. (required)
+  x__xgafv: string, V1 error format.
+    Allowed values
+      1 - v1 error format
+      2 - v2 error format
+  permissions: string, The set of permissions to check for the `resource`. Permissions with
+wildcards (such as '*' or 'storage.*') are not allowed. For more
+information see
+[IAM Overview](https://cloud.google.com/iam/docs/overview#permissions). (repeated)
+
+Returns:
+  An object of the form:
+
+    { # Response message for `TestIamPermissions` method.
+    "permissions": [ # A subset of `TestPermissionsRequest.permissions` that the caller is
+        # allowed.
+      "A String",
+    ],
+  }</pre>
+</div>
+
+<div class="method">
     <code class="details" id="update">update(name=None, body, x__xgafv=None)</code>
   <pre>Updates an existing variable with a new value.
 
@@ -384,17 +416,16 @@
     # `ports/serving_port` is a valid variable name. The variable value is an
     # opaque string and only leaf variables can have values (that is, variables
     # that do not have any child variables).
-  "text": "A String", # The textual value of the variable. The length of the value must be less
-      # than 4096 bytes. Empty values are also accepted.
-      # NB: Only one of value and string_value can be set at the same time.
+  "text": "A String", # The string value of the variable. The length of the value must be less
+      # than 4096 bytes. Empty values are also accepted. For example,
+      # <code>text: "my text value"</code>.
   "updateTime": "A String", # [Output Only] The time of the last variable update.
   "state": "A String", # [Ouput only] The current state of the variable. The variable state indicates
       # the outcome of the `variables().watch` call and is visible through the
       # `get` and `list` calls.
   "value": "A String", # The binary value of the variable. The length of the value must be less
       # than 4096 bytes. Empty values are also accepted. The value must be
-      # Base64 encoded.
-      # NB: Only one of value and string_value can be set at the same time.
+      # base64 encoded. Only one of `value` or `text` can be set.
   "name": "A String", # The name of the variable resource, in the format:
       # 
       #     projects/[PROJECT_ID]/configs/[CONFIG_NAME]/variables/[VARIABLE_NAME]
@@ -426,17 +457,16 @@
       # `ports/serving_port` is a valid variable name. The variable value is an
       # opaque string and only leaf variables can have values (that is, variables
       # that do not have any child variables).
-    "text": "A String", # The textual value of the variable. The length of the value must be less
-        # than 4096 bytes. Empty values are also accepted.
-        # NB: Only one of value and string_value can be set at the same time.
+    "text": "A String", # The string value of the variable. The length of the value must be less
+        # than 4096 bytes. Empty values are also accepted. For example,
+        # <code>text: "my text value"</code>.
     "updateTime": "A String", # [Output Only] The time of the last variable update.
     "state": "A String", # [Ouput only] The current state of the variable. The variable state indicates
         # the outcome of the `variables().watch` call and is visible through the
         # `get` and `list` calls.
     "value": "A String", # The binary value of the variable. The length of the value must be less
         # than 4096 bytes. Empty values are also accepted. The value must be
-        # Base64 encoded.
-        # NB: Only one of value and string_value can be set at the same time.
+        # base64 encoded. Only one of `value` or `text` can be set.
     "name": "A String", # The name of the variable resource, in the format:
         #
         #     projects/[PROJECT_ID]/configs/[CONFIG_NAME]/variables/[VARIABLE_NAME]
@@ -501,17 +531,16 @@
       # `ports/serving_port` is a valid variable name. The variable value is an
       # opaque string and only leaf variables can have values (that is, variables
       # that do not have any child variables).
-    "text": "A String", # The textual value of the variable. The length of the value must be less
-        # than 4096 bytes. Empty values are also accepted.
-        # NB: Only one of value and string_value can be set at the same time.
+    "text": "A String", # The string value of the variable. The length of the value must be less
+        # than 4096 bytes. Empty values are also accepted. For example,
+        # <code>text: "my text value"</code>.
     "updateTime": "A String", # [Output Only] The time of the last variable update.
     "state": "A String", # [Ouput only] The current state of the variable. The variable state indicates
         # the outcome of the `variables().watch` call and is visible through the
         # `get` and `list` calls.
     "value": "A String", # The binary value of the variable. The length of the value must be less
         # than 4096 bytes. Empty values are also accepted. The value must be
-        # Base64 encoded.
-        # NB: Only one of value and string_value can be set at the same time.
+        # base64 encoded. Only one of `value` or `text` can be set.
     "name": "A String", # The name of the variable resource, in the format:
         #
         #     projects/[PROJECT_ID]/configs/[CONFIG_NAME]/variables/[VARIABLE_NAME]
diff --git a/docs/dyn/runtimeconfig_v1beta1.projects.configs.waiters.html b/docs/dyn/runtimeconfig_v1beta1.projects.configs.waiters.html
index 90e131b..01ec336 100644
--- a/docs/dyn/runtimeconfig_v1beta1.projects.configs.waiters.html
+++ b/docs/dyn/runtimeconfig_v1beta1.projects.configs.waiters.html
@@ -89,6 +89,9 @@
 <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="#testIamPermissions">testIamPermissions(resource=None, x__xgafv=None, permissions=None)</a></code></p>
+<p class="firstline">Returns permissions that a caller has on the specified resource.</p>
 <h3>Method Details</h3>
 <div class="method">
     <code class="details" id="create">create(parent=None, body, requestId=None, x__xgafv=None)</code>
@@ -256,13 +259,16 @@
         # waiter.
   }
 
-  requestId: string, An optional unique request_id. If server receives two Create requests with
-the same request_id then second request will be ignored and information
-stored in the backend will be returned. Empty request_id fields are
-ignored.
-It is responsibility of the client to ensure uniqueness of the request_id
-strings.
-The strings are limited to 64 characters.
+  requestId: string, An optional but recommended unique <code>request_id</code>. If the server
+receives two <code>create()</code> requests  with the same
+<code>request_id</code>, then the second request will be ignored and the
+first resource created and stored in the backend is returned.
+Empty <code>request_id</code> fields are ignored.
+
+It is responsibility of the client to ensure uniqueness of the
+<code>request_id</code> strings.
+
+<code>request_id</code> strings are limited to 64 characters.
   x__xgafv: string, V1 error format.
     Allowed values
       1 - v1 error format
@@ -753,4 +759,34 @@
     </pre>
 </div>
 
+<div class="method">
+    <code class="details" id="testIamPermissions">testIamPermissions(resource=None, x__xgafv=None, permissions=None)</code>
+  <pre>Returns permissions that a caller has on the specified resource.
+If the resource does not exist, this will return an empty set of
+permissions, not a NOT_FOUND error.
+
+Args:
+  resource: string, REQUIRED: The resource for which the policy detail is being requested.
+`resource` is usually specified as a path. For example, a Project
+resource is specified as `projects/{project}`. (required)
+  x__xgafv: string, V1 error format.
+    Allowed values
+      1 - v1 error format
+      2 - v2 error format
+  permissions: string, The set of permissions to check for the `resource`. Permissions with
+wildcards (such as '*' or 'storage.*') are not allowed. For more
+information see
+[IAM Overview](https://cloud.google.com/iam/docs/overview#permissions). (repeated)
+
+Returns:
+  An object of the form:
+
+    { # Response message for `TestIamPermissions` method.
+    "permissions": [ # A subset of `TestPermissionsRequest.permissions` that the caller is
+        # allowed.
+      "A String",
+    ],
+  }</pre>
+</div>
+
 </body></html>
\ No newline at end of file
diff --git a/docs/dyn/servicecontrol_v1.services.html b/docs/dyn/servicecontrol_v1.services.html
index 0fec2b9..c367090 100644
--- a/docs/dyn/servicecontrol_v1.services.html
+++ b/docs/dyn/servicecontrol_v1.services.html
@@ -79,7 +79,7 @@
 <p class="firstline">Checks an operation with Google Service Control to decide whether</p>
 <p class="toc_element">
   <code><a href="#report">report(serviceName=None, body, x__xgafv=None)</a></code></p>
-<p class="firstline">Reports operations to Google Service Control. It should be called</p>
+<p class="firstline">Reports operation results to Google Service Control, such as logs and</p>
 <h3>Method Details</h3>
 <div class="method">
     <code class="details" id="check">check(serviceName=None, body, x__xgafv=None)</code>
@@ -87,6 +87,12 @@
 the given operation should proceed. It should be called before the
 operation is executed.
 
+If feasible, the client should cache the check results and reuse them for
+60 seconds. In case of server errors, the client can rely on the cached
+results for longer time.
+
+NOTE: the `CheckRequest` has the size limit of 1MB.
+
 This method requires the `servicemanagement.services.check` permission
 on the specified service. For more information, see
 [Google Cloud IAM](https://cloud.google.com/iam).
@@ -279,6 +285,11 @@
           # and an idempotent id is desirable for deduplication purpose, UUID version 5
           # is recommended. See RFC 4122 for details.
     },
+    "serviceConfigId": "A String", # Specifies which version of service configuration should be used to process
+        # the request.
+        # 
+        # If unspecified or no matching version can be found, the
+        # latest one will be used.
   }
 
   x__xgafv: string, V1 error format.
@@ -309,8 +320,16 @@
 
 <div class="method">
     <code class="details" id="report">report(serviceName=None, body, x__xgafv=None)</code>
-  <pre>Reports operations to Google Service Control. It should be called
-after the operation is completed.
+  <pre>Reports operation results to Google Service Control, such as logs and
+metrics. It should be called after an operation is completed.
+
+If feasible, the client should aggregate reporting data for up to 5
+seconds to reduce API traffic. Limiting aggregation to 5 seconds is to
+reduce data loss during client crashes. Clients should carefully choose
+the aggregation time window to avoid data loss risk more than 0.01%
+for business and compliance reasons.
+
+NOTE: the `ReportRequest` has the size limit of 1MB.
 
 This method requires the `servicemanagement.services.report` permission
 on the specified service. For more information, see
@@ -515,6 +534,11 @@
             # is recommended. See RFC 4122 for details.
       },
     ],
+    "serviceConfigId": "A String", # Specifies which version of service config should be used to process the
+        # request.
+        # 
+        # If unspecified or no matching version can be found, the
+        # latest one will be used.
   }
 
   x__xgafv: string, V1 error format.
@@ -538,8 +562,9 @@
         #    `Operations` in the request succeeded. Each
         #    `Operation` that failed processing has a corresponding item
         #    in this list.
-        # 3. A failed RPC status indicates a complete failure where none of the
-        #    `Operations` in the request succeeded.
+        # 3. A failed RPC status indicates a general non-deterministic failure.
+        #    When this happens, it's impossible to know which of the
+        #    'Operations' in the request succeeded or failed.
       { # Represents the processing error of one `Operation` in the request.
         "status": { # The `Status` type defines a logical error model that is suitable for different # Details of the error when processing the `Operation`.
             # programming environments, including REST APIs and RPC APIs. It is used by
diff --git a/docs/dyn/servicemanagement_v1.services.configs.html b/docs/dyn/servicemanagement_v1.services.configs.html
index 68ed0ea..752a764 100644
--- a/docs/dyn/servicemanagement_v1.services.configs.html
+++ b/docs/dyn/servicemanagement_v1.services.configs.html
@@ -117,10 +117,15 @@
     #     title: Google Calendar API
     #     apis:
     #     - name: google.calendar.v3.Calendar
-    #     backend:
+    #     authentication:
+    #       providers:
+    #       - id: google_calendar_auth
+    #         jwks_uri: https://www.googleapis.com/oauth2/v1/certs
+    #         issuer: https://securetoken.google.com
     #       rules:
-    #       - selector: "google.calendar.v3.*"
-    #         address: calendar.example.com
+    #       - selector: "*"
+    #         requirements:
+    #           provider_id: google_calendar_auth
   "control": { # Selects and configures the service controller used by the service.  The # Configuration for the service control plane.
       # service controller handles features like abuse, quota, billing, logging,
       # monitoring, etc.
@@ -192,56 +197,6 @@
           # slash, underscore, hyphen, period [/_-.].
     },
   ],
-  "analytics": { # Analytics configuration of the service. # WARNING: DO NOT USE UNTIL THIS MESSAGE IS REMOVED.
-      # 
-      # Analytics configuration.
-      #
-      # The example below shows how to configure monitored resources and metrics
-      # for analytics. In the example, a monitored resource and two metrics are
-      # defined. The `library.googleapis.com/book/returned_count` and
-      # `library.googleapis.com/book/overdue_count` metric are sent
-      # to the analytics.
-      #
-      #     monitored_resources:
-      #     - type: library.googleapis.com/branch
-      #       labels:
-      #       - key: /city
-      #         description: The city where the library branch is located in.
-      #       - key: /name
-      #         description: The name of the branch.
-      #     metrics:
-      #     - name: library.googleapis.com/book/returned_count
-      #       metric_kind: DELTA
-      #       value_type: INT64
-      #       labels:
-      #       - key: /customer_id
-      #     - name: library.googleapis.com/book/overdue_count
-      #       metric_kind: GAUGE
-      #       value_type: INT64
-      #       labels:
-      #       - key: /customer_id
-      #     analytics:
-      #       producer_destinations:
-      #       - monitored_resource: library.googleapis.com/branch
-      #         metrics:
-      #         - library.googleapis.com/book/returned_count
-      #         - library.googleapis.com/book/overdue_count
-    "producerDestinations": [ # Analytics configurations for sending metrics to the analytics backend.
-        # There can be multiple producer destinations, each one must have a
-        # different monitored resource type. A metric can be used in at most
-        # one producer destination.
-      { # Configuration of a specific analytics destination.
-        "monitoredResource": "A String", # The monitored resource type. The type must be defined in
-            # Service.monitored_resources section.
-        "metrics": [ # Names of the metrics to report to this analytics destination.
-            # Each name must be defined in Service.metrics section. Metrics
-            # with value type BOOL and STRING must be of GUAGE kind, metrics with
-            # value type INT64, DOUBLE and MONEY must be of DELTA kind.
-          "A String",
-        ],
-      },
-    ],
-  },
   "systemParameters": { # ### System parameter configuration # System parameter configuration.
       #
       # A system parameter is a special kind of parameter defined by the API
@@ -255,27 +210,26 @@
         # config, default system parameters will be used. Default system parameters
         # and names is implementation-dependent.
         #
-        # Example: define api key and alt name for all methods
+        # Example: define api key for all methods
         #
-        # system_parameters
-        #   rules:
-        #     - selector: "*"
-        #       parameters:
-        #         - name: api_key
-        #           url_query_parameter: api_key
-        #         - name: alt
-        #           http_header: Response-Content-Type
+        #     system_parameters
+        #       rules:
+        #         - selector: "*"
+        #           parameters:
+        #             - name: api_key
+        #               url_query_parameter: api_key
+        #
         #
         # Example: define 2 api key names for a specific method.
         #
-        # system_parameters
-        #   rules:
-        #     - selector: "/ListShelves"
-        #       parameters:
-        #         - name: api_key
-        #           http_header: Api-Key1
-        #         - name: api_key
-        #           http_header: Api-Key2
+        #     system_parameters
+        #       rules:
+        #         - selector: "/ListShelves"
+        #           parameters:
+        #             - name: api_key
+        #               http_header: Api-Key1
+        #             - name: api_key
+        #               http_header: Api-Key2
         #
         # **NOTE:** All service configuration rules follow "last one wins" order.
       { # Define a system parameter rule mapping system parameter definitions to
@@ -290,8 +244,7 @@
               # is implementation-dependent.
             "urlQueryParameter": "A String", # Define the URL query parameter name to use for the parameter. It is case
                 # sensitive.
-            "name": "A String", # Define the name of the parameter, such as "api_key", "alt", "callback",
-                # and etc. It is case sensitive.
+            "name": "A String", # Define the name of the parameter, such as "api_key" . It is case sensitive.
             "httpHeader": "A String", # Define the HTTP header name to use for the parameter. It is case
                 # insensitive.
           },
@@ -393,14 +346,14 @@
       #
       #     name: calendar.googleapis.com
       #     authentication:
+      #       providers:
+      #       - id: google_calendar_auth
+      #         jwks_uri: https://www.googleapis.com/oauth2/v1/certs
+      #         issuer: https://securetoken.google.com
       #       rules:
       #       - selector: "*"
-      #         oauth:
-      #           canonical_scopes: https://www.googleapis.com/auth/calendar
-      #
-      #       - selector: google.calendar.Delegate
-      #         oauth:
-      #           canonical_scopes: https://www.googleapis.com/auth/calendar.read
+      #         requirements:
+      #           provider_id: google_calendar_auth
     "rules": [ # A list of authentication rules that apply to individual API methods.
         #
         # **NOTE:** All service configuration rules follow "last one wins" order.
@@ -447,7 +400,10 @@
                 # Example:
                 #
                 #     provider_id: bookstore_auth
-            "audiences": "A String", # The list of JWT
+            "audiences": "A String", # NOTE: This will be deprecated soon, once AuthProvider.audiences is
+                # implemented and accepted in all the runtime components.
+                #
+                # The list of JWT
                 # [audiences](https://tools.ietf.org/html/draft-ietf-oauth-json-web-token-32#section-4.1.3).
                 # that are allowed to access. A JWT containing any of these audiences will
                 # be accepted. When this setting is absent, only JWTs with audience
@@ -486,6 +442,19 @@
             #  - can be inferred from the email domain of the issuer (e.g. a Google service account).
             #
             # Example: https://www.googleapis.com/oauth2/v1/certs
+        "audiences": "A String", # The list of JWT
+            # [audiences](https://tools.ietf.org/html/draft-ietf-oauth-json-web-token-32#section-4.1.3).
+            # that are allowed to access. A JWT containing any of these audiences will
+            # be accepted. When this setting is absent, only JWTs with audience
+            # "https://Service_name/API_name"
+            # will be accepted. For example, if no audiences are in the setting,
+            # LibraryService API will only accept JWTs with the following audience
+            # "https://library-example.googleapis.com/google.example.library.v1.LibraryService".
+            #
+            # Example:
+            #
+            #     audiences: bookstore_android.apps.googleusercontent.com,
+            #                bookstore_web.apps.googleusercontent.com
         "id": "A String", # The unique identifier of the auth provider. It will be referred to by
             # `AuthRequirement.provider_id`.
             #
@@ -535,6 +504,14 @@
         "allowUnregisteredCalls": True or False, # True, if the method allows unregistered calls; false otherwise.
       },
     ],
+    "producerNotificationChannel": "A String", # The full resource name of a channel used for sending notifications to the
+        # service producer.
+        #
+        # Google Service Management currently only supports
+        # [Google Cloud Pub/Sub](https://cloud.google.com/pubsub) as a notification
+        # channel. To use Google Cloud Pub/Sub as the channel, this must be the name
+        # of a Cloud Pub/Sub topic that uses the Cloud Pub/Sub topic name format
+        # documented in https://cloud.google.com/pubsub/docs/overview.
     "requirements": [ # Requirements that must be satisfied before a consumer project can use the
         # service. Each requirement is of the form <service.name>/<requirement-id>;
         # for example 'serviceusage.googleapis.com/billing-enabled'.
@@ -566,23 +543,30 @@
           # message, as in the example below which describes a REST GET
           # operation on a resource collection of messages:
           #
-          # ```proto
-          # service Messaging {
-          #   rpc GetMessage(GetMessageRequest) returns (Message) {
-          #     option (google.api.http).get = "/v1/messages/{message_id}/{sub.subfield}";
-          #   }
-          # }
-          # message GetMessageRequest {
-          #   message SubMessage {
-          #     string subfield = 1;
-          #   }
-          #   string message_id = 1; // mapped to the URL
-          #   SubMessage sub = 2;    // `sub.subfield` is url-mapped
-          # }
-          # message Message {
-          #   string text = 1; // content of the resource
-          # }
-          # ```
+          #
+          #     service Messaging {
+          #       rpc GetMessage(GetMessageRequest) returns (Message) {
+          #         option (google.api.http).get = "/v1/messages/{message_id}/{sub.subfield}";
+          #       }
+          #     }
+          #     message GetMessageRequest {
+          #       message SubMessage {
+          #         string subfield = 1;
+          #       }
+          #       string message_id = 1; // mapped to the URL
+          #       SubMessage sub = 2;    // `sub.subfield` is url-mapped
+          #     }
+          #     message Message {
+          #       string text = 1; // content of the resource
+          #     }
+          #
+          # The same http annotation can alternatively be expressed inside the
+          # `GRPC API Configuration` YAML file.
+          #
+          #     http:
+          #       rules:
+          #         - selector: <proto_package_name>.Messaging.GetMessage
+          #           get: /v1/messages/{message_id}/{sub.subfield}
           #
           # This definition enables an automatic, bidrectional mapping of HTTP
           # JSON to RPC. Example:
@@ -599,16 +583,16 @@
           # pattern automatically become (optional) HTTP query
           # parameters. Assume the following definition of the request message:
           #
-          # ```proto
-          # message GetMessageRequest {
-          #   message SubMessage {
-          #     string subfield = 1;
-          #   }
-          #   string message_id = 1; // mapped to the URL
-          #   int64 revision = 2;    // becomes a parameter
-          #   SubMessage sub = 3;    // `sub.subfield` becomes a parameter
-          # }
-          # ```
+          #
+          #     message GetMessageRequest {
+          #       message SubMessage {
+          #         string subfield = 1;
+          #       }
+          #       string message_id = 1; // mapped to the URL
+          #       int64 revision = 2;    // becomes a parameter
+          #       SubMessage sub = 3;    // `sub.subfield` becomes a parameter
+          #     }
+          #
           #
           # This enables a HTTP JSON to RPC mapping as below:
           #
@@ -625,20 +609,20 @@
           # specifies the mapping. Consider a REST update method on the
           # message resource collection:
           #
-          # ```proto
-          # service Messaging {
-          #   rpc UpdateMessage(UpdateMessageRequest) returns (Message) {
-          #     option (google.api.http) = {
-          #       put: "/v1/messages/{message_id}"
-          #       body: "message"
-          #     };
-          #   }
-          # }
-          # message UpdateMessageRequest {
-          #   string message_id = 1; // mapped to the URL
-          #   Message message = 2;   // mapped to the body
-          # }
-          # ```
+          #
+          #     service Messaging {
+          #       rpc UpdateMessage(UpdateMessageRequest) returns (Message) {
+          #         option (google.api.http) = {
+          #           put: "/v1/messages/{message_id}"
+          #           body: "message"
+          #         };
+          #       }
+          #     }
+          #     message UpdateMessageRequest {
+          #       string message_id = 1; // mapped to the URL
+          #       Message message = 2;   // mapped to the body
+          #     }
+          #
           #
           # The following HTTP JSON to RPC mapping is enabled, where the
           # representation of the JSON in the request body is determined by
@@ -653,20 +637,19 @@
           # request body.  This enables the following alternative definition of
           # the update method:
           #
-          # ```proto
-          # service Messaging {
-          #   rpc UpdateMessage(Message) returns (Message) {
-          #     option (google.api.http) = {
-          #       put: "/v1/messages/{message_id}"
-          #       body: "*"
-          #     };
-          #   }
-          # }
-          # message Message {
-          #   string message_id = 1;
-          #   string text = 2;
-          # }
-          # ```
+          #     service Messaging {
+          #       rpc UpdateMessage(Message) returns (Message) {
+          #         option (google.api.http) = {
+          #           put: "/v1/messages/{message_id}"
+          #           body: "*"
+          #         };
+          #       }
+          #     }
+          #     message Message {
+          #       string message_id = 1;
+          #       string text = 2;
+          #     }
+          #
           #
           # The following HTTP JSON to RPC mapping is enabled:
           #
@@ -683,22 +666,21 @@
           # It is possible to define multiple HTTP methods for one RPC by using
           # the `additional_bindings` option. Example:
           #
-          # ```proto
-          # service Messaging {
-          #   rpc GetMessage(GetMessageRequest) returns (Message) {
-          #     option (google.api.http) = {
-          #       get: "/v1/messages/{message_id}"
-          #       additional_bindings {
-          #         get: "/v1/users/{user_id}/messages/{message_id}"
+          #     service Messaging {
+          #       rpc GetMessage(GetMessageRequest) returns (Message) {
+          #         option (google.api.http) = {
+          #           get: "/v1/messages/{message_id}"
+          #           additional_bindings {
+          #             get: "/v1/users/{user_id}/messages/{message_id}"
+          #           }
+          #         };
           #       }
-          #     };
-          #   }
-          # }
-          # message GetMessageRequest {
-          #   string message_id = 1;
-          #   string user_id = 2;
-          # }
-          # ```
+          #     }
+          #     message GetMessageRequest {
+          #       string message_id = 1;
+          #       string user_id = 2;
+          #     }
+          #
           #
           # This enables the following two alternative HTTP JSON to RPC
           # mappings:
@@ -739,7 +721,7 @@
           #
           # The syntax `**` matches zero or more path segments. It follows the semantics
           # of [RFC 6570](https://tools.ietf.org/html/rfc6570) Section 3.2.3 Reserved
-          # Expansion.
+          # Expansion. NOTE: it must be the last segment in the path except the Verb.
           #
           # The syntax `LITERAL` matches literal text in the URL path.
           #
@@ -758,7 +740,7 @@
         "body": "A String", # The name of the request field whose value is mapped to the HTTP body, or
             # `*` for mapping all fields not captured by the path pattern to the HTTP
             # body. NOTE: the referred field must not be a repeated field and must be
-            # present at the top-level of response message type.
+            # present at the top-level of request message type.
         "get": "A String", # Used for listing and getting information about resources.
         "mediaDownload": { # Do not use this. For media support, add instead # Do not use this. For media support, add instead
             # [][google.bytestream.RestByteStream] as an API to your
@@ -815,8 +797,14 @@
           "options": [ # Any metadata attached to the method.
             { # A protocol buffer option, which can be attached to a message, field,
                 # enumeration, etc.
-              "name": "A String", # The option's name. For example, `"java_package"`.
-              "value": { # The option's value. For example, `"com.google.protobuf"`.
+              "name": "A String", # The option's name. For protobuf built-in options (options defined in
+                  # descriptor.proto), this is the short name. For example, `"map_entry"`.
+                  # For custom options, it should be the fully-qualified name. For example,
+                  # `"google.api.http"`.
+              "value": { # The option's value packed in an Any message. If the value is a primitive,
+                  # the corresponding wrapper type defined in google/protobuf/wrappers.proto
+                  # should be used. If the value is an enum, it should be stored as an int32
+                  # value using the google.protobuf.Int32Value type.
                 "a_key": "", # Properties of the object. Contains field @type with type URL.
               },
             },
@@ -936,8 +924,14 @@
       "options": [ # Any metadata attached to the API.
         { # A protocol buffer option, which can be attached to a message, field,
             # enumeration, etc.
-          "name": "A String", # The option's name. For example, `"java_package"`.
-          "value": { # The option's value. For example, `"com.google.protobuf"`.
+          "name": "A String", # The option's name. For protobuf built-in options (options defined in
+              # descriptor.proto), this is the short name. For example, `"map_entry"`.
+              # For custom options, it should be the fully-qualified name. For example,
+              # `"google.api.http"`.
+          "value": { # The option's value packed in an Any message. If the value is a primitive,
+              # the corresponding wrapper type defined in google/protobuf/wrappers.proto
+              # should be used. If the value is an enum, it should be stored as an int32
+              # value using the google.protobuf.Int32Value type.
             "a_key": "", # Properties of the object. Contains field @type with type URL.
           },
         },
@@ -1020,7 +1014,9 @@
     ],
   },
   "metrics": [ # Defines the metrics used by this service.
-    { # Defines a metric type and its schema.
+    { # Defines a metric type and its schema. Once a metric descriptor is created,
+        # deleting or altering it stops data collection and makes the metric type's
+        # existing data unusable.
       "displayName": "A String", # A concise name for the metric, which can be displayed in user interfaces.
           # Use sentence case without an ending period, for example "Request count".
       "description": "A String", # A detailed description of the metric, which can be used in documentation.
@@ -1028,29 +1024,25 @@
           # Some combinations of `metric_kind` and `value_type` might not be supported.
       "valueType": "A String", # Whether the measurement is an integer, a floating-point number, etc.
           # Some combinations of `metric_kind` and `value_type` might not be supported.
-      "labels": [ # The set of labels that can be used to describe a specific instance of this
-          # metric type. For example, the
-          # `compute.googleapis.com/instance/network/received_bytes_count` metric type
-          # has a label, `loadbalanced`, that specifies whether the traffic was
-          # received through a load balanced IP address.
+      "labels": [ # The set of labels that can be used to describe a specific
+          # instance of this metric type. For example, the
+          # `appengine.googleapis.com/http/server/response_latencies` metric
+          # type has a label for the HTTP response code, `response_code`, so
+          # you can look at latencies for successful responses or just
+          # for responses that failed.
         { # A description of a label.
           "valueType": "A String", # The type of data that can be assigned to the label.
           "description": "A String", # A human-readable description for the label.
           "key": "A String", # The label key.
         },
       ],
-      "type": "A String", # The metric type including a DNS name prefix, for example
-          # `"compute.googleapis.com/instance/cpu/utilization"`. Metric types
-          # should use a natural hierarchical grouping such as the following:
+      "type": "A String", # The metric type, including its DNS name prefix. The type is not
+          # URL-encoded.  All user-defined metric types have the DNS name
+          # `custom.googleapis.com`.  Metric types should use a natural hierarchical
+          # grouping. For example:
           #
-          #     compute.googleapis.com/instance/cpu/utilization
-          #     compute.googleapis.com/instance/disk/read_ops_count
-          #     compute.googleapis.com/instance/network/received_bytes_count
-          #
-          # Note that if the metric type changes, the monitoring data will be
-          # discontinued, and anything depends on it will break, such as monitoring
-          # dashboards, alerting rules and quota limits. Therefore, once a metric has
-          # been published, its type should be immutable.
+          #     "custom.googleapis.com/invoice/paid/amount"
+          #     "appengine.googleapis.com/http/server/response_latencies"
       "unit": "A String", # The unit in which the metric value is reported. It is only applicable
           # if the `value_type` is `INT64`, `DOUBLE`, or `DISTRIBUTION`. The
           # supported units are a subset of [The Unified Code for Units of
@@ -1115,11 +1107,14 @@
           #    `{requests}/s == 1/s`, `By{transmitted}/s == By/s`.
           # * `NAME` is a sequence of non-blank printable ASCII characters not
           #    containing '{' or '}'.
-      "name": "A String", # Resource name. The format of the name may vary between different
-          # implementations. For examples:
+      "name": "A String", # The resource name of the metric descriptor. Depending on the
+          # implementation, the name typically includes: (1) the parent resource name
+          # that defines the scope of the metric type or of its data; and (2) the
+          # metric's URL-encoded type, which also appears in the `type` field of this
+          # descriptor. For example, following is the resource name of a custom
+          # metric within the GCP project 123456789:
           #
-          #     projects/{project_id}/metricDescriptors/{type=**}
-          #     metricDescriptors/{type=**}
+          #     "projects/123456789/metricDescriptors/custom.googleapis.com%2Finvoice%2Fpaid%2Famount"
     },
   ],
   "enums": [ # A list of all enum types included in this API service.  Enums
@@ -1141,8 +1136,14 @@
           "options": [ # Protocol buffer options.
             { # A protocol buffer option, which can be attached to a message, field,
                 # enumeration, etc.
-              "name": "A String", # The option's name. For example, `"java_package"`.
-              "value": { # The option's value. For example, `"com.google.protobuf"`.
+              "name": "A String", # The option's name. For protobuf built-in options (options defined in
+                  # descriptor.proto), this is the short name. For example, `"map_entry"`.
+                  # For custom options, it should be the fully-qualified name. For example,
+                  # `"google.api.http"`.
+              "value": { # The option's value packed in an Any message. If the value is a primitive,
+                  # the corresponding wrapper type defined in google/protobuf/wrappers.proto
+                  # should be used. If the value is an enum, it should be stored as an int32
+                  # value using the google.protobuf.Int32Value type.
                 "a_key": "", # Properties of the object. Contains field @type with type URL.
               },
             },
@@ -1153,8 +1154,14 @@
       "options": [ # Protocol buffer options.
         { # A protocol buffer option, which can be attached to a message, field,
             # enumeration, etc.
-          "name": "A String", # The option's name. For example, `"java_package"`.
-          "value": { # The option's value. For example, `"com.google.protobuf"`.
+          "name": "A String", # The option's name. For protobuf built-in options (options defined in
+              # descriptor.proto), this is the short name. For example, `"map_entry"`.
+              # For custom options, it should be the fully-qualified name. For example,
+              # `"google.api.http"`.
+          "value": { # The option's value packed in an Any message. If the value is a primitive,
+              # the corresponding wrapper type defined in google/protobuf/wrappers.proto
+              # should be used. If the value is an enum, it should be stored as an int32
+              # value using the google.protobuf.Int32Value type.
             "a_key": "", # Properties of the object. Contains field @type with type URL.
           },
         },
@@ -1197,8 +1204,14 @@
           "options": [ # The protocol buffer options.
             { # A protocol buffer option, which can be attached to a message, field,
                 # enumeration, etc.
-              "name": "A String", # The option's name. For example, `"java_package"`.
-              "value": { # The option's value. For example, `"com.google.protobuf"`.
+              "name": "A String", # The option's name. For protobuf built-in options (options defined in
+                  # descriptor.proto), this is the short name. For example, `"map_entry"`.
+                  # For custom options, it should be the fully-qualified name. For example,
+                  # `"google.api.http"`.
+              "value": { # The option's value packed in an Any message. If the value is a primitive,
+                  # the corresponding wrapper type defined in google/protobuf/wrappers.proto
+                  # should be used. If the value is an enum, it should be stored as an int32
+                  # value using the google.protobuf.Int32Value type.
                 "a_key": "", # Properties of the object. Contains field @type with type URL.
               },
             },
@@ -1209,8 +1222,14 @@
       "options": [ # The protocol buffer options.
         { # A protocol buffer option, which can be attached to a message, field,
             # enumeration, etc.
-          "name": "A String", # The option's name. For example, `"java_package"`.
-          "value": { # The option's value. For example, `"com.google.protobuf"`.
+          "name": "A String", # The option's name. For protobuf built-in options (options defined in
+              # descriptor.proto), this is the short name. For example, `"map_entry"`.
+              # For custom options, it should be the fully-qualified name. For example,
+              # `"google.api.http"`.
+          "value": { # The option's value packed in an Any message. If the value is a primitive,
+              # the corresponding wrapper type defined in google/protobuf/wrappers.proto
+              # should be used. If the value is an enum, it should be stored as an int32
+              # value using the google.protobuf.Int32Value type.
             "a_key": "", # Properties of the object. Contains field @type with type URL.
           },
         },
@@ -1426,8 +1445,14 @@
           "options": [ # The protocol buffer options.
             { # A protocol buffer option, which can be attached to a message, field,
                 # enumeration, etc.
-              "name": "A String", # The option's name. For example, `"java_package"`.
-              "value": { # The option's value. For example, `"com.google.protobuf"`.
+              "name": "A String", # The option's name. For protobuf built-in options (options defined in
+                  # descriptor.proto), this is the short name. For example, `"map_entry"`.
+                  # For custom options, it should be the fully-qualified name. For example,
+                  # `"google.api.http"`.
+              "value": { # The option's value packed in an Any message. If the value is a primitive,
+                  # the corresponding wrapper type defined in google/protobuf/wrappers.proto
+                  # should be used. If the value is an enum, it should be stored as an int32
+                  # value using the google.protobuf.Int32Value type.
                 "a_key": "", # Properties of the object. Contains field @type with type URL.
               },
             },
@@ -1438,8 +1463,14 @@
       "options": [ # The protocol buffer options.
         { # A protocol buffer option, which can be attached to a message, field,
             # enumeration, etc.
-          "name": "A String", # The option's name. For example, `"java_package"`.
-          "value": { # The option's value. For example, `"com.google.protobuf"`.
+          "name": "A String", # The option's name. For protobuf built-in options (options defined in
+              # descriptor.proto), this is the short name. For example, `"map_entry"`.
+              # For custom options, it should be the fully-qualified name. For example,
+              # `"google.api.http"`.
+          "value": { # The option's value packed in an Any message. If the value is a primitive,
+              # the corresponding wrapper type defined in google/protobuf/wrappers.proto
+              # should be used. If the value is an enum, it should be stored as an int32
+              # value using the google.protobuf.Int32Value type.
             "a_key": "", # Properties of the object. Contains field @type with type URL.
           },
         },
@@ -1498,29 +1529,7 @@
         #       # it to decide whether the subsequent cross-origin request is
         #       # allowed to proceed.
         #     - name: library-example.googleapis.com
-        #       apis: google.example.library.v1.Library
         #       allow_cors: true
-        #       # Below entry makes 'google.example.library.v1.Library'
-        #       # API be served from endpoint address
-        #       # google.example.library-example.v1.LibraryManager.
-        #     - name: library-manager.googleapis.com
-        #       apis: google.example.library.v1.LibraryManager
-        #       # BNS address for a borg job. Can specify a task by appending
-        #       # "/taskId" (e.g. "/0") to the job spec.
-        #
-        # Example OpenAPI extension for endpoint with allow_cors set to true:
-        #
-        #     {
-        #       "swagger": "2.0",
-        #       "info": {
-        #         "description": "A simple..."
-        #       },
-        #       "host": "MY_PROJECT_ID.appspot.com",
-        #       "x-google-endpoints": [{
-        #         "name": "MY_PROJECT_ID.appspot.com",
-        #         "allow_cors": "true"
-        #       }]
-        #     }
       "allowCors": True or False, # Allowing
           # [CORS](https://en.wikipedia.org/wiki/Cross-origin_resource_sharing), aka
           # cross-domain traffic, would allow the backends served from this endpoint to
@@ -1567,10 +1576,15 @@
       #     title: Google Calendar API
       #     apis:
       #     - name: google.calendar.v3.Calendar
-      #     backend:
+      #     authentication:
+      #       providers:
+      #       - id: google_calendar_auth
+      #         jwks_uri: https://www.googleapis.com/oauth2/v1/certs
+      #         issuer: https://securetoken.google.com
       #       rules:
-      #       - selector: "google.calendar.v3.*"
-      #         address: calendar.example.com
+      #       - selector: "*"
+      #         requirements:
+      #           provider_id: google_calendar_auth
     "control": { # Selects and configures the service controller used by the service.  The # Configuration for the service control plane.
         # service controller handles features like abuse, quota, billing, logging,
         # monitoring, etc.
@@ -1642,56 +1656,6 @@
             # slash, underscore, hyphen, period [/_-.].
       },
     ],
-    "analytics": { # Analytics configuration of the service. # WARNING: DO NOT USE UNTIL THIS MESSAGE IS REMOVED.
-        #
-        # Analytics configuration.
-        #
-        # The example below shows how to configure monitored resources and metrics
-        # for analytics. In the example, a monitored resource and two metrics are
-        # defined. The `library.googleapis.com/book/returned_count` and
-        # `library.googleapis.com/book/overdue_count` metric are sent
-        # to the analytics.
-        #
-        #     monitored_resources:
-        #     - type: library.googleapis.com/branch
-        #       labels:
-        #       - key: /city
-        #         description: The city where the library branch is located in.
-        #       - key: /name
-        #         description: The name of the branch.
-        #     metrics:
-        #     - name: library.googleapis.com/book/returned_count
-        #       metric_kind: DELTA
-        #       value_type: INT64
-        #       labels:
-        #       - key: /customer_id
-        #     - name: library.googleapis.com/book/overdue_count
-        #       metric_kind: GAUGE
-        #       value_type: INT64
-        #       labels:
-        #       - key: /customer_id
-        #     analytics:
-        #       producer_destinations:
-        #       - monitored_resource: library.googleapis.com/branch
-        #         metrics:
-        #         - library.googleapis.com/book/returned_count
-        #         - library.googleapis.com/book/overdue_count
-      "producerDestinations": [ # Analytics configurations for sending metrics to the analytics backend.
-          # There can be multiple producer destinations, each one must have a
-          # different monitored resource type. A metric can be used in at most
-          # one producer destination.
-        { # Configuration of a specific analytics destination.
-          "monitoredResource": "A String", # The monitored resource type. The type must be defined in
-              # Service.monitored_resources section.
-          "metrics": [ # Names of the metrics to report to this analytics destination.
-              # Each name must be defined in Service.metrics section. Metrics
-              # with value type BOOL and STRING must be of GUAGE kind, metrics with
-              # value type INT64, DOUBLE and MONEY must be of DELTA kind.
-            "A String",
-          ],
-        },
-      ],
-    },
     "systemParameters": { # ### System parameter configuration # System parameter configuration.
         #
         # A system parameter is a special kind of parameter defined by the API
@@ -1705,27 +1669,26 @@
           # config, default system parameters will be used. Default system parameters
           # and names is implementation-dependent.
           #
-          # Example: define api key and alt name for all methods
+          # Example: define api key for all methods
           #
-          # system_parameters
-          #   rules:
-          #     - selector: "*"
-          #       parameters:
-          #         - name: api_key
-          #           url_query_parameter: api_key
-          #         - name: alt
-          #           http_header: Response-Content-Type
+          #     system_parameters
+          #       rules:
+          #         - selector: "*"
+          #           parameters:
+          #             - name: api_key
+          #               url_query_parameter: api_key
+          #
           #
           # Example: define 2 api key names for a specific method.
           #
-          # system_parameters
-          #   rules:
-          #     - selector: "/ListShelves"
-          #       parameters:
-          #         - name: api_key
-          #           http_header: Api-Key1
-          #         - name: api_key
-          #           http_header: Api-Key2
+          #     system_parameters
+          #       rules:
+          #         - selector: "/ListShelves"
+          #           parameters:
+          #             - name: api_key
+          #               http_header: Api-Key1
+          #             - name: api_key
+          #               http_header: Api-Key2
           #
           # **NOTE:** All service configuration rules follow "last one wins" order.
         { # Define a system parameter rule mapping system parameter definitions to
@@ -1740,8 +1703,7 @@
                 # is implementation-dependent.
               "urlQueryParameter": "A String", # Define the URL query parameter name to use for the parameter. It is case
                   # sensitive.
-              "name": "A String", # Define the name of the parameter, such as "api_key", "alt", "callback",
-                  # and etc. It is case sensitive.
+              "name": "A String", # Define the name of the parameter, such as "api_key" . It is case sensitive.
               "httpHeader": "A String", # Define the HTTP header name to use for the parameter. It is case
                   # insensitive.
             },
@@ -1843,14 +1805,14 @@
         #
         #     name: calendar.googleapis.com
         #     authentication:
+        #       providers:
+        #       - id: google_calendar_auth
+        #         jwks_uri: https://www.googleapis.com/oauth2/v1/certs
+        #         issuer: https://securetoken.google.com
         #       rules:
         #       - selector: "*"
-        #         oauth:
-        #           canonical_scopes: https://www.googleapis.com/auth/calendar
-        #
-        #       - selector: google.calendar.Delegate
-        #         oauth:
-        #           canonical_scopes: https://www.googleapis.com/auth/calendar.read
+        #         requirements:
+        #           provider_id: google_calendar_auth
       "rules": [ # A list of authentication rules that apply to individual API methods.
           #
           # **NOTE:** All service configuration rules follow "last one wins" order.
@@ -1897,7 +1859,10 @@
                   # Example:
                   #
                   #     provider_id: bookstore_auth
-              "audiences": "A String", # The list of JWT
+              "audiences": "A String", # NOTE: This will be deprecated soon, once AuthProvider.audiences is
+                  # implemented and accepted in all the runtime components.
+                  #
+                  # The list of JWT
                   # [audiences](https://tools.ietf.org/html/draft-ietf-oauth-json-web-token-32#section-4.1.3).
                   # that are allowed to access. A JWT containing any of these audiences will
                   # be accepted. When this setting is absent, only JWTs with audience
@@ -1936,6 +1901,19 @@
               #  - can be inferred from the email domain of the issuer (e.g. a Google service account).
               #
               # Example: https://www.googleapis.com/oauth2/v1/certs
+          "audiences": "A String", # The list of JWT
+              # [audiences](https://tools.ietf.org/html/draft-ietf-oauth-json-web-token-32#section-4.1.3).
+              # that are allowed to access. A JWT containing any of these audiences will
+              # be accepted. When this setting is absent, only JWTs with audience
+              # "https://Service_name/API_name"
+              # will be accepted. For example, if no audiences are in the setting,
+              # LibraryService API will only accept JWTs with the following audience
+              # "https://library-example.googleapis.com/google.example.library.v1.LibraryService".
+              #
+              # Example:
+              #
+              #     audiences: bookstore_android.apps.googleusercontent.com,
+              #                bookstore_web.apps.googleusercontent.com
           "id": "A String", # The unique identifier of the auth provider. It will be referred to by
               # `AuthRequirement.provider_id`.
               #
@@ -1985,6 +1963,14 @@
           "allowUnregisteredCalls": True or False, # True, if the method allows unregistered calls; false otherwise.
         },
       ],
+      "producerNotificationChannel": "A String", # The full resource name of a channel used for sending notifications to the
+          # service producer.
+          #
+          # Google Service Management currently only supports
+          # [Google Cloud Pub/Sub](https://cloud.google.com/pubsub) as a notification
+          # channel. To use Google Cloud Pub/Sub as the channel, this must be the name
+          # of a Cloud Pub/Sub topic that uses the Cloud Pub/Sub topic name format
+          # documented in https://cloud.google.com/pubsub/docs/overview.
       "requirements": [ # Requirements that must be satisfied before a consumer project can use the
           # service. Each requirement is of the form <service.name>/<requirement-id>;
           # for example 'serviceusage.googleapis.com/billing-enabled'.
@@ -2016,23 +2002,30 @@
             # message, as in the example below which describes a REST GET
             # operation on a resource collection of messages:
             #
-            # ```proto
-            # service Messaging {
-            #   rpc GetMessage(GetMessageRequest) returns (Message) {
-            #     option (google.api.http).get = "/v1/messages/{message_id}/{sub.subfield}";
-            #   }
-            # }
-            # message GetMessageRequest {
-            #   message SubMessage {
-            #     string subfield = 1;
-            #   }
-            #   string message_id = 1; // mapped to the URL
-            #   SubMessage sub = 2;    // `sub.subfield` is url-mapped
-            # }
-            # message Message {
-            #   string text = 1; // content of the resource
-            # }
-            # ```
+            #
+            #     service Messaging {
+            #       rpc GetMessage(GetMessageRequest) returns (Message) {
+            #         option (google.api.http).get = "/v1/messages/{message_id}/{sub.subfield}";
+            #       }
+            #     }
+            #     message GetMessageRequest {
+            #       message SubMessage {
+            #         string subfield = 1;
+            #       }
+            #       string message_id = 1; // mapped to the URL
+            #       SubMessage sub = 2;    // `sub.subfield` is url-mapped
+            #     }
+            #     message Message {
+            #       string text = 1; // content of the resource
+            #     }
+            #
+            # The same http annotation can alternatively be expressed inside the
+            # `GRPC API Configuration` YAML file.
+            #
+            #     http:
+            #       rules:
+            #         - selector: <proto_package_name>.Messaging.GetMessage
+            #           get: /v1/messages/{message_id}/{sub.subfield}
             #
             # This definition enables an automatic, bidrectional mapping of HTTP
             # JSON to RPC. Example:
@@ -2049,16 +2042,16 @@
             # pattern automatically become (optional) HTTP query
             # parameters. Assume the following definition of the request message:
             #
-            # ```proto
-            # message GetMessageRequest {
-            #   message SubMessage {
-            #     string subfield = 1;
-            #   }
-            #   string message_id = 1; // mapped to the URL
-            #   int64 revision = 2;    // becomes a parameter
-            #   SubMessage sub = 3;    // `sub.subfield` becomes a parameter
-            # }
-            # ```
+            #
+            #     message GetMessageRequest {
+            #       message SubMessage {
+            #         string subfield = 1;
+            #       }
+            #       string message_id = 1; // mapped to the URL
+            #       int64 revision = 2;    // becomes a parameter
+            #       SubMessage sub = 3;    // `sub.subfield` becomes a parameter
+            #     }
+            #
             #
             # This enables a HTTP JSON to RPC mapping as below:
             #
@@ -2075,20 +2068,20 @@
             # specifies the mapping. Consider a REST update method on the
             # message resource collection:
             #
-            # ```proto
-            # service Messaging {
-            #   rpc UpdateMessage(UpdateMessageRequest) returns (Message) {
-            #     option (google.api.http) = {
-            #       put: "/v1/messages/{message_id}"
-            #       body: "message"
-            #     };
-            #   }
-            # }
-            # message UpdateMessageRequest {
-            #   string message_id = 1; // mapped to the URL
-            #   Message message = 2;   // mapped to the body
-            # }
-            # ```
+            #
+            #     service Messaging {
+            #       rpc UpdateMessage(UpdateMessageRequest) returns (Message) {
+            #         option (google.api.http) = {
+            #           put: "/v1/messages/{message_id}"
+            #           body: "message"
+            #         };
+            #       }
+            #     }
+            #     message UpdateMessageRequest {
+            #       string message_id = 1; // mapped to the URL
+            #       Message message = 2;   // mapped to the body
+            #     }
+            #
             #
             # The following HTTP JSON to RPC mapping is enabled, where the
             # representation of the JSON in the request body is determined by
@@ -2103,20 +2096,19 @@
             # request body.  This enables the following alternative definition of
             # the update method:
             #
-            # ```proto
-            # service Messaging {
-            #   rpc UpdateMessage(Message) returns (Message) {
-            #     option (google.api.http) = {
-            #       put: "/v1/messages/{message_id}"
-            #       body: "*"
-            #     };
-            #   }
-            # }
-            # message Message {
-            #   string message_id = 1;
-            #   string text = 2;
-            # }
-            # ```
+            #     service Messaging {
+            #       rpc UpdateMessage(Message) returns (Message) {
+            #         option (google.api.http) = {
+            #           put: "/v1/messages/{message_id}"
+            #           body: "*"
+            #         };
+            #       }
+            #     }
+            #     message Message {
+            #       string message_id = 1;
+            #       string text = 2;
+            #     }
+            #
             #
             # The following HTTP JSON to RPC mapping is enabled:
             #
@@ -2133,22 +2125,21 @@
             # It is possible to define multiple HTTP methods for one RPC by using
             # the `additional_bindings` option. Example:
             #
-            # ```proto
-            # service Messaging {
-            #   rpc GetMessage(GetMessageRequest) returns (Message) {
-            #     option (google.api.http) = {
-            #       get: "/v1/messages/{message_id}"
-            #       additional_bindings {
-            #         get: "/v1/users/{user_id}/messages/{message_id}"
+            #     service Messaging {
+            #       rpc GetMessage(GetMessageRequest) returns (Message) {
+            #         option (google.api.http) = {
+            #           get: "/v1/messages/{message_id}"
+            #           additional_bindings {
+            #             get: "/v1/users/{user_id}/messages/{message_id}"
+            #           }
+            #         };
             #       }
-            #     };
-            #   }
-            # }
-            # message GetMessageRequest {
-            #   string message_id = 1;
-            #   string user_id = 2;
-            # }
-            # ```
+            #     }
+            #     message GetMessageRequest {
+            #       string message_id = 1;
+            #       string user_id = 2;
+            #     }
+            #
             #
             # This enables the following two alternative HTTP JSON to RPC
             # mappings:
@@ -2189,7 +2180,7 @@
             #
             # The syntax `**` matches zero or more path segments. It follows the semantics
             # of [RFC 6570](https://tools.ietf.org/html/rfc6570) Section 3.2.3 Reserved
-            # Expansion.
+            # Expansion. NOTE: it must be the last segment in the path except the Verb.
             #
             # The syntax `LITERAL` matches literal text in the URL path.
             #
@@ -2208,7 +2199,7 @@
           "body": "A String", # The name of the request field whose value is mapped to the HTTP body, or
               # `*` for mapping all fields not captured by the path pattern to the HTTP
               # body. NOTE: the referred field must not be a repeated field and must be
-              # present at the top-level of response message type.
+              # present at the top-level of request message type.
           "get": "A String", # Used for listing and getting information about resources.
           "mediaDownload": { # Do not use this. For media support, add instead # Do not use this. For media support, add instead
               # [][google.bytestream.RestByteStream] as an API to your
@@ -2265,8 +2256,14 @@
             "options": [ # Any metadata attached to the method.
               { # A protocol buffer option, which can be attached to a message, field,
                   # enumeration, etc.
-                "name": "A String", # The option's name. For example, `"java_package"`.
-                "value": { # The option's value. For example, `"com.google.protobuf"`.
+                "name": "A String", # The option's name. For protobuf built-in options (options defined in
+                    # descriptor.proto), this is the short name. For example, `"map_entry"`.
+                    # For custom options, it should be the fully-qualified name. For example,
+                    # `"google.api.http"`.
+                "value": { # The option's value packed in an Any message. If the value is a primitive,
+                    # the corresponding wrapper type defined in google/protobuf/wrappers.proto
+                    # should be used. If the value is an enum, it should be stored as an int32
+                    # value using the google.protobuf.Int32Value type.
                   "a_key": "", # Properties of the object. Contains field @type with type URL.
                 },
               },
@@ -2386,8 +2383,14 @@
         "options": [ # Any metadata attached to the API.
           { # A protocol buffer option, which can be attached to a message, field,
               # enumeration, etc.
-            "name": "A String", # The option's name. For example, `"java_package"`.
-            "value": { # The option's value. For example, `"com.google.protobuf"`.
+            "name": "A String", # The option's name. For protobuf built-in options (options defined in
+                # descriptor.proto), this is the short name. For example, `"map_entry"`.
+                # For custom options, it should be the fully-qualified name. For example,
+                # `"google.api.http"`.
+            "value": { # The option's value packed in an Any message. If the value is a primitive,
+                # the corresponding wrapper type defined in google/protobuf/wrappers.proto
+                # should be used. If the value is an enum, it should be stored as an int32
+                # value using the google.protobuf.Int32Value type.
               "a_key": "", # Properties of the object. Contains field @type with type URL.
             },
           },
@@ -2470,7 +2473,9 @@
       ],
     },
     "metrics": [ # Defines the metrics used by this service.
-      { # Defines a metric type and its schema.
+      { # Defines a metric type and its schema. Once a metric descriptor is created,
+          # deleting or altering it stops data collection and makes the metric type's
+          # existing data unusable.
         "displayName": "A String", # A concise name for the metric, which can be displayed in user interfaces.
             # Use sentence case without an ending period, for example "Request count".
         "description": "A String", # A detailed description of the metric, which can be used in documentation.
@@ -2478,29 +2483,25 @@
             # Some combinations of `metric_kind` and `value_type` might not be supported.
         "valueType": "A String", # Whether the measurement is an integer, a floating-point number, etc.
             # Some combinations of `metric_kind` and `value_type` might not be supported.
-        "labels": [ # The set of labels that can be used to describe a specific instance of this
-            # metric type. For example, the
-            # `compute.googleapis.com/instance/network/received_bytes_count` metric type
-            # has a label, `loadbalanced`, that specifies whether the traffic was
-            # received through a load balanced IP address.
+        "labels": [ # The set of labels that can be used to describe a specific
+            # instance of this metric type. For example, the
+            # `appengine.googleapis.com/http/server/response_latencies` metric
+            # type has a label for the HTTP response code, `response_code`, so
+            # you can look at latencies for successful responses or just
+            # for responses that failed.
           { # A description of a label.
             "valueType": "A String", # The type of data that can be assigned to the label.
             "description": "A String", # A human-readable description for the label.
             "key": "A String", # The label key.
           },
         ],
-        "type": "A String", # The metric type including a DNS name prefix, for example
-            # `"compute.googleapis.com/instance/cpu/utilization"`. Metric types
-            # should use a natural hierarchical grouping such as the following:
+        "type": "A String", # The metric type, including its DNS name prefix. The type is not
+            # URL-encoded.  All user-defined metric types have the DNS name
+            # `custom.googleapis.com`.  Metric types should use a natural hierarchical
+            # grouping. For example:
             #
-            #     compute.googleapis.com/instance/cpu/utilization
-            #     compute.googleapis.com/instance/disk/read_ops_count
-            #     compute.googleapis.com/instance/network/received_bytes_count
-            #
-            # Note that if the metric type changes, the monitoring data will be
-            # discontinued, and anything depends on it will break, such as monitoring
-            # dashboards, alerting rules and quota limits. Therefore, once a metric has
-            # been published, its type should be immutable.
+            #     "custom.googleapis.com/invoice/paid/amount"
+            #     "appengine.googleapis.com/http/server/response_latencies"
         "unit": "A String", # The unit in which the metric value is reported. It is only applicable
             # if the `value_type` is `INT64`, `DOUBLE`, or `DISTRIBUTION`. The
             # supported units are a subset of [The Unified Code for Units of
@@ -2565,11 +2566,14 @@
             #    `{requests}/s == 1/s`, `By{transmitted}/s == By/s`.
             # * `NAME` is a sequence of non-blank printable ASCII characters not
             #    containing '{' or '}'.
-        "name": "A String", # Resource name. The format of the name may vary between different
-            # implementations. For examples:
+        "name": "A String", # The resource name of the metric descriptor. Depending on the
+            # implementation, the name typically includes: (1) the parent resource name
+            # that defines the scope of the metric type or of its data; and (2) the
+            # metric's URL-encoded type, which also appears in the `type` field of this
+            # descriptor. For example, following is the resource name of a custom
+            # metric within the GCP project 123456789:
             #
-            #     projects/{project_id}/metricDescriptors/{type=**}
-            #     metricDescriptors/{type=**}
+            #     "projects/123456789/metricDescriptors/custom.googleapis.com%2Finvoice%2Fpaid%2Famount"
       },
     ],
     "enums": [ # A list of all enum types included in this API service.  Enums
@@ -2591,8 +2595,14 @@
             "options": [ # Protocol buffer options.
               { # A protocol buffer option, which can be attached to a message, field,
                   # enumeration, etc.
-                "name": "A String", # The option's name. For example, `"java_package"`.
-                "value": { # The option's value. For example, `"com.google.protobuf"`.
+                "name": "A String", # The option's name. For protobuf built-in options (options defined in
+                    # descriptor.proto), this is the short name. For example, `"map_entry"`.
+                    # For custom options, it should be the fully-qualified name. For example,
+                    # `"google.api.http"`.
+                "value": { # The option's value packed in an Any message. If the value is a primitive,
+                    # the corresponding wrapper type defined in google/protobuf/wrappers.proto
+                    # should be used. If the value is an enum, it should be stored as an int32
+                    # value using the google.protobuf.Int32Value type.
                   "a_key": "", # Properties of the object. Contains field @type with type URL.
                 },
               },
@@ -2603,8 +2613,14 @@
         "options": [ # Protocol buffer options.
           { # A protocol buffer option, which can be attached to a message, field,
               # enumeration, etc.
-            "name": "A String", # The option's name. For example, `"java_package"`.
-            "value": { # The option's value. For example, `"com.google.protobuf"`.
+            "name": "A String", # The option's name. For protobuf built-in options (options defined in
+                # descriptor.proto), this is the short name. For example, `"map_entry"`.
+                # For custom options, it should be the fully-qualified name. For example,
+                # `"google.api.http"`.
+            "value": { # The option's value packed in an Any message. If the value is a primitive,
+                # the corresponding wrapper type defined in google/protobuf/wrappers.proto
+                # should be used. If the value is an enum, it should be stored as an int32
+                # value using the google.protobuf.Int32Value type.
               "a_key": "", # Properties of the object. Contains field @type with type URL.
             },
           },
@@ -2647,8 +2663,14 @@
             "options": [ # The protocol buffer options.
               { # A protocol buffer option, which can be attached to a message, field,
                   # enumeration, etc.
-                "name": "A String", # The option's name. For example, `"java_package"`.
-                "value": { # The option's value. For example, `"com.google.protobuf"`.
+                "name": "A String", # The option's name. For protobuf built-in options (options defined in
+                    # descriptor.proto), this is the short name. For example, `"map_entry"`.
+                    # For custom options, it should be the fully-qualified name. For example,
+                    # `"google.api.http"`.
+                "value": { # The option's value packed in an Any message. If the value is a primitive,
+                    # the corresponding wrapper type defined in google/protobuf/wrappers.proto
+                    # should be used. If the value is an enum, it should be stored as an int32
+                    # value using the google.protobuf.Int32Value type.
                   "a_key": "", # Properties of the object. Contains field @type with type URL.
                 },
               },
@@ -2659,8 +2681,14 @@
         "options": [ # The protocol buffer options.
           { # A protocol buffer option, which can be attached to a message, field,
               # enumeration, etc.
-            "name": "A String", # The option's name. For example, `"java_package"`.
-            "value": { # The option's value. For example, `"com.google.protobuf"`.
+            "name": "A String", # The option's name. For protobuf built-in options (options defined in
+                # descriptor.proto), this is the short name. For example, `"map_entry"`.
+                # For custom options, it should be the fully-qualified name. For example,
+                # `"google.api.http"`.
+            "value": { # The option's value packed in an Any message. If the value is a primitive,
+                # the corresponding wrapper type defined in google/protobuf/wrappers.proto
+                # should be used. If the value is an enum, it should be stored as an int32
+                # value using the google.protobuf.Int32Value type.
               "a_key": "", # Properties of the object. Contains field @type with type URL.
             },
           },
@@ -2876,8 +2904,14 @@
             "options": [ # The protocol buffer options.
               { # A protocol buffer option, which can be attached to a message, field,
                   # enumeration, etc.
-                "name": "A String", # The option's name. For example, `"java_package"`.
-                "value": { # The option's value. For example, `"com.google.protobuf"`.
+                "name": "A String", # The option's name. For protobuf built-in options (options defined in
+                    # descriptor.proto), this is the short name. For example, `"map_entry"`.
+                    # For custom options, it should be the fully-qualified name. For example,
+                    # `"google.api.http"`.
+                "value": { # The option's value packed in an Any message. If the value is a primitive,
+                    # the corresponding wrapper type defined in google/protobuf/wrappers.proto
+                    # should be used. If the value is an enum, it should be stored as an int32
+                    # value using the google.protobuf.Int32Value type.
                   "a_key": "", # Properties of the object. Contains field @type with type URL.
                 },
               },
@@ -2888,8 +2922,14 @@
         "options": [ # The protocol buffer options.
           { # A protocol buffer option, which can be attached to a message, field,
               # enumeration, etc.
-            "name": "A String", # The option's name. For example, `"java_package"`.
-            "value": { # The option's value. For example, `"com.google.protobuf"`.
+            "name": "A String", # The option's name. For protobuf built-in options (options defined in
+                # descriptor.proto), this is the short name. For example, `"map_entry"`.
+                # For custom options, it should be the fully-qualified name. For example,
+                # `"google.api.http"`.
+            "value": { # The option's value packed in an Any message. If the value is a primitive,
+                # the corresponding wrapper type defined in google/protobuf/wrappers.proto
+                # should be used. If the value is an enum, it should be stored as an int32
+                # value using the google.protobuf.Int32Value type.
               "a_key": "", # Properties of the object. Contains field @type with type URL.
             },
           },
@@ -2948,29 +2988,7 @@
           #       # it to decide whether the subsequent cross-origin request is
           #       # allowed to proceed.
           #     - name: library-example.googleapis.com
-          #       apis: google.example.library.v1.Library
           #       allow_cors: true
-          #       # Below entry makes 'google.example.library.v1.Library'
-          #       # API be served from endpoint address
-          #       # google.example.library-example.v1.LibraryManager.
-          #     - name: library-manager.googleapis.com
-          #       apis: google.example.library.v1.LibraryManager
-          #       # BNS address for a borg job. Can specify a task by appending
-          #       # "/taskId" (e.g. "/0") to the job spec.
-          #
-          # Example OpenAPI extension for endpoint with allow_cors set to true:
-          #
-          #     {
-          #       "swagger": "2.0",
-          #       "info": {
-          #         "description": "A simple..."
-          #       },
-          #       "host": "MY_PROJECT_ID.appspot.com",
-          #       "x-google-endpoints": [{
-          #         "name": "MY_PROJECT_ID.appspot.com",
-          #         "allow_cors": "true"
-          #       }]
-          #     }
         "allowCors": True or False, # Allowing
             # [CORS](https://en.wikipedia.org/wiki/Cross-origin_resource_sharing), aka
             # cross-domain traffic, would allow the backends served from this endpoint to
@@ -3003,7 +3021,7 @@
 Args:
   serviceName: string, The name of the service.  See the [overview](/service-management/overview)
 for naming requirements.  For example: `example.googleapis.com`. (required)
-  configId: string, A parameter (required)
+  configId: string, The id of the service configuration resource. (required)
   x__xgafv: string, V1 error format.
     Allowed values
       1 - v1 error format
@@ -3026,10 +3044,15 @@
       #     title: Google Calendar API
       #     apis:
       #     - name: google.calendar.v3.Calendar
-      #     backend:
+      #     authentication:
+      #       providers:
+      #       - id: google_calendar_auth
+      #         jwks_uri: https://www.googleapis.com/oauth2/v1/certs
+      #         issuer: https://securetoken.google.com
       #       rules:
-      #       - selector: "google.calendar.v3.*"
-      #         address: calendar.example.com
+      #       - selector: "*"
+      #         requirements:
+      #           provider_id: google_calendar_auth
     "control": { # Selects and configures the service controller used by the service.  The # Configuration for the service control plane.
         # service controller handles features like abuse, quota, billing, logging,
         # monitoring, etc.
@@ -3101,56 +3124,6 @@
             # slash, underscore, hyphen, period [/_-.].
       },
     ],
-    "analytics": { # Analytics configuration of the service. # WARNING: DO NOT USE UNTIL THIS MESSAGE IS REMOVED.
-        #
-        # Analytics configuration.
-        #
-        # The example below shows how to configure monitored resources and metrics
-        # for analytics. In the example, a monitored resource and two metrics are
-        # defined. The `library.googleapis.com/book/returned_count` and
-        # `library.googleapis.com/book/overdue_count` metric are sent
-        # to the analytics.
-        #
-        #     monitored_resources:
-        #     - type: library.googleapis.com/branch
-        #       labels:
-        #       - key: /city
-        #         description: The city where the library branch is located in.
-        #       - key: /name
-        #         description: The name of the branch.
-        #     metrics:
-        #     - name: library.googleapis.com/book/returned_count
-        #       metric_kind: DELTA
-        #       value_type: INT64
-        #       labels:
-        #       - key: /customer_id
-        #     - name: library.googleapis.com/book/overdue_count
-        #       metric_kind: GAUGE
-        #       value_type: INT64
-        #       labels:
-        #       - key: /customer_id
-        #     analytics:
-        #       producer_destinations:
-        #       - monitored_resource: library.googleapis.com/branch
-        #         metrics:
-        #         - library.googleapis.com/book/returned_count
-        #         - library.googleapis.com/book/overdue_count
-      "producerDestinations": [ # Analytics configurations for sending metrics to the analytics backend.
-          # There can be multiple producer destinations, each one must have a
-          # different monitored resource type. A metric can be used in at most
-          # one producer destination.
-        { # Configuration of a specific analytics destination.
-          "monitoredResource": "A String", # The monitored resource type. The type must be defined in
-              # Service.monitored_resources section.
-          "metrics": [ # Names of the metrics to report to this analytics destination.
-              # Each name must be defined in Service.metrics section. Metrics
-              # with value type BOOL and STRING must be of GUAGE kind, metrics with
-              # value type INT64, DOUBLE and MONEY must be of DELTA kind.
-            "A String",
-          ],
-        },
-      ],
-    },
     "systemParameters": { # ### System parameter configuration # System parameter configuration.
         #
         # A system parameter is a special kind of parameter defined by the API
@@ -3164,27 +3137,26 @@
           # config, default system parameters will be used. Default system parameters
           # and names is implementation-dependent.
           #
-          # Example: define api key and alt name for all methods
+          # Example: define api key for all methods
           #
-          # system_parameters
-          #   rules:
-          #     - selector: "*"
-          #       parameters:
-          #         - name: api_key
-          #           url_query_parameter: api_key
-          #         - name: alt
-          #           http_header: Response-Content-Type
+          #     system_parameters
+          #       rules:
+          #         - selector: "*"
+          #           parameters:
+          #             - name: api_key
+          #               url_query_parameter: api_key
+          #
           #
           # Example: define 2 api key names for a specific method.
           #
-          # system_parameters
-          #   rules:
-          #     - selector: "/ListShelves"
-          #       parameters:
-          #         - name: api_key
-          #           http_header: Api-Key1
-          #         - name: api_key
-          #           http_header: Api-Key2
+          #     system_parameters
+          #       rules:
+          #         - selector: "/ListShelves"
+          #           parameters:
+          #             - name: api_key
+          #               http_header: Api-Key1
+          #             - name: api_key
+          #               http_header: Api-Key2
           #
           # **NOTE:** All service configuration rules follow "last one wins" order.
         { # Define a system parameter rule mapping system parameter definitions to
@@ -3199,8 +3171,7 @@
                 # is implementation-dependent.
               "urlQueryParameter": "A String", # Define the URL query parameter name to use for the parameter. It is case
                   # sensitive.
-              "name": "A String", # Define the name of the parameter, such as "api_key", "alt", "callback",
-                  # and etc. It is case sensitive.
+              "name": "A String", # Define the name of the parameter, such as "api_key" . It is case sensitive.
               "httpHeader": "A String", # Define the HTTP header name to use for the parameter. It is case
                   # insensitive.
             },
@@ -3302,14 +3273,14 @@
         #
         #     name: calendar.googleapis.com
         #     authentication:
+        #       providers:
+        #       - id: google_calendar_auth
+        #         jwks_uri: https://www.googleapis.com/oauth2/v1/certs
+        #         issuer: https://securetoken.google.com
         #       rules:
         #       - selector: "*"
-        #         oauth:
-        #           canonical_scopes: https://www.googleapis.com/auth/calendar
-        #
-        #       - selector: google.calendar.Delegate
-        #         oauth:
-        #           canonical_scopes: https://www.googleapis.com/auth/calendar.read
+        #         requirements:
+        #           provider_id: google_calendar_auth
       "rules": [ # A list of authentication rules that apply to individual API methods.
           #
           # **NOTE:** All service configuration rules follow "last one wins" order.
@@ -3356,7 +3327,10 @@
                   # Example:
                   #
                   #     provider_id: bookstore_auth
-              "audiences": "A String", # The list of JWT
+              "audiences": "A String", # NOTE: This will be deprecated soon, once AuthProvider.audiences is
+                  # implemented and accepted in all the runtime components.
+                  #
+                  # The list of JWT
                   # [audiences](https://tools.ietf.org/html/draft-ietf-oauth-json-web-token-32#section-4.1.3).
                   # that are allowed to access. A JWT containing any of these audiences will
                   # be accepted. When this setting is absent, only JWTs with audience
@@ -3395,6 +3369,19 @@
               #  - can be inferred from the email domain of the issuer (e.g. a Google service account).
               #
               # Example: https://www.googleapis.com/oauth2/v1/certs
+          "audiences": "A String", # The list of JWT
+              # [audiences](https://tools.ietf.org/html/draft-ietf-oauth-json-web-token-32#section-4.1.3).
+              # that are allowed to access. A JWT containing any of these audiences will
+              # be accepted. When this setting is absent, only JWTs with audience
+              # "https://Service_name/API_name"
+              # will be accepted. For example, if no audiences are in the setting,
+              # LibraryService API will only accept JWTs with the following audience
+              # "https://library-example.googleapis.com/google.example.library.v1.LibraryService".
+              #
+              # Example:
+              #
+              #     audiences: bookstore_android.apps.googleusercontent.com,
+              #                bookstore_web.apps.googleusercontent.com
           "id": "A String", # The unique identifier of the auth provider. It will be referred to by
               # `AuthRequirement.provider_id`.
               #
@@ -3444,6 +3431,14 @@
           "allowUnregisteredCalls": True or False, # True, if the method allows unregistered calls; false otherwise.
         },
       ],
+      "producerNotificationChannel": "A String", # The full resource name of a channel used for sending notifications to the
+          # service producer.
+          #
+          # Google Service Management currently only supports
+          # [Google Cloud Pub/Sub](https://cloud.google.com/pubsub) as a notification
+          # channel. To use Google Cloud Pub/Sub as the channel, this must be the name
+          # of a Cloud Pub/Sub topic that uses the Cloud Pub/Sub topic name format
+          # documented in https://cloud.google.com/pubsub/docs/overview.
       "requirements": [ # Requirements that must be satisfied before a consumer project can use the
           # service. Each requirement is of the form <service.name>/<requirement-id>;
           # for example 'serviceusage.googleapis.com/billing-enabled'.
@@ -3475,23 +3470,30 @@
             # message, as in the example below which describes a REST GET
             # operation on a resource collection of messages:
             #
-            # ```proto
-            # service Messaging {
-            #   rpc GetMessage(GetMessageRequest) returns (Message) {
-            #     option (google.api.http).get = "/v1/messages/{message_id}/{sub.subfield}";
-            #   }
-            # }
-            # message GetMessageRequest {
-            #   message SubMessage {
-            #     string subfield = 1;
-            #   }
-            #   string message_id = 1; // mapped to the URL
-            #   SubMessage sub = 2;    // `sub.subfield` is url-mapped
-            # }
-            # message Message {
-            #   string text = 1; // content of the resource
-            # }
-            # ```
+            #
+            #     service Messaging {
+            #       rpc GetMessage(GetMessageRequest) returns (Message) {
+            #         option (google.api.http).get = "/v1/messages/{message_id}/{sub.subfield}";
+            #       }
+            #     }
+            #     message GetMessageRequest {
+            #       message SubMessage {
+            #         string subfield = 1;
+            #       }
+            #       string message_id = 1; // mapped to the URL
+            #       SubMessage sub = 2;    // `sub.subfield` is url-mapped
+            #     }
+            #     message Message {
+            #       string text = 1; // content of the resource
+            #     }
+            #
+            # The same http annotation can alternatively be expressed inside the
+            # `GRPC API Configuration` YAML file.
+            #
+            #     http:
+            #       rules:
+            #         - selector: <proto_package_name>.Messaging.GetMessage
+            #           get: /v1/messages/{message_id}/{sub.subfield}
             #
             # This definition enables an automatic, bidrectional mapping of HTTP
             # JSON to RPC. Example:
@@ -3508,16 +3510,16 @@
             # pattern automatically become (optional) HTTP query
             # parameters. Assume the following definition of the request message:
             #
-            # ```proto
-            # message GetMessageRequest {
-            #   message SubMessage {
-            #     string subfield = 1;
-            #   }
-            #   string message_id = 1; // mapped to the URL
-            #   int64 revision = 2;    // becomes a parameter
-            #   SubMessage sub = 3;    // `sub.subfield` becomes a parameter
-            # }
-            # ```
+            #
+            #     message GetMessageRequest {
+            #       message SubMessage {
+            #         string subfield = 1;
+            #       }
+            #       string message_id = 1; // mapped to the URL
+            #       int64 revision = 2;    // becomes a parameter
+            #       SubMessage sub = 3;    // `sub.subfield` becomes a parameter
+            #     }
+            #
             #
             # This enables a HTTP JSON to RPC mapping as below:
             #
@@ -3534,20 +3536,20 @@
             # specifies the mapping. Consider a REST update method on the
             # message resource collection:
             #
-            # ```proto
-            # service Messaging {
-            #   rpc UpdateMessage(UpdateMessageRequest) returns (Message) {
-            #     option (google.api.http) = {
-            #       put: "/v1/messages/{message_id}"
-            #       body: "message"
-            #     };
-            #   }
-            # }
-            # message UpdateMessageRequest {
-            #   string message_id = 1; // mapped to the URL
-            #   Message message = 2;   // mapped to the body
-            # }
-            # ```
+            #
+            #     service Messaging {
+            #       rpc UpdateMessage(UpdateMessageRequest) returns (Message) {
+            #         option (google.api.http) = {
+            #           put: "/v1/messages/{message_id}"
+            #           body: "message"
+            #         };
+            #       }
+            #     }
+            #     message UpdateMessageRequest {
+            #       string message_id = 1; // mapped to the URL
+            #       Message message = 2;   // mapped to the body
+            #     }
+            #
             #
             # The following HTTP JSON to RPC mapping is enabled, where the
             # representation of the JSON in the request body is determined by
@@ -3562,20 +3564,19 @@
             # request body.  This enables the following alternative definition of
             # the update method:
             #
-            # ```proto
-            # service Messaging {
-            #   rpc UpdateMessage(Message) returns (Message) {
-            #     option (google.api.http) = {
-            #       put: "/v1/messages/{message_id}"
-            #       body: "*"
-            #     };
-            #   }
-            # }
-            # message Message {
-            #   string message_id = 1;
-            #   string text = 2;
-            # }
-            # ```
+            #     service Messaging {
+            #       rpc UpdateMessage(Message) returns (Message) {
+            #         option (google.api.http) = {
+            #           put: "/v1/messages/{message_id}"
+            #           body: "*"
+            #         };
+            #       }
+            #     }
+            #     message Message {
+            #       string message_id = 1;
+            #       string text = 2;
+            #     }
+            #
             #
             # The following HTTP JSON to RPC mapping is enabled:
             #
@@ -3592,22 +3593,21 @@
             # It is possible to define multiple HTTP methods for one RPC by using
             # the `additional_bindings` option. Example:
             #
-            # ```proto
-            # service Messaging {
-            #   rpc GetMessage(GetMessageRequest) returns (Message) {
-            #     option (google.api.http) = {
-            #       get: "/v1/messages/{message_id}"
-            #       additional_bindings {
-            #         get: "/v1/users/{user_id}/messages/{message_id}"
+            #     service Messaging {
+            #       rpc GetMessage(GetMessageRequest) returns (Message) {
+            #         option (google.api.http) = {
+            #           get: "/v1/messages/{message_id}"
+            #           additional_bindings {
+            #             get: "/v1/users/{user_id}/messages/{message_id}"
+            #           }
+            #         };
             #       }
-            #     };
-            #   }
-            # }
-            # message GetMessageRequest {
-            #   string message_id = 1;
-            #   string user_id = 2;
-            # }
-            # ```
+            #     }
+            #     message GetMessageRequest {
+            #       string message_id = 1;
+            #       string user_id = 2;
+            #     }
+            #
             #
             # This enables the following two alternative HTTP JSON to RPC
             # mappings:
@@ -3648,7 +3648,7 @@
             #
             # The syntax `**` matches zero or more path segments. It follows the semantics
             # of [RFC 6570](https://tools.ietf.org/html/rfc6570) Section 3.2.3 Reserved
-            # Expansion.
+            # Expansion. NOTE: it must be the last segment in the path except the Verb.
             #
             # The syntax `LITERAL` matches literal text in the URL path.
             #
@@ -3667,7 +3667,7 @@
           "body": "A String", # The name of the request field whose value is mapped to the HTTP body, or
               # `*` for mapping all fields not captured by the path pattern to the HTTP
               # body. NOTE: the referred field must not be a repeated field and must be
-              # present at the top-level of response message type.
+              # present at the top-level of request message type.
           "get": "A String", # Used for listing and getting information about resources.
           "mediaDownload": { # Do not use this. For media support, add instead # Do not use this. For media support, add instead
               # [][google.bytestream.RestByteStream] as an API to your
@@ -3724,8 +3724,14 @@
             "options": [ # Any metadata attached to the method.
               { # A protocol buffer option, which can be attached to a message, field,
                   # enumeration, etc.
-                "name": "A String", # The option's name. For example, `"java_package"`.
-                "value": { # The option's value. For example, `"com.google.protobuf"`.
+                "name": "A String", # The option's name. For protobuf built-in options (options defined in
+                    # descriptor.proto), this is the short name. For example, `"map_entry"`.
+                    # For custom options, it should be the fully-qualified name. For example,
+                    # `"google.api.http"`.
+                "value": { # The option's value packed in an Any message. If the value is a primitive,
+                    # the corresponding wrapper type defined in google/protobuf/wrappers.proto
+                    # should be used. If the value is an enum, it should be stored as an int32
+                    # value using the google.protobuf.Int32Value type.
                   "a_key": "", # Properties of the object. Contains field @type with type URL.
                 },
               },
@@ -3845,8 +3851,14 @@
         "options": [ # Any metadata attached to the API.
           { # A protocol buffer option, which can be attached to a message, field,
               # enumeration, etc.
-            "name": "A String", # The option's name. For example, `"java_package"`.
-            "value": { # The option's value. For example, `"com.google.protobuf"`.
+            "name": "A String", # The option's name. For protobuf built-in options (options defined in
+                # descriptor.proto), this is the short name. For example, `"map_entry"`.
+                # For custom options, it should be the fully-qualified name. For example,
+                # `"google.api.http"`.
+            "value": { # The option's value packed in an Any message. If the value is a primitive,
+                # the corresponding wrapper type defined in google/protobuf/wrappers.proto
+                # should be used. If the value is an enum, it should be stored as an int32
+                # value using the google.protobuf.Int32Value type.
               "a_key": "", # Properties of the object. Contains field @type with type URL.
             },
           },
@@ -3929,7 +3941,9 @@
       ],
     },
     "metrics": [ # Defines the metrics used by this service.
-      { # Defines a metric type and its schema.
+      { # Defines a metric type and its schema. Once a metric descriptor is created,
+          # deleting or altering it stops data collection and makes the metric type's
+          # existing data unusable.
         "displayName": "A String", # A concise name for the metric, which can be displayed in user interfaces.
             # Use sentence case without an ending period, for example "Request count".
         "description": "A String", # A detailed description of the metric, which can be used in documentation.
@@ -3937,29 +3951,25 @@
             # Some combinations of `metric_kind` and `value_type` might not be supported.
         "valueType": "A String", # Whether the measurement is an integer, a floating-point number, etc.
             # Some combinations of `metric_kind` and `value_type` might not be supported.
-        "labels": [ # The set of labels that can be used to describe a specific instance of this
-            # metric type. For example, the
-            # `compute.googleapis.com/instance/network/received_bytes_count` metric type
-            # has a label, `loadbalanced`, that specifies whether the traffic was
-            # received through a load balanced IP address.
+        "labels": [ # The set of labels that can be used to describe a specific
+            # instance of this metric type. For example, the
+            # `appengine.googleapis.com/http/server/response_latencies` metric
+            # type has a label for the HTTP response code, `response_code`, so
+            # you can look at latencies for successful responses or just
+            # for responses that failed.
           { # A description of a label.
             "valueType": "A String", # The type of data that can be assigned to the label.
             "description": "A String", # A human-readable description for the label.
             "key": "A String", # The label key.
           },
         ],
-        "type": "A String", # The metric type including a DNS name prefix, for example
-            # `"compute.googleapis.com/instance/cpu/utilization"`. Metric types
-            # should use a natural hierarchical grouping such as the following:
+        "type": "A String", # The metric type, including its DNS name prefix. The type is not
+            # URL-encoded.  All user-defined metric types have the DNS name
+            # `custom.googleapis.com`.  Metric types should use a natural hierarchical
+            # grouping. For example:
             #
-            #     compute.googleapis.com/instance/cpu/utilization
-            #     compute.googleapis.com/instance/disk/read_ops_count
-            #     compute.googleapis.com/instance/network/received_bytes_count
-            #
-            # Note that if the metric type changes, the monitoring data will be
-            # discontinued, and anything depends on it will break, such as monitoring
-            # dashboards, alerting rules and quota limits. Therefore, once a metric has
-            # been published, its type should be immutable.
+            #     "custom.googleapis.com/invoice/paid/amount"
+            #     "appengine.googleapis.com/http/server/response_latencies"
         "unit": "A String", # The unit in which the metric value is reported. It is only applicable
             # if the `value_type` is `INT64`, `DOUBLE`, or `DISTRIBUTION`. The
             # supported units are a subset of [The Unified Code for Units of
@@ -4024,11 +4034,14 @@
             #    `{requests}/s == 1/s`, `By{transmitted}/s == By/s`.
             # * `NAME` is a sequence of non-blank printable ASCII characters not
             #    containing '{' or '}'.
-        "name": "A String", # Resource name. The format of the name may vary between different
-            # implementations. For examples:
+        "name": "A String", # The resource name of the metric descriptor. Depending on the
+            # implementation, the name typically includes: (1) the parent resource name
+            # that defines the scope of the metric type or of its data; and (2) the
+            # metric's URL-encoded type, which also appears in the `type` field of this
+            # descriptor. For example, following is the resource name of a custom
+            # metric within the GCP project 123456789:
             #
-            #     projects/{project_id}/metricDescriptors/{type=**}
-            #     metricDescriptors/{type=**}
+            #     "projects/123456789/metricDescriptors/custom.googleapis.com%2Finvoice%2Fpaid%2Famount"
       },
     ],
     "enums": [ # A list of all enum types included in this API service.  Enums
@@ -4050,8 +4063,14 @@
             "options": [ # Protocol buffer options.
               { # A protocol buffer option, which can be attached to a message, field,
                   # enumeration, etc.
-                "name": "A String", # The option's name. For example, `"java_package"`.
-                "value": { # The option's value. For example, `"com.google.protobuf"`.
+                "name": "A String", # The option's name. For protobuf built-in options (options defined in
+                    # descriptor.proto), this is the short name. For example, `"map_entry"`.
+                    # For custom options, it should be the fully-qualified name. For example,
+                    # `"google.api.http"`.
+                "value": { # The option's value packed in an Any message. If the value is a primitive,
+                    # the corresponding wrapper type defined in google/protobuf/wrappers.proto
+                    # should be used. If the value is an enum, it should be stored as an int32
+                    # value using the google.protobuf.Int32Value type.
                   "a_key": "", # Properties of the object. Contains field @type with type URL.
                 },
               },
@@ -4062,8 +4081,14 @@
         "options": [ # Protocol buffer options.
           { # A protocol buffer option, which can be attached to a message, field,
               # enumeration, etc.
-            "name": "A String", # The option's name. For example, `"java_package"`.
-            "value": { # The option's value. For example, `"com.google.protobuf"`.
+            "name": "A String", # The option's name. For protobuf built-in options (options defined in
+                # descriptor.proto), this is the short name. For example, `"map_entry"`.
+                # For custom options, it should be the fully-qualified name. For example,
+                # `"google.api.http"`.
+            "value": { # The option's value packed in an Any message. If the value is a primitive,
+                # the corresponding wrapper type defined in google/protobuf/wrappers.proto
+                # should be used. If the value is an enum, it should be stored as an int32
+                # value using the google.protobuf.Int32Value type.
               "a_key": "", # Properties of the object. Contains field @type with type URL.
             },
           },
@@ -4106,8 +4131,14 @@
             "options": [ # The protocol buffer options.
               { # A protocol buffer option, which can be attached to a message, field,
                   # enumeration, etc.
-                "name": "A String", # The option's name. For example, `"java_package"`.
-                "value": { # The option's value. For example, `"com.google.protobuf"`.
+                "name": "A String", # The option's name. For protobuf built-in options (options defined in
+                    # descriptor.proto), this is the short name. For example, `"map_entry"`.
+                    # For custom options, it should be the fully-qualified name. For example,
+                    # `"google.api.http"`.
+                "value": { # The option's value packed in an Any message. If the value is a primitive,
+                    # the corresponding wrapper type defined in google/protobuf/wrappers.proto
+                    # should be used. If the value is an enum, it should be stored as an int32
+                    # value using the google.protobuf.Int32Value type.
                   "a_key": "", # Properties of the object. Contains field @type with type URL.
                 },
               },
@@ -4118,8 +4149,14 @@
         "options": [ # The protocol buffer options.
           { # A protocol buffer option, which can be attached to a message, field,
               # enumeration, etc.
-            "name": "A String", # The option's name. For example, `"java_package"`.
-            "value": { # The option's value. For example, `"com.google.protobuf"`.
+            "name": "A String", # The option's name. For protobuf built-in options (options defined in
+                # descriptor.proto), this is the short name. For example, `"map_entry"`.
+                # For custom options, it should be the fully-qualified name. For example,
+                # `"google.api.http"`.
+            "value": { # The option's value packed in an Any message. If the value is a primitive,
+                # the corresponding wrapper type defined in google/protobuf/wrappers.proto
+                # should be used. If the value is an enum, it should be stored as an int32
+                # value using the google.protobuf.Int32Value type.
               "a_key": "", # Properties of the object. Contains field @type with type URL.
             },
           },
@@ -4335,8 +4372,14 @@
             "options": [ # The protocol buffer options.
               { # A protocol buffer option, which can be attached to a message, field,
                   # enumeration, etc.
-                "name": "A String", # The option's name. For example, `"java_package"`.
-                "value": { # The option's value. For example, `"com.google.protobuf"`.
+                "name": "A String", # The option's name. For protobuf built-in options (options defined in
+                    # descriptor.proto), this is the short name. For example, `"map_entry"`.
+                    # For custom options, it should be the fully-qualified name. For example,
+                    # `"google.api.http"`.
+                "value": { # The option's value packed in an Any message. If the value is a primitive,
+                    # the corresponding wrapper type defined in google/protobuf/wrappers.proto
+                    # should be used. If the value is an enum, it should be stored as an int32
+                    # value using the google.protobuf.Int32Value type.
                   "a_key": "", # Properties of the object. Contains field @type with type URL.
                 },
               },
@@ -4347,8 +4390,14 @@
         "options": [ # The protocol buffer options.
           { # A protocol buffer option, which can be attached to a message, field,
               # enumeration, etc.
-            "name": "A String", # The option's name. For example, `"java_package"`.
-            "value": { # The option's value. For example, `"com.google.protobuf"`.
+            "name": "A String", # The option's name. For protobuf built-in options (options defined in
+                # descriptor.proto), this is the short name. For example, `"map_entry"`.
+                # For custom options, it should be the fully-qualified name. For example,
+                # `"google.api.http"`.
+            "value": { # The option's value packed in an Any message. If the value is a primitive,
+                # the corresponding wrapper type defined in google/protobuf/wrappers.proto
+                # should be used. If the value is an enum, it should be stored as an int32
+                # value using the google.protobuf.Int32Value type.
               "a_key": "", # Properties of the object. Contains field @type with type URL.
             },
           },
@@ -4407,29 +4456,7 @@
           #       # it to decide whether the subsequent cross-origin request is
           #       # allowed to proceed.
           #     - name: library-example.googleapis.com
-          #       apis: google.example.library.v1.Library
           #       allow_cors: true
-          #       # Below entry makes 'google.example.library.v1.Library'
-          #       # API be served from endpoint address
-          #       # google.example.library-example.v1.LibraryManager.
-          #     - name: library-manager.googleapis.com
-          #       apis: google.example.library.v1.LibraryManager
-          #       # BNS address for a borg job. Can specify a task by appending
-          #       # "/taskId" (e.g. "/0") to the job spec.
-          #
-          # Example OpenAPI extension for endpoint with allow_cors set to true:
-          #
-          #     {
-          #       "swagger": "2.0",
-          #       "info": {
-          #         "description": "A simple..."
-          #       },
-          #       "host": "MY_PROJECT_ID.appspot.com",
-          #       "x-google-endpoints": [{
-          #         "name": "MY_PROJECT_ID.appspot.com",
-          #         "allow_cors": "true"
-          #       }]
-          #     }
         "allowCors": True or False, # Allowing
             # [CORS](https://en.wikipedia.org/wiki/Cross-origin_resource_sharing), aka
             # cross-domain traffic, would allow the backends served from this endpoint to
@@ -4490,10 +4517,15 @@
           #     title: Google Calendar API
           #     apis:
           #     - name: google.calendar.v3.Calendar
-          #     backend:
+          #     authentication:
+          #       providers:
+          #       - id: google_calendar_auth
+          #         jwks_uri: https://www.googleapis.com/oauth2/v1/certs
+          #         issuer: https://securetoken.google.com
           #       rules:
-          #       - selector: "google.calendar.v3.*"
-          #         address: calendar.example.com
+          #       - selector: "*"
+          #         requirements:
+          #           provider_id: google_calendar_auth
         "control": { # Selects and configures the service controller used by the service.  The # Configuration for the service control plane.
             # service controller handles features like abuse, quota, billing, logging,
             # monitoring, etc.
@@ -4565,56 +4597,6 @@
                 # slash, underscore, hyphen, period [/_-.].
           },
         ],
-        "analytics": { # Analytics configuration of the service. # WARNING: DO NOT USE UNTIL THIS MESSAGE IS REMOVED.
-            #
-            # Analytics configuration.
-            #
-            # The example below shows how to configure monitored resources and metrics
-            # for analytics. In the example, a monitored resource and two metrics are
-            # defined. The `library.googleapis.com/book/returned_count` and
-            # `library.googleapis.com/book/overdue_count` metric are sent
-            # to the analytics.
-            #
-            #     monitored_resources:
-            #     - type: library.googleapis.com/branch
-            #       labels:
-            #       - key: /city
-            #         description: The city where the library branch is located in.
-            #       - key: /name
-            #         description: The name of the branch.
-            #     metrics:
-            #     - name: library.googleapis.com/book/returned_count
-            #       metric_kind: DELTA
-            #       value_type: INT64
-            #       labels:
-            #       - key: /customer_id
-            #     - name: library.googleapis.com/book/overdue_count
-            #       metric_kind: GAUGE
-            #       value_type: INT64
-            #       labels:
-            #       - key: /customer_id
-            #     analytics:
-            #       producer_destinations:
-            #       - monitored_resource: library.googleapis.com/branch
-            #         metrics:
-            #         - library.googleapis.com/book/returned_count
-            #         - library.googleapis.com/book/overdue_count
-          "producerDestinations": [ # Analytics configurations for sending metrics to the analytics backend.
-              # There can be multiple producer destinations, each one must have a
-              # different monitored resource type. A metric can be used in at most
-              # one producer destination.
-            { # Configuration of a specific analytics destination.
-              "monitoredResource": "A String", # The monitored resource type. The type must be defined in
-                  # Service.monitored_resources section.
-              "metrics": [ # Names of the metrics to report to this analytics destination.
-                  # Each name must be defined in Service.metrics section. Metrics
-                  # with value type BOOL and STRING must be of GUAGE kind, metrics with
-                  # value type INT64, DOUBLE and MONEY must be of DELTA kind.
-                "A String",
-              ],
-            },
-          ],
-        },
         "systemParameters": { # ### System parameter configuration # System parameter configuration.
             #
             # A system parameter is a special kind of parameter defined by the API
@@ -4628,27 +4610,26 @@
               # config, default system parameters will be used. Default system parameters
               # and names is implementation-dependent.
               #
-              # Example: define api key and alt name for all methods
+              # Example: define api key for all methods
               #
-              # system_parameters
-              #   rules:
-              #     - selector: "*"
-              #       parameters:
-              #         - name: api_key
-              #           url_query_parameter: api_key
-              #         - name: alt
-              #           http_header: Response-Content-Type
+              #     system_parameters
+              #       rules:
+              #         - selector: "*"
+              #           parameters:
+              #             - name: api_key
+              #               url_query_parameter: api_key
+              #
               #
               # Example: define 2 api key names for a specific method.
               #
-              # system_parameters
-              #   rules:
-              #     - selector: "/ListShelves"
-              #       parameters:
-              #         - name: api_key
-              #           http_header: Api-Key1
-              #         - name: api_key
-              #           http_header: Api-Key2
+              #     system_parameters
+              #       rules:
+              #         - selector: "/ListShelves"
+              #           parameters:
+              #             - name: api_key
+              #               http_header: Api-Key1
+              #             - name: api_key
+              #               http_header: Api-Key2
               #
               # **NOTE:** All service configuration rules follow "last one wins" order.
             { # Define a system parameter rule mapping system parameter definitions to
@@ -4663,8 +4644,7 @@
                     # is implementation-dependent.
                   "urlQueryParameter": "A String", # Define the URL query parameter name to use for the parameter. It is case
                       # sensitive.
-                  "name": "A String", # Define the name of the parameter, such as "api_key", "alt", "callback",
-                      # and etc. It is case sensitive.
+                  "name": "A String", # Define the name of the parameter, such as "api_key" . It is case sensitive.
                   "httpHeader": "A String", # Define the HTTP header name to use for the parameter. It is case
                       # insensitive.
                 },
@@ -4766,14 +4746,14 @@
             #
             #     name: calendar.googleapis.com
             #     authentication:
+            #       providers:
+            #       - id: google_calendar_auth
+            #         jwks_uri: https://www.googleapis.com/oauth2/v1/certs
+            #         issuer: https://securetoken.google.com
             #       rules:
             #       - selector: "*"
-            #         oauth:
-            #           canonical_scopes: https://www.googleapis.com/auth/calendar
-            #
-            #       - selector: google.calendar.Delegate
-            #         oauth:
-            #           canonical_scopes: https://www.googleapis.com/auth/calendar.read
+            #         requirements:
+            #           provider_id: google_calendar_auth
           "rules": [ # A list of authentication rules that apply to individual API methods.
               #
               # **NOTE:** All service configuration rules follow "last one wins" order.
@@ -4820,7 +4800,10 @@
                       # Example:
                       #
                       #     provider_id: bookstore_auth
-                  "audiences": "A String", # The list of JWT
+                  "audiences": "A String", # NOTE: This will be deprecated soon, once AuthProvider.audiences is
+                      # implemented and accepted in all the runtime components.
+                      #
+                      # The list of JWT
                       # [audiences](https://tools.ietf.org/html/draft-ietf-oauth-json-web-token-32#section-4.1.3).
                       # that are allowed to access. A JWT containing any of these audiences will
                       # be accepted. When this setting is absent, only JWTs with audience
@@ -4859,6 +4842,19 @@
                   #  - can be inferred from the email domain of the issuer (e.g. a Google service account).
                   #
                   # Example: https://www.googleapis.com/oauth2/v1/certs
+              "audiences": "A String", # The list of JWT
+                  # [audiences](https://tools.ietf.org/html/draft-ietf-oauth-json-web-token-32#section-4.1.3).
+                  # that are allowed to access. A JWT containing any of these audiences will
+                  # be accepted. When this setting is absent, only JWTs with audience
+                  # "https://Service_name/API_name"
+                  # will be accepted. For example, if no audiences are in the setting,
+                  # LibraryService API will only accept JWTs with the following audience
+                  # "https://library-example.googleapis.com/google.example.library.v1.LibraryService".
+                  #
+                  # Example:
+                  #
+                  #     audiences: bookstore_android.apps.googleusercontent.com,
+                  #                bookstore_web.apps.googleusercontent.com
               "id": "A String", # The unique identifier of the auth provider. It will be referred to by
                   # `AuthRequirement.provider_id`.
                   #
@@ -4908,6 +4904,14 @@
               "allowUnregisteredCalls": True or False, # True, if the method allows unregistered calls; false otherwise.
             },
           ],
+          "producerNotificationChannel": "A String", # The full resource name of a channel used for sending notifications to the
+              # service producer.
+              #
+              # Google Service Management currently only supports
+              # [Google Cloud Pub/Sub](https://cloud.google.com/pubsub) as a notification
+              # channel. To use Google Cloud Pub/Sub as the channel, this must be the name
+              # of a Cloud Pub/Sub topic that uses the Cloud Pub/Sub topic name format
+              # documented in https://cloud.google.com/pubsub/docs/overview.
           "requirements": [ # Requirements that must be satisfied before a consumer project can use the
               # service. Each requirement is of the form <service.name>/<requirement-id>;
               # for example 'serviceusage.googleapis.com/billing-enabled'.
@@ -4939,23 +4943,30 @@
                 # message, as in the example below which describes a REST GET
                 # operation on a resource collection of messages:
                 #
-                # ```proto
-                # service Messaging {
-                #   rpc GetMessage(GetMessageRequest) returns (Message) {
-                #     option (google.api.http).get = "/v1/messages/{message_id}/{sub.subfield}";
-                #   }
-                # }
-                # message GetMessageRequest {
-                #   message SubMessage {
-                #     string subfield = 1;
-                #   }
-                #   string message_id = 1; // mapped to the URL
-                #   SubMessage sub = 2;    // `sub.subfield` is url-mapped
-                # }
-                # message Message {
-                #   string text = 1; // content of the resource
-                # }
-                # ```
+                #
+                #     service Messaging {
+                #       rpc GetMessage(GetMessageRequest) returns (Message) {
+                #         option (google.api.http).get = "/v1/messages/{message_id}/{sub.subfield}";
+                #       }
+                #     }
+                #     message GetMessageRequest {
+                #       message SubMessage {
+                #         string subfield = 1;
+                #       }
+                #       string message_id = 1; // mapped to the URL
+                #       SubMessage sub = 2;    // `sub.subfield` is url-mapped
+                #     }
+                #     message Message {
+                #       string text = 1; // content of the resource
+                #     }
+                #
+                # The same http annotation can alternatively be expressed inside the
+                # `GRPC API Configuration` YAML file.
+                #
+                #     http:
+                #       rules:
+                #         - selector: <proto_package_name>.Messaging.GetMessage
+                #           get: /v1/messages/{message_id}/{sub.subfield}
                 #
                 # This definition enables an automatic, bidrectional mapping of HTTP
                 # JSON to RPC. Example:
@@ -4972,16 +4983,16 @@
                 # pattern automatically become (optional) HTTP query
                 # parameters. Assume the following definition of the request message:
                 #
-                # ```proto
-                # message GetMessageRequest {
-                #   message SubMessage {
-                #     string subfield = 1;
-                #   }
-                #   string message_id = 1; // mapped to the URL
-                #   int64 revision = 2;    // becomes a parameter
-                #   SubMessage sub = 3;    // `sub.subfield` becomes a parameter
-                # }
-                # ```
+                #
+                #     message GetMessageRequest {
+                #       message SubMessage {
+                #         string subfield = 1;
+                #       }
+                #       string message_id = 1; // mapped to the URL
+                #       int64 revision = 2;    // becomes a parameter
+                #       SubMessage sub = 3;    // `sub.subfield` becomes a parameter
+                #     }
+                #
                 #
                 # This enables a HTTP JSON to RPC mapping as below:
                 #
@@ -4998,20 +5009,20 @@
                 # specifies the mapping. Consider a REST update method on the
                 # message resource collection:
                 #
-                # ```proto
-                # service Messaging {
-                #   rpc UpdateMessage(UpdateMessageRequest) returns (Message) {
-                #     option (google.api.http) = {
-                #       put: "/v1/messages/{message_id}"
-                #       body: "message"
-                #     };
-                #   }
-                # }
-                # message UpdateMessageRequest {
-                #   string message_id = 1; // mapped to the URL
-                #   Message message = 2;   // mapped to the body
-                # }
-                # ```
+                #
+                #     service Messaging {
+                #       rpc UpdateMessage(UpdateMessageRequest) returns (Message) {
+                #         option (google.api.http) = {
+                #           put: "/v1/messages/{message_id}"
+                #           body: "message"
+                #         };
+                #       }
+                #     }
+                #     message UpdateMessageRequest {
+                #       string message_id = 1; // mapped to the URL
+                #       Message message = 2;   // mapped to the body
+                #     }
+                #
                 #
                 # The following HTTP JSON to RPC mapping is enabled, where the
                 # representation of the JSON in the request body is determined by
@@ -5026,20 +5037,19 @@
                 # request body.  This enables the following alternative definition of
                 # the update method:
                 #
-                # ```proto
-                # service Messaging {
-                #   rpc UpdateMessage(Message) returns (Message) {
-                #     option (google.api.http) = {
-                #       put: "/v1/messages/{message_id}"
-                #       body: "*"
-                #     };
-                #   }
-                # }
-                # message Message {
-                #   string message_id = 1;
-                #   string text = 2;
-                # }
-                # ```
+                #     service Messaging {
+                #       rpc UpdateMessage(Message) returns (Message) {
+                #         option (google.api.http) = {
+                #           put: "/v1/messages/{message_id}"
+                #           body: "*"
+                #         };
+                #       }
+                #     }
+                #     message Message {
+                #       string message_id = 1;
+                #       string text = 2;
+                #     }
+                #
                 #
                 # The following HTTP JSON to RPC mapping is enabled:
                 #
@@ -5056,22 +5066,21 @@
                 # It is possible to define multiple HTTP methods for one RPC by using
                 # the `additional_bindings` option. Example:
                 #
-                # ```proto
-                # service Messaging {
-                #   rpc GetMessage(GetMessageRequest) returns (Message) {
-                #     option (google.api.http) = {
-                #       get: "/v1/messages/{message_id}"
-                #       additional_bindings {
-                #         get: "/v1/users/{user_id}/messages/{message_id}"
+                #     service Messaging {
+                #       rpc GetMessage(GetMessageRequest) returns (Message) {
+                #         option (google.api.http) = {
+                #           get: "/v1/messages/{message_id}"
+                #           additional_bindings {
+                #             get: "/v1/users/{user_id}/messages/{message_id}"
+                #           }
+                #         };
                 #       }
-                #     };
-                #   }
-                # }
-                # message GetMessageRequest {
-                #   string message_id = 1;
-                #   string user_id = 2;
-                # }
-                # ```
+                #     }
+                #     message GetMessageRequest {
+                #       string message_id = 1;
+                #       string user_id = 2;
+                #     }
+                #
                 #
                 # This enables the following two alternative HTTP JSON to RPC
                 # mappings:
@@ -5112,7 +5121,7 @@
                 #
                 # The syntax `**` matches zero or more path segments. It follows the semantics
                 # of [RFC 6570](https://tools.ietf.org/html/rfc6570) Section 3.2.3 Reserved
-                # Expansion.
+                # Expansion. NOTE: it must be the last segment in the path except the Verb.
                 #
                 # The syntax `LITERAL` matches literal text in the URL path.
                 #
@@ -5131,7 +5140,7 @@
               "body": "A String", # The name of the request field whose value is mapped to the HTTP body, or
                   # `*` for mapping all fields not captured by the path pattern to the HTTP
                   # body. NOTE: the referred field must not be a repeated field and must be
-                  # present at the top-level of response message type.
+                  # present at the top-level of request message type.
               "get": "A String", # Used for listing and getting information about resources.
               "mediaDownload": { # Do not use this. For media support, add instead # Do not use this. For media support, add instead
                   # [][google.bytestream.RestByteStream] as an API to your
@@ -5188,8 +5197,14 @@
                 "options": [ # Any metadata attached to the method.
                   { # A protocol buffer option, which can be attached to a message, field,
                       # enumeration, etc.
-                    "name": "A String", # The option's name. For example, `"java_package"`.
-                    "value": { # The option's value. For example, `"com.google.protobuf"`.
+                    "name": "A String", # The option's name. For protobuf built-in options (options defined in
+                        # descriptor.proto), this is the short name. For example, `"map_entry"`.
+                        # For custom options, it should be the fully-qualified name. For example,
+                        # `"google.api.http"`.
+                    "value": { # The option's value packed in an Any message. If the value is a primitive,
+                        # the corresponding wrapper type defined in google/protobuf/wrappers.proto
+                        # should be used. If the value is an enum, it should be stored as an int32
+                        # value using the google.protobuf.Int32Value type.
                       "a_key": "", # Properties of the object. Contains field @type with type URL.
                     },
                   },
@@ -5309,8 +5324,14 @@
             "options": [ # Any metadata attached to the API.
               { # A protocol buffer option, which can be attached to a message, field,
                   # enumeration, etc.
-                "name": "A String", # The option's name. For example, `"java_package"`.
-                "value": { # The option's value. For example, `"com.google.protobuf"`.
+                "name": "A String", # The option's name. For protobuf built-in options (options defined in
+                    # descriptor.proto), this is the short name. For example, `"map_entry"`.
+                    # For custom options, it should be the fully-qualified name. For example,
+                    # `"google.api.http"`.
+                "value": { # The option's value packed in an Any message. If the value is a primitive,
+                    # the corresponding wrapper type defined in google/protobuf/wrappers.proto
+                    # should be used. If the value is an enum, it should be stored as an int32
+                    # value using the google.protobuf.Int32Value type.
                   "a_key": "", # Properties of the object. Contains field @type with type URL.
                 },
               },
@@ -5393,7 +5414,9 @@
           ],
         },
         "metrics": [ # Defines the metrics used by this service.
-          { # Defines a metric type and its schema.
+          { # Defines a metric type and its schema. Once a metric descriptor is created,
+              # deleting or altering it stops data collection and makes the metric type's
+              # existing data unusable.
             "displayName": "A String", # A concise name for the metric, which can be displayed in user interfaces.
                 # Use sentence case without an ending period, for example "Request count".
             "description": "A String", # A detailed description of the metric, which can be used in documentation.
@@ -5401,29 +5424,25 @@
                 # Some combinations of `metric_kind` and `value_type` might not be supported.
             "valueType": "A String", # Whether the measurement is an integer, a floating-point number, etc.
                 # Some combinations of `metric_kind` and `value_type` might not be supported.
-            "labels": [ # The set of labels that can be used to describe a specific instance of this
-                # metric type. For example, the
-                # `compute.googleapis.com/instance/network/received_bytes_count` metric type
-                # has a label, `loadbalanced`, that specifies whether the traffic was
-                # received through a load balanced IP address.
+            "labels": [ # The set of labels that can be used to describe a specific
+                # instance of this metric type. For example, the
+                # `appengine.googleapis.com/http/server/response_latencies` metric
+                # type has a label for the HTTP response code, `response_code`, so
+                # you can look at latencies for successful responses or just
+                # for responses that failed.
               { # A description of a label.
                 "valueType": "A String", # The type of data that can be assigned to the label.
                 "description": "A String", # A human-readable description for the label.
                 "key": "A String", # The label key.
               },
             ],
-            "type": "A String", # The metric type including a DNS name prefix, for example
-                # `"compute.googleapis.com/instance/cpu/utilization"`. Metric types
-                # should use a natural hierarchical grouping such as the following:
+            "type": "A String", # The metric type, including its DNS name prefix. The type is not
+                # URL-encoded.  All user-defined metric types have the DNS name
+                # `custom.googleapis.com`.  Metric types should use a natural hierarchical
+                # grouping. For example:
                 #
-                #     compute.googleapis.com/instance/cpu/utilization
-                #     compute.googleapis.com/instance/disk/read_ops_count
-                #     compute.googleapis.com/instance/network/received_bytes_count
-                #
-                # Note that if the metric type changes, the monitoring data will be
-                # discontinued, and anything depends on it will break, such as monitoring
-                # dashboards, alerting rules and quota limits. Therefore, once a metric has
-                # been published, its type should be immutable.
+                #     "custom.googleapis.com/invoice/paid/amount"
+                #     "appengine.googleapis.com/http/server/response_latencies"
             "unit": "A String", # The unit in which the metric value is reported. It is only applicable
                 # if the `value_type` is `INT64`, `DOUBLE`, or `DISTRIBUTION`. The
                 # supported units are a subset of [The Unified Code for Units of
@@ -5488,11 +5507,14 @@
                 #    `{requests}/s == 1/s`, `By{transmitted}/s == By/s`.
                 # * `NAME` is a sequence of non-blank printable ASCII characters not
                 #    containing '{' or '}'.
-            "name": "A String", # Resource name. The format of the name may vary between different
-                # implementations. For examples:
+            "name": "A String", # The resource name of the metric descriptor. Depending on the
+                # implementation, the name typically includes: (1) the parent resource name
+                # that defines the scope of the metric type or of its data; and (2) the
+                # metric's URL-encoded type, which also appears in the `type` field of this
+                # descriptor. For example, following is the resource name of a custom
+                # metric within the GCP project 123456789:
                 #
-                #     projects/{project_id}/metricDescriptors/{type=**}
-                #     metricDescriptors/{type=**}
+                #     "projects/123456789/metricDescriptors/custom.googleapis.com%2Finvoice%2Fpaid%2Famount"
           },
         ],
         "enums": [ # A list of all enum types included in this API service.  Enums
@@ -5514,8 +5536,14 @@
                 "options": [ # Protocol buffer options.
                   { # A protocol buffer option, which can be attached to a message, field,
                       # enumeration, etc.
-                    "name": "A String", # The option's name. For example, `"java_package"`.
-                    "value": { # The option's value. For example, `"com.google.protobuf"`.
+                    "name": "A String", # The option's name. For protobuf built-in options (options defined in
+                        # descriptor.proto), this is the short name. For example, `"map_entry"`.
+                        # For custom options, it should be the fully-qualified name. For example,
+                        # `"google.api.http"`.
+                    "value": { # The option's value packed in an Any message. If the value is a primitive,
+                        # the corresponding wrapper type defined in google/protobuf/wrappers.proto
+                        # should be used. If the value is an enum, it should be stored as an int32
+                        # value using the google.protobuf.Int32Value type.
                       "a_key": "", # Properties of the object. Contains field @type with type URL.
                     },
                   },
@@ -5526,8 +5554,14 @@
             "options": [ # Protocol buffer options.
               { # A protocol buffer option, which can be attached to a message, field,
                   # enumeration, etc.
-                "name": "A String", # The option's name. For example, `"java_package"`.
-                "value": { # The option's value. For example, `"com.google.protobuf"`.
+                "name": "A String", # The option's name. For protobuf built-in options (options defined in
+                    # descriptor.proto), this is the short name. For example, `"map_entry"`.
+                    # For custom options, it should be the fully-qualified name. For example,
+                    # `"google.api.http"`.
+                "value": { # The option's value packed in an Any message. If the value is a primitive,
+                    # the corresponding wrapper type defined in google/protobuf/wrappers.proto
+                    # should be used. If the value is an enum, it should be stored as an int32
+                    # value using the google.protobuf.Int32Value type.
                   "a_key": "", # Properties of the object. Contains field @type with type URL.
                 },
               },
@@ -5570,8 +5604,14 @@
                 "options": [ # The protocol buffer options.
                   { # A protocol buffer option, which can be attached to a message, field,
                       # enumeration, etc.
-                    "name": "A String", # The option's name. For example, `"java_package"`.
-                    "value": { # The option's value. For example, `"com.google.protobuf"`.
+                    "name": "A String", # The option's name. For protobuf built-in options (options defined in
+                        # descriptor.proto), this is the short name. For example, `"map_entry"`.
+                        # For custom options, it should be the fully-qualified name. For example,
+                        # `"google.api.http"`.
+                    "value": { # The option's value packed in an Any message. If the value is a primitive,
+                        # the corresponding wrapper type defined in google/protobuf/wrappers.proto
+                        # should be used. If the value is an enum, it should be stored as an int32
+                        # value using the google.protobuf.Int32Value type.
                       "a_key": "", # Properties of the object. Contains field @type with type URL.
                     },
                   },
@@ -5582,8 +5622,14 @@
             "options": [ # The protocol buffer options.
               { # A protocol buffer option, which can be attached to a message, field,
                   # enumeration, etc.
-                "name": "A String", # The option's name. For example, `"java_package"`.
-                "value": { # The option's value. For example, `"com.google.protobuf"`.
+                "name": "A String", # The option's name. For protobuf built-in options (options defined in
+                    # descriptor.proto), this is the short name. For example, `"map_entry"`.
+                    # For custom options, it should be the fully-qualified name. For example,
+                    # `"google.api.http"`.
+                "value": { # The option's value packed in an Any message. If the value is a primitive,
+                    # the corresponding wrapper type defined in google/protobuf/wrappers.proto
+                    # should be used. If the value is an enum, it should be stored as an int32
+                    # value using the google.protobuf.Int32Value type.
                   "a_key": "", # Properties of the object. Contains field @type with type URL.
                 },
               },
@@ -5799,8 +5845,14 @@
                 "options": [ # The protocol buffer options.
                   { # A protocol buffer option, which can be attached to a message, field,
                       # enumeration, etc.
-                    "name": "A String", # The option's name. For example, `"java_package"`.
-                    "value": { # The option's value. For example, `"com.google.protobuf"`.
+                    "name": "A String", # The option's name. For protobuf built-in options (options defined in
+                        # descriptor.proto), this is the short name. For example, `"map_entry"`.
+                        # For custom options, it should be the fully-qualified name. For example,
+                        # `"google.api.http"`.
+                    "value": { # The option's value packed in an Any message. If the value is a primitive,
+                        # the corresponding wrapper type defined in google/protobuf/wrappers.proto
+                        # should be used. If the value is an enum, it should be stored as an int32
+                        # value using the google.protobuf.Int32Value type.
                       "a_key": "", # Properties of the object. Contains field @type with type URL.
                     },
                   },
@@ -5811,8 +5863,14 @@
             "options": [ # The protocol buffer options.
               { # A protocol buffer option, which can be attached to a message, field,
                   # enumeration, etc.
-                "name": "A String", # The option's name. For example, `"java_package"`.
-                "value": { # The option's value. For example, `"com.google.protobuf"`.
+                "name": "A String", # The option's name. For protobuf built-in options (options defined in
+                    # descriptor.proto), this is the short name. For example, `"map_entry"`.
+                    # For custom options, it should be the fully-qualified name. For example,
+                    # `"google.api.http"`.
+                "value": { # The option's value packed in an Any message. If the value is a primitive,
+                    # the corresponding wrapper type defined in google/protobuf/wrappers.proto
+                    # should be used. If the value is an enum, it should be stored as an int32
+                    # value using the google.protobuf.Int32Value type.
                   "a_key": "", # Properties of the object. Contains field @type with type URL.
                 },
               },
@@ -5871,29 +5929,7 @@
               #       # it to decide whether the subsequent cross-origin request is
               #       # allowed to proceed.
               #     - name: library-example.googleapis.com
-              #       apis: google.example.library.v1.Library
               #       allow_cors: true
-              #       # Below entry makes 'google.example.library.v1.Library'
-              #       # API be served from endpoint address
-              #       # google.example.library-example.v1.LibraryManager.
-              #     - name: library-manager.googleapis.com
-              #       apis: google.example.library.v1.LibraryManager
-              #       # BNS address for a borg job. Can specify a task by appending
-              #       # "/taskId" (e.g. "/0") to the job spec.
-              #
-              # Example OpenAPI extension for endpoint with allow_cors set to true:
-              #
-              #     {
-              #       "swagger": "2.0",
-              #       "info": {
-              #         "description": "A simple..."
-              #       },
-              #       "host": "MY_PROJECT_ID.appspot.com",
-              #       "x-google-endpoints": [{
-              #         "name": "MY_PROJECT_ID.appspot.com",
-              #         "allow_cors": "true"
-              #       }]
-              #     }
             "allowCors": True or False, # Allowing
                 # [CORS](https://en.wikipedia.org/wiki/Cross-origin_resource_sharing), aka
                 # cross-domain traffic, would allow the backends served from this endpoint to
diff --git a/docs/dyn/servicemanagement_v1.services.html b/docs/dyn/servicemanagement_v1.services.html
index 31cfe5b..efcad15 100644
--- a/docs/dyn/servicemanagement_v1.services.html
+++ b/docs/dyn/servicemanagement_v1.services.html
@@ -89,7 +89,7 @@
 <p class="firstline">Creates a new managed service.</p>
 <p class="toc_element">
   <code><a href="#delete">delete(serviceName=None, x__xgafv=None)</a></code></p>
-<p class="firstline">Deletes a managed service. This method will change the serivce in the</p>
+<p class="firstline">Deletes a managed service. This method will change the service to the</p>
 <p class="toc_element">
   <code><a href="#disable">disable(serviceName=None, body, x__xgafv=None)</a></code></p>
 <p class="firstline">Disable a managed service for a project.</p>
@@ -101,7 +101,7 @@
 <p class="firstline">Generates and returns a report (errors, warnings and changes from</p>
 <p class="toc_element">
   <code><a href="#get">get(serviceName=None, x__xgafv=None)</a></code></p>
-<p class="firstline">Gets a managed service.</p>
+<p class="firstline">Gets a managed service. Authentication is required unless the service is</p>
 <p class="toc_element">
   <code><a href="#getConfig">getConfig(serviceName=None, configId=None, x__xgafv=None)</a></code></p>
 <p class="firstline">Gets a service configuration (version) for a managed service.</p>
@@ -109,8 +109,8 @@
   <code><a href="#getIamPolicy">getIamPolicy(resource=None, body, x__xgafv=None)</a></code></p>
 <p class="firstline">Gets the access control policy for a resource.</p>
 <p class="toc_element">
-  <code><a href="#list">list(producerProjectId=None, pageSize=None, pageToken=None, x__xgafv=None)</a></code></p>
-<p class="firstline">Lists all managed services.</p>
+  <code><a href="#list">list(producerProjectId=None, pageSize=None, consumerId=None, pageToken=None, x__xgafv=None)</a></code></p>
+<p class="firstline">Lists managed services.</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>
@@ -242,7 +242,7 @@
 
 <div class="method">
     <code class="details" id="delete">delete(serviceName=None, x__xgafv=None)</code>
-  <pre>Deletes a managed service. This method will change the serivce in the
+  <pre>Deletes a managed service. This method will change the service to the
 `Soft-Delete` state for 30 days. Within this period, service producers may
 call UndeleteService to restore the service.
 After 30 days, the service will be permanently deleted.
@@ -367,7 +367,8 @@
         # applied to.
         # 
         # The Google Service Management implementation accepts the following
-        # forms: "project:<project_id>", "project_number:<project_number>".
+        # forms:
+        # - "project:<project_id>"
         # 
         # Note: this is made compatible with
         # google.api.servicecontrol.v1.Operation.consumer_id.
@@ -491,7 +492,8 @@
         # applied to.
         # 
         # The Google Service Management implementation accepts the following
-        # forms: "project:<project_id>", "project_number:<project_number>".
+        # forms:
+        # - "project:<project_id>"
         # 
         # Note: this is made compatible with
         # google.api.servicecontrol.v1.Operation.consumer_id.
@@ -698,7 +700,8 @@
 
 <div class="method">
     <code class="details" id="get">get(serviceName=None, x__xgafv=None)</code>
-  <pre>Gets a managed service.
+  <pre>Gets a managed service. Authentication is required unless the service is
+public.
 
 Args:
   serviceName: string, The name of the service.  See the `ServiceManager` overview for naming
@@ -726,7 +729,7 @@
 Args:
   serviceName: string, The name of the service.  See the [overview](/service-management/overview)
 for naming requirements.  For example: `example.googleapis.com`. (required)
-  configId: string, A parameter
+  configId: string, The id of the service configuration resource.
   x__xgafv: string, V1 error format.
     Allowed values
       1 - v1 error format
@@ -749,10 +752,15 @@
       #     title: Google Calendar API
       #     apis:
       #     - name: google.calendar.v3.Calendar
-      #     backend:
+      #     authentication:
+      #       providers:
+      #       - id: google_calendar_auth
+      #         jwks_uri: https://www.googleapis.com/oauth2/v1/certs
+      #         issuer: https://securetoken.google.com
       #       rules:
-      #       - selector: "google.calendar.v3.*"
-      #         address: calendar.example.com
+      #       - selector: "*"
+      #         requirements:
+      #           provider_id: google_calendar_auth
     "control": { # Selects and configures the service controller used by the service.  The # Configuration for the service control plane.
         # service controller handles features like abuse, quota, billing, logging,
         # monitoring, etc.
@@ -824,56 +832,6 @@
             # slash, underscore, hyphen, period [/_-.].
       },
     ],
-    "analytics": { # Analytics configuration of the service. # WARNING: DO NOT USE UNTIL THIS MESSAGE IS REMOVED.
-        #
-        # Analytics configuration.
-        #
-        # The example below shows how to configure monitored resources and metrics
-        # for analytics. In the example, a monitored resource and two metrics are
-        # defined. The `library.googleapis.com/book/returned_count` and
-        # `library.googleapis.com/book/overdue_count` metric are sent
-        # to the analytics.
-        #
-        #     monitored_resources:
-        #     - type: library.googleapis.com/branch
-        #       labels:
-        #       - key: /city
-        #         description: The city where the library branch is located in.
-        #       - key: /name
-        #         description: The name of the branch.
-        #     metrics:
-        #     - name: library.googleapis.com/book/returned_count
-        #       metric_kind: DELTA
-        #       value_type: INT64
-        #       labels:
-        #       - key: /customer_id
-        #     - name: library.googleapis.com/book/overdue_count
-        #       metric_kind: GAUGE
-        #       value_type: INT64
-        #       labels:
-        #       - key: /customer_id
-        #     analytics:
-        #       producer_destinations:
-        #       - monitored_resource: library.googleapis.com/branch
-        #         metrics:
-        #         - library.googleapis.com/book/returned_count
-        #         - library.googleapis.com/book/overdue_count
-      "producerDestinations": [ # Analytics configurations for sending metrics to the analytics backend.
-          # There can be multiple producer destinations, each one must have a
-          # different monitored resource type. A metric can be used in at most
-          # one producer destination.
-        { # Configuration of a specific analytics destination.
-          "monitoredResource": "A String", # The monitored resource type. The type must be defined in
-              # Service.monitored_resources section.
-          "metrics": [ # Names of the metrics to report to this analytics destination.
-              # Each name must be defined in Service.metrics section. Metrics
-              # with value type BOOL and STRING must be of GUAGE kind, metrics with
-              # value type INT64, DOUBLE and MONEY must be of DELTA kind.
-            "A String",
-          ],
-        },
-      ],
-    },
     "systemParameters": { # ### System parameter configuration # System parameter configuration.
         #
         # A system parameter is a special kind of parameter defined by the API
@@ -887,27 +845,26 @@
           # config, default system parameters will be used. Default system parameters
           # and names is implementation-dependent.
           #
-          # Example: define api key and alt name for all methods
+          # Example: define api key for all methods
           #
-          # system_parameters
-          #   rules:
-          #     - selector: "*"
-          #       parameters:
-          #         - name: api_key
-          #           url_query_parameter: api_key
-          #         - name: alt
-          #           http_header: Response-Content-Type
+          #     system_parameters
+          #       rules:
+          #         - selector: "*"
+          #           parameters:
+          #             - name: api_key
+          #               url_query_parameter: api_key
+          #
           #
           # Example: define 2 api key names for a specific method.
           #
-          # system_parameters
-          #   rules:
-          #     - selector: "/ListShelves"
-          #       parameters:
-          #         - name: api_key
-          #           http_header: Api-Key1
-          #         - name: api_key
-          #           http_header: Api-Key2
+          #     system_parameters
+          #       rules:
+          #         - selector: "/ListShelves"
+          #           parameters:
+          #             - name: api_key
+          #               http_header: Api-Key1
+          #             - name: api_key
+          #               http_header: Api-Key2
           #
           # **NOTE:** All service configuration rules follow "last one wins" order.
         { # Define a system parameter rule mapping system parameter definitions to
@@ -922,8 +879,7 @@
                 # is implementation-dependent.
               "urlQueryParameter": "A String", # Define the URL query parameter name to use for the parameter. It is case
                   # sensitive.
-              "name": "A String", # Define the name of the parameter, such as "api_key", "alt", "callback",
-                  # and etc. It is case sensitive.
+              "name": "A String", # Define the name of the parameter, such as "api_key" . It is case sensitive.
               "httpHeader": "A String", # Define the HTTP header name to use for the parameter. It is case
                   # insensitive.
             },
@@ -1025,14 +981,14 @@
         #
         #     name: calendar.googleapis.com
         #     authentication:
+        #       providers:
+        #       - id: google_calendar_auth
+        #         jwks_uri: https://www.googleapis.com/oauth2/v1/certs
+        #         issuer: https://securetoken.google.com
         #       rules:
         #       - selector: "*"
-        #         oauth:
-        #           canonical_scopes: https://www.googleapis.com/auth/calendar
-        #
-        #       - selector: google.calendar.Delegate
-        #         oauth:
-        #           canonical_scopes: https://www.googleapis.com/auth/calendar.read
+        #         requirements:
+        #           provider_id: google_calendar_auth
       "rules": [ # A list of authentication rules that apply to individual API methods.
           #
           # **NOTE:** All service configuration rules follow "last one wins" order.
@@ -1079,7 +1035,10 @@
                   # Example:
                   #
                   #     provider_id: bookstore_auth
-              "audiences": "A String", # The list of JWT
+              "audiences": "A String", # NOTE: This will be deprecated soon, once AuthProvider.audiences is
+                  # implemented and accepted in all the runtime components.
+                  #
+                  # The list of JWT
                   # [audiences](https://tools.ietf.org/html/draft-ietf-oauth-json-web-token-32#section-4.1.3).
                   # that are allowed to access. A JWT containing any of these audiences will
                   # be accepted. When this setting is absent, only JWTs with audience
@@ -1118,6 +1077,19 @@
               #  - can be inferred from the email domain of the issuer (e.g. a Google service account).
               #
               # Example: https://www.googleapis.com/oauth2/v1/certs
+          "audiences": "A String", # The list of JWT
+              # [audiences](https://tools.ietf.org/html/draft-ietf-oauth-json-web-token-32#section-4.1.3).
+              # that are allowed to access. A JWT containing any of these audiences will
+              # be accepted. When this setting is absent, only JWTs with audience
+              # "https://Service_name/API_name"
+              # will be accepted. For example, if no audiences are in the setting,
+              # LibraryService API will only accept JWTs with the following audience
+              # "https://library-example.googleapis.com/google.example.library.v1.LibraryService".
+              #
+              # Example:
+              #
+              #     audiences: bookstore_android.apps.googleusercontent.com,
+              #                bookstore_web.apps.googleusercontent.com
           "id": "A String", # The unique identifier of the auth provider. It will be referred to by
               # `AuthRequirement.provider_id`.
               #
@@ -1167,6 +1139,14 @@
           "allowUnregisteredCalls": True or False, # True, if the method allows unregistered calls; false otherwise.
         },
       ],
+      "producerNotificationChannel": "A String", # The full resource name of a channel used for sending notifications to the
+          # service producer.
+          #
+          # Google Service Management currently only supports
+          # [Google Cloud Pub/Sub](https://cloud.google.com/pubsub) as a notification
+          # channel. To use Google Cloud Pub/Sub as the channel, this must be the name
+          # of a Cloud Pub/Sub topic that uses the Cloud Pub/Sub topic name format
+          # documented in https://cloud.google.com/pubsub/docs/overview.
       "requirements": [ # Requirements that must be satisfied before a consumer project can use the
           # service. Each requirement is of the form <service.name>/<requirement-id>;
           # for example 'serviceusage.googleapis.com/billing-enabled'.
@@ -1198,23 +1178,30 @@
             # message, as in the example below which describes a REST GET
             # operation on a resource collection of messages:
             #
-            # ```proto
-            # service Messaging {
-            #   rpc GetMessage(GetMessageRequest) returns (Message) {
-            #     option (google.api.http).get = "/v1/messages/{message_id}/{sub.subfield}";
-            #   }
-            # }
-            # message GetMessageRequest {
-            #   message SubMessage {
-            #     string subfield = 1;
-            #   }
-            #   string message_id = 1; // mapped to the URL
-            #   SubMessage sub = 2;    // `sub.subfield` is url-mapped
-            # }
-            # message Message {
-            #   string text = 1; // content of the resource
-            # }
-            # ```
+            #
+            #     service Messaging {
+            #       rpc GetMessage(GetMessageRequest) returns (Message) {
+            #         option (google.api.http).get = "/v1/messages/{message_id}/{sub.subfield}";
+            #       }
+            #     }
+            #     message GetMessageRequest {
+            #       message SubMessage {
+            #         string subfield = 1;
+            #       }
+            #       string message_id = 1; // mapped to the URL
+            #       SubMessage sub = 2;    // `sub.subfield` is url-mapped
+            #     }
+            #     message Message {
+            #       string text = 1; // content of the resource
+            #     }
+            #
+            # The same http annotation can alternatively be expressed inside the
+            # `GRPC API Configuration` YAML file.
+            #
+            #     http:
+            #       rules:
+            #         - selector: <proto_package_name>.Messaging.GetMessage
+            #           get: /v1/messages/{message_id}/{sub.subfield}
             #
             # This definition enables an automatic, bidrectional mapping of HTTP
             # JSON to RPC. Example:
@@ -1231,16 +1218,16 @@
             # pattern automatically become (optional) HTTP query
             # parameters. Assume the following definition of the request message:
             #
-            # ```proto
-            # message GetMessageRequest {
-            #   message SubMessage {
-            #     string subfield = 1;
-            #   }
-            #   string message_id = 1; // mapped to the URL
-            #   int64 revision = 2;    // becomes a parameter
-            #   SubMessage sub = 3;    // `sub.subfield` becomes a parameter
-            # }
-            # ```
+            #
+            #     message GetMessageRequest {
+            #       message SubMessage {
+            #         string subfield = 1;
+            #       }
+            #       string message_id = 1; // mapped to the URL
+            #       int64 revision = 2;    // becomes a parameter
+            #       SubMessage sub = 3;    // `sub.subfield` becomes a parameter
+            #     }
+            #
             #
             # This enables a HTTP JSON to RPC mapping as below:
             #
@@ -1257,20 +1244,20 @@
             # specifies the mapping. Consider a REST update method on the
             # message resource collection:
             #
-            # ```proto
-            # service Messaging {
-            #   rpc UpdateMessage(UpdateMessageRequest) returns (Message) {
-            #     option (google.api.http) = {
-            #       put: "/v1/messages/{message_id}"
-            #       body: "message"
-            #     };
-            #   }
-            # }
-            # message UpdateMessageRequest {
-            #   string message_id = 1; // mapped to the URL
-            #   Message message = 2;   // mapped to the body
-            # }
-            # ```
+            #
+            #     service Messaging {
+            #       rpc UpdateMessage(UpdateMessageRequest) returns (Message) {
+            #         option (google.api.http) = {
+            #           put: "/v1/messages/{message_id}"
+            #           body: "message"
+            #         };
+            #       }
+            #     }
+            #     message UpdateMessageRequest {
+            #       string message_id = 1; // mapped to the URL
+            #       Message message = 2;   // mapped to the body
+            #     }
+            #
             #
             # The following HTTP JSON to RPC mapping is enabled, where the
             # representation of the JSON in the request body is determined by
@@ -1285,20 +1272,19 @@
             # request body.  This enables the following alternative definition of
             # the update method:
             #
-            # ```proto
-            # service Messaging {
-            #   rpc UpdateMessage(Message) returns (Message) {
-            #     option (google.api.http) = {
-            #       put: "/v1/messages/{message_id}"
-            #       body: "*"
-            #     };
-            #   }
-            # }
-            # message Message {
-            #   string message_id = 1;
-            #   string text = 2;
-            # }
-            # ```
+            #     service Messaging {
+            #       rpc UpdateMessage(Message) returns (Message) {
+            #         option (google.api.http) = {
+            #           put: "/v1/messages/{message_id}"
+            #           body: "*"
+            #         };
+            #       }
+            #     }
+            #     message Message {
+            #       string message_id = 1;
+            #       string text = 2;
+            #     }
+            #
             #
             # The following HTTP JSON to RPC mapping is enabled:
             #
@@ -1315,22 +1301,21 @@
             # It is possible to define multiple HTTP methods for one RPC by using
             # the `additional_bindings` option. Example:
             #
-            # ```proto
-            # service Messaging {
-            #   rpc GetMessage(GetMessageRequest) returns (Message) {
-            #     option (google.api.http) = {
-            #       get: "/v1/messages/{message_id}"
-            #       additional_bindings {
-            #         get: "/v1/users/{user_id}/messages/{message_id}"
+            #     service Messaging {
+            #       rpc GetMessage(GetMessageRequest) returns (Message) {
+            #         option (google.api.http) = {
+            #           get: "/v1/messages/{message_id}"
+            #           additional_bindings {
+            #             get: "/v1/users/{user_id}/messages/{message_id}"
+            #           }
+            #         };
             #       }
-            #     };
-            #   }
-            # }
-            # message GetMessageRequest {
-            #   string message_id = 1;
-            #   string user_id = 2;
-            # }
-            # ```
+            #     }
+            #     message GetMessageRequest {
+            #       string message_id = 1;
+            #       string user_id = 2;
+            #     }
+            #
             #
             # This enables the following two alternative HTTP JSON to RPC
             # mappings:
@@ -1371,7 +1356,7 @@
             #
             # The syntax `**` matches zero or more path segments. It follows the semantics
             # of [RFC 6570](https://tools.ietf.org/html/rfc6570) Section 3.2.3 Reserved
-            # Expansion.
+            # Expansion. NOTE: it must be the last segment in the path except the Verb.
             #
             # The syntax `LITERAL` matches literal text in the URL path.
             #
@@ -1390,7 +1375,7 @@
           "body": "A String", # The name of the request field whose value is mapped to the HTTP body, or
               # `*` for mapping all fields not captured by the path pattern to the HTTP
               # body. NOTE: the referred field must not be a repeated field and must be
-              # present at the top-level of response message type.
+              # present at the top-level of request message type.
           "get": "A String", # Used for listing and getting information about resources.
           "mediaDownload": { # Do not use this. For media support, add instead # Do not use this. For media support, add instead
               # [][google.bytestream.RestByteStream] as an API to your
@@ -1447,8 +1432,14 @@
             "options": [ # Any metadata attached to the method.
               { # A protocol buffer option, which can be attached to a message, field,
                   # enumeration, etc.
-                "name": "A String", # The option's name. For example, `"java_package"`.
-                "value": { # The option's value. For example, `"com.google.protobuf"`.
+                "name": "A String", # The option's name. For protobuf built-in options (options defined in
+                    # descriptor.proto), this is the short name. For example, `"map_entry"`.
+                    # For custom options, it should be the fully-qualified name. For example,
+                    # `"google.api.http"`.
+                "value": { # The option's value packed in an Any message. If the value is a primitive,
+                    # the corresponding wrapper type defined in google/protobuf/wrappers.proto
+                    # should be used. If the value is an enum, it should be stored as an int32
+                    # value using the google.protobuf.Int32Value type.
                   "a_key": "", # Properties of the object. Contains field @type with type URL.
                 },
               },
@@ -1568,8 +1559,14 @@
         "options": [ # Any metadata attached to the API.
           { # A protocol buffer option, which can be attached to a message, field,
               # enumeration, etc.
-            "name": "A String", # The option's name. For example, `"java_package"`.
-            "value": { # The option's value. For example, `"com.google.protobuf"`.
+            "name": "A String", # The option's name. For protobuf built-in options (options defined in
+                # descriptor.proto), this is the short name. For example, `"map_entry"`.
+                # For custom options, it should be the fully-qualified name. For example,
+                # `"google.api.http"`.
+            "value": { # The option's value packed in an Any message. If the value is a primitive,
+                # the corresponding wrapper type defined in google/protobuf/wrappers.proto
+                # should be used. If the value is an enum, it should be stored as an int32
+                # value using the google.protobuf.Int32Value type.
               "a_key": "", # Properties of the object. Contains field @type with type URL.
             },
           },
@@ -1652,7 +1649,9 @@
       ],
     },
     "metrics": [ # Defines the metrics used by this service.
-      { # Defines a metric type and its schema.
+      { # Defines a metric type and its schema. Once a metric descriptor is created,
+          # deleting or altering it stops data collection and makes the metric type's
+          # existing data unusable.
         "displayName": "A String", # A concise name for the metric, which can be displayed in user interfaces.
             # Use sentence case without an ending period, for example "Request count".
         "description": "A String", # A detailed description of the metric, which can be used in documentation.
@@ -1660,29 +1659,25 @@
             # Some combinations of `metric_kind` and `value_type` might not be supported.
         "valueType": "A String", # Whether the measurement is an integer, a floating-point number, etc.
             # Some combinations of `metric_kind` and `value_type` might not be supported.
-        "labels": [ # The set of labels that can be used to describe a specific instance of this
-            # metric type. For example, the
-            # `compute.googleapis.com/instance/network/received_bytes_count` metric type
-            # has a label, `loadbalanced`, that specifies whether the traffic was
-            # received through a load balanced IP address.
+        "labels": [ # The set of labels that can be used to describe a specific
+            # instance of this metric type. For example, the
+            # `appengine.googleapis.com/http/server/response_latencies` metric
+            # type has a label for the HTTP response code, `response_code`, so
+            # you can look at latencies for successful responses or just
+            # for responses that failed.
           { # A description of a label.
             "valueType": "A String", # The type of data that can be assigned to the label.
             "description": "A String", # A human-readable description for the label.
             "key": "A String", # The label key.
           },
         ],
-        "type": "A String", # The metric type including a DNS name prefix, for example
-            # `"compute.googleapis.com/instance/cpu/utilization"`. Metric types
-            # should use a natural hierarchical grouping such as the following:
+        "type": "A String", # The metric type, including its DNS name prefix. The type is not
+            # URL-encoded.  All user-defined metric types have the DNS name
+            # `custom.googleapis.com`.  Metric types should use a natural hierarchical
+            # grouping. For example:
             #
-            #     compute.googleapis.com/instance/cpu/utilization
-            #     compute.googleapis.com/instance/disk/read_ops_count
-            #     compute.googleapis.com/instance/network/received_bytes_count
-            #
-            # Note that if the metric type changes, the monitoring data will be
-            # discontinued, and anything depends on it will break, such as monitoring
-            # dashboards, alerting rules and quota limits. Therefore, once a metric has
-            # been published, its type should be immutable.
+            #     "custom.googleapis.com/invoice/paid/amount"
+            #     "appengine.googleapis.com/http/server/response_latencies"
         "unit": "A String", # The unit in which the metric value is reported. It is only applicable
             # if the `value_type` is `INT64`, `DOUBLE`, or `DISTRIBUTION`. The
             # supported units are a subset of [The Unified Code for Units of
@@ -1747,11 +1742,14 @@
             #    `{requests}/s == 1/s`, `By{transmitted}/s == By/s`.
             # * `NAME` is a sequence of non-blank printable ASCII characters not
             #    containing '{' or '}'.
-        "name": "A String", # Resource name. The format of the name may vary between different
-            # implementations. For examples:
+        "name": "A String", # The resource name of the metric descriptor. Depending on the
+            # implementation, the name typically includes: (1) the parent resource name
+            # that defines the scope of the metric type or of its data; and (2) the
+            # metric's URL-encoded type, which also appears in the `type` field of this
+            # descriptor. For example, following is the resource name of a custom
+            # metric within the GCP project 123456789:
             #
-            #     projects/{project_id}/metricDescriptors/{type=**}
-            #     metricDescriptors/{type=**}
+            #     "projects/123456789/metricDescriptors/custom.googleapis.com%2Finvoice%2Fpaid%2Famount"
       },
     ],
     "enums": [ # A list of all enum types included in this API service.  Enums
@@ -1773,8 +1771,14 @@
             "options": [ # Protocol buffer options.
               { # A protocol buffer option, which can be attached to a message, field,
                   # enumeration, etc.
-                "name": "A String", # The option's name. For example, `"java_package"`.
-                "value": { # The option's value. For example, `"com.google.protobuf"`.
+                "name": "A String", # The option's name. For protobuf built-in options (options defined in
+                    # descriptor.proto), this is the short name. For example, `"map_entry"`.
+                    # For custom options, it should be the fully-qualified name. For example,
+                    # `"google.api.http"`.
+                "value": { # The option's value packed in an Any message. If the value is a primitive,
+                    # the corresponding wrapper type defined in google/protobuf/wrappers.proto
+                    # should be used. If the value is an enum, it should be stored as an int32
+                    # value using the google.protobuf.Int32Value type.
                   "a_key": "", # Properties of the object. Contains field @type with type URL.
                 },
               },
@@ -1785,8 +1789,14 @@
         "options": [ # Protocol buffer options.
           { # A protocol buffer option, which can be attached to a message, field,
               # enumeration, etc.
-            "name": "A String", # The option's name. For example, `"java_package"`.
-            "value": { # The option's value. For example, `"com.google.protobuf"`.
+            "name": "A String", # The option's name. For protobuf built-in options (options defined in
+                # descriptor.proto), this is the short name. For example, `"map_entry"`.
+                # For custom options, it should be the fully-qualified name. For example,
+                # `"google.api.http"`.
+            "value": { # The option's value packed in an Any message. If the value is a primitive,
+                # the corresponding wrapper type defined in google/protobuf/wrappers.proto
+                # should be used. If the value is an enum, it should be stored as an int32
+                # value using the google.protobuf.Int32Value type.
               "a_key": "", # Properties of the object. Contains field @type with type URL.
             },
           },
@@ -1829,8 +1839,14 @@
             "options": [ # The protocol buffer options.
               { # A protocol buffer option, which can be attached to a message, field,
                   # enumeration, etc.
-                "name": "A String", # The option's name. For example, `"java_package"`.
-                "value": { # The option's value. For example, `"com.google.protobuf"`.
+                "name": "A String", # The option's name. For protobuf built-in options (options defined in
+                    # descriptor.proto), this is the short name. For example, `"map_entry"`.
+                    # For custom options, it should be the fully-qualified name. For example,
+                    # `"google.api.http"`.
+                "value": { # The option's value packed in an Any message. If the value is a primitive,
+                    # the corresponding wrapper type defined in google/protobuf/wrappers.proto
+                    # should be used. If the value is an enum, it should be stored as an int32
+                    # value using the google.protobuf.Int32Value type.
                   "a_key": "", # Properties of the object. Contains field @type with type URL.
                 },
               },
@@ -1841,8 +1857,14 @@
         "options": [ # The protocol buffer options.
           { # A protocol buffer option, which can be attached to a message, field,
               # enumeration, etc.
-            "name": "A String", # The option's name. For example, `"java_package"`.
-            "value": { # The option's value. For example, `"com.google.protobuf"`.
+            "name": "A String", # The option's name. For protobuf built-in options (options defined in
+                # descriptor.proto), this is the short name. For example, `"map_entry"`.
+                # For custom options, it should be the fully-qualified name. For example,
+                # `"google.api.http"`.
+            "value": { # The option's value packed in an Any message. If the value is a primitive,
+                # the corresponding wrapper type defined in google/protobuf/wrappers.proto
+                # should be used. If the value is an enum, it should be stored as an int32
+                # value using the google.protobuf.Int32Value type.
               "a_key": "", # Properties of the object. Contains field @type with type URL.
             },
           },
@@ -2058,8 +2080,14 @@
             "options": [ # The protocol buffer options.
               { # A protocol buffer option, which can be attached to a message, field,
                   # enumeration, etc.
-                "name": "A String", # The option's name. For example, `"java_package"`.
-                "value": { # The option's value. For example, `"com.google.protobuf"`.
+                "name": "A String", # The option's name. For protobuf built-in options (options defined in
+                    # descriptor.proto), this is the short name. For example, `"map_entry"`.
+                    # For custom options, it should be the fully-qualified name. For example,
+                    # `"google.api.http"`.
+                "value": { # The option's value packed in an Any message. If the value is a primitive,
+                    # the corresponding wrapper type defined in google/protobuf/wrappers.proto
+                    # should be used. If the value is an enum, it should be stored as an int32
+                    # value using the google.protobuf.Int32Value type.
                   "a_key": "", # Properties of the object. Contains field @type with type URL.
                 },
               },
@@ -2070,8 +2098,14 @@
         "options": [ # The protocol buffer options.
           { # A protocol buffer option, which can be attached to a message, field,
               # enumeration, etc.
-            "name": "A String", # The option's name. For example, `"java_package"`.
-            "value": { # The option's value. For example, `"com.google.protobuf"`.
+            "name": "A String", # The option's name. For protobuf built-in options (options defined in
+                # descriptor.proto), this is the short name. For example, `"map_entry"`.
+                # For custom options, it should be the fully-qualified name. For example,
+                # `"google.api.http"`.
+            "value": { # The option's value packed in an Any message. If the value is a primitive,
+                # the corresponding wrapper type defined in google/protobuf/wrappers.proto
+                # should be used. If the value is an enum, it should be stored as an int32
+                # value using the google.protobuf.Int32Value type.
               "a_key": "", # Properties of the object. Contains field @type with type URL.
             },
           },
@@ -2130,29 +2164,7 @@
           #       # it to decide whether the subsequent cross-origin request is
           #       # allowed to proceed.
           #     - name: library-example.googleapis.com
-          #       apis: google.example.library.v1.Library
           #       allow_cors: true
-          #       # Below entry makes 'google.example.library.v1.Library'
-          #       # API be served from endpoint address
-          #       # google.example.library-example.v1.LibraryManager.
-          #     - name: library-manager.googleapis.com
-          #       apis: google.example.library.v1.LibraryManager
-          #       # BNS address for a borg job. Can specify a task by appending
-          #       # "/taskId" (e.g. "/0") to the job spec.
-          #
-          # Example OpenAPI extension for endpoint with allow_cors set to true:
-          #
-          #     {
-          #       "swagger": "2.0",
-          #       "info": {
-          #         "description": "A simple..."
-          #       },
-          #       "host": "MY_PROJECT_ID.appspot.com",
-          #       "x-google-endpoints": [{
-          #         "name": "MY_PROJECT_ID.appspot.com",
-          #         "allow_cors": "true"
-          #       }]
-          #     }
         "allowCors": True or False, # Allowing
             # [CORS](https://en.wikipedia.org/wiki/Cross-origin_resource_sharing), aka
             # cross-domain traffic, would allow the backends served from this endpoint to
@@ -2239,15 +2251,24 @@
         #
         # Note: `AuditConfig` doesn't apply to "admin activity", which always
         # enables audit logging.
-      { # Enables "data access" audit logging for a service and specifies a list
-          # of members that are log-exempted.
+      { # Provides the configuration for non-admin_activity logging for a service.
+          # Controls exemptions and specific log sub-types.
         "exemptedMembers": [ # Specifies the identities that are exempted from "data access" audit
             # logging for the `service` specified above.
             # Follows the same format of Binding.members.
           "A String",
         ],
-        "service": "A String", # Specifies a service that will be enabled for "data access" audit
-            # logging.
+        "auditLogConfigs": [ # The configuration for each type of logging
+            # Next ID: 4
+          { # Provides the configuration for a sub-type of logging.
+            "exemptedMembers": [ # Specifies the identities that are exempted from this type of logging
+                # Follows the same format of Binding.members.
+              "A String",
+            ],
+            "logType": "A String", # The log type that this config enables.
+          },
+        ],
+        "service": "A String", # Specifies a service that will be enabled for audit logging.
             # For example, `resourcemanager`, `storage`, `compute`.
             # `allServices` is a special value that covers all services.
       },
@@ -2378,12 +2399,25 @@
 </div>
 
 <div class="method">
-    <code class="details" id="list">list(producerProjectId=None, pageSize=None, pageToken=None, x__xgafv=None)</code>
-  <pre>Lists all managed services.
+    <code class="details" id="list">list(producerProjectId=None, pageSize=None, consumerId=None, pageToken=None, x__xgafv=None)</code>
+  <pre>Lists managed services.
+
+If called without any authentication, it returns only the public services.
+If called with authentication, it returns all services that the caller has
+"servicemanagement.services.get" permission for.
+
+**BETA:** If the caller specifies the `consumer_id`, it returns only the
+services enabled on the consumer. The `consumer_id` must have the format
+of "project:{PROJECT-ID}".
 
 Args:
   producerProjectId: string, Include services produced by the specified project.
   pageSize: integer, Requested size of the next page of data.
+  consumerId: string, Include services consumed by the specified consumer.
+
+The Google Service Management implementation accepts the following
+forms:
+- project:<project_id>
   pageToken: string, Token identifying which result to start with; returned by a previous list
 call.
   x__xgafv: string, V1 error format.
@@ -2396,7 +2430,7 @@
 
     { # Response message for `ListServices` method.
     "nextPageToken": "A String", # Token that can be passed to `ListServices` to resume a paginated query.
-    "services": [ # The results of the query.
+    "services": [ # The returned services will only have the name field set.
       { # The full representation of a Service that is managed by
           # Google Service Management.
         "serviceName": "A String", # The name of the service. See the [overview](/service-management/overview)
@@ -2474,15 +2508,24 @@
           #
           # Note: `AuditConfig` doesn't apply to "admin activity", which always
           # enables audit logging.
-        { # Enables "data access" audit logging for a service and specifies a list
-            # of members that are log-exempted.
+        { # Provides the configuration for non-admin_activity logging for a service.
+            # Controls exemptions and specific log sub-types.
           "exemptedMembers": [ # Specifies the identities that are exempted from "data access" audit
               # logging for the `service` specified above.
               # Follows the same format of Binding.members.
             "A String",
           ],
-          "service": "A String", # Specifies a service that will be enabled for "data access" audit
-              # logging.
+          "auditLogConfigs": [ # The configuration for each type of logging
+              # Next ID: 4
+            { # Provides the configuration for a sub-type of logging.
+              "exemptedMembers": [ # Specifies the identities that are exempted from this type of logging
+                  # Follows the same format of Binding.members.
+                "A String",
+              ],
+              "logType": "A String", # The log type that this config enables.
+            },
+          ],
+          "service": "A String", # Specifies a service that will be enabled for audit logging.
               # For example, `resourcemanager`, `storage`, `compute`.
               # `allServices` is a special value that covers all services.
         },
@@ -2610,6 +2653,11 @@
       ],
       "iamOwned": True or False,
     },
+    "updateMask": "A String", # OPTIONAL: A FieldMask specifying which fields of the policy to modify. Only
+        # the fields in the mask will be modified. If no mask is provided, a default
+        # mask is used:
+        # paths: "bindings, etag"
+        # This field is only used by Cloud IAM.
   }
 
   x__xgafv: string, V1 error format.
@@ -2657,15 +2705,24 @@
         #
         # Note: `AuditConfig` doesn't apply to "admin activity", which always
         # enables audit logging.
-      { # Enables "data access" audit logging for a service and specifies a list
-          # of members that are log-exempted.
+      { # Provides the configuration for non-admin_activity logging for a service.
+          # Controls exemptions and specific log sub-types.
         "exemptedMembers": [ # Specifies the identities that are exempted from "data access" audit
             # logging for the `service` specified above.
             # Follows the same format of Binding.members.
           "A String",
         ],
-        "service": "A String", # Specifies a service that will be enabled for "data access" audit
-            # logging.
+        "auditLogConfigs": [ # The configuration for each type of logging
+            # Next ID: 4
+          { # Provides the configuration for a sub-type of logging.
+            "exemptedMembers": [ # Specifies the identities that are exempted from this type of logging
+                # Follows the same format of Binding.members.
+              "A String",
+            ],
+            "logType": "A String", # The log type that this config enables.
+          },
+        ],
+        "service": "A String", # Specifies a service that will be enabled for audit logging.
             # For example, `resourcemanager`, `storage`, `compute`.
             # `allServices` is a special value that covers all services.
       },
@@ -2798,6 +2855,8 @@
 <div class="method">
     <code class="details" id="testIamPermissions">testIamPermissions(resource=None, body, x__xgafv=None)</code>
   <pre>Returns permissions that a caller has on the specified resource.
+If the resource does not exist, this will return an empty set of
+permissions, not a NOT_FOUND error.
 
 Args:
   resource: string, REQUIRED: The resource for which the policy detail is being requested.
diff --git a/docs/dyn/sheets_v4.spreadsheets.html b/docs/dyn/sheets_v4.spreadsheets.html
index cd507af..0562d26 100644
--- a/docs/dyn/sheets_v4.spreadsheets.html
+++ b/docs/dyn/sheets_v4.spreadsheets.html
@@ -122,6 +122,15 @@
     The object takes the form of:
 
 { # The request for updating any aspect of a spreadsheet.
+    "responseRanges": [ # Limits the ranges included in the response spreadsheet.
+        # Meaningful only if include_spreadsheet_response is 'true'.
+      "A String",
+    ],
+    "includeSpreadsheetInResponse": True or False, # Determines if the update response should include the spreadsheet
+        # resource.
+    "responseIncludeGridData": True or False, # True if grid data should be returned. Meaningful only if
+        # if include_spreadsheet_response is 'true'.
+        # This parameter is ignored if a field mask was set in the request.
     "requests": [ # A list of updates to apply to the spreadsheet.
       { # A single kind of update to apply to a spreadsheet.
         "duplicateFilterView": { # Duplicates a particular filter view. # Duplicates a filter view.
@@ -3929,7 +3938,13 @@
             "index": 42, # The index of the sheet within the spreadsheet.
                 # When adding or updating sheet properties, if this field
                 # is excluded then the sheet will be added or moved to the end
-                # of the sheet list.
+                # of the sheet list. When updating sheet indices or inserting
+                # sheets, movement is considered in "before the move" indexes.
+                # For example, if there were 3 sheets (S1, S2, S3) in order to
+                # move S1 ahead of S2 the index would have to be set to 2. A sheet
+                # index update request will be ignored if the requested index is
+                # identical to the sheets current index or if the requested new
+                # index is equal to the current sheet index + 1.
             "title": "A String", # The name of the sheet.
             "gridProperties": { # Properties of a grid. # Additional properties of the sheet if this sheet is a grid.
                 # (If the sheet is an object sheet, containing a chart or image, then
@@ -5848,6 +5863,9 @@
             },
           },
         },
+        "deleteBanding": { # Removes the banded range with the given ID from the spreadsheet. # Removes a banded range
+          "bandedRangeId": 42, # The ID of the banded range to delete.
+        },
         "repeatCell": { # Updates all cells in the range to the values in the given Cell object. # Repeats a single cell across a range.
             # Only the fields listed in the fields field are updated; others are
             # unchanged.
@@ -11242,6 +11260,1129 @@
           "sheetId": 42, # The sheet to append rows or columns to.
           "dimension": "A String", # Whether rows or columns should be appended.
         },
+        "updateBanding": { # Updates properties of the supplied banded range. # Updates a banded range
+          "fields": "A String", # The fields that should be updated.  At least one field must be specified.
+              # The root `bandedRange` is implied and should not be specified.
+              # A single `"*"` can be used as short-hand for listing every field.
+          "bandedRange": { # A banded (alternating colors) range in a sheet. # The banded range to update with the new properties.
+            "range": { # A range on a sheet. # The range over which these properties are applied.
+                # All indexes are zero-based.
+                # Indexes are half open, e.g the start index is inclusive
+                # and the end index is exclusive -- [start_index, end_index).
+                # Missing indexes indicate the range is unbounded on that side.
+                #
+                # For example, if `"Sheet1"` is sheet ID 0, then:
+                #
+                #   `Sheet1!A1:A1 == sheet_id: 0,
+                #                   start_row_index: 0, end_row_index: 1,
+                #                   start_column_index: 0, end_column_index: 1`
+                #
+                #   `Sheet1!A3:B4 == sheet_id: 0,
+                #                   start_row_index: 2, end_row_index: 4,
+                #                   start_column_index: 0, end_column_index: 2`
+                #
+                #   `Sheet1!A:B == sheet_id: 0,
+                #                 start_column_index: 0, end_column_index: 2`
+                #
+                #   `Sheet1!A5:B == sheet_id: 0,
+                #                  start_row_index: 4,
+                #                  start_column_index: 0, end_column_index: 2`
+                #
+                #   `Sheet1 == sheet_id:0`
+                #
+                # The start index must always be less than or equal to the end index.
+                # If the start index equals the end index, then the range is empty.
+                # Empty ranges are typically not meaningful and are usually rendered in the
+                # UI as `#REF!`.
+              "endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
+              "startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
+              "sheetId": 42, # The sheet this range is on.
+              "startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
+              "endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
+            },
+            "columnProperties": { # Properties referring a single dimension (either row or column). If both # Properties for column bands. These properties will be applied on a column-
+                # by-column basis throughout all the columns in the range. At least one of
+                # row_properties or column_properties must be specified.
+                # BandedRange.row_properties and BandedRange.column_properties are
+                # set, the fill colors are applied to cells according to the following rules:
+                #
+                # * header_color and footer_color take priority over band colors.
+                # * first_band_color takes priority over second_band_color.
+                # * row_properties takes priority over column_properties.
+                #
+                # For example, the first row color takes priority over the first column
+                # color, but the first column color takes priority over the second row color.
+                # Similarly, the row header takes priority over the column header in the
+                # top left cell, but the column header takes priority over the first row
+                # color if the row header is not set.
+              "secondBandColor": { # Represents a color in the RGBA color space. This representation is designed # The second color that is alternating. (Required)
+                  # for simplicity of conversion to/from color representations in various
+                  # languages over compactness; for example, the fields of this representation
+                  # can be trivially provided to the constructor of "java.awt.Color" in Java; it
+                  # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
+                  # method in iOS; and, with just a little work, it can be easily formatted into
+                  # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
+                  #
+                  # Example (Java):
+                  #
+                  #      import com.google.type.Color;
+                  #
+                  #      // ...
+                  #      public static java.awt.Color fromProto(Color protocolor) {
+                  #        float alpha = protocolor.hasAlpha()
+                  #            ? protocolor.getAlpha().getValue()
+                  #            : 1.0;
+                  #
+                  #        return new java.awt.Color(
+                  #            protocolor.getRed(),
+                  #            protocolor.getGreen(),
+                  #            protocolor.getBlue(),
+                  #            alpha);
+                  #      }
+                  #
+                  #      public static Color toProto(java.awt.Color color) {
+                  #        float red = (float) color.getRed();
+                  #        float green = (float) color.getGreen();
+                  #        float blue = (float) color.getBlue();
+                  #        float denominator = 255.0;
+                  #        Color.Builder resultBuilder =
+                  #            Color
+                  #                .newBuilder()
+                  #                .setRed(red / denominator)
+                  #                .setGreen(green / denominator)
+                  #                .setBlue(blue / denominator);
+                  #        int alpha = color.getAlpha();
+                  #        if (alpha != 255) {
+                  #          result.setAlpha(
+                  #              FloatValue
+                  #                  .newBuilder()
+                  #                  .setValue(((float) alpha) / denominator)
+                  #                  .build());
+                  #        }
+                  #        return resultBuilder.build();
+                  #      }
+                  #      // ...
+                  #
+                  # Example (iOS / Obj-C):
+                  #
+                  #      // ...
+                  #      static UIColor* fromProto(Color* protocolor) {
+                  #         float red = [protocolor red];
+                  #         float green = [protocolor green];
+                  #         float blue = [protocolor blue];
+                  #         FloatValue* alpha_wrapper = [protocolor alpha];
+                  #         float alpha = 1.0;
+                  #         if (alpha_wrapper != nil) {
+                  #           alpha = [alpha_wrapper value];
+                  #         }
+                  #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
+                  #      }
+                  #
+                  #      static Color* toProto(UIColor* color) {
+                  #          CGFloat red, green, blue, alpha;
+                  #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
+                  #            return nil;
+                  #          }
+                  #          Color* result = [Color alloc] init];
+                  #          [result setRed:red];
+                  #          [result setGreen:green];
+                  #          [result setBlue:blue];
+                  #          if (alpha <= 0.9999) {
+                  #            [result setAlpha:floatWrapperWithValue(alpha)];
+                  #          }
+                  #          [result autorelease];
+                  #          return result;
+                  #     }
+                  #     // ...
+                  #
+                  #  Example (JavaScript):
+                  #
+                  #     // ...
+                  #
+                  #     var protoToCssColor = function(rgb_color) {
+                  #        var redFrac = rgb_color.red || 0.0;
+                  #        var greenFrac = rgb_color.green || 0.0;
+                  #        var blueFrac = rgb_color.blue || 0.0;
+                  #        var red = Math.floor(redFrac * 255);
+                  #        var green = Math.floor(greenFrac * 255);
+                  #        var blue = Math.floor(blueFrac * 255);
+                  #
+                  #        if (!('alpha' in rgb_color)) {
+                  #           return rgbToCssColor_(red, green, blue);
+                  #        }
+                  #
+                  #        var alphaFrac = rgb_color.alpha.value || 0.0;
+                  #        var rgbParams = [red, green, blue].join(',');
+                  #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
+                  #     };
+                  #
+                  #     var rgbToCssColor_ = function(red, green, blue) {
+                  #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
+                  #       var hexString = rgbNumber.toString(16);
+                  #       var missingZeros = 6 - hexString.length;
+                  #       var resultBuilder = ['#'];
+                  #       for (var i = 0; i < missingZeros; i++) {
+                  #          resultBuilder.push('0');
+                  #       }
+                  #       resultBuilder.push(hexString);
+                  #       return resultBuilder.join('');
+                  #     };
+                  #
+                  #     // ...
+                "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+                "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
+                    # the final pixel color is defined by the equation:
+                    #
+                    #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
+                    #
+                    # This means that a value of 1.0 corresponds to a solid color, whereas
+                    # a value of 0.0 corresponds to a completely transparent color. This
+                    # uses a wrapper message rather than a simple float scalar so that it is
+                    # possible to distinguish between a default value and the value being unset.
+                    # If omitted, this color object is to be rendered as a solid color
+                    # (as if the alpha value had been explicitly given with a value of 1.0).
+                "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
+                "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
+              },
+              "headerColor": { # Represents a color in the RGBA color space. This representation is designed # The color of the first row or column. If this field is set, the first
+                  # row or column will be filled with this color and the colors will
+                  # alternate between first_band_color and second_band_color starting
+                  # from the second row or column. Otherwise, the first row or column will be
+                  # filled with first_band_color and the colors will proceed to alternate
+                  # as they normally would.
+                  # for simplicity of conversion to/from color representations in various
+                  # languages over compactness; for example, the fields of this representation
+                  # can be trivially provided to the constructor of "java.awt.Color" in Java; it
+                  # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
+                  # method in iOS; and, with just a little work, it can be easily formatted into
+                  # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
+                  #
+                  # Example (Java):
+                  #
+                  #      import com.google.type.Color;
+                  #
+                  #      // ...
+                  #      public static java.awt.Color fromProto(Color protocolor) {
+                  #        float alpha = protocolor.hasAlpha()
+                  #            ? protocolor.getAlpha().getValue()
+                  #            : 1.0;
+                  #
+                  #        return new java.awt.Color(
+                  #            protocolor.getRed(),
+                  #            protocolor.getGreen(),
+                  #            protocolor.getBlue(),
+                  #            alpha);
+                  #      }
+                  #
+                  #      public static Color toProto(java.awt.Color color) {
+                  #        float red = (float) color.getRed();
+                  #        float green = (float) color.getGreen();
+                  #        float blue = (float) color.getBlue();
+                  #        float denominator = 255.0;
+                  #        Color.Builder resultBuilder =
+                  #            Color
+                  #                .newBuilder()
+                  #                .setRed(red / denominator)
+                  #                .setGreen(green / denominator)
+                  #                .setBlue(blue / denominator);
+                  #        int alpha = color.getAlpha();
+                  #        if (alpha != 255) {
+                  #          result.setAlpha(
+                  #              FloatValue
+                  #                  .newBuilder()
+                  #                  .setValue(((float) alpha) / denominator)
+                  #                  .build());
+                  #        }
+                  #        return resultBuilder.build();
+                  #      }
+                  #      // ...
+                  #
+                  # Example (iOS / Obj-C):
+                  #
+                  #      // ...
+                  #      static UIColor* fromProto(Color* protocolor) {
+                  #         float red = [protocolor red];
+                  #         float green = [protocolor green];
+                  #         float blue = [protocolor blue];
+                  #         FloatValue* alpha_wrapper = [protocolor alpha];
+                  #         float alpha = 1.0;
+                  #         if (alpha_wrapper != nil) {
+                  #           alpha = [alpha_wrapper value];
+                  #         }
+                  #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
+                  #      }
+                  #
+                  #      static Color* toProto(UIColor* color) {
+                  #          CGFloat red, green, blue, alpha;
+                  #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
+                  #            return nil;
+                  #          }
+                  #          Color* result = [Color alloc] init];
+                  #          [result setRed:red];
+                  #          [result setGreen:green];
+                  #          [result setBlue:blue];
+                  #          if (alpha <= 0.9999) {
+                  #            [result setAlpha:floatWrapperWithValue(alpha)];
+                  #          }
+                  #          [result autorelease];
+                  #          return result;
+                  #     }
+                  #     // ...
+                  #
+                  #  Example (JavaScript):
+                  #
+                  #     // ...
+                  #
+                  #     var protoToCssColor = function(rgb_color) {
+                  #        var redFrac = rgb_color.red || 0.0;
+                  #        var greenFrac = rgb_color.green || 0.0;
+                  #        var blueFrac = rgb_color.blue || 0.0;
+                  #        var red = Math.floor(redFrac * 255);
+                  #        var green = Math.floor(greenFrac * 255);
+                  #        var blue = Math.floor(blueFrac * 255);
+                  #
+                  #        if (!('alpha' in rgb_color)) {
+                  #           return rgbToCssColor_(red, green, blue);
+                  #        }
+                  #
+                  #        var alphaFrac = rgb_color.alpha.value || 0.0;
+                  #        var rgbParams = [red, green, blue].join(',');
+                  #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
+                  #     };
+                  #
+                  #     var rgbToCssColor_ = function(red, green, blue) {
+                  #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
+                  #       var hexString = rgbNumber.toString(16);
+                  #       var missingZeros = 6 - hexString.length;
+                  #       var resultBuilder = ['#'];
+                  #       for (var i = 0; i < missingZeros; i++) {
+                  #          resultBuilder.push('0');
+                  #       }
+                  #       resultBuilder.push(hexString);
+                  #       return resultBuilder.join('');
+                  #     };
+                  #
+                  #     // ...
+                "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+                "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
+                    # the final pixel color is defined by the equation:
+                    #
+                    #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
+                    #
+                    # This means that a value of 1.0 corresponds to a solid color, whereas
+                    # a value of 0.0 corresponds to a completely transparent color. This
+                    # uses a wrapper message rather than a simple float scalar so that it is
+                    # possible to distinguish between a default value and the value being unset.
+                    # If omitted, this color object is to be rendered as a solid color
+                    # (as if the alpha value had been explicitly given with a value of 1.0).
+                "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
+                "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
+              },
+              "footerColor": { # Represents a color in the RGBA color space. This representation is designed # The color of the last row or column. If this field is not set, the last
+                  # row or column will be filled with either first_band_color or
+                  # second_band_color, depending on the color of the previous row or
+                  # column.
+                  # for simplicity of conversion to/from color representations in various
+                  # languages over compactness; for example, the fields of this representation
+                  # can be trivially provided to the constructor of "java.awt.Color" in Java; it
+                  # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
+                  # method in iOS; and, with just a little work, it can be easily formatted into
+                  # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
+                  #
+                  # Example (Java):
+                  #
+                  #      import com.google.type.Color;
+                  #
+                  #      // ...
+                  #      public static java.awt.Color fromProto(Color protocolor) {
+                  #        float alpha = protocolor.hasAlpha()
+                  #            ? protocolor.getAlpha().getValue()
+                  #            : 1.0;
+                  #
+                  #        return new java.awt.Color(
+                  #            protocolor.getRed(),
+                  #            protocolor.getGreen(),
+                  #            protocolor.getBlue(),
+                  #            alpha);
+                  #      }
+                  #
+                  #      public static Color toProto(java.awt.Color color) {
+                  #        float red = (float) color.getRed();
+                  #        float green = (float) color.getGreen();
+                  #        float blue = (float) color.getBlue();
+                  #        float denominator = 255.0;
+                  #        Color.Builder resultBuilder =
+                  #            Color
+                  #                .newBuilder()
+                  #                .setRed(red / denominator)
+                  #                .setGreen(green / denominator)
+                  #                .setBlue(blue / denominator);
+                  #        int alpha = color.getAlpha();
+                  #        if (alpha != 255) {
+                  #          result.setAlpha(
+                  #              FloatValue
+                  #                  .newBuilder()
+                  #                  .setValue(((float) alpha) / denominator)
+                  #                  .build());
+                  #        }
+                  #        return resultBuilder.build();
+                  #      }
+                  #      // ...
+                  #
+                  # Example (iOS / Obj-C):
+                  #
+                  #      // ...
+                  #      static UIColor* fromProto(Color* protocolor) {
+                  #         float red = [protocolor red];
+                  #         float green = [protocolor green];
+                  #         float blue = [protocolor blue];
+                  #         FloatValue* alpha_wrapper = [protocolor alpha];
+                  #         float alpha = 1.0;
+                  #         if (alpha_wrapper != nil) {
+                  #           alpha = [alpha_wrapper value];
+                  #         }
+                  #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
+                  #      }
+                  #
+                  #      static Color* toProto(UIColor* color) {
+                  #          CGFloat red, green, blue, alpha;
+                  #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
+                  #            return nil;
+                  #          }
+                  #          Color* result = [Color alloc] init];
+                  #          [result setRed:red];
+                  #          [result setGreen:green];
+                  #          [result setBlue:blue];
+                  #          if (alpha <= 0.9999) {
+                  #            [result setAlpha:floatWrapperWithValue(alpha)];
+                  #          }
+                  #          [result autorelease];
+                  #          return result;
+                  #     }
+                  #     // ...
+                  #
+                  #  Example (JavaScript):
+                  #
+                  #     // ...
+                  #
+                  #     var protoToCssColor = function(rgb_color) {
+                  #        var redFrac = rgb_color.red || 0.0;
+                  #        var greenFrac = rgb_color.green || 0.0;
+                  #        var blueFrac = rgb_color.blue || 0.0;
+                  #        var red = Math.floor(redFrac * 255);
+                  #        var green = Math.floor(greenFrac * 255);
+                  #        var blue = Math.floor(blueFrac * 255);
+                  #
+                  #        if (!('alpha' in rgb_color)) {
+                  #           return rgbToCssColor_(red, green, blue);
+                  #        }
+                  #
+                  #        var alphaFrac = rgb_color.alpha.value || 0.0;
+                  #        var rgbParams = [red, green, blue].join(',');
+                  #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
+                  #     };
+                  #
+                  #     var rgbToCssColor_ = function(red, green, blue) {
+                  #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
+                  #       var hexString = rgbNumber.toString(16);
+                  #       var missingZeros = 6 - hexString.length;
+                  #       var resultBuilder = ['#'];
+                  #       for (var i = 0; i < missingZeros; i++) {
+                  #          resultBuilder.push('0');
+                  #       }
+                  #       resultBuilder.push(hexString);
+                  #       return resultBuilder.join('');
+                  #     };
+                  #
+                  #     // ...
+                "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+                "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
+                    # the final pixel color is defined by the equation:
+                    #
+                    #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
+                    #
+                    # This means that a value of 1.0 corresponds to a solid color, whereas
+                    # a value of 0.0 corresponds to a completely transparent color. This
+                    # uses a wrapper message rather than a simple float scalar so that it is
+                    # possible to distinguish between a default value and the value being unset.
+                    # If omitted, this color object is to be rendered as a solid color
+                    # (as if the alpha value had been explicitly given with a value of 1.0).
+                "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
+                "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
+              },
+              "firstBandColor": { # Represents a color in the RGBA color space. This representation is designed # The first color that is alternating. (Required)
+                  # for simplicity of conversion to/from color representations in various
+                  # languages over compactness; for example, the fields of this representation
+                  # can be trivially provided to the constructor of "java.awt.Color" in Java; it
+                  # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
+                  # method in iOS; and, with just a little work, it can be easily formatted into
+                  # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
+                  #
+                  # Example (Java):
+                  #
+                  #      import com.google.type.Color;
+                  #
+                  #      // ...
+                  #      public static java.awt.Color fromProto(Color protocolor) {
+                  #        float alpha = protocolor.hasAlpha()
+                  #            ? protocolor.getAlpha().getValue()
+                  #            : 1.0;
+                  #
+                  #        return new java.awt.Color(
+                  #            protocolor.getRed(),
+                  #            protocolor.getGreen(),
+                  #            protocolor.getBlue(),
+                  #            alpha);
+                  #      }
+                  #
+                  #      public static Color toProto(java.awt.Color color) {
+                  #        float red = (float) color.getRed();
+                  #        float green = (float) color.getGreen();
+                  #        float blue = (float) color.getBlue();
+                  #        float denominator = 255.0;
+                  #        Color.Builder resultBuilder =
+                  #            Color
+                  #                .newBuilder()
+                  #                .setRed(red / denominator)
+                  #                .setGreen(green / denominator)
+                  #                .setBlue(blue / denominator);
+                  #        int alpha = color.getAlpha();
+                  #        if (alpha != 255) {
+                  #          result.setAlpha(
+                  #              FloatValue
+                  #                  .newBuilder()
+                  #                  .setValue(((float) alpha) / denominator)
+                  #                  .build());
+                  #        }
+                  #        return resultBuilder.build();
+                  #      }
+                  #      // ...
+                  #
+                  # Example (iOS / Obj-C):
+                  #
+                  #      // ...
+                  #      static UIColor* fromProto(Color* protocolor) {
+                  #         float red = [protocolor red];
+                  #         float green = [protocolor green];
+                  #         float blue = [protocolor blue];
+                  #         FloatValue* alpha_wrapper = [protocolor alpha];
+                  #         float alpha = 1.0;
+                  #         if (alpha_wrapper != nil) {
+                  #           alpha = [alpha_wrapper value];
+                  #         }
+                  #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
+                  #      }
+                  #
+                  #      static Color* toProto(UIColor* color) {
+                  #          CGFloat red, green, blue, alpha;
+                  #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
+                  #            return nil;
+                  #          }
+                  #          Color* result = [Color alloc] init];
+                  #          [result setRed:red];
+                  #          [result setGreen:green];
+                  #          [result setBlue:blue];
+                  #          if (alpha <= 0.9999) {
+                  #            [result setAlpha:floatWrapperWithValue(alpha)];
+                  #          }
+                  #          [result autorelease];
+                  #          return result;
+                  #     }
+                  #     // ...
+                  #
+                  #  Example (JavaScript):
+                  #
+                  #     // ...
+                  #
+                  #     var protoToCssColor = function(rgb_color) {
+                  #        var redFrac = rgb_color.red || 0.0;
+                  #        var greenFrac = rgb_color.green || 0.0;
+                  #        var blueFrac = rgb_color.blue || 0.0;
+                  #        var red = Math.floor(redFrac * 255);
+                  #        var green = Math.floor(greenFrac * 255);
+                  #        var blue = Math.floor(blueFrac * 255);
+                  #
+                  #        if (!('alpha' in rgb_color)) {
+                  #           return rgbToCssColor_(red, green, blue);
+                  #        }
+                  #
+                  #        var alphaFrac = rgb_color.alpha.value || 0.0;
+                  #        var rgbParams = [red, green, blue].join(',');
+                  #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
+                  #     };
+                  #
+                  #     var rgbToCssColor_ = function(red, green, blue) {
+                  #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
+                  #       var hexString = rgbNumber.toString(16);
+                  #       var missingZeros = 6 - hexString.length;
+                  #       var resultBuilder = ['#'];
+                  #       for (var i = 0; i < missingZeros; i++) {
+                  #          resultBuilder.push('0');
+                  #       }
+                  #       resultBuilder.push(hexString);
+                  #       return resultBuilder.join('');
+                  #     };
+                  #
+                  #     // ...
+                "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+                "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
+                    # the final pixel color is defined by the equation:
+                    #
+                    #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
+                    #
+                    # This means that a value of 1.0 corresponds to a solid color, whereas
+                    # a value of 0.0 corresponds to a completely transparent color. This
+                    # uses a wrapper message rather than a simple float scalar so that it is
+                    # possible to distinguish between a default value and the value being unset.
+                    # If omitted, this color object is to be rendered as a solid color
+                    # (as if the alpha value had been explicitly given with a value of 1.0).
+                "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
+                "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
+              },
+            },
+            "rowProperties": { # Properties referring a single dimension (either row or column). If both # Properties for row bands. These properties will be applied on a row-by-row
+                # basis throughout all the rows in the range. At least one of
+                # row_properties or column_properties must be specified.
+                # BandedRange.row_properties and BandedRange.column_properties are
+                # set, the fill colors are applied to cells according to the following rules:
+                #
+                # * header_color and footer_color take priority over band colors.
+                # * first_band_color takes priority over second_band_color.
+                # * row_properties takes priority over column_properties.
+                #
+                # For example, the first row color takes priority over the first column
+                # color, but the first column color takes priority over the second row color.
+                # Similarly, the row header takes priority over the column header in the
+                # top left cell, but the column header takes priority over the first row
+                # color if the row header is not set.
+              "secondBandColor": { # Represents a color in the RGBA color space. This representation is designed # The second color that is alternating. (Required)
+                  # for simplicity of conversion to/from color representations in various
+                  # languages over compactness; for example, the fields of this representation
+                  # can be trivially provided to the constructor of "java.awt.Color" in Java; it
+                  # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
+                  # method in iOS; and, with just a little work, it can be easily formatted into
+                  # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
+                  #
+                  # Example (Java):
+                  #
+                  #      import com.google.type.Color;
+                  #
+                  #      // ...
+                  #      public static java.awt.Color fromProto(Color protocolor) {
+                  #        float alpha = protocolor.hasAlpha()
+                  #            ? protocolor.getAlpha().getValue()
+                  #            : 1.0;
+                  #
+                  #        return new java.awt.Color(
+                  #            protocolor.getRed(),
+                  #            protocolor.getGreen(),
+                  #            protocolor.getBlue(),
+                  #            alpha);
+                  #      }
+                  #
+                  #      public static Color toProto(java.awt.Color color) {
+                  #        float red = (float) color.getRed();
+                  #        float green = (float) color.getGreen();
+                  #        float blue = (float) color.getBlue();
+                  #        float denominator = 255.0;
+                  #        Color.Builder resultBuilder =
+                  #            Color
+                  #                .newBuilder()
+                  #                .setRed(red / denominator)
+                  #                .setGreen(green / denominator)
+                  #                .setBlue(blue / denominator);
+                  #        int alpha = color.getAlpha();
+                  #        if (alpha != 255) {
+                  #          result.setAlpha(
+                  #              FloatValue
+                  #                  .newBuilder()
+                  #                  .setValue(((float) alpha) / denominator)
+                  #                  .build());
+                  #        }
+                  #        return resultBuilder.build();
+                  #      }
+                  #      // ...
+                  #
+                  # Example (iOS / Obj-C):
+                  #
+                  #      // ...
+                  #      static UIColor* fromProto(Color* protocolor) {
+                  #         float red = [protocolor red];
+                  #         float green = [protocolor green];
+                  #         float blue = [protocolor blue];
+                  #         FloatValue* alpha_wrapper = [protocolor alpha];
+                  #         float alpha = 1.0;
+                  #         if (alpha_wrapper != nil) {
+                  #           alpha = [alpha_wrapper value];
+                  #         }
+                  #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
+                  #      }
+                  #
+                  #      static Color* toProto(UIColor* color) {
+                  #          CGFloat red, green, blue, alpha;
+                  #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
+                  #            return nil;
+                  #          }
+                  #          Color* result = [Color alloc] init];
+                  #          [result setRed:red];
+                  #          [result setGreen:green];
+                  #          [result setBlue:blue];
+                  #          if (alpha <= 0.9999) {
+                  #            [result setAlpha:floatWrapperWithValue(alpha)];
+                  #          }
+                  #          [result autorelease];
+                  #          return result;
+                  #     }
+                  #     // ...
+                  #
+                  #  Example (JavaScript):
+                  #
+                  #     // ...
+                  #
+                  #     var protoToCssColor = function(rgb_color) {
+                  #        var redFrac = rgb_color.red || 0.0;
+                  #        var greenFrac = rgb_color.green || 0.0;
+                  #        var blueFrac = rgb_color.blue || 0.0;
+                  #        var red = Math.floor(redFrac * 255);
+                  #        var green = Math.floor(greenFrac * 255);
+                  #        var blue = Math.floor(blueFrac * 255);
+                  #
+                  #        if (!('alpha' in rgb_color)) {
+                  #           return rgbToCssColor_(red, green, blue);
+                  #        }
+                  #
+                  #        var alphaFrac = rgb_color.alpha.value || 0.0;
+                  #        var rgbParams = [red, green, blue].join(',');
+                  #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
+                  #     };
+                  #
+                  #     var rgbToCssColor_ = function(red, green, blue) {
+                  #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
+                  #       var hexString = rgbNumber.toString(16);
+                  #       var missingZeros = 6 - hexString.length;
+                  #       var resultBuilder = ['#'];
+                  #       for (var i = 0; i < missingZeros; i++) {
+                  #          resultBuilder.push('0');
+                  #       }
+                  #       resultBuilder.push(hexString);
+                  #       return resultBuilder.join('');
+                  #     };
+                  #
+                  #     // ...
+                "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+                "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
+                    # the final pixel color is defined by the equation:
+                    #
+                    #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
+                    #
+                    # This means that a value of 1.0 corresponds to a solid color, whereas
+                    # a value of 0.0 corresponds to a completely transparent color. This
+                    # uses a wrapper message rather than a simple float scalar so that it is
+                    # possible to distinguish between a default value and the value being unset.
+                    # If omitted, this color object is to be rendered as a solid color
+                    # (as if the alpha value had been explicitly given with a value of 1.0).
+                "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
+                "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
+              },
+              "headerColor": { # Represents a color in the RGBA color space. This representation is designed # The color of the first row or column. If this field is set, the first
+                  # row or column will be filled with this color and the colors will
+                  # alternate between first_band_color and second_band_color starting
+                  # from the second row or column. Otherwise, the first row or column will be
+                  # filled with first_band_color and the colors will proceed to alternate
+                  # as they normally would.
+                  # for simplicity of conversion to/from color representations in various
+                  # languages over compactness; for example, the fields of this representation
+                  # can be trivially provided to the constructor of "java.awt.Color" in Java; it
+                  # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
+                  # method in iOS; and, with just a little work, it can be easily formatted into
+                  # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
+                  #
+                  # Example (Java):
+                  #
+                  #      import com.google.type.Color;
+                  #
+                  #      // ...
+                  #      public static java.awt.Color fromProto(Color protocolor) {
+                  #        float alpha = protocolor.hasAlpha()
+                  #            ? protocolor.getAlpha().getValue()
+                  #            : 1.0;
+                  #
+                  #        return new java.awt.Color(
+                  #            protocolor.getRed(),
+                  #            protocolor.getGreen(),
+                  #            protocolor.getBlue(),
+                  #            alpha);
+                  #      }
+                  #
+                  #      public static Color toProto(java.awt.Color color) {
+                  #        float red = (float) color.getRed();
+                  #        float green = (float) color.getGreen();
+                  #        float blue = (float) color.getBlue();
+                  #        float denominator = 255.0;
+                  #        Color.Builder resultBuilder =
+                  #            Color
+                  #                .newBuilder()
+                  #                .setRed(red / denominator)
+                  #                .setGreen(green / denominator)
+                  #                .setBlue(blue / denominator);
+                  #        int alpha = color.getAlpha();
+                  #        if (alpha != 255) {
+                  #          result.setAlpha(
+                  #              FloatValue
+                  #                  .newBuilder()
+                  #                  .setValue(((float) alpha) / denominator)
+                  #                  .build());
+                  #        }
+                  #        return resultBuilder.build();
+                  #      }
+                  #      // ...
+                  #
+                  # Example (iOS / Obj-C):
+                  #
+                  #      // ...
+                  #      static UIColor* fromProto(Color* protocolor) {
+                  #         float red = [protocolor red];
+                  #         float green = [protocolor green];
+                  #         float blue = [protocolor blue];
+                  #         FloatValue* alpha_wrapper = [protocolor alpha];
+                  #         float alpha = 1.0;
+                  #         if (alpha_wrapper != nil) {
+                  #           alpha = [alpha_wrapper value];
+                  #         }
+                  #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
+                  #      }
+                  #
+                  #      static Color* toProto(UIColor* color) {
+                  #          CGFloat red, green, blue, alpha;
+                  #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
+                  #            return nil;
+                  #          }
+                  #          Color* result = [Color alloc] init];
+                  #          [result setRed:red];
+                  #          [result setGreen:green];
+                  #          [result setBlue:blue];
+                  #          if (alpha <= 0.9999) {
+                  #            [result setAlpha:floatWrapperWithValue(alpha)];
+                  #          }
+                  #          [result autorelease];
+                  #          return result;
+                  #     }
+                  #     // ...
+                  #
+                  #  Example (JavaScript):
+                  #
+                  #     // ...
+                  #
+                  #     var protoToCssColor = function(rgb_color) {
+                  #        var redFrac = rgb_color.red || 0.0;
+                  #        var greenFrac = rgb_color.green || 0.0;
+                  #        var blueFrac = rgb_color.blue || 0.0;
+                  #        var red = Math.floor(redFrac * 255);
+                  #        var green = Math.floor(greenFrac * 255);
+                  #        var blue = Math.floor(blueFrac * 255);
+                  #
+                  #        if (!('alpha' in rgb_color)) {
+                  #           return rgbToCssColor_(red, green, blue);
+                  #        }
+                  #
+                  #        var alphaFrac = rgb_color.alpha.value || 0.0;
+                  #        var rgbParams = [red, green, blue].join(',');
+                  #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
+                  #     };
+                  #
+                  #     var rgbToCssColor_ = function(red, green, blue) {
+                  #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
+                  #       var hexString = rgbNumber.toString(16);
+                  #       var missingZeros = 6 - hexString.length;
+                  #       var resultBuilder = ['#'];
+                  #       for (var i = 0; i < missingZeros; i++) {
+                  #          resultBuilder.push('0');
+                  #       }
+                  #       resultBuilder.push(hexString);
+                  #       return resultBuilder.join('');
+                  #     };
+                  #
+                  #     // ...
+                "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+                "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
+                    # the final pixel color is defined by the equation:
+                    #
+                    #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
+                    #
+                    # This means that a value of 1.0 corresponds to a solid color, whereas
+                    # a value of 0.0 corresponds to a completely transparent color. This
+                    # uses a wrapper message rather than a simple float scalar so that it is
+                    # possible to distinguish between a default value and the value being unset.
+                    # If omitted, this color object is to be rendered as a solid color
+                    # (as if the alpha value had been explicitly given with a value of 1.0).
+                "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
+                "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
+              },
+              "footerColor": { # Represents a color in the RGBA color space. This representation is designed # The color of the last row or column. If this field is not set, the last
+                  # row or column will be filled with either first_band_color or
+                  # second_band_color, depending on the color of the previous row or
+                  # column.
+                  # for simplicity of conversion to/from color representations in various
+                  # languages over compactness; for example, the fields of this representation
+                  # can be trivially provided to the constructor of "java.awt.Color" in Java; it
+                  # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
+                  # method in iOS; and, with just a little work, it can be easily formatted into
+                  # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
+                  #
+                  # Example (Java):
+                  #
+                  #      import com.google.type.Color;
+                  #
+                  #      // ...
+                  #      public static java.awt.Color fromProto(Color protocolor) {
+                  #        float alpha = protocolor.hasAlpha()
+                  #            ? protocolor.getAlpha().getValue()
+                  #            : 1.0;
+                  #
+                  #        return new java.awt.Color(
+                  #            protocolor.getRed(),
+                  #            protocolor.getGreen(),
+                  #            protocolor.getBlue(),
+                  #            alpha);
+                  #      }
+                  #
+                  #      public static Color toProto(java.awt.Color color) {
+                  #        float red = (float) color.getRed();
+                  #        float green = (float) color.getGreen();
+                  #        float blue = (float) color.getBlue();
+                  #        float denominator = 255.0;
+                  #        Color.Builder resultBuilder =
+                  #            Color
+                  #                .newBuilder()
+                  #                .setRed(red / denominator)
+                  #                .setGreen(green / denominator)
+                  #                .setBlue(blue / denominator);
+                  #        int alpha = color.getAlpha();
+                  #        if (alpha != 255) {
+                  #          result.setAlpha(
+                  #              FloatValue
+                  #                  .newBuilder()
+                  #                  .setValue(((float) alpha) / denominator)
+                  #                  .build());
+                  #        }
+                  #        return resultBuilder.build();
+                  #      }
+                  #      // ...
+                  #
+                  # Example (iOS / Obj-C):
+                  #
+                  #      // ...
+                  #      static UIColor* fromProto(Color* protocolor) {
+                  #         float red = [protocolor red];
+                  #         float green = [protocolor green];
+                  #         float blue = [protocolor blue];
+                  #         FloatValue* alpha_wrapper = [protocolor alpha];
+                  #         float alpha = 1.0;
+                  #         if (alpha_wrapper != nil) {
+                  #           alpha = [alpha_wrapper value];
+                  #         }
+                  #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
+                  #      }
+                  #
+                  #      static Color* toProto(UIColor* color) {
+                  #          CGFloat red, green, blue, alpha;
+                  #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
+                  #            return nil;
+                  #          }
+                  #          Color* result = [Color alloc] init];
+                  #          [result setRed:red];
+                  #          [result setGreen:green];
+                  #          [result setBlue:blue];
+                  #          if (alpha <= 0.9999) {
+                  #            [result setAlpha:floatWrapperWithValue(alpha)];
+                  #          }
+                  #          [result autorelease];
+                  #          return result;
+                  #     }
+                  #     // ...
+                  #
+                  #  Example (JavaScript):
+                  #
+                  #     // ...
+                  #
+                  #     var protoToCssColor = function(rgb_color) {
+                  #        var redFrac = rgb_color.red || 0.0;
+                  #        var greenFrac = rgb_color.green || 0.0;
+                  #        var blueFrac = rgb_color.blue || 0.0;
+                  #        var red = Math.floor(redFrac * 255);
+                  #        var green = Math.floor(greenFrac * 255);
+                  #        var blue = Math.floor(blueFrac * 255);
+                  #
+                  #        if (!('alpha' in rgb_color)) {
+                  #           return rgbToCssColor_(red, green, blue);
+                  #        }
+                  #
+                  #        var alphaFrac = rgb_color.alpha.value || 0.0;
+                  #        var rgbParams = [red, green, blue].join(',');
+                  #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
+                  #     };
+                  #
+                  #     var rgbToCssColor_ = function(red, green, blue) {
+                  #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
+                  #       var hexString = rgbNumber.toString(16);
+                  #       var missingZeros = 6 - hexString.length;
+                  #       var resultBuilder = ['#'];
+                  #       for (var i = 0; i < missingZeros; i++) {
+                  #          resultBuilder.push('0');
+                  #       }
+                  #       resultBuilder.push(hexString);
+                  #       return resultBuilder.join('');
+                  #     };
+                  #
+                  #     // ...
+                "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+                "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
+                    # the final pixel color is defined by the equation:
+                    #
+                    #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
+                    #
+                    # This means that a value of 1.0 corresponds to a solid color, whereas
+                    # a value of 0.0 corresponds to a completely transparent color. This
+                    # uses a wrapper message rather than a simple float scalar so that it is
+                    # possible to distinguish between a default value and the value being unset.
+                    # If omitted, this color object is to be rendered as a solid color
+                    # (as if the alpha value had been explicitly given with a value of 1.0).
+                "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
+                "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
+              },
+              "firstBandColor": { # Represents a color in the RGBA color space. This representation is designed # The first color that is alternating. (Required)
+                  # for simplicity of conversion to/from color representations in various
+                  # languages over compactness; for example, the fields of this representation
+                  # can be trivially provided to the constructor of "java.awt.Color" in Java; it
+                  # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
+                  # method in iOS; and, with just a little work, it can be easily formatted into
+                  # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
+                  #
+                  # Example (Java):
+                  #
+                  #      import com.google.type.Color;
+                  #
+                  #      // ...
+                  #      public static java.awt.Color fromProto(Color protocolor) {
+                  #        float alpha = protocolor.hasAlpha()
+                  #            ? protocolor.getAlpha().getValue()
+                  #            : 1.0;
+                  #
+                  #        return new java.awt.Color(
+                  #            protocolor.getRed(),
+                  #            protocolor.getGreen(),
+                  #            protocolor.getBlue(),
+                  #            alpha);
+                  #      }
+                  #
+                  #      public static Color toProto(java.awt.Color color) {
+                  #        float red = (float) color.getRed();
+                  #        float green = (float) color.getGreen();
+                  #        float blue = (float) color.getBlue();
+                  #        float denominator = 255.0;
+                  #        Color.Builder resultBuilder =
+                  #            Color
+                  #                .newBuilder()
+                  #                .setRed(red / denominator)
+                  #                .setGreen(green / denominator)
+                  #                .setBlue(blue / denominator);
+                  #        int alpha = color.getAlpha();
+                  #        if (alpha != 255) {
+                  #          result.setAlpha(
+                  #              FloatValue
+                  #                  .newBuilder()
+                  #                  .setValue(((float) alpha) / denominator)
+                  #                  .build());
+                  #        }
+                  #        return resultBuilder.build();
+                  #      }
+                  #      // ...
+                  #
+                  # Example (iOS / Obj-C):
+                  #
+                  #      // ...
+                  #      static UIColor* fromProto(Color* protocolor) {
+                  #         float red = [protocolor red];
+                  #         float green = [protocolor green];
+                  #         float blue = [protocolor blue];
+                  #         FloatValue* alpha_wrapper = [protocolor alpha];
+                  #         float alpha = 1.0;
+                  #         if (alpha_wrapper != nil) {
+                  #           alpha = [alpha_wrapper value];
+                  #         }
+                  #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
+                  #      }
+                  #
+                  #      static Color* toProto(UIColor* color) {
+                  #          CGFloat red, green, blue, alpha;
+                  #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
+                  #            return nil;
+                  #          }
+                  #          Color* result = [Color alloc] init];
+                  #          [result setRed:red];
+                  #          [result setGreen:green];
+                  #          [result setBlue:blue];
+                  #          if (alpha <= 0.9999) {
+                  #            [result setAlpha:floatWrapperWithValue(alpha)];
+                  #          }
+                  #          [result autorelease];
+                  #          return result;
+                  #     }
+                  #     // ...
+                  #
+                  #  Example (JavaScript):
+                  #
+                  #     // ...
+                  #
+                  #     var protoToCssColor = function(rgb_color) {
+                  #        var redFrac = rgb_color.red || 0.0;
+                  #        var greenFrac = rgb_color.green || 0.0;
+                  #        var blueFrac = rgb_color.blue || 0.0;
+                  #        var red = Math.floor(redFrac * 255);
+                  #        var green = Math.floor(greenFrac * 255);
+                  #        var blue = Math.floor(blueFrac * 255);
+                  #
+                  #        if (!('alpha' in rgb_color)) {
+                  #           return rgbToCssColor_(red, green, blue);
+                  #        }
+                  #
+                  #        var alphaFrac = rgb_color.alpha.value || 0.0;
+                  #        var rgbParams = [red, green, blue].join(',');
+                  #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
+                  #     };
+                  #
+                  #     var rgbToCssColor_ = function(red, green, blue) {
+                  #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
+                  #       var hexString = rgbNumber.toString(16);
+                  #       var missingZeros = 6 - hexString.length;
+                  #       var resultBuilder = ['#'];
+                  #       for (var i = 0; i < missingZeros; i++) {
+                  #          resultBuilder.push('0');
+                  #       }
+                  #       resultBuilder.push(hexString);
+                  #       return resultBuilder.join('');
+                  #     };
+                  #
+                  #     // ...
+                "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+                "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
+                    # the final pixel color is defined by the equation:
+                    #
+                    #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
+                    #
+                    # This means that a value of 1.0 corresponds to a solid color, whereas
+                    # a value of 0.0 corresponds to a completely transparent color. This
+                    # uses a wrapper message rather than a simple float scalar so that it is
+                    # possible to distinguish between a default value and the value being unset.
+                    # If omitted, this color object is to be rendered as a solid color
+                    # (as if the alpha value had been explicitly given with a value of 1.0).
+                "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
+                "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
+              },
+            },
+            "bandedRangeId": 42, # The id of the banded range.
+          },
+        },
         "autoResizeDimensions": { # Automatically resizes one or more dimensions based on the contents # Automatically resizes one or more dimensions based on the contents
             # of the cells in that dimension.
             # of the cells in that dimension.
@@ -11927,6 +13068,1128 @@
               # CUSTOM.
           "delimiterType": "A String", # The delimiter type to use.
         },
+        "addBanding": { # Adds a new banded range to the spreadsheet. # Adds a new banded range
+          "bandedRange": { # A banded (alternating colors) range in a sheet. # The banded range to add. The bandedRangeId
+              # field is optional; if one is not set, an id will be randomly generated. (It
+              # is an error to specify the ID of a range that already exists.)
+            "range": { # A range on a sheet. # The range over which these properties are applied.
+                # All indexes are zero-based.
+                # Indexes are half open, e.g the start index is inclusive
+                # and the end index is exclusive -- [start_index, end_index).
+                # Missing indexes indicate the range is unbounded on that side.
+                #
+                # For example, if `"Sheet1"` is sheet ID 0, then:
+                #
+                #   `Sheet1!A1:A1 == sheet_id: 0,
+                #                   start_row_index: 0, end_row_index: 1,
+                #                   start_column_index: 0, end_column_index: 1`
+                #
+                #   `Sheet1!A3:B4 == sheet_id: 0,
+                #                   start_row_index: 2, end_row_index: 4,
+                #                   start_column_index: 0, end_column_index: 2`
+                #
+                #   `Sheet1!A:B == sheet_id: 0,
+                #                 start_column_index: 0, end_column_index: 2`
+                #
+                #   `Sheet1!A5:B == sheet_id: 0,
+                #                  start_row_index: 4,
+                #                  start_column_index: 0, end_column_index: 2`
+                #
+                #   `Sheet1 == sheet_id:0`
+                #
+                # The start index must always be less than or equal to the end index.
+                # If the start index equals the end index, then the range is empty.
+                # Empty ranges are typically not meaningful and are usually rendered in the
+                # UI as `#REF!`.
+              "endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
+              "startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
+              "sheetId": 42, # The sheet this range is on.
+              "startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
+              "endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
+            },
+            "columnProperties": { # Properties referring a single dimension (either row or column). If both # Properties for column bands. These properties will be applied on a column-
+                # by-column basis throughout all the columns in the range. At least one of
+                # row_properties or column_properties must be specified.
+                # BandedRange.row_properties and BandedRange.column_properties are
+                # set, the fill colors are applied to cells according to the following rules:
+                #
+                # * header_color and footer_color take priority over band colors.
+                # * first_band_color takes priority over second_band_color.
+                # * row_properties takes priority over column_properties.
+                #
+                # For example, the first row color takes priority over the first column
+                # color, but the first column color takes priority over the second row color.
+                # Similarly, the row header takes priority over the column header in the
+                # top left cell, but the column header takes priority over the first row
+                # color if the row header is not set.
+              "secondBandColor": { # Represents a color in the RGBA color space. This representation is designed # The second color that is alternating. (Required)
+                  # for simplicity of conversion to/from color representations in various
+                  # languages over compactness; for example, the fields of this representation
+                  # can be trivially provided to the constructor of "java.awt.Color" in Java; it
+                  # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
+                  # method in iOS; and, with just a little work, it can be easily formatted into
+                  # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
+                  #
+                  # Example (Java):
+                  #
+                  #      import com.google.type.Color;
+                  #
+                  #      // ...
+                  #      public static java.awt.Color fromProto(Color protocolor) {
+                  #        float alpha = protocolor.hasAlpha()
+                  #            ? protocolor.getAlpha().getValue()
+                  #            : 1.0;
+                  #
+                  #        return new java.awt.Color(
+                  #            protocolor.getRed(),
+                  #            protocolor.getGreen(),
+                  #            protocolor.getBlue(),
+                  #            alpha);
+                  #      }
+                  #
+                  #      public static Color toProto(java.awt.Color color) {
+                  #        float red = (float) color.getRed();
+                  #        float green = (float) color.getGreen();
+                  #        float blue = (float) color.getBlue();
+                  #        float denominator = 255.0;
+                  #        Color.Builder resultBuilder =
+                  #            Color
+                  #                .newBuilder()
+                  #                .setRed(red / denominator)
+                  #                .setGreen(green / denominator)
+                  #                .setBlue(blue / denominator);
+                  #        int alpha = color.getAlpha();
+                  #        if (alpha != 255) {
+                  #          result.setAlpha(
+                  #              FloatValue
+                  #                  .newBuilder()
+                  #                  .setValue(((float) alpha) / denominator)
+                  #                  .build());
+                  #        }
+                  #        return resultBuilder.build();
+                  #      }
+                  #      // ...
+                  #
+                  # Example (iOS / Obj-C):
+                  #
+                  #      // ...
+                  #      static UIColor* fromProto(Color* protocolor) {
+                  #         float red = [protocolor red];
+                  #         float green = [protocolor green];
+                  #         float blue = [protocolor blue];
+                  #         FloatValue* alpha_wrapper = [protocolor alpha];
+                  #         float alpha = 1.0;
+                  #         if (alpha_wrapper != nil) {
+                  #           alpha = [alpha_wrapper value];
+                  #         }
+                  #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
+                  #      }
+                  #
+                  #      static Color* toProto(UIColor* color) {
+                  #          CGFloat red, green, blue, alpha;
+                  #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
+                  #            return nil;
+                  #          }
+                  #          Color* result = [Color alloc] init];
+                  #          [result setRed:red];
+                  #          [result setGreen:green];
+                  #          [result setBlue:blue];
+                  #          if (alpha <= 0.9999) {
+                  #            [result setAlpha:floatWrapperWithValue(alpha)];
+                  #          }
+                  #          [result autorelease];
+                  #          return result;
+                  #     }
+                  #     // ...
+                  #
+                  #  Example (JavaScript):
+                  #
+                  #     // ...
+                  #
+                  #     var protoToCssColor = function(rgb_color) {
+                  #        var redFrac = rgb_color.red || 0.0;
+                  #        var greenFrac = rgb_color.green || 0.0;
+                  #        var blueFrac = rgb_color.blue || 0.0;
+                  #        var red = Math.floor(redFrac * 255);
+                  #        var green = Math.floor(greenFrac * 255);
+                  #        var blue = Math.floor(blueFrac * 255);
+                  #
+                  #        if (!('alpha' in rgb_color)) {
+                  #           return rgbToCssColor_(red, green, blue);
+                  #        }
+                  #
+                  #        var alphaFrac = rgb_color.alpha.value || 0.0;
+                  #        var rgbParams = [red, green, blue].join(',');
+                  #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
+                  #     };
+                  #
+                  #     var rgbToCssColor_ = function(red, green, blue) {
+                  #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
+                  #       var hexString = rgbNumber.toString(16);
+                  #       var missingZeros = 6 - hexString.length;
+                  #       var resultBuilder = ['#'];
+                  #       for (var i = 0; i < missingZeros; i++) {
+                  #          resultBuilder.push('0');
+                  #       }
+                  #       resultBuilder.push(hexString);
+                  #       return resultBuilder.join('');
+                  #     };
+                  #
+                  #     // ...
+                "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+                "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
+                    # the final pixel color is defined by the equation:
+                    #
+                    #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
+                    #
+                    # This means that a value of 1.0 corresponds to a solid color, whereas
+                    # a value of 0.0 corresponds to a completely transparent color. This
+                    # uses a wrapper message rather than a simple float scalar so that it is
+                    # possible to distinguish between a default value and the value being unset.
+                    # If omitted, this color object is to be rendered as a solid color
+                    # (as if the alpha value had been explicitly given with a value of 1.0).
+                "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
+                "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
+              },
+              "headerColor": { # Represents a color in the RGBA color space. This representation is designed # The color of the first row or column. If this field is set, the first
+                  # row or column will be filled with this color and the colors will
+                  # alternate between first_band_color and second_band_color starting
+                  # from the second row or column. Otherwise, the first row or column will be
+                  # filled with first_band_color and the colors will proceed to alternate
+                  # as they normally would.
+                  # for simplicity of conversion to/from color representations in various
+                  # languages over compactness; for example, the fields of this representation
+                  # can be trivially provided to the constructor of "java.awt.Color" in Java; it
+                  # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
+                  # method in iOS; and, with just a little work, it can be easily formatted into
+                  # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
+                  #
+                  # Example (Java):
+                  #
+                  #      import com.google.type.Color;
+                  #
+                  #      // ...
+                  #      public static java.awt.Color fromProto(Color protocolor) {
+                  #        float alpha = protocolor.hasAlpha()
+                  #            ? protocolor.getAlpha().getValue()
+                  #            : 1.0;
+                  #
+                  #        return new java.awt.Color(
+                  #            protocolor.getRed(),
+                  #            protocolor.getGreen(),
+                  #            protocolor.getBlue(),
+                  #            alpha);
+                  #      }
+                  #
+                  #      public static Color toProto(java.awt.Color color) {
+                  #        float red = (float) color.getRed();
+                  #        float green = (float) color.getGreen();
+                  #        float blue = (float) color.getBlue();
+                  #        float denominator = 255.0;
+                  #        Color.Builder resultBuilder =
+                  #            Color
+                  #                .newBuilder()
+                  #                .setRed(red / denominator)
+                  #                .setGreen(green / denominator)
+                  #                .setBlue(blue / denominator);
+                  #        int alpha = color.getAlpha();
+                  #        if (alpha != 255) {
+                  #          result.setAlpha(
+                  #              FloatValue
+                  #                  .newBuilder()
+                  #                  .setValue(((float) alpha) / denominator)
+                  #                  .build());
+                  #        }
+                  #        return resultBuilder.build();
+                  #      }
+                  #      // ...
+                  #
+                  # Example (iOS / Obj-C):
+                  #
+                  #      // ...
+                  #      static UIColor* fromProto(Color* protocolor) {
+                  #         float red = [protocolor red];
+                  #         float green = [protocolor green];
+                  #         float blue = [protocolor blue];
+                  #         FloatValue* alpha_wrapper = [protocolor alpha];
+                  #         float alpha = 1.0;
+                  #         if (alpha_wrapper != nil) {
+                  #           alpha = [alpha_wrapper value];
+                  #         }
+                  #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
+                  #      }
+                  #
+                  #      static Color* toProto(UIColor* color) {
+                  #          CGFloat red, green, blue, alpha;
+                  #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
+                  #            return nil;
+                  #          }
+                  #          Color* result = [Color alloc] init];
+                  #          [result setRed:red];
+                  #          [result setGreen:green];
+                  #          [result setBlue:blue];
+                  #          if (alpha <= 0.9999) {
+                  #            [result setAlpha:floatWrapperWithValue(alpha)];
+                  #          }
+                  #          [result autorelease];
+                  #          return result;
+                  #     }
+                  #     // ...
+                  #
+                  #  Example (JavaScript):
+                  #
+                  #     // ...
+                  #
+                  #     var protoToCssColor = function(rgb_color) {
+                  #        var redFrac = rgb_color.red || 0.0;
+                  #        var greenFrac = rgb_color.green || 0.0;
+                  #        var blueFrac = rgb_color.blue || 0.0;
+                  #        var red = Math.floor(redFrac * 255);
+                  #        var green = Math.floor(greenFrac * 255);
+                  #        var blue = Math.floor(blueFrac * 255);
+                  #
+                  #        if (!('alpha' in rgb_color)) {
+                  #           return rgbToCssColor_(red, green, blue);
+                  #        }
+                  #
+                  #        var alphaFrac = rgb_color.alpha.value || 0.0;
+                  #        var rgbParams = [red, green, blue].join(',');
+                  #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
+                  #     };
+                  #
+                  #     var rgbToCssColor_ = function(red, green, blue) {
+                  #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
+                  #       var hexString = rgbNumber.toString(16);
+                  #       var missingZeros = 6 - hexString.length;
+                  #       var resultBuilder = ['#'];
+                  #       for (var i = 0; i < missingZeros; i++) {
+                  #          resultBuilder.push('0');
+                  #       }
+                  #       resultBuilder.push(hexString);
+                  #       return resultBuilder.join('');
+                  #     };
+                  #
+                  #     // ...
+                "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+                "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
+                    # the final pixel color is defined by the equation:
+                    #
+                    #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
+                    #
+                    # This means that a value of 1.0 corresponds to a solid color, whereas
+                    # a value of 0.0 corresponds to a completely transparent color. This
+                    # uses a wrapper message rather than a simple float scalar so that it is
+                    # possible to distinguish between a default value and the value being unset.
+                    # If omitted, this color object is to be rendered as a solid color
+                    # (as if the alpha value had been explicitly given with a value of 1.0).
+                "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
+                "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
+              },
+              "footerColor": { # Represents a color in the RGBA color space. This representation is designed # The color of the last row or column. If this field is not set, the last
+                  # row or column will be filled with either first_band_color or
+                  # second_band_color, depending on the color of the previous row or
+                  # column.
+                  # for simplicity of conversion to/from color representations in various
+                  # languages over compactness; for example, the fields of this representation
+                  # can be trivially provided to the constructor of "java.awt.Color" in Java; it
+                  # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
+                  # method in iOS; and, with just a little work, it can be easily formatted into
+                  # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
+                  #
+                  # Example (Java):
+                  #
+                  #      import com.google.type.Color;
+                  #
+                  #      // ...
+                  #      public static java.awt.Color fromProto(Color protocolor) {
+                  #        float alpha = protocolor.hasAlpha()
+                  #            ? protocolor.getAlpha().getValue()
+                  #            : 1.0;
+                  #
+                  #        return new java.awt.Color(
+                  #            protocolor.getRed(),
+                  #            protocolor.getGreen(),
+                  #            protocolor.getBlue(),
+                  #            alpha);
+                  #      }
+                  #
+                  #      public static Color toProto(java.awt.Color color) {
+                  #        float red = (float) color.getRed();
+                  #        float green = (float) color.getGreen();
+                  #        float blue = (float) color.getBlue();
+                  #        float denominator = 255.0;
+                  #        Color.Builder resultBuilder =
+                  #            Color
+                  #                .newBuilder()
+                  #                .setRed(red / denominator)
+                  #                .setGreen(green / denominator)
+                  #                .setBlue(blue / denominator);
+                  #        int alpha = color.getAlpha();
+                  #        if (alpha != 255) {
+                  #          result.setAlpha(
+                  #              FloatValue
+                  #                  .newBuilder()
+                  #                  .setValue(((float) alpha) / denominator)
+                  #                  .build());
+                  #        }
+                  #        return resultBuilder.build();
+                  #      }
+                  #      // ...
+                  #
+                  # Example (iOS / Obj-C):
+                  #
+                  #      // ...
+                  #      static UIColor* fromProto(Color* protocolor) {
+                  #         float red = [protocolor red];
+                  #         float green = [protocolor green];
+                  #         float blue = [protocolor blue];
+                  #         FloatValue* alpha_wrapper = [protocolor alpha];
+                  #         float alpha = 1.0;
+                  #         if (alpha_wrapper != nil) {
+                  #           alpha = [alpha_wrapper value];
+                  #         }
+                  #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
+                  #      }
+                  #
+                  #      static Color* toProto(UIColor* color) {
+                  #          CGFloat red, green, blue, alpha;
+                  #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
+                  #            return nil;
+                  #          }
+                  #          Color* result = [Color alloc] init];
+                  #          [result setRed:red];
+                  #          [result setGreen:green];
+                  #          [result setBlue:blue];
+                  #          if (alpha <= 0.9999) {
+                  #            [result setAlpha:floatWrapperWithValue(alpha)];
+                  #          }
+                  #          [result autorelease];
+                  #          return result;
+                  #     }
+                  #     // ...
+                  #
+                  #  Example (JavaScript):
+                  #
+                  #     // ...
+                  #
+                  #     var protoToCssColor = function(rgb_color) {
+                  #        var redFrac = rgb_color.red || 0.0;
+                  #        var greenFrac = rgb_color.green || 0.0;
+                  #        var blueFrac = rgb_color.blue || 0.0;
+                  #        var red = Math.floor(redFrac * 255);
+                  #        var green = Math.floor(greenFrac * 255);
+                  #        var blue = Math.floor(blueFrac * 255);
+                  #
+                  #        if (!('alpha' in rgb_color)) {
+                  #           return rgbToCssColor_(red, green, blue);
+                  #        }
+                  #
+                  #        var alphaFrac = rgb_color.alpha.value || 0.0;
+                  #        var rgbParams = [red, green, blue].join(',');
+                  #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
+                  #     };
+                  #
+                  #     var rgbToCssColor_ = function(red, green, blue) {
+                  #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
+                  #       var hexString = rgbNumber.toString(16);
+                  #       var missingZeros = 6 - hexString.length;
+                  #       var resultBuilder = ['#'];
+                  #       for (var i = 0; i < missingZeros; i++) {
+                  #          resultBuilder.push('0');
+                  #       }
+                  #       resultBuilder.push(hexString);
+                  #       return resultBuilder.join('');
+                  #     };
+                  #
+                  #     // ...
+                "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+                "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
+                    # the final pixel color is defined by the equation:
+                    #
+                    #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
+                    #
+                    # This means that a value of 1.0 corresponds to a solid color, whereas
+                    # a value of 0.0 corresponds to a completely transparent color. This
+                    # uses a wrapper message rather than a simple float scalar so that it is
+                    # possible to distinguish between a default value and the value being unset.
+                    # If omitted, this color object is to be rendered as a solid color
+                    # (as if the alpha value had been explicitly given with a value of 1.0).
+                "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
+                "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
+              },
+              "firstBandColor": { # Represents a color in the RGBA color space. This representation is designed # The first color that is alternating. (Required)
+                  # for simplicity of conversion to/from color representations in various
+                  # languages over compactness; for example, the fields of this representation
+                  # can be trivially provided to the constructor of "java.awt.Color" in Java; it
+                  # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
+                  # method in iOS; and, with just a little work, it can be easily formatted into
+                  # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
+                  #
+                  # Example (Java):
+                  #
+                  #      import com.google.type.Color;
+                  #
+                  #      // ...
+                  #      public static java.awt.Color fromProto(Color protocolor) {
+                  #        float alpha = protocolor.hasAlpha()
+                  #            ? protocolor.getAlpha().getValue()
+                  #            : 1.0;
+                  #
+                  #        return new java.awt.Color(
+                  #            protocolor.getRed(),
+                  #            protocolor.getGreen(),
+                  #            protocolor.getBlue(),
+                  #            alpha);
+                  #      }
+                  #
+                  #      public static Color toProto(java.awt.Color color) {
+                  #        float red = (float) color.getRed();
+                  #        float green = (float) color.getGreen();
+                  #        float blue = (float) color.getBlue();
+                  #        float denominator = 255.0;
+                  #        Color.Builder resultBuilder =
+                  #            Color
+                  #                .newBuilder()
+                  #                .setRed(red / denominator)
+                  #                .setGreen(green / denominator)
+                  #                .setBlue(blue / denominator);
+                  #        int alpha = color.getAlpha();
+                  #        if (alpha != 255) {
+                  #          result.setAlpha(
+                  #              FloatValue
+                  #                  .newBuilder()
+                  #                  .setValue(((float) alpha) / denominator)
+                  #                  .build());
+                  #        }
+                  #        return resultBuilder.build();
+                  #      }
+                  #      // ...
+                  #
+                  # Example (iOS / Obj-C):
+                  #
+                  #      // ...
+                  #      static UIColor* fromProto(Color* protocolor) {
+                  #         float red = [protocolor red];
+                  #         float green = [protocolor green];
+                  #         float blue = [protocolor blue];
+                  #         FloatValue* alpha_wrapper = [protocolor alpha];
+                  #         float alpha = 1.0;
+                  #         if (alpha_wrapper != nil) {
+                  #           alpha = [alpha_wrapper value];
+                  #         }
+                  #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
+                  #      }
+                  #
+                  #      static Color* toProto(UIColor* color) {
+                  #          CGFloat red, green, blue, alpha;
+                  #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
+                  #            return nil;
+                  #          }
+                  #          Color* result = [Color alloc] init];
+                  #          [result setRed:red];
+                  #          [result setGreen:green];
+                  #          [result setBlue:blue];
+                  #          if (alpha <= 0.9999) {
+                  #            [result setAlpha:floatWrapperWithValue(alpha)];
+                  #          }
+                  #          [result autorelease];
+                  #          return result;
+                  #     }
+                  #     // ...
+                  #
+                  #  Example (JavaScript):
+                  #
+                  #     // ...
+                  #
+                  #     var protoToCssColor = function(rgb_color) {
+                  #        var redFrac = rgb_color.red || 0.0;
+                  #        var greenFrac = rgb_color.green || 0.0;
+                  #        var blueFrac = rgb_color.blue || 0.0;
+                  #        var red = Math.floor(redFrac * 255);
+                  #        var green = Math.floor(greenFrac * 255);
+                  #        var blue = Math.floor(blueFrac * 255);
+                  #
+                  #        if (!('alpha' in rgb_color)) {
+                  #           return rgbToCssColor_(red, green, blue);
+                  #        }
+                  #
+                  #        var alphaFrac = rgb_color.alpha.value || 0.0;
+                  #        var rgbParams = [red, green, blue].join(',');
+                  #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
+                  #     };
+                  #
+                  #     var rgbToCssColor_ = function(red, green, blue) {
+                  #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
+                  #       var hexString = rgbNumber.toString(16);
+                  #       var missingZeros = 6 - hexString.length;
+                  #       var resultBuilder = ['#'];
+                  #       for (var i = 0; i < missingZeros; i++) {
+                  #          resultBuilder.push('0');
+                  #       }
+                  #       resultBuilder.push(hexString);
+                  #       return resultBuilder.join('');
+                  #     };
+                  #
+                  #     // ...
+                "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+                "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
+                    # the final pixel color is defined by the equation:
+                    #
+                    #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
+                    #
+                    # This means that a value of 1.0 corresponds to a solid color, whereas
+                    # a value of 0.0 corresponds to a completely transparent color. This
+                    # uses a wrapper message rather than a simple float scalar so that it is
+                    # possible to distinguish between a default value and the value being unset.
+                    # If omitted, this color object is to be rendered as a solid color
+                    # (as if the alpha value had been explicitly given with a value of 1.0).
+                "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
+                "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
+              },
+            },
+            "rowProperties": { # Properties referring a single dimension (either row or column). If both # Properties for row bands. These properties will be applied on a row-by-row
+                # basis throughout all the rows in the range. At least one of
+                # row_properties or column_properties must be specified.
+                # BandedRange.row_properties and BandedRange.column_properties are
+                # set, the fill colors are applied to cells according to the following rules:
+                #
+                # * header_color and footer_color take priority over band colors.
+                # * first_band_color takes priority over second_band_color.
+                # * row_properties takes priority over column_properties.
+                #
+                # For example, the first row color takes priority over the first column
+                # color, but the first column color takes priority over the second row color.
+                # Similarly, the row header takes priority over the column header in the
+                # top left cell, but the column header takes priority over the first row
+                # color if the row header is not set.
+              "secondBandColor": { # Represents a color in the RGBA color space. This representation is designed # The second color that is alternating. (Required)
+                  # for simplicity of conversion to/from color representations in various
+                  # languages over compactness; for example, the fields of this representation
+                  # can be trivially provided to the constructor of "java.awt.Color" in Java; it
+                  # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
+                  # method in iOS; and, with just a little work, it can be easily formatted into
+                  # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
+                  #
+                  # Example (Java):
+                  #
+                  #      import com.google.type.Color;
+                  #
+                  #      // ...
+                  #      public static java.awt.Color fromProto(Color protocolor) {
+                  #        float alpha = protocolor.hasAlpha()
+                  #            ? protocolor.getAlpha().getValue()
+                  #            : 1.0;
+                  #
+                  #        return new java.awt.Color(
+                  #            protocolor.getRed(),
+                  #            protocolor.getGreen(),
+                  #            protocolor.getBlue(),
+                  #            alpha);
+                  #      }
+                  #
+                  #      public static Color toProto(java.awt.Color color) {
+                  #        float red = (float) color.getRed();
+                  #        float green = (float) color.getGreen();
+                  #        float blue = (float) color.getBlue();
+                  #        float denominator = 255.0;
+                  #        Color.Builder resultBuilder =
+                  #            Color
+                  #                .newBuilder()
+                  #                .setRed(red / denominator)
+                  #                .setGreen(green / denominator)
+                  #                .setBlue(blue / denominator);
+                  #        int alpha = color.getAlpha();
+                  #        if (alpha != 255) {
+                  #          result.setAlpha(
+                  #              FloatValue
+                  #                  .newBuilder()
+                  #                  .setValue(((float) alpha) / denominator)
+                  #                  .build());
+                  #        }
+                  #        return resultBuilder.build();
+                  #      }
+                  #      // ...
+                  #
+                  # Example (iOS / Obj-C):
+                  #
+                  #      // ...
+                  #      static UIColor* fromProto(Color* protocolor) {
+                  #         float red = [protocolor red];
+                  #         float green = [protocolor green];
+                  #         float blue = [protocolor blue];
+                  #         FloatValue* alpha_wrapper = [protocolor alpha];
+                  #         float alpha = 1.0;
+                  #         if (alpha_wrapper != nil) {
+                  #           alpha = [alpha_wrapper value];
+                  #         }
+                  #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
+                  #      }
+                  #
+                  #      static Color* toProto(UIColor* color) {
+                  #          CGFloat red, green, blue, alpha;
+                  #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
+                  #            return nil;
+                  #          }
+                  #          Color* result = [Color alloc] init];
+                  #          [result setRed:red];
+                  #          [result setGreen:green];
+                  #          [result setBlue:blue];
+                  #          if (alpha <= 0.9999) {
+                  #            [result setAlpha:floatWrapperWithValue(alpha)];
+                  #          }
+                  #          [result autorelease];
+                  #          return result;
+                  #     }
+                  #     // ...
+                  #
+                  #  Example (JavaScript):
+                  #
+                  #     // ...
+                  #
+                  #     var protoToCssColor = function(rgb_color) {
+                  #        var redFrac = rgb_color.red || 0.0;
+                  #        var greenFrac = rgb_color.green || 0.0;
+                  #        var blueFrac = rgb_color.blue || 0.0;
+                  #        var red = Math.floor(redFrac * 255);
+                  #        var green = Math.floor(greenFrac * 255);
+                  #        var blue = Math.floor(blueFrac * 255);
+                  #
+                  #        if (!('alpha' in rgb_color)) {
+                  #           return rgbToCssColor_(red, green, blue);
+                  #        }
+                  #
+                  #        var alphaFrac = rgb_color.alpha.value || 0.0;
+                  #        var rgbParams = [red, green, blue].join(',');
+                  #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
+                  #     };
+                  #
+                  #     var rgbToCssColor_ = function(red, green, blue) {
+                  #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
+                  #       var hexString = rgbNumber.toString(16);
+                  #       var missingZeros = 6 - hexString.length;
+                  #       var resultBuilder = ['#'];
+                  #       for (var i = 0; i < missingZeros; i++) {
+                  #          resultBuilder.push('0');
+                  #       }
+                  #       resultBuilder.push(hexString);
+                  #       return resultBuilder.join('');
+                  #     };
+                  #
+                  #     // ...
+                "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+                "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
+                    # the final pixel color is defined by the equation:
+                    #
+                    #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
+                    #
+                    # This means that a value of 1.0 corresponds to a solid color, whereas
+                    # a value of 0.0 corresponds to a completely transparent color. This
+                    # uses a wrapper message rather than a simple float scalar so that it is
+                    # possible to distinguish between a default value and the value being unset.
+                    # If omitted, this color object is to be rendered as a solid color
+                    # (as if the alpha value had been explicitly given with a value of 1.0).
+                "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
+                "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
+              },
+              "headerColor": { # Represents a color in the RGBA color space. This representation is designed # The color of the first row or column. If this field is set, the first
+                  # row or column will be filled with this color and the colors will
+                  # alternate between first_band_color and second_band_color starting
+                  # from the second row or column. Otherwise, the first row or column will be
+                  # filled with first_band_color and the colors will proceed to alternate
+                  # as they normally would.
+                  # for simplicity of conversion to/from color representations in various
+                  # languages over compactness; for example, the fields of this representation
+                  # can be trivially provided to the constructor of "java.awt.Color" in Java; it
+                  # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
+                  # method in iOS; and, with just a little work, it can be easily formatted into
+                  # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
+                  #
+                  # Example (Java):
+                  #
+                  #      import com.google.type.Color;
+                  #
+                  #      // ...
+                  #      public static java.awt.Color fromProto(Color protocolor) {
+                  #        float alpha = protocolor.hasAlpha()
+                  #            ? protocolor.getAlpha().getValue()
+                  #            : 1.0;
+                  #
+                  #        return new java.awt.Color(
+                  #            protocolor.getRed(),
+                  #            protocolor.getGreen(),
+                  #            protocolor.getBlue(),
+                  #            alpha);
+                  #      }
+                  #
+                  #      public static Color toProto(java.awt.Color color) {
+                  #        float red = (float) color.getRed();
+                  #        float green = (float) color.getGreen();
+                  #        float blue = (float) color.getBlue();
+                  #        float denominator = 255.0;
+                  #        Color.Builder resultBuilder =
+                  #            Color
+                  #                .newBuilder()
+                  #                .setRed(red / denominator)
+                  #                .setGreen(green / denominator)
+                  #                .setBlue(blue / denominator);
+                  #        int alpha = color.getAlpha();
+                  #        if (alpha != 255) {
+                  #          result.setAlpha(
+                  #              FloatValue
+                  #                  .newBuilder()
+                  #                  .setValue(((float) alpha) / denominator)
+                  #                  .build());
+                  #        }
+                  #        return resultBuilder.build();
+                  #      }
+                  #      // ...
+                  #
+                  # Example (iOS / Obj-C):
+                  #
+                  #      // ...
+                  #      static UIColor* fromProto(Color* protocolor) {
+                  #         float red = [protocolor red];
+                  #         float green = [protocolor green];
+                  #         float blue = [protocolor blue];
+                  #         FloatValue* alpha_wrapper = [protocolor alpha];
+                  #         float alpha = 1.0;
+                  #         if (alpha_wrapper != nil) {
+                  #           alpha = [alpha_wrapper value];
+                  #         }
+                  #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
+                  #      }
+                  #
+                  #      static Color* toProto(UIColor* color) {
+                  #          CGFloat red, green, blue, alpha;
+                  #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
+                  #            return nil;
+                  #          }
+                  #          Color* result = [Color alloc] init];
+                  #          [result setRed:red];
+                  #          [result setGreen:green];
+                  #          [result setBlue:blue];
+                  #          if (alpha <= 0.9999) {
+                  #            [result setAlpha:floatWrapperWithValue(alpha)];
+                  #          }
+                  #          [result autorelease];
+                  #          return result;
+                  #     }
+                  #     // ...
+                  #
+                  #  Example (JavaScript):
+                  #
+                  #     // ...
+                  #
+                  #     var protoToCssColor = function(rgb_color) {
+                  #        var redFrac = rgb_color.red || 0.0;
+                  #        var greenFrac = rgb_color.green || 0.0;
+                  #        var blueFrac = rgb_color.blue || 0.0;
+                  #        var red = Math.floor(redFrac * 255);
+                  #        var green = Math.floor(greenFrac * 255);
+                  #        var blue = Math.floor(blueFrac * 255);
+                  #
+                  #        if (!('alpha' in rgb_color)) {
+                  #           return rgbToCssColor_(red, green, blue);
+                  #        }
+                  #
+                  #        var alphaFrac = rgb_color.alpha.value || 0.0;
+                  #        var rgbParams = [red, green, blue].join(',');
+                  #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
+                  #     };
+                  #
+                  #     var rgbToCssColor_ = function(red, green, blue) {
+                  #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
+                  #       var hexString = rgbNumber.toString(16);
+                  #       var missingZeros = 6 - hexString.length;
+                  #       var resultBuilder = ['#'];
+                  #       for (var i = 0; i < missingZeros; i++) {
+                  #          resultBuilder.push('0');
+                  #       }
+                  #       resultBuilder.push(hexString);
+                  #       return resultBuilder.join('');
+                  #     };
+                  #
+                  #     // ...
+                "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+                "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
+                    # the final pixel color is defined by the equation:
+                    #
+                    #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
+                    #
+                    # This means that a value of 1.0 corresponds to a solid color, whereas
+                    # a value of 0.0 corresponds to a completely transparent color. This
+                    # uses a wrapper message rather than a simple float scalar so that it is
+                    # possible to distinguish between a default value and the value being unset.
+                    # If omitted, this color object is to be rendered as a solid color
+                    # (as if the alpha value had been explicitly given with a value of 1.0).
+                "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
+                "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
+              },
+              "footerColor": { # Represents a color in the RGBA color space. This representation is designed # The color of the last row or column. If this field is not set, the last
+                  # row or column will be filled with either first_band_color or
+                  # second_band_color, depending on the color of the previous row or
+                  # column.
+                  # for simplicity of conversion to/from color representations in various
+                  # languages over compactness; for example, the fields of this representation
+                  # can be trivially provided to the constructor of "java.awt.Color" in Java; it
+                  # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
+                  # method in iOS; and, with just a little work, it can be easily formatted into
+                  # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
+                  #
+                  # Example (Java):
+                  #
+                  #      import com.google.type.Color;
+                  #
+                  #      // ...
+                  #      public static java.awt.Color fromProto(Color protocolor) {
+                  #        float alpha = protocolor.hasAlpha()
+                  #            ? protocolor.getAlpha().getValue()
+                  #            : 1.0;
+                  #
+                  #        return new java.awt.Color(
+                  #            protocolor.getRed(),
+                  #            protocolor.getGreen(),
+                  #            protocolor.getBlue(),
+                  #            alpha);
+                  #      }
+                  #
+                  #      public static Color toProto(java.awt.Color color) {
+                  #        float red = (float) color.getRed();
+                  #        float green = (float) color.getGreen();
+                  #        float blue = (float) color.getBlue();
+                  #        float denominator = 255.0;
+                  #        Color.Builder resultBuilder =
+                  #            Color
+                  #                .newBuilder()
+                  #                .setRed(red / denominator)
+                  #                .setGreen(green / denominator)
+                  #                .setBlue(blue / denominator);
+                  #        int alpha = color.getAlpha();
+                  #        if (alpha != 255) {
+                  #          result.setAlpha(
+                  #              FloatValue
+                  #                  .newBuilder()
+                  #                  .setValue(((float) alpha) / denominator)
+                  #                  .build());
+                  #        }
+                  #        return resultBuilder.build();
+                  #      }
+                  #      // ...
+                  #
+                  # Example (iOS / Obj-C):
+                  #
+                  #      // ...
+                  #      static UIColor* fromProto(Color* protocolor) {
+                  #         float red = [protocolor red];
+                  #         float green = [protocolor green];
+                  #         float blue = [protocolor blue];
+                  #         FloatValue* alpha_wrapper = [protocolor alpha];
+                  #         float alpha = 1.0;
+                  #         if (alpha_wrapper != nil) {
+                  #           alpha = [alpha_wrapper value];
+                  #         }
+                  #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
+                  #      }
+                  #
+                  #      static Color* toProto(UIColor* color) {
+                  #          CGFloat red, green, blue, alpha;
+                  #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
+                  #            return nil;
+                  #          }
+                  #          Color* result = [Color alloc] init];
+                  #          [result setRed:red];
+                  #          [result setGreen:green];
+                  #          [result setBlue:blue];
+                  #          if (alpha <= 0.9999) {
+                  #            [result setAlpha:floatWrapperWithValue(alpha)];
+                  #          }
+                  #          [result autorelease];
+                  #          return result;
+                  #     }
+                  #     // ...
+                  #
+                  #  Example (JavaScript):
+                  #
+                  #     // ...
+                  #
+                  #     var protoToCssColor = function(rgb_color) {
+                  #        var redFrac = rgb_color.red || 0.0;
+                  #        var greenFrac = rgb_color.green || 0.0;
+                  #        var blueFrac = rgb_color.blue || 0.0;
+                  #        var red = Math.floor(redFrac * 255);
+                  #        var green = Math.floor(greenFrac * 255);
+                  #        var blue = Math.floor(blueFrac * 255);
+                  #
+                  #        if (!('alpha' in rgb_color)) {
+                  #           return rgbToCssColor_(red, green, blue);
+                  #        }
+                  #
+                  #        var alphaFrac = rgb_color.alpha.value || 0.0;
+                  #        var rgbParams = [red, green, blue].join(',');
+                  #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
+                  #     };
+                  #
+                  #     var rgbToCssColor_ = function(red, green, blue) {
+                  #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
+                  #       var hexString = rgbNumber.toString(16);
+                  #       var missingZeros = 6 - hexString.length;
+                  #       var resultBuilder = ['#'];
+                  #       for (var i = 0; i < missingZeros; i++) {
+                  #          resultBuilder.push('0');
+                  #       }
+                  #       resultBuilder.push(hexString);
+                  #       return resultBuilder.join('');
+                  #     };
+                  #
+                  #     // ...
+                "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+                "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
+                    # the final pixel color is defined by the equation:
+                    #
+                    #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
+                    #
+                    # This means that a value of 1.0 corresponds to a solid color, whereas
+                    # a value of 0.0 corresponds to a completely transparent color. This
+                    # uses a wrapper message rather than a simple float scalar so that it is
+                    # possible to distinguish between a default value and the value being unset.
+                    # If omitted, this color object is to be rendered as a solid color
+                    # (as if the alpha value had been explicitly given with a value of 1.0).
+                "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
+                "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
+              },
+              "firstBandColor": { # Represents a color in the RGBA color space. This representation is designed # The first color that is alternating. (Required)
+                  # for simplicity of conversion to/from color representations in various
+                  # languages over compactness; for example, the fields of this representation
+                  # can be trivially provided to the constructor of "java.awt.Color" in Java; it
+                  # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
+                  # method in iOS; and, with just a little work, it can be easily formatted into
+                  # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
+                  #
+                  # Example (Java):
+                  #
+                  #      import com.google.type.Color;
+                  #
+                  #      // ...
+                  #      public static java.awt.Color fromProto(Color protocolor) {
+                  #        float alpha = protocolor.hasAlpha()
+                  #            ? protocolor.getAlpha().getValue()
+                  #            : 1.0;
+                  #
+                  #        return new java.awt.Color(
+                  #            protocolor.getRed(),
+                  #            protocolor.getGreen(),
+                  #            protocolor.getBlue(),
+                  #            alpha);
+                  #      }
+                  #
+                  #      public static Color toProto(java.awt.Color color) {
+                  #        float red = (float) color.getRed();
+                  #        float green = (float) color.getGreen();
+                  #        float blue = (float) color.getBlue();
+                  #        float denominator = 255.0;
+                  #        Color.Builder resultBuilder =
+                  #            Color
+                  #                .newBuilder()
+                  #                .setRed(red / denominator)
+                  #                .setGreen(green / denominator)
+                  #                .setBlue(blue / denominator);
+                  #        int alpha = color.getAlpha();
+                  #        if (alpha != 255) {
+                  #          result.setAlpha(
+                  #              FloatValue
+                  #                  .newBuilder()
+                  #                  .setValue(((float) alpha) / denominator)
+                  #                  .build());
+                  #        }
+                  #        return resultBuilder.build();
+                  #      }
+                  #      // ...
+                  #
+                  # Example (iOS / Obj-C):
+                  #
+                  #      // ...
+                  #      static UIColor* fromProto(Color* protocolor) {
+                  #         float red = [protocolor red];
+                  #         float green = [protocolor green];
+                  #         float blue = [protocolor blue];
+                  #         FloatValue* alpha_wrapper = [protocolor alpha];
+                  #         float alpha = 1.0;
+                  #         if (alpha_wrapper != nil) {
+                  #           alpha = [alpha_wrapper value];
+                  #         }
+                  #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
+                  #      }
+                  #
+                  #      static Color* toProto(UIColor* color) {
+                  #          CGFloat red, green, blue, alpha;
+                  #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
+                  #            return nil;
+                  #          }
+                  #          Color* result = [Color alloc] init];
+                  #          [result setRed:red];
+                  #          [result setGreen:green];
+                  #          [result setBlue:blue];
+                  #          if (alpha <= 0.9999) {
+                  #            [result setAlpha:floatWrapperWithValue(alpha)];
+                  #          }
+                  #          [result autorelease];
+                  #          return result;
+                  #     }
+                  #     // ...
+                  #
+                  #  Example (JavaScript):
+                  #
+                  #     // ...
+                  #
+                  #     var protoToCssColor = function(rgb_color) {
+                  #        var redFrac = rgb_color.red || 0.0;
+                  #        var greenFrac = rgb_color.green || 0.0;
+                  #        var blueFrac = rgb_color.blue || 0.0;
+                  #        var red = Math.floor(redFrac * 255);
+                  #        var green = Math.floor(greenFrac * 255);
+                  #        var blue = Math.floor(blueFrac * 255);
+                  #
+                  #        if (!('alpha' in rgb_color)) {
+                  #           return rgbToCssColor_(red, green, blue);
+                  #        }
+                  #
+                  #        var alphaFrac = rgb_color.alpha.value || 0.0;
+                  #        var rgbParams = [red, green, blue].join(',');
+                  #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
+                  #     };
+                  #
+                  #     var rgbToCssColor_ = function(red, green, blue) {
+                  #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
+                  #       var hexString = rgbNumber.toString(16);
+                  #       var missingZeros = 6 - hexString.length;
+                  #       var resultBuilder = ['#'];
+                  #       for (var i = 0; i < missingZeros; i++) {
+                  #          resultBuilder.push('0');
+                  #       }
+                  #       resultBuilder.push(hexString);
+                  #       return resultBuilder.join('');
+                  #     };
+                  #
+                  #     // ...
+                "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+                "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
+                    # the final pixel color is defined by the equation:
+                    #
+                    #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
+                    #
+                    # This means that a value of 1.0 corresponds to a solid color, whereas
+                    # a value of 0.0 corresponds to a completely transparent color. This
+                    # uses a wrapper message rather than a simple float scalar so that it is
+                    # possible to distinguish between a default value and the value being unset.
+                    # If omitted, this color object is to be rendered as a solid color
+                    # (as if the alpha value had been explicitly given with a value of 1.0).
+                "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
+                "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
+              },
+            },
+            "bandedRangeId": 42, # The id of the banded range.
+          },
+        },
         "deleteFilterView": { # Deletes a particular filter view. # Deletes a filter view from a sheet.
           "filterId": 42, # The ID of the filter to delete.
         },
@@ -13057,7 +15320,13 @@
             "index": 42, # The index of the sheet within the spreadsheet.
                 # When adding or updating sheet properties, if this field
                 # is excluded then the sheet will be added or moved to the end
-                # of the sheet list.
+                # of the sheet list. When updating sheet indices or inserting
+                # sheets, movement is considered in "before the move" indexes.
+                # For example, if there were 3 sheets (S1, S2, S3) in order to
+                # move S1 ahead of S2 the index would have to be set to 2. A sheet
+                # index update request will be ignored if the requested index is
+                # identical to the sheets current index or if the requested new
+                # index is equal to the current sheet index + 1.
             "title": "A String", # The name of the sheet.
             "gridProperties": { # Properties of a grid. # Additional properties of the sheet if this sheet is a grid.
                 # (If the sheet is an object sheet, containing a chart or image, then
@@ -13389,6 +15658,6415 @@
 
     { # The reply for batch updating a spreadsheet.
     "spreadsheetId": "A String", # The spreadsheet the updates were applied to.
+    "updatedSpreadsheet": { # Resource that represents a spreadsheet. # The spreadsheet after updates were applied. This is only set if
+        # [BatchUpdateSpreadsheetRequest.include_spreadsheet_in_response] is `true`.
+      "spreadsheetId": "A String", # The ID of the spreadsheet.
+          # This field is read-only.
+      "namedRanges": [ # The named ranges defined in a spreadsheet.
+        { # A named range.
+          "namedRangeId": "A String", # The ID of the named range.
+          "range": { # A range on a sheet. # The range this represents.
+              # All indexes are zero-based.
+              # Indexes are half open, e.g the start index is inclusive
+              # and the end index is exclusive -- [start_index, end_index).
+              # Missing indexes indicate the range is unbounded on that side.
+              #
+              # For example, if `"Sheet1"` is sheet ID 0, then:
+              #
+              #   `Sheet1!A1:A1 == sheet_id: 0,
+              #                   start_row_index: 0, end_row_index: 1,
+              #                   start_column_index: 0, end_column_index: 1`
+              #
+              #   `Sheet1!A3:B4 == sheet_id: 0,
+              #                   start_row_index: 2, end_row_index: 4,
+              #                   start_column_index: 0, end_column_index: 2`
+              #
+              #   `Sheet1!A:B == sheet_id: 0,
+              #                 start_column_index: 0, end_column_index: 2`
+              #
+              #   `Sheet1!A5:B == sheet_id: 0,
+              #                  start_row_index: 4,
+              #                  start_column_index: 0, end_column_index: 2`
+              #
+              #   `Sheet1 == sheet_id:0`
+              #
+              # The start index must always be less than or equal to the end index.
+              # If the start index equals the end index, then the range is empty.
+              # Empty ranges are typically not meaningful and are usually rendered in the
+              # UI as `#REF!`.
+            "endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
+            "startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
+            "sheetId": 42, # The sheet this range is on.
+            "startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
+            "endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
+          },
+          "name": "A String", # The name of the named range.
+        },
+      ],
+      "properties": { # Properties of a spreadsheet. # Overall properties of a spreadsheet.
+        "locale": "A String", # The locale of the spreadsheet in one of the following formats:
+            #
+            # * an ISO 639-1 language code such as `en`
+            #
+            # * an ISO 639-2 language code such as `fil`, if no 639-1 code exists
+            #
+            # * a combination of the ISO language code and country code, such as `en_US`
+            #
+            # Note: when updating this field, not all locales/languages are supported.
+        "timeZone": "A String", # The time zone of the spreadsheet, in CLDR format such as
+            # `America/New_York`. If the time zone isn't recognized, this may
+            # be a custom time zone such as `GMT-07:00`.
+        "autoRecalc": "A String", # The amount of time to wait before volatile functions are recalculated.
+        "defaultFormat": { # The format of a cell. # The default format of all cells in the spreadsheet.
+            # CellData.effectiveFormat will not be set if the
+            # cell's format is equal to this default format.
+            # This field is read-only.
+          "numberFormat": { # The number format of a cell. # A format describing how number values should be represented to the user.
+            "pattern": "A String", # Pattern string used for formatting.  If not set, a default pattern based on
+                # the user's locale will be used if necessary for the given type.
+                # See the [Date and Number Formats guide](/sheets/guides/formats) for more
+                # information about the supported patterns.
+            "type": "A String", # The type of the number format.
+                # When writing, this field must be set.
+          },
+          "textDirection": "A String", # The direction of the text in the cell.
+          "padding": { # The amount of padding around the cell, in pixels. # The padding of the cell.
+              # When updating padding, every field must be specified.
+            "top": 42, # The top padding of the cell.
+            "right": 42, # The right padding of the cell.
+            "bottom": 42, # The bottom padding of the cell.
+            "left": 42, # The left padding of the cell.
+          },
+          "horizontalAlignment": "A String", # The horizontal alignment of the value in the cell.
+          "backgroundColor": { # Represents a color in the RGBA color space. This representation is designed # The background color of the cell.
+              # for simplicity of conversion to/from color representations in various
+              # languages over compactness; for example, the fields of this representation
+              # can be trivially provided to the constructor of "java.awt.Color" in Java; it
+              # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
+              # method in iOS; and, with just a little work, it can be easily formatted into
+              # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
+              #
+              # Example (Java):
+              #
+              #      import com.google.type.Color;
+              #
+              #      // ...
+              #      public static java.awt.Color fromProto(Color protocolor) {
+              #        float alpha = protocolor.hasAlpha()
+              #            ? protocolor.getAlpha().getValue()
+              #            : 1.0;
+              #
+              #        return new java.awt.Color(
+              #            protocolor.getRed(),
+              #            protocolor.getGreen(),
+              #            protocolor.getBlue(),
+              #            alpha);
+              #      }
+              #
+              #      public static Color toProto(java.awt.Color color) {
+              #        float red = (float) color.getRed();
+              #        float green = (float) color.getGreen();
+              #        float blue = (float) color.getBlue();
+              #        float denominator = 255.0;
+              #        Color.Builder resultBuilder =
+              #            Color
+              #                .newBuilder()
+              #                .setRed(red / denominator)
+              #                .setGreen(green / denominator)
+              #                .setBlue(blue / denominator);
+              #        int alpha = color.getAlpha();
+              #        if (alpha != 255) {
+              #          result.setAlpha(
+              #              FloatValue
+              #                  .newBuilder()
+              #                  .setValue(((float) alpha) / denominator)
+              #                  .build());
+              #        }
+              #        return resultBuilder.build();
+              #      }
+              #      // ...
+              #
+              # Example (iOS / Obj-C):
+              #
+              #      // ...
+              #      static UIColor* fromProto(Color* protocolor) {
+              #         float red = [protocolor red];
+              #         float green = [protocolor green];
+              #         float blue = [protocolor blue];
+              #         FloatValue* alpha_wrapper = [protocolor alpha];
+              #         float alpha = 1.0;
+              #         if (alpha_wrapper != nil) {
+              #           alpha = [alpha_wrapper value];
+              #         }
+              #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
+              #      }
+              #
+              #      static Color* toProto(UIColor* color) {
+              #          CGFloat red, green, blue, alpha;
+              #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
+              #            return nil;
+              #          }
+              #          Color* result = [Color alloc] init];
+              #          [result setRed:red];
+              #          [result setGreen:green];
+              #          [result setBlue:blue];
+              #          if (alpha <= 0.9999) {
+              #            [result setAlpha:floatWrapperWithValue(alpha)];
+              #          }
+              #          [result autorelease];
+              #          return result;
+              #     }
+              #     // ...
+              #
+              #  Example (JavaScript):
+              #
+              #     // ...
+              #
+              #     var protoToCssColor = function(rgb_color) {
+              #        var redFrac = rgb_color.red || 0.0;
+              #        var greenFrac = rgb_color.green || 0.0;
+              #        var blueFrac = rgb_color.blue || 0.0;
+              #        var red = Math.floor(redFrac * 255);
+              #        var green = Math.floor(greenFrac * 255);
+              #        var blue = Math.floor(blueFrac * 255);
+              #
+              #        if (!('alpha' in rgb_color)) {
+              #           return rgbToCssColor_(red, green, blue);
+              #        }
+              #
+              #        var alphaFrac = rgb_color.alpha.value || 0.0;
+              #        var rgbParams = [red, green, blue].join(',');
+              #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
+              #     };
+              #
+              #     var rgbToCssColor_ = function(red, green, blue) {
+              #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
+              #       var hexString = rgbNumber.toString(16);
+              #       var missingZeros = 6 - hexString.length;
+              #       var resultBuilder = ['#'];
+              #       for (var i = 0; i < missingZeros; i++) {
+              #          resultBuilder.push('0');
+              #       }
+              #       resultBuilder.push(hexString);
+              #       return resultBuilder.join('');
+              #     };
+              #
+              #     // ...
+            "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+            "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
+                # the final pixel color is defined by the equation:
+                #
+                #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
+                #
+                # This means that a value of 1.0 corresponds to a solid color, whereas
+                # a value of 0.0 corresponds to a completely transparent color. This
+                # uses a wrapper message rather than a simple float scalar so that it is
+                # possible to distinguish between a default value and the value being unset.
+                # If omitted, this color object is to be rendered as a solid color
+                # (as if the alpha value had been explicitly given with a value of 1.0).
+            "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
+            "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
+          },
+          "verticalAlignment": "A String", # The vertical alignment of the value in the cell.
+          "textFormat": { # The format of a run of text in a cell. # The format of the text in the cell (unless overridden by a format run).
+              # Absent values indicate that the field isn't specified.
+            "foregroundColor": { # Represents a color in the RGBA color space. This representation is designed # The foreground color of the text.
+                # for simplicity of conversion to/from color representations in various
+                # languages over compactness; for example, the fields of this representation
+                # can be trivially provided to the constructor of "java.awt.Color" in Java; it
+                # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
+                # method in iOS; and, with just a little work, it can be easily formatted into
+                # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
+                #
+                # Example (Java):
+                #
+                #      import com.google.type.Color;
+                #
+                #      // ...
+                #      public static java.awt.Color fromProto(Color protocolor) {
+                #        float alpha = protocolor.hasAlpha()
+                #            ? protocolor.getAlpha().getValue()
+                #            : 1.0;
+                #
+                #        return new java.awt.Color(
+                #            protocolor.getRed(),
+                #            protocolor.getGreen(),
+                #            protocolor.getBlue(),
+                #            alpha);
+                #      }
+                #
+                #      public static Color toProto(java.awt.Color color) {
+                #        float red = (float) color.getRed();
+                #        float green = (float) color.getGreen();
+                #        float blue = (float) color.getBlue();
+                #        float denominator = 255.0;
+                #        Color.Builder resultBuilder =
+                #            Color
+                #                .newBuilder()
+                #                .setRed(red / denominator)
+                #                .setGreen(green / denominator)
+                #                .setBlue(blue / denominator);
+                #        int alpha = color.getAlpha();
+                #        if (alpha != 255) {
+                #          result.setAlpha(
+                #              FloatValue
+                #                  .newBuilder()
+                #                  .setValue(((float) alpha) / denominator)
+                #                  .build());
+                #        }
+                #        return resultBuilder.build();
+                #      }
+                #      // ...
+                #
+                # Example (iOS / Obj-C):
+                #
+                #      // ...
+                #      static UIColor* fromProto(Color* protocolor) {
+                #         float red = [protocolor red];
+                #         float green = [protocolor green];
+                #         float blue = [protocolor blue];
+                #         FloatValue* alpha_wrapper = [protocolor alpha];
+                #         float alpha = 1.0;
+                #         if (alpha_wrapper != nil) {
+                #           alpha = [alpha_wrapper value];
+                #         }
+                #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
+                #      }
+                #
+                #      static Color* toProto(UIColor* color) {
+                #          CGFloat red, green, blue, alpha;
+                #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
+                #            return nil;
+                #          }
+                #          Color* result = [Color alloc] init];
+                #          [result setRed:red];
+                #          [result setGreen:green];
+                #          [result setBlue:blue];
+                #          if (alpha <= 0.9999) {
+                #            [result setAlpha:floatWrapperWithValue(alpha)];
+                #          }
+                #          [result autorelease];
+                #          return result;
+                #     }
+                #     // ...
+                #
+                #  Example (JavaScript):
+                #
+                #     // ...
+                #
+                #     var protoToCssColor = function(rgb_color) {
+                #        var redFrac = rgb_color.red || 0.0;
+                #        var greenFrac = rgb_color.green || 0.0;
+                #        var blueFrac = rgb_color.blue || 0.0;
+                #        var red = Math.floor(redFrac * 255);
+                #        var green = Math.floor(greenFrac * 255);
+                #        var blue = Math.floor(blueFrac * 255);
+                #
+                #        if (!('alpha' in rgb_color)) {
+                #           return rgbToCssColor_(red, green, blue);
+                #        }
+                #
+                #        var alphaFrac = rgb_color.alpha.value || 0.0;
+                #        var rgbParams = [red, green, blue].join(',');
+                #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
+                #     };
+                #
+                #     var rgbToCssColor_ = function(red, green, blue) {
+                #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
+                #       var hexString = rgbNumber.toString(16);
+                #       var missingZeros = 6 - hexString.length;
+                #       var resultBuilder = ['#'];
+                #       for (var i = 0; i < missingZeros; i++) {
+                #          resultBuilder.push('0');
+                #       }
+                #       resultBuilder.push(hexString);
+                #       return resultBuilder.join('');
+                #     };
+                #
+                #     // ...
+              "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+              "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
+                  # the final pixel color is defined by the equation:
+                  #
+                  #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
+                  #
+                  # This means that a value of 1.0 corresponds to a solid color, whereas
+                  # a value of 0.0 corresponds to a completely transparent color. This
+                  # uses a wrapper message rather than a simple float scalar so that it is
+                  # possible to distinguish between a default value and the value being unset.
+                  # If omitted, this color object is to be rendered as a solid color
+                  # (as if the alpha value had been explicitly given with a value of 1.0).
+              "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
+              "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
+            },
+            "bold": True or False, # True if the text is bold.
+            "strikethrough": True or False, # True if the text has a strikethrough.
+            "fontFamily": "A String", # The font family.
+            "fontSize": 42, # The size of the font.
+            "italic": True or False, # True if the text is italicized.
+            "underline": True or False, # True if the text is underlined.
+          },
+          "hyperlinkDisplayType": "A String", # How a hyperlink, if it exists, should be displayed in the cell.
+          "borders": { # The borders of the cell. # The borders of the cell.
+            "top": { # A border along a cell. # The top border of the cell.
+              "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
+                  # for simplicity of conversion to/from color representations in various
+                  # languages over compactness; for example, the fields of this representation
+                  # can be trivially provided to the constructor of "java.awt.Color" in Java; it
+                  # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
+                  # method in iOS; and, with just a little work, it can be easily formatted into
+                  # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
+                  #
+                  # Example (Java):
+                  #
+                  #      import com.google.type.Color;
+                  #
+                  #      // ...
+                  #      public static java.awt.Color fromProto(Color protocolor) {
+                  #        float alpha = protocolor.hasAlpha()
+                  #            ? protocolor.getAlpha().getValue()
+                  #            : 1.0;
+                  #
+                  #        return new java.awt.Color(
+                  #            protocolor.getRed(),
+                  #            protocolor.getGreen(),
+                  #            protocolor.getBlue(),
+                  #            alpha);
+                  #      }
+                  #
+                  #      public static Color toProto(java.awt.Color color) {
+                  #        float red = (float) color.getRed();
+                  #        float green = (float) color.getGreen();
+                  #        float blue = (float) color.getBlue();
+                  #        float denominator = 255.0;
+                  #        Color.Builder resultBuilder =
+                  #            Color
+                  #                .newBuilder()
+                  #                .setRed(red / denominator)
+                  #                .setGreen(green / denominator)
+                  #                .setBlue(blue / denominator);
+                  #        int alpha = color.getAlpha();
+                  #        if (alpha != 255) {
+                  #          result.setAlpha(
+                  #              FloatValue
+                  #                  .newBuilder()
+                  #                  .setValue(((float) alpha) / denominator)
+                  #                  .build());
+                  #        }
+                  #        return resultBuilder.build();
+                  #      }
+                  #      // ...
+                  #
+                  # Example (iOS / Obj-C):
+                  #
+                  #      // ...
+                  #      static UIColor* fromProto(Color* protocolor) {
+                  #         float red = [protocolor red];
+                  #         float green = [protocolor green];
+                  #         float blue = [protocolor blue];
+                  #         FloatValue* alpha_wrapper = [protocolor alpha];
+                  #         float alpha = 1.0;
+                  #         if (alpha_wrapper != nil) {
+                  #           alpha = [alpha_wrapper value];
+                  #         }
+                  #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
+                  #      }
+                  #
+                  #      static Color* toProto(UIColor* color) {
+                  #          CGFloat red, green, blue, alpha;
+                  #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
+                  #            return nil;
+                  #          }
+                  #          Color* result = [Color alloc] init];
+                  #          [result setRed:red];
+                  #          [result setGreen:green];
+                  #          [result setBlue:blue];
+                  #          if (alpha <= 0.9999) {
+                  #            [result setAlpha:floatWrapperWithValue(alpha)];
+                  #          }
+                  #          [result autorelease];
+                  #          return result;
+                  #     }
+                  #     // ...
+                  #
+                  #  Example (JavaScript):
+                  #
+                  #     // ...
+                  #
+                  #     var protoToCssColor = function(rgb_color) {
+                  #        var redFrac = rgb_color.red || 0.0;
+                  #        var greenFrac = rgb_color.green || 0.0;
+                  #        var blueFrac = rgb_color.blue || 0.0;
+                  #        var red = Math.floor(redFrac * 255);
+                  #        var green = Math.floor(greenFrac * 255);
+                  #        var blue = Math.floor(blueFrac * 255);
+                  #
+                  #        if (!('alpha' in rgb_color)) {
+                  #           return rgbToCssColor_(red, green, blue);
+                  #        }
+                  #
+                  #        var alphaFrac = rgb_color.alpha.value || 0.0;
+                  #        var rgbParams = [red, green, blue].join(',');
+                  #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
+                  #     };
+                  #
+                  #     var rgbToCssColor_ = function(red, green, blue) {
+                  #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
+                  #       var hexString = rgbNumber.toString(16);
+                  #       var missingZeros = 6 - hexString.length;
+                  #       var resultBuilder = ['#'];
+                  #       for (var i = 0; i < missingZeros; i++) {
+                  #          resultBuilder.push('0');
+                  #       }
+                  #       resultBuilder.push(hexString);
+                  #       return resultBuilder.join('');
+                  #     };
+                  #
+                  #     // ...
+                "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+                "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
+                    # the final pixel color is defined by the equation:
+                    #
+                    #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
+                    #
+                    # This means that a value of 1.0 corresponds to a solid color, whereas
+                    # a value of 0.0 corresponds to a completely transparent color. This
+                    # uses a wrapper message rather than a simple float scalar so that it is
+                    # possible to distinguish between a default value and the value being unset.
+                    # If omitted, this color object is to be rendered as a solid color
+                    # (as if the alpha value had been explicitly given with a value of 1.0).
+                "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
+                "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
+              },
+              "width": 42, # The width of the border, in pixels.
+                  # Deprecated; the width is determined by the "style" field.
+              "style": "A String", # The style of the border.
+            },
+            "right": { # A border along a cell. # The right border of the cell.
+              "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
+                  # for simplicity of conversion to/from color representations in various
+                  # languages over compactness; for example, the fields of this representation
+                  # can be trivially provided to the constructor of "java.awt.Color" in Java; it
+                  # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
+                  # method in iOS; and, with just a little work, it can be easily formatted into
+                  # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
+                  #
+                  # Example (Java):
+                  #
+                  #      import com.google.type.Color;
+                  #
+                  #      // ...
+                  #      public static java.awt.Color fromProto(Color protocolor) {
+                  #        float alpha = protocolor.hasAlpha()
+                  #            ? protocolor.getAlpha().getValue()
+                  #            : 1.0;
+                  #
+                  #        return new java.awt.Color(
+                  #            protocolor.getRed(),
+                  #            protocolor.getGreen(),
+                  #            protocolor.getBlue(),
+                  #            alpha);
+                  #      }
+                  #
+                  #      public static Color toProto(java.awt.Color color) {
+                  #        float red = (float) color.getRed();
+                  #        float green = (float) color.getGreen();
+                  #        float blue = (float) color.getBlue();
+                  #        float denominator = 255.0;
+                  #        Color.Builder resultBuilder =
+                  #            Color
+                  #                .newBuilder()
+                  #                .setRed(red / denominator)
+                  #                .setGreen(green / denominator)
+                  #                .setBlue(blue / denominator);
+                  #        int alpha = color.getAlpha();
+                  #        if (alpha != 255) {
+                  #          result.setAlpha(
+                  #              FloatValue
+                  #                  .newBuilder()
+                  #                  .setValue(((float) alpha) / denominator)
+                  #                  .build());
+                  #        }
+                  #        return resultBuilder.build();
+                  #      }
+                  #      // ...
+                  #
+                  # Example (iOS / Obj-C):
+                  #
+                  #      // ...
+                  #      static UIColor* fromProto(Color* protocolor) {
+                  #         float red = [protocolor red];
+                  #         float green = [protocolor green];
+                  #         float blue = [protocolor blue];
+                  #         FloatValue* alpha_wrapper = [protocolor alpha];
+                  #         float alpha = 1.0;
+                  #         if (alpha_wrapper != nil) {
+                  #           alpha = [alpha_wrapper value];
+                  #         }
+                  #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
+                  #      }
+                  #
+                  #      static Color* toProto(UIColor* color) {
+                  #          CGFloat red, green, blue, alpha;
+                  #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
+                  #            return nil;
+                  #          }
+                  #          Color* result = [Color alloc] init];
+                  #          [result setRed:red];
+                  #          [result setGreen:green];
+                  #          [result setBlue:blue];
+                  #          if (alpha <= 0.9999) {
+                  #            [result setAlpha:floatWrapperWithValue(alpha)];
+                  #          }
+                  #          [result autorelease];
+                  #          return result;
+                  #     }
+                  #     // ...
+                  #
+                  #  Example (JavaScript):
+                  #
+                  #     // ...
+                  #
+                  #     var protoToCssColor = function(rgb_color) {
+                  #        var redFrac = rgb_color.red || 0.0;
+                  #        var greenFrac = rgb_color.green || 0.0;
+                  #        var blueFrac = rgb_color.blue || 0.0;
+                  #        var red = Math.floor(redFrac * 255);
+                  #        var green = Math.floor(greenFrac * 255);
+                  #        var blue = Math.floor(blueFrac * 255);
+                  #
+                  #        if (!('alpha' in rgb_color)) {
+                  #           return rgbToCssColor_(red, green, blue);
+                  #        }
+                  #
+                  #        var alphaFrac = rgb_color.alpha.value || 0.0;
+                  #        var rgbParams = [red, green, blue].join(',');
+                  #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
+                  #     };
+                  #
+                  #     var rgbToCssColor_ = function(red, green, blue) {
+                  #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
+                  #       var hexString = rgbNumber.toString(16);
+                  #       var missingZeros = 6 - hexString.length;
+                  #       var resultBuilder = ['#'];
+                  #       for (var i = 0; i < missingZeros; i++) {
+                  #          resultBuilder.push('0');
+                  #       }
+                  #       resultBuilder.push(hexString);
+                  #       return resultBuilder.join('');
+                  #     };
+                  #
+                  #     // ...
+                "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+                "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
+                    # the final pixel color is defined by the equation:
+                    #
+                    #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
+                    #
+                    # This means that a value of 1.0 corresponds to a solid color, whereas
+                    # a value of 0.0 corresponds to a completely transparent color. This
+                    # uses a wrapper message rather than a simple float scalar so that it is
+                    # possible to distinguish between a default value and the value being unset.
+                    # If omitted, this color object is to be rendered as a solid color
+                    # (as if the alpha value had been explicitly given with a value of 1.0).
+                "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
+                "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
+              },
+              "width": 42, # The width of the border, in pixels.
+                  # Deprecated; the width is determined by the "style" field.
+              "style": "A String", # The style of the border.
+            },
+            "bottom": { # A border along a cell. # The bottom border of the cell.
+              "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
+                  # for simplicity of conversion to/from color representations in various
+                  # languages over compactness; for example, the fields of this representation
+                  # can be trivially provided to the constructor of "java.awt.Color" in Java; it
+                  # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
+                  # method in iOS; and, with just a little work, it can be easily formatted into
+                  # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
+                  #
+                  # Example (Java):
+                  #
+                  #      import com.google.type.Color;
+                  #
+                  #      // ...
+                  #      public static java.awt.Color fromProto(Color protocolor) {
+                  #        float alpha = protocolor.hasAlpha()
+                  #            ? protocolor.getAlpha().getValue()
+                  #            : 1.0;
+                  #
+                  #        return new java.awt.Color(
+                  #            protocolor.getRed(),
+                  #            protocolor.getGreen(),
+                  #            protocolor.getBlue(),
+                  #            alpha);
+                  #      }
+                  #
+                  #      public static Color toProto(java.awt.Color color) {
+                  #        float red = (float) color.getRed();
+                  #        float green = (float) color.getGreen();
+                  #        float blue = (float) color.getBlue();
+                  #        float denominator = 255.0;
+                  #        Color.Builder resultBuilder =
+                  #            Color
+                  #                .newBuilder()
+                  #                .setRed(red / denominator)
+                  #                .setGreen(green / denominator)
+                  #                .setBlue(blue / denominator);
+                  #        int alpha = color.getAlpha();
+                  #        if (alpha != 255) {
+                  #          result.setAlpha(
+                  #              FloatValue
+                  #                  .newBuilder()
+                  #                  .setValue(((float) alpha) / denominator)
+                  #                  .build());
+                  #        }
+                  #        return resultBuilder.build();
+                  #      }
+                  #      // ...
+                  #
+                  # Example (iOS / Obj-C):
+                  #
+                  #      // ...
+                  #      static UIColor* fromProto(Color* protocolor) {
+                  #         float red = [protocolor red];
+                  #         float green = [protocolor green];
+                  #         float blue = [protocolor blue];
+                  #         FloatValue* alpha_wrapper = [protocolor alpha];
+                  #         float alpha = 1.0;
+                  #         if (alpha_wrapper != nil) {
+                  #           alpha = [alpha_wrapper value];
+                  #         }
+                  #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
+                  #      }
+                  #
+                  #      static Color* toProto(UIColor* color) {
+                  #          CGFloat red, green, blue, alpha;
+                  #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
+                  #            return nil;
+                  #          }
+                  #          Color* result = [Color alloc] init];
+                  #          [result setRed:red];
+                  #          [result setGreen:green];
+                  #          [result setBlue:blue];
+                  #          if (alpha <= 0.9999) {
+                  #            [result setAlpha:floatWrapperWithValue(alpha)];
+                  #          }
+                  #          [result autorelease];
+                  #          return result;
+                  #     }
+                  #     // ...
+                  #
+                  #  Example (JavaScript):
+                  #
+                  #     // ...
+                  #
+                  #     var protoToCssColor = function(rgb_color) {
+                  #        var redFrac = rgb_color.red || 0.0;
+                  #        var greenFrac = rgb_color.green || 0.0;
+                  #        var blueFrac = rgb_color.blue || 0.0;
+                  #        var red = Math.floor(redFrac * 255);
+                  #        var green = Math.floor(greenFrac * 255);
+                  #        var blue = Math.floor(blueFrac * 255);
+                  #
+                  #        if (!('alpha' in rgb_color)) {
+                  #           return rgbToCssColor_(red, green, blue);
+                  #        }
+                  #
+                  #        var alphaFrac = rgb_color.alpha.value || 0.0;
+                  #        var rgbParams = [red, green, blue].join(',');
+                  #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
+                  #     };
+                  #
+                  #     var rgbToCssColor_ = function(red, green, blue) {
+                  #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
+                  #       var hexString = rgbNumber.toString(16);
+                  #       var missingZeros = 6 - hexString.length;
+                  #       var resultBuilder = ['#'];
+                  #       for (var i = 0; i < missingZeros; i++) {
+                  #          resultBuilder.push('0');
+                  #       }
+                  #       resultBuilder.push(hexString);
+                  #       return resultBuilder.join('');
+                  #     };
+                  #
+                  #     // ...
+                "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+                "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
+                    # the final pixel color is defined by the equation:
+                    #
+                    #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
+                    #
+                    # This means that a value of 1.0 corresponds to a solid color, whereas
+                    # a value of 0.0 corresponds to a completely transparent color. This
+                    # uses a wrapper message rather than a simple float scalar so that it is
+                    # possible to distinguish between a default value and the value being unset.
+                    # If omitted, this color object is to be rendered as a solid color
+                    # (as if the alpha value had been explicitly given with a value of 1.0).
+                "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
+                "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
+              },
+              "width": 42, # The width of the border, in pixels.
+                  # Deprecated; the width is determined by the "style" field.
+              "style": "A String", # The style of the border.
+            },
+            "left": { # A border along a cell. # The left border of the cell.
+              "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
+                  # for simplicity of conversion to/from color representations in various
+                  # languages over compactness; for example, the fields of this representation
+                  # can be trivially provided to the constructor of "java.awt.Color" in Java; it
+                  # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
+                  # method in iOS; and, with just a little work, it can be easily formatted into
+                  # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
+                  #
+                  # Example (Java):
+                  #
+                  #      import com.google.type.Color;
+                  #
+                  #      // ...
+                  #      public static java.awt.Color fromProto(Color protocolor) {
+                  #        float alpha = protocolor.hasAlpha()
+                  #            ? protocolor.getAlpha().getValue()
+                  #            : 1.0;
+                  #
+                  #        return new java.awt.Color(
+                  #            protocolor.getRed(),
+                  #            protocolor.getGreen(),
+                  #            protocolor.getBlue(),
+                  #            alpha);
+                  #      }
+                  #
+                  #      public static Color toProto(java.awt.Color color) {
+                  #        float red = (float) color.getRed();
+                  #        float green = (float) color.getGreen();
+                  #        float blue = (float) color.getBlue();
+                  #        float denominator = 255.0;
+                  #        Color.Builder resultBuilder =
+                  #            Color
+                  #                .newBuilder()
+                  #                .setRed(red / denominator)
+                  #                .setGreen(green / denominator)
+                  #                .setBlue(blue / denominator);
+                  #        int alpha = color.getAlpha();
+                  #        if (alpha != 255) {
+                  #          result.setAlpha(
+                  #              FloatValue
+                  #                  .newBuilder()
+                  #                  .setValue(((float) alpha) / denominator)
+                  #                  .build());
+                  #        }
+                  #        return resultBuilder.build();
+                  #      }
+                  #      // ...
+                  #
+                  # Example (iOS / Obj-C):
+                  #
+                  #      // ...
+                  #      static UIColor* fromProto(Color* protocolor) {
+                  #         float red = [protocolor red];
+                  #         float green = [protocolor green];
+                  #         float blue = [protocolor blue];
+                  #         FloatValue* alpha_wrapper = [protocolor alpha];
+                  #         float alpha = 1.0;
+                  #         if (alpha_wrapper != nil) {
+                  #           alpha = [alpha_wrapper value];
+                  #         }
+                  #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
+                  #      }
+                  #
+                  #      static Color* toProto(UIColor* color) {
+                  #          CGFloat red, green, blue, alpha;
+                  #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
+                  #            return nil;
+                  #          }
+                  #          Color* result = [Color alloc] init];
+                  #          [result setRed:red];
+                  #          [result setGreen:green];
+                  #          [result setBlue:blue];
+                  #          if (alpha <= 0.9999) {
+                  #            [result setAlpha:floatWrapperWithValue(alpha)];
+                  #          }
+                  #          [result autorelease];
+                  #          return result;
+                  #     }
+                  #     // ...
+                  #
+                  #  Example (JavaScript):
+                  #
+                  #     // ...
+                  #
+                  #     var protoToCssColor = function(rgb_color) {
+                  #        var redFrac = rgb_color.red || 0.0;
+                  #        var greenFrac = rgb_color.green || 0.0;
+                  #        var blueFrac = rgb_color.blue || 0.0;
+                  #        var red = Math.floor(redFrac * 255);
+                  #        var green = Math.floor(greenFrac * 255);
+                  #        var blue = Math.floor(blueFrac * 255);
+                  #
+                  #        if (!('alpha' in rgb_color)) {
+                  #           return rgbToCssColor_(red, green, blue);
+                  #        }
+                  #
+                  #        var alphaFrac = rgb_color.alpha.value || 0.0;
+                  #        var rgbParams = [red, green, blue].join(',');
+                  #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
+                  #     };
+                  #
+                  #     var rgbToCssColor_ = function(red, green, blue) {
+                  #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
+                  #       var hexString = rgbNumber.toString(16);
+                  #       var missingZeros = 6 - hexString.length;
+                  #       var resultBuilder = ['#'];
+                  #       for (var i = 0; i < missingZeros; i++) {
+                  #          resultBuilder.push('0');
+                  #       }
+                  #       resultBuilder.push(hexString);
+                  #       return resultBuilder.join('');
+                  #     };
+                  #
+                  #     // ...
+                "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+                "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
+                    # the final pixel color is defined by the equation:
+                    #
+                    #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
+                    #
+                    # This means that a value of 1.0 corresponds to a solid color, whereas
+                    # a value of 0.0 corresponds to a completely transparent color. This
+                    # uses a wrapper message rather than a simple float scalar so that it is
+                    # possible to distinguish between a default value and the value being unset.
+                    # If omitted, this color object is to be rendered as a solid color
+                    # (as if the alpha value had been explicitly given with a value of 1.0).
+                "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
+                "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
+              },
+              "width": 42, # The width of the border, in pixels.
+                  # Deprecated; the width is determined by the "style" field.
+              "style": "A String", # The style of the border.
+            },
+          },
+          "wrapStrategy": "A String", # The wrap strategy for the value in the cell.
+        },
+        "title": "A String", # The title of the spreadsheet.
+      },
+      "sheets": [ # The sheets that are part of a spreadsheet.
+        { # A sheet in a spreadsheet.
+          "conditionalFormats": [ # The conditional format rules in this sheet.
+            { # A rule describing a conditional format.
+              "ranges": [ # The ranges that will be formatted if the condition is true.
+                  # All the ranges must be on the same grid.
+                { # A range on a sheet.
+                    # All indexes are zero-based.
+                    # Indexes are half open, e.g the start index is inclusive
+                    # and the end index is exclusive -- [start_index, end_index).
+                    # Missing indexes indicate the range is unbounded on that side.
+                    #
+                    # For example, if `"Sheet1"` is sheet ID 0, then:
+                    #
+                    #   `Sheet1!A1:A1 == sheet_id: 0,
+                    #                   start_row_index: 0, end_row_index: 1,
+                    #                   start_column_index: 0, end_column_index: 1`
+                    #
+                    #   `Sheet1!A3:B4 == sheet_id: 0,
+                    #                   start_row_index: 2, end_row_index: 4,
+                    #                   start_column_index: 0, end_column_index: 2`
+                    #
+                    #   `Sheet1!A:B == sheet_id: 0,
+                    #                 start_column_index: 0, end_column_index: 2`
+                    #
+                    #   `Sheet1!A5:B == sheet_id: 0,
+                    #                  start_row_index: 4,
+                    #                  start_column_index: 0, end_column_index: 2`
+                    #
+                    #   `Sheet1 == sheet_id:0`
+                    #
+                    # The start index must always be less than or equal to the end index.
+                    # If the start index equals the end index, then the range is empty.
+                    # Empty ranges are typically not meaningful and are usually rendered in the
+                    # UI as `#REF!`.
+                  "endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
+                  "startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
+                  "sheetId": 42, # The sheet this range is on.
+                  "startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
+                  "endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
+                },
+              ],
+              "booleanRule": { # A rule that may or may not match, depending on the condition. # The formatting is either "on" or "off" according to the rule.
+                "condition": { # A condition that can evaluate to true or false. # The condition of the rule. If the condition evaluates to true,
+                    # the format will be applied.
+                    # BooleanConditions are used by conditional formatting,
+                    # data validation, and the criteria in filters.
+                  "type": "A String", # The type of condition.
+                  "values": [ # The values of the condition. The number of supported values depends
+                      # on the condition type.  Some support zero values,
+                      # others one or two values,
+                      # and ConditionType.ONE_OF_LIST supports an arbitrary number of values.
+                    { # The value of the condition.
+                      "relativeDate": "A String", # A relative date (based on the current date).
+                          # Valid only if the type is
+                          # DATE_BEFORE,
+                          # DATE_AFTER,
+                          # DATE_ON_OR_BEFORE or
+                          # DATE_ON_OR_AFTER.
+                          #
+                          # Relative dates are not supported in data validation.
+                          # They are supported only in conditional formatting and
+                          # conditional filters.
+                      "userEnteredValue": "A String", # A value the condition is based on.
+                          # The value will be parsed as if the user typed into a cell.
+                          # Formulas are supported (and must begin with an `=`).
+                    },
+                  ],
+                },
+                "format": { # The format of a cell. # The format to apply.
+                    # Conditional formatting can only apply a subset of formatting:
+                    # bold, italic,
+                    # strikethrough,
+                    # foreground color &
+                    # background color.
+                  "numberFormat": { # The number format of a cell. # A format describing how number values should be represented to the user.
+                    "pattern": "A String", # Pattern string used for formatting.  If not set, a default pattern based on
+                        # the user's locale will be used if necessary for the given type.
+                        # See the [Date and Number Formats guide](/sheets/guides/formats) for more
+                        # information about the supported patterns.
+                    "type": "A String", # The type of the number format.
+                        # When writing, this field must be set.
+                  },
+                  "textDirection": "A String", # The direction of the text in the cell.
+                  "padding": { # The amount of padding around the cell, in pixels. # The padding of the cell.
+                      # When updating padding, every field must be specified.
+                    "top": 42, # The top padding of the cell.
+                    "right": 42, # The right padding of the cell.
+                    "bottom": 42, # The bottom padding of the cell.
+                    "left": 42, # The left padding of the cell.
+                  },
+                  "horizontalAlignment": "A String", # The horizontal alignment of the value in the cell.
+                  "backgroundColor": { # Represents a color in the RGBA color space. This representation is designed # The background color of the cell.
+                      # for simplicity of conversion to/from color representations in various
+                      # languages over compactness; for example, the fields of this representation
+                      # can be trivially provided to the constructor of "java.awt.Color" in Java; it
+                      # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
+                      # method in iOS; and, with just a little work, it can be easily formatted into
+                      # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
+                      #
+                      # Example (Java):
+                      #
+                      #      import com.google.type.Color;
+                      #
+                      #      // ...
+                      #      public static java.awt.Color fromProto(Color protocolor) {
+                      #        float alpha = protocolor.hasAlpha()
+                      #            ? protocolor.getAlpha().getValue()
+                      #            : 1.0;
+                      #
+                      #        return new java.awt.Color(
+                      #            protocolor.getRed(),
+                      #            protocolor.getGreen(),
+                      #            protocolor.getBlue(),
+                      #            alpha);
+                      #      }
+                      #
+                      #      public static Color toProto(java.awt.Color color) {
+                      #        float red = (float) color.getRed();
+                      #        float green = (float) color.getGreen();
+                      #        float blue = (float) color.getBlue();
+                      #        float denominator = 255.0;
+                      #        Color.Builder resultBuilder =
+                      #            Color
+                      #                .newBuilder()
+                      #                .setRed(red / denominator)
+                      #                .setGreen(green / denominator)
+                      #                .setBlue(blue / denominator);
+                      #        int alpha = color.getAlpha();
+                      #        if (alpha != 255) {
+                      #          result.setAlpha(
+                      #              FloatValue
+                      #                  .newBuilder()
+                      #                  .setValue(((float) alpha) / denominator)
+                      #                  .build());
+                      #        }
+                      #        return resultBuilder.build();
+                      #      }
+                      #      // ...
+                      #
+                      # Example (iOS / Obj-C):
+                      #
+                      #      // ...
+                      #      static UIColor* fromProto(Color* protocolor) {
+                      #         float red = [protocolor red];
+                      #         float green = [protocolor green];
+                      #         float blue = [protocolor blue];
+                      #         FloatValue* alpha_wrapper = [protocolor alpha];
+                      #         float alpha = 1.0;
+                      #         if (alpha_wrapper != nil) {
+                      #           alpha = [alpha_wrapper value];
+                      #         }
+                      #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
+                      #      }
+                      #
+                      #      static Color* toProto(UIColor* color) {
+                      #          CGFloat red, green, blue, alpha;
+                      #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
+                      #            return nil;
+                      #          }
+                      #          Color* result = [Color alloc] init];
+                      #          [result setRed:red];
+                      #          [result setGreen:green];
+                      #          [result setBlue:blue];
+                      #          if (alpha <= 0.9999) {
+                      #            [result setAlpha:floatWrapperWithValue(alpha)];
+                      #          }
+                      #          [result autorelease];
+                      #          return result;
+                      #     }
+                      #     // ...
+                      #
+                      #  Example (JavaScript):
+                      #
+                      #     // ...
+                      #
+                      #     var protoToCssColor = function(rgb_color) {
+                      #        var redFrac = rgb_color.red || 0.0;
+                      #        var greenFrac = rgb_color.green || 0.0;
+                      #        var blueFrac = rgb_color.blue || 0.0;
+                      #        var red = Math.floor(redFrac * 255);
+                      #        var green = Math.floor(greenFrac * 255);
+                      #        var blue = Math.floor(blueFrac * 255);
+                      #
+                      #        if (!('alpha' in rgb_color)) {
+                      #           return rgbToCssColor_(red, green, blue);
+                      #        }
+                      #
+                      #        var alphaFrac = rgb_color.alpha.value || 0.0;
+                      #        var rgbParams = [red, green, blue].join(',');
+                      #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
+                      #     };
+                      #
+                      #     var rgbToCssColor_ = function(red, green, blue) {
+                      #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
+                      #       var hexString = rgbNumber.toString(16);
+                      #       var missingZeros = 6 - hexString.length;
+                      #       var resultBuilder = ['#'];
+                      #       for (var i = 0; i < missingZeros; i++) {
+                      #          resultBuilder.push('0');
+                      #       }
+                      #       resultBuilder.push(hexString);
+                      #       return resultBuilder.join('');
+                      #     };
+                      #
+                      #     // ...
+                    "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+                    "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
+                        # the final pixel color is defined by the equation:
+                        #
+                        #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
+                        #
+                        # This means that a value of 1.0 corresponds to a solid color, whereas
+                        # a value of 0.0 corresponds to a completely transparent color. This
+                        # uses a wrapper message rather than a simple float scalar so that it is
+                        # possible to distinguish between a default value and the value being unset.
+                        # If omitted, this color object is to be rendered as a solid color
+                        # (as if the alpha value had been explicitly given with a value of 1.0).
+                    "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
+                    "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
+                  },
+                  "verticalAlignment": "A String", # The vertical alignment of the value in the cell.
+                  "textFormat": { # The format of a run of text in a cell. # The format of the text in the cell (unless overridden by a format run).
+                      # Absent values indicate that the field isn't specified.
+                    "foregroundColor": { # Represents a color in the RGBA color space. This representation is designed # The foreground color of the text.
+                        # for simplicity of conversion to/from color representations in various
+                        # languages over compactness; for example, the fields of this representation
+                        # can be trivially provided to the constructor of "java.awt.Color" in Java; it
+                        # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
+                        # method in iOS; and, with just a little work, it can be easily formatted into
+                        # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
+                        #
+                        # Example (Java):
+                        #
+                        #      import com.google.type.Color;
+                        #
+                        #      // ...
+                        #      public static java.awt.Color fromProto(Color protocolor) {
+                        #        float alpha = protocolor.hasAlpha()
+                        #            ? protocolor.getAlpha().getValue()
+                        #            : 1.0;
+                        #
+                        #        return new java.awt.Color(
+                        #            protocolor.getRed(),
+                        #            protocolor.getGreen(),
+                        #            protocolor.getBlue(),
+                        #            alpha);
+                        #      }
+                        #
+                        #      public static Color toProto(java.awt.Color color) {
+                        #        float red = (float) color.getRed();
+                        #        float green = (float) color.getGreen();
+                        #        float blue = (float) color.getBlue();
+                        #        float denominator = 255.0;
+                        #        Color.Builder resultBuilder =
+                        #            Color
+                        #                .newBuilder()
+                        #                .setRed(red / denominator)
+                        #                .setGreen(green / denominator)
+                        #                .setBlue(blue / denominator);
+                        #        int alpha = color.getAlpha();
+                        #        if (alpha != 255) {
+                        #          result.setAlpha(
+                        #              FloatValue
+                        #                  .newBuilder()
+                        #                  .setValue(((float) alpha) / denominator)
+                        #                  .build());
+                        #        }
+                        #        return resultBuilder.build();
+                        #      }
+                        #      // ...
+                        #
+                        # Example (iOS / Obj-C):
+                        #
+                        #      // ...
+                        #      static UIColor* fromProto(Color* protocolor) {
+                        #         float red = [protocolor red];
+                        #         float green = [protocolor green];
+                        #         float blue = [protocolor blue];
+                        #         FloatValue* alpha_wrapper = [protocolor alpha];
+                        #         float alpha = 1.0;
+                        #         if (alpha_wrapper != nil) {
+                        #           alpha = [alpha_wrapper value];
+                        #         }
+                        #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
+                        #      }
+                        #
+                        #      static Color* toProto(UIColor* color) {
+                        #          CGFloat red, green, blue, alpha;
+                        #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
+                        #            return nil;
+                        #          }
+                        #          Color* result = [Color alloc] init];
+                        #          [result setRed:red];
+                        #          [result setGreen:green];
+                        #          [result setBlue:blue];
+                        #          if (alpha <= 0.9999) {
+                        #            [result setAlpha:floatWrapperWithValue(alpha)];
+                        #          }
+                        #          [result autorelease];
+                        #          return result;
+                        #     }
+                        #     // ...
+                        #
+                        #  Example (JavaScript):
+                        #
+                        #     // ...
+                        #
+                        #     var protoToCssColor = function(rgb_color) {
+                        #        var redFrac = rgb_color.red || 0.0;
+                        #        var greenFrac = rgb_color.green || 0.0;
+                        #        var blueFrac = rgb_color.blue || 0.0;
+                        #        var red = Math.floor(redFrac * 255);
+                        #        var green = Math.floor(greenFrac * 255);
+                        #        var blue = Math.floor(blueFrac * 255);
+                        #
+                        #        if (!('alpha' in rgb_color)) {
+                        #           return rgbToCssColor_(red, green, blue);
+                        #        }
+                        #
+                        #        var alphaFrac = rgb_color.alpha.value || 0.0;
+                        #        var rgbParams = [red, green, blue].join(',');
+                        #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
+                        #     };
+                        #
+                        #     var rgbToCssColor_ = function(red, green, blue) {
+                        #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
+                        #       var hexString = rgbNumber.toString(16);
+                        #       var missingZeros = 6 - hexString.length;
+                        #       var resultBuilder = ['#'];
+                        #       for (var i = 0; i < missingZeros; i++) {
+                        #          resultBuilder.push('0');
+                        #       }
+                        #       resultBuilder.push(hexString);
+                        #       return resultBuilder.join('');
+                        #     };
+                        #
+                        #     // ...
+                      "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+                      "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
+                          # the final pixel color is defined by the equation:
+                          #
+                          #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
+                          #
+                          # This means that a value of 1.0 corresponds to a solid color, whereas
+                          # a value of 0.0 corresponds to a completely transparent color. This
+                          # uses a wrapper message rather than a simple float scalar so that it is
+                          # possible to distinguish between a default value and the value being unset.
+                          # If omitted, this color object is to be rendered as a solid color
+                          # (as if the alpha value had been explicitly given with a value of 1.0).
+                      "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
+                      "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
+                    },
+                    "bold": True or False, # True if the text is bold.
+                    "strikethrough": True or False, # True if the text has a strikethrough.
+                    "fontFamily": "A String", # The font family.
+                    "fontSize": 42, # The size of the font.
+                    "italic": True or False, # True if the text is italicized.
+                    "underline": True or False, # True if the text is underlined.
+                  },
+                  "hyperlinkDisplayType": "A String", # How a hyperlink, if it exists, should be displayed in the cell.
+                  "borders": { # The borders of the cell. # The borders of the cell.
+                    "top": { # A border along a cell. # The top border of the cell.
+                      "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
+                          # for simplicity of conversion to/from color representations in various
+                          # languages over compactness; for example, the fields of this representation
+                          # can be trivially provided to the constructor of "java.awt.Color" in Java; it
+                          # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
+                          # method in iOS; and, with just a little work, it can be easily formatted into
+                          # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
+                          #
+                          # Example (Java):
+                          #
+                          #      import com.google.type.Color;
+                          #
+                          #      // ...
+                          #      public static java.awt.Color fromProto(Color protocolor) {
+                          #        float alpha = protocolor.hasAlpha()
+                          #            ? protocolor.getAlpha().getValue()
+                          #            : 1.0;
+                          #
+                          #        return new java.awt.Color(
+                          #            protocolor.getRed(),
+                          #            protocolor.getGreen(),
+                          #            protocolor.getBlue(),
+                          #            alpha);
+                          #      }
+                          #
+                          #      public static Color toProto(java.awt.Color color) {
+                          #        float red = (float) color.getRed();
+                          #        float green = (float) color.getGreen();
+                          #        float blue = (float) color.getBlue();
+                          #        float denominator = 255.0;
+                          #        Color.Builder resultBuilder =
+                          #            Color
+                          #                .newBuilder()
+                          #                .setRed(red / denominator)
+                          #                .setGreen(green / denominator)
+                          #                .setBlue(blue / denominator);
+                          #        int alpha = color.getAlpha();
+                          #        if (alpha != 255) {
+                          #          result.setAlpha(
+                          #              FloatValue
+                          #                  .newBuilder()
+                          #                  .setValue(((float) alpha) / denominator)
+                          #                  .build());
+                          #        }
+                          #        return resultBuilder.build();
+                          #      }
+                          #      // ...
+                          #
+                          # Example (iOS / Obj-C):
+                          #
+                          #      // ...
+                          #      static UIColor* fromProto(Color* protocolor) {
+                          #         float red = [protocolor red];
+                          #         float green = [protocolor green];
+                          #         float blue = [protocolor blue];
+                          #         FloatValue* alpha_wrapper = [protocolor alpha];
+                          #         float alpha = 1.0;
+                          #         if (alpha_wrapper != nil) {
+                          #           alpha = [alpha_wrapper value];
+                          #         }
+                          #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
+                          #      }
+                          #
+                          #      static Color* toProto(UIColor* color) {
+                          #          CGFloat red, green, blue, alpha;
+                          #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
+                          #            return nil;
+                          #          }
+                          #          Color* result = [Color alloc] init];
+                          #          [result setRed:red];
+                          #          [result setGreen:green];
+                          #          [result setBlue:blue];
+                          #          if (alpha <= 0.9999) {
+                          #            [result setAlpha:floatWrapperWithValue(alpha)];
+                          #          }
+                          #          [result autorelease];
+                          #          return result;
+                          #     }
+                          #     // ...
+                          #
+                          #  Example (JavaScript):
+                          #
+                          #     // ...
+                          #
+                          #     var protoToCssColor = function(rgb_color) {
+                          #        var redFrac = rgb_color.red || 0.0;
+                          #        var greenFrac = rgb_color.green || 0.0;
+                          #        var blueFrac = rgb_color.blue || 0.0;
+                          #        var red = Math.floor(redFrac * 255);
+                          #        var green = Math.floor(greenFrac * 255);
+                          #        var blue = Math.floor(blueFrac * 255);
+                          #
+                          #        if (!('alpha' in rgb_color)) {
+                          #           return rgbToCssColor_(red, green, blue);
+                          #        }
+                          #
+                          #        var alphaFrac = rgb_color.alpha.value || 0.0;
+                          #        var rgbParams = [red, green, blue].join(',');
+                          #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
+                          #     };
+                          #
+                          #     var rgbToCssColor_ = function(red, green, blue) {
+                          #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
+                          #       var hexString = rgbNumber.toString(16);
+                          #       var missingZeros = 6 - hexString.length;
+                          #       var resultBuilder = ['#'];
+                          #       for (var i = 0; i < missingZeros; i++) {
+                          #          resultBuilder.push('0');
+                          #       }
+                          #       resultBuilder.push(hexString);
+                          #       return resultBuilder.join('');
+                          #     };
+                          #
+                          #     // ...
+                        "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+                        "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
+                            # the final pixel color is defined by the equation:
+                            #
+                            #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
+                            #
+                            # This means that a value of 1.0 corresponds to a solid color, whereas
+                            # a value of 0.0 corresponds to a completely transparent color. This
+                            # uses a wrapper message rather than a simple float scalar so that it is
+                            # possible to distinguish between a default value and the value being unset.
+                            # If omitted, this color object is to be rendered as a solid color
+                            # (as if the alpha value had been explicitly given with a value of 1.0).
+                        "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
+                        "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
+                      },
+                      "width": 42, # The width of the border, in pixels.
+                          # Deprecated; the width is determined by the "style" field.
+                      "style": "A String", # The style of the border.
+                    },
+                    "right": { # A border along a cell. # The right border of the cell.
+                      "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
+                          # for simplicity of conversion to/from color representations in various
+                          # languages over compactness; for example, the fields of this representation
+                          # can be trivially provided to the constructor of "java.awt.Color" in Java; it
+                          # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
+                          # method in iOS; and, with just a little work, it can be easily formatted into
+                          # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
+                          #
+                          # Example (Java):
+                          #
+                          #      import com.google.type.Color;
+                          #
+                          #      // ...
+                          #      public static java.awt.Color fromProto(Color protocolor) {
+                          #        float alpha = protocolor.hasAlpha()
+                          #            ? protocolor.getAlpha().getValue()
+                          #            : 1.0;
+                          #
+                          #        return new java.awt.Color(
+                          #            protocolor.getRed(),
+                          #            protocolor.getGreen(),
+                          #            protocolor.getBlue(),
+                          #            alpha);
+                          #      }
+                          #
+                          #      public static Color toProto(java.awt.Color color) {
+                          #        float red = (float) color.getRed();
+                          #        float green = (float) color.getGreen();
+                          #        float blue = (float) color.getBlue();
+                          #        float denominator = 255.0;
+                          #        Color.Builder resultBuilder =
+                          #            Color
+                          #                .newBuilder()
+                          #                .setRed(red / denominator)
+                          #                .setGreen(green / denominator)
+                          #                .setBlue(blue / denominator);
+                          #        int alpha = color.getAlpha();
+                          #        if (alpha != 255) {
+                          #          result.setAlpha(
+                          #              FloatValue
+                          #                  .newBuilder()
+                          #                  .setValue(((float) alpha) / denominator)
+                          #                  .build());
+                          #        }
+                          #        return resultBuilder.build();
+                          #      }
+                          #      // ...
+                          #
+                          # Example (iOS / Obj-C):
+                          #
+                          #      // ...
+                          #      static UIColor* fromProto(Color* protocolor) {
+                          #         float red = [protocolor red];
+                          #         float green = [protocolor green];
+                          #         float blue = [protocolor blue];
+                          #         FloatValue* alpha_wrapper = [protocolor alpha];
+                          #         float alpha = 1.0;
+                          #         if (alpha_wrapper != nil) {
+                          #           alpha = [alpha_wrapper value];
+                          #         }
+                          #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
+                          #      }
+                          #
+                          #      static Color* toProto(UIColor* color) {
+                          #          CGFloat red, green, blue, alpha;
+                          #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
+                          #            return nil;
+                          #          }
+                          #          Color* result = [Color alloc] init];
+                          #          [result setRed:red];
+                          #          [result setGreen:green];
+                          #          [result setBlue:blue];
+                          #          if (alpha <= 0.9999) {
+                          #            [result setAlpha:floatWrapperWithValue(alpha)];
+                          #          }
+                          #          [result autorelease];
+                          #          return result;
+                          #     }
+                          #     // ...
+                          #
+                          #  Example (JavaScript):
+                          #
+                          #     // ...
+                          #
+                          #     var protoToCssColor = function(rgb_color) {
+                          #        var redFrac = rgb_color.red || 0.0;
+                          #        var greenFrac = rgb_color.green || 0.0;
+                          #        var blueFrac = rgb_color.blue || 0.0;
+                          #        var red = Math.floor(redFrac * 255);
+                          #        var green = Math.floor(greenFrac * 255);
+                          #        var blue = Math.floor(blueFrac * 255);
+                          #
+                          #        if (!('alpha' in rgb_color)) {
+                          #           return rgbToCssColor_(red, green, blue);
+                          #        }
+                          #
+                          #        var alphaFrac = rgb_color.alpha.value || 0.0;
+                          #        var rgbParams = [red, green, blue].join(',');
+                          #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
+                          #     };
+                          #
+                          #     var rgbToCssColor_ = function(red, green, blue) {
+                          #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
+                          #       var hexString = rgbNumber.toString(16);
+                          #       var missingZeros = 6 - hexString.length;
+                          #       var resultBuilder = ['#'];
+                          #       for (var i = 0; i < missingZeros; i++) {
+                          #          resultBuilder.push('0');
+                          #       }
+                          #       resultBuilder.push(hexString);
+                          #       return resultBuilder.join('');
+                          #     };
+                          #
+                          #     // ...
+                        "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+                        "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
+                            # the final pixel color is defined by the equation:
+                            #
+                            #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
+                            #
+                            # This means that a value of 1.0 corresponds to a solid color, whereas
+                            # a value of 0.0 corresponds to a completely transparent color. This
+                            # uses a wrapper message rather than a simple float scalar so that it is
+                            # possible to distinguish between a default value and the value being unset.
+                            # If omitted, this color object is to be rendered as a solid color
+                            # (as if the alpha value had been explicitly given with a value of 1.0).
+                        "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
+                        "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
+                      },
+                      "width": 42, # The width of the border, in pixels.
+                          # Deprecated; the width is determined by the "style" field.
+                      "style": "A String", # The style of the border.
+                    },
+                    "bottom": { # A border along a cell. # The bottom border of the cell.
+                      "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
+                          # for simplicity of conversion to/from color representations in various
+                          # languages over compactness; for example, the fields of this representation
+                          # can be trivially provided to the constructor of "java.awt.Color" in Java; it
+                          # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
+                          # method in iOS; and, with just a little work, it can be easily formatted into
+                          # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
+                          #
+                          # Example (Java):
+                          #
+                          #      import com.google.type.Color;
+                          #
+                          #      // ...
+                          #      public static java.awt.Color fromProto(Color protocolor) {
+                          #        float alpha = protocolor.hasAlpha()
+                          #            ? protocolor.getAlpha().getValue()
+                          #            : 1.0;
+                          #
+                          #        return new java.awt.Color(
+                          #            protocolor.getRed(),
+                          #            protocolor.getGreen(),
+                          #            protocolor.getBlue(),
+                          #            alpha);
+                          #      }
+                          #
+                          #      public static Color toProto(java.awt.Color color) {
+                          #        float red = (float) color.getRed();
+                          #        float green = (float) color.getGreen();
+                          #        float blue = (float) color.getBlue();
+                          #        float denominator = 255.0;
+                          #        Color.Builder resultBuilder =
+                          #            Color
+                          #                .newBuilder()
+                          #                .setRed(red / denominator)
+                          #                .setGreen(green / denominator)
+                          #                .setBlue(blue / denominator);
+                          #        int alpha = color.getAlpha();
+                          #        if (alpha != 255) {
+                          #          result.setAlpha(
+                          #              FloatValue
+                          #                  .newBuilder()
+                          #                  .setValue(((float) alpha) / denominator)
+                          #                  .build());
+                          #        }
+                          #        return resultBuilder.build();
+                          #      }
+                          #      // ...
+                          #
+                          # Example (iOS / Obj-C):
+                          #
+                          #      // ...
+                          #      static UIColor* fromProto(Color* protocolor) {
+                          #         float red = [protocolor red];
+                          #         float green = [protocolor green];
+                          #         float blue = [protocolor blue];
+                          #         FloatValue* alpha_wrapper = [protocolor alpha];
+                          #         float alpha = 1.0;
+                          #         if (alpha_wrapper != nil) {
+                          #           alpha = [alpha_wrapper value];
+                          #         }
+                          #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
+                          #      }
+                          #
+                          #      static Color* toProto(UIColor* color) {
+                          #          CGFloat red, green, blue, alpha;
+                          #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
+                          #            return nil;
+                          #          }
+                          #          Color* result = [Color alloc] init];
+                          #          [result setRed:red];
+                          #          [result setGreen:green];
+                          #          [result setBlue:blue];
+                          #          if (alpha <= 0.9999) {
+                          #            [result setAlpha:floatWrapperWithValue(alpha)];
+                          #          }
+                          #          [result autorelease];
+                          #          return result;
+                          #     }
+                          #     // ...
+                          #
+                          #  Example (JavaScript):
+                          #
+                          #     // ...
+                          #
+                          #     var protoToCssColor = function(rgb_color) {
+                          #        var redFrac = rgb_color.red || 0.0;
+                          #        var greenFrac = rgb_color.green || 0.0;
+                          #        var blueFrac = rgb_color.blue || 0.0;
+                          #        var red = Math.floor(redFrac * 255);
+                          #        var green = Math.floor(greenFrac * 255);
+                          #        var blue = Math.floor(blueFrac * 255);
+                          #
+                          #        if (!('alpha' in rgb_color)) {
+                          #           return rgbToCssColor_(red, green, blue);
+                          #        }
+                          #
+                          #        var alphaFrac = rgb_color.alpha.value || 0.0;
+                          #        var rgbParams = [red, green, blue].join(',');
+                          #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
+                          #     };
+                          #
+                          #     var rgbToCssColor_ = function(red, green, blue) {
+                          #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
+                          #       var hexString = rgbNumber.toString(16);
+                          #       var missingZeros = 6 - hexString.length;
+                          #       var resultBuilder = ['#'];
+                          #       for (var i = 0; i < missingZeros; i++) {
+                          #          resultBuilder.push('0');
+                          #       }
+                          #       resultBuilder.push(hexString);
+                          #       return resultBuilder.join('');
+                          #     };
+                          #
+                          #     // ...
+                        "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+                        "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
+                            # the final pixel color is defined by the equation:
+                            #
+                            #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
+                            #
+                            # This means that a value of 1.0 corresponds to a solid color, whereas
+                            # a value of 0.0 corresponds to a completely transparent color. This
+                            # uses a wrapper message rather than a simple float scalar so that it is
+                            # possible to distinguish between a default value and the value being unset.
+                            # If omitted, this color object is to be rendered as a solid color
+                            # (as if the alpha value had been explicitly given with a value of 1.0).
+                        "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
+                        "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
+                      },
+                      "width": 42, # The width of the border, in pixels.
+                          # Deprecated; the width is determined by the "style" field.
+                      "style": "A String", # The style of the border.
+                    },
+                    "left": { # A border along a cell. # The left border of the cell.
+                      "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
+                          # for simplicity of conversion to/from color representations in various
+                          # languages over compactness; for example, the fields of this representation
+                          # can be trivially provided to the constructor of "java.awt.Color" in Java; it
+                          # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
+                          # method in iOS; and, with just a little work, it can be easily formatted into
+                          # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
+                          #
+                          # Example (Java):
+                          #
+                          #      import com.google.type.Color;
+                          #
+                          #      // ...
+                          #      public static java.awt.Color fromProto(Color protocolor) {
+                          #        float alpha = protocolor.hasAlpha()
+                          #            ? protocolor.getAlpha().getValue()
+                          #            : 1.0;
+                          #
+                          #        return new java.awt.Color(
+                          #            protocolor.getRed(),
+                          #            protocolor.getGreen(),
+                          #            protocolor.getBlue(),
+                          #            alpha);
+                          #      }
+                          #
+                          #      public static Color toProto(java.awt.Color color) {
+                          #        float red = (float) color.getRed();
+                          #        float green = (float) color.getGreen();
+                          #        float blue = (float) color.getBlue();
+                          #        float denominator = 255.0;
+                          #        Color.Builder resultBuilder =
+                          #            Color
+                          #                .newBuilder()
+                          #                .setRed(red / denominator)
+                          #                .setGreen(green / denominator)
+                          #                .setBlue(blue / denominator);
+                          #        int alpha = color.getAlpha();
+                          #        if (alpha != 255) {
+                          #          result.setAlpha(
+                          #              FloatValue
+                          #                  .newBuilder()
+                          #                  .setValue(((float) alpha) / denominator)
+                          #                  .build());
+                          #        }
+                          #        return resultBuilder.build();
+                          #      }
+                          #      // ...
+                          #
+                          # Example (iOS / Obj-C):
+                          #
+                          #      // ...
+                          #      static UIColor* fromProto(Color* protocolor) {
+                          #         float red = [protocolor red];
+                          #         float green = [protocolor green];
+                          #         float blue = [protocolor blue];
+                          #         FloatValue* alpha_wrapper = [protocolor alpha];
+                          #         float alpha = 1.0;
+                          #         if (alpha_wrapper != nil) {
+                          #           alpha = [alpha_wrapper value];
+                          #         }
+                          #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
+                          #      }
+                          #
+                          #      static Color* toProto(UIColor* color) {
+                          #          CGFloat red, green, blue, alpha;
+                          #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
+                          #            return nil;
+                          #          }
+                          #          Color* result = [Color alloc] init];
+                          #          [result setRed:red];
+                          #          [result setGreen:green];
+                          #          [result setBlue:blue];
+                          #          if (alpha <= 0.9999) {
+                          #            [result setAlpha:floatWrapperWithValue(alpha)];
+                          #          }
+                          #          [result autorelease];
+                          #          return result;
+                          #     }
+                          #     // ...
+                          #
+                          #  Example (JavaScript):
+                          #
+                          #     // ...
+                          #
+                          #     var protoToCssColor = function(rgb_color) {
+                          #        var redFrac = rgb_color.red || 0.0;
+                          #        var greenFrac = rgb_color.green || 0.0;
+                          #        var blueFrac = rgb_color.blue || 0.0;
+                          #        var red = Math.floor(redFrac * 255);
+                          #        var green = Math.floor(greenFrac * 255);
+                          #        var blue = Math.floor(blueFrac * 255);
+                          #
+                          #        if (!('alpha' in rgb_color)) {
+                          #           return rgbToCssColor_(red, green, blue);
+                          #        }
+                          #
+                          #        var alphaFrac = rgb_color.alpha.value || 0.0;
+                          #        var rgbParams = [red, green, blue].join(',');
+                          #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
+                          #     };
+                          #
+                          #     var rgbToCssColor_ = function(red, green, blue) {
+                          #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
+                          #       var hexString = rgbNumber.toString(16);
+                          #       var missingZeros = 6 - hexString.length;
+                          #       var resultBuilder = ['#'];
+                          #       for (var i = 0; i < missingZeros; i++) {
+                          #          resultBuilder.push('0');
+                          #       }
+                          #       resultBuilder.push(hexString);
+                          #       return resultBuilder.join('');
+                          #     };
+                          #
+                          #     // ...
+                        "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+                        "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
+                            # the final pixel color is defined by the equation:
+                            #
+                            #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
+                            #
+                            # This means that a value of 1.0 corresponds to a solid color, whereas
+                            # a value of 0.0 corresponds to a completely transparent color. This
+                            # uses a wrapper message rather than a simple float scalar so that it is
+                            # possible to distinguish between a default value and the value being unset.
+                            # If omitted, this color object is to be rendered as a solid color
+                            # (as if the alpha value had been explicitly given with a value of 1.0).
+                        "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
+                        "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
+                      },
+                      "width": 42, # The width of the border, in pixels.
+                          # Deprecated; the width is determined by the "style" field.
+                      "style": "A String", # The style of the border.
+                    },
+                  },
+                  "wrapStrategy": "A String", # The wrap strategy for the value in the cell.
+                },
+              },
+              "gradientRule": { # A rule that applies a gradient color scale format, based on # The formatting will vary based on the gradients in the rule.
+                  # the interpolation points listed. The format of a cell will vary
+                  # based on its contents as compared to the values of the interpolation
+                  # points.
+                "maxpoint": { # A single interpolation point on a gradient conditional format. # The final interpolation point.
+                    # These pin the gradient color scale according to the color,
+                    # type and value chosen.
+                  "color": { # Represents a color in the RGBA color space. This representation is designed # The color this interpolation point should use.
+                      # for simplicity of conversion to/from color representations in various
+                      # languages over compactness; for example, the fields of this representation
+                      # can be trivially provided to the constructor of "java.awt.Color" in Java; it
+                      # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
+                      # method in iOS; and, with just a little work, it can be easily formatted into
+                      # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
+                      #
+                      # Example (Java):
+                      #
+                      #      import com.google.type.Color;
+                      #
+                      #      // ...
+                      #      public static java.awt.Color fromProto(Color protocolor) {
+                      #        float alpha = protocolor.hasAlpha()
+                      #            ? protocolor.getAlpha().getValue()
+                      #            : 1.0;
+                      #
+                      #        return new java.awt.Color(
+                      #            protocolor.getRed(),
+                      #            protocolor.getGreen(),
+                      #            protocolor.getBlue(),
+                      #            alpha);
+                      #      }
+                      #
+                      #      public static Color toProto(java.awt.Color color) {
+                      #        float red = (float) color.getRed();
+                      #        float green = (float) color.getGreen();
+                      #        float blue = (float) color.getBlue();
+                      #        float denominator = 255.0;
+                      #        Color.Builder resultBuilder =
+                      #            Color
+                      #                .newBuilder()
+                      #                .setRed(red / denominator)
+                      #                .setGreen(green / denominator)
+                      #                .setBlue(blue / denominator);
+                      #        int alpha = color.getAlpha();
+                      #        if (alpha != 255) {
+                      #          result.setAlpha(
+                      #              FloatValue
+                      #                  .newBuilder()
+                      #                  .setValue(((float) alpha) / denominator)
+                      #                  .build());
+                      #        }
+                      #        return resultBuilder.build();
+                      #      }
+                      #      // ...
+                      #
+                      # Example (iOS / Obj-C):
+                      #
+                      #      // ...
+                      #      static UIColor* fromProto(Color* protocolor) {
+                      #         float red = [protocolor red];
+                      #         float green = [protocolor green];
+                      #         float blue = [protocolor blue];
+                      #         FloatValue* alpha_wrapper = [protocolor alpha];
+                      #         float alpha = 1.0;
+                      #         if (alpha_wrapper != nil) {
+                      #           alpha = [alpha_wrapper value];
+                      #         }
+                      #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
+                      #      }
+                      #
+                      #      static Color* toProto(UIColor* color) {
+                      #          CGFloat red, green, blue, alpha;
+                      #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
+                      #            return nil;
+                      #          }
+                      #          Color* result = [Color alloc] init];
+                      #          [result setRed:red];
+                      #          [result setGreen:green];
+                      #          [result setBlue:blue];
+                      #          if (alpha <= 0.9999) {
+                      #            [result setAlpha:floatWrapperWithValue(alpha)];
+                      #          }
+                      #          [result autorelease];
+                      #          return result;
+                      #     }
+                      #     // ...
+                      #
+                      #  Example (JavaScript):
+                      #
+                      #     // ...
+                      #
+                      #     var protoToCssColor = function(rgb_color) {
+                      #        var redFrac = rgb_color.red || 0.0;
+                      #        var greenFrac = rgb_color.green || 0.0;
+                      #        var blueFrac = rgb_color.blue || 0.0;
+                      #        var red = Math.floor(redFrac * 255);
+                      #        var green = Math.floor(greenFrac * 255);
+                      #        var blue = Math.floor(blueFrac * 255);
+                      #
+                      #        if (!('alpha' in rgb_color)) {
+                      #           return rgbToCssColor_(red, green, blue);
+                      #        }
+                      #
+                      #        var alphaFrac = rgb_color.alpha.value || 0.0;
+                      #        var rgbParams = [red, green, blue].join(',');
+                      #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
+                      #     };
+                      #
+                      #     var rgbToCssColor_ = function(red, green, blue) {
+                      #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
+                      #       var hexString = rgbNumber.toString(16);
+                      #       var missingZeros = 6 - hexString.length;
+                      #       var resultBuilder = ['#'];
+                      #       for (var i = 0; i < missingZeros; i++) {
+                      #          resultBuilder.push('0');
+                      #       }
+                      #       resultBuilder.push(hexString);
+                      #       return resultBuilder.join('');
+                      #     };
+                      #
+                      #     // ...
+                    "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+                    "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
+                        # the final pixel color is defined by the equation:
+                        #
+                        #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
+                        #
+                        # This means that a value of 1.0 corresponds to a solid color, whereas
+                        # a value of 0.0 corresponds to a completely transparent color. This
+                        # uses a wrapper message rather than a simple float scalar so that it is
+                        # possible to distinguish between a default value and the value being unset.
+                        # If omitted, this color object is to be rendered as a solid color
+                        # (as if the alpha value had been explicitly given with a value of 1.0).
+                    "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
+                    "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
+                  },
+                  "type": "A String", # How the value should be interpreted.
+                  "value": "A String", # The value this interpolation point uses.  May be a formula.
+                      # Unused if type is MIN or
+                      # MAX.
+                },
+                "midpoint": { # A single interpolation point on a gradient conditional format. # An optional midway interpolation point.
+                    # These pin the gradient color scale according to the color,
+                    # type and value chosen.
+                  "color": { # Represents a color in the RGBA color space. This representation is designed # The color this interpolation point should use.
+                      # for simplicity of conversion to/from color representations in various
+                      # languages over compactness; for example, the fields of this representation
+                      # can be trivially provided to the constructor of "java.awt.Color" in Java; it
+                      # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
+                      # method in iOS; and, with just a little work, it can be easily formatted into
+                      # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
+                      #
+                      # Example (Java):
+                      #
+                      #      import com.google.type.Color;
+                      #
+                      #      // ...
+                      #      public static java.awt.Color fromProto(Color protocolor) {
+                      #        float alpha = protocolor.hasAlpha()
+                      #            ? protocolor.getAlpha().getValue()
+                      #            : 1.0;
+                      #
+                      #        return new java.awt.Color(
+                      #            protocolor.getRed(),
+                      #            protocolor.getGreen(),
+                      #            protocolor.getBlue(),
+                      #            alpha);
+                      #      }
+                      #
+                      #      public static Color toProto(java.awt.Color color) {
+                      #        float red = (float) color.getRed();
+                      #        float green = (float) color.getGreen();
+                      #        float blue = (float) color.getBlue();
+                      #        float denominator = 255.0;
+                      #        Color.Builder resultBuilder =
+                      #            Color
+                      #                .newBuilder()
+                      #                .setRed(red / denominator)
+                      #                .setGreen(green / denominator)
+                      #                .setBlue(blue / denominator);
+                      #        int alpha = color.getAlpha();
+                      #        if (alpha != 255) {
+                      #          result.setAlpha(
+                      #              FloatValue
+                      #                  .newBuilder()
+                      #                  .setValue(((float) alpha) / denominator)
+                      #                  .build());
+                      #        }
+                      #        return resultBuilder.build();
+                      #      }
+                      #      // ...
+                      #
+                      # Example (iOS / Obj-C):
+                      #
+                      #      // ...
+                      #      static UIColor* fromProto(Color* protocolor) {
+                      #         float red = [protocolor red];
+                      #         float green = [protocolor green];
+                      #         float blue = [protocolor blue];
+                      #         FloatValue* alpha_wrapper = [protocolor alpha];
+                      #         float alpha = 1.0;
+                      #         if (alpha_wrapper != nil) {
+                      #           alpha = [alpha_wrapper value];
+                      #         }
+                      #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
+                      #      }
+                      #
+                      #      static Color* toProto(UIColor* color) {
+                      #          CGFloat red, green, blue, alpha;
+                      #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
+                      #            return nil;
+                      #          }
+                      #          Color* result = [Color alloc] init];
+                      #          [result setRed:red];
+                      #          [result setGreen:green];
+                      #          [result setBlue:blue];
+                      #          if (alpha <= 0.9999) {
+                      #            [result setAlpha:floatWrapperWithValue(alpha)];
+                      #          }
+                      #          [result autorelease];
+                      #          return result;
+                      #     }
+                      #     // ...
+                      #
+                      #  Example (JavaScript):
+                      #
+                      #     // ...
+                      #
+                      #     var protoToCssColor = function(rgb_color) {
+                      #        var redFrac = rgb_color.red || 0.0;
+                      #        var greenFrac = rgb_color.green || 0.0;
+                      #        var blueFrac = rgb_color.blue || 0.0;
+                      #        var red = Math.floor(redFrac * 255);
+                      #        var green = Math.floor(greenFrac * 255);
+                      #        var blue = Math.floor(blueFrac * 255);
+                      #
+                      #        if (!('alpha' in rgb_color)) {
+                      #           return rgbToCssColor_(red, green, blue);
+                      #        }
+                      #
+                      #        var alphaFrac = rgb_color.alpha.value || 0.0;
+                      #        var rgbParams = [red, green, blue].join(',');
+                      #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
+                      #     };
+                      #
+                      #     var rgbToCssColor_ = function(red, green, blue) {
+                      #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
+                      #       var hexString = rgbNumber.toString(16);
+                      #       var missingZeros = 6 - hexString.length;
+                      #       var resultBuilder = ['#'];
+                      #       for (var i = 0; i < missingZeros; i++) {
+                      #          resultBuilder.push('0');
+                      #       }
+                      #       resultBuilder.push(hexString);
+                      #       return resultBuilder.join('');
+                      #     };
+                      #
+                      #     // ...
+                    "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+                    "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
+                        # the final pixel color is defined by the equation:
+                        #
+                        #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
+                        #
+                        # This means that a value of 1.0 corresponds to a solid color, whereas
+                        # a value of 0.0 corresponds to a completely transparent color. This
+                        # uses a wrapper message rather than a simple float scalar so that it is
+                        # possible to distinguish between a default value and the value being unset.
+                        # If omitted, this color object is to be rendered as a solid color
+                        # (as if the alpha value had been explicitly given with a value of 1.0).
+                    "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
+                    "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
+                  },
+                  "type": "A String", # How the value should be interpreted.
+                  "value": "A String", # The value this interpolation point uses.  May be a formula.
+                      # Unused if type is MIN or
+                      # MAX.
+                },
+                "minpoint": { # A single interpolation point on a gradient conditional format. # The starting interpolation point.
+                    # These pin the gradient color scale according to the color,
+                    # type and value chosen.
+                  "color": { # Represents a color in the RGBA color space. This representation is designed # The color this interpolation point should use.
+                      # for simplicity of conversion to/from color representations in various
+                      # languages over compactness; for example, the fields of this representation
+                      # can be trivially provided to the constructor of "java.awt.Color" in Java; it
+                      # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
+                      # method in iOS; and, with just a little work, it can be easily formatted into
+                      # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
+                      #
+                      # Example (Java):
+                      #
+                      #      import com.google.type.Color;
+                      #
+                      #      // ...
+                      #      public static java.awt.Color fromProto(Color protocolor) {
+                      #        float alpha = protocolor.hasAlpha()
+                      #            ? protocolor.getAlpha().getValue()
+                      #            : 1.0;
+                      #
+                      #        return new java.awt.Color(
+                      #            protocolor.getRed(),
+                      #            protocolor.getGreen(),
+                      #            protocolor.getBlue(),
+                      #            alpha);
+                      #      }
+                      #
+                      #      public static Color toProto(java.awt.Color color) {
+                      #        float red = (float) color.getRed();
+                      #        float green = (float) color.getGreen();
+                      #        float blue = (float) color.getBlue();
+                      #        float denominator = 255.0;
+                      #        Color.Builder resultBuilder =
+                      #            Color
+                      #                .newBuilder()
+                      #                .setRed(red / denominator)
+                      #                .setGreen(green / denominator)
+                      #                .setBlue(blue / denominator);
+                      #        int alpha = color.getAlpha();
+                      #        if (alpha != 255) {
+                      #          result.setAlpha(
+                      #              FloatValue
+                      #                  .newBuilder()
+                      #                  .setValue(((float) alpha) / denominator)
+                      #                  .build());
+                      #        }
+                      #        return resultBuilder.build();
+                      #      }
+                      #      // ...
+                      #
+                      # Example (iOS / Obj-C):
+                      #
+                      #      // ...
+                      #      static UIColor* fromProto(Color* protocolor) {
+                      #         float red = [protocolor red];
+                      #         float green = [protocolor green];
+                      #         float blue = [protocolor blue];
+                      #         FloatValue* alpha_wrapper = [protocolor alpha];
+                      #         float alpha = 1.0;
+                      #         if (alpha_wrapper != nil) {
+                      #           alpha = [alpha_wrapper value];
+                      #         }
+                      #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
+                      #      }
+                      #
+                      #      static Color* toProto(UIColor* color) {
+                      #          CGFloat red, green, blue, alpha;
+                      #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
+                      #            return nil;
+                      #          }
+                      #          Color* result = [Color alloc] init];
+                      #          [result setRed:red];
+                      #          [result setGreen:green];
+                      #          [result setBlue:blue];
+                      #          if (alpha <= 0.9999) {
+                      #            [result setAlpha:floatWrapperWithValue(alpha)];
+                      #          }
+                      #          [result autorelease];
+                      #          return result;
+                      #     }
+                      #     // ...
+                      #
+                      #  Example (JavaScript):
+                      #
+                      #     // ...
+                      #
+                      #     var protoToCssColor = function(rgb_color) {
+                      #        var redFrac = rgb_color.red || 0.0;
+                      #        var greenFrac = rgb_color.green || 0.0;
+                      #        var blueFrac = rgb_color.blue || 0.0;
+                      #        var red = Math.floor(redFrac * 255);
+                      #        var green = Math.floor(greenFrac * 255);
+                      #        var blue = Math.floor(blueFrac * 255);
+                      #
+                      #        if (!('alpha' in rgb_color)) {
+                      #           return rgbToCssColor_(red, green, blue);
+                      #        }
+                      #
+                      #        var alphaFrac = rgb_color.alpha.value || 0.0;
+                      #        var rgbParams = [red, green, blue].join(',');
+                      #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
+                      #     };
+                      #
+                      #     var rgbToCssColor_ = function(red, green, blue) {
+                      #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
+                      #       var hexString = rgbNumber.toString(16);
+                      #       var missingZeros = 6 - hexString.length;
+                      #       var resultBuilder = ['#'];
+                      #       for (var i = 0; i < missingZeros; i++) {
+                      #          resultBuilder.push('0');
+                      #       }
+                      #       resultBuilder.push(hexString);
+                      #       return resultBuilder.join('');
+                      #     };
+                      #
+                      #     // ...
+                    "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+                    "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
+                        # the final pixel color is defined by the equation:
+                        #
+                        #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
+                        #
+                        # This means that a value of 1.0 corresponds to a solid color, whereas
+                        # a value of 0.0 corresponds to a completely transparent color. This
+                        # uses a wrapper message rather than a simple float scalar so that it is
+                        # possible to distinguish between a default value and the value being unset.
+                        # If omitted, this color object is to be rendered as a solid color
+                        # (as if the alpha value had been explicitly given with a value of 1.0).
+                    "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
+                    "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
+                  },
+                  "type": "A String", # How the value should be interpreted.
+                  "value": "A String", # The value this interpolation point uses.  May be a formula.
+                      # Unused if type is MIN or
+                      # MAX.
+                },
+              },
+            },
+          ],
+          "bandedRanges": [ # The banded (i.e. alternating colors) ranges on this sheet.
+            { # A banded (alternating colors) range in a sheet.
+              "range": { # A range on a sheet. # The range over which these properties are applied.
+                  # All indexes are zero-based.
+                  # Indexes are half open, e.g the start index is inclusive
+                  # and the end index is exclusive -- [start_index, end_index).
+                  # Missing indexes indicate the range is unbounded on that side.
+                  #
+                  # For example, if `"Sheet1"` is sheet ID 0, then:
+                  #
+                  #   `Sheet1!A1:A1 == sheet_id: 0,
+                  #                   start_row_index: 0, end_row_index: 1,
+                  #                   start_column_index: 0, end_column_index: 1`
+                  #
+                  #   `Sheet1!A3:B4 == sheet_id: 0,
+                  #                   start_row_index: 2, end_row_index: 4,
+                  #                   start_column_index: 0, end_column_index: 2`
+                  #
+                  #   `Sheet1!A:B == sheet_id: 0,
+                  #                 start_column_index: 0, end_column_index: 2`
+                  #
+                  #   `Sheet1!A5:B == sheet_id: 0,
+                  #                  start_row_index: 4,
+                  #                  start_column_index: 0, end_column_index: 2`
+                  #
+                  #   `Sheet1 == sheet_id:0`
+                  #
+                  # The start index must always be less than or equal to the end index.
+                  # If the start index equals the end index, then the range is empty.
+                  # Empty ranges are typically not meaningful and are usually rendered in the
+                  # UI as `#REF!`.
+                "endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
+                "startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
+                "sheetId": 42, # The sheet this range is on.
+                "startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
+                "endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
+              },
+              "columnProperties": { # Properties referring a single dimension (either row or column). If both # Properties for column bands. These properties will be applied on a column-
+                  # by-column basis throughout all the columns in the range. At least one of
+                  # row_properties or column_properties must be specified.
+                  # BandedRange.row_properties and BandedRange.column_properties are
+                  # set, the fill colors are applied to cells according to the following rules:
+                  #
+                  # * header_color and footer_color take priority over band colors.
+                  # * first_band_color takes priority over second_band_color.
+                  # * row_properties takes priority over column_properties.
+                  #
+                  # For example, the first row color takes priority over the first column
+                  # color, but the first column color takes priority over the second row color.
+                  # Similarly, the row header takes priority over the column header in the
+                  # top left cell, but the column header takes priority over the first row
+                  # color if the row header is not set.
+                "secondBandColor": { # Represents a color in the RGBA color space. This representation is designed # The second color that is alternating. (Required)
+                    # for simplicity of conversion to/from color representations in various
+                    # languages over compactness; for example, the fields of this representation
+                    # can be trivially provided to the constructor of "java.awt.Color" in Java; it
+                    # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
+                    # method in iOS; and, with just a little work, it can be easily formatted into
+                    # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
+                    #
+                    # Example (Java):
+                    #
+                    #      import com.google.type.Color;
+                    #
+                    #      // ...
+                    #      public static java.awt.Color fromProto(Color protocolor) {
+                    #        float alpha = protocolor.hasAlpha()
+                    #            ? protocolor.getAlpha().getValue()
+                    #            : 1.0;
+                    #
+                    #        return new java.awt.Color(
+                    #            protocolor.getRed(),
+                    #            protocolor.getGreen(),
+                    #            protocolor.getBlue(),
+                    #            alpha);
+                    #      }
+                    #
+                    #      public static Color toProto(java.awt.Color color) {
+                    #        float red = (float) color.getRed();
+                    #        float green = (float) color.getGreen();
+                    #        float blue = (float) color.getBlue();
+                    #        float denominator = 255.0;
+                    #        Color.Builder resultBuilder =
+                    #            Color
+                    #                .newBuilder()
+                    #                .setRed(red / denominator)
+                    #                .setGreen(green / denominator)
+                    #                .setBlue(blue / denominator);
+                    #        int alpha = color.getAlpha();
+                    #        if (alpha != 255) {
+                    #          result.setAlpha(
+                    #              FloatValue
+                    #                  .newBuilder()
+                    #                  .setValue(((float) alpha) / denominator)
+                    #                  .build());
+                    #        }
+                    #        return resultBuilder.build();
+                    #      }
+                    #      // ...
+                    #
+                    # Example (iOS / Obj-C):
+                    #
+                    #      // ...
+                    #      static UIColor* fromProto(Color* protocolor) {
+                    #         float red = [protocolor red];
+                    #         float green = [protocolor green];
+                    #         float blue = [protocolor blue];
+                    #         FloatValue* alpha_wrapper = [protocolor alpha];
+                    #         float alpha = 1.0;
+                    #         if (alpha_wrapper != nil) {
+                    #           alpha = [alpha_wrapper value];
+                    #         }
+                    #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
+                    #      }
+                    #
+                    #      static Color* toProto(UIColor* color) {
+                    #          CGFloat red, green, blue, alpha;
+                    #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
+                    #            return nil;
+                    #          }
+                    #          Color* result = [Color alloc] init];
+                    #          [result setRed:red];
+                    #          [result setGreen:green];
+                    #          [result setBlue:blue];
+                    #          if (alpha <= 0.9999) {
+                    #            [result setAlpha:floatWrapperWithValue(alpha)];
+                    #          }
+                    #          [result autorelease];
+                    #          return result;
+                    #     }
+                    #     // ...
+                    #
+                    #  Example (JavaScript):
+                    #
+                    #     // ...
+                    #
+                    #     var protoToCssColor = function(rgb_color) {
+                    #        var redFrac = rgb_color.red || 0.0;
+                    #        var greenFrac = rgb_color.green || 0.0;
+                    #        var blueFrac = rgb_color.blue || 0.0;
+                    #        var red = Math.floor(redFrac * 255);
+                    #        var green = Math.floor(greenFrac * 255);
+                    #        var blue = Math.floor(blueFrac * 255);
+                    #
+                    #        if (!('alpha' in rgb_color)) {
+                    #           return rgbToCssColor_(red, green, blue);
+                    #        }
+                    #
+                    #        var alphaFrac = rgb_color.alpha.value || 0.0;
+                    #        var rgbParams = [red, green, blue].join(',');
+                    #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
+                    #     };
+                    #
+                    #     var rgbToCssColor_ = function(red, green, blue) {
+                    #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
+                    #       var hexString = rgbNumber.toString(16);
+                    #       var missingZeros = 6 - hexString.length;
+                    #       var resultBuilder = ['#'];
+                    #       for (var i = 0; i < missingZeros; i++) {
+                    #          resultBuilder.push('0');
+                    #       }
+                    #       resultBuilder.push(hexString);
+                    #       return resultBuilder.join('');
+                    #     };
+                    #
+                    #     // ...
+                  "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+                  "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
+                      # the final pixel color is defined by the equation:
+                      #
+                      #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
+                      #
+                      # This means that a value of 1.0 corresponds to a solid color, whereas
+                      # a value of 0.0 corresponds to a completely transparent color. This
+                      # uses a wrapper message rather than a simple float scalar so that it is
+                      # possible to distinguish between a default value and the value being unset.
+                      # If omitted, this color object is to be rendered as a solid color
+                      # (as if the alpha value had been explicitly given with a value of 1.0).
+                  "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
+                  "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
+                },
+                "headerColor": { # Represents a color in the RGBA color space. This representation is designed # The color of the first row or column. If this field is set, the first
+                    # row or column will be filled with this color and the colors will
+                    # alternate between first_band_color and second_band_color starting
+                    # from the second row or column. Otherwise, the first row or column will be
+                    # filled with first_band_color and the colors will proceed to alternate
+                    # as they normally would.
+                    # for simplicity of conversion to/from color representations in various
+                    # languages over compactness; for example, the fields of this representation
+                    # can be trivially provided to the constructor of "java.awt.Color" in Java; it
+                    # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
+                    # method in iOS; and, with just a little work, it can be easily formatted into
+                    # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
+                    #
+                    # Example (Java):
+                    #
+                    #      import com.google.type.Color;
+                    #
+                    #      // ...
+                    #      public static java.awt.Color fromProto(Color protocolor) {
+                    #        float alpha = protocolor.hasAlpha()
+                    #            ? protocolor.getAlpha().getValue()
+                    #            : 1.0;
+                    #
+                    #        return new java.awt.Color(
+                    #            protocolor.getRed(),
+                    #            protocolor.getGreen(),
+                    #            protocolor.getBlue(),
+                    #            alpha);
+                    #      }
+                    #
+                    #      public static Color toProto(java.awt.Color color) {
+                    #        float red = (float) color.getRed();
+                    #        float green = (float) color.getGreen();
+                    #        float blue = (float) color.getBlue();
+                    #        float denominator = 255.0;
+                    #        Color.Builder resultBuilder =
+                    #            Color
+                    #                .newBuilder()
+                    #                .setRed(red / denominator)
+                    #                .setGreen(green / denominator)
+                    #                .setBlue(blue / denominator);
+                    #        int alpha = color.getAlpha();
+                    #        if (alpha != 255) {
+                    #          result.setAlpha(
+                    #              FloatValue
+                    #                  .newBuilder()
+                    #                  .setValue(((float) alpha) / denominator)
+                    #                  .build());
+                    #        }
+                    #        return resultBuilder.build();
+                    #      }
+                    #      // ...
+                    #
+                    # Example (iOS / Obj-C):
+                    #
+                    #      // ...
+                    #      static UIColor* fromProto(Color* protocolor) {
+                    #         float red = [protocolor red];
+                    #         float green = [protocolor green];
+                    #         float blue = [protocolor blue];
+                    #         FloatValue* alpha_wrapper = [protocolor alpha];
+                    #         float alpha = 1.0;
+                    #         if (alpha_wrapper != nil) {
+                    #           alpha = [alpha_wrapper value];
+                    #         }
+                    #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
+                    #      }
+                    #
+                    #      static Color* toProto(UIColor* color) {
+                    #          CGFloat red, green, blue, alpha;
+                    #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
+                    #            return nil;
+                    #          }
+                    #          Color* result = [Color alloc] init];
+                    #          [result setRed:red];
+                    #          [result setGreen:green];
+                    #          [result setBlue:blue];
+                    #          if (alpha <= 0.9999) {
+                    #            [result setAlpha:floatWrapperWithValue(alpha)];
+                    #          }
+                    #          [result autorelease];
+                    #          return result;
+                    #     }
+                    #     // ...
+                    #
+                    #  Example (JavaScript):
+                    #
+                    #     // ...
+                    #
+                    #     var protoToCssColor = function(rgb_color) {
+                    #        var redFrac = rgb_color.red || 0.0;
+                    #        var greenFrac = rgb_color.green || 0.0;
+                    #        var blueFrac = rgb_color.blue || 0.0;
+                    #        var red = Math.floor(redFrac * 255);
+                    #        var green = Math.floor(greenFrac * 255);
+                    #        var blue = Math.floor(blueFrac * 255);
+                    #
+                    #        if (!('alpha' in rgb_color)) {
+                    #           return rgbToCssColor_(red, green, blue);
+                    #        }
+                    #
+                    #        var alphaFrac = rgb_color.alpha.value || 0.0;
+                    #        var rgbParams = [red, green, blue].join(',');
+                    #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
+                    #     };
+                    #
+                    #     var rgbToCssColor_ = function(red, green, blue) {
+                    #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
+                    #       var hexString = rgbNumber.toString(16);
+                    #       var missingZeros = 6 - hexString.length;
+                    #       var resultBuilder = ['#'];
+                    #       for (var i = 0; i < missingZeros; i++) {
+                    #          resultBuilder.push('0');
+                    #       }
+                    #       resultBuilder.push(hexString);
+                    #       return resultBuilder.join('');
+                    #     };
+                    #
+                    #     // ...
+                  "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+                  "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
+                      # the final pixel color is defined by the equation:
+                      #
+                      #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
+                      #
+                      # This means that a value of 1.0 corresponds to a solid color, whereas
+                      # a value of 0.0 corresponds to a completely transparent color. This
+                      # uses a wrapper message rather than a simple float scalar so that it is
+                      # possible to distinguish between a default value and the value being unset.
+                      # If omitted, this color object is to be rendered as a solid color
+                      # (as if the alpha value had been explicitly given with a value of 1.0).
+                  "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
+                  "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
+                },
+                "footerColor": { # Represents a color in the RGBA color space. This representation is designed # The color of the last row or column. If this field is not set, the last
+                    # row or column will be filled with either first_band_color or
+                    # second_band_color, depending on the color of the previous row or
+                    # column.
+                    # for simplicity of conversion to/from color representations in various
+                    # languages over compactness; for example, the fields of this representation
+                    # can be trivially provided to the constructor of "java.awt.Color" in Java; it
+                    # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
+                    # method in iOS; and, with just a little work, it can be easily formatted into
+                    # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
+                    #
+                    # Example (Java):
+                    #
+                    #      import com.google.type.Color;
+                    #
+                    #      // ...
+                    #      public static java.awt.Color fromProto(Color protocolor) {
+                    #        float alpha = protocolor.hasAlpha()
+                    #            ? protocolor.getAlpha().getValue()
+                    #            : 1.0;
+                    #
+                    #        return new java.awt.Color(
+                    #            protocolor.getRed(),
+                    #            protocolor.getGreen(),
+                    #            protocolor.getBlue(),
+                    #            alpha);
+                    #      }
+                    #
+                    #      public static Color toProto(java.awt.Color color) {
+                    #        float red = (float) color.getRed();
+                    #        float green = (float) color.getGreen();
+                    #        float blue = (float) color.getBlue();
+                    #        float denominator = 255.0;
+                    #        Color.Builder resultBuilder =
+                    #            Color
+                    #                .newBuilder()
+                    #                .setRed(red / denominator)
+                    #                .setGreen(green / denominator)
+                    #                .setBlue(blue / denominator);
+                    #        int alpha = color.getAlpha();
+                    #        if (alpha != 255) {
+                    #          result.setAlpha(
+                    #              FloatValue
+                    #                  .newBuilder()
+                    #                  .setValue(((float) alpha) / denominator)
+                    #                  .build());
+                    #        }
+                    #        return resultBuilder.build();
+                    #      }
+                    #      // ...
+                    #
+                    # Example (iOS / Obj-C):
+                    #
+                    #      // ...
+                    #      static UIColor* fromProto(Color* protocolor) {
+                    #         float red = [protocolor red];
+                    #         float green = [protocolor green];
+                    #         float blue = [protocolor blue];
+                    #         FloatValue* alpha_wrapper = [protocolor alpha];
+                    #         float alpha = 1.0;
+                    #         if (alpha_wrapper != nil) {
+                    #           alpha = [alpha_wrapper value];
+                    #         }
+                    #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
+                    #      }
+                    #
+                    #      static Color* toProto(UIColor* color) {
+                    #          CGFloat red, green, blue, alpha;
+                    #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
+                    #            return nil;
+                    #          }
+                    #          Color* result = [Color alloc] init];
+                    #          [result setRed:red];
+                    #          [result setGreen:green];
+                    #          [result setBlue:blue];
+                    #          if (alpha <= 0.9999) {
+                    #            [result setAlpha:floatWrapperWithValue(alpha)];
+                    #          }
+                    #          [result autorelease];
+                    #          return result;
+                    #     }
+                    #     // ...
+                    #
+                    #  Example (JavaScript):
+                    #
+                    #     // ...
+                    #
+                    #     var protoToCssColor = function(rgb_color) {
+                    #        var redFrac = rgb_color.red || 0.0;
+                    #        var greenFrac = rgb_color.green || 0.0;
+                    #        var blueFrac = rgb_color.blue || 0.0;
+                    #        var red = Math.floor(redFrac * 255);
+                    #        var green = Math.floor(greenFrac * 255);
+                    #        var blue = Math.floor(blueFrac * 255);
+                    #
+                    #        if (!('alpha' in rgb_color)) {
+                    #           return rgbToCssColor_(red, green, blue);
+                    #        }
+                    #
+                    #        var alphaFrac = rgb_color.alpha.value || 0.0;
+                    #        var rgbParams = [red, green, blue].join(',');
+                    #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
+                    #     };
+                    #
+                    #     var rgbToCssColor_ = function(red, green, blue) {
+                    #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
+                    #       var hexString = rgbNumber.toString(16);
+                    #       var missingZeros = 6 - hexString.length;
+                    #       var resultBuilder = ['#'];
+                    #       for (var i = 0; i < missingZeros; i++) {
+                    #          resultBuilder.push('0');
+                    #       }
+                    #       resultBuilder.push(hexString);
+                    #       return resultBuilder.join('');
+                    #     };
+                    #
+                    #     // ...
+                  "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+                  "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
+                      # the final pixel color is defined by the equation:
+                      #
+                      #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
+                      #
+                      # This means that a value of 1.0 corresponds to a solid color, whereas
+                      # a value of 0.0 corresponds to a completely transparent color. This
+                      # uses a wrapper message rather than a simple float scalar so that it is
+                      # possible to distinguish between a default value and the value being unset.
+                      # If omitted, this color object is to be rendered as a solid color
+                      # (as if the alpha value had been explicitly given with a value of 1.0).
+                  "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
+                  "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
+                },
+                "firstBandColor": { # Represents a color in the RGBA color space. This representation is designed # The first color that is alternating. (Required)
+                    # for simplicity of conversion to/from color representations in various
+                    # languages over compactness; for example, the fields of this representation
+                    # can be trivially provided to the constructor of "java.awt.Color" in Java; it
+                    # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
+                    # method in iOS; and, with just a little work, it can be easily formatted into
+                    # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
+                    #
+                    # Example (Java):
+                    #
+                    #      import com.google.type.Color;
+                    #
+                    #      // ...
+                    #      public static java.awt.Color fromProto(Color protocolor) {
+                    #        float alpha = protocolor.hasAlpha()
+                    #            ? protocolor.getAlpha().getValue()
+                    #            : 1.0;
+                    #
+                    #        return new java.awt.Color(
+                    #            protocolor.getRed(),
+                    #            protocolor.getGreen(),
+                    #            protocolor.getBlue(),
+                    #            alpha);
+                    #      }
+                    #
+                    #      public static Color toProto(java.awt.Color color) {
+                    #        float red = (float) color.getRed();
+                    #        float green = (float) color.getGreen();
+                    #        float blue = (float) color.getBlue();
+                    #        float denominator = 255.0;
+                    #        Color.Builder resultBuilder =
+                    #            Color
+                    #                .newBuilder()
+                    #                .setRed(red / denominator)
+                    #                .setGreen(green / denominator)
+                    #                .setBlue(blue / denominator);
+                    #        int alpha = color.getAlpha();
+                    #        if (alpha != 255) {
+                    #          result.setAlpha(
+                    #              FloatValue
+                    #                  .newBuilder()
+                    #                  .setValue(((float) alpha) / denominator)
+                    #                  .build());
+                    #        }
+                    #        return resultBuilder.build();
+                    #      }
+                    #      // ...
+                    #
+                    # Example (iOS / Obj-C):
+                    #
+                    #      // ...
+                    #      static UIColor* fromProto(Color* protocolor) {
+                    #         float red = [protocolor red];
+                    #         float green = [protocolor green];
+                    #         float blue = [protocolor blue];
+                    #         FloatValue* alpha_wrapper = [protocolor alpha];
+                    #         float alpha = 1.0;
+                    #         if (alpha_wrapper != nil) {
+                    #           alpha = [alpha_wrapper value];
+                    #         }
+                    #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
+                    #      }
+                    #
+                    #      static Color* toProto(UIColor* color) {
+                    #          CGFloat red, green, blue, alpha;
+                    #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
+                    #            return nil;
+                    #          }
+                    #          Color* result = [Color alloc] init];
+                    #          [result setRed:red];
+                    #          [result setGreen:green];
+                    #          [result setBlue:blue];
+                    #          if (alpha <= 0.9999) {
+                    #            [result setAlpha:floatWrapperWithValue(alpha)];
+                    #          }
+                    #          [result autorelease];
+                    #          return result;
+                    #     }
+                    #     // ...
+                    #
+                    #  Example (JavaScript):
+                    #
+                    #     // ...
+                    #
+                    #     var protoToCssColor = function(rgb_color) {
+                    #        var redFrac = rgb_color.red || 0.0;
+                    #        var greenFrac = rgb_color.green || 0.0;
+                    #        var blueFrac = rgb_color.blue || 0.0;
+                    #        var red = Math.floor(redFrac * 255);
+                    #        var green = Math.floor(greenFrac * 255);
+                    #        var blue = Math.floor(blueFrac * 255);
+                    #
+                    #        if (!('alpha' in rgb_color)) {
+                    #           return rgbToCssColor_(red, green, blue);
+                    #        }
+                    #
+                    #        var alphaFrac = rgb_color.alpha.value || 0.0;
+                    #        var rgbParams = [red, green, blue].join(',');
+                    #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
+                    #     };
+                    #
+                    #     var rgbToCssColor_ = function(red, green, blue) {
+                    #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
+                    #       var hexString = rgbNumber.toString(16);
+                    #       var missingZeros = 6 - hexString.length;
+                    #       var resultBuilder = ['#'];
+                    #       for (var i = 0; i < missingZeros; i++) {
+                    #          resultBuilder.push('0');
+                    #       }
+                    #       resultBuilder.push(hexString);
+                    #       return resultBuilder.join('');
+                    #     };
+                    #
+                    #     // ...
+                  "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+                  "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
+                      # the final pixel color is defined by the equation:
+                      #
+                      #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
+                      #
+                      # This means that a value of 1.0 corresponds to a solid color, whereas
+                      # a value of 0.0 corresponds to a completely transparent color. This
+                      # uses a wrapper message rather than a simple float scalar so that it is
+                      # possible to distinguish between a default value and the value being unset.
+                      # If omitted, this color object is to be rendered as a solid color
+                      # (as if the alpha value had been explicitly given with a value of 1.0).
+                  "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
+                  "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
+                },
+              },
+              "rowProperties": { # Properties referring a single dimension (either row or column). If both # Properties for row bands. These properties will be applied on a row-by-row
+                  # basis throughout all the rows in the range. At least one of
+                  # row_properties or column_properties must be specified.
+                  # BandedRange.row_properties and BandedRange.column_properties are
+                  # set, the fill colors are applied to cells according to the following rules:
+                  #
+                  # * header_color and footer_color take priority over band colors.
+                  # * first_band_color takes priority over second_band_color.
+                  # * row_properties takes priority over column_properties.
+                  #
+                  # For example, the first row color takes priority over the first column
+                  # color, but the first column color takes priority over the second row color.
+                  # Similarly, the row header takes priority over the column header in the
+                  # top left cell, but the column header takes priority over the first row
+                  # color if the row header is not set.
+                "secondBandColor": { # Represents a color in the RGBA color space. This representation is designed # The second color that is alternating. (Required)
+                    # for simplicity of conversion to/from color representations in various
+                    # languages over compactness; for example, the fields of this representation
+                    # can be trivially provided to the constructor of "java.awt.Color" in Java; it
+                    # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
+                    # method in iOS; and, with just a little work, it can be easily formatted into
+                    # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
+                    #
+                    # Example (Java):
+                    #
+                    #      import com.google.type.Color;
+                    #
+                    #      // ...
+                    #      public static java.awt.Color fromProto(Color protocolor) {
+                    #        float alpha = protocolor.hasAlpha()
+                    #            ? protocolor.getAlpha().getValue()
+                    #            : 1.0;
+                    #
+                    #        return new java.awt.Color(
+                    #            protocolor.getRed(),
+                    #            protocolor.getGreen(),
+                    #            protocolor.getBlue(),
+                    #            alpha);
+                    #      }
+                    #
+                    #      public static Color toProto(java.awt.Color color) {
+                    #        float red = (float) color.getRed();
+                    #        float green = (float) color.getGreen();
+                    #        float blue = (float) color.getBlue();
+                    #        float denominator = 255.0;
+                    #        Color.Builder resultBuilder =
+                    #            Color
+                    #                .newBuilder()
+                    #                .setRed(red / denominator)
+                    #                .setGreen(green / denominator)
+                    #                .setBlue(blue / denominator);
+                    #        int alpha = color.getAlpha();
+                    #        if (alpha != 255) {
+                    #          result.setAlpha(
+                    #              FloatValue
+                    #                  .newBuilder()
+                    #                  .setValue(((float) alpha) / denominator)
+                    #                  .build());
+                    #        }
+                    #        return resultBuilder.build();
+                    #      }
+                    #      // ...
+                    #
+                    # Example (iOS / Obj-C):
+                    #
+                    #      // ...
+                    #      static UIColor* fromProto(Color* protocolor) {
+                    #         float red = [protocolor red];
+                    #         float green = [protocolor green];
+                    #         float blue = [protocolor blue];
+                    #         FloatValue* alpha_wrapper = [protocolor alpha];
+                    #         float alpha = 1.0;
+                    #         if (alpha_wrapper != nil) {
+                    #           alpha = [alpha_wrapper value];
+                    #         }
+                    #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
+                    #      }
+                    #
+                    #      static Color* toProto(UIColor* color) {
+                    #          CGFloat red, green, blue, alpha;
+                    #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
+                    #            return nil;
+                    #          }
+                    #          Color* result = [Color alloc] init];
+                    #          [result setRed:red];
+                    #          [result setGreen:green];
+                    #          [result setBlue:blue];
+                    #          if (alpha <= 0.9999) {
+                    #            [result setAlpha:floatWrapperWithValue(alpha)];
+                    #          }
+                    #          [result autorelease];
+                    #          return result;
+                    #     }
+                    #     // ...
+                    #
+                    #  Example (JavaScript):
+                    #
+                    #     // ...
+                    #
+                    #     var protoToCssColor = function(rgb_color) {
+                    #        var redFrac = rgb_color.red || 0.0;
+                    #        var greenFrac = rgb_color.green || 0.0;
+                    #        var blueFrac = rgb_color.blue || 0.0;
+                    #        var red = Math.floor(redFrac * 255);
+                    #        var green = Math.floor(greenFrac * 255);
+                    #        var blue = Math.floor(blueFrac * 255);
+                    #
+                    #        if (!('alpha' in rgb_color)) {
+                    #           return rgbToCssColor_(red, green, blue);
+                    #        }
+                    #
+                    #        var alphaFrac = rgb_color.alpha.value || 0.0;
+                    #        var rgbParams = [red, green, blue].join(',');
+                    #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
+                    #     };
+                    #
+                    #     var rgbToCssColor_ = function(red, green, blue) {
+                    #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
+                    #       var hexString = rgbNumber.toString(16);
+                    #       var missingZeros = 6 - hexString.length;
+                    #       var resultBuilder = ['#'];
+                    #       for (var i = 0; i < missingZeros; i++) {
+                    #          resultBuilder.push('0');
+                    #       }
+                    #       resultBuilder.push(hexString);
+                    #       return resultBuilder.join('');
+                    #     };
+                    #
+                    #     // ...
+                  "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+                  "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
+                      # the final pixel color is defined by the equation:
+                      #
+                      #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
+                      #
+                      # This means that a value of 1.0 corresponds to a solid color, whereas
+                      # a value of 0.0 corresponds to a completely transparent color. This
+                      # uses a wrapper message rather than a simple float scalar so that it is
+                      # possible to distinguish between a default value and the value being unset.
+                      # If omitted, this color object is to be rendered as a solid color
+                      # (as if the alpha value had been explicitly given with a value of 1.0).
+                  "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
+                  "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
+                },
+                "headerColor": { # Represents a color in the RGBA color space. This representation is designed # The color of the first row or column. If this field is set, the first
+                    # row or column will be filled with this color and the colors will
+                    # alternate between first_band_color and second_band_color starting
+                    # from the second row or column. Otherwise, the first row or column will be
+                    # filled with first_band_color and the colors will proceed to alternate
+                    # as they normally would.
+                    # for simplicity of conversion to/from color representations in various
+                    # languages over compactness; for example, the fields of this representation
+                    # can be trivially provided to the constructor of "java.awt.Color" in Java; it
+                    # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
+                    # method in iOS; and, with just a little work, it can be easily formatted into
+                    # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
+                    #
+                    # Example (Java):
+                    #
+                    #      import com.google.type.Color;
+                    #
+                    #      // ...
+                    #      public static java.awt.Color fromProto(Color protocolor) {
+                    #        float alpha = protocolor.hasAlpha()
+                    #            ? protocolor.getAlpha().getValue()
+                    #            : 1.0;
+                    #
+                    #        return new java.awt.Color(
+                    #            protocolor.getRed(),
+                    #            protocolor.getGreen(),
+                    #            protocolor.getBlue(),
+                    #            alpha);
+                    #      }
+                    #
+                    #      public static Color toProto(java.awt.Color color) {
+                    #        float red = (float) color.getRed();
+                    #        float green = (float) color.getGreen();
+                    #        float blue = (float) color.getBlue();
+                    #        float denominator = 255.0;
+                    #        Color.Builder resultBuilder =
+                    #            Color
+                    #                .newBuilder()
+                    #                .setRed(red / denominator)
+                    #                .setGreen(green / denominator)
+                    #                .setBlue(blue / denominator);
+                    #        int alpha = color.getAlpha();
+                    #        if (alpha != 255) {
+                    #          result.setAlpha(
+                    #              FloatValue
+                    #                  .newBuilder()
+                    #                  .setValue(((float) alpha) / denominator)
+                    #                  .build());
+                    #        }
+                    #        return resultBuilder.build();
+                    #      }
+                    #      // ...
+                    #
+                    # Example (iOS / Obj-C):
+                    #
+                    #      // ...
+                    #      static UIColor* fromProto(Color* protocolor) {
+                    #         float red = [protocolor red];
+                    #         float green = [protocolor green];
+                    #         float blue = [protocolor blue];
+                    #         FloatValue* alpha_wrapper = [protocolor alpha];
+                    #         float alpha = 1.0;
+                    #         if (alpha_wrapper != nil) {
+                    #           alpha = [alpha_wrapper value];
+                    #         }
+                    #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
+                    #      }
+                    #
+                    #      static Color* toProto(UIColor* color) {
+                    #          CGFloat red, green, blue, alpha;
+                    #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
+                    #            return nil;
+                    #          }
+                    #          Color* result = [Color alloc] init];
+                    #          [result setRed:red];
+                    #          [result setGreen:green];
+                    #          [result setBlue:blue];
+                    #          if (alpha <= 0.9999) {
+                    #            [result setAlpha:floatWrapperWithValue(alpha)];
+                    #          }
+                    #          [result autorelease];
+                    #          return result;
+                    #     }
+                    #     // ...
+                    #
+                    #  Example (JavaScript):
+                    #
+                    #     // ...
+                    #
+                    #     var protoToCssColor = function(rgb_color) {
+                    #        var redFrac = rgb_color.red || 0.0;
+                    #        var greenFrac = rgb_color.green || 0.0;
+                    #        var blueFrac = rgb_color.blue || 0.0;
+                    #        var red = Math.floor(redFrac * 255);
+                    #        var green = Math.floor(greenFrac * 255);
+                    #        var blue = Math.floor(blueFrac * 255);
+                    #
+                    #        if (!('alpha' in rgb_color)) {
+                    #           return rgbToCssColor_(red, green, blue);
+                    #        }
+                    #
+                    #        var alphaFrac = rgb_color.alpha.value || 0.0;
+                    #        var rgbParams = [red, green, blue].join(',');
+                    #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
+                    #     };
+                    #
+                    #     var rgbToCssColor_ = function(red, green, blue) {
+                    #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
+                    #       var hexString = rgbNumber.toString(16);
+                    #       var missingZeros = 6 - hexString.length;
+                    #       var resultBuilder = ['#'];
+                    #       for (var i = 0; i < missingZeros; i++) {
+                    #          resultBuilder.push('0');
+                    #       }
+                    #       resultBuilder.push(hexString);
+                    #       return resultBuilder.join('');
+                    #     };
+                    #
+                    #     // ...
+                  "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+                  "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
+                      # the final pixel color is defined by the equation:
+                      #
+                      #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
+                      #
+                      # This means that a value of 1.0 corresponds to a solid color, whereas
+                      # a value of 0.0 corresponds to a completely transparent color. This
+                      # uses a wrapper message rather than a simple float scalar so that it is
+                      # possible to distinguish between a default value and the value being unset.
+                      # If omitted, this color object is to be rendered as a solid color
+                      # (as if the alpha value had been explicitly given with a value of 1.0).
+                  "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
+                  "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
+                },
+                "footerColor": { # Represents a color in the RGBA color space. This representation is designed # The color of the last row or column. If this field is not set, the last
+                    # row or column will be filled with either first_band_color or
+                    # second_band_color, depending on the color of the previous row or
+                    # column.
+                    # for simplicity of conversion to/from color representations in various
+                    # languages over compactness; for example, the fields of this representation
+                    # can be trivially provided to the constructor of "java.awt.Color" in Java; it
+                    # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
+                    # method in iOS; and, with just a little work, it can be easily formatted into
+                    # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
+                    #
+                    # Example (Java):
+                    #
+                    #      import com.google.type.Color;
+                    #
+                    #      // ...
+                    #      public static java.awt.Color fromProto(Color protocolor) {
+                    #        float alpha = protocolor.hasAlpha()
+                    #            ? protocolor.getAlpha().getValue()
+                    #            : 1.0;
+                    #
+                    #        return new java.awt.Color(
+                    #            protocolor.getRed(),
+                    #            protocolor.getGreen(),
+                    #            protocolor.getBlue(),
+                    #            alpha);
+                    #      }
+                    #
+                    #      public static Color toProto(java.awt.Color color) {
+                    #        float red = (float) color.getRed();
+                    #        float green = (float) color.getGreen();
+                    #        float blue = (float) color.getBlue();
+                    #        float denominator = 255.0;
+                    #        Color.Builder resultBuilder =
+                    #            Color
+                    #                .newBuilder()
+                    #                .setRed(red / denominator)
+                    #                .setGreen(green / denominator)
+                    #                .setBlue(blue / denominator);
+                    #        int alpha = color.getAlpha();
+                    #        if (alpha != 255) {
+                    #          result.setAlpha(
+                    #              FloatValue
+                    #                  .newBuilder()
+                    #                  .setValue(((float) alpha) / denominator)
+                    #                  .build());
+                    #        }
+                    #        return resultBuilder.build();
+                    #      }
+                    #      // ...
+                    #
+                    # Example (iOS / Obj-C):
+                    #
+                    #      // ...
+                    #      static UIColor* fromProto(Color* protocolor) {
+                    #         float red = [protocolor red];
+                    #         float green = [protocolor green];
+                    #         float blue = [protocolor blue];
+                    #         FloatValue* alpha_wrapper = [protocolor alpha];
+                    #         float alpha = 1.0;
+                    #         if (alpha_wrapper != nil) {
+                    #           alpha = [alpha_wrapper value];
+                    #         }
+                    #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
+                    #      }
+                    #
+                    #      static Color* toProto(UIColor* color) {
+                    #          CGFloat red, green, blue, alpha;
+                    #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
+                    #            return nil;
+                    #          }
+                    #          Color* result = [Color alloc] init];
+                    #          [result setRed:red];
+                    #          [result setGreen:green];
+                    #          [result setBlue:blue];
+                    #          if (alpha <= 0.9999) {
+                    #            [result setAlpha:floatWrapperWithValue(alpha)];
+                    #          }
+                    #          [result autorelease];
+                    #          return result;
+                    #     }
+                    #     // ...
+                    #
+                    #  Example (JavaScript):
+                    #
+                    #     // ...
+                    #
+                    #     var protoToCssColor = function(rgb_color) {
+                    #        var redFrac = rgb_color.red || 0.0;
+                    #        var greenFrac = rgb_color.green || 0.0;
+                    #        var blueFrac = rgb_color.blue || 0.0;
+                    #        var red = Math.floor(redFrac * 255);
+                    #        var green = Math.floor(greenFrac * 255);
+                    #        var blue = Math.floor(blueFrac * 255);
+                    #
+                    #        if (!('alpha' in rgb_color)) {
+                    #           return rgbToCssColor_(red, green, blue);
+                    #        }
+                    #
+                    #        var alphaFrac = rgb_color.alpha.value || 0.0;
+                    #        var rgbParams = [red, green, blue].join(',');
+                    #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
+                    #     };
+                    #
+                    #     var rgbToCssColor_ = function(red, green, blue) {
+                    #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
+                    #       var hexString = rgbNumber.toString(16);
+                    #       var missingZeros = 6 - hexString.length;
+                    #       var resultBuilder = ['#'];
+                    #       for (var i = 0; i < missingZeros; i++) {
+                    #          resultBuilder.push('0');
+                    #       }
+                    #       resultBuilder.push(hexString);
+                    #       return resultBuilder.join('');
+                    #     };
+                    #
+                    #     // ...
+                  "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+                  "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
+                      # the final pixel color is defined by the equation:
+                      #
+                      #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
+                      #
+                      # This means that a value of 1.0 corresponds to a solid color, whereas
+                      # a value of 0.0 corresponds to a completely transparent color. This
+                      # uses a wrapper message rather than a simple float scalar so that it is
+                      # possible to distinguish between a default value and the value being unset.
+                      # If omitted, this color object is to be rendered as a solid color
+                      # (as if the alpha value had been explicitly given with a value of 1.0).
+                  "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
+                  "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
+                },
+                "firstBandColor": { # Represents a color in the RGBA color space. This representation is designed # The first color that is alternating. (Required)
+                    # for simplicity of conversion to/from color representations in various
+                    # languages over compactness; for example, the fields of this representation
+                    # can be trivially provided to the constructor of "java.awt.Color" in Java; it
+                    # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
+                    # method in iOS; and, with just a little work, it can be easily formatted into
+                    # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
+                    #
+                    # Example (Java):
+                    #
+                    #      import com.google.type.Color;
+                    #
+                    #      // ...
+                    #      public static java.awt.Color fromProto(Color protocolor) {
+                    #        float alpha = protocolor.hasAlpha()
+                    #            ? protocolor.getAlpha().getValue()
+                    #            : 1.0;
+                    #
+                    #        return new java.awt.Color(
+                    #            protocolor.getRed(),
+                    #            protocolor.getGreen(),
+                    #            protocolor.getBlue(),
+                    #            alpha);
+                    #      }
+                    #
+                    #      public static Color toProto(java.awt.Color color) {
+                    #        float red = (float) color.getRed();
+                    #        float green = (float) color.getGreen();
+                    #        float blue = (float) color.getBlue();
+                    #        float denominator = 255.0;
+                    #        Color.Builder resultBuilder =
+                    #            Color
+                    #                .newBuilder()
+                    #                .setRed(red / denominator)
+                    #                .setGreen(green / denominator)
+                    #                .setBlue(blue / denominator);
+                    #        int alpha = color.getAlpha();
+                    #        if (alpha != 255) {
+                    #          result.setAlpha(
+                    #              FloatValue
+                    #                  .newBuilder()
+                    #                  .setValue(((float) alpha) / denominator)
+                    #                  .build());
+                    #        }
+                    #        return resultBuilder.build();
+                    #      }
+                    #      // ...
+                    #
+                    # Example (iOS / Obj-C):
+                    #
+                    #      // ...
+                    #      static UIColor* fromProto(Color* protocolor) {
+                    #         float red = [protocolor red];
+                    #         float green = [protocolor green];
+                    #         float blue = [protocolor blue];
+                    #         FloatValue* alpha_wrapper = [protocolor alpha];
+                    #         float alpha = 1.0;
+                    #         if (alpha_wrapper != nil) {
+                    #           alpha = [alpha_wrapper value];
+                    #         }
+                    #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
+                    #      }
+                    #
+                    #      static Color* toProto(UIColor* color) {
+                    #          CGFloat red, green, blue, alpha;
+                    #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
+                    #            return nil;
+                    #          }
+                    #          Color* result = [Color alloc] init];
+                    #          [result setRed:red];
+                    #          [result setGreen:green];
+                    #          [result setBlue:blue];
+                    #          if (alpha <= 0.9999) {
+                    #            [result setAlpha:floatWrapperWithValue(alpha)];
+                    #          }
+                    #          [result autorelease];
+                    #          return result;
+                    #     }
+                    #     // ...
+                    #
+                    #  Example (JavaScript):
+                    #
+                    #     // ...
+                    #
+                    #     var protoToCssColor = function(rgb_color) {
+                    #        var redFrac = rgb_color.red || 0.0;
+                    #        var greenFrac = rgb_color.green || 0.0;
+                    #        var blueFrac = rgb_color.blue || 0.0;
+                    #        var red = Math.floor(redFrac * 255);
+                    #        var green = Math.floor(greenFrac * 255);
+                    #        var blue = Math.floor(blueFrac * 255);
+                    #
+                    #        if (!('alpha' in rgb_color)) {
+                    #           return rgbToCssColor_(red, green, blue);
+                    #        }
+                    #
+                    #        var alphaFrac = rgb_color.alpha.value || 0.0;
+                    #        var rgbParams = [red, green, blue].join(',');
+                    #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
+                    #     };
+                    #
+                    #     var rgbToCssColor_ = function(red, green, blue) {
+                    #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
+                    #       var hexString = rgbNumber.toString(16);
+                    #       var missingZeros = 6 - hexString.length;
+                    #       var resultBuilder = ['#'];
+                    #       for (var i = 0; i < missingZeros; i++) {
+                    #          resultBuilder.push('0');
+                    #       }
+                    #       resultBuilder.push(hexString);
+                    #       return resultBuilder.join('');
+                    #     };
+                    #
+                    #     // ...
+                  "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+                  "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
+                      # the final pixel color is defined by the equation:
+                      #
+                      #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
+                      #
+                      # This means that a value of 1.0 corresponds to a solid color, whereas
+                      # a value of 0.0 corresponds to a completely transparent color. This
+                      # uses a wrapper message rather than a simple float scalar so that it is
+                      # possible to distinguish between a default value and the value being unset.
+                      # If omitted, this color object is to be rendered as a solid color
+                      # (as if the alpha value had been explicitly given with a value of 1.0).
+                  "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
+                  "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
+                },
+              },
+              "bandedRangeId": 42, # The id of the banded range.
+            },
+          ],
+          "merges": [ # The ranges that are merged together.
+            { # A range on a sheet.
+                # All indexes are zero-based.
+                # Indexes are half open, e.g the start index is inclusive
+                # and the end index is exclusive -- [start_index, end_index).
+                # Missing indexes indicate the range is unbounded on that side.
+                #
+                # For example, if `"Sheet1"` is sheet ID 0, then:
+                #
+                #   `Sheet1!A1:A1 == sheet_id: 0,
+                #                   start_row_index: 0, end_row_index: 1,
+                #                   start_column_index: 0, end_column_index: 1`
+                #
+                #   `Sheet1!A3:B4 == sheet_id: 0,
+                #                   start_row_index: 2, end_row_index: 4,
+                #                   start_column_index: 0, end_column_index: 2`
+                #
+                #   `Sheet1!A:B == sheet_id: 0,
+                #                 start_column_index: 0, end_column_index: 2`
+                #
+                #   `Sheet1!A5:B == sheet_id: 0,
+                #                  start_row_index: 4,
+                #                  start_column_index: 0, end_column_index: 2`
+                #
+                #   `Sheet1 == sheet_id:0`
+                #
+                # The start index must always be less than or equal to the end index.
+                # If the start index equals the end index, then the range is empty.
+                # Empty ranges are typically not meaningful and are usually rendered in the
+                # UI as `#REF!`.
+              "endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
+              "startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
+              "sheetId": 42, # The sheet this range is on.
+              "startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
+              "endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
+            },
+          ],
+          "basicFilter": { # The default filter associated with a sheet. # The filter on this sheet, if any.
+            "range": { # A range on a sheet. # The range the filter covers.
+                # All indexes are zero-based.
+                # Indexes are half open, e.g the start index is inclusive
+                # and the end index is exclusive -- [start_index, end_index).
+                # Missing indexes indicate the range is unbounded on that side.
+                #
+                # For example, if `"Sheet1"` is sheet ID 0, then:
+                #
+                #   `Sheet1!A1:A1 == sheet_id: 0,
+                #                   start_row_index: 0, end_row_index: 1,
+                #                   start_column_index: 0, end_column_index: 1`
+                #
+                #   `Sheet1!A3:B4 == sheet_id: 0,
+                #                   start_row_index: 2, end_row_index: 4,
+                #                   start_column_index: 0, end_column_index: 2`
+                #
+                #   `Sheet1!A:B == sheet_id: 0,
+                #                 start_column_index: 0, end_column_index: 2`
+                #
+                #   `Sheet1!A5:B == sheet_id: 0,
+                #                  start_row_index: 4,
+                #                  start_column_index: 0, end_column_index: 2`
+                #
+                #   `Sheet1 == sheet_id:0`
+                #
+                # The start index must always be less than or equal to the end index.
+                # If the start index equals the end index, then the range is empty.
+                # Empty ranges are typically not meaningful and are usually rendered in the
+                # UI as `#REF!`.
+              "endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
+              "startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
+              "sheetId": 42, # The sheet this range is on.
+              "startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
+              "endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
+            },
+            "sortSpecs": [ # The sort order per column. Later specifications are used when values
+                # are equal in the earlier specifications.
+              { # A sort order associated with a specific column or row.
+                "sortOrder": "A String", # The order data should be sorted.
+                "dimensionIndex": 42, # The dimension the sort should be applied to.
+              },
+            ],
+            "criteria": { # The criteria for showing/hiding values per column.
+                # The map's key is the column index, and the value is the criteria for
+                # that column.
+              "a_key": { # Criteria for showing/hiding rows in a filter or filter view.
+                "hiddenValues": [ # Values that should be hidden.
+                  "A String",
+                ],
+                "condition": { # A condition that can evaluate to true or false. # A condition that must be true for values to be shown.
+                    # (This does not override hiddenValues -- if a value is listed there,
+                    #  it will still be hidden.)
+                    # BooleanConditions are used by conditional formatting,
+                    # data validation, and the criteria in filters.
+                  "type": "A String", # The type of condition.
+                  "values": [ # The values of the condition. The number of supported values depends
+                      # on the condition type.  Some support zero values,
+                      # others one or two values,
+                      # and ConditionType.ONE_OF_LIST supports an arbitrary number of values.
+                    { # The value of the condition.
+                      "relativeDate": "A String", # A relative date (based on the current date).
+                          # Valid only if the type is
+                          # DATE_BEFORE,
+                          # DATE_AFTER,
+                          # DATE_ON_OR_BEFORE or
+                          # DATE_ON_OR_AFTER.
+                          #
+                          # Relative dates are not supported in data validation.
+                          # They are supported only in conditional formatting and
+                          # conditional filters.
+                      "userEnteredValue": "A String", # A value the condition is based on.
+                          # The value will be parsed as if the user typed into a cell.
+                          # Formulas are supported (and must begin with an `=`).
+                    },
+                  ],
+                },
+              },
+            },
+          },
+          "charts": [ # The specifications of every chart on this sheet.
+            { # A chart embedded in a sheet.
+              "chartId": 42, # The ID of the chart.
+              "position": { # The position of an embedded object such as a chart. # The position of the chart.
+                "newSheet": True or False, # If true, the embedded object will be put on a new sheet whose ID
+                    # is chosen for you. Used only when writing.
+                "sheetId": 42, # The sheet this is on. Set only if the embedded object
+                    # is on its own sheet. Must be non-negative.
+                "overlayPosition": { # The location an object is overlaid on top of a grid. # The position at which the object is overlaid on top of a grid.
+                  "anchorCell": { # A coordinate in a sheet. # The cell the object is anchored to.
+                      # All indexes are zero-based.
+                    "rowIndex": 42, # The row index of the coordinate.
+                    "columnIndex": 42, # The column index of the coordinate.
+                    "sheetId": 42, # The sheet this coordinate is on.
+                  },
+                  "offsetYPixels": 42, # The vertical offset, in pixels, that the object is offset
+                      # from the anchor cell.
+                  "widthPixels": 42, # The width of the object, in pixels. Defaults to 600.
+                  "offsetXPixels": 42, # The horizontal offset, in pixels, that the object is offset
+                      # from the anchor cell.
+                  "heightPixels": 42, # The height of the object, in pixels. Defaults to 371.
+                },
+              },
+              "spec": { # The specifications of a chart. # The specification of the chart.
+                "hiddenDimensionStrategy": "A String", # Determines how the charts will use hidden rows or columns.
+                "pieChart": { # A <a href="/chart/interactive/docs/gallery/piechart">pie chart</a>. # A pie chart specification.
+                  "series": { # The data included in a domain or series. # The data that covers the one and only series of the pie chart.
+                    "sourceRange": { # Source ranges for a chart. # The source ranges of the data.
+                      "sources": [ # The ranges of data for a series or domain.
+                          # Exactly one dimension must have a length of 1,
+                          # and all sources in the list must have the same dimension
+                          # with length 1.
+                          # The domain (if it exists) & all series must have the same number
+                          # of source ranges. If using more than one source range, then the source
+                          # range at a given offset must be contiguous across the domain and series.
+                          #
+                          # For example, these are valid configurations:
+                          #
+                          #     domain sources: A1:A5
+                          #     series1 sources: B1:B5
+                          #     series2 sources: D6:D10
+                          #
+                          #     domain sources: A1:A5, C10:C12
+                          #     series1 sources: B1:B5, D10:D12
+                          #     series2 sources: C1:C5, E10:E12
+                        { # A range on a sheet.
+                            # All indexes are zero-based.
+                            # Indexes are half open, e.g the start index is inclusive
+                            # and the end index is exclusive -- [start_index, end_index).
+                            # Missing indexes indicate the range is unbounded on that side.
+                            #
+                            # For example, if `"Sheet1"` is sheet ID 0, then:
+                            #
+                            #   `Sheet1!A1:A1 == sheet_id: 0,
+                            #                   start_row_index: 0, end_row_index: 1,
+                            #                   start_column_index: 0, end_column_index: 1`
+                            #
+                            #   `Sheet1!A3:B4 == sheet_id: 0,
+                            #                   start_row_index: 2, end_row_index: 4,
+                            #                   start_column_index: 0, end_column_index: 2`
+                            #
+                            #   `Sheet1!A:B == sheet_id: 0,
+                            #                 start_column_index: 0, end_column_index: 2`
+                            #
+                            #   `Sheet1!A5:B == sheet_id: 0,
+                            #                  start_row_index: 4,
+                            #                  start_column_index: 0, end_column_index: 2`
+                            #
+                            #   `Sheet1 == sheet_id:0`
+                            #
+                            # The start index must always be less than or equal to the end index.
+                            # If the start index equals the end index, then the range is empty.
+                            # Empty ranges are typically not meaningful and are usually rendered in the
+                            # UI as `#REF!`.
+                          "endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
+                          "startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
+                          "sheetId": 42, # The sheet this range is on.
+                          "startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
+                          "endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
+                        },
+                      ],
+                    },
+                  },
+                  "domain": { # The data included in a domain or series. # The data that covers the domain of the pie chart.
+                    "sourceRange": { # Source ranges for a chart. # The source ranges of the data.
+                      "sources": [ # The ranges of data for a series or domain.
+                          # Exactly one dimension must have a length of 1,
+                          # and all sources in the list must have the same dimension
+                          # with length 1.
+                          # The domain (if it exists) & all series must have the same number
+                          # of source ranges. If using more than one source range, then the source
+                          # range at a given offset must be contiguous across the domain and series.
+                          #
+                          # For example, these are valid configurations:
+                          #
+                          #     domain sources: A1:A5
+                          #     series1 sources: B1:B5
+                          #     series2 sources: D6:D10
+                          #
+                          #     domain sources: A1:A5, C10:C12
+                          #     series1 sources: B1:B5, D10:D12
+                          #     series2 sources: C1:C5, E10:E12
+                        { # A range on a sheet.
+                            # All indexes are zero-based.
+                            # Indexes are half open, e.g the start index is inclusive
+                            # and the end index is exclusive -- [start_index, end_index).
+                            # Missing indexes indicate the range is unbounded on that side.
+                            #
+                            # For example, if `"Sheet1"` is sheet ID 0, then:
+                            #
+                            #   `Sheet1!A1:A1 == sheet_id: 0,
+                            #                   start_row_index: 0, end_row_index: 1,
+                            #                   start_column_index: 0, end_column_index: 1`
+                            #
+                            #   `Sheet1!A3:B4 == sheet_id: 0,
+                            #                   start_row_index: 2, end_row_index: 4,
+                            #                   start_column_index: 0, end_column_index: 2`
+                            #
+                            #   `Sheet1!A:B == sheet_id: 0,
+                            #                 start_column_index: 0, end_column_index: 2`
+                            #
+                            #   `Sheet1!A5:B == sheet_id: 0,
+                            #                  start_row_index: 4,
+                            #                  start_column_index: 0, end_column_index: 2`
+                            #
+                            #   `Sheet1 == sheet_id:0`
+                            #
+                            # The start index must always be less than or equal to the end index.
+                            # If the start index equals the end index, then the range is empty.
+                            # Empty ranges are typically not meaningful and are usually rendered in the
+                            # UI as `#REF!`.
+                          "endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
+                          "startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
+                          "sheetId": 42, # The sheet this range is on.
+                          "startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
+                          "endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
+                        },
+                      ],
+                    },
+                  },
+                  "threeDimensional": True or False, # True if the pie is three dimensional.
+                  "legendPosition": "A String", # Where the legend of the pie chart should be drawn.
+                  "pieHole": 3.14, # The size of the hole in the pie chart.
+                },
+                "basicChart": { # The specification for a basic chart.  See BasicChartType for the list # A basic chart specification, can be one of many kinds of charts.
+                    # See BasicChartType for the list of all
+                    # charts this supports.
+                    # of charts this supports.
+                  "headerCount": 42, # The number of rows or columns in the data that are "headers".
+                      # If not set, Google Sheets will guess how many rows are headers based
+                      # on the data.
+                      #
+                      # (Note that BasicChartAxis.title may override the axis title
+                      #  inferred from the header values.)
+                  "series": [ # The data this chart is visualizing.
+                    { # A single series of data in a chart.
+                        # For example, if charting stock prices over time, multiple series may exist,
+                        # one for the "Open Price", "High Price", "Low Price" and "Close Price".
+                      "series": { # The data included in a domain or series. # The data being visualized in this chart series.
+                        "sourceRange": { # Source ranges for a chart. # The source ranges of the data.
+                          "sources": [ # The ranges of data for a series or domain.
+                              # Exactly one dimension must have a length of 1,
+                              # and all sources in the list must have the same dimension
+                              # with length 1.
+                              # The domain (if it exists) & all series must have the same number
+                              # of source ranges. If using more than one source range, then the source
+                              # range at a given offset must be contiguous across the domain and series.
+                              #
+                              # For example, these are valid configurations:
+                              #
+                              #     domain sources: A1:A5
+                              #     series1 sources: B1:B5
+                              #     series2 sources: D6:D10
+                              #
+                              #     domain sources: A1:A5, C10:C12
+                              #     series1 sources: B1:B5, D10:D12
+                              #     series2 sources: C1:C5, E10:E12
+                            { # A range on a sheet.
+                                # All indexes are zero-based.
+                                # Indexes are half open, e.g the start index is inclusive
+                                # and the end index is exclusive -- [start_index, end_index).
+                                # Missing indexes indicate the range is unbounded on that side.
+                                #
+                                # For example, if `"Sheet1"` is sheet ID 0, then:
+                                #
+                                #   `Sheet1!A1:A1 == sheet_id: 0,
+                                #                   start_row_index: 0, end_row_index: 1,
+                                #                   start_column_index: 0, end_column_index: 1`
+                                #
+                                #   `Sheet1!A3:B4 == sheet_id: 0,
+                                #                   start_row_index: 2, end_row_index: 4,
+                                #                   start_column_index: 0, end_column_index: 2`
+                                #
+                                #   `Sheet1!A:B == sheet_id: 0,
+                                #                 start_column_index: 0, end_column_index: 2`
+                                #
+                                #   `Sheet1!A5:B == sheet_id: 0,
+                                #                  start_row_index: 4,
+                                #                  start_column_index: 0, end_column_index: 2`
+                                #
+                                #   `Sheet1 == sheet_id:0`
+                                #
+                                # The start index must always be less than or equal to the end index.
+                                # If the start index equals the end index, then the range is empty.
+                                # Empty ranges are typically not meaningful and are usually rendered in the
+                                # UI as `#REF!`.
+                              "endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
+                              "startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
+                              "sheetId": 42, # The sheet this range is on.
+                              "startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
+                              "endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
+                            },
+                          ],
+                        },
+                      },
+                      "targetAxis": "A String", # The minor axis that will specify the range of values for this series.
+                          # For example, if charting stocks over time, the "Volume" series
+                          # may want to be pinned to the right with the prices pinned to the left,
+                          # because the scale of trading volume is different than the scale of
+                          # prices.
+                          # It is an error to specify an axis that isn't a valid minor axis
+                          # for the chart's type.
+                      "type": "A String", # The type of this series. Valid only if the
+                          # chartType is
+                          # COMBO.
+                          # Different types will change the way the series is visualized.
+                          # Only LINE, AREA,
+                          # and COLUMN are supported.
+                    },
+                  ],
+                  "legendPosition": "A String", # The position of the chart legend.
+                  "domains": [ # The domain of data this is charting.
+                      # Only a single domain is currently supported.
+                    { # The domain of a chart.
+                        # For example, if charting stock prices over time, this would be the date.
+                      "domain": { # The data included in a domain or series. # The data of the domain. For example, if charting stock prices over time,
+                          # this is the data representing the dates.
+                        "sourceRange": { # Source ranges for a chart. # The source ranges of the data.
+                          "sources": [ # The ranges of data for a series or domain.
+                              # Exactly one dimension must have a length of 1,
+                              # and all sources in the list must have the same dimension
+                              # with length 1.
+                              # The domain (if it exists) & all series must have the same number
+                              # of source ranges. If using more than one source range, then the source
+                              # range at a given offset must be contiguous across the domain and series.
+                              #
+                              # For example, these are valid configurations:
+                              #
+                              #     domain sources: A1:A5
+                              #     series1 sources: B1:B5
+                              #     series2 sources: D6:D10
+                              #
+                              #     domain sources: A1:A5, C10:C12
+                              #     series1 sources: B1:B5, D10:D12
+                              #     series2 sources: C1:C5, E10:E12
+                            { # A range on a sheet.
+                                # All indexes are zero-based.
+                                # Indexes are half open, e.g the start index is inclusive
+                                # and the end index is exclusive -- [start_index, end_index).
+                                # Missing indexes indicate the range is unbounded on that side.
+                                #
+                                # For example, if `"Sheet1"` is sheet ID 0, then:
+                                #
+                                #   `Sheet1!A1:A1 == sheet_id: 0,
+                                #                   start_row_index: 0, end_row_index: 1,
+                                #                   start_column_index: 0, end_column_index: 1`
+                                #
+                                #   `Sheet1!A3:B4 == sheet_id: 0,
+                                #                   start_row_index: 2, end_row_index: 4,
+                                #                   start_column_index: 0, end_column_index: 2`
+                                #
+                                #   `Sheet1!A:B == sheet_id: 0,
+                                #                 start_column_index: 0, end_column_index: 2`
+                                #
+                                #   `Sheet1!A5:B == sheet_id: 0,
+                                #                  start_row_index: 4,
+                                #                  start_column_index: 0, end_column_index: 2`
+                                #
+                                #   `Sheet1 == sheet_id:0`
+                                #
+                                # The start index must always be less than or equal to the end index.
+                                # If the start index equals the end index, then the range is empty.
+                                # Empty ranges are typically not meaningful and are usually rendered in the
+                                # UI as `#REF!`.
+                              "endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
+                              "startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
+                              "sheetId": 42, # The sheet this range is on.
+                              "startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
+                              "endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
+                            },
+                          ],
+                        },
+                      },
+                    },
+                  ],
+                  "chartType": "A String", # The type of the chart.
+                  "axis": [ # The axis on the chart.
+                    { # An axis of the chart.
+                        # A chart may not have more than one axis per
+                        # axis position.
+                      "position": "A String", # The position of this axis.
+                      "format": { # The format of a run of text in a cell. # The format of the title.
+                          # Only valid if the axis is not associated with the domain.
+                          # Absent values indicate that the field isn't specified.
+                        "foregroundColor": { # Represents a color in the RGBA color space. This representation is designed # The foreground color of the text.
+                            # for simplicity of conversion to/from color representations in various
+                            # languages over compactness; for example, the fields of this representation
+                            # can be trivially provided to the constructor of "java.awt.Color" in Java; it
+                            # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
+                            # method in iOS; and, with just a little work, it can be easily formatted into
+                            # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
+                            #
+                            # Example (Java):
+                            #
+                            #      import com.google.type.Color;
+                            #
+                            #      // ...
+                            #      public static java.awt.Color fromProto(Color protocolor) {
+                            #        float alpha = protocolor.hasAlpha()
+                            #            ? protocolor.getAlpha().getValue()
+                            #            : 1.0;
+                            #
+                            #        return new java.awt.Color(
+                            #            protocolor.getRed(),
+                            #            protocolor.getGreen(),
+                            #            protocolor.getBlue(),
+                            #            alpha);
+                            #      }
+                            #
+                            #      public static Color toProto(java.awt.Color color) {
+                            #        float red = (float) color.getRed();
+                            #        float green = (float) color.getGreen();
+                            #        float blue = (float) color.getBlue();
+                            #        float denominator = 255.0;
+                            #        Color.Builder resultBuilder =
+                            #            Color
+                            #                .newBuilder()
+                            #                .setRed(red / denominator)
+                            #                .setGreen(green / denominator)
+                            #                .setBlue(blue / denominator);
+                            #        int alpha = color.getAlpha();
+                            #        if (alpha != 255) {
+                            #          result.setAlpha(
+                            #              FloatValue
+                            #                  .newBuilder()
+                            #                  .setValue(((float) alpha) / denominator)
+                            #                  .build());
+                            #        }
+                            #        return resultBuilder.build();
+                            #      }
+                            #      // ...
+                            #
+                            # Example (iOS / Obj-C):
+                            #
+                            #      // ...
+                            #      static UIColor* fromProto(Color* protocolor) {
+                            #         float red = [protocolor red];
+                            #         float green = [protocolor green];
+                            #         float blue = [protocolor blue];
+                            #         FloatValue* alpha_wrapper = [protocolor alpha];
+                            #         float alpha = 1.0;
+                            #         if (alpha_wrapper != nil) {
+                            #           alpha = [alpha_wrapper value];
+                            #         }
+                            #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
+                            #      }
+                            #
+                            #      static Color* toProto(UIColor* color) {
+                            #          CGFloat red, green, blue, alpha;
+                            #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
+                            #            return nil;
+                            #          }
+                            #          Color* result = [Color alloc] init];
+                            #          [result setRed:red];
+                            #          [result setGreen:green];
+                            #          [result setBlue:blue];
+                            #          if (alpha <= 0.9999) {
+                            #            [result setAlpha:floatWrapperWithValue(alpha)];
+                            #          }
+                            #          [result autorelease];
+                            #          return result;
+                            #     }
+                            #     // ...
+                            #
+                            #  Example (JavaScript):
+                            #
+                            #     // ...
+                            #
+                            #     var protoToCssColor = function(rgb_color) {
+                            #        var redFrac = rgb_color.red || 0.0;
+                            #        var greenFrac = rgb_color.green || 0.0;
+                            #        var blueFrac = rgb_color.blue || 0.0;
+                            #        var red = Math.floor(redFrac * 255);
+                            #        var green = Math.floor(greenFrac * 255);
+                            #        var blue = Math.floor(blueFrac * 255);
+                            #
+                            #        if (!('alpha' in rgb_color)) {
+                            #           return rgbToCssColor_(red, green, blue);
+                            #        }
+                            #
+                            #        var alphaFrac = rgb_color.alpha.value || 0.0;
+                            #        var rgbParams = [red, green, blue].join(',');
+                            #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
+                            #     };
+                            #
+                            #     var rgbToCssColor_ = function(red, green, blue) {
+                            #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
+                            #       var hexString = rgbNumber.toString(16);
+                            #       var missingZeros = 6 - hexString.length;
+                            #       var resultBuilder = ['#'];
+                            #       for (var i = 0; i < missingZeros; i++) {
+                            #          resultBuilder.push('0');
+                            #       }
+                            #       resultBuilder.push(hexString);
+                            #       return resultBuilder.join('');
+                            #     };
+                            #
+                            #     // ...
+                          "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+                          "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
+                              # the final pixel color is defined by the equation:
+                              #
+                              #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
+                              #
+                              # This means that a value of 1.0 corresponds to a solid color, whereas
+                              # a value of 0.0 corresponds to a completely transparent color. This
+                              # uses a wrapper message rather than a simple float scalar so that it is
+                              # possible to distinguish between a default value and the value being unset.
+                              # If omitted, this color object is to be rendered as a solid color
+                              # (as if the alpha value had been explicitly given with a value of 1.0).
+                          "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
+                          "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
+                        },
+                        "bold": True or False, # True if the text is bold.
+                        "strikethrough": True or False, # True if the text has a strikethrough.
+                        "fontFamily": "A String", # The font family.
+                        "fontSize": 42, # The size of the font.
+                        "italic": True or False, # True if the text is italicized.
+                        "underline": True or False, # True if the text is underlined.
+                      },
+                      "title": "A String", # The title of this axis. If set, this overrides any title inferred
+                          # from headers of the data.
+                    },
+                  ],
+                },
+                "title": "A String", # The title of the chart.
+              },
+            },
+          ],
+          "filterViews": [ # The filter views in this sheet.
+            { # A filter view.
+              "title": "A String", # The name of the filter view.
+              "namedRangeId": "A String", # The named range this filter view is backed by, if any.
+                  #
+                  # When writing, only one of range or named_range_id
+                  # may be set.
+              "filterViewId": 42, # The ID of the filter view.
+              "range": { # A range on a sheet. # The range this filter view covers.
+                  #
+                  # When writing, only one of range or named_range_id
+                  # may be set.
+                  # All indexes are zero-based.
+                  # Indexes are half open, e.g the start index is inclusive
+                  # and the end index is exclusive -- [start_index, end_index).
+                  # Missing indexes indicate the range is unbounded on that side.
+                  #
+                  # For example, if `"Sheet1"` is sheet ID 0, then:
+                  #
+                  #   `Sheet1!A1:A1 == sheet_id: 0,
+                  #                   start_row_index: 0, end_row_index: 1,
+                  #                   start_column_index: 0, end_column_index: 1`
+                  #
+                  #   `Sheet1!A3:B4 == sheet_id: 0,
+                  #                   start_row_index: 2, end_row_index: 4,
+                  #                   start_column_index: 0, end_column_index: 2`
+                  #
+                  #   `Sheet1!A:B == sheet_id: 0,
+                  #                 start_column_index: 0, end_column_index: 2`
+                  #
+                  #   `Sheet1!A5:B == sheet_id: 0,
+                  #                  start_row_index: 4,
+                  #                  start_column_index: 0, end_column_index: 2`
+                  #
+                  #   `Sheet1 == sheet_id:0`
+                  #
+                  # The start index must always be less than or equal to the end index.
+                  # If the start index equals the end index, then the range is empty.
+                  # Empty ranges are typically not meaningful and are usually rendered in the
+                  # UI as `#REF!`.
+                "endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
+                "startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
+                "sheetId": 42, # The sheet this range is on.
+                "startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
+                "endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
+              },
+              "sortSpecs": [ # The sort order per column. Later specifications are used when values
+                  # are equal in the earlier specifications.
+                { # A sort order associated with a specific column or row.
+                  "sortOrder": "A String", # The order data should be sorted.
+                  "dimensionIndex": 42, # The dimension the sort should be applied to.
+                },
+              ],
+              "criteria": { # The criteria for showing/hiding values per column.
+                  # The map's key is the column index, and the value is the criteria for
+                  # that column.
+                "a_key": { # Criteria for showing/hiding rows in a filter or filter view.
+                  "hiddenValues": [ # Values that should be hidden.
+                    "A String",
+                  ],
+                  "condition": { # A condition that can evaluate to true or false. # A condition that must be true for values to be shown.
+                      # (This does not override hiddenValues -- if a value is listed there,
+                      #  it will still be hidden.)
+                      # BooleanConditions are used by conditional formatting,
+                      # data validation, and the criteria in filters.
+                    "type": "A String", # The type of condition.
+                    "values": [ # The values of the condition. The number of supported values depends
+                        # on the condition type.  Some support zero values,
+                        # others one or two values,
+                        # and ConditionType.ONE_OF_LIST supports an arbitrary number of values.
+                      { # The value of the condition.
+                        "relativeDate": "A String", # A relative date (based on the current date).
+                            # Valid only if the type is
+                            # DATE_BEFORE,
+                            # DATE_AFTER,
+                            # DATE_ON_OR_BEFORE or
+                            # DATE_ON_OR_AFTER.
+                            #
+                            # Relative dates are not supported in data validation.
+                            # They are supported only in conditional formatting and
+                            # conditional filters.
+                        "userEnteredValue": "A String", # A value the condition is based on.
+                            # The value will be parsed as if the user typed into a cell.
+                            # Formulas are supported (and must begin with an `=`).
+                      },
+                    ],
+                  },
+                },
+              },
+            },
+          ],
+          "protectedRanges": [ # The protected ranges in this sheet.
+            { # A protected range.
+              "unprotectedRanges": [ # The list of unprotected ranges within a protected sheet.
+                  # Unprotected ranges are only supported on protected sheets.
+                { # A range on a sheet.
+                    # All indexes are zero-based.
+                    # Indexes are half open, e.g the start index is inclusive
+                    # and the end index is exclusive -- [start_index, end_index).
+                    # Missing indexes indicate the range is unbounded on that side.
+                    #
+                    # For example, if `"Sheet1"` is sheet ID 0, then:
+                    #
+                    #   `Sheet1!A1:A1 == sheet_id: 0,
+                    #                   start_row_index: 0, end_row_index: 1,
+                    #                   start_column_index: 0, end_column_index: 1`
+                    #
+                    #   `Sheet1!A3:B4 == sheet_id: 0,
+                    #                   start_row_index: 2, end_row_index: 4,
+                    #                   start_column_index: 0, end_column_index: 2`
+                    #
+                    #   `Sheet1!A:B == sheet_id: 0,
+                    #                 start_column_index: 0, end_column_index: 2`
+                    #
+                    #   `Sheet1!A5:B == sheet_id: 0,
+                    #                  start_row_index: 4,
+                    #                  start_column_index: 0, end_column_index: 2`
+                    #
+                    #   `Sheet1 == sheet_id:0`
+                    #
+                    # The start index must always be less than or equal to the end index.
+                    # If the start index equals the end index, then the range is empty.
+                    # Empty ranges are typically not meaningful and are usually rendered in the
+                    # UI as `#REF!`.
+                  "endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
+                  "startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
+                  "sheetId": 42, # The sheet this range is on.
+                  "startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
+                  "endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
+                },
+              ],
+              "requestingUserCanEdit": True or False, # True if the user who requested this protected range can edit the
+                  # protected area.
+                  # This field is read-only.
+              "description": "A String", # The description of this protected range.
+              "namedRangeId": "A String", # The named range this protected range is backed by, if any.
+                  #
+                  # When writing, only one of range or named_range_id
+                  # may be set.
+              "editors": { # The editors of a protected range. # The users and groups with edit access to the protected range.
+                  # This field is only visible to users with edit access to the protected
+                  # range and the document.
+                  # Editors are not supported with warning_only protection.
+                "domainUsersCanEdit": True or False, # True if anyone in the document's domain has edit access to the protected
+                    # range.  Domain protection is only supported on documents within a domain.
+                "users": [ # The email addresses of users with edit access to the protected range.
+                  "A String",
+                ],
+                "groups": [ # The email addresses of groups with edit access to the protected range.
+                  "A String",
+                ],
+              },
+              "protectedRangeId": 42, # The ID of the protected range.
+                  # This field is read-only.
+              "warningOnly": True or False, # True if this protected range will show a warning when editing.
+                  # Warning-based protection means that every user can edit data in the
+                  # protected range, except editing will prompt a warning asking the user
+                  # to confirm the edit.
+                  #
+                  # When writing: if this field is true, then editors is ignored.
+                  # Additionally, if this field is changed from true to false and the
+                  # `editors` field is not set (nor included in the field mask), then
+                  # the editors will be set to all the editors in the document.
+              "range": { # A range on a sheet. # The range that is being protected.
+                  # The range may be fully unbounded, in which case this is considered
+                  # a protected sheet.
+                  #
+                  # When writing, only one of range or named_range_id
+                  # may be set.
+                  # All indexes are zero-based.
+                  # Indexes are half open, e.g the start index is inclusive
+                  # and the end index is exclusive -- [start_index, end_index).
+                  # Missing indexes indicate the range is unbounded on that side.
+                  #
+                  # For example, if `"Sheet1"` is sheet ID 0, then:
+                  #
+                  #   `Sheet1!A1:A1 == sheet_id: 0,
+                  #                   start_row_index: 0, end_row_index: 1,
+                  #                   start_column_index: 0, end_column_index: 1`
+                  #
+                  #   `Sheet1!A3:B4 == sheet_id: 0,
+                  #                   start_row_index: 2, end_row_index: 4,
+                  #                   start_column_index: 0, end_column_index: 2`
+                  #
+                  #   `Sheet1!A:B == sheet_id: 0,
+                  #                 start_column_index: 0, end_column_index: 2`
+                  #
+                  #   `Sheet1!A5:B == sheet_id: 0,
+                  #                  start_row_index: 4,
+                  #                  start_column_index: 0, end_column_index: 2`
+                  #
+                  #   `Sheet1 == sheet_id:0`
+                  #
+                  # The start index must always be less than or equal to the end index.
+                  # If the start index equals the end index, then the range is empty.
+                  # Empty ranges are typically not meaningful and are usually rendered in the
+                  # UI as `#REF!`.
+                "endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
+                "startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
+                "sheetId": 42, # The sheet this range is on.
+                "startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
+                "endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
+              },
+            },
+          ],
+          "data": [ # Data in the grid, if this is a grid sheet.
+              # The number of GridData objects returned is dependent on the number of
+              # ranges requested on this sheet. For example, if this is representing
+              # `Sheet1`, and the spreadsheet was requested with ranges
+              # `Sheet1!A1:C10` and `Sheet1!D15:E20`, then the first GridData will have a
+              # startRow/startColumn of `0`,
+              # while the second one will have `startRow 14` (zero-based row 15),
+              # and `startColumn 3` (zero-based column D).
+            { # Data in the grid, as well as metadata about the dimensions.
+              "startRow": 42, # The first row this GridData refers to, zero-based.
+              "rowMetadata": [ # Metadata about the requested rows in the grid, starting with the row
+                  # in start_row.
+                { # Properties about a dimension.
+                  "pixelSize": 42, # The height (if a row) or width (if a column) of the dimension in pixels.
+                  "hiddenByUser": True or False, # True if this dimension is explicitly hidden.
+                  "hiddenByFilter": True or False, # True if this dimension is being filtered.
+                      # This field is read-only.
+                },
+              ],
+              "startColumn": 42, # The first column this GridData refers to, zero-based.
+              "columnMetadata": [ # Metadata about the requested columns in the grid, starting with the column
+                  # in start_column.
+                { # Properties about a dimension.
+                  "pixelSize": 42, # The height (if a row) or width (if a column) of the dimension in pixels.
+                  "hiddenByUser": True or False, # True if this dimension is explicitly hidden.
+                  "hiddenByFilter": True or False, # True if this dimension is being filtered.
+                      # This field is read-only.
+                },
+              ],
+              "rowData": [ # The data in the grid, one entry per row,
+                  # starting with the row in startRow.
+                  # The values in RowData will correspond to columns starting
+                  # at start_column.
+                { # Data about each cell in a row.
+                  "values": [ # The values in the row, one per column.
+                    { # Data about a specific cell.
+                      "pivotTable": { # A pivot table. # A pivot table anchored at this cell. The size of pivot table itself
+                          # is computed dynamically based on its data, grouping, filters, values,
+                          # etc. Only the top-left cell of the pivot table contains the pivot table
+                          # definition. The other cells will contain the calculated values of the
+                          # results of the pivot in their effective_value fields.
+                        "valueLayout": "A String", # Whether values should be listed horizontally (as columns)
+                            # or vertically (as rows).
+                        "rows": [ # Each row grouping in the pivot table.
+                          { # A single grouping (either row or column) in a pivot table.
+                            "showTotals": True or False, # True if the pivot table should include the totals for this grouping.
+                            "valueMetadata": [ # Metadata about values in the grouping.
+                              { # Metadata about a value in a pivot grouping.
+                                "collapsed": True or False, # True if the data corresponding to the value is collapsed.
+                                "value": { # The kinds of value that a cell in a spreadsheet can have. # The calculated value the metadata corresponds to.
+                                    # (Note that formulaValue is not valid,
+                                    #  because the values will be calculated.)
+                                  "numberValue": 3.14, # Represents a double value.
+                                      # Note: Dates, Times and DateTimes are represented as doubles in
+                                      # "serial number" format.
+                                  "boolValue": True or False, # Represents a boolean value.
+                                  "formulaValue": "A String", # Represents a formula.
+                                  "stringValue": "A String", # Represents a string value.
+                                      # Leading single quotes are not included. For example, if the user typed
+                                      # `'123` into the UI, this would be represented as a `stringValue` of
+                                      # `"123"`.
+                                  "errorValue": { # An error in a cell. # Represents an error.
+                                      # This field is read-only.
+                                    "message": "A String", # A message with more information about the error
+                                        # (in the spreadsheet's locale).
+                                    "type": "A String", # The type of error.
+                                  },
+                                },
+                              },
+                            ],
+                            "valueBucket": { # Information about which values in a pivot group should be used for sorting. # The bucket of the opposite pivot group to sort by.
+                                # If not specified, sorting is alphabetical by this group's values.
+                              "buckets": [ # Determines the bucket from which values are chosen to sort.
+                                  #
+                                  # For example, in a pivot table with one row group & two column groups,
+                                  # the row group can list up to two values. The first value corresponds
+                                  # to a value within the first column group, and the second value
+                                  # corresponds to a value in the second column group.  If no values
+                                  # are listed, this would indicate that the row should be sorted according
+                                  # to the "Grand Total" over the column groups. If a single value is listed,
+                                  # this would correspond to using the "Total" of that bucket.
+                                { # The kinds of value that a cell in a spreadsheet can have.
+                                  "numberValue": 3.14, # Represents a double value.
+                                      # Note: Dates, Times and DateTimes are represented as doubles in
+                                      # "serial number" format.
+                                  "boolValue": True or False, # Represents a boolean value.
+                                  "formulaValue": "A String", # Represents a formula.
+                                  "stringValue": "A String", # Represents a string value.
+                                      # Leading single quotes are not included. For example, if the user typed
+                                      # `'123` into the UI, this would be represented as a `stringValue` of
+                                      # `"123"`.
+                                  "errorValue": { # An error in a cell. # Represents an error.
+                                      # This field is read-only.
+                                    "message": "A String", # A message with more information about the error
+                                        # (in the spreadsheet's locale).
+                                    "type": "A String", # The type of error.
+                                  },
+                                },
+                              ],
+                              "valuesIndex": 42, # The offset in the PivotTable.values list which the values in this
+                                  # grouping should be sorted by.
+                            },
+                            "sortOrder": "A String", # The order the values in this group should be sorted.
+                            "sourceColumnOffset": 42, # The column offset of the source range that this grouping is based on.
+                                #
+                                # For example, if the source was `C10:E15`, a `sourceColumnOffset` of `0`
+                                # means this group refers to column `C`, whereas the offset `1` would refer
+                                # to column `D`.
+                          },
+                        ],
+                        "source": { # A range on a sheet. # The range the pivot table is reading data from.
+                            # All indexes are zero-based.
+                            # Indexes are half open, e.g the start index is inclusive
+                            # and the end index is exclusive -- [start_index, end_index).
+                            # Missing indexes indicate the range is unbounded on that side.
+                            #
+                            # For example, if `"Sheet1"` is sheet ID 0, then:
+                            #
+                            #   `Sheet1!A1:A1 == sheet_id: 0,
+                            #                   start_row_index: 0, end_row_index: 1,
+                            #                   start_column_index: 0, end_column_index: 1`
+                            #
+                            #   `Sheet1!A3:B4 == sheet_id: 0,
+                            #                   start_row_index: 2, end_row_index: 4,
+                            #                   start_column_index: 0, end_column_index: 2`
+                            #
+                            #   `Sheet1!A:B == sheet_id: 0,
+                            #                 start_column_index: 0, end_column_index: 2`
+                            #
+                            #   `Sheet1!A5:B == sheet_id: 0,
+                            #                  start_row_index: 4,
+                            #                  start_column_index: 0, end_column_index: 2`
+                            #
+                            #   `Sheet1 == sheet_id:0`
+                            #
+                            # The start index must always be less than or equal to the end index.
+                            # If the start index equals the end index, then the range is empty.
+                            # Empty ranges are typically not meaningful and are usually rendered in the
+                            # UI as `#REF!`.
+                          "endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
+                          "startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
+                          "sheetId": 42, # The sheet this range is on.
+                          "startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
+                          "endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
+                        },
+                        "values": [ # A list of values to include in the pivot table.
+                          { # The definition of how a value in a pivot table should be calculated.
+                            "formula": "A String", # A custom formula to calculate the value.  The formula must start
+                                # with an `=` character.
+                            "summarizeFunction": "A String", # A function to summarize the value.
+                                # If formula is set, the only supported values are
+                                # SUM and
+                                # CUSTOM.
+                                # If sourceColumnOffset is set, then `CUSTOM`
+                                # is not supported.
+                            "sourceColumnOffset": 42, # The column offset of the source range that this value reads from.
+                                #
+                                # For example, if the source was `C10:E15`, a `sourceColumnOffset` of `0`
+                                # means this value refers to column `C`, whereas the offset `1` would
+                                # refer to column `D`.
+                            "name": "A String", # A name to use for the value. This is only used if formula was set.
+                                # Otherwise, the column name is used.
+                          },
+                        ],
+                        "criteria": { # An optional mapping of filters per source column offset.
+                            #
+                            # The filters will be applied before aggregating data into the pivot table.
+                            # The map's key is the column offset of the source range that you want to
+                            # filter, and the value is the criteria for that column.
+                            #
+                            # For example, if the source was `C10:E15`, a key of `0` will have the filter
+                            # for column `C`, whereas the key `1` is for column `D`.
+                          "a_key": { # Criteria for showing/hiding rows in a pivot table.
+                            "visibleValues": [ # Values that should be included.  Values not listed here are excluded.
+                              "A String",
+                            ],
+                          },
+                        },
+                        "columns": [ # Each column grouping in the pivot table.
+                          { # A single grouping (either row or column) in a pivot table.
+                            "showTotals": True or False, # True if the pivot table should include the totals for this grouping.
+                            "valueMetadata": [ # Metadata about values in the grouping.
+                              { # Metadata about a value in a pivot grouping.
+                                "collapsed": True or False, # True if the data corresponding to the value is collapsed.
+                                "value": { # The kinds of value that a cell in a spreadsheet can have. # The calculated value the metadata corresponds to.
+                                    # (Note that formulaValue is not valid,
+                                    #  because the values will be calculated.)
+                                  "numberValue": 3.14, # Represents a double value.
+                                      # Note: Dates, Times and DateTimes are represented as doubles in
+                                      # "serial number" format.
+                                  "boolValue": True or False, # Represents a boolean value.
+                                  "formulaValue": "A String", # Represents a formula.
+                                  "stringValue": "A String", # Represents a string value.
+                                      # Leading single quotes are not included. For example, if the user typed
+                                      # `'123` into the UI, this would be represented as a `stringValue` of
+                                      # `"123"`.
+                                  "errorValue": { # An error in a cell. # Represents an error.
+                                      # This field is read-only.
+                                    "message": "A String", # A message with more information about the error
+                                        # (in the spreadsheet's locale).
+                                    "type": "A String", # The type of error.
+                                  },
+                                },
+                              },
+                            ],
+                            "valueBucket": { # Information about which values in a pivot group should be used for sorting. # The bucket of the opposite pivot group to sort by.
+                                # If not specified, sorting is alphabetical by this group's values.
+                              "buckets": [ # Determines the bucket from which values are chosen to sort.
+                                  #
+                                  # For example, in a pivot table with one row group & two column groups,
+                                  # the row group can list up to two values. The first value corresponds
+                                  # to a value within the first column group, and the second value
+                                  # corresponds to a value in the second column group.  If no values
+                                  # are listed, this would indicate that the row should be sorted according
+                                  # to the "Grand Total" over the column groups. If a single value is listed,
+                                  # this would correspond to using the "Total" of that bucket.
+                                { # The kinds of value that a cell in a spreadsheet can have.
+                                  "numberValue": 3.14, # Represents a double value.
+                                      # Note: Dates, Times and DateTimes are represented as doubles in
+                                      # "serial number" format.
+                                  "boolValue": True or False, # Represents a boolean value.
+                                  "formulaValue": "A String", # Represents a formula.
+                                  "stringValue": "A String", # Represents a string value.
+                                      # Leading single quotes are not included. For example, if the user typed
+                                      # `'123` into the UI, this would be represented as a `stringValue` of
+                                      # `"123"`.
+                                  "errorValue": { # An error in a cell. # Represents an error.
+                                      # This field is read-only.
+                                    "message": "A String", # A message with more information about the error
+                                        # (in the spreadsheet's locale).
+                                    "type": "A String", # The type of error.
+                                  },
+                                },
+                              ],
+                              "valuesIndex": 42, # The offset in the PivotTable.values list which the values in this
+                                  # grouping should be sorted by.
+                            },
+                            "sortOrder": "A String", # The order the values in this group should be sorted.
+                            "sourceColumnOffset": 42, # The column offset of the source range that this grouping is based on.
+                                #
+                                # For example, if the source was `C10:E15`, a `sourceColumnOffset` of `0`
+                                # means this group refers to column `C`, whereas the offset `1` would refer
+                                # to column `D`.
+                          },
+                        ],
+                      },
+                      "hyperlink": "A String", # A hyperlink this cell points to, if any.
+                          # This field is read-only.  (To set it, use a `=HYPERLINK` formula.)
+                      "effectiveValue": { # The kinds of value that a cell in a spreadsheet can have. # The effective value of the cell. For cells with formulas, this will be
+                          # the calculated value.  For cells with literals, this will be
+                          # the same as the user_entered_value.
+                          # This field is read-only.
+                        "numberValue": 3.14, # Represents a double value.
+                            # Note: Dates, Times and DateTimes are represented as doubles in
+                            # "serial number" format.
+                        "boolValue": True or False, # Represents a boolean value.
+                        "formulaValue": "A String", # Represents a formula.
+                        "stringValue": "A String", # Represents a string value.
+                            # Leading single quotes are not included. For example, if the user typed
+                            # `'123` into the UI, this would be represented as a `stringValue` of
+                            # `"123"`.
+                        "errorValue": { # An error in a cell. # Represents an error.
+                            # This field is read-only.
+                          "message": "A String", # A message with more information about the error
+                              # (in the spreadsheet's locale).
+                          "type": "A String", # The type of error.
+                        },
+                      },
+                      "formattedValue": "A String", # The formatted value of the cell.
+                          # This is the value as it's shown to the user.
+                          # This field is read-only.
+                      "userEnteredValue": { # The kinds of value that a cell in a spreadsheet can have. # The value the user entered in the cell. e.g, `1234`, `'Hello'`, or `=NOW()`
+                          # Note: Dates, Times and DateTimes are represented as doubles in
+                          # serial number format.
+                        "numberValue": 3.14, # Represents a double value.
+                            # Note: Dates, Times and DateTimes are represented as doubles in
+                            # "serial number" format.
+                        "boolValue": True or False, # Represents a boolean value.
+                        "formulaValue": "A String", # Represents a formula.
+                        "stringValue": "A String", # Represents a string value.
+                            # Leading single quotes are not included. For example, if the user typed
+                            # `'123` into the UI, this would be represented as a `stringValue` of
+                            # `"123"`.
+                        "errorValue": { # An error in a cell. # Represents an error.
+                            # This field is read-only.
+                          "message": "A String", # A message with more information about the error
+                              # (in the spreadsheet's locale).
+                          "type": "A String", # The type of error.
+                        },
+                      },
+                      "note": "A String", # Any note on the cell.
+                      "effectiveFormat": { # The format of a cell. # The effective format being used by the cell.
+                          # This includes the results of applying any conditional formatting and,
+                          # if the cell contains a formula, the computed number format.
+                          # If the effective format is the default format, effective format will
+                          # not be written.
+                          # This field is read-only.
+                        "numberFormat": { # The number format of a cell. # A format describing how number values should be represented to the user.
+                          "pattern": "A String", # Pattern string used for formatting.  If not set, a default pattern based on
+                              # the user's locale will be used if necessary for the given type.
+                              # See the [Date and Number Formats guide](/sheets/guides/formats) for more
+                              # information about the supported patterns.
+                          "type": "A String", # The type of the number format.
+                              # When writing, this field must be set.
+                        },
+                        "textDirection": "A String", # The direction of the text in the cell.
+                        "padding": { # The amount of padding around the cell, in pixels. # The padding of the cell.
+                            # When updating padding, every field must be specified.
+                          "top": 42, # The top padding of the cell.
+                          "right": 42, # The right padding of the cell.
+                          "bottom": 42, # The bottom padding of the cell.
+                          "left": 42, # The left padding of the cell.
+                        },
+                        "horizontalAlignment": "A String", # The horizontal alignment of the value in the cell.
+                        "backgroundColor": { # Represents a color in the RGBA color space. This representation is designed # The background color of the cell.
+                            # for simplicity of conversion to/from color representations in various
+                            # languages over compactness; for example, the fields of this representation
+                            # can be trivially provided to the constructor of "java.awt.Color" in Java; it
+                            # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
+                            # method in iOS; and, with just a little work, it can be easily formatted into
+                            # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
+                            #
+                            # Example (Java):
+                            #
+                            #      import com.google.type.Color;
+                            #
+                            #      // ...
+                            #      public static java.awt.Color fromProto(Color protocolor) {
+                            #        float alpha = protocolor.hasAlpha()
+                            #            ? protocolor.getAlpha().getValue()
+                            #            : 1.0;
+                            #
+                            #        return new java.awt.Color(
+                            #            protocolor.getRed(),
+                            #            protocolor.getGreen(),
+                            #            protocolor.getBlue(),
+                            #            alpha);
+                            #      }
+                            #
+                            #      public static Color toProto(java.awt.Color color) {
+                            #        float red = (float) color.getRed();
+                            #        float green = (float) color.getGreen();
+                            #        float blue = (float) color.getBlue();
+                            #        float denominator = 255.0;
+                            #        Color.Builder resultBuilder =
+                            #            Color
+                            #                .newBuilder()
+                            #                .setRed(red / denominator)
+                            #                .setGreen(green / denominator)
+                            #                .setBlue(blue / denominator);
+                            #        int alpha = color.getAlpha();
+                            #        if (alpha != 255) {
+                            #          result.setAlpha(
+                            #              FloatValue
+                            #                  .newBuilder()
+                            #                  .setValue(((float) alpha) / denominator)
+                            #                  .build());
+                            #        }
+                            #        return resultBuilder.build();
+                            #      }
+                            #      // ...
+                            #
+                            # Example (iOS / Obj-C):
+                            #
+                            #      // ...
+                            #      static UIColor* fromProto(Color* protocolor) {
+                            #         float red = [protocolor red];
+                            #         float green = [protocolor green];
+                            #         float blue = [protocolor blue];
+                            #         FloatValue* alpha_wrapper = [protocolor alpha];
+                            #         float alpha = 1.0;
+                            #         if (alpha_wrapper != nil) {
+                            #           alpha = [alpha_wrapper value];
+                            #         }
+                            #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
+                            #      }
+                            #
+                            #      static Color* toProto(UIColor* color) {
+                            #          CGFloat red, green, blue, alpha;
+                            #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
+                            #            return nil;
+                            #          }
+                            #          Color* result = [Color alloc] init];
+                            #          [result setRed:red];
+                            #          [result setGreen:green];
+                            #          [result setBlue:blue];
+                            #          if (alpha <= 0.9999) {
+                            #            [result setAlpha:floatWrapperWithValue(alpha)];
+                            #          }
+                            #          [result autorelease];
+                            #          return result;
+                            #     }
+                            #     // ...
+                            #
+                            #  Example (JavaScript):
+                            #
+                            #     // ...
+                            #
+                            #     var protoToCssColor = function(rgb_color) {
+                            #        var redFrac = rgb_color.red || 0.0;
+                            #        var greenFrac = rgb_color.green || 0.0;
+                            #        var blueFrac = rgb_color.blue || 0.0;
+                            #        var red = Math.floor(redFrac * 255);
+                            #        var green = Math.floor(greenFrac * 255);
+                            #        var blue = Math.floor(blueFrac * 255);
+                            #
+                            #        if (!('alpha' in rgb_color)) {
+                            #           return rgbToCssColor_(red, green, blue);
+                            #        }
+                            #
+                            #        var alphaFrac = rgb_color.alpha.value || 0.0;
+                            #        var rgbParams = [red, green, blue].join(',');
+                            #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
+                            #     };
+                            #
+                            #     var rgbToCssColor_ = function(red, green, blue) {
+                            #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
+                            #       var hexString = rgbNumber.toString(16);
+                            #       var missingZeros = 6 - hexString.length;
+                            #       var resultBuilder = ['#'];
+                            #       for (var i = 0; i < missingZeros; i++) {
+                            #          resultBuilder.push('0');
+                            #       }
+                            #       resultBuilder.push(hexString);
+                            #       return resultBuilder.join('');
+                            #     };
+                            #
+                            #     // ...
+                          "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+                          "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
+                              # the final pixel color is defined by the equation:
+                              #
+                              #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
+                              #
+                              # This means that a value of 1.0 corresponds to a solid color, whereas
+                              # a value of 0.0 corresponds to a completely transparent color. This
+                              # uses a wrapper message rather than a simple float scalar so that it is
+                              # possible to distinguish between a default value and the value being unset.
+                              # If omitted, this color object is to be rendered as a solid color
+                              # (as if the alpha value had been explicitly given with a value of 1.0).
+                          "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
+                          "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
+                        },
+                        "verticalAlignment": "A String", # The vertical alignment of the value in the cell.
+                        "textFormat": { # The format of a run of text in a cell. # The format of the text in the cell (unless overridden by a format run).
+                            # Absent values indicate that the field isn't specified.
+                          "foregroundColor": { # Represents a color in the RGBA color space. This representation is designed # The foreground color of the text.
+                              # for simplicity of conversion to/from color representations in various
+                              # languages over compactness; for example, the fields of this representation
+                              # can be trivially provided to the constructor of "java.awt.Color" in Java; it
+                              # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
+                              # method in iOS; and, with just a little work, it can be easily formatted into
+                              # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
+                              #
+                              # Example (Java):
+                              #
+                              #      import com.google.type.Color;
+                              #
+                              #      // ...
+                              #      public static java.awt.Color fromProto(Color protocolor) {
+                              #        float alpha = protocolor.hasAlpha()
+                              #            ? protocolor.getAlpha().getValue()
+                              #            : 1.0;
+                              #
+                              #        return new java.awt.Color(
+                              #            protocolor.getRed(),
+                              #            protocolor.getGreen(),
+                              #            protocolor.getBlue(),
+                              #            alpha);
+                              #      }
+                              #
+                              #      public static Color toProto(java.awt.Color color) {
+                              #        float red = (float) color.getRed();
+                              #        float green = (float) color.getGreen();
+                              #        float blue = (float) color.getBlue();
+                              #        float denominator = 255.0;
+                              #        Color.Builder resultBuilder =
+                              #            Color
+                              #                .newBuilder()
+                              #                .setRed(red / denominator)
+                              #                .setGreen(green / denominator)
+                              #                .setBlue(blue / denominator);
+                              #        int alpha = color.getAlpha();
+                              #        if (alpha != 255) {
+                              #          result.setAlpha(
+                              #              FloatValue
+                              #                  .newBuilder()
+                              #                  .setValue(((float) alpha) / denominator)
+                              #                  .build());
+                              #        }
+                              #        return resultBuilder.build();
+                              #      }
+                              #      // ...
+                              #
+                              # Example (iOS / Obj-C):
+                              #
+                              #      // ...
+                              #      static UIColor* fromProto(Color* protocolor) {
+                              #         float red = [protocolor red];
+                              #         float green = [protocolor green];
+                              #         float blue = [protocolor blue];
+                              #         FloatValue* alpha_wrapper = [protocolor alpha];
+                              #         float alpha = 1.0;
+                              #         if (alpha_wrapper != nil) {
+                              #           alpha = [alpha_wrapper value];
+                              #         }
+                              #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
+                              #      }
+                              #
+                              #      static Color* toProto(UIColor* color) {
+                              #          CGFloat red, green, blue, alpha;
+                              #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
+                              #            return nil;
+                              #          }
+                              #          Color* result = [Color alloc] init];
+                              #          [result setRed:red];
+                              #          [result setGreen:green];
+                              #          [result setBlue:blue];
+                              #          if (alpha <= 0.9999) {
+                              #            [result setAlpha:floatWrapperWithValue(alpha)];
+                              #          }
+                              #          [result autorelease];
+                              #          return result;
+                              #     }
+                              #     // ...
+                              #
+                              #  Example (JavaScript):
+                              #
+                              #     // ...
+                              #
+                              #     var protoToCssColor = function(rgb_color) {
+                              #        var redFrac = rgb_color.red || 0.0;
+                              #        var greenFrac = rgb_color.green || 0.0;
+                              #        var blueFrac = rgb_color.blue || 0.0;
+                              #        var red = Math.floor(redFrac * 255);
+                              #        var green = Math.floor(greenFrac * 255);
+                              #        var blue = Math.floor(blueFrac * 255);
+                              #
+                              #        if (!('alpha' in rgb_color)) {
+                              #           return rgbToCssColor_(red, green, blue);
+                              #        }
+                              #
+                              #        var alphaFrac = rgb_color.alpha.value || 0.0;
+                              #        var rgbParams = [red, green, blue].join(',');
+                              #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
+                              #     };
+                              #
+                              #     var rgbToCssColor_ = function(red, green, blue) {
+                              #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
+                              #       var hexString = rgbNumber.toString(16);
+                              #       var missingZeros = 6 - hexString.length;
+                              #       var resultBuilder = ['#'];
+                              #       for (var i = 0; i < missingZeros; i++) {
+                              #          resultBuilder.push('0');
+                              #       }
+                              #       resultBuilder.push(hexString);
+                              #       return resultBuilder.join('');
+                              #     };
+                              #
+                              #     // ...
+                            "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+                            "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
+                                # the final pixel color is defined by the equation:
+                                #
+                                #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
+                                #
+                                # This means that a value of 1.0 corresponds to a solid color, whereas
+                                # a value of 0.0 corresponds to a completely transparent color. This
+                                # uses a wrapper message rather than a simple float scalar so that it is
+                                # possible to distinguish between a default value and the value being unset.
+                                # If omitted, this color object is to be rendered as a solid color
+                                # (as if the alpha value had been explicitly given with a value of 1.0).
+                            "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
+                            "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
+                          },
+                          "bold": True or False, # True if the text is bold.
+                          "strikethrough": True or False, # True if the text has a strikethrough.
+                          "fontFamily": "A String", # The font family.
+                          "fontSize": 42, # The size of the font.
+                          "italic": True or False, # True if the text is italicized.
+                          "underline": True or False, # True if the text is underlined.
+                        },
+                        "hyperlinkDisplayType": "A String", # How a hyperlink, if it exists, should be displayed in the cell.
+                        "borders": { # The borders of the cell. # The borders of the cell.
+                          "top": { # A border along a cell. # The top border of the cell.
+                            "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
+                                # for simplicity of conversion to/from color representations in various
+                                # languages over compactness; for example, the fields of this representation
+                                # can be trivially provided to the constructor of "java.awt.Color" in Java; it
+                                # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
+                                # method in iOS; and, with just a little work, it can be easily formatted into
+                                # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
+                                #
+                                # Example (Java):
+                                #
+                                #      import com.google.type.Color;
+                                #
+                                #      // ...
+                                #      public static java.awt.Color fromProto(Color protocolor) {
+                                #        float alpha = protocolor.hasAlpha()
+                                #            ? protocolor.getAlpha().getValue()
+                                #            : 1.0;
+                                #
+                                #        return new java.awt.Color(
+                                #            protocolor.getRed(),
+                                #            protocolor.getGreen(),
+                                #            protocolor.getBlue(),
+                                #            alpha);
+                                #      }
+                                #
+                                #      public static Color toProto(java.awt.Color color) {
+                                #        float red = (float) color.getRed();
+                                #        float green = (float) color.getGreen();
+                                #        float blue = (float) color.getBlue();
+                                #        float denominator = 255.0;
+                                #        Color.Builder resultBuilder =
+                                #            Color
+                                #                .newBuilder()
+                                #                .setRed(red / denominator)
+                                #                .setGreen(green / denominator)
+                                #                .setBlue(blue / denominator);
+                                #        int alpha = color.getAlpha();
+                                #        if (alpha != 255) {
+                                #          result.setAlpha(
+                                #              FloatValue
+                                #                  .newBuilder()
+                                #                  .setValue(((float) alpha) / denominator)
+                                #                  .build());
+                                #        }
+                                #        return resultBuilder.build();
+                                #      }
+                                #      // ...
+                                #
+                                # Example (iOS / Obj-C):
+                                #
+                                #      // ...
+                                #      static UIColor* fromProto(Color* protocolor) {
+                                #         float red = [protocolor red];
+                                #         float green = [protocolor green];
+                                #         float blue = [protocolor blue];
+                                #         FloatValue* alpha_wrapper = [protocolor alpha];
+                                #         float alpha = 1.0;
+                                #         if (alpha_wrapper != nil) {
+                                #           alpha = [alpha_wrapper value];
+                                #         }
+                                #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
+                                #      }
+                                #
+                                #      static Color* toProto(UIColor* color) {
+                                #          CGFloat red, green, blue, alpha;
+                                #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
+                                #            return nil;
+                                #          }
+                                #          Color* result = [Color alloc] init];
+                                #          [result setRed:red];
+                                #          [result setGreen:green];
+                                #          [result setBlue:blue];
+                                #          if (alpha <= 0.9999) {
+                                #            [result setAlpha:floatWrapperWithValue(alpha)];
+                                #          }
+                                #          [result autorelease];
+                                #          return result;
+                                #     }
+                                #     // ...
+                                #
+                                #  Example (JavaScript):
+                                #
+                                #     // ...
+                                #
+                                #     var protoToCssColor = function(rgb_color) {
+                                #        var redFrac = rgb_color.red || 0.0;
+                                #        var greenFrac = rgb_color.green || 0.0;
+                                #        var blueFrac = rgb_color.blue || 0.0;
+                                #        var red = Math.floor(redFrac * 255);
+                                #        var green = Math.floor(greenFrac * 255);
+                                #        var blue = Math.floor(blueFrac * 255);
+                                #
+                                #        if (!('alpha' in rgb_color)) {
+                                #           return rgbToCssColor_(red, green, blue);
+                                #        }
+                                #
+                                #        var alphaFrac = rgb_color.alpha.value || 0.0;
+                                #        var rgbParams = [red, green, blue].join(',');
+                                #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
+                                #     };
+                                #
+                                #     var rgbToCssColor_ = function(red, green, blue) {
+                                #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
+                                #       var hexString = rgbNumber.toString(16);
+                                #       var missingZeros = 6 - hexString.length;
+                                #       var resultBuilder = ['#'];
+                                #       for (var i = 0; i < missingZeros; i++) {
+                                #          resultBuilder.push('0');
+                                #       }
+                                #       resultBuilder.push(hexString);
+                                #       return resultBuilder.join('');
+                                #     };
+                                #
+                                #     // ...
+                              "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+                              "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
+                                  # the final pixel color is defined by the equation:
+                                  #
+                                  #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
+                                  #
+                                  # This means that a value of 1.0 corresponds to a solid color, whereas
+                                  # a value of 0.0 corresponds to a completely transparent color. This
+                                  # uses a wrapper message rather than a simple float scalar so that it is
+                                  # possible to distinguish between a default value and the value being unset.
+                                  # If omitted, this color object is to be rendered as a solid color
+                                  # (as if the alpha value had been explicitly given with a value of 1.0).
+                              "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
+                              "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
+                            },
+                            "width": 42, # The width of the border, in pixels.
+                                # Deprecated; the width is determined by the "style" field.
+                            "style": "A String", # The style of the border.
+                          },
+                          "right": { # A border along a cell. # The right border of the cell.
+                            "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
+                                # for simplicity of conversion to/from color representations in various
+                                # languages over compactness; for example, the fields of this representation
+                                # can be trivially provided to the constructor of "java.awt.Color" in Java; it
+                                # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
+                                # method in iOS; and, with just a little work, it can be easily formatted into
+                                # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
+                                #
+                                # Example (Java):
+                                #
+                                #      import com.google.type.Color;
+                                #
+                                #      // ...
+                                #      public static java.awt.Color fromProto(Color protocolor) {
+                                #        float alpha = protocolor.hasAlpha()
+                                #            ? protocolor.getAlpha().getValue()
+                                #            : 1.0;
+                                #
+                                #        return new java.awt.Color(
+                                #            protocolor.getRed(),
+                                #            protocolor.getGreen(),
+                                #            protocolor.getBlue(),
+                                #            alpha);
+                                #      }
+                                #
+                                #      public static Color toProto(java.awt.Color color) {
+                                #        float red = (float) color.getRed();
+                                #        float green = (float) color.getGreen();
+                                #        float blue = (float) color.getBlue();
+                                #        float denominator = 255.0;
+                                #        Color.Builder resultBuilder =
+                                #            Color
+                                #                .newBuilder()
+                                #                .setRed(red / denominator)
+                                #                .setGreen(green / denominator)
+                                #                .setBlue(blue / denominator);
+                                #        int alpha = color.getAlpha();
+                                #        if (alpha != 255) {
+                                #          result.setAlpha(
+                                #              FloatValue
+                                #                  .newBuilder()
+                                #                  .setValue(((float) alpha) / denominator)
+                                #                  .build());
+                                #        }
+                                #        return resultBuilder.build();
+                                #      }
+                                #      // ...
+                                #
+                                # Example (iOS / Obj-C):
+                                #
+                                #      // ...
+                                #      static UIColor* fromProto(Color* protocolor) {
+                                #         float red = [protocolor red];
+                                #         float green = [protocolor green];
+                                #         float blue = [protocolor blue];
+                                #         FloatValue* alpha_wrapper = [protocolor alpha];
+                                #         float alpha = 1.0;
+                                #         if (alpha_wrapper != nil) {
+                                #           alpha = [alpha_wrapper value];
+                                #         }
+                                #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
+                                #      }
+                                #
+                                #      static Color* toProto(UIColor* color) {
+                                #          CGFloat red, green, blue, alpha;
+                                #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
+                                #            return nil;
+                                #          }
+                                #          Color* result = [Color alloc] init];
+                                #          [result setRed:red];
+                                #          [result setGreen:green];
+                                #          [result setBlue:blue];
+                                #          if (alpha <= 0.9999) {
+                                #            [result setAlpha:floatWrapperWithValue(alpha)];
+                                #          }
+                                #          [result autorelease];
+                                #          return result;
+                                #     }
+                                #     // ...
+                                #
+                                #  Example (JavaScript):
+                                #
+                                #     // ...
+                                #
+                                #     var protoToCssColor = function(rgb_color) {
+                                #        var redFrac = rgb_color.red || 0.0;
+                                #        var greenFrac = rgb_color.green || 0.0;
+                                #        var blueFrac = rgb_color.blue || 0.0;
+                                #        var red = Math.floor(redFrac * 255);
+                                #        var green = Math.floor(greenFrac * 255);
+                                #        var blue = Math.floor(blueFrac * 255);
+                                #
+                                #        if (!('alpha' in rgb_color)) {
+                                #           return rgbToCssColor_(red, green, blue);
+                                #        }
+                                #
+                                #        var alphaFrac = rgb_color.alpha.value || 0.0;
+                                #        var rgbParams = [red, green, blue].join(',');
+                                #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
+                                #     };
+                                #
+                                #     var rgbToCssColor_ = function(red, green, blue) {
+                                #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
+                                #       var hexString = rgbNumber.toString(16);
+                                #       var missingZeros = 6 - hexString.length;
+                                #       var resultBuilder = ['#'];
+                                #       for (var i = 0; i < missingZeros; i++) {
+                                #          resultBuilder.push('0');
+                                #       }
+                                #       resultBuilder.push(hexString);
+                                #       return resultBuilder.join('');
+                                #     };
+                                #
+                                #     // ...
+                              "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+                              "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
+                                  # the final pixel color is defined by the equation:
+                                  #
+                                  #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
+                                  #
+                                  # This means that a value of 1.0 corresponds to a solid color, whereas
+                                  # a value of 0.0 corresponds to a completely transparent color. This
+                                  # uses a wrapper message rather than a simple float scalar so that it is
+                                  # possible to distinguish between a default value and the value being unset.
+                                  # If omitted, this color object is to be rendered as a solid color
+                                  # (as if the alpha value had been explicitly given with a value of 1.0).
+                              "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
+                              "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
+                            },
+                            "width": 42, # The width of the border, in pixels.
+                                # Deprecated; the width is determined by the "style" field.
+                            "style": "A String", # The style of the border.
+                          },
+                          "bottom": { # A border along a cell. # The bottom border of the cell.
+                            "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
+                                # for simplicity of conversion to/from color representations in various
+                                # languages over compactness; for example, the fields of this representation
+                                # can be trivially provided to the constructor of "java.awt.Color" in Java; it
+                                # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
+                                # method in iOS; and, with just a little work, it can be easily formatted into
+                                # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
+                                #
+                                # Example (Java):
+                                #
+                                #      import com.google.type.Color;
+                                #
+                                #      // ...
+                                #      public static java.awt.Color fromProto(Color protocolor) {
+                                #        float alpha = protocolor.hasAlpha()
+                                #            ? protocolor.getAlpha().getValue()
+                                #            : 1.0;
+                                #
+                                #        return new java.awt.Color(
+                                #            protocolor.getRed(),
+                                #            protocolor.getGreen(),
+                                #            protocolor.getBlue(),
+                                #            alpha);
+                                #      }
+                                #
+                                #      public static Color toProto(java.awt.Color color) {
+                                #        float red = (float) color.getRed();
+                                #        float green = (float) color.getGreen();
+                                #        float blue = (float) color.getBlue();
+                                #        float denominator = 255.0;
+                                #        Color.Builder resultBuilder =
+                                #            Color
+                                #                .newBuilder()
+                                #                .setRed(red / denominator)
+                                #                .setGreen(green / denominator)
+                                #                .setBlue(blue / denominator);
+                                #        int alpha = color.getAlpha();
+                                #        if (alpha != 255) {
+                                #          result.setAlpha(
+                                #              FloatValue
+                                #                  .newBuilder()
+                                #                  .setValue(((float) alpha) / denominator)
+                                #                  .build());
+                                #        }
+                                #        return resultBuilder.build();
+                                #      }
+                                #      // ...
+                                #
+                                # Example (iOS / Obj-C):
+                                #
+                                #      // ...
+                                #      static UIColor* fromProto(Color* protocolor) {
+                                #         float red = [protocolor red];
+                                #         float green = [protocolor green];
+                                #         float blue = [protocolor blue];
+                                #         FloatValue* alpha_wrapper = [protocolor alpha];
+                                #         float alpha = 1.0;
+                                #         if (alpha_wrapper != nil) {
+                                #           alpha = [alpha_wrapper value];
+                                #         }
+                                #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
+                                #      }
+                                #
+                                #      static Color* toProto(UIColor* color) {
+                                #          CGFloat red, green, blue, alpha;
+                                #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
+                                #            return nil;
+                                #          }
+                                #          Color* result = [Color alloc] init];
+                                #          [result setRed:red];
+                                #          [result setGreen:green];
+                                #          [result setBlue:blue];
+                                #          if (alpha <= 0.9999) {
+                                #            [result setAlpha:floatWrapperWithValue(alpha)];
+                                #          }
+                                #          [result autorelease];
+                                #          return result;
+                                #     }
+                                #     // ...
+                                #
+                                #  Example (JavaScript):
+                                #
+                                #     // ...
+                                #
+                                #     var protoToCssColor = function(rgb_color) {
+                                #        var redFrac = rgb_color.red || 0.0;
+                                #        var greenFrac = rgb_color.green || 0.0;
+                                #        var blueFrac = rgb_color.blue || 0.0;
+                                #        var red = Math.floor(redFrac * 255);
+                                #        var green = Math.floor(greenFrac * 255);
+                                #        var blue = Math.floor(blueFrac * 255);
+                                #
+                                #        if (!('alpha' in rgb_color)) {
+                                #           return rgbToCssColor_(red, green, blue);
+                                #        }
+                                #
+                                #        var alphaFrac = rgb_color.alpha.value || 0.0;
+                                #        var rgbParams = [red, green, blue].join(',');
+                                #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
+                                #     };
+                                #
+                                #     var rgbToCssColor_ = function(red, green, blue) {
+                                #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
+                                #       var hexString = rgbNumber.toString(16);
+                                #       var missingZeros = 6 - hexString.length;
+                                #       var resultBuilder = ['#'];
+                                #       for (var i = 0; i < missingZeros; i++) {
+                                #          resultBuilder.push('0');
+                                #       }
+                                #       resultBuilder.push(hexString);
+                                #       return resultBuilder.join('');
+                                #     };
+                                #
+                                #     // ...
+                              "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+                              "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
+                                  # the final pixel color is defined by the equation:
+                                  #
+                                  #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
+                                  #
+                                  # This means that a value of 1.0 corresponds to a solid color, whereas
+                                  # a value of 0.0 corresponds to a completely transparent color. This
+                                  # uses a wrapper message rather than a simple float scalar so that it is
+                                  # possible to distinguish between a default value and the value being unset.
+                                  # If omitted, this color object is to be rendered as a solid color
+                                  # (as if the alpha value had been explicitly given with a value of 1.0).
+                              "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
+                              "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
+                            },
+                            "width": 42, # The width of the border, in pixels.
+                                # Deprecated; the width is determined by the "style" field.
+                            "style": "A String", # The style of the border.
+                          },
+                          "left": { # A border along a cell. # The left border of the cell.
+                            "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
+                                # for simplicity of conversion to/from color representations in various
+                                # languages over compactness; for example, the fields of this representation
+                                # can be trivially provided to the constructor of "java.awt.Color" in Java; it
+                                # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
+                                # method in iOS; and, with just a little work, it can be easily formatted into
+                                # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
+                                #
+                                # Example (Java):
+                                #
+                                #      import com.google.type.Color;
+                                #
+                                #      // ...
+                                #      public static java.awt.Color fromProto(Color protocolor) {
+                                #        float alpha = protocolor.hasAlpha()
+                                #            ? protocolor.getAlpha().getValue()
+                                #            : 1.0;
+                                #
+                                #        return new java.awt.Color(
+                                #            protocolor.getRed(),
+                                #            protocolor.getGreen(),
+                                #            protocolor.getBlue(),
+                                #            alpha);
+                                #      }
+                                #
+                                #      public static Color toProto(java.awt.Color color) {
+                                #        float red = (float) color.getRed();
+                                #        float green = (float) color.getGreen();
+                                #        float blue = (float) color.getBlue();
+                                #        float denominator = 255.0;
+                                #        Color.Builder resultBuilder =
+                                #            Color
+                                #                .newBuilder()
+                                #                .setRed(red / denominator)
+                                #                .setGreen(green / denominator)
+                                #                .setBlue(blue / denominator);
+                                #        int alpha = color.getAlpha();
+                                #        if (alpha != 255) {
+                                #          result.setAlpha(
+                                #              FloatValue
+                                #                  .newBuilder()
+                                #                  .setValue(((float) alpha) / denominator)
+                                #                  .build());
+                                #        }
+                                #        return resultBuilder.build();
+                                #      }
+                                #      // ...
+                                #
+                                # Example (iOS / Obj-C):
+                                #
+                                #      // ...
+                                #      static UIColor* fromProto(Color* protocolor) {
+                                #         float red = [protocolor red];
+                                #         float green = [protocolor green];
+                                #         float blue = [protocolor blue];
+                                #         FloatValue* alpha_wrapper = [protocolor alpha];
+                                #         float alpha = 1.0;
+                                #         if (alpha_wrapper != nil) {
+                                #           alpha = [alpha_wrapper value];
+                                #         }
+                                #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
+                                #      }
+                                #
+                                #      static Color* toProto(UIColor* color) {
+                                #          CGFloat red, green, blue, alpha;
+                                #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
+                                #            return nil;
+                                #          }
+                                #          Color* result = [Color alloc] init];
+                                #          [result setRed:red];
+                                #          [result setGreen:green];
+                                #          [result setBlue:blue];
+                                #          if (alpha <= 0.9999) {
+                                #            [result setAlpha:floatWrapperWithValue(alpha)];
+                                #          }
+                                #          [result autorelease];
+                                #          return result;
+                                #     }
+                                #     // ...
+                                #
+                                #  Example (JavaScript):
+                                #
+                                #     // ...
+                                #
+                                #     var protoToCssColor = function(rgb_color) {
+                                #        var redFrac = rgb_color.red || 0.0;
+                                #        var greenFrac = rgb_color.green || 0.0;
+                                #        var blueFrac = rgb_color.blue || 0.0;
+                                #        var red = Math.floor(redFrac * 255);
+                                #        var green = Math.floor(greenFrac * 255);
+                                #        var blue = Math.floor(blueFrac * 255);
+                                #
+                                #        if (!('alpha' in rgb_color)) {
+                                #           return rgbToCssColor_(red, green, blue);
+                                #        }
+                                #
+                                #        var alphaFrac = rgb_color.alpha.value || 0.0;
+                                #        var rgbParams = [red, green, blue].join(',');
+                                #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
+                                #     };
+                                #
+                                #     var rgbToCssColor_ = function(red, green, blue) {
+                                #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
+                                #       var hexString = rgbNumber.toString(16);
+                                #       var missingZeros = 6 - hexString.length;
+                                #       var resultBuilder = ['#'];
+                                #       for (var i = 0; i < missingZeros; i++) {
+                                #          resultBuilder.push('0');
+                                #       }
+                                #       resultBuilder.push(hexString);
+                                #       return resultBuilder.join('');
+                                #     };
+                                #
+                                #     // ...
+                              "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+                              "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
+                                  # the final pixel color is defined by the equation:
+                                  #
+                                  #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
+                                  #
+                                  # This means that a value of 1.0 corresponds to a solid color, whereas
+                                  # a value of 0.0 corresponds to a completely transparent color. This
+                                  # uses a wrapper message rather than a simple float scalar so that it is
+                                  # possible to distinguish between a default value and the value being unset.
+                                  # If omitted, this color object is to be rendered as a solid color
+                                  # (as if the alpha value had been explicitly given with a value of 1.0).
+                              "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
+                              "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
+                            },
+                            "width": 42, # The width of the border, in pixels.
+                                # Deprecated; the width is determined by the "style" field.
+                            "style": "A String", # The style of the border.
+                          },
+                        },
+                        "wrapStrategy": "A String", # The wrap strategy for the value in the cell.
+                      },
+                      "userEnteredFormat": { # The format of a cell. # The format the user entered for the cell.
+                          #
+                          # When writing, the new format will be merged with the existing format.
+                        "numberFormat": { # The number format of a cell. # A format describing how number values should be represented to the user.
+                          "pattern": "A String", # Pattern string used for formatting.  If not set, a default pattern based on
+                              # the user's locale will be used if necessary for the given type.
+                              # See the [Date and Number Formats guide](/sheets/guides/formats) for more
+                              # information about the supported patterns.
+                          "type": "A String", # The type of the number format.
+                              # When writing, this field must be set.
+                        },
+                        "textDirection": "A String", # The direction of the text in the cell.
+                        "padding": { # The amount of padding around the cell, in pixels. # The padding of the cell.
+                            # When updating padding, every field must be specified.
+                          "top": 42, # The top padding of the cell.
+                          "right": 42, # The right padding of the cell.
+                          "bottom": 42, # The bottom padding of the cell.
+                          "left": 42, # The left padding of the cell.
+                        },
+                        "horizontalAlignment": "A String", # The horizontal alignment of the value in the cell.
+                        "backgroundColor": { # Represents a color in the RGBA color space. This representation is designed # The background color of the cell.
+                            # for simplicity of conversion to/from color representations in various
+                            # languages over compactness; for example, the fields of this representation
+                            # can be trivially provided to the constructor of "java.awt.Color" in Java; it
+                            # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
+                            # method in iOS; and, with just a little work, it can be easily formatted into
+                            # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
+                            #
+                            # Example (Java):
+                            #
+                            #      import com.google.type.Color;
+                            #
+                            #      // ...
+                            #      public static java.awt.Color fromProto(Color protocolor) {
+                            #        float alpha = protocolor.hasAlpha()
+                            #            ? protocolor.getAlpha().getValue()
+                            #            : 1.0;
+                            #
+                            #        return new java.awt.Color(
+                            #            protocolor.getRed(),
+                            #            protocolor.getGreen(),
+                            #            protocolor.getBlue(),
+                            #            alpha);
+                            #      }
+                            #
+                            #      public static Color toProto(java.awt.Color color) {
+                            #        float red = (float) color.getRed();
+                            #        float green = (float) color.getGreen();
+                            #        float blue = (float) color.getBlue();
+                            #        float denominator = 255.0;
+                            #        Color.Builder resultBuilder =
+                            #            Color
+                            #                .newBuilder()
+                            #                .setRed(red / denominator)
+                            #                .setGreen(green / denominator)
+                            #                .setBlue(blue / denominator);
+                            #        int alpha = color.getAlpha();
+                            #        if (alpha != 255) {
+                            #          result.setAlpha(
+                            #              FloatValue
+                            #                  .newBuilder()
+                            #                  .setValue(((float) alpha) / denominator)
+                            #                  .build());
+                            #        }
+                            #        return resultBuilder.build();
+                            #      }
+                            #      // ...
+                            #
+                            # Example (iOS / Obj-C):
+                            #
+                            #      // ...
+                            #      static UIColor* fromProto(Color* protocolor) {
+                            #         float red = [protocolor red];
+                            #         float green = [protocolor green];
+                            #         float blue = [protocolor blue];
+                            #         FloatValue* alpha_wrapper = [protocolor alpha];
+                            #         float alpha = 1.0;
+                            #         if (alpha_wrapper != nil) {
+                            #           alpha = [alpha_wrapper value];
+                            #         }
+                            #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
+                            #      }
+                            #
+                            #      static Color* toProto(UIColor* color) {
+                            #          CGFloat red, green, blue, alpha;
+                            #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
+                            #            return nil;
+                            #          }
+                            #          Color* result = [Color alloc] init];
+                            #          [result setRed:red];
+                            #          [result setGreen:green];
+                            #          [result setBlue:blue];
+                            #          if (alpha <= 0.9999) {
+                            #            [result setAlpha:floatWrapperWithValue(alpha)];
+                            #          }
+                            #          [result autorelease];
+                            #          return result;
+                            #     }
+                            #     // ...
+                            #
+                            #  Example (JavaScript):
+                            #
+                            #     // ...
+                            #
+                            #     var protoToCssColor = function(rgb_color) {
+                            #        var redFrac = rgb_color.red || 0.0;
+                            #        var greenFrac = rgb_color.green || 0.0;
+                            #        var blueFrac = rgb_color.blue || 0.0;
+                            #        var red = Math.floor(redFrac * 255);
+                            #        var green = Math.floor(greenFrac * 255);
+                            #        var blue = Math.floor(blueFrac * 255);
+                            #
+                            #        if (!('alpha' in rgb_color)) {
+                            #           return rgbToCssColor_(red, green, blue);
+                            #        }
+                            #
+                            #        var alphaFrac = rgb_color.alpha.value || 0.0;
+                            #        var rgbParams = [red, green, blue].join(',');
+                            #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
+                            #     };
+                            #
+                            #     var rgbToCssColor_ = function(red, green, blue) {
+                            #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
+                            #       var hexString = rgbNumber.toString(16);
+                            #       var missingZeros = 6 - hexString.length;
+                            #       var resultBuilder = ['#'];
+                            #       for (var i = 0; i < missingZeros; i++) {
+                            #          resultBuilder.push('0');
+                            #       }
+                            #       resultBuilder.push(hexString);
+                            #       return resultBuilder.join('');
+                            #     };
+                            #
+                            #     // ...
+                          "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+                          "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
+                              # the final pixel color is defined by the equation:
+                              #
+                              #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
+                              #
+                              # This means that a value of 1.0 corresponds to a solid color, whereas
+                              # a value of 0.0 corresponds to a completely transparent color. This
+                              # uses a wrapper message rather than a simple float scalar so that it is
+                              # possible to distinguish between a default value and the value being unset.
+                              # If omitted, this color object is to be rendered as a solid color
+                              # (as if the alpha value had been explicitly given with a value of 1.0).
+                          "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
+                          "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
+                        },
+                        "verticalAlignment": "A String", # The vertical alignment of the value in the cell.
+                        "textFormat": { # The format of a run of text in a cell. # The format of the text in the cell (unless overridden by a format run).
+                            # Absent values indicate that the field isn't specified.
+                          "foregroundColor": { # Represents a color in the RGBA color space. This representation is designed # The foreground color of the text.
+                              # for simplicity of conversion to/from color representations in various
+                              # languages over compactness; for example, the fields of this representation
+                              # can be trivially provided to the constructor of "java.awt.Color" in Java; it
+                              # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
+                              # method in iOS; and, with just a little work, it can be easily formatted into
+                              # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
+                              #
+                              # Example (Java):
+                              #
+                              #      import com.google.type.Color;
+                              #
+                              #      // ...
+                              #      public static java.awt.Color fromProto(Color protocolor) {
+                              #        float alpha = protocolor.hasAlpha()
+                              #            ? protocolor.getAlpha().getValue()
+                              #            : 1.0;
+                              #
+                              #        return new java.awt.Color(
+                              #            protocolor.getRed(),
+                              #            protocolor.getGreen(),
+                              #            protocolor.getBlue(),
+                              #            alpha);
+                              #      }
+                              #
+                              #      public static Color toProto(java.awt.Color color) {
+                              #        float red = (float) color.getRed();
+                              #        float green = (float) color.getGreen();
+                              #        float blue = (float) color.getBlue();
+                              #        float denominator = 255.0;
+                              #        Color.Builder resultBuilder =
+                              #            Color
+                              #                .newBuilder()
+                              #                .setRed(red / denominator)
+                              #                .setGreen(green / denominator)
+                              #                .setBlue(blue / denominator);
+                              #        int alpha = color.getAlpha();
+                              #        if (alpha != 255) {
+                              #          result.setAlpha(
+                              #              FloatValue
+                              #                  .newBuilder()
+                              #                  .setValue(((float) alpha) / denominator)
+                              #                  .build());
+                              #        }
+                              #        return resultBuilder.build();
+                              #      }
+                              #      // ...
+                              #
+                              # Example (iOS / Obj-C):
+                              #
+                              #      // ...
+                              #      static UIColor* fromProto(Color* protocolor) {
+                              #         float red = [protocolor red];
+                              #         float green = [protocolor green];
+                              #         float blue = [protocolor blue];
+                              #         FloatValue* alpha_wrapper = [protocolor alpha];
+                              #         float alpha = 1.0;
+                              #         if (alpha_wrapper != nil) {
+                              #           alpha = [alpha_wrapper value];
+                              #         }
+                              #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
+                              #      }
+                              #
+                              #      static Color* toProto(UIColor* color) {
+                              #          CGFloat red, green, blue, alpha;
+                              #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
+                              #            return nil;
+                              #          }
+                              #          Color* result = [Color alloc] init];
+                              #          [result setRed:red];
+                              #          [result setGreen:green];
+                              #          [result setBlue:blue];
+                              #          if (alpha <= 0.9999) {
+                              #            [result setAlpha:floatWrapperWithValue(alpha)];
+                              #          }
+                              #          [result autorelease];
+                              #          return result;
+                              #     }
+                              #     // ...
+                              #
+                              #  Example (JavaScript):
+                              #
+                              #     // ...
+                              #
+                              #     var protoToCssColor = function(rgb_color) {
+                              #        var redFrac = rgb_color.red || 0.0;
+                              #        var greenFrac = rgb_color.green || 0.0;
+                              #        var blueFrac = rgb_color.blue || 0.0;
+                              #        var red = Math.floor(redFrac * 255);
+                              #        var green = Math.floor(greenFrac * 255);
+                              #        var blue = Math.floor(blueFrac * 255);
+                              #
+                              #        if (!('alpha' in rgb_color)) {
+                              #           return rgbToCssColor_(red, green, blue);
+                              #        }
+                              #
+                              #        var alphaFrac = rgb_color.alpha.value || 0.0;
+                              #        var rgbParams = [red, green, blue].join(',');
+                              #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
+                              #     };
+                              #
+                              #     var rgbToCssColor_ = function(red, green, blue) {
+                              #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
+                              #       var hexString = rgbNumber.toString(16);
+                              #       var missingZeros = 6 - hexString.length;
+                              #       var resultBuilder = ['#'];
+                              #       for (var i = 0; i < missingZeros; i++) {
+                              #          resultBuilder.push('0');
+                              #       }
+                              #       resultBuilder.push(hexString);
+                              #       return resultBuilder.join('');
+                              #     };
+                              #
+                              #     // ...
+                            "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+                            "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
+                                # the final pixel color is defined by the equation:
+                                #
+                                #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
+                                #
+                                # This means that a value of 1.0 corresponds to a solid color, whereas
+                                # a value of 0.0 corresponds to a completely transparent color. This
+                                # uses a wrapper message rather than a simple float scalar so that it is
+                                # possible to distinguish between a default value and the value being unset.
+                                # If omitted, this color object is to be rendered as a solid color
+                                # (as if the alpha value had been explicitly given with a value of 1.0).
+                            "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
+                            "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
+                          },
+                          "bold": True or False, # True if the text is bold.
+                          "strikethrough": True or False, # True if the text has a strikethrough.
+                          "fontFamily": "A String", # The font family.
+                          "fontSize": 42, # The size of the font.
+                          "italic": True or False, # True if the text is italicized.
+                          "underline": True or False, # True if the text is underlined.
+                        },
+                        "hyperlinkDisplayType": "A String", # How a hyperlink, if it exists, should be displayed in the cell.
+                        "borders": { # The borders of the cell. # The borders of the cell.
+                          "top": { # A border along a cell. # The top border of the cell.
+                            "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
+                                # for simplicity of conversion to/from color representations in various
+                                # languages over compactness; for example, the fields of this representation
+                                # can be trivially provided to the constructor of "java.awt.Color" in Java; it
+                                # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
+                                # method in iOS; and, with just a little work, it can be easily formatted into
+                                # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
+                                #
+                                # Example (Java):
+                                #
+                                #      import com.google.type.Color;
+                                #
+                                #      // ...
+                                #      public static java.awt.Color fromProto(Color protocolor) {
+                                #        float alpha = protocolor.hasAlpha()
+                                #            ? protocolor.getAlpha().getValue()
+                                #            : 1.0;
+                                #
+                                #        return new java.awt.Color(
+                                #            protocolor.getRed(),
+                                #            protocolor.getGreen(),
+                                #            protocolor.getBlue(),
+                                #            alpha);
+                                #      }
+                                #
+                                #      public static Color toProto(java.awt.Color color) {
+                                #        float red = (float) color.getRed();
+                                #        float green = (float) color.getGreen();
+                                #        float blue = (float) color.getBlue();
+                                #        float denominator = 255.0;
+                                #        Color.Builder resultBuilder =
+                                #            Color
+                                #                .newBuilder()
+                                #                .setRed(red / denominator)
+                                #                .setGreen(green / denominator)
+                                #                .setBlue(blue / denominator);
+                                #        int alpha = color.getAlpha();
+                                #        if (alpha != 255) {
+                                #          result.setAlpha(
+                                #              FloatValue
+                                #                  .newBuilder()
+                                #                  .setValue(((float) alpha) / denominator)
+                                #                  .build());
+                                #        }
+                                #        return resultBuilder.build();
+                                #      }
+                                #      // ...
+                                #
+                                # Example (iOS / Obj-C):
+                                #
+                                #      // ...
+                                #      static UIColor* fromProto(Color* protocolor) {
+                                #         float red = [protocolor red];
+                                #         float green = [protocolor green];
+                                #         float blue = [protocolor blue];
+                                #         FloatValue* alpha_wrapper = [protocolor alpha];
+                                #         float alpha = 1.0;
+                                #         if (alpha_wrapper != nil) {
+                                #           alpha = [alpha_wrapper value];
+                                #         }
+                                #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
+                                #      }
+                                #
+                                #      static Color* toProto(UIColor* color) {
+                                #          CGFloat red, green, blue, alpha;
+                                #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
+                                #            return nil;
+                                #          }
+                                #          Color* result = [Color alloc] init];
+                                #          [result setRed:red];
+                                #          [result setGreen:green];
+                                #          [result setBlue:blue];
+                                #          if (alpha <= 0.9999) {
+                                #            [result setAlpha:floatWrapperWithValue(alpha)];
+                                #          }
+                                #          [result autorelease];
+                                #          return result;
+                                #     }
+                                #     // ...
+                                #
+                                #  Example (JavaScript):
+                                #
+                                #     // ...
+                                #
+                                #     var protoToCssColor = function(rgb_color) {
+                                #        var redFrac = rgb_color.red || 0.0;
+                                #        var greenFrac = rgb_color.green || 0.0;
+                                #        var blueFrac = rgb_color.blue || 0.0;
+                                #        var red = Math.floor(redFrac * 255);
+                                #        var green = Math.floor(greenFrac * 255);
+                                #        var blue = Math.floor(blueFrac * 255);
+                                #
+                                #        if (!('alpha' in rgb_color)) {
+                                #           return rgbToCssColor_(red, green, blue);
+                                #        }
+                                #
+                                #        var alphaFrac = rgb_color.alpha.value || 0.0;
+                                #        var rgbParams = [red, green, blue].join(',');
+                                #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
+                                #     };
+                                #
+                                #     var rgbToCssColor_ = function(red, green, blue) {
+                                #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
+                                #       var hexString = rgbNumber.toString(16);
+                                #       var missingZeros = 6 - hexString.length;
+                                #       var resultBuilder = ['#'];
+                                #       for (var i = 0; i < missingZeros; i++) {
+                                #          resultBuilder.push('0');
+                                #       }
+                                #       resultBuilder.push(hexString);
+                                #       return resultBuilder.join('');
+                                #     };
+                                #
+                                #     // ...
+                              "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+                              "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
+                                  # the final pixel color is defined by the equation:
+                                  #
+                                  #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
+                                  #
+                                  # This means that a value of 1.0 corresponds to a solid color, whereas
+                                  # a value of 0.0 corresponds to a completely transparent color. This
+                                  # uses a wrapper message rather than a simple float scalar so that it is
+                                  # possible to distinguish between a default value and the value being unset.
+                                  # If omitted, this color object is to be rendered as a solid color
+                                  # (as if the alpha value had been explicitly given with a value of 1.0).
+                              "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
+                              "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
+                            },
+                            "width": 42, # The width of the border, in pixels.
+                                # Deprecated; the width is determined by the "style" field.
+                            "style": "A String", # The style of the border.
+                          },
+                          "right": { # A border along a cell. # The right border of the cell.
+                            "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
+                                # for simplicity of conversion to/from color representations in various
+                                # languages over compactness; for example, the fields of this representation
+                                # can be trivially provided to the constructor of "java.awt.Color" in Java; it
+                                # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
+                                # method in iOS; and, with just a little work, it can be easily formatted into
+                                # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
+                                #
+                                # Example (Java):
+                                #
+                                #      import com.google.type.Color;
+                                #
+                                #      // ...
+                                #      public static java.awt.Color fromProto(Color protocolor) {
+                                #        float alpha = protocolor.hasAlpha()
+                                #            ? protocolor.getAlpha().getValue()
+                                #            : 1.0;
+                                #
+                                #        return new java.awt.Color(
+                                #            protocolor.getRed(),
+                                #            protocolor.getGreen(),
+                                #            protocolor.getBlue(),
+                                #            alpha);
+                                #      }
+                                #
+                                #      public static Color toProto(java.awt.Color color) {
+                                #        float red = (float) color.getRed();
+                                #        float green = (float) color.getGreen();
+                                #        float blue = (float) color.getBlue();
+                                #        float denominator = 255.0;
+                                #        Color.Builder resultBuilder =
+                                #            Color
+                                #                .newBuilder()
+                                #                .setRed(red / denominator)
+                                #                .setGreen(green / denominator)
+                                #                .setBlue(blue / denominator);
+                                #        int alpha = color.getAlpha();
+                                #        if (alpha != 255) {
+                                #          result.setAlpha(
+                                #              FloatValue
+                                #                  .newBuilder()
+                                #                  .setValue(((float) alpha) / denominator)
+                                #                  .build());
+                                #        }
+                                #        return resultBuilder.build();
+                                #      }
+                                #      // ...
+                                #
+                                # Example (iOS / Obj-C):
+                                #
+                                #      // ...
+                                #      static UIColor* fromProto(Color* protocolor) {
+                                #         float red = [protocolor red];
+                                #         float green = [protocolor green];
+                                #         float blue = [protocolor blue];
+                                #         FloatValue* alpha_wrapper = [protocolor alpha];
+                                #         float alpha = 1.0;
+                                #         if (alpha_wrapper != nil) {
+                                #           alpha = [alpha_wrapper value];
+                                #         }
+                                #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
+                                #      }
+                                #
+                                #      static Color* toProto(UIColor* color) {
+                                #          CGFloat red, green, blue, alpha;
+                                #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
+                                #            return nil;
+                                #          }
+                                #          Color* result = [Color alloc] init];
+                                #          [result setRed:red];
+                                #          [result setGreen:green];
+                                #          [result setBlue:blue];
+                                #          if (alpha <= 0.9999) {
+                                #            [result setAlpha:floatWrapperWithValue(alpha)];
+                                #          }
+                                #          [result autorelease];
+                                #          return result;
+                                #     }
+                                #     // ...
+                                #
+                                #  Example (JavaScript):
+                                #
+                                #     // ...
+                                #
+                                #     var protoToCssColor = function(rgb_color) {
+                                #        var redFrac = rgb_color.red || 0.0;
+                                #        var greenFrac = rgb_color.green || 0.0;
+                                #        var blueFrac = rgb_color.blue || 0.0;
+                                #        var red = Math.floor(redFrac * 255);
+                                #        var green = Math.floor(greenFrac * 255);
+                                #        var blue = Math.floor(blueFrac * 255);
+                                #
+                                #        if (!('alpha' in rgb_color)) {
+                                #           return rgbToCssColor_(red, green, blue);
+                                #        }
+                                #
+                                #        var alphaFrac = rgb_color.alpha.value || 0.0;
+                                #        var rgbParams = [red, green, blue].join(',');
+                                #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
+                                #     };
+                                #
+                                #     var rgbToCssColor_ = function(red, green, blue) {
+                                #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
+                                #       var hexString = rgbNumber.toString(16);
+                                #       var missingZeros = 6 - hexString.length;
+                                #       var resultBuilder = ['#'];
+                                #       for (var i = 0; i < missingZeros; i++) {
+                                #          resultBuilder.push('0');
+                                #       }
+                                #       resultBuilder.push(hexString);
+                                #       return resultBuilder.join('');
+                                #     };
+                                #
+                                #     // ...
+                              "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+                              "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
+                                  # the final pixel color is defined by the equation:
+                                  #
+                                  #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
+                                  #
+                                  # This means that a value of 1.0 corresponds to a solid color, whereas
+                                  # a value of 0.0 corresponds to a completely transparent color. This
+                                  # uses a wrapper message rather than a simple float scalar so that it is
+                                  # possible to distinguish between a default value and the value being unset.
+                                  # If omitted, this color object is to be rendered as a solid color
+                                  # (as if the alpha value had been explicitly given with a value of 1.0).
+                              "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
+                              "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
+                            },
+                            "width": 42, # The width of the border, in pixels.
+                                # Deprecated; the width is determined by the "style" field.
+                            "style": "A String", # The style of the border.
+                          },
+                          "bottom": { # A border along a cell. # The bottom border of the cell.
+                            "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
+                                # for simplicity of conversion to/from color representations in various
+                                # languages over compactness; for example, the fields of this representation
+                                # can be trivially provided to the constructor of "java.awt.Color" in Java; it
+                                # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
+                                # method in iOS; and, with just a little work, it can be easily formatted into
+                                # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
+                                #
+                                # Example (Java):
+                                #
+                                #      import com.google.type.Color;
+                                #
+                                #      // ...
+                                #      public static java.awt.Color fromProto(Color protocolor) {
+                                #        float alpha = protocolor.hasAlpha()
+                                #            ? protocolor.getAlpha().getValue()
+                                #            : 1.0;
+                                #
+                                #        return new java.awt.Color(
+                                #            protocolor.getRed(),
+                                #            protocolor.getGreen(),
+                                #            protocolor.getBlue(),
+                                #            alpha);
+                                #      }
+                                #
+                                #      public static Color toProto(java.awt.Color color) {
+                                #        float red = (float) color.getRed();
+                                #        float green = (float) color.getGreen();
+                                #        float blue = (float) color.getBlue();
+                                #        float denominator = 255.0;
+                                #        Color.Builder resultBuilder =
+                                #            Color
+                                #                .newBuilder()
+                                #                .setRed(red / denominator)
+                                #                .setGreen(green / denominator)
+                                #                .setBlue(blue / denominator);
+                                #        int alpha = color.getAlpha();
+                                #        if (alpha != 255) {
+                                #          result.setAlpha(
+                                #              FloatValue
+                                #                  .newBuilder()
+                                #                  .setValue(((float) alpha) / denominator)
+                                #                  .build());
+                                #        }
+                                #        return resultBuilder.build();
+                                #      }
+                                #      // ...
+                                #
+                                # Example (iOS / Obj-C):
+                                #
+                                #      // ...
+                                #      static UIColor* fromProto(Color* protocolor) {
+                                #         float red = [protocolor red];
+                                #         float green = [protocolor green];
+                                #         float blue = [protocolor blue];
+                                #         FloatValue* alpha_wrapper = [protocolor alpha];
+                                #         float alpha = 1.0;
+                                #         if (alpha_wrapper != nil) {
+                                #           alpha = [alpha_wrapper value];
+                                #         }
+                                #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
+                                #      }
+                                #
+                                #      static Color* toProto(UIColor* color) {
+                                #          CGFloat red, green, blue, alpha;
+                                #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
+                                #            return nil;
+                                #          }
+                                #          Color* result = [Color alloc] init];
+                                #          [result setRed:red];
+                                #          [result setGreen:green];
+                                #          [result setBlue:blue];
+                                #          if (alpha <= 0.9999) {
+                                #            [result setAlpha:floatWrapperWithValue(alpha)];
+                                #          }
+                                #          [result autorelease];
+                                #          return result;
+                                #     }
+                                #     // ...
+                                #
+                                #  Example (JavaScript):
+                                #
+                                #     // ...
+                                #
+                                #     var protoToCssColor = function(rgb_color) {
+                                #        var redFrac = rgb_color.red || 0.0;
+                                #        var greenFrac = rgb_color.green || 0.0;
+                                #        var blueFrac = rgb_color.blue || 0.0;
+                                #        var red = Math.floor(redFrac * 255);
+                                #        var green = Math.floor(greenFrac * 255);
+                                #        var blue = Math.floor(blueFrac * 255);
+                                #
+                                #        if (!('alpha' in rgb_color)) {
+                                #           return rgbToCssColor_(red, green, blue);
+                                #        }
+                                #
+                                #        var alphaFrac = rgb_color.alpha.value || 0.0;
+                                #        var rgbParams = [red, green, blue].join(',');
+                                #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
+                                #     };
+                                #
+                                #     var rgbToCssColor_ = function(red, green, blue) {
+                                #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
+                                #       var hexString = rgbNumber.toString(16);
+                                #       var missingZeros = 6 - hexString.length;
+                                #       var resultBuilder = ['#'];
+                                #       for (var i = 0; i < missingZeros; i++) {
+                                #          resultBuilder.push('0');
+                                #       }
+                                #       resultBuilder.push(hexString);
+                                #       return resultBuilder.join('');
+                                #     };
+                                #
+                                #     // ...
+                              "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+                              "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
+                                  # the final pixel color is defined by the equation:
+                                  #
+                                  #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
+                                  #
+                                  # This means that a value of 1.0 corresponds to a solid color, whereas
+                                  # a value of 0.0 corresponds to a completely transparent color. This
+                                  # uses a wrapper message rather than a simple float scalar so that it is
+                                  # possible to distinguish between a default value and the value being unset.
+                                  # If omitted, this color object is to be rendered as a solid color
+                                  # (as if the alpha value had been explicitly given with a value of 1.0).
+                              "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
+                              "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
+                            },
+                            "width": 42, # The width of the border, in pixels.
+                                # Deprecated; the width is determined by the "style" field.
+                            "style": "A String", # The style of the border.
+                          },
+                          "left": { # A border along a cell. # The left border of the cell.
+                            "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
+                                # for simplicity of conversion to/from color representations in various
+                                # languages over compactness; for example, the fields of this representation
+                                # can be trivially provided to the constructor of "java.awt.Color" in Java; it
+                                # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
+                                # method in iOS; and, with just a little work, it can be easily formatted into
+                                # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
+                                #
+                                # Example (Java):
+                                #
+                                #      import com.google.type.Color;
+                                #
+                                #      // ...
+                                #      public static java.awt.Color fromProto(Color protocolor) {
+                                #        float alpha = protocolor.hasAlpha()
+                                #            ? protocolor.getAlpha().getValue()
+                                #            : 1.0;
+                                #
+                                #        return new java.awt.Color(
+                                #            protocolor.getRed(),
+                                #            protocolor.getGreen(),
+                                #            protocolor.getBlue(),
+                                #            alpha);
+                                #      }
+                                #
+                                #      public static Color toProto(java.awt.Color color) {
+                                #        float red = (float) color.getRed();
+                                #        float green = (float) color.getGreen();
+                                #        float blue = (float) color.getBlue();
+                                #        float denominator = 255.0;
+                                #        Color.Builder resultBuilder =
+                                #            Color
+                                #                .newBuilder()
+                                #                .setRed(red / denominator)
+                                #                .setGreen(green / denominator)
+                                #                .setBlue(blue / denominator);
+                                #        int alpha = color.getAlpha();
+                                #        if (alpha != 255) {
+                                #          result.setAlpha(
+                                #              FloatValue
+                                #                  .newBuilder()
+                                #                  .setValue(((float) alpha) / denominator)
+                                #                  .build());
+                                #        }
+                                #        return resultBuilder.build();
+                                #      }
+                                #      // ...
+                                #
+                                # Example (iOS / Obj-C):
+                                #
+                                #      // ...
+                                #      static UIColor* fromProto(Color* protocolor) {
+                                #         float red = [protocolor red];
+                                #         float green = [protocolor green];
+                                #         float blue = [protocolor blue];
+                                #         FloatValue* alpha_wrapper = [protocolor alpha];
+                                #         float alpha = 1.0;
+                                #         if (alpha_wrapper != nil) {
+                                #           alpha = [alpha_wrapper value];
+                                #         }
+                                #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
+                                #      }
+                                #
+                                #      static Color* toProto(UIColor* color) {
+                                #          CGFloat red, green, blue, alpha;
+                                #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
+                                #            return nil;
+                                #          }
+                                #          Color* result = [Color alloc] init];
+                                #          [result setRed:red];
+                                #          [result setGreen:green];
+                                #          [result setBlue:blue];
+                                #          if (alpha <= 0.9999) {
+                                #            [result setAlpha:floatWrapperWithValue(alpha)];
+                                #          }
+                                #          [result autorelease];
+                                #          return result;
+                                #     }
+                                #     // ...
+                                #
+                                #  Example (JavaScript):
+                                #
+                                #     // ...
+                                #
+                                #     var protoToCssColor = function(rgb_color) {
+                                #        var redFrac = rgb_color.red || 0.0;
+                                #        var greenFrac = rgb_color.green || 0.0;
+                                #        var blueFrac = rgb_color.blue || 0.0;
+                                #        var red = Math.floor(redFrac * 255);
+                                #        var green = Math.floor(greenFrac * 255);
+                                #        var blue = Math.floor(blueFrac * 255);
+                                #
+                                #        if (!('alpha' in rgb_color)) {
+                                #           return rgbToCssColor_(red, green, blue);
+                                #        }
+                                #
+                                #        var alphaFrac = rgb_color.alpha.value || 0.0;
+                                #        var rgbParams = [red, green, blue].join(',');
+                                #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
+                                #     };
+                                #
+                                #     var rgbToCssColor_ = function(red, green, blue) {
+                                #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
+                                #       var hexString = rgbNumber.toString(16);
+                                #       var missingZeros = 6 - hexString.length;
+                                #       var resultBuilder = ['#'];
+                                #       for (var i = 0; i < missingZeros; i++) {
+                                #          resultBuilder.push('0');
+                                #       }
+                                #       resultBuilder.push(hexString);
+                                #       return resultBuilder.join('');
+                                #     };
+                                #
+                                #     // ...
+                              "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+                              "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
+                                  # the final pixel color is defined by the equation:
+                                  #
+                                  #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
+                                  #
+                                  # This means that a value of 1.0 corresponds to a solid color, whereas
+                                  # a value of 0.0 corresponds to a completely transparent color. This
+                                  # uses a wrapper message rather than a simple float scalar so that it is
+                                  # possible to distinguish between a default value and the value being unset.
+                                  # If omitted, this color object is to be rendered as a solid color
+                                  # (as if the alpha value had been explicitly given with a value of 1.0).
+                              "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
+                              "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
+                            },
+                            "width": 42, # The width of the border, in pixels.
+                                # Deprecated; the width is determined by the "style" field.
+                            "style": "A String", # The style of the border.
+                          },
+                        },
+                        "wrapStrategy": "A String", # The wrap strategy for the value in the cell.
+                      },
+                      "dataValidation": { # A data validation rule. # A data validation rule on the cell, if any.
+                          #
+                          # When writing, the new data validation rule will overwrite any prior rule.
+                        "showCustomUi": True or False, # True if the UI should be customized based on the kind of condition.
+                            # If true, "List" conditions will show a dropdown.
+                        "strict": True or False, # True if invalid data should be rejected.
+                        "inputMessage": "A String", # A message to show the user when adding data to the cell.
+                        "condition": { # A condition that can evaluate to true or false. # The condition that data in the cell must match.
+                            # BooleanConditions are used by conditional formatting,
+                            # data validation, and the criteria in filters.
+                          "type": "A String", # The type of condition.
+                          "values": [ # The values of the condition. The number of supported values depends
+                              # on the condition type.  Some support zero values,
+                              # others one or two values,
+                              # and ConditionType.ONE_OF_LIST supports an arbitrary number of values.
+                            { # The value of the condition.
+                              "relativeDate": "A String", # A relative date (based on the current date).
+                                  # Valid only if the type is
+                                  # DATE_BEFORE,
+                                  # DATE_AFTER,
+                                  # DATE_ON_OR_BEFORE or
+                                  # DATE_ON_OR_AFTER.
+                                  #
+                                  # Relative dates are not supported in data validation.
+                                  # They are supported only in conditional formatting and
+                                  # conditional filters.
+                              "userEnteredValue": "A String", # A value the condition is based on.
+                                  # The value will be parsed as if the user typed into a cell.
+                                  # Formulas are supported (and must begin with an `=`).
+                            },
+                          ],
+                        },
+                      },
+                      "textFormatRuns": [ # Runs of rich text applied to subsections of the cell.  Runs are only valid
+                          # on user entered strings, not formulas, bools, or numbers.
+                          # Runs start at specific indexes in the text and continue until the next
+                          # run. Properties of a run will continue unless explicitly changed
+                          # in a subsequent run (and properties of the first run will continue
+                          # the properties of the cell unless explicitly changed).
+                          #
+                          # When writing, the new runs will overwrite any prior runs.  When writing a
+                          # new user_entered_value, previous runs will be erased.
+                        { # A run of a text format. The format of this run continues until the start
+                            # index of the next run.
+                            # When updating, all fields must be set.
+                          "startIndex": 42, # The character index where this run starts.
+                          "format": { # The format of a run of text in a cell. # The format of this run.  Absent values inherit the cell's format.
+                              # Absent values indicate that the field isn't specified.
+                            "foregroundColor": { # Represents a color in the RGBA color space. This representation is designed # The foreground color of the text.
+                                # for simplicity of conversion to/from color representations in various
+                                # languages over compactness; for example, the fields of this representation
+                                # can be trivially provided to the constructor of "java.awt.Color" in Java; it
+                                # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
+                                # method in iOS; and, with just a little work, it can be easily formatted into
+                                # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
+                                #
+                                # Example (Java):
+                                #
+                                #      import com.google.type.Color;
+                                #
+                                #      // ...
+                                #      public static java.awt.Color fromProto(Color protocolor) {
+                                #        float alpha = protocolor.hasAlpha()
+                                #            ? protocolor.getAlpha().getValue()
+                                #            : 1.0;
+                                #
+                                #        return new java.awt.Color(
+                                #            protocolor.getRed(),
+                                #            protocolor.getGreen(),
+                                #            protocolor.getBlue(),
+                                #            alpha);
+                                #      }
+                                #
+                                #      public static Color toProto(java.awt.Color color) {
+                                #        float red = (float) color.getRed();
+                                #        float green = (float) color.getGreen();
+                                #        float blue = (float) color.getBlue();
+                                #        float denominator = 255.0;
+                                #        Color.Builder resultBuilder =
+                                #            Color
+                                #                .newBuilder()
+                                #                .setRed(red / denominator)
+                                #                .setGreen(green / denominator)
+                                #                .setBlue(blue / denominator);
+                                #        int alpha = color.getAlpha();
+                                #        if (alpha != 255) {
+                                #          result.setAlpha(
+                                #              FloatValue
+                                #                  .newBuilder()
+                                #                  .setValue(((float) alpha) / denominator)
+                                #                  .build());
+                                #        }
+                                #        return resultBuilder.build();
+                                #      }
+                                #      // ...
+                                #
+                                # Example (iOS / Obj-C):
+                                #
+                                #      // ...
+                                #      static UIColor* fromProto(Color* protocolor) {
+                                #         float red = [protocolor red];
+                                #         float green = [protocolor green];
+                                #         float blue = [protocolor blue];
+                                #         FloatValue* alpha_wrapper = [protocolor alpha];
+                                #         float alpha = 1.0;
+                                #         if (alpha_wrapper != nil) {
+                                #           alpha = [alpha_wrapper value];
+                                #         }
+                                #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
+                                #      }
+                                #
+                                #      static Color* toProto(UIColor* color) {
+                                #          CGFloat red, green, blue, alpha;
+                                #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
+                                #            return nil;
+                                #          }
+                                #          Color* result = [Color alloc] init];
+                                #          [result setRed:red];
+                                #          [result setGreen:green];
+                                #          [result setBlue:blue];
+                                #          if (alpha <= 0.9999) {
+                                #            [result setAlpha:floatWrapperWithValue(alpha)];
+                                #          }
+                                #          [result autorelease];
+                                #          return result;
+                                #     }
+                                #     // ...
+                                #
+                                #  Example (JavaScript):
+                                #
+                                #     // ...
+                                #
+                                #     var protoToCssColor = function(rgb_color) {
+                                #        var redFrac = rgb_color.red || 0.0;
+                                #        var greenFrac = rgb_color.green || 0.0;
+                                #        var blueFrac = rgb_color.blue || 0.0;
+                                #        var red = Math.floor(redFrac * 255);
+                                #        var green = Math.floor(greenFrac * 255);
+                                #        var blue = Math.floor(blueFrac * 255);
+                                #
+                                #        if (!('alpha' in rgb_color)) {
+                                #           return rgbToCssColor_(red, green, blue);
+                                #        }
+                                #
+                                #        var alphaFrac = rgb_color.alpha.value || 0.0;
+                                #        var rgbParams = [red, green, blue].join(',');
+                                #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
+                                #     };
+                                #
+                                #     var rgbToCssColor_ = function(red, green, blue) {
+                                #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
+                                #       var hexString = rgbNumber.toString(16);
+                                #       var missingZeros = 6 - hexString.length;
+                                #       var resultBuilder = ['#'];
+                                #       for (var i = 0; i < missingZeros; i++) {
+                                #          resultBuilder.push('0');
+                                #       }
+                                #       resultBuilder.push(hexString);
+                                #       return resultBuilder.join('');
+                                #     };
+                                #
+                                #     // ...
+                              "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+                              "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
+                                  # the final pixel color is defined by the equation:
+                                  #
+                                  #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
+                                  #
+                                  # This means that a value of 1.0 corresponds to a solid color, whereas
+                                  # a value of 0.0 corresponds to a completely transparent color. This
+                                  # uses a wrapper message rather than a simple float scalar so that it is
+                                  # possible to distinguish between a default value and the value being unset.
+                                  # If omitted, this color object is to be rendered as a solid color
+                                  # (as if the alpha value had been explicitly given with a value of 1.0).
+                              "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
+                              "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
+                            },
+                            "bold": True or False, # True if the text is bold.
+                            "strikethrough": True or False, # True if the text has a strikethrough.
+                            "fontFamily": "A String", # The font family.
+                            "fontSize": 42, # The size of the font.
+                            "italic": True or False, # True if the text is italicized.
+                            "underline": True or False, # True if the text is underlined.
+                          },
+                        },
+                      ],
+                    },
+                  ],
+                },
+              ],
+            },
+          ],
+          "properties": { # Properties of a sheet. # The properties of the sheet.
+            "sheetType": "A String", # The type of sheet. Defaults to GRID.
+                # This field cannot be changed once set.
+            "index": 42, # The index of the sheet within the spreadsheet.
+                # When adding or updating sheet properties, if this field
+                # is excluded then the sheet will be added or moved to the end
+                # of the sheet list. When updating sheet indices or inserting
+                # sheets, movement is considered in "before the move" indexes.
+                # For example, if there were 3 sheets (S1, S2, S3) in order to
+                # move S1 ahead of S2 the index would have to be set to 2. A sheet
+                # index update request will be ignored if the requested index is
+                # identical to the sheets current index or if the requested new
+                # index is equal to the current sheet index + 1.
+            "title": "A String", # The name of the sheet.
+            "gridProperties": { # Properties of a grid. # Additional properties of the sheet if this sheet is a grid.
+                # (If the sheet is an object sheet, containing a chart or image, then
+                # this field will be absent.)
+                # When writing it is an error to set any grid properties on non-grid sheets.
+              "columnCount": 42, # The number of columns in the grid.
+              "rowCount": 42, # The number of rows in the grid.
+              "frozenColumnCount": 42, # The number of columns that are frozen in the grid.
+              "hideGridlines": True or False, # True if the grid isn't showing gridlines in the UI.
+              "frozenRowCount": 42, # The number of rows that are frozen in the grid.
+            },
+            "rightToLeft": True or False, # True if the sheet is an RTL sheet instead of an LTR sheet.
+            "tabColor": { # Represents a color in the RGBA color space. This representation is designed # The color of the tab in the UI.
+                # for simplicity of conversion to/from color representations in various
+                # languages over compactness; for example, the fields of this representation
+                # can be trivially provided to the constructor of "java.awt.Color" in Java; it
+                # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
+                # method in iOS; and, with just a little work, it can be easily formatted into
+                # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
+                #
+                # Example (Java):
+                #
+                #      import com.google.type.Color;
+                #
+                #      // ...
+                #      public static java.awt.Color fromProto(Color protocolor) {
+                #        float alpha = protocolor.hasAlpha()
+                #            ? protocolor.getAlpha().getValue()
+                #            : 1.0;
+                #
+                #        return new java.awt.Color(
+                #            protocolor.getRed(),
+                #            protocolor.getGreen(),
+                #            protocolor.getBlue(),
+                #            alpha);
+                #      }
+                #
+                #      public static Color toProto(java.awt.Color color) {
+                #        float red = (float) color.getRed();
+                #        float green = (float) color.getGreen();
+                #        float blue = (float) color.getBlue();
+                #        float denominator = 255.0;
+                #        Color.Builder resultBuilder =
+                #            Color
+                #                .newBuilder()
+                #                .setRed(red / denominator)
+                #                .setGreen(green / denominator)
+                #                .setBlue(blue / denominator);
+                #        int alpha = color.getAlpha();
+                #        if (alpha != 255) {
+                #          result.setAlpha(
+                #              FloatValue
+                #                  .newBuilder()
+                #                  .setValue(((float) alpha) / denominator)
+                #                  .build());
+                #        }
+                #        return resultBuilder.build();
+                #      }
+                #      // ...
+                #
+                # Example (iOS / Obj-C):
+                #
+                #      // ...
+                #      static UIColor* fromProto(Color* protocolor) {
+                #         float red = [protocolor red];
+                #         float green = [protocolor green];
+                #         float blue = [protocolor blue];
+                #         FloatValue* alpha_wrapper = [protocolor alpha];
+                #         float alpha = 1.0;
+                #         if (alpha_wrapper != nil) {
+                #           alpha = [alpha_wrapper value];
+                #         }
+                #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
+                #      }
+                #
+                #      static Color* toProto(UIColor* color) {
+                #          CGFloat red, green, blue, alpha;
+                #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
+                #            return nil;
+                #          }
+                #          Color* result = [Color alloc] init];
+                #          [result setRed:red];
+                #          [result setGreen:green];
+                #          [result setBlue:blue];
+                #          if (alpha <= 0.9999) {
+                #            [result setAlpha:floatWrapperWithValue(alpha)];
+                #          }
+                #          [result autorelease];
+                #          return result;
+                #     }
+                #     // ...
+                #
+                #  Example (JavaScript):
+                #
+                #     // ...
+                #
+                #     var protoToCssColor = function(rgb_color) {
+                #        var redFrac = rgb_color.red || 0.0;
+                #        var greenFrac = rgb_color.green || 0.0;
+                #        var blueFrac = rgb_color.blue || 0.0;
+                #        var red = Math.floor(redFrac * 255);
+                #        var green = Math.floor(greenFrac * 255);
+                #        var blue = Math.floor(blueFrac * 255);
+                #
+                #        if (!('alpha' in rgb_color)) {
+                #           return rgbToCssColor_(red, green, blue);
+                #        }
+                #
+                #        var alphaFrac = rgb_color.alpha.value || 0.0;
+                #        var rgbParams = [red, green, blue].join(',');
+                #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
+                #     };
+                #
+                #     var rgbToCssColor_ = function(red, green, blue) {
+                #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
+                #       var hexString = rgbNumber.toString(16);
+                #       var missingZeros = 6 - hexString.length;
+                #       var resultBuilder = ['#'];
+                #       for (var i = 0; i < missingZeros; i++) {
+                #          resultBuilder.push('0');
+                #       }
+                #       resultBuilder.push(hexString);
+                #       return resultBuilder.join('');
+                #     };
+                #
+                #     // ...
+              "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+              "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
+                  # the final pixel color is defined by the equation:
+                  #
+                  #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
+                  #
+                  # This means that a value of 1.0 corresponds to a solid color, whereas
+                  # a value of 0.0 corresponds to a completely transparent color. This
+                  # uses a wrapper message rather than a simple float scalar so that it is
+                  # possible to distinguish between a default value and the value being unset.
+                  # If omitted, this color object is to be rendered as a solid color
+                  # (as if the alpha value had been explicitly given with a value of 1.0).
+              "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
+              "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
+            },
+            "hidden": True or False, # True if the sheet is hidden in the UI, false if it's visible.
+            "sheetId": 42, # The ID of the sheet. Must be non-negative.
+                # This field cannot be changed once set.
+          },
+        },
+      ],
+      "spreadsheetUrl": "A String", # The url of the spreadsheet.
+          # This field is read-only.
+    },
     "replies": [ # The reply of the updates.  This maps 1:1 with the updates, although
         # replies to some requests may be empty.
       { # A single response from an update.
@@ -13490,7 +22168,13 @@
             "index": 42, # The index of the sheet within the spreadsheet.
                 # When adding or updating sheet properties, if this field
                 # is excluded then the sheet will be added or moved to the end
-                # of the sheet list.
+                # of the sheet list. When updating sheet indices or inserting
+                # sheets, movement is considered in "before the move" indexes.
+                # For example, if there were 3 sheets (S1, S2, S3) in order to
+                # move S1 ahead of S2 the index would have to be set to 2. A sheet
+                # index update request will be ignored if the requested index is
+                # identical to the sheets current index or if the requested new
+                # index is equal to the current sheet index + 1.
             "title": "A String", # The name of the sheet.
             "gridProperties": { # Properties of a grid. # Additional properties of the sheet if this sheet is a grid.
                 # (If the sheet is an object sheet, containing a chart or image, then
@@ -16754,7 +25438,13 @@
             "index": 42, # The index of the sheet within the spreadsheet.
                 # When adding or updating sheet properties, if this field
                 # is excluded then the sheet will be added or moved to the end
-                # of the sheet list.
+                # of the sheet list. When updating sheet indices or inserting
+                # sheets, movement is considered in "before the move" indexes.
+                # For example, if there were 3 sheets (S1, S2, S3) in order to
+                # move S1 ahead of S2 the index would have to be set to 2. A sheet
+                # index update request will be ignored if the requested index is
+                # identical to the sheets current index or if the requested new
+                # index is equal to the current sheet index + 1.
             "title": "A String", # The name of the sheet.
             "gridProperties": { # Properties of a grid. # Additional properties of the sheet if this sheet is a grid.
                 # (If the sheet is an object sheet, containing a chart or image, then
@@ -18383,6 +27073,1126 @@
             },
           },
         },
+        "addBanding": { # The result of adding a banded range. # A reply from adding a banded range.
+          "bandedRange": { # A banded (alternating colors) range in a sheet. # The banded range that was added.
+            "range": { # A range on a sheet. # The range over which these properties are applied.
+                # All indexes are zero-based.
+                # Indexes are half open, e.g the start index is inclusive
+                # and the end index is exclusive -- [start_index, end_index).
+                # Missing indexes indicate the range is unbounded on that side.
+                #
+                # For example, if `"Sheet1"` is sheet ID 0, then:
+                #
+                #   `Sheet1!A1:A1 == sheet_id: 0,
+                #                   start_row_index: 0, end_row_index: 1,
+                #                   start_column_index: 0, end_column_index: 1`
+                #
+                #   `Sheet1!A3:B4 == sheet_id: 0,
+                #                   start_row_index: 2, end_row_index: 4,
+                #                   start_column_index: 0, end_column_index: 2`
+                #
+                #   `Sheet1!A:B == sheet_id: 0,
+                #                 start_column_index: 0, end_column_index: 2`
+                #
+                #   `Sheet1!A5:B == sheet_id: 0,
+                #                  start_row_index: 4,
+                #                  start_column_index: 0, end_column_index: 2`
+                #
+                #   `Sheet1 == sheet_id:0`
+                #
+                # The start index must always be less than or equal to the end index.
+                # If the start index equals the end index, then the range is empty.
+                # Empty ranges are typically not meaningful and are usually rendered in the
+                # UI as `#REF!`.
+              "endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
+              "startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
+              "sheetId": 42, # The sheet this range is on.
+              "startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
+              "endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
+            },
+            "columnProperties": { # Properties referring a single dimension (either row or column). If both # Properties for column bands. These properties will be applied on a column-
+                # by-column basis throughout all the columns in the range. At least one of
+                # row_properties or column_properties must be specified.
+                # BandedRange.row_properties and BandedRange.column_properties are
+                # set, the fill colors are applied to cells according to the following rules:
+                #
+                # * header_color and footer_color take priority over band colors.
+                # * first_band_color takes priority over second_band_color.
+                # * row_properties takes priority over column_properties.
+                #
+                # For example, the first row color takes priority over the first column
+                # color, but the first column color takes priority over the second row color.
+                # Similarly, the row header takes priority over the column header in the
+                # top left cell, but the column header takes priority over the first row
+                # color if the row header is not set.
+              "secondBandColor": { # Represents a color in the RGBA color space. This representation is designed # The second color that is alternating. (Required)
+                  # for simplicity of conversion to/from color representations in various
+                  # languages over compactness; for example, the fields of this representation
+                  # can be trivially provided to the constructor of "java.awt.Color" in Java; it
+                  # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
+                  # method in iOS; and, with just a little work, it can be easily formatted into
+                  # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
+                  #
+                  # Example (Java):
+                  #
+                  #      import com.google.type.Color;
+                  #
+                  #      // ...
+                  #      public static java.awt.Color fromProto(Color protocolor) {
+                  #        float alpha = protocolor.hasAlpha()
+                  #            ? protocolor.getAlpha().getValue()
+                  #            : 1.0;
+                  #
+                  #        return new java.awt.Color(
+                  #            protocolor.getRed(),
+                  #            protocolor.getGreen(),
+                  #            protocolor.getBlue(),
+                  #            alpha);
+                  #      }
+                  #
+                  #      public static Color toProto(java.awt.Color color) {
+                  #        float red = (float) color.getRed();
+                  #        float green = (float) color.getGreen();
+                  #        float blue = (float) color.getBlue();
+                  #        float denominator = 255.0;
+                  #        Color.Builder resultBuilder =
+                  #            Color
+                  #                .newBuilder()
+                  #                .setRed(red / denominator)
+                  #                .setGreen(green / denominator)
+                  #                .setBlue(blue / denominator);
+                  #        int alpha = color.getAlpha();
+                  #        if (alpha != 255) {
+                  #          result.setAlpha(
+                  #              FloatValue
+                  #                  .newBuilder()
+                  #                  .setValue(((float) alpha) / denominator)
+                  #                  .build());
+                  #        }
+                  #        return resultBuilder.build();
+                  #      }
+                  #      // ...
+                  #
+                  # Example (iOS / Obj-C):
+                  #
+                  #      // ...
+                  #      static UIColor* fromProto(Color* protocolor) {
+                  #         float red = [protocolor red];
+                  #         float green = [protocolor green];
+                  #         float blue = [protocolor blue];
+                  #         FloatValue* alpha_wrapper = [protocolor alpha];
+                  #         float alpha = 1.0;
+                  #         if (alpha_wrapper != nil) {
+                  #           alpha = [alpha_wrapper value];
+                  #         }
+                  #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
+                  #      }
+                  #
+                  #      static Color* toProto(UIColor* color) {
+                  #          CGFloat red, green, blue, alpha;
+                  #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
+                  #            return nil;
+                  #          }
+                  #          Color* result = [Color alloc] init];
+                  #          [result setRed:red];
+                  #          [result setGreen:green];
+                  #          [result setBlue:blue];
+                  #          if (alpha <= 0.9999) {
+                  #            [result setAlpha:floatWrapperWithValue(alpha)];
+                  #          }
+                  #          [result autorelease];
+                  #          return result;
+                  #     }
+                  #     // ...
+                  #
+                  #  Example (JavaScript):
+                  #
+                  #     // ...
+                  #
+                  #     var protoToCssColor = function(rgb_color) {
+                  #        var redFrac = rgb_color.red || 0.0;
+                  #        var greenFrac = rgb_color.green || 0.0;
+                  #        var blueFrac = rgb_color.blue || 0.0;
+                  #        var red = Math.floor(redFrac * 255);
+                  #        var green = Math.floor(greenFrac * 255);
+                  #        var blue = Math.floor(blueFrac * 255);
+                  #
+                  #        if (!('alpha' in rgb_color)) {
+                  #           return rgbToCssColor_(red, green, blue);
+                  #        }
+                  #
+                  #        var alphaFrac = rgb_color.alpha.value || 0.0;
+                  #        var rgbParams = [red, green, blue].join(',');
+                  #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
+                  #     };
+                  #
+                  #     var rgbToCssColor_ = function(red, green, blue) {
+                  #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
+                  #       var hexString = rgbNumber.toString(16);
+                  #       var missingZeros = 6 - hexString.length;
+                  #       var resultBuilder = ['#'];
+                  #       for (var i = 0; i < missingZeros; i++) {
+                  #          resultBuilder.push('0');
+                  #       }
+                  #       resultBuilder.push(hexString);
+                  #       return resultBuilder.join('');
+                  #     };
+                  #
+                  #     // ...
+                "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+                "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
+                    # the final pixel color is defined by the equation:
+                    #
+                    #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
+                    #
+                    # This means that a value of 1.0 corresponds to a solid color, whereas
+                    # a value of 0.0 corresponds to a completely transparent color. This
+                    # uses a wrapper message rather than a simple float scalar so that it is
+                    # possible to distinguish between a default value and the value being unset.
+                    # If omitted, this color object is to be rendered as a solid color
+                    # (as if the alpha value had been explicitly given with a value of 1.0).
+                "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
+                "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
+              },
+              "headerColor": { # Represents a color in the RGBA color space. This representation is designed # The color of the first row or column. If this field is set, the first
+                  # row or column will be filled with this color and the colors will
+                  # alternate between first_band_color and second_band_color starting
+                  # from the second row or column. Otherwise, the first row or column will be
+                  # filled with first_band_color and the colors will proceed to alternate
+                  # as they normally would.
+                  # for simplicity of conversion to/from color representations in various
+                  # languages over compactness; for example, the fields of this representation
+                  # can be trivially provided to the constructor of "java.awt.Color" in Java; it
+                  # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
+                  # method in iOS; and, with just a little work, it can be easily formatted into
+                  # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
+                  #
+                  # Example (Java):
+                  #
+                  #      import com.google.type.Color;
+                  #
+                  #      // ...
+                  #      public static java.awt.Color fromProto(Color protocolor) {
+                  #        float alpha = protocolor.hasAlpha()
+                  #            ? protocolor.getAlpha().getValue()
+                  #            : 1.0;
+                  #
+                  #        return new java.awt.Color(
+                  #            protocolor.getRed(),
+                  #            protocolor.getGreen(),
+                  #            protocolor.getBlue(),
+                  #            alpha);
+                  #      }
+                  #
+                  #      public static Color toProto(java.awt.Color color) {
+                  #        float red = (float) color.getRed();
+                  #        float green = (float) color.getGreen();
+                  #        float blue = (float) color.getBlue();
+                  #        float denominator = 255.0;
+                  #        Color.Builder resultBuilder =
+                  #            Color
+                  #                .newBuilder()
+                  #                .setRed(red / denominator)
+                  #                .setGreen(green / denominator)
+                  #                .setBlue(blue / denominator);
+                  #        int alpha = color.getAlpha();
+                  #        if (alpha != 255) {
+                  #          result.setAlpha(
+                  #              FloatValue
+                  #                  .newBuilder()
+                  #                  .setValue(((float) alpha) / denominator)
+                  #                  .build());
+                  #        }
+                  #        return resultBuilder.build();
+                  #      }
+                  #      // ...
+                  #
+                  # Example (iOS / Obj-C):
+                  #
+                  #      // ...
+                  #      static UIColor* fromProto(Color* protocolor) {
+                  #         float red = [protocolor red];
+                  #         float green = [protocolor green];
+                  #         float blue = [protocolor blue];
+                  #         FloatValue* alpha_wrapper = [protocolor alpha];
+                  #         float alpha = 1.0;
+                  #         if (alpha_wrapper != nil) {
+                  #           alpha = [alpha_wrapper value];
+                  #         }
+                  #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
+                  #      }
+                  #
+                  #      static Color* toProto(UIColor* color) {
+                  #          CGFloat red, green, blue, alpha;
+                  #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
+                  #            return nil;
+                  #          }
+                  #          Color* result = [Color alloc] init];
+                  #          [result setRed:red];
+                  #          [result setGreen:green];
+                  #          [result setBlue:blue];
+                  #          if (alpha <= 0.9999) {
+                  #            [result setAlpha:floatWrapperWithValue(alpha)];
+                  #          }
+                  #          [result autorelease];
+                  #          return result;
+                  #     }
+                  #     // ...
+                  #
+                  #  Example (JavaScript):
+                  #
+                  #     // ...
+                  #
+                  #     var protoToCssColor = function(rgb_color) {
+                  #        var redFrac = rgb_color.red || 0.0;
+                  #        var greenFrac = rgb_color.green || 0.0;
+                  #        var blueFrac = rgb_color.blue || 0.0;
+                  #        var red = Math.floor(redFrac * 255);
+                  #        var green = Math.floor(greenFrac * 255);
+                  #        var blue = Math.floor(blueFrac * 255);
+                  #
+                  #        if (!('alpha' in rgb_color)) {
+                  #           return rgbToCssColor_(red, green, blue);
+                  #        }
+                  #
+                  #        var alphaFrac = rgb_color.alpha.value || 0.0;
+                  #        var rgbParams = [red, green, blue].join(',');
+                  #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
+                  #     };
+                  #
+                  #     var rgbToCssColor_ = function(red, green, blue) {
+                  #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
+                  #       var hexString = rgbNumber.toString(16);
+                  #       var missingZeros = 6 - hexString.length;
+                  #       var resultBuilder = ['#'];
+                  #       for (var i = 0; i < missingZeros; i++) {
+                  #          resultBuilder.push('0');
+                  #       }
+                  #       resultBuilder.push(hexString);
+                  #       return resultBuilder.join('');
+                  #     };
+                  #
+                  #     // ...
+                "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+                "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
+                    # the final pixel color is defined by the equation:
+                    #
+                    #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
+                    #
+                    # This means that a value of 1.0 corresponds to a solid color, whereas
+                    # a value of 0.0 corresponds to a completely transparent color. This
+                    # uses a wrapper message rather than a simple float scalar so that it is
+                    # possible to distinguish between a default value and the value being unset.
+                    # If omitted, this color object is to be rendered as a solid color
+                    # (as if the alpha value had been explicitly given with a value of 1.0).
+                "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
+                "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
+              },
+              "footerColor": { # Represents a color in the RGBA color space. This representation is designed # The color of the last row or column. If this field is not set, the last
+                  # row or column will be filled with either first_band_color or
+                  # second_band_color, depending on the color of the previous row or
+                  # column.
+                  # for simplicity of conversion to/from color representations in various
+                  # languages over compactness; for example, the fields of this representation
+                  # can be trivially provided to the constructor of "java.awt.Color" in Java; it
+                  # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
+                  # method in iOS; and, with just a little work, it can be easily formatted into
+                  # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
+                  #
+                  # Example (Java):
+                  #
+                  #      import com.google.type.Color;
+                  #
+                  #      // ...
+                  #      public static java.awt.Color fromProto(Color protocolor) {
+                  #        float alpha = protocolor.hasAlpha()
+                  #            ? protocolor.getAlpha().getValue()
+                  #            : 1.0;
+                  #
+                  #        return new java.awt.Color(
+                  #            protocolor.getRed(),
+                  #            protocolor.getGreen(),
+                  #            protocolor.getBlue(),
+                  #            alpha);
+                  #      }
+                  #
+                  #      public static Color toProto(java.awt.Color color) {
+                  #        float red = (float) color.getRed();
+                  #        float green = (float) color.getGreen();
+                  #        float blue = (float) color.getBlue();
+                  #        float denominator = 255.0;
+                  #        Color.Builder resultBuilder =
+                  #            Color
+                  #                .newBuilder()
+                  #                .setRed(red / denominator)
+                  #                .setGreen(green / denominator)
+                  #                .setBlue(blue / denominator);
+                  #        int alpha = color.getAlpha();
+                  #        if (alpha != 255) {
+                  #          result.setAlpha(
+                  #              FloatValue
+                  #                  .newBuilder()
+                  #                  .setValue(((float) alpha) / denominator)
+                  #                  .build());
+                  #        }
+                  #        return resultBuilder.build();
+                  #      }
+                  #      // ...
+                  #
+                  # Example (iOS / Obj-C):
+                  #
+                  #      // ...
+                  #      static UIColor* fromProto(Color* protocolor) {
+                  #         float red = [protocolor red];
+                  #         float green = [protocolor green];
+                  #         float blue = [protocolor blue];
+                  #         FloatValue* alpha_wrapper = [protocolor alpha];
+                  #         float alpha = 1.0;
+                  #         if (alpha_wrapper != nil) {
+                  #           alpha = [alpha_wrapper value];
+                  #         }
+                  #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
+                  #      }
+                  #
+                  #      static Color* toProto(UIColor* color) {
+                  #          CGFloat red, green, blue, alpha;
+                  #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
+                  #            return nil;
+                  #          }
+                  #          Color* result = [Color alloc] init];
+                  #          [result setRed:red];
+                  #          [result setGreen:green];
+                  #          [result setBlue:blue];
+                  #          if (alpha <= 0.9999) {
+                  #            [result setAlpha:floatWrapperWithValue(alpha)];
+                  #          }
+                  #          [result autorelease];
+                  #          return result;
+                  #     }
+                  #     // ...
+                  #
+                  #  Example (JavaScript):
+                  #
+                  #     // ...
+                  #
+                  #     var protoToCssColor = function(rgb_color) {
+                  #        var redFrac = rgb_color.red || 0.0;
+                  #        var greenFrac = rgb_color.green || 0.0;
+                  #        var blueFrac = rgb_color.blue || 0.0;
+                  #        var red = Math.floor(redFrac * 255);
+                  #        var green = Math.floor(greenFrac * 255);
+                  #        var blue = Math.floor(blueFrac * 255);
+                  #
+                  #        if (!('alpha' in rgb_color)) {
+                  #           return rgbToCssColor_(red, green, blue);
+                  #        }
+                  #
+                  #        var alphaFrac = rgb_color.alpha.value || 0.0;
+                  #        var rgbParams = [red, green, blue].join(',');
+                  #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
+                  #     };
+                  #
+                  #     var rgbToCssColor_ = function(red, green, blue) {
+                  #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
+                  #       var hexString = rgbNumber.toString(16);
+                  #       var missingZeros = 6 - hexString.length;
+                  #       var resultBuilder = ['#'];
+                  #       for (var i = 0; i < missingZeros; i++) {
+                  #          resultBuilder.push('0');
+                  #       }
+                  #       resultBuilder.push(hexString);
+                  #       return resultBuilder.join('');
+                  #     };
+                  #
+                  #     // ...
+                "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+                "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
+                    # the final pixel color is defined by the equation:
+                    #
+                    #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
+                    #
+                    # This means that a value of 1.0 corresponds to a solid color, whereas
+                    # a value of 0.0 corresponds to a completely transparent color. This
+                    # uses a wrapper message rather than a simple float scalar so that it is
+                    # possible to distinguish between a default value and the value being unset.
+                    # If omitted, this color object is to be rendered as a solid color
+                    # (as if the alpha value had been explicitly given with a value of 1.0).
+                "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
+                "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
+              },
+              "firstBandColor": { # Represents a color in the RGBA color space. This representation is designed # The first color that is alternating. (Required)
+                  # for simplicity of conversion to/from color representations in various
+                  # languages over compactness; for example, the fields of this representation
+                  # can be trivially provided to the constructor of "java.awt.Color" in Java; it
+                  # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
+                  # method in iOS; and, with just a little work, it can be easily formatted into
+                  # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
+                  #
+                  # Example (Java):
+                  #
+                  #      import com.google.type.Color;
+                  #
+                  #      // ...
+                  #      public static java.awt.Color fromProto(Color protocolor) {
+                  #        float alpha = protocolor.hasAlpha()
+                  #            ? protocolor.getAlpha().getValue()
+                  #            : 1.0;
+                  #
+                  #        return new java.awt.Color(
+                  #            protocolor.getRed(),
+                  #            protocolor.getGreen(),
+                  #            protocolor.getBlue(),
+                  #            alpha);
+                  #      }
+                  #
+                  #      public static Color toProto(java.awt.Color color) {
+                  #        float red = (float) color.getRed();
+                  #        float green = (float) color.getGreen();
+                  #        float blue = (float) color.getBlue();
+                  #        float denominator = 255.0;
+                  #        Color.Builder resultBuilder =
+                  #            Color
+                  #                .newBuilder()
+                  #                .setRed(red / denominator)
+                  #                .setGreen(green / denominator)
+                  #                .setBlue(blue / denominator);
+                  #        int alpha = color.getAlpha();
+                  #        if (alpha != 255) {
+                  #          result.setAlpha(
+                  #              FloatValue
+                  #                  .newBuilder()
+                  #                  .setValue(((float) alpha) / denominator)
+                  #                  .build());
+                  #        }
+                  #        return resultBuilder.build();
+                  #      }
+                  #      // ...
+                  #
+                  # Example (iOS / Obj-C):
+                  #
+                  #      // ...
+                  #      static UIColor* fromProto(Color* protocolor) {
+                  #         float red = [protocolor red];
+                  #         float green = [protocolor green];
+                  #         float blue = [protocolor blue];
+                  #         FloatValue* alpha_wrapper = [protocolor alpha];
+                  #         float alpha = 1.0;
+                  #         if (alpha_wrapper != nil) {
+                  #           alpha = [alpha_wrapper value];
+                  #         }
+                  #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
+                  #      }
+                  #
+                  #      static Color* toProto(UIColor* color) {
+                  #          CGFloat red, green, blue, alpha;
+                  #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
+                  #            return nil;
+                  #          }
+                  #          Color* result = [Color alloc] init];
+                  #          [result setRed:red];
+                  #          [result setGreen:green];
+                  #          [result setBlue:blue];
+                  #          if (alpha <= 0.9999) {
+                  #            [result setAlpha:floatWrapperWithValue(alpha)];
+                  #          }
+                  #          [result autorelease];
+                  #          return result;
+                  #     }
+                  #     // ...
+                  #
+                  #  Example (JavaScript):
+                  #
+                  #     // ...
+                  #
+                  #     var protoToCssColor = function(rgb_color) {
+                  #        var redFrac = rgb_color.red || 0.0;
+                  #        var greenFrac = rgb_color.green || 0.0;
+                  #        var blueFrac = rgb_color.blue || 0.0;
+                  #        var red = Math.floor(redFrac * 255);
+                  #        var green = Math.floor(greenFrac * 255);
+                  #        var blue = Math.floor(blueFrac * 255);
+                  #
+                  #        if (!('alpha' in rgb_color)) {
+                  #           return rgbToCssColor_(red, green, blue);
+                  #        }
+                  #
+                  #        var alphaFrac = rgb_color.alpha.value || 0.0;
+                  #        var rgbParams = [red, green, blue].join(',');
+                  #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
+                  #     };
+                  #
+                  #     var rgbToCssColor_ = function(red, green, blue) {
+                  #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
+                  #       var hexString = rgbNumber.toString(16);
+                  #       var missingZeros = 6 - hexString.length;
+                  #       var resultBuilder = ['#'];
+                  #       for (var i = 0; i < missingZeros; i++) {
+                  #          resultBuilder.push('0');
+                  #       }
+                  #       resultBuilder.push(hexString);
+                  #       return resultBuilder.join('');
+                  #     };
+                  #
+                  #     // ...
+                "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+                "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
+                    # the final pixel color is defined by the equation:
+                    #
+                    #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
+                    #
+                    # This means that a value of 1.0 corresponds to a solid color, whereas
+                    # a value of 0.0 corresponds to a completely transparent color. This
+                    # uses a wrapper message rather than a simple float scalar so that it is
+                    # possible to distinguish between a default value and the value being unset.
+                    # If omitted, this color object is to be rendered as a solid color
+                    # (as if the alpha value had been explicitly given with a value of 1.0).
+                "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
+                "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
+              },
+            },
+            "rowProperties": { # Properties referring a single dimension (either row or column). If both # Properties for row bands. These properties will be applied on a row-by-row
+                # basis throughout all the rows in the range. At least one of
+                # row_properties or column_properties must be specified.
+                # BandedRange.row_properties and BandedRange.column_properties are
+                # set, the fill colors are applied to cells according to the following rules:
+                #
+                # * header_color and footer_color take priority over band colors.
+                # * first_band_color takes priority over second_band_color.
+                # * row_properties takes priority over column_properties.
+                #
+                # For example, the first row color takes priority over the first column
+                # color, but the first column color takes priority over the second row color.
+                # Similarly, the row header takes priority over the column header in the
+                # top left cell, but the column header takes priority over the first row
+                # color if the row header is not set.
+              "secondBandColor": { # Represents a color in the RGBA color space. This representation is designed # The second color that is alternating. (Required)
+                  # for simplicity of conversion to/from color representations in various
+                  # languages over compactness; for example, the fields of this representation
+                  # can be trivially provided to the constructor of "java.awt.Color" in Java; it
+                  # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
+                  # method in iOS; and, with just a little work, it can be easily formatted into
+                  # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
+                  #
+                  # Example (Java):
+                  #
+                  #      import com.google.type.Color;
+                  #
+                  #      // ...
+                  #      public static java.awt.Color fromProto(Color protocolor) {
+                  #        float alpha = protocolor.hasAlpha()
+                  #            ? protocolor.getAlpha().getValue()
+                  #            : 1.0;
+                  #
+                  #        return new java.awt.Color(
+                  #            protocolor.getRed(),
+                  #            protocolor.getGreen(),
+                  #            protocolor.getBlue(),
+                  #            alpha);
+                  #      }
+                  #
+                  #      public static Color toProto(java.awt.Color color) {
+                  #        float red = (float) color.getRed();
+                  #        float green = (float) color.getGreen();
+                  #        float blue = (float) color.getBlue();
+                  #        float denominator = 255.0;
+                  #        Color.Builder resultBuilder =
+                  #            Color
+                  #                .newBuilder()
+                  #                .setRed(red / denominator)
+                  #                .setGreen(green / denominator)
+                  #                .setBlue(blue / denominator);
+                  #        int alpha = color.getAlpha();
+                  #        if (alpha != 255) {
+                  #          result.setAlpha(
+                  #              FloatValue
+                  #                  .newBuilder()
+                  #                  .setValue(((float) alpha) / denominator)
+                  #                  .build());
+                  #        }
+                  #        return resultBuilder.build();
+                  #      }
+                  #      // ...
+                  #
+                  # Example (iOS / Obj-C):
+                  #
+                  #      // ...
+                  #      static UIColor* fromProto(Color* protocolor) {
+                  #         float red = [protocolor red];
+                  #         float green = [protocolor green];
+                  #         float blue = [protocolor blue];
+                  #         FloatValue* alpha_wrapper = [protocolor alpha];
+                  #         float alpha = 1.0;
+                  #         if (alpha_wrapper != nil) {
+                  #           alpha = [alpha_wrapper value];
+                  #         }
+                  #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
+                  #      }
+                  #
+                  #      static Color* toProto(UIColor* color) {
+                  #          CGFloat red, green, blue, alpha;
+                  #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
+                  #            return nil;
+                  #          }
+                  #          Color* result = [Color alloc] init];
+                  #          [result setRed:red];
+                  #          [result setGreen:green];
+                  #          [result setBlue:blue];
+                  #          if (alpha <= 0.9999) {
+                  #            [result setAlpha:floatWrapperWithValue(alpha)];
+                  #          }
+                  #          [result autorelease];
+                  #          return result;
+                  #     }
+                  #     // ...
+                  #
+                  #  Example (JavaScript):
+                  #
+                  #     // ...
+                  #
+                  #     var protoToCssColor = function(rgb_color) {
+                  #        var redFrac = rgb_color.red || 0.0;
+                  #        var greenFrac = rgb_color.green || 0.0;
+                  #        var blueFrac = rgb_color.blue || 0.0;
+                  #        var red = Math.floor(redFrac * 255);
+                  #        var green = Math.floor(greenFrac * 255);
+                  #        var blue = Math.floor(blueFrac * 255);
+                  #
+                  #        if (!('alpha' in rgb_color)) {
+                  #           return rgbToCssColor_(red, green, blue);
+                  #        }
+                  #
+                  #        var alphaFrac = rgb_color.alpha.value || 0.0;
+                  #        var rgbParams = [red, green, blue].join(',');
+                  #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
+                  #     };
+                  #
+                  #     var rgbToCssColor_ = function(red, green, blue) {
+                  #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
+                  #       var hexString = rgbNumber.toString(16);
+                  #       var missingZeros = 6 - hexString.length;
+                  #       var resultBuilder = ['#'];
+                  #       for (var i = 0; i < missingZeros; i++) {
+                  #          resultBuilder.push('0');
+                  #       }
+                  #       resultBuilder.push(hexString);
+                  #       return resultBuilder.join('');
+                  #     };
+                  #
+                  #     // ...
+                "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+                "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
+                    # the final pixel color is defined by the equation:
+                    #
+                    #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
+                    #
+                    # This means that a value of 1.0 corresponds to a solid color, whereas
+                    # a value of 0.0 corresponds to a completely transparent color. This
+                    # uses a wrapper message rather than a simple float scalar so that it is
+                    # possible to distinguish between a default value and the value being unset.
+                    # If omitted, this color object is to be rendered as a solid color
+                    # (as if the alpha value had been explicitly given with a value of 1.0).
+                "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
+                "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
+              },
+              "headerColor": { # Represents a color in the RGBA color space. This representation is designed # The color of the first row or column. If this field is set, the first
+                  # row or column will be filled with this color and the colors will
+                  # alternate between first_band_color and second_band_color starting
+                  # from the second row or column. Otherwise, the first row or column will be
+                  # filled with first_band_color and the colors will proceed to alternate
+                  # as they normally would.
+                  # for simplicity of conversion to/from color representations in various
+                  # languages over compactness; for example, the fields of this representation
+                  # can be trivially provided to the constructor of "java.awt.Color" in Java; it
+                  # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
+                  # method in iOS; and, with just a little work, it can be easily formatted into
+                  # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
+                  #
+                  # Example (Java):
+                  #
+                  #      import com.google.type.Color;
+                  #
+                  #      // ...
+                  #      public static java.awt.Color fromProto(Color protocolor) {
+                  #        float alpha = protocolor.hasAlpha()
+                  #            ? protocolor.getAlpha().getValue()
+                  #            : 1.0;
+                  #
+                  #        return new java.awt.Color(
+                  #            protocolor.getRed(),
+                  #            protocolor.getGreen(),
+                  #            protocolor.getBlue(),
+                  #            alpha);
+                  #      }
+                  #
+                  #      public static Color toProto(java.awt.Color color) {
+                  #        float red = (float) color.getRed();
+                  #        float green = (float) color.getGreen();
+                  #        float blue = (float) color.getBlue();
+                  #        float denominator = 255.0;
+                  #        Color.Builder resultBuilder =
+                  #            Color
+                  #                .newBuilder()
+                  #                .setRed(red / denominator)
+                  #                .setGreen(green / denominator)
+                  #                .setBlue(blue / denominator);
+                  #        int alpha = color.getAlpha();
+                  #        if (alpha != 255) {
+                  #          result.setAlpha(
+                  #              FloatValue
+                  #                  .newBuilder()
+                  #                  .setValue(((float) alpha) / denominator)
+                  #                  .build());
+                  #        }
+                  #        return resultBuilder.build();
+                  #      }
+                  #      // ...
+                  #
+                  # Example (iOS / Obj-C):
+                  #
+                  #      // ...
+                  #      static UIColor* fromProto(Color* protocolor) {
+                  #         float red = [protocolor red];
+                  #         float green = [protocolor green];
+                  #         float blue = [protocolor blue];
+                  #         FloatValue* alpha_wrapper = [protocolor alpha];
+                  #         float alpha = 1.0;
+                  #         if (alpha_wrapper != nil) {
+                  #           alpha = [alpha_wrapper value];
+                  #         }
+                  #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
+                  #      }
+                  #
+                  #      static Color* toProto(UIColor* color) {
+                  #          CGFloat red, green, blue, alpha;
+                  #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
+                  #            return nil;
+                  #          }
+                  #          Color* result = [Color alloc] init];
+                  #          [result setRed:red];
+                  #          [result setGreen:green];
+                  #          [result setBlue:blue];
+                  #          if (alpha <= 0.9999) {
+                  #            [result setAlpha:floatWrapperWithValue(alpha)];
+                  #          }
+                  #          [result autorelease];
+                  #          return result;
+                  #     }
+                  #     // ...
+                  #
+                  #  Example (JavaScript):
+                  #
+                  #     // ...
+                  #
+                  #     var protoToCssColor = function(rgb_color) {
+                  #        var redFrac = rgb_color.red || 0.0;
+                  #        var greenFrac = rgb_color.green || 0.0;
+                  #        var blueFrac = rgb_color.blue || 0.0;
+                  #        var red = Math.floor(redFrac * 255);
+                  #        var green = Math.floor(greenFrac * 255);
+                  #        var blue = Math.floor(blueFrac * 255);
+                  #
+                  #        if (!('alpha' in rgb_color)) {
+                  #           return rgbToCssColor_(red, green, blue);
+                  #        }
+                  #
+                  #        var alphaFrac = rgb_color.alpha.value || 0.0;
+                  #        var rgbParams = [red, green, blue].join(',');
+                  #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
+                  #     };
+                  #
+                  #     var rgbToCssColor_ = function(red, green, blue) {
+                  #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
+                  #       var hexString = rgbNumber.toString(16);
+                  #       var missingZeros = 6 - hexString.length;
+                  #       var resultBuilder = ['#'];
+                  #       for (var i = 0; i < missingZeros; i++) {
+                  #          resultBuilder.push('0');
+                  #       }
+                  #       resultBuilder.push(hexString);
+                  #       return resultBuilder.join('');
+                  #     };
+                  #
+                  #     // ...
+                "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+                "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
+                    # the final pixel color is defined by the equation:
+                    #
+                    #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
+                    #
+                    # This means that a value of 1.0 corresponds to a solid color, whereas
+                    # a value of 0.0 corresponds to a completely transparent color. This
+                    # uses a wrapper message rather than a simple float scalar so that it is
+                    # possible to distinguish between a default value and the value being unset.
+                    # If omitted, this color object is to be rendered as a solid color
+                    # (as if the alpha value had been explicitly given with a value of 1.0).
+                "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
+                "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
+              },
+              "footerColor": { # Represents a color in the RGBA color space. This representation is designed # The color of the last row or column. If this field is not set, the last
+                  # row or column will be filled with either first_band_color or
+                  # second_band_color, depending on the color of the previous row or
+                  # column.
+                  # for simplicity of conversion to/from color representations in various
+                  # languages over compactness; for example, the fields of this representation
+                  # can be trivially provided to the constructor of "java.awt.Color" in Java; it
+                  # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
+                  # method in iOS; and, with just a little work, it can be easily formatted into
+                  # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
+                  #
+                  # Example (Java):
+                  #
+                  #      import com.google.type.Color;
+                  #
+                  #      // ...
+                  #      public static java.awt.Color fromProto(Color protocolor) {
+                  #        float alpha = protocolor.hasAlpha()
+                  #            ? protocolor.getAlpha().getValue()
+                  #            : 1.0;
+                  #
+                  #        return new java.awt.Color(
+                  #            protocolor.getRed(),
+                  #            protocolor.getGreen(),
+                  #            protocolor.getBlue(),
+                  #            alpha);
+                  #      }
+                  #
+                  #      public static Color toProto(java.awt.Color color) {
+                  #        float red = (float) color.getRed();
+                  #        float green = (float) color.getGreen();
+                  #        float blue = (float) color.getBlue();
+                  #        float denominator = 255.0;
+                  #        Color.Builder resultBuilder =
+                  #            Color
+                  #                .newBuilder()
+                  #                .setRed(red / denominator)
+                  #                .setGreen(green / denominator)
+                  #                .setBlue(blue / denominator);
+                  #        int alpha = color.getAlpha();
+                  #        if (alpha != 255) {
+                  #          result.setAlpha(
+                  #              FloatValue
+                  #                  .newBuilder()
+                  #                  .setValue(((float) alpha) / denominator)
+                  #                  .build());
+                  #        }
+                  #        return resultBuilder.build();
+                  #      }
+                  #      // ...
+                  #
+                  # Example (iOS / Obj-C):
+                  #
+                  #      // ...
+                  #      static UIColor* fromProto(Color* protocolor) {
+                  #         float red = [protocolor red];
+                  #         float green = [protocolor green];
+                  #         float blue = [protocolor blue];
+                  #         FloatValue* alpha_wrapper = [protocolor alpha];
+                  #         float alpha = 1.0;
+                  #         if (alpha_wrapper != nil) {
+                  #           alpha = [alpha_wrapper value];
+                  #         }
+                  #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
+                  #      }
+                  #
+                  #      static Color* toProto(UIColor* color) {
+                  #          CGFloat red, green, blue, alpha;
+                  #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
+                  #            return nil;
+                  #          }
+                  #          Color* result = [Color alloc] init];
+                  #          [result setRed:red];
+                  #          [result setGreen:green];
+                  #          [result setBlue:blue];
+                  #          if (alpha <= 0.9999) {
+                  #            [result setAlpha:floatWrapperWithValue(alpha)];
+                  #          }
+                  #          [result autorelease];
+                  #          return result;
+                  #     }
+                  #     // ...
+                  #
+                  #  Example (JavaScript):
+                  #
+                  #     // ...
+                  #
+                  #     var protoToCssColor = function(rgb_color) {
+                  #        var redFrac = rgb_color.red || 0.0;
+                  #        var greenFrac = rgb_color.green || 0.0;
+                  #        var blueFrac = rgb_color.blue || 0.0;
+                  #        var red = Math.floor(redFrac * 255);
+                  #        var green = Math.floor(greenFrac * 255);
+                  #        var blue = Math.floor(blueFrac * 255);
+                  #
+                  #        if (!('alpha' in rgb_color)) {
+                  #           return rgbToCssColor_(red, green, blue);
+                  #        }
+                  #
+                  #        var alphaFrac = rgb_color.alpha.value || 0.0;
+                  #        var rgbParams = [red, green, blue].join(',');
+                  #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
+                  #     };
+                  #
+                  #     var rgbToCssColor_ = function(red, green, blue) {
+                  #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
+                  #       var hexString = rgbNumber.toString(16);
+                  #       var missingZeros = 6 - hexString.length;
+                  #       var resultBuilder = ['#'];
+                  #       for (var i = 0; i < missingZeros; i++) {
+                  #          resultBuilder.push('0');
+                  #       }
+                  #       resultBuilder.push(hexString);
+                  #       return resultBuilder.join('');
+                  #     };
+                  #
+                  #     // ...
+                "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+                "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
+                    # the final pixel color is defined by the equation:
+                    #
+                    #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
+                    #
+                    # This means that a value of 1.0 corresponds to a solid color, whereas
+                    # a value of 0.0 corresponds to a completely transparent color. This
+                    # uses a wrapper message rather than a simple float scalar so that it is
+                    # possible to distinguish between a default value and the value being unset.
+                    # If omitted, this color object is to be rendered as a solid color
+                    # (as if the alpha value had been explicitly given with a value of 1.0).
+                "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
+                "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
+              },
+              "firstBandColor": { # Represents a color in the RGBA color space. This representation is designed # The first color that is alternating. (Required)
+                  # for simplicity of conversion to/from color representations in various
+                  # languages over compactness; for example, the fields of this representation
+                  # can be trivially provided to the constructor of "java.awt.Color" in Java; it
+                  # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
+                  # method in iOS; and, with just a little work, it can be easily formatted into
+                  # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
+                  #
+                  # Example (Java):
+                  #
+                  #      import com.google.type.Color;
+                  #
+                  #      // ...
+                  #      public static java.awt.Color fromProto(Color protocolor) {
+                  #        float alpha = protocolor.hasAlpha()
+                  #            ? protocolor.getAlpha().getValue()
+                  #            : 1.0;
+                  #
+                  #        return new java.awt.Color(
+                  #            protocolor.getRed(),
+                  #            protocolor.getGreen(),
+                  #            protocolor.getBlue(),
+                  #            alpha);
+                  #      }
+                  #
+                  #      public static Color toProto(java.awt.Color color) {
+                  #        float red = (float) color.getRed();
+                  #        float green = (float) color.getGreen();
+                  #        float blue = (float) color.getBlue();
+                  #        float denominator = 255.0;
+                  #        Color.Builder resultBuilder =
+                  #            Color
+                  #                .newBuilder()
+                  #                .setRed(red / denominator)
+                  #                .setGreen(green / denominator)
+                  #                .setBlue(blue / denominator);
+                  #        int alpha = color.getAlpha();
+                  #        if (alpha != 255) {
+                  #          result.setAlpha(
+                  #              FloatValue
+                  #                  .newBuilder()
+                  #                  .setValue(((float) alpha) / denominator)
+                  #                  .build());
+                  #        }
+                  #        return resultBuilder.build();
+                  #      }
+                  #      // ...
+                  #
+                  # Example (iOS / Obj-C):
+                  #
+                  #      // ...
+                  #      static UIColor* fromProto(Color* protocolor) {
+                  #         float red = [protocolor red];
+                  #         float green = [protocolor green];
+                  #         float blue = [protocolor blue];
+                  #         FloatValue* alpha_wrapper = [protocolor alpha];
+                  #         float alpha = 1.0;
+                  #         if (alpha_wrapper != nil) {
+                  #           alpha = [alpha_wrapper value];
+                  #         }
+                  #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
+                  #      }
+                  #
+                  #      static Color* toProto(UIColor* color) {
+                  #          CGFloat red, green, blue, alpha;
+                  #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
+                  #            return nil;
+                  #          }
+                  #          Color* result = [Color alloc] init];
+                  #          [result setRed:red];
+                  #          [result setGreen:green];
+                  #          [result setBlue:blue];
+                  #          if (alpha <= 0.9999) {
+                  #            [result setAlpha:floatWrapperWithValue(alpha)];
+                  #          }
+                  #          [result autorelease];
+                  #          return result;
+                  #     }
+                  #     // ...
+                  #
+                  #  Example (JavaScript):
+                  #
+                  #     // ...
+                  #
+                  #     var protoToCssColor = function(rgb_color) {
+                  #        var redFrac = rgb_color.red || 0.0;
+                  #        var greenFrac = rgb_color.green || 0.0;
+                  #        var blueFrac = rgb_color.blue || 0.0;
+                  #        var red = Math.floor(redFrac * 255);
+                  #        var green = Math.floor(greenFrac * 255);
+                  #        var blue = Math.floor(blueFrac * 255);
+                  #
+                  #        if (!('alpha' in rgb_color)) {
+                  #           return rgbToCssColor_(red, green, blue);
+                  #        }
+                  #
+                  #        var alphaFrac = rgb_color.alpha.value || 0.0;
+                  #        var rgbParams = [red, green, blue].join(',');
+                  #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
+                  #     };
+                  #
+                  #     var rgbToCssColor_ = function(red, green, blue) {
+                  #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
+                  #       var hexString = rgbNumber.toString(16);
+                  #       var missingZeros = 6 - hexString.length;
+                  #       var resultBuilder = ['#'];
+                  #       for (var i = 0; i < missingZeros; i++) {
+                  #          resultBuilder.push('0');
+                  #       }
+                  #       resultBuilder.push(hexString);
+                  #       return resultBuilder.join('');
+                  #     };
+                  #
+                  #     // ...
+                "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+                "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
+                    # the final pixel color is defined by the equation:
+                    #
+                    #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
+                    #
+                    # This means that a value of 1.0 corresponds to a solid color, whereas
+                    # a value of 0.0 corresponds to a completely transparent color. This
+                    # uses a wrapper message rather than a simple float scalar so that it is
+                    # possible to distinguish between a default value and the value being unset.
+                    # If omitted, this color object is to be rendered as a solid color
+                    # (as if the alpha value had been explicitly given with a value of 1.0).
+                "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
+                "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
+              },
+            },
+            "bandedRangeId": 42, # The id of the banded range.
+          },
+        },
         "addFilterView": { # The result of adding a filter view. # A reply from adding a filter view.
           "filter": { # A filter view. # The newly added filter view.
             "title": "A String", # The name of the filter view.
@@ -18488,6 +28298,6423 @@
     The object takes the form of:
 
 { # Resource that represents a spreadsheet.
+  "spreadsheetId": "A String", # The ID of the spreadsheet.
+      # This field is read-only.
+  "namedRanges": [ # The named ranges defined in a spreadsheet.
+    { # A named range.
+      "namedRangeId": "A String", # The ID of the named range.
+      "range": { # A range on a sheet. # The range this represents.
+          # All indexes are zero-based.
+          # Indexes are half open, e.g the start index is inclusive
+          # and the end index is exclusive -- [start_index, end_index).
+          # Missing indexes indicate the range is unbounded on that side.
+          #
+          # For example, if `"Sheet1"` is sheet ID 0, then:
+          #
+          #   `Sheet1!A1:A1 == sheet_id: 0,
+          #                   start_row_index: 0, end_row_index: 1,
+          #                   start_column_index: 0, end_column_index: 1`
+          #
+          #   `Sheet1!A3:B4 == sheet_id: 0,
+          #                   start_row_index: 2, end_row_index: 4,
+          #                   start_column_index: 0, end_column_index: 2`
+          #
+          #   `Sheet1!A:B == sheet_id: 0,
+          #                 start_column_index: 0, end_column_index: 2`
+          #
+          #   `Sheet1!A5:B == sheet_id: 0,
+          #                  start_row_index: 4,
+          #                  start_column_index: 0, end_column_index: 2`
+          #
+          #   `Sheet1 == sheet_id:0`
+          #
+          # The start index must always be less than or equal to the end index.
+          # If the start index equals the end index, then the range is empty.
+          # Empty ranges are typically not meaningful and are usually rendered in the
+          # UI as `#REF!`.
+        "endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
+        "startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
+        "sheetId": 42, # The sheet this range is on.
+        "startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
+        "endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
+      },
+      "name": "A String", # The name of the named range.
+    },
+  ],
+  "properties": { # Properties of a spreadsheet. # Overall properties of a spreadsheet.
+    "locale": "A String", # The locale of the spreadsheet in one of the following formats:
+        #
+        # * an ISO 639-1 language code such as `en`
+        #
+        # * an ISO 639-2 language code such as `fil`, if no 639-1 code exists
+        #
+        # * a combination of the ISO language code and country code, such as `en_US`
+        #
+        # Note: when updating this field, not all locales/languages are supported.
+    "timeZone": "A String", # The time zone of the spreadsheet, in CLDR format such as
+        # `America/New_York`. If the time zone isn't recognized, this may
+        # be a custom time zone such as `GMT-07:00`.
+    "autoRecalc": "A String", # The amount of time to wait before volatile functions are recalculated.
+    "defaultFormat": { # The format of a cell. # The default format of all cells in the spreadsheet.
+        # CellData.effectiveFormat will not be set if the
+        # cell's format is equal to this default format.
+        # This field is read-only.
+      "numberFormat": { # The number format of a cell. # A format describing how number values should be represented to the user.
+        "pattern": "A String", # Pattern string used for formatting.  If not set, a default pattern based on
+            # the user's locale will be used if necessary for the given type.
+            # See the [Date and Number Formats guide](/sheets/guides/formats) for more
+            # information about the supported patterns.
+        "type": "A String", # The type of the number format.
+            # When writing, this field must be set.
+      },
+      "textDirection": "A String", # The direction of the text in the cell.
+      "padding": { # The amount of padding around the cell, in pixels. # The padding of the cell.
+          # When updating padding, every field must be specified.
+        "top": 42, # The top padding of the cell.
+        "right": 42, # The right padding of the cell.
+        "bottom": 42, # The bottom padding of the cell.
+        "left": 42, # The left padding of the cell.
+      },
+      "horizontalAlignment": "A String", # The horizontal alignment of the value in the cell.
+      "backgroundColor": { # Represents a color in the RGBA color space. This representation is designed # The background color of the cell.
+          # for simplicity of conversion to/from color representations in various
+          # languages over compactness; for example, the fields of this representation
+          # can be trivially provided to the constructor of "java.awt.Color" in Java; it
+          # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
+          # method in iOS; and, with just a little work, it can be easily formatted into
+          # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
+          #
+          # Example (Java):
+          #
+          #      import com.google.type.Color;
+          #
+          #      // ...
+          #      public static java.awt.Color fromProto(Color protocolor) {
+          #        float alpha = protocolor.hasAlpha()
+          #            ? protocolor.getAlpha().getValue()
+          #            : 1.0;
+          #
+          #        return new java.awt.Color(
+          #            protocolor.getRed(),
+          #            protocolor.getGreen(),
+          #            protocolor.getBlue(),
+          #            alpha);
+          #      }
+          #
+          #      public static Color toProto(java.awt.Color color) {
+          #        float red = (float) color.getRed();
+          #        float green = (float) color.getGreen();
+          #        float blue = (float) color.getBlue();
+          #        float denominator = 255.0;
+          #        Color.Builder resultBuilder =
+          #            Color
+          #                .newBuilder()
+          #                .setRed(red / denominator)
+          #                .setGreen(green / denominator)
+          #                .setBlue(blue / denominator);
+          #        int alpha = color.getAlpha();
+          #        if (alpha != 255) {
+          #          result.setAlpha(
+          #              FloatValue
+          #                  .newBuilder()
+          #                  .setValue(((float) alpha) / denominator)
+          #                  .build());
+          #        }
+          #        return resultBuilder.build();
+          #      }
+          #      // ...
+          #
+          # Example (iOS / Obj-C):
+          #
+          #      // ...
+          #      static UIColor* fromProto(Color* protocolor) {
+          #         float red = [protocolor red];
+          #         float green = [protocolor green];
+          #         float blue = [protocolor blue];
+          #         FloatValue* alpha_wrapper = [protocolor alpha];
+          #         float alpha = 1.0;
+          #         if (alpha_wrapper != nil) {
+          #           alpha = [alpha_wrapper value];
+          #         }
+          #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
+          #      }
+          #
+          #      static Color* toProto(UIColor* color) {
+          #          CGFloat red, green, blue, alpha;
+          #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
+          #            return nil;
+          #          }
+          #          Color* result = [Color alloc] init];
+          #          [result setRed:red];
+          #          [result setGreen:green];
+          #          [result setBlue:blue];
+          #          if (alpha <= 0.9999) {
+          #            [result setAlpha:floatWrapperWithValue(alpha)];
+          #          }
+          #          [result autorelease];
+          #          return result;
+          #     }
+          #     // ...
+          #
+          #  Example (JavaScript):
+          #
+          #     // ...
+          #
+          #     var protoToCssColor = function(rgb_color) {
+          #        var redFrac = rgb_color.red || 0.0;
+          #        var greenFrac = rgb_color.green || 0.0;
+          #        var blueFrac = rgb_color.blue || 0.0;
+          #        var red = Math.floor(redFrac * 255);
+          #        var green = Math.floor(greenFrac * 255);
+          #        var blue = Math.floor(blueFrac * 255);
+          #
+          #        if (!('alpha' in rgb_color)) {
+          #           return rgbToCssColor_(red, green, blue);
+          #        }
+          #
+          #        var alphaFrac = rgb_color.alpha.value || 0.0;
+          #        var rgbParams = [red, green, blue].join(',');
+          #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
+          #     };
+          #
+          #     var rgbToCssColor_ = function(red, green, blue) {
+          #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
+          #       var hexString = rgbNumber.toString(16);
+          #       var missingZeros = 6 - hexString.length;
+          #       var resultBuilder = ['#'];
+          #       for (var i = 0; i < missingZeros; i++) {
+          #          resultBuilder.push('0');
+          #       }
+          #       resultBuilder.push(hexString);
+          #       return resultBuilder.join('');
+          #     };
+          #
+          #     // ...
+        "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+        "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
+            # the final pixel color is defined by the equation:
+            #
+            #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
+            #
+            # This means that a value of 1.0 corresponds to a solid color, whereas
+            # a value of 0.0 corresponds to a completely transparent color. This
+            # uses a wrapper message rather than a simple float scalar so that it is
+            # possible to distinguish between a default value and the value being unset.
+            # If omitted, this color object is to be rendered as a solid color
+            # (as if the alpha value had been explicitly given with a value of 1.0).
+        "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
+        "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
+      },
+      "verticalAlignment": "A String", # The vertical alignment of the value in the cell.
+      "textFormat": { # The format of a run of text in a cell. # The format of the text in the cell (unless overridden by a format run).
+          # Absent values indicate that the field isn't specified.
+        "foregroundColor": { # Represents a color in the RGBA color space. This representation is designed # The foreground color of the text.
+            # for simplicity of conversion to/from color representations in various
+            # languages over compactness; for example, the fields of this representation
+            # can be trivially provided to the constructor of "java.awt.Color" in Java; it
+            # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
+            # method in iOS; and, with just a little work, it can be easily formatted into
+            # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
+            #
+            # Example (Java):
+            #
+            #      import com.google.type.Color;
+            #
+            #      // ...
+            #      public static java.awt.Color fromProto(Color protocolor) {
+            #        float alpha = protocolor.hasAlpha()
+            #            ? protocolor.getAlpha().getValue()
+            #            : 1.0;
+            #
+            #        return new java.awt.Color(
+            #            protocolor.getRed(),
+            #            protocolor.getGreen(),
+            #            protocolor.getBlue(),
+            #            alpha);
+            #      }
+            #
+            #      public static Color toProto(java.awt.Color color) {
+            #        float red = (float) color.getRed();
+            #        float green = (float) color.getGreen();
+            #        float blue = (float) color.getBlue();
+            #        float denominator = 255.0;
+            #        Color.Builder resultBuilder =
+            #            Color
+            #                .newBuilder()
+            #                .setRed(red / denominator)
+            #                .setGreen(green / denominator)
+            #                .setBlue(blue / denominator);
+            #        int alpha = color.getAlpha();
+            #        if (alpha != 255) {
+            #          result.setAlpha(
+            #              FloatValue
+            #                  .newBuilder()
+            #                  .setValue(((float) alpha) / denominator)
+            #                  .build());
+            #        }
+            #        return resultBuilder.build();
+            #      }
+            #      // ...
+            #
+            # Example (iOS / Obj-C):
+            #
+            #      // ...
+            #      static UIColor* fromProto(Color* protocolor) {
+            #         float red = [protocolor red];
+            #         float green = [protocolor green];
+            #         float blue = [protocolor blue];
+            #         FloatValue* alpha_wrapper = [protocolor alpha];
+            #         float alpha = 1.0;
+            #         if (alpha_wrapper != nil) {
+            #           alpha = [alpha_wrapper value];
+            #         }
+            #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
+            #      }
+            #
+            #      static Color* toProto(UIColor* color) {
+            #          CGFloat red, green, blue, alpha;
+            #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
+            #            return nil;
+            #          }
+            #          Color* result = [Color alloc] init];
+            #          [result setRed:red];
+            #          [result setGreen:green];
+            #          [result setBlue:blue];
+            #          if (alpha <= 0.9999) {
+            #            [result setAlpha:floatWrapperWithValue(alpha)];
+            #          }
+            #          [result autorelease];
+            #          return result;
+            #     }
+            #     // ...
+            #
+            #  Example (JavaScript):
+            #
+            #     // ...
+            #
+            #     var protoToCssColor = function(rgb_color) {
+            #        var redFrac = rgb_color.red || 0.0;
+            #        var greenFrac = rgb_color.green || 0.0;
+            #        var blueFrac = rgb_color.blue || 0.0;
+            #        var red = Math.floor(redFrac * 255);
+            #        var green = Math.floor(greenFrac * 255);
+            #        var blue = Math.floor(blueFrac * 255);
+            #
+            #        if (!('alpha' in rgb_color)) {
+            #           return rgbToCssColor_(red, green, blue);
+            #        }
+            #
+            #        var alphaFrac = rgb_color.alpha.value || 0.0;
+            #        var rgbParams = [red, green, blue].join(',');
+            #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
+            #     };
+            #
+            #     var rgbToCssColor_ = function(red, green, blue) {
+            #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
+            #       var hexString = rgbNumber.toString(16);
+            #       var missingZeros = 6 - hexString.length;
+            #       var resultBuilder = ['#'];
+            #       for (var i = 0; i < missingZeros; i++) {
+            #          resultBuilder.push('0');
+            #       }
+            #       resultBuilder.push(hexString);
+            #       return resultBuilder.join('');
+            #     };
+            #
+            #     // ...
+          "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+          "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
+              # the final pixel color is defined by the equation:
+              #
+              #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
+              #
+              # This means that a value of 1.0 corresponds to a solid color, whereas
+              # a value of 0.0 corresponds to a completely transparent color. This
+              # uses a wrapper message rather than a simple float scalar so that it is
+              # possible to distinguish between a default value and the value being unset.
+              # If omitted, this color object is to be rendered as a solid color
+              # (as if the alpha value had been explicitly given with a value of 1.0).
+          "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
+          "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
+        },
+        "bold": True or False, # True if the text is bold.
+        "strikethrough": True or False, # True if the text has a strikethrough.
+        "fontFamily": "A String", # The font family.
+        "fontSize": 42, # The size of the font.
+        "italic": True or False, # True if the text is italicized.
+        "underline": True or False, # True if the text is underlined.
+      },
+      "hyperlinkDisplayType": "A String", # How a hyperlink, if it exists, should be displayed in the cell.
+      "borders": { # The borders of the cell. # The borders of the cell.
+        "top": { # A border along a cell. # The top border of the cell.
+          "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
+              # for simplicity of conversion to/from color representations in various
+              # languages over compactness; for example, the fields of this representation
+              # can be trivially provided to the constructor of "java.awt.Color" in Java; it
+              # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
+              # method in iOS; and, with just a little work, it can be easily formatted into
+              # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
+              #
+              # Example (Java):
+              #
+              #      import com.google.type.Color;
+              #
+              #      // ...
+              #      public static java.awt.Color fromProto(Color protocolor) {
+              #        float alpha = protocolor.hasAlpha()
+              #            ? protocolor.getAlpha().getValue()
+              #            : 1.0;
+              #
+              #        return new java.awt.Color(
+              #            protocolor.getRed(),
+              #            protocolor.getGreen(),
+              #            protocolor.getBlue(),
+              #            alpha);
+              #      }
+              #
+              #      public static Color toProto(java.awt.Color color) {
+              #        float red = (float) color.getRed();
+              #        float green = (float) color.getGreen();
+              #        float blue = (float) color.getBlue();
+              #        float denominator = 255.0;
+              #        Color.Builder resultBuilder =
+              #            Color
+              #                .newBuilder()
+              #                .setRed(red / denominator)
+              #                .setGreen(green / denominator)
+              #                .setBlue(blue / denominator);
+              #        int alpha = color.getAlpha();
+              #        if (alpha != 255) {
+              #          result.setAlpha(
+              #              FloatValue
+              #                  .newBuilder()
+              #                  .setValue(((float) alpha) / denominator)
+              #                  .build());
+              #        }
+              #        return resultBuilder.build();
+              #      }
+              #      // ...
+              #
+              # Example (iOS / Obj-C):
+              #
+              #      // ...
+              #      static UIColor* fromProto(Color* protocolor) {
+              #         float red = [protocolor red];
+              #         float green = [protocolor green];
+              #         float blue = [protocolor blue];
+              #         FloatValue* alpha_wrapper = [protocolor alpha];
+              #         float alpha = 1.0;
+              #         if (alpha_wrapper != nil) {
+              #           alpha = [alpha_wrapper value];
+              #         }
+              #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
+              #      }
+              #
+              #      static Color* toProto(UIColor* color) {
+              #          CGFloat red, green, blue, alpha;
+              #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
+              #            return nil;
+              #          }
+              #          Color* result = [Color alloc] init];
+              #          [result setRed:red];
+              #          [result setGreen:green];
+              #          [result setBlue:blue];
+              #          if (alpha <= 0.9999) {
+              #            [result setAlpha:floatWrapperWithValue(alpha)];
+              #          }
+              #          [result autorelease];
+              #          return result;
+              #     }
+              #     // ...
+              #
+              #  Example (JavaScript):
+              #
+              #     // ...
+              #
+              #     var protoToCssColor = function(rgb_color) {
+              #        var redFrac = rgb_color.red || 0.0;
+              #        var greenFrac = rgb_color.green || 0.0;
+              #        var blueFrac = rgb_color.blue || 0.0;
+              #        var red = Math.floor(redFrac * 255);
+              #        var green = Math.floor(greenFrac * 255);
+              #        var blue = Math.floor(blueFrac * 255);
+              #
+              #        if (!('alpha' in rgb_color)) {
+              #           return rgbToCssColor_(red, green, blue);
+              #        }
+              #
+              #        var alphaFrac = rgb_color.alpha.value || 0.0;
+              #        var rgbParams = [red, green, blue].join(',');
+              #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
+              #     };
+              #
+              #     var rgbToCssColor_ = function(red, green, blue) {
+              #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
+              #       var hexString = rgbNumber.toString(16);
+              #       var missingZeros = 6 - hexString.length;
+              #       var resultBuilder = ['#'];
+              #       for (var i = 0; i < missingZeros; i++) {
+              #          resultBuilder.push('0');
+              #       }
+              #       resultBuilder.push(hexString);
+              #       return resultBuilder.join('');
+              #     };
+              #
+              #     // ...
+            "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+            "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
+                # the final pixel color is defined by the equation:
+                #
+                #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
+                #
+                # This means that a value of 1.0 corresponds to a solid color, whereas
+                # a value of 0.0 corresponds to a completely transparent color. This
+                # uses a wrapper message rather than a simple float scalar so that it is
+                # possible to distinguish between a default value and the value being unset.
+                # If omitted, this color object is to be rendered as a solid color
+                # (as if the alpha value had been explicitly given with a value of 1.0).
+            "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
+            "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
+          },
+          "width": 42, # The width of the border, in pixels.
+              # Deprecated; the width is determined by the "style" field.
+          "style": "A String", # The style of the border.
+        },
+        "right": { # A border along a cell. # The right border of the cell.
+          "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
+              # for simplicity of conversion to/from color representations in various
+              # languages over compactness; for example, the fields of this representation
+              # can be trivially provided to the constructor of "java.awt.Color" in Java; it
+              # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
+              # method in iOS; and, with just a little work, it can be easily formatted into
+              # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
+              #
+              # Example (Java):
+              #
+              #      import com.google.type.Color;
+              #
+              #      // ...
+              #      public static java.awt.Color fromProto(Color protocolor) {
+              #        float alpha = protocolor.hasAlpha()
+              #            ? protocolor.getAlpha().getValue()
+              #            : 1.0;
+              #
+              #        return new java.awt.Color(
+              #            protocolor.getRed(),
+              #            protocolor.getGreen(),
+              #            protocolor.getBlue(),
+              #            alpha);
+              #      }
+              #
+              #      public static Color toProto(java.awt.Color color) {
+              #        float red = (float) color.getRed();
+              #        float green = (float) color.getGreen();
+              #        float blue = (float) color.getBlue();
+              #        float denominator = 255.0;
+              #        Color.Builder resultBuilder =
+              #            Color
+              #                .newBuilder()
+              #                .setRed(red / denominator)
+              #                .setGreen(green / denominator)
+              #                .setBlue(blue / denominator);
+              #        int alpha = color.getAlpha();
+              #        if (alpha != 255) {
+              #          result.setAlpha(
+              #              FloatValue
+              #                  .newBuilder()
+              #                  .setValue(((float) alpha) / denominator)
+              #                  .build());
+              #        }
+              #        return resultBuilder.build();
+              #      }
+              #      // ...
+              #
+              # Example (iOS / Obj-C):
+              #
+              #      // ...
+              #      static UIColor* fromProto(Color* protocolor) {
+              #         float red = [protocolor red];
+              #         float green = [protocolor green];
+              #         float blue = [protocolor blue];
+              #         FloatValue* alpha_wrapper = [protocolor alpha];
+              #         float alpha = 1.0;
+              #         if (alpha_wrapper != nil) {
+              #           alpha = [alpha_wrapper value];
+              #         }
+              #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
+              #      }
+              #
+              #      static Color* toProto(UIColor* color) {
+              #          CGFloat red, green, blue, alpha;
+              #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
+              #            return nil;
+              #          }
+              #          Color* result = [Color alloc] init];
+              #          [result setRed:red];
+              #          [result setGreen:green];
+              #          [result setBlue:blue];
+              #          if (alpha <= 0.9999) {
+              #            [result setAlpha:floatWrapperWithValue(alpha)];
+              #          }
+              #          [result autorelease];
+              #          return result;
+              #     }
+              #     // ...
+              #
+              #  Example (JavaScript):
+              #
+              #     // ...
+              #
+              #     var protoToCssColor = function(rgb_color) {
+              #        var redFrac = rgb_color.red || 0.0;
+              #        var greenFrac = rgb_color.green || 0.0;
+              #        var blueFrac = rgb_color.blue || 0.0;
+              #        var red = Math.floor(redFrac * 255);
+              #        var green = Math.floor(greenFrac * 255);
+              #        var blue = Math.floor(blueFrac * 255);
+              #
+              #        if (!('alpha' in rgb_color)) {
+              #           return rgbToCssColor_(red, green, blue);
+              #        }
+              #
+              #        var alphaFrac = rgb_color.alpha.value || 0.0;
+              #        var rgbParams = [red, green, blue].join(',');
+              #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
+              #     };
+              #
+              #     var rgbToCssColor_ = function(red, green, blue) {
+              #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
+              #       var hexString = rgbNumber.toString(16);
+              #       var missingZeros = 6 - hexString.length;
+              #       var resultBuilder = ['#'];
+              #       for (var i = 0; i < missingZeros; i++) {
+              #          resultBuilder.push('0');
+              #       }
+              #       resultBuilder.push(hexString);
+              #       return resultBuilder.join('');
+              #     };
+              #
+              #     // ...
+            "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+            "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
+                # the final pixel color is defined by the equation:
+                #
+                #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
+                #
+                # This means that a value of 1.0 corresponds to a solid color, whereas
+                # a value of 0.0 corresponds to a completely transparent color. This
+                # uses a wrapper message rather than a simple float scalar so that it is
+                # possible to distinguish between a default value and the value being unset.
+                # If omitted, this color object is to be rendered as a solid color
+                # (as if the alpha value had been explicitly given with a value of 1.0).
+            "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
+            "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
+          },
+          "width": 42, # The width of the border, in pixels.
+              # Deprecated; the width is determined by the "style" field.
+          "style": "A String", # The style of the border.
+        },
+        "bottom": { # A border along a cell. # The bottom border of the cell.
+          "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
+              # for simplicity of conversion to/from color representations in various
+              # languages over compactness; for example, the fields of this representation
+              # can be trivially provided to the constructor of "java.awt.Color" in Java; it
+              # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
+              # method in iOS; and, with just a little work, it can be easily formatted into
+              # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
+              #
+              # Example (Java):
+              #
+              #      import com.google.type.Color;
+              #
+              #      // ...
+              #      public static java.awt.Color fromProto(Color protocolor) {
+              #        float alpha = protocolor.hasAlpha()
+              #            ? protocolor.getAlpha().getValue()
+              #            : 1.0;
+              #
+              #        return new java.awt.Color(
+              #            protocolor.getRed(),
+              #            protocolor.getGreen(),
+              #            protocolor.getBlue(),
+              #            alpha);
+              #      }
+              #
+              #      public static Color toProto(java.awt.Color color) {
+              #        float red = (float) color.getRed();
+              #        float green = (float) color.getGreen();
+              #        float blue = (float) color.getBlue();
+              #        float denominator = 255.0;
+              #        Color.Builder resultBuilder =
+              #            Color
+              #                .newBuilder()
+              #                .setRed(red / denominator)
+              #                .setGreen(green / denominator)
+              #                .setBlue(blue / denominator);
+              #        int alpha = color.getAlpha();
+              #        if (alpha != 255) {
+              #          result.setAlpha(
+              #              FloatValue
+              #                  .newBuilder()
+              #                  .setValue(((float) alpha) / denominator)
+              #                  .build());
+              #        }
+              #        return resultBuilder.build();
+              #      }
+              #      // ...
+              #
+              # Example (iOS / Obj-C):
+              #
+              #      // ...
+              #      static UIColor* fromProto(Color* protocolor) {
+              #         float red = [protocolor red];
+              #         float green = [protocolor green];
+              #         float blue = [protocolor blue];
+              #         FloatValue* alpha_wrapper = [protocolor alpha];
+              #         float alpha = 1.0;
+              #         if (alpha_wrapper != nil) {
+              #           alpha = [alpha_wrapper value];
+              #         }
+              #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
+              #      }
+              #
+              #      static Color* toProto(UIColor* color) {
+              #          CGFloat red, green, blue, alpha;
+              #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
+              #            return nil;
+              #          }
+              #          Color* result = [Color alloc] init];
+              #          [result setRed:red];
+              #          [result setGreen:green];
+              #          [result setBlue:blue];
+              #          if (alpha <= 0.9999) {
+              #            [result setAlpha:floatWrapperWithValue(alpha)];
+              #          }
+              #          [result autorelease];
+              #          return result;
+              #     }
+              #     // ...
+              #
+              #  Example (JavaScript):
+              #
+              #     // ...
+              #
+              #     var protoToCssColor = function(rgb_color) {
+              #        var redFrac = rgb_color.red || 0.0;
+              #        var greenFrac = rgb_color.green || 0.0;
+              #        var blueFrac = rgb_color.blue || 0.0;
+              #        var red = Math.floor(redFrac * 255);
+              #        var green = Math.floor(greenFrac * 255);
+              #        var blue = Math.floor(blueFrac * 255);
+              #
+              #        if (!('alpha' in rgb_color)) {
+              #           return rgbToCssColor_(red, green, blue);
+              #        }
+              #
+              #        var alphaFrac = rgb_color.alpha.value || 0.0;
+              #        var rgbParams = [red, green, blue].join(',');
+              #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
+              #     };
+              #
+              #     var rgbToCssColor_ = function(red, green, blue) {
+              #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
+              #       var hexString = rgbNumber.toString(16);
+              #       var missingZeros = 6 - hexString.length;
+              #       var resultBuilder = ['#'];
+              #       for (var i = 0; i < missingZeros; i++) {
+              #          resultBuilder.push('0');
+              #       }
+              #       resultBuilder.push(hexString);
+              #       return resultBuilder.join('');
+              #     };
+              #
+              #     // ...
+            "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+            "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
+                # the final pixel color is defined by the equation:
+                #
+                #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
+                #
+                # This means that a value of 1.0 corresponds to a solid color, whereas
+                # a value of 0.0 corresponds to a completely transparent color. This
+                # uses a wrapper message rather than a simple float scalar so that it is
+                # possible to distinguish between a default value and the value being unset.
+                # If omitted, this color object is to be rendered as a solid color
+                # (as if the alpha value had been explicitly given with a value of 1.0).
+            "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
+            "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
+          },
+          "width": 42, # The width of the border, in pixels.
+              # Deprecated; the width is determined by the "style" field.
+          "style": "A String", # The style of the border.
+        },
+        "left": { # A border along a cell. # The left border of the cell.
+          "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
+              # for simplicity of conversion to/from color representations in various
+              # languages over compactness; for example, the fields of this representation
+              # can be trivially provided to the constructor of "java.awt.Color" in Java; it
+              # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
+              # method in iOS; and, with just a little work, it can be easily formatted into
+              # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
+              #
+              # Example (Java):
+              #
+              #      import com.google.type.Color;
+              #
+              #      // ...
+              #      public static java.awt.Color fromProto(Color protocolor) {
+              #        float alpha = protocolor.hasAlpha()
+              #            ? protocolor.getAlpha().getValue()
+              #            : 1.0;
+              #
+              #        return new java.awt.Color(
+              #            protocolor.getRed(),
+              #            protocolor.getGreen(),
+              #            protocolor.getBlue(),
+              #            alpha);
+              #      }
+              #
+              #      public static Color toProto(java.awt.Color color) {
+              #        float red = (float) color.getRed();
+              #        float green = (float) color.getGreen();
+              #        float blue = (float) color.getBlue();
+              #        float denominator = 255.0;
+              #        Color.Builder resultBuilder =
+              #            Color
+              #                .newBuilder()
+              #                .setRed(red / denominator)
+              #                .setGreen(green / denominator)
+              #                .setBlue(blue / denominator);
+              #        int alpha = color.getAlpha();
+              #        if (alpha != 255) {
+              #          result.setAlpha(
+              #              FloatValue
+              #                  .newBuilder()
+              #                  .setValue(((float) alpha) / denominator)
+              #                  .build());
+              #        }
+              #        return resultBuilder.build();
+              #      }
+              #      // ...
+              #
+              # Example (iOS / Obj-C):
+              #
+              #      // ...
+              #      static UIColor* fromProto(Color* protocolor) {
+              #         float red = [protocolor red];
+              #         float green = [protocolor green];
+              #         float blue = [protocolor blue];
+              #         FloatValue* alpha_wrapper = [protocolor alpha];
+              #         float alpha = 1.0;
+              #         if (alpha_wrapper != nil) {
+              #           alpha = [alpha_wrapper value];
+              #         }
+              #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
+              #      }
+              #
+              #      static Color* toProto(UIColor* color) {
+              #          CGFloat red, green, blue, alpha;
+              #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
+              #            return nil;
+              #          }
+              #          Color* result = [Color alloc] init];
+              #          [result setRed:red];
+              #          [result setGreen:green];
+              #          [result setBlue:blue];
+              #          if (alpha <= 0.9999) {
+              #            [result setAlpha:floatWrapperWithValue(alpha)];
+              #          }
+              #          [result autorelease];
+              #          return result;
+              #     }
+              #     // ...
+              #
+              #  Example (JavaScript):
+              #
+              #     // ...
+              #
+              #     var protoToCssColor = function(rgb_color) {
+              #        var redFrac = rgb_color.red || 0.0;
+              #        var greenFrac = rgb_color.green || 0.0;
+              #        var blueFrac = rgb_color.blue || 0.0;
+              #        var red = Math.floor(redFrac * 255);
+              #        var green = Math.floor(greenFrac * 255);
+              #        var blue = Math.floor(blueFrac * 255);
+              #
+              #        if (!('alpha' in rgb_color)) {
+              #           return rgbToCssColor_(red, green, blue);
+              #        }
+              #
+              #        var alphaFrac = rgb_color.alpha.value || 0.0;
+              #        var rgbParams = [red, green, blue].join(',');
+              #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
+              #     };
+              #
+              #     var rgbToCssColor_ = function(red, green, blue) {
+              #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
+              #       var hexString = rgbNumber.toString(16);
+              #       var missingZeros = 6 - hexString.length;
+              #       var resultBuilder = ['#'];
+              #       for (var i = 0; i < missingZeros; i++) {
+              #          resultBuilder.push('0');
+              #       }
+              #       resultBuilder.push(hexString);
+              #       return resultBuilder.join('');
+              #     };
+              #
+              #     // ...
+            "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+            "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
+                # the final pixel color is defined by the equation:
+                #
+                #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
+                #
+                # This means that a value of 1.0 corresponds to a solid color, whereas
+                # a value of 0.0 corresponds to a completely transparent color. This
+                # uses a wrapper message rather than a simple float scalar so that it is
+                # possible to distinguish between a default value and the value being unset.
+                # If omitted, this color object is to be rendered as a solid color
+                # (as if the alpha value had been explicitly given with a value of 1.0).
+            "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
+            "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
+          },
+          "width": 42, # The width of the border, in pixels.
+              # Deprecated; the width is determined by the "style" field.
+          "style": "A String", # The style of the border.
+        },
+      },
+      "wrapStrategy": "A String", # The wrap strategy for the value in the cell.
+    },
+    "title": "A String", # The title of the spreadsheet.
+  },
+  "sheets": [ # The sheets that are part of a spreadsheet.
+    { # A sheet in a spreadsheet.
+      "conditionalFormats": [ # The conditional format rules in this sheet.
+        { # A rule describing a conditional format.
+          "ranges": [ # The ranges that will be formatted if the condition is true.
+              # All the ranges must be on the same grid.
+            { # A range on a sheet.
+                # All indexes are zero-based.
+                # Indexes are half open, e.g the start index is inclusive
+                # and the end index is exclusive -- [start_index, end_index).
+                # Missing indexes indicate the range is unbounded on that side.
+                #
+                # For example, if `"Sheet1"` is sheet ID 0, then:
+                #
+                #   `Sheet1!A1:A1 == sheet_id: 0,
+                #                   start_row_index: 0, end_row_index: 1,
+                #                   start_column_index: 0, end_column_index: 1`
+                #
+                #   `Sheet1!A3:B4 == sheet_id: 0,
+                #                   start_row_index: 2, end_row_index: 4,
+                #                   start_column_index: 0, end_column_index: 2`
+                #
+                #   `Sheet1!A:B == sheet_id: 0,
+                #                 start_column_index: 0, end_column_index: 2`
+                #
+                #   `Sheet1!A5:B == sheet_id: 0,
+                #                  start_row_index: 4,
+                #                  start_column_index: 0, end_column_index: 2`
+                #
+                #   `Sheet1 == sheet_id:0`
+                #
+                # The start index must always be less than or equal to the end index.
+                # If the start index equals the end index, then the range is empty.
+                # Empty ranges are typically not meaningful and are usually rendered in the
+                # UI as `#REF!`.
+              "endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
+              "startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
+              "sheetId": 42, # The sheet this range is on.
+              "startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
+              "endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
+            },
+          ],
+          "booleanRule": { # A rule that may or may not match, depending on the condition. # The formatting is either "on" or "off" according to the rule.
+            "condition": { # A condition that can evaluate to true or false. # The condition of the rule. If the condition evaluates to true,
+                # the format will be applied.
+                # BooleanConditions are used by conditional formatting,
+                # data validation, and the criteria in filters.
+              "type": "A String", # The type of condition.
+              "values": [ # The values of the condition. The number of supported values depends
+                  # on the condition type.  Some support zero values,
+                  # others one or two values,
+                  # and ConditionType.ONE_OF_LIST supports an arbitrary number of values.
+                { # The value of the condition.
+                  "relativeDate": "A String", # A relative date (based on the current date).
+                      # Valid only if the type is
+                      # DATE_BEFORE,
+                      # DATE_AFTER,
+                      # DATE_ON_OR_BEFORE or
+                      # DATE_ON_OR_AFTER.
+                      #
+                      # Relative dates are not supported in data validation.
+                      # They are supported only in conditional formatting and
+                      # conditional filters.
+                  "userEnteredValue": "A String", # A value the condition is based on.
+                      # The value will be parsed as if the user typed into a cell.
+                      # Formulas are supported (and must begin with an `=`).
+                },
+              ],
+            },
+            "format": { # The format of a cell. # The format to apply.
+                # Conditional formatting can only apply a subset of formatting:
+                # bold, italic,
+                # strikethrough,
+                # foreground color &
+                # background color.
+              "numberFormat": { # The number format of a cell. # A format describing how number values should be represented to the user.
+                "pattern": "A String", # Pattern string used for formatting.  If not set, a default pattern based on
+                    # the user's locale will be used if necessary for the given type.
+                    # See the [Date and Number Formats guide](/sheets/guides/formats) for more
+                    # information about the supported patterns.
+                "type": "A String", # The type of the number format.
+                    # When writing, this field must be set.
+              },
+              "textDirection": "A String", # The direction of the text in the cell.
+              "padding": { # The amount of padding around the cell, in pixels. # The padding of the cell.
+                  # When updating padding, every field must be specified.
+                "top": 42, # The top padding of the cell.
+                "right": 42, # The right padding of the cell.
+                "bottom": 42, # The bottom padding of the cell.
+                "left": 42, # The left padding of the cell.
+              },
+              "horizontalAlignment": "A String", # The horizontal alignment of the value in the cell.
+              "backgroundColor": { # Represents a color in the RGBA color space. This representation is designed # The background color of the cell.
+                  # for simplicity of conversion to/from color representations in various
+                  # languages over compactness; for example, the fields of this representation
+                  # can be trivially provided to the constructor of "java.awt.Color" in Java; it
+                  # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
+                  # method in iOS; and, with just a little work, it can be easily formatted into
+                  # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
+                  #
+                  # Example (Java):
+                  #
+                  #      import com.google.type.Color;
+                  #
+                  #      // ...
+                  #      public static java.awt.Color fromProto(Color protocolor) {
+                  #        float alpha = protocolor.hasAlpha()
+                  #            ? protocolor.getAlpha().getValue()
+                  #            : 1.0;
+                  #
+                  #        return new java.awt.Color(
+                  #            protocolor.getRed(),
+                  #            protocolor.getGreen(),
+                  #            protocolor.getBlue(),
+                  #            alpha);
+                  #      }
+                  #
+                  #      public static Color toProto(java.awt.Color color) {
+                  #        float red = (float) color.getRed();
+                  #        float green = (float) color.getGreen();
+                  #        float blue = (float) color.getBlue();
+                  #        float denominator = 255.0;
+                  #        Color.Builder resultBuilder =
+                  #            Color
+                  #                .newBuilder()
+                  #                .setRed(red / denominator)
+                  #                .setGreen(green / denominator)
+                  #                .setBlue(blue / denominator);
+                  #        int alpha = color.getAlpha();
+                  #        if (alpha != 255) {
+                  #          result.setAlpha(
+                  #              FloatValue
+                  #                  .newBuilder()
+                  #                  .setValue(((float) alpha) / denominator)
+                  #                  .build());
+                  #        }
+                  #        return resultBuilder.build();
+                  #      }
+                  #      // ...
+                  #
+                  # Example (iOS / Obj-C):
+                  #
+                  #      // ...
+                  #      static UIColor* fromProto(Color* protocolor) {
+                  #         float red = [protocolor red];
+                  #         float green = [protocolor green];
+                  #         float blue = [protocolor blue];
+                  #         FloatValue* alpha_wrapper = [protocolor alpha];
+                  #         float alpha = 1.0;
+                  #         if (alpha_wrapper != nil) {
+                  #           alpha = [alpha_wrapper value];
+                  #         }
+                  #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
+                  #      }
+                  #
+                  #      static Color* toProto(UIColor* color) {
+                  #          CGFloat red, green, blue, alpha;
+                  #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
+                  #            return nil;
+                  #          }
+                  #          Color* result = [Color alloc] init];
+                  #          [result setRed:red];
+                  #          [result setGreen:green];
+                  #          [result setBlue:blue];
+                  #          if (alpha <= 0.9999) {
+                  #            [result setAlpha:floatWrapperWithValue(alpha)];
+                  #          }
+                  #          [result autorelease];
+                  #          return result;
+                  #     }
+                  #     // ...
+                  #
+                  #  Example (JavaScript):
+                  #
+                  #     // ...
+                  #
+                  #     var protoToCssColor = function(rgb_color) {
+                  #        var redFrac = rgb_color.red || 0.0;
+                  #        var greenFrac = rgb_color.green || 0.0;
+                  #        var blueFrac = rgb_color.blue || 0.0;
+                  #        var red = Math.floor(redFrac * 255);
+                  #        var green = Math.floor(greenFrac * 255);
+                  #        var blue = Math.floor(blueFrac * 255);
+                  #
+                  #        if (!('alpha' in rgb_color)) {
+                  #           return rgbToCssColor_(red, green, blue);
+                  #        }
+                  #
+                  #        var alphaFrac = rgb_color.alpha.value || 0.0;
+                  #        var rgbParams = [red, green, blue].join(',');
+                  #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
+                  #     };
+                  #
+                  #     var rgbToCssColor_ = function(red, green, blue) {
+                  #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
+                  #       var hexString = rgbNumber.toString(16);
+                  #       var missingZeros = 6 - hexString.length;
+                  #       var resultBuilder = ['#'];
+                  #       for (var i = 0; i < missingZeros; i++) {
+                  #          resultBuilder.push('0');
+                  #       }
+                  #       resultBuilder.push(hexString);
+                  #       return resultBuilder.join('');
+                  #     };
+                  #
+                  #     // ...
+                "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+                "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
+                    # the final pixel color is defined by the equation:
+                    #
+                    #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
+                    #
+                    # This means that a value of 1.0 corresponds to a solid color, whereas
+                    # a value of 0.0 corresponds to a completely transparent color. This
+                    # uses a wrapper message rather than a simple float scalar so that it is
+                    # possible to distinguish between a default value and the value being unset.
+                    # If omitted, this color object is to be rendered as a solid color
+                    # (as if the alpha value had been explicitly given with a value of 1.0).
+                "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
+                "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
+              },
+              "verticalAlignment": "A String", # The vertical alignment of the value in the cell.
+              "textFormat": { # The format of a run of text in a cell. # The format of the text in the cell (unless overridden by a format run).
+                  # Absent values indicate that the field isn't specified.
+                "foregroundColor": { # Represents a color in the RGBA color space. This representation is designed # The foreground color of the text.
+                    # for simplicity of conversion to/from color representations in various
+                    # languages over compactness; for example, the fields of this representation
+                    # can be trivially provided to the constructor of "java.awt.Color" in Java; it
+                    # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
+                    # method in iOS; and, with just a little work, it can be easily formatted into
+                    # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
+                    #
+                    # Example (Java):
+                    #
+                    #      import com.google.type.Color;
+                    #
+                    #      // ...
+                    #      public static java.awt.Color fromProto(Color protocolor) {
+                    #        float alpha = protocolor.hasAlpha()
+                    #            ? protocolor.getAlpha().getValue()
+                    #            : 1.0;
+                    #
+                    #        return new java.awt.Color(
+                    #            protocolor.getRed(),
+                    #            protocolor.getGreen(),
+                    #            protocolor.getBlue(),
+                    #            alpha);
+                    #      }
+                    #
+                    #      public static Color toProto(java.awt.Color color) {
+                    #        float red = (float) color.getRed();
+                    #        float green = (float) color.getGreen();
+                    #        float blue = (float) color.getBlue();
+                    #        float denominator = 255.0;
+                    #        Color.Builder resultBuilder =
+                    #            Color
+                    #                .newBuilder()
+                    #                .setRed(red / denominator)
+                    #                .setGreen(green / denominator)
+                    #                .setBlue(blue / denominator);
+                    #        int alpha = color.getAlpha();
+                    #        if (alpha != 255) {
+                    #          result.setAlpha(
+                    #              FloatValue
+                    #                  .newBuilder()
+                    #                  .setValue(((float) alpha) / denominator)
+                    #                  .build());
+                    #        }
+                    #        return resultBuilder.build();
+                    #      }
+                    #      // ...
+                    #
+                    # Example (iOS / Obj-C):
+                    #
+                    #      // ...
+                    #      static UIColor* fromProto(Color* protocolor) {
+                    #         float red = [protocolor red];
+                    #         float green = [protocolor green];
+                    #         float blue = [protocolor blue];
+                    #         FloatValue* alpha_wrapper = [protocolor alpha];
+                    #         float alpha = 1.0;
+                    #         if (alpha_wrapper != nil) {
+                    #           alpha = [alpha_wrapper value];
+                    #         }
+                    #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
+                    #      }
+                    #
+                    #      static Color* toProto(UIColor* color) {
+                    #          CGFloat red, green, blue, alpha;
+                    #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
+                    #            return nil;
+                    #          }
+                    #          Color* result = [Color alloc] init];
+                    #          [result setRed:red];
+                    #          [result setGreen:green];
+                    #          [result setBlue:blue];
+                    #          if (alpha <= 0.9999) {
+                    #            [result setAlpha:floatWrapperWithValue(alpha)];
+                    #          }
+                    #          [result autorelease];
+                    #          return result;
+                    #     }
+                    #     // ...
+                    #
+                    #  Example (JavaScript):
+                    #
+                    #     // ...
+                    #
+                    #     var protoToCssColor = function(rgb_color) {
+                    #        var redFrac = rgb_color.red || 0.0;
+                    #        var greenFrac = rgb_color.green || 0.0;
+                    #        var blueFrac = rgb_color.blue || 0.0;
+                    #        var red = Math.floor(redFrac * 255);
+                    #        var green = Math.floor(greenFrac * 255);
+                    #        var blue = Math.floor(blueFrac * 255);
+                    #
+                    #        if (!('alpha' in rgb_color)) {
+                    #           return rgbToCssColor_(red, green, blue);
+                    #        }
+                    #
+                    #        var alphaFrac = rgb_color.alpha.value || 0.0;
+                    #        var rgbParams = [red, green, blue].join(',');
+                    #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
+                    #     };
+                    #
+                    #     var rgbToCssColor_ = function(red, green, blue) {
+                    #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
+                    #       var hexString = rgbNumber.toString(16);
+                    #       var missingZeros = 6 - hexString.length;
+                    #       var resultBuilder = ['#'];
+                    #       for (var i = 0; i < missingZeros; i++) {
+                    #          resultBuilder.push('0');
+                    #       }
+                    #       resultBuilder.push(hexString);
+                    #       return resultBuilder.join('');
+                    #     };
+                    #
+                    #     // ...
+                  "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+                  "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
+                      # the final pixel color is defined by the equation:
+                      #
+                      #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
+                      #
+                      # This means that a value of 1.0 corresponds to a solid color, whereas
+                      # a value of 0.0 corresponds to a completely transparent color. This
+                      # uses a wrapper message rather than a simple float scalar so that it is
+                      # possible to distinguish between a default value and the value being unset.
+                      # If omitted, this color object is to be rendered as a solid color
+                      # (as if the alpha value had been explicitly given with a value of 1.0).
+                  "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
+                  "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
+                },
+                "bold": True or False, # True if the text is bold.
+                "strikethrough": True or False, # True if the text has a strikethrough.
+                "fontFamily": "A String", # The font family.
+                "fontSize": 42, # The size of the font.
+                "italic": True or False, # True if the text is italicized.
+                "underline": True or False, # True if the text is underlined.
+              },
+              "hyperlinkDisplayType": "A String", # How a hyperlink, if it exists, should be displayed in the cell.
+              "borders": { # The borders of the cell. # The borders of the cell.
+                "top": { # A border along a cell. # The top border of the cell.
+                  "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
+                      # for simplicity of conversion to/from color representations in various
+                      # languages over compactness; for example, the fields of this representation
+                      # can be trivially provided to the constructor of "java.awt.Color" in Java; it
+                      # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
+                      # method in iOS; and, with just a little work, it can be easily formatted into
+                      # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
+                      #
+                      # Example (Java):
+                      #
+                      #      import com.google.type.Color;
+                      #
+                      #      // ...
+                      #      public static java.awt.Color fromProto(Color protocolor) {
+                      #        float alpha = protocolor.hasAlpha()
+                      #            ? protocolor.getAlpha().getValue()
+                      #            : 1.0;
+                      #
+                      #        return new java.awt.Color(
+                      #            protocolor.getRed(),
+                      #            protocolor.getGreen(),
+                      #            protocolor.getBlue(),
+                      #            alpha);
+                      #      }
+                      #
+                      #      public static Color toProto(java.awt.Color color) {
+                      #        float red = (float) color.getRed();
+                      #        float green = (float) color.getGreen();
+                      #        float blue = (float) color.getBlue();
+                      #        float denominator = 255.0;
+                      #        Color.Builder resultBuilder =
+                      #            Color
+                      #                .newBuilder()
+                      #                .setRed(red / denominator)
+                      #                .setGreen(green / denominator)
+                      #                .setBlue(blue / denominator);
+                      #        int alpha = color.getAlpha();
+                      #        if (alpha != 255) {
+                      #          result.setAlpha(
+                      #              FloatValue
+                      #                  .newBuilder()
+                      #                  .setValue(((float) alpha) / denominator)
+                      #                  .build());
+                      #        }
+                      #        return resultBuilder.build();
+                      #      }
+                      #      // ...
+                      #
+                      # Example (iOS / Obj-C):
+                      #
+                      #      // ...
+                      #      static UIColor* fromProto(Color* protocolor) {
+                      #         float red = [protocolor red];
+                      #         float green = [protocolor green];
+                      #         float blue = [protocolor blue];
+                      #         FloatValue* alpha_wrapper = [protocolor alpha];
+                      #         float alpha = 1.0;
+                      #         if (alpha_wrapper != nil) {
+                      #           alpha = [alpha_wrapper value];
+                      #         }
+                      #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
+                      #      }
+                      #
+                      #      static Color* toProto(UIColor* color) {
+                      #          CGFloat red, green, blue, alpha;
+                      #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
+                      #            return nil;
+                      #          }
+                      #          Color* result = [Color alloc] init];
+                      #          [result setRed:red];
+                      #          [result setGreen:green];
+                      #          [result setBlue:blue];
+                      #          if (alpha <= 0.9999) {
+                      #            [result setAlpha:floatWrapperWithValue(alpha)];
+                      #          }
+                      #          [result autorelease];
+                      #          return result;
+                      #     }
+                      #     // ...
+                      #
+                      #  Example (JavaScript):
+                      #
+                      #     // ...
+                      #
+                      #     var protoToCssColor = function(rgb_color) {
+                      #        var redFrac = rgb_color.red || 0.0;
+                      #        var greenFrac = rgb_color.green || 0.0;
+                      #        var blueFrac = rgb_color.blue || 0.0;
+                      #        var red = Math.floor(redFrac * 255);
+                      #        var green = Math.floor(greenFrac * 255);
+                      #        var blue = Math.floor(blueFrac * 255);
+                      #
+                      #        if (!('alpha' in rgb_color)) {
+                      #           return rgbToCssColor_(red, green, blue);
+                      #        }
+                      #
+                      #        var alphaFrac = rgb_color.alpha.value || 0.0;
+                      #        var rgbParams = [red, green, blue].join(',');
+                      #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
+                      #     };
+                      #
+                      #     var rgbToCssColor_ = function(red, green, blue) {
+                      #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
+                      #       var hexString = rgbNumber.toString(16);
+                      #       var missingZeros = 6 - hexString.length;
+                      #       var resultBuilder = ['#'];
+                      #       for (var i = 0; i < missingZeros; i++) {
+                      #          resultBuilder.push('0');
+                      #       }
+                      #       resultBuilder.push(hexString);
+                      #       return resultBuilder.join('');
+                      #     };
+                      #
+                      #     // ...
+                    "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+                    "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
+                        # the final pixel color is defined by the equation:
+                        #
+                        #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
+                        #
+                        # This means that a value of 1.0 corresponds to a solid color, whereas
+                        # a value of 0.0 corresponds to a completely transparent color. This
+                        # uses a wrapper message rather than a simple float scalar so that it is
+                        # possible to distinguish between a default value and the value being unset.
+                        # If omitted, this color object is to be rendered as a solid color
+                        # (as if the alpha value had been explicitly given with a value of 1.0).
+                    "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
+                    "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
+                  },
+                  "width": 42, # The width of the border, in pixels.
+                      # Deprecated; the width is determined by the "style" field.
+                  "style": "A String", # The style of the border.
+                },
+                "right": { # A border along a cell. # The right border of the cell.
+                  "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
+                      # for simplicity of conversion to/from color representations in various
+                      # languages over compactness; for example, the fields of this representation
+                      # can be trivially provided to the constructor of "java.awt.Color" in Java; it
+                      # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
+                      # method in iOS; and, with just a little work, it can be easily formatted into
+                      # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
+                      #
+                      # Example (Java):
+                      #
+                      #      import com.google.type.Color;
+                      #
+                      #      // ...
+                      #      public static java.awt.Color fromProto(Color protocolor) {
+                      #        float alpha = protocolor.hasAlpha()
+                      #            ? protocolor.getAlpha().getValue()
+                      #            : 1.0;
+                      #
+                      #        return new java.awt.Color(
+                      #            protocolor.getRed(),
+                      #            protocolor.getGreen(),
+                      #            protocolor.getBlue(),
+                      #            alpha);
+                      #      }
+                      #
+                      #      public static Color toProto(java.awt.Color color) {
+                      #        float red = (float) color.getRed();
+                      #        float green = (float) color.getGreen();
+                      #        float blue = (float) color.getBlue();
+                      #        float denominator = 255.0;
+                      #        Color.Builder resultBuilder =
+                      #            Color
+                      #                .newBuilder()
+                      #                .setRed(red / denominator)
+                      #                .setGreen(green / denominator)
+                      #                .setBlue(blue / denominator);
+                      #        int alpha = color.getAlpha();
+                      #        if (alpha != 255) {
+                      #          result.setAlpha(
+                      #              FloatValue
+                      #                  .newBuilder()
+                      #                  .setValue(((float) alpha) / denominator)
+                      #                  .build());
+                      #        }
+                      #        return resultBuilder.build();
+                      #      }
+                      #      // ...
+                      #
+                      # Example (iOS / Obj-C):
+                      #
+                      #      // ...
+                      #      static UIColor* fromProto(Color* protocolor) {
+                      #         float red = [protocolor red];
+                      #         float green = [protocolor green];
+                      #         float blue = [protocolor blue];
+                      #         FloatValue* alpha_wrapper = [protocolor alpha];
+                      #         float alpha = 1.0;
+                      #         if (alpha_wrapper != nil) {
+                      #           alpha = [alpha_wrapper value];
+                      #         }
+                      #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
+                      #      }
+                      #
+                      #      static Color* toProto(UIColor* color) {
+                      #          CGFloat red, green, blue, alpha;
+                      #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
+                      #            return nil;
+                      #          }
+                      #          Color* result = [Color alloc] init];
+                      #          [result setRed:red];
+                      #          [result setGreen:green];
+                      #          [result setBlue:blue];
+                      #          if (alpha <= 0.9999) {
+                      #            [result setAlpha:floatWrapperWithValue(alpha)];
+                      #          }
+                      #          [result autorelease];
+                      #          return result;
+                      #     }
+                      #     // ...
+                      #
+                      #  Example (JavaScript):
+                      #
+                      #     // ...
+                      #
+                      #     var protoToCssColor = function(rgb_color) {
+                      #        var redFrac = rgb_color.red || 0.0;
+                      #        var greenFrac = rgb_color.green || 0.0;
+                      #        var blueFrac = rgb_color.blue || 0.0;
+                      #        var red = Math.floor(redFrac * 255);
+                      #        var green = Math.floor(greenFrac * 255);
+                      #        var blue = Math.floor(blueFrac * 255);
+                      #
+                      #        if (!('alpha' in rgb_color)) {
+                      #           return rgbToCssColor_(red, green, blue);
+                      #        }
+                      #
+                      #        var alphaFrac = rgb_color.alpha.value || 0.0;
+                      #        var rgbParams = [red, green, blue].join(',');
+                      #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
+                      #     };
+                      #
+                      #     var rgbToCssColor_ = function(red, green, blue) {
+                      #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
+                      #       var hexString = rgbNumber.toString(16);
+                      #       var missingZeros = 6 - hexString.length;
+                      #       var resultBuilder = ['#'];
+                      #       for (var i = 0; i < missingZeros; i++) {
+                      #          resultBuilder.push('0');
+                      #       }
+                      #       resultBuilder.push(hexString);
+                      #       return resultBuilder.join('');
+                      #     };
+                      #
+                      #     // ...
+                    "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+                    "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
+                        # the final pixel color is defined by the equation:
+                        #
+                        #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
+                        #
+                        # This means that a value of 1.0 corresponds to a solid color, whereas
+                        # a value of 0.0 corresponds to a completely transparent color. This
+                        # uses a wrapper message rather than a simple float scalar so that it is
+                        # possible to distinguish between a default value and the value being unset.
+                        # If omitted, this color object is to be rendered as a solid color
+                        # (as if the alpha value had been explicitly given with a value of 1.0).
+                    "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
+                    "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
+                  },
+                  "width": 42, # The width of the border, in pixels.
+                      # Deprecated; the width is determined by the "style" field.
+                  "style": "A String", # The style of the border.
+                },
+                "bottom": { # A border along a cell. # The bottom border of the cell.
+                  "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
+                      # for simplicity of conversion to/from color representations in various
+                      # languages over compactness; for example, the fields of this representation
+                      # can be trivially provided to the constructor of "java.awt.Color" in Java; it
+                      # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
+                      # method in iOS; and, with just a little work, it can be easily formatted into
+                      # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
+                      #
+                      # Example (Java):
+                      #
+                      #      import com.google.type.Color;
+                      #
+                      #      // ...
+                      #      public static java.awt.Color fromProto(Color protocolor) {
+                      #        float alpha = protocolor.hasAlpha()
+                      #            ? protocolor.getAlpha().getValue()
+                      #            : 1.0;
+                      #
+                      #        return new java.awt.Color(
+                      #            protocolor.getRed(),
+                      #            protocolor.getGreen(),
+                      #            protocolor.getBlue(),
+                      #            alpha);
+                      #      }
+                      #
+                      #      public static Color toProto(java.awt.Color color) {
+                      #        float red = (float) color.getRed();
+                      #        float green = (float) color.getGreen();
+                      #        float blue = (float) color.getBlue();
+                      #        float denominator = 255.0;
+                      #        Color.Builder resultBuilder =
+                      #            Color
+                      #                .newBuilder()
+                      #                .setRed(red / denominator)
+                      #                .setGreen(green / denominator)
+                      #                .setBlue(blue / denominator);
+                      #        int alpha = color.getAlpha();
+                      #        if (alpha != 255) {
+                      #          result.setAlpha(
+                      #              FloatValue
+                      #                  .newBuilder()
+                      #                  .setValue(((float) alpha) / denominator)
+                      #                  .build());
+                      #        }
+                      #        return resultBuilder.build();
+                      #      }
+                      #      // ...
+                      #
+                      # Example (iOS / Obj-C):
+                      #
+                      #      // ...
+                      #      static UIColor* fromProto(Color* protocolor) {
+                      #         float red = [protocolor red];
+                      #         float green = [protocolor green];
+                      #         float blue = [protocolor blue];
+                      #         FloatValue* alpha_wrapper = [protocolor alpha];
+                      #         float alpha = 1.0;
+                      #         if (alpha_wrapper != nil) {
+                      #           alpha = [alpha_wrapper value];
+                      #         }
+                      #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
+                      #      }
+                      #
+                      #      static Color* toProto(UIColor* color) {
+                      #          CGFloat red, green, blue, alpha;
+                      #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
+                      #            return nil;
+                      #          }
+                      #          Color* result = [Color alloc] init];
+                      #          [result setRed:red];
+                      #          [result setGreen:green];
+                      #          [result setBlue:blue];
+                      #          if (alpha <= 0.9999) {
+                      #            [result setAlpha:floatWrapperWithValue(alpha)];
+                      #          }
+                      #          [result autorelease];
+                      #          return result;
+                      #     }
+                      #     // ...
+                      #
+                      #  Example (JavaScript):
+                      #
+                      #     // ...
+                      #
+                      #     var protoToCssColor = function(rgb_color) {
+                      #        var redFrac = rgb_color.red || 0.0;
+                      #        var greenFrac = rgb_color.green || 0.0;
+                      #        var blueFrac = rgb_color.blue || 0.0;
+                      #        var red = Math.floor(redFrac * 255);
+                      #        var green = Math.floor(greenFrac * 255);
+                      #        var blue = Math.floor(blueFrac * 255);
+                      #
+                      #        if (!('alpha' in rgb_color)) {
+                      #           return rgbToCssColor_(red, green, blue);
+                      #        }
+                      #
+                      #        var alphaFrac = rgb_color.alpha.value || 0.0;
+                      #        var rgbParams = [red, green, blue].join(',');
+                      #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
+                      #     };
+                      #
+                      #     var rgbToCssColor_ = function(red, green, blue) {
+                      #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
+                      #       var hexString = rgbNumber.toString(16);
+                      #       var missingZeros = 6 - hexString.length;
+                      #       var resultBuilder = ['#'];
+                      #       for (var i = 0; i < missingZeros; i++) {
+                      #          resultBuilder.push('0');
+                      #       }
+                      #       resultBuilder.push(hexString);
+                      #       return resultBuilder.join('');
+                      #     };
+                      #
+                      #     // ...
+                    "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+                    "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
+                        # the final pixel color is defined by the equation:
+                        #
+                        #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
+                        #
+                        # This means that a value of 1.0 corresponds to a solid color, whereas
+                        # a value of 0.0 corresponds to a completely transparent color. This
+                        # uses a wrapper message rather than a simple float scalar so that it is
+                        # possible to distinguish between a default value and the value being unset.
+                        # If omitted, this color object is to be rendered as a solid color
+                        # (as if the alpha value had been explicitly given with a value of 1.0).
+                    "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
+                    "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
+                  },
+                  "width": 42, # The width of the border, in pixels.
+                      # Deprecated; the width is determined by the "style" field.
+                  "style": "A String", # The style of the border.
+                },
+                "left": { # A border along a cell. # The left border of the cell.
+                  "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
+                      # for simplicity of conversion to/from color representations in various
+                      # languages over compactness; for example, the fields of this representation
+                      # can be trivially provided to the constructor of "java.awt.Color" in Java; it
+                      # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
+                      # method in iOS; and, with just a little work, it can be easily formatted into
+                      # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
+                      #
+                      # Example (Java):
+                      #
+                      #      import com.google.type.Color;
+                      #
+                      #      // ...
+                      #      public static java.awt.Color fromProto(Color protocolor) {
+                      #        float alpha = protocolor.hasAlpha()
+                      #            ? protocolor.getAlpha().getValue()
+                      #            : 1.0;
+                      #
+                      #        return new java.awt.Color(
+                      #            protocolor.getRed(),
+                      #            protocolor.getGreen(),
+                      #            protocolor.getBlue(),
+                      #            alpha);
+                      #      }
+                      #
+                      #      public static Color toProto(java.awt.Color color) {
+                      #        float red = (float) color.getRed();
+                      #        float green = (float) color.getGreen();
+                      #        float blue = (float) color.getBlue();
+                      #        float denominator = 255.0;
+                      #        Color.Builder resultBuilder =
+                      #            Color
+                      #                .newBuilder()
+                      #                .setRed(red / denominator)
+                      #                .setGreen(green / denominator)
+                      #                .setBlue(blue / denominator);
+                      #        int alpha = color.getAlpha();
+                      #        if (alpha != 255) {
+                      #          result.setAlpha(
+                      #              FloatValue
+                      #                  .newBuilder()
+                      #                  .setValue(((float) alpha) / denominator)
+                      #                  .build());
+                      #        }
+                      #        return resultBuilder.build();
+                      #      }
+                      #      // ...
+                      #
+                      # Example (iOS / Obj-C):
+                      #
+                      #      // ...
+                      #      static UIColor* fromProto(Color* protocolor) {
+                      #         float red = [protocolor red];
+                      #         float green = [protocolor green];
+                      #         float blue = [protocolor blue];
+                      #         FloatValue* alpha_wrapper = [protocolor alpha];
+                      #         float alpha = 1.0;
+                      #         if (alpha_wrapper != nil) {
+                      #           alpha = [alpha_wrapper value];
+                      #         }
+                      #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
+                      #      }
+                      #
+                      #      static Color* toProto(UIColor* color) {
+                      #          CGFloat red, green, blue, alpha;
+                      #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
+                      #            return nil;
+                      #          }
+                      #          Color* result = [Color alloc] init];
+                      #          [result setRed:red];
+                      #          [result setGreen:green];
+                      #          [result setBlue:blue];
+                      #          if (alpha <= 0.9999) {
+                      #            [result setAlpha:floatWrapperWithValue(alpha)];
+                      #          }
+                      #          [result autorelease];
+                      #          return result;
+                      #     }
+                      #     // ...
+                      #
+                      #  Example (JavaScript):
+                      #
+                      #     // ...
+                      #
+                      #     var protoToCssColor = function(rgb_color) {
+                      #        var redFrac = rgb_color.red || 0.0;
+                      #        var greenFrac = rgb_color.green || 0.0;
+                      #        var blueFrac = rgb_color.blue || 0.0;
+                      #        var red = Math.floor(redFrac * 255);
+                      #        var green = Math.floor(greenFrac * 255);
+                      #        var blue = Math.floor(blueFrac * 255);
+                      #
+                      #        if (!('alpha' in rgb_color)) {
+                      #           return rgbToCssColor_(red, green, blue);
+                      #        }
+                      #
+                      #        var alphaFrac = rgb_color.alpha.value || 0.0;
+                      #        var rgbParams = [red, green, blue].join(',');
+                      #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
+                      #     };
+                      #
+                      #     var rgbToCssColor_ = function(red, green, blue) {
+                      #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
+                      #       var hexString = rgbNumber.toString(16);
+                      #       var missingZeros = 6 - hexString.length;
+                      #       var resultBuilder = ['#'];
+                      #       for (var i = 0; i < missingZeros; i++) {
+                      #          resultBuilder.push('0');
+                      #       }
+                      #       resultBuilder.push(hexString);
+                      #       return resultBuilder.join('');
+                      #     };
+                      #
+                      #     // ...
+                    "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+                    "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
+                        # the final pixel color is defined by the equation:
+                        #
+                        #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
+                        #
+                        # This means that a value of 1.0 corresponds to a solid color, whereas
+                        # a value of 0.0 corresponds to a completely transparent color. This
+                        # uses a wrapper message rather than a simple float scalar so that it is
+                        # possible to distinguish between a default value and the value being unset.
+                        # If omitted, this color object is to be rendered as a solid color
+                        # (as if the alpha value had been explicitly given with a value of 1.0).
+                    "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
+                    "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
+                  },
+                  "width": 42, # The width of the border, in pixels.
+                      # Deprecated; the width is determined by the "style" field.
+                  "style": "A String", # The style of the border.
+                },
+              },
+              "wrapStrategy": "A String", # The wrap strategy for the value in the cell.
+            },
+          },
+          "gradientRule": { # A rule that applies a gradient color scale format, based on # The formatting will vary based on the gradients in the rule.
+              # the interpolation points listed. The format of a cell will vary
+              # based on its contents as compared to the values of the interpolation
+              # points.
+            "maxpoint": { # A single interpolation point on a gradient conditional format. # The final interpolation point.
+                # These pin the gradient color scale according to the color,
+                # type and value chosen.
+              "color": { # Represents a color in the RGBA color space. This representation is designed # The color this interpolation point should use.
+                  # for simplicity of conversion to/from color representations in various
+                  # languages over compactness; for example, the fields of this representation
+                  # can be trivially provided to the constructor of "java.awt.Color" in Java; it
+                  # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
+                  # method in iOS; and, with just a little work, it can be easily formatted into
+                  # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
+                  #
+                  # Example (Java):
+                  #
+                  #      import com.google.type.Color;
+                  #
+                  #      // ...
+                  #      public static java.awt.Color fromProto(Color protocolor) {
+                  #        float alpha = protocolor.hasAlpha()
+                  #            ? protocolor.getAlpha().getValue()
+                  #            : 1.0;
+                  #
+                  #        return new java.awt.Color(
+                  #            protocolor.getRed(),
+                  #            protocolor.getGreen(),
+                  #            protocolor.getBlue(),
+                  #            alpha);
+                  #      }
+                  #
+                  #      public static Color toProto(java.awt.Color color) {
+                  #        float red = (float) color.getRed();
+                  #        float green = (float) color.getGreen();
+                  #        float blue = (float) color.getBlue();
+                  #        float denominator = 255.0;
+                  #        Color.Builder resultBuilder =
+                  #            Color
+                  #                .newBuilder()
+                  #                .setRed(red / denominator)
+                  #                .setGreen(green / denominator)
+                  #                .setBlue(blue / denominator);
+                  #        int alpha = color.getAlpha();
+                  #        if (alpha != 255) {
+                  #          result.setAlpha(
+                  #              FloatValue
+                  #                  .newBuilder()
+                  #                  .setValue(((float) alpha) / denominator)
+                  #                  .build());
+                  #        }
+                  #        return resultBuilder.build();
+                  #      }
+                  #      // ...
+                  #
+                  # Example (iOS / Obj-C):
+                  #
+                  #      // ...
+                  #      static UIColor* fromProto(Color* protocolor) {
+                  #         float red = [protocolor red];
+                  #         float green = [protocolor green];
+                  #         float blue = [protocolor blue];
+                  #         FloatValue* alpha_wrapper = [protocolor alpha];
+                  #         float alpha = 1.0;
+                  #         if (alpha_wrapper != nil) {
+                  #           alpha = [alpha_wrapper value];
+                  #         }
+                  #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
+                  #      }
+                  #
+                  #      static Color* toProto(UIColor* color) {
+                  #          CGFloat red, green, blue, alpha;
+                  #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
+                  #            return nil;
+                  #          }
+                  #          Color* result = [Color alloc] init];
+                  #          [result setRed:red];
+                  #          [result setGreen:green];
+                  #          [result setBlue:blue];
+                  #          if (alpha <= 0.9999) {
+                  #            [result setAlpha:floatWrapperWithValue(alpha)];
+                  #          }
+                  #          [result autorelease];
+                  #          return result;
+                  #     }
+                  #     // ...
+                  #
+                  #  Example (JavaScript):
+                  #
+                  #     // ...
+                  #
+                  #     var protoToCssColor = function(rgb_color) {
+                  #        var redFrac = rgb_color.red || 0.0;
+                  #        var greenFrac = rgb_color.green || 0.0;
+                  #        var blueFrac = rgb_color.blue || 0.0;
+                  #        var red = Math.floor(redFrac * 255);
+                  #        var green = Math.floor(greenFrac * 255);
+                  #        var blue = Math.floor(blueFrac * 255);
+                  #
+                  #        if (!('alpha' in rgb_color)) {
+                  #           return rgbToCssColor_(red, green, blue);
+                  #        }
+                  #
+                  #        var alphaFrac = rgb_color.alpha.value || 0.0;
+                  #        var rgbParams = [red, green, blue].join(',');
+                  #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
+                  #     };
+                  #
+                  #     var rgbToCssColor_ = function(red, green, blue) {
+                  #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
+                  #       var hexString = rgbNumber.toString(16);
+                  #       var missingZeros = 6 - hexString.length;
+                  #       var resultBuilder = ['#'];
+                  #       for (var i = 0; i < missingZeros; i++) {
+                  #          resultBuilder.push('0');
+                  #       }
+                  #       resultBuilder.push(hexString);
+                  #       return resultBuilder.join('');
+                  #     };
+                  #
+                  #     // ...
+                "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+                "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
+                    # the final pixel color is defined by the equation:
+                    #
+                    #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
+                    #
+                    # This means that a value of 1.0 corresponds to a solid color, whereas
+                    # a value of 0.0 corresponds to a completely transparent color. This
+                    # uses a wrapper message rather than a simple float scalar so that it is
+                    # possible to distinguish between a default value and the value being unset.
+                    # If omitted, this color object is to be rendered as a solid color
+                    # (as if the alpha value had been explicitly given with a value of 1.0).
+                "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
+                "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
+              },
+              "type": "A String", # How the value should be interpreted.
+              "value": "A String", # The value this interpolation point uses.  May be a formula.
+                  # Unused if type is MIN or
+                  # MAX.
+            },
+            "midpoint": { # A single interpolation point on a gradient conditional format. # An optional midway interpolation point.
+                # These pin the gradient color scale according to the color,
+                # type and value chosen.
+              "color": { # Represents a color in the RGBA color space. This representation is designed # The color this interpolation point should use.
+                  # for simplicity of conversion to/from color representations in various
+                  # languages over compactness; for example, the fields of this representation
+                  # can be trivially provided to the constructor of "java.awt.Color" in Java; it
+                  # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
+                  # method in iOS; and, with just a little work, it can be easily formatted into
+                  # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
+                  #
+                  # Example (Java):
+                  #
+                  #      import com.google.type.Color;
+                  #
+                  #      // ...
+                  #      public static java.awt.Color fromProto(Color protocolor) {
+                  #        float alpha = protocolor.hasAlpha()
+                  #            ? protocolor.getAlpha().getValue()
+                  #            : 1.0;
+                  #
+                  #        return new java.awt.Color(
+                  #            protocolor.getRed(),
+                  #            protocolor.getGreen(),
+                  #            protocolor.getBlue(),
+                  #            alpha);
+                  #      }
+                  #
+                  #      public static Color toProto(java.awt.Color color) {
+                  #        float red = (float) color.getRed();
+                  #        float green = (float) color.getGreen();
+                  #        float blue = (float) color.getBlue();
+                  #        float denominator = 255.0;
+                  #        Color.Builder resultBuilder =
+                  #            Color
+                  #                .newBuilder()
+                  #                .setRed(red / denominator)
+                  #                .setGreen(green / denominator)
+                  #                .setBlue(blue / denominator);
+                  #        int alpha = color.getAlpha();
+                  #        if (alpha != 255) {
+                  #          result.setAlpha(
+                  #              FloatValue
+                  #                  .newBuilder()
+                  #                  .setValue(((float) alpha) / denominator)
+                  #                  .build());
+                  #        }
+                  #        return resultBuilder.build();
+                  #      }
+                  #      // ...
+                  #
+                  # Example (iOS / Obj-C):
+                  #
+                  #      // ...
+                  #      static UIColor* fromProto(Color* protocolor) {
+                  #         float red = [protocolor red];
+                  #         float green = [protocolor green];
+                  #         float blue = [protocolor blue];
+                  #         FloatValue* alpha_wrapper = [protocolor alpha];
+                  #         float alpha = 1.0;
+                  #         if (alpha_wrapper != nil) {
+                  #           alpha = [alpha_wrapper value];
+                  #         }
+                  #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
+                  #      }
+                  #
+                  #      static Color* toProto(UIColor* color) {
+                  #          CGFloat red, green, blue, alpha;
+                  #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
+                  #            return nil;
+                  #          }
+                  #          Color* result = [Color alloc] init];
+                  #          [result setRed:red];
+                  #          [result setGreen:green];
+                  #          [result setBlue:blue];
+                  #          if (alpha <= 0.9999) {
+                  #            [result setAlpha:floatWrapperWithValue(alpha)];
+                  #          }
+                  #          [result autorelease];
+                  #          return result;
+                  #     }
+                  #     // ...
+                  #
+                  #  Example (JavaScript):
+                  #
+                  #     // ...
+                  #
+                  #     var protoToCssColor = function(rgb_color) {
+                  #        var redFrac = rgb_color.red || 0.0;
+                  #        var greenFrac = rgb_color.green || 0.0;
+                  #        var blueFrac = rgb_color.blue || 0.0;
+                  #        var red = Math.floor(redFrac * 255);
+                  #        var green = Math.floor(greenFrac * 255);
+                  #        var blue = Math.floor(blueFrac * 255);
+                  #
+                  #        if (!('alpha' in rgb_color)) {
+                  #           return rgbToCssColor_(red, green, blue);
+                  #        }
+                  #
+                  #        var alphaFrac = rgb_color.alpha.value || 0.0;
+                  #        var rgbParams = [red, green, blue].join(',');
+                  #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
+                  #     };
+                  #
+                  #     var rgbToCssColor_ = function(red, green, blue) {
+                  #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
+                  #       var hexString = rgbNumber.toString(16);
+                  #       var missingZeros = 6 - hexString.length;
+                  #       var resultBuilder = ['#'];
+                  #       for (var i = 0; i < missingZeros; i++) {
+                  #          resultBuilder.push('0');
+                  #       }
+                  #       resultBuilder.push(hexString);
+                  #       return resultBuilder.join('');
+                  #     };
+                  #
+                  #     // ...
+                "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+                "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
+                    # the final pixel color is defined by the equation:
+                    #
+                    #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
+                    #
+                    # This means that a value of 1.0 corresponds to a solid color, whereas
+                    # a value of 0.0 corresponds to a completely transparent color. This
+                    # uses a wrapper message rather than a simple float scalar so that it is
+                    # possible to distinguish between a default value and the value being unset.
+                    # If omitted, this color object is to be rendered as a solid color
+                    # (as if the alpha value had been explicitly given with a value of 1.0).
+                "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
+                "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
+              },
+              "type": "A String", # How the value should be interpreted.
+              "value": "A String", # The value this interpolation point uses.  May be a formula.
+                  # Unused if type is MIN or
+                  # MAX.
+            },
+            "minpoint": { # A single interpolation point on a gradient conditional format. # The starting interpolation point.
+                # These pin the gradient color scale according to the color,
+                # type and value chosen.
+              "color": { # Represents a color in the RGBA color space. This representation is designed # The color this interpolation point should use.
+                  # for simplicity of conversion to/from color representations in various
+                  # languages over compactness; for example, the fields of this representation
+                  # can be trivially provided to the constructor of "java.awt.Color" in Java; it
+                  # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
+                  # method in iOS; and, with just a little work, it can be easily formatted into
+                  # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
+                  #
+                  # Example (Java):
+                  #
+                  #      import com.google.type.Color;
+                  #
+                  #      // ...
+                  #      public static java.awt.Color fromProto(Color protocolor) {
+                  #        float alpha = protocolor.hasAlpha()
+                  #            ? protocolor.getAlpha().getValue()
+                  #            : 1.0;
+                  #
+                  #        return new java.awt.Color(
+                  #            protocolor.getRed(),
+                  #            protocolor.getGreen(),
+                  #            protocolor.getBlue(),
+                  #            alpha);
+                  #      }
+                  #
+                  #      public static Color toProto(java.awt.Color color) {
+                  #        float red = (float) color.getRed();
+                  #        float green = (float) color.getGreen();
+                  #        float blue = (float) color.getBlue();
+                  #        float denominator = 255.0;
+                  #        Color.Builder resultBuilder =
+                  #            Color
+                  #                .newBuilder()
+                  #                .setRed(red / denominator)
+                  #                .setGreen(green / denominator)
+                  #                .setBlue(blue / denominator);
+                  #        int alpha = color.getAlpha();
+                  #        if (alpha != 255) {
+                  #          result.setAlpha(
+                  #              FloatValue
+                  #                  .newBuilder()
+                  #                  .setValue(((float) alpha) / denominator)
+                  #                  .build());
+                  #        }
+                  #        return resultBuilder.build();
+                  #      }
+                  #      // ...
+                  #
+                  # Example (iOS / Obj-C):
+                  #
+                  #      // ...
+                  #      static UIColor* fromProto(Color* protocolor) {
+                  #         float red = [protocolor red];
+                  #         float green = [protocolor green];
+                  #         float blue = [protocolor blue];
+                  #         FloatValue* alpha_wrapper = [protocolor alpha];
+                  #         float alpha = 1.0;
+                  #         if (alpha_wrapper != nil) {
+                  #           alpha = [alpha_wrapper value];
+                  #         }
+                  #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
+                  #      }
+                  #
+                  #      static Color* toProto(UIColor* color) {
+                  #          CGFloat red, green, blue, alpha;
+                  #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
+                  #            return nil;
+                  #          }
+                  #          Color* result = [Color alloc] init];
+                  #          [result setRed:red];
+                  #          [result setGreen:green];
+                  #          [result setBlue:blue];
+                  #          if (alpha <= 0.9999) {
+                  #            [result setAlpha:floatWrapperWithValue(alpha)];
+                  #          }
+                  #          [result autorelease];
+                  #          return result;
+                  #     }
+                  #     // ...
+                  #
+                  #  Example (JavaScript):
+                  #
+                  #     // ...
+                  #
+                  #     var protoToCssColor = function(rgb_color) {
+                  #        var redFrac = rgb_color.red || 0.0;
+                  #        var greenFrac = rgb_color.green || 0.0;
+                  #        var blueFrac = rgb_color.blue || 0.0;
+                  #        var red = Math.floor(redFrac * 255);
+                  #        var green = Math.floor(greenFrac * 255);
+                  #        var blue = Math.floor(blueFrac * 255);
+                  #
+                  #        if (!('alpha' in rgb_color)) {
+                  #           return rgbToCssColor_(red, green, blue);
+                  #        }
+                  #
+                  #        var alphaFrac = rgb_color.alpha.value || 0.0;
+                  #        var rgbParams = [red, green, blue].join(',');
+                  #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
+                  #     };
+                  #
+                  #     var rgbToCssColor_ = function(red, green, blue) {
+                  #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
+                  #       var hexString = rgbNumber.toString(16);
+                  #       var missingZeros = 6 - hexString.length;
+                  #       var resultBuilder = ['#'];
+                  #       for (var i = 0; i < missingZeros; i++) {
+                  #          resultBuilder.push('0');
+                  #       }
+                  #       resultBuilder.push(hexString);
+                  #       return resultBuilder.join('');
+                  #     };
+                  #
+                  #     // ...
+                "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+                "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
+                    # the final pixel color is defined by the equation:
+                    #
+                    #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
+                    #
+                    # This means that a value of 1.0 corresponds to a solid color, whereas
+                    # a value of 0.0 corresponds to a completely transparent color. This
+                    # uses a wrapper message rather than a simple float scalar so that it is
+                    # possible to distinguish between a default value and the value being unset.
+                    # If omitted, this color object is to be rendered as a solid color
+                    # (as if the alpha value had been explicitly given with a value of 1.0).
+                "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
+                "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
+              },
+              "type": "A String", # How the value should be interpreted.
+              "value": "A String", # The value this interpolation point uses.  May be a formula.
+                  # Unused if type is MIN or
+                  # MAX.
+            },
+          },
+        },
+      ],
+      "bandedRanges": [ # The banded (i.e. alternating colors) ranges on this sheet.
+        { # A banded (alternating colors) range in a sheet.
+          "range": { # A range on a sheet. # The range over which these properties are applied.
+              # All indexes are zero-based.
+              # Indexes are half open, e.g the start index is inclusive
+              # and the end index is exclusive -- [start_index, end_index).
+              # Missing indexes indicate the range is unbounded on that side.
+              #
+              # For example, if `"Sheet1"` is sheet ID 0, then:
+              #
+              #   `Sheet1!A1:A1 == sheet_id: 0,
+              #                   start_row_index: 0, end_row_index: 1,
+              #                   start_column_index: 0, end_column_index: 1`
+              #
+              #   `Sheet1!A3:B4 == sheet_id: 0,
+              #                   start_row_index: 2, end_row_index: 4,
+              #                   start_column_index: 0, end_column_index: 2`
+              #
+              #   `Sheet1!A:B == sheet_id: 0,
+              #                 start_column_index: 0, end_column_index: 2`
+              #
+              #   `Sheet1!A5:B == sheet_id: 0,
+              #                  start_row_index: 4,
+              #                  start_column_index: 0, end_column_index: 2`
+              #
+              #   `Sheet1 == sheet_id:0`
+              #
+              # The start index must always be less than or equal to the end index.
+              # If the start index equals the end index, then the range is empty.
+              # Empty ranges are typically not meaningful and are usually rendered in the
+              # UI as `#REF!`.
+            "endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
+            "startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
+            "sheetId": 42, # The sheet this range is on.
+            "startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
+            "endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
+          },
+          "columnProperties": { # Properties referring a single dimension (either row or column). If both # Properties for column bands. These properties will be applied on a column-
+              # by-column basis throughout all the columns in the range. At least one of
+              # row_properties or column_properties must be specified.
+              # BandedRange.row_properties and BandedRange.column_properties are
+              # set, the fill colors are applied to cells according to the following rules:
+              #
+              # * header_color and footer_color take priority over band colors.
+              # * first_band_color takes priority over second_band_color.
+              # * row_properties takes priority over column_properties.
+              #
+              # For example, the first row color takes priority over the first column
+              # color, but the first column color takes priority over the second row color.
+              # Similarly, the row header takes priority over the column header in the
+              # top left cell, but the column header takes priority over the first row
+              # color if the row header is not set.
+            "secondBandColor": { # Represents a color in the RGBA color space. This representation is designed # The second color that is alternating. (Required)
+                # for simplicity of conversion to/from color representations in various
+                # languages over compactness; for example, the fields of this representation
+                # can be trivially provided to the constructor of "java.awt.Color" in Java; it
+                # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
+                # method in iOS; and, with just a little work, it can be easily formatted into
+                # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
+                #
+                # Example (Java):
+                #
+                #      import com.google.type.Color;
+                #
+                #      // ...
+                #      public static java.awt.Color fromProto(Color protocolor) {
+                #        float alpha = protocolor.hasAlpha()
+                #            ? protocolor.getAlpha().getValue()
+                #            : 1.0;
+                #
+                #        return new java.awt.Color(
+                #            protocolor.getRed(),
+                #            protocolor.getGreen(),
+                #            protocolor.getBlue(),
+                #            alpha);
+                #      }
+                #
+                #      public static Color toProto(java.awt.Color color) {
+                #        float red = (float) color.getRed();
+                #        float green = (float) color.getGreen();
+                #        float blue = (float) color.getBlue();
+                #        float denominator = 255.0;
+                #        Color.Builder resultBuilder =
+                #            Color
+                #                .newBuilder()
+                #                .setRed(red / denominator)
+                #                .setGreen(green / denominator)
+                #                .setBlue(blue / denominator);
+                #        int alpha = color.getAlpha();
+                #        if (alpha != 255) {
+                #          result.setAlpha(
+                #              FloatValue
+                #                  .newBuilder()
+                #                  .setValue(((float) alpha) / denominator)
+                #                  .build());
+                #        }
+                #        return resultBuilder.build();
+                #      }
+                #      // ...
+                #
+                # Example (iOS / Obj-C):
+                #
+                #      // ...
+                #      static UIColor* fromProto(Color* protocolor) {
+                #         float red = [protocolor red];
+                #         float green = [protocolor green];
+                #         float blue = [protocolor blue];
+                #         FloatValue* alpha_wrapper = [protocolor alpha];
+                #         float alpha = 1.0;
+                #         if (alpha_wrapper != nil) {
+                #           alpha = [alpha_wrapper value];
+                #         }
+                #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
+                #      }
+                #
+                #      static Color* toProto(UIColor* color) {
+                #          CGFloat red, green, blue, alpha;
+                #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
+                #            return nil;
+                #          }
+                #          Color* result = [Color alloc] init];
+                #          [result setRed:red];
+                #          [result setGreen:green];
+                #          [result setBlue:blue];
+                #          if (alpha <= 0.9999) {
+                #            [result setAlpha:floatWrapperWithValue(alpha)];
+                #          }
+                #          [result autorelease];
+                #          return result;
+                #     }
+                #     // ...
+                #
+                #  Example (JavaScript):
+                #
+                #     // ...
+                #
+                #     var protoToCssColor = function(rgb_color) {
+                #        var redFrac = rgb_color.red || 0.0;
+                #        var greenFrac = rgb_color.green || 0.0;
+                #        var blueFrac = rgb_color.blue || 0.0;
+                #        var red = Math.floor(redFrac * 255);
+                #        var green = Math.floor(greenFrac * 255);
+                #        var blue = Math.floor(blueFrac * 255);
+                #
+                #        if (!('alpha' in rgb_color)) {
+                #           return rgbToCssColor_(red, green, blue);
+                #        }
+                #
+                #        var alphaFrac = rgb_color.alpha.value || 0.0;
+                #        var rgbParams = [red, green, blue].join(',');
+                #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
+                #     };
+                #
+                #     var rgbToCssColor_ = function(red, green, blue) {
+                #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
+                #       var hexString = rgbNumber.toString(16);
+                #       var missingZeros = 6 - hexString.length;
+                #       var resultBuilder = ['#'];
+                #       for (var i = 0; i < missingZeros; i++) {
+                #          resultBuilder.push('0');
+                #       }
+                #       resultBuilder.push(hexString);
+                #       return resultBuilder.join('');
+                #     };
+                #
+                #     // ...
+              "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+              "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
+                  # the final pixel color is defined by the equation:
+                  #
+                  #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
+                  #
+                  # This means that a value of 1.0 corresponds to a solid color, whereas
+                  # a value of 0.0 corresponds to a completely transparent color. This
+                  # uses a wrapper message rather than a simple float scalar so that it is
+                  # possible to distinguish between a default value and the value being unset.
+                  # If omitted, this color object is to be rendered as a solid color
+                  # (as if the alpha value had been explicitly given with a value of 1.0).
+              "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
+              "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
+            },
+            "headerColor": { # Represents a color in the RGBA color space. This representation is designed # The color of the first row or column. If this field is set, the first
+                # row or column will be filled with this color and the colors will
+                # alternate between first_band_color and second_band_color starting
+                # from the second row or column. Otherwise, the first row or column will be
+                # filled with first_band_color and the colors will proceed to alternate
+                # as they normally would.
+                # for simplicity of conversion to/from color representations in various
+                # languages over compactness; for example, the fields of this representation
+                # can be trivially provided to the constructor of "java.awt.Color" in Java; it
+                # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
+                # method in iOS; and, with just a little work, it can be easily formatted into
+                # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
+                #
+                # Example (Java):
+                #
+                #      import com.google.type.Color;
+                #
+                #      // ...
+                #      public static java.awt.Color fromProto(Color protocolor) {
+                #        float alpha = protocolor.hasAlpha()
+                #            ? protocolor.getAlpha().getValue()
+                #            : 1.0;
+                #
+                #        return new java.awt.Color(
+                #            protocolor.getRed(),
+                #            protocolor.getGreen(),
+                #            protocolor.getBlue(),
+                #            alpha);
+                #      }
+                #
+                #      public static Color toProto(java.awt.Color color) {
+                #        float red = (float) color.getRed();
+                #        float green = (float) color.getGreen();
+                #        float blue = (float) color.getBlue();
+                #        float denominator = 255.0;
+                #        Color.Builder resultBuilder =
+                #            Color
+                #                .newBuilder()
+                #                .setRed(red / denominator)
+                #                .setGreen(green / denominator)
+                #                .setBlue(blue / denominator);
+                #        int alpha = color.getAlpha();
+                #        if (alpha != 255) {
+                #          result.setAlpha(
+                #              FloatValue
+                #                  .newBuilder()
+                #                  .setValue(((float) alpha) / denominator)
+                #                  .build());
+                #        }
+                #        return resultBuilder.build();
+                #      }
+                #      // ...
+                #
+                # Example (iOS / Obj-C):
+                #
+                #      // ...
+                #      static UIColor* fromProto(Color* protocolor) {
+                #         float red = [protocolor red];
+                #         float green = [protocolor green];
+                #         float blue = [protocolor blue];
+                #         FloatValue* alpha_wrapper = [protocolor alpha];
+                #         float alpha = 1.0;
+                #         if (alpha_wrapper != nil) {
+                #           alpha = [alpha_wrapper value];
+                #         }
+                #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
+                #      }
+                #
+                #      static Color* toProto(UIColor* color) {
+                #          CGFloat red, green, blue, alpha;
+                #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
+                #            return nil;
+                #          }
+                #          Color* result = [Color alloc] init];
+                #          [result setRed:red];
+                #          [result setGreen:green];
+                #          [result setBlue:blue];
+                #          if (alpha <= 0.9999) {
+                #            [result setAlpha:floatWrapperWithValue(alpha)];
+                #          }
+                #          [result autorelease];
+                #          return result;
+                #     }
+                #     // ...
+                #
+                #  Example (JavaScript):
+                #
+                #     // ...
+                #
+                #     var protoToCssColor = function(rgb_color) {
+                #        var redFrac = rgb_color.red || 0.0;
+                #        var greenFrac = rgb_color.green || 0.0;
+                #        var blueFrac = rgb_color.blue || 0.0;
+                #        var red = Math.floor(redFrac * 255);
+                #        var green = Math.floor(greenFrac * 255);
+                #        var blue = Math.floor(blueFrac * 255);
+                #
+                #        if (!('alpha' in rgb_color)) {
+                #           return rgbToCssColor_(red, green, blue);
+                #        }
+                #
+                #        var alphaFrac = rgb_color.alpha.value || 0.0;
+                #        var rgbParams = [red, green, blue].join(',');
+                #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
+                #     };
+                #
+                #     var rgbToCssColor_ = function(red, green, blue) {
+                #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
+                #       var hexString = rgbNumber.toString(16);
+                #       var missingZeros = 6 - hexString.length;
+                #       var resultBuilder = ['#'];
+                #       for (var i = 0; i < missingZeros; i++) {
+                #          resultBuilder.push('0');
+                #       }
+                #       resultBuilder.push(hexString);
+                #       return resultBuilder.join('');
+                #     };
+                #
+                #     // ...
+              "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+              "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
+                  # the final pixel color is defined by the equation:
+                  #
+                  #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
+                  #
+                  # This means that a value of 1.0 corresponds to a solid color, whereas
+                  # a value of 0.0 corresponds to a completely transparent color. This
+                  # uses a wrapper message rather than a simple float scalar so that it is
+                  # possible to distinguish between a default value and the value being unset.
+                  # If omitted, this color object is to be rendered as a solid color
+                  # (as if the alpha value had been explicitly given with a value of 1.0).
+              "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
+              "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
+            },
+            "footerColor": { # Represents a color in the RGBA color space. This representation is designed # The color of the last row or column. If this field is not set, the last
+                # row or column will be filled with either first_band_color or
+                # second_band_color, depending on the color of the previous row or
+                # column.
+                # for simplicity of conversion to/from color representations in various
+                # languages over compactness; for example, the fields of this representation
+                # can be trivially provided to the constructor of "java.awt.Color" in Java; it
+                # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
+                # method in iOS; and, with just a little work, it can be easily formatted into
+                # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
+                #
+                # Example (Java):
+                #
+                #      import com.google.type.Color;
+                #
+                #      // ...
+                #      public static java.awt.Color fromProto(Color protocolor) {
+                #        float alpha = protocolor.hasAlpha()
+                #            ? protocolor.getAlpha().getValue()
+                #            : 1.0;
+                #
+                #        return new java.awt.Color(
+                #            protocolor.getRed(),
+                #            protocolor.getGreen(),
+                #            protocolor.getBlue(),
+                #            alpha);
+                #      }
+                #
+                #      public static Color toProto(java.awt.Color color) {
+                #        float red = (float) color.getRed();
+                #        float green = (float) color.getGreen();
+                #        float blue = (float) color.getBlue();
+                #        float denominator = 255.0;
+                #        Color.Builder resultBuilder =
+                #            Color
+                #                .newBuilder()
+                #                .setRed(red / denominator)
+                #                .setGreen(green / denominator)
+                #                .setBlue(blue / denominator);
+                #        int alpha = color.getAlpha();
+                #        if (alpha != 255) {
+                #          result.setAlpha(
+                #              FloatValue
+                #                  .newBuilder()
+                #                  .setValue(((float) alpha) / denominator)
+                #                  .build());
+                #        }
+                #        return resultBuilder.build();
+                #      }
+                #      // ...
+                #
+                # Example (iOS / Obj-C):
+                #
+                #      // ...
+                #      static UIColor* fromProto(Color* protocolor) {
+                #         float red = [protocolor red];
+                #         float green = [protocolor green];
+                #         float blue = [protocolor blue];
+                #         FloatValue* alpha_wrapper = [protocolor alpha];
+                #         float alpha = 1.0;
+                #         if (alpha_wrapper != nil) {
+                #           alpha = [alpha_wrapper value];
+                #         }
+                #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
+                #      }
+                #
+                #      static Color* toProto(UIColor* color) {
+                #          CGFloat red, green, blue, alpha;
+                #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
+                #            return nil;
+                #          }
+                #          Color* result = [Color alloc] init];
+                #          [result setRed:red];
+                #          [result setGreen:green];
+                #          [result setBlue:blue];
+                #          if (alpha <= 0.9999) {
+                #            [result setAlpha:floatWrapperWithValue(alpha)];
+                #          }
+                #          [result autorelease];
+                #          return result;
+                #     }
+                #     // ...
+                #
+                #  Example (JavaScript):
+                #
+                #     // ...
+                #
+                #     var protoToCssColor = function(rgb_color) {
+                #        var redFrac = rgb_color.red || 0.0;
+                #        var greenFrac = rgb_color.green || 0.0;
+                #        var blueFrac = rgb_color.blue || 0.0;
+                #        var red = Math.floor(redFrac * 255);
+                #        var green = Math.floor(greenFrac * 255);
+                #        var blue = Math.floor(blueFrac * 255);
+                #
+                #        if (!('alpha' in rgb_color)) {
+                #           return rgbToCssColor_(red, green, blue);
+                #        }
+                #
+                #        var alphaFrac = rgb_color.alpha.value || 0.0;
+                #        var rgbParams = [red, green, blue].join(',');
+                #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
+                #     };
+                #
+                #     var rgbToCssColor_ = function(red, green, blue) {
+                #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
+                #       var hexString = rgbNumber.toString(16);
+                #       var missingZeros = 6 - hexString.length;
+                #       var resultBuilder = ['#'];
+                #       for (var i = 0; i < missingZeros; i++) {
+                #          resultBuilder.push('0');
+                #       }
+                #       resultBuilder.push(hexString);
+                #       return resultBuilder.join('');
+                #     };
+                #
+                #     // ...
+              "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+              "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
+                  # the final pixel color is defined by the equation:
+                  #
+                  #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
+                  #
+                  # This means that a value of 1.0 corresponds to a solid color, whereas
+                  # a value of 0.0 corresponds to a completely transparent color. This
+                  # uses a wrapper message rather than a simple float scalar so that it is
+                  # possible to distinguish between a default value and the value being unset.
+                  # If omitted, this color object is to be rendered as a solid color
+                  # (as if the alpha value had been explicitly given with a value of 1.0).
+              "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
+              "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
+            },
+            "firstBandColor": { # Represents a color in the RGBA color space. This representation is designed # The first color that is alternating. (Required)
+                # for simplicity of conversion to/from color representations in various
+                # languages over compactness; for example, the fields of this representation
+                # can be trivially provided to the constructor of "java.awt.Color" in Java; it
+                # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
+                # method in iOS; and, with just a little work, it can be easily formatted into
+                # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
+                #
+                # Example (Java):
+                #
+                #      import com.google.type.Color;
+                #
+                #      // ...
+                #      public static java.awt.Color fromProto(Color protocolor) {
+                #        float alpha = protocolor.hasAlpha()
+                #            ? protocolor.getAlpha().getValue()
+                #            : 1.0;
+                #
+                #        return new java.awt.Color(
+                #            protocolor.getRed(),
+                #            protocolor.getGreen(),
+                #            protocolor.getBlue(),
+                #            alpha);
+                #      }
+                #
+                #      public static Color toProto(java.awt.Color color) {
+                #        float red = (float) color.getRed();
+                #        float green = (float) color.getGreen();
+                #        float blue = (float) color.getBlue();
+                #        float denominator = 255.0;
+                #        Color.Builder resultBuilder =
+                #            Color
+                #                .newBuilder()
+                #                .setRed(red / denominator)
+                #                .setGreen(green / denominator)
+                #                .setBlue(blue / denominator);
+                #        int alpha = color.getAlpha();
+                #        if (alpha != 255) {
+                #          result.setAlpha(
+                #              FloatValue
+                #                  .newBuilder()
+                #                  .setValue(((float) alpha) / denominator)
+                #                  .build());
+                #        }
+                #        return resultBuilder.build();
+                #      }
+                #      // ...
+                #
+                # Example (iOS / Obj-C):
+                #
+                #      // ...
+                #      static UIColor* fromProto(Color* protocolor) {
+                #         float red = [protocolor red];
+                #         float green = [protocolor green];
+                #         float blue = [protocolor blue];
+                #         FloatValue* alpha_wrapper = [protocolor alpha];
+                #         float alpha = 1.0;
+                #         if (alpha_wrapper != nil) {
+                #           alpha = [alpha_wrapper value];
+                #         }
+                #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
+                #      }
+                #
+                #      static Color* toProto(UIColor* color) {
+                #          CGFloat red, green, blue, alpha;
+                #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
+                #            return nil;
+                #          }
+                #          Color* result = [Color alloc] init];
+                #          [result setRed:red];
+                #          [result setGreen:green];
+                #          [result setBlue:blue];
+                #          if (alpha <= 0.9999) {
+                #            [result setAlpha:floatWrapperWithValue(alpha)];
+                #          }
+                #          [result autorelease];
+                #          return result;
+                #     }
+                #     // ...
+                #
+                #  Example (JavaScript):
+                #
+                #     // ...
+                #
+                #     var protoToCssColor = function(rgb_color) {
+                #        var redFrac = rgb_color.red || 0.0;
+                #        var greenFrac = rgb_color.green || 0.0;
+                #        var blueFrac = rgb_color.blue || 0.0;
+                #        var red = Math.floor(redFrac * 255);
+                #        var green = Math.floor(greenFrac * 255);
+                #        var blue = Math.floor(blueFrac * 255);
+                #
+                #        if (!('alpha' in rgb_color)) {
+                #           return rgbToCssColor_(red, green, blue);
+                #        }
+                #
+                #        var alphaFrac = rgb_color.alpha.value || 0.0;
+                #        var rgbParams = [red, green, blue].join(',');
+                #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
+                #     };
+                #
+                #     var rgbToCssColor_ = function(red, green, blue) {
+                #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
+                #       var hexString = rgbNumber.toString(16);
+                #       var missingZeros = 6 - hexString.length;
+                #       var resultBuilder = ['#'];
+                #       for (var i = 0; i < missingZeros; i++) {
+                #          resultBuilder.push('0');
+                #       }
+                #       resultBuilder.push(hexString);
+                #       return resultBuilder.join('');
+                #     };
+                #
+                #     // ...
+              "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+              "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
+                  # the final pixel color is defined by the equation:
+                  #
+                  #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
+                  #
+                  # This means that a value of 1.0 corresponds to a solid color, whereas
+                  # a value of 0.0 corresponds to a completely transparent color. This
+                  # uses a wrapper message rather than a simple float scalar so that it is
+                  # possible to distinguish between a default value and the value being unset.
+                  # If omitted, this color object is to be rendered as a solid color
+                  # (as if the alpha value had been explicitly given with a value of 1.0).
+              "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
+              "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
+            },
+          },
+          "rowProperties": { # Properties referring a single dimension (either row or column). If both # Properties for row bands. These properties will be applied on a row-by-row
+              # basis throughout all the rows in the range. At least one of
+              # row_properties or column_properties must be specified.
+              # BandedRange.row_properties and BandedRange.column_properties are
+              # set, the fill colors are applied to cells according to the following rules:
+              #
+              # * header_color and footer_color take priority over band colors.
+              # * first_band_color takes priority over second_band_color.
+              # * row_properties takes priority over column_properties.
+              #
+              # For example, the first row color takes priority over the first column
+              # color, but the first column color takes priority over the second row color.
+              # Similarly, the row header takes priority over the column header in the
+              # top left cell, but the column header takes priority over the first row
+              # color if the row header is not set.
+            "secondBandColor": { # Represents a color in the RGBA color space. This representation is designed # The second color that is alternating. (Required)
+                # for simplicity of conversion to/from color representations in various
+                # languages over compactness; for example, the fields of this representation
+                # can be trivially provided to the constructor of "java.awt.Color" in Java; it
+                # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
+                # method in iOS; and, with just a little work, it can be easily formatted into
+                # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
+                #
+                # Example (Java):
+                #
+                #      import com.google.type.Color;
+                #
+                #      // ...
+                #      public static java.awt.Color fromProto(Color protocolor) {
+                #        float alpha = protocolor.hasAlpha()
+                #            ? protocolor.getAlpha().getValue()
+                #            : 1.0;
+                #
+                #        return new java.awt.Color(
+                #            protocolor.getRed(),
+                #            protocolor.getGreen(),
+                #            protocolor.getBlue(),
+                #            alpha);
+                #      }
+                #
+                #      public static Color toProto(java.awt.Color color) {
+                #        float red = (float) color.getRed();
+                #        float green = (float) color.getGreen();
+                #        float blue = (float) color.getBlue();
+                #        float denominator = 255.0;
+                #        Color.Builder resultBuilder =
+                #            Color
+                #                .newBuilder()
+                #                .setRed(red / denominator)
+                #                .setGreen(green / denominator)
+                #                .setBlue(blue / denominator);
+                #        int alpha = color.getAlpha();
+                #        if (alpha != 255) {
+                #          result.setAlpha(
+                #              FloatValue
+                #                  .newBuilder()
+                #                  .setValue(((float) alpha) / denominator)
+                #                  .build());
+                #        }
+                #        return resultBuilder.build();
+                #      }
+                #      // ...
+                #
+                # Example (iOS / Obj-C):
+                #
+                #      // ...
+                #      static UIColor* fromProto(Color* protocolor) {
+                #         float red = [protocolor red];
+                #         float green = [protocolor green];
+                #         float blue = [protocolor blue];
+                #         FloatValue* alpha_wrapper = [protocolor alpha];
+                #         float alpha = 1.0;
+                #         if (alpha_wrapper != nil) {
+                #           alpha = [alpha_wrapper value];
+                #         }
+                #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
+                #      }
+                #
+                #      static Color* toProto(UIColor* color) {
+                #          CGFloat red, green, blue, alpha;
+                #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
+                #            return nil;
+                #          }
+                #          Color* result = [Color alloc] init];
+                #          [result setRed:red];
+                #          [result setGreen:green];
+                #          [result setBlue:blue];
+                #          if (alpha <= 0.9999) {
+                #            [result setAlpha:floatWrapperWithValue(alpha)];
+                #          }
+                #          [result autorelease];
+                #          return result;
+                #     }
+                #     // ...
+                #
+                #  Example (JavaScript):
+                #
+                #     // ...
+                #
+                #     var protoToCssColor = function(rgb_color) {
+                #        var redFrac = rgb_color.red || 0.0;
+                #        var greenFrac = rgb_color.green || 0.0;
+                #        var blueFrac = rgb_color.blue || 0.0;
+                #        var red = Math.floor(redFrac * 255);
+                #        var green = Math.floor(greenFrac * 255);
+                #        var blue = Math.floor(blueFrac * 255);
+                #
+                #        if (!('alpha' in rgb_color)) {
+                #           return rgbToCssColor_(red, green, blue);
+                #        }
+                #
+                #        var alphaFrac = rgb_color.alpha.value || 0.0;
+                #        var rgbParams = [red, green, blue].join(',');
+                #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
+                #     };
+                #
+                #     var rgbToCssColor_ = function(red, green, blue) {
+                #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
+                #       var hexString = rgbNumber.toString(16);
+                #       var missingZeros = 6 - hexString.length;
+                #       var resultBuilder = ['#'];
+                #       for (var i = 0; i < missingZeros; i++) {
+                #          resultBuilder.push('0');
+                #       }
+                #       resultBuilder.push(hexString);
+                #       return resultBuilder.join('');
+                #     };
+                #
+                #     // ...
+              "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+              "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
+                  # the final pixel color is defined by the equation:
+                  #
+                  #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
+                  #
+                  # This means that a value of 1.0 corresponds to a solid color, whereas
+                  # a value of 0.0 corresponds to a completely transparent color. This
+                  # uses a wrapper message rather than a simple float scalar so that it is
+                  # possible to distinguish between a default value and the value being unset.
+                  # If omitted, this color object is to be rendered as a solid color
+                  # (as if the alpha value had been explicitly given with a value of 1.0).
+              "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
+              "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
+            },
+            "headerColor": { # Represents a color in the RGBA color space. This representation is designed # The color of the first row or column. If this field is set, the first
+                # row or column will be filled with this color and the colors will
+                # alternate between first_band_color and second_band_color starting
+                # from the second row or column. Otherwise, the first row or column will be
+                # filled with first_band_color and the colors will proceed to alternate
+                # as they normally would.
+                # for simplicity of conversion to/from color representations in various
+                # languages over compactness; for example, the fields of this representation
+                # can be trivially provided to the constructor of "java.awt.Color" in Java; it
+                # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
+                # method in iOS; and, with just a little work, it can be easily formatted into
+                # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
+                #
+                # Example (Java):
+                #
+                #      import com.google.type.Color;
+                #
+                #      // ...
+                #      public static java.awt.Color fromProto(Color protocolor) {
+                #        float alpha = protocolor.hasAlpha()
+                #            ? protocolor.getAlpha().getValue()
+                #            : 1.0;
+                #
+                #        return new java.awt.Color(
+                #            protocolor.getRed(),
+                #            protocolor.getGreen(),
+                #            protocolor.getBlue(),
+                #            alpha);
+                #      }
+                #
+                #      public static Color toProto(java.awt.Color color) {
+                #        float red = (float) color.getRed();
+                #        float green = (float) color.getGreen();
+                #        float blue = (float) color.getBlue();
+                #        float denominator = 255.0;
+                #        Color.Builder resultBuilder =
+                #            Color
+                #                .newBuilder()
+                #                .setRed(red / denominator)
+                #                .setGreen(green / denominator)
+                #                .setBlue(blue / denominator);
+                #        int alpha = color.getAlpha();
+                #        if (alpha != 255) {
+                #          result.setAlpha(
+                #              FloatValue
+                #                  .newBuilder()
+                #                  .setValue(((float) alpha) / denominator)
+                #                  .build());
+                #        }
+                #        return resultBuilder.build();
+                #      }
+                #      // ...
+                #
+                # Example (iOS / Obj-C):
+                #
+                #      // ...
+                #      static UIColor* fromProto(Color* protocolor) {
+                #         float red = [protocolor red];
+                #         float green = [protocolor green];
+                #         float blue = [protocolor blue];
+                #         FloatValue* alpha_wrapper = [protocolor alpha];
+                #         float alpha = 1.0;
+                #         if (alpha_wrapper != nil) {
+                #           alpha = [alpha_wrapper value];
+                #         }
+                #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
+                #      }
+                #
+                #      static Color* toProto(UIColor* color) {
+                #          CGFloat red, green, blue, alpha;
+                #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
+                #            return nil;
+                #          }
+                #          Color* result = [Color alloc] init];
+                #          [result setRed:red];
+                #          [result setGreen:green];
+                #          [result setBlue:blue];
+                #          if (alpha <= 0.9999) {
+                #            [result setAlpha:floatWrapperWithValue(alpha)];
+                #          }
+                #          [result autorelease];
+                #          return result;
+                #     }
+                #     // ...
+                #
+                #  Example (JavaScript):
+                #
+                #     // ...
+                #
+                #     var protoToCssColor = function(rgb_color) {
+                #        var redFrac = rgb_color.red || 0.0;
+                #        var greenFrac = rgb_color.green || 0.0;
+                #        var blueFrac = rgb_color.blue || 0.0;
+                #        var red = Math.floor(redFrac * 255);
+                #        var green = Math.floor(greenFrac * 255);
+                #        var blue = Math.floor(blueFrac * 255);
+                #
+                #        if (!('alpha' in rgb_color)) {
+                #           return rgbToCssColor_(red, green, blue);
+                #        }
+                #
+                #        var alphaFrac = rgb_color.alpha.value || 0.0;
+                #        var rgbParams = [red, green, blue].join(',');
+                #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
+                #     };
+                #
+                #     var rgbToCssColor_ = function(red, green, blue) {
+                #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
+                #       var hexString = rgbNumber.toString(16);
+                #       var missingZeros = 6 - hexString.length;
+                #       var resultBuilder = ['#'];
+                #       for (var i = 0; i < missingZeros; i++) {
+                #          resultBuilder.push('0');
+                #       }
+                #       resultBuilder.push(hexString);
+                #       return resultBuilder.join('');
+                #     };
+                #
+                #     // ...
+              "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+              "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
+                  # the final pixel color is defined by the equation:
+                  #
+                  #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
+                  #
+                  # This means that a value of 1.0 corresponds to a solid color, whereas
+                  # a value of 0.0 corresponds to a completely transparent color. This
+                  # uses a wrapper message rather than a simple float scalar so that it is
+                  # possible to distinguish between a default value and the value being unset.
+                  # If omitted, this color object is to be rendered as a solid color
+                  # (as if the alpha value had been explicitly given with a value of 1.0).
+              "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
+              "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
+            },
+            "footerColor": { # Represents a color in the RGBA color space. This representation is designed # The color of the last row or column. If this field is not set, the last
+                # row or column will be filled with either first_band_color or
+                # second_band_color, depending on the color of the previous row or
+                # column.
+                # for simplicity of conversion to/from color representations in various
+                # languages over compactness; for example, the fields of this representation
+                # can be trivially provided to the constructor of "java.awt.Color" in Java; it
+                # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
+                # method in iOS; and, with just a little work, it can be easily formatted into
+                # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
+                #
+                # Example (Java):
+                #
+                #      import com.google.type.Color;
+                #
+                #      // ...
+                #      public static java.awt.Color fromProto(Color protocolor) {
+                #        float alpha = protocolor.hasAlpha()
+                #            ? protocolor.getAlpha().getValue()
+                #            : 1.0;
+                #
+                #        return new java.awt.Color(
+                #            protocolor.getRed(),
+                #            protocolor.getGreen(),
+                #            protocolor.getBlue(),
+                #            alpha);
+                #      }
+                #
+                #      public static Color toProto(java.awt.Color color) {
+                #        float red = (float) color.getRed();
+                #        float green = (float) color.getGreen();
+                #        float blue = (float) color.getBlue();
+                #        float denominator = 255.0;
+                #        Color.Builder resultBuilder =
+                #            Color
+                #                .newBuilder()
+                #                .setRed(red / denominator)
+                #                .setGreen(green / denominator)
+                #                .setBlue(blue / denominator);
+                #        int alpha = color.getAlpha();
+                #        if (alpha != 255) {
+                #          result.setAlpha(
+                #              FloatValue
+                #                  .newBuilder()
+                #                  .setValue(((float) alpha) / denominator)
+                #                  .build());
+                #        }
+                #        return resultBuilder.build();
+                #      }
+                #      // ...
+                #
+                # Example (iOS / Obj-C):
+                #
+                #      // ...
+                #      static UIColor* fromProto(Color* protocolor) {
+                #         float red = [protocolor red];
+                #         float green = [protocolor green];
+                #         float blue = [protocolor blue];
+                #         FloatValue* alpha_wrapper = [protocolor alpha];
+                #         float alpha = 1.0;
+                #         if (alpha_wrapper != nil) {
+                #           alpha = [alpha_wrapper value];
+                #         }
+                #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
+                #      }
+                #
+                #      static Color* toProto(UIColor* color) {
+                #          CGFloat red, green, blue, alpha;
+                #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
+                #            return nil;
+                #          }
+                #          Color* result = [Color alloc] init];
+                #          [result setRed:red];
+                #          [result setGreen:green];
+                #          [result setBlue:blue];
+                #          if (alpha <= 0.9999) {
+                #            [result setAlpha:floatWrapperWithValue(alpha)];
+                #          }
+                #          [result autorelease];
+                #          return result;
+                #     }
+                #     // ...
+                #
+                #  Example (JavaScript):
+                #
+                #     // ...
+                #
+                #     var protoToCssColor = function(rgb_color) {
+                #        var redFrac = rgb_color.red || 0.0;
+                #        var greenFrac = rgb_color.green || 0.0;
+                #        var blueFrac = rgb_color.blue || 0.0;
+                #        var red = Math.floor(redFrac * 255);
+                #        var green = Math.floor(greenFrac * 255);
+                #        var blue = Math.floor(blueFrac * 255);
+                #
+                #        if (!('alpha' in rgb_color)) {
+                #           return rgbToCssColor_(red, green, blue);
+                #        }
+                #
+                #        var alphaFrac = rgb_color.alpha.value || 0.0;
+                #        var rgbParams = [red, green, blue].join(',');
+                #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
+                #     };
+                #
+                #     var rgbToCssColor_ = function(red, green, blue) {
+                #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
+                #       var hexString = rgbNumber.toString(16);
+                #       var missingZeros = 6 - hexString.length;
+                #       var resultBuilder = ['#'];
+                #       for (var i = 0; i < missingZeros; i++) {
+                #          resultBuilder.push('0');
+                #       }
+                #       resultBuilder.push(hexString);
+                #       return resultBuilder.join('');
+                #     };
+                #
+                #     // ...
+              "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+              "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
+                  # the final pixel color is defined by the equation:
+                  #
+                  #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
+                  #
+                  # This means that a value of 1.0 corresponds to a solid color, whereas
+                  # a value of 0.0 corresponds to a completely transparent color. This
+                  # uses a wrapper message rather than a simple float scalar so that it is
+                  # possible to distinguish between a default value and the value being unset.
+                  # If omitted, this color object is to be rendered as a solid color
+                  # (as if the alpha value had been explicitly given with a value of 1.0).
+              "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
+              "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
+            },
+            "firstBandColor": { # Represents a color in the RGBA color space. This representation is designed # The first color that is alternating. (Required)
+                # for simplicity of conversion to/from color representations in various
+                # languages over compactness; for example, the fields of this representation
+                # can be trivially provided to the constructor of "java.awt.Color" in Java; it
+                # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
+                # method in iOS; and, with just a little work, it can be easily formatted into
+                # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
+                #
+                # Example (Java):
+                #
+                #      import com.google.type.Color;
+                #
+                #      // ...
+                #      public static java.awt.Color fromProto(Color protocolor) {
+                #        float alpha = protocolor.hasAlpha()
+                #            ? protocolor.getAlpha().getValue()
+                #            : 1.0;
+                #
+                #        return new java.awt.Color(
+                #            protocolor.getRed(),
+                #            protocolor.getGreen(),
+                #            protocolor.getBlue(),
+                #            alpha);
+                #      }
+                #
+                #      public static Color toProto(java.awt.Color color) {
+                #        float red = (float) color.getRed();
+                #        float green = (float) color.getGreen();
+                #        float blue = (float) color.getBlue();
+                #        float denominator = 255.0;
+                #        Color.Builder resultBuilder =
+                #            Color
+                #                .newBuilder()
+                #                .setRed(red / denominator)
+                #                .setGreen(green / denominator)
+                #                .setBlue(blue / denominator);
+                #        int alpha = color.getAlpha();
+                #        if (alpha != 255) {
+                #          result.setAlpha(
+                #              FloatValue
+                #                  .newBuilder()
+                #                  .setValue(((float) alpha) / denominator)
+                #                  .build());
+                #        }
+                #        return resultBuilder.build();
+                #      }
+                #      // ...
+                #
+                # Example (iOS / Obj-C):
+                #
+                #      // ...
+                #      static UIColor* fromProto(Color* protocolor) {
+                #         float red = [protocolor red];
+                #         float green = [protocolor green];
+                #         float blue = [protocolor blue];
+                #         FloatValue* alpha_wrapper = [protocolor alpha];
+                #         float alpha = 1.0;
+                #         if (alpha_wrapper != nil) {
+                #           alpha = [alpha_wrapper value];
+                #         }
+                #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
+                #      }
+                #
+                #      static Color* toProto(UIColor* color) {
+                #          CGFloat red, green, blue, alpha;
+                #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
+                #            return nil;
+                #          }
+                #          Color* result = [Color alloc] init];
+                #          [result setRed:red];
+                #          [result setGreen:green];
+                #          [result setBlue:blue];
+                #          if (alpha <= 0.9999) {
+                #            [result setAlpha:floatWrapperWithValue(alpha)];
+                #          }
+                #          [result autorelease];
+                #          return result;
+                #     }
+                #     // ...
+                #
+                #  Example (JavaScript):
+                #
+                #     // ...
+                #
+                #     var protoToCssColor = function(rgb_color) {
+                #        var redFrac = rgb_color.red || 0.0;
+                #        var greenFrac = rgb_color.green || 0.0;
+                #        var blueFrac = rgb_color.blue || 0.0;
+                #        var red = Math.floor(redFrac * 255);
+                #        var green = Math.floor(greenFrac * 255);
+                #        var blue = Math.floor(blueFrac * 255);
+                #
+                #        if (!('alpha' in rgb_color)) {
+                #           return rgbToCssColor_(red, green, blue);
+                #        }
+                #
+                #        var alphaFrac = rgb_color.alpha.value || 0.0;
+                #        var rgbParams = [red, green, blue].join(',');
+                #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
+                #     };
+                #
+                #     var rgbToCssColor_ = function(red, green, blue) {
+                #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
+                #       var hexString = rgbNumber.toString(16);
+                #       var missingZeros = 6 - hexString.length;
+                #       var resultBuilder = ['#'];
+                #       for (var i = 0; i < missingZeros; i++) {
+                #          resultBuilder.push('0');
+                #       }
+                #       resultBuilder.push(hexString);
+                #       return resultBuilder.join('');
+                #     };
+                #
+                #     // ...
+              "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+              "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
+                  # the final pixel color is defined by the equation:
+                  #
+                  #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
+                  #
+                  # This means that a value of 1.0 corresponds to a solid color, whereas
+                  # a value of 0.0 corresponds to a completely transparent color. This
+                  # uses a wrapper message rather than a simple float scalar so that it is
+                  # possible to distinguish between a default value and the value being unset.
+                  # If omitted, this color object is to be rendered as a solid color
+                  # (as if the alpha value had been explicitly given with a value of 1.0).
+              "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
+              "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
+            },
+          },
+          "bandedRangeId": 42, # The id of the banded range.
+        },
+      ],
+      "merges": [ # The ranges that are merged together.
+        { # A range on a sheet.
+            # All indexes are zero-based.
+            # Indexes are half open, e.g the start index is inclusive
+            # and the end index is exclusive -- [start_index, end_index).
+            # Missing indexes indicate the range is unbounded on that side.
+            #
+            # For example, if `"Sheet1"` is sheet ID 0, then:
+            #
+            #   `Sheet1!A1:A1 == sheet_id: 0,
+            #                   start_row_index: 0, end_row_index: 1,
+            #                   start_column_index: 0, end_column_index: 1`
+            #
+            #   `Sheet1!A3:B4 == sheet_id: 0,
+            #                   start_row_index: 2, end_row_index: 4,
+            #                   start_column_index: 0, end_column_index: 2`
+            #
+            #   `Sheet1!A:B == sheet_id: 0,
+            #                 start_column_index: 0, end_column_index: 2`
+            #
+            #   `Sheet1!A5:B == sheet_id: 0,
+            #                  start_row_index: 4,
+            #                  start_column_index: 0, end_column_index: 2`
+            #
+            #   `Sheet1 == sheet_id:0`
+            #
+            # The start index must always be less than or equal to the end index.
+            # If the start index equals the end index, then the range is empty.
+            # Empty ranges are typically not meaningful and are usually rendered in the
+            # UI as `#REF!`.
+          "endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
+          "startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
+          "sheetId": 42, # The sheet this range is on.
+          "startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
+          "endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
+        },
+      ],
+      "basicFilter": { # The default filter associated with a sheet. # The filter on this sheet, if any.
+        "range": { # A range on a sheet. # The range the filter covers.
+            # All indexes are zero-based.
+            # Indexes are half open, e.g the start index is inclusive
+            # and the end index is exclusive -- [start_index, end_index).
+            # Missing indexes indicate the range is unbounded on that side.
+            #
+            # For example, if `"Sheet1"` is sheet ID 0, then:
+            #
+            #   `Sheet1!A1:A1 == sheet_id: 0,
+            #                   start_row_index: 0, end_row_index: 1,
+            #                   start_column_index: 0, end_column_index: 1`
+            #
+            #   `Sheet1!A3:B4 == sheet_id: 0,
+            #                   start_row_index: 2, end_row_index: 4,
+            #                   start_column_index: 0, end_column_index: 2`
+            #
+            #   `Sheet1!A:B == sheet_id: 0,
+            #                 start_column_index: 0, end_column_index: 2`
+            #
+            #   `Sheet1!A5:B == sheet_id: 0,
+            #                  start_row_index: 4,
+            #                  start_column_index: 0, end_column_index: 2`
+            #
+            #   `Sheet1 == sheet_id:0`
+            #
+            # The start index must always be less than or equal to the end index.
+            # If the start index equals the end index, then the range is empty.
+            # Empty ranges are typically not meaningful and are usually rendered in the
+            # UI as `#REF!`.
+          "endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
+          "startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
+          "sheetId": 42, # The sheet this range is on.
+          "startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
+          "endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
+        },
+        "sortSpecs": [ # The sort order per column. Later specifications are used when values
+            # are equal in the earlier specifications.
+          { # A sort order associated with a specific column or row.
+            "sortOrder": "A String", # The order data should be sorted.
+            "dimensionIndex": 42, # The dimension the sort should be applied to.
+          },
+        ],
+        "criteria": { # The criteria for showing/hiding values per column.
+            # The map's key is the column index, and the value is the criteria for
+            # that column.
+          "a_key": { # Criteria for showing/hiding rows in a filter or filter view.
+            "hiddenValues": [ # Values that should be hidden.
+              "A String",
+            ],
+            "condition": { # A condition that can evaluate to true or false. # A condition that must be true for values to be shown.
+                # (This does not override hiddenValues -- if a value is listed there,
+                #  it will still be hidden.)
+                # BooleanConditions are used by conditional formatting,
+                # data validation, and the criteria in filters.
+              "type": "A String", # The type of condition.
+              "values": [ # The values of the condition. The number of supported values depends
+                  # on the condition type.  Some support zero values,
+                  # others one or two values,
+                  # and ConditionType.ONE_OF_LIST supports an arbitrary number of values.
+                { # The value of the condition.
+                  "relativeDate": "A String", # A relative date (based on the current date).
+                      # Valid only if the type is
+                      # DATE_BEFORE,
+                      # DATE_AFTER,
+                      # DATE_ON_OR_BEFORE or
+                      # DATE_ON_OR_AFTER.
+                      #
+                      # Relative dates are not supported in data validation.
+                      # They are supported only in conditional formatting and
+                      # conditional filters.
+                  "userEnteredValue": "A String", # A value the condition is based on.
+                      # The value will be parsed as if the user typed into a cell.
+                      # Formulas are supported (and must begin with an `=`).
+                },
+              ],
+            },
+          },
+        },
+      },
+      "charts": [ # The specifications of every chart on this sheet.
+        { # A chart embedded in a sheet.
+          "chartId": 42, # The ID of the chart.
+          "position": { # The position of an embedded object such as a chart. # The position of the chart.
+            "newSheet": True or False, # If true, the embedded object will be put on a new sheet whose ID
+                # is chosen for you. Used only when writing.
+            "sheetId": 42, # The sheet this is on. Set only if the embedded object
+                # is on its own sheet. Must be non-negative.
+            "overlayPosition": { # The location an object is overlaid on top of a grid. # The position at which the object is overlaid on top of a grid.
+              "anchorCell": { # A coordinate in a sheet. # The cell the object is anchored to.
+                  # All indexes are zero-based.
+                "rowIndex": 42, # The row index of the coordinate.
+                "columnIndex": 42, # The column index of the coordinate.
+                "sheetId": 42, # The sheet this coordinate is on.
+              },
+              "offsetYPixels": 42, # The vertical offset, in pixels, that the object is offset
+                  # from the anchor cell.
+              "widthPixels": 42, # The width of the object, in pixels. Defaults to 600.
+              "offsetXPixels": 42, # The horizontal offset, in pixels, that the object is offset
+                  # from the anchor cell.
+              "heightPixels": 42, # The height of the object, in pixels. Defaults to 371.
+            },
+          },
+          "spec": { # The specifications of a chart. # The specification of the chart.
+            "hiddenDimensionStrategy": "A String", # Determines how the charts will use hidden rows or columns.
+            "pieChart": { # A <a href="/chart/interactive/docs/gallery/piechart">pie chart</a>. # A pie chart specification.
+              "series": { # The data included in a domain or series. # The data that covers the one and only series of the pie chart.
+                "sourceRange": { # Source ranges for a chart. # The source ranges of the data.
+                  "sources": [ # The ranges of data for a series or domain.
+                      # Exactly one dimension must have a length of 1,
+                      # and all sources in the list must have the same dimension
+                      # with length 1.
+                      # The domain (if it exists) & all series must have the same number
+                      # of source ranges. If using more than one source range, then the source
+                      # range at a given offset must be contiguous across the domain and series.
+                      #
+                      # For example, these are valid configurations:
+                      #
+                      #     domain sources: A1:A5
+                      #     series1 sources: B1:B5
+                      #     series2 sources: D6:D10
+                      #
+                      #     domain sources: A1:A5, C10:C12
+                      #     series1 sources: B1:B5, D10:D12
+                      #     series2 sources: C1:C5, E10:E12
+                    { # A range on a sheet.
+                        # All indexes are zero-based.
+                        # Indexes are half open, e.g the start index is inclusive
+                        # and the end index is exclusive -- [start_index, end_index).
+                        # Missing indexes indicate the range is unbounded on that side.
+                        #
+                        # For example, if `"Sheet1"` is sheet ID 0, then:
+                        #
+                        #   `Sheet1!A1:A1 == sheet_id: 0,
+                        #                   start_row_index: 0, end_row_index: 1,
+                        #                   start_column_index: 0, end_column_index: 1`
+                        #
+                        #   `Sheet1!A3:B4 == sheet_id: 0,
+                        #                   start_row_index: 2, end_row_index: 4,
+                        #                   start_column_index: 0, end_column_index: 2`
+                        #
+                        #   `Sheet1!A:B == sheet_id: 0,
+                        #                 start_column_index: 0, end_column_index: 2`
+                        #
+                        #   `Sheet1!A5:B == sheet_id: 0,
+                        #                  start_row_index: 4,
+                        #                  start_column_index: 0, end_column_index: 2`
+                        #
+                        #   `Sheet1 == sheet_id:0`
+                        #
+                        # The start index must always be less than or equal to the end index.
+                        # If the start index equals the end index, then the range is empty.
+                        # Empty ranges are typically not meaningful and are usually rendered in the
+                        # UI as `#REF!`.
+                      "endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
+                      "startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
+                      "sheetId": 42, # The sheet this range is on.
+                      "startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
+                      "endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
+                    },
+                  ],
+                },
+              },
+              "domain": { # The data included in a domain or series. # The data that covers the domain of the pie chart.
+                "sourceRange": { # Source ranges for a chart. # The source ranges of the data.
+                  "sources": [ # The ranges of data for a series or domain.
+                      # Exactly one dimension must have a length of 1,
+                      # and all sources in the list must have the same dimension
+                      # with length 1.
+                      # The domain (if it exists) & all series must have the same number
+                      # of source ranges. If using more than one source range, then the source
+                      # range at a given offset must be contiguous across the domain and series.
+                      #
+                      # For example, these are valid configurations:
+                      #
+                      #     domain sources: A1:A5
+                      #     series1 sources: B1:B5
+                      #     series2 sources: D6:D10
+                      #
+                      #     domain sources: A1:A5, C10:C12
+                      #     series1 sources: B1:B5, D10:D12
+                      #     series2 sources: C1:C5, E10:E12
+                    { # A range on a sheet.
+                        # All indexes are zero-based.
+                        # Indexes are half open, e.g the start index is inclusive
+                        # and the end index is exclusive -- [start_index, end_index).
+                        # Missing indexes indicate the range is unbounded on that side.
+                        #
+                        # For example, if `"Sheet1"` is sheet ID 0, then:
+                        #
+                        #   `Sheet1!A1:A1 == sheet_id: 0,
+                        #                   start_row_index: 0, end_row_index: 1,
+                        #                   start_column_index: 0, end_column_index: 1`
+                        #
+                        #   `Sheet1!A3:B4 == sheet_id: 0,
+                        #                   start_row_index: 2, end_row_index: 4,
+                        #                   start_column_index: 0, end_column_index: 2`
+                        #
+                        #   `Sheet1!A:B == sheet_id: 0,
+                        #                 start_column_index: 0, end_column_index: 2`
+                        #
+                        #   `Sheet1!A5:B == sheet_id: 0,
+                        #                  start_row_index: 4,
+                        #                  start_column_index: 0, end_column_index: 2`
+                        #
+                        #   `Sheet1 == sheet_id:0`
+                        #
+                        # The start index must always be less than or equal to the end index.
+                        # If the start index equals the end index, then the range is empty.
+                        # Empty ranges are typically not meaningful and are usually rendered in the
+                        # UI as `#REF!`.
+                      "endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
+                      "startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
+                      "sheetId": 42, # The sheet this range is on.
+                      "startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
+                      "endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
+                    },
+                  ],
+                },
+              },
+              "threeDimensional": True or False, # True if the pie is three dimensional.
+              "legendPosition": "A String", # Where the legend of the pie chart should be drawn.
+              "pieHole": 3.14, # The size of the hole in the pie chart.
+            },
+            "basicChart": { # The specification for a basic chart.  See BasicChartType for the list # A basic chart specification, can be one of many kinds of charts.
+                # See BasicChartType for the list of all
+                # charts this supports.
+                # of charts this supports.
+              "headerCount": 42, # The number of rows or columns in the data that are "headers".
+                  # If not set, Google Sheets will guess how many rows are headers based
+                  # on the data.
+                  #
+                  # (Note that BasicChartAxis.title may override the axis title
+                  #  inferred from the header values.)
+              "series": [ # The data this chart is visualizing.
+                { # A single series of data in a chart.
+                    # For example, if charting stock prices over time, multiple series may exist,
+                    # one for the "Open Price", "High Price", "Low Price" and "Close Price".
+                  "series": { # The data included in a domain or series. # The data being visualized in this chart series.
+                    "sourceRange": { # Source ranges for a chart. # The source ranges of the data.
+                      "sources": [ # The ranges of data for a series or domain.
+                          # Exactly one dimension must have a length of 1,
+                          # and all sources in the list must have the same dimension
+                          # with length 1.
+                          # The domain (if it exists) & all series must have the same number
+                          # of source ranges. If using more than one source range, then the source
+                          # range at a given offset must be contiguous across the domain and series.
+                          #
+                          # For example, these are valid configurations:
+                          #
+                          #     domain sources: A1:A5
+                          #     series1 sources: B1:B5
+                          #     series2 sources: D6:D10
+                          #
+                          #     domain sources: A1:A5, C10:C12
+                          #     series1 sources: B1:B5, D10:D12
+                          #     series2 sources: C1:C5, E10:E12
+                        { # A range on a sheet.
+                            # All indexes are zero-based.
+                            # Indexes are half open, e.g the start index is inclusive
+                            # and the end index is exclusive -- [start_index, end_index).
+                            # Missing indexes indicate the range is unbounded on that side.
+                            #
+                            # For example, if `"Sheet1"` is sheet ID 0, then:
+                            #
+                            #   `Sheet1!A1:A1 == sheet_id: 0,
+                            #                   start_row_index: 0, end_row_index: 1,
+                            #                   start_column_index: 0, end_column_index: 1`
+                            #
+                            #   `Sheet1!A3:B4 == sheet_id: 0,
+                            #                   start_row_index: 2, end_row_index: 4,
+                            #                   start_column_index: 0, end_column_index: 2`
+                            #
+                            #   `Sheet1!A:B == sheet_id: 0,
+                            #                 start_column_index: 0, end_column_index: 2`
+                            #
+                            #   `Sheet1!A5:B == sheet_id: 0,
+                            #                  start_row_index: 4,
+                            #                  start_column_index: 0, end_column_index: 2`
+                            #
+                            #   `Sheet1 == sheet_id:0`
+                            #
+                            # The start index must always be less than or equal to the end index.
+                            # If the start index equals the end index, then the range is empty.
+                            # Empty ranges are typically not meaningful and are usually rendered in the
+                            # UI as `#REF!`.
+                          "endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
+                          "startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
+                          "sheetId": 42, # The sheet this range is on.
+                          "startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
+                          "endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
+                        },
+                      ],
+                    },
+                  },
+                  "targetAxis": "A String", # The minor axis that will specify the range of values for this series.
+                      # For example, if charting stocks over time, the "Volume" series
+                      # may want to be pinned to the right with the prices pinned to the left,
+                      # because the scale of trading volume is different than the scale of
+                      # prices.
+                      # It is an error to specify an axis that isn't a valid minor axis
+                      # for the chart's type.
+                  "type": "A String", # The type of this series. Valid only if the
+                      # chartType is
+                      # COMBO.
+                      # Different types will change the way the series is visualized.
+                      # Only LINE, AREA,
+                      # and COLUMN are supported.
+                },
+              ],
+              "legendPosition": "A String", # The position of the chart legend.
+              "domains": [ # The domain of data this is charting.
+                  # Only a single domain is currently supported.
+                { # The domain of a chart.
+                    # For example, if charting stock prices over time, this would be the date.
+                  "domain": { # The data included in a domain or series. # The data of the domain. For example, if charting stock prices over time,
+                      # this is the data representing the dates.
+                    "sourceRange": { # Source ranges for a chart. # The source ranges of the data.
+                      "sources": [ # The ranges of data for a series or domain.
+                          # Exactly one dimension must have a length of 1,
+                          # and all sources in the list must have the same dimension
+                          # with length 1.
+                          # The domain (if it exists) & all series must have the same number
+                          # of source ranges. If using more than one source range, then the source
+                          # range at a given offset must be contiguous across the domain and series.
+                          #
+                          # For example, these are valid configurations:
+                          #
+                          #     domain sources: A1:A5
+                          #     series1 sources: B1:B5
+                          #     series2 sources: D6:D10
+                          #
+                          #     domain sources: A1:A5, C10:C12
+                          #     series1 sources: B1:B5, D10:D12
+                          #     series2 sources: C1:C5, E10:E12
+                        { # A range on a sheet.
+                            # All indexes are zero-based.
+                            # Indexes are half open, e.g the start index is inclusive
+                            # and the end index is exclusive -- [start_index, end_index).
+                            # Missing indexes indicate the range is unbounded on that side.
+                            #
+                            # For example, if `"Sheet1"` is sheet ID 0, then:
+                            #
+                            #   `Sheet1!A1:A1 == sheet_id: 0,
+                            #                   start_row_index: 0, end_row_index: 1,
+                            #                   start_column_index: 0, end_column_index: 1`
+                            #
+                            #   `Sheet1!A3:B4 == sheet_id: 0,
+                            #                   start_row_index: 2, end_row_index: 4,
+                            #                   start_column_index: 0, end_column_index: 2`
+                            #
+                            #   `Sheet1!A:B == sheet_id: 0,
+                            #                 start_column_index: 0, end_column_index: 2`
+                            #
+                            #   `Sheet1!A5:B == sheet_id: 0,
+                            #                  start_row_index: 4,
+                            #                  start_column_index: 0, end_column_index: 2`
+                            #
+                            #   `Sheet1 == sheet_id:0`
+                            #
+                            # The start index must always be less than or equal to the end index.
+                            # If the start index equals the end index, then the range is empty.
+                            # Empty ranges are typically not meaningful and are usually rendered in the
+                            # UI as `#REF!`.
+                          "endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
+                          "startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
+                          "sheetId": 42, # The sheet this range is on.
+                          "startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
+                          "endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
+                        },
+                      ],
+                    },
+                  },
+                },
+              ],
+              "chartType": "A String", # The type of the chart.
+              "axis": [ # The axis on the chart.
+                { # An axis of the chart.
+                    # A chart may not have more than one axis per
+                    # axis position.
+                  "position": "A String", # The position of this axis.
+                  "format": { # The format of a run of text in a cell. # The format of the title.
+                      # Only valid if the axis is not associated with the domain.
+                      # Absent values indicate that the field isn't specified.
+                    "foregroundColor": { # Represents a color in the RGBA color space. This representation is designed # The foreground color of the text.
+                        # for simplicity of conversion to/from color representations in various
+                        # languages over compactness; for example, the fields of this representation
+                        # can be trivially provided to the constructor of "java.awt.Color" in Java; it
+                        # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
+                        # method in iOS; and, with just a little work, it can be easily formatted into
+                        # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
+                        #
+                        # Example (Java):
+                        #
+                        #      import com.google.type.Color;
+                        #
+                        #      // ...
+                        #      public static java.awt.Color fromProto(Color protocolor) {
+                        #        float alpha = protocolor.hasAlpha()
+                        #            ? protocolor.getAlpha().getValue()
+                        #            : 1.0;
+                        #
+                        #        return new java.awt.Color(
+                        #            protocolor.getRed(),
+                        #            protocolor.getGreen(),
+                        #            protocolor.getBlue(),
+                        #            alpha);
+                        #      }
+                        #
+                        #      public static Color toProto(java.awt.Color color) {
+                        #        float red = (float) color.getRed();
+                        #        float green = (float) color.getGreen();
+                        #        float blue = (float) color.getBlue();
+                        #        float denominator = 255.0;
+                        #        Color.Builder resultBuilder =
+                        #            Color
+                        #                .newBuilder()
+                        #                .setRed(red / denominator)
+                        #                .setGreen(green / denominator)
+                        #                .setBlue(blue / denominator);
+                        #        int alpha = color.getAlpha();
+                        #        if (alpha != 255) {
+                        #          result.setAlpha(
+                        #              FloatValue
+                        #                  .newBuilder()
+                        #                  .setValue(((float) alpha) / denominator)
+                        #                  .build());
+                        #        }
+                        #        return resultBuilder.build();
+                        #      }
+                        #      // ...
+                        #
+                        # Example (iOS / Obj-C):
+                        #
+                        #      // ...
+                        #      static UIColor* fromProto(Color* protocolor) {
+                        #         float red = [protocolor red];
+                        #         float green = [protocolor green];
+                        #         float blue = [protocolor blue];
+                        #         FloatValue* alpha_wrapper = [protocolor alpha];
+                        #         float alpha = 1.0;
+                        #         if (alpha_wrapper != nil) {
+                        #           alpha = [alpha_wrapper value];
+                        #         }
+                        #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
+                        #      }
+                        #
+                        #      static Color* toProto(UIColor* color) {
+                        #          CGFloat red, green, blue, alpha;
+                        #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
+                        #            return nil;
+                        #          }
+                        #          Color* result = [Color alloc] init];
+                        #          [result setRed:red];
+                        #          [result setGreen:green];
+                        #          [result setBlue:blue];
+                        #          if (alpha <= 0.9999) {
+                        #            [result setAlpha:floatWrapperWithValue(alpha)];
+                        #          }
+                        #          [result autorelease];
+                        #          return result;
+                        #     }
+                        #     // ...
+                        #
+                        #  Example (JavaScript):
+                        #
+                        #     // ...
+                        #
+                        #     var protoToCssColor = function(rgb_color) {
+                        #        var redFrac = rgb_color.red || 0.0;
+                        #        var greenFrac = rgb_color.green || 0.0;
+                        #        var blueFrac = rgb_color.blue || 0.0;
+                        #        var red = Math.floor(redFrac * 255);
+                        #        var green = Math.floor(greenFrac * 255);
+                        #        var blue = Math.floor(blueFrac * 255);
+                        #
+                        #        if (!('alpha' in rgb_color)) {
+                        #           return rgbToCssColor_(red, green, blue);
+                        #        }
+                        #
+                        #        var alphaFrac = rgb_color.alpha.value || 0.0;
+                        #        var rgbParams = [red, green, blue].join(',');
+                        #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
+                        #     };
+                        #
+                        #     var rgbToCssColor_ = function(red, green, blue) {
+                        #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
+                        #       var hexString = rgbNumber.toString(16);
+                        #       var missingZeros = 6 - hexString.length;
+                        #       var resultBuilder = ['#'];
+                        #       for (var i = 0; i < missingZeros; i++) {
+                        #          resultBuilder.push('0');
+                        #       }
+                        #       resultBuilder.push(hexString);
+                        #       return resultBuilder.join('');
+                        #     };
+                        #
+                        #     // ...
+                      "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+                      "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
+                          # the final pixel color is defined by the equation:
+                          #
+                          #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
+                          #
+                          # This means that a value of 1.0 corresponds to a solid color, whereas
+                          # a value of 0.0 corresponds to a completely transparent color. This
+                          # uses a wrapper message rather than a simple float scalar so that it is
+                          # possible to distinguish between a default value and the value being unset.
+                          # If omitted, this color object is to be rendered as a solid color
+                          # (as if the alpha value had been explicitly given with a value of 1.0).
+                      "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
+                      "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
+                    },
+                    "bold": True or False, # True if the text is bold.
+                    "strikethrough": True or False, # True if the text has a strikethrough.
+                    "fontFamily": "A String", # The font family.
+                    "fontSize": 42, # The size of the font.
+                    "italic": True or False, # True if the text is italicized.
+                    "underline": True or False, # True if the text is underlined.
+                  },
+                  "title": "A String", # The title of this axis. If set, this overrides any title inferred
+                      # from headers of the data.
+                },
+              ],
+            },
+            "title": "A String", # The title of the chart.
+          },
+        },
+      ],
+      "filterViews": [ # The filter views in this sheet.
+        { # A filter view.
+          "title": "A String", # The name of the filter view.
+          "namedRangeId": "A String", # The named range this filter view is backed by, if any.
+              #
+              # When writing, only one of range or named_range_id
+              # may be set.
+          "filterViewId": 42, # The ID of the filter view.
+          "range": { # A range on a sheet. # The range this filter view covers.
+              #
+              # When writing, only one of range or named_range_id
+              # may be set.
+              # All indexes are zero-based.
+              # Indexes are half open, e.g the start index is inclusive
+              # and the end index is exclusive -- [start_index, end_index).
+              # Missing indexes indicate the range is unbounded on that side.
+              #
+              # For example, if `"Sheet1"` is sheet ID 0, then:
+              #
+              #   `Sheet1!A1:A1 == sheet_id: 0,
+              #                   start_row_index: 0, end_row_index: 1,
+              #                   start_column_index: 0, end_column_index: 1`
+              #
+              #   `Sheet1!A3:B4 == sheet_id: 0,
+              #                   start_row_index: 2, end_row_index: 4,
+              #                   start_column_index: 0, end_column_index: 2`
+              #
+              #   `Sheet1!A:B == sheet_id: 0,
+              #                 start_column_index: 0, end_column_index: 2`
+              #
+              #   `Sheet1!A5:B == sheet_id: 0,
+              #                  start_row_index: 4,
+              #                  start_column_index: 0, end_column_index: 2`
+              #
+              #   `Sheet1 == sheet_id:0`
+              #
+              # The start index must always be less than or equal to the end index.
+              # If the start index equals the end index, then the range is empty.
+              # Empty ranges are typically not meaningful and are usually rendered in the
+              # UI as `#REF!`.
+            "endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
+            "startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
+            "sheetId": 42, # The sheet this range is on.
+            "startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
+            "endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
+          },
+          "sortSpecs": [ # The sort order per column. Later specifications are used when values
+              # are equal in the earlier specifications.
+            { # A sort order associated with a specific column or row.
+              "sortOrder": "A String", # The order data should be sorted.
+              "dimensionIndex": 42, # The dimension the sort should be applied to.
+            },
+          ],
+          "criteria": { # The criteria for showing/hiding values per column.
+              # The map's key is the column index, and the value is the criteria for
+              # that column.
+            "a_key": { # Criteria for showing/hiding rows in a filter or filter view.
+              "hiddenValues": [ # Values that should be hidden.
+                "A String",
+              ],
+              "condition": { # A condition that can evaluate to true or false. # A condition that must be true for values to be shown.
+                  # (This does not override hiddenValues -- if a value is listed there,
+                  #  it will still be hidden.)
+                  # BooleanConditions are used by conditional formatting,
+                  # data validation, and the criteria in filters.
+                "type": "A String", # The type of condition.
+                "values": [ # The values of the condition. The number of supported values depends
+                    # on the condition type.  Some support zero values,
+                    # others one or two values,
+                    # and ConditionType.ONE_OF_LIST supports an arbitrary number of values.
+                  { # The value of the condition.
+                    "relativeDate": "A String", # A relative date (based on the current date).
+                        # Valid only if the type is
+                        # DATE_BEFORE,
+                        # DATE_AFTER,
+                        # DATE_ON_OR_BEFORE or
+                        # DATE_ON_OR_AFTER.
+                        #
+                        # Relative dates are not supported in data validation.
+                        # They are supported only in conditional formatting and
+                        # conditional filters.
+                    "userEnteredValue": "A String", # A value the condition is based on.
+                        # The value will be parsed as if the user typed into a cell.
+                        # Formulas are supported (and must begin with an `=`).
+                  },
+                ],
+              },
+            },
+          },
+        },
+      ],
+      "protectedRanges": [ # The protected ranges in this sheet.
+        { # A protected range.
+          "unprotectedRanges": [ # The list of unprotected ranges within a protected sheet.
+              # Unprotected ranges are only supported on protected sheets.
+            { # A range on a sheet.
+                # All indexes are zero-based.
+                # Indexes are half open, e.g the start index is inclusive
+                # and the end index is exclusive -- [start_index, end_index).
+                # Missing indexes indicate the range is unbounded on that side.
+                #
+                # For example, if `"Sheet1"` is sheet ID 0, then:
+                #
+                #   `Sheet1!A1:A1 == sheet_id: 0,
+                #                   start_row_index: 0, end_row_index: 1,
+                #                   start_column_index: 0, end_column_index: 1`
+                #
+                #   `Sheet1!A3:B4 == sheet_id: 0,
+                #                   start_row_index: 2, end_row_index: 4,
+                #                   start_column_index: 0, end_column_index: 2`
+                #
+                #   `Sheet1!A:B == sheet_id: 0,
+                #                 start_column_index: 0, end_column_index: 2`
+                #
+                #   `Sheet1!A5:B == sheet_id: 0,
+                #                  start_row_index: 4,
+                #                  start_column_index: 0, end_column_index: 2`
+                #
+                #   `Sheet1 == sheet_id:0`
+                #
+                # The start index must always be less than or equal to the end index.
+                # If the start index equals the end index, then the range is empty.
+                # Empty ranges are typically not meaningful and are usually rendered in the
+                # UI as `#REF!`.
+              "endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
+              "startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
+              "sheetId": 42, # The sheet this range is on.
+              "startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
+              "endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
+            },
+          ],
+          "requestingUserCanEdit": True or False, # True if the user who requested this protected range can edit the
+              # protected area.
+              # This field is read-only.
+          "description": "A String", # The description of this protected range.
+          "namedRangeId": "A String", # The named range this protected range is backed by, if any.
+              #
+              # When writing, only one of range or named_range_id
+              # may be set.
+          "editors": { # The editors of a protected range. # The users and groups with edit access to the protected range.
+              # This field is only visible to users with edit access to the protected
+              # range and the document.
+              # Editors are not supported with warning_only protection.
+            "domainUsersCanEdit": True or False, # True if anyone in the document's domain has edit access to the protected
+                # range.  Domain protection is only supported on documents within a domain.
+            "users": [ # The email addresses of users with edit access to the protected range.
+              "A String",
+            ],
+            "groups": [ # The email addresses of groups with edit access to the protected range.
+              "A String",
+            ],
+          },
+          "protectedRangeId": 42, # The ID of the protected range.
+              # This field is read-only.
+          "warningOnly": True or False, # True if this protected range will show a warning when editing.
+              # Warning-based protection means that every user can edit data in the
+              # protected range, except editing will prompt a warning asking the user
+              # to confirm the edit.
+              #
+              # When writing: if this field is true, then editors is ignored.
+              # Additionally, if this field is changed from true to false and the
+              # `editors` field is not set (nor included in the field mask), then
+              # the editors will be set to all the editors in the document.
+          "range": { # A range on a sheet. # The range that is being protected.
+              # The range may be fully unbounded, in which case this is considered
+              # a protected sheet.
+              #
+              # When writing, only one of range or named_range_id
+              # may be set.
+              # All indexes are zero-based.
+              # Indexes are half open, e.g the start index is inclusive
+              # and the end index is exclusive -- [start_index, end_index).
+              # Missing indexes indicate the range is unbounded on that side.
+              #
+              # For example, if `"Sheet1"` is sheet ID 0, then:
+              #
+              #   `Sheet1!A1:A1 == sheet_id: 0,
+              #                   start_row_index: 0, end_row_index: 1,
+              #                   start_column_index: 0, end_column_index: 1`
+              #
+              #   `Sheet1!A3:B4 == sheet_id: 0,
+              #                   start_row_index: 2, end_row_index: 4,
+              #                   start_column_index: 0, end_column_index: 2`
+              #
+              #   `Sheet1!A:B == sheet_id: 0,
+              #                 start_column_index: 0, end_column_index: 2`
+              #
+              #   `Sheet1!A5:B == sheet_id: 0,
+              #                  start_row_index: 4,
+              #                  start_column_index: 0, end_column_index: 2`
+              #
+              #   `Sheet1 == sheet_id:0`
+              #
+              # The start index must always be less than or equal to the end index.
+              # If the start index equals the end index, then the range is empty.
+              # Empty ranges are typically not meaningful and are usually rendered in the
+              # UI as `#REF!`.
+            "endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
+            "startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
+            "sheetId": 42, # The sheet this range is on.
+            "startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
+            "endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
+          },
+        },
+      ],
+      "data": [ # Data in the grid, if this is a grid sheet.
+          # The number of GridData objects returned is dependent on the number of
+          # ranges requested on this sheet. For example, if this is representing
+          # `Sheet1`, and the spreadsheet was requested with ranges
+          # `Sheet1!A1:C10` and `Sheet1!D15:E20`, then the first GridData will have a
+          # startRow/startColumn of `0`,
+          # while the second one will have `startRow 14` (zero-based row 15),
+          # and `startColumn 3` (zero-based column D).
+        { # Data in the grid, as well as metadata about the dimensions.
+          "startRow": 42, # The first row this GridData refers to, zero-based.
+          "rowMetadata": [ # Metadata about the requested rows in the grid, starting with the row
+              # in start_row.
+            { # Properties about a dimension.
+              "pixelSize": 42, # The height (if a row) or width (if a column) of the dimension in pixels.
+              "hiddenByUser": True or False, # True if this dimension is explicitly hidden.
+              "hiddenByFilter": True or False, # True if this dimension is being filtered.
+                  # This field is read-only.
+            },
+          ],
+          "startColumn": 42, # The first column this GridData refers to, zero-based.
+          "columnMetadata": [ # Metadata about the requested columns in the grid, starting with the column
+              # in start_column.
+            { # Properties about a dimension.
+              "pixelSize": 42, # The height (if a row) or width (if a column) of the dimension in pixels.
+              "hiddenByUser": True or False, # True if this dimension is explicitly hidden.
+              "hiddenByFilter": True or False, # True if this dimension is being filtered.
+                  # This field is read-only.
+            },
+          ],
+          "rowData": [ # The data in the grid, one entry per row,
+              # starting with the row in startRow.
+              # The values in RowData will correspond to columns starting
+              # at start_column.
+            { # Data about each cell in a row.
+              "values": [ # The values in the row, one per column.
+                { # Data about a specific cell.
+                  "pivotTable": { # A pivot table. # A pivot table anchored at this cell. The size of pivot table itself
+                      # is computed dynamically based on its data, grouping, filters, values,
+                      # etc. Only the top-left cell of the pivot table contains the pivot table
+                      # definition. The other cells will contain the calculated values of the
+                      # results of the pivot in their effective_value fields.
+                    "valueLayout": "A String", # Whether values should be listed horizontally (as columns)
+                        # or vertically (as rows).
+                    "rows": [ # Each row grouping in the pivot table.
+                      { # A single grouping (either row or column) in a pivot table.
+                        "showTotals": True or False, # True if the pivot table should include the totals for this grouping.
+                        "valueMetadata": [ # Metadata about values in the grouping.
+                          { # Metadata about a value in a pivot grouping.
+                            "collapsed": True or False, # True if the data corresponding to the value is collapsed.
+                            "value": { # The kinds of value that a cell in a spreadsheet can have. # The calculated value the metadata corresponds to.
+                                # (Note that formulaValue is not valid,
+                                #  because the values will be calculated.)
+                              "numberValue": 3.14, # Represents a double value.
+                                  # Note: Dates, Times and DateTimes are represented as doubles in
+                                  # "serial number" format.
+                              "boolValue": True or False, # Represents a boolean value.
+                              "formulaValue": "A String", # Represents a formula.
+                              "stringValue": "A String", # Represents a string value.
+                                  # Leading single quotes are not included. For example, if the user typed
+                                  # `'123` into the UI, this would be represented as a `stringValue` of
+                                  # `"123"`.
+                              "errorValue": { # An error in a cell. # Represents an error.
+                                  # This field is read-only.
+                                "message": "A String", # A message with more information about the error
+                                    # (in the spreadsheet's locale).
+                                "type": "A String", # The type of error.
+                              },
+                            },
+                          },
+                        ],
+                        "valueBucket": { # Information about which values in a pivot group should be used for sorting. # The bucket of the opposite pivot group to sort by.
+                            # If not specified, sorting is alphabetical by this group's values.
+                          "buckets": [ # Determines the bucket from which values are chosen to sort.
+                              #
+                              # For example, in a pivot table with one row group & two column groups,
+                              # the row group can list up to two values. The first value corresponds
+                              # to a value within the first column group, and the second value
+                              # corresponds to a value in the second column group.  If no values
+                              # are listed, this would indicate that the row should be sorted according
+                              # to the "Grand Total" over the column groups. If a single value is listed,
+                              # this would correspond to using the "Total" of that bucket.
+                            { # The kinds of value that a cell in a spreadsheet can have.
+                              "numberValue": 3.14, # Represents a double value.
+                                  # Note: Dates, Times and DateTimes are represented as doubles in
+                                  # "serial number" format.
+                              "boolValue": True or False, # Represents a boolean value.
+                              "formulaValue": "A String", # Represents a formula.
+                              "stringValue": "A String", # Represents a string value.
+                                  # Leading single quotes are not included. For example, if the user typed
+                                  # `'123` into the UI, this would be represented as a `stringValue` of
+                                  # `"123"`.
+                              "errorValue": { # An error in a cell. # Represents an error.
+                                  # This field is read-only.
+                                "message": "A String", # A message with more information about the error
+                                    # (in the spreadsheet's locale).
+                                "type": "A String", # The type of error.
+                              },
+                            },
+                          ],
+                          "valuesIndex": 42, # The offset in the PivotTable.values list which the values in this
+                              # grouping should be sorted by.
+                        },
+                        "sortOrder": "A String", # The order the values in this group should be sorted.
+                        "sourceColumnOffset": 42, # The column offset of the source range that this grouping is based on.
+                            #
+                            # For example, if the source was `C10:E15`, a `sourceColumnOffset` of `0`
+                            # means this group refers to column `C`, whereas the offset `1` would refer
+                            # to column `D`.
+                      },
+                    ],
+                    "source": { # A range on a sheet. # The range the pivot table is reading data from.
+                        # All indexes are zero-based.
+                        # Indexes are half open, e.g the start index is inclusive
+                        # and the end index is exclusive -- [start_index, end_index).
+                        # Missing indexes indicate the range is unbounded on that side.
+                        #
+                        # For example, if `"Sheet1"` is sheet ID 0, then:
+                        #
+                        #   `Sheet1!A1:A1 == sheet_id: 0,
+                        #                   start_row_index: 0, end_row_index: 1,
+                        #                   start_column_index: 0, end_column_index: 1`
+                        #
+                        #   `Sheet1!A3:B4 == sheet_id: 0,
+                        #                   start_row_index: 2, end_row_index: 4,
+                        #                   start_column_index: 0, end_column_index: 2`
+                        #
+                        #   `Sheet1!A:B == sheet_id: 0,
+                        #                 start_column_index: 0, end_column_index: 2`
+                        #
+                        #   `Sheet1!A5:B == sheet_id: 0,
+                        #                  start_row_index: 4,
+                        #                  start_column_index: 0, end_column_index: 2`
+                        #
+                        #   `Sheet1 == sheet_id:0`
+                        #
+                        # The start index must always be less than or equal to the end index.
+                        # If the start index equals the end index, then the range is empty.
+                        # Empty ranges are typically not meaningful and are usually rendered in the
+                        # UI as `#REF!`.
+                      "endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
+                      "startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
+                      "sheetId": 42, # The sheet this range is on.
+                      "startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
+                      "endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
+                    },
+                    "values": [ # A list of values to include in the pivot table.
+                      { # The definition of how a value in a pivot table should be calculated.
+                        "formula": "A String", # A custom formula to calculate the value.  The formula must start
+                            # with an `=` character.
+                        "summarizeFunction": "A String", # A function to summarize the value.
+                            # If formula is set, the only supported values are
+                            # SUM and
+                            # CUSTOM.
+                            # If sourceColumnOffset is set, then `CUSTOM`
+                            # is not supported.
+                        "sourceColumnOffset": 42, # The column offset of the source range that this value reads from.
+                            #
+                            # For example, if the source was `C10:E15`, a `sourceColumnOffset` of `0`
+                            # means this value refers to column `C`, whereas the offset `1` would
+                            # refer to column `D`.
+                        "name": "A String", # A name to use for the value. This is only used if formula was set.
+                            # Otherwise, the column name is used.
+                      },
+                    ],
+                    "criteria": { # An optional mapping of filters per source column offset.
+                        #
+                        # The filters will be applied before aggregating data into the pivot table.
+                        # The map's key is the column offset of the source range that you want to
+                        # filter, and the value is the criteria for that column.
+                        #
+                        # For example, if the source was `C10:E15`, a key of `0` will have the filter
+                        # for column `C`, whereas the key `1` is for column `D`.
+                      "a_key": { # Criteria for showing/hiding rows in a pivot table.
+                        "visibleValues": [ # Values that should be included.  Values not listed here are excluded.
+                          "A String",
+                        ],
+                      },
+                    },
+                    "columns": [ # Each column grouping in the pivot table.
+                      { # A single grouping (either row or column) in a pivot table.
+                        "showTotals": True or False, # True if the pivot table should include the totals for this grouping.
+                        "valueMetadata": [ # Metadata about values in the grouping.
+                          { # Metadata about a value in a pivot grouping.
+                            "collapsed": True or False, # True if the data corresponding to the value is collapsed.
+                            "value": { # The kinds of value that a cell in a spreadsheet can have. # The calculated value the metadata corresponds to.
+                                # (Note that formulaValue is not valid,
+                                #  because the values will be calculated.)
+                              "numberValue": 3.14, # Represents a double value.
+                                  # Note: Dates, Times and DateTimes are represented as doubles in
+                                  # "serial number" format.
+                              "boolValue": True or False, # Represents a boolean value.
+                              "formulaValue": "A String", # Represents a formula.
+                              "stringValue": "A String", # Represents a string value.
+                                  # Leading single quotes are not included. For example, if the user typed
+                                  # `'123` into the UI, this would be represented as a `stringValue` of
+                                  # `"123"`.
+                              "errorValue": { # An error in a cell. # Represents an error.
+                                  # This field is read-only.
+                                "message": "A String", # A message with more information about the error
+                                    # (in the spreadsheet's locale).
+                                "type": "A String", # The type of error.
+                              },
+                            },
+                          },
+                        ],
+                        "valueBucket": { # Information about which values in a pivot group should be used for sorting. # The bucket of the opposite pivot group to sort by.
+                            # If not specified, sorting is alphabetical by this group's values.
+                          "buckets": [ # Determines the bucket from which values are chosen to sort.
+                              #
+                              # For example, in a pivot table with one row group & two column groups,
+                              # the row group can list up to two values. The first value corresponds
+                              # to a value within the first column group, and the second value
+                              # corresponds to a value in the second column group.  If no values
+                              # are listed, this would indicate that the row should be sorted according
+                              # to the "Grand Total" over the column groups. If a single value is listed,
+                              # this would correspond to using the "Total" of that bucket.
+                            { # The kinds of value that a cell in a spreadsheet can have.
+                              "numberValue": 3.14, # Represents a double value.
+                                  # Note: Dates, Times and DateTimes are represented as doubles in
+                                  # "serial number" format.
+                              "boolValue": True or False, # Represents a boolean value.
+                              "formulaValue": "A String", # Represents a formula.
+                              "stringValue": "A String", # Represents a string value.
+                                  # Leading single quotes are not included. For example, if the user typed
+                                  # `'123` into the UI, this would be represented as a `stringValue` of
+                                  # `"123"`.
+                              "errorValue": { # An error in a cell. # Represents an error.
+                                  # This field is read-only.
+                                "message": "A String", # A message with more information about the error
+                                    # (in the spreadsheet's locale).
+                                "type": "A String", # The type of error.
+                              },
+                            },
+                          ],
+                          "valuesIndex": 42, # The offset in the PivotTable.values list which the values in this
+                              # grouping should be sorted by.
+                        },
+                        "sortOrder": "A String", # The order the values in this group should be sorted.
+                        "sourceColumnOffset": 42, # The column offset of the source range that this grouping is based on.
+                            #
+                            # For example, if the source was `C10:E15`, a `sourceColumnOffset` of `0`
+                            # means this group refers to column `C`, whereas the offset `1` would refer
+                            # to column `D`.
+                      },
+                    ],
+                  },
+                  "hyperlink": "A String", # A hyperlink this cell points to, if any.
+                      # This field is read-only.  (To set it, use a `=HYPERLINK` formula.)
+                  "effectiveValue": { # The kinds of value that a cell in a spreadsheet can have. # The effective value of the cell. For cells with formulas, this will be
+                      # the calculated value.  For cells with literals, this will be
+                      # the same as the user_entered_value.
+                      # This field is read-only.
+                    "numberValue": 3.14, # Represents a double value.
+                        # Note: Dates, Times and DateTimes are represented as doubles in
+                        # "serial number" format.
+                    "boolValue": True or False, # Represents a boolean value.
+                    "formulaValue": "A String", # Represents a formula.
+                    "stringValue": "A String", # Represents a string value.
+                        # Leading single quotes are not included. For example, if the user typed
+                        # `'123` into the UI, this would be represented as a `stringValue` of
+                        # `"123"`.
+                    "errorValue": { # An error in a cell. # Represents an error.
+                        # This field is read-only.
+                      "message": "A String", # A message with more information about the error
+                          # (in the spreadsheet's locale).
+                      "type": "A String", # The type of error.
+                    },
+                  },
+                  "formattedValue": "A String", # The formatted value of the cell.
+                      # This is the value as it's shown to the user.
+                      # This field is read-only.
+                  "userEnteredValue": { # The kinds of value that a cell in a spreadsheet can have. # The value the user entered in the cell. e.g, `1234`, `'Hello'`, or `=NOW()`
+                      # Note: Dates, Times and DateTimes are represented as doubles in
+                      # serial number format.
+                    "numberValue": 3.14, # Represents a double value.
+                        # Note: Dates, Times and DateTimes are represented as doubles in
+                        # "serial number" format.
+                    "boolValue": True or False, # Represents a boolean value.
+                    "formulaValue": "A String", # Represents a formula.
+                    "stringValue": "A String", # Represents a string value.
+                        # Leading single quotes are not included. For example, if the user typed
+                        # `'123` into the UI, this would be represented as a `stringValue` of
+                        # `"123"`.
+                    "errorValue": { # An error in a cell. # Represents an error.
+                        # This field is read-only.
+                      "message": "A String", # A message with more information about the error
+                          # (in the spreadsheet's locale).
+                      "type": "A String", # The type of error.
+                    },
+                  },
+                  "note": "A String", # Any note on the cell.
+                  "effectiveFormat": { # The format of a cell. # The effective format being used by the cell.
+                      # This includes the results of applying any conditional formatting and,
+                      # if the cell contains a formula, the computed number format.
+                      # If the effective format is the default format, effective format will
+                      # not be written.
+                      # This field is read-only.
+                    "numberFormat": { # The number format of a cell. # A format describing how number values should be represented to the user.
+                      "pattern": "A String", # Pattern string used for formatting.  If not set, a default pattern based on
+                          # the user's locale will be used if necessary for the given type.
+                          # See the [Date and Number Formats guide](/sheets/guides/formats) for more
+                          # information about the supported patterns.
+                      "type": "A String", # The type of the number format.
+                          # When writing, this field must be set.
+                    },
+                    "textDirection": "A String", # The direction of the text in the cell.
+                    "padding": { # The amount of padding around the cell, in pixels. # The padding of the cell.
+                        # When updating padding, every field must be specified.
+                      "top": 42, # The top padding of the cell.
+                      "right": 42, # The right padding of the cell.
+                      "bottom": 42, # The bottom padding of the cell.
+                      "left": 42, # The left padding of the cell.
+                    },
+                    "horizontalAlignment": "A String", # The horizontal alignment of the value in the cell.
+                    "backgroundColor": { # Represents a color in the RGBA color space. This representation is designed # The background color of the cell.
+                        # for simplicity of conversion to/from color representations in various
+                        # languages over compactness; for example, the fields of this representation
+                        # can be trivially provided to the constructor of "java.awt.Color" in Java; it
+                        # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
+                        # method in iOS; and, with just a little work, it can be easily formatted into
+                        # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
+                        #
+                        # Example (Java):
+                        #
+                        #      import com.google.type.Color;
+                        #
+                        #      // ...
+                        #      public static java.awt.Color fromProto(Color protocolor) {
+                        #        float alpha = protocolor.hasAlpha()
+                        #            ? protocolor.getAlpha().getValue()
+                        #            : 1.0;
+                        #
+                        #        return new java.awt.Color(
+                        #            protocolor.getRed(),
+                        #            protocolor.getGreen(),
+                        #            protocolor.getBlue(),
+                        #            alpha);
+                        #      }
+                        #
+                        #      public static Color toProto(java.awt.Color color) {
+                        #        float red = (float) color.getRed();
+                        #        float green = (float) color.getGreen();
+                        #        float blue = (float) color.getBlue();
+                        #        float denominator = 255.0;
+                        #        Color.Builder resultBuilder =
+                        #            Color
+                        #                .newBuilder()
+                        #                .setRed(red / denominator)
+                        #                .setGreen(green / denominator)
+                        #                .setBlue(blue / denominator);
+                        #        int alpha = color.getAlpha();
+                        #        if (alpha != 255) {
+                        #          result.setAlpha(
+                        #              FloatValue
+                        #                  .newBuilder()
+                        #                  .setValue(((float) alpha) / denominator)
+                        #                  .build());
+                        #        }
+                        #        return resultBuilder.build();
+                        #      }
+                        #      // ...
+                        #
+                        # Example (iOS / Obj-C):
+                        #
+                        #      // ...
+                        #      static UIColor* fromProto(Color* protocolor) {
+                        #         float red = [protocolor red];
+                        #         float green = [protocolor green];
+                        #         float blue = [protocolor blue];
+                        #         FloatValue* alpha_wrapper = [protocolor alpha];
+                        #         float alpha = 1.0;
+                        #         if (alpha_wrapper != nil) {
+                        #           alpha = [alpha_wrapper value];
+                        #         }
+                        #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
+                        #      }
+                        #
+                        #      static Color* toProto(UIColor* color) {
+                        #          CGFloat red, green, blue, alpha;
+                        #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
+                        #            return nil;
+                        #          }
+                        #          Color* result = [Color alloc] init];
+                        #          [result setRed:red];
+                        #          [result setGreen:green];
+                        #          [result setBlue:blue];
+                        #          if (alpha <= 0.9999) {
+                        #            [result setAlpha:floatWrapperWithValue(alpha)];
+                        #          }
+                        #          [result autorelease];
+                        #          return result;
+                        #     }
+                        #     // ...
+                        #
+                        #  Example (JavaScript):
+                        #
+                        #     // ...
+                        #
+                        #     var protoToCssColor = function(rgb_color) {
+                        #        var redFrac = rgb_color.red || 0.0;
+                        #        var greenFrac = rgb_color.green || 0.0;
+                        #        var blueFrac = rgb_color.blue || 0.0;
+                        #        var red = Math.floor(redFrac * 255);
+                        #        var green = Math.floor(greenFrac * 255);
+                        #        var blue = Math.floor(blueFrac * 255);
+                        #
+                        #        if (!('alpha' in rgb_color)) {
+                        #           return rgbToCssColor_(red, green, blue);
+                        #        }
+                        #
+                        #        var alphaFrac = rgb_color.alpha.value || 0.0;
+                        #        var rgbParams = [red, green, blue].join(',');
+                        #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
+                        #     };
+                        #
+                        #     var rgbToCssColor_ = function(red, green, blue) {
+                        #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
+                        #       var hexString = rgbNumber.toString(16);
+                        #       var missingZeros = 6 - hexString.length;
+                        #       var resultBuilder = ['#'];
+                        #       for (var i = 0; i < missingZeros; i++) {
+                        #          resultBuilder.push('0');
+                        #       }
+                        #       resultBuilder.push(hexString);
+                        #       return resultBuilder.join('');
+                        #     };
+                        #
+                        #     // ...
+                      "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+                      "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
+                          # the final pixel color is defined by the equation:
+                          #
+                          #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
+                          #
+                          # This means that a value of 1.0 corresponds to a solid color, whereas
+                          # a value of 0.0 corresponds to a completely transparent color. This
+                          # uses a wrapper message rather than a simple float scalar so that it is
+                          # possible to distinguish between a default value and the value being unset.
+                          # If omitted, this color object is to be rendered as a solid color
+                          # (as if the alpha value had been explicitly given with a value of 1.0).
+                      "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
+                      "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
+                    },
+                    "verticalAlignment": "A String", # The vertical alignment of the value in the cell.
+                    "textFormat": { # The format of a run of text in a cell. # The format of the text in the cell (unless overridden by a format run).
+                        # Absent values indicate that the field isn't specified.
+                      "foregroundColor": { # Represents a color in the RGBA color space. This representation is designed # The foreground color of the text.
+                          # for simplicity of conversion to/from color representations in various
+                          # languages over compactness; for example, the fields of this representation
+                          # can be trivially provided to the constructor of "java.awt.Color" in Java; it
+                          # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
+                          # method in iOS; and, with just a little work, it can be easily formatted into
+                          # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
+                          #
+                          # Example (Java):
+                          #
+                          #      import com.google.type.Color;
+                          #
+                          #      // ...
+                          #      public static java.awt.Color fromProto(Color protocolor) {
+                          #        float alpha = protocolor.hasAlpha()
+                          #            ? protocolor.getAlpha().getValue()
+                          #            : 1.0;
+                          #
+                          #        return new java.awt.Color(
+                          #            protocolor.getRed(),
+                          #            protocolor.getGreen(),
+                          #            protocolor.getBlue(),
+                          #            alpha);
+                          #      }
+                          #
+                          #      public static Color toProto(java.awt.Color color) {
+                          #        float red = (float) color.getRed();
+                          #        float green = (float) color.getGreen();
+                          #        float blue = (float) color.getBlue();
+                          #        float denominator = 255.0;
+                          #        Color.Builder resultBuilder =
+                          #            Color
+                          #                .newBuilder()
+                          #                .setRed(red / denominator)
+                          #                .setGreen(green / denominator)
+                          #                .setBlue(blue / denominator);
+                          #        int alpha = color.getAlpha();
+                          #        if (alpha != 255) {
+                          #          result.setAlpha(
+                          #              FloatValue
+                          #                  .newBuilder()
+                          #                  .setValue(((float) alpha) / denominator)
+                          #                  .build());
+                          #        }
+                          #        return resultBuilder.build();
+                          #      }
+                          #      // ...
+                          #
+                          # Example (iOS / Obj-C):
+                          #
+                          #      // ...
+                          #      static UIColor* fromProto(Color* protocolor) {
+                          #         float red = [protocolor red];
+                          #         float green = [protocolor green];
+                          #         float blue = [protocolor blue];
+                          #         FloatValue* alpha_wrapper = [protocolor alpha];
+                          #         float alpha = 1.0;
+                          #         if (alpha_wrapper != nil) {
+                          #           alpha = [alpha_wrapper value];
+                          #         }
+                          #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
+                          #      }
+                          #
+                          #      static Color* toProto(UIColor* color) {
+                          #          CGFloat red, green, blue, alpha;
+                          #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
+                          #            return nil;
+                          #          }
+                          #          Color* result = [Color alloc] init];
+                          #          [result setRed:red];
+                          #          [result setGreen:green];
+                          #          [result setBlue:blue];
+                          #          if (alpha <= 0.9999) {
+                          #            [result setAlpha:floatWrapperWithValue(alpha)];
+                          #          }
+                          #          [result autorelease];
+                          #          return result;
+                          #     }
+                          #     // ...
+                          #
+                          #  Example (JavaScript):
+                          #
+                          #     // ...
+                          #
+                          #     var protoToCssColor = function(rgb_color) {
+                          #        var redFrac = rgb_color.red || 0.0;
+                          #        var greenFrac = rgb_color.green || 0.0;
+                          #        var blueFrac = rgb_color.blue || 0.0;
+                          #        var red = Math.floor(redFrac * 255);
+                          #        var green = Math.floor(greenFrac * 255);
+                          #        var blue = Math.floor(blueFrac * 255);
+                          #
+                          #        if (!('alpha' in rgb_color)) {
+                          #           return rgbToCssColor_(red, green, blue);
+                          #        }
+                          #
+                          #        var alphaFrac = rgb_color.alpha.value || 0.0;
+                          #        var rgbParams = [red, green, blue].join(',');
+                          #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
+                          #     };
+                          #
+                          #     var rgbToCssColor_ = function(red, green, blue) {
+                          #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
+                          #       var hexString = rgbNumber.toString(16);
+                          #       var missingZeros = 6 - hexString.length;
+                          #       var resultBuilder = ['#'];
+                          #       for (var i = 0; i < missingZeros; i++) {
+                          #          resultBuilder.push('0');
+                          #       }
+                          #       resultBuilder.push(hexString);
+                          #       return resultBuilder.join('');
+                          #     };
+                          #
+                          #     // ...
+                        "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+                        "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
+                            # the final pixel color is defined by the equation:
+                            #
+                            #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
+                            #
+                            # This means that a value of 1.0 corresponds to a solid color, whereas
+                            # a value of 0.0 corresponds to a completely transparent color. This
+                            # uses a wrapper message rather than a simple float scalar so that it is
+                            # possible to distinguish between a default value and the value being unset.
+                            # If omitted, this color object is to be rendered as a solid color
+                            # (as if the alpha value had been explicitly given with a value of 1.0).
+                        "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
+                        "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
+                      },
+                      "bold": True or False, # True if the text is bold.
+                      "strikethrough": True or False, # True if the text has a strikethrough.
+                      "fontFamily": "A String", # The font family.
+                      "fontSize": 42, # The size of the font.
+                      "italic": True or False, # True if the text is italicized.
+                      "underline": True or False, # True if the text is underlined.
+                    },
+                    "hyperlinkDisplayType": "A String", # How a hyperlink, if it exists, should be displayed in the cell.
+                    "borders": { # The borders of the cell. # The borders of the cell.
+                      "top": { # A border along a cell. # The top border of the cell.
+                        "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
+                            # for simplicity of conversion to/from color representations in various
+                            # languages over compactness; for example, the fields of this representation
+                            # can be trivially provided to the constructor of "java.awt.Color" in Java; it
+                            # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
+                            # method in iOS; and, with just a little work, it can be easily formatted into
+                            # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
+                            #
+                            # Example (Java):
+                            #
+                            #      import com.google.type.Color;
+                            #
+                            #      // ...
+                            #      public static java.awt.Color fromProto(Color protocolor) {
+                            #        float alpha = protocolor.hasAlpha()
+                            #            ? protocolor.getAlpha().getValue()
+                            #            : 1.0;
+                            #
+                            #        return new java.awt.Color(
+                            #            protocolor.getRed(),
+                            #            protocolor.getGreen(),
+                            #            protocolor.getBlue(),
+                            #            alpha);
+                            #      }
+                            #
+                            #      public static Color toProto(java.awt.Color color) {
+                            #        float red = (float) color.getRed();
+                            #        float green = (float) color.getGreen();
+                            #        float blue = (float) color.getBlue();
+                            #        float denominator = 255.0;
+                            #        Color.Builder resultBuilder =
+                            #            Color
+                            #                .newBuilder()
+                            #                .setRed(red / denominator)
+                            #                .setGreen(green / denominator)
+                            #                .setBlue(blue / denominator);
+                            #        int alpha = color.getAlpha();
+                            #        if (alpha != 255) {
+                            #          result.setAlpha(
+                            #              FloatValue
+                            #                  .newBuilder()
+                            #                  .setValue(((float) alpha) / denominator)
+                            #                  .build());
+                            #        }
+                            #        return resultBuilder.build();
+                            #      }
+                            #      // ...
+                            #
+                            # Example (iOS / Obj-C):
+                            #
+                            #      // ...
+                            #      static UIColor* fromProto(Color* protocolor) {
+                            #         float red = [protocolor red];
+                            #         float green = [protocolor green];
+                            #         float blue = [protocolor blue];
+                            #         FloatValue* alpha_wrapper = [protocolor alpha];
+                            #         float alpha = 1.0;
+                            #         if (alpha_wrapper != nil) {
+                            #           alpha = [alpha_wrapper value];
+                            #         }
+                            #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
+                            #      }
+                            #
+                            #      static Color* toProto(UIColor* color) {
+                            #          CGFloat red, green, blue, alpha;
+                            #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
+                            #            return nil;
+                            #          }
+                            #          Color* result = [Color alloc] init];
+                            #          [result setRed:red];
+                            #          [result setGreen:green];
+                            #          [result setBlue:blue];
+                            #          if (alpha <= 0.9999) {
+                            #            [result setAlpha:floatWrapperWithValue(alpha)];
+                            #          }
+                            #          [result autorelease];
+                            #          return result;
+                            #     }
+                            #     // ...
+                            #
+                            #  Example (JavaScript):
+                            #
+                            #     // ...
+                            #
+                            #     var protoToCssColor = function(rgb_color) {
+                            #        var redFrac = rgb_color.red || 0.0;
+                            #        var greenFrac = rgb_color.green || 0.0;
+                            #        var blueFrac = rgb_color.blue || 0.0;
+                            #        var red = Math.floor(redFrac * 255);
+                            #        var green = Math.floor(greenFrac * 255);
+                            #        var blue = Math.floor(blueFrac * 255);
+                            #
+                            #        if (!('alpha' in rgb_color)) {
+                            #           return rgbToCssColor_(red, green, blue);
+                            #        }
+                            #
+                            #        var alphaFrac = rgb_color.alpha.value || 0.0;
+                            #        var rgbParams = [red, green, blue].join(',');
+                            #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
+                            #     };
+                            #
+                            #     var rgbToCssColor_ = function(red, green, blue) {
+                            #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
+                            #       var hexString = rgbNumber.toString(16);
+                            #       var missingZeros = 6 - hexString.length;
+                            #       var resultBuilder = ['#'];
+                            #       for (var i = 0; i < missingZeros; i++) {
+                            #          resultBuilder.push('0');
+                            #       }
+                            #       resultBuilder.push(hexString);
+                            #       return resultBuilder.join('');
+                            #     };
+                            #
+                            #     // ...
+                          "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+                          "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
+                              # the final pixel color is defined by the equation:
+                              #
+                              #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
+                              #
+                              # This means that a value of 1.0 corresponds to a solid color, whereas
+                              # a value of 0.0 corresponds to a completely transparent color. This
+                              # uses a wrapper message rather than a simple float scalar so that it is
+                              # possible to distinguish between a default value and the value being unset.
+                              # If omitted, this color object is to be rendered as a solid color
+                              # (as if the alpha value had been explicitly given with a value of 1.0).
+                          "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
+                          "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
+                        },
+                        "width": 42, # The width of the border, in pixels.
+                            # Deprecated; the width is determined by the "style" field.
+                        "style": "A String", # The style of the border.
+                      },
+                      "right": { # A border along a cell. # The right border of the cell.
+                        "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
+                            # for simplicity of conversion to/from color representations in various
+                            # languages over compactness; for example, the fields of this representation
+                            # can be trivially provided to the constructor of "java.awt.Color" in Java; it
+                            # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
+                            # method in iOS; and, with just a little work, it can be easily formatted into
+                            # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
+                            #
+                            # Example (Java):
+                            #
+                            #      import com.google.type.Color;
+                            #
+                            #      // ...
+                            #      public static java.awt.Color fromProto(Color protocolor) {
+                            #        float alpha = protocolor.hasAlpha()
+                            #            ? protocolor.getAlpha().getValue()
+                            #            : 1.0;
+                            #
+                            #        return new java.awt.Color(
+                            #            protocolor.getRed(),
+                            #            protocolor.getGreen(),
+                            #            protocolor.getBlue(),
+                            #            alpha);
+                            #      }
+                            #
+                            #      public static Color toProto(java.awt.Color color) {
+                            #        float red = (float) color.getRed();
+                            #        float green = (float) color.getGreen();
+                            #        float blue = (float) color.getBlue();
+                            #        float denominator = 255.0;
+                            #        Color.Builder resultBuilder =
+                            #            Color
+                            #                .newBuilder()
+                            #                .setRed(red / denominator)
+                            #                .setGreen(green / denominator)
+                            #                .setBlue(blue / denominator);
+                            #        int alpha = color.getAlpha();
+                            #        if (alpha != 255) {
+                            #          result.setAlpha(
+                            #              FloatValue
+                            #                  .newBuilder()
+                            #                  .setValue(((float) alpha) / denominator)
+                            #                  .build());
+                            #        }
+                            #        return resultBuilder.build();
+                            #      }
+                            #      // ...
+                            #
+                            # Example (iOS / Obj-C):
+                            #
+                            #      // ...
+                            #      static UIColor* fromProto(Color* protocolor) {
+                            #         float red = [protocolor red];
+                            #         float green = [protocolor green];
+                            #         float blue = [protocolor blue];
+                            #         FloatValue* alpha_wrapper = [protocolor alpha];
+                            #         float alpha = 1.0;
+                            #         if (alpha_wrapper != nil) {
+                            #           alpha = [alpha_wrapper value];
+                            #         }
+                            #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
+                            #      }
+                            #
+                            #      static Color* toProto(UIColor* color) {
+                            #          CGFloat red, green, blue, alpha;
+                            #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
+                            #            return nil;
+                            #          }
+                            #          Color* result = [Color alloc] init];
+                            #          [result setRed:red];
+                            #          [result setGreen:green];
+                            #          [result setBlue:blue];
+                            #          if (alpha <= 0.9999) {
+                            #            [result setAlpha:floatWrapperWithValue(alpha)];
+                            #          }
+                            #          [result autorelease];
+                            #          return result;
+                            #     }
+                            #     // ...
+                            #
+                            #  Example (JavaScript):
+                            #
+                            #     // ...
+                            #
+                            #     var protoToCssColor = function(rgb_color) {
+                            #        var redFrac = rgb_color.red || 0.0;
+                            #        var greenFrac = rgb_color.green || 0.0;
+                            #        var blueFrac = rgb_color.blue || 0.0;
+                            #        var red = Math.floor(redFrac * 255);
+                            #        var green = Math.floor(greenFrac * 255);
+                            #        var blue = Math.floor(blueFrac * 255);
+                            #
+                            #        if (!('alpha' in rgb_color)) {
+                            #           return rgbToCssColor_(red, green, blue);
+                            #        }
+                            #
+                            #        var alphaFrac = rgb_color.alpha.value || 0.0;
+                            #        var rgbParams = [red, green, blue].join(',');
+                            #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
+                            #     };
+                            #
+                            #     var rgbToCssColor_ = function(red, green, blue) {
+                            #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
+                            #       var hexString = rgbNumber.toString(16);
+                            #       var missingZeros = 6 - hexString.length;
+                            #       var resultBuilder = ['#'];
+                            #       for (var i = 0; i < missingZeros; i++) {
+                            #          resultBuilder.push('0');
+                            #       }
+                            #       resultBuilder.push(hexString);
+                            #       return resultBuilder.join('');
+                            #     };
+                            #
+                            #     // ...
+                          "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+                          "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
+                              # the final pixel color is defined by the equation:
+                              #
+                              #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
+                              #
+                              # This means that a value of 1.0 corresponds to a solid color, whereas
+                              # a value of 0.0 corresponds to a completely transparent color. This
+                              # uses a wrapper message rather than a simple float scalar so that it is
+                              # possible to distinguish between a default value and the value being unset.
+                              # If omitted, this color object is to be rendered as a solid color
+                              # (as if the alpha value had been explicitly given with a value of 1.0).
+                          "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
+                          "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
+                        },
+                        "width": 42, # The width of the border, in pixels.
+                            # Deprecated; the width is determined by the "style" field.
+                        "style": "A String", # The style of the border.
+                      },
+                      "bottom": { # A border along a cell. # The bottom border of the cell.
+                        "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
+                            # for simplicity of conversion to/from color representations in various
+                            # languages over compactness; for example, the fields of this representation
+                            # can be trivially provided to the constructor of "java.awt.Color" in Java; it
+                            # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
+                            # method in iOS; and, with just a little work, it can be easily formatted into
+                            # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
+                            #
+                            # Example (Java):
+                            #
+                            #      import com.google.type.Color;
+                            #
+                            #      // ...
+                            #      public static java.awt.Color fromProto(Color protocolor) {
+                            #        float alpha = protocolor.hasAlpha()
+                            #            ? protocolor.getAlpha().getValue()
+                            #            : 1.0;
+                            #
+                            #        return new java.awt.Color(
+                            #            protocolor.getRed(),
+                            #            protocolor.getGreen(),
+                            #            protocolor.getBlue(),
+                            #            alpha);
+                            #      }
+                            #
+                            #      public static Color toProto(java.awt.Color color) {
+                            #        float red = (float) color.getRed();
+                            #        float green = (float) color.getGreen();
+                            #        float blue = (float) color.getBlue();
+                            #        float denominator = 255.0;
+                            #        Color.Builder resultBuilder =
+                            #            Color
+                            #                .newBuilder()
+                            #                .setRed(red / denominator)
+                            #                .setGreen(green / denominator)
+                            #                .setBlue(blue / denominator);
+                            #        int alpha = color.getAlpha();
+                            #        if (alpha != 255) {
+                            #          result.setAlpha(
+                            #              FloatValue
+                            #                  .newBuilder()
+                            #                  .setValue(((float) alpha) / denominator)
+                            #                  .build());
+                            #        }
+                            #        return resultBuilder.build();
+                            #      }
+                            #      // ...
+                            #
+                            # Example (iOS / Obj-C):
+                            #
+                            #      // ...
+                            #      static UIColor* fromProto(Color* protocolor) {
+                            #         float red = [protocolor red];
+                            #         float green = [protocolor green];
+                            #         float blue = [protocolor blue];
+                            #         FloatValue* alpha_wrapper = [protocolor alpha];
+                            #         float alpha = 1.0;
+                            #         if (alpha_wrapper != nil) {
+                            #           alpha = [alpha_wrapper value];
+                            #         }
+                            #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
+                            #      }
+                            #
+                            #      static Color* toProto(UIColor* color) {
+                            #          CGFloat red, green, blue, alpha;
+                            #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
+                            #            return nil;
+                            #          }
+                            #          Color* result = [Color alloc] init];
+                            #          [result setRed:red];
+                            #          [result setGreen:green];
+                            #          [result setBlue:blue];
+                            #          if (alpha <= 0.9999) {
+                            #            [result setAlpha:floatWrapperWithValue(alpha)];
+                            #          }
+                            #          [result autorelease];
+                            #          return result;
+                            #     }
+                            #     // ...
+                            #
+                            #  Example (JavaScript):
+                            #
+                            #     // ...
+                            #
+                            #     var protoToCssColor = function(rgb_color) {
+                            #        var redFrac = rgb_color.red || 0.0;
+                            #        var greenFrac = rgb_color.green || 0.0;
+                            #        var blueFrac = rgb_color.blue || 0.0;
+                            #        var red = Math.floor(redFrac * 255);
+                            #        var green = Math.floor(greenFrac * 255);
+                            #        var blue = Math.floor(blueFrac * 255);
+                            #
+                            #        if (!('alpha' in rgb_color)) {
+                            #           return rgbToCssColor_(red, green, blue);
+                            #        }
+                            #
+                            #        var alphaFrac = rgb_color.alpha.value || 0.0;
+                            #        var rgbParams = [red, green, blue].join(',');
+                            #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
+                            #     };
+                            #
+                            #     var rgbToCssColor_ = function(red, green, blue) {
+                            #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
+                            #       var hexString = rgbNumber.toString(16);
+                            #       var missingZeros = 6 - hexString.length;
+                            #       var resultBuilder = ['#'];
+                            #       for (var i = 0; i < missingZeros; i++) {
+                            #          resultBuilder.push('0');
+                            #       }
+                            #       resultBuilder.push(hexString);
+                            #       return resultBuilder.join('');
+                            #     };
+                            #
+                            #     // ...
+                          "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+                          "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
+                              # the final pixel color is defined by the equation:
+                              #
+                              #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
+                              #
+                              # This means that a value of 1.0 corresponds to a solid color, whereas
+                              # a value of 0.0 corresponds to a completely transparent color. This
+                              # uses a wrapper message rather than a simple float scalar so that it is
+                              # possible to distinguish between a default value and the value being unset.
+                              # If omitted, this color object is to be rendered as a solid color
+                              # (as if the alpha value had been explicitly given with a value of 1.0).
+                          "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
+                          "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
+                        },
+                        "width": 42, # The width of the border, in pixels.
+                            # Deprecated; the width is determined by the "style" field.
+                        "style": "A String", # The style of the border.
+                      },
+                      "left": { # A border along a cell. # The left border of the cell.
+                        "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
+                            # for simplicity of conversion to/from color representations in various
+                            # languages over compactness; for example, the fields of this representation
+                            # can be trivially provided to the constructor of "java.awt.Color" in Java; it
+                            # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
+                            # method in iOS; and, with just a little work, it can be easily formatted into
+                            # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
+                            #
+                            # Example (Java):
+                            #
+                            #      import com.google.type.Color;
+                            #
+                            #      // ...
+                            #      public static java.awt.Color fromProto(Color protocolor) {
+                            #        float alpha = protocolor.hasAlpha()
+                            #            ? protocolor.getAlpha().getValue()
+                            #            : 1.0;
+                            #
+                            #        return new java.awt.Color(
+                            #            protocolor.getRed(),
+                            #            protocolor.getGreen(),
+                            #            protocolor.getBlue(),
+                            #            alpha);
+                            #      }
+                            #
+                            #      public static Color toProto(java.awt.Color color) {
+                            #        float red = (float) color.getRed();
+                            #        float green = (float) color.getGreen();
+                            #        float blue = (float) color.getBlue();
+                            #        float denominator = 255.0;
+                            #        Color.Builder resultBuilder =
+                            #            Color
+                            #                .newBuilder()
+                            #                .setRed(red / denominator)
+                            #                .setGreen(green / denominator)
+                            #                .setBlue(blue / denominator);
+                            #        int alpha = color.getAlpha();
+                            #        if (alpha != 255) {
+                            #          result.setAlpha(
+                            #              FloatValue
+                            #                  .newBuilder()
+                            #                  .setValue(((float) alpha) / denominator)
+                            #                  .build());
+                            #        }
+                            #        return resultBuilder.build();
+                            #      }
+                            #      // ...
+                            #
+                            # Example (iOS / Obj-C):
+                            #
+                            #      // ...
+                            #      static UIColor* fromProto(Color* protocolor) {
+                            #         float red = [protocolor red];
+                            #         float green = [protocolor green];
+                            #         float blue = [protocolor blue];
+                            #         FloatValue* alpha_wrapper = [protocolor alpha];
+                            #         float alpha = 1.0;
+                            #         if (alpha_wrapper != nil) {
+                            #           alpha = [alpha_wrapper value];
+                            #         }
+                            #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
+                            #      }
+                            #
+                            #      static Color* toProto(UIColor* color) {
+                            #          CGFloat red, green, blue, alpha;
+                            #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
+                            #            return nil;
+                            #          }
+                            #          Color* result = [Color alloc] init];
+                            #          [result setRed:red];
+                            #          [result setGreen:green];
+                            #          [result setBlue:blue];
+                            #          if (alpha <= 0.9999) {
+                            #            [result setAlpha:floatWrapperWithValue(alpha)];
+                            #          }
+                            #          [result autorelease];
+                            #          return result;
+                            #     }
+                            #     // ...
+                            #
+                            #  Example (JavaScript):
+                            #
+                            #     // ...
+                            #
+                            #     var protoToCssColor = function(rgb_color) {
+                            #        var redFrac = rgb_color.red || 0.0;
+                            #        var greenFrac = rgb_color.green || 0.0;
+                            #        var blueFrac = rgb_color.blue || 0.0;
+                            #        var red = Math.floor(redFrac * 255);
+                            #        var green = Math.floor(greenFrac * 255);
+                            #        var blue = Math.floor(blueFrac * 255);
+                            #
+                            #        if (!('alpha' in rgb_color)) {
+                            #           return rgbToCssColor_(red, green, blue);
+                            #        }
+                            #
+                            #        var alphaFrac = rgb_color.alpha.value || 0.0;
+                            #        var rgbParams = [red, green, blue].join(',');
+                            #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
+                            #     };
+                            #
+                            #     var rgbToCssColor_ = function(red, green, blue) {
+                            #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
+                            #       var hexString = rgbNumber.toString(16);
+                            #       var missingZeros = 6 - hexString.length;
+                            #       var resultBuilder = ['#'];
+                            #       for (var i = 0; i < missingZeros; i++) {
+                            #          resultBuilder.push('0');
+                            #       }
+                            #       resultBuilder.push(hexString);
+                            #       return resultBuilder.join('');
+                            #     };
+                            #
+                            #     // ...
+                          "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+                          "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
+                              # the final pixel color is defined by the equation:
+                              #
+                              #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
+                              #
+                              # This means that a value of 1.0 corresponds to a solid color, whereas
+                              # a value of 0.0 corresponds to a completely transparent color. This
+                              # uses a wrapper message rather than a simple float scalar so that it is
+                              # possible to distinguish between a default value and the value being unset.
+                              # If omitted, this color object is to be rendered as a solid color
+                              # (as if the alpha value had been explicitly given with a value of 1.0).
+                          "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
+                          "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
+                        },
+                        "width": 42, # The width of the border, in pixels.
+                            # Deprecated; the width is determined by the "style" field.
+                        "style": "A String", # The style of the border.
+                      },
+                    },
+                    "wrapStrategy": "A String", # The wrap strategy for the value in the cell.
+                  },
+                  "userEnteredFormat": { # The format of a cell. # The format the user entered for the cell.
+                      #
+                      # When writing, the new format will be merged with the existing format.
+                    "numberFormat": { # The number format of a cell. # A format describing how number values should be represented to the user.
+                      "pattern": "A String", # Pattern string used for formatting.  If not set, a default pattern based on
+                          # the user's locale will be used if necessary for the given type.
+                          # See the [Date and Number Formats guide](/sheets/guides/formats) for more
+                          # information about the supported patterns.
+                      "type": "A String", # The type of the number format.
+                          # When writing, this field must be set.
+                    },
+                    "textDirection": "A String", # The direction of the text in the cell.
+                    "padding": { # The amount of padding around the cell, in pixels. # The padding of the cell.
+                        # When updating padding, every field must be specified.
+                      "top": 42, # The top padding of the cell.
+                      "right": 42, # The right padding of the cell.
+                      "bottom": 42, # The bottom padding of the cell.
+                      "left": 42, # The left padding of the cell.
+                    },
+                    "horizontalAlignment": "A String", # The horizontal alignment of the value in the cell.
+                    "backgroundColor": { # Represents a color in the RGBA color space. This representation is designed # The background color of the cell.
+                        # for simplicity of conversion to/from color representations in various
+                        # languages over compactness; for example, the fields of this representation
+                        # can be trivially provided to the constructor of "java.awt.Color" in Java; it
+                        # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
+                        # method in iOS; and, with just a little work, it can be easily formatted into
+                        # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
+                        #
+                        # Example (Java):
+                        #
+                        #      import com.google.type.Color;
+                        #
+                        #      // ...
+                        #      public static java.awt.Color fromProto(Color protocolor) {
+                        #        float alpha = protocolor.hasAlpha()
+                        #            ? protocolor.getAlpha().getValue()
+                        #            : 1.0;
+                        #
+                        #        return new java.awt.Color(
+                        #            protocolor.getRed(),
+                        #            protocolor.getGreen(),
+                        #            protocolor.getBlue(),
+                        #            alpha);
+                        #      }
+                        #
+                        #      public static Color toProto(java.awt.Color color) {
+                        #        float red = (float) color.getRed();
+                        #        float green = (float) color.getGreen();
+                        #        float blue = (float) color.getBlue();
+                        #        float denominator = 255.0;
+                        #        Color.Builder resultBuilder =
+                        #            Color
+                        #                .newBuilder()
+                        #                .setRed(red / denominator)
+                        #                .setGreen(green / denominator)
+                        #                .setBlue(blue / denominator);
+                        #        int alpha = color.getAlpha();
+                        #        if (alpha != 255) {
+                        #          result.setAlpha(
+                        #              FloatValue
+                        #                  .newBuilder()
+                        #                  .setValue(((float) alpha) / denominator)
+                        #                  .build());
+                        #        }
+                        #        return resultBuilder.build();
+                        #      }
+                        #      // ...
+                        #
+                        # Example (iOS / Obj-C):
+                        #
+                        #      // ...
+                        #      static UIColor* fromProto(Color* protocolor) {
+                        #         float red = [protocolor red];
+                        #         float green = [protocolor green];
+                        #         float blue = [protocolor blue];
+                        #         FloatValue* alpha_wrapper = [protocolor alpha];
+                        #         float alpha = 1.0;
+                        #         if (alpha_wrapper != nil) {
+                        #           alpha = [alpha_wrapper value];
+                        #         }
+                        #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
+                        #      }
+                        #
+                        #      static Color* toProto(UIColor* color) {
+                        #          CGFloat red, green, blue, alpha;
+                        #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
+                        #            return nil;
+                        #          }
+                        #          Color* result = [Color alloc] init];
+                        #          [result setRed:red];
+                        #          [result setGreen:green];
+                        #          [result setBlue:blue];
+                        #          if (alpha <= 0.9999) {
+                        #            [result setAlpha:floatWrapperWithValue(alpha)];
+                        #          }
+                        #          [result autorelease];
+                        #          return result;
+                        #     }
+                        #     // ...
+                        #
+                        #  Example (JavaScript):
+                        #
+                        #     // ...
+                        #
+                        #     var protoToCssColor = function(rgb_color) {
+                        #        var redFrac = rgb_color.red || 0.0;
+                        #        var greenFrac = rgb_color.green || 0.0;
+                        #        var blueFrac = rgb_color.blue || 0.0;
+                        #        var red = Math.floor(redFrac * 255);
+                        #        var green = Math.floor(greenFrac * 255);
+                        #        var blue = Math.floor(blueFrac * 255);
+                        #
+                        #        if (!('alpha' in rgb_color)) {
+                        #           return rgbToCssColor_(red, green, blue);
+                        #        }
+                        #
+                        #        var alphaFrac = rgb_color.alpha.value || 0.0;
+                        #        var rgbParams = [red, green, blue].join(',');
+                        #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
+                        #     };
+                        #
+                        #     var rgbToCssColor_ = function(red, green, blue) {
+                        #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
+                        #       var hexString = rgbNumber.toString(16);
+                        #       var missingZeros = 6 - hexString.length;
+                        #       var resultBuilder = ['#'];
+                        #       for (var i = 0; i < missingZeros; i++) {
+                        #          resultBuilder.push('0');
+                        #       }
+                        #       resultBuilder.push(hexString);
+                        #       return resultBuilder.join('');
+                        #     };
+                        #
+                        #     // ...
+                      "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+                      "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
+                          # the final pixel color is defined by the equation:
+                          #
+                          #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
+                          #
+                          # This means that a value of 1.0 corresponds to a solid color, whereas
+                          # a value of 0.0 corresponds to a completely transparent color. This
+                          # uses a wrapper message rather than a simple float scalar so that it is
+                          # possible to distinguish between a default value and the value being unset.
+                          # If omitted, this color object is to be rendered as a solid color
+                          # (as if the alpha value had been explicitly given with a value of 1.0).
+                      "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
+                      "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
+                    },
+                    "verticalAlignment": "A String", # The vertical alignment of the value in the cell.
+                    "textFormat": { # The format of a run of text in a cell. # The format of the text in the cell (unless overridden by a format run).
+                        # Absent values indicate that the field isn't specified.
+                      "foregroundColor": { # Represents a color in the RGBA color space. This representation is designed # The foreground color of the text.
+                          # for simplicity of conversion to/from color representations in various
+                          # languages over compactness; for example, the fields of this representation
+                          # can be trivially provided to the constructor of "java.awt.Color" in Java; it
+                          # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
+                          # method in iOS; and, with just a little work, it can be easily formatted into
+                          # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
+                          #
+                          # Example (Java):
+                          #
+                          #      import com.google.type.Color;
+                          #
+                          #      // ...
+                          #      public static java.awt.Color fromProto(Color protocolor) {
+                          #        float alpha = protocolor.hasAlpha()
+                          #            ? protocolor.getAlpha().getValue()
+                          #            : 1.0;
+                          #
+                          #        return new java.awt.Color(
+                          #            protocolor.getRed(),
+                          #            protocolor.getGreen(),
+                          #            protocolor.getBlue(),
+                          #            alpha);
+                          #      }
+                          #
+                          #      public static Color toProto(java.awt.Color color) {
+                          #        float red = (float) color.getRed();
+                          #        float green = (float) color.getGreen();
+                          #        float blue = (float) color.getBlue();
+                          #        float denominator = 255.0;
+                          #        Color.Builder resultBuilder =
+                          #            Color
+                          #                .newBuilder()
+                          #                .setRed(red / denominator)
+                          #                .setGreen(green / denominator)
+                          #                .setBlue(blue / denominator);
+                          #        int alpha = color.getAlpha();
+                          #        if (alpha != 255) {
+                          #          result.setAlpha(
+                          #              FloatValue
+                          #                  .newBuilder()
+                          #                  .setValue(((float) alpha) / denominator)
+                          #                  .build());
+                          #        }
+                          #        return resultBuilder.build();
+                          #      }
+                          #      // ...
+                          #
+                          # Example (iOS / Obj-C):
+                          #
+                          #      // ...
+                          #      static UIColor* fromProto(Color* protocolor) {
+                          #         float red = [protocolor red];
+                          #         float green = [protocolor green];
+                          #         float blue = [protocolor blue];
+                          #         FloatValue* alpha_wrapper = [protocolor alpha];
+                          #         float alpha = 1.0;
+                          #         if (alpha_wrapper != nil) {
+                          #           alpha = [alpha_wrapper value];
+                          #         }
+                          #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
+                          #      }
+                          #
+                          #      static Color* toProto(UIColor* color) {
+                          #          CGFloat red, green, blue, alpha;
+                          #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
+                          #            return nil;
+                          #          }
+                          #          Color* result = [Color alloc] init];
+                          #          [result setRed:red];
+                          #          [result setGreen:green];
+                          #          [result setBlue:blue];
+                          #          if (alpha <= 0.9999) {
+                          #            [result setAlpha:floatWrapperWithValue(alpha)];
+                          #          }
+                          #          [result autorelease];
+                          #          return result;
+                          #     }
+                          #     // ...
+                          #
+                          #  Example (JavaScript):
+                          #
+                          #     // ...
+                          #
+                          #     var protoToCssColor = function(rgb_color) {
+                          #        var redFrac = rgb_color.red || 0.0;
+                          #        var greenFrac = rgb_color.green || 0.0;
+                          #        var blueFrac = rgb_color.blue || 0.0;
+                          #        var red = Math.floor(redFrac * 255);
+                          #        var green = Math.floor(greenFrac * 255);
+                          #        var blue = Math.floor(blueFrac * 255);
+                          #
+                          #        if (!('alpha' in rgb_color)) {
+                          #           return rgbToCssColor_(red, green, blue);
+                          #        }
+                          #
+                          #        var alphaFrac = rgb_color.alpha.value || 0.0;
+                          #        var rgbParams = [red, green, blue].join(',');
+                          #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
+                          #     };
+                          #
+                          #     var rgbToCssColor_ = function(red, green, blue) {
+                          #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
+                          #       var hexString = rgbNumber.toString(16);
+                          #       var missingZeros = 6 - hexString.length;
+                          #       var resultBuilder = ['#'];
+                          #       for (var i = 0; i < missingZeros; i++) {
+                          #          resultBuilder.push('0');
+                          #       }
+                          #       resultBuilder.push(hexString);
+                          #       return resultBuilder.join('');
+                          #     };
+                          #
+                          #     // ...
+                        "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+                        "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
+                            # the final pixel color is defined by the equation:
+                            #
+                            #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
+                            #
+                            # This means that a value of 1.0 corresponds to a solid color, whereas
+                            # a value of 0.0 corresponds to a completely transparent color. This
+                            # uses a wrapper message rather than a simple float scalar so that it is
+                            # possible to distinguish between a default value and the value being unset.
+                            # If omitted, this color object is to be rendered as a solid color
+                            # (as if the alpha value had been explicitly given with a value of 1.0).
+                        "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
+                        "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
+                      },
+                      "bold": True or False, # True if the text is bold.
+                      "strikethrough": True or False, # True if the text has a strikethrough.
+                      "fontFamily": "A String", # The font family.
+                      "fontSize": 42, # The size of the font.
+                      "italic": True or False, # True if the text is italicized.
+                      "underline": True or False, # True if the text is underlined.
+                    },
+                    "hyperlinkDisplayType": "A String", # How a hyperlink, if it exists, should be displayed in the cell.
+                    "borders": { # The borders of the cell. # The borders of the cell.
+                      "top": { # A border along a cell. # The top border of the cell.
+                        "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
+                            # for simplicity of conversion to/from color representations in various
+                            # languages over compactness; for example, the fields of this representation
+                            # can be trivially provided to the constructor of "java.awt.Color" in Java; it
+                            # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
+                            # method in iOS; and, with just a little work, it can be easily formatted into
+                            # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
+                            #
+                            # Example (Java):
+                            #
+                            #      import com.google.type.Color;
+                            #
+                            #      // ...
+                            #      public static java.awt.Color fromProto(Color protocolor) {
+                            #        float alpha = protocolor.hasAlpha()
+                            #            ? protocolor.getAlpha().getValue()
+                            #            : 1.0;
+                            #
+                            #        return new java.awt.Color(
+                            #            protocolor.getRed(),
+                            #            protocolor.getGreen(),
+                            #            protocolor.getBlue(),
+                            #            alpha);
+                            #      }
+                            #
+                            #      public static Color toProto(java.awt.Color color) {
+                            #        float red = (float) color.getRed();
+                            #        float green = (float) color.getGreen();
+                            #        float blue = (float) color.getBlue();
+                            #        float denominator = 255.0;
+                            #        Color.Builder resultBuilder =
+                            #            Color
+                            #                .newBuilder()
+                            #                .setRed(red / denominator)
+                            #                .setGreen(green / denominator)
+                            #                .setBlue(blue / denominator);
+                            #        int alpha = color.getAlpha();
+                            #        if (alpha != 255) {
+                            #          result.setAlpha(
+                            #              FloatValue
+                            #                  .newBuilder()
+                            #                  .setValue(((float) alpha) / denominator)
+                            #                  .build());
+                            #        }
+                            #        return resultBuilder.build();
+                            #      }
+                            #      // ...
+                            #
+                            # Example (iOS / Obj-C):
+                            #
+                            #      // ...
+                            #      static UIColor* fromProto(Color* protocolor) {
+                            #         float red = [protocolor red];
+                            #         float green = [protocolor green];
+                            #         float blue = [protocolor blue];
+                            #         FloatValue* alpha_wrapper = [protocolor alpha];
+                            #         float alpha = 1.0;
+                            #         if (alpha_wrapper != nil) {
+                            #           alpha = [alpha_wrapper value];
+                            #         }
+                            #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
+                            #      }
+                            #
+                            #      static Color* toProto(UIColor* color) {
+                            #          CGFloat red, green, blue, alpha;
+                            #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
+                            #            return nil;
+                            #          }
+                            #          Color* result = [Color alloc] init];
+                            #          [result setRed:red];
+                            #          [result setGreen:green];
+                            #          [result setBlue:blue];
+                            #          if (alpha <= 0.9999) {
+                            #            [result setAlpha:floatWrapperWithValue(alpha)];
+                            #          }
+                            #          [result autorelease];
+                            #          return result;
+                            #     }
+                            #     // ...
+                            #
+                            #  Example (JavaScript):
+                            #
+                            #     // ...
+                            #
+                            #     var protoToCssColor = function(rgb_color) {
+                            #        var redFrac = rgb_color.red || 0.0;
+                            #        var greenFrac = rgb_color.green || 0.0;
+                            #        var blueFrac = rgb_color.blue || 0.0;
+                            #        var red = Math.floor(redFrac * 255);
+                            #        var green = Math.floor(greenFrac * 255);
+                            #        var blue = Math.floor(blueFrac * 255);
+                            #
+                            #        if (!('alpha' in rgb_color)) {
+                            #           return rgbToCssColor_(red, green, blue);
+                            #        }
+                            #
+                            #        var alphaFrac = rgb_color.alpha.value || 0.0;
+                            #        var rgbParams = [red, green, blue].join(',');
+                            #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
+                            #     };
+                            #
+                            #     var rgbToCssColor_ = function(red, green, blue) {
+                            #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
+                            #       var hexString = rgbNumber.toString(16);
+                            #       var missingZeros = 6 - hexString.length;
+                            #       var resultBuilder = ['#'];
+                            #       for (var i = 0; i < missingZeros; i++) {
+                            #          resultBuilder.push('0');
+                            #       }
+                            #       resultBuilder.push(hexString);
+                            #       return resultBuilder.join('');
+                            #     };
+                            #
+                            #     // ...
+                          "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+                          "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
+                              # the final pixel color is defined by the equation:
+                              #
+                              #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
+                              #
+                              # This means that a value of 1.0 corresponds to a solid color, whereas
+                              # a value of 0.0 corresponds to a completely transparent color. This
+                              # uses a wrapper message rather than a simple float scalar so that it is
+                              # possible to distinguish between a default value and the value being unset.
+                              # If omitted, this color object is to be rendered as a solid color
+                              # (as if the alpha value had been explicitly given with a value of 1.0).
+                          "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
+                          "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
+                        },
+                        "width": 42, # The width of the border, in pixels.
+                            # Deprecated; the width is determined by the "style" field.
+                        "style": "A String", # The style of the border.
+                      },
+                      "right": { # A border along a cell. # The right border of the cell.
+                        "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
+                            # for simplicity of conversion to/from color representations in various
+                            # languages over compactness; for example, the fields of this representation
+                            # can be trivially provided to the constructor of "java.awt.Color" in Java; it
+                            # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
+                            # method in iOS; and, with just a little work, it can be easily formatted into
+                            # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
+                            #
+                            # Example (Java):
+                            #
+                            #      import com.google.type.Color;
+                            #
+                            #      // ...
+                            #      public static java.awt.Color fromProto(Color protocolor) {
+                            #        float alpha = protocolor.hasAlpha()
+                            #            ? protocolor.getAlpha().getValue()
+                            #            : 1.0;
+                            #
+                            #        return new java.awt.Color(
+                            #            protocolor.getRed(),
+                            #            protocolor.getGreen(),
+                            #            protocolor.getBlue(),
+                            #            alpha);
+                            #      }
+                            #
+                            #      public static Color toProto(java.awt.Color color) {
+                            #        float red = (float) color.getRed();
+                            #        float green = (float) color.getGreen();
+                            #        float blue = (float) color.getBlue();
+                            #        float denominator = 255.0;
+                            #        Color.Builder resultBuilder =
+                            #            Color
+                            #                .newBuilder()
+                            #                .setRed(red / denominator)
+                            #                .setGreen(green / denominator)
+                            #                .setBlue(blue / denominator);
+                            #        int alpha = color.getAlpha();
+                            #        if (alpha != 255) {
+                            #          result.setAlpha(
+                            #              FloatValue
+                            #                  .newBuilder()
+                            #                  .setValue(((float) alpha) / denominator)
+                            #                  .build());
+                            #        }
+                            #        return resultBuilder.build();
+                            #      }
+                            #      // ...
+                            #
+                            # Example (iOS / Obj-C):
+                            #
+                            #      // ...
+                            #      static UIColor* fromProto(Color* protocolor) {
+                            #         float red = [protocolor red];
+                            #         float green = [protocolor green];
+                            #         float blue = [protocolor blue];
+                            #         FloatValue* alpha_wrapper = [protocolor alpha];
+                            #         float alpha = 1.0;
+                            #         if (alpha_wrapper != nil) {
+                            #           alpha = [alpha_wrapper value];
+                            #         }
+                            #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
+                            #      }
+                            #
+                            #      static Color* toProto(UIColor* color) {
+                            #          CGFloat red, green, blue, alpha;
+                            #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
+                            #            return nil;
+                            #          }
+                            #          Color* result = [Color alloc] init];
+                            #          [result setRed:red];
+                            #          [result setGreen:green];
+                            #          [result setBlue:blue];
+                            #          if (alpha <= 0.9999) {
+                            #            [result setAlpha:floatWrapperWithValue(alpha)];
+                            #          }
+                            #          [result autorelease];
+                            #          return result;
+                            #     }
+                            #     // ...
+                            #
+                            #  Example (JavaScript):
+                            #
+                            #     // ...
+                            #
+                            #     var protoToCssColor = function(rgb_color) {
+                            #        var redFrac = rgb_color.red || 0.0;
+                            #        var greenFrac = rgb_color.green || 0.0;
+                            #        var blueFrac = rgb_color.blue || 0.0;
+                            #        var red = Math.floor(redFrac * 255);
+                            #        var green = Math.floor(greenFrac * 255);
+                            #        var blue = Math.floor(blueFrac * 255);
+                            #
+                            #        if (!('alpha' in rgb_color)) {
+                            #           return rgbToCssColor_(red, green, blue);
+                            #        }
+                            #
+                            #        var alphaFrac = rgb_color.alpha.value || 0.0;
+                            #        var rgbParams = [red, green, blue].join(',');
+                            #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
+                            #     };
+                            #
+                            #     var rgbToCssColor_ = function(red, green, blue) {
+                            #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
+                            #       var hexString = rgbNumber.toString(16);
+                            #       var missingZeros = 6 - hexString.length;
+                            #       var resultBuilder = ['#'];
+                            #       for (var i = 0; i < missingZeros; i++) {
+                            #          resultBuilder.push('0');
+                            #       }
+                            #       resultBuilder.push(hexString);
+                            #       return resultBuilder.join('');
+                            #     };
+                            #
+                            #     // ...
+                          "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+                          "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
+                              # the final pixel color is defined by the equation:
+                              #
+                              #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
+                              #
+                              # This means that a value of 1.0 corresponds to a solid color, whereas
+                              # a value of 0.0 corresponds to a completely transparent color. This
+                              # uses a wrapper message rather than a simple float scalar so that it is
+                              # possible to distinguish between a default value and the value being unset.
+                              # If omitted, this color object is to be rendered as a solid color
+                              # (as if the alpha value had been explicitly given with a value of 1.0).
+                          "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
+                          "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
+                        },
+                        "width": 42, # The width of the border, in pixels.
+                            # Deprecated; the width is determined by the "style" field.
+                        "style": "A String", # The style of the border.
+                      },
+                      "bottom": { # A border along a cell. # The bottom border of the cell.
+                        "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
+                            # for simplicity of conversion to/from color representations in various
+                            # languages over compactness; for example, the fields of this representation
+                            # can be trivially provided to the constructor of "java.awt.Color" in Java; it
+                            # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
+                            # method in iOS; and, with just a little work, it can be easily formatted into
+                            # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
+                            #
+                            # Example (Java):
+                            #
+                            #      import com.google.type.Color;
+                            #
+                            #      // ...
+                            #      public static java.awt.Color fromProto(Color protocolor) {
+                            #        float alpha = protocolor.hasAlpha()
+                            #            ? protocolor.getAlpha().getValue()
+                            #            : 1.0;
+                            #
+                            #        return new java.awt.Color(
+                            #            protocolor.getRed(),
+                            #            protocolor.getGreen(),
+                            #            protocolor.getBlue(),
+                            #            alpha);
+                            #      }
+                            #
+                            #      public static Color toProto(java.awt.Color color) {
+                            #        float red = (float) color.getRed();
+                            #        float green = (float) color.getGreen();
+                            #        float blue = (float) color.getBlue();
+                            #        float denominator = 255.0;
+                            #        Color.Builder resultBuilder =
+                            #            Color
+                            #                .newBuilder()
+                            #                .setRed(red / denominator)
+                            #                .setGreen(green / denominator)
+                            #                .setBlue(blue / denominator);
+                            #        int alpha = color.getAlpha();
+                            #        if (alpha != 255) {
+                            #          result.setAlpha(
+                            #              FloatValue
+                            #                  .newBuilder()
+                            #                  .setValue(((float) alpha) / denominator)
+                            #                  .build());
+                            #        }
+                            #        return resultBuilder.build();
+                            #      }
+                            #      // ...
+                            #
+                            # Example (iOS / Obj-C):
+                            #
+                            #      // ...
+                            #      static UIColor* fromProto(Color* protocolor) {
+                            #         float red = [protocolor red];
+                            #         float green = [protocolor green];
+                            #         float blue = [protocolor blue];
+                            #         FloatValue* alpha_wrapper = [protocolor alpha];
+                            #         float alpha = 1.0;
+                            #         if (alpha_wrapper != nil) {
+                            #           alpha = [alpha_wrapper value];
+                            #         }
+                            #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
+                            #      }
+                            #
+                            #      static Color* toProto(UIColor* color) {
+                            #          CGFloat red, green, blue, alpha;
+                            #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
+                            #            return nil;
+                            #          }
+                            #          Color* result = [Color alloc] init];
+                            #          [result setRed:red];
+                            #          [result setGreen:green];
+                            #          [result setBlue:blue];
+                            #          if (alpha <= 0.9999) {
+                            #            [result setAlpha:floatWrapperWithValue(alpha)];
+                            #          }
+                            #          [result autorelease];
+                            #          return result;
+                            #     }
+                            #     // ...
+                            #
+                            #  Example (JavaScript):
+                            #
+                            #     // ...
+                            #
+                            #     var protoToCssColor = function(rgb_color) {
+                            #        var redFrac = rgb_color.red || 0.0;
+                            #        var greenFrac = rgb_color.green || 0.0;
+                            #        var blueFrac = rgb_color.blue || 0.0;
+                            #        var red = Math.floor(redFrac * 255);
+                            #        var green = Math.floor(greenFrac * 255);
+                            #        var blue = Math.floor(blueFrac * 255);
+                            #
+                            #        if (!('alpha' in rgb_color)) {
+                            #           return rgbToCssColor_(red, green, blue);
+                            #        }
+                            #
+                            #        var alphaFrac = rgb_color.alpha.value || 0.0;
+                            #        var rgbParams = [red, green, blue].join(',');
+                            #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
+                            #     };
+                            #
+                            #     var rgbToCssColor_ = function(red, green, blue) {
+                            #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
+                            #       var hexString = rgbNumber.toString(16);
+                            #       var missingZeros = 6 - hexString.length;
+                            #       var resultBuilder = ['#'];
+                            #       for (var i = 0; i < missingZeros; i++) {
+                            #          resultBuilder.push('0');
+                            #       }
+                            #       resultBuilder.push(hexString);
+                            #       return resultBuilder.join('');
+                            #     };
+                            #
+                            #     // ...
+                          "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+                          "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
+                              # the final pixel color is defined by the equation:
+                              #
+                              #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
+                              #
+                              # This means that a value of 1.0 corresponds to a solid color, whereas
+                              # a value of 0.0 corresponds to a completely transparent color. This
+                              # uses a wrapper message rather than a simple float scalar so that it is
+                              # possible to distinguish between a default value and the value being unset.
+                              # If omitted, this color object is to be rendered as a solid color
+                              # (as if the alpha value had been explicitly given with a value of 1.0).
+                          "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
+                          "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
+                        },
+                        "width": 42, # The width of the border, in pixels.
+                            # Deprecated; the width is determined by the "style" field.
+                        "style": "A String", # The style of the border.
+                      },
+                      "left": { # A border along a cell. # The left border of the cell.
+                        "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
+                            # for simplicity of conversion to/from color representations in various
+                            # languages over compactness; for example, the fields of this representation
+                            # can be trivially provided to the constructor of "java.awt.Color" in Java; it
+                            # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
+                            # method in iOS; and, with just a little work, it can be easily formatted into
+                            # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
+                            #
+                            # Example (Java):
+                            #
+                            #      import com.google.type.Color;
+                            #
+                            #      // ...
+                            #      public static java.awt.Color fromProto(Color protocolor) {
+                            #        float alpha = protocolor.hasAlpha()
+                            #            ? protocolor.getAlpha().getValue()
+                            #            : 1.0;
+                            #
+                            #        return new java.awt.Color(
+                            #            protocolor.getRed(),
+                            #            protocolor.getGreen(),
+                            #            protocolor.getBlue(),
+                            #            alpha);
+                            #      }
+                            #
+                            #      public static Color toProto(java.awt.Color color) {
+                            #        float red = (float) color.getRed();
+                            #        float green = (float) color.getGreen();
+                            #        float blue = (float) color.getBlue();
+                            #        float denominator = 255.0;
+                            #        Color.Builder resultBuilder =
+                            #            Color
+                            #                .newBuilder()
+                            #                .setRed(red / denominator)
+                            #                .setGreen(green / denominator)
+                            #                .setBlue(blue / denominator);
+                            #        int alpha = color.getAlpha();
+                            #        if (alpha != 255) {
+                            #          result.setAlpha(
+                            #              FloatValue
+                            #                  .newBuilder()
+                            #                  .setValue(((float) alpha) / denominator)
+                            #                  .build());
+                            #        }
+                            #        return resultBuilder.build();
+                            #      }
+                            #      // ...
+                            #
+                            # Example (iOS / Obj-C):
+                            #
+                            #      // ...
+                            #      static UIColor* fromProto(Color* protocolor) {
+                            #         float red = [protocolor red];
+                            #         float green = [protocolor green];
+                            #         float blue = [protocolor blue];
+                            #         FloatValue* alpha_wrapper = [protocolor alpha];
+                            #         float alpha = 1.0;
+                            #         if (alpha_wrapper != nil) {
+                            #           alpha = [alpha_wrapper value];
+                            #         }
+                            #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
+                            #      }
+                            #
+                            #      static Color* toProto(UIColor* color) {
+                            #          CGFloat red, green, blue, alpha;
+                            #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
+                            #            return nil;
+                            #          }
+                            #          Color* result = [Color alloc] init];
+                            #          [result setRed:red];
+                            #          [result setGreen:green];
+                            #          [result setBlue:blue];
+                            #          if (alpha <= 0.9999) {
+                            #            [result setAlpha:floatWrapperWithValue(alpha)];
+                            #          }
+                            #          [result autorelease];
+                            #          return result;
+                            #     }
+                            #     // ...
+                            #
+                            #  Example (JavaScript):
+                            #
+                            #     // ...
+                            #
+                            #     var protoToCssColor = function(rgb_color) {
+                            #        var redFrac = rgb_color.red || 0.0;
+                            #        var greenFrac = rgb_color.green || 0.0;
+                            #        var blueFrac = rgb_color.blue || 0.0;
+                            #        var red = Math.floor(redFrac * 255);
+                            #        var green = Math.floor(greenFrac * 255);
+                            #        var blue = Math.floor(blueFrac * 255);
+                            #
+                            #        if (!('alpha' in rgb_color)) {
+                            #           return rgbToCssColor_(red, green, blue);
+                            #        }
+                            #
+                            #        var alphaFrac = rgb_color.alpha.value || 0.0;
+                            #        var rgbParams = [red, green, blue].join(',');
+                            #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
+                            #     };
+                            #
+                            #     var rgbToCssColor_ = function(red, green, blue) {
+                            #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
+                            #       var hexString = rgbNumber.toString(16);
+                            #       var missingZeros = 6 - hexString.length;
+                            #       var resultBuilder = ['#'];
+                            #       for (var i = 0; i < missingZeros; i++) {
+                            #          resultBuilder.push('0');
+                            #       }
+                            #       resultBuilder.push(hexString);
+                            #       return resultBuilder.join('');
+                            #     };
+                            #
+                            #     // ...
+                          "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+                          "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
+                              # the final pixel color is defined by the equation:
+                              #
+                              #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
+                              #
+                              # This means that a value of 1.0 corresponds to a solid color, whereas
+                              # a value of 0.0 corresponds to a completely transparent color. This
+                              # uses a wrapper message rather than a simple float scalar so that it is
+                              # possible to distinguish between a default value and the value being unset.
+                              # If omitted, this color object is to be rendered as a solid color
+                              # (as if the alpha value had been explicitly given with a value of 1.0).
+                          "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
+                          "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
+                        },
+                        "width": 42, # The width of the border, in pixels.
+                            # Deprecated; the width is determined by the "style" field.
+                        "style": "A String", # The style of the border.
+                      },
+                    },
+                    "wrapStrategy": "A String", # The wrap strategy for the value in the cell.
+                  },
+                  "dataValidation": { # A data validation rule. # A data validation rule on the cell, if any.
+                      #
+                      # When writing, the new data validation rule will overwrite any prior rule.
+                    "showCustomUi": True or False, # True if the UI should be customized based on the kind of condition.
+                        # If true, "List" conditions will show a dropdown.
+                    "strict": True or False, # True if invalid data should be rejected.
+                    "inputMessage": "A String", # A message to show the user when adding data to the cell.
+                    "condition": { # A condition that can evaluate to true or false. # The condition that data in the cell must match.
+                        # BooleanConditions are used by conditional formatting,
+                        # data validation, and the criteria in filters.
+                      "type": "A String", # The type of condition.
+                      "values": [ # The values of the condition. The number of supported values depends
+                          # on the condition type.  Some support zero values,
+                          # others one or two values,
+                          # and ConditionType.ONE_OF_LIST supports an arbitrary number of values.
+                        { # The value of the condition.
+                          "relativeDate": "A String", # A relative date (based on the current date).
+                              # Valid only if the type is
+                              # DATE_BEFORE,
+                              # DATE_AFTER,
+                              # DATE_ON_OR_BEFORE or
+                              # DATE_ON_OR_AFTER.
+                              #
+                              # Relative dates are not supported in data validation.
+                              # They are supported only in conditional formatting and
+                              # conditional filters.
+                          "userEnteredValue": "A String", # A value the condition is based on.
+                              # The value will be parsed as if the user typed into a cell.
+                              # Formulas are supported (and must begin with an `=`).
+                        },
+                      ],
+                    },
+                  },
+                  "textFormatRuns": [ # Runs of rich text applied to subsections of the cell.  Runs are only valid
+                      # on user entered strings, not formulas, bools, or numbers.
+                      # Runs start at specific indexes in the text and continue until the next
+                      # run. Properties of a run will continue unless explicitly changed
+                      # in a subsequent run (and properties of the first run will continue
+                      # the properties of the cell unless explicitly changed).
+                      #
+                      # When writing, the new runs will overwrite any prior runs.  When writing a
+                      # new user_entered_value, previous runs will be erased.
+                    { # A run of a text format. The format of this run continues until the start
+                        # index of the next run.
+                        # When updating, all fields must be set.
+                      "startIndex": 42, # The character index where this run starts.
+                      "format": { # The format of a run of text in a cell. # The format of this run.  Absent values inherit the cell's format.
+                          # Absent values indicate that the field isn't specified.
+                        "foregroundColor": { # Represents a color in the RGBA color space. This representation is designed # The foreground color of the text.
+                            # for simplicity of conversion to/from color representations in various
+                            # languages over compactness; for example, the fields of this representation
+                            # can be trivially provided to the constructor of "java.awt.Color" in Java; it
+                            # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
+                            # method in iOS; and, with just a little work, it can be easily formatted into
+                            # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
+                            #
+                            # Example (Java):
+                            #
+                            #      import com.google.type.Color;
+                            #
+                            #      // ...
+                            #      public static java.awt.Color fromProto(Color protocolor) {
+                            #        float alpha = protocolor.hasAlpha()
+                            #            ? protocolor.getAlpha().getValue()
+                            #            : 1.0;
+                            #
+                            #        return new java.awt.Color(
+                            #            protocolor.getRed(),
+                            #            protocolor.getGreen(),
+                            #            protocolor.getBlue(),
+                            #            alpha);
+                            #      }
+                            #
+                            #      public static Color toProto(java.awt.Color color) {
+                            #        float red = (float) color.getRed();
+                            #        float green = (float) color.getGreen();
+                            #        float blue = (float) color.getBlue();
+                            #        float denominator = 255.0;
+                            #        Color.Builder resultBuilder =
+                            #            Color
+                            #                .newBuilder()
+                            #                .setRed(red / denominator)
+                            #                .setGreen(green / denominator)
+                            #                .setBlue(blue / denominator);
+                            #        int alpha = color.getAlpha();
+                            #        if (alpha != 255) {
+                            #          result.setAlpha(
+                            #              FloatValue
+                            #                  .newBuilder()
+                            #                  .setValue(((float) alpha) / denominator)
+                            #                  .build());
+                            #        }
+                            #        return resultBuilder.build();
+                            #      }
+                            #      // ...
+                            #
+                            # Example (iOS / Obj-C):
+                            #
+                            #      // ...
+                            #      static UIColor* fromProto(Color* protocolor) {
+                            #         float red = [protocolor red];
+                            #         float green = [protocolor green];
+                            #         float blue = [protocolor blue];
+                            #         FloatValue* alpha_wrapper = [protocolor alpha];
+                            #         float alpha = 1.0;
+                            #         if (alpha_wrapper != nil) {
+                            #           alpha = [alpha_wrapper value];
+                            #         }
+                            #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
+                            #      }
+                            #
+                            #      static Color* toProto(UIColor* color) {
+                            #          CGFloat red, green, blue, alpha;
+                            #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
+                            #            return nil;
+                            #          }
+                            #          Color* result = [Color alloc] init];
+                            #          [result setRed:red];
+                            #          [result setGreen:green];
+                            #          [result setBlue:blue];
+                            #          if (alpha <= 0.9999) {
+                            #            [result setAlpha:floatWrapperWithValue(alpha)];
+                            #          }
+                            #          [result autorelease];
+                            #          return result;
+                            #     }
+                            #     // ...
+                            #
+                            #  Example (JavaScript):
+                            #
+                            #     // ...
+                            #
+                            #     var protoToCssColor = function(rgb_color) {
+                            #        var redFrac = rgb_color.red || 0.0;
+                            #        var greenFrac = rgb_color.green || 0.0;
+                            #        var blueFrac = rgb_color.blue || 0.0;
+                            #        var red = Math.floor(redFrac * 255);
+                            #        var green = Math.floor(greenFrac * 255);
+                            #        var blue = Math.floor(blueFrac * 255);
+                            #
+                            #        if (!('alpha' in rgb_color)) {
+                            #           return rgbToCssColor_(red, green, blue);
+                            #        }
+                            #
+                            #        var alphaFrac = rgb_color.alpha.value || 0.0;
+                            #        var rgbParams = [red, green, blue].join(',');
+                            #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
+                            #     };
+                            #
+                            #     var rgbToCssColor_ = function(red, green, blue) {
+                            #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
+                            #       var hexString = rgbNumber.toString(16);
+                            #       var missingZeros = 6 - hexString.length;
+                            #       var resultBuilder = ['#'];
+                            #       for (var i = 0; i < missingZeros; i++) {
+                            #          resultBuilder.push('0');
+                            #       }
+                            #       resultBuilder.push(hexString);
+                            #       return resultBuilder.join('');
+                            #     };
+                            #
+                            #     // ...
+                          "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+                          "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
+                              # the final pixel color is defined by the equation:
+                              #
+                              #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
+                              #
+                              # This means that a value of 1.0 corresponds to a solid color, whereas
+                              # a value of 0.0 corresponds to a completely transparent color. This
+                              # uses a wrapper message rather than a simple float scalar so that it is
+                              # possible to distinguish between a default value and the value being unset.
+                              # If omitted, this color object is to be rendered as a solid color
+                              # (as if the alpha value had been explicitly given with a value of 1.0).
+                          "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
+                          "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
+                        },
+                        "bold": True or False, # True if the text is bold.
+                        "strikethrough": True or False, # True if the text has a strikethrough.
+                        "fontFamily": "A String", # The font family.
+                        "fontSize": 42, # The size of the font.
+                        "italic": True or False, # True if the text is italicized.
+                        "underline": True or False, # True if the text is underlined.
+                      },
+                    },
+                  ],
+                },
+              ],
+            },
+          ],
+        },
+      ],
+      "properties": { # Properties of a sheet. # The properties of the sheet.
+        "sheetType": "A String", # The type of sheet. Defaults to GRID.
+            # This field cannot be changed once set.
+        "index": 42, # The index of the sheet within the spreadsheet.
+            # When adding or updating sheet properties, if this field
+            # is excluded then the sheet will be added or moved to the end
+            # of the sheet list. When updating sheet indices or inserting
+            # sheets, movement is considered in "before the move" indexes.
+            # For example, if there were 3 sheets (S1, S2, S3) in order to
+            # move S1 ahead of S2 the index would have to be set to 2. A sheet
+            # index update request will be ignored if the requested index is
+            # identical to the sheets current index or if the requested new
+            # index is equal to the current sheet index + 1.
+        "title": "A String", # The name of the sheet.
+        "gridProperties": { # Properties of a grid. # Additional properties of the sheet if this sheet is a grid.
+            # (If the sheet is an object sheet, containing a chart or image, then
+            # this field will be absent.)
+            # When writing it is an error to set any grid properties on non-grid sheets.
+          "columnCount": 42, # The number of columns in the grid.
+          "rowCount": 42, # The number of rows in the grid.
+          "frozenColumnCount": 42, # The number of columns that are frozen in the grid.
+          "hideGridlines": True or False, # True if the grid isn't showing gridlines in the UI.
+          "frozenRowCount": 42, # The number of rows that are frozen in the grid.
+        },
+        "rightToLeft": True or False, # True if the sheet is an RTL sheet instead of an LTR sheet.
+        "tabColor": { # Represents a color in the RGBA color space. This representation is designed # The color of the tab in the UI.
+            # for simplicity of conversion to/from color representations in various
+            # languages over compactness; for example, the fields of this representation
+            # can be trivially provided to the constructor of "java.awt.Color" in Java; it
+            # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
+            # method in iOS; and, with just a little work, it can be easily formatted into
+            # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
+            #
+            # Example (Java):
+            #
+            #      import com.google.type.Color;
+            #
+            #      // ...
+            #      public static java.awt.Color fromProto(Color protocolor) {
+            #        float alpha = protocolor.hasAlpha()
+            #            ? protocolor.getAlpha().getValue()
+            #            : 1.0;
+            #
+            #        return new java.awt.Color(
+            #            protocolor.getRed(),
+            #            protocolor.getGreen(),
+            #            protocolor.getBlue(),
+            #            alpha);
+            #      }
+            #
+            #      public static Color toProto(java.awt.Color color) {
+            #        float red = (float) color.getRed();
+            #        float green = (float) color.getGreen();
+            #        float blue = (float) color.getBlue();
+            #        float denominator = 255.0;
+            #        Color.Builder resultBuilder =
+            #            Color
+            #                .newBuilder()
+            #                .setRed(red / denominator)
+            #                .setGreen(green / denominator)
+            #                .setBlue(blue / denominator);
+            #        int alpha = color.getAlpha();
+            #        if (alpha != 255) {
+            #          result.setAlpha(
+            #              FloatValue
+            #                  .newBuilder()
+            #                  .setValue(((float) alpha) / denominator)
+            #                  .build());
+            #        }
+            #        return resultBuilder.build();
+            #      }
+            #      // ...
+            #
+            # Example (iOS / Obj-C):
+            #
+            #      // ...
+            #      static UIColor* fromProto(Color* protocolor) {
+            #         float red = [protocolor red];
+            #         float green = [protocolor green];
+            #         float blue = [protocolor blue];
+            #         FloatValue* alpha_wrapper = [protocolor alpha];
+            #         float alpha = 1.0;
+            #         if (alpha_wrapper != nil) {
+            #           alpha = [alpha_wrapper value];
+            #         }
+            #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
+            #      }
+            #
+            #      static Color* toProto(UIColor* color) {
+            #          CGFloat red, green, blue, alpha;
+            #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
+            #            return nil;
+            #          }
+            #          Color* result = [Color alloc] init];
+            #          [result setRed:red];
+            #          [result setGreen:green];
+            #          [result setBlue:blue];
+            #          if (alpha <= 0.9999) {
+            #            [result setAlpha:floatWrapperWithValue(alpha)];
+            #          }
+            #          [result autorelease];
+            #          return result;
+            #     }
+            #     // ...
+            #
+            #  Example (JavaScript):
+            #
+            #     // ...
+            #
+            #     var protoToCssColor = function(rgb_color) {
+            #        var redFrac = rgb_color.red || 0.0;
+            #        var greenFrac = rgb_color.green || 0.0;
+            #        var blueFrac = rgb_color.blue || 0.0;
+            #        var red = Math.floor(redFrac * 255);
+            #        var green = Math.floor(greenFrac * 255);
+            #        var blue = Math.floor(blueFrac * 255);
+            #
+            #        if (!('alpha' in rgb_color)) {
+            #           return rgbToCssColor_(red, green, blue);
+            #        }
+            #
+            #        var alphaFrac = rgb_color.alpha.value || 0.0;
+            #        var rgbParams = [red, green, blue].join(',');
+            #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
+            #     };
+            #
+            #     var rgbToCssColor_ = function(red, green, blue) {
+            #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
+            #       var hexString = rgbNumber.toString(16);
+            #       var missingZeros = 6 - hexString.length;
+            #       var resultBuilder = ['#'];
+            #       for (var i = 0; i < missingZeros; i++) {
+            #          resultBuilder.push('0');
+            #       }
+            #       resultBuilder.push(hexString);
+            #       return resultBuilder.join('');
+            #     };
+            #
+            #     // ...
+          "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+          "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
+              # the final pixel color is defined by the equation:
+              #
+              #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
+              #
+              # This means that a value of 1.0 corresponds to a solid color, whereas
+              # a value of 0.0 corresponds to a completely transparent color. This
+              # uses a wrapper message rather than a simple float scalar so that it is
+              # possible to distinguish between a default value and the value being unset.
+              # If omitted, this color object is to be rendered as a solid color
+              # (as if the alpha value had been explicitly given with a value of 1.0).
+          "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
+          "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
+        },
+        "hidden": True or False, # True if the sheet is hidden in the UI, false if it's visible.
+        "sheetId": 42, # The ID of the sheet. Must be non-negative.
+            # This field cannot be changed once set.
+      },
+    },
+  ],
+  "spreadsheetUrl": "A String", # The url of the spreadsheet.
+      # This field is read-only.
+}
+
+  x__xgafv: string, V1 error format.
+    Allowed values
+      1 - v1 error format
+      2 - v2 error format
+
+Returns:
+  An object of the form:
+
+    { # Resource that represents a spreadsheet.
     "spreadsheetId": "A String", # The ID of the spreadsheet.
         # This field is read-only.
     "namedRanges": [ # The named ranges defined in a spreadsheet.
@@ -20697,6 +36924,1126 @@
             },
           },
         ],
+        "bandedRanges": [ # The banded (i.e. alternating colors) ranges on this sheet.
+          { # A banded (alternating colors) range in a sheet.
+            "range": { # A range on a sheet. # The range over which these properties are applied.
+                # All indexes are zero-based.
+                # Indexes are half open, e.g the start index is inclusive
+                # and the end index is exclusive -- [start_index, end_index).
+                # Missing indexes indicate the range is unbounded on that side.
+                #
+                # For example, if `"Sheet1"` is sheet ID 0, then:
+                #
+                #   `Sheet1!A1:A1 == sheet_id: 0,
+                #                   start_row_index: 0, end_row_index: 1,
+                #                   start_column_index: 0, end_column_index: 1`
+                #
+                #   `Sheet1!A3:B4 == sheet_id: 0,
+                #                   start_row_index: 2, end_row_index: 4,
+                #                   start_column_index: 0, end_column_index: 2`
+                #
+                #   `Sheet1!A:B == sheet_id: 0,
+                #                 start_column_index: 0, end_column_index: 2`
+                #
+                #   `Sheet1!A5:B == sheet_id: 0,
+                #                  start_row_index: 4,
+                #                  start_column_index: 0, end_column_index: 2`
+                #
+                #   `Sheet1 == sheet_id:0`
+                #
+                # The start index must always be less than or equal to the end index.
+                # If the start index equals the end index, then the range is empty.
+                # Empty ranges are typically not meaningful and are usually rendered in the
+                # UI as `#REF!`.
+              "endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
+              "startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
+              "sheetId": 42, # The sheet this range is on.
+              "startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
+              "endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
+            },
+            "columnProperties": { # Properties referring a single dimension (either row or column). If both # Properties for column bands. These properties will be applied on a column-
+                # by-column basis throughout all the columns in the range. At least one of
+                # row_properties or column_properties must be specified.
+                # BandedRange.row_properties and BandedRange.column_properties are
+                # set, the fill colors are applied to cells according to the following rules:
+                #
+                # * header_color and footer_color take priority over band colors.
+                # * first_band_color takes priority over second_band_color.
+                # * row_properties takes priority over column_properties.
+                #
+                # For example, the first row color takes priority over the first column
+                # color, but the first column color takes priority over the second row color.
+                # Similarly, the row header takes priority over the column header in the
+                # top left cell, but the column header takes priority over the first row
+                # color if the row header is not set.
+              "secondBandColor": { # Represents a color in the RGBA color space. This representation is designed # The second color that is alternating. (Required)
+                  # for simplicity of conversion to/from color representations in various
+                  # languages over compactness; for example, the fields of this representation
+                  # can be trivially provided to the constructor of "java.awt.Color" in Java; it
+                  # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
+                  # method in iOS; and, with just a little work, it can be easily formatted into
+                  # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
+                  #
+                  # Example (Java):
+                  #
+                  #      import com.google.type.Color;
+                  #
+                  #      // ...
+                  #      public static java.awt.Color fromProto(Color protocolor) {
+                  #        float alpha = protocolor.hasAlpha()
+                  #            ? protocolor.getAlpha().getValue()
+                  #            : 1.0;
+                  #
+                  #        return new java.awt.Color(
+                  #            protocolor.getRed(),
+                  #            protocolor.getGreen(),
+                  #            protocolor.getBlue(),
+                  #            alpha);
+                  #      }
+                  #
+                  #      public static Color toProto(java.awt.Color color) {
+                  #        float red = (float) color.getRed();
+                  #        float green = (float) color.getGreen();
+                  #        float blue = (float) color.getBlue();
+                  #        float denominator = 255.0;
+                  #        Color.Builder resultBuilder =
+                  #            Color
+                  #                .newBuilder()
+                  #                .setRed(red / denominator)
+                  #                .setGreen(green / denominator)
+                  #                .setBlue(blue / denominator);
+                  #        int alpha = color.getAlpha();
+                  #        if (alpha != 255) {
+                  #          result.setAlpha(
+                  #              FloatValue
+                  #                  .newBuilder()
+                  #                  .setValue(((float) alpha) / denominator)
+                  #                  .build());
+                  #        }
+                  #        return resultBuilder.build();
+                  #      }
+                  #      // ...
+                  #
+                  # Example (iOS / Obj-C):
+                  #
+                  #      // ...
+                  #      static UIColor* fromProto(Color* protocolor) {
+                  #         float red = [protocolor red];
+                  #         float green = [protocolor green];
+                  #         float blue = [protocolor blue];
+                  #         FloatValue* alpha_wrapper = [protocolor alpha];
+                  #         float alpha = 1.0;
+                  #         if (alpha_wrapper != nil) {
+                  #           alpha = [alpha_wrapper value];
+                  #         }
+                  #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
+                  #      }
+                  #
+                  #      static Color* toProto(UIColor* color) {
+                  #          CGFloat red, green, blue, alpha;
+                  #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
+                  #            return nil;
+                  #          }
+                  #          Color* result = [Color alloc] init];
+                  #          [result setRed:red];
+                  #          [result setGreen:green];
+                  #          [result setBlue:blue];
+                  #          if (alpha <= 0.9999) {
+                  #            [result setAlpha:floatWrapperWithValue(alpha)];
+                  #          }
+                  #          [result autorelease];
+                  #          return result;
+                  #     }
+                  #     // ...
+                  #
+                  #  Example (JavaScript):
+                  #
+                  #     // ...
+                  #
+                  #     var protoToCssColor = function(rgb_color) {
+                  #        var redFrac = rgb_color.red || 0.0;
+                  #        var greenFrac = rgb_color.green || 0.0;
+                  #        var blueFrac = rgb_color.blue || 0.0;
+                  #        var red = Math.floor(redFrac * 255);
+                  #        var green = Math.floor(greenFrac * 255);
+                  #        var blue = Math.floor(blueFrac * 255);
+                  #
+                  #        if (!('alpha' in rgb_color)) {
+                  #           return rgbToCssColor_(red, green, blue);
+                  #        }
+                  #
+                  #        var alphaFrac = rgb_color.alpha.value || 0.0;
+                  #        var rgbParams = [red, green, blue].join(',');
+                  #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
+                  #     };
+                  #
+                  #     var rgbToCssColor_ = function(red, green, blue) {
+                  #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
+                  #       var hexString = rgbNumber.toString(16);
+                  #       var missingZeros = 6 - hexString.length;
+                  #       var resultBuilder = ['#'];
+                  #       for (var i = 0; i < missingZeros; i++) {
+                  #          resultBuilder.push('0');
+                  #       }
+                  #       resultBuilder.push(hexString);
+                  #       return resultBuilder.join('');
+                  #     };
+                  #
+                  #     // ...
+                "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+                "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
+                    # the final pixel color is defined by the equation:
+                    #
+                    #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
+                    #
+                    # This means that a value of 1.0 corresponds to a solid color, whereas
+                    # a value of 0.0 corresponds to a completely transparent color. This
+                    # uses a wrapper message rather than a simple float scalar so that it is
+                    # possible to distinguish between a default value and the value being unset.
+                    # If omitted, this color object is to be rendered as a solid color
+                    # (as if the alpha value had been explicitly given with a value of 1.0).
+                "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
+                "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
+              },
+              "headerColor": { # Represents a color in the RGBA color space. This representation is designed # The color of the first row or column. If this field is set, the first
+                  # row or column will be filled with this color and the colors will
+                  # alternate between first_band_color and second_band_color starting
+                  # from the second row or column. Otherwise, the first row or column will be
+                  # filled with first_band_color and the colors will proceed to alternate
+                  # as they normally would.
+                  # for simplicity of conversion to/from color representations in various
+                  # languages over compactness; for example, the fields of this representation
+                  # can be trivially provided to the constructor of "java.awt.Color" in Java; it
+                  # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
+                  # method in iOS; and, with just a little work, it can be easily formatted into
+                  # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
+                  #
+                  # Example (Java):
+                  #
+                  #      import com.google.type.Color;
+                  #
+                  #      // ...
+                  #      public static java.awt.Color fromProto(Color protocolor) {
+                  #        float alpha = protocolor.hasAlpha()
+                  #            ? protocolor.getAlpha().getValue()
+                  #            : 1.0;
+                  #
+                  #        return new java.awt.Color(
+                  #            protocolor.getRed(),
+                  #            protocolor.getGreen(),
+                  #            protocolor.getBlue(),
+                  #            alpha);
+                  #      }
+                  #
+                  #      public static Color toProto(java.awt.Color color) {
+                  #        float red = (float) color.getRed();
+                  #        float green = (float) color.getGreen();
+                  #        float blue = (float) color.getBlue();
+                  #        float denominator = 255.0;
+                  #        Color.Builder resultBuilder =
+                  #            Color
+                  #                .newBuilder()
+                  #                .setRed(red / denominator)
+                  #                .setGreen(green / denominator)
+                  #                .setBlue(blue / denominator);
+                  #        int alpha = color.getAlpha();
+                  #        if (alpha != 255) {
+                  #          result.setAlpha(
+                  #              FloatValue
+                  #                  .newBuilder()
+                  #                  .setValue(((float) alpha) / denominator)
+                  #                  .build());
+                  #        }
+                  #        return resultBuilder.build();
+                  #      }
+                  #      // ...
+                  #
+                  # Example (iOS / Obj-C):
+                  #
+                  #      // ...
+                  #      static UIColor* fromProto(Color* protocolor) {
+                  #         float red = [protocolor red];
+                  #         float green = [protocolor green];
+                  #         float blue = [protocolor blue];
+                  #         FloatValue* alpha_wrapper = [protocolor alpha];
+                  #         float alpha = 1.0;
+                  #         if (alpha_wrapper != nil) {
+                  #           alpha = [alpha_wrapper value];
+                  #         }
+                  #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
+                  #      }
+                  #
+                  #      static Color* toProto(UIColor* color) {
+                  #          CGFloat red, green, blue, alpha;
+                  #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
+                  #            return nil;
+                  #          }
+                  #          Color* result = [Color alloc] init];
+                  #          [result setRed:red];
+                  #          [result setGreen:green];
+                  #          [result setBlue:blue];
+                  #          if (alpha <= 0.9999) {
+                  #            [result setAlpha:floatWrapperWithValue(alpha)];
+                  #          }
+                  #          [result autorelease];
+                  #          return result;
+                  #     }
+                  #     // ...
+                  #
+                  #  Example (JavaScript):
+                  #
+                  #     // ...
+                  #
+                  #     var protoToCssColor = function(rgb_color) {
+                  #        var redFrac = rgb_color.red || 0.0;
+                  #        var greenFrac = rgb_color.green || 0.0;
+                  #        var blueFrac = rgb_color.blue || 0.0;
+                  #        var red = Math.floor(redFrac * 255);
+                  #        var green = Math.floor(greenFrac * 255);
+                  #        var blue = Math.floor(blueFrac * 255);
+                  #
+                  #        if (!('alpha' in rgb_color)) {
+                  #           return rgbToCssColor_(red, green, blue);
+                  #        }
+                  #
+                  #        var alphaFrac = rgb_color.alpha.value || 0.0;
+                  #        var rgbParams = [red, green, blue].join(',');
+                  #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
+                  #     };
+                  #
+                  #     var rgbToCssColor_ = function(red, green, blue) {
+                  #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
+                  #       var hexString = rgbNumber.toString(16);
+                  #       var missingZeros = 6 - hexString.length;
+                  #       var resultBuilder = ['#'];
+                  #       for (var i = 0; i < missingZeros; i++) {
+                  #          resultBuilder.push('0');
+                  #       }
+                  #       resultBuilder.push(hexString);
+                  #       return resultBuilder.join('');
+                  #     };
+                  #
+                  #     // ...
+                "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+                "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
+                    # the final pixel color is defined by the equation:
+                    #
+                    #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
+                    #
+                    # This means that a value of 1.0 corresponds to a solid color, whereas
+                    # a value of 0.0 corresponds to a completely transparent color. This
+                    # uses a wrapper message rather than a simple float scalar so that it is
+                    # possible to distinguish between a default value and the value being unset.
+                    # If omitted, this color object is to be rendered as a solid color
+                    # (as if the alpha value had been explicitly given with a value of 1.0).
+                "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
+                "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
+              },
+              "footerColor": { # Represents a color in the RGBA color space. This representation is designed # The color of the last row or column. If this field is not set, the last
+                  # row or column will be filled with either first_band_color or
+                  # second_band_color, depending on the color of the previous row or
+                  # column.
+                  # for simplicity of conversion to/from color representations in various
+                  # languages over compactness; for example, the fields of this representation
+                  # can be trivially provided to the constructor of "java.awt.Color" in Java; it
+                  # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
+                  # method in iOS; and, with just a little work, it can be easily formatted into
+                  # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
+                  #
+                  # Example (Java):
+                  #
+                  #      import com.google.type.Color;
+                  #
+                  #      // ...
+                  #      public static java.awt.Color fromProto(Color protocolor) {
+                  #        float alpha = protocolor.hasAlpha()
+                  #            ? protocolor.getAlpha().getValue()
+                  #            : 1.0;
+                  #
+                  #        return new java.awt.Color(
+                  #            protocolor.getRed(),
+                  #            protocolor.getGreen(),
+                  #            protocolor.getBlue(),
+                  #            alpha);
+                  #      }
+                  #
+                  #      public static Color toProto(java.awt.Color color) {
+                  #        float red = (float) color.getRed();
+                  #        float green = (float) color.getGreen();
+                  #        float blue = (float) color.getBlue();
+                  #        float denominator = 255.0;
+                  #        Color.Builder resultBuilder =
+                  #            Color
+                  #                .newBuilder()
+                  #                .setRed(red / denominator)
+                  #                .setGreen(green / denominator)
+                  #                .setBlue(blue / denominator);
+                  #        int alpha = color.getAlpha();
+                  #        if (alpha != 255) {
+                  #          result.setAlpha(
+                  #              FloatValue
+                  #                  .newBuilder()
+                  #                  .setValue(((float) alpha) / denominator)
+                  #                  .build());
+                  #        }
+                  #        return resultBuilder.build();
+                  #      }
+                  #      // ...
+                  #
+                  # Example (iOS / Obj-C):
+                  #
+                  #      // ...
+                  #      static UIColor* fromProto(Color* protocolor) {
+                  #         float red = [protocolor red];
+                  #         float green = [protocolor green];
+                  #         float blue = [protocolor blue];
+                  #         FloatValue* alpha_wrapper = [protocolor alpha];
+                  #         float alpha = 1.0;
+                  #         if (alpha_wrapper != nil) {
+                  #           alpha = [alpha_wrapper value];
+                  #         }
+                  #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
+                  #      }
+                  #
+                  #      static Color* toProto(UIColor* color) {
+                  #          CGFloat red, green, blue, alpha;
+                  #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
+                  #            return nil;
+                  #          }
+                  #          Color* result = [Color alloc] init];
+                  #          [result setRed:red];
+                  #          [result setGreen:green];
+                  #          [result setBlue:blue];
+                  #          if (alpha <= 0.9999) {
+                  #            [result setAlpha:floatWrapperWithValue(alpha)];
+                  #          }
+                  #          [result autorelease];
+                  #          return result;
+                  #     }
+                  #     // ...
+                  #
+                  #  Example (JavaScript):
+                  #
+                  #     // ...
+                  #
+                  #     var protoToCssColor = function(rgb_color) {
+                  #        var redFrac = rgb_color.red || 0.0;
+                  #        var greenFrac = rgb_color.green || 0.0;
+                  #        var blueFrac = rgb_color.blue || 0.0;
+                  #        var red = Math.floor(redFrac * 255);
+                  #        var green = Math.floor(greenFrac * 255);
+                  #        var blue = Math.floor(blueFrac * 255);
+                  #
+                  #        if (!('alpha' in rgb_color)) {
+                  #           return rgbToCssColor_(red, green, blue);
+                  #        }
+                  #
+                  #        var alphaFrac = rgb_color.alpha.value || 0.0;
+                  #        var rgbParams = [red, green, blue].join(',');
+                  #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
+                  #     };
+                  #
+                  #     var rgbToCssColor_ = function(red, green, blue) {
+                  #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
+                  #       var hexString = rgbNumber.toString(16);
+                  #       var missingZeros = 6 - hexString.length;
+                  #       var resultBuilder = ['#'];
+                  #       for (var i = 0; i < missingZeros; i++) {
+                  #          resultBuilder.push('0');
+                  #       }
+                  #       resultBuilder.push(hexString);
+                  #       return resultBuilder.join('');
+                  #     };
+                  #
+                  #     // ...
+                "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+                "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
+                    # the final pixel color is defined by the equation:
+                    #
+                    #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
+                    #
+                    # This means that a value of 1.0 corresponds to a solid color, whereas
+                    # a value of 0.0 corresponds to a completely transparent color. This
+                    # uses a wrapper message rather than a simple float scalar so that it is
+                    # possible to distinguish between a default value and the value being unset.
+                    # If omitted, this color object is to be rendered as a solid color
+                    # (as if the alpha value had been explicitly given with a value of 1.0).
+                "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
+                "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
+              },
+              "firstBandColor": { # Represents a color in the RGBA color space. This representation is designed # The first color that is alternating. (Required)
+                  # for simplicity of conversion to/from color representations in various
+                  # languages over compactness; for example, the fields of this representation
+                  # can be trivially provided to the constructor of "java.awt.Color" in Java; it
+                  # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
+                  # method in iOS; and, with just a little work, it can be easily formatted into
+                  # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
+                  #
+                  # Example (Java):
+                  #
+                  #      import com.google.type.Color;
+                  #
+                  #      // ...
+                  #      public static java.awt.Color fromProto(Color protocolor) {
+                  #        float alpha = protocolor.hasAlpha()
+                  #            ? protocolor.getAlpha().getValue()
+                  #            : 1.0;
+                  #
+                  #        return new java.awt.Color(
+                  #            protocolor.getRed(),
+                  #            protocolor.getGreen(),
+                  #            protocolor.getBlue(),
+                  #            alpha);
+                  #      }
+                  #
+                  #      public static Color toProto(java.awt.Color color) {
+                  #        float red = (float) color.getRed();
+                  #        float green = (float) color.getGreen();
+                  #        float blue = (float) color.getBlue();
+                  #        float denominator = 255.0;
+                  #        Color.Builder resultBuilder =
+                  #            Color
+                  #                .newBuilder()
+                  #                .setRed(red / denominator)
+                  #                .setGreen(green / denominator)
+                  #                .setBlue(blue / denominator);
+                  #        int alpha = color.getAlpha();
+                  #        if (alpha != 255) {
+                  #          result.setAlpha(
+                  #              FloatValue
+                  #                  .newBuilder()
+                  #                  .setValue(((float) alpha) / denominator)
+                  #                  .build());
+                  #        }
+                  #        return resultBuilder.build();
+                  #      }
+                  #      // ...
+                  #
+                  # Example (iOS / Obj-C):
+                  #
+                  #      // ...
+                  #      static UIColor* fromProto(Color* protocolor) {
+                  #         float red = [protocolor red];
+                  #         float green = [protocolor green];
+                  #         float blue = [protocolor blue];
+                  #         FloatValue* alpha_wrapper = [protocolor alpha];
+                  #         float alpha = 1.0;
+                  #         if (alpha_wrapper != nil) {
+                  #           alpha = [alpha_wrapper value];
+                  #         }
+                  #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
+                  #      }
+                  #
+                  #      static Color* toProto(UIColor* color) {
+                  #          CGFloat red, green, blue, alpha;
+                  #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
+                  #            return nil;
+                  #          }
+                  #          Color* result = [Color alloc] init];
+                  #          [result setRed:red];
+                  #          [result setGreen:green];
+                  #          [result setBlue:blue];
+                  #          if (alpha <= 0.9999) {
+                  #            [result setAlpha:floatWrapperWithValue(alpha)];
+                  #          }
+                  #          [result autorelease];
+                  #          return result;
+                  #     }
+                  #     // ...
+                  #
+                  #  Example (JavaScript):
+                  #
+                  #     // ...
+                  #
+                  #     var protoToCssColor = function(rgb_color) {
+                  #        var redFrac = rgb_color.red || 0.0;
+                  #        var greenFrac = rgb_color.green || 0.0;
+                  #        var blueFrac = rgb_color.blue || 0.0;
+                  #        var red = Math.floor(redFrac * 255);
+                  #        var green = Math.floor(greenFrac * 255);
+                  #        var blue = Math.floor(blueFrac * 255);
+                  #
+                  #        if (!('alpha' in rgb_color)) {
+                  #           return rgbToCssColor_(red, green, blue);
+                  #        }
+                  #
+                  #        var alphaFrac = rgb_color.alpha.value || 0.0;
+                  #        var rgbParams = [red, green, blue].join(',');
+                  #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
+                  #     };
+                  #
+                  #     var rgbToCssColor_ = function(red, green, blue) {
+                  #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
+                  #       var hexString = rgbNumber.toString(16);
+                  #       var missingZeros = 6 - hexString.length;
+                  #       var resultBuilder = ['#'];
+                  #       for (var i = 0; i < missingZeros; i++) {
+                  #          resultBuilder.push('0');
+                  #       }
+                  #       resultBuilder.push(hexString);
+                  #       return resultBuilder.join('');
+                  #     };
+                  #
+                  #     // ...
+                "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+                "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
+                    # the final pixel color is defined by the equation:
+                    #
+                    #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
+                    #
+                    # This means that a value of 1.0 corresponds to a solid color, whereas
+                    # a value of 0.0 corresponds to a completely transparent color. This
+                    # uses a wrapper message rather than a simple float scalar so that it is
+                    # possible to distinguish between a default value and the value being unset.
+                    # If omitted, this color object is to be rendered as a solid color
+                    # (as if the alpha value had been explicitly given with a value of 1.0).
+                "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
+                "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
+              },
+            },
+            "rowProperties": { # Properties referring a single dimension (either row or column). If both # Properties for row bands. These properties will be applied on a row-by-row
+                # basis throughout all the rows in the range. At least one of
+                # row_properties or column_properties must be specified.
+                # BandedRange.row_properties and BandedRange.column_properties are
+                # set, the fill colors are applied to cells according to the following rules:
+                #
+                # * header_color and footer_color take priority over band colors.
+                # * first_band_color takes priority over second_band_color.
+                # * row_properties takes priority over column_properties.
+                #
+                # For example, the first row color takes priority over the first column
+                # color, but the first column color takes priority over the second row color.
+                # Similarly, the row header takes priority over the column header in the
+                # top left cell, but the column header takes priority over the first row
+                # color if the row header is not set.
+              "secondBandColor": { # Represents a color in the RGBA color space. This representation is designed # The second color that is alternating. (Required)
+                  # for simplicity of conversion to/from color representations in various
+                  # languages over compactness; for example, the fields of this representation
+                  # can be trivially provided to the constructor of "java.awt.Color" in Java; it
+                  # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
+                  # method in iOS; and, with just a little work, it can be easily formatted into
+                  # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
+                  #
+                  # Example (Java):
+                  #
+                  #      import com.google.type.Color;
+                  #
+                  #      // ...
+                  #      public static java.awt.Color fromProto(Color protocolor) {
+                  #        float alpha = protocolor.hasAlpha()
+                  #            ? protocolor.getAlpha().getValue()
+                  #            : 1.0;
+                  #
+                  #        return new java.awt.Color(
+                  #            protocolor.getRed(),
+                  #            protocolor.getGreen(),
+                  #            protocolor.getBlue(),
+                  #            alpha);
+                  #      }
+                  #
+                  #      public static Color toProto(java.awt.Color color) {
+                  #        float red = (float) color.getRed();
+                  #        float green = (float) color.getGreen();
+                  #        float blue = (float) color.getBlue();
+                  #        float denominator = 255.0;
+                  #        Color.Builder resultBuilder =
+                  #            Color
+                  #                .newBuilder()
+                  #                .setRed(red / denominator)
+                  #                .setGreen(green / denominator)
+                  #                .setBlue(blue / denominator);
+                  #        int alpha = color.getAlpha();
+                  #        if (alpha != 255) {
+                  #          result.setAlpha(
+                  #              FloatValue
+                  #                  .newBuilder()
+                  #                  .setValue(((float) alpha) / denominator)
+                  #                  .build());
+                  #        }
+                  #        return resultBuilder.build();
+                  #      }
+                  #      // ...
+                  #
+                  # Example (iOS / Obj-C):
+                  #
+                  #      // ...
+                  #      static UIColor* fromProto(Color* protocolor) {
+                  #         float red = [protocolor red];
+                  #         float green = [protocolor green];
+                  #         float blue = [protocolor blue];
+                  #         FloatValue* alpha_wrapper = [protocolor alpha];
+                  #         float alpha = 1.0;
+                  #         if (alpha_wrapper != nil) {
+                  #           alpha = [alpha_wrapper value];
+                  #         }
+                  #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
+                  #      }
+                  #
+                  #      static Color* toProto(UIColor* color) {
+                  #          CGFloat red, green, blue, alpha;
+                  #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
+                  #            return nil;
+                  #          }
+                  #          Color* result = [Color alloc] init];
+                  #          [result setRed:red];
+                  #          [result setGreen:green];
+                  #          [result setBlue:blue];
+                  #          if (alpha <= 0.9999) {
+                  #            [result setAlpha:floatWrapperWithValue(alpha)];
+                  #          }
+                  #          [result autorelease];
+                  #          return result;
+                  #     }
+                  #     // ...
+                  #
+                  #  Example (JavaScript):
+                  #
+                  #     // ...
+                  #
+                  #     var protoToCssColor = function(rgb_color) {
+                  #        var redFrac = rgb_color.red || 0.0;
+                  #        var greenFrac = rgb_color.green || 0.0;
+                  #        var blueFrac = rgb_color.blue || 0.0;
+                  #        var red = Math.floor(redFrac * 255);
+                  #        var green = Math.floor(greenFrac * 255);
+                  #        var blue = Math.floor(blueFrac * 255);
+                  #
+                  #        if (!('alpha' in rgb_color)) {
+                  #           return rgbToCssColor_(red, green, blue);
+                  #        }
+                  #
+                  #        var alphaFrac = rgb_color.alpha.value || 0.0;
+                  #        var rgbParams = [red, green, blue].join(',');
+                  #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
+                  #     };
+                  #
+                  #     var rgbToCssColor_ = function(red, green, blue) {
+                  #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
+                  #       var hexString = rgbNumber.toString(16);
+                  #       var missingZeros = 6 - hexString.length;
+                  #       var resultBuilder = ['#'];
+                  #       for (var i = 0; i < missingZeros; i++) {
+                  #          resultBuilder.push('0');
+                  #       }
+                  #       resultBuilder.push(hexString);
+                  #       return resultBuilder.join('');
+                  #     };
+                  #
+                  #     // ...
+                "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+                "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
+                    # the final pixel color is defined by the equation:
+                    #
+                    #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
+                    #
+                    # This means that a value of 1.0 corresponds to a solid color, whereas
+                    # a value of 0.0 corresponds to a completely transparent color. This
+                    # uses a wrapper message rather than a simple float scalar so that it is
+                    # possible to distinguish between a default value and the value being unset.
+                    # If omitted, this color object is to be rendered as a solid color
+                    # (as if the alpha value had been explicitly given with a value of 1.0).
+                "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
+                "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
+              },
+              "headerColor": { # Represents a color in the RGBA color space. This representation is designed # The color of the first row or column. If this field is set, the first
+                  # row or column will be filled with this color and the colors will
+                  # alternate between first_band_color and second_band_color starting
+                  # from the second row or column. Otherwise, the first row or column will be
+                  # filled with first_band_color and the colors will proceed to alternate
+                  # as they normally would.
+                  # for simplicity of conversion to/from color representations in various
+                  # languages over compactness; for example, the fields of this representation
+                  # can be trivially provided to the constructor of "java.awt.Color" in Java; it
+                  # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
+                  # method in iOS; and, with just a little work, it can be easily formatted into
+                  # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
+                  #
+                  # Example (Java):
+                  #
+                  #      import com.google.type.Color;
+                  #
+                  #      // ...
+                  #      public static java.awt.Color fromProto(Color protocolor) {
+                  #        float alpha = protocolor.hasAlpha()
+                  #            ? protocolor.getAlpha().getValue()
+                  #            : 1.0;
+                  #
+                  #        return new java.awt.Color(
+                  #            protocolor.getRed(),
+                  #            protocolor.getGreen(),
+                  #            protocolor.getBlue(),
+                  #            alpha);
+                  #      }
+                  #
+                  #      public static Color toProto(java.awt.Color color) {
+                  #        float red = (float) color.getRed();
+                  #        float green = (float) color.getGreen();
+                  #        float blue = (float) color.getBlue();
+                  #        float denominator = 255.0;
+                  #        Color.Builder resultBuilder =
+                  #            Color
+                  #                .newBuilder()
+                  #                .setRed(red / denominator)
+                  #                .setGreen(green / denominator)
+                  #                .setBlue(blue / denominator);
+                  #        int alpha = color.getAlpha();
+                  #        if (alpha != 255) {
+                  #          result.setAlpha(
+                  #              FloatValue
+                  #                  .newBuilder()
+                  #                  .setValue(((float) alpha) / denominator)
+                  #                  .build());
+                  #        }
+                  #        return resultBuilder.build();
+                  #      }
+                  #      // ...
+                  #
+                  # Example (iOS / Obj-C):
+                  #
+                  #      // ...
+                  #      static UIColor* fromProto(Color* protocolor) {
+                  #         float red = [protocolor red];
+                  #         float green = [protocolor green];
+                  #         float blue = [protocolor blue];
+                  #         FloatValue* alpha_wrapper = [protocolor alpha];
+                  #         float alpha = 1.0;
+                  #         if (alpha_wrapper != nil) {
+                  #           alpha = [alpha_wrapper value];
+                  #         }
+                  #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
+                  #      }
+                  #
+                  #      static Color* toProto(UIColor* color) {
+                  #          CGFloat red, green, blue, alpha;
+                  #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
+                  #            return nil;
+                  #          }
+                  #          Color* result = [Color alloc] init];
+                  #          [result setRed:red];
+                  #          [result setGreen:green];
+                  #          [result setBlue:blue];
+                  #          if (alpha <= 0.9999) {
+                  #            [result setAlpha:floatWrapperWithValue(alpha)];
+                  #          }
+                  #          [result autorelease];
+                  #          return result;
+                  #     }
+                  #     // ...
+                  #
+                  #  Example (JavaScript):
+                  #
+                  #     // ...
+                  #
+                  #     var protoToCssColor = function(rgb_color) {
+                  #        var redFrac = rgb_color.red || 0.0;
+                  #        var greenFrac = rgb_color.green || 0.0;
+                  #        var blueFrac = rgb_color.blue || 0.0;
+                  #        var red = Math.floor(redFrac * 255);
+                  #        var green = Math.floor(greenFrac * 255);
+                  #        var blue = Math.floor(blueFrac * 255);
+                  #
+                  #        if (!('alpha' in rgb_color)) {
+                  #           return rgbToCssColor_(red, green, blue);
+                  #        }
+                  #
+                  #        var alphaFrac = rgb_color.alpha.value || 0.0;
+                  #        var rgbParams = [red, green, blue].join(',');
+                  #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
+                  #     };
+                  #
+                  #     var rgbToCssColor_ = function(red, green, blue) {
+                  #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
+                  #       var hexString = rgbNumber.toString(16);
+                  #       var missingZeros = 6 - hexString.length;
+                  #       var resultBuilder = ['#'];
+                  #       for (var i = 0; i < missingZeros; i++) {
+                  #          resultBuilder.push('0');
+                  #       }
+                  #       resultBuilder.push(hexString);
+                  #       return resultBuilder.join('');
+                  #     };
+                  #
+                  #     // ...
+                "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+                "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
+                    # the final pixel color is defined by the equation:
+                    #
+                    #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
+                    #
+                    # This means that a value of 1.0 corresponds to a solid color, whereas
+                    # a value of 0.0 corresponds to a completely transparent color. This
+                    # uses a wrapper message rather than a simple float scalar so that it is
+                    # possible to distinguish between a default value and the value being unset.
+                    # If omitted, this color object is to be rendered as a solid color
+                    # (as if the alpha value had been explicitly given with a value of 1.0).
+                "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
+                "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
+              },
+              "footerColor": { # Represents a color in the RGBA color space. This representation is designed # The color of the last row or column. If this field is not set, the last
+                  # row or column will be filled with either first_band_color or
+                  # second_band_color, depending on the color of the previous row or
+                  # column.
+                  # for simplicity of conversion to/from color representations in various
+                  # languages over compactness; for example, the fields of this representation
+                  # can be trivially provided to the constructor of "java.awt.Color" in Java; it
+                  # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
+                  # method in iOS; and, with just a little work, it can be easily formatted into
+                  # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
+                  #
+                  # Example (Java):
+                  #
+                  #      import com.google.type.Color;
+                  #
+                  #      // ...
+                  #      public static java.awt.Color fromProto(Color protocolor) {
+                  #        float alpha = protocolor.hasAlpha()
+                  #            ? protocolor.getAlpha().getValue()
+                  #            : 1.0;
+                  #
+                  #        return new java.awt.Color(
+                  #            protocolor.getRed(),
+                  #            protocolor.getGreen(),
+                  #            protocolor.getBlue(),
+                  #            alpha);
+                  #      }
+                  #
+                  #      public static Color toProto(java.awt.Color color) {
+                  #        float red = (float) color.getRed();
+                  #        float green = (float) color.getGreen();
+                  #        float blue = (float) color.getBlue();
+                  #        float denominator = 255.0;
+                  #        Color.Builder resultBuilder =
+                  #            Color
+                  #                .newBuilder()
+                  #                .setRed(red / denominator)
+                  #                .setGreen(green / denominator)
+                  #                .setBlue(blue / denominator);
+                  #        int alpha = color.getAlpha();
+                  #        if (alpha != 255) {
+                  #          result.setAlpha(
+                  #              FloatValue
+                  #                  .newBuilder()
+                  #                  .setValue(((float) alpha) / denominator)
+                  #                  .build());
+                  #        }
+                  #        return resultBuilder.build();
+                  #      }
+                  #      // ...
+                  #
+                  # Example (iOS / Obj-C):
+                  #
+                  #      // ...
+                  #      static UIColor* fromProto(Color* protocolor) {
+                  #         float red = [protocolor red];
+                  #         float green = [protocolor green];
+                  #         float blue = [protocolor blue];
+                  #         FloatValue* alpha_wrapper = [protocolor alpha];
+                  #         float alpha = 1.0;
+                  #         if (alpha_wrapper != nil) {
+                  #           alpha = [alpha_wrapper value];
+                  #         }
+                  #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
+                  #      }
+                  #
+                  #      static Color* toProto(UIColor* color) {
+                  #          CGFloat red, green, blue, alpha;
+                  #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
+                  #            return nil;
+                  #          }
+                  #          Color* result = [Color alloc] init];
+                  #          [result setRed:red];
+                  #          [result setGreen:green];
+                  #          [result setBlue:blue];
+                  #          if (alpha <= 0.9999) {
+                  #            [result setAlpha:floatWrapperWithValue(alpha)];
+                  #          }
+                  #          [result autorelease];
+                  #          return result;
+                  #     }
+                  #     // ...
+                  #
+                  #  Example (JavaScript):
+                  #
+                  #     // ...
+                  #
+                  #     var protoToCssColor = function(rgb_color) {
+                  #        var redFrac = rgb_color.red || 0.0;
+                  #        var greenFrac = rgb_color.green || 0.0;
+                  #        var blueFrac = rgb_color.blue || 0.0;
+                  #        var red = Math.floor(redFrac * 255);
+                  #        var green = Math.floor(greenFrac * 255);
+                  #        var blue = Math.floor(blueFrac * 255);
+                  #
+                  #        if (!('alpha' in rgb_color)) {
+                  #           return rgbToCssColor_(red, green, blue);
+                  #        }
+                  #
+                  #        var alphaFrac = rgb_color.alpha.value || 0.0;
+                  #        var rgbParams = [red, green, blue].join(',');
+                  #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
+                  #     };
+                  #
+                  #     var rgbToCssColor_ = function(red, green, blue) {
+                  #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
+                  #       var hexString = rgbNumber.toString(16);
+                  #       var missingZeros = 6 - hexString.length;
+                  #       var resultBuilder = ['#'];
+                  #       for (var i = 0; i < missingZeros; i++) {
+                  #          resultBuilder.push('0');
+                  #       }
+                  #       resultBuilder.push(hexString);
+                  #       return resultBuilder.join('');
+                  #     };
+                  #
+                  #     // ...
+                "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+                "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
+                    # the final pixel color is defined by the equation:
+                    #
+                    #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
+                    #
+                    # This means that a value of 1.0 corresponds to a solid color, whereas
+                    # a value of 0.0 corresponds to a completely transparent color. This
+                    # uses a wrapper message rather than a simple float scalar so that it is
+                    # possible to distinguish between a default value and the value being unset.
+                    # If omitted, this color object is to be rendered as a solid color
+                    # (as if the alpha value had been explicitly given with a value of 1.0).
+                "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
+                "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
+              },
+              "firstBandColor": { # Represents a color in the RGBA color space. This representation is designed # The first color that is alternating. (Required)
+                  # for simplicity of conversion to/from color representations in various
+                  # languages over compactness; for example, the fields of this representation
+                  # can be trivially provided to the constructor of "java.awt.Color" in Java; it
+                  # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
+                  # method in iOS; and, with just a little work, it can be easily formatted into
+                  # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
+                  #
+                  # Example (Java):
+                  #
+                  #      import com.google.type.Color;
+                  #
+                  #      // ...
+                  #      public static java.awt.Color fromProto(Color protocolor) {
+                  #        float alpha = protocolor.hasAlpha()
+                  #            ? protocolor.getAlpha().getValue()
+                  #            : 1.0;
+                  #
+                  #        return new java.awt.Color(
+                  #            protocolor.getRed(),
+                  #            protocolor.getGreen(),
+                  #            protocolor.getBlue(),
+                  #            alpha);
+                  #      }
+                  #
+                  #      public static Color toProto(java.awt.Color color) {
+                  #        float red = (float) color.getRed();
+                  #        float green = (float) color.getGreen();
+                  #        float blue = (float) color.getBlue();
+                  #        float denominator = 255.0;
+                  #        Color.Builder resultBuilder =
+                  #            Color
+                  #                .newBuilder()
+                  #                .setRed(red / denominator)
+                  #                .setGreen(green / denominator)
+                  #                .setBlue(blue / denominator);
+                  #        int alpha = color.getAlpha();
+                  #        if (alpha != 255) {
+                  #          result.setAlpha(
+                  #              FloatValue
+                  #                  .newBuilder()
+                  #                  .setValue(((float) alpha) / denominator)
+                  #                  .build());
+                  #        }
+                  #        return resultBuilder.build();
+                  #      }
+                  #      // ...
+                  #
+                  # Example (iOS / Obj-C):
+                  #
+                  #      // ...
+                  #      static UIColor* fromProto(Color* protocolor) {
+                  #         float red = [protocolor red];
+                  #         float green = [protocolor green];
+                  #         float blue = [protocolor blue];
+                  #         FloatValue* alpha_wrapper = [protocolor alpha];
+                  #         float alpha = 1.0;
+                  #         if (alpha_wrapper != nil) {
+                  #           alpha = [alpha_wrapper value];
+                  #         }
+                  #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
+                  #      }
+                  #
+                  #      static Color* toProto(UIColor* color) {
+                  #          CGFloat red, green, blue, alpha;
+                  #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
+                  #            return nil;
+                  #          }
+                  #          Color* result = [Color alloc] init];
+                  #          [result setRed:red];
+                  #          [result setGreen:green];
+                  #          [result setBlue:blue];
+                  #          if (alpha <= 0.9999) {
+                  #            [result setAlpha:floatWrapperWithValue(alpha)];
+                  #          }
+                  #          [result autorelease];
+                  #          return result;
+                  #     }
+                  #     // ...
+                  #
+                  #  Example (JavaScript):
+                  #
+                  #     // ...
+                  #
+                  #     var protoToCssColor = function(rgb_color) {
+                  #        var redFrac = rgb_color.red || 0.0;
+                  #        var greenFrac = rgb_color.green || 0.0;
+                  #        var blueFrac = rgb_color.blue || 0.0;
+                  #        var red = Math.floor(redFrac * 255);
+                  #        var green = Math.floor(greenFrac * 255);
+                  #        var blue = Math.floor(blueFrac * 255);
+                  #
+                  #        if (!('alpha' in rgb_color)) {
+                  #           return rgbToCssColor_(red, green, blue);
+                  #        }
+                  #
+                  #        var alphaFrac = rgb_color.alpha.value || 0.0;
+                  #        var rgbParams = [red, green, blue].join(',');
+                  #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
+                  #     };
+                  #
+                  #     var rgbToCssColor_ = function(red, green, blue) {
+                  #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
+                  #       var hexString = rgbNumber.toString(16);
+                  #       var missingZeros = 6 - hexString.length;
+                  #       var resultBuilder = ['#'];
+                  #       for (var i = 0; i < missingZeros; i++) {
+                  #          resultBuilder.push('0');
+                  #       }
+                  #       resultBuilder.push(hexString);
+                  #       return resultBuilder.join('');
+                  #     };
+                  #
+                  #     // ...
+                "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+                "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
+                    # the final pixel color is defined by the equation:
+                    #
+                    #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
+                    #
+                    # This means that a value of 1.0 corresponds to a solid color, whereas
+                    # a value of 0.0 corresponds to a completely transparent color. This
+                    # uses a wrapper message rather than a simple float scalar so that it is
+                    # possible to distinguish between a default value and the value being unset.
+                    # If omitted, this color object is to be rendered as a solid color
+                    # (as if the alpha value had been explicitly given with a value of 1.0).
+                "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
+                "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
+              },
+            },
+            "bandedRangeId": 42, # The id of the banded range.
+          },
+        ],
         "merges": [ # The ranges that are merged together.
           { # A range on a sheet.
               # All indexes are zero-based.
@@ -23618,7 +40965,13 @@
           "index": 42, # The index of the sheet within the spreadsheet.
               # When adding or updating sheet properties, if this field
               # is excluded then the sheet will be added or moved to the end
-              # of the sheet list.
+              # of the sheet list. When updating sheet indices or inserting
+              # sheets, movement is considered in "before the move" indexes.
+              # For example, if there were 3 sheets (S1, S2, S3) in order to
+              # move S1 ahead of S2 the index would have to be set to 2. A sheet
+              # index update request will be ignored if the requested index is
+              # identical to the sheets current index or if the requested new
+              # index is equal to the current sheet index + 1.
           "title": "A String", # The name of the sheet.
           "gridProperties": { # Properties of a grid. # Additional properties of the sheet if this sheet is a grid.
               # (If the sheet is an object sheet, containing a chart or image, then
@@ -23766,5296 +41119,9 @@
         },
       },
     ],
-  }
-
-  x__xgafv: string, V1 error format.
-    Allowed values
-      1 - v1 error format
-      2 - v2 error format
-
-Returns:
-  An object of the form:
-
-    { # Resource that represents a spreadsheet.
-      "spreadsheetId": "A String", # The ID of the spreadsheet.
-          # This field is read-only.
-      "namedRanges": [ # The named ranges defined in a spreadsheet.
-        { # A named range.
-          "namedRangeId": "A String", # The ID of the named range.
-          "range": { # A range on a sheet. # The range this represents.
-              # All indexes are zero-based.
-              # Indexes are half open, e.g the start index is inclusive
-              # and the end index is exclusive -- [start_index, end_index).
-              # Missing indexes indicate the range is unbounded on that side.
-              #
-              # For example, if `"Sheet1"` is sheet ID 0, then:
-              #
-              #   `Sheet1!A1:A1 == sheet_id: 0,
-              #                   start_row_index: 0, end_row_index: 1,
-              #                   start_column_index: 0, end_column_index: 1`
-              #
-              #   `Sheet1!A3:B4 == sheet_id: 0,
-              #                   start_row_index: 2, end_row_index: 4,
-              #                   start_column_index: 0, end_column_index: 2`
-              #
-              #   `Sheet1!A:B == sheet_id: 0,
-              #                 start_column_index: 0, end_column_index: 2`
-              #
-              #   `Sheet1!A5:B == sheet_id: 0,
-              #                  start_row_index: 4,
-              #                  start_column_index: 0, end_column_index: 2`
-              #
-              #   `Sheet1 == sheet_id:0`
-              #
-              # The start index must always be less than or equal to the end index.
-              # If the start index equals the end index, then the range is empty.
-              # Empty ranges are typically not meaningful and are usually rendered in the
-              # UI as `#REF!`.
-            "endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
-            "startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
-            "sheetId": 42, # The sheet this range is on.
-            "startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
-            "endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
-          },
-          "name": "A String", # The name of the named range.
-        },
-      ],
-      "properties": { # Properties of a spreadsheet. # Overall properties of a spreadsheet.
-        "locale": "A String", # The locale of the spreadsheet in one of the following formats:
-            #
-            # * an ISO 639-1 language code such as `en`
-            #
-            # * an ISO 639-2 language code such as `fil`, if no 639-1 code exists
-            #
-            # * a combination of the ISO language code and country code, such as `en_US`
-            #
-            # Note: when updating this field, not all locales/languages are supported.
-        "timeZone": "A String", # The time zone of the spreadsheet, in CLDR format such as
-            # `America/New_York`. If the time zone isn't recognized, this may
-            # be a custom time zone such as `GMT-07:00`.
-        "autoRecalc": "A String", # The amount of time to wait before volatile functions are recalculated.
-        "defaultFormat": { # The format of a cell. # The default format of all cells in the spreadsheet.
-            # CellData.effectiveFormat will not be set if the
-            # cell's format is equal to this default format.
-            # This field is read-only.
-          "numberFormat": { # The number format of a cell. # A format describing how number values should be represented to the user.
-            "pattern": "A String", # Pattern string used for formatting.  If not set, a default pattern based on
-                # the user's locale will be used if necessary for the given type.
-                # See the [Date and Number Formats guide](/sheets/guides/formats) for more
-                # information about the supported patterns.
-            "type": "A String", # The type of the number format.
-                # When writing, this field must be set.
-          },
-          "textDirection": "A String", # The direction of the text in the cell.
-          "padding": { # The amount of padding around the cell, in pixels. # The padding of the cell.
-              # When updating padding, every field must be specified.
-            "top": 42, # The top padding of the cell.
-            "right": 42, # The right padding of the cell.
-            "bottom": 42, # The bottom padding of the cell.
-            "left": 42, # The left padding of the cell.
-          },
-          "horizontalAlignment": "A String", # The horizontal alignment of the value in the cell.
-          "backgroundColor": { # Represents a color in the RGBA color space. This representation is designed # The background color of the cell.
-              # for simplicity of conversion to/from color representations in various
-              # languages over compactness; for example, the fields of this representation
-              # can be trivially provided to the constructor of "java.awt.Color" in Java; it
-              # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
-              # method in iOS; and, with just a little work, it can be easily formatted into
-              # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
-              #
-              # Example (Java):
-              #
-              #      import com.google.type.Color;
-              #
-              #      // ...
-              #      public static java.awt.Color fromProto(Color protocolor) {
-              #        float alpha = protocolor.hasAlpha()
-              #            ? protocolor.getAlpha().getValue()
-              #            : 1.0;
-              #
-              #        return new java.awt.Color(
-              #            protocolor.getRed(),
-              #            protocolor.getGreen(),
-              #            protocolor.getBlue(),
-              #            alpha);
-              #      }
-              #
-              #      public static Color toProto(java.awt.Color color) {
-              #        float red = (float) color.getRed();
-              #        float green = (float) color.getGreen();
-              #        float blue = (float) color.getBlue();
-              #        float denominator = 255.0;
-              #        Color.Builder resultBuilder =
-              #            Color
-              #                .newBuilder()
-              #                .setRed(red / denominator)
-              #                .setGreen(green / denominator)
-              #                .setBlue(blue / denominator);
-              #        int alpha = color.getAlpha();
-              #        if (alpha != 255) {
-              #          result.setAlpha(
-              #              FloatValue
-              #                  .newBuilder()
-              #                  .setValue(((float) alpha) / denominator)
-              #                  .build());
-              #        }
-              #        return resultBuilder.build();
-              #      }
-              #      // ...
-              #
-              # Example (iOS / Obj-C):
-              #
-              #      // ...
-              #      static UIColor* fromProto(Color* protocolor) {
-              #         float red = [protocolor red];
-              #         float green = [protocolor green];
-              #         float blue = [protocolor blue];
-              #         FloatValue* alpha_wrapper = [protocolor alpha];
-              #         float alpha = 1.0;
-              #         if (alpha_wrapper != nil) {
-              #           alpha = [alpha_wrapper value];
-              #         }
-              #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
-              #      }
-              #
-              #      static Color* toProto(UIColor* color) {
-              #          CGFloat red, green, blue, alpha;
-              #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
-              #            return nil;
-              #          }
-              #          Color* result = [Color alloc] init];
-              #          [result setRed:red];
-              #          [result setGreen:green];
-              #          [result setBlue:blue];
-              #          if (alpha <= 0.9999) {
-              #            [result setAlpha:floatWrapperWithValue(alpha)];
-              #          }
-              #          [result autorelease];
-              #          return result;
-              #     }
-              #     // ...
-              #
-              #  Example (JavaScript):
-              #
-              #     // ...
-              #
-              #     var protoToCssColor = function(rgb_color) {
-              #        var redFrac = rgb_color.red || 0.0;
-              #        var greenFrac = rgb_color.green || 0.0;
-              #        var blueFrac = rgb_color.blue || 0.0;
-              #        var red = Math.floor(redFrac * 255);
-              #        var green = Math.floor(greenFrac * 255);
-              #        var blue = Math.floor(blueFrac * 255);
-              #
-              #        if (!('alpha' in rgb_color)) {
-              #           return rgbToCssColor_(red, green, blue);
-              #        }
-              #
-              #        var alphaFrac = rgb_color.alpha.value || 0.0;
-              #        var rgbParams = [red, green, blue].join(',');
-              #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
-              #     };
-              #
-              #     var rgbToCssColor_ = function(red, green, blue) {
-              #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
-              #       var hexString = rgbNumber.toString(16);
-              #       var missingZeros = 6 - hexString.length;
-              #       var resultBuilder = ['#'];
-              #       for (var i = 0; i < missingZeros; i++) {
-              #          resultBuilder.push('0');
-              #       }
-              #       resultBuilder.push(hexString);
-              #       return resultBuilder.join('');
-              #     };
-              #
-              #     // ...
-            "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
-            "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
-                # the final pixel color is defined by the equation:
-                #
-                #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
-                #
-                # This means that a value of 1.0 corresponds to a solid color, whereas
-                # a value of 0.0 corresponds to a completely transparent color. This
-                # uses a wrapper message rather than a simple float scalar so that it is
-                # possible to distinguish between a default value and the value being unset.
-                # If omitted, this color object is to be rendered as a solid color
-                # (as if the alpha value had been explicitly given with a value of 1.0).
-            "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
-            "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
-          },
-          "verticalAlignment": "A String", # The vertical alignment of the value in the cell.
-          "textFormat": { # The format of a run of text in a cell. # The format of the text in the cell (unless overridden by a format run).
-              # Absent values indicate that the field isn't specified.
-            "foregroundColor": { # Represents a color in the RGBA color space. This representation is designed # The foreground color of the text.
-                # for simplicity of conversion to/from color representations in various
-                # languages over compactness; for example, the fields of this representation
-                # can be trivially provided to the constructor of "java.awt.Color" in Java; it
-                # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
-                # method in iOS; and, with just a little work, it can be easily formatted into
-                # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
-                #
-                # Example (Java):
-                #
-                #      import com.google.type.Color;
-                #
-                #      // ...
-                #      public static java.awt.Color fromProto(Color protocolor) {
-                #        float alpha = protocolor.hasAlpha()
-                #            ? protocolor.getAlpha().getValue()
-                #            : 1.0;
-                #
-                #        return new java.awt.Color(
-                #            protocolor.getRed(),
-                #            protocolor.getGreen(),
-                #            protocolor.getBlue(),
-                #            alpha);
-                #      }
-                #
-                #      public static Color toProto(java.awt.Color color) {
-                #        float red = (float) color.getRed();
-                #        float green = (float) color.getGreen();
-                #        float blue = (float) color.getBlue();
-                #        float denominator = 255.0;
-                #        Color.Builder resultBuilder =
-                #            Color
-                #                .newBuilder()
-                #                .setRed(red / denominator)
-                #                .setGreen(green / denominator)
-                #                .setBlue(blue / denominator);
-                #        int alpha = color.getAlpha();
-                #        if (alpha != 255) {
-                #          result.setAlpha(
-                #              FloatValue
-                #                  .newBuilder()
-                #                  .setValue(((float) alpha) / denominator)
-                #                  .build());
-                #        }
-                #        return resultBuilder.build();
-                #      }
-                #      // ...
-                #
-                # Example (iOS / Obj-C):
-                #
-                #      // ...
-                #      static UIColor* fromProto(Color* protocolor) {
-                #         float red = [protocolor red];
-                #         float green = [protocolor green];
-                #         float blue = [protocolor blue];
-                #         FloatValue* alpha_wrapper = [protocolor alpha];
-                #         float alpha = 1.0;
-                #         if (alpha_wrapper != nil) {
-                #           alpha = [alpha_wrapper value];
-                #         }
-                #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
-                #      }
-                #
-                #      static Color* toProto(UIColor* color) {
-                #          CGFloat red, green, blue, alpha;
-                #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
-                #            return nil;
-                #          }
-                #          Color* result = [Color alloc] init];
-                #          [result setRed:red];
-                #          [result setGreen:green];
-                #          [result setBlue:blue];
-                #          if (alpha <= 0.9999) {
-                #            [result setAlpha:floatWrapperWithValue(alpha)];
-                #          }
-                #          [result autorelease];
-                #          return result;
-                #     }
-                #     // ...
-                #
-                #  Example (JavaScript):
-                #
-                #     // ...
-                #
-                #     var protoToCssColor = function(rgb_color) {
-                #        var redFrac = rgb_color.red || 0.0;
-                #        var greenFrac = rgb_color.green || 0.0;
-                #        var blueFrac = rgb_color.blue || 0.0;
-                #        var red = Math.floor(redFrac * 255);
-                #        var green = Math.floor(greenFrac * 255);
-                #        var blue = Math.floor(blueFrac * 255);
-                #
-                #        if (!('alpha' in rgb_color)) {
-                #           return rgbToCssColor_(red, green, blue);
-                #        }
-                #
-                #        var alphaFrac = rgb_color.alpha.value || 0.0;
-                #        var rgbParams = [red, green, blue].join(',');
-                #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
-                #     };
-                #
-                #     var rgbToCssColor_ = function(red, green, blue) {
-                #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
-                #       var hexString = rgbNumber.toString(16);
-                #       var missingZeros = 6 - hexString.length;
-                #       var resultBuilder = ['#'];
-                #       for (var i = 0; i < missingZeros; i++) {
-                #          resultBuilder.push('0');
-                #       }
-                #       resultBuilder.push(hexString);
-                #       return resultBuilder.join('');
-                #     };
-                #
-                #     // ...
-              "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
-              "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
-                  # the final pixel color is defined by the equation:
-                  #
-                  #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
-                  #
-                  # This means that a value of 1.0 corresponds to a solid color, whereas
-                  # a value of 0.0 corresponds to a completely transparent color. This
-                  # uses a wrapper message rather than a simple float scalar so that it is
-                  # possible to distinguish between a default value and the value being unset.
-                  # If omitted, this color object is to be rendered as a solid color
-                  # (as if the alpha value had been explicitly given with a value of 1.0).
-              "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
-              "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
-            },
-            "bold": True or False, # True if the text is bold.
-            "strikethrough": True or False, # True if the text has a strikethrough.
-            "fontFamily": "A String", # The font family.
-            "fontSize": 42, # The size of the font.
-            "italic": True or False, # True if the text is italicized.
-            "underline": True or False, # True if the text is underlined.
-          },
-          "hyperlinkDisplayType": "A String", # How a hyperlink, if it exists, should be displayed in the cell.
-          "borders": { # The borders of the cell. # The borders of the cell.
-            "top": { # A border along a cell. # The top border of the cell.
-              "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
-                  # for simplicity of conversion to/from color representations in various
-                  # languages over compactness; for example, the fields of this representation
-                  # can be trivially provided to the constructor of "java.awt.Color" in Java; it
-                  # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
-                  # method in iOS; and, with just a little work, it can be easily formatted into
-                  # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
-                  #
-                  # Example (Java):
-                  #
-                  #      import com.google.type.Color;
-                  #
-                  #      // ...
-                  #      public static java.awt.Color fromProto(Color protocolor) {
-                  #        float alpha = protocolor.hasAlpha()
-                  #            ? protocolor.getAlpha().getValue()
-                  #            : 1.0;
-                  #
-                  #        return new java.awt.Color(
-                  #            protocolor.getRed(),
-                  #            protocolor.getGreen(),
-                  #            protocolor.getBlue(),
-                  #            alpha);
-                  #      }
-                  #
-                  #      public static Color toProto(java.awt.Color color) {
-                  #        float red = (float) color.getRed();
-                  #        float green = (float) color.getGreen();
-                  #        float blue = (float) color.getBlue();
-                  #        float denominator = 255.0;
-                  #        Color.Builder resultBuilder =
-                  #            Color
-                  #                .newBuilder()
-                  #                .setRed(red / denominator)
-                  #                .setGreen(green / denominator)
-                  #                .setBlue(blue / denominator);
-                  #        int alpha = color.getAlpha();
-                  #        if (alpha != 255) {
-                  #          result.setAlpha(
-                  #              FloatValue
-                  #                  .newBuilder()
-                  #                  .setValue(((float) alpha) / denominator)
-                  #                  .build());
-                  #        }
-                  #        return resultBuilder.build();
-                  #      }
-                  #      // ...
-                  #
-                  # Example (iOS / Obj-C):
-                  #
-                  #      // ...
-                  #      static UIColor* fromProto(Color* protocolor) {
-                  #         float red = [protocolor red];
-                  #         float green = [protocolor green];
-                  #         float blue = [protocolor blue];
-                  #         FloatValue* alpha_wrapper = [protocolor alpha];
-                  #         float alpha = 1.0;
-                  #         if (alpha_wrapper != nil) {
-                  #           alpha = [alpha_wrapper value];
-                  #         }
-                  #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
-                  #      }
-                  #
-                  #      static Color* toProto(UIColor* color) {
-                  #          CGFloat red, green, blue, alpha;
-                  #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
-                  #            return nil;
-                  #          }
-                  #          Color* result = [Color alloc] init];
-                  #          [result setRed:red];
-                  #          [result setGreen:green];
-                  #          [result setBlue:blue];
-                  #          if (alpha <= 0.9999) {
-                  #            [result setAlpha:floatWrapperWithValue(alpha)];
-                  #          }
-                  #          [result autorelease];
-                  #          return result;
-                  #     }
-                  #     // ...
-                  #
-                  #  Example (JavaScript):
-                  #
-                  #     // ...
-                  #
-                  #     var protoToCssColor = function(rgb_color) {
-                  #        var redFrac = rgb_color.red || 0.0;
-                  #        var greenFrac = rgb_color.green || 0.0;
-                  #        var blueFrac = rgb_color.blue || 0.0;
-                  #        var red = Math.floor(redFrac * 255);
-                  #        var green = Math.floor(greenFrac * 255);
-                  #        var blue = Math.floor(blueFrac * 255);
-                  #
-                  #        if (!('alpha' in rgb_color)) {
-                  #           return rgbToCssColor_(red, green, blue);
-                  #        }
-                  #
-                  #        var alphaFrac = rgb_color.alpha.value || 0.0;
-                  #        var rgbParams = [red, green, blue].join(',');
-                  #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
-                  #     };
-                  #
-                  #     var rgbToCssColor_ = function(red, green, blue) {
-                  #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
-                  #       var hexString = rgbNumber.toString(16);
-                  #       var missingZeros = 6 - hexString.length;
-                  #       var resultBuilder = ['#'];
-                  #       for (var i = 0; i < missingZeros; i++) {
-                  #          resultBuilder.push('0');
-                  #       }
-                  #       resultBuilder.push(hexString);
-                  #       return resultBuilder.join('');
-                  #     };
-                  #
-                  #     // ...
-                "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
-                "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
-                    # the final pixel color is defined by the equation:
-                    #
-                    #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
-                    #
-                    # This means that a value of 1.0 corresponds to a solid color, whereas
-                    # a value of 0.0 corresponds to a completely transparent color. This
-                    # uses a wrapper message rather than a simple float scalar so that it is
-                    # possible to distinguish between a default value and the value being unset.
-                    # If omitted, this color object is to be rendered as a solid color
-                    # (as if the alpha value had been explicitly given with a value of 1.0).
-                "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
-                "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
-              },
-              "width": 42, # The width of the border, in pixels.
-                  # Deprecated; the width is determined by the "style" field.
-              "style": "A String", # The style of the border.
-            },
-            "right": { # A border along a cell. # The right border of the cell.
-              "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
-                  # for simplicity of conversion to/from color representations in various
-                  # languages over compactness; for example, the fields of this representation
-                  # can be trivially provided to the constructor of "java.awt.Color" in Java; it
-                  # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
-                  # method in iOS; and, with just a little work, it can be easily formatted into
-                  # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
-                  #
-                  # Example (Java):
-                  #
-                  #      import com.google.type.Color;
-                  #
-                  #      // ...
-                  #      public static java.awt.Color fromProto(Color protocolor) {
-                  #        float alpha = protocolor.hasAlpha()
-                  #            ? protocolor.getAlpha().getValue()
-                  #            : 1.0;
-                  #
-                  #        return new java.awt.Color(
-                  #            protocolor.getRed(),
-                  #            protocolor.getGreen(),
-                  #            protocolor.getBlue(),
-                  #            alpha);
-                  #      }
-                  #
-                  #      public static Color toProto(java.awt.Color color) {
-                  #        float red = (float) color.getRed();
-                  #        float green = (float) color.getGreen();
-                  #        float blue = (float) color.getBlue();
-                  #        float denominator = 255.0;
-                  #        Color.Builder resultBuilder =
-                  #            Color
-                  #                .newBuilder()
-                  #                .setRed(red / denominator)
-                  #                .setGreen(green / denominator)
-                  #                .setBlue(blue / denominator);
-                  #        int alpha = color.getAlpha();
-                  #        if (alpha != 255) {
-                  #          result.setAlpha(
-                  #              FloatValue
-                  #                  .newBuilder()
-                  #                  .setValue(((float) alpha) / denominator)
-                  #                  .build());
-                  #        }
-                  #        return resultBuilder.build();
-                  #      }
-                  #      // ...
-                  #
-                  # Example (iOS / Obj-C):
-                  #
-                  #      // ...
-                  #      static UIColor* fromProto(Color* protocolor) {
-                  #         float red = [protocolor red];
-                  #         float green = [protocolor green];
-                  #         float blue = [protocolor blue];
-                  #         FloatValue* alpha_wrapper = [protocolor alpha];
-                  #         float alpha = 1.0;
-                  #         if (alpha_wrapper != nil) {
-                  #           alpha = [alpha_wrapper value];
-                  #         }
-                  #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
-                  #      }
-                  #
-                  #      static Color* toProto(UIColor* color) {
-                  #          CGFloat red, green, blue, alpha;
-                  #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
-                  #            return nil;
-                  #          }
-                  #          Color* result = [Color alloc] init];
-                  #          [result setRed:red];
-                  #          [result setGreen:green];
-                  #          [result setBlue:blue];
-                  #          if (alpha <= 0.9999) {
-                  #            [result setAlpha:floatWrapperWithValue(alpha)];
-                  #          }
-                  #          [result autorelease];
-                  #          return result;
-                  #     }
-                  #     // ...
-                  #
-                  #  Example (JavaScript):
-                  #
-                  #     // ...
-                  #
-                  #     var protoToCssColor = function(rgb_color) {
-                  #        var redFrac = rgb_color.red || 0.0;
-                  #        var greenFrac = rgb_color.green || 0.0;
-                  #        var blueFrac = rgb_color.blue || 0.0;
-                  #        var red = Math.floor(redFrac * 255);
-                  #        var green = Math.floor(greenFrac * 255);
-                  #        var blue = Math.floor(blueFrac * 255);
-                  #
-                  #        if (!('alpha' in rgb_color)) {
-                  #           return rgbToCssColor_(red, green, blue);
-                  #        }
-                  #
-                  #        var alphaFrac = rgb_color.alpha.value || 0.0;
-                  #        var rgbParams = [red, green, blue].join(',');
-                  #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
-                  #     };
-                  #
-                  #     var rgbToCssColor_ = function(red, green, blue) {
-                  #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
-                  #       var hexString = rgbNumber.toString(16);
-                  #       var missingZeros = 6 - hexString.length;
-                  #       var resultBuilder = ['#'];
-                  #       for (var i = 0; i < missingZeros; i++) {
-                  #          resultBuilder.push('0');
-                  #       }
-                  #       resultBuilder.push(hexString);
-                  #       return resultBuilder.join('');
-                  #     };
-                  #
-                  #     // ...
-                "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
-                "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
-                    # the final pixel color is defined by the equation:
-                    #
-                    #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
-                    #
-                    # This means that a value of 1.0 corresponds to a solid color, whereas
-                    # a value of 0.0 corresponds to a completely transparent color. This
-                    # uses a wrapper message rather than a simple float scalar so that it is
-                    # possible to distinguish between a default value and the value being unset.
-                    # If omitted, this color object is to be rendered as a solid color
-                    # (as if the alpha value had been explicitly given with a value of 1.0).
-                "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
-                "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
-              },
-              "width": 42, # The width of the border, in pixels.
-                  # Deprecated; the width is determined by the "style" field.
-              "style": "A String", # The style of the border.
-            },
-            "bottom": { # A border along a cell. # The bottom border of the cell.
-              "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
-                  # for simplicity of conversion to/from color representations in various
-                  # languages over compactness; for example, the fields of this representation
-                  # can be trivially provided to the constructor of "java.awt.Color" in Java; it
-                  # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
-                  # method in iOS; and, with just a little work, it can be easily formatted into
-                  # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
-                  #
-                  # Example (Java):
-                  #
-                  #      import com.google.type.Color;
-                  #
-                  #      // ...
-                  #      public static java.awt.Color fromProto(Color protocolor) {
-                  #        float alpha = protocolor.hasAlpha()
-                  #            ? protocolor.getAlpha().getValue()
-                  #            : 1.0;
-                  #
-                  #        return new java.awt.Color(
-                  #            protocolor.getRed(),
-                  #            protocolor.getGreen(),
-                  #            protocolor.getBlue(),
-                  #            alpha);
-                  #      }
-                  #
-                  #      public static Color toProto(java.awt.Color color) {
-                  #        float red = (float) color.getRed();
-                  #        float green = (float) color.getGreen();
-                  #        float blue = (float) color.getBlue();
-                  #        float denominator = 255.0;
-                  #        Color.Builder resultBuilder =
-                  #            Color
-                  #                .newBuilder()
-                  #                .setRed(red / denominator)
-                  #                .setGreen(green / denominator)
-                  #                .setBlue(blue / denominator);
-                  #        int alpha = color.getAlpha();
-                  #        if (alpha != 255) {
-                  #          result.setAlpha(
-                  #              FloatValue
-                  #                  .newBuilder()
-                  #                  .setValue(((float) alpha) / denominator)
-                  #                  .build());
-                  #        }
-                  #        return resultBuilder.build();
-                  #      }
-                  #      // ...
-                  #
-                  # Example (iOS / Obj-C):
-                  #
-                  #      // ...
-                  #      static UIColor* fromProto(Color* protocolor) {
-                  #         float red = [protocolor red];
-                  #         float green = [protocolor green];
-                  #         float blue = [protocolor blue];
-                  #         FloatValue* alpha_wrapper = [protocolor alpha];
-                  #         float alpha = 1.0;
-                  #         if (alpha_wrapper != nil) {
-                  #           alpha = [alpha_wrapper value];
-                  #         }
-                  #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
-                  #      }
-                  #
-                  #      static Color* toProto(UIColor* color) {
-                  #          CGFloat red, green, blue, alpha;
-                  #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
-                  #            return nil;
-                  #          }
-                  #          Color* result = [Color alloc] init];
-                  #          [result setRed:red];
-                  #          [result setGreen:green];
-                  #          [result setBlue:blue];
-                  #          if (alpha <= 0.9999) {
-                  #            [result setAlpha:floatWrapperWithValue(alpha)];
-                  #          }
-                  #          [result autorelease];
-                  #          return result;
-                  #     }
-                  #     // ...
-                  #
-                  #  Example (JavaScript):
-                  #
-                  #     // ...
-                  #
-                  #     var protoToCssColor = function(rgb_color) {
-                  #        var redFrac = rgb_color.red || 0.0;
-                  #        var greenFrac = rgb_color.green || 0.0;
-                  #        var blueFrac = rgb_color.blue || 0.0;
-                  #        var red = Math.floor(redFrac * 255);
-                  #        var green = Math.floor(greenFrac * 255);
-                  #        var blue = Math.floor(blueFrac * 255);
-                  #
-                  #        if (!('alpha' in rgb_color)) {
-                  #           return rgbToCssColor_(red, green, blue);
-                  #        }
-                  #
-                  #        var alphaFrac = rgb_color.alpha.value || 0.0;
-                  #        var rgbParams = [red, green, blue].join(',');
-                  #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
-                  #     };
-                  #
-                  #     var rgbToCssColor_ = function(red, green, blue) {
-                  #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
-                  #       var hexString = rgbNumber.toString(16);
-                  #       var missingZeros = 6 - hexString.length;
-                  #       var resultBuilder = ['#'];
-                  #       for (var i = 0; i < missingZeros; i++) {
-                  #          resultBuilder.push('0');
-                  #       }
-                  #       resultBuilder.push(hexString);
-                  #       return resultBuilder.join('');
-                  #     };
-                  #
-                  #     // ...
-                "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
-                "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
-                    # the final pixel color is defined by the equation:
-                    #
-                    #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
-                    #
-                    # This means that a value of 1.0 corresponds to a solid color, whereas
-                    # a value of 0.0 corresponds to a completely transparent color. This
-                    # uses a wrapper message rather than a simple float scalar so that it is
-                    # possible to distinguish between a default value and the value being unset.
-                    # If omitted, this color object is to be rendered as a solid color
-                    # (as if the alpha value had been explicitly given with a value of 1.0).
-                "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
-                "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
-              },
-              "width": 42, # The width of the border, in pixels.
-                  # Deprecated; the width is determined by the "style" field.
-              "style": "A String", # The style of the border.
-            },
-            "left": { # A border along a cell. # The left border of the cell.
-              "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
-                  # for simplicity of conversion to/from color representations in various
-                  # languages over compactness; for example, the fields of this representation
-                  # can be trivially provided to the constructor of "java.awt.Color" in Java; it
-                  # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
-                  # method in iOS; and, with just a little work, it can be easily formatted into
-                  # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
-                  #
-                  # Example (Java):
-                  #
-                  #      import com.google.type.Color;
-                  #
-                  #      // ...
-                  #      public static java.awt.Color fromProto(Color protocolor) {
-                  #        float alpha = protocolor.hasAlpha()
-                  #            ? protocolor.getAlpha().getValue()
-                  #            : 1.0;
-                  #
-                  #        return new java.awt.Color(
-                  #            protocolor.getRed(),
-                  #            protocolor.getGreen(),
-                  #            protocolor.getBlue(),
-                  #            alpha);
-                  #      }
-                  #
-                  #      public static Color toProto(java.awt.Color color) {
-                  #        float red = (float) color.getRed();
-                  #        float green = (float) color.getGreen();
-                  #        float blue = (float) color.getBlue();
-                  #        float denominator = 255.0;
-                  #        Color.Builder resultBuilder =
-                  #            Color
-                  #                .newBuilder()
-                  #                .setRed(red / denominator)
-                  #                .setGreen(green / denominator)
-                  #                .setBlue(blue / denominator);
-                  #        int alpha = color.getAlpha();
-                  #        if (alpha != 255) {
-                  #          result.setAlpha(
-                  #              FloatValue
-                  #                  .newBuilder()
-                  #                  .setValue(((float) alpha) / denominator)
-                  #                  .build());
-                  #        }
-                  #        return resultBuilder.build();
-                  #      }
-                  #      // ...
-                  #
-                  # Example (iOS / Obj-C):
-                  #
-                  #      // ...
-                  #      static UIColor* fromProto(Color* protocolor) {
-                  #         float red = [protocolor red];
-                  #         float green = [protocolor green];
-                  #         float blue = [protocolor blue];
-                  #         FloatValue* alpha_wrapper = [protocolor alpha];
-                  #         float alpha = 1.0;
-                  #         if (alpha_wrapper != nil) {
-                  #           alpha = [alpha_wrapper value];
-                  #         }
-                  #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
-                  #      }
-                  #
-                  #      static Color* toProto(UIColor* color) {
-                  #          CGFloat red, green, blue, alpha;
-                  #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
-                  #            return nil;
-                  #          }
-                  #          Color* result = [Color alloc] init];
-                  #          [result setRed:red];
-                  #          [result setGreen:green];
-                  #          [result setBlue:blue];
-                  #          if (alpha <= 0.9999) {
-                  #            [result setAlpha:floatWrapperWithValue(alpha)];
-                  #          }
-                  #          [result autorelease];
-                  #          return result;
-                  #     }
-                  #     // ...
-                  #
-                  #  Example (JavaScript):
-                  #
-                  #     // ...
-                  #
-                  #     var protoToCssColor = function(rgb_color) {
-                  #        var redFrac = rgb_color.red || 0.0;
-                  #        var greenFrac = rgb_color.green || 0.0;
-                  #        var blueFrac = rgb_color.blue || 0.0;
-                  #        var red = Math.floor(redFrac * 255);
-                  #        var green = Math.floor(greenFrac * 255);
-                  #        var blue = Math.floor(blueFrac * 255);
-                  #
-                  #        if (!('alpha' in rgb_color)) {
-                  #           return rgbToCssColor_(red, green, blue);
-                  #        }
-                  #
-                  #        var alphaFrac = rgb_color.alpha.value || 0.0;
-                  #        var rgbParams = [red, green, blue].join(',');
-                  #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
-                  #     };
-                  #
-                  #     var rgbToCssColor_ = function(red, green, blue) {
-                  #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
-                  #       var hexString = rgbNumber.toString(16);
-                  #       var missingZeros = 6 - hexString.length;
-                  #       var resultBuilder = ['#'];
-                  #       for (var i = 0; i < missingZeros; i++) {
-                  #          resultBuilder.push('0');
-                  #       }
-                  #       resultBuilder.push(hexString);
-                  #       return resultBuilder.join('');
-                  #     };
-                  #
-                  #     // ...
-                "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
-                "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
-                    # the final pixel color is defined by the equation:
-                    #
-                    #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
-                    #
-                    # This means that a value of 1.0 corresponds to a solid color, whereas
-                    # a value of 0.0 corresponds to a completely transparent color. This
-                    # uses a wrapper message rather than a simple float scalar so that it is
-                    # possible to distinguish between a default value and the value being unset.
-                    # If omitted, this color object is to be rendered as a solid color
-                    # (as if the alpha value had been explicitly given with a value of 1.0).
-                "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
-                "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
-              },
-              "width": 42, # The width of the border, in pixels.
-                  # Deprecated; the width is determined by the "style" field.
-              "style": "A String", # The style of the border.
-            },
-          },
-          "wrapStrategy": "A String", # The wrap strategy for the value in the cell.
-        },
-        "title": "A String", # The title of the spreadsheet.
-      },
-      "sheets": [ # The sheets that are part of a spreadsheet.
-        { # A sheet in a spreadsheet.
-          "conditionalFormats": [ # The conditional format rules in this sheet.
-            { # A rule describing a conditional format.
-              "ranges": [ # The ranges that will be formatted if the condition is true.
-                  # All the ranges must be on the same grid.
-                { # A range on a sheet.
-                    # All indexes are zero-based.
-                    # Indexes are half open, e.g the start index is inclusive
-                    # and the end index is exclusive -- [start_index, end_index).
-                    # Missing indexes indicate the range is unbounded on that side.
-                    #
-                    # For example, if `"Sheet1"` is sheet ID 0, then:
-                    #
-                    #   `Sheet1!A1:A1 == sheet_id: 0,
-                    #                   start_row_index: 0, end_row_index: 1,
-                    #                   start_column_index: 0, end_column_index: 1`
-                    #
-                    #   `Sheet1!A3:B4 == sheet_id: 0,
-                    #                   start_row_index: 2, end_row_index: 4,
-                    #                   start_column_index: 0, end_column_index: 2`
-                    #
-                    #   `Sheet1!A:B == sheet_id: 0,
-                    #                 start_column_index: 0, end_column_index: 2`
-                    #
-                    #   `Sheet1!A5:B == sheet_id: 0,
-                    #                  start_row_index: 4,
-                    #                  start_column_index: 0, end_column_index: 2`
-                    #
-                    #   `Sheet1 == sheet_id:0`
-                    #
-                    # The start index must always be less than or equal to the end index.
-                    # If the start index equals the end index, then the range is empty.
-                    # Empty ranges are typically not meaningful and are usually rendered in the
-                    # UI as `#REF!`.
-                  "endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
-                  "startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
-                  "sheetId": 42, # The sheet this range is on.
-                  "startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
-                  "endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
-                },
-              ],
-              "booleanRule": { # A rule that may or may not match, depending on the condition. # The formatting is either "on" or "off" according to the rule.
-                "condition": { # A condition that can evaluate to true or false. # The condition of the rule. If the condition evaluates to true,
-                    # the format will be applied.
-                    # BooleanConditions are used by conditional formatting,
-                    # data validation, and the criteria in filters.
-                  "type": "A String", # The type of condition.
-                  "values": [ # The values of the condition. The number of supported values depends
-                      # on the condition type.  Some support zero values,
-                      # others one or two values,
-                      # and ConditionType.ONE_OF_LIST supports an arbitrary number of values.
-                    { # The value of the condition.
-                      "relativeDate": "A String", # A relative date (based on the current date).
-                          # Valid only if the type is
-                          # DATE_BEFORE,
-                          # DATE_AFTER,
-                          # DATE_ON_OR_BEFORE or
-                          # DATE_ON_OR_AFTER.
-                          #
-                          # Relative dates are not supported in data validation.
-                          # They are supported only in conditional formatting and
-                          # conditional filters.
-                      "userEnteredValue": "A String", # A value the condition is based on.
-                          # The value will be parsed as if the user typed into a cell.
-                          # Formulas are supported (and must begin with an `=`).
-                    },
-                  ],
-                },
-                "format": { # The format of a cell. # The format to apply.
-                    # Conditional formatting can only apply a subset of formatting:
-                    # bold, italic,
-                    # strikethrough,
-                    # foreground color &
-                    # background color.
-                  "numberFormat": { # The number format of a cell. # A format describing how number values should be represented to the user.
-                    "pattern": "A String", # Pattern string used for formatting.  If not set, a default pattern based on
-                        # the user's locale will be used if necessary for the given type.
-                        # See the [Date and Number Formats guide](/sheets/guides/formats) for more
-                        # information about the supported patterns.
-                    "type": "A String", # The type of the number format.
-                        # When writing, this field must be set.
-                  },
-                  "textDirection": "A String", # The direction of the text in the cell.
-                  "padding": { # The amount of padding around the cell, in pixels. # The padding of the cell.
-                      # When updating padding, every field must be specified.
-                    "top": 42, # The top padding of the cell.
-                    "right": 42, # The right padding of the cell.
-                    "bottom": 42, # The bottom padding of the cell.
-                    "left": 42, # The left padding of the cell.
-                  },
-                  "horizontalAlignment": "A String", # The horizontal alignment of the value in the cell.
-                  "backgroundColor": { # Represents a color in the RGBA color space. This representation is designed # The background color of the cell.
-                      # for simplicity of conversion to/from color representations in various
-                      # languages over compactness; for example, the fields of this representation
-                      # can be trivially provided to the constructor of "java.awt.Color" in Java; it
-                      # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
-                      # method in iOS; and, with just a little work, it can be easily formatted into
-                      # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
-                      #
-                      # Example (Java):
-                      #
-                      #      import com.google.type.Color;
-                      #
-                      #      // ...
-                      #      public static java.awt.Color fromProto(Color protocolor) {
-                      #        float alpha = protocolor.hasAlpha()
-                      #            ? protocolor.getAlpha().getValue()
-                      #            : 1.0;
-                      #
-                      #        return new java.awt.Color(
-                      #            protocolor.getRed(),
-                      #            protocolor.getGreen(),
-                      #            protocolor.getBlue(),
-                      #            alpha);
-                      #      }
-                      #
-                      #      public static Color toProto(java.awt.Color color) {
-                      #        float red = (float) color.getRed();
-                      #        float green = (float) color.getGreen();
-                      #        float blue = (float) color.getBlue();
-                      #        float denominator = 255.0;
-                      #        Color.Builder resultBuilder =
-                      #            Color
-                      #                .newBuilder()
-                      #                .setRed(red / denominator)
-                      #                .setGreen(green / denominator)
-                      #                .setBlue(blue / denominator);
-                      #        int alpha = color.getAlpha();
-                      #        if (alpha != 255) {
-                      #          result.setAlpha(
-                      #              FloatValue
-                      #                  .newBuilder()
-                      #                  .setValue(((float) alpha) / denominator)
-                      #                  .build());
-                      #        }
-                      #        return resultBuilder.build();
-                      #      }
-                      #      // ...
-                      #
-                      # Example (iOS / Obj-C):
-                      #
-                      #      // ...
-                      #      static UIColor* fromProto(Color* protocolor) {
-                      #         float red = [protocolor red];
-                      #         float green = [protocolor green];
-                      #         float blue = [protocolor blue];
-                      #         FloatValue* alpha_wrapper = [protocolor alpha];
-                      #         float alpha = 1.0;
-                      #         if (alpha_wrapper != nil) {
-                      #           alpha = [alpha_wrapper value];
-                      #         }
-                      #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
-                      #      }
-                      #
-                      #      static Color* toProto(UIColor* color) {
-                      #          CGFloat red, green, blue, alpha;
-                      #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
-                      #            return nil;
-                      #          }
-                      #          Color* result = [Color alloc] init];
-                      #          [result setRed:red];
-                      #          [result setGreen:green];
-                      #          [result setBlue:blue];
-                      #          if (alpha <= 0.9999) {
-                      #            [result setAlpha:floatWrapperWithValue(alpha)];
-                      #          }
-                      #          [result autorelease];
-                      #          return result;
-                      #     }
-                      #     // ...
-                      #
-                      #  Example (JavaScript):
-                      #
-                      #     // ...
-                      #
-                      #     var protoToCssColor = function(rgb_color) {
-                      #        var redFrac = rgb_color.red || 0.0;
-                      #        var greenFrac = rgb_color.green || 0.0;
-                      #        var blueFrac = rgb_color.blue || 0.0;
-                      #        var red = Math.floor(redFrac * 255);
-                      #        var green = Math.floor(greenFrac * 255);
-                      #        var blue = Math.floor(blueFrac * 255);
-                      #
-                      #        if (!('alpha' in rgb_color)) {
-                      #           return rgbToCssColor_(red, green, blue);
-                      #        }
-                      #
-                      #        var alphaFrac = rgb_color.alpha.value || 0.0;
-                      #        var rgbParams = [red, green, blue].join(',');
-                      #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
-                      #     };
-                      #
-                      #     var rgbToCssColor_ = function(red, green, blue) {
-                      #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
-                      #       var hexString = rgbNumber.toString(16);
-                      #       var missingZeros = 6 - hexString.length;
-                      #       var resultBuilder = ['#'];
-                      #       for (var i = 0; i < missingZeros; i++) {
-                      #          resultBuilder.push('0');
-                      #       }
-                      #       resultBuilder.push(hexString);
-                      #       return resultBuilder.join('');
-                      #     };
-                      #
-                      #     // ...
-                    "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
-                    "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
-                        # the final pixel color is defined by the equation:
-                        #
-                        #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
-                        #
-                        # This means that a value of 1.0 corresponds to a solid color, whereas
-                        # a value of 0.0 corresponds to a completely transparent color. This
-                        # uses a wrapper message rather than a simple float scalar so that it is
-                        # possible to distinguish between a default value and the value being unset.
-                        # If omitted, this color object is to be rendered as a solid color
-                        # (as if the alpha value had been explicitly given with a value of 1.0).
-                    "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
-                    "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
-                  },
-                  "verticalAlignment": "A String", # The vertical alignment of the value in the cell.
-                  "textFormat": { # The format of a run of text in a cell. # The format of the text in the cell (unless overridden by a format run).
-                      # Absent values indicate that the field isn't specified.
-                    "foregroundColor": { # Represents a color in the RGBA color space. This representation is designed # The foreground color of the text.
-                        # for simplicity of conversion to/from color representations in various
-                        # languages over compactness; for example, the fields of this representation
-                        # can be trivially provided to the constructor of "java.awt.Color" in Java; it
-                        # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
-                        # method in iOS; and, with just a little work, it can be easily formatted into
-                        # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
-                        #
-                        # Example (Java):
-                        #
-                        #      import com.google.type.Color;
-                        #
-                        #      // ...
-                        #      public static java.awt.Color fromProto(Color protocolor) {
-                        #        float alpha = protocolor.hasAlpha()
-                        #            ? protocolor.getAlpha().getValue()
-                        #            : 1.0;
-                        #
-                        #        return new java.awt.Color(
-                        #            protocolor.getRed(),
-                        #            protocolor.getGreen(),
-                        #            protocolor.getBlue(),
-                        #            alpha);
-                        #      }
-                        #
-                        #      public static Color toProto(java.awt.Color color) {
-                        #        float red = (float) color.getRed();
-                        #        float green = (float) color.getGreen();
-                        #        float blue = (float) color.getBlue();
-                        #        float denominator = 255.0;
-                        #        Color.Builder resultBuilder =
-                        #            Color
-                        #                .newBuilder()
-                        #                .setRed(red / denominator)
-                        #                .setGreen(green / denominator)
-                        #                .setBlue(blue / denominator);
-                        #        int alpha = color.getAlpha();
-                        #        if (alpha != 255) {
-                        #          result.setAlpha(
-                        #              FloatValue
-                        #                  .newBuilder()
-                        #                  .setValue(((float) alpha) / denominator)
-                        #                  .build());
-                        #        }
-                        #        return resultBuilder.build();
-                        #      }
-                        #      // ...
-                        #
-                        # Example (iOS / Obj-C):
-                        #
-                        #      // ...
-                        #      static UIColor* fromProto(Color* protocolor) {
-                        #         float red = [protocolor red];
-                        #         float green = [protocolor green];
-                        #         float blue = [protocolor blue];
-                        #         FloatValue* alpha_wrapper = [protocolor alpha];
-                        #         float alpha = 1.0;
-                        #         if (alpha_wrapper != nil) {
-                        #           alpha = [alpha_wrapper value];
-                        #         }
-                        #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
-                        #      }
-                        #
-                        #      static Color* toProto(UIColor* color) {
-                        #          CGFloat red, green, blue, alpha;
-                        #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
-                        #            return nil;
-                        #          }
-                        #          Color* result = [Color alloc] init];
-                        #          [result setRed:red];
-                        #          [result setGreen:green];
-                        #          [result setBlue:blue];
-                        #          if (alpha <= 0.9999) {
-                        #            [result setAlpha:floatWrapperWithValue(alpha)];
-                        #          }
-                        #          [result autorelease];
-                        #          return result;
-                        #     }
-                        #     // ...
-                        #
-                        #  Example (JavaScript):
-                        #
-                        #     // ...
-                        #
-                        #     var protoToCssColor = function(rgb_color) {
-                        #        var redFrac = rgb_color.red || 0.0;
-                        #        var greenFrac = rgb_color.green || 0.0;
-                        #        var blueFrac = rgb_color.blue || 0.0;
-                        #        var red = Math.floor(redFrac * 255);
-                        #        var green = Math.floor(greenFrac * 255);
-                        #        var blue = Math.floor(blueFrac * 255);
-                        #
-                        #        if (!('alpha' in rgb_color)) {
-                        #           return rgbToCssColor_(red, green, blue);
-                        #        }
-                        #
-                        #        var alphaFrac = rgb_color.alpha.value || 0.0;
-                        #        var rgbParams = [red, green, blue].join(',');
-                        #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
-                        #     };
-                        #
-                        #     var rgbToCssColor_ = function(red, green, blue) {
-                        #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
-                        #       var hexString = rgbNumber.toString(16);
-                        #       var missingZeros = 6 - hexString.length;
-                        #       var resultBuilder = ['#'];
-                        #       for (var i = 0; i < missingZeros; i++) {
-                        #          resultBuilder.push('0');
-                        #       }
-                        #       resultBuilder.push(hexString);
-                        #       return resultBuilder.join('');
-                        #     };
-                        #
-                        #     // ...
-                      "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
-                      "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
-                          # the final pixel color is defined by the equation:
-                          #
-                          #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
-                          #
-                          # This means that a value of 1.0 corresponds to a solid color, whereas
-                          # a value of 0.0 corresponds to a completely transparent color. This
-                          # uses a wrapper message rather than a simple float scalar so that it is
-                          # possible to distinguish between a default value and the value being unset.
-                          # If omitted, this color object is to be rendered as a solid color
-                          # (as if the alpha value had been explicitly given with a value of 1.0).
-                      "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
-                      "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
-                    },
-                    "bold": True or False, # True if the text is bold.
-                    "strikethrough": True or False, # True if the text has a strikethrough.
-                    "fontFamily": "A String", # The font family.
-                    "fontSize": 42, # The size of the font.
-                    "italic": True or False, # True if the text is italicized.
-                    "underline": True or False, # True if the text is underlined.
-                  },
-                  "hyperlinkDisplayType": "A String", # How a hyperlink, if it exists, should be displayed in the cell.
-                  "borders": { # The borders of the cell. # The borders of the cell.
-                    "top": { # A border along a cell. # The top border of the cell.
-                      "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
-                          # for simplicity of conversion to/from color representations in various
-                          # languages over compactness; for example, the fields of this representation
-                          # can be trivially provided to the constructor of "java.awt.Color" in Java; it
-                          # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
-                          # method in iOS; and, with just a little work, it can be easily formatted into
-                          # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
-                          #
-                          # Example (Java):
-                          #
-                          #      import com.google.type.Color;
-                          #
-                          #      // ...
-                          #      public static java.awt.Color fromProto(Color protocolor) {
-                          #        float alpha = protocolor.hasAlpha()
-                          #            ? protocolor.getAlpha().getValue()
-                          #            : 1.0;
-                          #
-                          #        return new java.awt.Color(
-                          #            protocolor.getRed(),
-                          #            protocolor.getGreen(),
-                          #            protocolor.getBlue(),
-                          #            alpha);
-                          #      }
-                          #
-                          #      public static Color toProto(java.awt.Color color) {
-                          #        float red = (float) color.getRed();
-                          #        float green = (float) color.getGreen();
-                          #        float blue = (float) color.getBlue();
-                          #        float denominator = 255.0;
-                          #        Color.Builder resultBuilder =
-                          #            Color
-                          #                .newBuilder()
-                          #                .setRed(red / denominator)
-                          #                .setGreen(green / denominator)
-                          #                .setBlue(blue / denominator);
-                          #        int alpha = color.getAlpha();
-                          #        if (alpha != 255) {
-                          #          result.setAlpha(
-                          #              FloatValue
-                          #                  .newBuilder()
-                          #                  .setValue(((float) alpha) / denominator)
-                          #                  .build());
-                          #        }
-                          #        return resultBuilder.build();
-                          #      }
-                          #      // ...
-                          #
-                          # Example (iOS / Obj-C):
-                          #
-                          #      // ...
-                          #      static UIColor* fromProto(Color* protocolor) {
-                          #         float red = [protocolor red];
-                          #         float green = [protocolor green];
-                          #         float blue = [protocolor blue];
-                          #         FloatValue* alpha_wrapper = [protocolor alpha];
-                          #         float alpha = 1.0;
-                          #         if (alpha_wrapper != nil) {
-                          #           alpha = [alpha_wrapper value];
-                          #         }
-                          #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
-                          #      }
-                          #
-                          #      static Color* toProto(UIColor* color) {
-                          #          CGFloat red, green, blue, alpha;
-                          #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
-                          #            return nil;
-                          #          }
-                          #          Color* result = [Color alloc] init];
-                          #          [result setRed:red];
-                          #          [result setGreen:green];
-                          #          [result setBlue:blue];
-                          #          if (alpha <= 0.9999) {
-                          #            [result setAlpha:floatWrapperWithValue(alpha)];
-                          #          }
-                          #          [result autorelease];
-                          #          return result;
-                          #     }
-                          #     // ...
-                          #
-                          #  Example (JavaScript):
-                          #
-                          #     // ...
-                          #
-                          #     var protoToCssColor = function(rgb_color) {
-                          #        var redFrac = rgb_color.red || 0.0;
-                          #        var greenFrac = rgb_color.green || 0.0;
-                          #        var blueFrac = rgb_color.blue || 0.0;
-                          #        var red = Math.floor(redFrac * 255);
-                          #        var green = Math.floor(greenFrac * 255);
-                          #        var blue = Math.floor(blueFrac * 255);
-                          #
-                          #        if (!('alpha' in rgb_color)) {
-                          #           return rgbToCssColor_(red, green, blue);
-                          #        }
-                          #
-                          #        var alphaFrac = rgb_color.alpha.value || 0.0;
-                          #        var rgbParams = [red, green, blue].join(',');
-                          #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
-                          #     };
-                          #
-                          #     var rgbToCssColor_ = function(red, green, blue) {
-                          #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
-                          #       var hexString = rgbNumber.toString(16);
-                          #       var missingZeros = 6 - hexString.length;
-                          #       var resultBuilder = ['#'];
-                          #       for (var i = 0; i < missingZeros; i++) {
-                          #          resultBuilder.push('0');
-                          #       }
-                          #       resultBuilder.push(hexString);
-                          #       return resultBuilder.join('');
-                          #     };
-                          #
-                          #     // ...
-                        "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
-                        "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
-                            # the final pixel color is defined by the equation:
-                            #
-                            #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
-                            #
-                            # This means that a value of 1.0 corresponds to a solid color, whereas
-                            # a value of 0.0 corresponds to a completely transparent color. This
-                            # uses a wrapper message rather than a simple float scalar so that it is
-                            # possible to distinguish between a default value and the value being unset.
-                            # If omitted, this color object is to be rendered as a solid color
-                            # (as if the alpha value had been explicitly given with a value of 1.0).
-                        "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
-                        "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
-                      },
-                      "width": 42, # The width of the border, in pixels.
-                          # Deprecated; the width is determined by the "style" field.
-                      "style": "A String", # The style of the border.
-                    },
-                    "right": { # A border along a cell. # The right border of the cell.
-                      "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
-                          # for simplicity of conversion to/from color representations in various
-                          # languages over compactness; for example, the fields of this representation
-                          # can be trivially provided to the constructor of "java.awt.Color" in Java; it
-                          # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
-                          # method in iOS; and, with just a little work, it can be easily formatted into
-                          # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
-                          #
-                          # Example (Java):
-                          #
-                          #      import com.google.type.Color;
-                          #
-                          #      // ...
-                          #      public static java.awt.Color fromProto(Color protocolor) {
-                          #        float alpha = protocolor.hasAlpha()
-                          #            ? protocolor.getAlpha().getValue()
-                          #            : 1.0;
-                          #
-                          #        return new java.awt.Color(
-                          #            protocolor.getRed(),
-                          #            protocolor.getGreen(),
-                          #            protocolor.getBlue(),
-                          #            alpha);
-                          #      }
-                          #
-                          #      public static Color toProto(java.awt.Color color) {
-                          #        float red = (float) color.getRed();
-                          #        float green = (float) color.getGreen();
-                          #        float blue = (float) color.getBlue();
-                          #        float denominator = 255.0;
-                          #        Color.Builder resultBuilder =
-                          #            Color
-                          #                .newBuilder()
-                          #                .setRed(red / denominator)
-                          #                .setGreen(green / denominator)
-                          #                .setBlue(blue / denominator);
-                          #        int alpha = color.getAlpha();
-                          #        if (alpha != 255) {
-                          #          result.setAlpha(
-                          #              FloatValue
-                          #                  .newBuilder()
-                          #                  .setValue(((float) alpha) / denominator)
-                          #                  .build());
-                          #        }
-                          #        return resultBuilder.build();
-                          #      }
-                          #      // ...
-                          #
-                          # Example (iOS / Obj-C):
-                          #
-                          #      // ...
-                          #      static UIColor* fromProto(Color* protocolor) {
-                          #         float red = [protocolor red];
-                          #         float green = [protocolor green];
-                          #         float blue = [protocolor blue];
-                          #         FloatValue* alpha_wrapper = [protocolor alpha];
-                          #         float alpha = 1.0;
-                          #         if (alpha_wrapper != nil) {
-                          #           alpha = [alpha_wrapper value];
-                          #         }
-                          #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
-                          #      }
-                          #
-                          #      static Color* toProto(UIColor* color) {
-                          #          CGFloat red, green, blue, alpha;
-                          #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
-                          #            return nil;
-                          #          }
-                          #          Color* result = [Color alloc] init];
-                          #          [result setRed:red];
-                          #          [result setGreen:green];
-                          #          [result setBlue:blue];
-                          #          if (alpha <= 0.9999) {
-                          #            [result setAlpha:floatWrapperWithValue(alpha)];
-                          #          }
-                          #          [result autorelease];
-                          #          return result;
-                          #     }
-                          #     // ...
-                          #
-                          #  Example (JavaScript):
-                          #
-                          #     // ...
-                          #
-                          #     var protoToCssColor = function(rgb_color) {
-                          #        var redFrac = rgb_color.red || 0.0;
-                          #        var greenFrac = rgb_color.green || 0.0;
-                          #        var blueFrac = rgb_color.blue || 0.0;
-                          #        var red = Math.floor(redFrac * 255);
-                          #        var green = Math.floor(greenFrac * 255);
-                          #        var blue = Math.floor(blueFrac * 255);
-                          #
-                          #        if (!('alpha' in rgb_color)) {
-                          #           return rgbToCssColor_(red, green, blue);
-                          #        }
-                          #
-                          #        var alphaFrac = rgb_color.alpha.value || 0.0;
-                          #        var rgbParams = [red, green, blue].join(',');
-                          #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
-                          #     };
-                          #
-                          #     var rgbToCssColor_ = function(red, green, blue) {
-                          #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
-                          #       var hexString = rgbNumber.toString(16);
-                          #       var missingZeros = 6 - hexString.length;
-                          #       var resultBuilder = ['#'];
-                          #       for (var i = 0; i < missingZeros; i++) {
-                          #          resultBuilder.push('0');
-                          #       }
-                          #       resultBuilder.push(hexString);
-                          #       return resultBuilder.join('');
-                          #     };
-                          #
-                          #     // ...
-                        "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
-                        "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
-                            # the final pixel color is defined by the equation:
-                            #
-                            #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
-                            #
-                            # This means that a value of 1.0 corresponds to a solid color, whereas
-                            # a value of 0.0 corresponds to a completely transparent color. This
-                            # uses a wrapper message rather than a simple float scalar so that it is
-                            # possible to distinguish between a default value and the value being unset.
-                            # If omitted, this color object is to be rendered as a solid color
-                            # (as if the alpha value had been explicitly given with a value of 1.0).
-                        "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
-                        "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
-                      },
-                      "width": 42, # The width of the border, in pixels.
-                          # Deprecated; the width is determined by the "style" field.
-                      "style": "A String", # The style of the border.
-                    },
-                    "bottom": { # A border along a cell. # The bottom border of the cell.
-                      "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
-                          # for simplicity of conversion to/from color representations in various
-                          # languages over compactness; for example, the fields of this representation
-                          # can be trivially provided to the constructor of "java.awt.Color" in Java; it
-                          # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
-                          # method in iOS; and, with just a little work, it can be easily formatted into
-                          # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
-                          #
-                          # Example (Java):
-                          #
-                          #      import com.google.type.Color;
-                          #
-                          #      // ...
-                          #      public static java.awt.Color fromProto(Color protocolor) {
-                          #        float alpha = protocolor.hasAlpha()
-                          #            ? protocolor.getAlpha().getValue()
-                          #            : 1.0;
-                          #
-                          #        return new java.awt.Color(
-                          #            protocolor.getRed(),
-                          #            protocolor.getGreen(),
-                          #            protocolor.getBlue(),
-                          #            alpha);
-                          #      }
-                          #
-                          #      public static Color toProto(java.awt.Color color) {
-                          #        float red = (float) color.getRed();
-                          #        float green = (float) color.getGreen();
-                          #        float blue = (float) color.getBlue();
-                          #        float denominator = 255.0;
-                          #        Color.Builder resultBuilder =
-                          #            Color
-                          #                .newBuilder()
-                          #                .setRed(red / denominator)
-                          #                .setGreen(green / denominator)
-                          #                .setBlue(blue / denominator);
-                          #        int alpha = color.getAlpha();
-                          #        if (alpha != 255) {
-                          #          result.setAlpha(
-                          #              FloatValue
-                          #                  .newBuilder()
-                          #                  .setValue(((float) alpha) / denominator)
-                          #                  .build());
-                          #        }
-                          #        return resultBuilder.build();
-                          #      }
-                          #      // ...
-                          #
-                          # Example (iOS / Obj-C):
-                          #
-                          #      // ...
-                          #      static UIColor* fromProto(Color* protocolor) {
-                          #         float red = [protocolor red];
-                          #         float green = [protocolor green];
-                          #         float blue = [protocolor blue];
-                          #         FloatValue* alpha_wrapper = [protocolor alpha];
-                          #         float alpha = 1.0;
-                          #         if (alpha_wrapper != nil) {
-                          #           alpha = [alpha_wrapper value];
-                          #         }
-                          #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
-                          #      }
-                          #
-                          #      static Color* toProto(UIColor* color) {
-                          #          CGFloat red, green, blue, alpha;
-                          #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
-                          #            return nil;
-                          #          }
-                          #          Color* result = [Color alloc] init];
-                          #          [result setRed:red];
-                          #          [result setGreen:green];
-                          #          [result setBlue:blue];
-                          #          if (alpha <= 0.9999) {
-                          #            [result setAlpha:floatWrapperWithValue(alpha)];
-                          #          }
-                          #          [result autorelease];
-                          #          return result;
-                          #     }
-                          #     // ...
-                          #
-                          #  Example (JavaScript):
-                          #
-                          #     // ...
-                          #
-                          #     var protoToCssColor = function(rgb_color) {
-                          #        var redFrac = rgb_color.red || 0.0;
-                          #        var greenFrac = rgb_color.green || 0.0;
-                          #        var blueFrac = rgb_color.blue || 0.0;
-                          #        var red = Math.floor(redFrac * 255);
-                          #        var green = Math.floor(greenFrac * 255);
-                          #        var blue = Math.floor(blueFrac * 255);
-                          #
-                          #        if (!('alpha' in rgb_color)) {
-                          #           return rgbToCssColor_(red, green, blue);
-                          #        }
-                          #
-                          #        var alphaFrac = rgb_color.alpha.value || 0.0;
-                          #        var rgbParams = [red, green, blue].join(',');
-                          #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
-                          #     };
-                          #
-                          #     var rgbToCssColor_ = function(red, green, blue) {
-                          #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
-                          #       var hexString = rgbNumber.toString(16);
-                          #       var missingZeros = 6 - hexString.length;
-                          #       var resultBuilder = ['#'];
-                          #       for (var i = 0; i < missingZeros; i++) {
-                          #          resultBuilder.push('0');
-                          #       }
-                          #       resultBuilder.push(hexString);
-                          #       return resultBuilder.join('');
-                          #     };
-                          #
-                          #     // ...
-                        "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
-                        "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
-                            # the final pixel color is defined by the equation:
-                            #
-                            #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
-                            #
-                            # This means that a value of 1.0 corresponds to a solid color, whereas
-                            # a value of 0.0 corresponds to a completely transparent color. This
-                            # uses a wrapper message rather than a simple float scalar so that it is
-                            # possible to distinguish between a default value and the value being unset.
-                            # If omitted, this color object is to be rendered as a solid color
-                            # (as if the alpha value had been explicitly given with a value of 1.0).
-                        "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
-                        "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
-                      },
-                      "width": 42, # The width of the border, in pixels.
-                          # Deprecated; the width is determined by the "style" field.
-                      "style": "A String", # The style of the border.
-                    },
-                    "left": { # A border along a cell. # The left border of the cell.
-                      "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
-                          # for simplicity of conversion to/from color representations in various
-                          # languages over compactness; for example, the fields of this representation
-                          # can be trivially provided to the constructor of "java.awt.Color" in Java; it
-                          # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
-                          # method in iOS; and, with just a little work, it can be easily formatted into
-                          # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
-                          #
-                          # Example (Java):
-                          #
-                          #      import com.google.type.Color;
-                          #
-                          #      // ...
-                          #      public static java.awt.Color fromProto(Color protocolor) {
-                          #        float alpha = protocolor.hasAlpha()
-                          #            ? protocolor.getAlpha().getValue()
-                          #            : 1.0;
-                          #
-                          #        return new java.awt.Color(
-                          #            protocolor.getRed(),
-                          #            protocolor.getGreen(),
-                          #            protocolor.getBlue(),
-                          #            alpha);
-                          #      }
-                          #
-                          #      public static Color toProto(java.awt.Color color) {
-                          #        float red = (float) color.getRed();
-                          #        float green = (float) color.getGreen();
-                          #        float blue = (float) color.getBlue();
-                          #        float denominator = 255.0;
-                          #        Color.Builder resultBuilder =
-                          #            Color
-                          #                .newBuilder()
-                          #                .setRed(red / denominator)
-                          #                .setGreen(green / denominator)
-                          #                .setBlue(blue / denominator);
-                          #        int alpha = color.getAlpha();
-                          #        if (alpha != 255) {
-                          #          result.setAlpha(
-                          #              FloatValue
-                          #                  .newBuilder()
-                          #                  .setValue(((float) alpha) / denominator)
-                          #                  .build());
-                          #        }
-                          #        return resultBuilder.build();
-                          #      }
-                          #      // ...
-                          #
-                          # Example (iOS / Obj-C):
-                          #
-                          #      // ...
-                          #      static UIColor* fromProto(Color* protocolor) {
-                          #         float red = [protocolor red];
-                          #         float green = [protocolor green];
-                          #         float blue = [protocolor blue];
-                          #         FloatValue* alpha_wrapper = [protocolor alpha];
-                          #         float alpha = 1.0;
-                          #         if (alpha_wrapper != nil) {
-                          #           alpha = [alpha_wrapper value];
-                          #         }
-                          #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
-                          #      }
-                          #
-                          #      static Color* toProto(UIColor* color) {
-                          #          CGFloat red, green, blue, alpha;
-                          #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
-                          #            return nil;
-                          #          }
-                          #          Color* result = [Color alloc] init];
-                          #          [result setRed:red];
-                          #          [result setGreen:green];
-                          #          [result setBlue:blue];
-                          #          if (alpha <= 0.9999) {
-                          #            [result setAlpha:floatWrapperWithValue(alpha)];
-                          #          }
-                          #          [result autorelease];
-                          #          return result;
-                          #     }
-                          #     // ...
-                          #
-                          #  Example (JavaScript):
-                          #
-                          #     // ...
-                          #
-                          #     var protoToCssColor = function(rgb_color) {
-                          #        var redFrac = rgb_color.red || 0.0;
-                          #        var greenFrac = rgb_color.green || 0.0;
-                          #        var blueFrac = rgb_color.blue || 0.0;
-                          #        var red = Math.floor(redFrac * 255);
-                          #        var green = Math.floor(greenFrac * 255);
-                          #        var blue = Math.floor(blueFrac * 255);
-                          #
-                          #        if (!('alpha' in rgb_color)) {
-                          #           return rgbToCssColor_(red, green, blue);
-                          #        }
-                          #
-                          #        var alphaFrac = rgb_color.alpha.value || 0.0;
-                          #        var rgbParams = [red, green, blue].join(',');
-                          #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
-                          #     };
-                          #
-                          #     var rgbToCssColor_ = function(red, green, blue) {
-                          #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
-                          #       var hexString = rgbNumber.toString(16);
-                          #       var missingZeros = 6 - hexString.length;
-                          #       var resultBuilder = ['#'];
-                          #       for (var i = 0; i < missingZeros; i++) {
-                          #          resultBuilder.push('0');
-                          #       }
-                          #       resultBuilder.push(hexString);
-                          #       return resultBuilder.join('');
-                          #     };
-                          #
-                          #     // ...
-                        "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
-                        "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
-                            # the final pixel color is defined by the equation:
-                            #
-                            #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
-                            #
-                            # This means that a value of 1.0 corresponds to a solid color, whereas
-                            # a value of 0.0 corresponds to a completely transparent color. This
-                            # uses a wrapper message rather than a simple float scalar so that it is
-                            # possible to distinguish between a default value and the value being unset.
-                            # If omitted, this color object is to be rendered as a solid color
-                            # (as if the alpha value had been explicitly given with a value of 1.0).
-                        "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
-                        "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
-                      },
-                      "width": 42, # The width of the border, in pixels.
-                          # Deprecated; the width is determined by the "style" field.
-                      "style": "A String", # The style of the border.
-                    },
-                  },
-                  "wrapStrategy": "A String", # The wrap strategy for the value in the cell.
-                },
-              },
-              "gradientRule": { # A rule that applies a gradient color scale format, based on # The formatting will vary based on the gradients in the rule.
-                  # the interpolation points listed. The format of a cell will vary
-                  # based on its contents as compared to the values of the interpolation
-                  # points.
-                "maxpoint": { # A single interpolation point on a gradient conditional format. # The final interpolation point.
-                    # These pin the gradient color scale according to the color,
-                    # type and value chosen.
-                  "color": { # Represents a color in the RGBA color space. This representation is designed # The color this interpolation point should use.
-                      # for simplicity of conversion to/from color representations in various
-                      # languages over compactness; for example, the fields of this representation
-                      # can be trivially provided to the constructor of "java.awt.Color" in Java; it
-                      # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
-                      # method in iOS; and, with just a little work, it can be easily formatted into
-                      # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
-                      #
-                      # Example (Java):
-                      #
-                      #      import com.google.type.Color;
-                      #
-                      #      // ...
-                      #      public static java.awt.Color fromProto(Color protocolor) {
-                      #        float alpha = protocolor.hasAlpha()
-                      #            ? protocolor.getAlpha().getValue()
-                      #            : 1.0;
-                      #
-                      #        return new java.awt.Color(
-                      #            protocolor.getRed(),
-                      #            protocolor.getGreen(),
-                      #            protocolor.getBlue(),
-                      #            alpha);
-                      #      }
-                      #
-                      #      public static Color toProto(java.awt.Color color) {
-                      #        float red = (float) color.getRed();
-                      #        float green = (float) color.getGreen();
-                      #        float blue = (float) color.getBlue();
-                      #        float denominator = 255.0;
-                      #        Color.Builder resultBuilder =
-                      #            Color
-                      #                .newBuilder()
-                      #                .setRed(red / denominator)
-                      #                .setGreen(green / denominator)
-                      #                .setBlue(blue / denominator);
-                      #        int alpha = color.getAlpha();
-                      #        if (alpha != 255) {
-                      #          result.setAlpha(
-                      #              FloatValue
-                      #                  .newBuilder()
-                      #                  .setValue(((float) alpha) / denominator)
-                      #                  .build());
-                      #        }
-                      #        return resultBuilder.build();
-                      #      }
-                      #      // ...
-                      #
-                      # Example (iOS / Obj-C):
-                      #
-                      #      // ...
-                      #      static UIColor* fromProto(Color* protocolor) {
-                      #         float red = [protocolor red];
-                      #         float green = [protocolor green];
-                      #         float blue = [protocolor blue];
-                      #         FloatValue* alpha_wrapper = [protocolor alpha];
-                      #         float alpha = 1.0;
-                      #         if (alpha_wrapper != nil) {
-                      #           alpha = [alpha_wrapper value];
-                      #         }
-                      #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
-                      #      }
-                      #
-                      #      static Color* toProto(UIColor* color) {
-                      #          CGFloat red, green, blue, alpha;
-                      #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
-                      #            return nil;
-                      #          }
-                      #          Color* result = [Color alloc] init];
-                      #          [result setRed:red];
-                      #          [result setGreen:green];
-                      #          [result setBlue:blue];
-                      #          if (alpha <= 0.9999) {
-                      #            [result setAlpha:floatWrapperWithValue(alpha)];
-                      #          }
-                      #          [result autorelease];
-                      #          return result;
-                      #     }
-                      #     // ...
-                      #
-                      #  Example (JavaScript):
-                      #
-                      #     // ...
-                      #
-                      #     var protoToCssColor = function(rgb_color) {
-                      #        var redFrac = rgb_color.red || 0.0;
-                      #        var greenFrac = rgb_color.green || 0.0;
-                      #        var blueFrac = rgb_color.blue || 0.0;
-                      #        var red = Math.floor(redFrac * 255);
-                      #        var green = Math.floor(greenFrac * 255);
-                      #        var blue = Math.floor(blueFrac * 255);
-                      #
-                      #        if (!('alpha' in rgb_color)) {
-                      #           return rgbToCssColor_(red, green, blue);
-                      #        }
-                      #
-                      #        var alphaFrac = rgb_color.alpha.value || 0.0;
-                      #        var rgbParams = [red, green, blue].join(',');
-                      #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
-                      #     };
-                      #
-                      #     var rgbToCssColor_ = function(red, green, blue) {
-                      #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
-                      #       var hexString = rgbNumber.toString(16);
-                      #       var missingZeros = 6 - hexString.length;
-                      #       var resultBuilder = ['#'];
-                      #       for (var i = 0; i < missingZeros; i++) {
-                      #          resultBuilder.push('0');
-                      #       }
-                      #       resultBuilder.push(hexString);
-                      #       return resultBuilder.join('');
-                      #     };
-                      #
-                      #     // ...
-                    "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
-                    "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
-                        # the final pixel color is defined by the equation:
-                        #
-                        #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
-                        #
-                        # This means that a value of 1.0 corresponds to a solid color, whereas
-                        # a value of 0.0 corresponds to a completely transparent color. This
-                        # uses a wrapper message rather than a simple float scalar so that it is
-                        # possible to distinguish between a default value and the value being unset.
-                        # If omitted, this color object is to be rendered as a solid color
-                        # (as if the alpha value had been explicitly given with a value of 1.0).
-                    "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
-                    "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
-                  },
-                  "type": "A String", # How the value should be interpreted.
-                  "value": "A String", # The value this interpolation point uses.  May be a formula.
-                      # Unused if type is MIN or
-                      # MAX.
-                },
-                "midpoint": { # A single interpolation point on a gradient conditional format. # An optional midway interpolation point.
-                    # These pin the gradient color scale according to the color,
-                    # type and value chosen.
-                  "color": { # Represents a color in the RGBA color space. This representation is designed # The color this interpolation point should use.
-                      # for simplicity of conversion to/from color representations in various
-                      # languages over compactness; for example, the fields of this representation
-                      # can be trivially provided to the constructor of "java.awt.Color" in Java; it
-                      # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
-                      # method in iOS; and, with just a little work, it can be easily formatted into
-                      # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
-                      #
-                      # Example (Java):
-                      #
-                      #      import com.google.type.Color;
-                      #
-                      #      // ...
-                      #      public static java.awt.Color fromProto(Color protocolor) {
-                      #        float alpha = protocolor.hasAlpha()
-                      #            ? protocolor.getAlpha().getValue()
-                      #            : 1.0;
-                      #
-                      #        return new java.awt.Color(
-                      #            protocolor.getRed(),
-                      #            protocolor.getGreen(),
-                      #            protocolor.getBlue(),
-                      #            alpha);
-                      #      }
-                      #
-                      #      public static Color toProto(java.awt.Color color) {
-                      #        float red = (float) color.getRed();
-                      #        float green = (float) color.getGreen();
-                      #        float blue = (float) color.getBlue();
-                      #        float denominator = 255.0;
-                      #        Color.Builder resultBuilder =
-                      #            Color
-                      #                .newBuilder()
-                      #                .setRed(red / denominator)
-                      #                .setGreen(green / denominator)
-                      #                .setBlue(blue / denominator);
-                      #        int alpha = color.getAlpha();
-                      #        if (alpha != 255) {
-                      #          result.setAlpha(
-                      #              FloatValue
-                      #                  .newBuilder()
-                      #                  .setValue(((float) alpha) / denominator)
-                      #                  .build());
-                      #        }
-                      #        return resultBuilder.build();
-                      #      }
-                      #      // ...
-                      #
-                      # Example (iOS / Obj-C):
-                      #
-                      #      // ...
-                      #      static UIColor* fromProto(Color* protocolor) {
-                      #         float red = [protocolor red];
-                      #         float green = [protocolor green];
-                      #         float blue = [protocolor blue];
-                      #         FloatValue* alpha_wrapper = [protocolor alpha];
-                      #         float alpha = 1.0;
-                      #         if (alpha_wrapper != nil) {
-                      #           alpha = [alpha_wrapper value];
-                      #         }
-                      #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
-                      #      }
-                      #
-                      #      static Color* toProto(UIColor* color) {
-                      #          CGFloat red, green, blue, alpha;
-                      #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
-                      #            return nil;
-                      #          }
-                      #          Color* result = [Color alloc] init];
-                      #          [result setRed:red];
-                      #          [result setGreen:green];
-                      #          [result setBlue:blue];
-                      #          if (alpha <= 0.9999) {
-                      #            [result setAlpha:floatWrapperWithValue(alpha)];
-                      #          }
-                      #          [result autorelease];
-                      #          return result;
-                      #     }
-                      #     // ...
-                      #
-                      #  Example (JavaScript):
-                      #
-                      #     // ...
-                      #
-                      #     var protoToCssColor = function(rgb_color) {
-                      #        var redFrac = rgb_color.red || 0.0;
-                      #        var greenFrac = rgb_color.green || 0.0;
-                      #        var blueFrac = rgb_color.blue || 0.0;
-                      #        var red = Math.floor(redFrac * 255);
-                      #        var green = Math.floor(greenFrac * 255);
-                      #        var blue = Math.floor(blueFrac * 255);
-                      #
-                      #        if (!('alpha' in rgb_color)) {
-                      #           return rgbToCssColor_(red, green, blue);
-                      #        }
-                      #
-                      #        var alphaFrac = rgb_color.alpha.value || 0.0;
-                      #        var rgbParams = [red, green, blue].join(',');
-                      #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
-                      #     };
-                      #
-                      #     var rgbToCssColor_ = function(red, green, blue) {
-                      #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
-                      #       var hexString = rgbNumber.toString(16);
-                      #       var missingZeros = 6 - hexString.length;
-                      #       var resultBuilder = ['#'];
-                      #       for (var i = 0; i < missingZeros; i++) {
-                      #          resultBuilder.push('0');
-                      #       }
-                      #       resultBuilder.push(hexString);
-                      #       return resultBuilder.join('');
-                      #     };
-                      #
-                      #     // ...
-                    "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
-                    "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
-                        # the final pixel color is defined by the equation:
-                        #
-                        #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
-                        #
-                        # This means that a value of 1.0 corresponds to a solid color, whereas
-                        # a value of 0.0 corresponds to a completely transparent color. This
-                        # uses a wrapper message rather than a simple float scalar so that it is
-                        # possible to distinguish between a default value and the value being unset.
-                        # If omitted, this color object is to be rendered as a solid color
-                        # (as if the alpha value had been explicitly given with a value of 1.0).
-                    "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
-                    "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
-                  },
-                  "type": "A String", # How the value should be interpreted.
-                  "value": "A String", # The value this interpolation point uses.  May be a formula.
-                      # Unused if type is MIN or
-                      # MAX.
-                },
-                "minpoint": { # A single interpolation point on a gradient conditional format. # The starting interpolation point.
-                    # These pin the gradient color scale according to the color,
-                    # type and value chosen.
-                  "color": { # Represents a color in the RGBA color space. This representation is designed # The color this interpolation point should use.
-                      # for simplicity of conversion to/from color representations in various
-                      # languages over compactness; for example, the fields of this representation
-                      # can be trivially provided to the constructor of "java.awt.Color" in Java; it
-                      # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
-                      # method in iOS; and, with just a little work, it can be easily formatted into
-                      # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
-                      #
-                      # Example (Java):
-                      #
-                      #      import com.google.type.Color;
-                      #
-                      #      // ...
-                      #      public static java.awt.Color fromProto(Color protocolor) {
-                      #        float alpha = protocolor.hasAlpha()
-                      #            ? protocolor.getAlpha().getValue()
-                      #            : 1.0;
-                      #
-                      #        return new java.awt.Color(
-                      #            protocolor.getRed(),
-                      #            protocolor.getGreen(),
-                      #            protocolor.getBlue(),
-                      #            alpha);
-                      #      }
-                      #
-                      #      public static Color toProto(java.awt.Color color) {
-                      #        float red = (float) color.getRed();
-                      #        float green = (float) color.getGreen();
-                      #        float blue = (float) color.getBlue();
-                      #        float denominator = 255.0;
-                      #        Color.Builder resultBuilder =
-                      #            Color
-                      #                .newBuilder()
-                      #                .setRed(red / denominator)
-                      #                .setGreen(green / denominator)
-                      #                .setBlue(blue / denominator);
-                      #        int alpha = color.getAlpha();
-                      #        if (alpha != 255) {
-                      #          result.setAlpha(
-                      #              FloatValue
-                      #                  .newBuilder()
-                      #                  .setValue(((float) alpha) / denominator)
-                      #                  .build());
-                      #        }
-                      #        return resultBuilder.build();
-                      #      }
-                      #      // ...
-                      #
-                      # Example (iOS / Obj-C):
-                      #
-                      #      // ...
-                      #      static UIColor* fromProto(Color* protocolor) {
-                      #         float red = [protocolor red];
-                      #         float green = [protocolor green];
-                      #         float blue = [protocolor blue];
-                      #         FloatValue* alpha_wrapper = [protocolor alpha];
-                      #         float alpha = 1.0;
-                      #         if (alpha_wrapper != nil) {
-                      #           alpha = [alpha_wrapper value];
-                      #         }
-                      #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
-                      #      }
-                      #
-                      #      static Color* toProto(UIColor* color) {
-                      #          CGFloat red, green, blue, alpha;
-                      #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
-                      #            return nil;
-                      #          }
-                      #          Color* result = [Color alloc] init];
-                      #          [result setRed:red];
-                      #          [result setGreen:green];
-                      #          [result setBlue:blue];
-                      #          if (alpha <= 0.9999) {
-                      #            [result setAlpha:floatWrapperWithValue(alpha)];
-                      #          }
-                      #          [result autorelease];
-                      #          return result;
-                      #     }
-                      #     // ...
-                      #
-                      #  Example (JavaScript):
-                      #
-                      #     // ...
-                      #
-                      #     var protoToCssColor = function(rgb_color) {
-                      #        var redFrac = rgb_color.red || 0.0;
-                      #        var greenFrac = rgb_color.green || 0.0;
-                      #        var blueFrac = rgb_color.blue || 0.0;
-                      #        var red = Math.floor(redFrac * 255);
-                      #        var green = Math.floor(greenFrac * 255);
-                      #        var blue = Math.floor(blueFrac * 255);
-                      #
-                      #        if (!('alpha' in rgb_color)) {
-                      #           return rgbToCssColor_(red, green, blue);
-                      #        }
-                      #
-                      #        var alphaFrac = rgb_color.alpha.value || 0.0;
-                      #        var rgbParams = [red, green, blue].join(',');
-                      #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
-                      #     };
-                      #
-                      #     var rgbToCssColor_ = function(red, green, blue) {
-                      #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
-                      #       var hexString = rgbNumber.toString(16);
-                      #       var missingZeros = 6 - hexString.length;
-                      #       var resultBuilder = ['#'];
-                      #       for (var i = 0; i < missingZeros; i++) {
-                      #          resultBuilder.push('0');
-                      #       }
-                      #       resultBuilder.push(hexString);
-                      #       return resultBuilder.join('');
-                      #     };
-                      #
-                      #     // ...
-                    "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
-                    "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
-                        # the final pixel color is defined by the equation:
-                        #
-                        #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
-                        #
-                        # This means that a value of 1.0 corresponds to a solid color, whereas
-                        # a value of 0.0 corresponds to a completely transparent color. This
-                        # uses a wrapper message rather than a simple float scalar so that it is
-                        # possible to distinguish between a default value and the value being unset.
-                        # If omitted, this color object is to be rendered as a solid color
-                        # (as if the alpha value had been explicitly given with a value of 1.0).
-                    "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
-                    "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
-                  },
-                  "type": "A String", # How the value should be interpreted.
-                  "value": "A String", # The value this interpolation point uses.  May be a formula.
-                      # Unused if type is MIN or
-                      # MAX.
-                },
-              },
-            },
-          ],
-          "merges": [ # The ranges that are merged together.
-            { # A range on a sheet.
-                # All indexes are zero-based.
-                # Indexes are half open, e.g the start index is inclusive
-                # and the end index is exclusive -- [start_index, end_index).
-                # Missing indexes indicate the range is unbounded on that side.
-                #
-                # For example, if `"Sheet1"` is sheet ID 0, then:
-                #
-                #   `Sheet1!A1:A1 == sheet_id: 0,
-                #                   start_row_index: 0, end_row_index: 1,
-                #                   start_column_index: 0, end_column_index: 1`
-                #
-                #   `Sheet1!A3:B4 == sheet_id: 0,
-                #                   start_row_index: 2, end_row_index: 4,
-                #                   start_column_index: 0, end_column_index: 2`
-                #
-                #   `Sheet1!A:B == sheet_id: 0,
-                #                 start_column_index: 0, end_column_index: 2`
-                #
-                #   `Sheet1!A5:B == sheet_id: 0,
-                #                  start_row_index: 4,
-                #                  start_column_index: 0, end_column_index: 2`
-                #
-                #   `Sheet1 == sheet_id:0`
-                #
-                # The start index must always be less than or equal to the end index.
-                # If the start index equals the end index, then the range is empty.
-                # Empty ranges are typically not meaningful and are usually rendered in the
-                # UI as `#REF!`.
-              "endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
-              "startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
-              "sheetId": 42, # The sheet this range is on.
-              "startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
-              "endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
-            },
-          ],
-          "basicFilter": { # The default filter associated with a sheet. # The filter on this sheet, if any.
-            "range": { # A range on a sheet. # The range the filter covers.
-                # All indexes are zero-based.
-                # Indexes are half open, e.g the start index is inclusive
-                # and the end index is exclusive -- [start_index, end_index).
-                # Missing indexes indicate the range is unbounded on that side.
-                #
-                # For example, if `"Sheet1"` is sheet ID 0, then:
-                #
-                #   `Sheet1!A1:A1 == sheet_id: 0,
-                #                   start_row_index: 0, end_row_index: 1,
-                #                   start_column_index: 0, end_column_index: 1`
-                #
-                #   `Sheet1!A3:B4 == sheet_id: 0,
-                #                   start_row_index: 2, end_row_index: 4,
-                #                   start_column_index: 0, end_column_index: 2`
-                #
-                #   `Sheet1!A:B == sheet_id: 0,
-                #                 start_column_index: 0, end_column_index: 2`
-                #
-                #   `Sheet1!A5:B == sheet_id: 0,
-                #                  start_row_index: 4,
-                #                  start_column_index: 0, end_column_index: 2`
-                #
-                #   `Sheet1 == sheet_id:0`
-                #
-                # The start index must always be less than or equal to the end index.
-                # If the start index equals the end index, then the range is empty.
-                # Empty ranges are typically not meaningful and are usually rendered in the
-                # UI as `#REF!`.
-              "endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
-              "startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
-              "sheetId": 42, # The sheet this range is on.
-              "startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
-              "endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
-            },
-            "sortSpecs": [ # The sort order per column. Later specifications are used when values
-                # are equal in the earlier specifications.
-              { # A sort order associated with a specific column or row.
-                "sortOrder": "A String", # The order data should be sorted.
-                "dimensionIndex": 42, # The dimension the sort should be applied to.
-              },
-            ],
-            "criteria": { # The criteria for showing/hiding values per column.
-                # The map's key is the column index, and the value is the criteria for
-                # that column.
-              "a_key": { # Criteria for showing/hiding rows in a filter or filter view.
-                "hiddenValues": [ # Values that should be hidden.
-                  "A String",
-                ],
-                "condition": { # A condition that can evaluate to true or false. # A condition that must be true for values to be shown.
-                    # (This does not override hiddenValues -- if a value is listed there,
-                    #  it will still be hidden.)
-                    # BooleanConditions are used by conditional formatting,
-                    # data validation, and the criteria in filters.
-                  "type": "A String", # The type of condition.
-                  "values": [ # The values of the condition. The number of supported values depends
-                      # on the condition type.  Some support zero values,
-                      # others one or two values,
-                      # and ConditionType.ONE_OF_LIST supports an arbitrary number of values.
-                    { # The value of the condition.
-                      "relativeDate": "A String", # A relative date (based on the current date).
-                          # Valid only if the type is
-                          # DATE_BEFORE,
-                          # DATE_AFTER,
-                          # DATE_ON_OR_BEFORE or
-                          # DATE_ON_OR_AFTER.
-                          #
-                          # Relative dates are not supported in data validation.
-                          # They are supported only in conditional formatting and
-                          # conditional filters.
-                      "userEnteredValue": "A String", # A value the condition is based on.
-                          # The value will be parsed as if the user typed into a cell.
-                          # Formulas are supported (and must begin with an `=`).
-                    },
-                  ],
-                },
-              },
-            },
-          },
-          "charts": [ # The specifications of every chart on this sheet.
-            { # A chart embedded in a sheet.
-              "chartId": 42, # The ID of the chart.
-              "position": { # The position of an embedded object such as a chart. # The position of the chart.
-                "newSheet": True or False, # If true, the embedded object will be put on a new sheet whose ID
-                    # is chosen for you. Used only when writing.
-                "sheetId": 42, # The sheet this is on. Set only if the embedded object
-                    # is on its own sheet. Must be non-negative.
-                "overlayPosition": { # The location an object is overlaid on top of a grid. # The position at which the object is overlaid on top of a grid.
-                  "anchorCell": { # A coordinate in a sheet. # The cell the object is anchored to.
-                      # All indexes are zero-based.
-                    "rowIndex": 42, # The row index of the coordinate.
-                    "columnIndex": 42, # The column index of the coordinate.
-                    "sheetId": 42, # The sheet this coordinate is on.
-                  },
-                  "offsetYPixels": 42, # The vertical offset, in pixels, that the object is offset
-                      # from the anchor cell.
-                  "widthPixels": 42, # The width of the object, in pixels. Defaults to 600.
-                  "offsetXPixels": 42, # The horizontal offset, in pixels, that the object is offset
-                      # from the anchor cell.
-                  "heightPixels": 42, # The height of the object, in pixels. Defaults to 371.
-                },
-              },
-              "spec": { # The specifications of a chart. # The specification of the chart.
-                "hiddenDimensionStrategy": "A String", # Determines how the charts will use hidden rows or columns.
-                "pieChart": { # A <a href="/chart/interactive/docs/gallery/piechart">pie chart</a>. # A pie chart specification.
-                  "series": { # The data included in a domain or series. # The data that covers the one and only series of the pie chart.
-                    "sourceRange": { # Source ranges for a chart. # The source ranges of the data.
-                      "sources": [ # The ranges of data for a series or domain.
-                          # Exactly one dimension must have a length of 1,
-                          # and all sources in the list must have the same dimension
-                          # with length 1.
-                          # The domain (if it exists) & all series must have the same number
-                          # of source ranges. If using more than one source range, then the source
-                          # range at a given offset must be contiguous across the domain and series.
-                          #
-                          # For example, these are valid configurations:
-                          #
-                          #     domain sources: A1:A5
-                          #     series1 sources: B1:B5
-                          #     series2 sources: D6:D10
-                          #
-                          #     domain sources: A1:A5, C10:C12
-                          #     series1 sources: B1:B5, D10:D12
-                          #     series2 sources: C1:C5, E10:E12
-                        { # A range on a sheet.
-                            # All indexes are zero-based.
-                            # Indexes are half open, e.g the start index is inclusive
-                            # and the end index is exclusive -- [start_index, end_index).
-                            # Missing indexes indicate the range is unbounded on that side.
-                            #
-                            # For example, if `"Sheet1"` is sheet ID 0, then:
-                            #
-                            #   `Sheet1!A1:A1 == sheet_id: 0,
-                            #                   start_row_index: 0, end_row_index: 1,
-                            #                   start_column_index: 0, end_column_index: 1`
-                            #
-                            #   `Sheet1!A3:B4 == sheet_id: 0,
-                            #                   start_row_index: 2, end_row_index: 4,
-                            #                   start_column_index: 0, end_column_index: 2`
-                            #
-                            #   `Sheet1!A:B == sheet_id: 0,
-                            #                 start_column_index: 0, end_column_index: 2`
-                            #
-                            #   `Sheet1!A5:B == sheet_id: 0,
-                            #                  start_row_index: 4,
-                            #                  start_column_index: 0, end_column_index: 2`
-                            #
-                            #   `Sheet1 == sheet_id:0`
-                            #
-                            # The start index must always be less than or equal to the end index.
-                            # If the start index equals the end index, then the range is empty.
-                            # Empty ranges are typically not meaningful and are usually rendered in the
-                            # UI as `#REF!`.
-                          "endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
-                          "startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
-                          "sheetId": 42, # The sheet this range is on.
-                          "startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
-                          "endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
-                        },
-                      ],
-                    },
-                  },
-                  "domain": { # The data included in a domain or series. # The data that covers the domain of the pie chart.
-                    "sourceRange": { # Source ranges for a chart. # The source ranges of the data.
-                      "sources": [ # The ranges of data for a series or domain.
-                          # Exactly one dimension must have a length of 1,
-                          # and all sources in the list must have the same dimension
-                          # with length 1.
-                          # The domain (if it exists) & all series must have the same number
-                          # of source ranges. If using more than one source range, then the source
-                          # range at a given offset must be contiguous across the domain and series.
-                          #
-                          # For example, these are valid configurations:
-                          #
-                          #     domain sources: A1:A5
-                          #     series1 sources: B1:B5
-                          #     series2 sources: D6:D10
-                          #
-                          #     domain sources: A1:A5, C10:C12
-                          #     series1 sources: B1:B5, D10:D12
-                          #     series2 sources: C1:C5, E10:E12
-                        { # A range on a sheet.
-                            # All indexes are zero-based.
-                            # Indexes are half open, e.g the start index is inclusive
-                            # and the end index is exclusive -- [start_index, end_index).
-                            # Missing indexes indicate the range is unbounded on that side.
-                            #
-                            # For example, if `"Sheet1"` is sheet ID 0, then:
-                            #
-                            #   `Sheet1!A1:A1 == sheet_id: 0,
-                            #                   start_row_index: 0, end_row_index: 1,
-                            #                   start_column_index: 0, end_column_index: 1`
-                            #
-                            #   `Sheet1!A3:B4 == sheet_id: 0,
-                            #                   start_row_index: 2, end_row_index: 4,
-                            #                   start_column_index: 0, end_column_index: 2`
-                            #
-                            #   `Sheet1!A:B == sheet_id: 0,
-                            #                 start_column_index: 0, end_column_index: 2`
-                            #
-                            #   `Sheet1!A5:B == sheet_id: 0,
-                            #                  start_row_index: 4,
-                            #                  start_column_index: 0, end_column_index: 2`
-                            #
-                            #   `Sheet1 == sheet_id:0`
-                            #
-                            # The start index must always be less than or equal to the end index.
-                            # If the start index equals the end index, then the range is empty.
-                            # Empty ranges are typically not meaningful and are usually rendered in the
-                            # UI as `#REF!`.
-                          "endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
-                          "startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
-                          "sheetId": 42, # The sheet this range is on.
-                          "startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
-                          "endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
-                        },
-                      ],
-                    },
-                  },
-                  "threeDimensional": True or False, # True if the pie is three dimensional.
-                  "legendPosition": "A String", # Where the legend of the pie chart should be drawn.
-                  "pieHole": 3.14, # The size of the hole in the pie chart.
-                },
-                "basicChart": { # The specification for a basic chart.  See BasicChartType for the list # A basic chart specification, can be one of many kinds of charts.
-                    # See BasicChartType for the list of all
-                    # charts this supports.
-                    # of charts this supports.
-                  "headerCount": 42, # The number of rows or columns in the data that are "headers".
-                      # If not set, Google Sheets will guess how many rows are headers based
-                      # on the data.
-                      #
-                      # (Note that BasicChartAxis.title may override the axis title
-                      #  inferred from the header values.)
-                  "series": [ # The data this chart is visualizing.
-                    { # A single series of data in a chart.
-                        # For example, if charting stock prices over time, multiple series may exist,
-                        # one for the "Open Price", "High Price", "Low Price" and "Close Price".
-                      "series": { # The data included in a domain or series. # The data being visualized in this chart series.
-                        "sourceRange": { # Source ranges for a chart. # The source ranges of the data.
-                          "sources": [ # The ranges of data for a series or domain.
-                              # Exactly one dimension must have a length of 1,
-                              # and all sources in the list must have the same dimension
-                              # with length 1.
-                              # The domain (if it exists) & all series must have the same number
-                              # of source ranges. If using more than one source range, then the source
-                              # range at a given offset must be contiguous across the domain and series.
-                              #
-                              # For example, these are valid configurations:
-                              #
-                              #     domain sources: A1:A5
-                              #     series1 sources: B1:B5
-                              #     series2 sources: D6:D10
-                              #
-                              #     domain sources: A1:A5, C10:C12
-                              #     series1 sources: B1:B5, D10:D12
-                              #     series2 sources: C1:C5, E10:E12
-                            { # A range on a sheet.
-                                # All indexes are zero-based.
-                                # Indexes are half open, e.g the start index is inclusive
-                                # and the end index is exclusive -- [start_index, end_index).
-                                # Missing indexes indicate the range is unbounded on that side.
-                                #
-                                # For example, if `"Sheet1"` is sheet ID 0, then:
-                                #
-                                #   `Sheet1!A1:A1 == sheet_id: 0,
-                                #                   start_row_index: 0, end_row_index: 1,
-                                #                   start_column_index: 0, end_column_index: 1`
-                                #
-                                #   `Sheet1!A3:B4 == sheet_id: 0,
-                                #                   start_row_index: 2, end_row_index: 4,
-                                #                   start_column_index: 0, end_column_index: 2`
-                                #
-                                #   `Sheet1!A:B == sheet_id: 0,
-                                #                 start_column_index: 0, end_column_index: 2`
-                                #
-                                #   `Sheet1!A5:B == sheet_id: 0,
-                                #                  start_row_index: 4,
-                                #                  start_column_index: 0, end_column_index: 2`
-                                #
-                                #   `Sheet1 == sheet_id:0`
-                                #
-                                # The start index must always be less than or equal to the end index.
-                                # If the start index equals the end index, then the range is empty.
-                                # Empty ranges are typically not meaningful and are usually rendered in the
-                                # UI as `#REF!`.
-                              "endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
-                              "startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
-                              "sheetId": 42, # The sheet this range is on.
-                              "startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
-                              "endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
-                            },
-                          ],
-                        },
-                      },
-                      "targetAxis": "A String", # The minor axis that will specify the range of values for this series.
-                          # For example, if charting stocks over time, the "Volume" series
-                          # may want to be pinned to the right with the prices pinned to the left,
-                          # because the scale of trading volume is different than the scale of
-                          # prices.
-                          # It is an error to specify an axis that isn't a valid minor axis
-                          # for the chart's type.
-                      "type": "A String", # The type of this series. Valid only if the
-                          # chartType is
-                          # COMBO.
-                          # Different types will change the way the series is visualized.
-                          # Only LINE, AREA,
-                          # and COLUMN are supported.
-                    },
-                  ],
-                  "legendPosition": "A String", # The position of the chart legend.
-                  "domains": [ # The domain of data this is charting.
-                      # Only a single domain is currently supported.
-                    { # The domain of a chart.
-                        # For example, if charting stock prices over time, this would be the date.
-                      "domain": { # The data included in a domain or series. # The data of the domain. For example, if charting stock prices over time,
-                          # this is the data representing the dates.
-                        "sourceRange": { # Source ranges for a chart. # The source ranges of the data.
-                          "sources": [ # The ranges of data for a series or domain.
-                              # Exactly one dimension must have a length of 1,
-                              # and all sources in the list must have the same dimension
-                              # with length 1.
-                              # The domain (if it exists) & all series must have the same number
-                              # of source ranges. If using more than one source range, then the source
-                              # range at a given offset must be contiguous across the domain and series.
-                              #
-                              # For example, these are valid configurations:
-                              #
-                              #     domain sources: A1:A5
-                              #     series1 sources: B1:B5
-                              #     series2 sources: D6:D10
-                              #
-                              #     domain sources: A1:A5, C10:C12
-                              #     series1 sources: B1:B5, D10:D12
-                              #     series2 sources: C1:C5, E10:E12
-                            { # A range on a sheet.
-                                # All indexes are zero-based.
-                                # Indexes are half open, e.g the start index is inclusive
-                                # and the end index is exclusive -- [start_index, end_index).
-                                # Missing indexes indicate the range is unbounded on that side.
-                                #
-                                # For example, if `"Sheet1"` is sheet ID 0, then:
-                                #
-                                #   `Sheet1!A1:A1 == sheet_id: 0,
-                                #                   start_row_index: 0, end_row_index: 1,
-                                #                   start_column_index: 0, end_column_index: 1`
-                                #
-                                #   `Sheet1!A3:B4 == sheet_id: 0,
-                                #                   start_row_index: 2, end_row_index: 4,
-                                #                   start_column_index: 0, end_column_index: 2`
-                                #
-                                #   `Sheet1!A:B == sheet_id: 0,
-                                #                 start_column_index: 0, end_column_index: 2`
-                                #
-                                #   `Sheet1!A5:B == sheet_id: 0,
-                                #                  start_row_index: 4,
-                                #                  start_column_index: 0, end_column_index: 2`
-                                #
-                                #   `Sheet1 == sheet_id:0`
-                                #
-                                # The start index must always be less than or equal to the end index.
-                                # If the start index equals the end index, then the range is empty.
-                                # Empty ranges are typically not meaningful and are usually rendered in the
-                                # UI as `#REF!`.
-                              "endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
-                              "startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
-                              "sheetId": 42, # The sheet this range is on.
-                              "startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
-                              "endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
-                            },
-                          ],
-                        },
-                      },
-                    },
-                  ],
-                  "chartType": "A String", # The type of the chart.
-                  "axis": [ # The axis on the chart.
-                    { # An axis of the chart.
-                        # A chart may not have more than one axis per
-                        # axis position.
-                      "position": "A String", # The position of this axis.
-                      "format": { # The format of a run of text in a cell. # The format of the title.
-                          # Only valid if the axis is not associated with the domain.
-                          # Absent values indicate that the field isn't specified.
-                        "foregroundColor": { # Represents a color in the RGBA color space. This representation is designed # The foreground color of the text.
-                            # for simplicity of conversion to/from color representations in various
-                            # languages over compactness; for example, the fields of this representation
-                            # can be trivially provided to the constructor of "java.awt.Color" in Java; it
-                            # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
-                            # method in iOS; and, with just a little work, it can be easily formatted into
-                            # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
-                            #
-                            # Example (Java):
-                            #
-                            #      import com.google.type.Color;
-                            #
-                            #      // ...
-                            #      public static java.awt.Color fromProto(Color protocolor) {
-                            #        float alpha = protocolor.hasAlpha()
-                            #            ? protocolor.getAlpha().getValue()
-                            #            : 1.0;
-                            #
-                            #        return new java.awt.Color(
-                            #            protocolor.getRed(),
-                            #            protocolor.getGreen(),
-                            #            protocolor.getBlue(),
-                            #            alpha);
-                            #      }
-                            #
-                            #      public static Color toProto(java.awt.Color color) {
-                            #        float red = (float) color.getRed();
-                            #        float green = (float) color.getGreen();
-                            #        float blue = (float) color.getBlue();
-                            #        float denominator = 255.0;
-                            #        Color.Builder resultBuilder =
-                            #            Color
-                            #                .newBuilder()
-                            #                .setRed(red / denominator)
-                            #                .setGreen(green / denominator)
-                            #                .setBlue(blue / denominator);
-                            #        int alpha = color.getAlpha();
-                            #        if (alpha != 255) {
-                            #          result.setAlpha(
-                            #              FloatValue
-                            #                  .newBuilder()
-                            #                  .setValue(((float) alpha) / denominator)
-                            #                  .build());
-                            #        }
-                            #        return resultBuilder.build();
-                            #      }
-                            #      // ...
-                            #
-                            # Example (iOS / Obj-C):
-                            #
-                            #      // ...
-                            #      static UIColor* fromProto(Color* protocolor) {
-                            #         float red = [protocolor red];
-                            #         float green = [protocolor green];
-                            #         float blue = [protocolor blue];
-                            #         FloatValue* alpha_wrapper = [protocolor alpha];
-                            #         float alpha = 1.0;
-                            #         if (alpha_wrapper != nil) {
-                            #           alpha = [alpha_wrapper value];
-                            #         }
-                            #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
-                            #      }
-                            #
-                            #      static Color* toProto(UIColor* color) {
-                            #          CGFloat red, green, blue, alpha;
-                            #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
-                            #            return nil;
-                            #          }
-                            #          Color* result = [Color alloc] init];
-                            #          [result setRed:red];
-                            #          [result setGreen:green];
-                            #          [result setBlue:blue];
-                            #          if (alpha <= 0.9999) {
-                            #            [result setAlpha:floatWrapperWithValue(alpha)];
-                            #          }
-                            #          [result autorelease];
-                            #          return result;
-                            #     }
-                            #     // ...
-                            #
-                            #  Example (JavaScript):
-                            #
-                            #     // ...
-                            #
-                            #     var protoToCssColor = function(rgb_color) {
-                            #        var redFrac = rgb_color.red || 0.0;
-                            #        var greenFrac = rgb_color.green || 0.0;
-                            #        var blueFrac = rgb_color.blue || 0.0;
-                            #        var red = Math.floor(redFrac * 255);
-                            #        var green = Math.floor(greenFrac * 255);
-                            #        var blue = Math.floor(blueFrac * 255);
-                            #
-                            #        if (!('alpha' in rgb_color)) {
-                            #           return rgbToCssColor_(red, green, blue);
-                            #        }
-                            #
-                            #        var alphaFrac = rgb_color.alpha.value || 0.0;
-                            #        var rgbParams = [red, green, blue].join(',');
-                            #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
-                            #     };
-                            #
-                            #     var rgbToCssColor_ = function(red, green, blue) {
-                            #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
-                            #       var hexString = rgbNumber.toString(16);
-                            #       var missingZeros = 6 - hexString.length;
-                            #       var resultBuilder = ['#'];
-                            #       for (var i = 0; i < missingZeros; i++) {
-                            #          resultBuilder.push('0');
-                            #       }
-                            #       resultBuilder.push(hexString);
-                            #       return resultBuilder.join('');
-                            #     };
-                            #
-                            #     // ...
-                          "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
-                          "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
-                              # the final pixel color is defined by the equation:
-                              #
-                              #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
-                              #
-                              # This means that a value of 1.0 corresponds to a solid color, whereas
-                              # a value of 0.0 corresponds to a completely transparent color. This
-                              # uses a wrapper message rather than a simple float scalar so that it is
-                              # possible to distinguish between a default value and the value being unset.
-                              # If omitted, this color object is to be rendered as a solid color
-                              # (as if the alpha value had been explicitly given with a value of 1.0).
-                          "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
-                          "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
-                        },
-                        "bold": True or False, # True if the text is bold.
-                        "strikethrough": True or False, # True if the text has a strikethrough.
-                        "fontFamily": "A String", # The font family.
-                        "fontSize": 42, # The size of the font.
-                        "italic": True or False, # True if the text is italicized.
-                        "underline": True or False, # True if the text is underlined.
-                      },
-                      "title": "A String", # The title of this axis. If set, this overrides any title inferred
-                          # from headers of the data.
-                    },
-                  ],
-                },
-                "title": "A String", # The title of the chart.
-              },
-            },
-          ],
-          "filterViews": [ # The filter views in this sheet.
-            { # A filter view.
-              "title": "A String", # The name of the filter view.
-              "namedRangeId": "A String", # The named range this filter view is backed by, if any.
-                  #
-                  # When writing, only one of range or named_range_id
-                  # may be set.
-              "filterViewId": 42, # The ID of the filter view.
-              "range": { # A range on a sheet. # The range this filter view covers.
-                  #
-                  # When writing, only one of range or named_range_id
-                  # may be set.
-                  # All indexes are zero-based.
-                  # Indexes are half open, e.g the start index is inclusive
-                  # and the end index is exclusive -- [start_index, end_index).
-                  # Missing indexes indicate the range is unbounded on that side.
-                  #
-                  # For example, if `"Sheet1"` is sheet ID 0, then:
-                  #
-                  #   `Sheet1!A1:A1 == sheet_id: 0,
-                  #                   start_row_index: 0, end_row_index: 1,
-                  #                   start_column_index: 0, end_column_index: 1`
-                  #
-                  #   `Sheet1!A3:B4 == sheet_id: 0,
-                  #                   start_row_index: 2, end_row_index: 4,
-                  #                   start_column_index: 0, end_column_index: 2`
-                  #
-                  #   `Sheet1!A:B == sheet_id: 0,
-                  #                 start_column_index: 0, end_column_index: 2`
-                  #
-                  #   `Sheet1!A5:B == sheet_id: 0,
-                  #                  start_row_index: 4,
-                  #                  start_column_index: 0, end_column_index: 2`
-                  #
-                  #   `Sheet1 == sheet_id:0`
-                  #
-                  # The start index must always be less than or equal to the end index.
-                  # If the start index equals the end index, then the range is empty.
-                  # Empty ranges are typically not meaningful and are usually rendered in the
-                  # UI as `#REF!`.
-                "endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
-                "startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
-                "sheetId": 42, # The sheet this range is on.
-                "startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
-                "endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
-              },
-              "sortSpecs": [ # The sort order per column. Later specifications are used when values
-                  # are equal in the earlier specifications.
-                { # A sort order associated with a specific column or row.
-                  "sortOrder": "A String", # The order data should be sorted.
-                  "dimensionIndex": 42, # The dimension the sort should be applied to.
-                },
-              ],
-              "criteria": { # The criteria for showing/hiding values per column.
-                  # The map's key is the column index, and the value is the criteria for
-                  # that column.
-                "a_key": { # Criteria for showing/hiding rows in a filter or filter view.
-                  "hiddenValues": [ # Values that should be hidden.
-                    "A String",
-                  ],
-                  "condition": { # A condition that can evaluate to true or false. # A condition that must be true for values to be shown.
-                      # (This does not override hiddenValues -- if a value is listed there,
-                      #  it will still be hidden.)
-                      # BooleanConditions are used by conditional formatting,
-                      # data validation, and the criteria in filters.
-                    "type": "A String", # The type of condition.
-                    "values": [ # The values of the condition. The number of supported values depends
-                        # on the condition type.  Some support zero values,
-                        # others one or two values,
-                        # and ConditionType.ONE_OF_LIST supports an arbitrary number of values.
-                      { # The value of the condition.
-                        "relativeDate": "A String", # A relative date (based on the current date).
-                            # Valid only if the type is
-                            # DATE_BEFORE,
-                            # DATE_AFTER,
-                            # DATE_ON_OR_BEFORE or
-                            # DATE_ON_OR_AFTER.
-                            #
-                            # Relative dates are not supported in data validation.
-                            # They are supported only in conditional formatting and
-                            # conditional filters.
-                        "userEnteredValue": "A String", # A value the condition is based on.
-                            # The value will be parsed as if the user typed into a cell.
-                            # Formulas are supported (and must begin with an `=`).
-                      },
-                    ],
-                  },
-                },
-              },
-            },
-          ],
-          "protectedRanges": [ # The protected ranges in this sheet.
-            { # A protected range.
-              "unprotectedRanges": [ # The list of unprotected ranges within a protected sheet.
-                  # Unprotected ranges are only supported on protected sheets.
-                { # A range on a sheet.
-                    # All indexes are zero-based.
-                    # Indexes are half open, e.g the start index is inclusive
-                    # and the end index is exclusive -- [start_index, end_index).
-                    # Missing indexes indicate the range is unbounded on that side.
-                    #
-                    # For example, if `"Sheet1"` is sheet ID 0, then:
-                    #
-                    #   `Sheet1!A1:A1 == sheet_id: 0,
-                    #                   start_row_index: 0, end_row_index: 1,
-                    #                   start_column_index: 0, end_column_index: 1`
-                    #
-                    #   `Sheet1!A3:B4 == sheet_id: 0,
-                    #                   start_row_index: 2, end_row_index: 4,
-                    #                   start_column_index: 0, end_column_index: 2`
-                    #
-                    #   `Sheet1!A:B == sheet_id: 0,
-                    #                 start_column_index: 0, end_column_index: 2`
-                    #
-                    #   `Sheet1!A5:B == sheet_id: 0,
-                    #                  start_row_index: 4,
-                    #                  start_column_index: 0, end_column_index: 2`
-                    #
-                    #   `Sheet1 == sheet_id:0`
-                    #
-                    # The start index must always be less than or equal to the end index.
-                    # If the start index equals the end index, then the range is empty.
-                    # Empty ranges are typically not meaningful and are usually rendered in the
-                    # UI as `#REF!`.
-                  "endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
-                  "startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
-                  "sheetId": 42, # The sheet this range is on.
-                  "startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
-                  "endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
-                },
-              ],
-              "requestingUserCanEdit": True or False, # True if the user who requested this protected range can edit the
-                  # protected area.
-                  # This field is read-only.
-              "description": "A String", # The description of this protected range.
-              "namedRangeId": "A String", # The named range this protected range is backed by, if any.
-                  #
-                  # When writing, only one of range or named_range_id
-                  # may be set.
-              "editors": { # The editors of a protected range. # The users and groups with edit access to the protected range.
-                  # This field is only visible to users with edit access to the protected
-                  # range and the document.
-                  # Editors are not supported with warning_only protection.
-                "domainUsersCanEdit": True or False, # True if anyone in the document's domain has edit access to the protected
-                    # range.  Domain protection is only supported on documents within a domain.
-                "users": [ # The email addresses of users with edit access to the protected range.
-                  "A String",
-                ],
-                "groups": [ # The email addresses of groups with edit access to the protected range.
-                  "A String",
-                ],
-              },
-              "protectedRangeId": 42, # The ID of the protected range.
-                  # This field is read-only.
-              "warningOnly": True or False, # True if this protected range will show a warning when editing.
-                  # Warning-based protection means that every user can edit data in the
-                  # protected range, except editing will prompt a warning asking the user
-                  # to confirm the edit.
-                  #
-                  # When writing: if this field is true, then editors is ignored.
-                  # Additionally, if this field is changed from true to false and the
-                  # `editors` field is not set (nor included in the field mask), then
-                  # the editors will be set to all the editors in the document.
-              "range": { # A range on a sheet. # The range that is being protected.
-                  # The range may be fully unbounded, in which case this is considered
-                  # a protected sheet.
-                  #
-                  # When writing, only one of range or named_range_id
-                  # may be set.
-                  # All indexes are zero-based.
-                  # Indexes are half open, e.g the start index is inclusive
-                  # and the end index is exclusive -- [start_index, end_index).
-                  # Missing indexes indicate the range is unbounded on that side.
-                  #
-                  # For example, if `"Sheet1"` is sheet ID 0, then:
-                  #
-                  #   `Sheet1!A1:A1 == sheet_id: 0,
-                  #                   start_row_index: 0, end_row_index: 1,
-                  #                   start_column_index: 0, end_column_index: 1`
-                  #
-                  #   `Sheet1!A3:B4 == sheet_id: 0,
-                  #                   start_row_index: 2, end_row_index: 4,
-                  #                   start_column_index: 0, end_column_index: 2`
-                  #
-                  #   `Sheet1!A:B == sheet_id: 0,
-                  #                 start_column_index: 0, end_column_index: 2`
-                  #
-                  #   `Sheet1!A5:B == sheet_id: 0,
-                  #                  start_row_index: 4,
-                  #                  start_column_index: 0, end_column_index: 2`
-                  #
-                  #   `Sheet1 == sheet_id:0`
-                  #
-                  # The start index must always be less than or equal to the end index.
-                  # If the start index equals the end index, then the range is empty.
-                  # Empty ranges are typically not meaningful and are usually rendered in the
-                  # UI as `#REF!`.
-                "endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
-                "startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
-                "sheetId": 42, # The sheet this range is on.
-                "startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
-                "endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
-              },
-            },
-          ],
-          "data": [ # Data in the grid, if this is a grid sheet.
-              # The number of GridData objects returned is dependent on the number of
-              # ranges requested on this sheet. For example, if this is representing
-              # `Sheet1`, and the spreadsheet was requested with ranges
-              # `Sheet1!A1:C10` and `Sheet1!D15:E20`, then the first GridData will have a
-              # startRow/startColumn of `0`,
-              # while the second one will have `startRow 14` (zero-based row 15),
-              # and `startColumn 3` (zero-based column D).
-            { # Data in the grid, as well as metadata about the dimensions.
-              "startRow": 42, # The first row this GridData refers to, zero-based.
-              "rowMetadata": [ # Metadata about the requested rows in the grid, starting with the row
-                  # in start_row.
-                { # Properties about a dimension.
-                  "pixelSize": 42, # The height (if a row) or width (if a column) of the dimension in pixels.
-                  "hiddenByUser": True or False, # True if this dimension is explicitly hidden.
-                  "hiddenByFilter": True or False, # True if this dimension is being filtered.
-                      # This field is read-only.
-                },
-              ],
-              "startColumn": 42, # The first column this GridData refers to, zero-based.
-              "columnMetadata": [ # Metadata about the requested columns in the grid, starting with the column
-                  # in start_column.
-                { # Properties about a dimension.
-                  "pixelSize": 42, # The height (if a row) or width (if a column) of the dimension in pixels.
-                  "hiddenByUser": True or False, # True if this dimension is explicitly hidden.
-                  "hiddenByFilter": True or False, # True if this dimension is being filtered.
-                      # This field is read-only.
-                },
-              ],
-              "rowData": [ # The data in the grid, one entry per row,
-                  # starting with the row in startRow.
-                  # The values in RowData will correspond to columns starting
-                  # at start_column.
-                { # Data about each cell in a row.
-                  "values": [ # The values in the row, one per column.
-                    { # Data about a specific cell.
-                      "pivotTable": { # A pivot table. # A pivot table anchored at this cell. The size of pivot table itself
-                          # is computed dynamically based on its data, grouping, filters, values,
-                          # etc. Only the top-left cell of the pivot table contains the pivot table
-                          # definition. The other cells will contain the calculated values of the
-                          # results of the pivot in their effective_value fields.
-                        "valueLayout": "A String", # Whether values should be listed horizontally (as columns)
-                            # or vertically (as rows).
-                        "rows": [ # Each row grouping in the pivot table.
-                          { # A single grouping (either row or column) in a pivot table.
-                            "showTotals": True or False, # True if the pivot table should include the totals for this grouping.
-                            "valueMetadata": [ # Metadata about values in the grouping.
-                              { # Metadata about a value in a pivot grouping.
-                                "collapsed": True or False, # True if the data corresponding to the value is collapsed.
-                                "value": { # The kinds of value that a cell in a spreadsheet can have. # The calculated value the metadata corresponds to.
-                                    # (Note that formulaValue is not valid,
-                                    #  because the values will be calculated.)
-                                  "numberValue": 3.14, # Represents a double value.
-                                      # Note: Dates, Times and DateTimes are represented as doubles in
-                                      # "serial number" format.
-                                  "boolValue": True or False, # Represents a boolean value.
-                                  "formulaValue": "A String", # Represents a formula.
-                                  "stringValue": "A String", # Represents a string value.
-                                      # Leading single quotes are not included. For example, if the user typed
-                                      # `'123` into the UI, this would be represented as a `stringValue` of
-                                      # `"123"`.
-                                  "errorValue": { # An error in a cell. # Represents an error.
-                                      # This field is read-only.
-                                    "message": "A String", # A message with more information about the error
-                                        # (in the spreadsheet's locale).
-                                    "type": "A String", # The type of error.
-                                  },
-                                },
-                              },
-                            ],
-                            "valueBucket": { # Information about which values in a pivot group should be used for sorting. # The bucket of the opposite pivot group to sort by.
-                                # If not specified, sorting is alphabetical by this group's values.
-                              "buckets": [ # Determines the bucket from which values are chosen to sort.
-                                  #
-                                  # For example, in a pivot table with one row group & two column groups,
-                                  # the row group can list up to two values. The first value corresponds
-                                  # to a value within the first column group, and the second value
-                                  # corresponds to a value in the second column group.  If no values
-                                  # are listed, this would indicate that the row should be sorted according
-                                  # to the "Grand Total" over the column groups. If a single value is listed,
-                                  # this would correspond to using the "Total" of that bucket.
-                                { # The kinds of value that a cell in a spreadsheet can have.
-                                  "numberValue": 3.14, # Represents a double value.
-                                      # Note: Dates, Times and DateTimes are represented as doubles in
-                                      # "serial number" format.
-                                  "boolValue": True or False, # Represents a boolean value.
-                                  "formulaValue": "A String", # Represents a formula.
-                                  "stringValue": "A String", # Represents a string value.
-                                      # Leading single quotes are not included. For example, if the user typed
-                                      # `'123` into the UI, this would be represented as a `stringValue` of
-                                      # `"123"`.
-                                  "errorValue": { # An error in a cell. # Represents an error.
-                                      # This field is read-only.
-                                    "message": "A String", # A message with more information about the error
-                                        # (in the spreadsheet's locale).
-                                    "type": "A String", # The type of error.
-                                  },
-                                },
-                              ],
-                              "valuesIndex": 42, # The offset in the PivotTable.values list which the values in this
-                                  # grouping should be sorted by.
-                            },
-                            "sortOrder": "A String", # The order the values in this group should be sorted.
-                            "sourceColumnOffset": 42, # The column offset of the source range that this grouping is based on.
-                                #
-                                # For example, if the source was `C10:E15`, a `sourceColumnOffset` of `0`
-                                # means this group refers to column `C`, whereas the offset `1` would refer
-                                # to column `D`.
-                          },
-                        ],
-                        "source": { # A range on a sheet. # The range the pivot table is reading data from.
-                            # All indexes are zero-based.
-                            # Indexes are half open, e.g the start index is inclusive
-                            # and the end index is exclusive -- [start_index, end_index).
-                            # Missing indexes indicate the range is unbounded on that side.
-                            #
-                            # For example, if `"Sheet1"` is sheet ID 0, then:
-                            #
-                            #   `Sheet1!A1:A1 == sheet_id: 0,
-                            #                   start_row_index: 0, end_row_index: 1,
-                            #                   start_column_index: 0, end_column_index: 1`
-                            #
-                            #   `Sheet1!A3:B4 == sheet_id: 0,
-                            #                   start_row_index: 2, end_row_index: 4,
-                            #                   start_column_index: 0, end_column_index: 2`
-                            #
-                            #   `Sheet1!A:B == sheet_id: 0,
-                            #                 start_column_index: 0, end_column_index: 2`
-                            #
-                            #   `Sheet1!A5:B == sheet_id: 0,
-                            #                  start_row_index: 4,
-                            #                  start_column_index: 0, end_column_index: 2`
-                            #
-                            #   `Sheet1 == sheet_id:0`
-                            #
-                            # The start index must always be less than or equal to the end index.
-                            # If the start index equals the end index, then the range is empty.
-                            # Empty ranges are typically not meaningful and are usually rendered in the
-                            # UI as `#REF!`.
-                          "endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
-                          "startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
-                          "sheetId": 42, # The sheet this range is on.
-                          "startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
-                          "endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
-                        },
-                        "values": [ # A list of values to include in the pivot table.
-                          { # The definition of how a value in a pivot table should be calculated.
-                            "formula": "A String", # A custom formula to calculate the value.  The formula must start
-                                # with an `=` character.
-                            "summarizeFunction": "A String", # A function to summarize the value.
-                                # If formula is set, the only supported values are
-                                # SUM and
-                                # CUSTOM.
-                                # If sourceColumnOffset is set, then `CUSTOM`
-                                # is not supported.
-                            "sourceColumnOffset": 42, # The column offset of the source range that this value reads from.
-                                #
-                                # For example, if the source was `C10:E15`, a `sourceColumnOffset` of `0`
-                                # means this value refers to column `C`, whereas the offset `1` would
-                                # refer to column `D`.
-                            "name": "A String", # A name to use for the value. This is only used if formula was set.
-                                # Otherwise, the column name is used.
-                          },
-                        ],
-                        "criteria": { # An optional mapping of filters per source column offset.
-                            #
-                            # The filters will be applied before aggregating data into the pivot table.
-                            # The map's key is the column offset of the source range that you want to
-                            # filter, and the value is the criteria for that column.
-                            #
-                            # For example, if the source was `C10:E15`, a key of `0` will have the filter
-                            # for column `C`, whereas the key `1` is for column `D`.
-                          "a_key": { # Criteria for showing/hiding rows in a pivot table.
-                            "visibleValues": [ # Values that should be included.  Values not listed here are excluded.
-                              "A String",
-                            ],
-                          },
-                        },
-                        "columns": [ # Each column grouping in the pivot table.
-                          { # A single grouping (either row or column) in a pivot table.
-                            "showTotals": True or False, # True if the pivot table should include the totals for this grouping.
-                            "valueMetadata": [ # Metadata about values in the grouping.
-                              { # Metadata about a value in a pivot grouping.
-                                "collapsed": True or False, # True if the data corresponding to the value is collapsed.
-                                "value": { # The kinds of value that a cell in a spreadsheet can have. # The calculated value the metadata corresponds to.
-                                    # (Note that formulaValue is not valid,
-                                    #  because the values will be calculated.)
-                                  "numberValue": 3.14, # Represents a double value.
-                                      # Note: Dates, Times and DateTimes are represented as doubles in
-                                      # "serial number" format.
-                                  "boolValue": True or False, # Represents a boolean value.
-                                  "formulaValue": "A String", # Represents a formula.
-                                  "stringValue": "A String", # Represents a string value.
-                                      # Leading single quotes are not included. For example, if the user typed
-                                      # `'123` into the UI, this would be represented as a `stringValue` of
-                                      # `"123"`.
-                                  "errorValue": { # An error in a cell. # Represents an error.
-                                      # This field is read-only.
-                                    "message": "A String", # A message with more information about the error
-                                        # (in the spreadsheet's locale).
-                                    "type": "A String", # The type of error.
-                                  },
-                                },
-                              },
-                            ],
-                            "valueBucket": { # Information about which values in a pivot group should be used for sorting. # The bucket of the opposite pivot group to sort by.
-                                # If not specified, sorting is alphabetical by this group's values.
-                              "buckets": [ # Determines the bucket from which values are chosen to sort.
-                                  #
-                                  # For example, in a pivot table with one row group & two column groups,
-                                  # the row group can list up to two values. The first value corresponds
-                                  # to a value within the first column group, and the second value
-                                  # corresponds to a value in the second column group.  If no values
-                                  # are listed, this would indicate that the row should be sorted according
-                                  # to the "Grand Total" over the column groups. If a single value is listed,
-                                  # this would correspond to using the "Total" of that bucket.
-                                { # The kinds of value that a cell in a spreadsheet can have.
-                                  "numberValue": 3.14, # Represents a double value.
-                                      # Note: Dates, Times and DateTimes are represented as doubles in
-                                      # "serial number" format.
-                                  "boolValue": True or False, # Represents a boolean value.
-                                  "formulaValue": "A String", # Represents a formula.
-                                  "stringValue": "A String", # Represents a string value.
-                                      # Leading single quotes are not included. For example, if the user typed
-                                      # `'123` into the UI, this would be represented as a `stringValue` of
-                                      # `"123"`.
-                                  "errorValue": { # An error in a cell. # Represents an error.
-                                      # This field is read-only.
-                                    "message": "A String", # A message with more information about the error
-                                        # (in the spreadsheet's locale).
-                                    "type": "A String", # The type of error.
-                                  },
-                                },
-                              ],
-                              "valuesIndex": 42, # The offset in the PivotTable.values list which the values in this
-                                  # grouping should be sorted by.
-                            },
-                            "sortOrder": "A String", # The order the values in this group should be sorted.
-                            "sourceColumnOffset": 42, # The column offset of the source range that this grouping is based on.
-                                #
-                                # For example, if the source was `C10:E15`, a `sourceColumnOffset` of `0`
-                                # means this group refers to column `C`, whereas the offset `1` would refer
-                                # to column `D`.
-                          },
-                        ],
-                      },
-                      "hyperlink": "A String", # A hyperlink this cell points to, if any.
-                          # This field is read-only.  (To set it, use a `=HYPERLINK` formula.)
-                      "effectiveValue": { # The kinds of value that a cell in a spreadsheet can have. # The effective value of the cell. For cells with formulas, this will be
-                          # the calculated value.  For cells with literals, this will be
-                          # the same as the user_entered_value.
-                          # This field is read-only.
-                        "numberValue": 3.14, # Represents a double value.
-                            # Note: Dates, Times and DateTimes are represented as doubles in
-                            # "serial number" format.
-                        "boolValue": True or False, # Represents a boolean value.
-                        "formulaValue": "A String", # Represents a formula.
-                        "stringValue": "A String", # Represents a string value.
-                            # Leading single quotes are not included. For example, if the user typed
-                            # `'123` into the UI, this would be represented as a `stringValue` of
-                            # `"123"`.
-                        "errorValue": { # An error in a cell. # Represents an error.
-                            # This field is read-only.
-                          "message": "A String", # A message with more information about the error
-                              # (in the spreadsheet's locale).
-                          "type": "A String", # The type of error.
-                        },
-                      },
-                      "formattedValue": "A String", # The formatted value of the cell.
-                          # This is the value as it's shown to the user.
-                          # This field is read-only.
-                      "userEnteredValue": { # The kinds of value that a cell in a spreadsheet can have. # The value the user entered in the cell. e.g, `1234`, `'Hello'`, or `=NOW()`
-                          # Note: Dates, Times and DateTimes are represented as doubles in
-                          # serial number format.
-                        "numberValue": 3.14, # Represents a double value.
-                            # Note: Dates, Times and DateTimes are represented as doubles in
-                            # "serial number" format.
-                        "boolValue": True or False, # Represents a boolean value.
-                        "formulaValue": "A String", # Represents a formula.
-                        "stringValue": "A String", # Represents a string value.
-                            # Leading single quotes are not included. For example, if the user typed
-                            # `'123` into the UI, this would be represented as a `stringValue` of
-                            # `"123"`.
-                        "errorValue": { # An error in a cell. # Represents an error.
-                            # This field is read-only.
-                          "message": "A String", # A message with more information about the error
-                              # (in the spreadsheet's locale).
-                          "type": "A String", # The type of error.
-                        },
-                      },
-                      "note": "A String", # Any note on the cell.
-                      "effectiveFormat": { # The format of a cell. # The effective format being used by the cell.
-                          # This includes the results of applying any conditional formatting and,
-                          # if the cell contains a formula, the computed number format.
-                          # If the effective format is the default format, effective format will
-                          # not be written.
-                          # This field is read-only.
-                        "numberFormat": { # The number format of a cell. # A format describing how number values should be represented to the user.
-                          "pattern": "A String", # Pattern string used for formatting.  If not set, a default pattern based on
-                              # the user's locale will be used if necessary for the given type.
-                              # See the [Date and Number Formats guide](/sheets/guides/formats) for more
-                              # information about the supported patterns.
-                          "type": "A String", # The type of the number format.
-                              # When writing, this field must be set.
-                        },
-                        "textDirection": "A String", # The direction of the text in the cell.
-                        "padding": { # The amount of padding around the cell, in pixels. # The padding of the cell.
-                            # When updating padding, every field must be specified.
-                          "top": 42, # The top padding of the cell.
-                          "right": 42, # The right padding of the cell.
-                          "bottom": 42, # The bottom padding of the cell.
-                          "left": 42, # The left padding of the cell.
-                        },
-                        "horizontalAlignment": "A String", # The horizontal alignment of the value in the cell.
-                        "backgroundColor": { # Represents a color in the RGBA color space. This representation is designed # The background color of the cell.
-                            # for simplicity of conversion to/from color representations in various
-                            # languages over compactness; for example, the fields of this representation
-                            # can be trivially provided to the constructor of "java.awt.Color" in Java; it
-                            # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
-                            # method in iOS; and, with just a little work, it can be easily formatted into
-                            # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
-                            #
-                            # Example (Java):
-                            #
-                            #      import com.google.type.Color;
-                            #
-                            #      // ...
-                            #      public static java.awt.Color fromProto(Color protocolor) {
-                            #        float alpha = protocolor.hasAlpha()
-                            #            ? protocolor.getAlpha().getValue()
-                            #            : 1.0;
-                            #
-                            #        return new java.awt.Color(
-                            #            protocolor.getRed(),
-                            #            protocolor.getGreen(),
-                            #            protocolor.getBlue(),
-                            #            alpha);
-                            #      }
-                            #
-                            #      public static Color toProto(java.awt.Color color) {
-                            #        float red = (float) color.getRed();
-                            #        float green = (float) color.getGreen();
-                            #        float blue = (float) color.getBlue();
-                            #        float denominator = 255.0;
-                            #        Color.Builder resultBuilder =
-                            #            Color
-                            #                .newBuilder()
-                            #                .setRed(red / denominator)
-                            #                .setGreen(green / denominator)
-                            #                .setBlue(blue / denominator);
-                            #        int alpha = color.getAlpha();
-                            #        if (alpha != 255) {
-                            #          result.setAlpha(
-                            #              FloatValue
-                            #                  .newBuilder()
-                            #                  .setValue(((float) alpha) / denominator)
-                            #                  .build());
-                            #        }
-                            #        return resultBuilder.build();
-                            #      }
-                            #      // ...
-                            #
-                            # Example (iOS / Obj-C):
-                            #
-                            #      // ...
-                            #      static UIColor* fromProto(Color* protocolor) {
-                            #         float red = [protocolor red];
-                            #         float green = [protocolor green];
-                            #         float blue = [protocolor blue];
-                            #         FloatValue* alpha_wrapper = [protocolor alpha];
-                            #         float alpha = 1.0;
-                            #         if (alpha_wrapper != nil) {
-                            #           alpha = [alpha_wrapper value];
-                            #         }
-                            #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
-                            #      }
-                            #
-                            #      static Color* toProto(UIColor* color) {
-                            #          CGFloat red, green, blue, alpha;
-                            #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
-                            #            return nil;
-                            #          }
-                            #          Color* result = [Color alloc] init];
-                            #          [result setRed:red];
-                            #          [result setGreen:green];
-                            #          [result setBlue:blue];
-                            #          if (alpha <= 0.9999) {
-                            #            [result setAlpha:floatWrapperWithValue(alpha)];
-                            #          }
-                            #          [result autorelease];
-                            #          return result;
-                            #     }
-                            #     // ...
-                            #
-                            #  Example (JavaScript):
-                            #
-                            #     // ...
-                            #
-                            #     var protoToCssColor = function(rgb_color) {
-                            #        var redFrac = rgb_color.red || 0.0;
-                            #        var greenFrac = rgb_color.green || 0.0;
-                            #        var blueFrac = rgb_color.blue || 0.0;
-                            #        var red = Math.floor(redFrac * 255);
-                            #        var green = Math.floor(greenFrac * 255);
-                            #        var blue = Math.floor(blueFrac * 255);
-                            #
-                            #        if (!('alpha' in rgb_color)) {
-                            #           return rgbToCssColor_(red, green, blue);
-                            #        }
-                            #
-                            #        var alphaFrac = rgb_color.alpha.value || 0.0;
-                            #        var rgbParams = [red, green, blue].join(',');
-                            #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
-                            #     };
-                            #
-                            #     var rgbToCssColor_ = function(red, green, blue) {
-                            #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
-                            #       var hexString = rgbNumber.toString(16);
-                            #       var missingZeros = 6 - hexString.length;
-                            #       var resultBuilder = ['#'];
-                            #       for (var i = 0; i < missingZeros; i++) {
-                            #          resultBuilder.push('0');
-                            #       }
-                            #       resultBuilder.push(hexString);
-                            #       return resultBuilder.join('');
-                            #     };
-                            #
-                            #     // ...
-                          "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
-                          "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
-                              # the final pixel color is defined by the equation:
-                              #
-                              #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
-                              #
-                              # This means that a value of 1.0 corresponds to a solid color, whereas
-                              # a value of 0.0 corresponds to a completely transparent color. This
-                              # uses a wrapper message rather than a simple float scalar so that it is
-                              # possible to distinguish between a default value and the value being unset.
-                              # If omitted, this color object is to be rendered as a solid color
-                              # (as if the alpha value had been explicitly given with a value of 1.0).
-                          "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
-                          "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
-                        },
-                        "verticalAlignment": "A String", # The vertical alignment of the value in the cell.
-                        "textFormat": { # The format of a run of text in a cell. # The format of the text in the cell (unless overridden by a format run).
-                            # Absent values indicate that the field isn't specified.
-                          "foregroundColor": { # Represents a color in the RGBA color space. This representation is designed # The foreground color of the text.
-                              # for simplicity of conversion to/from color representations in various
-                              # languages over compactness; for example, the fields of this representation
-                              # can be trivially provided to the constructor of "java.awt.Color" in Java; it
-                              # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
-                              # method in iOS; and, with just a little work, it can be easily formatted into
-                              # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
-                              #
-                              # Example (Java):
-                              #
-                              #      import com.google.type.Color;
-                              #
-                              #      // ...
-                              #      public static java.awt.Color fromProto(Color protocolor) {
-                              #        float alpha = protocolor.hasAlpha()
-                              #            ? protocolor.getAlpha().getValue()
-                              #            : 1.0;
-                              #
-                              #        return new java.awt.Color(
-                              #            protocolor.getRed(),
-                              #            protocolor.getGreen(),
-                              #            protocolor.getBlue(),
-                              #            alpha);
-                              #      }
-                              #
-                              #      public static Color toProto(java.awt.Color color) {
-                              #        float red = (float) color.getRed();
-                              #        float green = (float) color.getGreen();
-                              #        float blue = (float) color.getBlue();
-                              #        float denominator = 255.0;
-                              #        Color.Builder resultBuilder =
-                              #            Color
-                              #                .newBuilder()
-                              #                .setRed(red / denominator)
-                              #                .setGreen(green / denominator)
-                              #                .setBlue(blue / denominator);
-                              #        int alpha = color.getAlpha();
-                              #        if (alpha != 255) {
-                              #          result.setAlpha(
-                              #              FloatValue
-                              #                  .newBuilder()
-                              #                  .setValue(((float) alpha) / denominator)
-                              #                  .build());
-                              #        }
-                              #        return resultBuilder.build();
-                              #      }
-                              #      // ...
-                              #
-                              # Example (iOS / Obj-C):
-                              #
-                              #      // ...
-                              #      static UIColor* fromProto(Color* protocolor) {
-                              #         float red = [protocolor red];
-                              #         float green = [protocolor green];
-                              #         float blue = [protocolor blue];
-                              #         FloatValue* alpha_wrapper = [protocolor alpha];
-                              #         float alpha = 1.0;
-                              #         if (alpha_wrapper != nil) {
-                              #           alpha = [alpha_wrapper value];
-                              #         }
-                              #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
-                              #      }
-                              #
-                              #      static Color* toProto(UIColor* color) {
-                              #          CGFloat red, green, blue, alpha;
-                              #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
-                              #            return nil;
-                              #          }
-                              #          Color* result = [Color alloc] init];
-                              #          [result setRed:red];
-                              #          [result setGreen:green];
-                              #          [result setBlue:blue];
-                              #          if (alpha <= 0.9999) {
-                              #            [result setAlpha:floatWrapperWithValue(alpha)];
-                              #          }
-                              #          [result autorelease];
-                              #          return result;
-                              #     }
-                              #     // ...
-                              #
-                              #  Example (JavaScript):
-                              #
-                              #     // ...
-                              #
-                              #     var protoToCssColor = function(rgb_color) {
-                              #        var redFrac = rgb_color.red || 0.0;
-                              #        var greenFrac = rgb_color.green || 0.0;
-                              #        var blueFrac = rgb_color.blue || 0.0;
-                              #        var red = Math.floor(redFrac * 255);
-                              #        var green = Math.floor(greenFrac * 255);
-                              #        var blue = Math.floor(blueFrac * 255);
-                              #
-                              #        if (!('alpha' in rgb_color)) {
-                              #           return rgbToCssColor_(red, green, blue);
-                              #        }
-                              #
-                              #        var alphaFrac = rgb_color.alpha.value || 0.0;
-                              #        var rgbParams = [red, green, blue].join(',');
-                              #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
-                              #     };
-                              #
-                              #     var rgbToCssColor_ = function(red, green, blue) {
-                              #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
-                              #       var hexString = rgbNumber.toString(16);
-                              #       var missingZeros = 6 - hexString.length;
-                              #       var resultBuilder = ['#'];
-                              #       for (var i = 0; i < missingZeros; i++) {
-                              #          resultBuilder.push('0');
-                              #       }
-                              #       resultBuilder.push(hexString);
-                              #       return resultBuilder.join('');
-                              #     };
-                              #
-                              #     // ...
-                            "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
-                            "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
-                                # the final pixel color is defined by the equation:
-                                #
-                                #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
-                                #
-                                # This means that a value of 1.0 corresponds to a solid color, whereas
-                                # a value of 0.0 corresponds to a completely transparent color. This
-                                # uses a wrapper message rather than a simple float scalar so that it is
-                                # possible to distinguish between a default value and the value being unset.
-                                # If omitted, this color object is to be rendered as a solid color
-                                # (as if the alpha value had been explicitly given with a value of 1.0).
-                            "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
-                            "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
-                          },
-                          "bold": True or False, # True if the text is bold.
-                          "strikethrough": True or False, # True if the text has a strikethrough.
-                          "fontFamily": "A String", # The font family.
-                          "fontSize": 42, # The size of the font.
-                          "italic": True or False, # True if the text is italicized.
-                          "underline": True or False, # True if the text is underlined.
-                        },
-                        "hyperlinkDisplayType": "A String", # How a hyperlink, if it exists, should be displayed in the cell.
-                        "borders": { # The borders of the cell. # The borders of the cell.
-                          "top": { # A border along a cell. # The top border of the cell.
-                            "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
-                                # for simplicity of conversion to/from color representations in various
-                                # languages over compactness; for example, the fields of this representation
-                                # can be trivially provided to the constructor of "java.awt.Color" in Java; it
-                                # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
-                                # method in iOS; and, with just a little work, it can be easily formatted into
-                                # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
-                                #
-                                # Example (Java):
-                                #
-                                #      import com.google.type.Color;
-                                #
-                                #      // ...
-                                #      public static java.awt.Color fromProto(Color protocolor) {
-                                #        float alpha = protocolor.hasAlpha()
-                                #            ? protocolor.getAlpha().getValue()
-                                #            : 1.0;
-                                #
-                                #        return new java.awt.Color(
-                                #            protocolor.getRed(),
-                                #            protocolor.getGreen(),
-                                #            protocolor.getBlue(),
-                                #            alpha);
-                                #      }
-                                #
-                                #      public static Color toProto(java.awt.Color color) {
-                                #        float red = (float) color.getRed();
-                                #        float green = (float) color.getGreen();
-                                #        float blue = (float) color.getBlue();
-                                #        float denominator = 255.0;
-                                #        Color.Builder resultBuilder =
-                                #            Color
-                                #                .newBuilder()
-                                #                .setRed(red / denominator)
-                                #                .setGreen(green / denominator)
-                                #                .setBlue(blue / denominator);
-                                #        int alpha = color.getAlpha();
-                                #        if (alpha != 255) {
-                                #          result.setAlpha(
-                                #              FloatValue
-                                #                  .newBuilder()
-                                #                  .setValue(((float) alpha) / denominator)
-                                #                  .build());
-                                #        }
-                                #        return resultBuilder.build();
-                                #      }
-                                #      // ...
-                                #
-                                # Example (iOS / Obj-C):
-                                #
-                                #      // ...
-                                #      static UIColor* fromProto(Color* protocolor) {
-                                #         float red = [protocolor red];
-                                #         float green = [protocolor green];
-                                #         float blue = [protocolor blue];
-                                #         FloatValue* alpha_wrapper = [protocolor alpha];
-                                #         float alpha = 1.0;
-                                #         if (alpha_wrapper != nil) {
-                                #           alpha = [alpha_wrapper value];
-                                #         }
-                                #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
-                                #      }
-                                #
-                                #      static Color* toProto(UIColor* color) {
-                                #          CGFloat red, green, blue, alpha;
-                                #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
-                                #            return nil;
-                                #          }
-                                #          Color* result = [Color alloc] init];
-                                #          [result setRed:red];
-                                #          [result setGreen:green];
-                                #          [result setBlue:blue];
-                                #          if (alpha <= 0.9999) {
-                                #            [result setAlpha:floatWrapperWithValue(alpha)];
-                                #          }
-                                #          [result autorelease];
-                                #          return result;
-                                #     }
-                                #     // ...
-                                #
-                                #  Example (JavaScript):
-                                #
-                                #     // ...
-                                #
-                                #     var protoToCssColor = function(rgb_color) {
-                                #        var redFrac = rgb_color.red || 0.0;
-                                #        var greenFrac = rgb_color.green || 0.0;
-                                #        var blueFrac = rgb_color.blue || 0.0;
-                                #        var red = Math.floor(redFrac * 255);
-                                #        var green = Math.floor(greenFrac * 255);
-                                #        var blue = Math.floor(blueFrac * 255);
-                                #
-                                #        if (!('alpha' in rgb_color)) {
-                                #           return rgbToCssColor_(red, green, blue);
-                                #        }
-                                #
-                                #        var alphaFrac = rgb_color.alpha.value || 0.0;
-                                #        var rgbParams = [red, green, blue].join(',');
-                                #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
-                                #     };
-                                #
-                                #     var rgbToCssColor_ = function(red, green, blue) {
-                                #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
-                                #       var hexString = rgbNumber.toString(16);
-                                #       var missingZeros = 6 - hexString.length;
-                                #       var resultBuilder = ['#'];
-                                #       for (var i = 0; i < missingZeros; i++) {
-                                #          resultBuilder.push('0');
-                                #       }
-                                #       resultBuilder.push(hexString);
-                                #       return resultBuilder.join('');
-                                #     };
-                                #
-                                #     // ...
-                              "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
-                              "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
-                                  # the final pixel color is defined by the equation:
-                                  #
-                                  #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
-                                  #
-                                  # This means that a value of 1.0 corresponds to a solid color, whereas
-                                  # a value of 0.0 corresponds to a completely transparent color. This
-                                  # uses a wrapper message rather than a simple float scalar so that it is
-                                  # possible to distinguish between a default value and the value being unset.
-                                  # If omitted, this color object is to be rendered as a solid color
-                                  # (as if the alpha value had been explicitly given with a value of 1.0).
-                              "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
-                              "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
-                            },
-                            "width": 42, # The width of the border, in pixels.
-                                # Deprecated; the width is determined by the "style" field.
-                            "style": "A String", # The style of the border.
-                          },
-                          "right": { # A border along a cell. # The right border of the cell.
-                            "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
-                                # for simplicity of conversion to/from color representations in various
-                                # languages over compactness; for example, the fields of this representation
-                                # can be trivially provided to the constructor of "java.awt.Color" in Java; it
-                                # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
-                                # method in iOS; and, with just a little work, it can be easily formatted into
-                                # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
-                                #
-                                # Example (Java):
-                                #
-                                #      import com.google.type.Color;
-                                #
-                                #      // ...
-                                #      public static java.awt.Color fromProto(Color protocolor) {
-                                #        float alpha = protocolor.hasAlpha()
-                                #            ? protocolor.getAlpha().getValue()
-                                #            : 1.0;
-                                #
-                                #        return new java.awt.Color(
-                                #            protocolor.getRed(),
-                                #            protocolor.getGreen(),
-                                #            protocolor.getBlue(),
-                                #            alpha);
-                                #      }
-                                #
-                                #      public static Color toProto(java.awt.Color color) {
-                                #        float red = (float) color.getRed();
-                                #        float green = (float) color.getGreen();
-                                #        float blue = (float) color.getBlue();
-                                #        float denominator = 255.0;
-                                #        Color.Builder resultBuilder =
-                                #            Color
-                                #                .newBuilder()
-                                #                .setRed(red / denominator)
-                                #                .setGreen(green / denominator)
-                                #                .setBlue(blue / denominator);
-                                #        int alpha = color.getAlpha();
-                                #        if (alpha != 255) {
-                                #          result.setAlpha(
-                                #              FloatValue
-                                #                  .newBuilder()
-                                #                  .setValue(((float) alpha) / denominator)
-                                #                  .build());
-                                #        }
-                                #        return resultBuilder.build();
-                                #      }
-                                #      // ...
-                                #
-                                # Example (iOS / Obj-C):
-                                #
-                                #      // ...
-                                #      static UIColor* fromProto(Color* protocolor) {
-                                #         float red = [protocolor red];
-                                #         float green = [protocolor green];
-                                #         float blue = [protocolor blue];
-                                #         FloatValue* alpha_wrapper = [protocolor alpha];
-                                #         float alpha = 1.0;
-                                #         if (alpha_wrapper != nil) {
-                                #           alpha = [alpha_wrapper value];
-                                #         }
-                                #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
-                                #      }
-                                #
-                                #      static Color* toProto(UIColor* color) {
-                                #          CGFloat red, green, blue, alpha;
-                                #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
-                                #            return nil;
-                                #          }
-                                #          Color* result = [Color alloc] init];
-                                #          [result setRed:red];
-                                #          [result setGreen:green];
-                                #          [result setBlue:blue];
-                                #          if (alpha <= 0.9999) {
-                                #            [result setAlpha:floatWrapperWithValue(alpha)];
-                                #          }
-                                #          [result autorelease];
-                                #          return result;
-                                #     }
-                                #     // ...
-                                #
-                                #  Example (JavaScript):
-                                #
-                                #     // ...
-                                #
-                                #     var protoToCssColor = function(rgb_color) {
-                                #        var redFrac = rgb_color.red || 0.0;
-                                #        var greenFrac = rgb_color.green || 0.0;
-                                #        var blueFrac = rgb_color.blue || 0.0;
-                                #        var red = Math.floor(redFrac * 255);
-                                #        var green = Math.floor(greenFrac * 255);
-                                #        var blue = Math.floor(blueFrac * 255);
-                                #
-                                #        if (!('alpha' in rgb_color)) {
-                                #           return rgbToCssColor_(red, green, blue);
-                                #        }
-                                #
-                                #        var alphaFrac = rgb_color.alpha.value || 0.0;
-                                #        var rgbParams = [red, green, blue].join(',');
-                                #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
-                                #     };
-                                #
-                                #     var rgbToCssColor_ = function(red, green, blue) {
-                                #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
-                                #       var hexString = rgbNumber.toString(16);
-                                #       var missingZeros = 6 - hexString.length;
-                                #       var resultBuilder = ['#'];
-                                #       for (var i = 0; i < missingZeros; i++) {
-                                #          resultBuilder.push('0');
-                                #       }
-                                #       resultBuilder.push(hexString);
-                                #       return resultBuilder.join('');
-                                #     };
-                                #
-                                #     // ...
-                              "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
-                              "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
-                                  # the final pixel color is defined by the equation:
-                                  #
-                                  #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
-                                  #
-                                  # This means that a value of 1.0 corresponds to a solid color, whereas
-                                  # a value of 0.0 corresponds to a completely transparent color. This
-                                  # uses a wrapper message rather than a simple float scalar so that it is
-                                  # possible to distinguish between a default value and the value being unset.
-                                  # If omitted, this color object is to be rendered as a solid color
-                                  # (as if the alpha value had been explicitly given with a value of 1.0).
-                              "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
-                              "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
-                            },
-                            "width": 42, # The width of the border, in pixels.
-                                # Deprecated; the width is determined by the "style" field.
-                            "style": "A String", # The style of the border.
-                          },
-                          "bottom": { # A border along a cell. # The bottom border of the cell.
-                            "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
-                                # for simplicity of conversion to/from color representations in various
-                                # languages over compactness; for example, the fields of this representation
-                                # can be trivially provided to the constructor of "java.awt.Color" in Java; it
-                                # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
-                                # method in iOS; and, with just a little work, it can be easily formatted into
-                                # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
-                                #
-                                # Example (Java):
-                                #
-                                #      import com.google.type.Color;
-                                #
-                                #      // ...
-                                #      public static java.awt.Color fromProto(Color protocolor) {
-                                #        float alpha = protocolor.hasAlpha()
-                                #            ? protocolor.getAlpha().getValue()
-                                #            : 1.0;
-                                #
-                                #        return new java.awt.Color(
-                                #            protocolor.getRed(),
-                                #            protocolor.getGreen(),
-                                #            protocolor.getBlue(),
-                                #            alpha);
-                                #      }
-                                #
-                                #      public static Color toProto(java.awt.Color color) {
-                                #        float red = (float) color.getRed();
-                                #        float green = (float) color.getGreen();
-                                #        float blue = (float) color.getBlue();
-                                #        float denominator = 255.0;
-                                #        Color.Builder resultBuilder =
-                                #            Color
-                                #                .newBuilder()
-                                #                .setRed(red / denominator)
-                                #                .setGreen(green / denominator)
-                                #                .setBlue(blue / denominator);
-                                #        int alpha = color.getAlpha();
-                                #        if (alpha != 255) {
-                                #          result.setAlpha(
-                                #              FloatValue
-                                #                  .newBuilder()
-                                #                  .setValue(((float) alpha) / denominator)
-                                #                  .build());
-                                #        }
-                                #        return resultBuilder.build();
-                                #      }
-                                #      // ...
-                                #
-                                # Example (iOS / Obj-C):
-                                #
-                                #      // ...
-                                #      static UIColor* fromProto(Color* protocolor) {
-                                #         float red = [protocolor red];
-                                #         float green = [protocolor green];
-                                #         float blue = [protocolor blue];
-                                #         FloatValue* alpha_wrapper = [protocolor alpha];
-                                #         float alpha = 1.0;
-                                #         if (alpha_wrapper != nil) {
-                                #           alpha = [alpha_wrapper value];
-                                #         }
-                                #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
-                                #      }
-                                #
-                                #      static Color* toProto(UIColor* color) {
-                                #          CGFloat red, green, blue, alpha;
-                                #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
-                                #            return nil;
-                                #          }
-                                #          Color* result = [Color alloc] init];
-                                #          [result setRed:red];
-                                #          [result setGreen:green];
-                                #          [result setBlue:blue];
-                                #          if (alpha <= 0.9999) {
-                                #            [result setAlpha:floatWrapperWithValue(alpha)];
-                                #          }
-                                #          [result autorelease];
-                                #          return result;
-                                #     }
-                                #     // ...
-                                #
-                                #  Example (JavaScript):
-                                #
-                                #     // ...
-                                #
-                                #     var protoToCssColor = function(rgb_color) {
-                                #        var redFrac = rgb_color.red || 0.0;
-                                #        var greenFrac = rgb_color.green || 0.0;
-                                #        var blueFrac = rgb_color.blue || 0.0;
-                                #        var red = Math.floor(redFrac * 255);
-                                #        var green = Math.floor(greenFrac * 255);
-                                #        var blue = Math.floor(blueFrac * 255);
-                                #
-                                #        if (!('alpha' in rgb_color)) {
-                                #           return rgbToCssColor_(red, green, blue);
-                                #        }
-                                #
-                                #        var alphaFrac = rgb_color.alpha.value || 0.0;
-                                #        var rgbParams = [red, green, blue].join(',');
-                                #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
-                                #     };
-                                #
-                                #     var rgbToCssColor_ = function(red, green, blue) {
-                                #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
-                                #       var hexString = rgbNumber.toString(16);
-                                #       var missingZeros = 6 - hexString.length;
-                                #       var resultBuilder = ['#'];
-                                #       for (var i = 0; i < missingZeros; i++) {
-                                #          resultBuilder.push('0');
-                                #       }
-                                #       resultBuilder.push(hexString);
-                                #       return resultBuilder.join('');
-                                #     };
-                                #
-                                #     // ...
-                              "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
-                              "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
-                                  # the final pixel color is defined by the equation:
-                                  #
-                                  #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
-                                  #
-                                  # This means that a value of 1.0 corresponds to a solid color, whereas
-                                  # a value of 0.0 corresponds to a completely transparent color. This
-                                  # uses a wrapper message rather than a simple float scalar so that it is
-                                  # possible to distinguish between a default value and the value being unset.
-                                  # If omitted, this color object is to be rendered as a solid color
-                                  # (as if the alpha value had been explicitly given with a value of 1.0).
-                              "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
-                              "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
-                            },
-                            "width": 42, # The width of the border, in pixels.
-                                # Deprecated; the width is determined by the "style" field.
-                            "style": "A String", # The style of the border.
-                          },
-                          "left": { # A border along a cell. # The left border of the cell.
-                            "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
-                                # for simplicity of conversion to/from color representations in various
-                                # languages over compactness; for example, the fields of this representation
-                                # can be trivially provided to the constructor of "java.awt.Color" in Java; it
-                                # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
-                                # method in iOS; and, with just a little work, it can be easily formatted into
-                                # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
-                                #
-                                # Example (Java):
-                                #
-                                #      import com.google.type.Color;
-                                #
-                                #      // ...
-                                #      public static java.awt.Color fromProto(Color protocolor) {
-                                #        float alpha = protocolor.hasAlpha()
-                                #            ? protocolor.getAlpha().getValue()
-                                #            : 1.0;
-                                #
-                                #        return new java.awt.Color(
-                                #            protocolor.getRed(),
-                                #            protocolor.getGreen(),
-                                #            protocolor.getBlue(),
-                                #            alpha);
-                                #      }
-                                #
-                                #      public static Color toProto(java.awt.Color color) {
-                                #        float red = (float) color.getRed();
-                                #        float green = (float) color.getGreen();
-                                #        float blue = (float) color.getBlue();
-                                #        float denominator = 255.0;
-                                #        Color.Builder resultBuilder =
-                                #            Color
-                                #                .newBuilder()
-                                #                .setRed(red / denominator)
-                                #                .setGreen(green / denominator)
-                                #                .setBlue(blue / denominator);
-                                #        int alpha = color.getAlpha();
-                                #        if (alpha != 255) {
-                                #          result.setAlpha(
-                                #              FloatValue
-                                #                  .newBuilder()
-                                #                  .setValue(((float) alpha) / denominator)
-                                #                  .build());
-                                #        }
-                                #        return resultBuilder.build();
-                                #      }
-                                #      // ...
-                                #
-                                # Example (iOS / Obj-C):
-                                #
-                                #      // ...
-                                #      static UIColor* fromProto(Color* protocolor) {
-                                #         float red = [protocolor red];
-                                #         float green = [protocolor green];
-                                #         float blue = [protocolor blue];
-                                #         FloatValue* alpha_wrapper = [protocolor alpha];
-                                #         float alpha = 1.0;
-                                #         if (alpha_wrapper != nil) {
-                                #           alpha = [alpha_wrapper value];
-                                #         }
-                                #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
-                                #      }
-                                #
-                                #      static Color* toProto(UIColor* color) {
-                                #          CGFloat red, green, blue, alpha;
-                                #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
-                                #            return nil;
-                                #          }
-                                #          Color* result = [Color alloc] init];
-                                #          [result setRed:red];
-                                #          [result setGreen:green];
-                                #          [result setBlue:blue];
-                                #          if (alpha <= 0.9999) {
-                                #            [result setAlpha:floatWrapperWithValue(alpha)];
-                                #          }
-                                #          [result autorelease];
-                                #          return result;
-                                #     }
-                                #     // ...
-                                #
-                                #  Example (JavaScript):
-                                #
-                                #     // ...
-                                #
-                                #     var protoToCssColor = function(rgb_color) {
-                                #        var redFrac = rgb_color.red || 0.0;
-                                #        var greenFrac = rgb_color.green || 0.0;
-                                #        var blueFrac = rgb_color.blue || 0.0;
-                                #        var red = Math.floor(redFrac * 255);
-                                #        var green = Math.floor(greenFrac * 255);
-                                #        var blue = Math.floor(blueFrac * 255);
-                                #
-                                #        if (!('alpha' in rgb_color)) {
-                                #           return rgbToCssColor_(red, green, blue);
-                                #        }
-                                #
-                                #        var alphaFrac = rgb_color.alpha.value || 0.0;
-                                #        var rgbParams = [red, green, blue].join(',');
-                                #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
-                                #     };
-                                #
-                                #     var rgbToCssColor_ = function(red, green, blue) {
-                                #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
-                                #       var hexString = rgbNumber.toString(16);
-                                #       var missingZeros = 6 - hexString.length;
-                                #       var resultBuilder = ['#'];
-                                #       for (var i = 0; i < missingZeros; i++) {
-                                #          resultBuilder.push('0');
-                                #       }
-                                #       resultBuilder.push(hexString);
-                                #       return resultBuilder.join('');
-                                #     };
-                                #
-                                #     // ...
-                              "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
-                              "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
-                                  # the final pixel color is defined by the equation:
-                                  #
-                                  #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
-                                  #
-                                  # This means that a value of 1.0 corresponds to a solid color, whereas
-                                  # a value of 0.0 corresponds to a completely transparent color. This
-                                  # uses a wrapper message rather than a simple float scalar so that it is
-                                  # possible to distinguish between a default value and the value being unset.
-                                  # If omitted, this color object is to be rendered as a solid color
-                                  # (as if the alpha value had been explicitly given with a value of 1.0).
-                              "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
-                              "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
-                            },
-                            "width": 42, # The width of the border, in pixels.
-                                # Deprecated; the width is determined by the "style" field.
-                            "style": "A String", # The style of the border.
-                          },
-                        },
-                        "wrapStrategy": "A String", # The wrap strategy for the value in the cell.
-                      },
-                      "userEnteredFormat": { # The format of a cell. # The format the user entered for the cell.
-                          #
-                          # When writing, the new format will be merged with the existing format.
-                        "numberFormat": { # The number format of a cell. # A format describing how number values should be represented to the user.
-                          "pattern": "A String", # Pattern string used for formatting.  If not set, a default pattern based on
-                              # the user's locale will be used if necessary for the given type.
-                              # See the [Date and Number Formats guide](/sheets/guides/formats) for more
-                              # information about the supported patterns.
-                          "type": "A String", # The type of the number format.
-                              # When writing, this field must be set.
-                        },
-                        "textDirection": "A String", # The direction of the text in the cell.
-                        "padding": { # The amount of padding around the cell, in pixels. # The padding of the cell.
-                            # When updating padding, every field must be specified.
-                          "top": 42, # The top padding of the cell.
-                          "right": 42, # The right padding of the cell.
-                          "bottom": 42, # The bottom padding of the cell.
-                          "left": 42, # The left padding of the cell.
-                        },
-                        "horizontalAlignment": "A String", # The horizontal alignment of the value in the cell.
-                        "backgroundColor": { # Represents a color in the RGBA color space. This representation is designed # The background color of the cell.
-                            # for simplicity of conversion to/from color representations in various
-                            # languages over compactness; for example, the fields of this representation
-                            # can be trivially provided to the constructor of "java.awt.Color" in Java; it
-                            # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
-                            # method in iOS; and, with just a little work, it can be easily formatted into
-                            # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
-                            #
-                            # Example (Java):
-                            #
-                            #      import com.google.type.Color;
-                            #
-                            #      // ...
-                            #      public static java.awt.Color fromProto(Color protocolor) {
-                            #        float alpha = protocolor.hasAlpha()
-                            #            ? protocolor.getAlpha().getValue()
-                            #            : 1.0;
-                            #
-                            #        return new java.awt.Color(
-                            #            protocolor.getRed(),
-                            #            protocolor.getGreen(),
-                            #            protocolor.getBlue(),
-                            #            alpha);
-                            #      }
-                            #
-                            #      public static Color toProto(java.awt.Color color) {
-                            #        float red = (float) color.getRed();
-                            #        float green = (float) color.getGreen();
-                            #        float blue = (float) color.getBlue();
-                            #        float denominator = 255.0;
-                            #        Color.Builder resultBuilder =
-                            #            Color
-                            #                .newBuilder()
-                            #                .setRed(red / denominator)
-                            #                .setGreen(green / denominator)
-                            #                .setBlue(blue / denominator);
-                            #        int alpha = color.getAlpha();
-                            #        if (alpha != 255) {
-                            #          result.setAlpha(
-                            #              FloatValue
-                            #                  .newBuilder()
-                            #                  .setValue(((float) alpha) / denominator)
-                            #                  .build());
-                            #        }
-                            #        return resultBuilder.build();
-                            #      }
-                            #      // ...
-                            #
-                            # Example (iOS / Obj-C):
-                            #
-                            #      // ...
-                            #      static UIColor* fromProto(Color* protocolor) {
-                            #         float red = [protocolor red];
-                            #         float green = [protocolor green];
-                            #         float blue = [protocolor blue];
-                            #         FloatValue* alpha_wrapper = [protocolor alpha];
-                            #         float alpha = 1.0;
-                            #         if (alpha_wrapper != nil) {
-                            #           alpha = [alpha_wrapper value];
-                            #         }
-                            #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
-                            #      }
-                            #
-                            #      static Color* toProto(UIColor* color) {
-                            #          CGFloat red, green, blue, alpha;
-                            #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
-                            #            return nil;
-                            #          }
-                            #          Color* result = [Color alloc] init];
-                            #          [result setRed:red];
-                            #          [result setGreen:green];
-                            #          [result setBlue:blue];
-                            #          if (alpha <= 0.9999) {
-                            #            [result setAlpha:floatWrapperWithValue(alpha)];
-                            #          }
-                            #          [result autorelease];
-                            #          return result;
-                            #     }
-                            #     // ...
-                            #
-                            #  Example (JavaScript):
-                            #
-                            #     // ...
-                            #
-                            #     var protoToCssColor = function(rgb_color) {
-                            #        var redFrac = rgb_color.red || 0.0;
-                            #        var greenFrac = rgb_color.green || 0.0;
-                            #        var blueFrac = rgb_color.blue || 0.0;
-                            #        var red = Math.floor(redFrac * 255);
-                            #        var green = Math.floor(greenFrac * 255);
-                            #        var blue = Math.floor(blueFrac * 255);
-                            #
-                            #        if (!('alpha' in rgb_color)) {
-                            #           return rgbToCssColor_(red, green, blue);
-                            #        }
-                            #
-                            #        var alphaFrac = rgb_color.alpha.value || 0.0;
-                            #        var rgbParams = [red, green, blue].join(',');
-                            #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
-                            #     };
-                            #
-                            #     var rgbToCssColor_ = function(red, green, blue) {
-                            #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
-                            #       var hexString = rgbNumber.toString(16);
-                            #       var missingZeros = 6 - hexString.length;
-                            #       var resultBuilder = ['#'];
-                            #       for (var i = 0; i < missingZeros; i++) {
-                            #          resultBuilder.push('0');
-                            #       }
-                            #       resultBuilder.push(hexString);
-                            #       return resultBuilder.join('');
-                            #     };
-                            #
-                            #     // ...
-                          "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
-                          "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
-                              # the final pixel color is defined by the equation:
-                              #
-                              #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
-                              #
-                              # This means that a value of 1.0 corresponds to a solid color, whereas
-                              # a value of 0.0 corresponds to a completely transparent color. This
-                              # uses a wrapper message rather than a simple float scalar so that it is
-                              # possible to distinguish between a default value and the value being unset.
-                              # If omitted, this color object is to be rendered as a solid color
-                              # (as if the alpha value had been explicitly given with a value of 1.0).
-                          "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
-                          "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
-                        },
-                        "verticalAlignment": "A String", # The vertical alignment of the value in the cell.
-                        "textFormat": { # The format of a run of text in a cell. # The format of the text in the cell (unless overridden by a format run).
-                            # Absent values indicate that the field isn't specified.
-                          "foregroundColor": { # Represents a color in the RGBA color space. This representation is designed # The foreground color of the text.
-                              # for simplicity of conversion to/from color representations in various
-                              # languages over compactness; for example, the fields of this representation
-                              # can be trivially provided to the constructor of "java.awt.Color" in Java; it
-                              # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
-                              # method in iOS; and, with just a little work, it can be easily formatted into
-                              # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
-                              #
-                              # Example (Java):
-                              #
-                              #      import com.google.type.Color;
-                              #
-                              #      // ...
-                              #      public static java.awt.Color fromProto(Color protocolor) {
-                              #        float alpha = protocolor.hasAlpha()
-                              #            ? protocolor.getAlpha().getValue()
-                              #            : 1.0;
-                              #
-                              #        return new java.awt.Color(
-                              #            protocolor.getRed(),
-                              #            protocolor.getGreen(),
-                              #            protocolor.getBlue(),
-                              #            alpha);
-                              #      }
-                              #
-                              #      public static Color toProto(java.awt.Color color) {
-                              #        float red = (float) color.getRed();
-                              #        float green = (float) color.getGreen();
-                              #        float blue = (float) color.getBlue();
-                              #        float denominator = 255.0;
-                              #        Color.Builder resultBuilder =
-                              #            Color
-                              #                .newBuilder()
-                              #                .setRed(red / denominator)
-                              #                .setGreen(green / denominator)
-                              #                .setBlue(blue / denominator);
-                              #        int alpha = color.getAlpha();
-                              #        if (alpha != 255) {
-                              #          result.setAlpha(
-                              #              FloatValue
-                              #                  .newBuilder()
-                              #                  .setValue(((float) alpha) / denominator)
-                              #                  .build());
-                              #        }
-                              #        return resultBuilder.build();
-                              #      }
-                              #      // ...
-                              #
-                              # Example (iOS / Obj-C):
-                              #
-                              #      // ...
-                              #      static UIColor* fromProto(Color* protocolor) {
-                              #         float red = [protocolor red];
-                              #         float green = [protocolor green];
-                              #         float blue = [protocolor blue];
-                              #         FloatValue* alpha_wrapper = [protocolor alpha];
-                              #         float alpha = 1.0;
-                              #         if (alpha_wrapper != nil) {
-                              #           alpha = [alpha_wrapper value];
-                              #         }
-                              #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
-                              #      }
-                              #
-                              #      static Color* toProto(UIColor* color) {
-                              #          CGFloat red, green, blue, alpha;
-                              #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
-                              #            return nil;
-                              #          }
-                              #          Color* result = [Color alloc] init];
-                              #          [result setRed:red];
-                              #          [result setGreen:green];
-                              #          [result setBlue:blue];
-                              #          if (alpha <= 0.9999) {
-                              #            [result setAlpha:floatWrapperWithValue(alpha)];
-                              #          }
-                              #          [result autorelease];
-                              #          return result;
-                              #     }
-                              #     // ...
-                              #
-                              #  Example (JavaScript):
-                              #
-                              #     // ...
-                              #
-                              #     var protoToCssColor = function(rgb_color) {
-                              #        var redFrac = rgb_color.red || 0.0;
-                              #        var greenFrac = rgb_color.green || 0.0;
-                              #        var blueFrac = rgb_color.blue || 0.0;
-                              #        var red = Math.floor(redFrac * 255);
-                              #        var green = Math.floor(greenFrac * 255);
-                              #        var blue = Math.floor(blueFrac * 255);
-                              #
-                              #        if (!('alpha' in rgb_color)) {
-                              #           return rgbToCssColor_(red, green, blue);
-                              #        }
-                              #
-                              #        var alphaFrac = rgb_color.alpha.value || 0.0;
-                              #        var rgbParams = [red, green, blue].join(',');
-                              #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
-                              #     };
-                              #
-                              #     var rgbToCssColor_ = function(red, green, blue) {
-                              #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
-                              #       var hexString = rgbNumber.toString(16);
-                              #       var missingZeros = 6 - hexString.length;
-                              #       var resultBuilder = ['#'];
-                              #       for (var i = 0; i < missingZeros; i++) {
-                              #          resultBuilder.push('0');
-                              #       }
-                              #       resultBuilder.push(hexString);
-                              #       return resultBuilder.join('');
-                              #     };
-                              #
-                              #     // ...
-                            "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
-                            "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
-                                # the final pixel color is defined by the equation:
-                                #
-                                #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
-                                #
-                                # This means that a value of 1.0 corresponds to a solid color, whereas
-                                # a value of 0.0 corresponds to a completely transparent color. This
-                                # uses a wrapper message rather than a simple float scalar so that it is
-                                # possible to distinguish between a default value and the value being unset.
-                                # If omitted, this color object is to be rendered as a solid color
-                                # (as if the alpha value had been explicitly given with a value of 1.0).
-                            "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
-                            "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
-                          },
-                          "bold": True or False, # True if the text is bold.
-                          "strikethrough": True or False, # True if the text has a strikethrough.
-                          "fontFamily": "A String", # The font family.
-                          "fontSize": 42, # The size of the font.
-                          "italic": True or False, # True if the text is italicized.
-                          "underline": True or False, # True if the text is underlined.
-                        },
-                        "hyperlinkDisplayType": "A String", # How a hyperlink, if it exists, should be displayed in the cell.
-                        "borders": { # The borders of the cell. # The borders of the cell.
-                          "top": { # A border along a cell. # The top border of the cell.
-                            "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
-                                # for simplicity of conversion to/from color representations in various
-                                # languages over compactness; for example, the fields of this representation
-                                # can be trivially provided to the constructor of "java.awt.Color" in Java; it
-                                # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
-                                # method in iOS; and, with just a little work, it can be easily formatted into
-                                # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
-                                #
-                                # Example (Java):
-                                #
-                                #      import com.google.type.Color;
-                                #
-                                #      // ...
-                                #      public static java.awt.Color fromProto(Color protocolor) {
-                                #        float alpha = protocolor.hasAlpha()
-                                #            ? protocolor.getAlpha().getValue()
-                                #            : 1.0;
-                                #
-                                #        return new java.awt.Color(
-                                #            protocolor.getRed(),
-                                #            protocolor.getGreen(),
-                                #            protocolor.getBlue(),
-                                #            alpha);
-                                #      }
-                                #
-                                #      public static Color toProto(java.awt.Color color) {
-                                #        float red = (float) color.getRed();
-                                #        float green = (float) color.getGreen();
-                                #        float blue = (float) color.getBlue();
-                                #        float denominator = 255.0;
-                                #        Color.Builder resultBuilder =
-                                #            Color
-                                #                .newBuilder()
-                                #                .setRed(red / denominator)
-                                #                .setGreen(green / denominator)
-                                #                .setBlue(blue / denominator);
-                                #        int alpha = color.getAlpha();
-                                #        if (alpha != 255) {
-                                #          result.setAlpha(
-                                #              FloatValue
-                                #                  .newBuilder()
-                                #                  .setValue(((float) alpha) / denominator)
-                                #                  .build());
-                                #        }
-                                #        return resultBuilder.build();
-                                #      }
-                                #      // ...
-                                #
-                                # Example (iOS / Obj-C):
-                                #
-                                #      // ...
-                                #      static UIColor* fromProto(Color* protocolor) {
-                                #         float red = [protocolor red];
-                                #         float green = [protocolor green];
-                                #         float blue = [protocolor blue];
-                                #         FloatValue* alpha_wrapper = [protocolor alpha];
-                                #         float alpha = 1.0;
-                                #         if (alpha_wrapper != nil) {
-                                #           alpha = [alpha_wrapper value];
-                                #         }
-                                #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
-                                #      }
-                                #
-                                #      static Color* toProto(UIColor* color) {
-                                #          CGFloat red, green, blue, alpha;
-                                #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
-                                #            return nil;
-                                #          }
-                                #          Color* result = [Color alloc] init];
-                                #          [result setRed:red];
-                                #          [result setGreen:green];
-                                #          [result setBlue:blue];
-                                #          if (alpha <= 0.9999) {
-                                #            [result setAlpha:floatWrapperWithValue(alpha)];
-                                #          }
-                                #          [result autorelease];
-                                #          return result;
-                                #     }
-                                #     // ...
-                                #
-                                #  Example (JavaScript):
-                                #
-                                #     // ...
-                                #
-                                #     var protoToCssColor = function(rgb_color) {
-                                #        var redFrac = rgb_color.red || 0.0;
-                                #        var greenFrac = rgb_color.green || 0.0;
-                                #        var blueFrac = rgb_color.blue || 0.0;
-                                #        var red = Math.floor(redFrac * 255);
-                                #        var green = Math.floor(greenFrac * 255);
-                                #        var blue = Math.floor(blueFrac * 255);
-                                #
-                                #        if (!('alpha' in rgb_color)) {
-                                #           return rgbToCssColor_(red, green, blue);
-                                #        }
-                                #
-                                #        var alphaFrac = rgb_color.alpha.value || 0.0;
-                                #        var rgbParams = [red, green, blue].join(',');
-                                #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
-                                #     };
-                                #
-                                #     var rgbToCssColor_ = function(red, green, blue) {
-                                #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
-                                #       var hexString = rgbNumber.toString(16);
-                                #       var missingZeros = 6 - hexString.length;
-                                #       var resultBuilder = ['#'];
-                                #       for (var i = 0; i < missingZeros; i++) {
-                                #          resultBuilder.push('0');
-                                #       }
-                                #       resultBuilder.push(hexString);
-                                #       return resultBuilder.join('');
-                                #     };
-                                #
-                                #     // ...
-                              "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
-                              "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
-                                  # the final pixel color is defined by the equation:
-                                  #
-                                  #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
-                                  #
-                                  # This means that a value of 1.0 corresponds to a solid color, whereas
-                                  # a value of 0.0 corresponds to a completely transparent color. This
-                                  # uses a wrapper message rather than a simple float scalar so that it is
-                                  # possible to distinguish between a default value and the value being unset.
-                                  # If omitted, this color object is to be rendered as a solid color
-                                  # (as if the alpha value had been explicitly given with a value of 1.0).
-                              "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
-                              "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
-                            },
-                            "width": 42, # The width of the border, in pixels.
-                                # Deprecated; the width is determined by the "style" field.
-                            "style": "A String", # The style of the border.
-                          },
-                          "right": { # A border along a cell. # The right border of the cell.
-                            "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
-                                # for simplicity of conversion to/from color representations in various
-                                # languages over compactness; for example, the fields of this representation
-                                # can be trivially provided to the constructor of "java.awt.Color" in Java; it
-                                # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
-                                # method in iOS; and, with just a little work, it can be easily formatted into
-                                # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
-                                #
-                                # Example (Java):
-                                #
-                                #      import com.google.type.Color;
-                                #
-                                #      // ...
-                                #      public static java.awt.Color fromProto(Color protocolor) {
-                                #        float alpha = protocolor.hasAlpha()
-                                #            ? protocolor.getAlpha().getValue()
-                                #            : 1.0;
-                                #
-                                #        return new java.awt.Color(
-                                #            protocolor.getRed(),
-                                #            protocolor.getGreen(),
-                                #            protocolor.getBlue(),
-                                #            alpha);
-                                #      }
-                                #
-                                #      public static Color toProto(java.awt.Color color) {
-                                #        float red = (float) color.getRed();
-                                #        float green = (float) color.getGreen();
-                                #        float blue = (float) color.getBlue();
-                                #        float denominator = 255.0;
-                                #        Color.Builder resultBuilder =
-                                #            Color
-                                #                .newBuilder()
-                                #                .setRed(red / denominator)
-                                #                .setGreen(green / denominator)
-                                #                .setBlue(blue / denominator);
-                                #        int alpha = color.getAlpha();
-                                #        if (alpha != 255) {
-                                #          result.setAlpha(
-                                #              FloatValue
-                                #                  .newBuilder()
-                                #                  .setValue(((float) alpha) / denominator)
-                                #                  .build());
-                                #        }
-                                #        return resultBuilder.build();
-                                #      }
-                                #      // ...
-                                #
-                                # Example (iOS / Obj-C):
-                                #
-                                #      // ...
-                                #      static UIColor* fromProto(Color* protocolor) {
-                                #         float red = [protocolor red];
-                                #         float green = [protocolor green];
-                                #         float blue = [protocolor blue];
-                                #         FloatValue* alpha_wrapper = [protocolor alpha];
-                                #         float alpha = 1.0;
-                                #         if (alpha_wrapper != nil) {
-                                #           alpha = [alpha_wrapper value];
-                                #         }
-                                #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
-                                #      }
-                                #
-                                #      static Color* toProto(UIColor* color) {
-                                #          CGFloat red, green, blue, alpha;
-                                #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
-                                #            return nil;
-                                #          }
-                                #          Color* result = [Color alloc] init];
-                                #          [result setRed:red];
-                                #          [result setGreen:green];
-                                #          [result setBlue:blue];
-                                #          if (alpha <= 0.9999) {
-                                #            [result setAlpha:floatWrapperWithValue(alpha)];
-                                #          }
-                                #          [result autorelease];
-                                #          return result;
-                                #     }
-                                #     // ...
-                                #
-                                #  Example (JavaScript):
-                                #
-                                #     // ...
-                                #
-                                #     var protoToCssColor = function(rgb_color) {
-                                #        var redFrac = rgb_color.red || 0.0;
-                                #        var greenFrac = rgb_color.green || 0.0;
-                                #        var blueFrac = rgb_color.blue || 0.0;
-                                #        var red = Math.floor(redFrac * 255);
-                                #        var green = Math.floor(greenFrac * 255);
-                                #        var blue = Math.floor(blueFrac * 255);
-                                #
-                                #        if (!('alpha' in rgb_color)) {
-                                #           return rgbToCssColor_(red, green, blue);
-                                #        }
-                                #
-                                #        var alphaFrac = rgb_color.alpha.value || 0.0;
-                                #        var rgbParams = [red, green, blue].join(',');
-                                #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
-                                #     };
-                                #
-                                #     var rgbToCssColor_ = function(red, green, blue) {
-                                #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
-                                #       var hexString = rgbNumber.toString(16);
-                                #       var missingZeros = 6 - hexString.length;
-                                #       var resultBuilder = ['#'];
-                                #       for (var i = 0; i < missingZeros; i++) {
-                                #          resultBuilder.push('0');
-                                #       }
-                                #       resultBuilder.push(hexString);
-                                #       return resultBuilder.join('');
-                                #     };
-                                #
-                                #     // ...
-                              "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
-                              "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
-                                  # the final pixel color is defined by the equation:
-                                  #
-                                  #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
-                                  #
-                                  # This means that a value of 1.0 corresponds to a solid color, whereas
-                                  # a value of 0.0 corresponds to a completely transparent color. This
-                                  # uses a wrapper message rather than a simple float scalar so that it is
-                                  # possible to distinguish between a default value and the value being unset.
-                                  # If omitted, this color object is to be rendered as a solid color
-                                  # (as if the alpha value had been explicitly given with a value of 1.0).
-                              "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
-                              "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
-                            },
-                            "width": 42, # The width of the border, in pixels.
-                                # Deprecated; the width is determined by the "style" field.
-                            "style": "A String", # The style of the border.
-                          },
-                          "bottom": { # A border along a cell. # The bottom border of the cell.
-                            "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
-                                # for simplicity of conversion to/from color representations in various
-                                # languages over compactness; for example, the fields of this representation
-                                # can be trivially provided to the constructor of "java.awt.Color" in Java; it
-                                # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
-                                # method in iOS; and, with just a little work, it can be easily formatted into
-                                # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
-                                #
-                                # Example (Java):
-                                #
-                                #      import com.google.type.Color;
-                                #
-                                #      // ...
-                                #      public static java.awt.Color fromProto(Color protocolor) {
-                                #        float alpha = protocolor.hasAlpha()
-                                #            ? protocolor.getAlpha().getValue()
-                                #            : 1.0;
-                                #
-                                #        return new java.awt.Color(
-                                #            protocolor.getRed(),
-                                #            protocolor.getGreen(),
-                                #            protocolor.getBlue(),
-                                #            alpha);
-                                #      }
-                                #
-                                #      public static Color toProto(java.awt.Color color) {
-                                #        float red = (float) color.getRed();
-                                #        float green = (float) color.getGreen();
-                                #        float blue = (float) color.getBlue();
-                                #        float denominator = 255.0;
-                                #        Color.Builder resultBuilder =
-                                #            Color
-                                #                .newBuilder()
-                                #                .setRed(red / denominator)
-                                #                .setGreen(green / denominator)
-                                #                .setBlue(blue / denominator);
-                                #        int alpha = color.getAlpha();
-                                #        if (alpha != 255) {
-                                #          result.setAlpha(
-                                #              FloatValue
-                                #                  .newBuilder()
-                                #                  .setValue(((float) alpha) / denominator)
-                                #                  .build());
-                                #        }
-                                #        return resultBuilder.build();
-                                #      }
-                                #      // ...
-                                #
-                                # Example (iOS / Obj-C):
-                                #
-                                #      // ...
-                                #      static UIColor* fromProto(Color* protocolor) {
-                                #         float red = [protocolor red];
-                                #         float green = [protocolor green];
-                                #         float blue = [protocolor blue];
-                                #         FloatValue* alpha_wrapper = [protocolor alpha];
-                                #         float alpha = 1.0;
-                                #         if (alpha_wrapper != nil) {
-                                #           alpha = [alpha_wrapper value];
-                                #         }
-                                #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
-                                #      }
-                                #
-                                #      static Color* toProto(UIColor* color) {
-                                #          CGFloat red, green, blue, alpha;
-                                #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
-                                #            return nil;
-                                #          }
-                                #          Color* result = [Color alloc] init];
-                                #          [result setRed:red];
-                                #          [result setGreen:green];
-                                #          [result setBlue:blue];
-                                #          if (alpha <= 0.9999) {
-                                #            [result setAlpha:floatWrapperWithValue(alpha)];
-                                #          }
-                                #          [result autorelease];
-                                #          return result;
-                                #     }
-                                #     // ...
-                                #
-                                #  Example (JavaScript):
-                                #
-                                #     // ...
-                                #
-                                #     var protoToCssColor = function(rgb_color) {
-                                #        var redFrac = rgb_color.red || 0.0;
-                                #        var greenFrac = rgb_color.green || 0.0;
-                                #        var blueFrac = rgb_color.blue || 0.0;
-                                #        var red = Math.floor(redFrac * 255);
-                                #        var green = Math.floor(greenFrac * 255);
-                                #        var blue = Math.floor(blueFrac * 255);
-                                #
-                                #        if (!('alpha' in rgb_color)) {
-                                #           return rgbToCssColor_(red, green, blue);
-                                #        }
-                                #
-                                #        var alphaFrac = rgb_color.alpha.value || 0.0;
-                                #        var rgbParams = [red, green, blue].join(',');
-                                #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
-                                #     };
-                                #
-                                #     var rgbToCssColor_ = function(red, green, blue) {
-                                #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
-                                #       var hexString = rgbNumber.toString(16);
-                                #       var missingZeros = 6 - hexString.length;
-                                #       var resultBuilder = ['#'];
-                                #       for (var i = 0; i < missingZeros; i++) {
-                                #          resultBuilder.push('0');
-                                #       }
-                                #       resultBuilder.push(hexString);
-                                #       return resultBuilder.join('');
-                                #     };
-                                #
-                                #     // ...
-                              "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
-                              "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
-                                  # the final pixel color is defined by the equation:
-                                  #
-                                  #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
-                                  #
-                                  # This means that a value of 1.0 corresponds to a solid color, whereas
-                                  # a value of 0.0 corresponds to a completely transparent color. This
-                                  # uses a wrapper message rather than a simple float scalar so that it is
-                                  # possible to distinguish between a default value and the value being unset.
-                                  # If omitted, this color object is to be rendered as a solid color
-                                  # (as if the alpha value had been explicitly given with a value of 1.0).
-                              "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
-                              "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
-                            },
-                            "width": 42, # The width of the border, in pixels.
-                                # Deprecated; the width is determined by the "style" field.
-                            "style": "A String", # The style of the border.
-                          },
-                          "left": { # A border along a cell. # The left border of the cell.
-                            "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
-                                # for simplicity of conversion to/from color representations in various
-                                # languages over compactness; for example, the fields of this representation
-                                # can be trivially provided to the constructor of "java.awt.Color" in Java; it
-                                # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
-                                # method in iOS; and, with just a little work, it can be easily formatted into
-                                # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
-                                #
-                                # Example (Java):
-                                #
-                                #      import com.google.type.Color;
-                                #
-                                #      // ...
-                                #      public static java.awt.Color fromProto(Color protocolor) {
-                                #        float alpha = protocolor.hasAlpha()
-                                #            ? protocolor.getAlpha().getValue()
-                                #            : 1.0;
-                                #
-                                #        return new java.awt.Color(
-                                #            protocolor.getRed(),
-                                #            protocolor.getGreen(),
-                                #            protocolor.getBlue(),
-                                #            alpha);
-                                #      }
-                                #
-                                #      public static Color toProto(java.awt.Color color) {
-                                #        float red = (float) color.getRed();
-                                #        float green = (float) color.getGreen();
-                                #        float blue = (float) color.getBlue();
-                                #        float denominator = 255.0;
-                                #        Color.Builder resultBuilder =
-                                #            Color
-                                #                .newBuilder()
-                                #                .setRed(red / denominator)
-                                #                .setGreen(green / denominator)
-                                #                .setBlue(blue / denominator);
-                                #        int alpha = color.getAlpha();
-                                #        if (alpha != 255) {
-                                #          result.setAlpha(
-                                #              FloatValue
-                                #                  .newBuilder()
-                                #                  .setValue(((float) alpha) / denominator)
-                                #                  .build());
-                                #        }
-                                #        return resultBuilder.build();
-                                #      }
-                                #      // ...
-                                #
-                                # Example (iOS / Obj-C):
-                                #
-                                #      // ...
-                                #      static UIColor* fromProto(Color* protocolor) {
-                                #         float red = [protocolor red];
-                                #         float green = [protocolor green];
-                                #         float blue = [protocolor blue];
-                                #         FloatValue* alpha_wrapper = [protocolor alpha];
-                                #         float alpha = 1.0;
-                                #         if (alpha_wrapper != nil) {
-                                #           alpha = [alpha_wrapper value];
-                                #         }
-                                #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
-                                #      }
-                                #
-                                #      static Color* toProto(UIColor* color) {
-                                #          CGFloat red, green, blue, alpha;
-                                #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
-                                #            return nil;
-                                #          }
-                                #          Color* result = [Color alloc] init];
-                                #          [result setRed:red];
-                                #          [result setGreen:green];
-                                #          [result setBlue:blue];
-                                #          if (alpha <= 0.9999) {
-                                #            [result setAlpha:floatWrapperWithValue(alpha)];
-                                #          }
-                                #          [result autorelease];
-                                #          return result;
-                                #     }
-                                #     // ...
-                                #
-                                #  Example (JavaScript):
-                                #
-                                #     // ...
-                                #
-                                #     var protoToCssColor = function(rgb_color) {
-                                #        var redFrac = rgb_color.red || 0.0;
-                                #        var greenFrac = rgb_color.green || 0.0;
-                                #        var blueFrac = rgb_color.blue || 0.0;
-                                #        var red = Math.floor(redFrac * 255);
-                                #        var green = Math.floor(greenFrac * 255);
-                                #        var blue = Math.floor(blueFrac * 255);
-                                #
-                                #        if (!('alpha' in rgb_color)) {
-                                #           return rgbToCssColor_(red, green, blue);
-                                #        }
-                                #
-                                #        var alphaFrac = rgb_color.alpha.value || 0.0;
-                                #        var rgbParams = [red, green, blue].join(',');
-                                #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
-                                #     };
-                                #
-                                #     var rgbToCssColor_ = function(red, green, blue) {
-                                #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
-                                #       var hexString = rgbNumber.toString(16);
-                                #       var missingZeros = 6 - hexString.length;
-                                #       var resultBuilder = ['#'];
-                                #       for (var i = 0; i < missingZeros; i++) {
-                                #          resultBuilder.push('0');
-                                #       }
-                                #       resultBuilder.push(hexString);
-                                #       return resultBuilder.join('');
-                                #     };
-                                #
-                                #     // ...
-                              "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
-                              "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
-                                  # the final pixel color is defined by the equation:
-                                  #
-                                  #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
-                                  #
-                                  # This means that a value of 1.0 corresponds to a solid color, whereas
-                                  # a value of 0.0 corresponds to a completely transparent color. This
-                                  # uses a wrapper message rather than a simple float scalar so that it is
-                                  # possible to distinguish between a default value and the value being unset.
-                                  # If omitted, this color object is to be rendered as a solid color
-                                  # (as if the alpha value had been explicitly given with a value of 1.0).
-                              "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
-                              "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
-                            },
-                            "width": 42, # The width of the border, in pixels.
-                                # Deprecated; the width is determined by the "style" field.
-                            "style": "A String", # The style of the border.
-                          },
-                        },
-                        "wrapStrategy": "A String", # The wrap strategy for the value in the cell.
-                      },
-                      "dataValidation": { # A data validation rule. # A data validation rule on the cell, if any.
-                          #
-                          # When writing, the new data validation rule will overwrite any prior rule.
-                        "showCustomUi": True or False, # True if the UI should be customized based on the kind of condition.
-                            # If true, "List" conditions will show a dropdown.
-                        "strict": True or False, # True if invalid data should be rejected.
-                        "inputMessage": "A String", # A message to show the user when adding data to the cell.
-                        "condition": { # A condition that can evaluate to true or false. # The condition that data in the cell must match.
-                            # BooleanConditions are used by conditional formatting,
-                            # data validation, and the criteria in filters.
-                          "type": "A String", # The type of condition.
-                          "values": [ # The values of the condition. The number of supported values depends
-                              # on the condition type.  Some support zero values,
-                              # others one or two values,
-                              # and ConditionType.ONE_OF_LIST supports an arbitrary number of values.
-                            { # The value of the condition.
-                              "relativeDate": "A String", # A relative date (based on the current date).
-                                  # Valid only if the type is
-                                  # DATE_BEFORE,
-                                  # DATE_AFTER,
-                                  # DATE_ON_OR_BEFORE or
-                                  # DATE_ON_OR_AFTER.
-                                  #
-                                  # Relative dates are not supported in data validation.
-                                  # They are supported only in conditional formatting and
-                                  # conditional filters.
-                              "userEnteredValue": "A String", # A value the condition is based on.
-                                  # The value will be parsed as if the user typed into a cell.
-                                  # Formulas are supported (and must begin with an `=`).
-                            },
-                          ],
-                        },
-                      },
-                      "textFormatRuns": [ # Runs of rich text applied to subsections of the cell.  Runs are only valid
-                          # on user entered strings, not formulas, bools, or numbers.
-                          # Runs start at specific indexes in the text and continue until the next
-                          # run. Properties of a run will continue unless explicitly changed
-                          # in a subsequent run (and properties of the first run will continue
-                          # the properties of the cell unless explicitly changed).
-                          #
-                          # When writing, the new runs will overwrite any prior runs.  When writing a
-                          # new user_entered_value, previous runs will be erased.
-                        { # A run of a text format. The format of this run continues until the start
-                            # index of the next run.
-                            # When updating, all fields must be set.
-                          "startIndex": 42, # The character index where this run starts.
-                          "format": { # The format of a run of text in a cell. # The format of this run.  Absent values inherit the cell's format.
-                              # Absent values indicate that the field isn't specified.
-                            "foregroundColor": { # Represents a color in the RGBA color space. This representation is designed # The foreground color of the text.
-                                # for simplicity of conversion to/from color representations in various
-                                # languages over compactness; for example, the fields of this representation
-                                # can be trivially provided to the constructor of "java.awt.Color" in Java; it
-                                # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
-                                # method in iOS; and, with just a little work, it can be easily formatted into
-                                # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
-                                #
-                                # Example (Java):
-                                #
-                                #      import com.google.type.Color;
-                                #
-                                #      // ...
-                                #      public static java.awt.Color fromProto(Color protocolor) {
-                                #        float alpha = protocolor.hasAlpha()
-                                #            ? protocolor.getAlpha().getValue()
-                                #            : 1.0;
-                                #
-                                #        return new java.awt.Color(
-                                #            protocolor.getRed(),
-                                #            protocolor.getGreen(),
-                                #            protocolor.getBlue(),
-                                #            alpha);
-                                #      }
-                                #
-                                #      public static Color toProto(java.awt.Color color) {
-                                #        float red = (float) color.getRed();
-                                #        float green = (float) color.getGreen();
-                                #        float blue = (float) color.getBlue();
-                                #        float denominator = 255.0;
-                                #        Color.Builder resultBuilder =
-                                #            Color
-                                #                .newBuilder()
-                                #                .setRed(red / denominator)
-                                #                .setGreen(green / denominator)
-                                #                .setBlue(blue / denominator);
-                                #        int alpha = color.getAlpha();
-                                #        if (alpha != 255) {
-                                #          result.setAlpha(
-                                #              FloatValue
-                                #                  .newBuilder()
-                                #                  .setValue(((float) alpha) / denominator)
-                                #                  .build());
-                                #        }
-                                #        return resultBuilder.build();
-                                #      }
-                                #      // ...
-                                #
-                                # Example (iOS / Obj-C):
-                                #
-                                #      // ...
-                                #      static UIColor* fromProto(Color* protocolor) {
-                                #         float red = [protocolor red];
-                                #         float green = [protocolor green];
-                                #         float blue = [protocolor blue];
-                                #         FloatValue* alpha_wrapper = [protocolor alpha];
-                                #         float alpha = 1.0;
-                                #         if (alpha_wrapper != nil) {
-                                #           alpha = [alpha_wrapper value];
-                                #         }
-                                #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
-                                #      }
-                                #
-                                #      static Color* toProto(UIColor* color) {
-                                #          CGFloat red, green, blue, alpha;
-                                #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
-                                #            return nil;
-                                #          }
-                                #          Color* result = [Color alloc] init];
-                                #          [result setRed:red];
-                                #          [result setGreen:green];
-                                #          [result setBlue:blue];
-                                #          if (alpha <= 0.9999) {
-                                #            [result setAlpha:floatWrapperWithValue(alpha)];
-                                #          }
-                                #          [result autorelease];
-                                #          return result;
-                                #     }
-                                #     // ...
-                                #
-                                #  Example (JavaScript):
-                                #
-                                #     // ...
-                                #
-                                #     var protoToCssColor = function(rgb_color) {
-                                #        var redFrac = rgb_color.red || 0.0;
-                                #        var greenFrac = rgb_color.green || 0.0;
-                                #        var blueFrac = rgb_color.blue || 0.0;
-                                #        var red = Math.floor(redFrac * 255);
-                                #        var green = Math.floor(greenFrac * 255);
-                                #        var blue = Math.floor(blueFrac * 255);
-                                #
-                                #        if (!('alpha' in rgb_color)) {
-                                #           return rgbToCssColor_(red, green, blue);
-                                #        }
-                                #
-                                #        var alphaFrac = rgb_color.alpha.value || 0.0;
-                                #        var rgbParams = [red, green, blue].join(',');
-                                #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
-                                #     };
-                                #
-                                #     var rgbToCssColor_ = function(red, green, blue) {
-                                #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
-                                #       var hexString = rgbNumber.toString(16);
-                                #       var missingZeros = 6 - hexString.length;
-                                #       var resultBuilder = ['#'];
-                                #       for (var i = 0; i < missingZeros; i++) {
-                                #          resultBuilder.push('0');
-                                #       }
-                                #       resultBuilder.push(hexString);
-                                #       return resultBuilder.join('');
-                                #     };
-                                #
-                                #     // ...
-                              "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
-                              "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
-                                  # the final pixel color is defined by the equation:
-                                  #
-                                  #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
-                                  #
-                                  # This means that a value of 1.0 corresponds to a solid color, whereas
-                                  # a value of 0.0 corresponds to a completely transparent color. This
-                                  # uses a wrapper message rather than a simple float scalar so that it is
-                                  # possible to distinguish between a default value and the value being unset.
-                                  # If omitted, this color object is to be rendered as a solid color
-                                  # (as if the alpha value had been explicitly given with a value of 1.0).
-                              "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
-                              "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
-                            },
-                            "bold": True or False, # True if the text is bold.
-                            "strikethrough": True or False, # True if the text has a strikethrough.
-                            "fontFamily": "A String", # The font family.
-                            "fontSize": 42, # The size of the font.
-                            "italic": True or False, # True if the text is italicized.
-                            "underline": True or False, # True if the text is underlined.
-                          },
-                        },
-                      ],
-                    },
-                  ],
-                },
-              ],
-            },
-          ],
-          "properties": { # Properties of a sheet. # The properties of the sheet.
-            "sheetType": "A String", # The type of sheet. Defaults to GRID.
-                # This field cannot be changed once set.
-            "index": 42, # The index of the sheet within the spreadsheet.
-                # When adding or updating sheet properties, if this field
-                # is excluded then the sheet will be added or moved to the end
-                # of the sheet list.
-            "title": "A String", # The name of the sheet.
-            "gridProperties": { # Properties of a grid. # Additional properties of the sheet if this sheet is a grid.
-                # (If the sheet is an object sheet, containing a chart or image, then
-                # this field will be absent.)
-                # When writing it is an error to set any grid properties on non-grid sheets.
-              "columnCount": 42, # The number of columns in the grid.
-              "rowCount": 42, # The number of rows in the grid.
-              "frozenColumnCount": 42, # The number of columns that are frozen in the grid.
-              "hideGridlines": True or False, # True if the grid isn't showing gridlines in the UI.
-              "frozenRowCount": 42, # The number of rows that are frozen in the grid.
-            },
-            "rightToLeft": True or False, # True if the sheet is an RTL sheet instead of an LTR sheet.
-            "tabColor": { # Represents a color in the RGBA color space. This representation is designed # The color of the tab in the UI.
-                # for simplicity of conversion to/from color representations in various
-                # languages over compactness; for example, the fields of this representation
-                # can be trivially provided to the constructor of "java.awt.Color" in Java; it
-                # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
-                # method in iOS; and, with just a little work, it can be easily formatted into
-                # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
-                #
-                # Example (Java):
-                #
-                #      import com.google.type.Color;
-                #
-                #      // ...
-                #      public static java.awt.Color fromProto(Color protocolor) {
-                #        float alpha = protocolor.hasAlpha()
-                #            ? protocolor.getAlpha().getValue()
-                #            : 1.0;
-                #
-                #        return new java.awt.Color(
-                #            protocolor.getRed(),
-                #            protocolor.getGreen(),
-                #            protocolor.getBlue(),
-                #            alpha);
-                #      }
-                #
-                #      public static Color toProto(java.awt.Color color) {
-                #        float red = (float) color.getRed();
-                #        float green = (float) color.getGreen();
-                #        float blue = (float) color.getBlue();
-                #        float denominator = 255.0;
-                #        Color.Builder resultBuilder =
-                #            Color
-                #                .newBuilder()
-                #                .setRed(red / denominator)
-                #                .setGreen(green / denominator)
-                #                .setBlue(blue / denominator);
-                #        int alpha = color.getAlpha();
-                #        if (alpha != 255) {
-                #          result.setAlpha(
-                #              FloatValue
-                #                  .newBuilder()
-                #                  .setValue(((float) alpha) / denominator)
-                #                  .build());
-                #        }
-                #        return resultBuilder.build();
-                #      }
-                #      // ...
-                #
-                # Example (iOS / Obj-C):
-                #
-                #      // ...
-                #      static UIColor* fromProto(Color* protocolor) {
-                #         float red = [protocolor red];
-                #         float green = [protocolor green];
-                #         float blue = [protocolor blue];
-                #         FloatValue* alpha_wrapper = [protocolor alpha];
-                #         float alpha = 1.0;
-                #         if (alpha_wrapper != nil) {
-                #           alpha = [alpha_wrapper value];
-                #         }
-                #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
-                #      }
-                #
-                #      static Color* toProto(UIColor* color) {
-                #          CGFloat red, green, blue, alpha;
-                #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
-                #            return nil;
-                #          }
-                #          Color* result = [Color alloc] init];
-                #          [result setRed:red];
-                #          [result setGreen:green];
-                #          [result setBlue:blue];
-                #          if (alpha <= 0.9999) {
-                #            [result setAlpha:floatWrapperWithValue(alpha)];
-                #          }
-                #          [result autorelease];
-                #          return result;
-                #     }
-                #     // ...
-                #
-                #  Example (JavaScript):
-                #
-                #     // ...
-                #
-                #     var protoToCssColor = function(rgb_color) {
-                #        var redFrac = rgb_color.red || 0.0;
-                #        var greenFrac = rgb_color.green || 0.0;
-                #        var blueFrac = rgb_color.blue || 0.0;
-                #        var red = Math.floor(redFrac * 255);
-                #        var green = Math.floor(greenFrac * 255);
-                #        var blue = Math.floor(blueFrac * 255);
-                #
-                #        if (!('alpha' in rgb_color)) {
-                #           return rgbToCssColor_(red, green, blue);
-                #        }
-                #
-                #        var alphaFrac = rgb_color.alpha.value || 0.0;
-                #        var rgbParams = [red, green, blue].join(',');
-                #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
-                #     };
-                #
-                #     var rgbToCssColor_ = function(red, green, blue) {
-                #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
-                #       var hexString = rgbNumber.toString(16);
-                #       var missingZeros = 6 - hexString.length;
-                #       var resultBuilder = ['#'];
-                #       for (var i = 0; i < missingZeros; i++) {
-                #          resultBuilder.push('0');
-                #       }
-                #       resultBuilder.push(hexString);
-                #       return resultBuilder.join('');
-                #     };
-                #
-                #     // ...
-              "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
-              "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
-                  # the final pixel color is defined by the equation:
-                  #
-                  #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
-                  #
-                  # This means that a value of 1.0 corresponds to a solid color, whereas
-                  # a value of 0.0 corresponds to a completely transparent color. This
-                  # uses a wrapper message rather than a simple float scalar so that it is
-                  # possible to distinguish between a default value and the value being unset.
-                  # If omitted, this color object is to be rendered as a solid color
-                  # (as if the alpha value had been explicitly given with a value of 1.0).
-              "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
-              "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
-            },
-            "hidden": True or False, # True if the sheet is hidden in the UI, false if it's visible.
-            "sheetId": 42, # The ID of the sheet. Must be non-negative.
-                # This field cannot be changed once set.
-          },
-        },
-      ],
-    }</pre>
+    "spreadsheetUrl": "A String", # The url of the spreadsheet.
+        # This field is read-only.
+  }</pre>
 </div>
 
 <div class="method">
@@ -29096,85 +41162,217 @@
   An object of the form:
 
     { # Resource that represents a spreadsheet.
-      "spreadsheetId": "A String", # The ID of the spreadsheet.
-          # This field is read-only.
-      "namedRanges": [ # The named ranges defined in a spreadsheet.
-        { # A named range.
-          "namedRangeId": "A String", # The ID of the named range.
-          "range": { # A range on a sheet. # The range this represents.
-              # All indexes are zero-based.
-              # Indexes are half open, e.g the start index is inclusive
-              # and the end index is exclusive -- [start_index, end_index).
-              # Missing indexes indicate the range is unbounded on that side.
-              #
-              # For example, if `"Sheet1"` is sheet ID 0, then:
-              #
-              #   `Sheet1!A1:A1 == sheet_id: 0,
-              #                   start_row_index: 0, end_row_index: 1,
-              #                   start_column_index: 0, end_column_index: 1`
-              #
-              #   `Sheet1!A3:B4 == sheet_id: 0,
-              #                   start_row_index: 2, end_row_index: 4,
-              #                   start_column_index: 0, end_column_index: 2`
-              #
-              #   `Sheet1!A:B == sheet_id: 0,
-              #                 start_column_index: 0, end_column_index: 2`
-              #
-              #   `Sheet1!A5:B == sheet_id: 0,
-              #                  start_row_index: 4,
-              #                  start_column_index: 0, end_column_index: 2`
-              #
-              #   `Sheet1 == sheet_id:0`
-              #
-              # The start index must always be less than or equal to the end index.
-              # If the start index equals the end index, then the range is empty.
-              # Empty ranges are typically not meaningful and are usually rendered in the
-              # UI as `#REF!`.
-            "endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
-            "startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
-            "sheetId": 42, # The sheet this range is on.
-            "startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
-            "endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
-          },
-          "name": "A String", # The name of the named range.
+    "spreadsheetId": "A String", # The ID of the spreadsheet.
+        # This field is read-only.
+    "namedRanges": [ # The named ranges defined in a spreadsheet.
+      { # A named range.
+        "namedRangeId": "A String", # The ID of the named range.
+        "range": { # A range on a sheet. # The range this represents.
+            # All indexes are zero-based.
+            # Indexes are half open, e.g the start index is inclusive
+            # and the end index is exclusive -- [start_index, end_index).
+            # Missing indexes indicate the range is unbounded on that side.
+            #
+            # For example, if `"Sheet1"` is sheet ID 0, then:
+            #
+            #   `Sheet1!A1:A1 == sheet_id: 0,
+            #                   start_row_index: 0, end_row_index: 1,
+            #                   start_column_index: 0, end_column_index: 1`
+            #
+            #   `Sheet1!A3:B4 == sheet_id: 0,
+            #                   start_row_index: 2, end_row_index: 4,
+            #                   start_column_index: 0, end_column_index: 2`
+            #
+            #   `Sheet1!A:B == sheet_id: 0,
+            #                 start_column_index: 0, end_column_index: 2`
+            #
+            #   `Sheet1!A5:B == sheet_id: 0,
+            #                  start_row_index: 4,
+            #                  start_column_index: 0, end_column_index: 2`
+            #
+            #   `Sheet1 == sheet_id:0`
+            #
+            # The start index must always be less than or equal to the end index.
+            # If the start index equals the end index, then the range is empty.
+            # Empty ranges are typically not meaningful and are usually rendered in the
+            # UI as `#REF!`.
+          "endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
+          "startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
+          "sheetId": 42, # The sheet this range is on.
+          "startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
+          "endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
         },
-      ],
-      "properties": { # Properties of a spreadsheet. # Overall properties of a spreadsheet.
-        "locale": "A String", # The locale of the spreadsheet in one of the following formats:
+        "name": "A String", # The name of the named range.
+      },
+    ],
+    "properties": { # Properties of a spreadsheet. # Overall properties of a spreadsheet.
+      "locale": "A String", # The locale of the spreadsheet in one of the following formats:
+          #
+          # * an ISO 639-1 language code such as `en`
+          #
+          # * an ISO 639-2 language code such as `fil`, if no 639-1 code exists
+          #
+          # * a combination of the ISO language code and country code, such as `en_US`
+          #
+          # Note: when updating this field, not all locales/languages are supported.
+      "timeZone": "A String", # The time zone of the spreadsheet, in CLDR format such as
+          # `America/New_York`. If the time zone isn't recognized, this may
+          # be a custom time zone such as `GMT-07:00`.
+      "autoRecalc": "A String", # The amount of time to wait before volatile functions are recalculated.
+      "defaultFormat": { # The format of a cell. # The default format of all cells in the spreadsheet.
+          # CellData.effectiveFormat will not be set if the
+          # cell's format is equal to this default format.
+          # This field is read-only.
+        "numberFormat": { # The number format of a cell. # A format describing how number values should be represented to the user.
+          "pattern": "A String", # Pattern string used for formatting.  If not set, a default pattern based on
+              # the user's locale will be used if necessary for the given type.
+              # See the [Date and Number Formats guide](/sheets/guides/formats) for more
+              # information about the supported patterns.
+          "type": "A String", # The type of the number format.
+              # When writing, this field must be set.
+        },
+        "textDirection": "A String", # The direction of the text in the cell.
+        "padding": { # The amount of padding around the cell, in pixels. # The padding of the cell.
+            # When updating padding, every field must be specified.
+          "top": 42, # The top padding of the cell.
+          "right": 42, # The right padding of the cell.
+          "bottom": 42, # The bottom padding of the cell.
+          "left": 42, # The left padding of the cell.
+        },
+        "horizontalAlignment": "A String", # The horizontal alignment of the value in the cell.
+        "backgroundColor": { # Represents a color in the RGBA color space. This representation is designed # The background color of the cell.
+            # for simplicity of conversion to/from color representations in various
+            # languages over compactness; for example, the fields of this representation
+            # can be trivially provided to the constructor of "java.awt.Color" in Java; it
+            # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
+            # method in iOS; and, with just a little work, it can be easily formatted into
+            # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
             #
-            # * an ISO 639-1 language code such as `en`
+            # Example (Java):
             #
-            # * an ISO 639-2 language code such as `fil`, if no 639-1 code exists
+            #      import com.google.type.Color;
             #
-            # * a combination of the ISO language code and country code, such as `en_US`
+            #      // ...
+            #      public static java.awt.Color fromProto(Color protocolor) {
+            #        float alpha = protocolor.hasAlpha()
+            #            ? protocolor.getAlpha().getValue()
+            #            : 1.0;
             #
-            # Note: when updating this field, not all locales/languages are supported.
-        "timeZone": "A String", # The time zone of the spreadsheet, in CLDR format such as
-            # `America/New_York`. If the time zone isn't recognized, this may
-            # be a custom time zone such as `GMT-07:00`.
-        "autoRecalc": "A String", # The amount of time to wait before volatile functions are recalculated.
-        "defaultFormat": { # The format of a cell. # The default format of all cells in the spreadsheet.
-            # CellData.effectiveFormat will not be set if the
-            # cell's format is equal to this default format.
-            # This field is read-only.
-          "numberFormat": { # The number format of a cell. # A format describing how number values should be represented to the user.
-            "pattern": "A String", # Pattern string used for formatting.  If not set, a default pattern based on
-                # the user's locale will be used if necessary for the given type.
-                # See the [Date and Number Formats guide](/sheets/guides/formats) for more
-                # information about the supported patterns.
-            "type": "A String", # The type of the number format.
-                # When writing, this field must be set.
-          },
-          "textDirection": "A String", # The direction of the text in the cell.
-          "padding": { # The amount of padding around the cell, in pixels. # The padding of the cell.
-              # When updating padding, every field must be specified.
-            "top": 42, # The top padding of the cell.
-            "right": 42, # The right padding of the cell.
-            "bottom": 42, # The bottom padding of the cell.
-            "left": 42, # The left padding of the cell.
-          },
-          "horizontalAlignment": "A String", # The horizontal alignment of the value in the cell.
-          "backgroundColor": { # Represents a color in the RGBA color space. This representation is designed # The background color of the cell.
+            #        return new java.awt.Color(
+            #            protocolor.getRed(),
+            #            protocolor.getGreen(),
+            #            protocolor.getBlue(),
+            #            alpha);
+            #      }
+            #
+            #      public static Color toProto(java.awt.Color color) {
+            #        float red = (float) color.getRed();
+            #        float green = (float) color.getGreen();
+            #        float blue = (float) color.getBlue();
+            #        float denominator = 255.0;
+            #        Color.Builder resultBuilder =
+            #            Color
+            #                .newBuilder()
+            #                .setRed(red / denominator)
+            #                .setGreen(green / denominator)
+            #                .setBlue(blue / denominator);
+            #        int alpha = color.getAlpha();
+            #        if (alpha != 255) {
+            #          result.setAlpha(
+            #              FloatValue
+            #                  .newBuilder()
+            #                  .setValue(((float) alpha) / denominator)
+            #                  .build());
+            #        }
+            #        return resultBuilder.build();
+            #      }
+            #      // ...
+            #
+            # Example (iOS / Obj-C):
+            #
+            #      // ...
+            #      static UIColor* fromProto(Color* protocolor) {
+            #         float red = [protocolor red];
+            #         float green = [protocolor green];
+            #         float blue = [protocolor blue];
+            #         FloatValue* alpha_wrapper = [protocolor alpha];
+            #         float alpha = 1.0;
+            #         if (alpha_wrapper != nil) {
+            #           alpha = [alpha_wrapper value];
+            #         }
+            #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
+            #      }
+            #
+            #      static Color* toProto(UIColor* color) {
+            #          CGFloat red, green, blue, alpha;
+            #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
+            #            return nil;
+            #          }
+            #          Color* result = [Color alloc] init];
+            #          [result setRed:red];
+            #          [result setGreen:green];
+            #          [result setBlue:blue];
+            #          if (alpha <= 0.9999) {
+            #            [result setAlpha:floatWrapperWithValue(alpha)];
+            #          }
+            #          [result autorelease];
+            #          return result;
+            #     }
+            #     // ...
+            #
+            #  Example (JavaScript):
+            #
+            #     // ...
+            #
+            #     var protoToCssColor = function(rgb_color) {
+            #        var redFrac = rgb_color.red || 0.0;
+            #        var greenFrac = rgb_color.green || 0.0;
+            #        var blueFrac = rgb_color.blue || 0.0;
+            #        var red = Math.floor(redFrac * 255);
+            #        var green = Math.floor(greenFrac * 255);
+            #        var blue = Math.floor(blueFrac * 255);
+            #
+            #        if (!('alpha' in rgb_color)) {
+            #           return rgbToCssColor_(red, green, blue);
+            #        }
+            #
+            #        var alphaFrac = rgb_color.alpha.value || 0.0;
+            #        var rgbParams = [red, green, blue].join(',');
+            #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
+            #     };
+            #
+            #     var rgbToCssColor_ = function(red, green, blue) {
+            #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
+            #       var hexString = rgbNumber.toString(16);
+            #       var missingZeros = 6 - hexString.length;
+            #       var resultBuilder = ['#'];
+            #       for (var i = 0; i < missingZeros; i++) {
+            #          resultBuilder.push('0');
+            #       }
+            #       resultBuilder.push(hexString);
+            #       return resultBuilder.join('');
+            #     };
+            #
+            #     // ...
+          "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+          "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
+              # the final pixel color is defined by the equation:
+              #
+              #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
+              #
+              # This means that a value of 1.0 corresponds to a solid color, whereas
+              # a value of 0.0 corresponds to a completely transparent color. This
+              # uses a wrapper message rather than a simple float scalar so that it is
+              # possible to distinguish between a default value and the value being unset.
+              # If omitted, this color object is to be rendered as a solid color
+              # (as if the alpha value had been explicitly given with a value of 1.0).
+          "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
+          "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
+        },
+        "verticalAlignment": "A String", # The vertical alignment of the value in the cell.
+        "textFormat": { # The format of a run of text in a cell. # The format of the text in the cell (unless overridden by a format run).
+            # Absent values indicate that the field isn't specified.
+          "foregroundColor": { # Represents a color in the RGBA color space. This representation is designed # The foreground color of the text.
               # for simplicity of conversion to/from color representations in various
               # languages over compactness; for example, the fields of this representation
               # can be trivially provided to the constructor of "java.awt.Color" in Java; it
@@ -29303,10 +41501,17 @@
             "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
             "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
           },
-          "verticalAlignment": "A String", # The vertical alignment of the value in the cell.
-          "textFormat": { # The format of a run of text in a cell. # The format of the text in the cell (unless overridden by a format run).
-              # Absent values indicate that the field isn't specified.
-            "foregroundColor": { # Represents a color in the RGBA color space. This representation is designed # The foreground color of the text.
+          "bold": True or False, # True if the text is bold.
+          "strikethrough": True or False, # True if the text has a strikethrough.
+          "fontFamily": "A String", # The font family.
+          "fontSize": 42, # The size of the font.
+          "italic": True or False, # True if the text is italicized.
+          "underline": True or False, # True if the text is underlined.
+        },
+        "hyperlinkDisplayType": "A String", # How a hyperlink, if it exists, should be displayed in the cell.
+        "borders": { # The borders of the cell. # The borders of the cell.
+          "top": { # A border along a cell. # The top border of the cell.
+            "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
                 # for simplicity of conversion to/from color representations in various
                 # languages over compactness; for example, the fields of this representation
                 # can be trivially provided to the constructor of "java.awt.Color" in Java; it
@@ -29435,649 +41640,642 @@
               "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
               "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
             },
-            "bold": True or False, # True if the text is bold.
-            "strikethrough": True or False, # True if the text has a strikethrough.
-            "fontFamily": "A String", # The font family.
-            "fontSize": 42, # The size of the font.
-            "italic": True or False, # True if the text is italicized.
-            "underline": True or False, # True if the text is underlined.
+            "width": 42, # The width of the border, in pixels.
+                # Deprecated; the width is determined by the "style" field.
+            "style": "A String", # The style of the border.
           },
-          "hyperlinkDisplayType": "A String", # How a hyperlink, if it exists, should be displayed in the cell.
-          "borders": { # The borders of the cell. # The borders of the cell.
-            "top": { # A border along a cell. # The top border of the cell.
-              "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
-                  # for simplicity of conversion to/from color representations in various
-                  # languages over compactness; for example, the fields of this representation
-                  # can be trivially provided to the constructor of "java.awt.Color" in Java; it
-                  # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
-                  # method in iOS; and, with just a little work, it can be easily formatted into
-                  # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
+          "right": { # A border along a cell. # The right border of the cell.
+            "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
+                # for simplicity of conversion to/from color representations in various
+                # languages over compactness; for example, the fields of this representation
+                # can be trivially provided to the constructor of "java.awt.Color" in Java; it
+                # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
+                # method in iOS; and, with just a little work, it can be easily formatted into
+                # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
+                #
+                # Example (Java):
+                #
+                #      import com.google.type.Color;
+                #
+                #      // ...
+                #      public static java.awt.Color fromProto(Color protocolor) {
+                #        float alpha = protocolor.hasAlpha()
+                #            ? protocolor.getAlpha().getValue()
+                #            : 1.0;
+                #
+                #        return new java.awt.Color(
+                #            protocolor.getRed(),
+                #            protocolor.getGreen(),
+                #            protocolor.getBlue(),
+                #            alpha);
+                #      }
+                #
+                #      public static Color toProto(java.awt.Color color) {
+                #        float red = (float) color.getRed();
+                #        float green = (float) color.getGreen();
+                #        float blue = (float) color.getBlue();
+                #        float denominator = 255.0;
+                #        Color.Builder resultBuilder =
+                #            Color
+                #                .newBuilder()
+                #                .setRed(red / denominator)
+                #                .setGreen(green / denominator)
+                #                .setBlue(blue / denominator);
+                #        int alpha = color.getAlpha();
+                #        if (alpha != 255) {
+                #          result.setAlpha(
+                #              FloatValue
+                #                  .newBuilder()
+                #                  .setValue(((float) alpha) / denominator)
+                #                  .build());
+                #        }
+                #        return resultBuilder.build();
+                #      }
+                #      // ...
+                #
+                # Example (iOS / Obj-C):
+                #
+                #      // ...
+                #      static UIColor* fromProto(Color* protocolor) {
+                #         float red = [protocolor red];
+                #         float green = [protocolor green];
+                #         float blue = [protocolor blue];
+                #         FloatValue* alpha_wrapper = [protocolor alpha];
+                #         float alpha = 1.0;
+                #         if (alpha_wrapper != nil) {
+                #           alpha = [alpha_wrapper value];
+                #         }
+                #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
+                #      }
+                #
+                #      static Color* toProto(UIColor* color) {
+                #          CGFloat red, green, blue, alpha;
+                #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
+                #            return nil;
+                #          }
+                #          Color* result = [Color alloc] init];
+                #          [result setRed:red];
+                #          [result setGreen:green];
+                #          [result setBlue:blue];
+                #          if (alpha <= 0.9999) {
+                #            [result setAlpha:floatWrapperWithValue(alpha)];
+                #          }
+                #          [result autorelease];
+                #          return result;
+                #     }
+                #     // ...
+                #
+                #  Example (JavaScript):
+                #
+                #     // ...
+                #
+                #     var protoToCssColor = function(rgb_color) {
+                #        var redFrac = rgb_color.red || 0.0;
+                #        var greenFrac = rgb_color.green || 0.0;
+                #        var blueFrac = rgb_color.blue || 0.0;
+                #        var red = Math.floor(redFrac * 255);
+                #        var green = Math.floor(greenFrac * 255);
+                #        var blue = Math.floor(blueFrac * 255);
+                #
+                #        if (!('alpha' in rgb_color)) {
+                #           return rgbToCssColor_(red, green, blue);
+                #        }
+                #
+                #        var alphaFrac = rgb_color.alpha.value || 0.0;
+                #        var rgbParams = [red, green, blue].join(',');
+                #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
+                #     };
+                #
+                #     var rgbToCssColor_ = function(red, green, blue) {
+                #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
+                #       var hexString = rgbNumber.toString(16);
+                #       var missingZeros = 6 - hexString.length;
+                #       var resultBuilder = ['#'];
+                #       for (var i = 0; i < missingZeros; i++) {
+                #          resultBuilder.push('0');
+                #       }
+                #       resultBuilder.push(hexString);
+                #       return resultBuilder.join('');
+                #     };
+                #
+                #     // ...
+              "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+              "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
+                  # the final pixel color is defined by the equation:
                   #
-                  # Example (Java):
+                  #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
                   #
-                  #      import com.google.type.Color;
-                  #
-                  #      // ...
-                  #      public static java.awt.Color fromProto(Color protocolor) {
-                  #        float alpha = protocolor.hasAlpha()
-                  #            ? protocolor.getAlpha().getValue()
-                  #            : 1.0;
-                  #
-                  #        return new java.awt.Color(
-                  #            protocolor.getRed(),
-                  #            protocolor.getGreen(),
-                  #            protocolor.getBlue(),
-                  #            alpha);
-                  #      }
-                  #
-                  #      public static Color toProto(java.awt.Color color) {
-                  #        float red = (float) color.getRed();
-                  #        float green = (float) color.getGreen();
-                  #        float blue = (float) color.getBlue();
-                  #        float denominator = 255.0;
-                  #        Color.Builder resultBuilder =
-                  #            Color
-                  #                .newBuilder()
-                  #                .setRed(red / denominator)
-                  #                .setGreen(green / denominator)
-                  #                .setBlue(blue / denominator);
-                  #        int alpha = color.getAlpha();
-                  #        if (alpha != 255) {
-                  #          result.setAlpha(
-                  #              FloatValue
-                  #                  .newBuilder()
-                  #                  .setValue(((float) alpha) / denominator)
-                  #                  .build());
-                  #        }
-                  #        return resultBuilder.build();
-                  #      }
-                  #      // ...
-                  #
-                  # Example (iOS / Obj-C):
-                  #
-                  #      // ...
-                  #      static UIColor* fromProto(Color* protocolor) {
-                  #         float red = [protocolor red];
-                  #         float green = [protocolor green];
-                  #         float blue = [protocolor blue];
-                  #         FloatValue* alpha_wrapper = [protocolor alpha];
-                  #         float alpha = 1.0;
-                  #         if (alpha_wrapper != nil) {
-                  #           alpha = [alpha_wrapper value];
-                  #         }
-                  #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
-                  #      }
-                  #
-                  #      static Color* toProto(UIColor* color) {
-                  #          CGFloat red, green, blue, alpha;
-                  #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
-                  #            return nil;
-                  #          }
-                  #          Color* result = [Color alloc] init];
-                  #          [result setRed:red];
-                  #          [result setGreen:green];
-                  #          [result setBlue:blue];
-                  #          if (alpha <= 0.9999) {
-                  #            [result setAlpha:floatWrapperWithValue(alpha)];
-                  #          }
-                  #          [result autorelease];
-                  #          return result;
-                  #     }
-                  #     // ...
-                  #
-                  #  Example (JavaScript):
-                  #
-                  #     // ...
-                  #
-                  #     var protoToCssColor = function(rgb_color) {
-                  #        var redFrac = rgb_color.red || 0.0;
-                  #        var greenFrac = rgb_color.green || 0.0;
-                  #        var blueFrac = rgb_color.blue || 0.0;
-                  #        var red = Math.floor(redFrac * 255);
-                  #        var green = Math.floor(greenFrac * 255);
-                  #        var blue = Math.floor(blueFrac * 255);
-                  #
-                  #        if (!('alpha' in rgb_color)) {
-                  #           return rgbToCssColor_(red, green, blue);
-                  #        }
-                  #
-                  #        var alphaFrac = rgb_color.alpha.value || 0.0;
-                  #        var rgbParams = [red, green, blue].join(',');
-                  #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
-                  #     };
-                  #
-                  #     var rgbToCssColor_ = function(red, green, blue) {
-                  #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
-                  #       var hexString = rgbNumber.toString(16);
-                  #       var missingZeros = 6 - hexString.length;
-                  #       var resultBuilder = ['#'];
-                  #       for (var i = 0; i < missingZeros; i++) {
-                  #          resultBuilder.push('0');
-                  #       }
-                  #       resultBuilder.push(hexString);
-                  #       return resultBuilder.join('');
-                  #     };
-                  #
-                  #     // ...
-                "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
-                "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
-                    # the final pixel color is defined by the equation:
-                    #
-                    #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
-                    #
-                    # This means that a value of 1.0 corresponds to a solid color, whereas
-                    # a value of 0.0 corresponds to a completely transparent color. This
-                    # uses a wrapper message rather than a simple float scalar so that it is
-                    # possible to distinguish between a default value and the value being unset.
-                    # If omitted, this color object is to be rendered as a solid color
-                    # (as if the alpha value had been explicitly given with a value of 1.0).
-                "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
-                "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
-              },
-              "width": 42, # The width of the border, in pixels.
-                  # Deprecated; the width is determined by the "style" field.
-              "style": "A String", # The style of the border.
+                  # This means that a value of 1.0 corresponds to a solid color, whereas
+                  # a value of 0.0 corresponds to a completely transparent color. This
+                  # uses a wrapper message rather than a simple float scalar so that it is
+                  # possible to distinguish between a default value and the value being unset.
+                  # If omitted, this color object is to be rendered as a solid color
+                  # (as if the alpha value had been explicitly given with a value of 1.0).
+              "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
+              "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
             },
-            "right": { # A border along a cell. # The right border of the cell.
-              "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
-                  # for simplicity of conversion to/from color representations in various
-                  # languages over compactness; for example, the fields of this representation
-                  # can be trivially provided to the constructor of "java.awt.Color" in Java; it
-                  # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
-                  # method in iOS; and, with just a little work, it can be easily formatted into
-                  # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
-                  #
-                  # Example (Java):
-                  #
-                  #      import com.google.type.Color;
-                  #
-                  #      // ...
-                  #      public static java.awt.Color fromProto(Color protocolor) {
-                  #        float alpha = protocolor.hasAlpha()
-                  #            ? protocolor.getAlpha().getValue()
-                  #            : 1.0;
-                  #
-                  #        return new java.awt.Color(
-                  #            protocolor.getRed(),
-                  #            protocolor.getGreen(),
-                  #            protocolor.getBlue(),
-                  #            alpha);
-                  #      }
-                  #
-                  #      public static Color toProto(java.awt.Color color) {
-                  #        float red = (float) color.getRed();
-                  #        float green = (float) color.getGreen();
-                  #        float blue = (float) color.getBlue();
-                  #        float denominator = 255.0;
-                  #        Color.Builder resultBuilder =
-                  #            Color
-                  #                .newBuilder()
-                  #                .setRed(red / denominator)
-                  #                .setGreen(green / denominator)
-                  #                .setBlue(blue / denominator);
-                  #        int alpha = color.getAlpha();
-                  #        if (alpha != 255) {
-                  #          result.setAlpha(
-                  #              FloatValue
-                  #                  .newBuilder()
-                  #                  .setValue(((float) alpha) / denominator)
-                  #                  .build());
-                  #        }
-                  #        return resultBuilder.build();
-                  #      }
-                  #      // ...
-                  #
-                  # Example (iOS / Obj-C):
-                  #
-                  #      // ...
-                  #      static UIColor* fromProto(Color* protocolor) {
-                  #         float red = [protocolor red];
-                  #         float green = [protocolor green];
-                  #         float blue = [protocolor blue];
-                  #         FloatValue* alpha_wrapper = [protocolor alpha];
-                  #         float alpha = 1.0;
-                  #         if (alpha_wrapper != nil) {
-                  #           alpha = [alpha_wrapper value];
-                  #         }
-                  #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
-                  #      }
-                  #
-                  #      static Color* toProto(UIColor* color) {
-                  #          CGFloat red, green, blue, alpha;
-                  #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
-                  #            return nil;
-                  #          }
-                  #          Color* result = [Color alloc] init];
-                  #          [result setRed:red];
-                  #          [result setGreen:green];
-                  #          [result setBlue:blue];
-                  #          if (alpha <= 0.9999) {
-                  #            [result setAlpha:floatWrapperWithValue(alpha)];
-                  #          }
-                  #          [result autorelease];
-                  #          return result;
-                  #     }
-                  #     // ...
-                  #
-                  #  Example (JavaScript):
-                  #
-                  #     // ...
-                  #
-                  #     var protoToCssColor = function(rgb_color) {
-                  #        var redFrac = rgb_color.red || 0.0;
-                  #        var greenFrac = rgb_color.green || 0.0;
-                  #        var blueFrac = rgb_color.blue || 0.0;
-                  #        var red = Math.floor(redFrac * 255);
-                  #        var green = Math.floor(greenFrac * 255);
-                  #        var blue = Math.floor(blueFrac * 255);
-                  #
-                  #        if (!('alpha' in rgb_color)) {
-                  #           return rgbToCssColor_(red, green, blue);
-                  #        }
-                  #
-                  #        var alphaFrac = rgb_color.alpha.value || 0.0;
-                  #        var rgbParams = [red, green, blue].join(',');
-                  #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
-                  #     };
-                  #
-                  #     var rgbToCssColor_ = function(red, green, blue) {
-                  #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
-                  #       var hexString = rgbNumber.toString(16);
-                  #       var missingZeros = 6 - hexString.length;
-                  #       var resultBuilder = ['#'];
-                  #       for (var i = 0; i < missingZeros; i++) {
-                  #          resultBuilder.push('0');
-                  #       }
-                  #       resultBuilder.push(hexString);
-                  #       return resultBuilder.join('');
-                  #     };
-                  #
-                  #     // ...
-                "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
-                "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
-                    # the final pixel color is defined by the equation:
-                    #
-                    #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
-                    #
-                    # This means that a value of 1.0 corresponds to a solid color, whereas
-                    # a value of 0.0 corresponds to a completely transparent color. This
-                    # uses a wrapper message rather than a simple float scalar so that it is
-                    # possible to distinguish between a default value and the value being unset.
-                    # If omitted, this color object is to be rendered as a solid color
-                    # (as if the alpha value had been explicitly given with a value of 1.0).
-                "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
-                "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
-              },
-              "width": 42, # The width of the border, in pixels.
-                  # Deprecated; the width is determined by the "style" field.
-              "style": "A String", # The style of the border.
-            },
-            "bottom": { # A border along a cell. # The bottom border of the cell.
-              "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
-                  # for simplicity of conversion to/from color representations in various
-                  # languages over compactness; for example, the fields of this representation
-                  # can be trivially provided to the constructor of "java.awt.Color" in Java; it
-                  # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
-                  # method in iOS; and, with just a little work, it can be easily formatted into
-                  # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
-                  #
-                  # Example (Java):
-                  #
-                  #      import com.google.type.Color;
-                  #
-                  #      // ...
-                  #      public static java.awt.Color fromProto(Color protocolor) {
-                  #        float alpha = protocolor.hasAlpha()
-                  #            ? protocolor.getAlpha().getValue()
-                  #            : 1.0;
-                  #
-                  #        return new java.awt.Color(
-                  #            protocolor.getRed(),
-                  #            protocolor.getGreen(),
-                  #            protocolor.getBlue(),
-                  #            alpha);
-                  #      }
-                  #
-                  #      public static Color toProto(java.awt.Color color) {
-                  #        float red = (float) color.getRed();
-                  #        float green = (float) color.getGreen();
-                  #        float blue = (float) color.getBlue();
-                  #        float denominator = 255.0;
-                  #        Color.Builder resultBuilder =
-                  #            Color
-                  #                .newBuilder()
-                  #                .setRed(red / denominator)
-                  #                .setGreen(green / denominator)
-                  #                .setBlue(blue / denominator);
-                  #        int alpha = color.getAlpha();
-                  #        if (alpha != 255) {
-                  #          result.setAlpha(
-                  #              FloatValue
-                  #                  .newBuilder()
-                  #                  .setValue(((float) alpha) / denominator)
-                  #                  .build());
-                  #        }
-                  #        return resultBuilder.build();
-                  #      }
-                  #      // ...
-                  #
-                  # Example (iOS / Obj-C):
-                  #
-                  #      // ...
-                  #      static UIColor* fromProto(Color* protocolor) {
-                  #         float red = [protocolor red];
-                  #         float green = [protocolor green];
-                  #         float blue = [protocolor blue];
-                  #         FloatValue* alpha_wrapper = [protocolor alpha];
-                  #         float alpha = 1.0;
-                  #         if (alpha_wrapper != nil) {
-                  #           alpha = [alpha_wrapper value];
-                  #         }
-                  #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
-                  #      }
-                  #
-                  #      static Color* toProto(UIColor* color) {
-                  #          CGFloat red, green, blue, alpha;
-                  #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
-                  #            return nil;
-                  #          }
-                  #          Color* result = [Color alloc] init];
-                  #          [result setRed:red];
-                  #          [result setGreen:green];
-                  #          [result setBlue:blue];
-                  #          if (alpha <= 0.9999) {
-                  #            [result setAlpha:floatWrapperWithValue(alpha)];
-                  #          }
-                  #          [result autorelease];
-                  #          return result;
-                  #     }
-                  #     // ...
-                  #
-                  #  Example (JavaScript):
-                  #
-                  #     // ...
-                  #
-                  #     var protoToCssColor = function(rgb_color) {
-                  #        var redFrac = rgb_color.red || 0.0;
-                  #        var greenFrac = rgb_color.green || 0.0;
-                  #        var blueFrac = rgb_color.blue || 0.0;
-                  #        var red = Math.floor(redFrac * 255);
-                  #        var green = Math.floor(greenFrac * 255);
-                  #        var blue = Math.floor(blueFrac * 255);
-                  #
-                  #        if (!('alpha' in rgb_color)) {
-                  #           return rgbToCssColor_(red, green, blue);
-                  #        }
-                  #
-                  #        var alphaFrac = rgb_color.alpha.value || 0.0;
-                  #        var rgbParams = [red, green, blue].join(',');
-                  #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
-                  #     };
-                  #
-                  #     var rgbToCssColor_ = function(red, green, blue) {
-                  #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
-                  #       var hexString = rgbNumber.toString(16);
-                  #       var missingZeros = 6 - hexString.length;
-                  #       var resultBuilder = ['#'];
-                  #       for (var i = 0; i < missingZeros; i++) {
-                  #          resultBuilder.push('0');
-                  #       }
-                  #       resultBuilder.push(hexString);
-                  #       return resultBuilder.join('');
-                  #     };
-                  #
-                  #     // ...
-                "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
-                "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
-                    # the final pixel color is defined by the equation:
-                    #
-                    #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
-                    #
-                    # This means that a value of 1.0 corresponds to a solid color, whereas
-                    # a value of 0.0 corresponds to a completely transparent color. This
-                    # uses a wrapper message rather than a simple float scalar so that it is
-                    # possible to distinguish between a default value and the value being unset.
-                    # If omitted, this color object is to be rendered as a solid color
-                    # (as if the alpha value had been explicitly given with a value of 1.0).
-                "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
-                "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
-              },
-              "width": 42, # The width of the border, in pixels.
-                  # Deprecated; the width is determined by the "style" field.
-              "style": "A String", # The style of the border.
-            },
-            "left": { # A border along a cell. # The left border of the cell.
-              "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
-                  # for simplicity of conversion to/from color representations in various
-                  # languages over compactness; for example, the fields of this representation
-                  # can be trivially provided to the constructor of "java.awt.Color" in Java; it
-                  # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
-                  # method in iOS; and, with just a little work, it can be easily formatted into
-                  # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
-                  #
-                  # Example (Java):
-                  #
-                  #      import com.google.type.Color;
-                  #
-                  #      // ...
-                  #      public static java.awt.Color fromProto(Color protocolor) {
-                  #        float alpha = protocolor.hasAlpha()
-                  #            ? protocolor.getAlpha().getValue()
-                  #            : 1.0;
-                  #
-                  #        return new java.awt.Color(
-                  #            protocolor.getRed(),
-                  #            protocolor.getGreen(),
-                  #            protocolor.getBlue(),
-                  #            alpha);
-                  #      }
-                  #
-                  #      public static Color toProto(java.awt.Color color) {
-                  #        float red = (float) color.getRed();
-                  #        float green = (float) color.getGreen();
-                  #        float blue = (float) color.getBlue();
-                  #        float denominator = 255.0;
-                  #        Color.Builder resultBuilder =
-                  #            Color
-                  #                .newBuilder()
-                  #                .setRed(red / denominator)
-                  #                .setGreen(green / denominator)
-                  #                .setBlue(blue / denominator);
-                  #        int alpha = color.getAlpha();
-                  #        if (alpha != 255) {
-                  #          result.setAlpha(
-                  #              FloatValue
-                  #                  .newBuilder()
-                  #                  .setValue(((float) alpha) / denominator)
-                  #                  .build());
-                  #        }
-                  #        return resultBuilder.build();
-                  #      }
-                  #      // ...
-                  #
-                  # Example (iOS / Obj-C):
-                  #
-                  #      // ...
-                  #      static UIColor* fromProto(Color* protocolor) {
-                  #         float red = [protocolor red];
-                  #         float green = [protocolor green];
-                  #         float blue = [protocolor blue];
-                  #         FloatValue* alpha_wrapper = [protocolor alpha];
-                  #         float alpha = 1.0;
-                  #         if (alpha_wrapper != nil) {
-                  #           alpha = [alpha_wrapper value];
-                  #         }
-                  #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
-                  #      }
-                  #
-                  #      static Color* toProto(UIColor* color) {
-                  #          CGFloat red, green, blue, alpha;
-                  #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
-                  #            return nil;
-                  #          }
-                  #          Color* result = [Color alloc] init];
-                  #          [result setRed:red];
-                  #          [result setGreen:green];
-                  #          [result setBlue:blue];
-                  #          if (alpha <= 0.9999) {
-                  #            [result setAlpha:floatWrapperWithValue(alpha)];
-                  #          }
-                  #          [result autorelease];
-                  #          return result;
-                  #     }
-                  #     // ...
-                  #
-                  #  Example (JavaScript):
-                  #
-                  #     // ...
-                  #
-                  #     var protoToCssColor = function(rgb_color) {
-                  #        var redFrac = rgb_color.red || 0.0;
-                  #        var greenFrac = rgb_color.green || 0.0;
-                  #        var blueFrac = rgb_color.blue || 0.0;
-                  #        var red = Math.floor(redFrac * 255);
-                  #        var green = Math.floor(greenFrac * 255);
-                  #        var blue = Math.floor(blueFrac * 255);
-                  #
-                  #        if (!('alpha' in rgb_color)) {
-                  #           return rgbToCssColor_(red, green, blue);
-                  #        }
-                  #
-                  #        var alphaFrac = rgb_color.alpha.value || 0.0;
-                  #        var rgbParams = [red, green, blue].join(',');
-                  #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
-                  #     };
-                  #
-                  #     var rgbToCssColor_ = function(red, green, blue) {
-                  #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
-                  #       var hexString = rgbNumber.toString(16);
-                  #       var missingZeros = 6 - hexString.length;
-                  #       var resultBuilder = ['#'];
-                  #       for (var i = 0; i < missingZeros; i++) {
-                  #          resultBuilder.push('0');
-                  #       }
-                  #       resultBuilder.push(hexString);
-                  #       return resultBuilder.join('');
-                  #     };
-                  #
-                  #     // ...
-                "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
-                "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
-                    # the final pixel color is defined by the equation:
-                    #
-                    #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
-                    #
-                    # This means that a value of 1.0 corresponds to a solid color, whereas
-                    # a value of 0.0 corresponds to a completely transparent color. This
-                    # uses a wrapper message rather than a simple float scalar so that it is
-                    # possible to distinguish between a default value and the value being unset.
-                    # If omitted, this color object is to be rendered as a solid color
-                    # (as if the alpha value had been explicitly given with a value of 1.0).
-                "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
-                "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
-              },
-              "width": 42, # The width of the border, in pixels.
-                  # Deprecated; the width is determined by the "style" field.
-              "style": "A String", # The style of the border.
-            },
+            "width": 42, # The width of the border, in pixels.
+                # Deprecated; the width is determined by the "style" field.
+            "style": "A String", # The style of the border.
           },
-          "wrapStrategy": "A String", # The wrap strategy for the value in the cell.
+          "bottom": { # A border along a cell. # The bottom border of the cell.
+            "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
+                # for simplicity of conversion to/from color representations in various
+                # languages over compactness; for example, the fields of this representation
+                # can be trivially provided to the constructor of "java.awt.Color" in Java; it
+                # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
+                # method in iOS; and, with just a little work, it can be easily formatted into
+                # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
+                #
+                # Example (Java):
+                #
+                #      import com.google.type.Color;
+                #
+                #      // ...
+                #      public static java.awt.Color fromProto(Color protocolor) {
+                #        float alpha = protocolor.hasAlpha()
+                #            ? protocolor.getAlpha().getValue()
+                #            : 1.0;
+                #
+                #        return new java.awt.Color(
+                #            protocolor.getRed(),
+                #            protocolor.getGreen(),
+                #            protocolor.getBlue(),
+                #            alpha);
+                #      }
+                #
+                #      public static Color toProto(java.awt.Color color) {
+                #        float red = (float) color.getRed();
+                #        float green = (float) color.getGreen();
+                #        float blue = (float) color.getBlue();
+                #        float denominator = 255.0;
+                #        Color.Builder resultBuilder =
+                #            Color
+                #                .newBuilder()
+                #                .setRed(red / denominator)
+                #                .setGreen(green / denominator)
+                #                .setBlue(blue / denominator);
+                #        int alpha = color.getAlpha();
+                #        if (alpha != 255) {
+                #          result.setAlpha(
+                #              FloatValue
+                #                  .newBuilder()
+                #                  .setValue(((float) alpha) / denominator)
+                #                  .build());
+                #        }
+                #        return resultBuilder.build();
+                #      }
+                #      // ...
+                #
+                # Example (iOS / Obj-C):
+                #
+                #      // ...
+                #      static UIColor* fromProto(Color* protocolor) {
+                #         float red = [protocolor red];
+                #         float green = [protocolor green];
+                #         float blue = [protocolor blue];
+                #         FloatValue* alpha_wrapper = [protocolor alpha];
+                #         float alpha = 1.0;
+                #         if (alpha_wrapper != nil) {
+                #           alpha = [alpha_wrapper value];
+                #         }
+                #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
+                #      }
+                #
+                #      static Color* toProto(UIColor* color) {
+                #          CGFloat red, green, blue, alpha;
+                #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
+                #            return nil;
+                #          }
+                #          Color* result = [Color alloc] init];
+                #          [result setRed:red];
+                #          [result setGreen:green];
+                #          [result setBlue:blue];
+                #          if (alpha <= 0.9999) {
+                #            [result setAlpha:floatWrapperWithValue(alpha)];
+                #          }
+                #          [result autorelease];
+                #          return result;
+                #     }
+                #     // ...
+                #
+                #  Example (JavaScript):
+                #
+                #     // ...
+                #
+                #     var protoToCssColor = function(rgb_color) {
+                #        var redFrac = rgb_color.red || 0.0;
+                #        var greenFrac = rgb_color.green || 0.0;
+                #        var blueFrac = rgb_color.blue || 0.0;
+                #        var red = Math.floor(redFrac * 255);
+                #        var green = Math.floor(greenFrac * 255);
+                #        var blue = Math.floor(blueFrac * 255);
+                #
+                #        if (!('alpha' in rgb_color)) {
+                #           return rgbToCssColor_(red, green, blue);
+                #        }
+                #
+                #        var alphaFrac = rgb_color.alpha.value || 0.0;
+                #        var rgbParams = [red, green, blue].join(',');
+                #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
+                #     };
+                #
+                #     var rgbToCssColor_ = function(red, green, blue) {
+                #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
+                #       var hexString = rgbNumber.toString(16);
+                #       var missingZeros = 6 - hexString.length;
+                #       var resultBuilder = ['#'];
+                #       for (var i = 0; i < missingZeros; i++) {
+                #          resultBuilder.push('0');
+                #       }
+                #       resultBuilder.push(hexString);
+                #       return resultBuilder.join('');
+                #     };
+                #
+                #     // ...
+              "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+              "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
+                  # the final pixel color is defined by the equation:
+                  #
+                  #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
+                  #
+                  # This means that a value of 1.0 corresponds to a solid color, whereas
+                  # a value of 0.0 corresponds to a completely transparent color. This
+                  # uses a wrapper message rather than a simple float scalar so that it is
+                  # possible to distinguish between a default value and the value being unset.
+                  # If omitted, this color object is to be rendered as a solid color
+                  # (as if the alpha value had been explicitly given with a value of 1.0).
+              "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
+              "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
+            },
+            "width": 42, # The width of the border, in pixels.
+                # Deprecated; the width is determined by the "style" field.
+            "style": "A String", # The style of the border.
+          },
+          "left": { # A border along a cell. # The left border of the cell.
+            "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
+                # for simplicity of conversion to/from color representations in various
+                # languages over compactness; for example, the fields of this representation
+                # can be trivially provided to the constructor of "java.awt.Color" in Java; it
+                # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
+                # method in iOS; and, with just a little work, it can be easily formatted into
+                # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
+                #
+                # Example (Java):
+                #
+                #      import com.google.type.Color;
+                #
+                #      // ...
+                #      public static java.awt.Color fromProto(Color protocolor) {
+                #        float alpha = protocolor.hasAlpha()
+                #            ? protocolor.getAlpha().getValue()
+                #            : 1.0;
+                #
+                #        return new java.awt.Color(
+                #            protocolor.getRed(),
+                #            protocolor.getGreen(),
+                #            protocolor.getBlue(),
+                #            alpha);
+                #      }
+                #
+                #      public static Color toProto(java.awt.Color color) {
+                #        float red = (float) color.getRed();
+                #        float green = (float) color.getGreen();
+                #        float blue = (float) color.getBlue();
+                #        float denominator = 255.0;
+                #        Color.Builder resultBuilder =
+                #            Color
+                #                .newBuilder()
+                #                .setRed(red / denominator)
+                #                .setGreen(green / denominator)
+                #                .setBlue(blue / denominator);
+                #        int alpha = color.getAlpha();
+                #        if (alpha != 255) {
+                #          result.setAlpha(
+                #              FloatValue
+                #                  .newBuilder()
+                #                  .setValue(((float) alpha) / denominator)
+                #                  .build());
+                #        }
+                #        return resultBuilder.build();
+                #      }
+                #      // ...
+                #
+                # Example (iOS / Obj-C):
+                #
+                #      // ...
+                #      static UIColor* fromProto(Color* protocolor) {
+                #         float red = [protocolor red];
+                #         float green = [protocolor green];
+                #         float blue = [protocolor blue];
+                #         FloatValue* alpha_wrapper = [protocolor alpha];
+                #         float alpha = 1.0;
+                #         if (alpha_wrapper != nil) {
+                #           alpha = [alpha_wrapper value];
+                #         }
+                #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
+                #      }
+                #
+                #      static Color* toProto(UIColor* color) {
+                #          CGFloat red, green, blue, alpha;
+                #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
+                #            return nil;
+                #          }
+                #          Color* result = [Color alloc] init];
+                #          [result setRed:red];
+                #          [result setGreen:green];
+                #          [result setBlue:blue];
+                #          if (alpha <= 0.9999) {
+                #            [result setAlpha:floatWrapperWithValue(alpha)];
+                #          }
+                #          [result autorelease];
+                #          return result;
+                #     }
+                #     // ...
+                #
+                #  Example (JavaScript):
+                #
+                #     // ...
+                #
+                #     var protoToCssColor = function(rgb_color) {
+                #        var redFrac = rgb_color.red || 0.0;
+                #        var greenFrac = rgb_color.green || 0.0;
+                #        var blueFrac = rgb_color.blue || 0.0;
+                #        var red = Math.floor(redFrac * 255);
+                #        var green = Math.floor(greenFrac * 255);
+                #        var blue = Math.floor(blueFrac * 255);
+                #
+                #        if (!('alpha' in rgb_color)) {
+                #           return rgbToCssColor_(red, green, blue);
+                #        }
+                #
+                #        var alphaFrac = rgb_color.alpha.value || 0.0;
+                #        var rgbParams = [red, green, blue].join(',');
+                #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
+                #     };
+                #
+                #     var rgbToCssColor_ = function(red, green, blue) {
+                #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
+                #       var hexString = rgbNumber.toString(16);
+                #       var missingZeros = 6 - hexString.length;
+                #       var resultBuilder = ['#'];
+                #       for (var i = 0; i < missingZeros; i++) {
+                #          resultBuilder.push('0');
+                #       }
+                #       resultBuilder.push(hexString);
+                #       return resultBuilder.join('');
+                #     };
+                #
+                #     // ...
+              "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+              "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
+                  # the final pixel color is defined by the equation:
+                  #
+                  #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
+                  #
+                  # This means that a value of 1.0 corresponds to a solid color, whereas
+                  # a value of 0.0 corresponds to a completely transparent color. This
+                  # uses a wrapper message rather than a simple float scalar so that it is
+                  # possible to distinguish between a default value and the value being unset.
+                  # If omitted, this color object is to be rendered as a solid color
+                  # (as if the alpha value had been explicitly given with a value of 1.0).
+              "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
+              "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
+            },
+            "width": 42, # The width of the border, in pixels.
+                # Deprecated; the width is determined by the "style" field.
+            "style": "A String", # The style of the border.
+          },
         },
-        "title": "A String", # The title of the spreadsheet.
+        "wrapStrategy": "A String", # The wrap strategy for the value in the cell.
       },
-      "sheets": [ # The sheets that are part of a spreadsheet.
-        { # A sheet in a spreadsheet.
-          "conditionalFormats": [ # The conditional format rules in this sheet.
-            { # A rule describing a conditional format.
-              "ranges": [ # The ranges that will be formatted if the condition is true.
-                  # All the ranges must be on the same grid.
-                { # A range on a sheet.
-                    # All indexes are zero-based.
-                    # Indexes are half open, e.g the start index is inclusive
-                    # and the end index is exclusive -- [start_index, end_index).
-                    # Missing indexes indicate the range is unbounded on that side.
-                    #
-                    # For example, if `"Sheet1"` is sheet ID 0, then:
-                    #
-                    #   `Sheet1!A1:A1 == sheet_id: 0,
-                    #                   start_row_index: 0, end_row_index: 1,
-                    #                   start_column_index: 0, end_column_index: 1`
-                    #
-                    #   `Sheet1!A3:B4 == sheet_id: 0,
-                    #                   start_row_index: 2, end_row_index: 4,
-                    #                   start_column_index: 0, end_column_index: 2`
-                    #
-                    #   `Sheet1!A:B == sheet_id: 0,
-                    #                 start_column_index: 0, end_column_index: 2`
-                    #
-                    #   `Sheet1!A5:B == sheet_id: 0,
-                    #                  start_row_index: 4,
-                    #                  start_column_index: 0, end_column_index: 2`
-                    #
-                    #   `Sheet1 == sheet_id:0`
-                    #
-                    # The start index must always be less than or equal to the end index.
-                    # If the start index equals the end index, then the range is empty.
-                    # Empty ranges are typically not meaningful and are usually rendered in the
-                    # UI as `#REF!`.
-                  "endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
-                  "startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
-                  "sheetId": 42, # The sheet this range is on.
-                  "startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
-                  "endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
-                },
-              ],
-              "booleanRule": { # A rule that may or may not match, depending on the condition. # The formatting is either "on" or "off" according to the rule.
-                "condition": { # A condition that can evaluate to true or false. # The condition of the rule. If the condition evaluates to true,
-                    # the format will be applied.
-                    # BooleanConditions are used by conditional formatting,
-                    # data validation, and the criteria in filters.
-                  "type": "A String", # The type of condition.
-                  "values": [ # The values of the condition. The number of supported values depends
-                      # on the condition type.  Some support zero values,
-                      # others one or two values,
-                      # and ConditionType.ONE_OF_LIST supports an arbitrary number of values.
-                    { # The value of the condition.
-                      "relativeDate": "A String", # A relative date (based on the current date).
-                          # Valid only if the type is
-                          # DATE_BEFORE,
-                          # DATE_AFTER,
-                          # DATE_ON_OR_BEFORE or
-                          # DATE_ON_OR_AFTER.
-                          #
-                          # Relative dates are not supported in data validation.
-                          # They are supported only in conditional formatting and
-                          # conditional filters.
-                      "userEnteredValue": "A String", # A value the condition is based on.
-                          # The value will be parsed as if the user typed into a cell.
-                          # Formulas are supported (and must begin with an `=`).
-                    },
-                  ],
-                },
-                "format": { # The format of a cell. # The format to apply.
-                    # Conditional formatting can only apply a subset of formatting:
-                    # bold, italic,
-                    # strikethrough,
-                    # foreground color &
-                    # background color.
-                  "numberFormat": { # The number format of a cell. # A format describing how number values should be represented to the user.
-                    "pattern": "A String", # Pattern string used for formatting.  If not set, a default pattern based on
-                        # the user's locale will be used if necessary for the given type.
-                        # See the [Date and Number Formats guide](/sheets/guides/formats) for more
-                        # information about the supported patterns.
-                    "type": "A String", # The type of the number format.
-                        # When writing, this field must be set.
+      "title": "A String", # The title of the spreadsheet.
+    },
+    "sheets": [ # The sheets that are part of a spreadsheet.
+      { # A sheet in a spreadsheet.
+        "conditionalFormats": [ # The conditional format rules in this sheet.
+          { # A rule describing a conditional format.
+            "ranges": [ # The ranges that will be formatted if the condition is true.
+                # All the ranges must be on the same grid.
+              { # A range on a sheet.
+                  # All indexes are zero-based.
+                  # Indexes are half open, e.g the start index is inclusive
+                  # and the end index is exclusive -- [start_index, end_index).
+                  # Missing indexes indicate the range is unbounded on that side.
+                  #
+                  # For example, if `"Sheet1"` is sheet ID 0, then:
+                  #
+                  #   `Sheet1!A1:A1 == sheet_id: 0,
+                  #                   start_row_index: 0, end_row_index: 1,
+                  #                   start_column_index: 0, end_column_index: 1`
+                  #
+                  #   `Sheet1!A3:B4 == sheet_id: 0,
+                  #                   start_row_index: 2, end_row_index: 4,
+                  #                   start_column_index: 0, end_column_index: 2`
+                  #
+                  #   `Sheet1!A:B == sheet_id: 0,
+                  #                 start_column_index: 0, end_column_index: 2`
+                  #
+                  #   `Sheet1!A5:B == sheet_id: 0,
+                  #                  start_row_index: 4,
+                  #                  start_column_index: 0, end_column_index: 2`
+                  #
+                  #   `Sheet1 == sheet_id:0`
+                  #
+                  # The start index must always be less than or equal to the end index.
+                  # If the start index equals the end index, then the range is empty.
+                  # Empty ranges are typically not meaningful and are usually rendered in the
+                  # UI as `#REF!`.
+                "endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
+                "startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
+                "sheetId": 42, # The sheet this range is on.
+                "startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
+                "endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
+              },
+            ],
+            "booleanRule": { # A rule that may or may not match, depending on the condition. # The formatting is either "on" or "off" according to the rule.
+              "condition": { # A condition that can evaluate to true or false. # The condition of the rule. If the condition evaluates to true,
+                  # the format will be applied.
+                  # BooleanConditions are used by conditional formatting,
+                  # data validation, and the criteria in filters.
+                "type": "A String", # The type of condition.
+                "values": [ # The values of the condition. The number of supported values depends
+                    # on the condition type.  Some support zero values,
+                    # others one or two values,
+                    # and ConditionType.ONE_OF_LIST supports an arbitrary number of values.
+                  { # The value of the condition.
+                    "relativeDate": "A String", # A relative date (based on the current date).
+                        # Valid only if the type is
+                        # DATE_BEFORE,
+                        # DATE_AFTER,
+                        # DATE_ON_OR_BEFORE or
+                        # DATE_ON_OR_AFTER.
+                        #
+                        # Relative dates are not supported in data validation.
+                        # They are supported only in conditional formatting and
+                        # conditional filters.
+                    "userEnteredValue": "A String", # A value the condition is based on.
+                        # The value will be parsed as if the user typed into a cell.
+                        # Formulas are supported (and must begin with an `=`).
                   },
-                  "textDirection": "A String", # The direction of the text in the cell.
-                  "padding": { # The amount of padding around the cell, in pixels. # The padding of the cell.
-                      # When updating padding, every field must be specified.
-                    "top": 42, # The top padding of the cell.
-                    "right": 42, # The right padding of the cell.
-                    "bottom": 42, # The bottom padding of the cell.
-                    "left": 42, # The left padding of the cell.
-                  },
-                  "horizontalAlignment": "A String", # The horizontal alignment of the value in the cell.
-                  "backgroundColor": { # Represents a color in the RGBA color space. This representation is designed # The background color of the cell.
+                ],
+              },
+              "format": { # The format of a cell. # The format to apply.
+                  # Conditional formatting can only apply a subset of formatting:
+                  # bold, italic,
+                  # strikethrough,
+                  # foreground color &
+                  # background color.
+                "numberFormat": { # The number format of a cell. # A format describing how number values should be represented to the user.
+                  "pattern": "A String", # Pattern string used for formatting.  If not set, a default pattern based on
+                      # the user's locale will be used if necessary for the given type.
+                      # See the [Date and Number Formats guide](/sheets/guides/formats) for more
+                      # information about the supported patterns.
+                  "type": "A String", # The type of the number format.
+                      # When writing, this field must be set.
+                },
+                "textDirection": "A String", # The direction of the text in the cell.
+                "padding": { # The amount of padding around the cell, in pixels. # The padding of the cell.
+                    # When updating padding, every field must be specified.
+                  "top": 42, # The top padding of the cell.
+                  "right": 42, # The right padding of the cell.
+                  "bottom": 42, # The bottom padding of the cell.
+                  "left": 42, # The left padding of the cell.
+                },
+                "horizontalAlignment": "A String", # The horizontal alignment of the value in the cell.
+                "backgroundColor": { # Represents a color in the RGBA color space. This representation is designed # The background color of the cell.
+                    # for simplicity of conversion to/from color representations in various
+                    # languages over compactness; for example, the fields of this representation
+                    # can be trivially provided to the constructor of "java.awt.Color" in Java; it
+                    # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
+                    # method in iOS; and, with just a little work, it can be easily formatted into
+                    # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
+                    #
+                    # Example (Java):
+                    #
+                    #      import com.google.type.Color;
+                    #
+                    #      // ...
+                    #      public static java.awt.Color fromProto(Color protocolor) {
+                    #        float alpha = protocolor.hasAlpha()
+                    #            ? protocolor.getAlpha().getValue()
+                    #            : 1.0;
+                    #
+                    #        return new java.awt.Color(
+                    #            protocolor.getRed(),
+                    #            protocolor.getGreen(),
+                    #            protocolor.getBlue(),
+                    #            alpha);
+                    #      }
+                    #
+                    #      public static Color toProto(java.awt.Color color) {
+                    #        float red = (float) color.getRed();
+                    #        float green = (float) color.getGreen();
+                    #        float blue = (float) color.getBlue();
+                    #        float denominator = 255.0;
+                    #        Color.Builder resultBuilder =
+                    #            Color
+                    #                .newBuilder()
+                    #                .setRed(red / denominator)
+                    #                .setGreen(green / denominator)
+                    #                .setBlue(blue / denominator);
+                    #        int alpha = color.getAlpha();
+                    #        if (alpha != 255) {
+                    #          result.setAlpha(
+                    #              FloatValue
+                    #                  .newBuilder()
+                    #                  .setValue(((float) alpha) / denominator)
+                    #                  .build());
+                    #        }
+                    #        return resultBuilder.build();
+                    #      }
+                    #      // ...
+                    #
+                    # Example (iOS / Obj-C):
+                    #
+                    #      // ...
+                    #      static UIColor* fromProto(Color* protocolor) {
+                    #         float red = [protocolor red];
+                    #         float green = [protocolor green];
+                    #         float blue = [protocolor blue];
+                    #         FloatValue* alpha_wrapper = [protocolor alpha];
+                    #         float alpha = 1.0;
+                    #         if (alpha_wrapper != nil) {
+                    #           alpha = [alpha_wrapper value];
+                    #         }
+                    #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
+                    #      }
+                    #
+                    #      static Color* toProto(UIColor* color) {
+                    #          CGFloat red, green, blue, alpha;
+                    #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
+                    #            return nil;
+                    #          }
+                    #          Color* result = [Color alloc] init];
+                    #          [result setRed:red];
+                    #          [result setGreen:green];
+                    #          [result setBlue:blue];
+                    #          if (alpha <= 0.9999) {
+                    #            [result setAlpha:floatWrapperWithValue(alpha)];
+                    #          }
+                    #          [result autorelease];
+                    #          return result;
+                    #     }
+                    #     // ...
+                    #
+                    #  Example (JavaScript):
+                    #
+                    #     // ...
+                    #
+                    #     var protoToCssColor = function(rgb_color) {
+                    #        var redFrac = rgb_color.red || 0.0;
+                    #        var greenFrac = rgb_color.green || 0.0;
+                    #        var blueFrac = rgb_color.blue || 0.0;
+                    #        var red = Math.floor(redFrac * 255);
+                    #        var green = Math.floor(greenFrac * 255);
+                    #        var blue = Math.floor(blueFrac * 255);
+                    #
+                    #        if (!('alpha' in rgb_color)) {
+                    #           return rgbToCssColor_(red, green, blue);
+                    #        }
+                    #
+                    #        var alphaFrac = rgb_color.alpha.value || 0.0;
+                    #        var rgbParams = [red, green, blue].join(',');
+                    #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
+                    #     };
+                    #
+                    #     var rgbToCssColor_ = function(red, green, blue) {
+                    #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
+                    #       var hexString = rgbNumber.toString(16);
+                    #       var missingZeros = 6 - hexString.length;
+                    #       var resultBuilder = ['#'];
+                    #       for (var i = 0; i < missingZeros; i++) {
+                    #          resultBuilder.push('0');
+                    #       }
+                    #       resultBuilder.push(hexString);
+                    #       return resultBuilder.join('');
+                    #     };
+                    #
+                    #     // ...
+                  "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+                  "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
+                      # the final pixel color is defined by the equation:
+                      #
+                      #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
+                      #
+                      # This means that a value of 1.0 corresponds to a solid color, whereas
+                      # a value of 0.0 corresponds to a completely transparent color. This
+                      # uses a wrapper message rather than a simple float scalar so that it is
+                      # possible to distinguish between a default value and the value being unset.
+                      # If omitted, this color object is to be rendered as a solid color
+                      # (as if the alpha value had been explicitly given with a value of 1.0).
+                  "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
+                  "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
+                },
+                "verticalAlignment": "A String", # The vertical alignment of the value in the cell.
+                "textFormat": { # The format of a run of text in a cell. # The format of the text in the cell (unless overridden by a format run).
+                    # Absent values indicate that the field isn't specified.
+                  "foregroundColor": { # Represents a color in the RGBA color space. This representation is designed # The foreground color of the text.
                       # for simplicity of conversion to/from color representations in various
                       # languages over compactness; for example, the fields of this representation
                       # can be trivially provided to the constructor of "java.awt.Color" in Java; it
@@ -30206,10 +42404,17 @@
                     "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
                     "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
                   },
-                  "verticalAlignment": "A String", # The vertical alignment of the value in the cell.
-                  "textFormat": { # The format of a run of text in a cell. # The format of the text in the cell (unless overridden by a format run).
-                      # Absent values indicate that the field isn't specified.
-                    "foregroundColor": { # Represents a color in the RGBA color space. This representation is designed # The foreground color of the text.
+                  "bold": True or False, # True if the text is bold.
+                  "strikethrough": True or False, # True if the text has a strikethrough.
+                  "fontFamily": "A String", # The font family.
+                  "fontSize": 42, # The size of the font.
+                  "italic": True or False, # True if the text is italicized.
+                  "underline": True or False, # True if the text is underlined.
+                },
+                "hyperlinkDisplayType": "A String", # How a hyperlink, if it exists, should be displayed in the cell.
+                "borders": { # The borders of the cell. # The borders of the cell.
+                  "top": { # A border along a cell. # The top border of the cell.
+                    "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
                         # for simplicity of conversion to/from color representations in various
                         # languages over compactness; for example, the fields of this representation
                         # can be trivially provided to the constructor of "java.awt.Color" in Java; it
@@ -30338,975 +42543,837 @@
                       "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
                       "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
                     },
-                    "bold": True or False, # True if the text is bold.
-                    "strikethrough": True or False, # True if the text has a strikethrough.
-                    "fontFamily": "A String", # The font family.
-                    "fontSize": 42, # The size of the font.
-                    "italic": True or False, # True if the text is italicized.
-                    "underline": True or False, # True if the text is underlined.
+                    "width": 42, # The width of the border, in pixels.
+                        # Deprecated; the width is determined by the "style" field.
+                    "style": "A String", # The style of the border.
                   },
-                  "hyperlinkDisplayType": "A String", # How a hyperlink, if it exists, should be displayed in the cell.
-                  "borders": { # The borders of the cell. # The borders of the cell.
-                    "top": { # A border along a cell. # The top border of the cell.
-                      "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
-                          # for simplicity of conversion to/from color representations in various
-                          # languages over compactness; for example, the fields of this representation
-                          # can be trivially provided to the constructor of "java.awt.Color" in Java; it
-                          # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
-                          # method in iOS; and, with just a little work, it can be easily formatted into
-                          # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
+                  "right": { # A border along a cell. # The right border of the cell.
+                    "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
+                        # for simplicity of conversion to/from color representations in various
+                        # languages over compactness; for example, the fields of this representation
+                        # can be trivially provided to the constructor of "java.awt.Color" in Java; it
+                        # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
+                        # method in iOS; and, with just a little work, it can be easily formatted into
+                        # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
+                        #
+                        # Example (Java):
+                        #
+                        #      import com.google.type.Color;
+                        #
+                        #      // ...
+                        #      public static java.awt.Color fromProto(Color protocolor) {
+                        #        float alpha = protocolor.hasAlpha()
+                        #            ? protocolor.getAlpha().getValue()
+                        #            : 1.0;
+                        #
+                        #        return new java.awt.Color(
+                        #            protocolor.getRed(),
+                        #            protocolor.getGreen(),
+                        #            protocolor.getBlue(),
+                        #            alpha);
+                        #      }
+                        #
+                        #      public static Color toProto(java.awt.Color color) {
+                        #        float red = (float) color.getRed();
+                        #        float green = (float) color.getGreen();
+                        #        float blue = (float) color.getBlue();
+                        #        float denominator = 255.0;
+                        #        Color.Builder resultBuilder =
+                        #            Color
+                        #                .newBuilder()
+                        #                .setRed(red / denominator)
+                        #                .setGreen(green / denominator)
+                        #                .setBlue(blue / denominator);
+                        #        int alpha = color.getAlpha();
+                        #        if (alpha != 255) {
+                        #          result.setAlpha(
+                        #              FloatValue
+                        #                  .newBuilder()
+                        #                  .setValue(((float) alpha) / denominator)
+                        #                  .build());
+                        #        }
+                        #        return resultBuilder.build();
+                        #      }
+                        #      // ...
+                        #
+                        # Example (iOS / Obj-C):
+                        #
+                        #      // ...
+                        #      static UIColor* fromProto(Color* protocolor) {
+                        #         float red = [protocolor red];
+                        #         float green = [protocolor green];
+                        #         float blue = [protocolor blue];
+                        #         FloatValue* alpha_wrapper = [protocolor alpha];
+                        #         float alpha = 1.0;
+                        #         if (alpha_wrapper != nil) {
+                        #           alpha = [alpha_wrapper value];
+                        #         }
+                        #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
+                        #      }
+                        #
+                        #      static Color* toProto(UIColor* color) {
+                        #          CGFloat red, green, blue, alpha;
+                        #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
+                        #            return nil;
+                        #          }
+                        #          Color* result = [Color alloc] init];
+                        #          [result setRed:red];
+                        #          [result setGreen:green];
+                        #          [result setBlue:blue];
+                        #          if (alpha <= 0.9999) {
+                        #            [result setAlpha:floatWrapperWithValue(alpha)];
+                        #          }
+                        #          [result autorelease];
+                        #          return result;
+                        #     }
+                        #     // ...
+                        #
+                        #  Example (JavaScript):
+                        #
+                        #     // ...
+                        #
+                        #     var protoToCssColor = function(rgb_color) {
+                        #        var redFrac = rgb_color.red || 0.0;
+                        #        var greenFrac = rgb_color.green || 0.0;
+                        #        var blueFrac = rgb_color.blue || 0.0;
+                        #        var red = Math.floor(redFrac * 255);
+                        #        var green = Math.floor(greenFrac * 255);
+                        #        var blue = Math.floor(blueFrac * 255);
+                        #
+                        #        if (!('alpha' in rgb_color)) {
+                        #           return rgbToCssColor_(red, green, blue);
+                        #        }
+                        #
+                        #        var alphaFrac = rgb_color.alpha.value || 0.0;
+                        #        var rgbParams = [red, green, blue].join(',');
+                        #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
+                        #     };
+                        #
+                        #     var rgbToCssColor_ = function(red, green, blue) {
+                        #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
+                        #       var hexString = rgbNumber.toString(16);
+                        #       var missingZeros = 6 - hexString.length;
+                        #       var resultBuilder = ['#'];
+                        #       for (var i = 0; i < missingZeros; i++) {
+                        #          resultBuilder.push('0');
+                        #       }
+                        #       resultBuilder.push(hexString);
+                        #       return resultBuilder.join('');
+                        #     };
+                        #
+                        #     // ...
+                      "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+                      "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
+                          # the final pixel color is defined by the equation:
                           #
-                          # Example (Java):
+                          #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
                           #
-                          #      import com.google.type.Color;
-                          #
-                          #      // ...
-                          #      public static java.awt.Color fromProto(Color protocolor) {
-                          #        float alpha = protocolor.hasAlpha()
-                          #            ? protocolor.getAlpha().getValue()
-                          #            : 1.0;
-                          #
-                          #        return new java.awt.Color(
-                          #            protocolor.getRed(),
-                          #            protocolor.getGreen(),
-                          #            protocolor.getBlue(),
-                          #            alpha);
-                          #      }
-                          #
-                          #      public static Color toProto(java.awt.Color color) {
-                          #        float red = (float) color.getRed();
-                          #        float green = (float) color.getGreen();
-                          #        float blue = (float) color.getBlue();
-                          #        float denominator = 255.0;
-                          #        Color.Builder resultBuilder =
-                          #            Color
-                          #                .newBuilder()
-                          #                .setRed(red / denominator)
-                          #                .setGreen(green / denominator)
-                          #                .setBlue(blue / denominator);
-                          #        int alpha = color.getAlpha();
-                          #        if (alpha != 255) {
-                          #          result.setAlpha(
-                          #              FloatValue
-                          #                  .newBuilder()
-                          #                  .setValue(((float) alpha) / denominator)
-                          #                  .build());
-                          #        }
-                          #        return resultBuilder.build();
-                          #      }
-                          #      // ...
-                          #
-                          # Example (iOS / Obj-C):
-                          #
-                          #      // ...
-                          #      static UIColor* fromProto(Color* protocolor) {
-                          #         float red = [protocolor red];
-                          #         float green = [protocolor green];
-                          #         float blue = [protocolor blue];
-                          #         FloatValue* alpha_wrapper = [protocolor alpha];
-                          #         float alpha = 1.0;
-                          #         if (alpha_wrapper != nil) {
-                          #           alpha = [alpha_wrapper value];
-                          #         }
-                          #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
-                          #      }
-                          #
-                          #      static Color* toProto(UIColor* color) {
-                          #          CGFloat red, green, blue, alpha;
-                          #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
-                          #            return nil;
-                          #          }
-                          #          Color* result = [Color alloc] init];
-                          #          [result setRed:red];
-                          #          [result setGreen:green];
-                          #          [result setBlue:blue];
-                          #          if (alpha <= 0.9999) {
-                          #            [result setAlpha:floatWrapperWithValue(alpha)];
-                          #          }
-                          #          [result autorelease];
-                          #          return result;
-                          #     }
-                          #     // ...
-                          #
-                          #  Example (JavaScript):
-                          #
-                          #     // ...
-                          #
-                          #     var protoToCssColor = function(rgb_color) {
-                          #        var redFrac = rgb_color.red || 0.0;
-                          #        var greenFrac = rgb_color.green || 0.0;
-                          #        var blueFrac = rgb_color.blue || 0.0;
-                          #        var red = Math.floor(redFrac * 255);
-                          #        var green = Math.floor(greenFrac * 255);
-                          #        var blue = Math.floor(blueFrac * 255);
-                          #
-                          #        if (!('alpha' in rgb_color)) {
-                          #           return rgbToCssColor_(red, green, blue);
-                          #        }
-                          #
-                          #        var alphaFrac = rgb_color.alpha.value || 0.0;
-                          #        var rgbParams = [red, green, blue].join(',');
-                          #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
-                          #     };
-                          #
-                          #     var rgbToCssColor_ = function(red, green, blue) {
-                          #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
-                          #       var hexString = rgbNumber.toString(16);
-                          #       var missingZeros = 6 - hexString.length;
-                          #       var resultBuilder = ['#'];
-                          #       for (var i = 0; i < missingZeros; i++) {
-                          #          resultBuilder.push('0');
-                          #       }
-                          #       resultBuilder.push(hexString);
-                          #       return resultBuilder.join('');
-                          #     };
-                          #
-                          #     // ...
-                        "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
-                        "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
-                            # the final pixel color is defined by the equation:
-                            #
-                            #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
-                            #
-                            # This means that a value of 1.0 corresponds to a solid color, whereas
-                            # a value of 0.0 corresponds to a completely transparent color. This
-                            # uses a wrapper message rather than a simple float scalar so that it is
-                            # possible to distinguish between a default value and the value being unset.
-                            # If omitted, this color object is to be rendered as a solid color
-                            # (as if the alpha value had been explicitly given with a value of 1.0).
-                        "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
-                        "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
-                      },
-                      "width": 42, # The width of the border, in pixels.
-                          # Deprecated; the width is determined by the "style" field.
-                      "style": "A String", # The style of the border.
+                          # This means that a value of 1.0 corresponds to a solid color, whereas
+                          # a value of 0.0 corresponds to a completely transparent color. This
+                          # uses a wrapper message rather than a simple float scalar so that it is
+                          # possible to distinguish between a default value and the value being unset.
+                          # If omitted, this color object is to be rendered as a solid color
+                          # (as if the alpha value had been explicitly given with a value of 1.0).
+                      "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
+                      "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
                     },
-                    "right": { # A border along a cell. # The right border of the cell.
-                      "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
-                          # for simplicity of conversion to/from color representations in various
-                          # languages over compactness; for example, the fields of this representation
-                          # can be trivially provided to the constructor of "java.awt.Color" in Java; it
-                          # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
-                          # method in iOS; and, with just a little work, it can be easily formatted into
-                          # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
+                    "width": 42, # The width of the border, in pixels.
+                        # Deprecated; the width is determined by the "style" field.
+                    "style": "A String", # The style of the border.
+                  },
+                  "bottom": { # A border along a cell. # The bottom border of the cell.
+                    "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
+                        # for simplicity of conversion to/from color representations in various
+                        # languages over compactness; for example, the fields of this representation
+                        # can be trivially provided to the constructor of "java.awt.Color" in Java; it
+                        # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
+                        # method in iOS; and, with just a little work, it can be easily formatted into
+                        # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
+                        #
+                        # Example (Java):
+                        #
+                        #      import com.google.type.Color;
+                        #
+                        #      // ...
+                        #      public static java.awt.Color fromProto(Color protocolor) {
+                        #        float alpha = protocolor.hasAlpha()
+                        #            ? protocolor.getAlpha().getValue()
+                        #            : 1.0;
+                        #
+                        #        return new java.awt.Color(
+                        #            protocolor.getRed(),
+                        #            protocolor.getGreen(),
+                        #            protocolor.getBlue(),
+                        #            alpha);
+                        #      }
+                        #
+                        #      public static Color toProto(java.awt.Color color) {
+                        #        float red = (float) color.getRed();
+                        #        float green = (float) color.getGreen();
+                        #        float blue = (float) color.getBlue();
+                        #        float denominator = 255.0;
+                        #        Color.Builder resultBuilder =
+                        #            Color
+                        #                .newBuilder()
+                        #                .setRed(red / denominator)
+                        #                .setGreen(green / denominator)
+                        #                .setBlue(blue / denominator);
+                        #        int alpha = color.getAlpha();
+                        #        if (alpha != 255) {
+                        #          result.setAlpha(
+                        #              FloatValue
+                        #                  .newBuilder()
+                        #                  .setValue(((float) alpha) / denominator)
+                        #                  .build());
+                        #        }
+                        #        return resultBuilder.build();
+                        #      }
+                        #      // ...
+                        #
+                        # Example (iOS / Obj-C):
+                        #
+                        #      // ...
+                        #      static UIColor* fromProto(Color* protocolor) {
+                        #         float red = [protocolor red];
+                        #         float green = [protocolor green];
+                        #         float blue = [protocolor blue];
+                        #         FloatValue* alpha_wrapper = [protocolor alpha];
+                        #         float alpha = 1.0;
+                        #         if (alpha_wrapper != nil) {
+                        #           alpha = [alpha_wrapper value];
+                        #         }
+                        #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
+                        #      }
+                        #
+                        #      static Color* toProto(UIColor* color) {
+                        #          CGFloat red, green, blue, alpha;
+                        #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
+                        #            return nil;
+                        #          }
+                        #          Color* result = [Color alloc] init];
+                        #          [result setRed:red];
+                        #          [result setGreen:green];
+                        #          [result setBlue:blue];
+                        #          if (alpha <= 0.9999) {
+                        #            [result setAlpha:floatWrapperWithValue(alpha)];
+                        #          }
+                        #          [result autorelease];
+                        #          return result;
+                        #     }
+                        #     // ...
+                        #
+                        #  Example (JavaScript):
+                        #
+                        #     // ...
+                        #
+                        #     var protoToCssColor = function(rgb_color) {
+                        #        var redFrac = rgb_color.red || 0.0;
+                        #        var greenFrac = rgb_color.green || 0.0;
+                        #        var blueFrac = rgb_color.blue || 0.0;
+                        #        var red = Math.floor(redFrac * 255);
+                        #        var green = Math.floor(greenFrac * 255);
+                        #        var blue = Math.floor(blueFrac * 255);
+                        #
+                        #        if (!('alpha' in rgb_color)) {
+                        #           return rgbToCssColor_(red, green, blue);
+                        #        }
+                        #
+                        #        var alphaFrac = rgb_color.alpha.value || 0.0;
+                        #        var rgbParams = [red, green, blue].join(',');
+                        #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
+                        #     };
+                        #
+                        #     var rgbToCssColor_ = function(red, green, blue) {
+                        #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
+                        #       var hexString = rgbNumber.toString(16);
+                        #       var missingZeros = 6 - hexString.length;
+                        #       var resultBuilder = ['#'];
+                        #       for (var i = 0; i < missingZeros; i++) {
+                        #          resultBuilder.push('0');
+                        #       }
+                        #       resultBuilder.push(hexString);
+                        #       return resultBuilder.join('');
+                        #     };
+                        #
+                        #     // ...
+                      "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+                      "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
+                          # the final pixel color is defined by the equation:
                           #
-                          # Example (Java):
+                          #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
                           #
-                          #      import com.google.type.Color;
-                          #
-                          #      // ...
-                          #      public static java.awt.Color fromProto(Color protocolor) {
-                          #        float alpha = protocolor.hasAlpha()
-                          #            ? protocolor.getAlpha().getValue()
-                          #            : 1.0;
-                          #
-                          #        return new java.awt.Color(
-                          #            protocolor.getRed(),
-                          #            protocolor.getGreen(),
-                          #            protocolor.getBlue(),
-                          #            alpha);
-                          #      }
-                          #
-                          #      public static Color toProto(java.awt.Color color) {
-                          #        float red = (float) color.getRed();
-                          #        float green = (float) color.getGreen();
-                          #        float blue = (float) color.getBlue();
-                          #        float denominator = 255.0;
-                          #        Color.Builder resultBuilder =
-                          #            Color
-                          #                .newBuilder()
-                          #                .setRed(red / denominator)
-                          #                .setGreen(green / denominator)
-                          #                .setBlue(blue / denominator);
-                          #        int alpha = color.getAlpha();
-                          #        if (alpha != 255) {
-                          #          result.setAlpha(
-                          #              FloatValue
-                          #                  .newBuilder()
-                          #                  .setValue(((float) alpha) / denominator)
-                          #                  .build());
-                          #        }
-                          #        return resultBuilder.build();
-                          #      }
-                          #      // ...
-                          #
-                          # Example (iOS / Obj-C):
-                          #
-                          #      // ...
-                          #      static UIColor* fromProto(Color* protocolor) {
-                          #         float red = [protocolor red];
-                          #         float green = [protocolor green];
-                          #         float blue = [protocolor blue];
-                          #         FloatValue* alpha_wrapper = [protocolor alpha];
-                          #         float alpha = 1.0;
-                          #         if (alpha_wrapper != nil) {
-                          #           alpha = [alpha_wrapper value];
-                          #         }
-                          #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
-                          #      }
-                          #
-                          #      static Color* toProto(UIColor* color) {
-                          #          CGFloat red, green, blue, alpha;
-                          #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
-                          #            return nil;
-                          #          }
-                          #          Color* result = [Color alloc] init];
-                          #          [result setRed:red];
-                          #          [result setGreen:green];
-                          #          [result setBlue:blue];
-                          #          if (alpha <= 0.9999) {
-                          #            [result setAlpha:floatWrapperWithValue(alpha)];
-                          #          }
-                          #          [result autorelease];
-                          #          return result;
-                          #     }
-                          #     // ...
-                          #
-                          #  Example (JavaScript):
-                          #
-                          #     // ...
-                          #
-                          #     var protoToCssColor = function(rgb_color) {
-                          #        var redFrac = rgb_color.red || 0.0;
-                          #        var greenFrac = rgb_color.green || 0.0;
-                          #        var blueFrac = rgb_color.blue || 0.0;
-                          #        var red = Math.floor(redFrac * 255);
-                          #        var green = Math.floor(greenFrac * 255);
-                          #        var blue = Math.floor(blueFrac * 255);
-                          #
-                          #        if (!('alpha' in rgb_color)) {
-                          #           return rgbToCssColor_(red, green, blue);
-                          #        }
-                          #
-                          #        var alphaFrac = rgb_color.alpha.value || 0.0;
-                          #        var rgbParams = [red, green, blue].join(',');
-                          #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
-                          #     };
-                          #
-                          #     var rgbToCssColor_ = function(red, green, blue) {
-                          #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
-                          #       var hexString = rgbNumber.toString(16);
-                          #       var missingZeros = 6 - hexString.length;
-                          #       var resultBuilder = ['#'];
-                          #       for (var i = 0; i < missingZeros; i++) {
-                          #          resultBuilder.push('0');
-                          #       }
-                          #       resultBuilder.push(hexString);
-                          #       return resultBuilder.join('');
-                          #     };
-                          #
-                          #     // ...
-                        "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
-                        "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
-                            # the final pixel color is defined by the equation:
-                            #
-                            #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
-                            #
-                            # This means that a value of 1.0 corresponds to a solid color, whereas
-                            # a value of 0.0 corresponds to a completely transparent color. This
-                            # uses a wrapper message rather than a simple float scalar so that it is
-                            # possible to distinguish between a default value and the value being unset.
-                            # If omitted, this color object is to be rendered as a solid color
-                            # (as if the alpha value had been explicitly given with a value of 1.0).
-                        "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
-                        "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
-                      },
-                      "width": 42, # The width of the border, in pixels.
-                          # Deprecated; the width is determined by the "style" field.
-                      "style": "A String", # The style of the border.
+                          # This means that a value of 1.0 corresponds to a solid color, whereas
+                          # a value of 0.0 corresponds to a completely transparent color. This
+                          # uses a wrapper message rather than a simple float scalar so that it is
+                          # possible to distinguish between a default value and the value being unset.
+                          # If omitted, this color object is to be rendered as a solid color
+                          # (as if the alpha value had been explicitly given with a value of 1.0).
+                      "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
+                      "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
                     },
-                    "bottom": { # A border along a cell. # The bottom border of the cell.
-                      "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
-                          # for simplicity of conversion to/from color representations in various
-                          # languages over compactness; for example, the fields of this representation
-                          # can be trivially provided to the constructor of "java.awt.Color" in Java; it
-                          # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
-                          # method in iOS; and, with just a little work, it can be easily formatted into
-                          # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
+                    "width": 42, # The width of the border, in pixels.
+                        # Deprecated; the width is determined by the "style" field.
+                    "style": "A String", # The style of the border.
+                  },
+                  "left": { # A border along a cell. # The left border of the cell.
+                    "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
+                        # for simplicity of conversion to/from color representations in various
+                        # languages over compactness; for example, the fields of this representation
+                        # can be trivially provided to the constructor of "java.awt.Color" in Java; it
+                        # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
+                        # method in iOS; and, with just a little work, it can be easily formatted into
+                        # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
+                        #
+                        # Example (Java):
+                        #
+                        #      import com.google.type.Color;
+                        #
+                        #      // ...
+                        #      public static java.awt.Color fromProto(Color protocolor) {
+                        #        float alpha = protocolor.hasAlpha()
+                        #            ? protocolor.getAlpha().getValue()
+                        #            : 1.0;
+                        #
+                        #        return new java.awt.Color(
+                        #            protocolor.getRed(),
+                        #            protocolor.getGreen(),
+                        #            protocolor.getBlue(),
+                        #            alpha);
+                        #      }
+                        #
+                        #      public static Color toProto(java.awt.Color color) {
+                        #        float red = (float) color.getRed();
+                        #        float green = (float) color.getGreen();
+                        #        float blue = (float) color.getBlue();
+                        #        float denominator = 255.0;
+                        #        Color.Builder resultBuilder =
+                        #            Color
+                        #                .newBuilder()
+                        #                .setRed(red / denominator)
+                        #                .setGreen(green / denominator)
+                        #                .setBlue(blue / denominator);
+                        #        int alpha = color.getAlpha();
+                        #        if (alpha != 255) {
+                        #          result.setAlpha(
+                        #              FloatValue
+                        #                  .newBuilder()
+                        #                  .setValue(((float) alpha) / denominator)
+                        #                  .build());
+                        #        }
+                        #        return resultBuilder.build();
+                        #      }
+                        #      // ...
+                        #
+                        # Example (iOS / Obj-C):
+                        #
+                        #      // ...
+                        #      static UIColor* fromProto(Color* protocolor) {
+                        #         float red = [protocolor red];
+                        #         float green = [protocolor green];
+                        #         float blue = [protocolor blue];
+                        #         FloatValue* alpha_wrapper = [protocolor alpha];
+                        #         float alpha = 1.0;
+                        #         if (alpha_wrapper != nil) {
+                        #           alpha = [alpha_wrapper value];
+                        #         }
+                        #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
+                        #      }
+                        #
+                        #      static Color* toProto(UIColor* color) {
+                        #          CGFloat red, green, blue, alpha;
+                        #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
+                        #            return nil;
+                        #          }
+                        #          Color* result = [Color alloc] init];
+                        #          [result setRed:red];
+                        #          [result setGreen:green];
+                        #          [result setBlue:blue];
+                        #          if (alpha <= 0.9999) {
+                        #            [result setAlpha:floatWrapperWithValue(alpha)];
+                        #          }
+                        #          [result autorelease];
+                        #          return result;
+                        #     }
+                        #     // ...
+                        #
+                        #  Example (JavaScript):
+                        #
+                        #     // ...
+                        #
+                        #     var protoToCssColor = function(rgb_color) {
+                        #        var redFrac = rgb_color.red || 0.0;
+                        #        var greenFrac = rgb_color.green || 0.0;
+                        #        var blueFrac = rgb_color.blue || 0.0;
+                        #        var red = Math.floor(redFrac * 255);
+                        #        var green = Math.floor(greenFrac * 255);
+                        #        var blue = Math.floor(blueFrac * 255);
+                        #
+                        #        if (!('alpha' in rgb_color)) {
+                        #           return rgbToCssColor_(red, green, blue);
+                        #        }
+                        #
+                        #        var alphaFrac = rgb_color.alpha.value || 0.0;
+                        #        var rgbParams = [red, green, blue].join(',');
+                        #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
+                        #     };
+                        #
+                        #     var rgbToCssColor_ = function(red, green, blue) {
+                        #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
+                        #       var hexString = rgbNumber.toString(16);
+                        #       var missingZeros = 6 - hexString.length;
+                        #       var resultBuilder = ['#'];
+                        #       for (var i = 0; i < missingZeros; i++) {
+                        #          resultBuilder.push('0');
+                        #       }
+                        #       resultBuilder.push(hexString);
+                        #       return resultBuilder.join('');
+                        #     };
+                        #
+                        #     // ...
+                      "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+                      "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
+                          # the final pixel color is defined by the equation:
                           #
-                          # Example (Java):
+                          #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
                           #
-                          #      import com.google.type.Color;
-                          #
-                          #      // ...
-                          #      public static java.awt.Color fromProto(Color protocolor) {
-                          #        float alpha = protocolor.hasAlpha()
-                          #            ? protocolor.getAlpha().getValue()
-                          #            : 1.0;
-                          #
-                          #        return new java.awt.Color(
-                          #            protocolor.getRed(),
-                          #            protocolor.getGreen(),
-                          #            protocolor.getBlue(),
-                          #            alpha);
-                          #      }
-                          #
-                          #      public static Color toProto(java.awt.Color color) {
-                          #        float red = (float) color.getRed();
-                          #        float green = (float) color.getGreen();
-                          #        float blue = (float) color.getBlue();
-                          #        float denominator = 255.0;
-                          #        Color.Builder resultBuilder =
-                          #            Color
-                          #                .newBuilder()
-                          #                .setRed(red / denominator)
-                          #                .setGreen(green / denominator)
-                          #                .setBlue(blue / denominator);
-                          #        int alpha = color.getAlpha();
-                          #        if (alpha != 255) {
-                          #          result.setAlpha(
-                          #              FloatValue
-                          #                  .newBuilder()
-                          #                  .setValue(((float) alpha) / denominator)
-                          #                  .build());
-                          #        }
-                          #        return resultBuilder.build();
-                          #      }
-                          #      // ...
-                          #
-                          # Example (iOS / Obj-C):
-                          #
-                          #      // ...
-                          #      static UIColor* fromProto(Color* protocolor) {
-                          #         float red = [protocolor red];
-                          #         float green = [protocolor green];
-                          #         float blue = [protocolor blue];
-                          #         FloatValue* alpha_wrapper = [protocolor alpha];
-                          #         float alpha = 1.0;
-                          #         if (alpha_wrapper != nil) {
-                          #           alpha = [alpha_wrapper value];
-                          #         }
-                          #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
-                          #      }
-                          #
-                          #      static Color* toProto(UIColor* color) {
-                          #          CGFloat red, green, blue, alpha;
-                          #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
-                          #            return nil;
-                          #          }
-                          #          Color* result = [Color alloc] init];
-                          #          [result setRed:red];
-                          #          [result setGreen:green];
-                          #          [result setBlue:blue];
-                          #          if (alpha <= 0.9999) {
-                          #            [result setAlpha:floatWrapperWithValue(alpha)];
-                          #          }
-                          #          [result autorelease];
-                          #          return result;
-                          #     }
-                          #     // ...
-                          #
-                          #  Example (JavaScript):
-                          #
-                          #     // ...
-                          #
-                          #     var protoToCssColor = function(rgb_color) {
-                          #        var redFrac = rgb_color.red || 0.0;
-                          #        var greenFrac = rgb_color.green || 0.0;
-                          #        var blueFrac = rgb_color.blue || 0.0;
-                          #        var red = Math.floor(redFrac * 255);
-                          #        var green = Math.floor(greenFrac * 255);
-                          #        var blue = Math.floor(blueFrac * 255);
-                          #
-                          #        if (!('alpha' in rgb_color)) {
-                          #           return rgbToCssColor_(red, green, blue);
-                          #        }
-                          #
-                          #        var alphaFrac = rgb_color.alpha.value || 0.0;
-                          #        var rgbParams = [red, green, blue].join(',');
-                          #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
-                          #     };
-                          #
-                          #     var rgbToCssColor_ = function(red, green, blue) {
-                          #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
-                          #       var hexString = rgbNumber.toString(16);
-                          #       var missingZeros = 6 - hexString.length;
-                          #       var resultBuilder = ['#'];
-                          #       for (var i = 0; i < missingZeros; i++) {
-                          #          resultBuilder.push('0');
-                          #       }
-                          #       resultBuilder.push(hexString);
-                          #       return resultBuilder.join('');
-                          #     };
-                          #
-                          #     // ...
-                        "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
-                        "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
-                            # the final pixel color is defined by the equation:
-                            #
-                            #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
-                            #
-                            # This means that a value of 1.0 corresponds to a solid color, whereas
-                            # a value of 0.0 corresponds to a completely transparent color. This
-                            # uses a wrapper message rather than a simple float scalar so that it is
-                            # possible to distinguish between a default value and the value being unset.
-                            # If omitted, this color object is to be rendered as a solid color
-                            # (as if the alpha value had been explicitly given with a value of 1.0).
-                        "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
-                        "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
-                      },
-                      "width": 42, # The width of the border, in pixels.
-                          # Deprecated; the width is determined by the "style" field.
-                      "style": "A String", # The style of the border.
+                          # This means that a value of 1.0 corresponds to a solid color, whereas
+                          # a value of 0.0 corresponds to a completely transparent color. This
+                          # uses a wrapper message rather than a simple float scalar so that it is
+                          # possible to distinguish between a default value and the value being unset.
+                          # If omitted, this color object is to be rendered as a solid color
+                          # (as if the alpha value had been explicitly given with a value of 1.0).
+                      "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
+                      "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
                     },
-                    "left": { # A border along a cell. # The left border of the cell.
-                      "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
-                          # for simplicity of conversion to/from color representations in various
-                          # languages over compactness; for example, the fields of this representation
-                          # can be trivially provided to the constructor of "java.awt.Color" in Java; it
-                          # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
-                          # method in iOS; and, with just a little work, it can be easily formatted into
-                          # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
-                          #
-                          # Example (Java):
-                          #
-                          #      import com.google.type.Color;
-                          #
-                          #      // ...
-                          #      public static java.awt.Color fromProto(Color protocolor) {
-                          #        float alpha = protocolor.hasAlpha()
-                          #            ? protocolor.getAlpha().getValue()
-                          #            : 1.0;
-                          #
-                          #        return new java.awt.Color(
-                          #            protocolor.getRed(),
-                          #            protocolor.getGreen(),
-                          #            protocolor.getBlue(),
-                          #            alpha);
-                          #      }
-                          #
-                          #      public static Color toProto(java.awt.Color color) {
-                          #        float red = (float) color.getRed();
-                          #        float green = (float) color.getGreen();
-                          #        float blue = (float) color.getBlue();
-                          #        float denominator = 255.0;
-                          #        Color.Builder resultBuilder =
-                          #            Color
-                          #                .newBuilder()
-                          #                .setRed(red / denominator)
-                          #                .setGreen(green / denominator)
-                          #                .setBlue(blue / denominator);
-                          #        int alpha = color.getAlpha();
-                          #        if (alpha != 255) {
-                          #          result.setAlpha(
-                          #              FloatValue
-                          #                  .newBuilder()
-                          #                  .setValue(((float) alpha) / denominator)
-                          #                  .build());
-                          #        }
-                          #        return resultBuilder.build();
-                          #      }
-                          #      // ...
-                          #
-                          # Example (iOS / Obj-C):
-                          #
-                          #      // ...
-                          #      static UIColor* fromProto(Color* protocolor) {
-                          #         float red = [protocolor red];
-                          #         float green = [protocolor green];
-                          #         float blue = [protocolor blue];
-                          #         FloatValue* alpha_wrapper = [protocolor alpha];
-                          #         float alpha = 1.0;
-                          #         if (alpha_wrapper != nil) {
-                          #           alpha = [alpha_wrapper value];
-                          #         }
-                          #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
-                          #      }
-                          #
-                          #      static Color* toProto(UIColor* color) {
-                          #          CGFloat red, green, blue, alpha;
-                          #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
-                          #            return nil;
-                          #          }
-                          #          Color* result = [Color alloc] init];
-                          #          [result setRed:red];
-                          #          [result setGreen:green];
-                          #          [result setBlue:blue];
-                          #          if (alpha <= 0.9999) {
-                          #            [result setAlpha:floatWrapperWithValue(alpha)];
-                          #          }
-                          #          [result autorelease];
-                          #          return result;
-                          #     }
-                          #     // ...
-                          #
-                          #  Example (JavaScript):
-                          #
-                          #     // ...
-                          #
-                          #     var protoToCssColor = function(rgb_color) {
-                          #        var redFrac = rgb_color.red || 0.0;
-                          #        var greenFrac = rgb_color.green || 0.0;
-                          #        var blueFrac = rgb_color.blue || 0.0;
-                          #        var red = Math.floor(redFrac * 255);
-                          #        var green = Math.floor(greenFrac * 255);
-                          #        var blue = Math.floor(blueFrac * 255);
-                          #
-                          #        if (!('alpha' in rgb_color)) {
-                          #           return rgbToCssColor_(red, green, blue);
-                          #        }
-                          #
-                          #        var alphaFrac = rgb_color.alpha.value || 0.0;
-                          #        var rgbParams = [red, green, blue].join(',');
-                          #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
-                          #     };
-                          #
-                          #     var rgbToCssColor_ = function(red, green, blue) {
-                          #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
-                          #       var hexString = rgbNumber.toString(16);
-                          #       var missingZeros = 6 - hexString.length;
-                          #       var resultBuilder = ['#'];
-                          #       for (var i = 0; i < missingZeros; i++) {
-                          #          resultBuilder.push('0');
-                          #       }
-                          #       resultBuilder.push(hexString);
-                          #       return resultBuilder.join('');
-                          #     };
-                          #
-                          #     // ...
-                        "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
-                        "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
-                            # the final pixel color is defined by the equation:
-                            #
-                            #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
-                            #
-                            # This means that a value of 1.0 corresponds to a solid color, whereas
-                            # a value of 0.0 corresponds to a completely transparent color. This
-                            # uses a wrapper message rather than a simple float scalar so that it is
-                            # possible to distinguish between a default value and the value being unset.
-                            # If omitted, this color object is to be rendered as a solid color
-                            # (as if the alpha value had been explicitly given with a value of 1.0).
-                        "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
-                        "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
-                      },
-                      "width": 42, # The width of the border, in pixels.
-                          # Deprecated; the width is determined by the "style" field.
-                      "style": "A String", # The style of the border.
-                    },
+                    "width": 42, # The width of the border, in pixels.
+                        # Deprecated; the width is determined by the "style" field.
+                    "style": "A String", # The style of the border.
                   },
-                  "wrapStrategy": "A String", # The wrap strategy for the value in the cell.
                 },
-              },
-              "gradientRule": { # A rule that applies a gradient color scale format, based on # The formatting will vary based on the gradients in the rule.
-                  # the interpolation points listed. The format of a cell will vary
-                  # based on its contents as compared to the values of the interpolation
-                  # points.
-                "maxpoint": { # A single interpolation point on a gradient conditional format. # The final interpolation point.
-                    # These pin the gradient color scale according to the color,
-                    # type and value chosen.
-                  "color": { # Represents a color in the RGBA color space. This representation is designed # The color this interpolation point should use.
-                      # for simplicity of conversion to/from color representations in various
-                      # languages over compactness; for example, the fields of this representation
-                      # can be trivially provided to the constructor of "java.awt.Color" in Java; it
-                      # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
-                      # method in iOS; and, with just a little work, it can be easily formatted into
-                      # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
-                      #
-                      # Example (Java):
-                      #
-                      #      import com.google.type.Color;
-                      #
-                      #      // ...
-                      #      public static java.awt.Color fromProto(Color protocolor) {
-                      #        float alpha = protocolor.hasAlpha()
-                      #            ? protocolor.getAlpha().getValue()
-                      #            : 1.0;
-                      #
-                      #        return new java.awt.Color(
-                      #            protocolor.getRed(),
-                      #            protocolor.getGreen(),
-                      #            protocolor.getBlue(),
-                      #            alpha);
-                      #      }
-                      #
-                      #      public static Color toProto(java.awt.Color color) {
-                      #        float red = (float) color.getRed();
-                      #        float green = (float) color.getGreen();
-                      #        float blue = (float) color.getBlue();
-                      #        float denominator = 255.0;
-                      #        Color.Builder resultBuilder =
-                      #            Color
-                      #                .newBuilder()
-                      #                .setRed(red / denominator)
-                      #                .setGreen(green / denominator)
-                      #                .setBlue(blue / denominator);
-                      #        int alpha = color.getAlpha();
-                      #        if (alpha != 255) {
-                      #          result.setAlpha(
-                      #              FloatValue
-                      #                  .newBuilder()
-                      #                  .setValue(((float) alpha) / denominator)
-                      #                  .build());
-                      #        }
-                      #        return resultBuilder.build();
-                      #      }
-                      #      // ...
-                      #
-                      # Example (iOS / Obj-C):
-                      #
-                      #      // ...
-                      #      static UIColor* fromProto(Color* protocolor) {
-                      #         float red = [protocolor red];
-                      #         float green = [protocolor green];
-                      #         float blue = [protocolor blue];
-                      #         FloatValue* alpha_wrapper = [protocolor alpha];
-                      #         float alpha = 1.0;
-                      #         if (alpha_wrapper != nil) {
-                      #           alpha = [alpha_wrapper value];
-                      #         }
-                      #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
-                      #      }
-                      #
-                      #      static Color* toProto(UIColor* color) {
-                      #          CGFloat red, green, blue, alpha;
-                      #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
-                      #            return nil;
-                      #          }
-                      #          Color* result = [Color alloc] init];
-                      #          [result setRed:red];
-                      #          [result setGreen:green];
-                      #          [result setBlue:blue];
-                      #          if (alpha <= 0.9999) {
-                      #            [result setAlpha:floatWrapperWithValue(alpha)];
-                      #          }
-                      #          [result autorelease];
-                      #          return result;
-                      #     }
-                      #     // ...
-                      #
-                      #  Example (JavaScript):
-                      #
-                      #     // ...
-                      #
-                      #     var protoToCssColor = function(rgb_color) {
-                      #        var redFrac = rgb_color.red || 0.0;
-                      #        var greenFrac = rgb_color.green || 0.0;
-                      #        var blueFrac = rgb_color.blue || 0.0;
-                      #        var red = Math.floor(redFrac * 255);
-                      #        var green = Math.floor(greenFrac * 255);
-                      #        var blue = Math.floor(blueFrac * 255);
-                      #
-                      #        if (!('alpha' in rgb_color)) {
-                      #           return rgbToCssColor_(red, green, blue);
-                      #        }
-                      #
-                      #        var alphaFrac = rgb_color.alpha.value || 0.0;
-                      #        var rgbParams = [red, green, blue].join(',');
-                      #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
-                      #     };
-                      #
-                      #     var rgbToCssColor_ = function(red, green, blue) {
-                      #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
-                      #       var hexString = rgbNumber.toString(16);
-                      #       var missingZeros = 6 - hexString.length;
-                      #       var resultBuilder = ['#'];
-                      #       for (var i = 0; i < missingZeros; i++) {
-                      #          resultBuilder.push('0');
-                      #       }
-                      #       resultBuilder.push(hexString);
-                      #       return resultBuilder.join('');
-                      #     };
-                      #
-                      #     // ...
-                    "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
-                    "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
-                        # the final pixel color is defined by the equation:
-                        #
-                        #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
-                        #
-                        # This means that a value of 1.0 corresponds to a solid color, whereas
-                        # a value of 0.0 corresponds to a completely transparent color. This
-                        # uses a wrapper message rather than a simple float scalar so that it is
-                        # possible to distinguish between a default value and the value being unset.
-                        # If omitted, this color object is to be rendered as a solid color
-                        # (as if the alpha value had been explicitly given with a value of 1.0).
-                    "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
-                    "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
-                  },
-                  "type": "A String", # How the value should be interpreted.
-                  "value": "A String", # The value this interpolation point uses.  May be a formula.
-                      # Unused if type is MIN or
-                      # MAX.
-                },
-                "midpoint": { # A single interpolation point on a gradient conditional format. # An optional midway interpolation point.
-                    # These pin the gradient color scale according to the color,
-                    # type and value chosen.
-                  "color": { # Represents a color in the RGBA color space. This representation is designed # The color this interpolation point should use.
-                      # for simplicity of conversion to/from color representations in various
-                      # languages over compactness; for example, the fields of this representation
-                      # can be trivially provided to the constructor of "java.awt.Color" in Java; it
-                      # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
-                      # method in iOS; and, with just a little work, it can be easily formatted into
-                      # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
-                      #
-                      # Example (Java):
-                      #
-                      #      import com.google.type.Color;
-                      #
-                      #      // ...
-                      #      public static java.awt.Color fromProto(Color protocolor) {
-                      #        float alpha = protocolor.hasAlpha()
-                      #            ? protocolor.getAlpha().getValue()
-                      #            : 1.0;
-                      #
-                      #        return new java.awt.Color(
-                      #            protocolor.getRed(),
-                      #            protocolor.getGreen(),
-                      #            protocolor.getBlue(),
-                      #            alpha);
-                      #      }
-                      #
-                      #      public static Color toProto(java.awt.Color color) {
-                      #        float red = (float) color.getRed();
-                      #        float green = (float) color.getGreen();
-                      #        float blue = (float) color.getBlue();
-                      #        float denominator = 255.0;
-                      #        Color.Builder resultBuilder =
-                      #            Color
-                      #                .newBuilder()
-                      #                .setRed(red / denominator)
-                      #                .setGreen(green / denominator)
-                      #                .setBlue(blue / denominator);
-                      #        int alpha = color.getAlpha();
-                      #        if (alpha != 255) {
-                      #          result.setAlpha(
-                      #              FloatValue
-                      #                  .newBuilder()
-                      #                  .setValue(((float) alpha) / denominator)
-                      #                  .build());
-                      #        }
-                      #        return resultBuilder.build();
-                      #      }
-                      #      // ...
-                      #
-                      # Example (iOS / Obj-C):
-                      #
-                      #      // ...
-                      #      static UIColor* fromProto(Color* protocolor) {
-                      #         float red = [protocolor red];
-                      #         float green = [protocolor green];
-                      #         float blue = [protocolor blue];
-                      #         FloatValue* alpha_wrapper = [protocolor alpha];
-                      #         float alpha = 1.0;
-                      #         if (alpha_wrapper != nil) {
-                      #           alpha = [alpha_wrapper value];
-                      #         }
-                      #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
-                      #      }
-                      #
-                      #      static Color* toProto(UIColor* color) {
-                      #          CGFloat red, green, blue, alpha;
-                      #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
-                      #            return nil;
-                      #          }
-                      #          Color* result = [Color alloc] init];
-                      #          [result setRed:red];
-                      #          [result setGreen:green];
-                      #          [result setBlue:blue];
-                      #          if (alpha <= 0.9999) {
-                      #            [result setAlpha:floatWrapperWithValue(alpha)];
-                      #          }
-                      #          [result autorelease];
-                      #          return result;
-                      #     }
-                      #     // ...
-                      #
-                      #  Example (JavaScript):
-                      #
-                      #     // ...
-                      #
-                      #     var protoToCssColor = function(rgb_color) {
-                      #        var redFrac = rgb_color.red || 0.0;
-                      #        var greenFrac = rgb_color.green || 0.0;
-                      #        var blueFrac = rgb_color.blue || 0.0;
-                      #        var red = Math.floor(redFrac * 255);
-                      #        var green = Math.floor(greenFrac * 255);
-                      #        var blue = Math.floor(blueFrac * 255);
-                      #
-                      #        if (!('alpha' in rgb_color)) {
-                      #           return rgbToCssColor_(red, green, blue);
-                      #        }
-                      #
-                      #        var alphaFrac = rgb_color.alpha.value || 0.0;
-                      #        var rgbParams = [red, green, blue].join(',');
-                      #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
-                      #     };
-                      #
-                      #     var rgbToCssColor_ = function(red, green, blue) {
-                      #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
-                      #       var hexString = rgbNumber.toString(16);
-                      #       var missingZeros = 6 - hexString.length;
-                      #       var resultBuilder = ['#'];
-                      #       for (var i = 0; i < missingZeros; i++) {
-                      #          resultBuilder.push('0');
-                      #       }
-                      #       resultBuilder.push(hexString);
-                      #       return resultBuilder.join('');
-                      #     };
-                      #
-                      #     // ...
-                    "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
-                    "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
-                        # the final pixel color is defined by the equation:
-                        #
-                        #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
-                        #
-                        # This means that a value of 1.0 corresponds to a solid color, whereas
-                        # a value of 0.0 corresponds to a completely transparent color. This
-                        # uses a wrapper message rather than a simple float scalar so that it is
-                        # possible to distinguish between a default value and the value being unset.
-                        # If omitted, this color object is to be rendered as a solid color
-                        # (as if the alpha value had been explicitly given with a value of 1.0).
-                    "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
-                    "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
-                  },
-                  "type": "A String", # How the value should be interpreted.
-                  "value": "A String", # The value this interpolation point uses.  May be a formula.
-                      # Unused if type is MIN or
-                      # MAX.
-                },
-                "minpoint": { # A single interpolation point on a gradient conditional format. # The starting interpolation point.
-                    # These pin the gradient color scale according to the color,
-                    # type and value chosen.
-                  "color": { # Represents a color in the RGBA color space. This representation is designed # The color this interpolation point should use.
-                      # for simplicity of conversion to/from color representations in various
-                      # languages over compactness; for example, the fields of this representation
-                      # can be trivially provided to the constructor of "java.awt.Color" in Java; it
-                      # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
-                      # method in iOS; and, with just a little work, it can be easily formatted into
-                      # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
-                      #
-                      # Example (Java):
-                      #
-                      #      import com.google.type.Color;
-                      #
-                      #      // ...
-                      #      public static java.awt.Color fromProto(Color protocolor) {
-                      #        float alpha = protocolor.hasAlpha()
-                      #            ? protocolor.getAlpha().getValue()
-                      #            : 1.0;
-                      #
-                      #        return new java.awt.Color(
-                      #            protocolor.getRed(),
-                      #            protocolor.getGreen(),
-                      #            protocolor.getBlue(),
-                      #            alpha);
-                      #      }
-                      #
-                      #      public static Color toProto(java.awt.Color color) {
-                      #        float red = (float) color.getRed();
-                      #        float green = (float) color.getGreen();
-                      #        float blue = (float) color.getBlue();
-                      #        float denominator = 255.0;
-                      #        Color.Builder resultBuilder =
-                      #            Color
-                      #                .newBuilder()
-                      #                .setRed(red / denominator)
-                      #                .setGreen(green / denominator)
-                      #                .setBlue(blue / denominator);
-                      #        int alpha = color.getAlpha();
-                      #        if (alpha != 255) {
-                      #          result.setAlpha(
-                      #              FloatValue
-                      #                  .newBuilder()
-                      #                  .setValue(((float) alpha) / denominator)
-                      #                  .build());
-                      #        }
-                      #        return resultBuilder.build();
-                      #      }
-                      #      // ...
-                      #
-                      # Example (iOS / Obj-C):
-                      #
-                      #      // ...
-                      #      static UIColor* fromProto(Color* protocolor) {
-                      #         float red = [protocolor red];
-                      #         float green = [protocolor green];
-                      #         float blue = [protocolor blue];
-                      #         FloatValue* alpha_wrapper = [protocolor alpha];
-                      #         float alpha = 1.0;
-                      #         if (alpha_wrapper != nil) {
-                      #           alpha = [alpha_wrapper value];
-                      #         }
-                      #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
-                      #      }
-                      #
-                      #      static Color* toProto(UIColor* color) {
-                      #          CGFloat red, green, blue, alpha;
-                      #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
-                      #            return nil;
-                      #          }
-                      #          Color* result = [Color alloc] init];
-                      #          [result setRed:red];
-                      #          [result setGreen:green];
-                      #          [result setBlue:blue];
-                      #          if (alpha <= 0.9999) {
-                      #            [result setAlpha:floatWrapperWithValue(alpha)];
-                      #          }
-                      #          [result autorelease];
-                      #          return result;
-                      #     }
-                      #     // ...
-                      #
-                      #  Example (JavaScript):
-                      #
-                      #     // ...
-                      #
-                      #     var protoToCssColor = function(rgb_color) {
-                      #        var redFrac = rgb_color.red || 0.0;
-                      #        var greenFrac = rgb_color.green || 0.0;
-                      #        var blueFrac = rgb_color.blue || 0.0;
-                      #        var red = Math.floor(redFrac * 255);
-                      #        var green = Math.floor(greenFrac * 255);
-                      #        var blue = Math.floor(blueFrac * 255);
-                      #
-                      #        if (!('alpha' in rgb_color)) {
-                      #           return rgbToCssColor_(red, green, blue);
-                      #        }
-                      #
-                      #        var alphaFrac = rgb_color.alpha.value || 0.0;
-                      #        var rgbParams = [red, green, blue].join(',');
-                      #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
-                      #     };
-                      #
-                      #     var rgbToCssColor_ = function(red, green, blue) {
-                      #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
-                      #       var hexString = rgbNumber.toString(16);
-                      #       var missingZeros = 6 - hexString.length;
-                      #       var resultBuilder = ['#'];
-                      #       for (var i = 0; i < missingZeros; i++) {
-                      #          resultBuilder.push('0');
-                      #       }
-                      #       resultBuilder.push(hexString);
-                      #       return resultBuilder.join('');
-                      #     };
-                      #
-                      #     // ...
-                    "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
-                    "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
-                        # the final pixel color is defined by the equation:
-                        #
-                        #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
-                        #
-                        # This means that a value of 1.0 corresponds to a solid color, whereas
-                        # a value of 0.0 corresponds to a completely transparent color. This
-                        # uses a wrapper message rather than a simple float scalar so that it is
-                        # possible to distinguish between a default value and the value being unset.
-                        # If omitted, this color object is to be rendered as a solid color
-                        # (as if the alpha value had been explicitly given with a value of 1.0).
-                    "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
-                    "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
-                  },
-                  "type": "A String", # How the value should be interpreted.
-                  "value": "A String", # The value this interpolation point uses.  May be a formula.
-                      # Unused if type is MIN or
-                      # MAX.
-                },
+                "wrapStrategy": "A String", # The wrap strategy for the value in the cell.
               },
             },
-          ],
-          "merges": [ # The ranges that are merged together.
-            { # A range on a sheet.
+            "gradientRule": { # A rule that applies a gradient color scale format, based on # The formatting will vary based on the gradients in the rule.
+                # the interpolation points listed. The format of a cell will vary
+                # based on its contents as compared to the values of the interpolation
+                # points.
+              "maxpoint": { # A single interpolation point on a gradient conditional format. # The final interpolation point.
+                  # These pin the gradient color scale according to the color,
+                  # type and value chosen.
+                "color": { # Represents a color in the RGBA color space. This representation is designed # The color this interpolation point should use.
+                    # for simplicity of conversion to/from color representations in various
+                    # languages over compactness; for example, the fields of this representation
+                    # can be trivially provided to the constructor of "java.awt.Color" in Java; it
+                    # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
+                    # method in iOS; and, with just a little work, it can be easily formatted into
+                    # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
+                    #
+                    # Example (Java):
+                    #
+                    #      import com.google.type.Color;
+                    #
+                    #      // ...
+                    #      public static java.awt.Color fromProto(Color protocolor) {
+                    #        float alpha = protocolor.hasAlpha()
+                    #            ? protocolor.getAlpha().getValue()
+                    #            : 1.0;
+                    #
+                    #        return new java.awt.Color(
+                    #            protocolor.getRed(),
+                    #            protocolor.getGreen(),
+                    #            protocolor.getBlue(),
+                    #            alpha);
+                    #      }
+                    #
+                    #      public static Color toProto(java.awt.Color color) {
+                    #        float red = (float) color.getRed();
+                    #        float green = (float) color.getGreen();
+                    #        float blue = (float) color.getBlue();
+                    #        float denominator = 255.0;
+                    #        Color.Builder resultBuilder =
+                    #            Color
+                    #                .newBuilder()
+                    #                .setRed(red / denominator)
+                    #                .setGreen(green / denominator)
+                    #                .setBlue(blue / denominator);
+                    #        int alpha = color.getAlpha();
+                    #        if (alpha != 255) {
+                    #          result.setAlpha(
+                    #              FloatValue
+                    #                  .newBuilder()
+                    #                  .setValue(((float) alpha) / denominator)
+                    #                  .build());
+                    #        }
+                    #        return resultBuilder.build();
+                    #      }
+                    #      // ...
+                    #
+                    # Example (iOS / Obj-C):
+                    #
+                    #      // ...
+                    #      static UIColor* fromProto(Color* protocolor) {
+                    #         float red = [protocolor red];
+                    #         float green = [protocolor green];
+                    #         float blue = [protocolor blue];
+                    #         FloatValue* alpha_wrapper = [protocolor alpha];
+                    #         float alpha = 1.0;
+                    #         if (alpha_wrapper != nil) {
+                    #           alpha = [alpha_wrapper value];
+                    #         }
+                    #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
+                    #      }
+                    #
+                    #      static Color* toProto(UIColor* color) {
+                    #          CGFloat red, green, blue, alpha;
+                    #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
+                    #            return nil;
+                    #          }
+                    #          Color* result = [Color alloc] init];
+                    #          [result setRed:red];
+                    #          [result setGreen:green];
+                    #          [result setBlue:blue];
+                    #          if (alpha <= 0.9999) {
+                    #            [result setAlpha:floatWrapperWithValue(alpha)];
+                    #          }
+                    #          [result autorelease];
+                    #          return result;
+                    #     }
+                    #     // ...
+                    #
+                    #  Example (JavaScript):
+                    #
+                    #     // ...
+                    #
+                    #     var protoToCssColor = function(rgb_color) {
+                    #        var redFrac = rgb_color.red || 0.0;
+                    #        var greenFrac = rgb_color.green || 0.0;
+                    #        var blueFrac = rgb_color.blue || 0.0;
+                    #        var red = Math.floor(redFrac * 255);
+                    #        var green = Math.floor(greenFrac * 255);
+                    #        var blue = Math.floor(blueFrac * 255);
+                    #
+                    #        if (!('alpha' in rgb_color)) {
+                    #           return rgbToCssColor_(red, green, blue);
+                    #        }
+                    #
+                    #        var alphaFrac = rgb_color.alpha.value || 0.0;
+                    #        var rgbParams = [red, green, blue].join(',');
+                    #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
+                    #     };
+                    #
+                    #     var rgbToCssColor_ = function(red, green, blue) {
+                    #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
+                    #       var hexString = rgbNumber.toString(16);
+                    #       var missingZeros = 6 - hexString.length;
+                    #       var resultBuilder = ['#'];
+                    #       for (var i = 0; i < missingZeros; i++) {
+                    #          resultBuilder.push('0');
+                    #       }
+                    #       resultBuilder.push(hexString);
+                    #       return resultBuilder.join('');
+                    #     };
+                    #
+                    #     // ...
+                  "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+                  "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
+                      # the final pixel color is defined by the equation:
+                      #
+                      #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
+                      #
+                      # This means that a value of 1.0 corresponds to a solid color, whereas
+                      # a value of 0.0 corresponds to a completely transparent color. This
+                      # uses a wrapper message rather than a simple float scalar so that it is
+                      # possible to distinguish between a default value and the value being unset.
+                      # If omitted, this color object is to be rendered as a solid color
+                      # (as if the alpha value had been explicitly given with a value of 1.0).
+                  "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
+                  "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
+                },
+                "type": "A String", # How the value should be interpreted.
+                "value": "A String", # The value this interpolation point uses.  May be a formula.
+                    # Unused if type is MIN or
+                    # MAX.
+              },
+              "midpoint": { # A single interpolation point on a gradient conditional format. # An optional midway interpolation point.
+                  # These pin the gradient color scale according to the color,
+                  # type and value chosen.
+                "color": { # Represents a color in the RGBA color space. This representation is designed # The color this interpolation point should use.
+                    # for simplicity of conversion to/from color representations in various
+                    # languages over compactness; for example, the fields of this representation
+                    # can be trivially provided to the constructor of "java.awt.Color" in Java; it
+                    # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
+                    # method in iOS; and, with just a little work, it can be easily formatted into
+                    # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
+                    #
+                    # Example (Java):
+                    #
+                    #      import com.google.type.Color;
+                    #
+                    #      // ...
+                    #      public static java.awt.Color fromProto(Color protocolor) {
+                    #        float alpha = protocolor.hasAlpha()
+                    #            ? protocolor.getAlpha().getValue()
+                    #            : 1.0;
+                    #
+                    #        return new java.awt.Color(
+                    #            protocolor.getRed(),
+                    #            protocolor.getGreen(),
+                    #            protocolor.getBlue(),
+                    #            alpha);
+                    #      }
+                    #
+                    #      public static Color toProto(java.awt.Color color) {
+                    #        float red = (float) color.getRed();
+                    #        float green = (float) color.getGreen();
+                    #        float blue = (float) color.getBlue();
+                    #        float denominator = 255.0;
+                    #        Color.Builder resultBuilder =
+                    #            Color
+                    #                .newBuilder()
+                    #                .setRed(red / denominator)
+                    #                .setGreen(green / denominator)
+                    #                .setBlue(blue / denominator);
+                    #        int alpha = color.getAlpha();
+                    #        if (alpha != 255) {
+                    #          result.setAlpha(
+                    #              FloatValue
+                    #                  .newBuilder()
+                    #                  .setValue(((float) alpha) / denominator)
+                    #                  .build());
+                    #        }
+                    #        return resultBuilder.build();
+                    #      }
+                    #      // ...
+                    #
+                    # Example (iOS / Obj-C):
+                    #
+                    #      // ...
+                    #      static UIColor* fromProto(Color* protocolor) {
+                    #         float red = [protocolor red];
+                    #         float green = [protocolor green];
+                    #         float blue = [protocolor blue];
+                    #         FloatValue* alpha_wrapper = [protocolor alpha];
+                    #         float alpha = 1.0;
+                    #         if (alpha_wrapper != nil) {
+                    #           alpha = [alpha_wrapper value];
+                    #         }
+                    #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
+                    #      }
+                    #
+                    #      static Color* toProto(UIColor* color) {
+                    #          CGFloat red, green, blue, alpha;
+                    #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
+                    #            return nil;
+                    #          }
+                    #          Color* result = [Color alloc] init];
+                    #          [result setRed:red];
+                    #          [result setGreen:green];
+                    #          [result setBlue:blue];
+                    #          if (alpha <= 0.9999) {
+                    #            [result setAlpha:floatWrapperWithValue(alpha)];
+                    #          }
+                    #          [result autorelease];
+                    #          return result;
+                    #     }
+                    #     // ...
+                    #
+                    #  Example (JavaScript):
+                    #
+                    #     // ...
+                    #
+                    #     var protoToCssColor = function(rgb_color) {
+                    #        var redFrac = rgb_color.red || 0.0;
+                    #        var greenFrac = rgb_color.green || 0.0;
+                    #        var blueFrac = rgb_color.blue || 0.0;
+                    #        var red = Math.floor(redFrac * 255);
+                    #        var green = Math.floor(greenFrac * 255);
+                    #        var blue = Math.floor(blueFrac * 255);
+                    #
+                    #        if (!('alpha' in rgb_color)) {
+                    #           return rgbToCssColor_(red, green, blue);
+                    #        }
+                    #
+                    #        var alphaFrac = rgb_color.alpha.value || 0.0;
+                    #        var rgbParams = [red, green, blue].join(',');
+                    #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
+                    #     };
+                    #
+                    #     var rgbToCssColor_ = function(red, green, blue) {
+                    #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
+                    #       var hexString = rgbNumber.toString(16);
+                    #       var missingZeros = 6 - hexString.length;
+                    #       var resultBuilder = ['#'];
+                    #       for (var i = 0; i < missingZeros; i++) {
+                    #          resultBuilder.push('0');
+                    #       }
+                    #       resultBuilder.push(hexString);
+                    #       return resultBuilder.join('');
+                    #     };
+                    #
+                    #     // ...
+                  "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+                  "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
+                      # the final pixel color is defined by the equation:
+                      #
+                      #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
+                      #
+                      # This means that a value of 1.0 corresponds to a solid color, whereas
+                      # a value of 0.0 corresponds to a completely transparent color. This
+                      # uses a wrapper message rather than a simple float scalar so that it is
+                      # possible to distinguish between a default value and the value being unset.
+                      # If omitted, this color object is to be rendered as a solid color
+                      # (as if the alpha value had been explicitly given with a value of 1.0).
+                  "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
+                  "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
+                },
+                "type": "A String", # How the value should be interpreted.
+                "value": "A String", # The value this interpolation point uses.  May be a formula.
+                    # Unused if type is MIN or
+                    # MAX.
+              },
+              "minpoint": { # A single interpolation point on a gradient conditional format. # The starting interpolation point.
+                  # These pin the gradient color scale according to the color,
+                  # type and value chosen.
+                "color": { # Represents a color in the RGBA color space. This representation is designed # The color this interpolation point should use.
+                    # for simplicity of conversion to/from color representations in various
+                    # languages over compactness; for example, the fields of this representation
+                    # can be trivially provided to the constructor of "java.awt.Color" in Java; it
+                    # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
+                    # method in iOS; and, with just a little work, it can be easily formatted into
+                    # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
+                    #
+                    # Example (Java):
+                    #
+                    #      import com.google.type.Color;
+                    #
+                    #      // ...
+                    #      public static java.awt.Color fromProto(Color protocolor) {
+                    #        float alpha = protocolor.hasAlpha()
+                    #            ? protocolor.getAlpha().getValue()
+                    #            : 1.0;
+                    #
+                    #        return new java.awt.Color(
+                    #            protocolor.getRed(),
+                    #            protocolor.getGreen(),
+                    #            protocolor.getBlue(),
+                    #            alpha);
+                    #      }
+                    #
+                    #      public static Color toProto(java.awt.Color color) {
+                    #        float red = (float) color.getRed();
+                    #        float green = (float) color.getGreen();
+                    #        float blue = (float) color.getBlue();
+                    #        float denominator = 255.0;
+                    #        Color.Builder resultBuilder =
+                    #            Color
+                    #                .newBuilder()
+                    #                .setRed(red / denominator)
+                    #                .setGreen(green / denominator)
+                    #                .setBlue(blue / denominator);
+                    #        int alpha = color.getAlpha();
+                    #        if (alpha != 255) {
+                    #          result.setAlpha(
+                    #              FloatValue
+                    #                  .newBuilder()
+                    #                  .setValue(((float) alpha) / denominator)
+                    #                  .build());
+                    #        }
+                    #        return resultBuilder.build();
+                    #      }
+                    #      // ...
+                    #
+                    # Example (iOS / Obj-C):
+                    #
+                    #      // ...
+                    #      static UIColor* fromProto(Color* protocolor) {
+                    #         float red = [protocolor red];
+                    #         float green = [protocolor green];
+                    #         float blue = [protocolor blue];
+                    #         FloatValue* alpha_wrapper = [protocolor alpha];
+                    #         float alpha = 1.0;
+                    #         if (alpha_wrapper != nil) {
+                    #           alpha = [alpha_wrapper value];
+                    #         }
+                    #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
+                    #      }
+                    #
+                    #      static Color* toProto(UIColor* color) {
+                    #          CGFloat red, green, blue, alpha;
+                    #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
+                    #            return nil;
+                    #          }
+                    #          Color* result = [Color alloc] init];
+                    #          [result setRed:red];
+                    #          [result setGreen:green];
+                    #          [result setBlue:blue];
+                    #          if (alpha <= 0.9999) {
+                    #            [result setAlpha:floatWrapperWithValue(alpha)];
+                    #          }
+                    #          [result autorelease];
+                    #          return result;
+                    #     }
+                    #     // ...
+                    #
+                    #  Example (JavaScript):
+                    #
+                    #     // ...
+                    #
+                    #     var protoToCssColor = function(rgb_color) {
+                    #        var redFrac = rgb_color.red || 0.0;
+                    #        var greenFrac = rgb_color.green || 0.0;
+                    #        var blueFrac = rgb_color.blue || 0.0;
+                    #        var red = Math.floor(redFrac * 255);
+                    #        var green = Math.floor(greenFrac * 255);
+                    #        var blue = Math.floor(blueFrac * 255);
+                    #
+                    #        if (!('alpha' in rgb_color)) {
+                    #           return rgbToCssColor_(red, green, blue);
+                    #        }
+                    #
+                    #        var alphaFrac = rgb_color.alpha.value || 0.0;
+                    #        var rgbParams = [red, green, blue].join(',');
+                    #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
+                    #     };
+                    #
+                    #     var rgbToCssColor_ = function(red, green, blue) {
+                    #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
+                    #       var hexString = rgbNumber.toString(16);
+                    #       var missingZeros = 6 - hexString.length;
+                    #       var resultBuilder = ['#'];
+                    #       for (var i = 0; i < missingZeros; i++) {
+                    #          resultBuilder.push('0');
+                    #       }
+                    #       resultBuilder.push(hexString);
+                    #       return resultBuilder.join('');
+                    #     };
+                    #
+                    #     // ...
+                  "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+                  "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
+                      # the final pixel color is defined by the equation:
+                      #
+                      #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
+                      #
+                      # This means that a value of 1.0 corresponds to a solid color, whereas
+                      # a value of 0.0 corresponds to a completely transparent color. This
+                      # uses a wrapper message rather than a simple float scalar so that it is
+                      # possible to distinguish between a default value and the value being unset.
+                      # If omitted, this color object is to be rendered as a solid color
+                      # (as if the alpha value had been explicitly given with a value of 1.0).
+                  "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
+                  "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
+                },
+                "type": "A String", # How the value should be interpreted.
+                "value": "A String", # The value this interpolation point uses.  May be a formula.
+                    # Unused if type is MIN or
+                    # MAX.
+              },
+            },
+          },
+        ],
+        "bandedRanges": [ # The banded (i.e. alternating colors) ranges on this sheet.
+          { # A banded (alternating colors) range in a sheet.
+            "range": { # A range on a sheet. # The range over which these properties are applied.
                 # All indexes are zero-based.
                 # Indexes are half open, e.g the start index is inclusive
                 # and the end index is exclusive -- [start_index, end_index).
@@ -31341,9 +43408,1667 @@
               "startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
               "endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
             },
+            "columnProperties": { # Properties referring a single dimension (either row or column). If both # Properties for column bands. These properties will be applied on a column-
+                # by-column basis throughout all the columns in the range. At least one of
+                # row_properties or column_properties must be specified.
+                # BandedRange.row_properties and BandedRange.column_properties are
+                # set, the fill colors are applied to cells according to the following rules:
+                #
+                # * header_color and footer_color take priority over band colors.
+                # * first_band_color takes priority over second_band_color.
+                # * row_properties takes priority over column_properties.
+                #
+                # For example, the first row color takes priority over the first column
+                # color, but the first column color takes priority over the second row color.
+                # Similarly, the row header takes priority over the column header in the
+                # top left cell, but the column header takes priority over the first row
+                # color if the row header is not set.
+              "secondBandColor": { # Represents a color in the RGBA color space. This representation is designed # The second color that is alternating. (Required)
+                  # for simplicity of conversion to/from color representations in various
+                  # languages over compactness; for example, the fields of this representation
+                  # can be trivially provided to the constructor of "java.awt.Color" in Java; it
+                  # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
+                  # method in iOS; and, with just a little work, it can be easily formatted into
+                  # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
+                  #
+                  # Example (Java):
+                  #
+                  #      import com.google.type.Color;
+                  #
+                  #      // ...
+                  #      public static java.awt.Color fromProto(Color protocolor) {
+                  #        float alpha = protocolor.hasAlpha()
+                  #            ? protocolor.getAlpha().getValue()
+                  #            : 1.0;
+                  #
+                  #        return new java.awt.Color(
+                  #            protocolor.getRed(),
+                  #            protocolor.getGreen(),
+                  #            protocolor.getBlue(),
+                  #            alpha);
+                  #      }
+                  #
+                  #      public static Color toProto(java.awt.Color color) {
+                  #        float red = (float) color.getRed();
+                  #        float green = (float) color.getGreen();
+                  #        float blue = (float) color.getBlue();
+                  #        float denominator = 255.0;
+                  #        Color.Builder resultBuilder =
+                  #            Color
+                  #                .newBuilder()
+                  #                .setRed(red / denominator)
+                  #                .setGreen(green / denominator)
+                  #                .setBlue(blue / denominator);
+                  #        int alpha = color.getAlpha();
+                  #        if (alpha != 255) {
+                  #          result.setAlpha(
+                  #              FloatValue
+                  #                  .newBuilder()
+                  #                  .setValue(((float) alpha) / denominator)
+                  #                  .build());
+                  #        }
+                  #        return resultBuilder.build();
+                  #      }
+                  #      // ...
+                  #
+                  # Example (iOS / Obj-C):
+                  #
+                  #      // ...
+                  #      static UIColor* fromProto(Color* protocolor) {
+                  #         float red = [protocolor red];
+                  #         float green = [protocolor green];
+                  #         float blue = [protocolor blue];
+                  #         FloatValue* alpha_wrapper = [protocolor alpha];
+                  #         float alpha = 1.0;
+                  #         if (alpha_wrapper != nil) {
+                  #           alpha = [alpha_wrapper value];
+                  #         }
+                  #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
+                  #      }
+                  #
+                  #      static Color* toProto(UIColor* color) {
+                  #          CGFloat red, green, blue, alpha;
+                  #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
+                  #            return nil;
+                  #          }
+                  #          Color* result = [Color alloc] init];
+                  #          [result setRed:red];
+                  #          [result setGreen:green];
+                  #          [result setBlue:blue];
+                  #          if (alpha <= 0.9999) {
+                  #            [result setAlpha:floatWrapperWithValue(alpha)];
+                  #          }
+                  #          [result autorelease];
+                  #          return result;
+                  #     }
+                  #     // ...
+                  #
+                  #  Example (JavaScript):
+                  #
+                  #     // ...
+                  #
+                  #     var protoToCssColor = function(rgb_color) {
+                  #        var redFrac = rgb_color.red || 0.0;
+                  #        var greenFrac = rgb_color.green || 0.0;
+                  #        var blueFrac = rgb_color.blue || 0.0;
+                  #        var red = Math.floor(redFrac * 255);
+                  #        var green = Math.floor(greenFrac * 255);
+                  #        var blue = Math.floor(blueFrac * 255);
+                  #
+                  #        if (!('alpha' in rgb_color)) {
+                  #           return rgbToCssColor_(red, green, blue);
+                  #        }
+                  #
+                  #        var alphaFrac = rgb_color.alpha.value || 0.0;
+                  #        var rgbParams = [red, green, blue].join(',');
+                  #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
+                  #     };
+                  #
+                  #     var rgbToCssColor_ = function(red, green, blue) {
+                  #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
+                  #       var hexString = rgbNumber.toString(16);
+                  #       var missingZeros = 6 - hexString.length;
+                  #       var resultBuilder = ['#'];
+                  #       for (var i = 0; i < missingZeros; i++) {
+                  #          resultBuilder.push('0');
+                  #       }
+                  #       resultBuilder.push(hexString);
+                  #       return resultBuilder.join('');
+                  #     };
+                  #
+                  #     // ...
+                "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+                "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
+                    # the final pixel color is defined by the equation:
+                    #
+                    #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
+                    #
+                    # This means that a value of 1.0 corresponds to a solid color, whereas
+                    # a value of 0.0 corresponds to a completely transparent color. This
+                    # uses a wrapper message rather than a simple float scalar so that it is
+                    # possible to distinguish between a default value and the value being unset.
+                    # If omitted, this color object is to be rendered as a solid color
+                    # (as if the alpha value had been explicitly given with a value of 1.0).
+                "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
+                "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
+              },
+              "headerColor": { # Represents a color in the RGBA color space. This representation is designed # The color of the first row or column. If this field is set, the first
+                  # row or column will be filled with this color and the colors will
+                  # alternate between first_band_color and second_band_color starting
+                  # from the second row or column. Otherwise, the first row or column will be
+                  # filled with first_band_color and the colors will proceed to alternate
+                  # as they normally would.
+                  # for simplicity of conversion to/from color representations in various
+                  # languages over compactness; for example, the fields of this representation
+                  # can be trivially provided to the constructor of "java.awt.Color" in Java; it
+                  # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
+                  # method in iOS; and, with just a little work, it can be easily formatted into
+                  # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
+                  #
+                  # Example (Java):
+                  #
+                  #      import com.google.type.Color;
+                  #
+                  #      // ...
+                  #      public static java.awt.Color fromProto(Color protocolor) {
+                  #        float alpha = protocolor.hasAlpha()
+                  #            ? protocolor.getAlpha().getValue()
+                  #            : 1.0;
+                  #
+                  #        return new java.awt.Color(
+                  #            protocolor.getRed(),
+                  #            protocolor.getGreen(),
+                  #            protocolor.getBlue(),
+                  #            alpha);
+                  #      }
+                  #
+                  #      public static Color toProto(java.awt.Color color) {
+                  #        float red = (float) color.getRed();
+                  #        float green = (float) color.getGreen();
+                  #        float blue = (float) color.getBlue();
+                  #        float denominator = 255.0;
+                  #        Color.Builder resultBuilder =
+                  #            Color
+                  #                .newBuilder()
+                  #                .setRed(red / denominator)
+                  #                .setGreen(green / denominator)
+                  #                .setBlue(blue / denominator);
+                  #        int alpha = color.getAlpha();
+                  #        if (alpha != 255) {
+                  #          result.setAlpha(
+                  #              FloatValue
+                  #                  .newBuilder()
+                  #                  .setValue(((float) alpha) / denominator)
+                  #                  .build());
+                  #        }
+                  #        return resultBuilder.build();
+                  #      }
+                  #      // ...
+                  #
+                  # Example (iOS / Obj-C):
+                  #
+                  #      // ...
+                  #      static UIColor* fromProto(Color* protocolor) {
+                  #         float red = [protocolor red];
+                  #         float green = [protocolor green];
+                  #         float blue = [protocolor blue];
+                  #         FloatValue* alpha_wrapper = [protocolor alpha];
+                  #         float alpha = 1.0;
+                  #         if (alpha_wrapper != nil) {
+                  #           alpha = [alpha_wrapper value];
+                  #         }
+                  #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
+                  #      }
+                  #
+                  #      static Color* toProto(UIColor* color) {
+                  #          CGFloat red, green, blue, alpha;
+                  #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
+                  #            return nil;
+                  #          }
+                  #          Color* result = [Color alloc] init];
+                  #          [result setRed:red];
+                  #          [result setGreen:green];
+                  #          [result setBlue:blue];
+                  #          if (alpha <= 0.9999) {
+                  #            [result setAlpha:floatWrapperWithValue(alpha)];
+                  #          }
+                  #          [result autorelease];
+                  #          return result;
+                  #     }
+                  #     // ...
+                  #
+                  #  Example (JavaScript):
+                  #
+                  #     // ...
+                  #
+                  #     var protoToCssColor = function(rgb_color) {
+                  #        var redFrac = rgb_color.red || 0.0;
+                  #        var greenFrac = rgb_color.green || 0.0;
+                  #        var blueFrac = rgb_color.blue || 0.0;
+                  #        var red = Math.floor(redFrac * 255);
+                  #        var green = Math.floor(greenFrac * 255);
+                  #        var blue = Math.floor(blueFrac * 255);
+                  #
+                  #        if (!('alpha' in rgb_color)) {
+                  #           return rgbToCssColor_(red, green, blue);
+                  #        }
+                  #
+                  #        var alphaFrac = rgb_color.alpha.value || 0.0;
+                  #        var rgbParams = [red, green, blue].join(',');
+                  #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
+                  #     };
+                  #
+                  #     var rgbToCssColor_ = function(red, green, blue) {
+                  #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
+                  #       var hexString = rgbNumber.toString(16);
+                  #       var missingZeros = 6 - hexString.length;
+                  #       var resultBuilder = ['#'];
+                  #       for (var i = 0; i < missingZeros; i++) {
+                  #          resultBuilder.push('0');
+                  #       }
+                  #       resultBuilder.push(hexString);
+                  #       return resultBuilder.join('');
+                  #     };
+                  #
+                  #     // ...
+                "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+                "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
+                    # the final pixel color is defined by the equation:
+                    #
+                    #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
+                    #
+                    # This means that a value of 1.0 corresponds to a solid color, whereas
+                    # a value of 0.0 corresponds to a completely transparent color. This
+                    # uses a wrapper message rather than a simple float scalar so that it is
+                    # possible to distinguish between a default value and the value being unset.
+                    # If omitted, this color object is to be rendered as a solid color
+                    # (as if the alpha value had been explicitly given with a value of 1.0).
+                "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
+                "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
+              },
+              "footerColor": { # Represents a color in the RGBA color space. This representation is designed # The color of the last row or column. If this field is not set, the last
+                  # row or column will be filled with either first_band_color or
+                  # second_band_color, depending on the color of the previous row or
+                  # column.
+                  # for simplicity of conversion to/from color representations in various
+                  # languages over compactness; for example, the fields of this representation
+                  # can be trivially provided to the constructor of "java.awt.Color" in Java; it
+                  # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
+                  # method in iOS; and, with just a little work, it can be easily formatted into
+                  # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
+                  #
+                  # Example (Java):
+                  #
+                  #      import com.google.type.Color;
+                  #
+                  #      // ...
+                  #      public static java.awt.Color fromProto(Color protocolor) {
+                  #        float alpha = protocolor.hasAlpha()
+                  #            ? protocolor.getAlpha().getValue()
+                  #            : 1.0;
+                  #
+                  #        return new java.awt.Color(
+                  #            protocolor.getRed(),
+                  #            protocolor.getGreen(),
+                  #            protocolor.getBlue(),
+                  #            alpha);
+                  #      }
+                  #
+                  #      public static Color toProto(java.awt.Color color) {
+                  #        float red = (float) color.getRed();
+                  #        float green = (float) color.getGreen();
+                  #        float blue = (float) color.getBlue();
+                  #        float denominator = 255.0;
+                  #        Color.Builder resultBuilder =
+                  #            Color
+                  #                .newBuilder()
+                  #                .setRed(red / denominator)
+                  #                .setGreen(green / denominator)
+                  #                .setBlue(blue / denominator);
+                  #        int alpha = color.getAlpha();
+                  #        if (alpha != 255) {
+                  #          result.setAlpha(
+                  #              FloatValue
+                  #                  .newBuilder()
+                  #                  .setValue(((float) alpha) / denominator)
+                  #                  .build());
+                  #        }
+                  #        return resultBuilder.build();
+                  #      }
+                  #      // ...
+                  #
+                  # Example (iOS / Obj-C):
+                  #
+                  #      // ...
+                  #      static UIColor* fromProto(Color* protocolor) {
+                  #         float red = [protocolor red];
+                  #         float green = [protocolor green];
+                  #         float blue = [protocolor blue];
+                  #         FloatValue* alpha_wrapper = [protocolor alpha];
+                  #         float alpha = 1.0;
+                  #         if (alpha_wrapper != nil) {
+                  #           alpha = [alpha_wrapper value];
+                  #         }
+                  #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
+                  #      }
+                  #
+                  #      static Color* toProto(UIColor* color) {
+                  #          CGFloat red, green, blue, alpha;
+                  #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
+                  #            return nil;
+                  #          }
+                  #          Color* result = [Color alloc] init];
+                  #          [result setRed:red];
+                  #          [result setGreen:green];
+                  #          [result setBlue:blue];
+                  #          if (alpha <= 0.9999) {
+                  #            [result setAlpha:floatWrapperWithValue(alpha)];
+                  #          }
+                  #          [result autorelease];
+                  #          return result;
+                  #     }
+                  #     // ...
+                  #
+                  #  Example (JavaScript):
+                  #
+                  #     // ...
+                  #
+                  #     var protoToCssColor = function(rgb_color) {
+                  #        var redFrac = rgb_color.red || 0.0;
+                  #        var greenFrac = rgb_color.green || 0.0;
+                  #        var blueFrac = rgb_color.blue || 0.0;
+                  #        var red = Math.floor(redFrac * 255);
+                  #        var green = Math.floor(greenFrac * 255);
+                  #        var blue = Math.floor(blueFrac * 255);
+                  #
+                  #        if (!('alpha' in rgb_color)) {
+                  #           return rgbToCssColor_(red, green, blue);
+                  #        }
+                  #
+                  #        var alphaFrac = rgb_color.alpha.value || 0.0;
+                  #        var rgbParams = [red, green, blue].join(',');
+                  #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
+                  #     };
+                  #
+                  #     var rgbToCssColor_ = function(red, green, blue) {
+                  #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
+                  #       var hexString = rgbNumber.toString(16);
+                  #       var missingZeros = 6 - hexString.length;
+                  #       var resultBuilder = ['#'];
+                  #       for (var i = 0; i < missingZeros; i++) {
+                  #          resultBuilder.push('0');
+                  #       }
+                  #       resultBuilder.push(hexString);
+                  #       return resultBuilder.join('');
+                  #     };
+                  #
+                  #     // ...
+                "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+                "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
+                    # the final pixel color is defined by the equation:
+                    #
+                    #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
+                    #
+                    # This means that a value of 1.0 corresponds to a solid color, whereas
+                    # a value of 0.0 corresponds to a completely transparent color. This
+                    # uses a wrapper message rather than a simple float scalar so that it is
+                    # possible to distinguish between a default value and the value being unset.
+                    # If omitted, this color object is to be rendered as a solid color
+                    # (as if the alpha value had been explicitly given with a value of 1.0).
+                "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
+                "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
+              },
+              "firstBandColor": { # Represents a color in the RGBA color space. This representation is designed # The first color that is alternating. (Required)
+                  # for simplicity of conversion to/from color representations in various
+                  # languages over compactness; for example, the fields of this representation
+                  # can be trivially provided to the constructor of "java.awt.Color" in Java; it
+                  # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
+                  # method in iOS; and, with just a little work, it can be easily formatted into
+                  # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
+                  #
+                  # Example (Java):
+                  #
+                  #      import com.google.type.Color;
+                  #
+                  #      // ...
+                  #      public static java.awt.Color fromProto(Color protocolor) {
+                  #        float alpha = protocolor.hasAlpha()
+                  #            ? protocolor.getAlpha().getValue()
+                  #            : 1.0;
+                  #
+                  #        return new java.awt.Color(
+                  #            protocolor.getRed(),
+                  #            protocolor.getGreen(),
+                  #            protocolor.getBlue(),
+                  #            alpha);
+                  #      }
+                  #
+                  #      public static Color toProto(java.awt.Color color) {
+                  #        float red = (float) color.getRed();
+                  #        float green = (float) color.getGreen();
+                  #        float blue = (float) color.getBlue();
+                  #        float denominator = 255.0;
+                  #        Color.Builder resultBuilder =
+                  #            Color
+                  #                .newBuilder()
+                  #                .setRed(red / denominator)
+                  #                .setGreen(green / denominator)
+                  #                .setBlue(blue / denominator);
+                  #        int alpha = color.getAlpha();
+                  #        if (alpha != 255) {
+                  #          result.setAlpha(
+                  #              FloatValue
+                  #                  .newBuilder()
+                  #                  .setValue(((float) alpha) / denominator)
+                  #                  .build());
+                  #        }
+                  #        return resultBuilder.build();
+                  #      }
+                  #      // ...
+                  #
+                  # Example (iOS / Obj-C):
+                  #
+                  #      // ...
+                  #      static UIColor* fromProto(Color* protocolor) {
+                  #         float red = [protocolor red];
+                  #         float green = [protocolor green];
+                  #         float blue = [protocolor blue];
+                  #         FloatValue* alpha_wrapper = [protocolor alpha];
+                  #         float alpha = 1.0;
+                  #         if (alpha_wrapper != nil) {
+                  #           alpha = [alpha_wrapper value];
+                  #         }
+                  #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
+                  #      }
+                  #
+                  #      static Color* toProto(UIColor* color) {
+                  #          CGFloat red, green, blue, alpha;
+                  #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
+                  #            return nil;
+                  #          }
+                  #          Color* result = [Color alloc] init];
+                  #          [result setRed:red];
+                  #          [result setGreen:green];
+                  #          [result setBlue:blue];
+                  #          if (alpha <= 0.9999) {
+                  #            [result setAlpha:floatWrapperWithValue(alpha)];
+                  #          }
+                  #          [result autorelease];
+                  #          return result;
+                  #     }
+                  #     // ...
+                  #
+                  #  Example (JavaScript):
+                  #
+                  #     // ...
+                  #
+                  #     var protoToCssColor = function(rgb_color) {
+                  #        var redFrac = rgb_color.red || 0.0;
+                  #        var greenFrac = rgb_color.green || 0.0;
+                  #        var blueFrac = rgb_color.blue || 0.0;
+                  #        var red = Math.floor(redFrac * 255);
+                  #        var green = Math.floor(greenFrac * 255);
+                  #        var blue = Math.floor(blueFrac * 255);
+                  #
+                  #        if (!('alpha' in rgb_color)) {
+                  #           return rgbToCssColor_(red, green, blue);
+                  #        }
+                  #
+                  #        var alphaFrac = rgb_color.alpha.value || 0.0;
+                  #        var rgbParams = [red, green, blue].join(',');
+                  #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
+                  #     };
+                  #
+                  #     var rgbToCssColor_ = function(red, green, blue) {
+                  #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
+                  #       var hexString = rgbNumber.toString(16);
+                  #       var missingZeros = 6 - hexString.length;
+                  #       var resultBuilder = ['#'];
+                  #       for (var i = 0; i < missingZeros; i++) {
+                  #          resultBuilder.push('0');
+                  #       }
+                  #       resultBuilder.push(hexString);
+                  #       return resultBuilder.join('');
+                  #     };
+                  #
+                  #     // ...
+                "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+                "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
+                    # the final pixel color is defined by the equation:
+                    #
+                    #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
+                    #
+                    # This means that a value of 1.0 corresponds to a solid color, whereas
+                    # a value of 0.0 corresponds to a completely transparent color. This
+                    # uses a wrapper message rather than a simple float scalar so that it is
+                    # possible to distinguish between a default value and the value being unset.
+                    # If omitted, this color object is to be rendered as a solid color
+                    # (as if the alpha value had been explicitly given with a value of 1.0).
+                "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
+                "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
+              },
+            },
+            "rowProperties": { # Properties referring a single dimension (either row or column). If both # Properties for row bands. These properties will be applied on a row-by-row
+                # basis throughout all the rows in the range. At least one of
+                # row_properties or column_properties must be specified.
+                # BandedRange.row_properties and BandedRange.column_properties are
+                # set, the fill colors are applied to cells according to the following rules:
+                #
+                # * header_color and footer_color take priority over band colors.
+                # * first_band_color takes priority over second_band_color.
+                # * row_properties takes priority over column_properties.
+                #
+                # For example, the first row color takes priority over the first column
+                # color, but the first column color takes priority over the second row color.
+                # Similarly, the row header takes priority over the column header in the
+                # top left cell, but the column header takes priority over the first row
+                # color if the row header is not set.
+              "secondBandColor": { # Represents a color in the RGBA color space. This representation is designed # The second color that is alternating. (Required)
+                  # for simplicity of conversion to/from color representations in various
+                  # languages over compactness; for example, the fields of this representation
+                  # can be trivially provided to the constructor of "java.awt.Color" in Java; it
+                  # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
+                  # method in iOS; and, with just a little work, it can be easily formatted into
+                  # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
+                  #
+                  # Example (Java):
+                  #
+                  #      import com.google.type.Color;
+                  #
+                  #      // ...
+                  #      public static java.awt.Color fromProto(Color protocolor) {
+                  #        float alpha = protocolor.hasAlpha()
+                  #            ? protocolor.getAlpha().getValue()
+                  #            : 1.0;
+                  #
+                  #        return new java.awt.Color(
+                  #            protocolor.getRed(),
+                  #            protocolor.getGreen(),
+                  #            protocolor.getBlue(),
+                  #            alpha);
+                  #      }
+                  #
+                  #      public static Color toProto(java.awt.Color color) {
+                  #        float red = (float) color.getRed();
+                  #        float green = (float) color.getGreen();
+                  #        float blue = (float) color.getBlue();
+                  #        float denominator = 255.0;
+                  #        Color.Builder resultBuilder =
+                  #            Color
+                  #                .newBuilder()
+                  #                .setRed(red / denominator)
+                  #                .setGreen(green / denominator)
+                  #                .setBlue(blue / denominator);
+                  #        int alpha = color.getAlpha();
+                  #        if (alpha != 255) {
+                  #          result.setAlpha(
+                  #              FloatValue
+                  #                  .newBuilder()
+                  #                  .setValue(((float) alpha) / denominator)
+                  #                  .build());
+                  #        }
+                  #        return resultBuilder.build();
+                  #      }
+                  #      // ...
+                  #
+                  # Example (iOS / Obj-C):
+                  #
+                  #      // ...
+                  #      static UIColor* fromProto(Color* protocolor) {
+                  #         float red = [protocolor red];
+                  #         float green = [protocolor green];
+                  #         float blue = [protocolor blue];
+                  #         FloatValue* alpha_wrapper = [protocolor alpha];
+                  #         float alpha = 1.0;
+                  #         if (alpha_wrapper != nil) {
+                  #           alpha = [alpha_wrapper value];
+                  #         }
+                  #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
+                  #      }
+                  #
+                  #      static Color* toProto(UIColor* color) {
+                  #          CGFloat red, green, blue, alpha;
+                  #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
+                  #            return nil;
+                  #          }
+                  #          Color* result = [Color alloc] init];
+                  #          [result setRed:red];
+                  #          [result setGreen:green];
+                  #          [result setBlue:blue];
+                  #          if (alpha <= 0.9999) {
+                  #            [result setAlpha:floatWrapperWithValue(alpha)];
+                  #          }
+                  #          [result autorelease];
+                  #          return result;
+                  #     }
+                  #     // ...
+                  #
+                  #  Example (JavaScript):
+                  #
+                  #     // ...
+                  #
+                  #     var protoToCssColor = function(rgb_color) {
+                  #        var redFrac = rgb_color.red || 0.0;
+                  #        var greenFrac = rgb_color.green || 0.0;
+                  #        var blueFrac = rgb_color.blue || 0.0;
+                  #        var red = Math.floor(redFrac * 255);
+                  #        var green = Math.floor(greenFrac * 255);
+                  #        var blue = Math.floor(blueFrac * 255);
+                  #
+                  #        if (!('alpha' in rgb_color)) {
+                  #           return rgbToCssColor_(red, green, blue);
+                  #        }
+                  #
+                  #        var alphaFrac = rgb_color.alpha.value || 0.0;
+                  #        var rgbParams = [red, green, blue].join(',');
+                  #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
+                  #     };
+                  #
+                  #     var rgbToCssColor_ = function(red, green, blue) {
+                  #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
+                  #       var hexString = rgbNumber.toString(16);
+                  #       var missingZeros = 6 - hexString.length;
+                  #       var resultBuilder = ['#'];
+                  #       for (var i = 0; i < missingZeros; i++) {
+                  #          resultBuilder.push('0');
+                  #       }
+                  #       resultBuilder.push(hexString);
+                  #       return resultBuilder.join('');
+                  #     };
+                  #
+                  #     // ...
+                "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+                "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
+                    # the final pixel color is defined by the equation:
+                    #
+                    #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
+                    #
+                    # This means that a value of 1.0 corresponds to a solid color, whereas
+                    # a value of 0.0 corresponds to a completely transparent color. This
+                    # uses a wrapper message rather than a simple float scalar so that it is
+                    # possible to distinguish between a default value and the value being unset.
+                    # If omitted, this color object is to be rendered as a solid color
+                    # (as if the alpha value had been explicitly given with a value of 1.0).
+                "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
+                "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
+              },
+              "headerColor": { # Represents a color in the RGBA color space. This representation is designed # The color of the first row or column. If this field is set, the first
+                  # row or column will be filled with this color and the colors will
+                  # alternate between first_band_color and second_band_color starting
+                  # from the second row or column. Otherwise, the first row or column will be
+                  # filled with first_band_color and the colors will proceed to alternate
+                  # as they normally would.
+                  # for simplicity of conversion to/from color representations in various
+                  # languages over compactness; for example, the fields of this representation
+                  # can be trivially provided to the constructor of "java.awt.Color" in Java; it
+                  # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
+                  # method in iOS; and, with just a little work, it can be easily formatted into
+                  # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
+                  #
+                  # Example (Java):
+                  #
+                  #      import com.google.type.Color;
+                  #
+                  #      // ...
+                  #      public static java.awt.Color fromProto(Color protocolor) {
+                  #        float alpha = protocolor.hasAlpha()
+                  #            ? protocolor.getAlpha().getValue()
+                  #            : 1.0;
+                  #
+                  #        return new java.awt.Color(
+                  #            protocolor.getRed(),
+                  #            protocolor.getGreen(),
+                  #            protocolor.getBlue(),
+                  #            alpha);
+                  #      }
+                  #
+                  #      public static Color toProto(java.awt.Color color) {
+                  #        float red = (float) color.getRed();
+                  #        float green = (float) color.getGreen();
+                  #        float blue = (float) color.getBlue();
+                  #        float denominator = 255.0;
+                  #        Color.Builder resultBuilder =
+                  #            Color
+                  #                .newBuilder()
+                  #                .setRed(red / denominator)
+                  #                .setGreen(green / denominator)
+                  #                .setBlue(blue / denominator);
+                  #        int alpha = color.getAlpha();
+                  #        if (alpha != 255) {
+                  #          result.setAlpha(
+                  #              FloatValue
+                  #                  .newBuilder()
+                  #                  .setValue(((float) alpha) / denominator)
+                  #                  .build());
+                  #        }
+                  #        return resultBuilder.build();
+                  #      }
+                  #      // ...
+                  #
+                  # Example (iOS / Obj-C):
+                  #
+                  #      // ...
+                  #      static UIColor* fromProto(Color* protocolor) {
+                  #         float red = [protocolor red];
+                  #         float green = [protocolor green];
+                  #         float blue = [protocolor blue];
+                  #         FloatValue* alpha_wrapper = [protocolor alpha];
+                  #         float alpha = 1.0;
+                  #         if (alpha_wrapper != nil) {
+                  #           alpha = [alpha_wrapper value];
+                  #         }
+                  #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
+                  #      }
+                  #
+                  #      static Color* toProto(UIColor* color) {
+                  #          CGFloat red, green, blue, alpha;
+                  #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
+                  #            return nil;
+                  #          }
+                  #          Color* result = [Color alloc] init];
+                  #          [result setRed:red];
+                  #          [result setGreen:green];
+                  #          [result setBlue:blue];
+                  #          if (alpha <= 0.9999) {
+                  #            [result setAlpha:floatWrapperWithValue(alpha)];
+                  #          }
+                  #          [result autorelease];
+                  #          return result;
+                  #     }
+                  #     // ...
+                  #
+                  #  Example (JavaScript):
+                  #
+                  #     // ...
+                  #
+                  #     var protoToCssColor = function(rgb_color) {
+                  #        var redFrac = rgb_color.red || 0.0;
+                  #        var greenFrac = rgb_color.green || 0.0;
+                  #        var blueFrac = rgb_color.blue || 0.0;
+                  #        var red = Math.floor(redFrac * 255);
+                  #        var green = Math.floor(greenFrac * 255);
+                  #        var blue = Math.floor(blueFrac * 255);
+                  #
+                  #        if (!('alpha' in rgb_color)) {
+                  #           return rgbToCssColor_(red, green, blue);
+                  #        }
+                  #
+                  #        var alphaFrac = rgb_color.alpha.value || 0.0;
+                  #        var rgbParams = [red, green, blue].join(',');
+                  #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
+                  #     };
+                  #
+                  #     var rgbToCssColor_ = function(red, green, blue) {
+                  #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
+                  #       var hexString = rgbNumber.toString(16);
+                  #       var missingZeros = 6 - hexString.length;
+                  #       var resultBuilder = ['#'];
+                  #       for (var i = 0; i < missingZeros; i++) {
+                  #          resultBuilder.push('0');
+                  #       }
+                  #       resultBuilder.push(hexString);
+                  #       return resultBuilder.join('');
+                  #     };
+                  #
+                  #     // ...
+                "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+                "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
+                    # the final pixel color is defined by the equation:
+                    #
+                    #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
+                    #
+                    # This means that a value of 1.0 corresponds to a solid color, whereas
+                    # a value of 0.0 corresponds to a completely transparent color. This
+                    # uses a wrapper message rather than a simple float scalar so that it is
+                    # possible to distinguish between a default value and the value being unset.
+                    # If omitted, this color object is to be rendered as a solid color
+                    # (as if the alpha value had been explicitly given with a value of 1.0).
+                "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
+                "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
+              },
+              "footerColor": { # Represents a color in the RGBA color space. This representation is designed # The color of the last row or column. If this field is not set, the last
+                  # row or column will be filled with either first_band_color or
+                  # second_band_color, depending on the color of the previous row or
+                  # column.
+                  # for simplicity of conversion to/from color representations in various
+                  # languages over compactness; for example, the fields of this representation
+                  # can be trivially provided to the constructor of "java.awt.Color" in Java; it
+                  # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
+                  # method in iOS; and, with just a little work, it can be easily formatted into
+                  # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
+                  #
+                  # Example (Java):
+                  #
+                  #      import com.google.type.Color;
+                  #
+                  #      // ...
+                  #      public static java.awt.Color fromProto(Color protocolor) {
+                  #        float alpha = protocolor.hasAlpha()
+                  #            ? protocolor.getAlpha().getValue()
+                  #            : 1.0;
+                  #
+                  #        return new java.awt.Color(
+                  #            protocolor.getRed(),
+                  #            protocolor.getGreen(),
+                  #            protocolor.getBlue(),
+                  #            alpha);
+                  #      }
+                  #
+                  #      public static Color toProto(java.awt.Color color) {
+                  #        float red = (float) color.getRed();
+                  #        float green = (float) color.getGreen();
+                  #        float blue = (float) color.getBlue();
+                  #        float denominator = 255.0;
+                  #        Color.Builder resultBuilder =
+                  #            Color
+                  #                .newBuilder()
+                  #                .setRed(red / denominator)
+                  #                .setGreen(green / denominator)
+                  #                .setBlue(blue / denominator);
+                  #        int alpha = color.getAlpha();
+                  #        if (alpha != 255) {
+                  #          result.setAlpha(
+                  #              FloatValue
+                  #                  .newBuilder()
+                  #                  .setValue(((float) alpha) / denominator)
+                  #                  .build());
+                  #        }
+                  #        return resultBuilder.build();
+                  #      }
+                  #      // ...
+                  #
+                  # Example (iOS / Obj-C):
+                  #
+                  #      // ...
+                  #      static UIColor* fromProto(Color* protocolor) {
+                  #         float red = [protocolor red];
+                  #         float green = [protocolor green];
+                  #         float blue = [protocolor blue];
+                  #         FloatValue* alpha_wrapper = [protocolor alpha];
+                  #         float alpha = 1.0;
+                  #         if (alpha_wrapper != nil) {
+                  #           alpha = [alpha_wrapper value];
+                  #         }
+                  #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
+                  #      }
+                  #
+                  #      static Color* toProto(UIColor* color) {
+                  #          CGFloat red, green, blue, alpha;
+                  #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
+                  #            return nil;
+                  #          }
+                  #          Color* result = [Color alloc] init];
+                  #          [result setRed:red];
+                  #          [result setGreen:green];
+                  #          [result setBlue:blue];
+                  #          if (alpha <= 0.9999) {
+                  #            [result setAlpha:floatWrapperWithValue(alpha)];
+                  #          }
+                  #          [result autorelease];
+                  #          return result;
+                  #     }
+                  #     // ...
+                  #
+                  #  Example (JavaScript):
+                  #
+                  #     // ...
+                  #
+                  #     var protoToCssColor = function(rgb_color) {
+                  #        var redFrac = rgb_color.red || 0.0;
+                  #        var greenFrac = rgb_color.green || 0.0;
+                  #        var blueFrac = rgb_color.blue || 0.0;
+                  #        var red = Math.floor(redFrac * 255);
+                  #        var green = Math.floor(greenFrac * 255);
+                  #        var blue = Math.floor(blueFrac * 255);
+                  #
+                  #        if (!('alpha' in rgb_color)) {
+                  #           return rgbToCssColor_(red, green, blue);
+                  #        }
+                  #
+                  #        var alphaFrac = rgb_color.alpha.value || 0.0;
+                  #        var rgbParams = [red, green, blue].join(',');
+                  #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
+                  #     };
+                  #
+                  #     var rgbToCssColor_ = function(red, green, blue) {
+                  #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
+                  #       var hexString = rgbNumber.toString(16);
+                  #       var missingZeros = 6 - hexString.length;
+                  #       var resultBuilder = ['#'];
+                  #       for (var i = 0; i < missingZeros; i++) {
+                  #          resultBuilder.push('0');
+                  #       }
+                  #       resultBuilder.push(hexString);
+                  #       return resultBuilder.join('');
+                  #     };
+                  #
+                  #     // ...
+                "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+                "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
+                    # the final pixel color is defined by the equation:
+                    #
+                    #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
+                    #
+                    # This means that a value of 1.0 corresponds to a solid color, whereas
+                    # a value of 0.0 corresponds to a completely transparent color. This
+                    # uses a wrapper message rather than a simple float scalar so that it is
+                    # possible to distinguish between a default value and the value being unset.
+                    # If omitted, this color object is to be rendered as a solid color
+                    # (as if the alpha value had been explicitly given with a value of 1.0).
+                "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
+                "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
+              },
+              "firstBandColor": { # Represents a color in the RGBA color space. This representation is designed # The first color that is alternating. (Required)
+                  # for simplicity of conversion to/from color representations in various
+                  # languages over compactness; for example, the fields of this representation
+                  # can be trivially provided to the constructor of "java.awt.Color" in Java; it
+                  # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
+                  # method in iOS; and, with just a little work, it can be easily formatted into
+                  # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
+                  #
+                  # Example (Java):
+                  #
+                  #      import com.google.type.Color;
+                  #
+                  #      // ...
+                  #      public static java.awt.Color fromProto(Color protocolor) {
+                  #        float alpha = protocolor.hasAlpha()
+                  #            ? protocolor.getAlpha().getValue()
+                  #            : 1.0;
+                  #
+                  #        return new java.awt.Color(
+                  #            protocolor.getRed(),
+                  #            protocolor.getGreen(),
+                  #            protocolor.getBlue(),
+                  #            alpha);
+                  #      }
+                  #
+                  #      public static Color toProto(java.awt.Color color) {
+                  #        float red = (float) color.getRed();
+                  #        float green = (float) color.getGreen();
+                  #        float blue = (float) color.getBlue();
+                  #        float denominator = 255.0;
+                  #        Color.Builder resultBuilder =
+                  #            Color
+                  #                .newBuilder()
+                  #                .setRed(red / denominator)
+                  #                .setGreen(green / denominator)
+                  #                .setBlue(blue / denominator);
+                  #        int alpha = color.getAlpha();
+                  #        if (alpha != 255) {
+                  #          result.setAlpha(
+                  #              FloatValue
+                  #                  .newBuilder()
+                  #                  .setValue(((float) alpha) / denominator)
+                  #                  .build());
+                  #        }
+                  #        return resultBuilder.build();
+                  #      }
+                  #      // ...
+                  #
+                  # Example (iOS / Obj-C):
+                  #
+                  #      // ...
+                  #      static UIColor* fromProto(Color* protocolor) {
+                  #         float red = [protocolor red];
+                  #         float green = [protocolor green];
+                  #         float blue = [protocolor blue];
+                  #         FloatValue* alpha_wrapper = [protocolor alpha];
+                  #         float alpha = 1.0;
+                  #         if (alpha_wrapper != nil) {
+                  #           alpha = [alpha_wrapper value];
+                  #         }
+                  #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
+                  #      }
+                  #
+                  #      static Color* toProto(UIColor* color) {
+                  #          CGFloat red, green, blue, alpha;
+                  #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
+                  #            return nil;
+                  #          }
+                  #          Color* result = [Color alloc] init];
+                  #          [result setRed:red];
+                  #          [result setGreen:green];
+                  #          [result setBlue:blue];
+                  #          if (alpha <= 0.9999) {
+                  #            [result setAlpha:floatWrapperWithValue(alpha)];
+                  #          }
+                  #          [result autorelease];
+                  #          return result;
+                  #     }
+                  #     // ...
+                  #
+                  #  Example (JavaScript):
+                  #
+                  #     // ...
+                  #
+                  #     var protoToCssColor = function(rgb_color) {
+                  #        var redFrac = rgb_color.red || 0.0;
+                  #        var greenFrac = rgb_color.green || 0.0;
+                  #        var blueFrac = rgb_color.blue || 0.0;
+                  #        var red = Math.floor(redFrac * 255);
+                  #        var green = Math.floor(greenFrac * 255);
+                  #        var blue = Math.floor(blueFrac * 255);
+                  #
+                  #        if (!('alpha' in rgb_color)) {
+                  #           return rgbToCssColor_(red, green, blue);
+                  #        }
+                  #
+                  #        var alphaFrac = rgb_color.alpha.value || 0.0;
+                  #        var rgbParams = [red, green, blue].join(',');
+                  #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
+                  #     };
+                  #
+                  #     var rgbToCssColor_ = function(red, green, blue) {
+                  #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
+                  #       var hexString = rgbNumber.toString(16);
+                  #       var missingZeros = 6 - hexString.length;
+                  #       var resultBuilder = ['#'];
+                  #       for (var i = 0; i < missingZeros; i++) {
+                  #          resultBuilder.push('0');
+                  #       }
+                  #       resultBuilder.push(hexString);
+                  #       return resultBuilder.join('');
+                  #     };
+                  #
+                  #     // ...
+                "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+                "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
+                    # the final pixel color is defined by the equation:
+                    #
+                    #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
+                    #
+                    # This means that a value of 1.0 corresponds to a solid color, whereas
+                    # a value of 0.0 corresponds to a completely transparent color. This
+                    # uses a wrapper message rather than a simple float scalar so that it is
+                    # possible to distinguish between a default value and the value being unset.
+                    # If omitted, this color object is to be rendered as a solid color
+                    # (as if the alpha value had been explicitly given with a value of 1.0).
+                "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
+                "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
+              },
+            },
+            "bandedRangeId": 42, # The id of the banded range.
+          },
+        ],
+        "merges": [ # The ranges that are merged together.
+          { # A range on a sheet.
+              # All indexes are zero-based.
+              # Indexes are half open, e.g the start index is inclusive
+              # and the end index is exclusive -- [start_index, end_index).
+              # Missing indexes indicate the range is unbounded on that side.
+              #
+              # For example, if `"Sheet1"` is sheet ID 0, then:
+              #
+              #   `Sheet1!A1:A1 == sheet_id: 0,
+              #                   start_row_index: 0, end_row_index: 1,
+              #                   start_column_index: 0, end_column_index: 1`
+              #
+              #   `Sheet1!A3:B4 == sheet_id: 0,
+              #                   start_row_index: 2, end_row_index: 4,
+              #                   start_column_index: 0, end_column_index: 2`
+              #
+              #   `Sheet1!A:B == sheet_id: 0,
+              #                 start_column_index: 0, end_column_index: 2`
+              #
+              #   `Sheet1!A5:B == sheet_id: 0,
+              #                  start_row_index: 4,
+              #                  start_column_index: 0, end_column_index: 2`
+              #
+              #   `Sheet1 == sheet_id:0`
+              #
+              # The start index must always be less than or equal to the end index.
+              # If the start index equals the end index, then the range is empty.
+              # Empty ranges are typically not meaningful and are usually rendered in the
+              # UI as `#REF!`.
+            "endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
+            "startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
+            "sheetId": 42, # The sheet this range is on.
+            "startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
+            "endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
+          },
+        ],
+        "basicFilter": { # The default filter associated with a sheet. # The filter on this sheet, if any.
+          "range": { # A range on a sheet. # The range the filter covers.
+              # All indexes are zero-based.
+              # Indexes are half open, e.g the start index is inclusive
+              # and the end index is exclusive -- [start_index, end_index).
+              # Missing indexes indicate the range is unbounded on that side.
+              #
+              # For example, if `"Sheet1"` is sheet ID 0, then:
+              #
+              #   `Sheet1!A1:A1 == sheet_id: 0,
+              #                   start_row_index: 0, end_row_index: 1,
+              #                   start_column_index: 0, end_column_index: 1`
+              #
+              #   `Sheet1!A3:B4 == sheet_id: 0,
+              #                   start_row_index: 2, end_row_index: 4,
+              #                   start_column_index: 0, end_column_index: 2`
+              #
+              #   `Sheet1!A:B == sheet_id: 0,
+              #                 start_column_index: 0, end_column_index: 2`
+              #
+              #   `Sheet1!A5:B == sheet_id: 0,
+              #                  start_row_index: 4,
+              #                  start_column_index: 0, end_column_index: 2`
+              #
+              #   `Sheet1 == sheet_id:0`
+              #
+              # The start index must always be less than or equal to the end index.
+              # If the start index equals the end index, then the range is empty.
+              # Empty ranges are typically not meaningful and are usually rendered in the
+              # UI as `#REF!`.
+            "endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
+            "startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
+            "sheetId": 42, # The sheet this range is on.
+            "startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
+            "endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
+          },
+          "sortSpecs": [ # The sort order per column. Later specifications are used when values
+              # are equal in the earlier specifications.
+            { # A sort order associated with a specific column or row.
+              "sortOrder": "A String", # The order data should be sorted.
+              "dimensionIndex": 42, # The dimension the sort should be applied to.
+            },
           ],
-          "basicFilter": { # The default filter associated with a sheet. # The filter on this sheet, if any.
-            "range": { # A range on a sheet. # The range the filter covers.
+          "criteria": { # The criteria for showing/hiding values per column.
+              # The map's key is the column index, and the value is the criteria for
+              # that column.
+            "a_key": { # Criteria for showing/hiding rows in a filter or filter view.
+              "hiddenValues": [ # Values that should be hidden.
+                "A String",
+              ],
+              "condition": { # A condition that can evaluate to true or false. # A condition that must be true for values to be shown.
+                  # (This does not override hiddenValues -- if a value is listed there,
+                  #  it will still be hidden.)
+                  # BooleanConditions are used by conditional formatting,
+                  # data validation, and the criteria in filters.
+                "type": "A String", # The type of condition.
+                "values": [ # The values of the condition. The number of supported values depends
+                    # on the condition type.  Some support zero values,
+                    # others one or two values,
+                    # and ConditionType.ONE_OF_LIST supports an arbitrary number of values.
+                  { # The value of the condition.
+                    "relativeDate": "A String", # A relative date (based on the current date).
+                        # Valid only if the type is
+                        # DATE_BEFORE,
+                        # DATE_AFTER,
+                        # DATE_ON_OR_BEFORE or
+                        # DATE_ON_OR_AFTER.
+                        #
+                        # Relative dates are not supported in data validation.
+                        # They are supported only in conditional formatting and
+                        # conditional filters.
+                    "userEnteredValue": "A String", # A value the condition is based on.
+                        # The value will be parsed as if the user typed into a cell.
+                        # Formulas are supported (and must begin with an `=`).
+                  },
+                ],
+              },
+            },
+          },
+        },
+        "charts": [ # The specifications of every chart on this sheet.
+          { # A chart embedded in a sheet.
+            "chartId": 42, # The ID of the chart.
+            "position": { # The position of an embedded object such as a chart. # The position of the chart.
+              "newSheet": True or False, # If true, the embedded object will be put on a new sheet whose ID
+                  # is chosen for you. Used only when writing.
+              "sheetId": 42, # The sheet this is on. Set only if the embedded object
+                  # is on its own sheet. Must be non-negative.
+              "overlayPosition": { # The location an object is overlaid on top of a grid. # The position at which the object is overlaid on top of a grid.
+                "anchorCell": { # A coordinate in a sheet. # The cell the object is anchored to.
+                    # All indexes are zero-based.
+                  "rowIndex": 42, # The row index of the coordinate.
+                  "columnIndex": 42, # The column index of the coordinate.
+                  "sheetId": 42, # The sheet this coordinate is on.
+                },
+                "offsetYPixels": 42, # The vertical offset, in pixels, that the object is offset
+                    # from the anchor cell.
+                "widthPixels": 42, # The width of the object, in pixels. Defaults to 600.
+                "offsetXPixels": 42, # The horizontal offset, in pixels, that the object is offset
+                    # from the anchor cell.
+                "heightPixels": 42, # The height of the object, in pixels. Defaults to 371.
+              },
+            },
+            "spec": { # The specifications of a chart. # The specification of the chart.
+              "hiddenDimensionStrategy": "A String", # Determines how the charts will use hidden rows or columns.
+              "pieChart": { # A <a href="/chart/interactive/docs/gallery/piechart">pie chart</a>. # A pie chart specification.
+                "series": { # The data included in a domain or series. # The data that covers the one and only series of the pie chart.
+                  "sourceRange": { # Source ranges for a chart. # The source ranges of the data.
+                    "sources": [ # The ranges of data for a series or domain.
+                        # Exactly one dimension must have a length of 1,
+                        # and all sources in the list must have the same dimension
+                        # with length 1.
+                        # The domain (if it exists) & all series must have the same number
+                        # of source ranges. If using more than one source range, then the source
+                        # range at a given offset must be contiguous across the domain and series.
+                        #
+                        # For example, these are valid configurations:
+                        #
+                        #     domain sources: A1:A5
+                        #     series1 sources: B1:B5
+                        #     series2 sources: D6:D10
+                        #
+                        #     domain sources: A1:A5, C10:C12
+                        #     series1 sources: B1:B5, D10:D12
+                        #     series2 sources: C1:C5, E10:E12
+                      { # A range on a sheet.
+                          # All indexes are zero-based.
+                          # Indexes are half open, e.g the start index is inclusive
+                          # and the end index is exclusive -- [start_index, end_index).
+                          # Missing indexes indicate the range is unbounded on that side.
+                          #
+                          # For example, if `"Sheet1"` is sheet ID 0, then:
+                          #
+                          #   `Sheet1!A1:A1 == sheet_id: 0,
+                          #                   start_row_index: 0, end_row_index: 1,
+                          #                   start_column_index: 0, end_column_index: 1`
+                          #
+                          #   `Sheet1!A3:B4 == sheet_id: 0,
+                          #                   start_row_index: 2, end_row_index: 4,
+                          #                   start_column_index: 0, end_column_index: 2`
+                          #
+                          #   `Sheet1!A:B == sheet_id: 0,
+                          #                 start_column_index: 0, end_column_index: 2`
+                          #
+                          #   `Sheet1!A5:B == sheet_id: 0,
+                          #                  start_row_index: 4,
+                          #                  start_column_index: 0, end_column_index: 2`
+                          #
+                          #   `Sheet1 == sheet_id:0`
+                          #
+                          # The start index must always be less than or equal to the end index.
+                          # If the start index equals the end index, then the range is empty.
+                          # Empty ranges are typically not meaningful and are usually rendered in the
+                          # UI as `#REF!`.
+                        "endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
+                        "startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
+                        "sheetId": 42, # The sheet this range is on.
+                        "startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
+                        "endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
+                      },
+                    ],
+                  },
+                },
+                "domain": { # The data included in a domain or series. # The data that covers the domain of the pie chart.
+                  "sourceRange": { # Source ranges for a chart. # The source ranges of the data.
+                    "sources": [ # The ranges of data for a series or domain.
+                        # Exactly one dimension must have a length of 1,
+                        # and all sources in the list must have the same dimension
+                        # with length 1.
+                        # The domain (if it exists) & all series must have the same number
+                        # of source ranges. If using more than one source range, then the source
+                        # range at a given offset must be contiguous across the domain and series.
+                        #
+                        # For example, these are valid configurations:
+                        #
+                        #     domain sources: A1:A5
+                        #     series1 sources: B1:B5
+                        #     series2 sources: D6:D10
+                        #
+                        #     domain sources: A1:A5, C10:C12
+                        #     series1 sources: B1:B5, D10:D12
+                        #     series2 sources: C1:C5, E10:E12
+                      { # A range on a sheet.
+                          # All indexes are zero-based.
+                          # Indexes are half open, e.g the start index is inclusive
+                          # and the end index is exclusive -- [start_index, end_index).
+                          # Missing indexes indicate the range is unbounded on that side.
+                          #
+                          # For example, if `"Sheet1"` is sheet ID 0, then:
+                          #
+                          #   `Sheet1!A1:A1 == sheet_id: 0,
+                          #                   start_row_index: 0, end_row_index: 1,
+                          #                   start_column_index: 0, end_column_index: 1`
+                          #
+                          #   `Sheet1!A3:B4 == sheet_id: 0,
+                          #                   start_row_index: 2, end_row_index: 4,
+                          #                   start_column_index: 0, end_column_index: 2`
+                          #
+                          #   `Sheet1!A:B == sheet_id: 0,
+                          #                 start_column_index: 0, end_column_index: 2`
+                          #
+                          #   `Sheet1!A5:B == sheet_id: 0,
+                          #                  start_row_index: 4,
+                          #                  start_column_index: 0, end_column_index: 2`
+                          #
+                          #   `Sheet1 == sheet_id:0`
+                          #
+                          # The start index must always be less than or equal to the end index.
+                          # If the start index equals the end index, then the range is empty.
+                          # Empty ranges are typically not meaningful and are usually rendered in the
+                          # UI as `#REF!`.
+                        "endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
+                        "startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
+                        "sheetId": 42, # The sheet this range is on.
+                        "startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
+                        "endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
+                      },
+                    ],
+                  },
+                },
+                "threeDimensional": True or False, # True if the pie is three dimensional.
+                "legendPosition": "A String", # Where the legend of the pie chart should be drawn.
+                "pieHole": 3.14, # The size of the hole in the pie chart.
+              },
+              "basicChart": { # The specification for a basic chart.  See BasicChartType for the list # A basic chart specification, can be one of many kinds of charts.
+                  # See BasicChartType for the list of all
+                  # charts this supports.
+                  # of charts this supports.
+                "headerCount": 42, # The number of rows or columns in the data that are "headers".
+                    # If not set, Google Sheets will guess how many rows are headers based
+                    # on the data.
+                    #
+                    # (Note that BasicChartAxis.title may override the axis title
+                    #  inferred from the header values.)
+                "series": [ # The data this chart is visualizing.
+                  { # A single series of data in a chart.
+                      # For example, if charting stock prices over time, multiple series may exist,
+                      # one for the "Open Price", "High Price", "Low Price" and "Close Price".
+                    "series": { # The data included in a domain or series. # The data being visualized in this chart series.
+                      "sourceRange": { # Source ranges for a chart. # The source ranges of the data.
+                        "sources": [ # The ranges of data for a series or domain.
+                            # Exactly one dimension must have a length of 1,
+                            # and all sources in the list must have the same dimension
+                            # with length 1.
+                            # The domain (if it exists) & all series must have the same number
+                            # of source ranges. If using more than one source range, then the source
+                            # range at a given offset must be contiguous across the domain and series.
+                            #
+                            # For example, these are valid configurations:
+                            #
+                            #     domain sources: A1:A5
+                            #     series1 sources: B1:B5
+                            #     series2 sources: D6:D10
+                            #
+                            #     domain sources: A1:A5, C10:C12
+                            #     series1 sources: B1:B5, D10:D12
+                            #     series2 sources: C1:C5, E10:E12
+                          { # A range on a sheet.
+                              # All indexes are zero-based.
+                              # Indexes are half open, e.g the start index is inclusive
+                              # and the end index is exclusive -- [start_index, end_index).
+                              # Missing indexes indicate the range is unbounded on that side.
+                              #
+                              # For example, if `"Sheet1"` is sheet ID 0, then:
+                              #
+                              #   `Sheet1!A1:A1 == sheet_id: 0,
+                              #                   start_row_index: 0, end_row_index: 1,
+                              #                   start_column_index: 0, end_column_index: 1`
+                              #
+                              #   `Sheet1!A3:B4 == sheet_id: 0,
+                              #                   start_row_index: 2, end_row_index: 4,
+                              #                   start_column_index: 0, end_column_index: 2`
+                              #
+                              #   `Sheet1!A:B == sheet_id: 0,
+                              #                 start_column_index: 0, end_column_index: 2`
+                              #
+                              #   `Sheet1!A5:B == sheet_id: 0,
+                              #                  start_row_index: 4,
+                              #                  start_column_index: 0, end_column_index: 2`
+                              #
+                              #   `Sheet1 == sheet_id:0`
+                              #
+                              # The start index must always be less than or equal to the end index.
+                              # If the start index equals the end index, then the range is empty.
+                              # Empty ranges are typically not meaningful and are usually rendered in the
+                              # UI as `#REF!`.
+                            "endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
+                            "startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
+                            "sheetId": 42, # The sheet this range is on.
+                            "startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
+                            "endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
+                          },
+                        ],
+                      },
+                    },
+                    "targetAxis": "A String", # The minor axis that will specify the range of values for this series.
+                        # For example, if charting stocks over time, the "Volume" series
+                        # may want to be pinned to the right with the prices pinned to the left,
+                        # because the scale of trading volume is different than the scale of
+                        # prices.
+                        # It is an error to specify an axis that isn't a valid minor axis
+                        # for the chart's type.
+                    "type": "A String", # The type of this series. Valid only if the
+                        # chartType is
+                        # COMBO.
+                        # Different types will change the way the series is visualized.
+                        # Only LINE, AREA,
+                        # and COLUMN are supported.
+                  },
+                ],
+                "legendPosition": "A String", # The position of the chart legend.
+                "domains": [ # The domain of data this is charting.
+                    # Only a single domain is currently supported.
+                  { # The domain of a chart.
+                      # For example, if charting stock prices over time, this would be the date.
+                    "domain": { # The data included in a domain or series. # The data of the domain. For example, if charting stock prices over time,
+                        # this is the data representing the dates.
+                      "sourceRange": { # Source ranges for a chart. # The source ranges of the data.
+                        "sources": [ # The ranges of data for a series or domain.
+                            # Exactly one dimension must have a length of 1,
+                            # and all sources in the list must have the same dimension
+                            # with length 1.
+                            # The domain (if it exists) & all series must have the same number
+                            # of source ranges. If using more than one source range, then the source
+                            # range at a given offset must be contiguous across the domain and series.
+                            #
+                            # For example, these are valid configurations:
+                            #
+                            #     domain sources: A1:A5
+                            #     series1 sources: B1:B5
+                            #     series2 sources: D6:D10
+                            #
+                            #     domain sources: A1:A5, C10:C12
+                            #     series1 sources: B1:B5, D10:D12
+                            #     series2 sources: C1:C5, E10:E12
+                          { # A range on a sheet.
+                              # All indexes are zero-based.
+                              # Indexes are half open, e.g the start index is inclusive
+                              # and the end index is exclusive -- [start_index, end_index).
+                              # Missing indexes indicate the range is unbounded on that side.
+                              #
+                              # For example, if `"Sheet1"` is sheet ID 0, then:
+                              #
+                              #   `Sheet1!A1:A1 == sheet_id: 0,
+                              #                   start_row_index: 0, end_row_index: 1,
+                              #                   start_column_index: 0, end_column_index: 1`
+                              #
+                              #   `Sheet1!A3:B4 == sheet_id: 0,
+                              #                   start_row_index: 2, end_row_index: 4,
+                              #                   start_column_index: 0, end_column_index: 2`
+                              #
+                              #   `Sheet1!A:B == sheet_id: 0,
+                              #                 start_column_index: 0, end_column_index: 2`
+                              #
+                              #   `Sheet1!A5:B == sheet_id: 0,
+                              #                  start_row_index: 4,
+                              #                  start_column_index: 0, end_column_index: 2`
+                              #
+                              #   `Sheet1 == sheet_id:0`
+                              #
+                              # The start index must always be less than or equal to the end index.
+                              # If the start index equals the end index, then the range is empty.
+                              # Empty ranges are typically not meaningful and are usually rendered in the
+                              # UI as `#REF!`.
+                            "endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
+                            "startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
+                            "sheetId": 42, # The sheet this range is on.
+                            "startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
+                            "endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
+                          },
+                        ],
+                      },
+                    },
+                  },
+                ],
+                "chartType": "A String", # The type of the chart.
+                "axis": [ # The axis on the chart.
+                  { # An axis of the chart.
+                      # A chart may not have more than one axis per
+                      # axis position.
+                    "position": "A String", # The position of this axis.
+                    "format": { # The format of a run of text in a cell. # The format of the title.
+                        # Only valid if the axis is not associated with the domain.
+                        # Absent values indicate that the field isn't specified.
+                      "foregroundColor": { # Represents a color in the RGBA color space. This representation is designed # The foreground color of the text.
+                          # for simplicity of conversion to/from color representations in various
+                          # languages over compactness; for example, the fields of this representation
+                          # can be trivially provided to the constructor of "java.awt.Color" in Java; it
+                          # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
+                          # method in iOS; and, with just a little work, it can be easily formatted into
+                          # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
+                          #
+                          # Example (Java):
+                          #
+                          #      import com.google.type.Color;
+                          #
+                          #      // ...
+                          #      public static java.awt.Color fromProto(Color protocolor) {
+                          #        float alpha = protocolor.hasAlpha()
+                          #            ? protocolor.getAlpha().getValue()
+                          #            : 1.0;
+                          #
+                          #        return new java.awt.Color(
+                          #            protocolor.getRed(),
+                          #            protocolor.getGreen(),
+                          #            protocolor.getBlue(),
+                          #            alpha);
+                          #      }
+                          #
+                          #      public static Color toProto(java.awt.Color color) {
+                          #        float red = (float) color.getRed();
+                          #        float green = (float) color.getGreen();
+                          #        float blue = (float) color.getBlue();
+                          #        float denominator = 255.0;
+                          #        Color.Builder resultBuilder =
+                          #            Color
+                          #                .newBuilder()
+                          #                .setRed(red / denominator)
+                          #                .setGreen(green / denominator)
+                          #                .setBlue(blue / denominator);
+                          #        int alpha = color.getAlpha();
+                          #        if (alpha != 255) {
+                          #          result.setAlpha(
+                          #              FloatValue
+                          #                  .newBuilder()
+                          #                  .setValue(((float) alpha) / denominator)
+                          #                  .build());
+                          #        }
+                          #        return resultBuilder.build();
+                          #      }
+                          #      // ...
+                          #
+                          # Example (iOS / Obj-C):
+                          #
+                          #      // ...
+                          #      static UIColor* fromProto(Color* protocolor) {
+                          #         float red = [protocolor red];
+                          #         float green = [protocolor green];
+                          #         float blue = [protocolor blue];
+                          #         FloatValue* alpha_wrapper = [protocolor alpha];
+                          #         float alpha = 1.0;
+                          #         if (alpha_wrapper != nil) {
+                          #           alpha = [alpha_wrapper value];
+                          #         }
+                          #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
+                          #      }
+                          #
+                          #      static Color* toProto(UIColor* color) {
+                          #          CGFloat red, green, blue, alpha;
+                          #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
+                          #            return nil;
+                          #          }
+                          #          Color* result = [Color alloc] init];
+                          #          [result setRed:red];
+                          #          [result setGreen:green];
+                          #          [result setBlue:blue];
+                          #          if (alpha <= 0.9999) {
+                          #            [result setAlpha:floatWrapperWithValue(alpha)];
+                          #          }
+                          #          [result autorelease];
+                          #          return result;
+                          #     }
+                          #     // ...
+                          #
+                          #  Example (JavaScript):
+                          #
+                          #     // ...
+                          #
+                          #     var protoToCssColor = function(rgb_color) {
+                          #        var redFrac = rgb_color.red || 0.0;
+                          #        var greenFrac = rgb_color.green || 0.0;
+                          #        var blueFrac = rgb_color.blue || 0.0;
+                          #        var red = Math.floor(redFrac * 255);
+                          #        var green = Math.floor(greenFrac * 255);
+                          #        var blue = Math.floor(blueFrac * 255);
+                          #
+                          #        if (!('alpha' in rgb_color)) {
+                          #           return rgbToCssColor_(red, green, blue);
+                          #        }
+                          #
+                          #        var alphaFrac = rgb_color.alpha.value || 0.0;
+                          #        var rgbParams = [red, green, blue].join(',');
+                          #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
+                          #     };
+                          #
+                          #     var rgbToCssColor_ = function(red, green, blue) {
+                          #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
+                          #       var hexString = rgbNumber.toString(16);
+                          #       var missingZeros = 6 - hexString.length;
+                          #       var resultBuilder = ['#'];
+                          #       for (var i = 0; i < missingZeros; i++) {
+                          #          resultBuilder.push('0');
+                          #       }
+                          #       resultBuilder.push(hexString);
+                          #       return resultBuilder.join('');
+                          #     };
+                          #
+                          #     // ...
+                        "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+                        "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
+                            # the final pixel color is defined by the equation:
+                            #
+                            #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
+                            #
+                            # This means that a value of 1.0 corresponds to a solid color, whereas
+                            # a value of 0.0 corresponds to a completely transparent color. This
+                            # uses a wrapper message rather than a simple float scalar so that it is
+                            # possible to distinguish between a default value and the value being unset.
+                            # If omitted, this color object is to be rendered as a solid color
+                            # (as if the alpha value had been explicitly given with a value of 1.0).
+                        "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
+                        "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
+                      },
+                      "bold": True or False, # True if the text is bold.
+                      "strikethrough": True or False, # True if the text has a strikethrough.
+                      "fontFamily": "A String", # The font family.
+                      "fontSize": 42, # The size of the font.
+                      "italic": True or False, # True if the text is italicized.
+                      "underline": True or False, # True if the text is underlined.
+                    },
+                    "title": "A String", # The title of this axis. If set, this overrides any title inferred
+                        # from headers of the data.
+                  },
+                ],
+              },
+              "title": "A String", # The title of the chart.
+            },
+          },
+        ],
+        "filterViews": [ # The filter views in this sheet.
+          { # A filter view.
+            "title": "A String", # The name of the filter view.
+            "namedRangeId": "A String", # The named range this filter view is backed by, if any.
+                #
+                # When writing, only one of range or named_range_id
+                # may be set.
+            "filterViewId": 42, # The ID of the filter view.
+            "range": { # A range on a sheet. # The range this filter view covers.
+                #
+                # When writing, only one of range or named_range_id
+                # may be set.
                 # All indexes are zero-based.
                 # Indexes are half open, e.g the start index is inclusive
                 # and the end index is exclusive -- [start_index, end_index).
@@ -31422,309 +45147,566 @@
               },
             },
           },
-          "charts": [ # The specifications of every chart on this sheet.
-            { # A chart embedded in a sheet.
-              "chartId": 42, # The ID of the chart.
-              "position": { # The position of an embedded object such as a chart. # The position of the chart.
-                "newSheet": True or False, # If true, the embedded object will be put on a new sheet whose ID
-                    # is chosen for you. Used only when writing.
-                "sheetId": 42, # The sheet this is on. Set only if the embedded object
-                    # is on its own sheet. Must be non-negative.
-                "overlayPosition": { # The location an object is overlaid on top of a grid. # The position at which the object is overlaid on top of a grid.
-                  "anchorCell": { # A coordinate in a sheet. # The cell the object is anchored to.
-                      # All indexes are zero-based.
-                    "rowIndex": 42, # The row index of the coordinate.
-                    "columnIndex": 42, # The column index of the coordinate.
-                    "sheetId": 42, # The sheet this coordinate is on.
-                  },
-                  "offsetYPixels": 42, # The vertical offset, in pixels, that the object is offset
-                      # from the anchor cell.
-                  "widthPixels": 42, # The width of the object, in pixels. Defaults to 600.
-                  "offsetXPixels": 42, # The horizontal offset, in pixels, that the object is offset
-                      # from the anchor cell.
-                  "heightPixels": 42, # The height of the object, in pixels. Defaults to 371.
-                },
+        ],
+        "protectedRanges": [ # The protected ranges in this sheet.
+          { # A protected range.
+            "unprotectedRanges": [ # The list of unprotected ranges within a protected sheet.
+                # Unprotected ranges are only supported on protected sheets.
+              { # A range on a sheet.
+                  # All indexes are zero-based.
+                  # Indexes are half open, e.g the start index is inclusive
+                  # and the end index is exclusive -- [start_index, end_index).
+                  # Missing indexes indicate the range is unbounded on that side.
+                  #
+                  # For example, if `"Sheet1"` is sheet ID 0, then:
+                  #
+                  #   `Sheet1!A1:A1 == sheet_id: 0,
+                  #                   start_row_index: 0, end_row_index: 1,
+                  #                   start_column_index: 0, end_column_index: 1`
+                  #
+                  #   `Sheet1!A3:B4 == sheet_id: 0,
+                  #                   start_row_index: 2, end_row_index: 4,
+                  #                   start_column_index: 0, end_column_index: 2`
+                  #
+                  #   `Sheet1!A:B == sheet_id: 0,
+                  #                 start_column_index: 0, end_column_index: 2`
+                  #
+                  #   `Sheet1!A5:B == sheet_id: 0,
+                  #                  start_row_index: 4,
+                  #                  start_column_index: 0, end_column_index: 2`
+                  #
+                  #   `Sheet1 == sheet_id:0`
+                  #
+                  # The start index must always be less than or equal to the end index.
+                  # If the start index equals the end index, then the range is empty.
+                  # Empty ranges are typically not meaningful and are usually rendered in the
+                  # UI as `#REF!`.
+                "endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
+                "startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
+                "sheetId": 42, # The sheet this range is on.
+                "startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
+                "endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
               },
-              "spec": { # The specifications of a chart. # The specification of the chart.
-                "hiddenDimensionStrategy": "A String", # Determines how the charts will use hidden rows or columns.
-                "pieChart": { # A <a href="/chart/interactive/docs/gallery/piechart">pie chart</a>. # A pie chart specification.
-                  "series": { # The data included in a domain or series. # The data that covers the one and only series of the pie chart.
-                    "sourceRange": { # Source ranges for a chart. # The source ranges of the data.
-                      "sources": [ # The ranges of data for a series or domain.
-                          # Exactly one dimension must have a length of 1,
-                          # and all sources in the list must have the same dimension
-                          # with length 1.
-                          # The domain (if it exists) & all series must have the same number
-                          # of source ranges. If using more than one source range, then the source
-                          # range at a given offset must be contiguous across the domain and series.
-                          #
-                          # For example, these are valid configurations:
-                          #
-                          #     domain sources: A1:A5
-                          #     series1 sources: B1:B5
-                          #     series2 sources: D6:D10
-                          #
-                          #     domain sources: A1:A5, C10:C12
-                          #     series1 sources: B1:B5, D10:D12
-                          #     series2 sources: C1:C5, E10:E12
-                        { # A range on a sheet.
-                            # All indexes are zero-based.
-                            # Indexes are half open, e.g the start index is inclusive
-                            # and the end index is exclusive -- [start_index, end_index).
-                            # Missing indexes indicate the range is unbounded on that side.
-                            #
-                            # For example, if `"Sheet1"` is sheet ID 0, then:
-                            #
-                            #   `Sheet1!A1:A1 == sheet_id: 0,
-                            #                   start_row_index: 0, end_row_index: 1,
-                            #                   start_column_index: 0, end_column_index: 1`
-                            #
-                            #   `Sheet1!A3:B4 == sheet_id: 0,
-                            #                   start_row_index: 2, end_row_index: 4,
-                            #                   start_column_index: 0, end_column_index: 2`
-                            #
-                            #   `Sheet1!A:B == sheet_id: 0,
-                            #                 start_column_index: 0, end_column_index: 2`
-                            #
-                            #   `Sheet1!A5:B == sheet_id: 0,
-                            #                  start_row_index: 4,
-                            #                  start_column_index: 0, end_column_index: 2`
-                            #
-                            #   `Sheet1 == sheet_id:0`
-                            #
-                            # The start index must always be less than or equal to the end index.
-                            # If the start index equals the end index, then the range is empty.
-                            # Empty ranges are typically not meaningful and are usually rendered in the
-                            # UI as `#REF!`.
-                          "endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
-                          "startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
-                          "sheetId": 42, # The sheet this range is on.
-                          "startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
-                          "endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
-                        },
-                      ],
-                    },
-                  },
-                  "domain": { # The data included in a domain or series. # The data that covers the domain of the pie chart.
-                    "sourceRange": { # Source ranges for a chart. # The source ranges of the data.
-                      "sources": [ # The ranges of data for a series or domain.
-                          # Exactly one dimension must have a length of 1,
-                          # and all sources in the list must have the same dimension
-                          # with length 1.
-                          # The domain (if it exists) & all series must have the same number
-                          # of source ranges. If using more than one source range, then the source
-                          # range at a given offset must be contiguous across the domain and series.
-                          #
-                          # For example, these are valid configurations:
-                          #
-                          #     domain sources: A1:A5
-                          #     series1 sources: B1:B5
-                          #     series2 sources: D6:D10
-                          #
-                          #     domain sources: A1:A5, C10:C12
-                          #     series1 sources: B1:B5, D10:D12
-                          #     series2 sources: C1:C5, E10:E12
-                        { # A range on a sheet.
-                            # All indexes are zero-based.
-                            # Indexes are half open, e.g the start index is inclusive
-                            # and the end index is exclusive -- [start_index, end_index).
-                            # Missing indexes indicate the range is unbounded on that side.
-                            #
-                            # For example, if `"Sheet1"` is sheet ID 0, then:
-                            #
-                            #   `Sheet1!A1:A1 == sheet_id: 0,
-                            #                   start_row_index: 0, end_row_index: 1,
-                            #                   start_column_index: 0, end_column_index: 1`
-                            #
-                            #   `Sheet1!A3:B4 == sheet_id: 0,
-                            #                   start_row_index: 2, end_row_index: 4,
-                            #                   start_column_index: 0, end_column_index: 2`
-                            #
-                            #   `Sheet1!A:B == sheet_id: 0,
-                            #                 start_column_index: 0, end_column_index: 2`
-                            #
-                            #   `Sheet1!A5:B == sheet_id: 0,
-                            #                  start_row_index: 4,
-                            #                  start_column_index: 0, end_column_index: 2`
-                            #
-                            #   `Sheet1 == sheet_id:0`
-                            #
-                            # The start index must always be less than or equal to the end index.
-                            # If the start index equals the end index, then the range is empty.
-                            # Empty ranges are typically not meaningful and are usually rendered in the
-                            # UI as `#REF!`.
-                          "endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
-                          "startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
-                          "sheetId": 42, # The sheet this range is on.
-                          "startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
-                          "endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
-                        },
-                      ],
-                    },
-                  },
-                  "threeDimensional": True or False, # True if the pie is three dimensional.
-                  "legendPosition": "A String", # Where the legend of the pie chart should be drawn.
-                  "pieHole": 3.14, # The size of the hole in the pie chart.
-                },
-                "basicChart": { # The specification for a basic chart.  See BasicChartType for the list # A basic chart specification, can be one of many kinds of charts.
-                    # See BasicChartType for the list of all
-                    # charts this supports.
-                    # of charts this supports.
-                  "headerCount": 42, # The number of rows or columns in the data that are "headers".
-                      # If not set, Google Sheets will guess how many rows are headers based
-                      # on the data.
-                      #
-                      # (Note that BasicChartAxis.title may override the axis title
-                      #  inferred from the header values.)
-                  "series": [ # The data this chart is visualizing.
-                    { # A single series of data in a chart.
-                        # For example, if charting stock prices over time, multiple series may exist,
-                        # one for the "Open Price", "High Price", "Low Price" and "Close Price".
-                      "series": { # The data included in a domain or series. # The data being visualized in this chart series.
-                        "sourceRange": { # Source ranges for a chart. # The source ranges of the data.
-                          "sources": [ # The ranges of data for a series or domain.
-                              # Exactly one dimension must have a length of 1,
-                              # and all sources in the list must have the same dimension
-                              # with length 1.
-                              # The domain (if it exists) & all series must have the same number
-                              # of source ranges. If using more than one source range, then the source
-                              # range at a given offset must be contiguous across the domain and series.
-                              #
-                              # For example, these are valid configurations:
-                              #
-                              #     domain sources: A1:A5
-                              #     series1 sources: B1:B5
-                              #     series2 sources: D6:D10
-                              #
-                              #     domain sources: A1:A5, C10:C12
-                              #     series1 sources: B1:B5, D10:D12
-                              #     series2 sources: C1:C5, E10:E12
-                            { # A range on a sheet.
-                                # All indexes are zero-based.
-                                # Indexes are half open, e.g the start index is inclusive
-                                # and the end index is exclusive -- [start_index, end_index).
-                                # Missing indexes indicate the range is unbounded on that side.
-                                #
-                                # For example, if `"Sheet1"` is sheet ID 0, then:
-                                #
-                                #   `Sheet1!A1:A1 == sheet_id: 0,
-                                #                   start_row_index: 0, end_row_index: 1,
-                                #                   start_column_index: 0, end_column_index: 1`
-                                #
-                                #   `Sheet1!A3:B4 == sheet_id: 0,
-                                #                   start_row_index: 2, end_row_index: 4,
-                                #                   start_column_index: 0, end_column_index: 2`
-                                #
-                                #   `Sheet1!A:B == sheet_id: 0,
-                                #                 start_column_index: 0, end_column_index: 2`
-                                #
-                                #   `Sheet1!A5:B == sheet_id: 0,
-                                #                  start_row_index: 4,
-                                #                  start_column_index: 0, end_column_index: 2`
-                                #
-                                #   `Sheet1 == sheet_id:0`
-                                #
-                                # The start index must always be less than or equal to the end index.
-                                # If the start index equals the end index, then the range is empty.
-                                # Empty ranges are typically not meaningful and are usually rendered in the
-                                # UI as `#REF!`.
-                              "endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
-                              "startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
-                              "sheetId": 42, # The sheet this range is on.
-                              "startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
-                              "endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
+            ],
+            "requestingUserCanEdit": True or False, # True if the user who requested this protected range can edit the
+                # protected area.
+                # This field is read-only.
+            "description": "A String", # The description of this protected range.
+            "namedRangeId": "A String", # The named range this protected range is backed by, if any.
+                #
+                # When writing, only one of range or named_range_id
+                # may be set.
+            "editors": { # The editors of a protected range. # The users and groups with edit access to the protected range.
+                # This field is only visible to users with edit access to the protected
+                # range and the document.
+                # Editors are not supported with warning_only protection.
+              "domainUsersCanEdit": True or False, # True if anyone in the document's domain has edit access to the protected
+                  # range.  Domain protection is only supported on documents within a domain.
+              "users": [ # The email addresses of users with edit access to the protected range.
+                "A String",
+              ],
+              "groups": [ # The email addresses of groups with edit access to the protected range.
+                "A String",
+              ],
+            },
+            "protectedRangeId": 42, # The ID of the protected range.
+                # This field is read-only.
+            "warningOnly": True or False, # True if this protected range will show a warning when editing.
+                # Warning-based protection means that every user can edit data in the
+                # protected range, except editing will prompt a warning asking the user
+                # to confirm the edit.
+                #
+                # When writing: if this field is true, then editors is ignored.
+                # Additionally, if this field is changed from true to false and the
+                # `editors` field is not set (nor included in the field mask), then
+                # the editors will be set to all the editors in the document.
+            "range": { # A range on a sheet. # The range that is being protected.
+                # The range may be fully unbounded, in which case this is considered
+                # a protected sheet.
+                #
+                # When writing, only one of range or named_range_id
+                # may be set.
+                # All indexes are zero-based.
+                # Indexes are half open, e.g the start index is inclusive
+                # and the end index is exclusive -- [start_index, end_index).
+                # Missing indexes indicate the range is unbounded on that side.
+                #
+                # For example, if `"Sheet1"` is sheet ID 0, then:
+                #
+                #   `Sheet1!A1:A1 == sheet_id: 0,
+                #                   start_row_index: 0, end_row_index: 1,
+                #                   start_column_index: 0, end_column_index: 1`
+                #
+                #   `Sheet1!A3:B4 == sheet_id: 0,
+                #                   start_row_index: 2, end_row_index: 4,
+                #                   start_column_index: 0, end_column_index: 2`
+                #
+                #   `Sheet1!A:B == sheet_id: 0,
+                #                 start_column_index: 0, end_column_index: 2`
+                #
+                #   `Sheet1!A5:B == sheet_id: 0,
+                #                  start_row_index: 4,
+                #                  start_column_index: 0, end_column_index: 2`
+                #
+                #   `Sheet1 == sheet_id:0`
+                #
+                # The start index must always be less than or equal to the end index.
+                # If the start index equals the end index, then the range is empty.
+                # Empty ranges are typically not meaningful and are usually rendered in the
+                # UI as `#REF!`.
+              "endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
+              "startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
+              "sheetId": 42, # The sheet this range is on.
+              "startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
+              "endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
+            },
+          },
+        ],
+        "data": [ # Data in the grid, if this is a grid sheet.
+            # The number of GridData objects returned is dependent on the number of
+            # ranges requested on this sheet. For example, if this is representing
+            # `Sheet1`, and the spreadsheet was requested with ranges
+            # `Sheet1!A1:C10` and `Sheet1!D15:E20`, then the first GridData will have a
+            # startRow/startColumn of `0`,
+            # while the second one will have `startRow 14` (zero-based row 15),
+            # and `startColumn 3` (zero-based column D).
+          { # Data in the grid, as well as metadata about the dimensions.
+            "startRow": 42, # The first row this GridData refers to, zero-based.
+            "rowMetadata": [ # Metadata about the requested rows in the grid, starting with the row
+                # in start_row.
+              { # Properties about a dimension.
+                "pixelSize": 42, # The height (if a row) or width (if a column) of the dimension in pixels.
+                "hiddenByUser": True or False, # True if this dimension is explicitly hidden.
+                "hiddenByFilter": True or False, # True if this dimension is being filtered.
+                    # This field is read-only.
+              },
+            ],
+            "startColumn": 42, # The first column this GridData refers to, zero-based.
+            "columnMetadata": [ # Metadata about the requested columns in the grid, starting with the column
+                # in start_column.
+              { # Properties about a dimension.
+                "pixelSize": 42, # The height (if a row) or width (if a column) of the dimension in pixels.
+                "hiddenByUser": True or False, # True if this dimension is explicitly hidden.
+                "hiddenByFilter": True or False, # True if this dimension is being filtered.
+                    # This field is read-only.
+              },
+            ],
+            "rowData": [ # The data in the grid, one entry per row,
+                # starting with the row in startRow.
+                # The values in RowData will correspond to columns starting
+                # at start_column.
+              { # Data about each cell in a row.
+                "values": [ # The values in the row, one per column.
+                  { # Data about a specific cell.
+                    "pivotTable": { # A pivot table. # A pivot table anchored at this cell. The size of pivot table itself
+                        # is computed dynamically based on its data, grouping, filters, values,
+                        # etc. Only the top-left cell of the pivot table contains the pivot table
+                        # definition. The other cells will contain the calculated values of the
+                        # results of the pivot in their effective_value fields.
+                      "valueLayout": "A String", # Whether values should be listed horizontally (as columns)
+                          # or vertically (as rows).
+                      "rows": [ # Each row grouping in the pivot table.
+                        { # A single grouping (either row or column) in a pivot table.
+                          "showTotals": True or False, # True if the pivot table should include the totals for this grouping.
+                          "valueMetadata": [ # Metadata about values in the grouping.
+                            { # Metadata about a value in a pivot grouping.
+                              "collapsed": True or False, # True if the data corresponding to the value is collapsed.
+                              "value": { # The kinds of value that a cell in a spreadsheet can have. # The calculated value the metadata corresponds to.
+                                  # (Note that formulaValue is not valid,
+                                  #  because the values will be calculated.)
+                                "numberValue": 3.14, # Represents a double value.
+                                    # Note: Dates, Times and DateTimes are represented as doubles in
+                                    # "serial number" format.
+                                "boolValue": True or False, # Represents a boolean value.
+                                "formulaValue": "A String", # Represents a formula.
+                                "stringValue": "A String", # Represents a string value.
+                                    # Leading single quotes are not included. For example, if the user typed
+                                    # `'123` into the UI, this would be represented as a `stringValue` of
+                                    # `"123"`.
+                                "errorValue": { # An error in a cell. # Represents an error.
+                                    # This field is read-only.
+                                  "message": "A String", # A message with more information about the error
+                                      # (in the spreadsheet's locale).
+                                  "type": "A String", # The type of error.
+                                },
+                              },
                             },
                           ],
+                          "valueBucket": { # Information about which values in a pivot group should be used for sorting. # The bucket of the opposite pivot group to sort by.
+                              # If not specified, sorting is alphabetical by this group's values.
+                            "buckets": [ # Determines the bucket from which values are chosen to sort.
+                                #
+                                # For example, in a pivot table with one row group & two column groups,
+                                # the row group can list up to two values. The first value corresponds
+                                # to a value within the first column group, and the second value
+                                # corresponds to a value in the second column group.  If no values
+                                # are listed, this would indicate that the row should be sorted according
+                                # to the "Grand Total" over the column groups. If a single value is listed,
+                                # this would correspond to using the "Total" of that bucket.
+                              { # The kinds of value that a cell in a spreadsheet can have.
+                                "numberValue": 3.14, # Represents a double value.
+                                    # Note: Dates, Times and DateTimes are represented as doubles in
+                                    # "serial number" format.
+                                "boolValue": True or False, # Represents a boolean value.
+                                "formulaValue": "A String", # Represents a formula.
+                                "stringValue": "A String", # Represents a string value.
+                                    # Leading single quotes are not included. For example, if the user typed
+                                    # `'123` into the UI, this would be represented as a `stringValue` of
+                                    # `"123"`.
+                                "errorValue": { # An error in a cell. # Represents an error.
+                                    # This field is read-only.
+                                  "message": "A String", # A message with more information about the error
+                                      # (in the spreadsheet's locale).
+                                  "type": "A String", # The type of error.
+                                },
+                              },
+                            ],
+                            "valuesIndex": 42, # The offset in the PivotTable.values list which the values in this
+                                # grouping should be sorted by.
+                          },
+                          "sortOrder": "A String", # The order the values in this group should be sorted.
+                          "sourceColumnOffset": 42, # The column offset of the source range that this grouping is based on.
+                              #
+                              # For example, if the source was `C10:E15`, a `sourceColumnOffset` of `0`
+                              # means this group refers to column `C`, whereas the offset `1` would refer
+                              # to column `D`.
+                        },
+                      ],
+                      "source": { # A range on a sheet. # The range the pivot table is reading data from.
+                          # All indexes are zero-based.
+                          # Indexes are half open, e.g the start index is inclusive
+                          # and the end index is exclusive -- [start_index, end_index).
+                          # Missing indexes indicate the range is unbounded on that side.
+                          #
+                          # For example, if `"Sheet1"` is sheet ID 0, then:
+                          #
+                          #   `Sheet1!A1:A1 == sheet_id: 0,
+                          #                   start_row_index: 0, end_row_index: 1,
+                          #                   start_column_index: 0, end_column_index: 1`
+                          #
+                          #   `Sheet1!A3:B4 == sheet_id: 0,
+                          #                   start_row_index: 2, end_row_index: 4,
+                          #                   start_column_index: 0, end_column_index: 2`
+                          #
+                          #   `Sheet1!A:B == sheet_id: 0,
+                          #                 start_column_index: 0, end_column_index: 2`
+                          #
+                          #   `Sheet1!A5:B == sheet_id: 0,
+                          #                  start_row_index: 4,
+                          #                  start_column_index: 0, end_column_index: 2`
+                          #
+                          #   `Sheet1 == sheet_id:0`
+                          #
+                          # The start index must always be less than or equal to the end index.
+                          # If the start index equals the end index, then the range is empty.
+                          # Empty ranges are typically not meaningful and are usually rendered in the
+                          # UI as `#REF!`.
+                        "endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
+                        "startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
+                        "sheetId": 42, # The sheet this range is on.
+                        "startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
+                        "endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
+                      },
+                      "values": [ # A list of values to include in the pivot table.
+                        { # The definition of how a value in a pivot table should be calculated.
+                          "formula": "A String", # A custom formula to calculate the value.  The formula must start
+                              # with an `=` character.
+                          "summarizeFunction": "A String", # A function to summarize the value.
+                              # If formula is set, the only supported values are
+                              # SUM and
+                              # CUSTOM.
+                              # If sourceColumnOffset is set, then `CUSTOM`
+                              # is not supported.
+                          "sourceColumnOffset": 42, # The column offset of the source range that this value reads from.
+                              #
+                              # For example, if the source was `C10:E15`, a `sourceColumnOffset` of `0`
+                              # means this value refers to column `C`, whereas the offset `1` would
+                              # refer to column `D`.
+                          "name": "A String", # A name to use for the value. This is only used if formula was set.
+                              # Otherwise, the column name is used.
+                        },
+                      ],
+                      "criteria": { # An optional mapping of filters per source column offset.
+                          #
+                          # The filters will be applied before aggregating data into the pivot table.
+                          # The map's key is the column offset of the source range that you want to
+                          # filter, and the value is the criteria for that column.
+                          #
+                          # For example, if the source was `C10:E15`, a key of `0` will have the filter
+                          # for column `C`, whereas the key `1` is for column `D`.
+                        "a_key": { # Criteria for showing/hiding rows in a pivot table.
+                          "visibleValues": [ # Values that should be included.  Values not listed here are excluded.
+                            "A String",
+                          ],
                         },
                       },
-                      "targetAxis": "A String", # The minor axis that will specify the range of values for this series.
-                          # For example, if charting stocks over time, the "Volume" series
-                          # may want to be pinned to the right with the prices pinned to the left,
-                          # because the scale of trading volume is different than the scale of
-                          # prices.
-                          # It is an error to specify an axis that isn't a valid minor axis
-                          # for the chart's type.
-                      "type": "A String", # The type of this series. Valid only if the
-                          # chartType is
-                          # COMBO.
-                          # Different types will change the way the series is visualized.
-                          # Only LINE, AREA,
-                          # and COLUMN are supported.
-                    },
-                  ],
-                  "legendPosition": "A String", # The position of the chart legend.
-                  "domains": [ # The domain of data this is charting.
-                      # Only a single domain is currently supported.
-                    { # The domain of a chart.
-                        # For example, if charting stock prices over time, this would be the date.
-                      "domain": { # The data included in a domain or series. # The data of the domain. For example, if charting stock prices over time,
-                          # this is the data representing the dates.
-                        "sourceRange": { # Source ranges for a chart. # The source ranges of the data.
-                          "sources": [ # The ranges of data for a series or domain.
-                              # Exactly one dimension must have a length of 1,
-                              # and all sources in the list must have the same dimension
-                              # with length 1.
-                              # The domain (if it exists) & all series must have the same number
-                              # of source ranges. If using more than one source range, then the source
-                              # range at a given offset must be contiguous across the domain and series.
-                              #
-                              # For example, these are valid configurations:
-                              #
-                              #     domain sources: A1:A5
-                              #     series1 sources: B1:B5
-                              #     series2 sources: D6:D10
-                              #
-                              #     domain sources: A1:A5, C10:C12
-                              #     series1 sources: B1:B5, D10:D12
-                              #     series2 sources: C1:C5, E10:E12
-                            { # A range on a sheet.
-                                # All indexes are zero-based.
-                                # Indexes are half open, e.g the start index is inclusive
-                                # and the end index is exclusive -- [start_index, end_index).
-                                # Missing indexes indicate the range is unbounded on that side.
-                                #
-                                # For example, if `"Sheet1"` is sheet ID 0, then:
-                                #
-                                #   `Sheet1!A1:A1 == sheet_id: 0,
-                                #                   start_row_index: 0, end_row_index: 1,
-                                #                   start_column_index: 0, end_column_index: 1`
-                                #
-                                #   `Sheet1!A3:B4 == sheet_id: 0,
-                                #                   start_row_index: 2, end_row_index: 4,
-                                #                   start_column_index: 0, end_column_index: 2`
-                                #
-                                #   `Sheet1!A:B == sheet_id: 0,
-                                #                 start_column_index: 0, end_column_index: 2`
-                                #
-                                #   `Sheet1!A5:B == sheet_id: 0,
-                                #                  start_row_index: 4,
-                                #                  start_column_index: 0, end_column_index: 2`
-                                #
-                                #   `Sheet1 == sheet_id:0`
-                                #
-                                # The start index must always be less than or equal to the end index.
-                                # If the start index equals the end index, then the range is empty.
-                                # Empty ranges are typically not meaningful and are usually rendered in the
-                                # UI as `#REF!`.
-                              "endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
-                              "startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
-                              "sheetId": 42, # The sheet this range is on.
-                              "startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
-                              "endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
+                      "columns": [ # Each column grouping in the pivot table.
+                        { # A single grouping (either row or column) in a pivot table.
+                          "showTotals": True or False, # True if the pivot table should include the totals for this grouping.
+                          "valueMetadata": [ # Metadata about values in the grouping.
+                            { # Metadata about a value in a pivot grouping.
+                              "collapsed": True or False, # True if the data corresponding to the value is collapsed.
+                              "value": { # The kinds of value that a cell in a spreadsheet can have. # The calculated value the metadata corresponds to.
+                                  # (Note that formulaValue is not valid,
+                                  #  because the values will be calculated.)
+                                "numberValue": 3.14, # Represents a double value.
+                                    # Note: Dates, Times and DateTimes are represented as doubles in
+                                    # "serial number" format.
+                                "boolValue": True or False, # Represents a boolean value.
+                                "formulaValue": "A String", # Represents a formula.
+                                "stringValue": "A String", # Represents a string value.
+                                    # Leading single quotes are not included. For example, if the user typed
+                                    # `'123` into the UI, this would be represented as a `stringValue` of
+                                    # `"123"`.
+                                "errorValue": { # An error in a cell. # Represents an error.
+                                    # This field is read-only.
+                                  "message": "A String", # A message with more information about the error
+                                      # (in the spreadsheet's locale).
+                                  "type": "A String", # The type of error.
+                                },
+                              },
                             },
                           ],
+                          "valueBucket": { # Information about which values in a pivot group should be used for sorting. # The bucket of the opposite pivot group to sort by.
+                              # If not specified, sorting is alphabetical by this group's values.
+                            "buckets": [ # Determines the bucket from which values are chosen to sort.
+                                #
+                                # For example, in a pivot table with one row group & two column groups,
+                                # the row group can list up to two values. The first value corresponds
+                                # to a value within the first column group, and the second value
+                                # corresponds to a value in the second column group.  If no values
+                                # are listed, this would indicate that the row should be sorted according
+                                # to the "Grand Total" over the column groups. If a single value is listed,
+                                # this would correspond to using the "Total" of that bucket.
+                              { # The kinds of value that a cell in a spreadsheet can have.
+                                "numberValue": 3.14, # Represents a double value.
+                                    # Note: Dates, Times and DateTimes are represented as doubles in
+                                    # "serial number" format.
+                                "boolValue": True or False, # Represents a boolean value.
+                                "formulaValue": "A String", # Represents a formula.
+                                "stringValue": "A String", # Represents a string value.
+                                    # Leading single quotes are not included. For example, if the user typed
+                                    # `'123` into the UI, this would be represented as a `stringValue` of
+                                    # `"123"`.
+                                "errorValue": { # An error in a cell. # Represents an error.
+                                    # This field is read-only.
+                                  "message": "A String", # A message with more information about the error
+                                      # (in the spreadsheet's locale).
+                                  "type": "A String", # The type of error.
+                                },
+                              },
+                            ],
+                            "valuesIndex": 42, # The offset in the PivotTable.values list which the values in this
+                                # grouping should be sorted by.
+                          },
+                          "sortOrder": "A String", # The order the values in this group should be sorted.
+                          "sourceColumnOffset": 42, # The column offset of the source range that this grouping is based on.
+                              #
+                              # For example, if the source was `C10:E15`, a `sourceColumnOffset` of `0`
+                              # means this group refers to column `C`, whereas the offset `1` would refer
+                              # to column `D`.
                         },
+                      ],
+                    },
+                    "hyperlink": "A String", # A hyperlink this cell points to, if any.
+                        # This field is read-only.  (To set it, use a `=HYPERLINK` formula.)
+                    "effectiveValue": { # The kinds of value that a cell in a spreadsheet can have. # The effective value of the cell. For cells with formulas, this will be
+                        # the calculated value.  For cells with literals, this will be
+                        # the same as the user_entered_value.
+                        # This field is read-only.
+                      "numberValue": 3.14, # Represents a double value.
+                          # Note: Dates, Times and DateTimes are represented as doubles in
+                          # "serial number" format.
+                      "boolValue": True or False, # Represents a boolean value.
+                      "formulaValue": "A String", # Represents a formula.
+                      "stringValue": "A String", # Represents a string value.
+                          # Leading single quotes are not included. For example, if the user typed
+                          # `'123` into the UI, this would be represented as a `stringValue` of
+                          # `"123"`.
+                      "errorValue": { # An error in a cell. # Represents an error.
+                          # This field is read-only.
+                        "message": "A String", # A message with more information about the error
+                            # (in the spreadsheet's locale).
+                        "type": "A String", # The type of error.
                       },
                     },
-                  ],
-                  "chartType": "A String", # The type of the chart.
-                  "axis": [ # The axis on the chart.
-                    { # An axis of the chart.
-                        # A chart may not have more than one axis per
-                        # axis position.
-                      "position": "A String", # The position of this axis.
-                      "format": { # The format of a run of text in a cell. # The format of the title.
-                          # Only valid if the axis is not associated with the domain.
+                    "formattedValue": "A String", # The formatted value of the cell.
+                        # This is the value as it's shown to the user.
+                        # This field is read-only.
+                    "userEnteredValue": { # The kinds of value that a cell in a spreadsheet can have. # The value the user entered in the cell. e.g, `1234`, `'Hello'`, or `=NOW()`
+                        # Note: Dates, Times and DateTimes are represented as doubles in
+                        # serial number format.
+                      "numberValue": 3.14, # Represents a double value.
+                          # Note: Dates, Times and DateTimes are represented as doubles in
+                          # "serial number" format.
+                      "boolValue": True or False, # Represents a boolean value.
+                      "formulaValue": "A String", # Represents a formula.
+                      "stringValue": "A String", # Represents a string value.
+                          # Leading single quotes are not included. For example, if the user typed
+                          # `'123` into the UI, this would be represented as a `stringValue` of
+                          # `"123"`.
+                      "errorValue": { # An error in a cell. # Represents an error.
+                          # This field is read-only.
+                        "message": "A String", # A message with more information about the error
+                            # (in the spreadsheet's locale).
+                        "type": "A String", # The type of error.
+                      },
+                    },
+                    "note": "A String", # Any note on the cell.
+                    "effectiveFormat": { # The format of a cell. # The effective format being used by the cell.
+                        # This includes the results of applying any conditional formatting and,
+                        # if the cell contains a formula, the computed number format.
+                        # If the effective format is the default format, effective format will
+                        # not be written.
+                        # This field is read-only.
+                      "numberFormat": { # The number format of a cell. # A format describing how number values should be represented to the user.
+                        "pattern": "A String", # Pattern string used for formatting.  If not set, a default pattern based on
+                            # the user's locale will be used if necessary for the given type.
+                            # See the [Date and Number Formats guide](/sheets/guides/formats) for more
+                            # information about the supported patterns.
+                        "type": "A String", # The type of the number format.
+                            # When writing, this field must be set.
+                      },
+                      "textDirection": "A String", # The direction of the text in the cell.
+                      "padding": { # The amount of padding around the cell, in pixels. # The padding of the cell.
+                          # When updating padding, every field must be specified.
+                        "top": 42, # The top padding of the cell.
+                        "right": 42, # The right padding of the cell.
+                        "bottom": 42, # The bottom padding of the cell.
+                        "left": 42, # The left padding of the cell.
+                      },
+                      "horizontalAlignment": "A String", # The horizontal alignment of the value in the cell.
+                      "backgroundColor": { # Represents a color in the RGBA color space. This representation is designed # The background color of the cell.
+                          # for simplicity of conversion to/from color representations in various
+                          # languages over compactness; for example, the fields of this representation
+                          # can be trivially provided to the constructor of "java.awt.Color" in Java; it
+                          # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
+                          # method in iOS; and, with just a little work, it can be easily formatted into
+                          # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
+                          #
+                          # Example (Java):
+                          #
+                          #      import com.google.type.Color;
+                          #
+                          #      // ...
+                          #      public static java.awt.Color fromProto(Color protocolor) {
+                          #        float alpha = protocolor.hasAlpha()
+                          #            ? protocolor.getAlpha().getValue()
+                          #            : 1.0;
+                          #
+                          #        return new java.awt.Color(
+                          #            protocolor.getRed(),
+                          #            protocolor.getGreen(),
+                          #            protocolor.getBlue(),
+                          #            alpha);
+                          #      }
+                          #
+                          #      public static Color toProto(java.awt.Color color) {
+                          #        float red = (float) color.getRed();
+                          #        float green = (float) color.getGreen();
+                          #        float blue = (float) color.getBlue();
+                          #        float denominator = 255.0;
+                          #        Color.Builder resultBuilder =
+                          #            Color
+                          #                .newBuilder()
+                          #                .setRed(red / denominator)
+                          #                .setGreen(green / denominator)
+                          #                .setBlue(blue / denominator);
+                          #        int alpha = color.getAlpha();
+                          #        if (alpha != 255) {
+                          #          result.setAlpha(
+                          #              FloatValue
+                          #                  .newBuilder()
+                          #                  .setValue(((float) alpha) / denominator)
+                          #                  .build());
+                          #        }
+                          #        return resultBuilder.build();
+                          #      }
+                          #      // ...
+                          #
+                          # Example (iOS / Obj-C):
+                          #
+                          #      // ...
+                          #      static UIColor* fromProto(Color* protocolor) {
+                          #         float red = [protocolor red];
+                          #         float green = [protocolor green];
+                          #         float blue = [protocolor blue];
+                          #         FloatValue* alpha_wrapper = [protocolor alpha];
+                          #         float alpha = 1.0;
+                          #         if (alpha_wrapper != nil) {
+                          #           alpha = [alpha_wrapper value];
+                          #         }
+                          #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
+                          #      }
+                          #
+                          #      static Color* toProto(UIColor* color) {
+                          #          CGFloat red, green, blue, alpha;
+                          #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
+                          #            return nil;
+                          #          }
+                          #          Color* result = [Color alloc] init];
+                          #          [result setRed:red];
+                          #          [result setGreen:green];
+                          #          [result setBlue:blue];
+                          #          if (alpha <= 0.9999) {
+                          #            [result setAlpha:floatWrapperWithValue(alpha)];
+                          #          }
+                          #          [result autorelease];
+                          #          return result;
+                          #     }
+                          #     // ...
+                          #
+                          #  Example (JavaScript):
+                          #
+                          #     // ...
+                          #
+                          #     var protoToCssColor = function(rgb_color) {
+                          #        var redFrac = rgb_color.red || 0.0;
+                          #        var greenFrac = rgb_color.green || 0.0;
+                          #        var blueFrac = rgb_color.blue || 0.0;
+                          #        var red = Math.floor(redFrac * 255);
+                          #        var green = Math.floor(greenFrac * 255);
+                          #        var blue = Math.floor(blueFrac * 255);
+                          #
+                          #        if (!('alpha' in rgb_color)) {
+                          #           return rgbToCssColor_(red, green, blue);
+                          #        }
+                          #
+                          #        var alphaFrac = rgb_color.alpha.value || 0.0;
+                          #        var rgbParams = [red, green, blue].join(',');
+                          #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
+                          #     };
+                          #
+                          #     var rgbToCssColor_ = function(red, green, blue) {
+                          #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
+                          #       var hexString = rgbNumber.toString(16);
+                          #       var missingZeros = 6 - hexString.length;
+                          #       var resultBuilder = ['#'];
+                          #       for (var i = 0; i < missingZeros; i++) {
+                          #          resultBuilder.push('0');
+                          #       }
+                          #       resultBuilder.push(hexString);
+                          #       return resultBuilder.join('');
+                          #     };
+                          #
+                          #     // ...
+                        "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+                        "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
+                            # the final pixel color is defined by the equation:
+                            #
+                            #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
+                            #
+                            # This means that a value of 1.0 corresponds to a solid color, whereas
+                            # a value of 0.0 corresponds to a completely transparent color. This
+                            # uses a wrapper message rather than a simple float scalar so that it is
+                            # possible to distinguish between a default value and the value being unset.
+                            # If omitted, this color object is to be rendered as a solid color
+                            # (as if the alpha value had been explicitly given with a value of 1.0).
+                        "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
+                        "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
+                      },
+                      "verticalAlignment": "A String", # The vertical alignment of the value in the cell.
+                      "textFormat": { # The format of a run of text in a cell. # The format of the text in the cell (unless overridden by a format run).
                           # Absent values indicate that the field isn't specified.
                         "foregroundColor": { # Represents a color in the RGBA color space. This representation is designed # The foreground color of the text.
                             # for simplicity of conversion to/from color representations in various
@@ -31862,2519 +45844,1731 @@
                         "italic": True or False, # True if the text is italicized.
                         "underline": True or False, # True if the text is underlined.
                       },
-                      "title": "A String", # The title of this axis. If set, this overrides any title inferred
-                          # from headers of the data.
+                      "hyperlinkDisplayType": "A String", # How a hyperlink, if it exists, should be displayed in the cell.
+                      "borders": { # The borders of the cell. # The borders of the cell.
+                        "top": { # A border along a cell. # The top border of the cell.
+                          "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
+                              # for simplicity of conversion to/from color representations in various
+                              # languages over compactness; for example, the fields of this representation
+                              # can be trivially provided to the constructor of "java.awt.Color" in Java; it
+                              # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
+                              # method in iOS; and, with just a little work, it can be easily formatted into
+                              # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
+                              #
+                              # Example (Java):
+                              #
+                              #      import com.google.type.Color;
+                              #
+                              #      // ...
+                              #      public static java.awt.Color fromProto(Color protocolor) {
+                              #        float alpha = protocolor.hasAlpha()
+                              #            ? protocolor.getAlpha().getValue()
+                              #            : 1.0;
+                              #
+                              #        return new java.awt.Color(
+                              #            protocolor.getRed(),
+                              #            protocolor.getGreen(),
+                              #            protocolor.getBlue(),
+                              #            alpha);
+                              #      }
+                              #
+                              #      public static Color toProto(java.awt.Color color) {
+                              #        float red = (float) color.getRed();
+                              #        float green = (float) color.getGreen();
+                              #        float blue = (float) color.getBlue();
+                              #        float denominator = 255.0;
+                              #        Color.Builder resultBuilder =
+                              #            Color
+                              #                .newBuilder()
+                              #                .setRed(red / denominator)
+                              #                .setGreen(green / denominator)
+                              #                .setBlue(blue / denominator);
+                              #        int alpha = color.getAlpha();
+                              #        if (alpha != 255) {
+                              #          result.setAlpha(
+                              #              FloatValue
+                              #                  .newBuilder()
+                              #                  .setValue(((float) alpha) / denominator)
+                              #                  .build());
+                              #        }
+                              #        return resultBuilder.build();
+                              #      }
+                              #      // ...
+                              #
+                              # Example (iOS / Obj-C):
+                              #
+                              #      // ...
+                              #      static UIColor* fromProto(Color* protocolor) {
+                              #         float red = [protocolor red];
+                              #         float green = [protocolor green];
+                              #         float blue = [protocolor blue];
+                              #         FloatValue* alpha_wrapper = [protocolor alpha];
+                              #         float alpha = 1.0;
+                              #         if (alpha_wrapper != nil) {
+                              #           alpha = [alpha_wrapper value];
+                              #         }
+                              #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
+                              #      }
+                              #
+                              #      static Color* toProto(UIColor* color) {
+                              #          CGFloat red, green, blue, alpha;
+                              #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
+                              #            return nil;
+                              #          }
+                              #          Color* result = [Color alloc] init];
+                              #          [result setRed:red];
+                              #          [result setGreen:green];
+                              #          [result setBlue:blue];
+                              #          if (alpha <= 0.9999) {
+                              #            [result setAlpha:floatWrapperWithValue(alpha)];
+                              #          }
+                              #          [result autorelease];
+                              #          return result;
+                              #     }
+                              #     // ...
+                              #
+                              #  Example (JavaScript):
+                              #
+                              #     // ...
+                              #
+                              #     var protoToCssColor = function(rgb_color) {
+                              #        var redFrac = rgb_color.red || 0.0;
+                              #        var greenFrac = rgb_color.green || 0.0;
+                              #        var blueFrac = rgb_color.blue || 0.0;
+                              #        var red = Math.floor(redFrac * 255);
+                              #        var green = Math.floor(greenFrac * 255);
+                              #        var blue = Math.floor(blueFrac * 255);
+                              #
+                              #        if (!('alpha' in rgb_color)) {
+                              #           return rgbToCssColor_(red, green, blue);
+                              #        }
+                              #
+                              #        var alphaFrac = rgb_color.alpha.value || 0.0;
+                              #        var rgbParams = [red, green, blue].join(',');
+                              #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
+                              #     };
+                              #
+                              #     var rgbToCssColor_ = function(red, green, blue) {
+                              #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
+                              #       var hexString = rgbNumber.toString(16);
+                              #       var missingZeros = 6 - hexString.length;
+                              #       var resultBuilder = ['#'];
+                              #       for (var i = 0; i < missingZeros; i++) {
+                              #          resultBuilder.push('0');
+                              #       }
+                              #       resultBuilder.push(hexString);
+                              #       return resultBuilder.join('');
+                              #     };
+                              #
+                              #     // ...
+                            "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+                            "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
+                                # the final pixel color is defined by the equation:
+                                #
+                                #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
+                                #
+                                # This means that a value of 1.0 corresponds to a solid color, whereas
+                                # a value of 0.0 corresponds to a completely transparent color. This
+                                # uses a wrapper message rather than a simple float scalar so that it is
+                                # possible to distinguish between a default value and the value being unset.
+                                # If omitted, this color object is to be rendered as a solid color
+                                # (as if the alpha value had been explicitly given with a value of 1.0).
+                            "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
+                            "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
+                          },
+                          "width": 42, # The width of the border, in pixels.
+                              # Deprecated; the width is determined by the "style" field.
+                          "style": "A String", # The style of the border.
+                        },
+                        "right": { # A border along a cell. # The right border of the cell.
+                          "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
+                              # for simplicity of conversion to/from color representations in various
+                              # languages over compactness; for example, the fields of this representation
+                              # can be trivially provided to the constructor of "java.awt.Color" in Java; it
+                              # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
+                              # method in iOS; and, with just a little work, it can be easily formatted into
+                              # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
+                              #
+                              # Example (Java):
+                              #
+                              #      import com.google.type.Color;
+                              #
+                              #      // ...
+                              #      public static java.awt.Color fromProto(Color protocolor) {
+                              #        float alpha = protocolor.hasAlpha()
+                              #            ? protocolor.getAlpha().getValue()
+                              #            : 1.0;
+                              #
+                              #        return new java.awt.Color(
+                              #            protocolor.getRed(),
+                              #            protocolor.getGreen(),
+                              #            protocolor.getBlue(),
+                              #            alpha);
+                              #      }
+                              #
+                              #      public static Color toProto(java.awt.Color color) {
+                              #        float red = (float) color.getRed();
+                              #        float green = (float) color.getGreen();
+                              #        float blue = (float) color.getBlue();
+                              #        float denominator = 255.0;
+                              #        Color.Builder resultBuilder =
+                              #            Color
+                              #                .newBuilder()
+                              #                .setRed(red / denominator)
+                              #                .setGreen(green / denominator)
+                              #                .setBlue(blue / denominator);
+                              #        int alpha = color.getAlpha();
+                              #        if (alpha != 255) {
+                              #          result.setAlpha(
+                              #              FloatValue
+                              #                  .newBuilder()
+                              #                  .setValue(((float) alpha) / denominator)
+                              #                  .build());
+                              #        }
+                              #        return resultBuilder.build();
+                              #      }
+                              #      // ...
+                              #
+                              # Example (iOS / Obj-C):
+                              #
+                              #      // ...
+                              #      static UIColor* fromProto(Color* protocolor) {
+                              #         float red = [protocolor red];
+                              #         float green = [protocolor green];
+                              #         float blue = [protocolor blue];
+                              #         FloatValue* alpha_wrapper = [protocolor alpha];
+                              #         float alpha = 1.0;
+                              #         if (alpha_wrapper != nil) {
+                              #           alpha = [alpha_wrapper value];
+                              #         }
+                              #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
+                              #      }
+                              #
+                              #      static Color* toProto(UIColor* color) {
+                              #          CGFloat red, green, blue, alpha;
+                              #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
+                              #            return nil;
+                              #          }
+                              #          Color* result = [Color alloc] init];
+                              #          [result setRed:red];
+                              #          [result setGreen:green];
+                              #          [result setBlue:blue];
+                              #          if (alpha <= 0.9999) {
+                              #            [result setAlpha:floatWrapperWithValue(alpha)];
+                              #          }
+                              #          [result autorelease];
+                              #          return result;
+                              #     }
+                              #     // ...
+                              #
+                              #  Example (JavaScript):
+                              #
+                              #     // ...
+                              #
+                              #     var protoToCssColor = function(rgb_color) {
+                              #        var redFrac = rgb_color.red || 0.0;
+                              #        var greenFrac = rgb_color.green || 0.0;
+                              #        var blueFrac = rgb_color.blue || 0.0;
+                              #        var red = Math.floor(redFrac * 255);
+                              #        var green = Math.floor(greenFrac * 255);
+                              #        var blue = Math.floor(blueFrac * 255);
+                              #
+                              #        if (!('alpha' in rgb_color)) {
+                              #           return rgbToCssColor_(red, green, blue);
+                              #        }
+                              #
+                              #        var alphaFrac = rgb_color.alpha.value || 0.0;
+                              #        var rgbParams = [red, green, blue].join(',');
+                              #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
+                              #     };
+                              #
+                              #     var rgbToCssColor_ = function(red, green, blue) {
+                              #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
+                              #       var hexString = rgbNumber.toString(16);
+                              #       var missingZeros = 6 - hexString.length;
+                              #       var resultBuilder = ['#'];
+                              #       for (var i = 0; i < missingZeros; i++) {
+                              #          resultBuilder.push('0');
+                              #       }
+                              #       resultBuilder.push(hexString);
+                              #       return resultBuilder.join('');
+                              #     };
+                              #
+                              #     // ...
+                            "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+                            "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
+                                # the final pixel color is defined by the equation:
+                                #
+                                #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
+                                #
+                                # This means that a value of 1.0 corresponds to a solid color, whereas
+                                # a value of 0.0 corresponds to a completely transparent color. This
+                                # uses a wrapper message rather than a simple float scalar so that it is
+                                # possible to distinguish between a default value and the value being unset.
+                                # If omitted, this color object is to be rendered as a solid color
+                                # (as if the alpha value had been explicitly given with a value of 1.0).
+                            "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
+                            "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
+                          },
+                          "width": 42, # The width of the border, in pixels.
+                              # Deprecated; the width is determined by the "style" field.
+                          "style": "A String", # The style of the border.
+                        },
+                        "bottom": { # A border along a cell. # The bottom border of the cell.
+                          "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
+                              # for simplicity of conversion to/from color representations in various
+                              # languages over compactness; for example, the fields of this representation
+                              # can be trivially provided to the constructor of "java.awt.Color" in Java; it
+                              # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
+                              # method in iOS; and, with just a little work, it can be easily formatted into
+                              # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
+                              #
+                              # Example (Java):
+                              #
+                              #      import com.google.type.Color;
+                              #
+                              #      // ...
+                              #      public static java.awt.Color fromProto(Color protocolor) {
+                              #        float alpha = protocolor.hasAlpha()
+                              #            ? protocolor.getAlpha().getValue()
+                              #            : 1.0;
+                              #
+                              #        return new java.awt.Color(
+                              #            protocolor.getRed(),
+                              #            protocolor.getGreen(),
+                              #            protocolor.getBlue(),
+                              #            alpha);
+                              #      }
+                              #
+                              #      public static Color toProto(java.awt.Color color) {
+                              #        float red = (float) color.getRed();
+                              #        float green = (float) color.getGreen();
+                              #        float blue = (float) color.getBlue();
+                              #        float denominator = 255.0;
+                              #        Color.Builder resultBuilder =
+                              #            Color
+                              #                .newBuilder()
+                              #                .setRed(red / denominator)
+                              #                .setGreen(green / denominator)
+                              #                .setBlue(blue / denominator);
+                              #        int alpha = color.getAlpha();
+                              #        if (alpha != 255) {
+                              #          result.setAlpha(
+                              #              FloatValue
+                              #                  .newBuilder()
+                              #                  .setValue(((float) alpha) / denominator)
+                              #                  .build());
+                              #        }
+                              #        return resultBuilder.build();
+                              #      }
+                              #      // ...
+                              #
+                              # Example (iOS / Obj-C):
+                              #
+                              #      // ...
+                              #      static UIColor* fromProto(Color* protocolor) {
+                              #         float red = [protocolor red];
+                              #         float green = [protocolor green];
+                              #         float blue = [protocolor blue];
+                              #         FloatValue* alpha_wrapper = [protocolor alpha];
+                              #         float alpha = 1.0;
+                              #         if (alpha_wrapper != nil) {
+                              #           alpha = [alpha_wrapper value];
+                              #         }
+                              #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
+                              #      }
+                              #
+                              #      static Color* toProto(UIColor* color) {
+                              #          CGFloat red, green, blue, alpha;
+                              #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
+                              #            return nil;
+                              #          }
+                              #          Color* result = [Color alloc] init];
+                              #          [result setRed:red];
+                              #          [result setGreen:green];
+                              #          [result setBlue:blue];
+                              #          if (alpha <= 0.9999) {
+                              #            [result setAlpha:floatWrapperWithValue(alpha)];
+                              #          }
+                              #          [result autorelease];
+                              #          return result;
+                              #     }
+                              #     // ...
+                              #
+                              #  Example (JavaScript):
+                              #
+                              #     // ...
+                              #
+                              #     var protoToCssColor = function(rgb_color) {
+                              #        var redFrac = rgb_color.red || 0.0;
+                              #        var greenFrac = rgb_color.green || 0.0;
+                              #        var blueFrac = rgb_color.blue || 0.0;
+                              #        var red = Math.floor(redFrac * 255);
+                              #        var green = Math.floor(greenFrac * 255);
+                              #        var blue = Math.floor(blueFrac * 255);
+                              #
+                              #        if (!('alpha' in rgb_color)) {
+                              #           return rgbToCssColor_(red, green, blue);
+                              #        }
+                              #
+                              #        var alphaFrac = rgb_color.alpha.value || 0.0;
+                              #        var rgbParams = [red, green, blue].join(',');
+                              #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
+                              #     };
+                              #
+                              #     var rgbToCssColor_ = function(red, green, blue) {
+                              #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
+                              #       var hexString = rgbNumber.toString(16);
+                              #       var missingZeros = 6 - hexString.length;
+                              #       var resultBuilder = ['#'];
+                              #       for (var i = 0; i < missingZeros; i++) {
+                              #          resultBuilder.push('0');
+                              #       }
+                              #       resultBuilder.push(hexString);
+                              #       return resultBuilder.join('');
+                              #     };
+                              #
+                              #     // ...
+                            "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+                            "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
+                                # the final pixel color is defined by the equation:
+                                #
+                                #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
+                                #
+                                # This means that a value of 1.0 corresponds to a solid color, whereas
+                                # a value of 0.0 corresponds to a completely transparent color. This
+                                # uses a wrapper message rather than a simple float scalar so that it is
+                                # possible to distinguish between a default value and the value being unset.
+                                # If omitted, this color object is to be rendered as a solid color
+                                # (as if the alpha value had been explicitly given with a value of 1.0).
+                            "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
+                            "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
+                          },
+                          "width": 42, # The width of the border, in pixels.
+                              # Deprecated; the width is determined by the "style" field.
+                          "style": "A String", # The style of the border.
+                        },
+                        "left": { # A border along a cell. # The left border of the cell.
+                          "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
+                              # for simplicity of conversion to/from color representations in various
+                              # languages over compactness; for example, the fields of this representation
+                              # can be trivially provided to the constructor of "java.awt.Color" in Java; it
+                              # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
+                              # method in iOS; and, with just a little work, it can be easily formatted into
+                              # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
+                              #
+                              # Example (Java):
+                              #
+                              #      import com.google.type.Color;
+                              #
+                              #      // ...
+                              #      public static java.awt.Color fromProto(Color protocolor) {
+                              #        float alpha = protocolor.hasAlpha()
+                              #            ? protocolor.getAlpha().getValue()
+                              #            : 1.0;
+                              #
+                              #        return new java.awt.Color(
+                              #            protocolor.getRed(),
+                              #            protocolor.getGreen(),
+                              #            protocolor.getBlue(),
+                              #            alpha);
+                              #      }
+                              #
+                              #      public static Color toProto(java.awt.Color color) {
+                              #        float red = (float) color.getRed();
+                              #        float green = (float) color.getGreen();
+                              #        float blue = (float) color.getBlue();
+                              #        float denominator = 255.0;
+                              #        Color.Builder resultBuilder =
+                              #            Color
+                              #                .newBuilder()
+                              #                .setRed(red / denominator)
+                              #                .setGreen(green / denominator)
+                              #                .setBlue(blue / denominator);
+                              #        int alpha = color.getAlpha();
+                              #        if (alpha != 255) {
+                              #          result.setAlpha(
+                              #              FloatValue
+                              #                  .newBuilder()
+                              #                  .setValue(((float) alpha) / denominator)
+                              #                  .build());
+                              #        }
+                              #        return resultBuilder.build();
+                              #      }
+                              #      // ...
+                              #
+                              # Example (iOS / Obj-C):
+                              #
+                              #      // ...
+                              #      static UIColor* fromProto(Color* protocolor) {
+                              #         float red = [protocolor red];
+                              #         float green = [protocolor green];
+                              #         float blue = [protocolor blue];
+                              #         FloatValue* alpha_wrapper = [protocolor alpha];
+                              #         float alpha = 1.0;
+                              #         if (alpha_wrapper != nil) {
+                              #           alpha = [alpha_wrapper value];
+                              #         }
+                              #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
+                              #      }
+                              #
+                              #      static Color* toProto(UIColor* color) {
+                              #          CGFloat red, green, blue, alpha;
+                              #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
+                              #            return nil;
+                              #          }
+                              #          Color* result = [Color alloc] init];
+                              #          [result setRed:red];
+                              #          [result setGreen:green];
+                              #          [result setBlue:blue];
+                              #          if (alpha <= 0.9999) {
+                              #            [result setAlpha:floatWrapperWithValue(alpha)];
+                              #          }
+                              #          [result autorelease];
+                              #          return result;
+                              #     }
+                              #     // ...
+                              #
+                              #  Example (JavaScript):
+                              #
+                              #     // ...
+                              #
+                              #     var protoToCssColor = function(rgb_color) {
+                              #        var redFrac = rgb_color.red || 0.0;
+                              #        var greenFrac = rgb_color.green || 0.0;
+                              #        var blueFrac = rgb_color.blue || 0.0;
+                              #        var red = Math.floor(redFrac * 255);
+                              #        var green = Math.floor(greenFrac * 255);
+                              #        var blue = Math.floor(blueFrac * 255);
+                              #
+                              #        if (!('alpha' in rgb_color)) {
+                              #           return rgbToCssColor_(red, green, blue);
+                              #        }
+                              #
+                              #        var alphaFrac = rgb_color.alpha.value || 0.0;
+                              #        var rgbParams = [red, green, blue].join(',');
+                              #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
+                              #     };
+                              #
+                              #     var rgbToCssColor_ = function(red, green, blue) {
+                              #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
+                              #       var hexString = rgbNumber.toString(16);
+                              #       var missingZeros = 6 - hexString.length;
+                              #       var resultBuilder = ['#'];
+                              #       for (var i = 0; i < missingZeros; i++) {
+                              #          resultBuilder.push('0');
+                              #       }
+                              #       resultBuilder.push(hexString);
+                              #       return resultBuilder.join('');
+                              #     };
+                              #
+                              #     // ...
+                            "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+                            "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
+                                # the final pixel color is defined by the equation:
+                                #
+                                #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
+                                #
+                                # This means that a value of 1.0 corresponds to a solid color, whereas
+                                # a value of 0.0 corresponds to a completely transparent color. This
+                                # uses a wrapper message rather than a simple float scalar so that it is
+                                # possible to distinguish between a default value and the value being unset.
+                                # If omitted, this color object is to be rendered as a solid color
+                                # (as if the alpha value had been explicitly given with a value of 1.0).
+                            "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
+                            "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
+                          },
+                          "width": 42, # The width of the border, in pixels.
+                              # Deprecated; the width is determined by the "style" field.
+                          "style": "A String", # The style of the border.
+                        },
+                      },
+                      "wrapStrategy": "A String", # The wrap strategy for the value in the cell.
                     },
-                  ],
-                },
-                "title": "A String", # The title of the chart.
-              },
-            },
-          ],
-          "filterViews": [ # The filter views in this sheet.
-            { # A filter view.
-              "title": "A String", # The name of the filter view.
-              "namedRangeId": "A String", # The named range this filter view is backed by, if any.
-                  #
-                  # When writing, only one of range or named_range_id
-                  # may be set.
-              "filterViewId": 42, # The ID of the filter view.
-              "range": { # A range on a sheet. # The range this filter view covers.
-                  #
-                  # When writing, only one of range or named_range_id
-                  # may be set.
-                  # All indexes are zero-based.
-                  # Indexes are half open, e.g the start index is inclusive
-                  # and the end index is exclusive -- [start_index, end_index).
-                  # Missing indexes indicate the range is unbounded on that side.
-                  #
-                  # For example, if `"Sheet1"` is sheet ID 0, then:
-                  #
-                  #   `Sheet1!A1:A1 == sheet_id: 0,
-                  #                   start_row_index: 0, end_row_index: 1,
-                  #                   start_column_index: 0, end_column_index: 1`
-                  #
-                  #   `Sheet1!A3:B4 == sheet_id: 0,
-                  #                   start_row_index: 2, end_row_index: 4,
-                  #                   start_column_index: 0, end_column_index: 2`
-                  #
-                  #   `Sheet1!A:B == sheet_id: 0,
-                  #                 start_column_index: 0, end_column_index: 2`
-                  #
-                  #   `Sheet1!A5:B == sheet_id: 0,
-                  #                  start_row_index: 4,
-                  #                  start_column_index: 0, end_column_index: 2`
-                  #
-                  #   `Sheet1 == sheet_id:0`
-                  #
-                  # The start index must always be less than or equal to the end index.
-                  # If the start index equals the end index, then the range is empty.
-                  # Empty ranges are typically not meaningful and are usually rendered in the
-                  # UI as `#REF!`.
-                "endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
-                "startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
-                "sheetId": 42, # The sheet this range is on.
-                "startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
-                "endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
-              },
-              "sortSpecs": [ # The sort order per column. Later specifications are used when values
-                  # are equal in the earlier specifications.
-                { # A sort order associated with a specific column or row.
-                  "sortOrder": "A String", # The order data should be sorted.
-                  "dimensionIndex": 42, # The dimension the sort should be applied to.
-                },
-              ],
-              "criteria": { # The criteria for showing/hiding values per column.
-                  # The map's key is the column index, and the value is the criteria for
-                  # that column.
-                "a_key": { # Criteria for showing/hiding rows in a filter or filter view.
-                  "hiddenValues": [ # Values that should be hidden.
-                    "A String",
-                  ],
-                  "condition": { # A condition that can evaluate to true or false. # A condition that must be true for values to be shown.
-                      # (This does not override hiddenValues -- if a value is listed there,
-                      #  it will still be hidden.)
-                      # BooleanConditions are used by conditional formatting,
-                      # data validation, and the criteria in filters.
-                    "type": "A String", # The type of condition.
-                    "values": [ # The values of the condition. The number of supported values depends
-                        # on the condition type.  Some support zero values,
-                        # others one or two values,
-                        # and ConditionType.ONE_OF_LIST supports an arbitrary number of values.
-                      { # The value of the condition.
-                        "relativeDate": "A String", # A relative date (based on the current date).
-                            # Valid only if the type is
-                            # DATE_BEFORE,
-                            # DATE_AFTER,
-                            # DATE_ON_OR_BEFORE or
-                            # DATE_ON_OR_AFTER.
+                    "userEnteredFormat": { # The format of a cell. # The format the user entered for the cell.
+                        #
+                        # When writing, the new format will be merged with the existing format.
+                      "numberFormat": { # The number format of a cell. # A format describing how number values should be represented to the user.
+                        "pattern": "A String", # Pattern string used for formatting.  If not set, a default pattern based on
+                            # the user's locale will be used if necessary for the given type.
+                            # See the [Date and Number Formats guide](/sheets/guides/formats) for more
+                            # information about the supported patterns.
+                        "type": "A String", # The type of the number format.
+                            # When writing, this field must be set.
+                      },
+                      "textDirection": "A String", # The direction of the text in the cell.
+                      "padding": { # The amount of padding around the cell, in pixels. # The padding of the cell.
+                          # When updating padding, every field must be specified.
+                        "top": 42, # The top padding of the cell.
+                        "right": 42, # The right padding of the cell.
+                        "bottom": 42, # The bottom padding of the cell.
+                        "left": 42, # The left padding of the cell.
+                      },
+                      "horizontalAlignment": "A String", # The horizontal alignment of the value in the cell.
+                      "backgroundColor": { # Represents a color in the RGBA color space. This representation is designed # The background color of the cell.
+                          # for simplicity of conversion to/from color representations in various
+                          # languages over compactness; for example, the fields of this representation
+                          # can be trivially provided to the constructor of "java.awt.Color" in Java; it
+                          # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
+                          # method in iOS; and, with just a little work, it can be easily formatted into
+                          # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
+                          #
+                          # Example (Java):
+                          #
+                          #      import com.google.type.Color;
+                          #
+                          #      // ...
+                          #      public static java.awt.Color fromProto(Color protocolor) {
+                          #        float alpha = protocolor.hasAlpha()
+                          #            ? protocolor.getAlpha().getValue()
+                          #            : 1.0;
+                          #
+                          #        return new java.awt.Color(
+                          #            protocolor.getRed(),
+                          #            protocolor.getGreen(),
+                          #            protocolor.getBlue(),
+                          #            alpha);
+                          #      }
+                          #
+                          #      public static Color toProto(java.awt.Color color) {
+                          #        float red = (float) color.getRed();
+                          #        float green = (float) color.getGreen();
+                          #        float blue = (float) color.getBlue();
+                          #        float denominator = 255.0;
+                          #        Color.Builder resultBuilder =
+                          #            Color
+                          #                .newBuilder()
+                          #                .setRed(red / denominator)
+                          #                .setGreen(green / denominator)
+                          #                .setBlue(blue / denominator);
+                          #        int alpha = color.getAlpha();
+                          #        if (alpha != 255) {
+                          #          result.setAlpha(
+                          #              FloatValue
+                          #                  .newBuilder()
+                          #                  .setValue(((float) alpha) / denominator)
+                          #                  .build());
+                          #        }
+                          #        return resultBuilder.build();
+                          #      }
+                          #      // ...
+                          #
+                          # Example (iOS / Obj-C):
+                          #
+                          #      // ...
+                          #      static UIColor* fromProto(Color* protocolor) {
+                          #         float red = [protocolor red];
+                          #         float green = [protocolor green];
+                          #         float blue = [protocolor blue];
+                          #         FloatValue* alpha_wrapper = [protocolor alpha];
+                          #         float alpha = 1.0;
+                          #         if (alpha_wrapper != nil) {
+                          #           alpha = [alpha_wrapper value];
+                          #         }
+                          #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
+                          #      }
+                          #
+                          #      static Color* toProto(UIColor* color) {
+                          #          CGFloat red, green, blue, alpha;
+                          #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
+                          #            return nil;
+                          #          }
+                          #          Color* result = [Color alloc] init];
+                          #          [result setRed:red];
+                          #          [result setGreen:green];
+                          #          [result setBlue:blue];
+                          #          if (alpha <= 0.9999) {
+                          #            [result setAlpha:floatWrapperWithValue(alpha)];
+                          #          }
+                          #          [result autorelease];
+                          #          return result;
+                          #     }
+                          #     // ...
+                          #
+                          #  Example (JavaScript):
+                          #
+                          #     // ...
+                          #
+                          #     var protoToCssColor = function(rgb_color) {
+                          #        var redFrac = rgb_color.red || 0.0;
+                          #        var greenFrac = rgb_color.green || 0.0;
+                          #        var blueFrac = rgb_color.blue || 0.0;
+                          #        var red = Math.floor(redFrac * 255);
+                          #        var green = Math.floor(greenFrac * 255);
+                          #        var blue = Math.floor(blueFrac * 255);
+                          #
+                          #        if (!('alpha' in rgb_color)) {
+                          #           return rgbToCssColor_(red, green, blue);
+                          #        }
+                          #
+                          #        var alphaFrac = rgb_color.alpha.value || 0.0;
+                          #        var rgbParams = [red, green, blue].join(',');
+                          #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
+                          #     };
+                          #
+                          #     var rgbToCssColor_ = function(red, green, blue) {
+                          #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
+                          #       var hexString = rgbNumber.toString(16);
+                          #       var missingZeros = 6 - hexString.length;
+                          #       var resultBuilder = ['#'];
+                          #       for (var i = 0; i < missingZeros; i++) {
+                          #          resultBuilder.push('0');
+                          #       }
+                          #       resultBuilder.push(hexString);
+                          #       return resultBuilder.join('');
+                          #     };
+                          #
+                          #     // ...
+                        "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+                        "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
+                            # the final pixel color is defined by the equation:
                             #
-                            # Relative dates are not supported in data validation.
-                            # They are supported only in conditional formatting and
-                            # conditional filters.
-                        "userEnteredValue": "A String", # A value the condition is based on.
-                            # The value will be parsed as if the user typed into a cell.
-                            # Formulas are supported (and must begin with an `=`).
+                            #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
+                            #
+                            # This means that a value of 1.0 corresponds to a solid color, whereas
+                            # a value of 0.0 corresponds to a completely transparent color. This
+                            # uses a wrapper message rather than a simple float scalar so that it is
+                            # possible to distinguish between a default value and the value being unset.
+                            # If omitted, this color object is to be rendered as a solid color
+                            # (as if the alpha value had been explicitly given with a value of 1.0).
+                        "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
+                        "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
+                      },
+                      "verticalAlignment": "A String", # The vertical alignment of the value in the cell.
+                      "textFormat": { # The format of a run of text in a cell. # The format of the text in the cell (unless overridden by a format run).
+                          # Absent values indicate that the field isn't specified.
+                        "foregroundColor": { # Represents a color in the RGBA color space. This representation is designed # The foreground color of the text.
+                            # for simplicity of conversion to/from color representations in various
+                            # languages over compactness; for example, the fields of this representation
+                            # can be trivially provided to the constructor of "java.awt.Color" in Java; it
+                            # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
+                            # method in iOS; and, with just a little work, it can be easily formatted into
+                            # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
+                            #
+                            # Example (Java):
+                            #
+                            #      import com.google.type.Color;
+                            #
+                            #      // ...
+                            #      public static java.awt.Color fromProto(Color protocolor) {
+                            #        float alpha = protocolor.hasAlpha()
+                            #            ? protocolor.getAlpha().getValue()
+                            #            : 1.0;
+                            #
+                            #        return new java.awt.Color(
+                            #            protocolor.getRed(),
+                            #            protocolor.getGreen(),
+                            #            protocolor.getBlue(),
+                            #            alpha);
+                            #      }
+                            #
+                            #      public static Color toProto(java.awt.Color color) {
+                            #        float red = (float) color.getRed();
+                            #        float green = (float) color.getGreen();
+                            #        float blue = (float) color.getBlue();
+                            #        float denominator = 255.0;
+                            #        Color.Builder resultBuilder =
+                            #            Color
+                            #                .newBuilder()
+                            #                .setRed(red / denominator)
+                            #                .setGreen(green / denominator)
+                            #                .setBlue(blue / denominator);
+                            #        int alpha = color.getAlpha();
+                            #        if (alpha != 255) {
+                            #          result.setAlpha(
+                            #              FloatValue
+                            #                  .newBuilder()
+                            #                  .setValue(((float) alpha) / denominator)
+                            #                  .build());
+                            #        }
+                            #        return resultBuilder.build();
+                            #      }
+                            #      // ...
+                            #
+                            # Example (iOS / Obj-C):
+                            #
+                            #      // ...
+                            #      static UIColor* fromProto(Color* protocolor) {
+                            #         float red = [protocolor red];
+                            #         float green = [protocolor green];
+                            #         float blue = [protocolor blue];
+                            #         FloatValue* alpha_wrapper = [protocolor alpha];
+                            #         float alpha = 1.0;
+                            #         if (alpha_wrapper != nil) {
+                            #           alpha = [alpha_wrapper value];
+                            #         }
+                            #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
+                            #      }
+                            #
+                            #      static Color* toProto(UIColor* color) {
+                            #          CGFloat red, green, blue, alpha;
+                            #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
+                            #            return nil;
+                            #          }
+                            #          Color* result = [Color alloc] init];
+                            #          [result setRed:red];
+                            #          [result setGreen:green];
+                            #          [result setBlue:blue];
+                            #          if (alpha <= 0.9999) {
+                            #            [result setAlpha:floatWrapperWithValue(alpha)];
+                            #          }
+                            #          [result autorelease];
+                            #          return result;
+                            #     }
+                            #     // ...
+                            #
+                            #  Example (JavaScript):
+                            #
+                            #     // ...
+                            #
+                            #     var protoToCssColor = function(rgb_color) {
+                            #        var redFrac = rgb_color.red || 0.0;
+                            #        var greenFrac = rgb_color.green || 0.0;
+                            #        var blueFrac = rgb_color.blue || 0.0;
+                            #        var red = Math.floor(redFrac * 255);
+                            #        var green = Math.floor(greenFrac * 255);
+                            #        var blue = Math.floor(blueFrac * 255);
+                            #
+                            #        if (!('alpha' in rgb_color)) {
+                            #           return rgbToCssColor_(red, green, blue);
+                            #        }
+                            #
+                            #        var alphaFrac = rgb_color.alpha.value || 0.0;
+                            #        var rgbParams = [red, green, blue].join(',');
+                            #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
+                            #     };
+                            #
+                            #     var rgbToCssColor_ = function(red, green, blue) {
+                            #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
+                            #       var hexString = rgbNumber.toString(16);
+                            #       var missingZeros = 6 - hexString.length;
+                            #       var resultBuilder = ['#'];
+                            #       for (var i = 0; i < missingZeros; i++) {
+                            #          resultBuilder.push('0');
+                            #       }
+                            #       resultBuilder.push(hexString);
+                            #       return resultBuilder.join('');
+                            #     };
+                            #
+                            #     // ...
+                          "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+                          "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
+                              # the final pixel color is defined by the equation:
+                              #
+                              #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
+                              #
+                              # This means that a value of 1.0 corresponds to a solid color, whereas
+                              # a value of 0.0 corresponds to a completely transparent color. This
+                              # uses a wrapper message rather than a simple float scalar so that it is
+                              # possible to distinguish between a default value and the value being unset.
+                              # If omitted, this color object is to be rendered as a solid color
+                              # (as if the alpha value had been explicitly given with a value of 1.0).
+                          "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
+                          "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
+                        },
+                        "bold": True or False, # True if the text is bold.
+                        "strikethrough": True or False, # True if the text has a strikethrough.
+                        "fontFamily": "A String", # The font family.
+                        "fontSize": 42, # The size of the font.
+                        "italic": True or False, # True if the text is italicized.
+                        "underline": True or False, # True if the text is underlined.
+                      },
+                      "hyperlinkDisplayType": "A String", # How a hyperlink, if it exists, should be displayed in the cell.
+                      "borders": { # The borders of the cell. # The borders of the cell.
+                        "top": { # A border along a cell. # The top border of the cell.
+                          "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
+                              # for simplicity of conversion to/from color representations in various
+                              # languages over compactness; for example, the fields of this representation
+                              # can be trivially provided to the constructor of "java.awt.Color" in Java; it
+                              # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
+                              # method in iOS; and, with just a little work, it can be easily formatted into
+                              # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
+                              #
+                              # Example (Java):
+                              #
+                              #      import com.google.type.Color;
+                              #
+                              #      // ...
+                              #      public static java.awt.Color fromProto(Color protocolor) {
+                              #        float alpha = protocolor.hasAlpha()
+                              #            ? protocolor.getAlpha().getValue()
+                              #            : 1.0;
+                              #
+                              #        return new java.awt.Color(
+                              #            protocolor.getRed(),
+                              #            protocolor.getGreen(),
+                              #            protocolor.getBlue(),
+                              #            alpha);
+                              #      }
+                              #
+                              #      public static Color toProto(java.awt.Color color) {
+                              #        float red = (float) color.getRed();
+                              #        float green = (float) color.getGreen();
+                              #        float blue = (float) color.getBlue();
+                              #        float denominator = 255.0;
+                              #        Color.Builder resultBuilder =
+                              #            Color
+                              #                .newBuilder()
+                              #                .setRed(red / denominator)
+                              #                .setGreen(green / denominator)
+                              #                .setBlue(blue / denominator);
+                              #        int alpha = color.getAlpha();
+                              #        if (alpha != 255) {
+                              #          result.setAlpha(
+                              #              FloatValue
+                              #                  .newBuilder()
+                              #                  .setValue(((float) alpha) / denominator)
+                              #                  .build());
+                              #        }
+                              #        return resultBuilder.build();
+                              #      }
+                              #      // ...
+                              #
+                              # Example (iOS / Obj-C):
+                              #
+                              #      // ...
+                              #      static UIColor* fromProto(Color* protocolor) {
+                              #         float red = [protocolor red];
+                              #         float green = [protocolor green];
+                              #         float blue = [protocolor blue];
+                              #         FloatValue* alpha_wrapper = [protocolor alpha];
+                              #         float alpha = 1.0;
+                              #         if (alpha_wrapper != nil) {
+                              #           alpha = [alpha_wrapper value];
+                              #         }
+                              #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
+                              #      }
+                              #
+                              #      static Color* toProto(UIColor* color) {
+                              #          CGFloat red, green, blue, alpha;
+                              #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
+                              #            return nil;
+                              #          }
+                              #          Color* result = [Color alloc] init];
+                              #          [result setRed:red];
+                              #          [result setGreen:green];
+                              #          [result setBlue:blue];
+                              #          if (alpha <= 0.9999) {
+                              #            [result setAlpha:floatWrapperWithValue(alpha)];
+                              #          }
+                              #          [result autorelease];
+                              #          return result;
+                              #     }
+                              #     // ...
+                              #
+                              #  Example (JavaScript):
+                              #
+                              #     // ...
+                              #
+                              #     var protoToCssColor = function(rgb_color) {
+                              #        var redFrac = rgb_color.red || 0.0;
+                              #        var greenFrac = rgb_color.green || 0.0;
+                              #        var blueFrac = rgb_color.blue || 0.0;
+                              #        var red = Math.floor(redFrac * 255);
+                              #        var green = Math.floor(greenFrac * 255);
+                              #        var blue = Math.floor(blueFrac * 255);
+                              #
+                              #        if (!('alpha' in rgb_color)) {
+                              #           return rgbToCssColor_(red, green, blue);
+                              #        }
+                              #
+                              #        var alphaFrac = rgb_color.alpha.value || 0.0;
+                              #        var rgbParams = [red, green, blue].join(',');
+                              #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
+                              #     };
+                              #
+                              #     var rgbToCssColor_ = function(red, green, blue) {
+                              #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
+                              #       var hexString = rgbNumber.toString(16);
+                              #       var missingZeros = 6 - hexString.length;
+                              #       var resultBuilder = ['#'];
+                              #       for (var i = 0; i < missingZeros; i++) {
+                              #          resultBuilder.push('0');
+                              #       }
+                              #       resultBuilder.push(hexString);
+                              #       return resultBuilder.join('');
+                              #     };
+                              #
+                              #     // ...
+                            "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+                            "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
+                                # the final pixel color is defined by the equation:
+                                #
+                                #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
+                                #
+                                # This means that a value of 1.0 corresponds to a solid color, whereas
+                                # a value of 0.0 corresponds to a completely transparent color. This
+                                # uses a wrapper message rather than a simple float scalar so that it is
+                                # possible to distinguish between a default value and the value being unset.
+                                # If omitted, this color object is to be rendered as a solid color
+                                # (as if the alpha value had been explicitly given with a value of 1.0).
+                            "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
+                            "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
+                          },
+                          "width": 42, # The width of the border, in pixels.
+                              # Deprecated; the width is determined by the "style" field.
+                          "style": "A String", # The style of the border.
+                        },
+                        "right": { # A border along a cell. # The right border of the cell.
+                          "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
+                              # for simplicity of conversion to/from color representations in various
+                              # languages over compactness; for example, the fields of this representation
+                              # can be trivially provided to the constructor of "java.awt.Color" in Java; it
+                              # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
+                              # method in iOS; and, with just a little work, it can be easily formatted into
+                              # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
+                              #
+                              # Example (Java):
+                              #
+                              #      import com.google.type.Color;
+                              #
+                              #      // ...
+                              #      public static java.awt.Color fromProto(Color protocolor) {
+                              #        float alpha = protocolor.hasAlpha()
+                              #            ? protocolor.getAlpha().getValue()
+                              #            : 1.0;
+                              #
+                              #        return new java.awt.Color(
+                              #            protocolor.getRed(),
+                              #            protocolor.getGreen(),
+                              #            protocolor.getBlue(),
+                              #            alpha);
+                              #      }
+                              #
+                              #      public static Color toProto(java.awt.Color color) {
+                              #        float red = (float) color.getRed();
+                              #        float green = (float) color.getGreen();
+                              #        float blue = (float) color.getBlue();
+                              #        float denominator = 255.0;
+                              #        Color.Builder resultBuilder =
+                              #            Color
+                              #                .newBuilder()
+                              #                .setRed(red / denominator)
+                              #                .setGreen(green / denominator)
+                              #                .setBlue(blue / denominator);
+                              #        int alpha = color.getAlpha();
+                              #        if (alpha != 255) {
+                              #          result.setAlpha(
+                              #              FloatValue
+                              #                  .newBuilder()
+                              #                  .setValue(((float) alpha) / denominator)
+                              #                  .build());
+                              #        }
+                              #        return resultBuilder.build();
+                              #      }
+                              #      // ...
+                              #
+                              # Example (iOS / Obj-C):
+                              #
+                              #      // ...
+                              #      static UIColor* fromProto(Color* protocolor) {
+                              #         float red = [protocolor red];
+                              #         float green = [protocolor green];
+                              #         float blue = [protocolor blue];
+                              #         FloatValue* alpha_wrapper = [protocolor alpha];
+                              #         float alpha = 1.0;
+                              #         if (alpha_wrapper != nil) {
+                              #           alpha = [alpha_wrapper value];
+                              #         }
+                              #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
+                              #      }
+                              #
+                              #      static Color* toProto(UIColor* color) {
+                              #          CGFloat red, green, blue, alpha;
+                              #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
+                              #            return nil;
+                              #          }
+                              #          Color* result = [Color alloc] init];
+                              #          [result setRed:red];
+                              #          [result setGreen:green];
+                              #          [result setBlue:blue];
+                              #          if (alpha <= 0.9999) {
+                              #            [result setAlpha:floatWrapperWithValue(alpha)];
+                              #          }
+                              #          [result autorelease];
+                              #          return result;
+                              #     }
+                              #     // ...
+                              #
+                              #  Example (JavaScript):
+                              #
+                              #     // ...
+                              #
+                              #     var protoToCssColor = function(rgb_color) {
+                              #        var redFrac = rgb_color.red || 0.0;
+                              #        var greenFrac = rgb_color.green || 0.0;
+                              #        var blueFrac = rgb_color.blue || 0.0;
+                              #        var red = Math.floor(redFrac * 255);
+                              #        var green = Math.floor(greenFrac * 255);
+                              #        var blue = Math.floor(blueFrac * 255);
+                              #
+                              #        if (!('alpha' in rgb_color)) {
+                              #           return rgbToCssColor_(red, green, blue);
+                              #        }
+                              #
+                              #        var alphaFrac = rgb_color.alpha.value || 0.0;
+                              #        var rgbParams = [red, green, blue].join(',');
+                              #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
+                              #     };
+                              #
+                              #     var rgbToCssColor_ = function(red, green, blue) {
+                              #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
+                              #       var hexString = rgbNumber.toString(16);
+                              #       var missingZeros = 6 - hexString.length;
+                              #       var resultBuilder = ['#'];
+                              #       for (var i = 0; i < missingZeros; i++) {
+                              #          resultBuilder.push('0');
+                              #       }
+                              #       resultBuilder.push(hexString);
+                              #       return resultBuilder.join('');
+                              #     };
+                              #
+                              #     // ...
+                            "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+                            "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
+                                # the final pixel color is defined by the equation:
+                                #
+                                #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
+                                #
+                                # This means that a value of 1.0 corresponds to a solid color, whereas
+                                # a value of 0.0 corresponds to a completely transparent color. This
+                                # uses a wrapper message rather than a simple float scalar so that it is
+                                # possible to distinguish between a default value and the value being unset.
+                                # If omitted, this color object is to be rendered as a solid color
+                                # (as if the alpha value had been explicitly given with a value of 1.0).
+                            "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
+                            "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
+                          },
+                          "width": 42, # The width of the border, in pixels.
+                              # Deprecated; the width is determined by the "style" field.
+                          "style": "A String", # The style of the border.
+                        },
+                        "bottom": { # A border along a cell. # The bottom border of the cell.
+                          "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
+                              # for simplicity of conversion to/from color representations in various
+                              # languages over compactness; for example, the fields of this representation
+                              # can be trivially provided to the constructor of "java.awt.Color" in Java; it
+                              # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
+                              # method in iOS; and, with just a little work, it can be easily formatted into
+                              # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
+                              #
+                              # Example (Java):
+                              #
+                              #      import com.google.type.Color;
+                              #
+                              #      // ...
+                              #      public static java.awt.Color fromProto(Color protocolor) {
+                              #        float alpha = protocolor.hasAlpha()
+                              #            ? protocolor.getAlpha().getValue()
+                              #            : 1.0;
+                              #
+                              #        return new java.awt.Color(
+                              #            protocolor.getRed(),
+                              #            protocolor.getGreen(),
+                              #            protocolor.getBlue(),
+                              #            alpha);
+                              #      }
+                              #
+                              #      public static Color toProto(java.awt.Color color) {
+                              #        float red = (float) color.getRed();
+                              #        float green = (float) color.getGreen();
+                              #        float blue = (float) color.getBlue();
+                              #        float denominator = 255.0;
+                              #        Color.Builder resultBuilder =
+                              #            Color
+                              #                .newBuilder()
+                              #                .setRed(red / denominator)
+                              #                .setGreen(green / denominator)
+                              #                .setBlue(blue / denominator);
+                              #        int alpha = color.getAlpha();
+                              #        if (alpha != 255) {
+                              #          result.setAlpha(
+                              #              FloatValue
+                              #                  .newBuilder()
+                              #                  .setValue(((float) alpha) / denominator)
+                              #                  .build());
+                              #        }
+                              #        return resultBuilder.build();
+                              #      }
+                              #      // ...
+                              #
+                              # Example (iOS / Obj-C):
+                              #
+                              #      // ...
+                              #      static UIColor* fromProto(Color* protocolor) {
+                              #         float red = [protocolor red];
+                              #         float green = [protocolor green];
+                              #         float blue = [protocolor blue];
+                              #         FloatValue* alpha_wrapper = [protocolor alpha];
+                              #         float alpha = 1.0;
+                              #         if (alpha_wrapper != nil) {
+                              #           alpha = [alpha_wrapper value];
+                              #         }
+                              #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
+                              #      }
+                              #
+                              #      static Color* toProto(UIColor* color) {
+                              #          CGFloat red, green, blue, alpha;
+                              #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
+                              #            return nil;
+                              #          }
+                              #          Color* result = [Color alloc] init];
+                              #          [result setRed:red];
+                              #          [result setGreen:green];
+                              #          [result setBlue:blue];
+                              #          if (alpha <= 0.9999) {
+                              #            [result setAlpha:floatWrapperWithValue(alpha)];
+                              #          }
+                              #          [result autorelease];
+                              #          return result;
+                              #     }
+                              #     // ...
+                              #
+                              #  Example (JavaScript):
+                              #
+                              #     // ...
+                              #
+                              #     var protoToCssColor = function(rgb_color) {
+                              #        var redFrac = rgb_color.red || 0.0;
+                              #        var greenFrac = rgb_color.green || 0.0;
+                              #        var blueFrac = rgb_color.blue || 0.0;
+                              #        var red = Math.floor(redFrac * 255);
+                              #        var green = Math.floor(greenFrac * 255);
+                              #        var blue = Math.floor(blueFrac * 255);
+                              #
+                              #        if (!('alpha' in rgb_color)) {
+                              #           return rgbToCssColor_(red, green, blue);
+                              #        }
+                              #
+                              #        var alphaFrac = rgb_color.alpha.value || 0.0;
+                              #        var rgbParams = [red, green, blue].join(',');
+                              #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
+                              #     };
+                              #
+                              #     var rgbToCssColor_ = function(red, green, blue) {
+                              #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
+                              #       var hexString = rgbNumber.toString(16);
+                              #       var missingZeros = 6 - hexString.length;
+                              #       var resultBuilder = ['#'];
+                              #       for (var i = 0; i < missingZeros; i++) {
+                              #          resultBuilder.push('0');
+                              #       }
+                              #       resultBuilder.push(hexString);
+                              #       return resultBuilder.join('');
+                              #     };
+                              #
+                              #     // ...
+                            "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+                            "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
+                                # the final pixel color is defined by the equation:
+                                #
+                                #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
+                                #
+                                # This means that a value of 1.0 corresponds to a solid color, whereas
+                                # a value of 0.0 corresponds to a completely transparent color. This
+                                # uses a wrapper message rather than a simple float scalar so that it is
+                                # possible to distinguish between a default value and the value being unset.
+                                # If omitted, this color object is to be rendered as a solid color
+                                # (as if the alpha value had been explicitly given with a value of 1.0).
+                            "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
+                            "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
+                          },
+                          "width": 42, # The width of the border, in pixels.
+                              # Deprecated; the width is determined by the "style" field.
+                          "style": "A String", # The style of the border.
+                        },
+                        "left": { # A border along a cell. # The left border of the cell.
+                          "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
+                              # for simplicity of conversion to/from color representations in various
+                              # languages over compactness; for example, the fields of this representation
+                              # can be trivially provided to the constructor of "java.awt.Color" in Java; it
+                              # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
+                              # method in iOS; and, with just a little work, it can be easily formatted into
+                              # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
+                              #
+                              # Example (Java):
+                              #
+                              #      import com.google.type.Color;
+                              #
+                              #      // ...
+                              #      public static java.awt.Color fromProto(Color protocolor) {
+                              #        float alpha = protocolor.hasAlpha()
+                              #            ? protocolor.getAlpha().getValue()
+                              #            : 1.0;
+                              #
+                              #        return new java.awt.Color(
+                              #            protocolor.getRed(),
+                              #            protocolor.getGreen(),
+                              #            protocolor.getBlue(),
+                              #            alpha);
+                              #      }
+                              #
+                              #      public static Color toProto(java.awt.Color color) {
+                              #        float red = (float) color.getRed();
+                              #        float green = (float) color.getGreen();
+                              #        float blue = (float) color.getBlue();
+                              #        float denominator = 255.0;
+                              #        Color.Builder resultBuilder =
+                              #            Color
+                              #                .newBuilder()
+                              #                .setRed(red / denominator)
+                              #                .setGreen(green / denominator)
+                              #                .setBlue(blue / denominator);
+                              #        int alpha = color.getAlpha();
+                              #        if (alpha != 255) {
+                              #          result.setAlpha(
+                              #              FloatValue
+                              #                  .newBuilder()
+                              #                  .setValue(((float) alpha) / denominator)
+                              #                  .build());
+                              #        }
+                              #        return resultBuilder.build();
+                              #      }
+                              #      // ...
+                              #
+                              # Example (iOS / Obj-C):
+                              #
+                              #      // ...
+                              #      static UIColor* fromProto(Color* protocolor) {
+                              #         float red = [protocolor red];
+                              #         float green = [protocolor green];
+                              #         float blue = [protocolor blue];
+                              #         FloatValue* alpha_wrapper = [protocolor alpha];
+                              #         float alpha = 1.0;
+                              #         if (alpha_wrapper != nil) {
+                              #           alpha = [alpha_wrapper value];
+                              #         }
+                              #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
+                              #      }
+                              #
+                              #      static Color* toProto(UIColor* color) {
+                              #          CGFloat red, green, blue, alpha;
+                              #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
+                              #            return nil;
+                              #          }
+                              #          Color* result = [Color alloc] init];
+                              #          [result setRed:red];
+                              #          [result setGreen:green];
+                              #          [result setBlue:blue];
+                              #          if (alpha <= 0.9999) {
+                              #            [result setAlpha:floatWrapperWithValue(alpha)];
+                              #          }
+                              #          [result autorelease];
+                              #          return result;
+                              #     }
+                              #     // ...
+                              #
+                              #  Example (JavaScript):
+                              #
+                              #     // ...
+                              #
+                              #     var protoToCssColor = function(rgb_color) {
+                              #        var redFrac = rgb_color.red || 0.0;
+                              #        var greenFrac = rgb_color.green || 0.0;
+                              #        var blueFrac = rgb_color.blue || 0.0;
+                              #        var red = Math.floor(redFrac * 255);
+                              #        var green = Math.floor(greenFrac * 255);
+                              #        var blue = Math.floor(blueFrac * 255);
+                              #
+                              #        if (!('alpha' in rgb_color)) {
+                              #           return rgbToCssColor_(red, green, blue);
+                              #        }
+                              #
+                              #        var alphaFrac = rgb_color.alpha.value || 0.0;
+                              #        var rgbParams = [red, green, blue].join(',');
+                              #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
+                              #     };
+                              #
+                              #     var rgbToCssColor_ = function(red, green, blue) {
+                              #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
+                              #       var hexString = rgbNumber.toString(16);
+                              #       var missingZeros = 6 - hexString.length;
+                              #       var resultBuilder = ['#'];
+                              #       for (var i = 0; i < missingZeros; i++) {
+                              #          resultBuilder.push('0');
+                              #       }
+                              #       resultBuilder.push(hexString);
+                              #       return resultBuilder.join('');
+                              #     };
+                              #
+                              #     // ...
+                            "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+                            "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
+                                # the final pixel color is defined by the equation:
+                                #
+                                #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
+                                #
+                                # This means that a value of 1.0 corresponds to a solid color, whereas
+                                # a value of 0.0 corresponds to a completely transparent color. This
+                                # uses a wrapper message rather than a simple float scalar so that it is
+                                # possible to distinguish between a default value and the value being unset.
+                                # If omitted, this color object is to be rendered as a solid color
+                                # (as if the alpha value had been explicitly given with a value of 1.0).
+                            "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
+                            "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
+                          },
+                          "width": 42, # The width of the border, in pixels.
+                              # Deprecated; the width is determined by the "style" field.
+                          "style": "A String", # The style of the border.
+                        },
+                      },
+                      "wrapStrategy": "A String", # The wrap strategy for the value in the cell.
+                    },
+                    "dataValidation": { # A data validation rule. # A data validation rule on the cell, if any.
+                        #
+                        # When writing, the new data validation rule will overwrite any prior rule.
+                      "showCustomUi": True or False, # True if the UI should be customized based on the kind of condition.
+                          # If true, "List" conditions will show a dropdown.
+                      "strict": True or False, # True if invalid data should be rejected.
+                      "inputMessage": "A String", # A message to show the user when adding data to the cell.
+                      "condition": { # A condition that can evaluate to true or false. # The condition that data in the cell must match.
+                          # BooleanConditions are used by conditional formatting,
+                          # data validation, and the criteria in filters.
+                        "type": "A String", # The type of condition.
+                        "values": [ # The values of the condition. The number of supported values depends
+                            # on the condition type.  Some support zero values,
+                            # others one or two values,
+                            # and ConditionType.ONE_OF_LIST supports an arbitrary number of values.
+                          { # The value of the condition.
+                            "relativeDate": "A String", # A relative date (based on the current date).
+                                # Valid only if the type is
+                                # DATE_BEFORE,
+                                # DATE_AFTER,
+                                # DATE_ON_OR_BEFORE or
+                                # DATE_ON_OR_AFTER.
+                                #
+                                # Relative dates are not supported in data validation.
+                                # They are supported only in conditional formatting and
+                                # conditional filters.
+                            "userEnteredValue": "A String", # A value the condition is based on.
+                                # The value will be parsed as if the user typed into a cell.
+                                # Formulas are supported (and must begin with an `=`).
+                          },
+                        ],
+                      },
+                    },
+                    "textFormatRuns": [ # Runs of rich text applied to subsections of the cell.  Runs are only valid
+                        # on user entered strings, not formulas, bools, or numbers.
+                        # Runs start at specific indexes in the text and continue until the next
+                        # run. Properties of a run will continue unless explicitly changed
+                        # in a subsequent run (and properties of the first run will continue
+                        # the properties of the cell unless explicitly changed).
+                        #
+                        # When writing, the new runs will overwrite any prior runs.  When writing a
+                        # new user_entered_value, previous runs will be erased.
+                      { # A run of a text format. The format of this run continues until the start
+                          # index of the next run.
+                          # When updating, all fields must be set.
+                        "startIndex": 42, # The character index where this run starts.
+                        "format": { # The format of a run of text in a cell. # The format of this run.  Absent values inherit the cell's format.
+                            # Absent values indicate that the field isn't specified.
+                          "foregroundColor": { # Represents a color in the RGBA color space. This representation is designed # The foreground color of the text.
+                              # for simplicity of conversion to/from color representations in various
+                              # languages over compactness; for example, the fields of this representation
+                              # can be trivially provided to the constructor of "java.awt.Color" in Java; it
+                              # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
+                              # method in iOS; and, with just a little work, it can be easily formatted into
+                              # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
+                              #
+                              # Example (Java):
+                              #
+                              #      import com.google.type.Color;
+                              #
+                              #      // ...
+                              #      public static java.awt.Color fromProto(Color protocolor) {
+                              #        float alpha = protocolor.hasAlpha()
+                              #            ? protocolor.getAlpha().getValue()
+                              #            : 1.0;
+                              #
+                              #        return new java.awt.Color(
+                              #            protocolor.getRed(),
+                              #            protocolor.getGreen(),
+                              #            protocolor.getBlue(),
+                              #            alpha);
+                              #      }
+                              #
+                              #      public static Color toProto(java.awt.Color color) {
+                              #        float red = (float) color.getRed();
+                              #        float green = (float) color.getGreen();
+                              #        float blue = (float) color.getBlue();
+                              #        float denominator = 255.0;
+                              #        Color.Builder resultBuilder =
+                              #            Color
+                              #                .newBuilder()
+                              #                .setRed(red / denominator)
+                              #                .setGreen(green / denominator)
+                              #                .setBlue(blue / denominator);
+                              #        int alpha = color.getAlpha();
+                              #        if (alpha != 255) {
+                              #          result.setAlpha(
+                              #              FloatValue
+                              #                  .newBuilder()
+                              #                  .setValue(((float) alpha) / denominator)
+                              #                  .build());
+                              #        }
+                              #        return resultBuilder.build();
+                              #      }
+                              #      // ...
+                              #
+                              # Example (iOS / Obj-C):
+                              #
+                              #      // ...
+                              #      static UIColor* fromProto(Color* protocolor) {
+                              #         float red = [protocolor red];
+                              #         float green = [protocolor green];
+                              #         float blue = [protocolor blue];
+                              #         FloatValue* alpha_wrapper = [protocolor alpha];
+                              #         float alpha = 1.0;
+                              #         if (alpha_wrapper != nil) {
+                              #           alpha = [alpha_wrapper value];
+                              #         }
+                              #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
+                              #      }
+                              #
+                              #      static Color* toProto(UIColor* color) {
+                              #          CGFloat red, green, blue, alpha;
+                              #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
+                              #            return nil;
+                              #          }
+                              #          Color* result = [Color alloc] init];
+                              #          [result setRed:red];
+                              #          [result setGreen:green];
+                              #          [result setBlue:blue];
+                              #          if (alpha <= 0.9999) {
+                              #            [result setAlpha:floatWrapperWithValue(alpha)];
+                              #          }
+                              #          [result autorelease];
+                              #          return result;
+                              #     }
+                              #     // ...
+                              #
+                              #  Example (JavaScript):
+                              #
+                              #     // ...
+                              #
+                              #     var protoToCssColor = function(rgb_color) {
+                              #        var redFrac = rgb_color.red || 0.0;
+                              #        var greenFrac = rgb_color.green || 0.0;
+                              #        var blueFrac = rgb_color.blue || 0.0;
+                              #        var red = Math.floor(redFrac * 255);
+                              #        var green = Math.floor(greenFrac * 255);
+                              #        var blue = Math.floor(blueFrac * 255);
+                              #
+                              #        if (!('alpha' in rgb_color)) {
+                              #           return rgbToCssColor_(red, green, blue);
+                              #        }
+                              #
+                              #        var alphaFrac = rgb_color.alpha.value || 0.0;
+                              #        var rgbParams = [red, green, blue].join(',');
+                              #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
+                              #     };
+                              #
+                              #     var rgbToCssColor_ = function(red, green, blue) {
+                              #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
+                              #       var hexString = rgbNumber.toString(16);
+                              #       var missingZeros = 6 - hexString.length;
+                              #       var resultBuilder = ['#'];
+                              #       for (var i = 0; i < missingZeros; i++) {
+                              #          resultBuilder.push('0');
+                              #       }
+                              #       resultBuilder.push(hexString);
+                              #       return resultBuilder.join('');
+                              #     };
+                              #
+                              #     // ...
+                            "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+                            "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
+                                # the final pixel color is defined by the equation:
+                                #
+                                #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
+                                #
+                                # This means that a value of 1.0 corresponds to a solid color, whereas
+                                # a value of 0.0 corresponds to a completely transparent color. This
+                                # uses a wrapper message rather than a simple float scalar so that it is
+                                # possible to distinguish between a default value and the value being unset.
+                                # If omitted, this color object is to be rendered as a solid color
+                                # (as if the alpha value had been explicitly given with a value of 1.0).
+                            "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
+                            "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
+                          },
+                          "bold": True or False, # True if the text is bold.
+                          "strikethrough": True or False, # True if the text has a strikethrough.
+                          "fontFamily": "A String", # The font family.
+                          "fontSize": 42, # The size of the font.
+                          "italic": True or False, # True if the text is italicized.
+                          "underline": True or False, # True if the text is underlined.
+                        },
                       },
                     ],
                   },
-                },
-              },
-            },
-          ],
-          "protectedRanges": [ # The protected ranges in this sheet.
-            { # A protected range.
-              "unprotectedRanges": [ # The list of unprotected ranges within a protected sheet.
-                  # Unprotected ranges are only supported on protected sheets.
-                { # A range on a sheet.
-                    # All indexes are zero-based.
-                    # Indexes are half open, e.g the start index is inclusive
-                    # and the end index is exclusive -- [start_index, end_index).
-                    # Missing indexes indicate the range is unbounded on that side.
-                    #
-                    # For example, if `"Sheet1"` is sheet ID 0, then:
-                    #
-                    #   `Sheet1!A1:A1 == sheet_id: 0,
-                    #                   start_row_index: 0, end_row_index: 1,
-                    #                   start_column_index: 0, end_column_index: 1`
-                    #
-                    #   `Sheet1!A3:B4 == sheet_id: 0,
-                    #                   start_row_index: 2, end_row_index: 4,
-                    #                   start_column_index: 0, end_column_index: 2`
-                    #
-                    #   `Sheet1!A:B == sheet_id: 0,
-                    #                 start_column_index: 0, end_column_index: 2`
-                    #
-                    #   `Sheet1!A5:B == sheet_id: 0,
-                    #                  start_row_index: 4,
-                    #                  start_column_index: 0, end_column_index: 2`
-                    #
-                    #   `Sheet1 == sheet_id:0`
-                    #
-                    # The start index must always be less than or equal to the end index.
-                    # If the start index equals the end index, then the range is empty.
-                    # Empty ranges are typically not meaningful and are usually rendered in the
-                    # UI as `#REF!`.
-                  "endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
-                  "startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
-                  "sheetId": 42, # The sheet this range is on.
-                  "startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
-                  "endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
-                },
-              ],
-              "requestingUserCanEdit": True or False, # True if the user who requested this protected range can edit the
-                  # protected area.
-                  # This field is read-only.
-              "description": "A String", # The description of this protected range.
-              "namedRangeId": "A String", # The named range this protected range is backed by, if any.
-                  #
-                  # When writing, only one of range or named_range_id
-                  # may be set.
-              "editors": { # The editors of a protected range. # The users and groups with edit access to the protected range.
-                  # This field is only visible to users with edit access to the protected
-                  # range and the document.
-                  # Editors are not supported with warning_only protection.
-                "domainUsersCanEdit": True or False, # True if anyone in the document's domain has edit access to the protected
-                    # range.  Domain protection is only supported on documents within a domain.
-                "users": [ # The email addresses of users with edit access to the protected range.
-                  "A String",
-                ],
-                "groups": [ # The email addresses of groups with edit access to the protected range.
-                  "A String",
                 ],
               },
-              "protectedRangeId": 42, # The ID of the protected range.
-                  # This field is read-only.
-              "warningOnly": True or False, # True if this protected range will show a warning when editing.
-                  # Warning-based protection means that every user can edit data in the
-                  # protected range, except editing will prompt a warning asking the user
-                  # to confirm the edit.
-                  #
-                  # When writing: if this field is true, then editors is ignored.
-                  # Additionally, if this field is changed from true to false and the
-                  # `editors` field is not set (nor included in the field mask), then
-                  # the editors will be set to all the editors in the document.
-              "range": { # A range on a sheet. # The range that is being protected.
-                  # The range may be fully unbounded, in which case this is considered
-                  # a protected sheet.
-                  #
-                  # When writing, only one of range or named_range_id
-                  # may be set.
-                  # All indexes are zero-based.
-                  # Indexes are half open, e.g the start index is inclusive
-                  # and the end index is exclusive -- [start_index, end_index).
-                  # Missing indexes indicate the range is unbounded on that side.
-                  #
-                  # For example, if `"Sheet1"` is sheet ID 0, then:
-                  #
-                  #   `Sheet1!A1:A1 == sheet_id: 0,
-                  #                   start_row_index: 0, end_row_index: 1,
-                  #                   start_column_index: 0, end_column_index: 1`
-                  #
-                  #   `Sheet1!A3:B4 == sheet_id: 0,
-                  #                   start_row_index: 2, end_row_index: 4,
-                  #                   start_column_index: 0, end_column_index: 2`
-                  #
-                  #   `Sheet1!A:B == sheet_id: 0,
-                  #                 start_column_index: 0, end_column_index: 2`
-                  #
-                  #   `Sheet1!A5:B == sheet_id: 0,
-                  #                  start_row_index: 4,
-                  #                  start_column_index: 0, end_column_index: 2`
-                  #
-                  #   `Sheet1 == sheet_id:0`
-                  #
-                  # The start index must always be less than or equal to the end index.
-                  # If the start index equals the end index, then the range is empty.
-                  # Empty ranges are typically not meaningful and are usually rendered in the
-                  # UI as `#REF!`.
-                "endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
-                "startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
-                "sheetId": 42, # The sheet this range is on.
-                "startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
-                "endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
-              },
-            },
-          ],
-          "data": [ # Data in the grid, if this is a grid sheet.
-              # The number of GridData objects returned is dependent on the number of
-              # ranges requested on this sheet. For example, if this is representing
-              # `Sheet1`, and the spreadsheet was requested with ranges
-              # `Sheet1!A1:C10` and `Sheet1!D15:E20`, then the first GridData will have a
-              # startRow/startColumn of `0`,
-              # while the second one will have `startRow 14` (zero-based row 15),
-              # and `startColumn 3` (zero-based column D).
-            { # Data in the grid, as well as metadata about the dimensions.
-              "startRow": 42, # The first row this GridData refers to, zero-based.
-              "rowMetadata": [ # Metadata about the requested rows in the grid, starting with the row
-                  # in start_row.
-                { # Properties about a dimension.
-                  "pixelSize": 42, # The height (if a row) or width (if a column) of the dimension in pixels.
-                  "hiddenByUser": True or False, # True if this dimension is explicitly hidden.
-                  "hiddenByFilter": True or False, # True if this dimension is being filtered.
-                      # This field is read-only.
-                },
-              ],
-              "startColumn": 42, # The first column this GridData refers to, zero-based.
-              "columnMetadata": [ # Metadata about the requested columns in the grid, starting with the column
-                  # in start_column.
-                { # Properties about a dimension.
-                  "pixelSize": 42, # The height (if a row) or width (if a column) of the dimension in pixels.
-                  "hiddenByUser": True or False, # True if this dimension is explicitly hidden.
-                  "hiddenByFilter": True or False, # True if this dimension is being filtered.
-                      # This field is read-only.
-                },
-              ],
-              "rowData": [ # The data in the grid, one entry per row,
-                  # starting with the row in startRow.
-                  # The values in RowData will correspond to columns starting
-                  # at start_column.
-                { # Data about each cell in a row.
-                  "values": [ # The values in the row, one per column.
-                    { # Data about a specific cell.
-                      "pivotTable": { # A pivot table. # A pivot table anchored at this cell. The size of pivot table itself
-                          # is computed dynamically based on its data, grouping, filters, values,
-                          # etc. Only the top-left cell of the pivot table contains the pivot table
-                          # definition. The other cells will contain the calculated values of the
-                          # results of the pivot in their effective_value fields.
-                        "valueLayout": "A String", # Whether values should be listed horizontally (as columns)
-                            # or vertically (as rows).
-                        "rows": [ # Each row grouping in the pivot table.
-                          { # A single grouping (either row or column) in a pivot table.
-                            "showTotals": True or False, # True if the pivot table should include the totals for this grouping.
-                            "valueMetadata": [ # Metadata about values in the grouping.
-                              { # Metadata about a value in a pivot grouping.
-                                "collapsed": True or False, # True if the data corresponding to the value is collapsed.
-                                "value": { # The kinds of value that a cell in a spreadsheet can have. # The calculated value the metadata corresponds to.
-                                    # (Note that formulaValue is not valid,
-                                    #  because the values will be calculated.)
-                                  "numberValue": 3.14, # Represents a double value.
-                                      # Note: Dates, Times and DateTimes are represented as doubles in
-                                      # "serial number" format.
-                                  "boolValue": True or False, # Represents a boolean value.
-                                  "formulaValue": "A String", # Represents a formula.
-                                  "stringValue": "A String", # Represents a string value.
-                                      # Leading single quotes are not included. For example, if the user typed
-                                      # `'123` into the UI, this would be represented as a `stringValue` of
-                                      # `"123"`.
-                                  "errorValue": { # An error in a cell. # Represents an error.
-                                      # This field is read-only.
-                                    "message": "A String", # A message with more information about the error
-                                        # (in the spreadsheet's locale).
-                                    "type": "A String", # The type of error.
-                                  },
-                                },
-                              },
-                            ],
-                            "valueBucket": { # Information about which values in a pivot group should be used for sorting. # The bucket of the opposite pivot group to sort by.
-                                # If not specified, sorting is alphabetical by this group's values.
-                              "buckets": [ # Determines the bucket from which values are chosen to sort.
-                                  #
-                                  # For example, in a pivot table with one row group & two column groups,
-                                  # the row group can list up to two values. The first value corresponds
-                                  # to a value within the first column group, and the second value
-                                  # corresponds to a value in the second column group.  If no values
-                                  # are listed, this would indicate that the row should be sorted according
-                                  # to the "Grand Total" over the column groups. If a single value is listed,
-                                  # this would correspond to using the "Total" of that bucket.
-                                { # The kinds of value that a cell in a spreadsheet can have.
-                                  "numberValue": 3.14, # Represents a double value.
-                                      # Note: Dates, Times and DateTimes are represented as doubles in
-                                      # "serial number" format.
-                                  "boolValue": True or False, # Represents a boolean value.
-                                  "formulaValue": "A String", # Represents a formula.
-                                  "stringValue": "A String", # Represents a string value.
-                                      # Leading single quotes are not included. For example, if the user typed
-                                      # `'123` into the UI, this would be represented as a `stringValue` of
-                                      # `"123"`.
-                                  "errorValue": { # An error in a cell. # Represents an error.
-                                      # This field is read-only.
-                                    "message": "A String", # A message with more information about the error
-                                        # (in the spreadsheet's locale).
-                                    "type": "A String", # The type of error.
-                                  },
-                                },
-                              ],
-                              "valuesIndex": 42, # The offset in the PivotTable.values list which the values in this
-                                  # grouping should be sorted by.
-                            },
-                            "sortOrder": "A String", # The order the values in this group should be sorted.
-                            "sourceColumnOffset": 42, # The column offset of the source range that this grouping is based on.
-                                #
-                                # For example, if the source was `C10:E15`, a `sourceColumnOffset` of `0`
-                                # means this group refers to column `C`, whereas the offset `1` would refer
-                                # to column `D`.
-                          },
-                        ],
-                        "source": { # A range on a sheet. # The range the pivot table is reading data from.
-                            # All indexes are zero-based.
-                            # Indexes are half open, e.g the start index is inclusive
-                            # and the end index is exclusive -- [start_index, end_index).
-                            # Missing indexes indicate the range is unbounded on that side.
-                            #
-                            # For example, if `"Sheet1"` is sheet ID 0, then:
-                            #
-                            #   `Sheet1!A1:A1 == sheet_id: 0,
-                            #                   start_row_index: 0, end_row_index: 1,
-                            #                   start_column_index: 0, end_column_index: 1`
-                            #
-                            #   `Sheet1!A3:B4 == sheet_id: 0,
-                            #                   start_row_index: 2, end_row_index: 4,
-                            #                   start_column_index: 0, end_column_index: 2`
-                            #
-                            #   `Sheet1!A:B == sheet_id: 0,
-                            #                 start_column_index: 0, end_column_index: 2`
-                            #
-                            #   `Sheet1!A5:B == sheet_id: 0,
-                            #                  start_row_index: 4,
-                            #                  start_column_index: 0, end_column_index: 2`
-                            #
-                            #   `Sheet1 == sheet_id:0`
-                            #
-                            # The start index must always be less than or equal to the end index.
-                            # If the start index equals the end index, then the range is empty.
-                            # Empty ranges are typically not meaningful and are usually rendered in the
-                            # UI as `#REF!`.
-                          "endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
-                          "startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
-                          "sheetId": 42, # The sheet this range is on.
-                          "startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
-                          "endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
-                        },
-                        "values": [ # A list of values to include in the pivot table.
-                          { # The definition of how a value in a pivot table should be calculated.
-                            "formula": "A String", # A custom formula to calculate the value.  The formula must start
-                                # with an `=` character.
-                            "summarizeFunction": "A String", # A function to summarize the value.
-                                # If formula is set, the only supported values are
-                                # SUM and
-                                # CUSTOM.
-                                # If sourceColumnOffset is set, then `CUSTOM`
-                                # is not supported.
-                            "sourceColumnOffset": 42, # The column offset of the source range that this value reads from.
-                                #
-                                # For example, if the source was `C10:E15`, a `sourceColumnOffset` of `0`
-                                # means this value refers to column `C`, whereas the offset `1` would
-                                # refer to column `D`.
-                            "name": "A String", # A name to use for the value. This is only used if formula was set.
-                                # Otherwise, the column name is used.
-                          },
-                        ],
-                        "criteria": { # An optional mapping of filters per source column offset.
-                            #
-                            # The filters will be applied before aggregating data into the pivot table.
-                            # The map's key is the column offset of the source range that you want to
-                            # filter, and the value is the criteria for that column.
-                            #
-                            # For example, if the source was `C10:E15`, a key of `0` will have the filter
-                            # for column `C`, whereas the key `1` is for column `D`.
-                          "a_key": { # Criteria for showing/hiding rows in a pivot table.
-                            "visibleValues": [ # Values that should be included.  Values not listed here are excluded.
-                              "A String",
-                            ],
-                          },
-                        },
-                        "columns": [ # Each column grouping in the pivot table.
-                          { # A single grouping (either row or column) in a pivot table.
-                            "showTotals": True or False, # True if the pivot table should include the totals for this grouping.
-                            "valueMetadata": [ # Metadata about values in the grouping.
-                              { # Metadata about a value in a pivot grouping.
-                                "collapsed": True or False, # True if the data corresponding to the value is collapsed.
-                                "value": { # The kinds of value that a cell in a spreadsheet can have. # The calculated value the metadata corresponds to.
-                                    # (Note that formulaValue is not valid,
-                                    #  because the values will be calculated.)
-                                  "numberValue": 3.14, # Represents a double value.
-                                      # Note: Dates, Times and DateTimes are represented as doubles in
-                                      # "serial number" format.
-                                  "boolValue": True or False, # Represents a boolean value.
-                                  "formulaValue": "A String", # Represents a formula.
-                                  "stringValue": "A String", # Represents a string value.
-                                      # Leading single quotes are not included. For example, if the user typed
-                                      # `'123` into the UI, this would be represented as a `stringValue` of
-                                      # `"123"`.
-                                  "errorValue": { # An error in a cell. # Represents an error.
-                                      # This field is read-only.
-                                    "message": "A String", # A message with more information about the error
-                                        # (in the spreadsheet's locale).
-                                    "type": "A String", # The type of error.
-                                  },
-                                },
-                              },
-                            ],
-                            "valueBucket": { # Information about which values in a pivot group should be used for sorting. # The bucket of the opposite pivot group to sort by.
-                                # If not specified, sorting is alphabetical by this group's values.
-                              "buckets": [ # Determines the bucket from which values are chosen to sort.
-                                  #
-                                  # For example, in a pivot table with one row group & two column groups,
-                                  # the row group can list up to two values. The first value corresponds
-                                  # to a value within the first column group, and the second value
-                                  # corresponds to a value in the second column group.  If no values
-                                  # are listed, this would indicate that the row should be sorted according
-                                  # to the "Grand Total" over the column groups. If a single value is listed,
-                                  # this would correspond to using the "Total" of that bucket.
-                                { # The kinds of value that a cell in a spreadsheet can have.
-                                  "numberValue": 3.14, # Represents a double value.
-                                      # Note: Dates, Times and DateTimes are represented as doubles in
-                                      # "serial number" format.
-                                  "boolValue": True or False, # Represents a boolean value.
-                                  "formulaValue": "A String", # Represents a formula.
-                                  "stringValue": "A String", # Represents a string value.
-                                      # Leading single quotes are not included. For example, if the user typed
-                                      # `'123` into the UI, this would be represented as a `stringValue` of
-                                      # `"123"`.
-                                  "errorValue": { # An error in a cell. # Represents an error.
-                                      # This field is read-only.
-                                    "message": "A String", # A message with more information about the error
-                                        # (in the spreadsheet's locale).
-                                    "type": "A String", # The type of error.
-                                  },
-                                },
-                              ],
-                              "valuesIndex": 42, # The offset in the PivotTable.values list which the values in this
-                                  # grouping should be sorted by.
-                            },
-                            "sortOrder": "A String", # The order the values in this group should be sorted.
-                            "sourceColumnOffset": 42, # The column offset of the source range that this grouping is based on.
-                                #
-                                # For example, if the source was `C10:E15`, a `sourceColumnOffset` of `0`
-                                # means this group refers to column `C`, whereas the offset `1` would refer
-                                # to column `D`.
-                          },
-                        ],
-                      },
-                      "hyperlink": "A String", # A hyperlink this cell points to, if any.
-                          # This field is read-only.  (To set it, use a `=HYPERLINK` formula.)
-                      "effectiveValue": { # The kinds of value that a cell in a spreadsheet can have. # The effective value of the cell. For cells with formulas, this will be
-                          # the calculated value.  For cells with literals, this will be
-                          # the same as the user_entered_value.
-                          # This field is read-only.
-                        "numberValue": 3.14, # Represents a double value.
-                            # Note: Dates, Times and DateTimes are represented as doubles in
-                            # "serial number" format.
-                        "boolValue": True or False, # Represents a boolean value.
-                        "formulaValue": "A String", # Represents a formula.
-                        "stringValue": "A String", # Represents a string value.
-                            # Leading single quotes are not included. For example, if the user typed
-                            # `'123` into the UI, this would be represented as a `stringValue` of
-                            # `"123"`.
-                        "errorValue": { # An error in a cell. # Represents an error.
-                            # This field is read-only.
-                          "message": "A String", # A message with more information about the error
-                              # (in the spreadsheet's locale).
-                          "type": "A String", # The type of error.
-                        },
-                      },
-                      "formattedValue": "A String", # The formatted value of the cell.
-                          # This is the value as it's shown to the user.
-                          # This field is read-only.
-                      "userEnteredValue": { # The kinds of value that a cell in a spreadsheet can have. # The value the user entered in the cell. e.g, `1234`, `'Hello'`, or `=NOW()`
-                          # Note: Dates, Times and DateTimes are represented as doubles in
-                          # serial number format.
-                        "numberValue": 3.14, # Represents a double value.
-                            # Note: Dates, Times and DateTimes are represented as doubles in
-                            # "serial number" format.
-                        "boolValue": True or False, # Represents a boolean value.
-                        "formulaValue": "A String", # Represents a formula.
-                        "stringValue": "A String", # Represents a string value.
-                            # Leading single quotes are not included. For example, if the user typed
-                            # `'123` into the UI, this would be represented as a `stringValue` of
-                            # `"123"`.
-                        "errorValue": { # An error in a cell. # Represents an error.
-                            # This field is read-only.
-                          "message": "A String", # A message with more information about the error
-                              # (in the spreadsheet's locale).
-                          "type": "A String", # The type of error.
-                        },
-                      },
-                      "note": "A String", # Any note on the cell.
-                      "effectiveFormat": { # The format of a cell. # The effective format being used by the cell.
-                          # This includes the results of applying any conditional formatting and,
-                          # if the cell contains a formula, the computed number format.
-                          # If the effective format is the default format, effective format will
-                          # not be written.
-                          # This field is read-only.
-                        "numberFormat": { # The number format of a cell. # A format describing how number values should be represented to the user.
-                          "pattern": "A String", # Pattern string used for formatting.  If not set, a default pattern based on
-                              # the user's locale will be used if necessary for the given type.
-                              # See the [Date and Number Formats guide](/sheets/guides/formats) for more
-                              # information about the supported patterns.
-                          "type": "A String", # The type of the number format.
-                              # When writing, this field must be set.
-                        },
-                        "textDirection": "A String", # The direction of the text in the cell.
-                        "padding": { # The amount of padding around the cell, in pixels. # The padding of the cell.
-                            # When updating padding, every field must be specified.
-                          "top": 42, # The top padding of the cell.
-                          "right": 42, # The right padding of the cell.
-                          "bottom": 42, # The bottom padding of the cell.
-                          "left": 42, # The left padding of the cell.
-                        },
-                        "horizontalAlignment": "A String", # The horizontal alignment of the value in the cell.
-                        "backgroundColor": { # Represents a color in the RGBA color space. This representation is designed # The background color of the cell.
-                            # for simplicity of conversion to/from color representations in various
-                            # languages over compactness; for example, the fields of this representation
-                            # can be trivially provided to the constructor of "java.awt.Color" in Java; it
-                            # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
-                            # method in iOS; and, with just a little work, it can be easily formatted into
-                            # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
-                            #
-                            # Example (Java):
-                            #
-                            #      import com.google.type.Color;
-                            #
-                            #      // ...
-                            #      public static java.awt.Color fromProto(Color protocolor) {
-                            #        float alpha = protocolor.hasAlpha()
-                            #            ? protocolor.getAlpha().getValue()
-                            #            : 1.0;
-                            #
-                            #        return new java.awt.Color(
-                            #            protocolor.getRed(),
-                            #            protocolor.getGreen(),
-                            #            protocolor.getBlue(),
-                            #            alpha);
-                            #      }
-                            #
-                            #      public static Color toProto(java.awt.Color color) {
-                            #        float red = (float) color.getRed();
-                            #        float green = (float) color.getGreen();
-                            #        float blue = (float) color.getBlue();
-                            #        float denominator = 255.0;
-                            #        Color.Builder resultBuilder =
-                            #            Color
-                            #                .newBuilder()
-                            #                .setRed(red / denominator)
-                            #                .setGreen(green / denominator)
-                            #                .setBlue(blue / denominator);
-                            #        int alpha = color.getAlpha();
-                            #        if (alpha != 255) {
-                            #          result.setAlpha(
-                            #              FloatValue
-                            #                  .newBuilder()
-                            #                  .setValue(((float) alpha) / denominator)
-                            #                  .build());
-                            #        }
-                            #        return resultBuilder.build();
-                            #      }
-                            #      // ...
-                            #
-                            # Example (iOS / Obj-C):
-                            #
-                            #      // ...
-                            #      static UIColor* fromProto(Color* protocolor) {
-                            #         float red = [protocolor red];
-                            #         float green = [protocolor green];
-                            #         float blue = [protocolor blue];
-                            #         FloatValue* alpha_wrapper = [protocolor alpha];
-                            #         float alpha = 1.0;
-                            #         if (alpha_wrapper != nil) {
-                            #           alpha = [alpha_wrapper value];
-                            #         }
-                            #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
-                            #      }
-                            #
-                            #      static Color* toProto(UIColor* color) {
-                            #          CGFloat red, green, blue, alpha;
-                            #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
-                            #            return nil;
-                            #          }
-                            #          Color* result = [Color alloc] init];
-                            #          [result setRed:red];
-                            #          [result setGreen:green];
-                            #          [result setBlue:blue];
-                            #          if (alpha <= 0.9999) {
-                            #            [result setAlpha:floatWrapperWithValue(alpha)];
-                            #          }
-                            #          [result autorelease];
-                            #          return result;
-                            #     }
-                            #     // ...
-                            #
-                            #  Example (JavaScript):
-                            #
-                            #     // ...
-                            #
-                            #     var protoToCssColor = function(rgb_color) {
-                            #        var redFrac = rgb_color.red || 0.0;
-                            #        var greenFrac = rgb_color.green || 0.0;
-                            #        var blueFrac = rgb_color.blue || 0.0;
-                            #        var red = Math.floor(redFrac * 255);
-                            #        var green = Math.floor(greenFrac * 255);
-                            #        var blue = Math.floor(blueFrac * 255);
-                            #
-                            #        if (!('alpha' in rgb_color)) {
-                            #           return rgbToCssColor_(red, green, blue);
-                            #        }
-                            #
-                            #        var alphaFrac = rgb_color.alpha.value || 0.0;
-                            #        var rgbParams = [red, green, blue].join(',');
-                            #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
-                            #     };
-                            #
-                            #     var rgbToCssColor_ = function(red, green, blue) {
-                            #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
-                            #       var hexString = rgbNumber.toString(16);
-                            #       var missingZeros = 6 - hexString.length;
-                            #       var resultBuilder = ['#'];
-                            #       for (var i = 0; i < missingZeros; i++) {
-                            #          resultBuilder.push('0');
-                            #       }
-                            #       resultBuilder.push(hexString);
-                            #       return resultBuilder.join('');
-                            #     };
-                            #
-                            #     // ...
-                          "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
-                          "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
-                              # the final pixel color is defined by the equation:
-                              #
-                              #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
-                              #
-                              # This means that a value of 1.0 corresponds to a solid color, whereas
-                              # a value of 0.0 corresponds to a completely transparent color. This
-                              # uses a wrapper message rather than a simple float scalar so that it is
-                              # possible to distinguish between a default value and the value being unset.
-                              # If omitted, this color object is to be rendered as a solid color
-                              # (as if the alpha value had been explicitly given with a value of 1.0).
-                          "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
-                          "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
-                        },
-                        "verticalAlignment": "A String", # The vertical alignment of the value in the cell.
-                        "textFormat": { # The format of a run of text in a cell. # The format of the text in the cell (unless overridden by a format run).
-                            # Absent values indicate that the field isn't specified.
-                          "foregroundColor": { # Represents a color in the RGBA color space. This representation is designed # The foreground color of the text.
-                              # for simplicity of conversion to/from color representations in various
-                              # languages over compactness; for example, the fields of this representation
-                              # can be trivially provided to the constructor of "java.awt.Color" in Java; it
-                              # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
-                              # method in iOS; and, with just a little work, it can be easily formatted into
-                              # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
-                              #
-                              # Example (Java):
-                              #
-                              #      import com.google.type.Color;
-                              #
-                              #      // ...
-                              #      public static java.awt.Color fromProto(Color protocolor) {
-                              #        float alpha = protocolor.hasAlpha()
-                              #            ? protocolor.getAlpha().getValue()
-                              #            : 1.0;
-                              #
-                              #        return new java.awt.Color(
-                              #            protocolor.getRed(),
-                              #            protocolor.getGreen(),
-                              #            protocolor.getBlue(),
-                              #            alpha);
-                              #      }
-                              #
-                              #      public static Color toProto(java.awt.Color color) {
-                              #        float red = (float) color.getRed();
-                              #        float green = (float) color.getGreen();
-                              #        float blue = (float) color.getBlue();
-                              #        float denominator = 255.0;
-                              #        Color.Builder resultBuilder =
-                              #            Color
-                              #                .newBuilder()
-                              #                .setRed(red / denominator)
-                              #                .setGreen(green / denominator)
-                              #                .setBlue(blue / denominator);
-                              #        int alpha = color.getAlpha();
-                              #        if (alpha != 255) {
-                              #          result.setAlpha(
-                              #              FloatValue
-                              #                  .newBuilder()
-                              #                  .setValue(((float) alpha) / denominator)
-                              #                  .build());
-                              #        }
-                              #        return resultBuilder.build();
-                              #      }
-                              #      // ...
-                              #
-                              # Example (iOS / Obj-C):
-                              #
-                              #      // ...
-                              #      static UIColor* fromProto(Color* protocolor) {
-                              #         float red = [protocolor red];
-                              #         float green = [protocolor green];
-                              #         float blue = [protocolor blue];
-                              #         FloatValue* alpha_wrapper = [protocolor alpha];
-                              #         float alpha = 1.0;
-                              #         if (alpha_wrapper != nil) {
-                              #           alpha = [alpha_wrapper value];
-                              #         }
-                              #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
-                              #      }
-                              #
-                              #      static Color* toProto(UIColor* color) {
-                              #          CGFloat red, green, blue, alpha;
-                              #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
-                              #            return nil;
-                              #          }
-                              #          Color* result = [Color alloc] init];
-                              #          [result setRed:red];
-                              #          [result setGreen:green];
-                              #          [result setBlue:blue];
-                              #          if (alpha <= 0.9999) {
-                              #            [result setAlpha:floatWrapperWithValue(alpha)];
-                              #          }
-                              #          [result autorelease];
-                              #          return result;
-                              #     }
-                              #     // ...
-                              #
-                              #  Example (JavaScript):
-                              #
-                              #     // ...
-                              #
-                              #     var protoToCssColor = function(rgb_color) {
-                              #        var redFrac = rgb_color.red || 0.0;
-                              #        var greenFrac = rgb_color.green || 0.0;
-                              #        var blueFrac = rgb_color.blue || 0.0;
-                              #        var red = Math.floor(redFrac * 255);
-                              #        var green = Math.floor(greenFrac * 255);
-                              #        var blue = Math.floor(blueFrac * 255);
-                              #
-                              #        if (!('alpha' in rgb_color)) {
-                              #           return rgbToCssColor_(red, green, blue);
-                              #        }
-                              #
-                              #        var alphaFrac = rgb_color.alpha.value || 0.0;
-                              #        var rgbParams = [red, green, blue].join(',');
-                              #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
-                              #     };
-                              #
-                              #     var rgbToCssColor_ = function(red, green, blue) {
-                              #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
-                              #       var hexString = rgbNumber.toString(16);
-                              #       var missingZeros = 6 - hexString.length;
-                              #       var resultBuilder = ['#'];
-                              #       for (var i = 0; i < missingZeros; i++) {
-                              #          resultBuilder.push('0');
-                              #       }
-                              #       resultBuilder.push(hexString);
-                              #       return resultBuilder.join('');
-                              #     };
-                              #
-                              #     // ...
-                            "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
-                            "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
-                                # the final pixel color is defined by the equation:
-                                #
-                                #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
-                                #
-                                # This means that a value of 1.0 corresponds to a solid color, whereas
-                                # a value of 0.0 corresponds to a completely transparent color. This
-                                # uses a wrapper message rather than a simple float scalar so that it is
-                                # possible to distinguish between a default value and the value being unset.
-                                # If omitted, this color object is to be rendered as a solid color
-                                # (as if the alpha value had been explicitly given with a value of 1.0).
-                            "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
-                            "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
-                          },
-                          "bold": True or False, # True if the text is bold.
-                          "strikethrough": True or False, # True if the text has a strikethrough.
-                          "fontFamily": "A String", # The font family.
-                          "fontSize": 42, # The size of the font.
-                          "italic": True or False, # True if the text is italicized.
-                          "underline": True or False, # True if the text is underlined.
-                        },
-                        "hyperlinkDisplayType": "A String", # How a hyperlink, if it exists, should be displayed in the cell.
-                        "borders": { # The borders of the cell. # The borders of the cell.
-                          "top": { # A border along a cell. # The top border of the cell.
-                            "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
-                                # for simplicity of conversion to/from color representations in various
-                                # languages over compactness; for example, the fields of this representation
-                                # can be trivially provided to the constructor of "java.awt.Color" in Java; it
-                                # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
-                                # method in iOS; and, with just a little work, it can be easily formatted into
-                                # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
-                                #
-                                # Example (Java):
-                                #
-                                #      import com.google.type.Color;
-                                #
-                                #      // ...
-                                #      public static java.awt.Color fromProto(Color protocolor) {
-                                #        float alpha = protocolor.hasAlpha()
-                                #            ? protocolor.getAlpha().getValue()
-                                #            : 1.0;
-                                #
-                                #        return new java.awt.Color(
-                                #            protocolor.getRed(),
-                                #            protocolor.getGreen(),
-                                #            protocolor.getBlue(),
-                                #            alpha);
-                                #      }
-                                #
-                                #      public static Color toProto(java.awt.Color color) {
-                                #        float red = (float) color.getRed();
-                                #        float green = (float) color.getGreen();
-                                #        float blue = (float) color.getBlue();
-                                #        float denominator = 255.0;
-                                #        Color.Builder resultBuilder =
-                                #            Color
-                                #                .newBuilder()
-                                #                .setRed(red / denominator)
-                                #                .setGreen(green / denominator)
-                                #                .setBlue(blue / denominator);
-                                #        int alpha = color.getAlpha();
-                                #        if (alpha != 255) {
-                                #          result.setAlpha(
-                                #              FloatValue
-                                #                  .newBuilder()
-                                #                  .setValue(((float) alpha) / denominator)
-                                #                  .build());
-                                #        }
-                                #        return resultBuilder.build();
-                                #      }
-                                #      // ...
-                                #
-                                # Example (iOS / Obj-C):
-                                #
-                                #      // ...
-                                #      static UIColor* fromProto(Color* protocolor) {
-                                #         float red = [protocolor red];
-                                #         float green = [protocolor green];
-                                #         float blue = [protocolor blue];
-                                #         FloatValue* alpha_wrapper = [protocolor alpha];
-                                #         float alpha = 1.0;
-                                #         if (alpha_wrapper != nil) {
-                                #           alpha = [alpha_wrapper value];
-                                #         }
-                                #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
-                                #      }
-                                #
-                                #      static Color* toProto(UIColor* color) {
-                                #          CGFloat red, green, blue, alpha;
-                                #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
-                                #            return nil;
-                                #          }
-                                #          Color* result = [Color alloc] init];
-                                #          [result setRed:red];
-                                #          [result setGreen:green];
-                                #          [result setBlue:blue];
-                                #          if (alpha <= 0.9999) {
-                                #            [result setAlpha:floatWrapperWithValue(alpha)];
-                                #          }
-                                #          [result autorelease];
-                                #          return result;
-                                #     }
-                                #     // ...
-                                #
-                                #  Example (JavaScript):
-                                #
-                                #     // ...
-                                #
-                                #     var protoToCssColor = function(rgb_color) {
-                                #        var redFrac = rgb_color.red || 0.0;
-                                #        var greenFrac = rgb_color.green || 0.0;
-                                #        var blueFrac = rgb_color.blue || 0.0;
-                                #        var red = Math.floor(redFrac * 255);
-                                #        var green = Math.floor(greenFrac * 255);
-                                #        var blue = Math.floor(blueFrac * 255);
-                                #
-                                #        if (!('alpha' in rgb_color)) {
-                                #           return rgbToCssColor_(red, green, blue);
-                                #        }
-                                #
-                                #        var alphaFrac = rgb_color.alpha.value || 0.0;
-                                #        var rgbParams = [red, green, blue].join(',');
-                                #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
-                                #     };
-                                #
-                                #     var rgbToCssColor_ = function(red, green, blue) {
-                                #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
-                                #       var hexString = rgbNumber.toString(16);
-                                #       var missingZeros = 6 - hexString.length;
-                                #       var resultBuilder = ['#'];
-                                #       for (var i = 0; i < missingZeros; i++) {
-                                #          resultBuilder.push('0');
-                                #       }
-                                #       resultBuilder.push(hexString);
-                                #       return resultBuilder.join('');
-                                #     };
-                                #
-                                #     // ...
-                              "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
-                              "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
-                                  # the final pixel color is defined by the equation:
-                                  #
-                                  #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
-                                  #
-                                  # This means that a value of 1.0 corresponds to a solid color, whereas
-                                  # a value of 0.0 corresponds to a completely transparent color. This
-                                  # uses a wrapper message rather than a simple float scalar so that it is
-                                  # possible to distinguish between a default value and the value being unset.
-                                  # If omitted, this color object is to be rendered as a solid color
-                                  # (as if the alpha value had been explicitly given with a value of 1.0).
-                              "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
-                              "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
-                            },
-                            "width": 42, # The width of the border, in pixels.
-                                # Deprecated; the width is determined by the "style" field.
-                            "style": "A String", # The style of the border.
-                          },
-                          "right": { # A border along a cell. # The right border of the cell.
-                            "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
-                                # for simplicity of conversion to/from color representations in various
-                                # languages over compactness; for example, the fields of this representation
-                                # can be trivially provided to the constructor of "java.awt.Color" in Java; it
-                                # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
-                                # method in iOS; and, with just a little work, it can be easily formatted into
-                                # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
-                                #
-                                # Example (Java):
-                                #
-                                #      import com.google.type.Color;
-                                #
-                                #      // ...
-                                #      public static java.awt.Color fromProto(Color protocolor) {
-                                #        float alpha = protocolor.hasAlpha()
-                                #            ? protocolor.getAlpha().getValue()
-                                #            : 1.0;
-                                #
-                                #        return new java.awt.Color(
-                                #            protocolor.getRed(),
-                                #            protocolor.getGreen(),
-                                #            protocolor.getBlue(),
-                                #            alpha);
-                                #      }
-                                #
-                                #      public static Color toProto(java.awt.Color color) {
-                                #        float red = (float) color.getRed();
-                                #        float green = (float) color.getGreen();
-                                #        float blue = (float) color.getBlue();
-                                #        float denominator = 255.0;
-                                #        Color.Builder resultBuilder =
-                                #            Color
-                                #                .newBuilder()
-                                #                .setRed(red / denominator)
-                                #                .setGreen(green / denominator)
-                                #                .setBlue(blue / denominator);
-                                #        int alpha = color.getAlpha();
-                                #        if (alpha != 255) {
-                                #          result.setAlpha(
-                                #              FloatValue
-                                #                  .newBuilder()
-                                #                  .setValue(((float) alpha) / denominator)
-                                #                  .build());
-                                #        }
-                                #        return resultBuilder.build();
-                                #      }
-                                #      // ...
-                                #
-                                # Example (iOS / Obj-C):
-                                #
-                                #      // ...
-                                #      static UIColor* fromProto(Color* protocolor) {
-                                #         float red = [protocolor red];
-                                #         float green = [protocolor green];
-                                #         float blue = [protocolor blue];
-                                #         FloatValue* alpha_wrapper = [protocolor alpha];
-                                #         float alpha = 1.0;
-                                #         if (alpha_wrapper != nil) {
-                                #           alpha = [alpha_wrapper value];
-                                #         }
-                                #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
-                                #      }
-                                #
-                                #      static Color* toProto(UIColor* color) {
-                                #          CGFloat red, green, blue, alpha;
-                                #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
-                                #            return nil;
-                                #          }
-                                #          Color* result = [Color alloc] init];
-                                #          [result setRed:red];
-                                #          [result setGreen:green];
-                                #          [result setBlue:blue];
-                                #          if (alpha <= 0.9999) {
-                                #            [result setAlpha:floatWrapperWithValue(alpha)];
-                                #          }
-                                #          [result autorelease];
-                                #          return result;
-                                #     }
-                                #     // ...
-                                #
-                                #  Example (JavaScript):
-                                #
-                                #     // ...
-                                #
-                                #     var protoToCssColor = function(rgb_color) {
-                                #        var redFrac = rgb_color.red || 0.0;
-                                #        var greenFrac = rgb_color.green || 0.0;
-                                #        var blueFrac = rgb_color.blue || 0.0;
-                                #        var red = Math.floor(redFrac * 255);
-                                #        var green = Math.floor(greenFrac * 255);
-                                #        var blue = Math.floor(blueFrac * 255);
-                                #
-                                #        if (!('alpha' in rgb_color)) {
-                                #           return rgbToCssColor_(red, green, blue);
-                                #        }
-                                #
-                                #        var alphaFrac = rgb_color.alpha.value || 0.0;
-                                #        var rgbParams = [red, green, blue].join(',');
-                                #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
-                                #     };
-                                #
-                                #     var rgbToCssColor_ = function(red, green, blue) {
-                                #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
-                                #       var hexString = rgbNumber.toString(16);
-                                #       var missingZeros = 6 - hexString.length;
-                                #       var resultBuilder = ['#'];
-                                #       for (var i = 0; i < missingZeros; i++) {
-                                #          resultBuilder.push('0');
-                                #       }
-                                #       resultBuilder.push(hexString);
-                                #       return resultBuilder.join('');
-                                #     };
-                                #
-                                #     // ...
-                              "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
-                              "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
-                                  # the final pixel color is defined by the equation:
-                                  #
-                                  #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
-                                  #
-                                  # This means that a value of 1.0 corresponds to a solid color, whereas
-                                  # a value of 0.0 corresponds to a completely transparent color. This
-                                  # uses a wrapper message rather than a simple float scalar so that it is
-                                  # possible to distinguish between a default value and the value being unset.
-                                  # If omitted, this color object is to be rendered as a solid color
-                                  # (as if the alpha value had been explicitly given with a value of 1.0).
-                              "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
-                              "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
-                            },
-                            "width": 42, # The width of the border, in pixels.
-                                # Deprecated; the width is determined by the "style" field.
-                            "style": "A String", # The style of the border.
-                          },
-                          "bottom": { # A border along a cell. # The bottom border of the cell.
-                            "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
-                                # for simplicity of conversion to/from color representations in various
-                                # languages over compactness; for example, the fields of this representation
-                                # can be trivially provided to the constructor of "java.awt.Color" in Java; it
-                                # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
-                                # method in iOS; and, with just a little work, it can be easily formatted into
-                                # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
-                                #
-                                # Example (Java):
-                                #
-                                #      import com.google.type.Color;
-                                #
-                                #      // ...
-                                #      public static java.awt.Color fromProto(Color protocolor) {
-                                #        float alpha = protocolor.hasAlpha()
-                                #            ? protocolor.getAlpha().getValue()
-                                #            : 1.0;
-                                #
-                                #        return new java.awt.Color(
-                                #            protocolor.getRed(),
-                                #            protocolor.getGreen(),
-                                #            protocolor.getBlue(),
-                                #            alpha);
-                                #      }
-                                #
-                                #      public static Color toProto(java.awt.Color color) {
-                                #        float red = (float) color.getRed();
-                                #        float green = (float) color.getGreen();
-                                #        float blue = (float) color.getBlue();
-                                #        float denominator = 255.0;
-                                #        Color.Builder resultBuilder =
-                                #            Color
-                                #                .newBuilder()
-                                #                .setRed(red / denominator)
-                                #                .setGreen(green / denominator)
-                                #                .setBlue(blue / denominator);
-                                #        int alpha = color.getAlpha();
-                                #        if (alpha != 255) {
-                                #          result.setAlpha(
-                                #              FloatValue
-                                #                  .newBuilder()
-                                #                  .setValue(((float) alpha) / denominator)
-                                #                  .build());
-                                #        }
-                                #        return resultBuilder.build();
-                                #      }
-                                #      // ...
-                                #
-                                # Example (iOS / Obj-C):
-                                #
-                                #      // ...
-                                #      static UIColor* fromProto(Color* protocolor) {
-                                #         float red = [protocolor red];
-                                #         float green = [protocolor green];
-                                #         float blue = [protocolor blue];
-                                #         FloatValue* alpha_wrapper = [protocolor alpha];
-                                #         float alpha = 1.0;
-                                #         if (alpha_wrapper != nil) {
-                                #           alpha = [alpha_wrapper value];
-                                #         }
-                                #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
-                                #      }
-                                #
-                                #      static Color* toProto(UIColor* color) {
-                                #          CGFloat red, green, blue, alpha;
-                                #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
-                                #            return nil;
-                                #          }
-                                #          Color* result = [Color alloc] init];
-                                #          [result setRed:red];
-                                #          [result setGreen:green];
-                                #          [result setBlue:blue];
-                                #          if (alpha <= 0.9999) {
-                                #            [result setAlpha:floatWrapperWithValue(alpha)];
-                                #          }
-                                #          [result autorelease];
-                                #          return result;
-                                #     }
-                                #     // ...
-                                #
-                                #  Example (JavaScript):
-                                #
-                                #     // ...
-                                #
-                                #     var protoToCssColor = function(rgb_color) {
-                                #        var redFrac = rgb_color.red || 0.0;
-                                #        var greenFrac = rgb_color.green || 0.0;
-                                #        var blueFrac = rgb_color.blue || 0.0;
-                                #        var red = Math.floor(redFrac * 255);
-                                #        var green = Math.floor(greenFrac * 255);
-                                #        var blue = Math.floor(blueFrac * 255);
-                                #
-                                #        if (!('alpha' in rgb_color)) {
-                                #           return rgbToCssColor_(red, green, blue);
-                                #        }
-                                #
-                                #        var alphaFrac = rgb_color.alpha.value || 0.0;
-                                #        var rgbParams = [red, green, blue].join(',');
-                                #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
-                                #     };
-                                #
-                                #     var rgbToCssColor_ = function(red, green, blue) {
-                                #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
-                                #       var hexString = rgbNumber.toString(16);
-                                #       var missingZeros = 6 - hexString.length;
-                                #       var resultBuilder = ['#'];
-                                #       for (var i = 0; i < missingZeros; i++) {
-                                #          resultBuilder.push('0');
-                                #       }
-                                #       resultBuilder.push(hexString);
-                                #       return resultBuilder.join('');
-                                #     };
-                                #
-                                #     // ...
-                              "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
-                              "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
-                                  # the final pixel color is defined by the equation:
-                                  #
-                                  #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
-                                  #
-                                  # This means that a value of 1.0 corresponds to a solid color, whereas
-                                  # a value of 0.0 corresponds to a completely transparent color. This
-                                  # uses a wrapper message rather than a simple float scalar so that it is
-                                  # possible to distinguish between a default value and the value being unset.
-                                  # If omitted, this color object is to be rendered as a solid color
-                                  # (as if the alpha value had been explicitly given with a value of 1.0).
-                              "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
-                              "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
-                            },
-                            "width": 42, # The width of the border, in pixels.
-                                # Deprecated; the width is determined by the "style" field.
-                            "style": "A String", # The style of the border.
-                          },
-                          "left": { # A border along a cell. # The left border of the cell.
-                            "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
-                                # for simplicity of conversion to/from color representations in various
-                                # languages over compactness; for example, the fields of this representation
-                                # can be trivially provided to the constructor of "java.awt.Color" in Java; it
-                                # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
-                                # method in iOS; and, with just a little work, it can be easily formatted into
-                                # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
-                                #
-                                # Example (Java):
-                                #
-                                #      import com.google.type.Color;
-                                #
-                                #      // ...
-                                #      public static java.awt.Color fromProto(Color protocolor) {
-                                #        float alpha = protocolor.hasAlpha()
-                                #            ? protocolor.getAlpha().getValue()
-                                #            : 1.0;
-                                #
-                                #        return new java.awt.Color(
-                                #            protocolor.getRed(),
-                                #            protocolor.getGreen(),
-                                #            protocolor.getBlue(),
-                                #            alpha);
-                                #      }
-                                #
-                                #      public static Color toProto(java.awt.Color color) {
-                                #        float red = (float) color.getRed();
-                                #        float green = (float) color.getGreen();
-                                #        float blue = (float) color.getBlue();
-                                #        float denominator = 255.0;
-                                #        Color.Builder resultBuilder =
-                                #            Color
-                                #                .newBuilder()
-                                #                .setRed(red / denominator)
-                                #                .setGreen(green / denominator)
-                                #                .setBlue(blue / denominator);
-                                #        int alpha = color.getAlpha();
-                                #        if (alpha != 255) {
-                                #          result.setAlpha(
-                                #              FloatValue
-                                #                  .newBuilder()
-                                #                  .setValue(((float) alpha) / denominator)
-                                #                  .build());
-                                #        }
-                                #        return resultBuilder.build();
-                                #      }
-                                #      // ...
-                                #
-                                # Example (iOS / Obj-C):
-                                #
-                                #      // ...
-                                #      static UIColor* fromProto(Color* protocolor) {
-                                #         float red = [protocolor red];
-                                #         float green = [protocolor green];
-                                #         float blue = [protocolor blue];
-                                #         FloatValue* alpha_wrapper = [protocolor alpha];
-                                #         float alpha = 1.0;
-                                #         if (alpha_wrapper != nil) {
-                                #           alpha = [alpha_wrapper value];
-                                #         }
-                                #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
-                                #      }
-                                #
-                                #      static Color* toProto(UIColor* color) {
-                                #          CGFloat red, green, blue, alpha;
-                                #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
-                                #            return nil;
-                                #          }
-                                #          Color* result = [Color alloc] init];
-                                #          [result setRed:red];
-                                #          [result setGreen:green];
-                                #          [result setBlue:blue];
-                                #          if (alpha <= 0.9999) {
-                                #            [result setAlpha:floatWrapperWithValue(alpha)];
-                                #          }
-                                #          [result autorelease];
-                                #          return result;
-                                #     }
-                                #     // ...
-                                #
-                                #  Example (JavaScript):
-                                #
-                                #     // ...
-                                #
-                                #     var protoToCssColor = function(rgb_color) {
-                                #        var redFrac = rgb_color.red || 0.0;
-                                #        var greenFrac = rgb_color.green || 0.0;
-                                #        var blueFrac = rgb_color.blue || 0.0;
-                                #        var red = Math.floor(redFrac * 255);
-                                #        var green = Math.floor(greenFrac * 255);
-                                #        var blue = Math.floor(blueFrac * 255);
-                                #
-                                #        if (!('alpha' in rgb_color)) {
-                                #           return rgbToCssColor_(red, green, blue);
-                                #        }
-                                #
-                                #        var alphaFrac = rgb_color.alpha.value || 0.0;
-                                #        var rgbParams = [red, green, blue].join(',');
-                                #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
-                                #     };
-                                #
-                                #     var rgbToCssColor_ = function(red, green, blue) {
-                                #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
-                                #       var hexString = rgbNumber.toString(16);
-                                #       var missingZeros = 6 - hexString.length;
-                                #       var resultBuilder = ['#'];
-                                #       for (var i = 0; i < missingZeros; i++) {
-                                #          resultBuilder.push('0');
-                                #       }
-                                #       resultBuilder.push(hexString);
-                                #       return resultBuilder.join('');
-                                #     };
-                                #
-                                #     // ...
-                              "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
-                              "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
-                                  # the final pixel color is defined by the equation:
-                                  #
-                                  #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
-                                  #
-                                  # This means that a value of 1.0 corresponds to a solid color, whereas
-                                  # a value of 0.0 corresponds to a completely transparent color. This
-                                  # uses a wrapper message rather than a simple float scalar so that it is
-                                  # possible to distinguish between a default value and the value being unset.
-                                  # If omitted, this color object is to be rendered as a solid color
-                                  # (as if the alpha value had been explicitly given with a value of 1.0).
-                              "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
-                              "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
-                            },
-                            "width": 42, # The width of the border, in pixels.
-                                # Deprecated; the width is determined by the "style" field.
-                            "style": "A String", # The style of the border.
-                          },
-                        },
-                        "wrapStrategy": "A String", # The wrap strategy for the value in the cell.
-                      },
-                      "userEnteredFormat": { # The format of a cell. # The format the user entered for the cell.
-                          #
-                          # When writing, the new format will be merged with the existing format.
-                        "numberFormat": { # The number format of a cell. # A format describing how number values should be represented to the user.
-                          "pattern": "A String", # Pattern string used for formatting.  If not set, a default pattern based on
-                              # the user's locale will be used if necessary for the given type.
-                              # See the [Date and Number Formats guide](/sheets/guides/formats) for more
-                              # information about the supported patterns.
-                          "type": "A String", # The type of the number format.
-                              # When writing, this field must be set.
-                        },
-                        "textDirection": "A String", # The direction of the text in the cell.
-                        "padding": { # The amount of padding around the cell, in pixels. # The padding of the cell.
-                            # When updating padding, every field must be specified.
-                          "top": 42, # The top padding of the cell.
-                          "right": 42, # The right padding of the cell.
-                          "bottom": 42, # The bottom padding of the cell.
-                          "left": 42, # The left padding of the cell.
-                        },
-                        "horizontalAlignment": "A String", # The horizontal alignment of the value in the cell.
-                        "backgroundColor": { # Represents a color in the RGBA color space. This representation is designed # The background color of the cell.
-                            # for simplicity of conversion to/from color representations in various
-                            # languages over compactness; for example, the fields of this representation
-                            # can be trivially provided to the constructor of "java.awt.Color" in Java; it
-                            # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
-                            # method in iOS; and, with just a little work, it can be easily formatted into
-                            # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
-                            #
-                            # Example (Java):
-                            #
-                            #      import com.google.type.Color;
-                            #
-                            #      // ...
-                            #      public static java.awt.Color fromProto(Color protocolor) {
-                            #        float alpha = protocolor.hasAlpha()
-                            #            ? protocolor.getAlpha().getValue()
-                            #            : 1.0;
-                            #
-                            #        return new java.awt.Color(
-                            #            protocolor.getRed(),
-                            #            protocolor.getGreen(),
-                            #            protocolor.getBlue(),
-                            #            alpha);
-                            #      }
-                            #
-                            #      public static Color toProto(java.awt.Color color) {
-                            #        float red = (float) color.getRed();
-                            #        float green = (float) color.getGreen();
-                            #        float blue = (float) color.getBlue();
-                            #        float denominator = 255.0;
-                            #        Color.Builder resultBuilder =
-                            #            Color
-                            #                .newBuilder()
-                            #                .setRed(red / denominator)
-                            #                .setGreen(green / denominator)
-                            #                .setBlue(blue / denominator);
-                            #        int alpha = color.getAlpha();
-                            #        if (alpha != 255) {
-                            #          result.setAlpha(
-                            #              FloatValue
-                            #                  .newBuilder()
-                            #                  .setValue(((float) alpha) / denominator)
-                            #                  .build());
-                            #        }
-                            #        return resultBuilder.build();
-                            #      }
-                            #      // ...
-                            #
-                            # Example (iOS / Obj-C):
-                            #
-                            #      // ...
-                            #      static UIColor* fromProto(Color* protocolor) {
-                            #         float red = [protocolor red];
-                            #         float green = [protocolor green];
-                            #         float blue = [protocolor blue];
-                            #         FloatValue* alpha_wrapper = [protocolor alpha];
-                            #         float alpha = 1.0;
-                            #         if (alpha_wrapper != nil) {
-                            #           alpha = [alpha_wrapper value];
-                            #         }
-                            #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
-                            #      }
-                            #
-                            #      static Color* toProto(UIColor* color) {
-                            #          CGFloat red, green, blue, alpha;
-                            #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
-                            #            return nil;
-                            #          }
-                            #          Color* result = [Color alloc] init];
-                            #          [result setRed:red];
-                            #          [result setGreen:green];
-                            #          [result setBlue:blue];
-                            #          if (alpha <= 0.9999) {
-                            #            [result setAlpha:floatWrapperWithValue(alpha)];
-                            #          }
-                            #          [result autorelease];
-                            #          return result;
-                            #     }
-                            #     // ...
-                            #
-                            #  Example (JavaScript):
-                            #
-                            #     // ...
-                            #
-                            #     var protoToCssColor = function(rgb_color) {
-                            #        var redFrac = rgb_color.red || 0.0;
-                            #        var greenFrac = rgb_color.green || 0.0;
-                            #        var blueFrac = rgb_color.blue || 0.0;
-                            #        var red = Math.floor(redFrac * 255);
-                            #        var green = Math.floor(greenFrac * 255);
-                            #        var blue = Math.floor(blueFrac * 255);
-                            #
-                            #        if (!('alpha' in rgb_color)) {
-                            #           return rgbToCssColor_(red, green, blue);
-                            #        }
-                            #
-                            #        var alphaFrac = rgb_color.alpha.value || 0.0;
-                            #        var rgbParams = [red, green, blue].join(',');
-                            #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
-                            #     };
-                            #
-                            #     var rgbToCssColor_ = function(red, green, blue) {
-                            #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
-                            #       var hexString = rgbNumber.toString(16);
-                            #       var missingZeros = 6 - hexString.length;
-                            #       var resultBuilder = ['#'];
-                            #       for (var i = 0; i < missingZeros; i++) {
-                            #          resultBuilder.push('0');
-                            #       }
-                            #       resultBuilder.push(hexString);
-                            #       return resultBuilder.join('');
-                            #     };
-                            #
-                            #     // ...
-                          "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
-                          "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
-                              # the final pixel color is defined by the equation:
-                              #
-                              #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
-                              #
-                              # This means that a value of 1.0 corresponds to a solid color, whereas
-                              # a value of 0.0 corresponds to a completely transparent color. This
-                              # uses a wrapper message rather than a simple float scalar so that it is
-                              # possible to distinguish between a default value and the value being unset.
-                              # If omitted, this color object is to be rendered as a solid color
-                              # (as if the alpha value had been explicitly given with a value of 1.0).
-                          "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
-                          "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
-                        },
-                        "verticalAlignment": "A String", # The vertical alignment of the value in the cell.
-                        "textFormat": { # The format of a run of text in a cell. # The format of the text in the cell (unless overridden by a format run).
-                            # Absent values indicate that the field isn't specified.
-                          "foregroundColor": { # Represents a color in the RGBA color space. This representation is designed # The foreground color of the text.
-                              # for simplicity of conversion to/from color representations in various
-                              # languages over compactness; for example, the fields of this representation
-                              # can be trivially provided to the constructor of "java.awt.Color" in Java; it
-                              # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
-                              # method in iOS; and, with just a little work, it can be easily formatted into
-                              # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
-                              #
-                              # Example (Java):
-                              #
-                              #      import com.google.type.Color;
-                              #
-                              #      // ...
-                              #      public static java.awt.Color fromProto(Color protocolor) {
-                              #        float alpha = protocolor.hasAlpha()
-                              #            ? protocolor.getAlpha().getValue()
-                              #            : 1.0;
-                              #
-                              #        return new java.awt.Color(
-                              #            protocolor.getRed(),
-                              #            protocolor.getGreen(),
-                              #            protocolor.getBlue(),
-                              #            alpha);
-                              #      }
-                              #
-                              #      public static Color toProto(java.awt.Color color) {
-                              #        float red = (float) color.getRed();
-                              #        float green = (float) color.getGreen();
-                              #        float blue = (float) color.getBlue();
-                              #        float denominator = 255.0;
-                              #        Color.Builder resultBuilder =
-                              #            Color
-                              #                .newBuilder()
-                              #                .setRed(red / denominator)
-                              #                .setGreen(green / denominator)
-                              #                .setBlue(blue / denominator);
-                              #        int alpha = color.getAlpha();
-                              #        if (alpha != 255) {
-                              #          result.setAlpha(
-                              #              FloatValue
-                              #                  .newBuilder()
-                              #                  .setValue(((float) alpha) / denominator)
-                              #                  .build());
-                              #        }
-                              #        return resultBuilder.build();
-                              #      }
-                              #      // ...
-                              #
-                              # Example (iOS / Obj-C):
-                              #
-                              #      // ...
-                              #      static UIColor* fromProto(Color* protocolor) {
-                              #         float red = [protocolor red];
-                              #         float green = [protocolor green];
-                              #         float blue = [protocolor blue];
-                              #         FloatValue* alpha_wrapper = [protocolor alpha];
-                              #         float alpha = 1.0;
-                              #         if (alpha_wrapper != nil) {
-                              #           alpha = [alpha_wrapper value];
-                              #         }
-                              #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
-                              #      }
-                              #
-                              #      static Color* toProto(UIColor* color) {
-                              #          CGFloat red, green, blue, alpha;
-                              #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
-                              #            return nil;
-                              #          }
-                              #          Color* result = [Color alloc] init];
-                              #          [result setRed:red];
-                              #          [result setGreen:green];
-                              #          [result setBlue:blue];
-                              #          if (alpha <= 0.9999) {
-                              #            [result setAlpha:floatWrapperWithValue(alpha)];
-                              #          }
-                              #          [result autorelease];
-                              #          return result;
-                              #     }
-                              #     // ...
-                              #
-                              #  Example (JavaScript):
-                              #
-                              #     // ...
-                              #
-                              #     var protoToCssColor = function(rgb_color) {
-                              #        var redFrac = rgb_color.red || 0.0;
-                              #        var greenFrac = rgb_color.green || 0.0;
-                              #        var blueFrac = rgb_color.blue || 0.0;
-                              #        var red = Math.floor(redFrac * 255);
-                              #        var green = Math.floor(greenFrac * 255);
-                              #        var blue = Math.floor(blueFrac * 255);
-                              #
-                              #        if (!('alpha' in rgb_color)) {
-                              #           return rgbToCssColor_(red, green, blue);
-                              #        }
-                              #
-                              #        var alphaFrac = rgb_color.alpha.value || 0.0;
-                              #        var rgbParams = [red, green, blue].join(',');
-                              #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
-                              #     };
-                              #
-                              #     var rgbToCssColor_ = function(red, green, blue) {
-                              #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
-                              #       var hexString = rgbNumber.toString(16);
-                              #       var missingZeros = 6 - hexString.length;
-                              #       var resultBuilder = ['#'];
-                              #       for (var i = 0; i < missingZeros; i++) {
-                              #          resultBuilder.push('0');
-                              #       }
-                              #       resultBuilder.push(hexString);
-                              #       return resultBuilder.join('');
-                              #     };
-                              #
-                              #     // ...
-                            "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
-                            "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
-                                # the final pixel color is defined by the equation:
-                                #
-                                #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
-                                #
-                                # This means that a value of 1.0 corresponds to a solid color, whereas
-                                # a value of 0.0 corresponds to a completely transparent color. This
-                                # uses a wrapper message rather than a simple float scalar so that it is
-                                # possible to distinguish between a default value and the value being unset.
-                                # If omitted, this color object is to be rendered as a solid color
-                                # (as if the alpha value had been explicitly given with a value of 1.0).
-                            "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
-                            "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
-                          },
-                          "bold": True or False, # True if the text is bold.
-                          "strikethrough": True or False, # True if the text has a strikethrough.
-                          "fontFamily": "A String", # The font family.
-                          "fontSize": 42, # The size of the font.
-                          "italic": True or False, # True if the text is italicized.
-                          "underline": True or False, # True if the text is underlined.
-                        },
-                        "hyperlinkDisplayType": "A String", # How a hyperlink, if it exists, should be displayed in the cell.
-                        "borders": { # The borders of the cell. # The borders of the cell.
-                          "top": { # A border along a cell. # The top border of the cell.
-                            "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
-                                # for simplicity of conversion to/from color representations in various
-                                # languages over compactness; for example, the fields of this representation
-                                # can be trivially provided to the constructor of "java.awt.Color" in Java; it
-                                # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
-                                # method in iOS; and, with just a little work, it can be easily formatted into
-                                # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
-                                #
-                                # Example (Java):
-                                #
-                                #      import com.google.type.Color;
-                                #
-                                #      // ...
-                                #      public static java.awt.Color fromProto(Color protocolor) {
-                                #        float alpha = protocolor.hasAlpha()
-                                #            ? protocolor.getAlpha().getValue()
-                                #            : 1.0;
-                                #
-                                #        return new java.awt.Color(
-                                #            protocolor.getRed(),
-                                #            protocolor.getGreen(),
-                                #            protocolor.getBlue(),
-                                #            alpha);
-                                #      }
-                                #
-                                #      public static Color toProto(java.awt.Color color) {
-                                #        float red = (float) color.getRed();
-                                #        float green = (float) color.getGreen();
-                                #        float blue = (float) color.getBlue();
-                                #        float denominator = 255.0;
-                                #        Color.Builder resultBuilder =
-                                #            Color
-                                #                .newBuilder()
-                                #                .setRed(red / denominator)
-                                #                .setGreen(green / denominator)
-                                #                .setBlue(blue / denominator);
-                                #        int alpha = color.getAlpha();
-                                #        if (alpha != 255) {
-                                #          result.setAlpha(
-                                #              FloatValue
-                                #                  .newBuilder()
-                                #                  .setValue(((float) alpha) / denominator)
-                                #                  .build());
-                                #        }
-                                #        return resultBuilder.build();
-                                #      }
-                                #      // ...
-                                #
-                                # Example (iOS / Obj-C):
-                                #
-                                #      // ...
-                                #      static UIColor* fromProto(Color* protocolor) {
-                                #         float red = [protocolor red];
-                                #         float green = [protocolor green];
-                                #         float blue = [protocolor blue];
-                                #         FloatValue* alpha_wrapper = [protocolor alpha];
-                                #         float alpha = 1.0;
-                                #         if (alpha_wrapper != nil) {
-                                #           alpha = [alpha_wrapper value];
-                                #         }
-                                #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
-                                #      }
-                                #
-                                #      static Color* toProto(UIColor* color) {
-                                #          CGFloat red, green, blue, alpha;
-                                #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
-                                #            return nil;
-                                #          }
-                                #          Color* result = [Color alloc] init];
-                                #          [result setRed:red];
-                                #          [result setGreen:green];
-                                #          [result setBlue:blue];
-                                #          if (alpha <= 0.9999) {
-                                #            [result setAlpha:floatWrapperWithValue(alpha)];
-                                #          }
-                                #          [result autorelease];
-                                #          return result;
-                                #     }
-                                #     // ...
-                                #
-                                #  Example (JavaScript):
-                                #
-                                #     // ...
-                                #
-                                #     var protoToCssColor = function(rgb_color) {
-                                #        var redFrac = rgb_color.red || 0.0;
-                                #        var greenFrac = rgb_color.green || 0.0;
-                                #        var blueFrac = rgb_color.blue || 0.0;
-                                #        var red = Math.floor(redFrac * 255);
-                                #        var green = Math.floor(greenFrac * 255);
-                                #        var blue = Math.floor(blueFrac * 255);
-                                #
-                                #        if (!('alpha' in rgb_color)) {
-                                #           return rgbToCssColor_(red, green, blue);
-                                #        }
-                                #
-                                #        var alphaFrac = rgb_color.alpha.value || 0.0;
-                                #        var rgbParams = [red, green, blue].join(',');
-                                #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
-                                #     };
-                                #
-                                #     var rgbToCssColor_ = function(red, green, blue) {
-                                #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
-                                #       var hexString = rgbNumber.toString(16);
-                                #       var missingZeros = 6 - hexString.length;
-                                #       var resultBuilder = ['#'];
-                                #       for (var i = 0; i < missingZeros; i++) {
-                                #          resultBuilder.push('0');
-                                #       }
-                                #       resultBuilder.push(hexString);
-                                #       return resultBuilder.join('');
-                                #     };
-                                #
-                                #     // ...
-                              "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
-                              "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
-                                  # the final pixel color is defined by the equation:
-                                  #
-                                  #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
-                                  #
-                                  # This means that a value of 1.0 corresponds to a solid color, whereas
-                                  # a value of 0.0 corresponds to a completely transparent color. This
-                                  # uses a wrapper message rather than a simple float scalar so that it is
-                                  # possible to distinguish between a default value and the value being unset.
-                                  # If omitted, this color object is to be rendered as a solid color
-                                  # (as if the alpha value had been explicitly given with a value of 1.0).
-                              "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
-                              "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
-                            },
-                            "width": 42, # The width of the border, in pixels.
-                                # Deprecated; the width is determined by the "style" field.
-                            "style": "A String", # The style of the border.
-                          },
-                          "right": { # A border along a cell. # The right border of the cell.
-                            "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
-                                # for simplicity of conversion to/from color representations in various
-                                # languages over compactness; for example, the fields of this representation
-                                # can be trivially provided to the constructor of "java.awt.Color" in Java; it
-                                # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
-                                # method in iOS; and, with just a little work, it can be easily formatted into
-                                # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
-                                #
-                                # Example (Java):
-                                #
-                                #      import com.google.type.Color;
-                                #
-                                #      // ...
-                                #      public static java.awt.Color fromProto(Color protocolor) {
-                                #        float alpha = protocolor.hasAlpha()
-                                #            ? protocolor.getAlpha().getValue()
-                                #            : 1.0;
-                                #
-                                #        return new java.awt.Color(
-                                #            protocolor.getRed(),
-                                #            protocolor.getGreen(),
-                                #            protocolor.getBlue(),
-                                #            alpha);
-                                #      }
-                                #
-                                #      public static Color toProto(java.awt.Color color) {
-                                #        float red = (float) color.getRed();
-                                #        float green = (float) color.getGreen();
-                                #        float blue = (float) color.getBlue();
-                                #        float denominator = 255.0;
-                                #        Color.Builder resultBuilder =
-                                #            Color
-                                #                .newBuilder()
-                                #                .setRed(red / denominator)
-                                #                .setGreen(green / denominator)
-                                #                .setBlue(blue / denominator);
-                                #        int alpha = color.getAlpha();
-                                #        if (alpha != 255) {
-                                #          result.setAlpha(
-                                #              FloatValue
-                                #                  .newBuilder()
-                                #                  .setValue(((float) alpha) / denominator)
-                                #                  .build());
-                                #        }
-                                #        return resultBuilder.build();
-                                #      }
-                                #      // ...
-                                #
-                                # Example (iOS / Obj-C):
-                                #
-                                #      // ...
-                                #      static UIColor* fromProto(Color* protocolor) {
-                                #         float red = [protocolor red];
-                                #         float green = [protocolor green];
-                                #         float blue = [protocolor blue];
-                                #         FloatValue* alpha_wrapper = [protocolor alpha];
-                                #         float alpha = 1.0;
-                                #         if (alpha_wrapper != nil) {
-                                #           alpha = [alpha_wrapper value];
-                                #         }
-                                #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
-                                #      }
-                                #
-                                #      static Color* toProto(UIColor* color) {
-                                #          CGFloat red, green, blue, alpha;
-                                #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
-                                #            return nil;
-                                #          }
-                                #          Color* result = [Color alloc] init];
-                                #          [result setRed:red];
-                                #          [result setGreen:green];
-                                #          [result setBlue:blue];
-                                #          if (alpha <= 0.9999) {
-                                #            [result setAlpha:floatWrapperWithValue(alpha)];
-                                #          }
-                                #          [result autorelease];
-                                #          return result;
-                                #     }
-                                #     // ...
-                                #
-                                #  Example (JavaScript):
-                                #
-                                #     // ...
-                                #
-                                #     var protoToCssColor = function(rgb_color) {
-                                #        var redFrac = rgb_color.red || 0.0;
-                                #        var greenFrac = rgb_color.green || 0.0;
-                                #        var blueFrac = rgb_color.blue || 0.0;
-                                #        var red = Math.floor(redFrac * 255);
-                                #        var green = Math.floor(greenFrac * 255);
-                                #        var blue = Math.floor(blueFrac * 255);
-                                #
-                                #        if (!('alpha' in rgb_color)) {
-                                #           return rgbToCssColor_(red, green, blue);
-                                #        }
-                                #
-                                #        var alphaFrac = rgb_color.alpha.value || 0.0;
-                                #        var rgbParams = [red, green, blue].join(',');
-                                #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
-                                #     };
-                                #
-                                #     var rgbToCssColor_ = function(red, green, blue) {
-                                #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
-                                #       var hexString = rgbNumber.toString(16);
-                                #       var missingZeros = 6 - hexString.length;
-                                #       var resultBuilder = ['#'];
-                                #       for (var i = 0; i < missingZeros; i++) {
-                                #          resultBuilder.push('0');
-                                #       }
-                                #       resultBuilder.push(hexString);
-                                #       return resultBuilder.join('');
-                                #     };
-                                #
-                                #     // ...
-                              "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
-                              "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
-                                  # the final pixel color is defined by the equation:
-                                  #
-                                  #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
-                                  #
-                                  # This means that a value of 1.0 corresponds to a solid color, whereas
-                                  # a value of 0.0 corresponds to a completely transparent color. This
-                                  # uses a wrapper message rather than a simple float scalar so that it is
-                                  # possible to distinguish between a default value and the value being unset.
-                                  # If omitted, this color object is to be rendered as a solid color
-                                  # (as if the alpha value had been explicitly given with a value of 1.0).
-                              "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
-                              "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
-                            },
-                            "width": 42, # The width of the border, in pixels.
-                                # Deprecated; the width is determined by the "style" field.
-                            "style": "A String", # The style of the border.
-                          },
-                          "bottom": { # A border along a cell. # The bottom border of the cell.
-                            "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
-                                # for simplicity of conversion to/from color representations in various
-                                # languages over compactness; for example, the fields of this representation
-                                # can be trivially provided to the constructor of "java.awt.Color" in Java; it
-                                # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
-                                # method in iOS; and, with just a little work, it can be easily formatted into
-                                # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
-                                #
-                                # Example (Java):
-                                #
-                                #      import com.google.type.Color;
-                                #
-                                #      // ...
-                                #      public static java.awt.Color fromProto(Color protocolor) {
-                                #        float alpha = protocolor.hasAlpha()
-                                #            ? protocolor.getAlpha().getValue()
-                                #            : 1.0;
-                                #
-                                #        return new java.awt.Color(
-                                #            protocolor.getRed(),
-                                #            protocolor.getGreen(),
-                                #            protocolor.getBlue(),
-                                #            alpha);
-                                #      }
-                                #
-                                #      public static Color toProto(java.awt.Color color) {
-                                #        float red = (float) color.getRed();
-                                #        float green = (float) color.getGreen();
-                                #        float blue = (float) color.getBlue();
-                                #        float denominator = 255.0;
-                                #        Color.Builder resultBuilder =
-                                #            Color
-                                #                .newBuilder()
-                                #                .setRed(red / denominator)
-                                #                .setGreen(green / denominator)
-                                #                .setBlue(blue / denominator);
-                                #        int alpha = color.getAlpha();
-                                #        if (alpha != 255) {
-                                #          result.setAlpha(
-                                #              FloatValue
-                                #                  .newBuilder()
-                                #                  .setValue(((float) alpha) / denominator)
-                                #                  .build());
-                                #        }
-                                #        return resultBuilder.build();
-                                #      }
-                                #      // ...
-                                #
-                                # Example (iOS / Obj-C):
-                                #
-                                #      // ...
-                                #      static UIColor* fromProto(Color* protocolor) {
-                                #         float red = [protocolor red];
-                                #         float green = [protocolor green];
-                                #         float blue = [protocolor blue];
-                                #         FloatValue* alpha_wrapper = [protocolor alpha];
-                                #         float alpha = 1.0;
-                                #         if (alpha_wrapper != nil) {
-                                #           alpha = [alpha_wrapper value];
-                                #         }
-                                #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
-                                #      }
-                                #
-                                #      static Color* toProto(UIColor* color) {
-                                #          CGFloat red, green, blue, alpha;
-                                #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
-                                #            return nil;
-                                #          }
-                                #          Color* result = [Color alloc] init];
-                                #          [result setRed:red];
-                                #          [result setGreen:green];
-                                #          [result setBlue:blue];
-                                #          if (alpha <= 0.9999) {
-                                #            [result setAlpha:floatWrapperWithValue(alpha)];
-                                #          }
-                                #          [result autorelease];
-                                #          return result;
-                                #     }
-                                #     // ...
-                                #
-                                #  Example (JavaScript):
-                                #
-                                #     // ...
-                                #
-                                #     var protoToCssColor = function(rgb_color) {
-                                #        var redFrac = rgb_color.red || 0.0;
-                                #        var greenFrac = rgb_color.green || 0.0;
-                                #        var blueFrac = rgb_color.blue || 0.0;
-                                #        var red = Math.floor(redFrac * 255);
-                                #        var green = Math.floor(greenFrac * 255);
-                                #        var blue = Math.floor(blueFrac * 255);
-                                #
-                                #        if (!('alpha' in rgb_color)) {
-                                #           return rgbToCssColor_(red, green, blue);
-                                #        }
-                                #
-                                #        var alphaFrac = rgb_color.alpha.value || 0.0;
-                                #        var rgbParams = [red, green, blue].join(',');
-                                #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
-                                #     };
-                                #
-                                #     var rgbToCssColor_ = function(red, green, blue) {
-                                #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
-                                #       var hexString = rgbNumber.toString(16);
-                                #       var missingZeros = 6 - hexString.length;
-                                #       var resultBuilder = ['#'];
-                                #       for (var i = 0; i < missingZeros; i++) {
-                                #          resultBuilder.push('0');
-                                #       }
-                                #       resultBuilder.push(hexString);
-                                #       return resultBuilder.join('');
-                                #     };
-                                #
-                                #     // ...
-                              "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
-                              "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
-                                  # the final pixel color is defined by the equation:
-                                  #
-                                  #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
-                                  #
-                                  # This means that a value of 1.0 corresponds to a solid color, whereas
-                                  # a value of 0.0 corresponds to a completely transparent color. This
-                                  # uses a wrapper message rather than a simple float scalar so that it is
-                                  # possible to distinguish between a default value and the value being unset.
-                                  # If omitted, this color object is to be rendered as a solid color
-                                  # (as if the alpha value had been explicitly given with a value of 1.0).
-                              "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
-                              "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
-                            },
-                            "width": 42, # The width of the border, in pixels.
-                                # Deprecated; the width is determined by the "style" field.
-                            "style": "A String", # The style of the border.
-                          },
-                          "left": { # A border along a cell. # The left border of the cell.
-                            "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
-                                # for simplicity of conversion to/from color representations in various
-                                # languages over compactness; for example, the fields of this representation
-                                # can be trivially provided to the constructor of "java.awt.Color" in Java; it
-                                # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
-                                # method in iOS; and, with just a little work, it can be easily formatted into
-                                # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
-                                #
-                                # Example (Java):
-                                #
-                                #      import com.google.type.Color;
-                                #
-                                #      // ...
-                                #      public static java.awt.Color fromProto(Color protocolor) {
-                                #        float alpha = protocolor.hasAlpha()
-                                #            ? protocolor.getAlpha().getValue()
-                                #            : 1.0;
-                                #
-                                #        return new java.awt.Color(
-                                #            protocolor.getRed(),
-                                #            protocolor.getGreen(),
-                                #            protocolor.getBlue(),
-                                #            alpha);
-                                #      }
-                                #
-                                #      public static Color toProto(java.awt.Color color) {
-                                #        float red = (float) color.getRed();
-                                #        float green = (float) color.getGreen();
-                                #        float blue = (float) color.getBlue();
-                                #        float denominator = 255.0;
-                                #        Color.Builder resultBuilder =
-                                #            Color
-                                #                .newBuilder()
-                                #                .setRed(red / denominator)
-                                #                .setGreen(green / denominator)
-                                #                .setBlue(blue / denominator);
-                                #        int alpha = color.getAlpha();
-                                #        if (alpha != 255) {
-                                #          result.setAlpha(
-                                #              FloatValue
-                                #                  .newBuilder()
-                                #                  .setValue(((float) alpha) / denominator)
-                                #                  .build());
-                                #        }
-                                #        return resultBuilder.build();
-                                #      }
-                                #      // ...
-                                #
-                                # Example (iOS / Obj-C):
-                                #
-                                #      // ...
-                                #      static UIColor* fromProto(Color* protocolor) {
-                                #         float red = [protocolor red];
-                                #         float green = [protocolor green];
-                                #         float blue = [protocolor blue];
-                                #         FloatValue* alpha_wrapper = [protocolor alpha];
-                                #         float alpha = 1.0;
-                                #         if (alpha_wrapper != nil) {
-                                #           alpha = [alpha_wrapper value];
-                                #         }
-                                #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
-                                #      }
-                                #
-                                #      static Color* toProto(UIColor* color) {
-                                #          CGFloat red, green, blue, alpha;
-                                #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
-                                #            return nil;
-                                #          }
-                                #          Color* result = [Color alloc] init];
-                                #          [result setRed:red];
-                                #          [result setGreen:green];
-                                #          [result setBlue:blue];
-                                #          if (alpha <= 0.9999) {
-                                #            [result setAlpha:floatWrapperWithValue(alpha)];
-                                #          }
-                                #          [result autorelease];
-                                #          return result;
-                                #     }
-                                #     // ...
-                                #
-                                #  Example (JavaScript):
-                                #
-                                #     // ...
-                                #
-                                #     var protoToCssColor = function(rgb_color) {
-                                #        var redFrac = rgb_color.red || 0.0;
-                                #        var greenFrac = rgb_color.green || 0.0;
-                                #        var blueFrac = rgb_color.blue || 0.0;
-                                #        var red = Math.floor(redFrac * 255);
-                                #        var green = Math.floor(greenFrac * 255);
-                                #        var blue = Math.floor(blueFrac * 255);
-                                #
-                                #        if (!('alpha' in rgb_color)) {
-                                #           return rgbToCssColor_(red, green, blue);
-                                #        }
-                                #
-                                #        var alphaFrac = rgb_color.alpha.value || 0.0;
-                                #        var rgbParams = [red, green, blue].join(',');
-                                #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
-                                #     };
-                                #
-                                #     var rgbToCssColor_ = function(red, green, blue) {
-                                #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
-                                #       var hexString = rgbNumber.toString(16);
-                                #       var missingZeros = 6 - hexString.length;
-                                #       var resultBuilder = ['#'];
-                                #       for (var i = 0; i < missingZeros; i++) {
-                                #          resultBuilder.push('0');
-                                #       }
-                                #       resultBuilder.push(hexString);
-                                #       return resultBuilder.join('');
-                                #     };
-                                #
-                                #     // ...
-                              "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
-                              "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
-                                  # the final pixel color is defined by the equation:
-                                  #
-                                  #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
-                                  #
-                                  # This means that a value of 1.0 corresponds to a solid color, whereas
-                                  # a value of 0.0 corresponds to a completely transparent color. This
-                                  # uses a wrapper message rather than a simple float scalar so that it is
-                                  # possible to distinguish between a default value and the value being unset.
-                                  # If omitted, this color object is to be rendered as a solid color
-                                  # (as if the alpha value had been explicitly given with a value of 1.0).
-                              "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
-                              "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
-                            },
-                            "width": 42, # The width of the border, in pixels.
-                                # Deprecated; the width is determined by the "style" field.
-                            "style": "A String", # The style of the border.
-                          },
-                        },
-                        "wrapStrategy": "A String", # The wrap strategy for the value in the cell.
-                      },
-                      "dataValidation": { # A data validation rule. # A data validation rule on the cell, if any.
-                          #
-                          # When writing, the new data validation rule will overwrite any prior rule.
-                        "showCustomUi": True or False, # True if the UI should be customized based on the kind of condition.
-                            # If true, "List" conditions will show a dropdown.
-                        "strict": True or False, # True if invalid data should be rejected.
-                        "inputMessage": "A String", # A message to show the user when adding data to the cell.
-                        "condition": { # A condition that can evaluate to true or false. # The condition that data in the cell must match.
-                            # BooleanConditions are used by conditional formatting,
-                            # data validation, and the criteria in filters.
-                          "type": "A String", # The type of condition.
-                          "values": [ # The values of the condition. The number of supported values depends
-                              # on the condition type.  Some support zero values,
-                              # others one or two values,
-                              # and ConditionType.ONE_OF_LIST supports an arbitrary number of values.
-                            { # The value of the condition.
-                              "relativeDate": "A String", # A relative date (based on the current date).
-                                  # Valid only if the type is
-                                  # DATE_BEFORE,
-                                  # DATE_AFTER,
-                                  # DATE_ON_OR_BEFORE or
-                                  # DATE_ON_OR_AFTER.
-                                  #
-                                  # Relative dates are not supported in data validation.
-                                  # They are supported only in conditional formatting and
-                                  # conditional filters.
-                              "userEnteredValue": "A String", # A value the condition is based on.
-                                  # The value will be parsed as if the user typed into a cell.
-                                  # Formulas are supported (and must begin with an `=`).
-                            },
-                          ],
-                        },
-                      },
-                      "textFormatRuns": [ # Runs of rich text applied to subsections of the cell.  Runs are only valid
-                          # on user entered strings, not formulas, bools, or numbers.
-                          # Runs start at specific indexes in the text and continue until the next
-                          # run. Properties of a run will continue unless explicitly changed
-                          # in a subsequent run (and properties of the first run will continue
-                          # the properties of the cell unless explicitly changed).
-                          #
-                          # When writing, the new runs will overwrite any prior runs.  When writing a
-                          # new user_entered_value, previous runs will be erased.
-                        { # A run of a text format. The format of this run continues until the start
-                            # index of the next run.
-                            # When updating, all fields must be set.
-                          "startIndex": 42, # The character index where this run starts.
-                          "format": { # The format of a run of text in a cell. # The format of this run.  Absent values inherit the cell's format.
-                              # Absent values indicate that the field isn't specified.
-                            "foregroundColor": { # Represents a color in the RGBA color space. This representation is designed # The foreground color of the text.
-                                # for simplicity of conversion to/from color representations in various
-                                # languages over compactness; for example, the fields of this representation
-                                # can be trivially provided to the constructor of "java.awt.Color" in Java; it
-                                # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
-                                # method in iOS; and, with just a little work, it can be easily formatted into
-                                # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
-                                #
-                                # Example (Java):
-                                #
-                                #      import com.google.type.Color;
-                                #
-                                #      // ...
-                                #      public static java.awt.Color fromProto(Color protocolor) {
-                                #        float alpha = protocolor.hasAlpha()
-                                #            ? protocolor.getAlpha().getValue()
-                                #            : 1.0;
-                                #
-                                #        return new java.awt.Color(
-                                #            protocolor.getRed(),
-                                #            protocolor.getGreen(),
-                                #            protocolor.getBlue(),
-                                #            alpha);
-                                #      }
-                                #
-                                #      public static Color toProto(java.awt.Color color) {
-                                #        float red = (float) color.getRed();
-                                #        float green = (float) color.getGreen();
-                                #        float blue = (float) color.getBlue();
-                                #        float denominator = 255.0;
-                                #        Color.Builder resultBuilder =
-                                #            Color
-                                #                .newBuilder()
-                                #                .setRed(red / denominator)
-                                #                .setGreen(green / denominator)
-                                #                .setBlue(blue / denominator);
-                                #        int alpha = color.getAlpha();
-                                #        if (alpha != 255) {
-                                #          result.setAlpha(
-                                #              FloatValue
-                                #                  .newBuilder()
-                                #                  .setValue(((float) alpha) / denominator)
-                                #                  .build());
-                                #        }
-                                #        return resultBuilder.build();
-                                #      }
-                                #      // ...
-                                #
-                                # Example (iOS / Obj-C):
-                                #
-                                #      // ...
-                                #      static UIColor* fromProto(Color* protocolor) {
-                                #         float red = [protocolor red];
-                                #         float green = [protocolor green];
-                                #         float blue = [protocolor blue];
-                                #         FloatValue* alpha_wrapper = [protocolor alpha];
-                                #         float alpha = 1.0;
-                                #         if (alpha_wrapper != nil) {
-                                #           alpha = [alpha_wrapper value];
-                                #         }
-                                #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
-                                #      }
-                                #
-                                #      static Color* toProto(UIColor* color) {
-                                #          CGFloat red, green, blue, alpha;
-                                #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
-                                #            return nil;
-                                #          }
-                                #          Color* result = [Color alloc] init];
-                                #          [result setRed:red];
-                                #          [result setGreen:green];
-                                #          [result setBlue:blue];
-                                #          if (alpha <= 0.9999) {
-                                #            [result setAlpha:floatWrapperWithValue(alpha)];
-                                #          }
-                                #          [result autorelease];
-                                #          return result;
-                                #     }
-                                #     // ...
-                                #
-                                #  Example (JavaScript):
-                                #
-                                #     // ...
-                                #
-                                #     var protoToCssColor = function(rgb_color) {
-                                #        var redFrac = rgb_color.red || 0.0;
-                                #        var greenFrac = rgb_color.green || 0.0;
-                                #        var blueFrac = rgb_color.blue || 0.0;
-                                #        var red = Math.floor(redFrac * 255);
-                                #        var green = Math.floor(greenFrac * 255);
-                                #        var blue = Math.floor(blueFrac * 255);
-                                #
-                                #        if (!('alpha' in rgb_color)) {
-                                #           return rgbToCssColor_(red, green, blue);
-                                #        }
-                                #
-                                #        var alphaFrac = rgb_color.alpha.value || 0.0;
-                                #        var rgbParams = [red, green, blue].join(',');
-                                #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
-                                #     };
-                                #
-                                #     var rgbToCssColor_ = function(red, green, blue) {
-                                #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
-                                #       var hexString = rgbNumber.toString(16);
-                                #       var missingZeros = 6 - hexString.length;
-                                #       var resultBuilder = ['#'];
-                                #       for (var i = 0; i < missingZeros; i++) {
-                                #          resultBuilder.push('0');
-                                #       }
-                                #       resultBuilder.push(hexString);
-                                #       return resultBuilder.join('');
-                                #     };
-                                #
-                                #     // ...
-                              "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
-                              "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
-                                  # the final pixel color is defined by the equation:
-                                  #
-                                  #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
-                                  #
-                                  # This means that a value of 1.0 corresponds to a solid color, whereas
-                                  # a value of 0.0 corresponds to a completely transparent color. This
-                                  # uses a wrapper message rather than a simple float scalar so that it is
-                                  # possible to distinguish between a default value and the value being unset.
-                                  # If omitted, this color object is to be rendered as a solid color
-                                  # (as if the alpha value had been explicitly given with a value of 1.0).
-                              "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
-                              "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
-                            },
-                            "bold": True or False, # True if the text is bold.
-                            "strikethrough": True or False, # True if the text has a strikethrough.
-                            "fontFamily": "A String", # The font family.
-                            "fontSize": 42, # The size of the font.
-                            "italic": True or False, # True if the text is italicized.
-                            "underline": True or False, # True if the text is underlined.
-                          },
-                        },
-                      ],
-                    },
-                  ],
-                },
-              ],
-            },
-          ],
-          "properties": { # Properties of a sheet. # The properties of the sheet.
-            "sheetType": "A String", # The type of sheet. Defaults to GRID.
-                # This field cannot be changed once set.
-            "index": 42, # The index of the sheet within the spreadsheet.
-                # When adding or updating sheet properties, if this field
-                # is excluded then the sheet will be added or moved to the end
-                # of the sheet list.
-            "title": "A String", # The name of the sheet.
-            "gridProperties": { # Properties of a grid. # Additional properties of the sheet if this sheet is a grid.
-                # (If the sheet is an object sheet, containing a chart or image, then
-                # this field will be absent.)
-                # When writing it is an error to set any grid properties on non-grid sheets.
-              "columnCount": 42, # The number of columns in the grid.
-              "rowCount": 42, # The number of rows in the grid.
-              "frozenColumnCount": 42, # The number of columns that are frozen in the grid.
-              "hideGridlines": True or False, # True if the grid isn't showing gridlines in the UI.
-              "frozenRowCount": 42, # The number of rows that are frozen in the grid.
-            },
-            "rightToLeft": True or False, # True if the sheet is an RTL sheet instead of an LTR sheet.
-            "tabColor": { # Represents a color in the RGBA color space. This representation is designed # The color of the tab in the UI.
-                # for simplicity of conversion to/from color representations in various
-                # languages over compactness; for example, the fields of this representation
-                # can be trivially provided to the constructor of "java.awt.Color" in Java; it
-                # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
-                # method in iOS; and, with just a little work, it can be easily formatted into
-                # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
-                #
-                # Example (Java):
-                #
-                #      import com.google.type.Color;
-                #
-                #      // ...
-                #      public static java.awt.Color fromProto(Color protocolor) {
-                #        float alpha = protocolor.hasAlpha()
-                #            ? protocolor.getAlpha().getValue()
-                #            : 1.0;
-                #
-                #        return new java.awt.Color(
-                #            protocolor.getRed(),
-                #            protocolor.getGreen(),
-                #            protocolor.getBlue(),
-                #            alpha);
-                #      }
-                #
-                #      public static Color toProto(java.awt.Color color) {
-                #        float red = (float) color.getRed();
-                #        float green = (float) color.getGreen();
-                #        float blue = (float) color.getBlue();
-                #        float denominator = 255.0;
-                #        Color.Builder resultBuilder =
-                #            Color
-                #                .newBuilder()
-                #                .setRed(red / denominator)
-                #                .setGreen(green / denominator)
-                #                .setBlue(blue / denominator);
-                #        int alpha = color.getAlpha();
-                #        if (alpha != 255) {
-                #          result.setAlpha(
-                #              FloatValue
-                #                  .newBuilder()
-                #                  .setValue(((float) alpha) / denominator)
-                #                  .build());
-                #        }
-                #        return resultBuilder.build();
-                #      }
-                #      // ...
-                #
-                # Example (iOS / Obj-C):
-                #
-                #      // ...
-                #      static UIColor* fromProto(Color* protocolor) {
-                #         float red = [protocolor red];
-                #         float green = [protocolor green];
-                #         float blue = [protocolor blue];
-                #         FloatValue* alpha_wrapper = [protocolor alpha];
-                #         float alpha = 1.0;
-                #         if (alpha_wrapper != nil) {
-                #           alpha = [alpha_wrapper value];
-                #         }
-                #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
-                #      }
-                #
-                #      static Color* toProto(UIColor* color) {
-                #          CGFloat red, green, blue, alpha;
-                #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
-                #            return nil;
-                #          }
-                #          Color* result = [Color alloc] init];
-                #          [result setRed:red];
-                #          [result setGreen:green];
-                #          [result setBlue:blue];
-                #          if (alpha <= 0.9999) {
-                #            [result setAlpha:floatWrapperWithValue(alpha)];
-                #          }
-                #          [result autorelease];
-                #          return result;
-                #     }
-                #     // ...
-                #
-                #  Example (JavaScript):
-                #
-                #     // ...
-                #
-                #     var protoToCssColor = function(rgb_color) {
-                #        var redFrac = rgb_color.red || 0.0;
-                #        var greenFrac = rgb_color.green || 0.0;
-                #        var blueFrac = rgb_color.blue || 0.0;
-                #        var red = Math.floor(redFrac * 255);
-                #        var green = Math.floor(greenFrac * 255);
-                #        var blue = Math.floor(blueFrac * 255);
-                #
-                #        if (!('alpha' in rgb_color)) {
-                #           return rgbToCssColor_(red, green, blue);
-                #        }
-                #
-                #        var alphaFrac = rgb_color.alpha.value || 0.0;
-                #        var rgbParams = [red, green, blue].join(',');
-                #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
-                #     };
-                #
-                #     var rgbToCssColor_ = function(red, green, blue) {
-                #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
-                #       var hexString = rgbNumber.toString(16);
-                #       var missingZeros = 6 - hexString.length;
-                #       var resultBuilder = ['#'];
-                #       for (var i = 0; i < missingZeros; i++) {
-                #          resultBuilder.push('0');
-                #       }
-                #       resultBuilder.push(hexString);
-                #       return resultBuilder.join('');
-                #     };
-                #
-                #     // ...
-              "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
-              "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
-                  # the final pixel color is defined by the equation:
-                  #
-                  #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
-                  #
-                  # This means that a value of 1.0 corresponds to a solid color, whereas
-                  # a value of 0.0 corresponds to a completely transparent color. This
-                  # uses a wrapper message rather than a simple float scalar so that it is
-                  # possible to distinguish between a default value and the value being unset.
-                  # If omitted, this color object is to be rendered as a solid color
-                  # (as if the alpha value had been explicitly given with a value of 1.0).
-              "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
-              "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
-            },
-            "hidden": True or False, # True if the sheet is hidden in the UI, false if it's visible.
-            "sheetId": 42, # The ID of the sheet. Must be non-negative.
-                # This field cannot be changed once set.
+            ],
           },
+        ],
+        "properties": { # Properties of a sheet. # The properties of the sheet.
+          "sheetType": "A String", # The type of sheet. Defaults to GRID.
+              # This field cannot be changed once set.
+          "index": 42, # The index of the sheet within the spreadsheet.
+              # When adding or updating sheet properties, if this field
+              # is excluded then the sheet will be added or moved to the end
+              # of the sheet list. When updating sheet indices or inserting
+              # sheets, movement is considered in "before the move" indexes.
+              # For example, if there were 3 sheets (S1, S2, S3) in order to
+              # move S1 ahead of S2 the index would have to be set to 2. A sheet
+              # index update request will be ignored if the requested index is
+              # identical to the sheets current index or if the requested new
+              # index is equal to the current sheet index + 1.
+          "title": "A String", # The name of the sheet.
+          "gridProperties": { # Properties of a grid. # Additional properties of the sheet if this sheet is a grid.
+              # (If the sheet is an object sheet, containing a chart or image, then
+              # this field will be absent.)
+              # When writing it is an error to set any grid properties on non-grid sheets.
+            "columnCount": 42, # The number of columns in the grid.
+            "rowCount": 42, # The number of rows in the grid.
+            "frozenColumnCount": 42, # The number of columns that are frozen in the grid.
+            "hideGridlines": True or False, # True if the grid isn't showing gridlines in the UI.
+            "frozenRowCount": 42, # The number of rows that are frozen in the grid.
+          },
+          "rightToLeft": True or False, # True if the sheet is an RTL sheet instead of an LTR sheet.
+          "tabColor": { # Represents a color in the RGBA color space. This representation is designed # The color of the tab in the UI.
+              # for simplicity of conversion to/from color representations in various
+              # languages over compactness; for example, the fields of this representation
+              # can be trivially provided to the constructor of "java.awt.Color" in Java; it
+              # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
+              # method in iOS; and, with just a little work, it can be easily formatted into
+              # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
+              #
+              # Example (Java):
+              #
+              #      import com.google.type.Color;
+              #
+              #      // ...
+              #      public static java.awt.Color fromProto(Color protocolor) {
+              #        float alpha = protocolor.hasAlpha()
+              #            ? protocolor.getAlpha().getValue()
+              #            : 1.0;
+              #
+              #        return new java.awt.Color(
+              #            protocolor.getRed(),
+              #            protocolor.getGreen(),
+              #            protocolor.getBlue(),
+              #            alpha);
+              #      }
+              #
+              #      public static Color toProto(java.awt.Color color) {
+              #        float red = (float) color.getRed();
+              #        float green = (float) color.getGreen();
+              #        float blue = (float) color.getBlue();
+              #        float denominator = 255.0;
+              #        Color.Builder resultBuilder =
+              #            Color
+              #                .newBuilder()
+              #                .setRed(red / denominator)
+              #                .setGreen(green / denominator)
+              #                .setBlue(blue / denominator);
+              #        int alpha = color.getAlpha();
+              #        if (alpha != 255) {
+              #          result.setAlpha(
+              #              FloatValue
+              #                  .newBuilder()
+              #                  .setValue(((float) alpha) / denominator)
+              #                  .build());
+              #        }
+              #        return resultBuilder.build();
+              #      }
+              #      // ...
+              #
+              # Example (iOS / Obj-C):
+              #
+              #      // ...
+              #      static UIColor* fromProto(Color* protocolor) {
+              #         float red = [protocolor red];
+              #         float green = [protocolor green];
+              #         float blue = [protocolor blue];
+              #         FloatValue* alpha_wrapper = [protocolor alpha];
+              #         float alpha = 1.0;
+              #         if (alpha_wrapper != nil) {
+              #           alpha = [alpha_wrapper value];
+              #         }
+              #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
+              #      }
+              #
+              #      static Color* toProto(UIColor* color) {
+              #          CGFloat red, green, blue, alpha;
+              #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
+              #            return nil;
+              #          }
+              #          Color* result = [Color alloc] init];
+              #          [result setRed:red];
+              #          [result setGreen:green];
+              #          [result setBlue:blue];
+              #          if (alpha <= 0.9999) {
+              #            [result setAlpha:floatWrapperWithValue(alpha)];
+              #          }
+              #          [result autorelease];
+              #          return result;
+              #     }
+              #     // ...
+              #
+              #  Example (JavaScript):
+              #
+              #     // ...
+              #
+              #     var protoToCssColor = function(rgb_color) {
+              #        var redFrac = rgb_color.red || 0.0;
+              #        var greenFrac = rgb_color.green || 0.0;
+              #        var blueFrac = rgb_color.blue || 0.0;
+              #        var red = Math.floor(redFrac * 255);
+              #        var green = Math.floor(greenFrac * 255);
+              #        var blue = Math.floor(blueFrac * 255);
+              #
+              #        if (!('alpha' in rgb_color)) {
+              #           return rgbToCssColor_(red, green, blue);
+              #        }
+              #
+              #        var alphaFrac = rgb_color.alpha.value || 0.0;
+              #        var rgbParams = [red, green, blue].join(',');
+              #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
+              #     };
+              #
+              #     var rgbToCssColor_ = function(red, green, blue) {
+              #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
+              #       var hexString = rgbNumber.toString(16);
+              #       var missingZeros = 6 - hexString.length;
+              #       var resultBuilder = ['#'];
+              #       for (var i = 0; i < missingZeros; i++) {
+              #          resultBuilder.push('0');
+              #       }
+              #       resultBuilder.push(hexString);
+              #       return resultBuilder.join('');
+              #     };
+              #
+              #     // ...
+            "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+            "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
+                # the final pixel color is defined by the equation:
+                #
+                #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
+                #
+                # This means that a value of 1.0 corresponds to a solid color, whereas
+                # a value of 0.0 corresponds to a completely transparent color. This
+                # uses a wrapper message rather than a simple float scalar so that it is
+                # possible to distinguish between a default value and the value being unset.
+                # If omitted, this color object is to be rendered as a solid color
+                # (as if the alpha value had been explicitly given with a value of 1.0).
+            "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
+            "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
+          },
+          "hidden": True or False, # True if the sheet is hidden in the UI, false if it's visible.
+          "sheetId": 42, # The ID of the sheet. Must be non-negative.
+              # This field cannot be changed once set.
         },
-      ],
-    }</pre>
+      },
+    ],
+    "spreadsheetUrl": "A String", # The url of the spreadsheet.
+        # This field is read-only.
+  }</pre>
 </div>
 
 </body></html>
\ No newline at end of file
diff --git a/docs/dyn/sheets_v4.spreadsheets.sheets.html b/docs/dyn/sheets_v4.spreadsheets.sheets.html
index 871f6a4..885d5cb 100644
--- a/docs/dyn/sheets_v4.spreadsheets.sheets.html
+++ b/docs/dyn/sheets_v4.spreadsheets.sheets.html
@@ -107,7 +107,13 @@
     "index": 42, # The index of the sheet within the spreadsheet.
         # When adding or updating sheet properties, if this field
         # is excluded then the sheet will be added or moved to the end
-        # of the sheet list.
+        # of the sheet list. When updating sheet indices or inserting
+        # sheets, movement is considered in "before the move" indexes.
+        # For example, if there were 3 sheets (S1, S2, S3) in order to
+        # move S1 ahead of S2 the index would have to be set to 2. A sheet
+        # index update request will be ignored if the requested index is
+        # identical to the sheets current index or if the requested new
+        # index is equal to the current sheet index + 1.
     "title": "A String", # The name of the sheet.
     "gridProperties": { # Properties of a grid. # Additional properties of the sheet if this sheet is a grid.
         # (If the sheet is an object sheet, containing a chart or image, then
diff --git a/docs/dyn/sheets_v4.spreadsheets.values.html b/docs/dyn/sheets_v4.spreadsheets.values.html
index f8d20f2..3817cd9 100644
--- a/docs/dyn/sheets_v4.spreadsheets.values.html
+++ b/docs/dyn/sheets_v4.spreadsheets.values.html
@@ -75,7 +75,7 @@
 <h1><a href="sheets_v4.html">Google Sheets API</a> . <a href="sheets_v4.spreadsheets.html">spreadsheets</a> . <a href="sheets_v4.spreadsheets.values.html">values</a></h1>
 <h2>Instance Methods</h2>
 <p class="toc_element">
-  <code><a href="#append">append(spreadsheetId, range=None, body, insertDataOption=None, valueInputOption=None, x__xgafv=None)</a></code></p>
+  <code><a href="#append">append(spreadsheetId, range=None, body, valueInputOption=None, x__xgafv=None, responseValueRenderOption=None, insertDataOption=None, includeValuesInResponse=None, responseDateTimeRenderOption=None)</a></code></p>
 <p class="firstline">Appends values to a spreadsheet. The input range is used to search for</p>
 <p class="toc_element">
   <code><a href="#batchClear">batchClear(spreadsheetId, body, x__xgafv=None)</a></code></p>
@@ -93,11 +93,11 @@
   <code><a href="#get">get(spreadsheetId, range, valueRenderOption=None, majorDimension=None, dateTimeRenderOption=None, x__xgafv=None)</a></code></p>
 <p class="firstline">Returns a range of values from a spreadsheet.</p>
 <p class="toc_element">
-  <code><a href="#update">update(spreadsheetId, range, body, valueInputOption=None, x__xgafv=None)</a></code></p>
+  <code><a href="#update">update(spreadsheetId, range, body, valueInputOption=None, x__xgafv=None, responseValueRenderOption=None, includeValuesInResponse=None, responseDateTimeRenderOption=None)</a></code></p>
 <p class="firstline">Sets values in a range of a spreadsheet.</p>
 <h3>Method Details</h3>
 <div class="method">
-    <code class="details" id="append">append(spreadsheetId, range=None, body, insertDataOption=None, valueInputOption=None, x__xgafv=None)</code>
+    <code class="details" id="append">append(spreadsheetId, range=None, body, valueInputOption=None, x__xgafv=None, responseValueRenderOption=None, insertDataOption=None, includeValuesInResponse=None, responseDateTimeRenderOption=None)</code>
   <pre>Appends values to a spreadsheet. The input range is used to search for
 existing data and find a "table" within that range. Values will be
 appended to the next row of the table, starting with the first column of
@@ -155,12 +155,21 @@
       # When writing, if this field is not set, it defaults to ROWS.
 }
 
-  insertDataOption: string, How the input data should be inserted.
   valueInputOption: string, How the input data should be interpreted.
   x__xgafv: string, V1 error format.
     Allowed values
       1 - v1 error format
       2 - v2 error format
+  responseValueRenderOption: string, Determines how values in the response should be rendered.
+The default render option is ValueRenderOption.FORMATTED_VALUE.
+  insertDataOption: string, How the input data should be inserted.
+  includeValuesInResponse: boolean, Determines if the update response should include the values
+of the cells that were appended. By default, responses
+do not include the updated values.
+  responseDateTimeRenderOption: string, Determines how dates, times, and durations in the response should be
+rendered. This is ignored if response_value_render_option is
+FORMATTED_VALUE.
+The default dateTime render option is [DateTimeRenderOption.SERIAL_NUMBER].
 
 Returns:
   An object of the form:
@@ -171,11 +180,47 @@
         # (before the values were appended).
         # Empty if no table was found.
     "updates": { # The response when updating a range of values in a spreadsheet. # Information about the updates that were applied.
-      "updatedRange": "A String", # The range (in A1 notation) that updates were applied to.
       "updatedColumns": 42, # The number of columns where at least one cell in the column was updated.
-      "updatedCells": 42, # The number of cells updated.
+      "updatedRange": "A String", # The range (in A1 notation) that updates were applied to.
       "updatedRows": 42, # The number of rows where at least one cell in the row was updated.
+      "updatedData": { # Data within a range of the spreadsheet. # The values of the cells after updates were applied.
+          # This is only included if the request's `includeValuesInResponse` field
+          # was `true`.
+        "range": "A String", # The range the values cover, in A1 notation.
+            # For output, this range indicates the entire requested range,
+            # even though the values will exclude trailing rows and columns.
+            # When appending values, this field represents the range to search for a
+            # table, after which values will be appended.
+        "values": [ # The data that was read or to be written.  This is an array of arrays,
+            # the outer array representing all the data and each inner array
+            # representing a major dimension. Each item in the inner array
+            # corresponds with one cell.
+            #
+            # For output, empty trailing rows and columns will not be included.
+            #
+            # For input, supported value types are: bool, string, and double.
+            # Null values will be skipped.
+            # To set a cell to an empty value, set the string value to an empty string.
+          [
+            "",
+          ],
+        ],
+        "majorDimension": "A String", # The major dimension of the values.
+            #
+            # For output, if the spreadsheet data is: `A1=1,B1=2,A2=3,B2=4`,
+            # then requesting `range=A1:B2,majorDimension=ROWS` will return
+            # `[[1,2],[3,4]]`,
+            # whereas requesting `range=A1:B2,majorDimension=COLUMNS` will return
+            # `[[1,3],[2,4]]`.
+            #
+            # For input, with `range=A1:B2,majorDimension=ROWS` then `[[1,2],[3,4]]`
+            # will set `A1=1,B1=2,A2=3,B2=4`. With `range=A1:B2,majorDimension=COLUMNS`
+            # then `[[1,2],[3,4]]` will set `A1=1,B1=3,A2=2,B2=4`.
+            #
+            # When writing, if this field is not set, it defaults to ROWS.
+      },
       "spreadsheetId": "A String", # The spreadsheet the updates were applied to.
+      "updatedCells": 42, # The number of cells updated.
     },
   }</pre>
 </div>
@@ -225,6 +270,7 @@
 Args:
   spreadsheetId: string, The ID of the spreadsheet to retrieve data from. (required)
   valueRenderOption: string, How values should be represented in the output.
+The default render option is ValueRenderOption.FORMATTED_VALUE.
   majorDimension: string, The major dimension that results should use.
 
 For example, if the spreadsheet data is: `A1=1,B1=2,A2=3,B2=4`,
@@ -236,6 +282,7 @@
   dateTimeRenderOption: string, How dates, times, and durations should be represented in the output.
 This is ignored if value_render_option is
 FORMATTED_VALUE.
+The default dateTime render option is [DateTimeRenderOption.SERIAL_NUMBER].
   x__xgafv: string, V1 error format.
     Allowed values
       1 - v1 error format
@@ -299,6 +346,13 @@
     The object takes the form of:
 
 { # The request for updating more than one range of values in a spreadsheet.
+    "includeValuesInResponse": True or False, # Determines if the update response should include the values
+        # of the cells that were updated. By default, responses
+        # do not include the updated values. The `updatedData` field within
+        # each of the BatchUpdateValuesResponse.responses will contain
+        # the updated values. If the range to write was larger than than the range
+        # actually written, the response will include all values in the requested
+        # range (excluding trailing empty rows and columns).
     "data": [ # The new values to apply to the spreadsheet.
       { # Data within a range of the spreadsheet.
         "range": "A String", # The range the values cover, in A1 notation.
@@ -335,7 +389,13 @@
             # When writing, if this field is not set, it defaults to ROWS.
       },
     ],
+    "responseValueRenderOption": "A String", # Determines how values in the response should be rendered.
+        # The default render option is ValueRenderOption.FORMATTED_VALUE.
     "valueInputOption": "A String", # How the input data should be interpreted.
+    "responseDateTimeRenderOption": "A String", # Determines how dates, times, and durations in the response should be
+        # rendered. This is ignored if response_value_render_option is
+        # FORMATTED_VALUE.
+        # The default dateTime render option is [DateTimeRenderOption.SERIAL_NUMBER].
   }
 
   x__xgafv: string, V1 error format.
@@ -350,11 +410,47 @@
     "responses": [ # One UpdateValuesResponse per requested range, in the same order as
         # the requests appeared.
       { # The response when updating a range of values in a spreadsheet.
-        "updatedRange": "A String", # The range (in A1 notation) that updates were applied to.
         "updatedColumns": 42, # The number of columns where at least one cell in the column was updated.
-        "updatedCells": 42, # The number of cells updated.
+        "updatedRange": "A String", # The range (in A1 notation) that updates were applied to.
         "updatedRows": 42, # The number of rows where at least one cell in the row was updated.
+        "updatedData": { # Data within a range of the spreadsheet. # The values of the cells after updates were applied.
+            # This is only included if the request's `includeValuesInResponse` field
+            # was `true`.
+          "range": "A String", # The range the values cover, in A1 notation.
+              # For output, this range indicates the entire requested range,
+              # even though the values will exclude trailing rows and columns.
+              # When appending values, this field represents the range to search for a
+              # table, after which values will be appended.
+          "values": [ # The data that was read or to be written.  This is an array of arrays,
+              # the outer array representing all the data and each inner array
+              # representing a major dimension. Each item in the inner array
+              # corresponds with one cell.
+              #
+              # For output, empty trailing rows and columns will not be included.
+              #
+              # For input, supported value types are: bool, string, and double.
+              # Null values will be skipped.
+              # To set a cell to an empty value, set the string value to an empty string.
+            [
+              "",
+            ],
+          ],
+          "majorDimension": "A String", # The major dimension of the values.
+              #
+              # For output, if the spreadsheet data is: `A1=1,B1=2,A2=3,B2=4`,
+              # then requesting `range=A1:B2,majorDimension=ROWS` will return
+              # `[[1,2],[3,4]]`,
+              # whereas requesting `range=A1:B2,majorDimension=COLUMNS` will return
+              # `[[1,3],[2,4]]`.
+              #
+              # For input, with `range=A1:B2,majorDimension=ROWS` then `[[1,2],[3,4]]`
+              # will set `A1=1,B1=2,A2=3,B2=4`. With `range=A1:B2,majorDimension=COLUMNS`
+              # then `[[1,2],[3,4]]` will set `A1=1,B1=3,A2=2,B2=4`.
+              #
+              # When writing, if this field is not set, it defaults to ROWS.
+        },
         "spreadsheetId": "A String", # The spreadsheet the updates were applied to.
+        "updatedCells": 42, # The number of cells updated.
       },
     ],
     "totalUpdatedCells": 42, # The total number of cells updated.
@@ -409,6 +505,7 @@
   spreadsheetId: string, The ID of the spreadsheet to retrieve data from. (required)
   range: string, The A1 notation of the values to retrieve. (required)
   valueRenderOption: string, How values should be represented in the output.
+The default render option is ValueRenderOption.FORMATTED_VALUE.
   majorDimension: string, The major dimension that results should use.
 
 For example, if the spreadsheet data is: `A1=1,B1=2,A2=3,B2=4`,
@@ -419,6 +516,7 @@
   dateTimeRenderOption: string, How dates, times, and durations should be represented in the output.
 This is ignored if value_render_option is
 FORMATTED_VALUE.
+The default dateTime render option is [DateTimeRenderOption.SERIAL_NUMBER].
   x__xgafv: string, V1 error format.
     Allowed values
       1 - v1 error format
@@ -464,7 +562,7 @@
 </div>
 
 <div class="method">
-    <code class="details" id="update">update(spreadsheetId, range, body, valueInputOption=None, x__xgafv=None)</code>
+    <code class="details" id="update">update(spreadsheetId, range, body, valueInputOption=None, x__xgafv=None, responseValueRenderOption=None, includeValuesInResponse=None, responseDateTimeRenderOption=None)</code>
   <pre>Sets values in a range of a spreadsheet.
 The caller must specify the spreadsheet ID, range, and
 a valueInputOption.
@@ -515,16 +613,64 @@
     Allowed values
       1 - v1 error format
       2 - v2 error format
+  responseValueRenderOption: string, Determines how values in the response should be rendered.
+The default render option is ValueRenderOption.FORMATTED_VALUE.
+  includeValuesInResponse: boolean, Determines if the update response should include the values
+of the cells that were updated. By default, responses
+do not include the updated values.
+If the range to write was larger than than the range actually written,
+the response will include all values in the requested range (excluding
+trailing empty rows and columns).
+  responseDateTimeRenderOption: string, Determines how dates, times, and durations in the response should be
+rendered. This is ignored if response_value_render_option is
+FORMATTED_VALUE.
+The default dateTime render option is [DateTimeRenderOption.SERIAL_NUMBER].
 
 Returns:
   An object of the form:
 
     { # The response when updating a range of values in a spreadsheet.
-    "updatedRange": "A String", # The range (in A1 notation) that updates were applied to.
     "updatedColumns": 42, # The number of columns where at least one cell in the column was updated.
-    "updatedCells": 42, # The number of cells updated.
+    "updatedRange": "A String", # The range (in A1 notation) that updates were applied to.
     "updatedRows": 42, # The number of rows where at least one cell in the row was updated.
+    "updatedData": { # Data within a range of the spreadsheet. # The values of the cells after updates were applied.
+        # This is only included if the request's `includeValuesInResponse` field
+        # was `true`.
+      "range": "A String", # The range the values cover, in A1 notation.
+          # For output, this range indicates the entire requested range,
+          # even though the values will exclude trailing rows and columns.
+          # When appending values, this field represents the range to search for a
+          # table, after which values will be appended.
+      "values": [ # The data that was read or to be written.  This is an array of arrays,
+          # the outer array representing all the data and each inner array
+          # representing a major dimension. Each item in the inner array
+          # corresponds with one cell.
+          #
+          # For output, empty trailing rows and columns will not be included.
+          #
+          # For input, supported value types are: bool, string, and double.
+          # Null values will be skipped.
+          # To set a cell to an empty value, set the string value to an empty string.
+        [
+          "",
+        ],
+      ],
+      "majorDimension": "A String", # The major dimension of the values.
+          #
+          # For output, if the spreadsheet data is: `A1=1,B1=2,A2=3,B2=4`,
+          # then requesting `range=A1:B2,majorDimension=ROWS` will return
+          # `[[1,2],[3,4]]`,
+          # whereas requesting `range=A1:B2,majorDimension=COLUMNS` will return
+          # `[[1,3],[2,4]]`.
+          #
+          # For input, with `range=A1:B2,majorDimension=ROWS` then `[[1,2],[3,4]]`
+          # will set `A1=1,B1=2,A2=3,B2=4`. With `range=A1:B2,majorDimension=COLUMNS`
+          # then `[[1,2],[3,4]]` will set `A1=1,B1=3,A2=2,B2=4`.
+          #
+          # When writing, if this field is not set, it defaults to ROWS.
+    },
     "spreadsheetId": "A String", # The spreadsheet the updates were applied to.
+    "updatedCells": 42, # The number of cells updated.
   }</pre>
 </div>
 
diff --git a/docs/dyn/slides_v1.html b/docs/dyn/slides_v1.html
new file mode 100644
index 0000000..d6fb5a7
--- /dev/null
+++ b/docs/dyn/slides_v1.html
@@ -0,0 +1,103 @@
+<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="slides_v1.html">Google Slides API</a></h1>
+<h2>Instance Methods</h2>
+<p class="toc_element">
+  <code><a href="slides_v1.presentations.html">presentations()</a></code>
+</p>
+<p class="firstline">Returns the presentations Resource.</p>
+
+<p class="toc_element">
+  <code><a href="#new_batch_http_request">new_batch_http_request()</a></code></p>
+<p class="firstline">Create a BatchHttpRequest object based on the discovery document.</p>
+<h3>Method Details</h3>
+<div class="method">
+    <code class="details" id="new_batch_http_request">new_batch_http_request()</code>
+  <pre>Create a BatchHttpRequest object based on the discovery document.
+
+        Args:
+          callback: callable, A callback to be called for each response, of the
+            form callback(id, response, exception). The first parameter is the
+            request id, and the second is the deserialized response object. The
+            third is an apiclient.errors.HttpError exception object if an HTTP
+            error occurred while processing the request, or None if no error
+            occurred.
+
+        Returns:
+          A BatchHttpRequest object based on the discovery document.
+        </pre>
+</div>
+
+</body></html>
\ No newline at end of file
diff --git a/docs/dyn/slides_v1.presentations.html b/docs/dyn/slides_v1.presentations.html
new file mode 100644
index 0000000..95b1c7b
--- /dev/null
+++ b/docs/dyn/slides_v1.presentations.html
@@ -0,0 +1,17934 @@
+<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="slides_v1.html">Google Slides API</a> . <a href="slides_v1.presentations.html">presentations</a></h1>
+<h2>Instance Methods</h2>
+<p class="toc_element">
+  <code><a href="slides_v1.presentations.pages.html">pages()</a></code>
+</p>
+<p class="firstline">Returns the pages Resource.</p>
+
+<p class="toc_element">
+  <code><a href="#batchUpdate">batchUpdate(presentationId, body, x__xgafv=None)</a></code></p>
+<p class="firstline">Applies one or more updates to the presentation.</p>
+<p class="toc_element">
+  <code><a href="#create">create(body, x__xgafv=None)</a></code></p>
+<p class="firstline">Creates a new presentation using the title given in the request. Other</p>
+<p class="toc_element">
+  <code><a href="#get">get(presentationId, x__xgafv=None)</a></code></p>
+<p class="firstline">Gets the latest version of the specified presentation.</p>
+<h3>Method Details</h3>
+<div class="method">
+    <code class="details" id="batchUpdate">batchUpdate(presentationId, body, x__xgafv=None)</code>
+  <pre>Applies one or more updates to the presentation.
+
+Each request is validated before
+being applied. If any request is not valid, then the entire request will
+fail and nothing will be applied.
+
+Some requests have replies to
+give you some information about how they are applied. Other requests do
+not need to return information; these each return an empty reply.
+The order of replies matches that of the requests.
+
+For example, suppose you call batchUpdate with four updates, and only the
+third one returns information. The response would have two empty replies:
+the reply to the third request, and another empty reply, in that order.
+
+Because other users may be editing the presentation, the presentation
+might not exactly reflect your changes: your changes may
+be altered with respect to collaborator changes. If there are no
+collaborators, the presentation should reflect your changes. In any case,
+the updates in your request are guaranteed to be applied together
+atomically.
+
+Args:
+  presentationId: string, The presentation to apply the updates to. (required)
+  body: object, The request body. (required)
+    The object takes the form of:
+
+{ # Request message for PresentationsService.BatchUpdatePresentation.
+    "requests": [ # A list of updates to apply to the presentation.
+      { # A single kind of update to apply to a presentation.
+        "insertText": { # Inserts text into a shape or a table cell. # Inserts text into a shape or table cell.
+          "text": "A String", # The text to be inserted.
+              #
+              # Inserting a newline character will implicitly create a new
+              # ParagraphMarker at that index.
+              # The paragraph style of the new paragraph will be copied from the paragraph
+              # at the current insertion index, including lists and bullets.
+              #
+              # Text styles for inserted text will be determined automatically, generally
+              # preserving the styling of neighboring text. In most cases, the text will be
+              # added to the TextRun that exists at the
+              # insertion index.
+              #
+              # Some control characters (U+0000-U+0008, U+000C-U+001F) and characters
+              # from the Unicode Basic Multilingual Plane Private Use Area (U+E000-U+F8FF)
+              # will be stripped out of the inserted text.
+          "cellLocation": { # A location of a single table cell within a table. # The optional table cell location if the text is to be inserted into a table
+              # cell. If present, the object_id must refer to a table.
+            "rowIndex": 42, # The 0-based row index.
+            "columnIndex": 42, # The 0-based column index.
+          },
+          "objectId": "A String", # The object ID of the shape or table where the text will be inserted.
+          "insertionIndex": 42, # The index where the text will be inserted, in Unicode code units, based
+              # on TextElement indexes.
+              #
+              # The index is zero-based and is computed from the start of the string.
+              # The index may be adjusted to prevent insertions inside Unicode grapheme
+              # clusters. In these cases, the text will be inserted immediately after the
+              # grapheme cluster.
+        },
+        "insertTableRows": { # Inserts rows into a table. # Inserts rows into a table.
+          "number": 42, # The number of rows to be inserted. Maximum 20 per request.
+          "insertBelow": True or False, # Whether to insert new rows below the reference cell location.
+              #
+              # - `True`: insert below the cell.
+              # - `False`: insert above the cell.
+          "cellLocation": { # A location of a single table cell within a table. # The reference table cell location from which rows will be inserted.
+              #
+              # A new row will be inserted above (or below) the row where the reference
+              # cell is. If the reference cell is a merged cell, a new row will be
+              # inserted above (or below) the merged cell.
+            "rowIndex": 42, # The 0-based row index.
+            "columnIndex": 42, # The 0-based column index.
+          },
+          "tableObjectId": "A String", # The table to insert rows into.
+        },
+        "createVideo": { # Creates a video. # Creates a video.
+          "source": "A String", # The video source.
+          "elementProperties": { # Common properties for a page element. # The element properties for the video.
+              #
+              # Note: When you initially create a
+              # PageElement, the API may modify
+              # the values of both `size` and `transform`, but the
+              # visual size will be unchanged.
+            "pageObjectId": "A String", # The object ID of the page where the element is located.
+            "transform": { # AffineTransform uses a 3x3 matrix with an implied last row of [ 0 0 1 ] # The transform for the element.
+                # to transform source coordinates (x,y) into destination coordinates (x', y')
+                # according to:
+                #
+                #       x'  x  =   shear_y  scale_y  translate_y
+                #       1  [ 1 ]
+                #
+                # After transformation,
+                #
+                #      x' = scale_x * x + shear_x * y + translate_x;
+                #      y' = scale_y * y + shear_y * x + translate_y;
+                #
+                # This message is therefore composed of these six matrix elements.
+              "translateX": 3.14, # The X coordinate translation element.
+              "translateY": 3.14, # The Y coordinate translation element.
+              "scaleX": 3.14, # The X coordinate scaling element.
+              "scaleY": 3.14, # The Y coordinate scaling element.
+              "shearY": 3.14, # The Y coordinate shearing element.
+              "shearX": 3.14, # The X coordinate shearing element.
+              "unit": "A String", # The units for translate elements.
+            },
+            "size": { # A width and height. # The size of the element.
+              "width": { # A magnitude in a single direction in the specified units. # The width of the object.
+                "magnitude": 3.14, # The magnitude.
+                "unit": "A String", # The units for magnitude.
+              },
+              "height": { # A magnitude in a single direction in the specified units. # The height of the object.
+                "magnitude": 3.14, # The magnitude.
+                "unit": "A String", # The units for magnitude.
+              },
+            },
+          },
+          "objectId": "A String", # A user-supplied object ID.
+              #
+              # If you specify an ID, it must be unique among all pages and page elements
+              # in the presentation. The ID must start with an alphanumeric character or an
+              # underscore (matches regex `[a-zA-Z0-9_]`); remaining characters
+              # may include those as well as a hyphen or colon (matches regex
+              # `[a-zA-Z0-9_-:]`).
+              # The length of the ID must not be less than 5 or greater than 50.
+              #
+              # If you don't specify an ID, a unique one is generated.
+          "id": "A String", # The video source's unique identifier for this video.
+              #
+              # e.g. For YouTube video https://www.youtube.com/watch?v=7U3axjORYZ0,
+              # the ID is 7U3axjORYZ0.
+        },
+        "deleteTableRow": { # Deletes a row from a table. # Deletes a row from a table.
+          "cellLocation": { # A location of a single table cell within a table. # The reference table cell location from which a row will be deleted.
+              #
+              # The row this cell spans will be deleted. If this is a merged cell, multiple
+              # rows will be deleted. If no rows remain in the table after this deletion,
+              # the whole table is deleted.
+            "rowIndex": 42, # The 0-based row index.
+            "columnIndex": 42, # The 0-based column index.
+          },
+          "tableObjectId": "A String", # The table to delete rows from.
+        },
+        "updateImageProperties": { # Update the properties of an Image. # Updates the properties of an Image.
+          "fields": "A String", # The fields that should be updated.
+              #
+              # At least one field must be specified. The root `imageProperties` is
+              # implied and should not be specified. A single `"*"` can be used as
+              # short-hand for listing every field.
+              #
+              # For example to update the image outline color, set `fields` to
+              # `"outline.outlineFill.solidFill.color"`.
+              #
+              # To reset a property to its default value, include its field name in the
+              # field mask but leave the field itself unset.
+          "imageProperties": { # The properties of the Image. # The image properties to update.
+            "outline": { # The outline of a PageElement. # The outline of the image. If not set, the the image has no outline.
+                #
+                # If these fields are unset, they may be inherited from a parent placeholder
+                # if it exists. If there is no parent, the fields will default to the value
+                # used for new page elements created in the Slides editor, which may depend on
+                # the page element kind.
+              "dashStyle": "A String", # The dash style of the outline.
+              "propertyState": "A String", # The outline property state.
+                  #
+                  # Updating the the outline on a page element will implicitly update this
+                  # field to`RENDERED`, unless another value is specified in the same request.
+                  # To have no outline on a page element, set this field to `NOT_RENDERED`. In
+                  # this case, any other outline fields set in the same request will be
+                  # ignored.
+              "outlineFill": { # The fill of the outline. # The fill of the outline.
+                "solidFill": { # A solid color fill. The page or page element is filled entirely with the # Solid color fill.
+                    # specified color value.
+                    #
+                    # If any field is unset, its value may be inherited from a parent placeholder
+                    # if it exists.
+                  "color": { # A themeable solid color value. # The color value of the solid fill.
+                    "themeColor": "A String", # An opaque theme color.
+                    "rgbColor": { # An RGB color. # An opaque RGB color.
+                      "blue": 3.14, # The blue component of the color, from 0.0 to 1.0.
+                      "green": 3.14, # The green component of the color, from 0.0 to 1.0.
+                      "red": 3.14, # The red component of the color, from 0.0 to 1.0.
+                    },
+                  },
+                  "alpha": 3.14, # The fraction of this `color` that should be applied to the pixel.
+                      # That is, the final pixel color is defined by the equation:
+                      #
+                      #   pixel color = alpha * (color) + (1.0 - alpha) * (background color)
+                      #
+                      # This means that a value of 1.0 corresponds to a solid color, whereas
+                      # a value of 0.0 corresponds to a completely transparent color.
+                },
+              },
+              "weight": { # A magnitude in a single direction in the specified units. # The thickness of the outline.
+                "magnitude": 3.14, # The magnitude.
+                "unit": "A String", # The units for magnitude.
+              },
+            },
+            "brightness": 3.14, # The brightness effect of the image. The value should be in the interval
+                # [-1.0, 1.0], where 0 means no effect. This property is read-only.
+            "recolor": { # A recolor effect applied on an image. # The recolor effect of the image. If not set, the image is not recolored.
+                # This property is read-only.
+              "recolorStops": [ # The recolor effect is represented by a gradient, which is a list of color
+                  # stops. This property is read-only.
+                { # A color and position in a gradient band.
+                  "color": { # A themeable solid color value. # The color of the gradient stop.
+                    "themeColor": "A String", # An opaque theme color.
+                    "rgbColor": { # An RGB color. # An opaque RGB color.
+                      "blue": 3.14, # The blue component of the color, from 0.0 to 1.0.
+                      "green": 3.14, # The green component of the color, from 0.0 to 1.0.
+                      "red": 3.14, # The red component of the color, from 0.0 to 1.0.
+                    },
+                  },
+                  "position": 3.14, # The relative position of the color stop in the gradient band measured
+                      # in percentage. The value should be in the interval [0.0, 1.0].
+                  "alpha": 3.14, # The alpha value of this color in the gradient band. Defaults to 1.0,
+                      # fully opaque.
+                },
+              ],
+            },
+            "link": { # A hypertext link. # The hyperlink destination of the image. If unset, there is no link.
+              "url": "A String", # If set, indicates this is a link to the external web page at this URL.
+              "pageObjectId": "A String", # If set, indicates this is a link to the specific page in this
+                  # presentation with this ID. A page with this ID may not exist.
+              "slideIndex": 42, # If set, indicates this is a link to the slide at this zero-based index
+                  # in the presentation. There may not be a slide at this index.
+              "relativeLink": "A String", # If set, indicates this is a link to a slide in this presentation,
+                  # addressed by its position.
+            },
+            "transparency": 3.14, # The transparency effect of the image. The value should be in the interval
+                # [0.0, 1.0], where 0 means no effect and 1 means completely transparent.
+                # This property is read-only.
+            "cropProperties": { # The crop properties of an object enclosed in a container. For example, an # The crop properties of the image. If not set, the image is not cropped.
+                # This property is read-only.
+                # Image.
+                #
+                # The crop properties is represented by the offsets of four edges which define
+                # a crop rectangle. The offsets are measured in percentage from the
+                # corresponding edges of the object's original bounding rectangle towards
+                # inside, relative to the object's original dimensions.
+                #
+                # - If the offset is in the interval (0, 1), the corresponding edge of crop
+                # rectangle is positioned inside of the object's original bounding rectangle.
+                # - If the offset is negative or greater than 1, the corresponding edge of crop
+                # rectangle is positioned outside of the object's original bounding rectangle.
+                # - If the left edge of the crop rectangle is on the right side of its right
+                # edge, the object will be flipped horizontally.
+                # - If the top edge of the crop rectangle is below its bottom edge, the object
+                # will be flipped vertically.
+                # - If all offsets and rotation angle is 0, the object is not cropped.
+                #
+                # After cropping, the content in the crop rectangle will be stretched to fit
+                # its container.
+              "leftOffset": 3.14, # The offset specifies the left edge of the crop rectangle that is located to
+                  # the right of the original bounding rectangle left edge, relative to the
+                  # object's original width.
+              "angle": 3.14, # The rotation angle of the crop window around its center, in radians.
+                  # Rotation angle is applied after the offset.
+              "bottomOffset": 3.14, # The offset specifies the bottom edge of the crop rectangle that is located
+                  # above the original bounding rectangle bottom edge, relative to the object's
+                  # original height.
+              "rightOffset": 3.14, # The offset specifies the right edge of the crop rectangle that is located
+                  # to the left of the original bounding rectangle right edge, relative to the
+                  # object's original width.
+              "topOffset": 3.14, # The offset specifies the top edge of the crop rectangle that is located
+                  # below the original bounding rectangle top edge, relative to the object's
+                  # original height.
+            },
+            "shadow": { # The shadow properties of a page element. # The shadow of the image. If not set, the image has no shadow. This property
+                # is read-only.
+                #
+                # If these fields are unset, they may be inherited from a parent placeholder
+                # if it exists. If there is no parent, the fields will default to the value
+                # used for new page elements created in the Slides editor, which may depend on
+                # the page element kind.
+              "color": { # A themeable solid color value. # The shadow color value.
+                "themeColor": "A String", # An opaque theme color.
+                "rgbColor": { # An RGB color. # An opaque RGB color.
+                  "blue": 3.14, # The blue component of the color, from 0.0 to 1.0.
+                  "green": 3.14, # The green component of the color, from 0.0 to 1.0.
+                  "red": 3.14, # The red component of the color, from 0.0 to 1.0.
+                },
+              },
+              "transform": { # AffineTransform uses a 3x3 matrix with an implied last row of [ 0 0 1 ] # Transform that encodes the translate, scale, and skew of the shadow,
+                  # relative to the alignment position.
+                  # to transform source coordinates (x,y) into destination coordinates (x', y')
+                  # according to:
+                  #
+                  #       x'  x  =   shear_y  scale_y  translate_y
+                  #       1  [ 1 ]
+                  #
+                  # After transformation,
+                  #
+                  #      x' = scale_x * x + shear_x * y + translate_x;
+                  #      y' = scale_y * y + shear_y * x + translate_y;
+                  #
+                  # This message is therefore composed of these six matrix elements.
+                "translateX": 3.14, # The X coordinate translation element.
+                "translateY": 3.14, # The Y coordinate translation element.
+                "scaleX": 3.14, # The X coordinate scaling element.
+                "scaleY": 3.14, # The Y coordinate scaling element.
+                "shearY": 3.14, # The Y coordinate shearing element.
+                "shearX": 3.14, # The X coordinate shearing element.
+                "unit": "A String", # The units for translate elements.
+              },
+              "propertyState": "A String", # The shadow property state.
+                  #
+                  # Updating the the shadow on a page element will implicitly update this field
+                  # to `RENDERED`, unless another value is specified in the same request. To
+                  # have no shadow on a page element, set this field to `NOT_RENDERED`. In this
+                  # case, any other shadow fields set in the same request will be ignored.
+              "blurRadius": { # A magnitude in a single direction in the specified units. # The radius of the shadow blur. The larger the radius, the more diffuse the
+                  # shadow becomes.
+                "magnitude": 3.14, # The magnitude.
+                "unit": "A String", # The units for magnitude.
+              },
+              "alpha": 3.14, # The alpha of the shadow's color, from 0.0 to 1.0.
+              "type": "A String", # The type of the shadow.
+              "alignment": "A String", # The alignment point of the shadow, that sets the origin for translate,
+                  # scale and skew of the shadow.
+              "rotateWithShape": True or False, # Whether the shadow should rotate with the shape.
+            },
+            "contrast": 3.14, # The contrast effect of the image. The value should be in the interval
+                # [-1.0, 1.0], where 0 means no effect. This property is read-only.
+          },
+          "objectId": "A String", # The object ID of the image the updates are applied to.
+        },
+        "createLine": { # Creates a line. # Creates a line.
+          "lineCategory": "A String", # The category of line to be created.
+          "elementProperties": { # Common properties for a page element. # The element properties for the line.
+              #
+              # Note: When you initially create a
+              # PageElement, the API may modify
+              # the values of both `size` and `transform`, but the
+              # visual size will be unchanged.
+            "pageObjectId": "A String", # The object ID of the page where the element is located.
+            "transform": { # AffineTransform uses a 3x3 matrix with an implied last row of [ 0 0 1 ] # The transform for the element.
+                # to transform source coordinates (x,y) into destination coordinates (x', y')
+                # according to:
+                #
+                #       x'  x  =   shear_y  scale_y  translate_y
+                #       1  [ 1 ]
+                #
+                # After transformation,
+                #
+                #      x' = scale_x * x + shear_x * y + translate_x;
+                #      y' = scale_y * y + shear_y * x + translate_y;
+                #
+                # This message is therefore composed of these six matrix elements.
+              "translateX": 3.14, # The X coordinate translation element.
+              "translateY": 3.14, # The Y coordinate translation element.
+              "scaleX": 3.14, # The X coordinate scaling element.
+              "scaleY": 3.14, # The Y coordinate scaling element.
+              "shearY": 3.14, # The Y coordinate shearing element.
+              "shearX": 3.14, # The X coordinate shearing element.
+              "unit": "A String", # The units for translate elements.
+            },
+            "size": { # A width and height. # The size of the element.
+              "width": { # A magnitude in a single direction in the specified units. # The width of the object.
+                "magnitude": 3.14, # The magnitude.
+                "unit": "A String", # The units for magnitude.
+              },
+              "height": { # A magnitude in a single direction in the specified units. # The height of the object.
+                "magnitude": 3.14, # The magnitude.
+                "unit": "A String", # The units for magnitude.
+              },
+            },
+          },
+          "objectId": "A String", # A user-supplied object ID.
+              #
+              # If you specify an ID, it must be unique among all pages and page elements
+              # in the presentation. The ID must start with an alphanumeric character or an
+              # underscore (matches regex `[a-zA-Z0-9_]`); remaining characters
+              # may include those as well as a hyphen or colon (matches regex
+              # `[a-zA-Z0-9_-:]`).
+              # The length of the ID must not be less than 5 or greater than 50.
+              #
+              # If you don't specify an ID, a unique one is generated.
+        },
+        "createImage": { # Creates an image. # Creates an image.
+          "url": "A String", # The image URL.
+              #
+              # The image is fetched once at insertion time and a copy is stored for
+              # display inside the presentation. Images must be less than 50MB in size,
+              # cannot exceed 25 megapixels, and must be in either in PNG, JPEG, or GIF
+              # format.
+          "elementProperties": { # Common properties for a page element. # The element properties for the image.
+              #
+              # When the aspect ratio of the provided size does not match the image aspect
+              # ratio, the image is scaled and centered with respect to the size in order
+              # to maintain aspect ratio. The provided transform is applied after this
+              # operation.
+              #
+              # Note: When you initially create a
+              # PageElement, the API may modify
+              # the values of both `size` and `transform`, but the
+              # visual size will be unchanged.
+            "pageObjectId": "A String", # The object ID of the page where the element is located.
+            "transform": { # AffineTransform uses a 3x3 matrix with an implied last row of [ 0 0 1 ] # The transform for the element.
+                # to transform source coordinates (x,y) into destination coordinates (x', y')
+                # according to:
+                #
+                #       x'  x  =   shear_y  scale_y  translate_y
+                #       1  [ 1 ]
+                #
+                # After transformation,
+                #
+                #      x' = scale_x * x + shear_x * y + translate_x;
+                #      y' = scale_y * y + shear_y * x + translate_y;
+                #
+                # This message is therefore composed of these six matrix elements.
+              "translateX": 3.14, # The X coordinate translation element.
+              "translateY": 3.14, # The Y coordinate translation element.
+              "scaleX": 3.14, # The X coordinate scaling element.
+              "scaleY": 3.14, # The Y coordinate scaling element.
+              "shearY": 3.14, # The Y coordinate shearing element.
+              "shearX": 3.14, # The X coordinate shearing element.
+              "unit": "A String", # The units for translate elements.
+            },
+            "size": { # A width and height. # The size of the element.
+              "width": { # A magnitude in a single direction in the specified units. # The width of the object.
+                "magnitude": 3.14, # The magnitude.
+                "unit": "A String", # The units for magnitude.
+              },
+              "height": { # A magnitude in a single direction in the specified units. # The height of the object.
+                "magnitude": 3.14, # The magnitude.
+                "unit": "A String", # The units for magnitude.
+              },
+            },
+          },
+          "objectId": "A String", # A user-supplied object ID.
+              #
+              # If you specify an ID, it must be unique among all pages and page elements
+              # in the presentation. The ID must start with an alphanumeric character or an
+              # underscore (matches regex `[a-zA-Z0-9_]`); remaining characters
+              # may include those as well as a hyphen or colon (matches regex
+              # `[a-zA-Z0-9_-:]`).
+              # The length of the ID must not be less than 5 or greater than 50.
+              #
+              # If you don't specify an ID, a unique one is generated.
+        },
+        "updateVideoProperties": { # Update the properties of a Video. # Updates the properties of a Video.
+          "videoProperties": { # The properties of the Video. # The video properties to update.
+            "outline": { # The outline of a PageElement. # The outline of the video. The default outline matches the defaults for new
+                # videos created in the Slides editor.
+                #
+                # If these fields are unset, they may be inherited from a parent placeholder
+                # if it exists. If there is no parent, the fields will default to the value
+                # used for new page elements created in the Slides editor, which may depend on
+                # the page element kind.
+              "dashStyle": "A String", # The dash style of the outline.
+              "propertyState": "A String", # The outline property state.
+                  #
+                  # Updating the the outline on a page element will implicitly update this
+                  # field to`RENDERED`, unless another value is specified in the same request.
+                  # To have no outline on a page element, set this field to `NOT_RENDERED`. In
+                  # this case, any other outline fields set in the same request will be
+                  # ignored.
+              "outlineFill": { # The fill of the outline. # The fill of the outline.
+                "solidFill": { # A solid color fill. The page or page element is filled entirely with the # Solid color fill.
+                    # specified color value.
+                    #
+                    # If any field is unset, its value may be inherited from a parent placeholder
+                    # if it exists.
+                  "color": { # A themeable solid color value. # The color value of the solid fill.
+                    "themeColor": "A String", # An opaque theme color.
+                    "rgbColor": { # An RGB color. # An opaque RGB color.
+                      "blue": 3.14, # The blue component of the color, from 0.0 to 1.0.
+                      "green": 3.14, # The green component of the color, from 0.0 to 1.0.
+                      "red": 3.14, # The red component of the color, from 0.0 to 1.0.
+                    },
+                  },
+                  "alpha": 3.14, # The fraction of this `color` that should be applied to the pixel.
+                      # That is, the final pixel color is defined by the equation:
+                      #
+                      #   pixel color = alpha * (color) + (1.0 - alpha) * (background color)
+                      #
+                      # This means that a value of 1.0 corresponds to a solid color, whereas
+                      # a value of 0.0 corresponds to a completely transparent color.
+                },
+              },
+              "weight": { # A magnitude in a single direction in the specified units. # The thickness of the outline.
+                "magnitude": 3.14, # The magnitude.
+                "unit": "A String", # The units for magnitude.
+              },
+            },
+          },
+          "objectId": "A String", # The object ID of the video the updates are applied to.
+          "fields": "A String", # The fields that should be updated.
+              #
+              # At least one field must be specified. The root `videoProperties` is
+              # implied and should not be specified. A single `"*"` can be used as
+              # short-hand for listing every field.
+              #
+              # For example to update the video outline color, set `fields` to
+              # `"outline.outlineFill.solidFill.color"`.
+              #
+              # To reset a property to its default value, include its field name in the
+              # field mask but leave the field itself unset.
+        },
+        "updateLineProperties": { # Updates the properties of a Line. # Updates the properties of a Line.
+          "fields": "A String", # The fields that should be updated.
+              #
+              # At least one field must be specified. The root `lineProperties` is
+              # implied and should not be specified. A single `"*"` can be used as
+              # short-hand for listing every field.
+              #
+              # For example to update the line solid fill color, set `fields` to
+              # `"lineFill.solidFill.color"`.
+              #
+              # To reset a property to its default value, include its field name in the
+              # field mask but leave the field itself unset.
+          "lineProperties": { # The properties of the Line. # The line properties to update.
+              #
+              # When unset, these fields default to values that match the appearance of
+              # new lines created in the Slides editor.
+            "dashStyle": "A String", # The dash style of the line.
+            "weight": { # A magnitude in a single direction in the specified units. # The thickness of the line.
+              "magnitude": 3.14, # The magnitude.
+              "unit": "A String", # The units for magnitude.
+            },
+            "endArrow": "A String", # The style of the arrow at the end of the line.
+            "link": { # A hypertext link. # The hyperlink destination of the line. If unset, there is no link.
+              "url": "A String", # If set, indicates this is a link to the external web page at this URL.
+              "pageObjectId": "A String", # If set, indicates this is a link to the specific page in this
+                  # presentation with this ID. A page with this ID may not exist.
+              "slideIndex": 42, # If set, indicates this is a link to the slide at this zero-based index
+                  # in the presentation. There may not be a slide at this index.
+              "relativeLink": "A String", # If set, indicates this is a link to a slide in this presentation,
+                  # addressed by its position.
+            },
+            "startArrow": "A String", # The style of the arrow at the beginning of the line.
+            "lineFill": { # The fill of the line. # The fill of the line. The default line fill matches the defaults for new
+                # lines created in the Slides editor.
+              "solidFill": { # A solid color fill. The page or page element is filled entirely with the # Solid color fill.
+                  # specified color value.
+                  #
+                  # If any field is unset, its value may be inherited from a parent placeholder
+                  # if it exists.
+                "color": { # A themeable solid color value. # The color value of the solid fill.
+                  "themeColor": "A String", # An opaque theme color.
+                  "rgbColor": { # An RGB color. # An opaque RGB color.
+                    "blue": 3.14, # The blue component of the color, from 0.0 to 1.0.
+                    "green": 3.14, # The green component of the color, from 0.0 to 1.0.
+                    "red": 3.14, # The red component of the color, from 0.0 to 1.0.
+                  },
+                },
+                "alpha": 3.14, # The fraction of this `color` that should be applied to the pixel.
+                    # That is, the final pixel color is defined by the equation:
+                    #
+                    #   pixel color = alpha * (color) + (1.0 - alpha) * (background color)
+                    #
+                    # This means that a value of 1.0 corresponds to a solid color, whereas
+                    # a value of 0.0 corresponds to a completely transparent color.
+              },
+            },
+          },
+          "objectId": "A String", # The object ID of the line the update is applied to.
+        },
+        "deleteText": { # Deletes text from a shape or a table cell. # Deletes text from a shape or a table cell.
+          "textRange": { # Specifies a contiguous range of an indexed collection, such as characters in # The range of text to delete, based on TextElement indexes.
+              #
+              # There is always an implicit newline character at the end of a shape's or
+              # table cell's text that cannot be deleted. `Range.Type.ALL` will use the
+              # correct bounds, but care must be taken when specifying explicit bounds for
+              # range types `FROM_START_INDEX` and `FIXED_RANGE`. For example, if the text
+              # is "ABC", followed by an implicit newline, then the maximum value is 2 for
+              # `text_range.start_index` and 3 for `text_range.end_index`.
+              #
+              # Deleting text that crosses a paragraph boundary may result in changes
+              # to paragraph styles and lists as the two paragraphs are merged.
+              #
+              # Ranges that include only one code unit of a surrogate pair are expanded to
+              # include both code units.
+              # text.
+            "endIndex": 42, # The optional zero-based index of the end of the collection.
+                # Required for `SPECIFIC_RANGE` delete mode.
+            "startIndex": 42, # The optional zero-based index of the beginning of the collection.
+                # Required for `SPECIFIC_RANGE` and `FROM_START_INDEX` ranges.
+            "type": "A String", # The type of range.
+          },
+          "objectId": "A String", # The object ID of the shape or table from which the text will be deleted.
+          "cellLocation": { # A location of a single table cell within a table. # The optional table cell location if the text is to be deleted from a table
+              # cell. If present, the object_id must refer to a table.
+            "rowIndex": 42, # The 0-based row index.
+            "columnIndex": 42, # The 0-based column index.
+          },
+        },
+        "updatePageProperties": { # Updates the properties of a Page. # Updates the properties of a Page.
+          "pageProperties": { # The properties of the Page. # The page properties to update.
+              #
+              # The page will inherit properties from the parent page. Depending on the page
+              # type the hierarchy is defined in either
+              # SlideProperties or
+              # LayoutProperties.
+            "pageBackgroundFill": { # The page background fill. # The background fill of the page. If unset, the background fill is inherited
+                # from a parent page if it exists. If the page has no parent, then the
+                # background fill defaults to the corresponding fill in the Slides editor.
+              "solidFill": { # A solid color fill. The page or page element is filled entirely with the # Solid color fill.
+                  # specified color value.
+                  #
+                  # If any field is unset, its value may be inherited from a parent placeholder
+                  # if it exists.
+                "color": { # A themeable solid color value. # The color value of the solid fill.
+                  "themeColor": "A String", # An opaque theme color.
+                  "rgbColor": { # An RGB color. # An opaque RGB color.
+                    "blue": 3.14, # The blue component of the color, from 0.0 to 1.0.
+                    "green": 3.14, # The green component of the color, from 0.0 to 1.0.
+                    "red": 3.14, # The red component of the color, from 0.0 to 1.0.
+                  },
+                },
+                "alpha": 3.14, # The fraction of this `color` that should be applied to the pixel.
+                    # That is, the final pixel color is defined by the equation:
+                    #
+                    #   pixel color = alpha * (color) + (1.0 - alpha) * (background color)
+                    #
+                    # This means that a value of 1.0 corresponds to a solid color, whereas
+                    # a value of 0.0 corresponds to a completely transparent color.
+              },
+              "propertyState": "A String", # The background fill property state.
+                  #
+                  # Updating the the fill on a page will implicitly update this field to
+                  # `RENDERED`, unless another value is specified in the same request. To
+                  # have no fill on a page, set this field to `NOT_RENDERED`. In this case,
+                  # any other fill fields set in the same request will be ignored.
+              "stretchedPictureFill": { # The stretched picture fill. The page or page element is filled entirely with # Stretched picture fill.
+                  # the specified picture. The picture is stretched to fit its container.
+                "contentUrl": "A String", # Reading the content_url:
+                    #
+                    # An URL to a picture with a default lifetime of 30 minutes.
+                    # This URL is tagged with the account of the requester. Anyone with the URL
+                    # effectively accesses the picture as the original requester. Access to the
+                    # picture may be lost if the presentation's sharing settings change.
+                    #
+                    # Writing the content_url:
+                    #
+                    # The picture is fetched once at insertion time and a copy is stored for
+                    # display inside the presentation. Pictures must be less than 50MB in size,
+                    # cannot exceed 25 megapixels, and must be in either in PNG, JPEG, or GIF
+                    # format.
+                "size": { # A width and height. # The original size of the picture fill. This field is read-only.
+                  "width": { # A magnitude in a single direction in the specified units. # The width of the object.
+                    "magnitude": 3.14, # The magnitude.
+                    "unit": "A String", # The units for magnitude.
+                  },
+                  "height": { # A magnitude in a single direction in the specified units. # The height of the object.
+                    "magnitude": 3.14, # The magnitude.
+                    "unit": "A String", # The units for magnitude.
+                  },
+                },
+              },
+            },
+            "colorScheme": { # The palette of predefined colors for a page. # The color scheme of the page. If unset, the color scheme is inherited from
+                # a parent page. If the page has no parent, the color scheme uses a default
+                # Slides color scheme. This field is read-only.
+              "colors": [ # The ThemeColorType and corresponding concrete color pairs.
+                { # A pair mapping a theme color type to the concrete color it represents.
+                  "color": { # An RGB color. # The concrete color corresponding to the theme color type above.
+                    "blue": 3.14, # The blue component of the color, from 0.0 to 1.0.
+                    "green": 3.14, # The green component of the color, from 0.0 to 1.0.
+                    "red": 3.14, # The red component of the color, from 0.0 to 1.0.
+                  },
+                  "type": "A String", # The type of the theme color.
+                },
+              ],
+            },
+          },
+          "fields": "A String", # The fields that should be updated.
+              #
+              # At least one field must be specified. The root `pageProperties` is
+              # implied and should not be specified. A single `"*"` can be used as
+              # short-hand for listing every field.
+              #
+              # For example to update the page background solid fill color, set `fields`
+              # to `"pageBackgroundFill.solidFill.color"`.
+              #
+              # To reset a property to its default value, include its field name in the
+              # field mask but leave the field itself unset.
+          "objectId": "A String", # The object ID of the page the update is applied to.
+        },
+        "updateTextStyle": { # Update the styling of text in a Shape or # Updates the styling of text within a Shape or Table.
+            # Table.
+          "fields": "A String", # The fields that should be updated.
+              #
+              # At least one field must be specified. The root `style` is implied and
+              # should not be specified. A single `"*"` can be used as short-hand for
+              # listing every field.
+              #
+              # For example to update the text style to bold, set `fields` to `"bold"`.
+              #
+              # To reset a property to its default value,
+              # include its field name in the field mask but leave the field itself unset.
+          "style": { # Represents the styling that can be applied to a TextRun. # The style(s) to set on the text.
+              #
+              # If the value for a particular style matches that of the parent, that style
+              # will be set to inherit.
+              #
+              # Certain text style changes may cause other changes meant to mirror the
+              # behavior of the Slides editor. See the documentation of
+              # TextStyle for more information.
+              #
+              # If this text is contained in a shape with a parent placeholder, then these text styles may be
+              # inherited from the parent. Which text styles are inherited depend on the
+              # nesting level of lists:
+              #
+              # * A text run in a paragraph that is not in a list will inherit its text style
+              #   from the the newline character in the paragraph at the 0 nesting level of
+              #   the list inside the parent placeholder.
+              # * A text run in a paragraph that is in a list will inherit its text style
+              #   from the newline character in the paragraph at its corresponding nesting
+              #   level of the list inside the parent placeholder.
+              #
+              # Inherited text styles are represented as unset fields in this message. If
+              # text is contained in a shape without a parent placeholder, unsetting these
+              # fields will revert the style to a value matching the defaults in the Slides
+              # editor.
+            "foregroundColor": { # A color that can either be fully opaque or fully transparent. # The color of the text itself. If set, the color is either opaque or
+                # transparent, depending on if the `opaque_color` field in it is set.
+              "opaqueColor": { # A themeable solid color value. # If set, this will be used as an opaque color. If unset, this represents
+                  # a transparent color.
+                "themeColor": "A String", # An opaque theme color.
+                "rgbColor": { # An RGB color. # An opaque RGB color.
+                  "blue": 3.14, # The blue component of the color, from 0.0 to 1.0.
+                  "green": 3.14, # The green component of the color, from 0.0 to 1.0.
+                  "red": 3.14, # The red component of the color, from 0.0 to 1.0.
+                },
+              },
+            },
+            "bold": True or False, # Whether or not the text is bold.
+            "baselineOffset": "A String", # The text's vertical offset from its normal position.
+                #
+                # Text with `SUPERSCRIPT` or `SUBSCRIPT` baseline offsets is automatically
+                # rendered in a smaller font size, computed based on the `font_size` field.
+                # The `font_size` itself is not affected by changes in this field.
+            "strikethrough": True or False, # Whether or not the text is struck through.
+            "smallCaps": True or False, # Whether or not the text is in small capital letters.
+            "fontFamily": "A String", # The font family of the text.
+                #
+                # The font family can be any font from the Font menu in Slides or from
+                # [Google Fonts] (https://fonts.google.com/). If the font name is
+                # unrecognized, the text is rendered in `Arial`.
+                #
+                # Some fonts can affect the weight of the text. If an update request
+                # specifies values for both `font_family` and `bold`, the explicitly-set
+                # `bold` value is used.
+            "link": { # A hypertext link. # The hyperlink destination of the text. If unset, there is no link. Links
+                # are not inherited from parent text.
+                #
+                # Changing the link in an update request causes some other changes to the
+                # text style of the range:
+                #
+                # * When setting a link, the text foreground color will be set to
+                #   ThemeColorType.HYPERLINK and the text will
+                #   be underlined. If these fields are modified in the same
+                #   request, those values will be used instead of the link defaults.
+                # * Setting a link on a text range that overlaps with an existing link will
+                #   also update the existing link to point to the new URL.
+                # * Links are not settable on newline characters. As a result, setting a link
+                #   on a text range that crosses a paragraph boundary, such as `"ABC\n123"`,
+                #   will separate the newline character(s) into their own text runs. The
+                #   link will be applied separately to the runs before and after the newline.
+                # * Removing a link will update the text style of the range to match the
+                #   style of the preceding text (or the default text styles if the preceding
+                #   text is another link) unless different styles are being set in the same
+                #   request.
+              "url": "A String", # If set, indicates this is a link to the external web page at this URL.
+              "pageObjectId": "A String", # If set, indicates this is a link to the specific page in this
+                  # presentation with this ID. A page with this ID may not exist.
+              "slideIndex": 42, # If set, indicates this is a link to the slide at this zero-based index
+                  # in the presentation. There may not be a slide at this index.
+              "relativeLink": "A String", # If set, indicates this is a link to a slide in this presentation,
+                  # addressed by its position.
+            },
+            "italic": True or False, # Whether or not the text is italicized.
+            "fontSize": { # A magnitude in a single direction in the specified units. # The size of the text's font. When read, the `font_size` will specified in
+                # points.
+              "magnitude": 3.14, # The magnitude.
+              "unit": "A String", # The units for magnitude.
+            },
+            "underline": True or False, # Whether or not the text is underlined.
+            "backgroundColor": { # A color that can either be fully opaque or fully transparent. # The background color of the text. If set, the color is either opaque or
+                # transparent, depending on if the `opaque_color` field in it is set.
+              "opaqueColor": { # A themeable solid color value. # If set, this will be used as an opaque color. If unset, this represents
+                  # a transparent color.
+                "themeColor": "A String", # An opaque theme color.
+                "rgbColor": { # An RGB color. # An opaque RGB color.
+                  "blue": 3.14, # The blue component of the color, from 0.0 to 1.0.
+                  "green": 3.14, # The green component of the color, from 0.0 to 1.0.
+                  "red": 3.14, # The red component of the color, from 0.0 to 1.0.
+                },
+              },
+            },
+          },
+          "textRange": { # Specifies a contiguous range of an indexed collection, such as characters in # The range of text to style.
+              #
+              # The range may be extended to include adjacent newlines.
+              #
+              # If the range fully contains a paragraph belonging to a list, the
+              # paragraph's bullet is also updated with the matching text style.
+              # text.
+            "endIndex": 42, # The optional zero-based index of the end of the collection.
+                # Required for `SPECIFIC_RANGE` delete mode.
+            "startIndex": 42, # The optional zero-based index of the beginning of the collection.
+                # Required for `SPECIFIC_RANGE` and `FROM_START_INDEX` ranges.
+            "type": "A String", # The type of range.
+          },
+          "objectId": "A String", # The object ID of the shape or table with the text to be styled.
+          "cellLocation": { # A location of a single table cell within a table. # The optional table cell location if the text to be styled is in a table
+              # cell. If present, the object_id must refer to a table.
+            "rowIndex": 42, # The 0-based row index.
+            "columnIndex": 42, # The 0-based column index.
+          },
+        },
+        "updateTableCellProperties": { # Update the properties of a TableCell. # Updates the properties of a TableCell.
+          "tableRange": { # A table range represents a reference to a subset of a table. # The table range representing the subset of the table to which the updates
+              # are applied. If a table range is not specified, the updates will apply to
+              # the entire table.
+              #
+              # It's important to note that the cells specified by a table range do not
+              # necessarily form a rectangle. For example, let's say we have a 3 x 3 table
+              # where all the cells of the last row are merged together. The table looks
+              # like this:
+              #
+              #
+              #   [             ]
+              #
+              # A table range with location = (0, 0), row span = 3 and column span = 2
+              # specifies the following cells:
+              #
+              #    x     x
+              #   [      x      ]
+            "rowSpan": 42, # The row span of the table range.
+            "columnSpan": 42, # The column span of the table range.
+            "location": { # A location of a single table cell within a table. # The starting location of the table range.
+              "rowIndex": 42, # The 0-based row index.
+              "columnIndex": 42, # The 0-based column index.
+            },
+          },
+          "tableCellProperties": { # The properties of the TableCell. # The table cell properties to update.
+            "tableCellBackgroundFill": { # The table cell background fill. # The background fill of the table cell. The default fill matches the fill
+                # for newly created table cells in the Slides editor.
+              "solidFill": { # A solid color fill. The page or page element is filled entirely with the # Solid color fill.
+                  # specified color value.
+                  #
+                  # If any field is unset, its value may be inherited from a parent placeholder
+                  # if it exists.
+                "color": { # A themeable solid color value. # The color value of the solid fill.
+                  "themeColor": "A String", # An opaque theme color.
+                  "rgbColor": { # An RGB color. # An opaque RGB color.
+                    "blue": 3.14, # The blue component of the color, from 0.0 to 1.0.
+                    "green": 3.14, # The green component of the color, from 0.0 to 1.0.
+                    "red": 3.14, # The red component of the color, from 0.0 to 1.0.
+                  },
+                },
+                "alpha": 3.14, # The fraction of this `color` that should be applied to the pixel.
+                    # That is, the final pixel color is defined by the equation:
+                    #
+                    #   pixel color = alpha * (color) + (1.0 - alpha) * (background color)
+                    #
+                    # This means that a value of 1.0 corresponds to a solid color, whereas
+                    # a value of 0.0 corresponds to a completely transparent color.
+              },
+              "propertyState": "A String", # The background fill property state.
+                  #
+                  # Updating the the fill on a table cell will implicitly update this field
+                  # to `RENDERED`, unless another value is specified in the same request. To
+                  # have no fill on a table cell, set this field to `NOT_RENDERED`. In this
+                  # case, any other fill fields set in the same request will be ignored.
+            },
+          },
+          "objectId": "A String", # The object ID of the table.
+          "fields": "A String", # The fields that should be updated.
+              #
+              # At least one field must be specified. The root `tableCellProperties` is
+              # implied and should not be specified. A single `"*"` can be used as
+              # short-hand for listing every field.
+              #
+              # For example to update the table cell background solid fill color, set
+              # `fields` to `"tableCellBackgroundFill.solidFill.color"`.
+              #
+              # To reset a property to its default value, include its field name in the
+              # field mask but leave the field itself unset.
+        },
+        "replaceAllShapesWithImage": { # Replaces all shapes that match the given criteria with the provided image. # Replaces all shapes matching some criteria with an image.
+          "containsText": { # A criteria that matches a specific string of text in a shape or table. # If set, this request will replace all of the shapes that contain the
+              # given text.
+            "text": "A String", # The text to search for in the shape or table.
+            "matchCase": True or False, # Indicates whether the search should respect case:
+                #
+                # - `True`: the search is case sensitive.
+                # - `False`: the search is case insensitive.
+          },
+          "imageUrl": "A String", # The image URL.
+              #
+              # The image is fetched once at insertion time and a copy is stored for
+              # display inside the presentation. Images must be less than 50MB in size,
+              # cannot exceed 25 megapixels, and must be in either in PNG, JPEG, or GIF
+              # format.
+          "replaceMethod": "A String", # The replace method.
+        },
+        "updateSlidesPosition": { # Updates the position of slides in the presentation. # Updates the position of a set of slides in the presentation.
+          "slideObjectIds": [ # The IDs of the slides in the presentation that should be moved.
+              # The slides in this list must be in existing presentation order, without
+              # duplicates.
+            "A String",
+          ],
+          "insertionIndex": 42, # The index where the slides should be inserted, based on the slide
+              # arrangement before the move takes place. Must be between zero and the
+              # number of slides in the presentation, inclusive.
+        },
+        "duplicateObject": { # Duplicates a slide or page element. # Duplicates a slide or page element.
+            #
+            # When duplicating a slide, the duplicate slide will be created immediately
+            # following the specified slide. When duplicating a page element, the duplicate
+            # will be placed on the same page at the same position as the original.
+          "objectIds": { # The object being duplicated may contain other objects, for example when
+              # duplicating a slide or a group page element. This map defines how the IDs
+              # of duplicated objects are generated: the keys are the IDs of the original
+              # objects and its values are the IDs that will be assigned to the
+              # corresponding duplicate object. The ID of the source object's duplicate
+              # may be specified in this map as well, using the same value of the
+              # `object_id` field as a key and the newly desired ID as the value.
+              #
+              # All keys must correspond to existing IDs in the presentation. All values
+              # must be unique in the presentation and must start with an alphanumeric
+              # character or an underscore (matches regex `[a-zA-Z0-9_]`); remaining
+              # characters may include those as well as a hyphen or colon (matches regex
+              # `[a-zA-Z0-9_-:]`). The length of the new ID must not be less than 5 or
+              # greater than 50.
+              #
+              # If any IDs of source objects are omitted from the map, a new random ID will
+              # be assigned. If the map is empty or unset, all duplicate objects will
+              # receive a new random ID.
+            "a_key": "A String",
+          },
+          "objectId": "A String", # The ID of the object to duplicate.
+        },
+        "refreshSheetsChart": { # Refreshes an embedded Google Sheets chart by replacing it with the latest # Refreshes a Google Sheets chart.
+            # version of the chart from Google Sheets.
+            #
+            # NOTE: Refreshing charts requires  at least one of the spreadsheets.readonly,
+            # spreadsheets, drive.readonly, or drive OAuth scopes.
+          "objectId": "A String", # The object ID of the chart to refresh.
+        },
+        "replaceAllText": { # Replaces all instances of text matching a criteria with replace text. # Replaces all instances of specified text.
+          "containsText": { # A criteria that matches a specific string of text in a shape or table. # Finds text in a shape matching this substring.
+            "text": "A String", # The text to search for in the shape or table.
+            "matchCase": True or False, # Indicates whether the search should respect case:
+                #
+                # - `True`: the search is case sensitive.
+                # - `False`: the search is case insensitive.
+          },
+          "replaceText": "A String", # The text that will replace the matched text.
+        },
+        "createSheetsChart": { # Creates an embedded Google Sheets chart. # Creates an embedded Google Sheets chart.
+            #
+            # NOTE: Chart creation requires  at least one of the spreadsheets.readonly,
+            # spreadsheets, drive.readonly, or drive OAuth scopes.
+          "chartId": 42, # The ID of the specific chart in the Google Sheets spreadsheet.
+          "spreadsheetId": "A String", # The ID of the Google Sheets spreadsheet that contains the chart.
+          "linkingMode": "A String", # The mode with which the chart is linked to the source spreadsheet. When
+              # not specified, the chart will be an image that is not linked.
+          "elementProperties": { # Common properties for a page element. # The element properties for the chart.
+              #
+              # When the aspect ratio of the provided size does not match the chart aspect
+              # ratio, the chart is scaled and centered with respect to the size in order
+              # to maintain aspect ratio. The provided transform is applied after this
+              # operation.
+              #
+              # Note: When you initially create a
+              # PageElement, the API may modify
+              # the values of both `size` and `transform`, but the
+              # visual size will be unchanged.
+            "pageObjectId": "A String", # The object ID of the page where the element is located.
+            "transform": { # AffineTransform uses a 3x3 matrix with an implied last row of [ 0 0 1 ] # The transform for the element.
+                # to transform source coordinates (x,y) into destination coordinates (x', y')
+                # according to:
+                #
+                #       x'  x  =   shear_y  scale_y  translate_y
+                #       1  [ 1 ]
+                #
+                # After transformation,
+                #
+                #      x' = scale_x * x + shear_x * y + translate_x;
+                #      y' = scale_y * y + shear_y * x + translate_y;
+                #
+                # This message is therefore composed of these six matrix elements.
+              "translateX": 3.14, # The X coordinate translation element.
+              "translateY": 3.14, # The Y coordinate translation element.
+              "scaleX": 3.14, # The X coordinate scaling element.
+              "scaleY": 3.14, # The Y coordinate scaling element.
+              "shearY": 3.14, # The Y coordinate shearing element.
+              "shearX": 3.14, # The X coordinate shearing element.
+              "unit": "A String", # The units for translate elements.
+            },
+            "size": { # A width and height. # The size of the element.
+              "width": { # A magnitude in a single direction in the specified units. # The width of the object.
+                "magnitude": 3.14, # The magnitude.
+                "unit": "A String", # The units for magnitude.
+              },
+              "height": { # A magnitude in a single direction in the specified units. # The height of the object.
+                "magnitude": 3.14, # The magnitude.
+                "unit": "A String", # The units for magnitude.
+              },
+            },
+          },
+          "objectId": "A String", # A user-supplied object ID.
+              #
+              # If specified, the ID must be unique among all pages and page elements in
+              # the presentation. The ID should start with a word character [a-zA-Z0-9_]
+              # and then followed by any number of the following characters [a-zA-Z0-9_-:].
+              # The length of the ID should not be less than 5 or greater than 50.
+              # If empty, a unique identifier will be generated.
+        },
+        "createSlide": { # Creates a new slide. # Creates a new slide.
+          "slideLayoutReference": { # Slide layout reference. This may reference either: # Layout reference of the slide to be inserted, based on the *current
+              # master*, which is one of the following:
+              #
+              # - The master of the previous slide index.
+              # - The master of the first slide, if the insertion_index is zero.
+              # - The first master in the presentation, if there are no slides.
+              #
+              # If the LayoutReference is not found in the current master, a 400 bad
+              # request error is returned.
+              #
+              # If you don't specify a layout reference, then the new slide will use the
+              # predefined layout `BLANK`.
+              #
+              # - A predefined layout
+              # - One of the layouts in the presentation.
+            "predefinedLayout": "A String", # Predefined layout.
+            "layoutId": "A String", # Layout ID: the object ID of one of the layouts in the presentation.
+          },
+          "objectId": "A String", # A user-supplied object ID.
+              #
+              # If you specify an ID, it must be unique among all pages and page elements
+              # in the presentation. The ID must start with an alphanumeric character or an
+              # underscore (matches regex `[a-zA-Z0-9_]`); remaining characters
+              # may include those as well as a hyphen or colon (matches regex
+              # `[a-zA-Z0-9_-:]`).
+              # The length of the ID must not be less than 5 or greater than 50.
+              #
+              # If you don't specify an ID, a unique one is generated.
+          "insertionIndex": 42, # The optional zero-based index indicating where to insert the slides.
+              #
+              # If you don't specify an index, the new slide is created at the end.
+        },
+        "deleteObject": { # Deletes an object, either pages or # Deletes a page or page element from the presentation.
+            # page elements, from the
+            # presentation.
+          "objectId": "A String", # The object ID of the page or page element to delete.
+              #
+              # If after a delete operation a group contains
+              # only 1 or no page elements, the group is also deleted.
+              #
+              # If a placeholder is deleted on a layout, any empty inheriting shapes are
+              # also deleted.
+        },
+        "updateShapeProperties": { # Update the properties of a Shape. # Updates the properties of a Shape.
+          "fields": "A String", # The fields that should be updated.
+              #
+              # At least one field must be specified. The root `shapeProperties` is
+              # implied and should not be specified. A single `"*"` can be used as
+              # short-hand for listing every field.
+              #
+              # For example to update the shape background solid fill color, set `fields`
+              # to `"shapeBackgroundFill.solidFill.color"`.
+              #
+              # To reset a property to its default value, include its field name in the
+              # field mask but leave the field itself unset.
+          "shapeProperties": { # The properties of a Shape. # The shape properties to update.
+              #
+              # If the shape is a placeholder shape as determined by the
+              # placeholder field, then these
+              # properties may be inherited from a parent placeholder shape.
+              # Determining the rendered value of the property depends on the corresponding
+              # property_state field value.
+            "shadow": { # The shadow properties of a page element. # The shadow properties of the shape. If unset, the shadow is inherited from
+                # a parent placeholder if it exists. If the shape has no parent, then the
+                # default shadow matches the defaults for new shapes created in the Slides
+                # editor. This property is read-only.
+                #
+                # If these fields are unset, they may be inherited from a parent placeholder
+                # if it exists. If there is no parent, the fields will default to the value
+                # used for new page elements created in the Slides editor, which may depend on
+                # the page element kind.
+              "color": { # A themeable solid color value. # The shadow color value.
+                "themeColor": "A String", # An opaque theme color.
+                "rgbColor": { # An RGB color. # An opaque RGB color.
+                  "blue": 3.14, # The blue component of the color, from 0.0 to 1.0.
+                  "green": 3.14, # The green component of the color, from 0.0 to 1.0.
+                  "red": 3.14, # The red component of the color, from 0.0 to 1.0.
+                },
+              },
+              "transform": { # AffineTransform uses a 3x3 matrix with an implied last row of [ 0 0 1 ] # Transform that encodes the translate, scale, and skew of the shadow,
+                  # relative to the alignment position.
+                  # to transform source coordinates (x,y) into destination coordinates (x', y')
+                  # according to:
+                  #
+                  #       x'  x  =   shear_y  scale_y  translate_y
+                  #       1  [ 1 ]
+                  #
+                  # After transformation,
+                  #
+                  #      x' = scale_x * x + shear_x * y + translate_x;
+                  #      y' = scale_y * y + shear_y * x + translate_y;
+                  #
+                  # This message is therefore composed of these six matrix elements.
+                "translateX": 3.14, # The X coordinate translation element.
+                "translateY": 3.14, # The Y coordinate translation element.
+                "scaleX": 3.14, # The X coordinate scaling element.
+                "scaleY": 3.14, # The Y coordinate scaling element.
+                "shearY": 3.14, # The Y coordinate shearing element.
+                "shearX": 3.14, # The X coordinate shearing element.
+                "unit": "A String", # The units for translate elements.
+              },
+              "propertyState": "A String", # The shadow property state.
+                  #
+                  # Updating the the shadow on a page element will implicitly update this field
+                  # to `RENDERED`, unless another value is specified in the same request. To
+                  # have no shadow on a page element, set this field to `NOT_RENDERED`. In this
+                  # case, any other shadow fields set in the same request will be ignored.
+              "blurRadius": { # A magnitude in a single direction in the specified units. # The radius of the shadow blur. The larger the radius, the more diffuse the
+                  # shadow becomes.
+                "magnitude": 3.14, # The magnitude.
+                "unit": "A String", # The units for magnitude.
+              },
+              "alpha": 3.14, # The alpha of the shadow's color, from 0.0 to 1.0.
+              "type": "A String", # The type of the shadow.
+              "alignment": "A String", # The alignment point of the shadow, that sets the origin for translate,
+                  # scale and skew of the shadow.
+              "rotateWithShape": True or False, # Whether the shadow should rotate with the shape.
+            },
+            "shapeBackgroundFill": { # The shape background fill. # The background fill of the shape. If unset, the background fill is
+                # inherited from a parent placeholder if it exists. If the shape has no
+                # parent, then the default background fill depends on the shape type,
+                # matching the defaults for new shapes created in the Slides editor.
+              "solidFill": { # A solid color fill. The page or page element is filled entirely with the # Solid color fill.
+                  # specified color value.
+                  #
+                  # If any field is unset, its value may be inherited from a parent placeholder
+                  # if it exists.
+                "color": { # A themeable solid color value. # The color value of the solid fill.
+                  "themeColor": "A String", # An opaque theme color.
+                  "rgbColor": { # An RGB color. # An opaque RGB color.
+                    "blue": 3.14, # The blue component of the color, from 0.0 to 1.0.
+                    "green": 3.14, # The green component of the color, from 0.0 to 1.0.
+                    "red": 3.14, # The red component of the color, from 0.0 to 1.0.
+                  },
+                },
+                "alpha": 3.14, # The fraction of this `color` that should be applied to the pixel.
+                    # That is, the final pixel color is defined by the equation:
+                    #
+                    #   pixel color = alpha * (color) + (1.0 - alpha) * (background color)
+                    #
+                    # This means that a value of 1.0 corresponds to a solid color, whereas
+                    # a value of 0.0 corresponds to a completely transparent color.
+              },
+              "propertyState": "A String", # The background fill property state.
+                  #
+                  # Updating the the fill on a shape will implicitly update this field to
+                  # `RENDERED`, unless another value is specified in the same request. To
+                  # have no fill on a shape, set this field to `NOT_RENDERED`. In this case,
+                  # any other fill fields set in the same request will be ignored.
+            },
+            "link": { # A hypertext link. # The hyperlink destination of the shape. If unset, there is no link. Links
+                # are not inherited from parent placeholders.
+              "url": "A String", # If set, indicates this is a link to the external web page at this URL.
+              "pageObjectId": "A String", # If set, indicates this is a link to the specific page in this
+                  # presentation with this ID. A page with this ID may not exist.
+              "slideIndex": 42, # If set, indicates this is a link to the slide at this zero-based index
+                  # in the presentation. There may not be a slide at this index.
+              "relativeLink": "A String", # If set, indicates this is a link to a slide in this presentation,
+                  # addressed by its position.
+            },
+            "outline": { # The outline of a PageElement. # The outline of the shape. If unset, the outline is inherited from a
+                # parent placeholder if it exists. If the shape has no parent, then the
+                # default outline depends on the shape type, matching the defaults for
+                # new shapes created in the Slides editor.
+                #
+                # If these fields are unset, they may be inherited from a parent placeholder
+                # if it exists. If there is no parent, the fields will default to the value
+                # used for new page elements created in the Slides editor, which may depend on
+                # the page element kind.
+              "dashStyle": "A String", # The dash style of the outline.
+              "propertyState": "A String", # The outline property state.
+                  #
+                  # Updating the the outline on a page element will implicitly update this
+                  # field to`RENDERED`, unless another value is specified in the same request.
+                  # To have no outline on a page element, set this field to `NOT_RENDERED`. In
+                  # this case, any other outline fields set in the same request will be
+                  # ignored.
+              "outlineFill": { # The fill of the outline. # The fill of the outline.
+                "solidFill": { # A solid color fill. The page or page element is filled entirely with the # Solid color fill.
+                    # specified color value.
+                    #
+                    # If any field is unset, its value may be inherited from a parent placeholder
+                    # if it exists.
+                  "color": { # A themeable solid color value. # The color value of the solid fill.
+                    "themeColor": "A String", # An opaque theme color.
+                    "rgbColor": { # An RGB color. # An opaque RGB color.
+                      "blue": 3.14, # The blue component of the color, from 0.0 to 1.0.
+                      "green": 3.14, # The green component of the color, from 0.0 to 1.0.
+                      "red": 3.14, # The red component of the color, from 0.0 to 1.0.
+                    },
+                  },
+                  "alpha": 3.14, # The fraction of this `color` that should be applied to the pixel.
+                      # That is, the final pixel color is defined by the equation:
+                      #
+                      #   pixel color = alpha * (color) + (1.0 - alpha) * (background color)
+                      #
+                      # This means that a value of 1.0 corresponds to a solid color, whereas
+                      # a value of 0.0 corresponds to a completely transparent color.
+                },
+              },
+              "weight": { # A magnitude in a single direction in the specified units. # The thickness of the outline.
+                "magnitude": 3.14, # The magnitude.
+                "unit": "A String", # The units for magnitude.
+              },
+            },
+          },
+          "objectId": "A String", # The object ID of the shape the updates are applied to.
+        },
+        "createShape": { # Creates a new shape. # Creates a new shape.
+          "elementProperties": { # Common properties for a page element. # The element properties for the shape.
+              #
+              # Note: When you initially create a
+              # PageElement, the API may modify
+              # the values of both `size` and `transform`, but the
+              # visual size will be unchanged.
+            "pageObjectId": "A String", # The object ID of the page where the element is located.
+            "transform": { # AffineTransform uses a 3x3 matrix with an implied last row of [ 0 0 1 ] # The transform for the element.
+                # to transform source coordinates (x,y) into destination coordinates (x', y')
+                # according to:
+                #
+                #       x'  x  =   shear_y  scale_y  translate_y
+                #       1  [ 1 ]
+                #
+                # After transformation,
+                #
+                #      x' = scale_x * x + shear_x * y + translate_x;
+                #      y' = scale_y * y + shear_y * x + translate_y;
+                #
+                # This message is therefore composed of these six matrix elements.
+              "translateX": 3.14, # The X coordinate translation element.
+              "translateY": 3.14, # The Y coordinate translation element.
+              "scaleX": 3.14, # The X coordinate scaling element.
+              "scaleY": 3.14, # The Y coordinate scaling element.
+              "shearY": 3.14, # The Y coordinate shearing element.
+              "shearX": 3.14, # The X coordinate shearing element.
+              "unit": "A String", # The units for translate elements.
+            },
+            "size": { # A width and height. # The size of the element.
+              "width": { # A magnitude in a single direction in the specified units. # The width of the object.
+                "magnitude": 3.14, # The magnitude.
+                "unit": "A String", # The units for magnitude.
+              },
+              "height": { # A magnitude in a single direction in the specified units. # The height of the object.
+                "magnitude": 3.14, # The magnitude.
+                "unit": "A String", # The units for magnitude.
+              },
+            },
+          },
+          "shapeType": "A String", # The shape type.
+          "objectId": "A String", # A user-supplied object ID.
+              #
+              # If you specify an ID, it must be unique among all pages and page elements
+              # in the presentation. The ID must start with an alphanumeric character or an
+              # underscore (matches regex `[a-zA-Z0-9_]`); remaining characters
+              # may include those as well as a hyphen or colon (matches regex
+              # `[a-zA-Z0-9_-:]`).
+              # The length of the ID must not be less than 5 or greater than 50.
+              # If empty, a unique identifier will be generated.
+        },
+        "insertTableColumns": { # Inserts columns into a table. # Inserts columns into a table.
+            #
+            # Other columns in the table will be resized to fit the new column.
+          "number": 42, # The number of columns to be inserted. Maximum 20 per request.
+          "insertRight": True or False, # Whether to insert new columns to the right of the reference cell location.
+              #
+              # - `True`: insert to the right.
+              # - `False`: insert to the left.
+          "cellLocation": { # A location of a single table cell within a table. # The reference table cell location from which columns will be inserted.
+              #
+              # A new column will be inserted to the left (or right) of the column where
+              # the reference cell is. If the reference cell is a merged cell, a new
+              # column will be inserted to the left (or right) of the merged cell.
+            "rowIndex": 42, # The 0-based row index.
+            "columnIndex": 42, # The 0-based column index.
+          },
+          "tableObjectId": "A String", # The table to insert columns into.
+        },
+        "createParagraphBullets": { # Creates bullets for all of the paragraphs that overlap with the given # Creates bullets for paragraphs.
+            # text index range.
+            #
+            # The nesting level of each paragraph will be determined by counting leading
+            # tabs in front of each paragraph. To avoid excess space between the bullet and
+            # the corresponding paragraph, these leading tabs are removed by this request.
+            # This may change the indices of parts of the text.
+            #
+            # If the paragraph immediately before paragraphs being updated is in a list
+            # with a matching preset, the paragraphs being updated are added to that
+            # preceding list.
+          "bulletPreset": "A String", # The kinds of bullet glyphs to be used. Defaults to the
+              # `BULLET_DISC_CIRCLE_SQUARE` preset.
+          "textRange": { # Specifies a contiguous range of an indexed collection, such as characters in # The range of text to apply the bullet presets to, based on TextElement indexes.
+              # text.
+            "endIndex": 42, # The optional zero-based index of the end of the collection.
+                # Required for `SPECIFIC_RANGE` delete mode.
+            "startIndex": 42, # The optional zero-based index of the beginning of the collection.
+                # Required for `SPECIFIC_RANGE` and `FROM_START_INDEX` ranges.
+            "type": "A String", # The type of range.
+          },
+          "objectId": "A String", # The object ID of the shape or table containing the text to add bullets to.
+          "cellLocation": { # A location of a single table cell within a table. # The optional table cell location if the text to be modified is in a table
+              # cell. If present, the object_id must refer to a table.
+            "rowIndex": 42, # The 0-based row index.
+            "columnIndex": 42, # The 0-based column index.
+          },
+        },
+        "createTable": { # Creates a new table. # Creates a new table.
+          "rows": 42, # Number of rows in the table.
+          "elementProperties": { # Common properties for a page element. # The element properties for the table.
+              #
+              # The table will be created at the provided size, subject to a minimum size.
+              # If no size is provided, the table will be automatically sized.
+              #
+              # Table transforms must have a scale of 1 and no shear components. If no
+              # transform is provided, the table will be centered on the page.
+              #
+              # Note: When you initially create a
+              # PageElement, the API may modify
+              # the values of both `size` and `transform`, but the
+              # visual size will be unchanged.
+            "pageObjectId": "A String", # The object ID of the page where the element is located.
+            "transform": { # AffineTransform uses a 3x3 matrix with an implied last row of [ 0 0 1 ] # The transform for the element.
+                # to transform source coordinates (x,y) into destination coordinates (x', y')
+                # according to:
+                #
+                #       x'  x  =   shear_y  scale_y  translate_y
+                #       1  [ 1 ]
+                #
+                # After transformation,
+                #
+                #      x' = scale_x * x + shear_x * y + translate_x;
+                #      y' = scale_y * y + shear_y * x + translate_y;
+                #
+                # This message is therefore composed of these six matrix elements.
+              "translateX": 3.14, # The X coordinate translation element.
+              "translateY": 3.14, # The Y coordinate translation element.
+              "scaleX": 3.14, # The X coordinate scaling element.
+              "scaleY": 3.14, # The Y coordinate scaling element.
+              "shearY": 3.14, # The Y coordinate shearing element.
+              "shearX": 3.14, # The X coordinate shearing element.
+              "unit": "A String", # The units for translate elements.
+            },
+            "size": { # A width and height. # The size of the element.
+              "width": { # A magnitude in a single direction in the specified units. # The width of the object.
+                "magnitude": 3.14, # The magnitude.
+                "unit": "A String", # The units for magnitude.
+              },
+              "height": { # A magnitude in a single direction in the specified units. # The height of the object.
+                "magnitude": 3.14, # The magnitude.
+                "unit": "A String", # The units for magnitude.
+              },
+            },
+          },
+          "objectId": "A String", # A user-supplied object ID.
+              #
+              # If you specify an ID, it must be unique among all pages and page elements
+              # in the presentation. The ID must start with an alphanumeric character or an
+              # underscore (matches regex `[a-zA-Z0-9_]`); remaining characters
+              # may include those as well as a hyphen or colon (matches regex
+              # `[a-zA-Z0-9_-:]`).
+              # The length of the ID must not be less than 5 or greater than 50.
+              #
+              # If you don't specify an ID, a unique one is generated.
+          "columns": 42, # Number of columns in the table.
+        },
+        "deleteTableColumn": { # Deletes a column from a table. # Deletes a column from a table.
+          "cellLocation": { # A location of a single table cell within a table. # The reference table cell location from which a column will be deleted.
+              #
+              # The column this cell spans will be deleted. If this is a merged cell,
+              # multiple columns will be deleted. If no columns remain in the table after
+              # this deletion, the whole table is deleted.
+            "rowIndex": 42, # The 0-based row index.
+            "columnIndex": 42, # The 0-based column index.
+          },
+          "tableObjectId": "A String", # The table to delete columns from.
+        },
+        "updatePageElementTransform": { # Updates the transform of a page element. # Updates the transform of a page element.
+          "applyMode": "A String", # The apply mode of the transform update.
+          "transform": { # AffineTransform uses a 3x3 matrix with an implied last row of [ 0 0 1 ] # The input transform matrix used to update the page element.
+              # to transform source coordinates (x,y) into destination coordinates (x', y')
+              # according to:
+              #
+              #       x'  x  =   shear_y  scale_y  translate_y
+              #       1  [ 1 ]
+              #
+              # After transformation,
+              #
+              #      x' = scale_x * x + shear_x * y + translate_x;
+              #      y' = scale_y * y + shear_y * x + translate_y;
+              #
+              # This message is therefore composed of these six matrix elements.
+            "translateX": 3.14, # The X coordinate translation element.
+            "translateY": 3.14, # The Y coordinate translation element.
+            "scaleX": 3.14, # The X coordinate scaling element.
+            "scaleY": 3.14, # The Y coordinate scaling element.
+            "shearY": 3.14, # The Y coordinate shearing element.
+            "shearX": 3.14, # The X coordinate shearing element.
+            "unit": "A String", # The units for translate elements.
+          },
+          "objectId": "A String", # The object ID of the page element to update.
+        },
+      },
+    ],
+  }
+
+  x__xgafv: string, V1 error format.
+    Allowed values
+      1 - v1 error format
+      2 - v2 error format
+
+Returns:
+  An object of the form:
+
+    { # Response message from a batch update.
+    "presentationId": "A String", # The presentation the updates were applied to.
+    "replies": [ # The reply of the updates.  This maps 1:1 with the updates, although
+        # replies to some requests may be empty.
+      { # A single response from an update.
+        "createImage": { # The result of creating an image. # The result of creating an image.
+          "objectId": "A String", # The object ID of the created image.
+        },
+        "replaceAllShapesWithImage": { # The result of replacing shapes with an image. # The result of replacing all shapes containing the specified text with
+            # an image.
+          "occurrencesChanged": 42, # The number of shapes replaced with images.
+        },
+        "duplicateObject": { # The response of duplicating an object. # The result of duplicating an object.
+          "objectId": "A String", # The ID of the new duplicate object.
+        },
+        "createShape": { # The result of creating a shape. # The result of creating a shape.
+          "objectId": "A String", # The object ID of the created shape.
+        },
+        "replaceAllText": { # The result of replacing text. # The result of replacing text.
+          "occurrencesChanged": 42, # The number of occurrences changed by replacing all text.
+        },
+        "createSheetsChart": { # The result of creating an embedded Google Sheets chart. # The result of creating a Google Sheets chart.
+          "objectId": "A String", # The object ID of the created chart.
+        },
+        "createVideo": { # The result of creating a video. # The result of creating a video.
+          "objectId": "A String", # The object ID of the created video.
+        },
+        "createSlide": { # The result of creating a slide. # The result of creating a slide.
+          "objectId": "A String", # The object ID of the created slide.
+        },
+        "createTable": { # The result of creating a table. # The result of creating a table.
+          "objectId": "A String", # The object ID of the created table.
+        },
+        "createLine": { # The result of creating a line. # The result of creating a line.
+          "objectId": "A String", # The object ID of the created line.
+        },
+      },
+    ],
+  }</pre>
+</div>
+
+<div class="method">
+    <code class="details" id="create">create(body, x__xgafv=None)</code>
+  <pre>Creates a new presentation using the title given in the request. Other
+fields in the request are ignored.
+Returns the created presentation.
+
+Args:
+  body: object, The request body. (required)
+    The object takes the form of:
+
+{ # A Google Slides presentation.
+    "presentationId": "A String", # The ID of the presentation.
+    "masters": [ # The slide masters in the presentation. A slide master contains all common
+        # page elements and the common properties for a set of layouts. They serve
+        # three purposes:
+        # 
+        # - Placeholder shapes on a master contain the default text styles and shape
+        #   properties of all placeholder shapes on pages that use that master.
+        # - The master page properties define the common page properties inherited by
+        #   its layouts.
+        # - Any other shapes on the master slide will appear on all slides using that
+        #   master, regardless of their layout.
+      { # A page in a presentation.
+        "layoutProperties": { # The properties of Page are only # Layout specific properties. Only set if page_type = LAYOUT.
+            # relevant for pages with page_type LAYOUT.
+          "displayName": "A String", # The human readable name of the layout in the presentation's locale.
+          "name": "A String", # The name of the layout.
+          "masterObjectId": "A String", # The object ID of the master that this layout is based on.
+        },
+        "pageElements": [ # The page elements rendered on the page.
+          { # A visual element rendered on a page.
+            "wordArt": { # A PageElement kind representing # A word art page element.
+                # word art.
+              "renderedText": "A String", # The text rendered as word art.
+            },
+            "description": "A String", # The description of the page element. Combined with title to display alt
+                # text.
+            "objectId": "A String", # The object ID for this page element. Object IDs used by
+                # google.apps.slides.v1.Page and
+                # google.apps.slides.v1.PageElement share the same namespace.
+            "title": "A String", # The title of the page element. Combined with description to display alt
+                # text.
+            "image": { # A PageElement kind representing an # An image page element.
+                # image.
+              "contentUrl": "A String", # An URL to an image with a default lifetime of 30 minutes.
+                  # This URL is tagged with the account of the requester. Anyone with the URL
+                  # effectively accesses the image as the original requester. Access to the
+                  # image may be lost if the presentation's sharing settings change.
+              "imageProperties": { # The properties of the Image. # The properties of the image.
+                "outline": { # The outline of a PageElement. # The outline of the image. If not set, the the image has no outline.
+                    #
+                    # If these fields are unset, they may be inherited from a parent placeholder
+                    # if it exists. If there is no parent, the fields will default to the value
+                    # used for new page elements created in the Slides editor, which may depend on
+                    # the page element kind.
+                  "dashStyle": "A String", # The dash style of the outline.
+                  "propertyState": "A String", # The outline property state.
+                      #
+                      # Updating the the outline on a page element will implicitly update this
+                      # field to`RENDERED`, unless another value is specified in the same request.
+                      # To have no outline on a page element, set this field to `NOT_RENDERED`. In
+                      # this case, any other outline fields set in the same request will be
+                      # ignored.
+                  "outlineFill": { # The fill of the outline. # The fill of the outline.
+                    "solidFill": { # A solid color fill. The page or page element is filled entirely with the # Solid color fill.
+                        # specified color value.
+                        #
+                        # If any field is unset, its value may be inherited from a parent placeholder
+                        # if it exists.
+                      "color": { # A themeable solid color value. # The color value of the solid fill.
+                        "themeColor": "A String", # An opaque theme color.
+                        "rgbColor": { # An RGB color. # An opaque RGB color.
+                          "blue": 3.14, # The blue component of the color, from 0.0 to 1.0.
+                          "green": 3.14, # The green component of the color, from 0.0 to 1.0.
+                          "red": 3.14, # The red component of the color, from 0.0 to 1.0.
+                        },
+                      },
+                      "alpha": 3.14, # The fraction of this `color` that should be applied to the pixel.
+                          # That is, the final pixel color is defined by the equation:
+                          #
+                          #   pixel color = alpha * (color) + (1.0 - alpha) * (background color)
+                          #
+                          # This means that a value of 1.0 corresponds to a solid color, whereas
+                          # a value of 0.0 corresponds to a completely transparent color.
+                    },
+                  },
+                  "weight": { # A magnitude in a single direction in the specified units. # The thickness of the outline.
+                    "magnitude": 3.14, # The magnitude.
+                    "unit": "A String", # The units for magnitude.
+                  },
+                },
+                "brightness": 3.14, # The brightness effect of the image. The value should be in the interval
+                    # [-1.0, 1.0], where 0 means no effect. This property is read-only.
+                "recolor": { # A recolor effect applied on an image. # The recolor effect of the image. If not set, the image is not recolored.
+                    # This property is read-only.
+                  "recolorStops": [ # The recolor effect is represented by a gradient, which is a list of color
+                      # stops. This property is read-only.
+                    { # A color and position in a gradient band.
+                      "color": { # A themeable solid color value. # The color of the gradient stop.
+                        "themeColor": "A String", # An opaque theme color.
+                        "rgbColor": { # An RGB color. # An opaque RGB color.
+                          "blue": 3.14, # The blue component of the color, from 0.0 to 1.0.
+                          "green": 3.14, # The green component of the color, from 0.0 to 1.0.
+                          "red": 3.14, # The red component of the color, from 0.0 to 1.0.
+                        },
+                      },
+                      "position": 3.14, # The relative position of the color stop in the gradient band measured
+                          # in percentage. The value should be in the interval [0.0, 1.0].
+                      "alpha": 3.14, # The alpha value of this color in the gradient band. Defaults to 1.0,
+                          # fully opaque.
+                    },
+                  ],
+                },
+                "link": { # A hypertext link. # The hyperlink destination of the image. If unset, there is no link.
+                  "url": "A String", # If set, indicates this is a link to the external web page at this URL.
+                  "pageObjectId": "A String", # If set, indicates this is a link to the specific page in this
+                      # presentation with this ID. A page with this ID may not exist.
+                  "slideIndex": 42, # If set, indicates this is a link to the slide at this zero-based index
+                      # in the presentation. There may not be a slide at this index.
+                  "relativeLink": "A String", # If set, indicates this is a link to a slide in this presentation,
+                      # addressed by its position.
+                },
+                "transparency": 3.14, # The transparency effect of the image. The value should be in the interval
+                    # [0.0, 1.0], where 0 means no effect and 1 means completely transparent.
+                    # This property is read-only.
+                "cropProperties": { # The crop properties of an object enclosed in a container. For example, an # The crop properties of the image. If not set, the image is not cropped.
+                    # This property is read-only.
+                    # Image.
+                    #
+                    # The crop properties is represented by the offsets of four edges which define
+                    # a crop rectangle. The offsets are measured in percentage from the
+                    # corresponding edges of the object's original bounding rectangle towards
+                    # inside, relative to the object's original dimensions.
+                    #
+                    # - If the offset is in the interval (0, 1), the corresponding edge of crop
+                    # rectangle is positioned inside of the object's original bounding rectangle.
+                    # - If the offset is negative or greater than 1, the corresponding edge of crop
+                    # rectangle is positioned outside of the object's original bounding rectangle.
+                    # - If the left edge of the crop rectangle is on the right side of its right
+                    # edge, the object will be flipped horizontally.
+                    # - If the top edge of the crop rectangle is below its bottom edge, the object
+                    # will be flipped vertically.
+                    # - If all offsets and rotation angle is 0, the object is not cropped.
+                    #
+                    # After cropping, the content in the crop rectangle will be stretched to fit
+                    # its container.
+                  "leftOffset": 3.14, # The offset specifies the left edge of the crop rectangle that is located to
+                      # the right of the original bounding rectangle left edge, relative to the
+                      # object's original width.
+                  "angle": 3.14, # The rotation angle of the crop window around its center, in radians.
+                      # Rotation angle is applied after the offset.
+                  "bottomOffset": 3.14, # The offset specifies the bottom edge of the crop rectangle that is located
+                      # above the original bounding rectangle bottom edge, relative to the object's
+                      # original height.
+                  "rightOffset": 3.14, # The offset specifies the right edge of the crop rectangle that is located
+                      # to the left of the original bounding rectangle right edge, relative to the
+                      # object's original width.
+                  "topOffset": 3.14, # The offset specifies the top edge of the crop rectangle that is located
+                      # below the original bounding rectangle top edge, relative to the object's
+                      # original height.
+                },
+                "shadow": { # The shadow properties of a page element. # The shadow of the image. If not set, the image has no shadow. This property
+                    # is read-only.
+                    #
+                    # If these fields are unset, they may be inherited from a parent placeholder
+                    # if it exists. If there is no parent, the fields will default to the value
+                    # used for new page elements created in the Slides editor, which may depend on
+                    # the page element kind.
+                  "color": { # A themeable solid color value. # The shadow color value.
+                    "themeColor": "A String", # An opaque theme color.
+                    "rgbColor": { # An RGB color. # An opaque RGB color.
+                      "blue": 3.14, # The blue component of the color, from 0.0 to 1.0.
+                      "green": 3.14, # The green component of the color, from 0.0 to 1.0.
+                      "red": 3.14, # The red component of the color, from 0.0 to 1.0.
+                    },
+                  },
+                  "transform": { # AffineTransform uses a 3x3 matrix with an implied last row of [ 0 0 1 ] # Transform that encodes the translate, scale, and skew of the shadow,
+                      # relative to the alignment position.
+                      # to transform source coordinates (x,y) into destination coordinates (x', y')
+                      # according to:
+                      #
+                      #       x'  x  =   shear_y  scale_y  translate_y
+                      #       1  [ 1 ]
+                      #
+                      # After transformation,
+                      #
+                      #      x' = scale_x * x + shear_x * y + translate_x;
+                      #      y' = scale_y * y + shear_y * x + translate_y;
+                      #
+                      # This message is therefore composed of these six matrix elements.
+                    "translateX": 3.14, # The X coordinate translation element.
+                    "translateY": 3.14, # The Y coordinate translation element.
+                    "scaleX": 3.14, # The X coordinate scaling element.
+                    "scaleY": 3.14, # The Y coordinate scaling element.
+                    "shearY": 3.14, # The Y coordinate shearing element.
+                    "shearX": 3.14, # The X coordinate shearing element.
+                    "unit": "A String", # The units for translate elements.
+                  },
+                  "propertyState": "A String", # The shadow property state.
+                      #
+                      # Updating the the shadow on a page element will implicitly update this field
+                      # to `RENDERED`, unless another value is specified in the same request. To
+                      # have no shadow on a page element, set this field to `NOT_RENDERED`. In this
+                      # case, any other shadow fields set in the same request will be ignored.
+                  "blurRadius": { # A magnitude in a single direction in the specified units. # The radius of the shadow blur. The larger the radius, the more diffuse the
+                      # shadow becomes.
+                    "magnitude": 3.14, # The magnitude.
+                    "unit": "A String", # The units for magnitude.
+                  },
+                  "alpha": 3.14, # The alpha of the shadow's color, from 0.0 to 1.0.
+                  "type": "A String", # The type of the shadow.
+                  "alignment": "A String", # The alignment point of the shadow, that sets the origin for translate,
+                      # scale and skew of the shadow.
+                  "rotateWithShape": True or False, # Whether the shadow should rotate with the shape.
+                },
+                "contrast": 3.14, # The contrast effect of the image. The value should be in the interval
+                    # [-1.0, 1.0], where 0 means no effect. This property is read-only.
+              },
+            },
+            "transform": { # AffineTransform uses a 3x3 matrix with an implied last row of [ 0 0 1 ] # The transform of the page element.
+                # to transform source coordinates (x,y) into destination coordinates (x', y')
+                # according to:
+                #
+                #       x'  x  =   shear_y  scale_y  translate_y
+                #       1  [ 1 ]
+                #
+                # After transformation,
+                #
+                #      x' = scale_x * x + shear_x * y + translate_x;
+                #      y' = scale_y * y + shear_y * x + translate_y;
+                #
+                # This message is therefore composed of these six matrix elements.
+              "translateX": 3.14, # The X coordinate translation element.
+              "translateY": 3.14, # The Y coordinate translation element.
+              "scaleX": 3.14, # The X coordinate scaling element.
+              "scaleY": 3.14, # The Y coordinate scaling element.
+              "shearY": 3.14, # The Y coordinate shearing element.
+              "shearX": 3.14, # The X coordinate shearing element.
+              "unit": "A String", # The units for translate elements.
+            },
+            "shape": { # A PageElement kind representing a # A generic shape.
+                # generic shape that does not have a more specific classification.
+              "text": { # The general text content. The text must reside in a compatible shape (e.g. # The text content of the shape.
+                  # text box or rectangle) or a table cell in a page.
+                "textElements": [ # The text contents broken down into its component parts, including styling
+                    # information. This property is read-only.
+                  { # A TextElement describes the content of a range of indices in the text content
+                      # of a Shape or TableCell.
+                    "autoText": { # A TextElement kind that represents auto text. # A TextElement representing a spot in the text that is dynamically
+                        # replaced with content that can change over time.
+                      "content": "A String", # The rendered content of this auto text, if available.
+                      "style": { # Represents the styling that can be applied to a TextRun. # The styling applied to this auto text.
+                          #
+                          # If this text is contained in a shape with a parent placeholder, then these text styles may be
+                          # inherited from the parent. Which text styles are inherited depend on the
+                          # nesting level of lists:
+                          #
+                          # * A text run in a paragraph that is not in a list will inherit its text style
+                          #   from the the newline character in the paragraph at the 0 nesting level of
+                          #   the list inside the parent placeholder.
+                          # * A text run in a paragraph that is in a list will inherit its text style
+                          #   from the newline character in the paragraph at its corresponding nesting
+                          #   level of the list inside the parent placeholder.
+                          #
+                          # Inherited text styles are represented as unset fields in this message. If
+                          # text is contained in a shape without a parent placeholder, unsetting these
+                          # fields will revert the style to a value matching the defaults in the Slides
+                          # editor.
+                        "foregroundColor": { # A color that can either be fully opaque or fully transparent. # The color of the text itself. If set, the color is either opaque or
+                            # transparent, depending on if the `opaque_color` field in it is set.
+                          "opaqueColor": { # A themeable solid color value. # If set, this will be used as an opaque color. If unset, this represents
+                              # a transparent color.
+                            "themeColor": "A String", # An opaque theme color.
+                            "rgbColor": { # An RGB color. # An opaque RGB color.
+                              "blue": 3.14, # The blue component of the color, from 0.0 to 1.0.
+                              "green": 3.14, # The green component of the color, from 0.0 to 1.0.
+                              "red": 3.14, # The red component of the color, from 0.0 to 1.0.
+                            },
+                          },
+                        },
+                        "bold": True or False, # Whether or not the text is bold.
+                        "baselineOffset": "A String", # The text's vertical offset from its normal position.
+                            #
+                            # Text with `SUPERSCRIPT` or `SUBSCRIPT` baseline offsets is automatically
+                            # rendered in a smaller font size, computed based on the `font_size` field.
+                            # The `font_size` itself is not affected by changes in this field.
+                        "strikethrough": True or False, # Whether or not the text is struck through.
+                        "smallCaps": True or False, # Whether or not the text is in small capital letters.
+                        "fontFamily": "A String", # The font family of the text.
+                            #
+                            # The font family can be any font from the Font menu in Slides or from
+                            # [Google Fonts] (https://fonts.google.com/). If the font name is
+                            # unrecognized, the text is rendered in `Arial`.
+                            #
+                            # Some fonts can affect the weight of the text. If an update request
+                            # specifies values for both `font_family` and `bold`, the explicitly-set
+                            # `bold` value is used.
+                        "link": { # A hypertext link. # The hyperlink destination of the text. If unset, there is no link. Links
+                            # are not inherited from parent text.
+                            #
+                            # Changing the link in an update request causes some other changes to the
+                            # text style of the range:
+                            #
+                            # * When setting a link, the text foreground color will be set to
+                            #   ThemeColorType.HYPERLINK and the text will
+                            #   be underlined. If these fields are modified in the same
+                            #   request, those values will be used instead of the link defaults.
+                            # * Setting a link on a text range that overlaps with an existing link will
+                            #   also update the existing link to point to the new URL.
+                            # * Links are not settable on newline characters. As a result, setting a link
+                            #   on a text range that crosses a paragraph boundary, such as `"ABC\n123"`,
+                            #   will separate the newline character(s) into their own text runs. The
+                            #   link will be applied separately to the runs before and after the newline.
+                            # * Removing a link will update the text style of the range to match the
+                            #   style of the preceding text (or the default text styles if the preceding
+                            #   text is another link) unless different styles are being set in the same
+                            #   request.
+                          "url": "A String", # If set, indicates this is a link to the external web page at this URL.
+                          "pageObjectId": "A String", # If set, indicates this is a link to the specific page in this
+                              # presentation with this ID. A page with this ID may not exist.
+                          "slideIndex": 42, # If set, indicates this is a link to the slide at this zero-based index
+                              # in the presentation. There may not be a slide at this index.
+                          "relativeLink": "A String", # If set, indicates this is a link to a slide in this presentation,
+                              # addressed by its position.
+                        },
+                        "italic": True or False, # Whether or not the text is italicized.
+                        "fontSize": { # A magnitude in a single direction in the specified units. # The size of the text's font. When read, the `font_size` will specified in
+                            # points.
+                          "magnitude": 3.14, # The magnitude.
+                          "unit": "A String", # The units for magnitude.
+                        },
+                        "underline": True or False, # Whether or not the text is underlined.
+                        "backgroundColor": { # A color that can either be fully opaque or fully transparent. # The background color of the text. If set, the color is either opaque or
+                            # transparent, depending on if the `opaque_color` field in it is set.
+                          "opaqueColor": { # A themeable solid color value. # If set, this will be used as an opaque color. If unset, this represents
+                              # a transparent color.
+                            "themeColor": "A String", # An opaque theme color.
+                            "rgbColor": { # An RGB color. # An opaque RGB color.
+                              "blue": 3.14, # The blue component of the color, from 0.0 to 1.0.
+                              "green": 3.14, # The green component of the color, from 0.0 to 1.0.
+                              "red": 3.14, # The red component of the color, from 0.0 to 1.0.
+                            },
+                          },
+                        },
+                      },
+                      "type": "A String", # The type of this auto text.
+                    },
+                    "endIndex": 42, # The zero-based end index of this text element, exclusive, in Unicode code
+                        # units.
+                    "startIndex": 42, # The zero-based start index of this text element, in Unicode code units.
+                    "paragraphMarker": { # A TextElement kind that represents the beginning of a new paragraph. # A marker representing the beginning of a new paragraph.
+                        #
+                        # The `start_index` and `end_index` of this TextElement represent the
+                        # range of the paragraph. Other TextElements with an index range contained
+                        # inside this paragraph's range are considered to be part of this
+                        # paragraph. The range of indices of two separate paragraphs will never
+                        # overlap.
+                      "style": { # Styles that apply to a whole paragraph. # The paragraph's style
+                          #
+                          # If this text is contained in a shape with a parent placeholder, then these paragraph styles may be
+                          # inherited from the parent. Which paragraph styles are inherited depend on the
+                          # nesting level of lists:
+                          #
+                          # * A paragraph not in a list will inherit its paragraph style from the
+                          #   paragraph at the 0 nesting level of the list inside the parent placeholder.
+                          # * A paragraph in a list will inherit its paragraph style from the paragraph
+                          #   at its corresponding nesting level of the list inside the parent
+                          #   placeholder.
+                          #
+                          # Inherited paragraph styles are represented as unset fields in this message.
+                        "spacingMode": "A String", # The spacing mode for the paragraph. This property is read-only.
+                        "direction": "A String", # The text direction of this paragraph. This property is read-only.
+                        "spaceBelow": { # A magnitude in a single direction in the specified units. # The amount of extra space above the paragraph. If unset, the value is
+                            # inherited from the parent. This property is read-only.
+                          "magnitude": 3.14, # The magnitude.
+                          "unit": "A String", # The units for magnitude.
+                        },
+                        "lineSpacing": 3.14, # The amount of space between lines, as a percentage of normal, where normal
+                            # is represented as 100.0. If unset, the value is inherited from the parent.
+                            # This property is read-only.
+                        "indentStart": { # A magnitude in a single direction in the specified units. # The amount indentation for the paragraph on the side that corresponds to
+                            # the start of the text, based on the current text direction. If unset, the
+                            # value is inherited from the parent. This property is read-only.
+                          "magnitude": 3.14, # The magnitude.
+                          "unit": "A String", # The units for magnitude.
+                        },
+                        "spaceAbove": { # A magnitude in a single direction in the specified units. # The amount of extra space above the paragraph. If unset, the value is
+                            # inherited from the parent. This property is read-only.
+                          "magnitude": 3.14, # The magnitude.
+                          "unit": "A String", # The units for magnitude.
+                        },
+                        "indentEnd": { # A magnitude in a single direction in the specified units. # The amount indentation for the paragraph on the side that corresponds to
+                            # the end of the text, based on the current text direction. If unset, the
+                            # value is inherited from the parent. This property is read-only.
+                          "magnitude": 3.14, # The magnitude.
+                          "unit": "A String", # The units for magnitude.
+                        },
+                        "indentFirstLine": { # A magnitude in a single direction in the specified units. # The amount of indentation for the start of the first line of the paragraph.
+                            # If unset, the value is inherited from the parent. This property is
+                            # read-only.
+                          "magnitude": 3.14, # The magnitude.
+                          "unit": "A String", # The units for magnitude.
+                        },
+                        "alignment": "A String", # The text alignment for this paragraph. This property is read-only.
+                      },
+                      "bullet": { # Describes the bullet of a paragraph. # The bullet for this paragraph. If not present, the paragraph does not
+                          # belong to a list.
+                        "nestingLevel": 42, # The nesting level of this paragraph in the list.
+                        "listId": "A String", # The ID of the list this paragraph belongs to.
+                        "bulletStyle": { # Represents the styling that can be applied to a TextRun. # The paragraph specific text style applied to this bullet.
+                            #
+                            # If this text is contained in a shape with a parent placeholder, then these text styles may be
+                            # inherited from the parent. Which text styles are inherited depend on the
+                            # nesting level of lists:
+                            #
+                            # * A text run in a paragraph that is not in a list will inherit its text style
+                            #   from the the newline character in the paragraph at the 0 nesting level of
+                            #   the list inside the parent placeholder.
+                            # * A text run in a paragraph that is in a list will inherit its text style
+                            #   from the newline character in the paragraph at its corresponding nesting
+                            #   level of the list inside the parent placeholder.
+                            #
+                            # Inherited text styles are represented as unset fields in this message. If
+                            # text is contained in a shape without a parent placeholder, unsetting these
+                            # fields will revert the style to a value matching the defaults in the Slides
+                            # editor.
+                          "foregroundColor": { # A color that can either be fully opaque or fully transparent. # The color of the text itself. If set, the color is either opaque or
+                              # transparent, depending on if the `opaque_color` field in it is set.
+                            "opaqueColor": { # A themeable solid color value. # If set, this will be used as an opaque color. If unset, this represents
+                                # a transparent color.
+                              "themeColor": "A String", # An opaque theme color.
+                              "rgbColor": { # An RGB color. # An opaque RGB color.
+                                "blue": 3.14, # The blue component of the color, from 0.0 to 1.0.
+                                "green": 3.14, # The green component of the color, from 0.0 to 1.0.
+                                "red": 3.14, # The red component of the color, from 0.0 to 1.0.
+                              },
+                            },
+                          },
+                          "bold": True or False, # Whether or not the text is bold.
+                          "baselineOffset": "A String", # The text's vertical offset from its normal position.
+                              #
+                              # Text with `SUPERSCRIPT` or `SUBSCRIPT` baseline offsets is automatically
+                              # rendered in a smaller font size, computed based on the `font_size` field.
+                              # The `font_size` itself is not affected by changes in this field.
+                          "strikethrough": True or False, # Whether or not the text is struck through.
+                          "smallCaps": True or False, # Whether or not the text is in small capital letters.
+                          "fontFamily": "A String", # The font family of the text.
+                              #
+                              # The font family can be any font from the Font menu in Slides or from
+                              # [Google Fonts] (https://fonts.google.com/). If the font name is
+                              # unrecognized, the text is rendered in `Arial`.
+                              #
+                              # Some fonts can affect the weight of the text. If an update request
+                              # specifies values for both `font_family` and `bold`, the explicitly-set
+                              # `bold` value is used.
+                          "link": { # A hypertext link. # The hyperlink destination of the text. If unset, there is no link. Links
+                              # are not inherited from parent text.
+                              #
+                              # Changing the link in an update request causes some other changes to the
+                              # text style of the range:
+                              #
+                              # * When setting a link, the text foreground color will be set to
+                              #   ThemeColorType.HYPERLINK and the text will
+                              #   be underlined. If these fields are modified in the same
+                              #   request, those values will be used instead of the link defaults.
+                              # * Setting a link on a text range that overlaps with an existing link will
+                              #   also update the existing link to point to the new URL.
+                              # * Links are not settable on newline characters. As a result, setting a link
+                              #   on a text range that crosses a paragraph boundary, such as `"ABC\n123"`,
+                              #   will separate the newline character(s) into their own text runs. The
+                              #   link will be applied separately to the runs before and after the newline.
+                              # * Removing a link will update the text style of the range to match the
+                              #   style of the preceding text (or the default text styles if the preceding
+                              #   text is another link) unless different styles are being set in the same
+                              #   request.
+                            "url": "A String", # If set, indicates this is a link to the external web page at this URL.
+                            "pageObjectId": "A String", # If set, indicates this is a link to the specific page in this
+                                # presentation with this ID. A page with this ID may not exist.
+                            "slideIndex": 42, # If set, indicates this is a link to the slide at this zero-based index
+                                # in the presentation. There may not be a slide at this index.
+                            "relativeLink": "A String", # If set, indicates this is a link to a slide in this presentation,
+                                # addressed by its position.
+                          },
+                          "italic": True or False, # Whether or not the text is italicized.
+                          "fontSize": { # A magnitude in a single direction in the specified units. # The size of the text's font. When read, the `font_size` will specified in
+                              # points.
+                            "magnitude": 3.14, # The magnitude.
+                            "unit": "A String", # The units for magnitude.
+                          },
+                          "underline": True or False, # Whether or not the text is underlined.
+                          "backgroundColor": { # A color that can either be fully opaque or fully transparent. # The background color of the text. If set, the color is either opaque or
+                              # transparent, depending on if the `opaque_color` field in it is set.
+                            "opaqueColor": { # A themeable solid color value. # If set, this will be used as an opaque color. If unset, this represents
+                                # a transparent color.
+                              "themeColor": "A String", # An opaque theme color.
+                              "rgbColor": { # An RGB color. # An opaque RGB color.
+                                "blue": 3.14, # The blue component of the color, from 0.0 to 1.0.
+                                "green": 3.14, # The green component of the color, from 0.0 to 1.0.
+                                "red": 3.14, # The red component of the color, from 0.0 to 1.0.
+                              },
+                            },
+                          },
+                        },
+                        "glyph": "A String", # The rendered bullet glyph for this paragraph.
+                      },
+                    },
+                    "textRun": { # A TextElement kind that represents a run of text that all has the same # A TextElement representing a run of text where all of the characters
+                        # in the run have the same TextStyle.
+                        #
+                        # The `start_index` and `end_index` of TextRuns will always be fully
+                        # contained in the index range of a single `paragraph_marker` TextElement.
+                        # In other words, a TextRun will never span multiple paragraphs.
+                        # styling.
+                      "content": "A String", # The text of this run.
+                      "style": { # Represents the styling that can be applied to a TextRun. # The styling applied to this run.
+                          #
+                          # If this text is contained in a shape with a parent placeholder, then these text styles may be
+                          # inherited from the parent. Which text styles are inherited depend on the
+                          # nesting level of lists:
+                          #
+                          # * A text run in a paragraph that is not in a list will inherit its text style
+                          #   from the the newline character in the paragraph at the 0 nesting level of
+                          #   the list inside the parent placeholder.
+                          # * A text run in a paragraph that is in a list will inherit its text style
+                          #   from the newline character in the paragraph at its corresponding nesting
+                          #   level of the list inside the parent placeholder.
+                          #
+                          # Inherited text styles are represented as unset fields in this message. If
+                          # text is contained in a shape without a parent placeholder, unsetting these
+                          # fields will revert the style to a value matching the defaults in the Slides
+                          # editor.
+                        "foregroundColor": { # A color that can either be fully opaque or fully transparent. # The color of the text itself. If set, the color is either opaque or
+                            # transparent, depending on if the `opaque_color` field in it is set.
+                          "opaqueColor": { # A themeable solid color value. # If set, this will be used as an opaque color. If unset, this represents
+                              # a transparent color.
+                            "themeColor": "A String", # An opaque theme color.
+                            "rgbColor": { # An RGB color. # An opaque RGB color.
+                              "blue": 3.14, # The blue component of the color, from 0.0 to 1.0.
+                              "green": 3.14, # The green component of the color, from 0.0 to 1.0.
+                              "red": 3.14, # The red component of the color, from 0.0 to 1.0.
+                            },
+                          },
+                        },
+                        "bold": True or False, # Whether or not the text is bold.
+                        "baselineOffset": "A String", # The text's vertical offset from its normal position.
+                            #
+                            # Text with `SUPERSCRIPT` or `SUBSCRIPT` baseline offsets is automatically
+                            # rendered in a smaller font size, computed based on the `font_size` field.
+                            # The `font_size` itself is not affected by changes in this field.
+                        "strikethrough": True or False, # Whether or not the text is struck through.
+                        "smallCaps": True or False, # Whether or not the text is in small capital letters.
+                        "fontFamily": "A String", # The font family of the text.
+                            #
+                            # The font family can be any font from the Font menu in Slides or from
+                            # [Google Fonts] (https://fonts.google.com/). If the font name is
+                            # unrecognized, the text is rendered in `Arial`.
+                            #
+                            # Some fonts can affect the weight of the text. If an update request
+                            # specifies values for both `font_family` and `bold`, the explicitly-set
+                            # `bold` value is used.
+                        "link": { # A hypertext link. # The hyperlink destination of the text. If unset, there is no link. Links
+                            # are not inherited from parent text.
+                            #
+                            # Changing the link in an update request causes some other changes to the
+                            # text style of the range:
+                            #
+                            # * When setting a link, the text foreground color will be set to
+                            #   ThemeColorType.HYPERLINK and the text will
+                            #   be underlined. If these fields are modified in the same
+                            #   request, those values will be used instead of the link defaults.
+                            # * Setting a link on a text range that overlaps with an existing link will
+                            #   also update the existing link to point to the new URL.
+                            # * Links are not settable on newline characters. As a result, setting a link
+                            #   on a text range that crosses a paragraph boundary, such as `"ABC\n123"`,
+                            #   will separate the newline character(s) into their own text runs. The
+                            #   link will be applied separately to the runs before and after the newline.
+                            # * Removing a link will update the text style of the range to match the
+                            #   style of the preceding text (or the default text styles if the preceding
+                            #   text is another link) unless different styles are being set in the same
+                            #   request.
+                          "url": "A String", # If set, indicates this is a link to the external web page at this URL.
+                          "pageObjectId": "A String", # If set, indicates this is a link to the specific page in this
+                              # presentation with this ID. A page with this ID may not exist.
+                          "slideIndex": 42, # If set, indicates this is a link to the slide at this zero-based index
+                              # in the presentation. There may not be a slide at this index.
+                          "relativeLink": "A String", # If set, indicates this is a link to a slide in this presentation,
+                              # addressed by its position.
+                        },
+                        "italic": True or False, # Whether or not the text is italicized.
+                        "fontSize": { # A magnitude in a single direction in the specified units. # The size of the text's font. When read, the `font_size` will specified in
+                            # points.
+                          "magnitude": 3.14, # The magnitude.
+                          "unit": "A String", # The units for magnitude.
+                        },
+                        "underline": True or False, # Whether or not the text is underlined.
+                        "backgroundColor": { # A color that can either be fully opaque or fully transparent. # The background color of the text. If set, the color is either opaque or
+                            # transparent, depending on if the `opaque_color` field in it is set.
+                          "opaqueColor": { # A themeable solid color value. # If set, this will be used as an opaque color. If unset, this represents
+                              # a transparent color.
+                            "themeColor": "A String", # An opaque theme color.
+                            "rgbColor": { # An RGB color. # An opaque RGB color.
+                              "blue": 3.14, # The blue component of the color, from 0.0 to 1.0.
+                              "green": 3.14, # The green component of the color, from 0.0 to 1.0.
+                              "red": 3.14, # The red component of the color, from 0.0 to 1.0.
+                            },
+                          },
+                        },
+                      },
+                    },
+                  },
+                ],
+                "lists": { # The bulleted lists contained in this text, keyed by list ID.
+                  "a_key": { # A List describes the look and feel of bullets belonging to paragraphs
+                      # associated with a list. A paragraph that is part of a list has an implicit
+                      # reference to that list's ID.
+                    "nestingLevel": { # A map of nesting levels to the properties of bullets at the associated
+                        # level. A list has at most nine levels of nesting, so the possible values
+                        # for the keys of this map are 0 through 8, inclusive.
+                      "a_key": { # Contains properties describing the look and feel of a list bullet at a given
+                          # level of nesting.
+                        "bulletStyle": { # Represents the styling that can be applied to a TextRun. # The style of a bullet at this level of nesting.
+                            #
+                            # If this text is contained in a shape with a parent placeholder, then these text styles may be
+                            # inherited from the parent. Which text styles are inherited depend on the
+                            # nesting level of lists:
+                            #
+                            # * A text run in a paragraph that is not in a list will inherit its text style
+                            #   from the the newline character in the paragraph at the 0 nesting level of
+                            #   the list inside the parent placeholder.
+                            # * A text run in a paragraph that is in a list will inherit its text style
+                            #   from the newline character in the paragraph at its corresponding nesting
+                            #   level of the list inside the parent placeholder.
+                            #
+                            # Inherited text styles are represented as unset fields in this message. If
+                            # text is contained in a shape without a parent placeholder, unsetting these
+                            # fields will revert the style to a value matching the defaults in the Slides
+                            # editor.
+                          "foregroundColor": { # A color that can either be fully opaque or fully transparent. # The color of the text itself. If set, the color is either opaque or
+                              # transparent, depending on if the `opaque_color` field in it is set.
+                            "opaqueColor": { # A themeable solid color value. # If set, this will be used as an opaque color. If unset, this represents
+                                # a transparent color.
+                              "themeColor": "A String", # An opaque theme color.
+                              "rgbColor": { # An RGB color. # An opaque RGB color.
+                                "blue": 3.14, # The blue component of the color, from 0.0 to 1.0.
+                                "green": 3.14, # The green component of the color, from 0.0 to 1.0.
+                                "red": 3.14, # The red component of the color, from 0.0 to 1.0.
+                              },
+                            },
+                          },
+                          "bold": True or False, # Whether or not the text is bold.
+                          "baselineOffset": "A String", # The text's vertical offset from its normal position.
+                              #
+                              # Text with `SUPERSCRIPT` or `SUBSCRIPT` baseline offsets is automatically
+                              # rendered in a smaller font size, computed based on the `font_size` field.
+                              # The `font_size` itself is not affected by changes in this field.
+                          "strikethrough": True or False, # Whether or not the text is struck through.
+                          "smallCaps": True or False, # Whether or not the text is in small capital letters.
+                          "fontFamily": "A String", # The font family of the text.
+                              #
+                              # The font family can be any font from the Font menu in Slides or from
+                              # [Google Fonts] (https://fonts.google.com/). If the font name is
+                              # unrecognized, the text is rendered in `Arial`.
+                              #
+                              # Some fonts can affect the weight of the text. If an update request
+                              # specifies values for both `font_family` and `bold`, the explicitly-set
+                              # `bold` value is used.
+                          "link": { # A hypertext link. # The hyperlink destination of the text. If unset, there is no link. Links
+                              # are not inherited from parent text.
+                              #
+                              # Changing the link in an update request causes some other changes to the
+                              # text style of the range:
+                              #
+                              # * When setting a link, the text foreground color will be set to
+                              #   ThemeColorType.HYPERLINK and the text will
+                              #   be underlined. If these fields are modified in the same
+                              #   request, those values will be used instead of the link defaults.
+                              # * Setting a link on a text range that overlaps with an existing link will
+                              #   also update the existing link to point to the new URL.
+                              # * Links are not settable on newline characters. As a result, setting a link
+                              #   on a text range that crosses a paragraph boundary, such as `"ABC\n123"`,
+                              #   will separate the newline character(s) into their own text runs. The
+                              #   link will be applied separately to the runs before and after the newline.
+                              # * Removing a link will update the text style of the range to match the
+                              #   style of the preceding text (or the default text styles if the preceding
+                              #   text is another link) unless different styles are being set in the same
+                              #   request.
+                            "url": "A String", # If set, indicates this is a link to the external web page at this URL.
+                            "pageObjectId": "A String", # If set, indicates this is a link to the specific page in this
+                                # presentation with this ID. A page with this ID may not exist.
+                            "slideIndex": 42, # If set, indicates this is a link to the slide at this zero-based index
+                                # in the presentation. There may not be a slide at this index.
+                            "relativeLink": "A String", # If set, indicates this is a link to a slide in this presentation,
+                                # addressed by its position.
+                          },
+                          "italic": True or False, # Whether or not the text is italicized.
+                          "fontSize": { # A magnitude in a single direction in the specified units. # The size of the text's font. When read, the `font_size` will specified in
+                              # points.
+                            "magnitude": 3.14, # The magnitude.
+                            "unit": "A String", # The units for magnitude.
+                          },
+                          "underline": True or False, # Whether or not the text is underlined.
+                          "backgroundColor": { # A color that can either be fully opaque or fully transparent. # The background color of the text. If set, the color is either opaque or
+                              # transparent, depending on if the `opaque_color` field in it is set.
+                            "opaqueColor": { # A themeable solid color value. # If set, this will be used as an opaque color. If unset, this represents
+                                # a transparent color.
+                              "themeColor": "A String", # An opaque theme color.
+                              "rgbColor": { # An RGB color. # An opaque RGB color.
+                                "blue": 3.14, # The blue component of the color, from 0.0 to 1.0.
+                                "green": 3.14, # The green component of the color, from 0.0 to 1.0.
+                                "red": 3.14, # The red component of the color, from 0.0 to 1.0.
+                              },
+                            },
+                          },
+                        },
+                      },
+                    },
+                    "listId": "A String", # The ID of the list.
+                  },
+                },
+              },
+              "shapeProperties": { # The properties of a Shape. # The properties of the shape.
+                  #
+                  # If the shape is a placeholder shape as determined by the
+                  # placeholder field, then these
+                  # properties may be inherited from a parent placeholder shape.
+                  # Determining the rendered value of the property depends on the corresponding
+                  # property_state field value.
+                "shadow": { # The shadow properties of a page element. # The shadow properties of the shape. If unset, the shadow is inherited from
+                    # a parent placeholder if it exists. If the shape has no parent, then the
+                    # default shadow matches the defaults for new shapes created in the Slides
+                    # editor. This property is read-only.
+                    #
+                    # If these fields are unset, they may be inherited from a parent placeholder
+                    # if it exists. If there is no parent, the fields will default to the value
+                    # used for new page elements created in the Slides editor, which may depend on
+                    # the page element kind.
+                  "color": { # A themeable solid color value. # The shadow color value.
+                    "themeColor": "A String", # An opaque theme color.
+                    "rgbColor": { # An RGB color. # An opaque RGB color.
+                      "blue": 3.14, # The blue component of the color, from 0.0 to 1.0.
+                      "green": 3.14, # The green component of the color, from 0.0 to 1.0.
+                      "red": 3.14, # The red component of the color, from 0.0 to 1.0.
+                    },
+                  },
+                  "transform": { # AffineTransform uses a 3x3 matrix with an implied last row of [ 0 0 1 ] # Transform that encodes the translate, scale, and skew of the shadow,
+                      # relative to the alignment position.
+                      # to transform source coordinates (x,y) into destination coordinates (x', y')
+                      # according to:
+                      #
+                      #       x'  x  =   shear_y  scale_y  translate_y
+                      #       1  [ 1 ]
+                      #
+                      # After transformation,
+                      #
+                      #      x' = scale_x * x + shear_x * y + translate_x;
+                      #      y' = scale_y * y + shear_y * x + translate_y;
+                      #
+                      # This message is therefore composed of these six matrix elements.
+                    "translateX": 3.14, # The X coordinate translation element.
+                    "translateY": 3.14, # The Y coordinate translation element.
+                    "scaleX": 3.14, # The X coordinate scaling element.
+                    "scaleY": 3.14, # The Y coordinate scaling element.
+                    "shearY": 3.14, # The Y coordinate shearing element.
+                    "shearX": 3.14, # The X coordinate shearing element.
+                    "unit": "A String", # The units for translate elements.
+                  },
+                  "propertyState": "A String", # The shadow property state.
+                      #
+                      # Updating the the shadow on a page element will implicitly update this field
+                      # to `RENDERED`, unless another value is specified in the same request. To
+                      # have no shadow on a page element, set this field to `NOT_RENDERED`. In this
+                      # case, any other shadow fields set in the same request will be ignored.
+                  "blurRadius": { # A magnitude in a single direction in the specified units. # The radius of the shadow blur. The larger the radius, the more diffuse the
+                      # shadow becomes.
+                    "magnitude": 3.14, # The magnitude.
+                    "unit": "A String", # The units for magnitude.
+                  },
+                  "alpha": 3.14, # The alpha of the shadow's color, from 0.0 to 1.0.
+                  "type": "A String", # The type of the shadow.
+                  "alignment": "A String", # The alignment point of the shadow, that sets the origin for translate,
+                      # scale and skew of the shadow.
+                  "rotateWithShape": True or False, # Whether the shadow should rotate with the shape.
+                },
+                "shapeBackgroundFill": { # The shape background fill. # The background fill of the shape. If unset, the background fill is
+                    # inherited from a parent placeholder if it exists. If the shape has no
+                    # parent, then the default background fill depends on the shape type,
+                    # matching the defaults for new shapes created in the Slides editor.
+                  "solidFill": { # A solid color fill. The page or page element is filled entirely with the # Solid color fill.
+                      # specified color value.
+                      #
+                      # If any field is unset, its value may be inherited from a parent placeholder
+                      # if it exists.
+                    "color": { # A themeable solid color value. # The color value of the solid fill.
+                      "themeColor": "A String", # An opaque theme color.
+                      "rgbColor": { # An RGB color. # An opaque RGB color.
+                        "blue": 3.14, # The blue component of the color, from 0.0 to 1.0.
+                        "green": 3.14, # The green component of the color, from 0.0 to 1.0.
+                        "red": 3.14, # The red component of the color, from 0.0 to 1.0.
+                      },
+                    },
+                    "alpha": 3.14, # The fraction of this `color` that should be applied to the pixel.
+                        # That is, the final pixel color is defined by the equation:
+                        #
+                        #   pixel color = alpha * (color) + (1.0 - alpha) * (background color)
+                        #
+                        # This means that a value of 1.0 corresponds to a solid color, whereas
+                        # a value of 0.0 corresponds to a completely transparent color.
+                  },
+                  "propertyState": "A String", # The background fill property state.
+                      #
+                      # Updating the the fill on a shape will implicitly update this field to
+                      # `RENDERED`, unless another value is specified in the same request. To
+                      # have no fill on a shape, set this field to `NOT_RENDERED`. In this case,
+                      # any other fill fields set in the same request will be ignored.
+                },
+                "link": { # A hypertext link. # The hyperlink destination of the shape. If unset, there is no link. Links
+                    # are not inherited from parent placeholders.
+                  "url": "A String", # If set, indicates this is a link to the external web page at this URL.
+                  "pageObjectId": "A String", # If set, indicates this is a link to the specific page in this
+                      # presentation with this ID. A page with this ID may not exist.
+                  "slideIndex": 42, # If set, indicates this is a link to the slide at this zero-based index
+                      # in the presentation. There may not be a slide at this index.
+                  "relativeLink": "A String", # If set, indicates this is a link to a slide in this presentation,
+                      # addressed by its position.
+                },
+                "outline": { # The outline of a PageElement. # The outline of the shape. If unset, the outline is inherited from a
+                    # parent placeholder if it exists. If the shape has no parent, then the
+                    # default outline depends on the shape type, matching the defaults for
+                    # new shapes created in the Slides editor.
+                    #
+                    # If these fields are unset, they may be inherited from a parent placeholder
+                    # if it exists. If there is no parent, the fields will default to the value
+                    # used for new page elements created in the Slides editor, which may depend on
+                    # the page element kind.
+                  "dashStyle": "A String", # The dash style of the outline.
+                  "propertyState": "A String", # The outline property state.
+                      #
+                      # Updating the the outline on a page element will implicitly update this
+                      # field to`RENDERED`, unless another value is specified in the same request.
+                      # To have no outline on a page element, set this field to `NOT_RENDERED`. In
+                      # this case, any other outline fields set in the same request will be
+                      # ignored.
+                  "outlineFill": { # The fill of the outline. # The fill of the outline.
+                    "solidFill": { # A solid color fill. The page or page element is filled entirely with the # Solid color fill.
+                        # specified color value.
+                        #
+                        # If any field is unset, its value may be inherited from a parent placeholder
+                        # if it exists.
+                      "color": { # A themeable solid color value. # The color value of the solid fill.
+                        "themeColor": "A String", # An opaque theme color.
+                        "rgbColor": { # An RGB color. # An opaque RGB color.
+                          "blue": 3.14, # The blue component of the color, from 0.0 to 1.0.
+                          "green": 3.14, # The green component of the color, from 0.0 to 1.0.
+                          "red": 3.14, # The red component of the color, from 0.0 to 1.0.
+                        },
+                      },
+                      "alpha": 3.14, # The fraction of this `color` that should be applied to the pixel.
+                          # That is, the final pixel color is defined by the equation:
+                          #
+                          #   pixel color = alpha * (color) + (1.0 - alpha) * (background color)
+                          #
+                          # This means that a value of 1.0 corresponds to a solid color, whereas
+                          # a value of 0.0 corresponds to a completely transparent color.
+                    },
+                  },
+                  "weight": { # A magnitude in a single direction in the specified units. # The thickness of the outline.
+                    "magnitude": 3.14, # The magnitude.
+                    "unit": "A String", # The units for magnitude.
+                  },
+                },
+              },
+              "placeholder": { # The placeholder information that uniquely identifies a placeholder shape. # Placeholders are shapes that are inherit from corresponding placeholders on
+                  # layouts and masters.
+                  #
+                  # If set, the shape is a placeholder shape and any inherited properties
+                  # can be resolved by looking at the parent placeholder identified by the
+                  # Placeholder.parent_object_id field.
+                "parentObjectId": "A String", # The object ID of this shape's parent placeholder.
+                    # If unset, the parent placeholder shape does not exist, so the shape does
+                    # not inherit properties from any other shape.
+                "index": 42, # The index of the placeholder. If the same placeholder types are the present
+                    # in the same page, they would have different index values.
+                "type": "A String", # The type of the placeholder.
+              },
+              "shapeType": "A String", # The type of the shape.
+            },
+            "sheetsChart": { # A PageElement kind representing # A linked chart embedded from Google Sheets. Unlinked charts are
+                # represented as images.
+                # a linked chart embedded from Google Sheets.
+              "chartId": 42, # The ID of the specific chart in the Google Sheets spreadsheet that is
+                  # embedded.
+              "spreadsheetId": "A String", # The ID of the Google Sheets spreadsheet that contains the source chart.
+              "sheetsChartProperties": { # The properties of the SheetsChart. # The properties of the Sheets chart.
+                "chartImageProperties": { # The properties of the Image. # The properties of the embedded chart image.
+                  "outline": { # The outline of a PageElement. # The outline of the image. If not set, the the image has no outline.
+                      #
+                      # If these fields are unset, they may be inherited from a parent placeholder
+                      # if it exists. If there is no parent, the fields will default to the value
+                      # used for new page elements created in the Slides editor, which may depend on
+                      # the page element kind.
+                    "dashStyle": "A String", # The dash style of the outline.
+                    "propertyState": "A String", # The outline property state.
+                        #
+                        # Updating the the outline on a page element will implicitly update this
+                        # field to`RENDERED`, unless another value is specified in the same request.
+                        # To have no outline on a page element, set this field to `NOT_RENDERED`. In
+                        # this case, any other outline fields set in the same request will be
+                        # ignored.
+                    "outlineFill": { # The fill of the outline. # The fill of the outline.
+                      "solidFill": { # A solid color fill. The page or page element is filled entirely with the # Solid color fill.
+                          # specified color value.
+                          #
+                          # If any field is unset, its value may be inherited from a parent placeholder
+                          # if it exists.
+                        "color": { # A themeable solid color value. # The color value of the solid fill.
+                          "themeColor": "A String", # An opaque theme color.
+                          "rgbColor": { # An RGB color. # An opaque RGB color.
+                            "blue": 3.14, # The blue component of the color, from 0.0 to 1.0.
+                            "green": 3.14, # The green component of the color, from 0.0 to 1.0.
+                            "red": 3.14, # The red component of the color, from 0.0 to 1.0.
+                          },
+                        },
+                        "alpha": 3.14, # The fraction of this `color` that should be applied to the pixel.
+                            # That is, the final pixel color is defined by the equation:
+                            #
+                            #   pixel color = alpha * (color) + (1.0 - alpha) * (background color)
+                            #
+                            # This means that a value of 1.0 corresponds to a solid color, whereas
+                            # a value of 0.0 corresponds to a completely transparent color.
+                      },
+                    },
+                    "weight": { # A magnitude in a single direction in the specified units. # The thickness of the outline.
+                      "magnitude": 3.14, # The magnitude.
+                      "unit": "A String", # The units for magnitude.
+                    },
+                  },
+                  "brightness": 3.14, # The brightness effect of the image. The value should be in the interval
+                      # [-1.0, 1.0], where 0 means no effect. This property is read-only.
+                  "recolor": { # A recolor effect applied on an image. # The recolor effect of the image. If not set, the image is not recolored.
+                      # This property is read-only.
+                    "recolorStops": [ # The recolor effect is represented by a gradient, which is a list of color
+                        # stops. This property is read-only.
+                      { # A color and position in a gradient band.
+                        "color": { # A themeable solid color value. # The color of the gradient stop.
+                          "themeColor": "A String", # An opaque theme color.
+                          "rgbColor": { # An RGB color. # An opaque RGB color.
+                            "blue": 3.14, # The blue component of the color, from 0.0 to 1.0.
+                            "green": 3.14, # The green component of the color, from 0.0 to 1.0.
+                            "red": 3.14, # The red component of the color, from 0.0 to 1.0.
+                          },
+                        },
+                        "position": 3.14, # The relative position of the color stop in the gradient band measured
+                            # in percentage. The value should be in the interval [0.0, 1.0].
+                        "alpha": 3.14, # The alpha value of this color in the gradient band. Defaults to 1.0,
+                            # fully opaque.
+                      },
+                    ],
+                  },
+                  "link": { # A hypertext link. # The hyperlink destination of the image. If unset, there is no link.
+                    "url": "A String", # If set, indicates this is a link to the external web page at this URL.
+                    "pageObjectId": "A String", # If set, indicates this is a link to the specific page in this
+                        # presentation with this ID. A page with this ID may not exist.
+                    "slideIndex": 42, # If set, indicates this is a link to the slide at this zero-based index
+                        # in the presentation. There may not be a slide at this index.
+                    "relativeLink": "A String", # If set, indicates this is a link to a slide in this presentation,
+                        # addressed by its position.
+                  },
+                  "transparency": 3.14, # The transparency effect of the image. The value should be in the interval
+                      # [0.0, 1.0], where 0 means no effect and 1 means completely transparent.
+                      # This property is read-only.
+                  "cropProperties": { # The crop properties of an object enclosed in a container. For example, an # The crop properties of the image. If not set, the image is not cropped.
+                      # This property is read-only.
+                      # Image.
+                      #
+                      # The crop properties is represented by the offsets of four edges which define
+                      # a crop rectangle. The offsets are measured in percentage from the
+                      # corresponding edges of the object's original bounding rectangle towards
+                      # inside, relative to the object's original dimensions.
+                      #
+                      # - If the offset is in the interval (0, 1), the corresponding edge of crop
+                      # rectangle is positioned inside of the object's original bounding rectangle.
+                      # - If the offset is negative or greater than 1, the corresponding edge of crop
+                      # rectangle is positioned outside of the object's original bounding rectangle.
+                      # - If the left edge of the crop rectangle is on the right side of its right
+                      # edge, the object will be flipped horizontally.
+                      # - If the top edge of the crop rectangle is below its bottom edge, the object
+                      # will be flipped vertically.
+                      # - If all offsets and rotation angle is 0, the object is not cropped.
+                      #
+                      # After cropping, the content in the crop rectangle will be stretched to fit
+                      # its container.
+                    "leftOffset": 3.14, # The offset specifies the left edge of the crop rectangle that is located to
+                        # the right of the original bounding rectangle left edge, relative to the
+                        # object's original width.
+                    "angle": 3.14, # The rotation angle of the crop window around its center, in radians.
+                        # Rotation angle is applied after the offset.
+                    "bottomOffset": 3.14, # The offset specifies the bottom edge of the crop rectangle that is located
+                        # above the original bounding rectangle bottom edge, relative to the object's
+                        # original height.
+                    "rightOffset": 3.14, # The offset specifies the right edge of the crop rectangle that is located
+                        # to the left of the original bounding rectangle right edge, relative to the
+                        # object's original width.
+                    "topOffset": 3.14, # The offset specifies the top edge of the crop rectangle that is located
+                        # below the original bounding rectangle top edge, relative to the object's
+                        # original height.
+                  },
+                  "shadow": { # The shadow properties of a page element. # The shadow of the image. If not set, the image has no shadow. This property
+                      # is read-only.
+                      #
+                      # If these fields are unset, they may be inherited from a parent placeholder
+                      # if it exists. If there is no parent, the fields will default to the value
+                      # used for new page elements created in the Slides editor, which may depend on
+                      # the page element kind.
+                    "color": { # A themeable solid color value. # The shadow color value.
+                      "themeColor": "A String", # An opaque theme color.
+                      "rgbColor": { # An RGB color. # An opaque RGB color.
+                        "blue": 3.14, # The blue component of the color, from 0.0 to 1.0.
+                        "green": 3.14, # The green component of the color, from 0.0 to 1.0.
+                        "red": 3.14, # The red component of the color, from 0.0 to 1.0.
+                      },
+                    },
+                    "transform": { # AffineTransform uses a 3x3 matrix with an implied last row of [ 0 0 1 ] # Transform that encodes the translate, scale, and skew of the shadow,
+                        # relative to the alignment position.
+                        # to transform source coordinates (x,y) into destination coordinates (x', y')
+                        # according to:
+                        #
+                        #       x'  x  =   shear_y  scale_y  translate_y
+                        #       1  [ 1 ]
+                        #
+                        # After transformation,
+                        #
+                        #      x' = scale_x * x + shear_x * y + translate_x;
+                        #      y' = scale_y * y + shear_y * x + translate_y;
+                        #
+                        # This message is therefore composed of these six matrix elements.
+                      "translateX": 3.14, # The X coordinate translation element.
+                      "translateY": 3.14, # The Y coordinate translation element.
+                      "scaleX": 3.14, # The X coordinate scaling element.
+                      "scaleY": 3.14, # The Y coordinate scaling element.
+                      "shearY": 3.14, # The Y coordinate shearing element.
+                      "shearX": 3.14, # The X coordinate shearing element.
+                      "unit": "A String", # The units for translate elements.
+                    },
+                    "propertyState": "A String", # The shadow property state.
+                        #
+                        # Updating the the shadow on a page element will implicitly update this field
+                        # to `RENDERED`, unless another value is specified in the same request. To
+                        # have no shadow on a page element, set this field to `NOT_RENDERED`. In this
+                        # case, any other shadow fields set in the same request will be ignored.
+                    "blurRadius": { # A magnitude in a single direction in the specified units. # The radius of the shadow blur. The larger the radius, the more diffuse the
+                        # shadow becomes.
+                      "magnitude": 3.14, # The magnitude.
+                      "unit": "A String", # The units for magnitude.
+                    },
+                    "alpha": 3.14, # The alpha of the shadow's color, from 0.0 to 1.0.
+                    "type": "A String", # The type of the shadow.
+                    "alignment": "A String", # The alignment point of the shadow, that sets the origin for translate,
+                        # scale and skew of the shadow.
+                    "rotateWithShape": True or False, # Whether the shadow should rotate with the shape.
+                  },
+                  "contrast": 3.14, # The contrast effect of the image. The value should be in the interval
+                      # [-1.0, 1.0], where 0 means no effect. This property is read-only.
+                },
+              },
+              "contentUrl": "A String", # The URL of an image of the embedded chart, with a default lifetime of 30
+                  # minutes. This URL is tagged with the account of the requester. Anyone with
+                  # the URL effectively accesses the image as the original requester. Access to
+                  # the image may be lost if the presentation's sharing settings change.
+            },
+            "video": { # A PageElement kind representing a # A video page element.
+                # video.
+              "url": "A String", # An URL to a video. The URL is valid as long as the source video
+                  # exists and sharing settings do not change.
+              "videoProperties": { # The properties of the Video. # The properties of the video.
+                "outline": { # The outline of a PageElement. # The outline of the video. The default outline matches the defaults for new
+                    # videos created in the Slides editor.
+                    #
+                    # If these fields are unset, they may be inherited from a parent placeholder
+                    # if it exists. If there is no parent, the fields will default to the value
+                    # used for new page elements created in the Slides editor, which may depend on
+                    # the page element kind.
+                  "dashStyle": "A String", # The dash style of the outline.
+                  "propertyState": "A String", # The outline property state.
+                      #
+                      # Updating the the outline on a page element will implicitly update this
+                      # field to`RENDERED`, unless another value is specified in the same request.
+                      # To have no outline on a page element, set this field to `NOT_RENDERED`. In
+                      # this case, any other outline fields set in the same request will be
+                      # ignored.
+                  "outlineFill": { # The fill of the outline. # The fill of the outline.
+                    "solidFill": { # A solid color fill. The page or page element is filled entirely with the # Solid color fill.
+                        # specified color value.
+                        #
+                        # If any field is unset, its value may be inherited from a parent placeholder
+                        # if it exists.
+                      "color": { # A themeable solid color value. # The color value of the solid fill.
+                        "themeColor": "A String", # An opaque theme color.
+                        "rgbColor": { # An RGB color. # An opaque RGB color.
+                          "blue": 3.14, # The blue component of the color, from 0.0 to 1.0.
+                          "green": 3.14, # The green component of the color, from 0.0 to 1.0.
+                          "red": 3.14, # The red component of the color, from 0.0 to 1.0.
+                        },
+                      },
+                      "alpha": 3.14, # The fraction of this `color` that should be applied to the pixel.
+                          # That is, the final pixel color is defined by the equation:
+                          #
+                          #   pixel color = alpha * (color) + (1.0 - alpha) * (background color)
+                          #
+                          # This means that a value of 1.0 corresponds to a solid color, whereas
+                          # a value of 0.0 corresponds to a completely transparent color.
+                    },
+                  },
+                  "weight": { # A magnitude in a single direction in the specified units. # The thickness of the outline.
+                    "magnitude": 3.14, # The magnitude.
+                    "unit": "A String", # The units for magnitude.
+                  },
+                },
+              },
+              "id": "A String", # The video source's unique identifier for this video.
+              "source": "A String", # The video source.
+            },
+            "table": { # A PageElement kind representing a # A table page element.
+                # table.
+              "tableColumns": [ # Properties of each column.
+                { # Properties of each column in a table.
+                  "columnWidth": { # A magnitude in a single direction in the specified units. # Width of a column.
+                    "magnitude": 3.14, # The magnitude.
+                    "unit": "A String", # The units for magnitude.
+                  },
+                },
+              ],
+              "tableRows": [ # Properties and contents of each row.
+                  #
+                  # Cells that span multiple rows are contained in only one of these rows and
+                  # have a row_span greater
+                  # than 1.
+                { # Properties and contents of each row in a table.
+                  "tableCells": [ # Properties and contents of each cell.
+                      #
+                      # Cells that span multiple columns are represented only once with a
+                      # column_span greater
+                      # than 1. As a result, the length of this collection does not always match
+                      # the number of columns of the entire table.
+                    { # Properties and contents of each table cell.
+                      "text": { # The general text content. The text must reside in a compatible shape (e.g. # The text content of the cell.
+                          # text box or rectangle) or a table cell in a page.
+                        "textElements": [ # The text contents broken down into its component parts, including styling
+                            # information. This property is read-only.
+                          { # A TextElement describes the content of a range of indices in the text content
+                              # of a Shape or TableCell.
+                            "autoText": { # A TextElement kind that represents auto text. # A TextElement representing a spot in the text that is dynamically
+                                # replaced with content that can change over time.
+                              "content": "A String", # The rendered content of this auto text, if available.
+                              "style": { # Represents the styling that can be applied to a TextRun. # The styling applied to this auto text.
+                                  #
+                                  # If this text is contained in a shape with a parent placeholder, then these text styles may be
+                                  # inherited from the parent. Which text styles are inherited depend on the
+                                  # nesting level of lists:
+                                  #
+                                  # * A text run in a paragraph that is not in a list will inherit its text style
+                                  #   from the the newline character in the paragraph at the 0 nesting level of
+                                  #   the list inside the parent placeholder.
+                                  # * A text run in a paragraph that is in a list will inherit its text style
+                                  #   from the newline character in the paragraph at its corresponding nesting
+                                  #   level of the list inside the parent placeholder.
+                                  #
+                                  # Inherited text styles are represented as unset fields in this message. If
+                                  # text is contained in a shape without a parent placeholder, unsetting these
+                                  # fields will revert the style to a value matching the defaults in the Slides
+                                  # editor.
+                                "foregroundColor": { # A color that can either be fully opaque or fully transparent. # The color of the text itself. If set, the color is either opaque or
+                                    # transparent, depending on if the `opaque_color` field in it is set.
+                                  "opaqueColor": { # A themeable solid color value. # If set, this will be used as an opaque color. If unset, this represents
+                                      # a transparent color.
+                                    "themeColor": "A String", # An opaque theme color.
+                                    "rgbColor": { # An RGB color. # An opaque RGB color.
+                                      "blue": 3.14, # The blue component of the color, from 0.0 to 1.0.
+                                      "green": 3.14, # The green component of the color, from 0.0 to 1.0.
+                                      "red": 3.14, # The red component of the color, from 0.0 to 1.0.
+                                    },
+                                  },
+                                },
+                                "bold": True or False, # Whether or not the text is bold.
+                                "baselineOffset": "A String", # The text's vertical offset from its normal position.
+                                    #
+                                    # Text with `SUPERSCRIPT` or `SUBSCRIPT` baseline offsets is automatically
+                                    # rendered in a smaller font size, computed based on the `font_size` field.
+                                    # The `font_size` itself is not affected by changes in this field.
+                                "strikethrough": True or False, # Whether or not the text is struck through.
+                                "smallCaps": True or False, # Whether or not the text is in small capital letters.
+                                "fontFamily": "A String", # The font family of the text.
+                                    #
+                                    # The font family can be any font from the Font menu in Slides or from
+                                    # [Google Fonts] (https://fonts.google.com/). If the font name is
+                                    # unrecognized, the text is rendered in `Arial`.
+                                    #
+                                    # Some fonts can affect the weight of the text. If an update request
+                                    # specifies values for both `font_family` and `bold`, the explicitly-set
+                                    # `bold` value is used.
+                                "link": { # A hypertext link. # The hyperlink destination of the text. If unset, there is no link. Links
+                                    # are not inherited from parent text.
+                                    #
+                                    # Changing the link in an update request causes some other changes to the
+                                    # text style of the range:
+                                    #
+                                    # * When setting a link, the text foreground color will be set to
+                                    #   ThemeColorType.HYPERLINK and the text will
+                                    #   be underlined. If these fields are modified in the same
+                                    #   request, those values will be used instead of the link defaults.
+                                    # * Setting a link on a text range that overlaps with an existing link will
+                                    #   also update the existing link to point to the new URL.
+                                    # * Links are not settable on newline characters. As a result, setting a link
+                                    #   on a text range that crosses a paragraph boundary, such as `"ABC\n123"`,
+                                    #   will separate the newline character(s) into their own text runs. The
+                                    #   link will be applied separately to the runs before and after the newline.
+                                    # * Removing a link will update the text style of the range to match the
+                                    #   style of the preceding text (or the default text styles if the preceding
+                                    #   text is another link) unless different styles are being set in the same
+                                    #   request.
+                                  "url": "A String", # If set, indicates this is a link to the external web page at this URL.
+                                  "pageObjectId": "A String", # If set, indicates this is a link to the specific page in this
+                                      # presentation with this ID. A page with this ID may not exist.
+                                  "slideIndex": 42, # If set, indicates this is a link to the slide at this zero-based index
+                                      # in the presentation. There may not be a slide at this index.
+                                  "relativeLink": "A String", # If set, indicates this is a link to a slide in this presentation,
+                                      # addressed by its position.
+                                },
+                                "italic": True or False, # Whether or not the text is italicized.
+                                "fontSize": { # A magnitude in a single direction in the specified units. # The size of the text's font. When read, the `font_size` will specified in
+                                    # points.
+                                  "magnitude": 3.14, # The magnitude.
+                                  "unit": "A String", # The units for magnitude.
+                                },
+                                "underline": True or False, # Whether or not the text is underlined.
+                                "backgroundColor": { # A color that can either be fully opaque or fully transparent. # The background color of the text. If set, the color is either opaque or
+                                    # transparent, depending on if the `opaque_color` field in it is set.
+                                  "opaqueColor": { # A themeable solid color value. # If set, this will be used as an opaque color. If unset, this represents
+                                      # a transparent color.
+                                    "themeColor": "A String", # An opaque theme color.
+                                    "rgbColor": { # An RGB color. # An opaque RGB color.
+                                      "blue": 3.14, # The blue component of the color, from 0.0 to 1.0.
+                                      "green": 3.14, # The green component of the color, from 0.0 to 1.0.
+                                      "red": 3.14, # The red component of the color, from 0.0 to 1.0.
+                                    },
+                                  },
+                                },
+                              },
+                              "type": "A String", # The type of this auto text.
+                            },
+                            "endIndex": 42, # The zero-based end index of this text element, exclusive, in Unicode code
+                                # units.
+                            "startIndex": 42, # The zero-based start index of this text element, in Unicode code units.
+                            "paragraphMarker": { # A TextElement kind that represents the beginning of a new paragraph. # A marker representing the beginning of a new paragraph.
+                                #
+                                # The `start_index` and `end_index` of this TextElement represent the
+                                # range of the paragraph. Other TextElements with an index range contained
+                                # inside this paragraph's range are considered to be part of this
+                                # paragraph. The range of indices of two separate paragraphs will never
+                                # overlap.
+                              "style": { # Styles that apply to a whole paragraph. # The paragraph's style
+                                  #
+                                  # If this text is contained in a shape with a parent placeholder, then these paragraph styles may be
+                                  # inherited from the parent. Which paragraph styles are inherited depend on the
+                                  # nesting level of lists:
+                                  #
+                                  # * A paragraph not in a list will inherit its paragraph style from the
+                                  #   paragraph at the 0 nesting level of the list inside the parent placeholder.
+                                  # * A paragraph in a list will inherit its paragraph style from the paragraph
+                                  #   at its corresponding nesting level of the list inside the parent
+                                  #   placeholder.
+                                  #
+                                  # Inherited paragraph styles are represented as unset fields in this message.
+                                "spacingMode": "A String", # The spacing mode for the paragraph. This property is read-only.
+                                "direction": "A String", # The text direction of this paragraph. This property is read-only.
+                                "spaceBelow": { # A magnitude in a single direction in the specified units. # The amount of extra space above the paragraph. If unset, the value is
+                                    # inherited from the parent. This property is read-only.
+                                  "magnitude": 3.14, # The magnitude.
+                                  "unit": "A String", # The units for magnitude.
+                                },
+                                "lineSpacing": 3.14, # The amount of space between lines, as a percentage of normal, where normal
+                                    # is represented as 100.0. If unset, the value is inherited from the parent.
+                                    # This property is read-only.
+                                "indentStart": { # A magnitude in a single direction in the specified units. # The amount indentation for the paragraph on the side that corresponds to
+                                    # the start of the text, based on the current text direction. If unset, the
+                                    # value is inherited from the parent. This property is read-only.
+                                  "magnitude": 3.14, # The magnitude.
+                                  "unit": "A String", # The units for magnitude.
+                                },
+                                "spaceAbove": { # A magnitude in a single direction in the specified units. # The amount of extra space above the paragraph. If unset, the value is
+                                    # inherited from the parent. This property is read-only.
+                                  "magnitude": 3.14, # The magnitude.
+                                  "unit": "A String", # The units for magnitude.
+                                },
+                                "indentEnd": { # A magnitude in a single direction in the specified units. # The amount indentation for the paragraph on the side that corresponds to
+                                    # the end of the text, based on the current text direction. If unset, the
+                                    # value is inherited from the parent. This property is read-only.
+                                  "magnitude": 3.14, # The magnitude.
+                                  "unit": "A String", # The units for magnitude.
+                                },
+                                "indentFirstLine": { # A magnitude in a single direction in the specified units. # The amount of indentation for the start of the first line of the paragraph.
+                                    # If unset, the value is inherited from the parent. This property is
+                                    # read-only.
+                                  "magnitude": 3.14, # The magnitude.
+                                  "unit": "A String", # The units for magnitude.
+                                },
+                                "alignment": "A String", # The text alignment for this paragraph. This property is read-only.
+                              },
+                              "bullet": { # Describes the bullet of a paragraph. # The bullet for this paragraph. If not present, the paragraph does not
+                                  # belong to a list.
+                                "nestingLevel": 42, # The nesting level of this paragraph in the list.
+                                "listId": "A String", # The ID of the list this paragraph belongs to.
+                                "bulletStyle": { # Represents the styling that can be applied to a TextRun. # The paragraph specific text style applied to this bullet.
+                                    #
+                                    # If this text is contained in a shape with a parent placeholder, then these text styles may be
+                                    # inherited from the parent. Which text styles are inherited depend on the
+                                    # nesting level of lists:
+                                    #
+                                    # * A text run in a paragraph that is not in a list will inherit its text style
+                                    #   from the the newline character in the paragraph at the 0 nesting level of
+                                    #   the list inside the parent placeholder.
+                                    # * A text run in a paragraph that is in a list will inherit its text style
+                                    #   from the newline character in the paragraph at its corresponding nesting
+                                    #   level of the list inside the parent placeholder.
+                                    #
+                                    # Inherited text styles are represented as unset fields in this message. If
+                                    # text is contained in a shape without a parent placeholder, unsetting these
+                                    # fields will revert the style to a value matching the defaults in the Slides
+                                    # editor.
+                                  "foregroundColor": { # A color that can either be fully opaque or fully transparent. # The color of the text itself. If set, the color is either opaque or
+                                      # transparent, depending on if the `opaque_color` field in it is set.
+                                    "opaqueColor": { # A themeable solid color value. # If set, this will be used as an opaque color. If unset, this represents
+                                        # a transparent color.
+                                      "themeColor": "A String", # An opaque theme color.
+                                      "rgbColor": { # An RGB color. # An opaque RGB color.
+                                        "blue": 3.14, # The blue component of the color, from 0.0 to 1.0.
+                                        "green": 3.14, # The green component of the color, from 0.0 to 1.0.
+                                        "red": 3.14, # The red component of the color, from 0.0 to 1.0.
+                                      },
+                                    },
+                                  },
+                                  "bold": True or False, # Whether or not the text is bold.
+                                  "baselineOffset": "A String", # The text's vertical offset from its normal position.
+                                      #
+                                      # Text with `SUPERSCRIPT` or `SUBSCRIPT` baseline offsets is automatically
+                                      # rendered in a smaller font size, computed based on the `font_size` field.
+                                      # The `font_size` itself is not affected by changes in this field.
+                                  "strikethrough": True or False, # Whether or not the text is struck through.
+                                  "smallCaps": True or False, # Whether or not the text is in small capital letters.
+                                  "fontFamily": "A String", # The font family of the text.
+                                      #
+                                      # The font family can be any font from the Font menu in Slides or from
+                                      # [Google Fonts] (https://fonts.google.com/). If the font name is
+                                      # unrecognized, the text is rendered in `Arial`.
+                                      #
+                                      # Some fonts can affect the weight of the text. If an update request
+                                      # specifies values for both `font_family` and `bold`, the explicitly-set
+                                      # `bold` value is used.
+                                  "link": { # A hypertext link. # The hyperlink destination of the text. If unset, there is no link. Links
+                                      # are not inherited from parent text.
+                                      #
+                                      # Changing the link in an update request causes some other changes to the
+                                      # text style of the range:
+                                      #
+                                      # * When setting a link, the text foreground color will be set to
+                                      #   ThemeColorType.HYPERLINK and the text will
+                                      #   be underlined. If these fields are modified in the same
+                                      #   request, those values will be used instead of the link defaults.
+                                      # * Setting a link on a text range that overlaps with an existing link will
+                                      #   also update the existing link to point to the new URL.
+                                      # * Links are not settable on newline characters. As a result, setting a link
+                                      #   on a text range that crosses a paragraph boundary, such as `"ABC\n123"`,
+                                      #   will separate the newline character(s) into their own text runs. The
+                                      #   link will be applied separately to the runs before and after the newline.
+                                      # * Removing a link will update the text style of the range to match the
+                                      #   style of the preceding text (or the default text styles if the preceding
+                                      #   text is another link) unless different styles are being set in the same
+                                      #   request.
+                                    "url": "A String", # If set, indicates this is a link to the external web page at this URL.
+                                    "pageObjectId": "A String", # If set, indicates this is a link to the specific page in this
+                                        # presentation with this ID. A page with this ID may not exist.
+                                    "slideIndex": 42, # If set, indicates this is a link to the slide at this zero-based index
+                                        # in the presentation. There may not be a slide at this index.
+                                    "relativeLink": "A String", # If set, indicates this is a link to a slide in this presentation,
+                                        # addressed by its position.
+                                  },
+                                  "italic": True or False, # Whether or not the text is italicized.
+                                  "fontSize": { # A magnitude in a single direction in the specified units. # The size of the text's font. When read, the `font_size` will specified in
+                                      # points.
+                                    "magnitude": 3.14, # The magnitude.
+                                    "unit": "A String", # The units for magnitude.
+                                  },
+                                  "underline": True or False, # Whether or not the text is underlined.
+                                  "backgroundColor": { # A color that can either be fully opaque or fully transparent. # The background color of the text. If set, the color is either opaque or
+                                      # transparent, depending on if the `opaque_color` field in it is set.
+                                    "opaqueColor": { # A themeable solid color value. # If set, this will be used as an opaque color. If unset, this represents
+                                        # a transparent color.
+                                      "themeColor": "A String", # An opaque theme color.
+                                      "rgbColor": { # An RGB color. # An opaque RGB color.
+                                        "blue": 3.14, # The blue component of the color, from 0.0 to 1.0.
+                                        "green": 3.14, # The green component of the color, from 0.0 to 1.0.
+                                        "red": 3.14, # The red component of the color, from 0.0 to 1.0.
+                                      },
+                                    },
+                                  },
+                                },
+                                "glyph": "A String", # The rendered bullet glyph for this paragraph.
+                              },
+                            },
+                            "textRun": { # A TextElement kind that represents a run of text that all has the same # A TextElement representing a run of text where all of the characters
+                                # in the run have the same TextStyle.
+                                #
+                                # The `start_index` and `end_index` of TextRuns will always be fully
+                                # contained in the index range of a single `paragraph_marker` TextElement.
+                                # In other words, a TextRun will never span multiple paragraphs.
+                                # styling.
+                              "content": "A String", # The text of this run.
+                              "style": { # Represents the styling that can be applied to a TextRun. # The styling applied to this run.
+                                  #
+                                  # If this text is contained in a shape with a parent placeholder, then these text styles may be
+                                  # inherited from the parent. Which text styles are inherited depend on the
+                                  # nesting level of lists:
+                                  #
+                                  # * A text run in a paragraph that is not in a list will inherit its text style
+                                  #   from the the newline character in the paragraph at the 0 nesting level of
+                                  #   the list inside the parent placeholder.
+                                  # * A text run in a paragraph that is in a list will inherit its text style
+                                  #   from the newline character in the paragraph at its corresponding nesting
+                                  #   level of the list inside the parent placeholder.
+                                  #
+                                  # Inherited text styles are represented as unset fields in this message. If
+                                  # text is contained in a shape without a parent placeholder, unsetting these
+                                  # fields will revert the style to a value matching the defaults in the Slides
+                                  # editor.
+                                "foregroundColor": { # A color that can either be fully opaque or fully transparent. # The color of the text itself. If set, the color is either opaque or
+                                    # transparent, depending on if the `opaque_color` field in it is set.
+                                  "opaqueColor": { # A themeable solid color value. # If set, this will be used as an opaque color. If unset, this represents
+                                      # a transparent color.
+                                    "themeColor": "A String", # An opaque theme color.
+                                    "rgbColor": { # An RGB color. # An opaque RGB color.
+                                      "blue": 3.14, # The blue component of the color, from 0.0 to 1.0.
+                                      "green": 3.14, # The green component of the color, from 0.0 to 1.0.
+                                      "red": 3.14, # The red component of the color, from 0.0 to 1.0.
+                                    },
+                                  },
+                                },
+                                "bold": True or False, # Whether or not the text is bold.
+                                "baselineOffset": "A String", # The text's vertical offset from its normal position.
+                                    #
+                                    # Text with `SUPERSCRIPT` or `SUBSCRIPT` baseline offsets is automatically
+                                    # rendered in a smaller font size, computed based on the `font_size` field.
+                                    # The `font_size` itself is not affected by changes in this field.
+                                "strikethrough": True or False, # Whether or not the text is struck through.
+                                "smallCaps": True or False, # Whether or not the text is in small capital letters.
+                                "fontFamily": "A String", # The font family of the text.
+                                    #
+                                    # The font family can be any font from the Font menu in Slides or from
+                                    # [Google Fonts] (https://fonts.google.com/). If the font name is
+                                    # unrecognized, the text is rendered in `Arial`.
+                                    #
+                                    # Some fonts can affect the weight of the text. If an update request
+                                    # specifies values for both `font_family` and `bold`, the explicitly-set
+                                    # `bold` value is used.
+                                "link": { # A hypertext link. # The hyperlink destination of the text. If unset, there is no link. Links
+                                    # are not inherited from parent text.
+                                    #
+                                    # Changing the link in an update request causes some other changes to the
+                                    # text style of the range:
+                                    #
+                                    # * When setting a link, the text foreground color will be set to
+                                    #   ThemeColorType.HYPERLINK and the text will
+                                    #   be underlined. If these fields are modified in the same
+                                    #   request, those values will be used instead of the link defaults.
+                                    # * Setting a link on a text range that overlaps with an existing link will
+                                    #   also update the existing link to point to the new URL.
+                                    # * Links are not settable on newline characters. As a result, setting a link
+                                    #   on a text range that crosses a paragraph boundary, such as `"ABC\n123"`,
+                                    #   will separate the newline character(s) into their own text runs. The
+                                    #   link will be applied separately to the runs before and after the newline.
+                                    # * Removing a link will update the text style of the range to match the
+                                    #   style of the preceding text (or the default text styles if the preceding
+                                    #   text is another link) unless different styles are being set in the same
+                                    #   request.
+                                  "url": "A String", # If set, indicates this is a link to the external web page at this URL.
+                                  "pageObjectId": "A String", # If set, indicates this is a link to the specific page in this
+                                      # presentation with this ID. A page with this ID may not exist.
+                                  "slideIndex": 42, # If set, indicates this is a link to the slide at this zero-based index
+                                      # in the presentation. There may not be a slide at this index.
+                                  "relativeLink": "A String", # If set, indicates this is a link to a slide in this presentation,
+                                      # addressed by its position.
+                                },
+                                "italic": True or False, # Whether or not the text is italicized.
+                                "fontSize": { # A magnitude in a single direction in the specified units. # The size of the text's font. When read, the `font_size` will specified in
+                                    # points.
+                                  "magnitude": 3.14, # The magnitude.
+                                  "unit": "A String", # The units for magnitude.
+                                },
+                                "underline": True or False, # Whether or not the text is underlined.
+                                "backgroundColor": { # A color that can either be fully opaque or fully transparent. # The background color of the text. If set, the color is either opaque or
+                                    # transparent, depending on if the `opaque_color` field in it is set.
+                                  "opaqueColor": { # A themeable solid color value. # If set, this will be used as an opaque color. If unset, this represents
+                                      # a transparent color.
+                                    "themeColor": "A String", # An opaque theme color.
+                                    "rgbColor": { # An RGB color. # An opaque RGB color.
+                                      "blue": 3.14, # The blue component of the color, from 0.0 to 1.0.
+                                      "green": 3.14, # The green component of the color, from 0.0 to 1.0.
+                                      "red": 3.14, # The red component of the color, from 0.0 to 1.0.
+                                    },
+                                  },
+                                },
+                              },
+                            },
+                          },
+                        ],
+                        "lists": { # The bulleted lists contained in this text, keyed by list ID.
+                          "a_key": { # A List describes the look and feel of bullets belonging to paragraphs
+                              # associated with a list. A paragraph that is part of a list has an implicit
+                              # reference to that list's ID.
+                            "nestingLevel": { # A map of nesting levels to the properties of bullets at the associated
+                                # level. A list has at most nine levels of nesting, so the possible values
+                                # for the keys of this map are 0 through 8, inclusive.
+                              "a_key": { # Contains properties describing the look and feel of a list bullet at a given
+                                  # level of nesting.
+                                "bulletStyle": { # Represents the styling that can be applied to a TextRun. # The style of a bullet at this level of nesting.
+                                    #
+                                    # If this text is contained in a shape with a parent placeholder, then these text styles may be
+                                    # inherited from the parent. Which text styles are inherited depend on the
+                                    # nesting level of lists:
+                                    #
+                                    # * A text run in a paragraph that is not in a list will inherit its text style
+                                    #   from the the newline character in the paragraph at the 0 nesting level of
+                                    #   the list inside the parent placeholder.
+                                    # * A text run in a paragraph that is in a list will inherit its text style
+                                    #   from the newline character in the paragraph at its corresponding nesting
+                                    #   level of the list inside the parent placeholder.
+                                    #
+                                    # Inherited text styles are represented as unset fields in this message. If
+                                    # text is contained in a shape without a parent placeholder, unsetting these
+                                    # fields will revert the style to a value matching the defaults in the Slides
+                                    # editor.
+                                  "foregroundColor": { # A color that can either be fully opaque or fully transparent. # The color of the text itself. If set, the color is either opaque or
+                                      # transparent, depending on if the `opaque_color` field in it is set.
+                                    "opaqueColor": { # A themeable solid color value. # If set, this will be used as an opaque color. If unset, this represents
+                                        # a transparent color.
+                                      "themeColor": "A String", # An opaque theme color.
+                                      "rgbColor": { # An RGB color. # An opaque RGB color.
+                                        "blue": 3.14, # The blue component of the color, from 0.0 to 1.0.
+                                        "green": 3.14, # The green component of the color, from 0.0 to 1.0.
+                                        "red": 3.14, # The red component of the color, from 0.0 to 1.0.
+                                      },
+                                    },
+                                  },
+                                  "bold": True or False, # Whether or not the text is bold.
+                                  "baselineOffset": "A String", # The text's vertical offset from its normal position.
+                                      #
+                                      # Text with `SUPERSCRIPT` or `SUBSCRIPT` baseline offsets is automatically
+                                      # rendered in a smaller font size, computed based on the `font_size` field.
+                                      # The `font_size` itself is not affected by changes in this field.
+                                  "strikethrough": True or False, # Whether or not the text is struck through.
+                                  "smallCaps": True or False, # Whether or not the text is in small capital letters.
+                                  "fontFamily": "A String", # The font family of the text.
+                                      #
+                                      # The font family can be any font from the Font menu in Slides or from
+                                      # [Google Fonts] (https://fonts.google.com/). If the font name is
+                                      # unrecognized, the text is rendered in `Arial`.
+                                      #
+                                      # Some fonts can affect the weight of the text. If an update request
+                                      # specifies values for both `font_family` and `bold`, the explicitly-set
+                                      # `bold` value is used.
+                                  "link": { # A hypertext link. # The hyperlink destination of the text. If unset, there is no link. Links
+                                      # are not inherited from parent text.
+                                      #
+                                      # Changing the link in an update request causes some other changes to the
+                                      # text style of the range:
+                                      #
+                                      # * When setting a link, the text foreground color will be set to
+                                      #   ThemeColorType.HYPERLINK and the text will
+                                      #   be underlined. If these fields are modified in the same
+                                      #   request, those values will be used instead of the link defaults.
+                                      # * Setting a link on a text range that overlaps with an existing link will
+                                      #   also update the existing link to point to the new URL.
+                                      # * Links are not settable on newline characters. As a result, setting a link
+                                      #   on a text range that crosses a paragraph boundary, such as `"ABC\n123"`,
+                                      #   will separate the newline character(s) into their own text runs. The
+                                      #   link will be applied separately to the runs before and after the newline.
+                                      # * Removing a link will update the text style of the range to match the
+                                      #   style of the preceding text (or the default text styles if the preceding
+                                      #   text is another link) unless different styles are being set in the same
+                                      #   request.
+                                    "url": "A String", # If set, indicates this is a link to the external web page at this URL.
+                                    "pageObjectId": "A String", # If set, indicates this is a link to the specific page in this
+                                        # presentation with this ID. A page with this ID may not exist.
+                                    "slideIndex": 42, # If set, indicates this is a link to the slide at this zero-based index
+                                        # in the presentation. There may not be a slide at this index.
+                                    "relativeLink": "A String", # If set, indicates this is a link to a slide in this presentation,
+                                        # addressed by its position.
+                                  },
+                                  "italic": True or False, # Whether or not the text is italicized.
+                                  "fontSize": { # A magnitude in a single direction in the specified units. # The size of the text's font. When read, the `font_size` will specified in
+                                      # points.
+                                    "magnitude": 3.14, # The magnitude.
+                                    "unit": "A String", # The units for magnitude.
+                                  },
+                                  "underline": True or False, # Whether or not the text is underlined.
+                                  "backgroundColor": { # A color that can either be fully opaque or fully transparent. # The background color of the text. If set, the color is either opaque or
+                                      # transparent, depending on if the `opaque_color` field in it is set.
+                                    "opaqueColor": { # A themeable solid color value. # If set, this will be used as an opaque color. If unset, this represents
+                                        # a transparent color.
+                                      "themeColor": "A String", # An opaque theme color.
+                                      "rgbColor": { # An RGB color. # An opaque RGB color.
+                                        "blue": 3.14, # The blue component of the color, from 0.0 to 1.0.
+                                        "green": 3.14, # The green component of the color, from 0.0 to 1.0.
+                                        "red": 3.14, # The red component of the color, from 0.0 to 1.0.
+                                      },
+                                    },
+                                  },
+                                },
+                              },
+                            },
+                            "listId": "A String", # The ID of the list.
+                          },
+                        },
+                      },
+                      "rowSpan": 42, # Row span of the cell.
+                      "tableCellProperties": { # The properties of the TableCell. # The properties of the table cell.
+                        "tableCellBackgroundFill": { # The table cell background fill. # The background fill of the table cell. The default fill matches the fill
+                            # for newly created table cells in the Slides editor.
+                          "solidFill": { # A solid color fill. The page or page element is filled entirely with the # Solid color fill.
+                              # specified color value.
+                              #
+                              # If any field is unset, its value may be inherited from a parent placeholder
+                              # if it exists.
+                            "color": { # A themeable solid color value. # The color value of the solid fill.
+                              "themeColor": "A String", # An opaque theme color.
+                              "rgbColor": { # An RGB color. # An opaque RGB color.
+                                "blue": 3.14, # The blue component of the color, from 0.0 to 1.0.
+                                "green": 3.14, # The green component of the color, from 0.0 to 1.0.
+                                "red": 3.14, # The red component of the color, from 0.0 to 1.0.
+                              },
+                            },
+                            "alpha": 3.14, # The fraction of this `color` that should be applied to the pixel.
+                                # That is, the final pixel color is defined by the equation:
+                                #
+                                #   pixel color = alpha * (color) + (1.0 - alpha) * (background color)
+                                #
+                                # This means that a value of 1.0 corresponds to a solid color, whereas
+                                # a value of 0.0 corresponds to a completely transparent color.
+                          },
+                          "propertyState": "A String", # The background fill property state.
+                              #
+                              # Updating the the fill on a table cell will implicitly update this field
+                              # to `RENDERED`, unless another value is specified in the same request. To
+                              # have no fill on a table cell, set this field to `NOT_RENDERED`. In this
+                              # case, any other fill fields set in the same request will be ignored.
+                        },
+                      },
+                      "location": { # A location of a single table cell within a table. # The location of the cell within the table.
+                        "rowIndex": 42, # The 0-based row index.
+                        "columnIndex": 42, # The 0-based column index.
+                      },
+                      "columnSpan": 42, # Column span of the cell.
+                    },
+                  ],
+                  "rowHeight": { # A magnitude in a single direction in the specified units. # Height of a row.
+                    "magnitude": 3.14, # The magnitude.
+                    "unit": "A String", # The units for magnitude.
+                  },
+                },
+              ],
+              "rows": 42, # Number of rows in the table.
+              "columns": 42, # Number of columns in the table.
+            },
+            "line": { # A PageElement kind representing a # A line page element.
+                # line, curved connector, or bent connector.
+              "lineProperties": { # The properties of the Line. # The properties of the line.
+                  #
+                  # When unset, these fields default to values that match the appearance of
+                  # new lines created in the Slides editor.
+                "dashStyle": "A String", # The dash style of the line.
+                "weight": { # A magnitude in a single direction in the specified units. # The thickness of the line.
+                  "magnitude": 3.14, # The magnitude.
+                  "unit": "A String", # The units for magnitude.
+                },
+                "endArrow": "A String", # The style of the arrow at the end of the line.
+                "link": { # A hypertext link. # The hyperlink destination of the line. If unset, there is no link.
+                  "url": "A String", # If set, indicates this is a link to the external web page at this URL.
+                  "pageObjectId": "A String", # If set, indicates this is a link to the specific page in this
+                      # presentation with this ID. A page with this ID may not exist.
+                  "slideIndex": 42, # If set, indicates this is a link to the slide at this zero-based index
+                      # in the presentation. There may not be a slide at this index.
+                  "relativeLink": "A String", # If set, indicates this is a link to a slide in this presentation,
+                      # addressed by its position.
+                },
+                "startArrow": "A String", # The style of the arrow at the beginning of the line.
+                "lineFill": { # The fill of the line. # The fill of the line. The default line fill matches the defaults for new
+                    # lines created in the Slides editor.
+                  "solidFill": { # A solid color fill. The page or page element is filled entirely with the # Solid color fill.
+                      # specified color value.
+                      #
+                      # If any field is unset, its value may be inherited from a parent placeholder
+                      # if it exists.
+                    "color": { # A themeable solid color value. # The color value of the solid fill.
+                      "themeColor": "A String", # An opaque theme color.
+                      "rgbColor": { # An RGB color. # An opaque RGB color.
+                        "blue": 3.14, # The blue component of the color, from 0.0 to 1.0.
+                        "green": 3.14, # The green component of the color, from 0.0 to 1.0.
+                        "red": 3.14, # The red component of the color, from 0.0 to 1.0.
+                      },
+                    },
+                    "alpha": 3.14, # The fraction of this `color` that should be applied to the pixel.
+                        # That is, the final pixel color is defined by the equation:
+                        #
+                        #   pixel color = alpha * (color) + (1.0 - alpha) * (background color)
+                        #
+                        # This means that a value of 1.0 corresponds to a solid color, whereas
+                        # a value of 0.0 corresponds to a completely transparent color.
+                  },
+                },
+              },
+              "lineType": "A String", # The type of the line.
+            },
+            "size": { # A width and height. # The size of the page element.
+              "width": { # A magnitude in a single direction in the specified units. # The width of the object.
+                "magnitude": 3.14, # The magnitude.
+                "unit": "A String", # The units for magnitude.
+              },
+              "height": { # A magnitude in a single direction in the specified units. # The height of the object.
+                "magnitude": 3.14, # The magnitude.
+                "unit": "A String", # The units for magnitude.
+              },
+            },
+            "elementGroup": { # A PageElement kind representing a # A collection of page elements joined as a single unit.
+                # joined collection of PageElements.
+              "children": [ # The collection of elements in the group. The minimum size of a group is 2.
+                # Object with schema name: PageElement
+              ],
+            },
+          },
+        ],
+        "objectId": "A String", # The object ID for this page. Object IDs used by
+            # Page and
+            # PageElement share the same namespace.
+        "pageProperties": { # The properties of the Page. # The properties of the page.
+            #
+            # The page will inherit properties from the parent page. Depending on the page
+            # type the hierarchy is defined in either
+            # SlideProperties or
+            # LayoutProperties.
+          "pageBackgroundFill": { # The page background fill. # The background fill of the page. If unset, the background fill is inherited
+              # from a parent page if it exists. If the page has no parent, then the
+              # background fill defaults to the corresponding fill in the Slides editor.
+            "solidFill": { # A solid color fill. The page or page element is filled entirely with the # Solid color fill.
+                # specified color value.
+                #
+                # If any field is unset, its value may be inherited from a parent placeholder
+                # if it exists.
+              "color": { # A themeable solid color value. # The color value of the solid fill.
+                "themeColor": "A String", # An opaque theme color.
+                "rgbColor": { # An RGB color. # An opaque RGB color.
+                  "blue": 3.14, # The blue component of the color, from 0.0 to 1.0.
+                  "green": 3.14, # The green component of the color, from 0.0 to 1.0.
+                  "red": 3.14, # The red component of the color, from 0.0 to 1.0.
+                },
+              },
+              "alpha": 3.14, # The fraction of this `color` that should be applied to the pixel.
+                  # That is, the final pixel color is defined by the equation:
+                  #
+                  #   pixel color = alpha * (color) + (1.0 - alpha) * (background color)
+                  #
+                  # This means that a value of 1.0 corresponds to a solid color, whereas
+                  # a value of 0.0 corresponds to a completely transparent color.
+            },
+            "propertyState": "A String", # The background fill property state.
+                #
+                # Updating the the fill on a page will implicitly update this field to
+                # `RENDERED`, unless another value is specified in the same request. To
+                # have no fill on a page, set this field to `NOT_RENDERED`. In this case,
+                # any other fill fields set in the same request will be ignored.
+            "stretchedPictureFill": { # The stretched picture fill. The page or page element is filled entirely with # Stretched picture fill.
+                # the specified picture. The picture is stretched to fit its container.
+              "contentUrl": "A String", # Reading the content_url:
+                  #
+                  # An URL to a picture with a default lifetime of 30 minutes.
+                  # This URL is tagged with the account of the requester. Anyone with the URL
+                  # effectively accesses the picture as the original requester. Access to the
+                  # picture may be lost if the presentation's sharing settings change.
+                  #
+                  # Writing the content_url:
+                  #
+                  # The picture is fetched once at insertion time and a copy is stored for
+                  # display inside the presentation. Pictures must be less than 50MB in size,
+                  # cannot exceed 25 megapixels, and must be in either in PNG, JPEG, or GIF
+                  # format.
+              "size": { # A width and height. # The original size of the picture fill. This field is read-only.
+                "width": { # A magnitude in a single direction in the specified units. # The width of the object.
+                  "magnitude": 3.14, # The magnitude.
+                  "unit": "A String", # The units for magnitude.
+                },
+                "height": { # A magnitude in a single direction in the specified units. # The height of the object.
+                  "magnitude": 3.14, # The magnitude.
+                  "unit": "A String", # The units for magnitude.
+                },
+              },
+            },
+          },
+          "colorScheme": { # The palette of predefined colors for a page. # The color scheme of the page. If unset, the color scheme is inherited from
+              # a parent page. If the page has no parent, the color scheme uses a default
+              # Slides color scheme. This field is read-only.
+            "colors": [ # The ThemeColorType and corresponding concrete color pairs.
+              { # A pair mapping a theme color type to the concrete color it represents.
+                "color": { # An RGB color. # The concrete color corresponding to the theme color type above.
+                  "blue": 3.14, # The blue component of the color, from 0.0 to 1.0.
+                  "green": 3.14, # The green component of the color, from 0.0 to 1.0.
+                  "red": 3.14, # The red component of the color, from 0.0 to 1.0.
+                },
+                "type": "A String", # The type of the theme color.
+              },
+            ],
+          },
+        },
+        "pageType": "A String", # The type of the page.
+        "slideProperties": { # The properties of Page that are only # Slide specific properties. Only set if page_type = SLIDE.
+            # relevant for pages with page_type SLIDE.
+          "masterObjectId": "A String", # The object ID of the master that this slide is based on.
+          "layoutObjectId": "A String", # The object ID of the layout that this slide is based on.
+        },
+      },
+    ],
+    "pageSize": { # A width and height. # The size of pages in the presentation.
+      "width": { # A magnitude in a single direction in the specified units. # The width of the object.
+        "magnitude": 3.14, # The magnitude.
+        "unit": "A String", # The units for magnitude.
+      },
+      "height": { # A magnitude in a single direction in the specified units. # The height of the object.
+        "magnitude": 3.14, # The magnitude.
+        "unit": "A String", # The units for magnitude.
+      },
+    },
+    "title": "A String", # The title of the presentation.
+    "locale": "A String", # The locale of the presentation, as an IETF BCP 47 language tag.
+    "slides": [ # The slides in the presentation.
+        # A slide inherits properties from a slide layout.
+      { # A page in a presentation.
+        "layoutProperties": { # The properties of Page are only # Layout specific properties. Only set if page_type = LAYOUT.
+            # relevant for pages with page_type LAYOUT.
+          "displayName": "A String", # The human readable name of the layout in the presentation's locale.
+          "name": "A String", # The name of the layout.
+          "masterObjectId": "A String", # The object ID of the master that this layout is based on.
+        },
+        "pageElements": [ # The page elements rendered on the page.
+          { # A visual element rendered on a page.
+            "wordArt": { # A PageElement kind representing # A word art page element.
+                # word art.
+              "renderedText": "A String", # The text rendered as word art.
+            },
+            "description": "A String", # The description of the page element. Combined with title to display alt
+                # text.
+            "objectId": "A String", # The object ID for this page element. Object IDs used by
+                # google.apps.slides.v1.Page and
+                # google.apps.slides.v1.PageElement share the same namespace.
+            "title": "A String", # The title of the page element. Combined with description to display alt
+                # text.
+            "image": { # A PageElement kind representing an # An image page element.
+                # image.
+              "contentUrl": "A String", # An URL to an image with a default lifetime of 30 minutes.
+                  # This URL is tagged with the account of the requester. Anyone with the URL
+                  # effectively accesses the image as the original requester. Access to the
+                  # image may be lost if the presentation's sharing settings change.
+              "imageProperties": { # The properties of the Image. # The properties of the image.
+                "outline": { # The outline of a PageElement. # The outline of the image. If not set, the the image has no outline.
+                    #
+                    # If these fields are unset, they may be inherited from a parent placeholder
+                    # if it exists. If there is no parent, the fields will default to the value
+                    # used for new page elements created in the Slides editor, which may depend on
+                    # the page element kind.
+                  "dashStyle": "A String", # The dash style of the outline.
+                  "propertyState": "A String", # The outline property state.
+                      #
+                      # Updating the the outline on a page element will implicitly update this
+                      # field to`RENDERED`, unless another value is specified in the same request.
+                      # To have no outline on a page element, set this field to `NOT_RENDERED`. In
+                      # this case, any other outline fields set in the same request will be
+                      # ignored.
+                  "outlineFill": { # The fill of the outline. # The fill of the outline.
+                    "solidFill": { # A solid color fill. The page or page element is filled entirely with the # Solid color fill.
+                        # specified color value.
+                        #
+                        # If any field is unset, its value may be inherited from a parent placeholder
+                        # if it exists.
+                      "color": { # A themeable solid color value. # The color value of the solid fill.
+                        "themeColor": "A String", # An opaque theme color.
+                        "rgbColor": { # An RGB color. # An opaque RGB color.
+                          "blue": 3.14, # The blue component of the color, from 0.0 to 1.0.
+                          "green": 3.14, # The green component of the color, from 0.0 to 1.0.
+                          "red": 3.14, # The red component of the color, from 0.0 to 1.0.
+                        },
+                      },
+                      "alpha": 3.14, # The fraction of this `color` that should be applied to the pixel.
+                          # That is, the final pixel color is defined by the equation:
+                          #
+                          #   pixel color = alpha * (color) + (1.0 - alpha) * (background color)
+                          #
+                          # This means that a value of 1.0 corresponds to a solid color, whereas
+                          # a value of 0.0 corresponds to a completely transparent color.
+                    },
+                  },
+                  "weight": { # A magnitude in a single direction in the specified units. # The thickness of the outline.
+                    "magnitude": 3.14, # The magnitude.
+                    "unit": "A String", # The units for magnitude.
+                  },
+                },
+                "brightness": 3.14, # The brightness effect of the image. The value should be in the interval
+                    # [-1.0, 1.0], where 0 means no effect. This property is read-only.
+                "recolor": { # A recolor effect applied on an image. # The recolor effect of the image. If not set, the image is not recolored.
+                    # This property is read-only.
+                  "recolorStops": [ # The recolor effect is represented by a gradient, which is a list of color
+                      # stops. This property is read-only.
+                    { # A color and position in a gradient band.
+                      "color": { # A themeable solid color value. # The color of the gradient stop.
+                        "themeColor": "A String", # An opaque theme color.
+                        "rgbColor": { # An RGB color. # An opaque RGB color.
+                          "blue": 3.14, # The blue component of the color, from 0.0 to 1.0.
+                          "green": 3.14, # The green component of the color, from 0.0 to 1.0.
+                          "red": 3.14, # The red component of the color, from 0.0 to 1.0.
+                        },
+                      },
+                      "position": 3.14, # The relative position of the color stop in the gradient band measured
+                          # in percentage. The value should be in the interval [0.0, 1.0].
+                      "alpha": 3.14, # The alpha value of this color in the gradient band. Defaults to 1.0,
+                          # fully opaque.
+                    },
+                  ],
+                },
+                "link": { # A hypertext link. # The hyperlink destination of the image. If unset, there is no link.
+                  "url": "A String", # If set, indicates this is a link to the external web page at this URL.
+                  "pageObjectId": "A String", # If set, indicates this is a link to the specific page in this
+                      # presentation with this ID. A page with this ID may not exist.
+                  "slideIndex": 42, # If set, indicates this is a link to the slide at this zero-based index
+                      # in the presentation. There may not be a slide at this index.
+                  "relativeLink": "A String", # If set, indicates this is a link to a slide in this presentation,
+                      # addressed by its position.
+                },
+                "transparency": 3.14, # The transparency effect of the image. The value should be in the interval
+                    # [0.0, 1.0], where 0 means no effect and 1 means completely transparent.
+                    # This property is read-only.
+                "cropProperties": { # The crop properties of an object enclosed in a container. For example, an # The crop properties of the image. If not set, the image is not cropped.
+                    # This property is read-only.
+                    # Image.
+                    #
+                    # The crop properties is represented by the offsets of four edges which define
+                    # a crop rectangle. The offsets are measured in percentage from the
+                    # corresponding edges of the object's original bounding rectangle towards
+                    # inside, relative to the object's original dimensions.
+                    #
+                    # - If the offset is in the interval (0, 1), the corresponding edge of crop
+                    # rectangle is positioned inside of the object's original bounding rectangle.
+                    # - If the offset is negative or greater than 1, the corresponding edge of crop
+                    # rectangle is positioned outside of the object's original bounding rectangle.
+                    # - If the left edge of the crop rectangle is on the right side of its right
+                    # edge, the object will be flipped horizontally.
+                    # - If the top edge of the crop rectangle is below its bottom edge, the object
+                    # will be flipped vertically.
+                    # - If all offsets and rotation angle is 0, the object is not cropped.
+                    #
+                    # After cropping, the content in the crop rectangle will be stretched to fit
+                    # its container.
+                  "leftOffset": 3.14, # The offset specifies the left edge of the crop rectangle that is located to
+                      # the right of the original bounding rectangle left edge, relative to the
+                      # object's original width.
+                  "angle": 3.14, # The rotation angle of the crop window around its center, in radians.
+                      # Rotation angle is applied after the offset.
+                  "bottomOffset": 3.14, # The offset specifies the bottom edge of the crop rectangle that is located
+                      # above the original bounding rectangle bottom edge, relative to the object's
+                      # original height.
+                  "rightOffset": 3.14, # The offset specifies the right edge of the crop rectangle that is located
+                      # to the left of the original bounding rectangle right edge, relative to the
+                      # object's original width.
+                  "topOffset": 3.14, # The offset specifies the top edge of the crop rectangle that is located
+                      # below the original bounding rectangle top edge, relative to the object's
+                      # original height.
+                },
+                "shadow": { # The shadow properties of a page element. # The shadow of the image. If not set, the image has no shadow. This property
+                    # is read-only.
+                    #
+                    # If these fields are unset, they may be inherited from a parent placeholder
+                    # if it exists. If there is no parent, the fields will default to the value
+                    # used for new page elements created in the Slides editor, which may depend on
+                    # the page element kind.
+                  "color": { # A themeable solid color value. # The shadow color value.
+                    "themeColor": "A String", # An opaque theme color.
+                    "rgbColor": { # An RGB color. # An opaque RGB color.
+                      "blue": 3.14, # The blue component of the color, from 0.0 to 1.0.
+                      "green": 3.14, # The green component of the color, from 0.0 to 1.0.
+                      "red": 3.14, # The red component of the color, from 0.0 to 1.0.
+                    },
+                  },
+                  "transform": { # AffineTransform uses a 3x3 matrix with an implied last row of [ 0 0 1 ] # Transform that encodes the translate, scale, and skew of the shadow,
+                      # relative to the alignment position.
+                      # to transform source coordinates (x,y) into destination coordinates (x', y')
+                      # according to:
+                      #
+                      #       x'  x  =   shear_y  scale_y  translate_y
+                      #       1  [ 1 ]
+                      #
+                      # After transformation,
+                      #
+                      #      x' = scale_x * x + shear_x * y + translate_x;
+                      #      y' = scale_y * y + shear_y * x + translate_y;
+                      #
+                      # This message is therefore composed of these six matrix elements.
+                    "translateX": 3.14, # The X coordinate translation element.
+                    "translateY": 3.14, # The Y coordinate translation element.
+                    "scaleX": 3.14, # The X coordinate scaling element.
+                    "scaleY": 3.14, # The Y coordinate scaling element.
+                    "shearY": 3.14, # The Y coordinate shearing element.
+                    "shearX": 3.14, # The X coordinate shearing element.
+                    "unit": "A String", # The units for translate elements.
+                  },
+                  "propertyState": "A String", # The shadow property state.
+                      #
+                      # Updating the the shadow on a page element will implicitly update this field
+                      # to `RENDERED`, unless another value is specified in the same request. To
+                      # have no shadow on a page element, set this field to `NOT_RENDERED`. In this
+                      # case, any other shadow fields set in the same request will be ignored.
+                  "blurRadius": { # A magnitude in a single direction in the specified units. # The radius of the shadow blur. The larger the radius, the more diffuse the
+                      # shadow becomes.
+                    "magnitude": 3.14, # The magnitude.
+                    "unit": "A String", # The units for magnitude.
+                  },
+                  "alpha": 3.14, # The alpha of the shadow's color, from 0.0 to 1.0.
+                  "type": "A String", # The type of the shadow.
+                  "alignment": "A String", # The alignment point of the shadow, that sets the origin for translate,
+                      # scale and skew of the shadow.
+                  "rotateWithShape": True or False, # Whether the shadow should rotate with the shape.
+                },
+                "contrast": 3.14, # The contrast effect of the image. The value should be in the interval
+                    # [-1.0, 1.0], where 0 means no effect. This property is read-only.
+              },
+            },
+            "transform": { # AffineTransform uses a 3x3 matrix with an implied last row of [ 0 0 1 ] # The transform of the page element.
+                # to transform source coordinates (x,y) into destination coordinates (x', y')
+                # according to:
+                #
+                #       x'  x  =   shear_y  scale_y  translate_y
+                #       1  [ 1 ]
+                #
+                # After transformation,
+                #
+                #      x' = scale_x * x + shear_x * y + translate_x;
+                #      y' = scale_y * y + shear_y * x + translate_y;
+                #
+                # This message is therefore composed of these six matrix elements.
+              "translateX": 3.14, # The X coordinate translation element.
+              "translateY": 3.14, # The Y coordinate translation element.
+              "scaleX": 3.14, # The X coordinate scaling element.
+              "scaleY": 3.14, # The Y coordinate scaling element.
+              "shearY": 3.14, # The Y coordinate shearing element.
+              "shearX": 3.14, # The X coordinate shearing element.
+              "unit": "A String", # The units for translate elements.
+            },
+            "shape": { # A PageElement kind representing a # A generic shape.
+                # generic shape that does not have a more specific classification.
+              "text": { # The general text content. The text must reside in a compatible shape (e.g. # The text content of the shape.
+                  # text box or rectangle) or a table cell in a page.
+                "textElements": [ # The text contents broken down into its component parts, including styling
+                    # information. This property is read-only.
+                  { # A TextElement describes the content of a range of indices in the text content
+                      # of a Shape or TableCell.
+                    "autoText": { # A TextElement kind that represents auto text. # A TextElement representing a spot in the text that is dynamically
+                        # replaced with content that can change over time.
+                      "content": "A String", # The rendered content of this auto text, if available.
+                      "style": { # Represents the styling that can be applied to a TextRun. # The styling applied to this auto text.
+                          #
+                          # If this text is contained in a shape with a parent placeholder, then these text styles may be
+                          # inherited from the parent. Which text styles are inherited depend on the
+                          # nesting level of lists:
+                          #
+                          # * A text run in a paragraph that is not in a list will inherit its text style
+                          #   from the the newline character in the paragraph at the 0 nesting level of
+                          #   the list inside the parent placeholder.
+                          # * A text run in a paragraph that is in a list will inherit its text style
+                          #   from the newline character in the paragraph at its corresponding nesting
+                          #   level of the list inside the parent placeholder.
+                          #
+                          # Inherited text styles are represented as unset fields in this message. If
+                          # text is contained in a shape without a parent placeholder, unsetting these
+                          # fields will revert the style to a value matching the defaults in the Slides
+                          # editor.
+                        "foregroundColor": { # A color that can either be fully opaque or fully transparent. # The color of the text itself. If set, the color is either opaque or
+                            # transparent, depending on if the `opaque_color` field in it is set.
+                          "opaqueColor": { # A themeable solid color value. # If set, this will be used as an opaque color. If unset, this represents
+                              # a transparent color.
+                            "themeColor": "A String", # An opaque theme color.
+                            "rgbColor": { # An RGB color. # An opaque RGB color.
+                              "blue": 3.14, # The blue component of the color, from 0.0 to 1.0.
+                              "green": 3.14, # The green component of the color, from 0.0 to 1.0.
+                              "red": 3.14, # The red component of the color, from 0.0 to 1.0.
+                            },
+                          },
+                        },
+                        "bold": True or False, # Whether or not the text is bold.
+                        "baselineOffset": "A String", # The text's vertical offset from its normal position.
+                            #
+                            # Text with `SUPERSCRIPT` or `SUBSCRIPT` baseline offsets is automatically
+                            # rendered in a smaller font size, computed based on the `font_size` field.
+                            # The `font_size` itself is not affected by changes in this field.
+                        "strikethrough": True or False, # Whether or not the text is struck through.
+                        "smallCaps": True or False, # Whether or not the text is in small capital letters.
+                        "fontFamily": "A String", # The font family of the text.
+                            #
+                            # The font family can be any font from the Font menu in Slides or from
+                            # [Google Fonts] (https://fonts.google.com/). If the font name is
+                            # unrecognized, the text is rendered in `Arial`.
+                            #
+                            # Some fonts can affect the weight of the text. If an update request
+                            # specifies values for both `font_family` and `bold`, the explicitly-set
+                            # `bold` value is used.
+                        "link": { # A hypertext link. # The hyperlink destination of the text. If unset, there is no link. Links
+                            # are not inherited from parent text.
+                            #
+                            # Changing the link in an update request causes some other changes to the
+                            # text style of the range:
+                            #
+                            # * When setting a link, the text foreground color will be set to
+                            #   ThemeColorType.HYPERLINK and the text will
+                            #   be underlined. If these fields are modified in the same
+                            #   request, those values will be used instead of the link defaults.
+                            # * Setting a link on a text range that overlaps with an existing link will
+                            #   also update the existing link to point to the new URL.
+                            # * Links are not settable on newline characters. As a result, setting a link
+                            #   on a text range that crosses a paragraph boundary, such as `"ABC\n123"`,
+                            #   will separate the newline character(s) into their own text runs. The
+                            #   link will be applied separately to the runs before and after the newline.
+                            # * Removing a link will update the text style of the range to match the
+                            #   style of the preceding text (or the default text styles if the preceding
+                            #   text is another link) unless different styles are being set in the same
+                            #   request.
+                          "url": "A String", # If set, indicates this is a link to the external web page at this URL.
+                          "pageObjectId": "A String", # If set, indicates this is a link to the specific page in this
+                              # presentation with this ID. A page with this ID may not exist.
+                          "slideIndex": 42, # If set, indicates this is a link to the slide at this zero-based index
+                              # in the presentation. There may not be a slide at this index.
+                          "relativeLink": "A String", # If set, indicates this is a link to a slide in this presentation,
+                              # addressed by its position.
+                        },
+                        "italic": True or False, # Whether or not the text is italicized.
+                        "fontSize": { # A magnitude in a single direction in the specified units. # The size of the text's font. When read, the `font_size` will specified in
+                            # points.
+                          "magnitude": 3.14, # The magnitude.
+                          "unit": "A String", # The units for magnitude.
+                        },
+                        "underline": True or False, # Whether or not the text is underlined.
+                        "backgroundColor": { # A color that can either be fully opaque or fully transparent. # The background color of the text. If set, the color is either opaque or
+                            # transparent, depending on if the `opaque_color` field in it is set.
+                          "opaqueColor": { # A themeable solid color value. # If set, this will be used as an opaque color. If unset, this represents
+                              # a transparent color.
+                            "themeColor": "A String", # An opaque theme color.
+                            "rgbColor": { # An RGB color. # An opaque RGB color.
+                              "blue": 3.14, # The blue component of the color, from 0.0 to 1.0.
+                              "green": 3.14, # The green component of the color, from 0.0 to 1.0.
+                              "red": 3.14, # The red component of the color, from 0.0 to 1.0.
+                            },
+                          },
+                        },
+                      },
+                      "type": "A String", # The type of this auto text.
+                    },
+                    "endIndex": 42, # The zero-based end index of this text element, exclusive, in Unicode code
+                        # units.
+                    "startIndex": 42, # The zero-based start index of this text element, in Unicode code units.
+                    "paragraphMarker": { # A TextElement kind that represents the beginning of a new paragraph. # A marker representing the beginning of a new paragraph.
+                        #
+                        # The `start_index` and `end_index` of this TextElement represent the
+                        # range of the paragraph. Other TextElements with an index range contained
+                        # inside this paragraph's range are considered to be part of this
+                        # paragraph. The range of indices of two separate paragraphs will never
+                        # overlap.
+                      "style": { # Styles that apply to a whole paragraph. # The paragraph's style
+                          #
+                          # If this text is contained in a shape with a parent placeholder, then these paragraph styles may be
+                          # inherited from the parent. Which paragraph styles are inherited depend on the
+                          # nesting level of lists:
+                          #
+                          # * A paragraph not in a list will inherit its paragraph style from the
+                          #   paragraph at the 0 nesting level of the list inside the parent placeholder.
+                          # * A paragraph in a list will inherit its paragraph style from the paragraph
+                          #   at its corresponding nesting level of the list inside the parent
+                          #   placeholder.
+                          #
+                          # Inherited paragraph styles are represented as unset fields in this message.
+                        "spacingMode": "A String", # The spacing mode for the paragraph. This property is read-only.
+                        "direction": "A String", # The text direction of this paragraph. This property is read-only.
+                        "spaceBelow": { # A magnitude in a single direction in the specified units. # The amount of extra space above the paragraph. If unset, the value is
+                            # inherited from the parent. This property is read-only.
+                          "magnitude": 3.14, # The magnitude.
+                          "unit": "A String", # The units for magnitude.
+                        },
+                        "lineSpacing": 3.14, # The amount of space between lines, as a percentage of normal, where normal
+                            # is represented as 100.0. If unset, the value is inherited from the parent.
+                            # This property is read-only.
+                        "indentStart": { # A magnitude in a single direction in the specified units. # The amount indentation for the paragraph on the side that corresponds to
+                            # the start of the text, based on the current text direction. If unset, the
+                            # value is inherited from the parent. This property is read-only.
+                          "magnitude": 3.14, # The magnitude.
+                          "unit": "A String", # The units for magnitude.
+                        },
+                        "spaceAbove": { # A magnitude in a single direction in the specified units. # The amount of extra space above the paragraph. If unset, the value is
+                            # inherited from the parent. This property is read-only.
+                          "magnitude": 3.14, # The magnitude.
+                          "unit": "A String", # The units for magnitude.
+                        },
+                        "indentEnd": { # A magnitude in a single direction in the specified units. # The amount indentation for the paragraph on the side that corresponds to
+                            # the end of the text, based on the current text direction. If unset, the
+                            # value is inherited from the parent. This property is read-only.
+                          "magnitude": 3.14, # The magnitude.
+                          "unit": "A String", # The units for magnitude.
+                        },
+                        "indentFirstLine": { # A magnitude in a single direction in the specified units. # The amount of indentation for the start of the first line of the paragraph.
+                            # If unset, the value is inherited from the parent. This property is
+                            # read-only.
+                          "magnitude": 3.14, # The magnitude.
+                          "unit": "A String", # The units for magnitude.
+                        },
+                        "alignment": "A String", # The text alignment for this paragraph. This property is read-only.
+                      },
+                      "bullet": { # Describes the bullet of a paragraph. # The bullet for this paragraph. If not present, the paragraph does not
+                          # belong to a list.
+                        "nestingLevel": 42, # The nesting level of this paragraph in the list.
+                        "listId": "A String", # The ID of the list this paragraph belongs to.
+                        "bulletStyle": { # Represents the styling that can be applied to a TextRun. # The paragraph specific text style applied to this bullet.
+                            #
+                            # If this text is contained in a shape with a parent placeholder, then these text styles may be
+                            # inherited from the parent. Which text styles are inherited depend on the
+                            # nesting level of lists:
+                            #
+                            # * A text run in a paragraph that is not in a list will inherit its text style
+                            #   from the the newline character in the paragraph at the 0 nesting level of
+                            #   the list inside the parent placeholder.
+                            # * A text run in a paragraph that is in a list will inherit its text style
+                            #   from the newline character in the paragraph at its corresponding nesting
+                            #   level of the list inside the parent placeholder.
+                            #
+                            # Inherited text styles are represented as unset fields in this message. If
+                            # text is contained in a shape without a parent placeholder, unsetting these
+                            # fields will revert the style to a value matching the defaults in the Slides
+                            # editor.
+                          "foregroundColor": { # A color that can either be fully opaque or fully transparent. # The color of the text itself. If set, the color is either opaque or
+                              # transparent, depending on if the `opaque_color` field in it is set.
+                            "opaqueColor": { # A themeable solid color value. # If set, this will be used as an opaque color. If unset, this represents
+                                # a transparent color.
+                              "themeColor": "A String", # An opaque theme color.
+                              "rgbColor": { # An RGB color. # An opaque RGB color.
+                                "blue": 3.14, # The blue component of the color, from 0.0 to 1.0.
+                                "green": 3.14, # The green component of the color, from 0.0 to 1.0.
+                                "red": 3.14, # The red component of the color, from 0.0 to 1.0.
+                              },
+                            },
+                          },
+                          "bold": True or False, # Whether or not the text is bold.
+                          "baselineOffset": "A String", # The text's vertical offset from its normal position.
+                              #
+                              # Text with `SUPERSCRIPT` or `SUBSCRIPT` baseline offsets is automatically
+                              # rendered in a smaller font size, computed based on the `font_size` field.
+                              # The `font_size` itself is not affected by changes in this field.
+                          "strikethrough": True or False, # Whether or not the text is struck through.
+                          "smallCaps": True or False, # Whether or not the text is in small capital letters.
+                          "fontFamily": "A String", # The font family of the text.
+                              #
+                              # The font family can be any font from the Font menu in Slides or from
+                              # [Google Fonts] (https://fonts.google.com/). If the font name is
+                              # unrecognized, the text is rendered in `Arial`.
+                              #
+                              # Some fonts can affect the weight of the text. If an update request
+                              # specifies values for both `font_family` and `bold`, the explicitly-set
+                              # `bold` value is used.
+                          "link": { # A hypertext link. # The hyperlink destination of the text. If unset, there is no link. Links
+                              # are not inherited from parent text.
+                              #
+                              # Changing the link in an update request causes some other changes to the
+                              # text style of the range:
+                              #
+                              # * When setting a link, the text foreground color will be set to
+                              #   ThemeColorType.HYPERLINK and the text will
+                              #   be underlined. If these fields are modified in the same
+                              #   request, those values will be used instead of the link defaults.
+                              # * Setting a link on a text range that overlaps with an existing link will
+                              #   also update the existing link to point to the new URL.
+                              # * Links are not settable on newline characters. As a result, setting a link
+                              #   on a text range that crosses a paragraph boundary, such as `"ABC\n123"`,
+                              #   will separate the newline character(s) into their own text runs. The
+                              #   link will be applied separately to the runs before and after the newline.
+                              # * Removing a link will update the text style of the range to match the
+                              #   style of the preceding text (or the default text styles if the preceding
+                              #   text is another link) unless different styles are being set in the same
+                              #   request.
+                            "url": "A String", # If set, indicates this is a link to the external web page at this URL.
+                            "pageObjectId": "A String", # If set, indicates this is a link to the specific page in this
+                                # presentation with this ID. A page with this ID may not exist.
+                            "slideIndex": 42, # If set, indicates this is a link to the slide at this zero-based index
+                                # in the presentation. There may not be a slide at this index.
+                            "relativeLink": "A String", # If set, indicates this is a link to a slide in this presentation,
+                                # addressed by its position.
+                          },
+                          "italic": True or False, # Whether or not the text is italicized.
+                          "fontSize": { # A magnitude in a single direction in the specified units. # The size of the text's font. When read, the `font_size` will specified in
+                              # points.
+                            "magnitude": 3.14, # The magnitude.
+                            "unit": "A String", # The units for magnitude.
+                          },
+                          "underline": True or False, # Whether or not the text is underlined.
+                          "backgroundColor": { # A color that can either be fully opaque or fully transparent. # The background color of the text. If set, the color is either opaque or
+                              # transparent, depending on if the `opaque_color` field in it is set.
+                            "opaqueColor": { # A themeable solid color value. # If set, this will be used as an opaque color. If unset, this represents
+                                # a transparent color.
+                              "themeColor": "A String", # An opaque theme color.
+                              "rgbColor": { # An RGB color. # An opaque RGB color.
+                                "blue": 3.14, # The blue component of the color, from 0.0 to 1.0.
+                                "green": 3.14, # The green component of the color, from 0.0 to 1.0.
+                                "red": 3.14, # The red component of the color, from 0.0 to 1.0.
+                              },
+                            },
+                          },
+                        },
+                        "glyph": "A String", # The rendered bullet glyph for this paragraph.
+                      },
+                    },
+                    "textRun": { # A TextElement kind that represents a run of text that all has the same # A TextElement representing a run of text where all of the characters
+                        # in the run have the same TextStyle.
+                        #
+                        # The `start_index` and `end_index` of TextRuns will always be fully
+                        # contained in the index range of a single `paragraph_marker` TextElement.
+                        # In other words, a TextRun will never span multiple paragraphs.
+                        # styling.
+                      "content": "A String", # The text of this run.
+                      "style": { # Represents the styling that can be applied to a TextRun. # The styling applied to this run.
+                          #
+                          # If this text is contained in a shape with a parent placeholder, then these text styles may be
+                          # inherited from the parent. Which text styles are inherited depend on the
+                          # nesting level of lists:
+                          #
+                          # * A text run in a paragraph that is not in a list will inherit its text style
+                          #   from the the newline character in the paragraph at the 0 nesting level of
+                          #   the list inside the parent placeholder.
+                          # * A text run in a paragraph that is in a list will inherit its text style
+                          #   from the newline character in the paragraph at its corresponding nesting
+                          #   level of the list inside the parent placeholder.
+                          #
+                          # Inherited text styles are represented as unset fields in this message. If
+                          # text is contained in a shape without a parent placeholder, unsetting these
+                          # fields will revert the style to a value matching the defaults in the Slides
+                          # editor.
+                        "foregroundColor": { # A color that can either be fully opaque or fully transparent. # The color of the text itself. If set, the color is either opaque or
+                            # transparent, depending on if the `opaque_color` field in it is set.
+                          "opaqueColor": { # A themeable solid color value. # If set, this will be used as an opaque color. If unset, this represents
+                              # a transparent color.
+                            "themeColor": "A String", # An opaque theme color.
+                            "rgbColor": { # An RGB color. # An opaque RGB color.
+                              "blue": 3.14, # The blue component of the color, from 0.0 to 1.0.
+                              "green": 3.14, # The green component of the color, from 0.0 to 1.0.
+                              "red": 3.14, # The red component of the color, from 0.0 to 1.0.
+                            },
+                          },
+                        },
+                        "bold": True or False, # Whether or not the text is bold.
+                        "baselineOffset": "A String", # The text's vertical offset from its normal position.
+                            #
+                            # Text with `SUPERSCRIPT` or `SUBSCRIPT` baseline offsets is automatically
+                            # rendered in a smaller font size, computed based on the `font_size` field.
+                            # The `font_size` itself is not affected by changes in this field.
+                        "strikethrough": True or False, # Whether or not the text is struck through.
+                        "smallCaps": True or False, # Whether or not the text is in small capital letters.
+                        "fontFamily": "A String", # The font family of the text.
+                            #
+                            # The font family can be any font from the Font menu in Slides or from
+                            # [Google Fonts] (https://fonts.google.com/). If the font name is
+                            # unrecognized, the text is rendered in `Arial`.
+                            #
+                            # Some fonts can affect the weight of the text. If an update request
+                            # specifies values for both `font_family` and `bold`, the explicitly-set
+                            # `bold` value is used.
+                        "link": { # A hypertext link. # The hyperlink destination of the text. If unset, there is no link. Links
+                            # are not inherited from parent text.
+                            #
+                            # Changing the link in an update request causes some other changes to the
+                            # text style of the range:
+                            #
+                            # * When setting a link, the text foreground color will be set to
+                            #   ThemeColorType.HYPERLINK and the text will
+                            #   be underlined. If these fields are modified in the same
+                            #   request, those values will be used instead of the link defaults.
+                            # * Setting a link on a text range that overlaps with an existing link will
+                            #   also update the existing link to point to the new URL.
+                            # * Links are not settable on newline characters. As a result, setting a link
+                            #   on a text range that crosses a paragraph boundary, such as `"ABC\n123"`,
+                            #   will separate the newline character(s) into their own text runs. The
+                            #   link will be applied separately to the runs before and after the newline.
+                            # * Removing a link will update the text style of the range to match the
+                            #   style of the preceding text (or the default text styles if the preceding
+                            #   text is another link) unless different styles are being set in the same
+                            #   request.
+                          "url": "A String", # If set, indicates this is a link to the external web page at this URL.
+                          "pageObjectId": "A String", # If set, indicates this is a link to the specific page in this
+                              # presentation with this ID. A page with this ID may not exist.
+                          "slideIndex": 42, # If set, indicates this is a link to the slide at this zero-based index
+                              # in the presentation. There may not be a slide at this index.
+                          "relativeLink": "A String", # If set, indicates this is a link to a slide in this presentation,
+                              # addressed by its position.
+                        },
+                        "italic": True or False, # Whether or not the text is italicized.
+                        "fontSize": { # A magnitude in a single direction in the specified units. # The size of the text's font. When read, the `font_size` will specified in
+                            # points.
+                          "magnitude": 3.14, # The magnitude.
+                          "unit": "A String", # The units for magnitude.
+                        },
+                        "underline": True or False, # Whether or not the text is underlined.
+                        "backgroundColor": { # A color that can either be fully opaque or fully transparent. # The background color of the text. If set, the color is either opaque or
+                            # transparent, depending on if the `opaque_color` field in it is set.
+                          "opaqueColor": { # A themeable solid color value. # If set, this will be used as an opaque color. If unset, this represents
+                              # a transparent color.
+                            "themeColor": "A String", # An opaque theme color.
+                            "rgbColor": { # An RGB color. # An opaque RGB color.
+                              "blue": 3.14, # The blue component of the color, from 0.0 to 1.0.
+                              "green": 3.14, # The green component of the color, from 0.0 to 1.0.
+                              "red": 3.14, # The red component of the color, from 0.0 to 1.0.
+                            },
+                          },
+                        },
+                      },
+                    },
+                  },
+                ],
+                "lists": { # The bulleted lists contained in this text, keyed by list ID.
+                  "a_key": { # A List describes the look and feel of bullets belonging to paragraphs
+                      # associated with a list. A paragraph that is part of a list has an implicit
+                      # reference to that list's ID.
+                    "nestingLevel": { # A map of nesting levels to the properties of bullets at the associated
+                        # level. A list has at most nine levels of nesting, so the possible values
+                        # for the keys of this map are 0 through 8, inclusive.
+                      "a_key": { # Contains properties describing the look and feel of a list bullet at a given
+                          # level of nesting.
+                        "bulletStyle": { # Represents the styling that can be applied to a TextRun. # The style of a bullet at this level of nesting.
+                            #
+                            # If this text is contained in a shape with a parent placeholder, then these text styles may be
+                            # inherited from the parent. Which text styles are inherited depend on the
+                            # nesting level of lists:
+                            #
+                            # * A text run in a paragraph that is not in a list will inherit its text style
+                            #   from the the newline character in the paragraph at the 0 nesting level of
+                            #   the list inside the parent placeholder.
+                            # * A text run in a paragraph that is in a list will inherit its text style
+                            #   from the newline character in the paragraph at its corresponding nesting
+                            #   level of the list inside the parent placeholder.
+                            #
+                            # Inherited text styles are represented as unset fields in this message. If
+                            # text is contained in a shape without a parent placeholder, unsetting these
+                            # fields will revert the style to a value matching the defaults in the Slides
+                            # editor.
+                          "foregroundColor": { # A color that can either be fully opaque or fully transparent. # The color of the text itself. If set, the color is either opaque or
+                              # transparent, depending on if the `opaque_color` field in it is set.
+                            "opaqueColor": { # A themeable solid color value. # If set, this will be used as an opaque color. If unset, this represents
+                                # a transparent color.
+                              "themeColor": "A String", # An opaque theme color.
+                              "rgbColor": { # An RGB color. # An opaque RGB color.
+                                "blue": 3.14, # The blue component of the color, from 0.0 to 1.0.
+                                "green": 3.14, # The green component of the color, from 0.0 to 1.0.
+                                "red": 3.14, # The red component of the color, from 0.0 to 1.0.
+                              },
+                            },
+                          },
+                          "bold": True or False, # Whether or not the text is bold.
+                          "baselineOffset": "A String", # The text's vertical offset from its normal position.
+                              #
+                              # Text with `SUPERSCRIPT` or `SUBSCRIPT` baseline offsets is automatically
+                              # rendered in a smaller font size, computed based on the `font_size` field.
+                              # The `font_size` itself is not affected by changes in this field.
+                          "strikethrough": True or False, # Whether or not the text is struck through.
+                          "smallCaps": True or False, # Whether or not the text is in small capital letters.
+                          "fontFamily": "A String", # The font family of the text.
+                              #
+                              # The font family can be any font from the Font menu in Slides or from
+                              # [Google Fonts] (https://fonts.google.com/). If the font name is
+                              # unrecognized, the text is rendered in `Arial`.
+                              #
+                              # Some fonts can affect the weight of the text. If an update request
+                              # specifies values for both `font_family` and `bold`, the explicitly-set
+                              # `bold` value is used.
+                          "link": { # A hypertext link. # The hyperlink destination of the text. If unset, there is no link. Links
+                              # are not inherited from parent text.
+                              #
+                              # Changing the link in an update request causes some other changes to the
+                              # text style of the range:
+                              #
+                              # * When setting a link, the text foreground color will be set to
+                              #   ThemeColorType.HYPERLINK and the text will
+                              #   be underlined. If these fields are modified in the same
+                              #   request, those values will be used instead of the link defaults.
+                              # * Setting a link on a text range that overlaps with an existing link will
+                              #   also update the existing link to point to the new URL.
+                              # * Links are not settable on newline characters. As a result, setting a link
+                              #   on a text range that crosses a paragraph boundary, such as `"ABC\n123"`,
+                              #   will separate the newline character(s) into their own text runs. The
+                              #   link will be applied separately to the runs before and after the newline.
+                              # * Removing a link will update the text style of the range to match the
+                              #   style of the preceding text (or the default text styles if the preceding
+                              #   text is another link) unless different styles are being set in the same
+                              #   request.
+                            "url": "A String", # If set, indicates this is a link to the external web page at this URL.
+                            "pageObjectId": "A String", # If set, indicates this is a link to the specific page in this
+                                # presentation with this ID. A page with this ID may not exist.
+                            "slideIndex": 42, # If set, indicates this is a link to the slide at this zero-based index
+                                # in the presentation. There may not be a slide at this index.
+                            "relativeLink": "A String", # If set, indicates this is a link to a slide in this presentation,
+                                # addressed by its position.
+                          },
+                          "italic": True or False, # Whether or not the text is italicized.
+                          "fontSize": { # A magnitude in a single direction in the specified units. # The size of the text's font. When read, the `font_size` will specified in
+                              # points.
+                            "magnitude": 3.14, # The magnitude.
+                            "unit": "A String", # The units for magnitude.
+                          },
+                          "underline": True or False, # Whether or not the text is underlined.
+                          "backgroundColor": { # A color that can either be fully opaque or fully transparent. # The background color of the text. If set, the color is either opaque or
+                              # transparent, depending on if the `opaque_color` field in it is set.
+                            "opaqueColor": { # A themeable solid color value. # If set, this will be used as an opaque color. If unset, this represents
+                                # a transparent color.
+                              "themeColor": "A String", # An opaque theme color.
+                              "rgbColor": { # An RGB color. # An opaque RGB color.
+                                "blue": 3.14, # The blue component of the color, from 0.0 to 1.0.
+                                "green": 3.14, # The green component of the color, from 0.0 to 1.0.
+                                "red": 3.14, # The red component of the color, from 0.0 to 1.0.
+                              },
+                            },
+                          },
+                        },
+                      },
+                    },
+                    "listId": "A String", # The ID of the list.
+                  },
+                },
+              },
+              "shapeProperties": { # The properties of a Shape. # The properties of the shape.
+                  #
+                  # If the shape is a placeholder shape as determined by the
+                  # placeholder field, then these
+                  # properties may be inherited from a parent placeholder shape.
+                  # Determining the rendered value of the property depends on the corresponding
+                  # property_state field value.
+                "shadow": { # The shadow properties of a page element. # The shadow properties of the shape. If unset, the shadow is inherited from
+                    # a parent placeholder if it exists. If the shape has no parent, then the
+                    # default shadow matches the defaults for new shapes created in the Slides
+                    # editor. This property is read-only.
+                    #
+                    # If these fields are unset, they may be inherited from a parent placeholder
+                    # if it exists. If there is no parent, the fields will default to the value
+                    # used for new page elements created in the Slides editor, which may depend on
+                    # the page element kind.
+                  "color": { # A themeable solid color value. # The shadow color value.
+                    "themeColor": "A String", # An opaque theme color.
+                    "rgbColor": { # An RGB color. # An opaque RGB color.
+                      "blue": 3.14, # The blue component of the color, from 0.0 to 1.0.
+                      "green": 3.14, # The green component of the color, from 0.0 to 1.0.
+                      "red": 3.14, # The red component of the color, from 0.0 to 1.0.
+                    },
+                  },
+                  "transform": { # AffineTransform uses a 3x3 matrix with an implied last row of [ 0 0 1 ] # Transform that encodes the translate, scale, and skew of the shadow,
+                      # relative to the alignment position.
+                      # to transform source coordinates (x,y) into destination coordinates (x', y')
+                      # according to:
+                      #
+                      #       x'  x  =   shear_y  scale_y  translate_y
+                      #       1  [ 1 ]
+                      #
+                      # After transformation,
+                      #
+                      #      x' = scale_x * x + shear_x * y + translate_x;
+                      #      y' = scale_y * y + shear_y * x + translate_y;
+                      #
+                      # This message is therefore composed of these six matrix elements.
+                    "translateX": 3.14, # The X coordinate translation element.
+                    "translateY": 3.14, # The Y coordinate translation element.
+                    "scaleX": 3.14, # The X coordinate scaling element.
+                    "scaleY": 3.14, # The Y coordinate scaling element.
+                    "shearY": 3.14, # The Y coordinate shearing element.
+                    "shearX": 3.14, # The X coordinate shearing element.
+                    "unit": "A String", # The units for translate elements.
+                  },
+                  "propertyState": "A String", # The shadow property state.
+                      #
+                      # Updating the the shadow on a page element will implicitly update this field
+                      # to `RENDERED`, unless another value is specified in the same request. To
+                      # have no shadow on a page element, set this field to `NOT_RENDERED`. In this
+                      # case, any other shadow fields set in the same request will be ignored.
+                  "blurRadius": { # A magnitude in a single direction in the specified units. # The radius of the shadow blur. The larger the radius, the more diffuse the
+                      # shadow becomes.
+                    "magnitude": 3.14, # The magnitude.
+                    "unit": "A String", # The units for magnitude.
+                  },
+                  "alpha": 3.14, # The alpha of the shadow's color, from 0.0 to 1.0.
+                  "type": "A String", # The type of the shadow.
+                  "alignment": "A String", # The alignment point of the shadow, that sets the origin for translate,
+                      # scale and skew of the shadow.
+                  "rotateWithShape": True or False, # Whether the shadow should rotate with the shape.
+                },
+                "shapeBackgroundFill": { # The shape background fill. # The background fill of the shape. If unset, the background fill is
+                    # inherited from a parent placeholder if it exists. If the shape has no
+                    # parent, then the default background fill depends on the shape type,
+                    # matching the defaults for new shapes created in the Slides editor.
+                  "solidFill": { # A solid color fill. The page or page element is filled entirely with the # Solid color fill.
+                      # specified color value.
+                      #
+                      # If any field is unset, its value may be inherited from a parent placeholder
+                      # if it exists.
+                    "color": { # A themeable solid color value. # The color value of the solid fill.
+                      "themeColor": "A String", # An opaque theme color.
+                      "rgbColor": { # An RGB color. # An opaque RGB color.
+                        "blue": 3.14, # The blue component of the color, from 0.0 to 1.0.
+                        "green": 3.14, # The green component of the color, from 0.0 to 1.0.
+                        "red": 3.14, # The red component of the color, from 0.0 to 1.0.
+                      },
+                    },
+                    "alpha": 3.14, # The fraction of this `color` that should be applied to the pixel.
+                        # That is, the final pixel color is defined by the equation:
+                        #
+                        #   pixel color = alpha * (color) + (1.0 - alpha) * (background color)
+                        #
+                        # This means that a value of 1.0 corresponds to a solid color, whereas
+                        # a value of 0.0 corresponds to a completely transparent color.
+                  },
+                  "propertyState": "A String", # The background fill property state.
+                      #
+                      # Updating the the fill on a shape will implicitly update this field to
+                      # `RENDERED`, unless another value is specified in the same request. To
+                      # have no fill on a shape, set this field to `NOT_RENDERED`. In this case,
+                      # any other fill fields set in the same request will be ignored.
+                },
+                "link": { # A hypertext link. # The hyperlink destination of the shape. If unset, there is no link. Links
+                    # are not inherited from parent placeholders.
+                  "url": "A String", # If set, indicates this is a link to the external web page at this URL.
+                  "pageObjectId": "A String", # If set, indicates this is a link to the specific page in this
+                      # presentation with this ID. A page with this ID may not exist.
+                  "slideIndex": 42, # If set, indicates this is a link to the slide at this zero-based index
+                      # in the presentation. There may not be a slide at this index.
+                  "relativeLink": "A String", # If set, indicates this is a link to a slide in this presentation,
+                      # addressed by its position.
+                },
+                "outline": { # The outline of a PageElement. # The outline of the shape. If unset, the outline is inherited from a
+                    # parent placeholder if it exists. If the shape has no parent, then the
+                    # default outline depends on the shape type, matching the defaults for
+                    # new shapes created in the Slides editor.
+                    #
+                    # If these fields are unset, they may be inherited from a parent placeholder
+                    # if it exists. If there is no parent, the fields will default to the value
+                    # used for new page elements created in the Slides editor, which may depend on
+                    # the page element kind.
+                  "dashStyle": "A String", # The dash style of the outline.
+                  "propertyState": "A String", # The outline property state.
+                      #
+                      # Updating the the outline on a page element will implicitly update this
+                      # field to`RENDERED`, unless another value is specified in the same request.
+                      # To have no outline on a page element, set this field to `NOT_RENDERED`. In
+                      # this case, any other outline fields set in the same request will be
+                      # ignored.
+                  "outlineFill": { # The fill of the outline. # The fill of the outline.
+                    "solidFill": { # A solid color fill. The page or page element is filled entirely with the # Solid color fill.
+                        # specified color value.
+                        #
+                        # If any field is unset, its value may be inherited from a parent placeholder
+                        # if it exists.
+                      "color": { # A themeable solid color value. # The color value of the solid fill.
+                        "themeColor": "A String", # An opaque theme color.
+                        "rgbColor": { # An RGB color. # An opaque RGB color.
+                          "blue": 3.14, # The blue component of the color, from 0.0 to 1.0.
+                          "green": 3.14, # The green component of the color, from 0.0 to 1.0.
+                          "red": 3.14, # The red component of the color, from 0.0 to 1.0.
+                        },
+                      },
+                      "alpha": 3.14, # The fraction of this `color` that should be applied to the pixel.
+                          # That is, the final pixel color is defined by the equation:
+                          #
+                          #   pixel color = alpha * (color) + (1.0 - alpha) * (background color)
+                          #
+                          # This means that a value of 1.0 corresponds to a solid color, whereas
+                          # a value of 0.0 corresponds to a completely transparent color.
+                    },
+                  },
+                  "weight": { # A magnitude in a single direction in the specified units. # The thickness of the outline.
+                    "magnitude": 3.14, # The magnitude.
+                    "unit": "A String", # The units for magnitude.
+                  },
+                },
+              },
+              "placeholder": { # The placeholder information that uniquely identifies a placeholder shape. # Placeholders are shapes that are inherit from corresponding placeholders on
+                  # layouts and masters.
+                  #
+                  # If set, the shape is a placeholder shape and any inherited properties
+                  # can be resolved by looking at the parent placeholder identified by the
+                  # Placeholder.parent_object_id field.
+                "parentObjectId": "A String", # The object ID of this shape's parent placeholder.
+                    # If unset, the parent placeholder shape does not exist, so the shape does
+                    # not inherit properties from any other shape.
+                "index": 42, # The index of the placeholder. If the same placeholder types are the present
+                    # in the same page, they would have different index values.
+                "type": "A String", # The type of the placeholder.
+              },
+              "shapeType": "A String", # The type of the shape.
+            },
+            "sheetsChart": { # A PageElement kind representing # A linked chart embedded from Google Sheets. Unlinked charts are
+                # represented as images.
+                # a linked chart embedded from Google Sheets.
+              "chartId": 42, # The ID of the specific chart in the Google Sheets spreadsheet that is
+                  # embedded.
+              "spreadsheetId": "A String", # The ID of the Google Sheets spreadsheet that contains the source chart.
+              "sheetsChartProperties": { # The properties of the SheetsChart. # The properties of the Sheets chart.
+                "chartImageProperties": { # The properties of the Image. # The properties of the embedded chart image.
+                  "outline": { # The outline of a PageElement. # The outline of the image. If not set, the the image has no outline.
+                      #
+                      # If these fields are unset, they may be inherited from a parent placeholder
+                      # if it exists. If there is no parent, the fields will default to the value
+                      # used for new page elements created in the Slides editor, which may depend on
+                      # the page element kind.
+                    "dashStyle": "A String", # The dash style of the outline.
+                    "propertyState": "A String", # The outline property state.
+                        #
+                        # Updating the the outline on a page element will implicitly update this
+                        # field to`RENDERED`, unless another value is specified in the same request.
+                        # To have no outline on a page element, set this field to `NOT_RENDERED`. In
+                        # this case, any other outline fields set in the same request will be
+                        # ignored.
+                    "outlineFill": { # The fill of the outline. # The fill of the outline.
+                      "solidFill": { # A solid color fill. The page or page element is filled entirely with the # Solid color fill.
+                          # specified color value.
+                          #
+                          # If any field is unset, its value may be inherited from a parent placeholder
+                          # if it exists.
+                        "color": { # A themeable solid color value. # The color value of the solid fill.
+                          "themeColor": "A String", # An opaque theme color.
+                          "rgbColor": { # An RGB color. # An opaque RGB color.
+                            "blue": 3.14, # The blue component of the color, from 0.0 to 1.0.
+                            "green": 3.14, # The green component of the color, from 0.0 to 1.0.
+                            "red": 3.14, # The red component of the color, from 0.0 to 1.0.
+                          },
+                        },
+                        "alpha": 3.14, # The fraction of this `color` that should be applied to the pixel.
+                            # That is, the final pixel color is defined by the equation:
+                            #
+                            #   pixel color = alpha * (color) + (1.0 - alpha) * (background color)
+                            #
+                            # This means that a value of 1.0 corresponds to a solid color, whereas
+                            # a value of 0.0 corresponds to a completely transparent color.
+                      },
+                    },
+                    "weight": { # A magnitude in a single direction in the specified units. # The thickness of the outline.
+                      "magnitude": 3.14, # The magnitude.
+                      "unit": "A String", # The units for magnitude.
+                    },
+                  },
+                  "brightness": 3.14, # The brightness effect of the image. The value should be in the interval
+                      # [-1.0, 1.0], where 0 means no effect. This property is read-only.
+                  "recolor": { # A recolor effect applied on an image. # The recolor effect of the image. If not set, the image is not recolored.
+                      # This property is read-only.
+                    "recolorStops": [ # The recolor effect is represented by a gradient, which is a list of color
+                        # stops. This property is read-only.
+                      { # A color and position in a gradient band.
+                        "color": { # A themeable solid color value. # The color of the gradient stop.
+                          "themeColor": "A String", # An opaque theme color.
+                          "rgbColor": { # An RGB color. # An opaque RGB color.
+                            "blue": 3.14, # The blue component of the color, from 0.0 to 1.0.
+                            "green": 3.14, # The green component of the color, from 0.0 to 1.0.
+                            "red": 3.14, # The red component of the color, from 0.0 to 1.0.
+                          },
+                        },
+                        "position": 3.14, # The relative position of the color stop in the gradient band measured
+                            # in percentage. The value should be in the interval [0.0, 1.0].
+                        "alpha": 3.14, # The alpha value of this color in the gradient band. Defaults to 1.0,
+                            # fully opaque.
+                      },
+                    ],
+                  },
+                  "link": { # A hypertext link. # The hyperlink destination of the image. If unset, there is no link.
+                    "url": "A String", # If set, indicates this is a link to the external web page at this URL.
+                    "pageObjectId": "A String", # If set, indicates this is a link to the specific page in this
+                        # presentation with this ID. A page with this ID may not exist.
+                    "slideIndex": 42, # If set, indicates this is a link to the slide at this zero-based index
+                        # in the presentation. There may not be a slide at this index.
+                    "relativeLink": "A String", # If set, indicates this is a link to a slide in this presentation,
+                        # addressed by its position.
+                  },
+                  "transparency": 3.14, # The transparency effect of the image. The value should be in the interval
+                      # [0.0, 1.0], where 0 means no effect and 1 means completely transparent.
+                      # This property is read-only.
+                  "cropProperties": { # The crop properties of an object enclosed in a container. For example, an # The crop properties of the image. If not set, the image is not cropped.
+                      # This property is read-only.
+                      # Image.
+                      #
+                      # The crop properties is represented by the offsets of four edges which define
+                      # a crop rectangle. The offsets are measured in percentage from the
+                      # corresponding edges of the object's original bounding rectangle towards
+                      # inside, relative to the object's original dimensions.
+                      #
+                      # - If the offset is in the interval (0, 1), the corresponding edge of crop
+                      # rectangle is positioned inside of the object's original bounding rectangle.
+                      # - If the offset is negative or greater than 1, the corresponding edge of crop
+                      # rectangle is positioned outside of the object's original bounding rectangle.
+                      # - If the left edge of the crop rectangle is on the right side of its right
+                      # edge, the object will be flipped horizontally.
+                      # - If the top edge of the crop rectangle is below its bottom edge, the object
+                      # will be flipped vertically.
+                      # - If all offsets and rotation angle is 0, the object is not cropped.
+                      #
+                      # After cropping, the content in the crop rectangle will be stretched to fit
+                      # its container.
+                    "leftOffset": 3.14, # The offset specifies the left edge of the crop rectangle that is located to
+                        # the right of the original bounding rectangle left edge, relative to the
+                        # object's original width.
+                    "angle": 3.14, # The rotation angle of the crop window around its center, in radians.
+                        # Rotation angle is applied after the offset.
+                    "bottomOffset": 3.14, # The offset specifies the bottom edge of the crop rectangle that is located
+                        # above the original bounding rectangle bottom edge, relative to the object's
+                        # original height.
+                    "rightOffset": 3.14, # The offset specifies the right edge of the crop rectangle that is located
+                        # to the left of the original bounding rectangle right edge, relative to the
+                        # object's original width.
+                    "topOffset": 3.14, # The offset specifies the top edge of the crop rectangle that is located
+                        # below the original bounding rectangle top edge, relative to the object's
+                        # original height.
+                  },
+                  "shadow": { # The shadow properties of a page element. # The shadow of the image. If not set, the image has no shadow. This property
+                      # is read-only.
+                      #
+                      # If these fields are unset, they may be inherited from a parent placeholder
+                      # if it exists. If there is no parent, the fields will default to the value
+                      # used for new page elements created in the Slides editor, which may depend on
+                      # the page element kind.
+                    "color": { # A themeable solid color value. # The shadow color value.
+                      "themeColor": "A String", # An opaque theme color.
+                      "rgbColor": { # An RGB color. # An opaque RGB color.
+                        "blue": 3.14, # The blue component of the color, from 0.0 to 1.0.
+                        "green": 3.14, # The green component of the color, from 0.0 to 1.0.
+                        "red": 3.14, # The red component of the color, from 0.0 to 1.0.
+                      },
+                    },
+                    "transform": { # AffineTransform uses a 3x3 matrix with an implied last row of [ 0 0 1 ] # Transform that encodes the translate, scale, and skew of the shadow,
+                        # relative to the alignment position.
+                        # to transform source coordinates (x,y) into destination coordinates (x', y')
+                        # according to:
+                        #
+                        #       x'  x  =   shear_y  scale_y  translate_y
+                        #       1  [ 1 ]
+                        #
+                        # After transformation,
+                        #
+                        #      x' = scale_x * x + shear_x * y + translate_x;
+                        #      y' = scale_y * y + shear_y * x + translate_y;
+                        #
+                        # This message is therefore composed of these six matrix elements.
+                      "translateX": 3.14, # The X coordinate translation element.
+                      "translateY": 3.14, # The Y coordinate translation element.
+                      "scaleX": 3.14, # The X coordinate scaling element.
+                      "scaleY": 3.14, # The Y coordinate scaling element.
+                      "shearY": 3.14, # The Y coordinate shearing element.
+                      "shearX": 3.14, # The X coordinate shearing element.
+                      "unit": "A String", # The units for translate elements.
+                    },
+                    "propertyState": "A String", # The shadow property state.
+                        #
+                        # Updating the the shadow on a page element will implicitly update this field
+                        # to `RENDERED`, unless another value is specified in the same request. To
+                        # have no shadow on a page element, set this field to `NOT_RENDERED`. In this
+                        # case, any other shadow fields set in the same request will be ignored.
+                    "blurRadius": { # A magnitude in a single direction in the specified units. # The radius of the shadow blur. The larger the radius, the more diffuse the
+                        # shadow becomes.
+                      "magnitude": 3.14, # The magnitude.
+                      "unit": "A String", # The units for magnitude.
+                    },
+                    "alpha": 3.14, # The alpha of the shadow's color, from 0.0 to 1.0.
+                    "type": "A String", # The type of the shadow.
+                    "alignment": "A String", # The alignment point of the shadow, that sets the origin for translate,
+                        # scale and skew of the shadow.
+                    "rotateWithShape": True or False, # Whether the shadow should rotate with the shape.
+                  },
+                  "contrast": 3.14, # The contrast effect of the image. The value should be in the interval
+                      # [-1.0, 1.0], where 0 means no effect. This property is read-only.
+                },
+              },
+              "contentUrl": "A String", # The URL of an image of the embedded chart, with a default lifetime of 30
+                  # minutes. This URL is tagged with the account of the requester. Anyone with
+                  # the URL effectively accesses the image as the original requester. Access to
+                  # the image may be lost if the presentation's sharing settings change.
+            },
+            "video": { # A PageElement kind representing a # A video page element.
+                # video.
+              "url": "A String", # An URL to a video. The URL is valid as long as the source video
+                  # exists and sharing settings do not change.
+              "videoProperties": { # The properties of the Video. # The properties of the video.
+                "outline": { # The outline of a PageElement. # The outline of the video. The default outline matches the defaults for new
+                    # videos created in the Slides editor.
+                    #
+                    # If these fields are unset, they may be inherited from a parent placeholder
+                    # if it exists. If there is no parent, the fields will default to the value
+                    # used for new page elements created in the Slides editor, which may depend on
+                    # the page element kind.
+                  "dashStyle": "A String", # The dash style of the outline.
+                  "propertyState": "A String", # The outline property state.
+                      #
+                      # Updating the the outline on a page element will implicitly update this
+                      # field to`RENDERED`, unless another value is specified in the same request.
+                      # To have no outline on a page element, set this field to `NOT_RENDERED`. In
+                      # this case, any other outline fields set in the same request will be
+                      # ignored.
+                  "outlineFill": { # The fill of the outline. # The fill of the outline.
+                    "solidFill": { # A solid color fill. The page or page element is filled entirely with the # Solid color fill.
+                        # specified color value.
+                        #
+                        # If any field is unset, its value may be inherited from a parent placeholder
+                        # if it exists.
+                      "color": { # A themeable solid color value. # The color value of the solid fill.
+                        "themeColor": "A String", # An opaque theme color.
+                        "rgbColor": { # An RGB color. # An opaque RGB color.
+                          "blue": 3.14, # The blue component of the color, from 0.0 to 1.0.
+                          "green": 3.14, # The green component of the color, from 0.0 to 1.0.
+                          "red": 3.14, # The red component of the color, from 0.0 to 1.0.
+                        },
+                      },
+                      "alpha": 3.14, # The fraction of this `color` that should be applied to the pixel.
+                          # That is, the final pixel color is defined by the equation:
+                          #
+                          #   pixel color = alpha * (color) + (1.0 - alpha) * (background color)
+                          #
+                          # This means that a value of 1.0 corresponds to a solid color, whereas
+                          # a value of 0.0 corresponds to a completely transparent color.
+                    },
+                  },
+                  "weight": { # A magnitude in a single direction in the specified units. # The thickness of the outline.
+                    "magnitude": 3.14, # The magnitude.
+                    "unit": "A String", # The units for magnitude.
+                  },
+                },
+              },
+              "id": "A String", # The video source's unique identifier for this video.
+              "source": "A String", # The video source.
+            },
+            "table": { # A PageElement kind representing a # A table page element.
+                # table.
+              "tableColumns": [ # Properties of each column.
+                { # Properties of each column in a table.
+                  "columnWidth": { # A magnitude in a single direction in the specified units. # Width of a column.
+                    "magnitude": 3.14, # The magnitude.
+                    "unit": "A String", # The units for magnitude.
+                  },
+                },
+              ],
+              "tableRows": [ # Properties and contents of each row.
+                  #
+                  # Cells that span multiple rows are contained in only one of these rows and
+                  # have a row_span greater
+                  # than 1.
+                { # Properties and contents of each row in a table.
+                  "tableCells": [ # Properties and contents of each cell.
+                      #
+                      # Cells that span multiple columns are represented only once with a
+                      # column_span greater
+                      # than 1. As a result, the length of this collection does not always match
+                      # the number of columns of the entire table.
+                    { # Properties and contents of each table cell.
+                      "text": { # The general text content. The text must reside in a compatible shape (e.g. # The text content of the cell.
+                          # text box or rectangle) or a table cell in a page.
+                        "textElements": [ # The text contents broken down into its component parts, including styling
+                            # information. This property is read-only.
+                          { # A TextElement describes the content of a range of indices in the text content
+                              # of a Shape or TableCell.
+                            "autoText": { # A TextElement kind that represents auto text. # A TextElement representing a spot in the text that is dynamically
+                                # replaced with content that can change over time.
+                              "content": "A String", # The rendered content of this auto text, if available.
+                              "style": { # Represents the styling that can be applied to a TextRun. # The styling applied to this auto text.
+                                  #
+                                  # If this text is contained in a shape with a parent placeholder, then these text styles may be
+                                  # inherited from the parent. Which text styles are inherited depend on the
+                                  # nesting level of lists:
+                                  #
+                                  # * A text run in a paragraph that is not in a list will inherit its text style
+                                  #   from the the newline character in the paragraph at the 0 nesting level of
+                                  #   the list inside the parent placeholder.
+                                  # * A text run in a paragraph that is in a list will inherit its text style
+                                  #   from the newline character in the paragraph at its corresponding nesting
+                                  #   level of the list inside the parent placeholder.
+                                  #
+                                  # Inherited text styles are represented as unset fields in this message. If
+                                  # text is contained in a shape without a parent placeholder, unsetting these
+                                  # fields will revert the style to a value matching the defaults in the Slides
+                                  # editor.
+                                "foregroundColor": { # A color that can either be fully opaque or fully transparent. # The color of the text itself. If set, the color is either opaque or
+                                    # transparent, depending on if the `opaque_color` field in it is set.
+                                  "opaqueColor": { # A themeable solid color value. # If set, this will be used as an opaque color. If unset, this represents
+                                      # a transparent color.
+                                    "themeColor": "A String", # An opaque theme color.
+                                    "rgbColor": { # An RGB color. # An opaque RGB color.
+                                      "blue": 3.14, # The blue component of the color, from 0.0 to 1.0.
+                                      "green": 3.14, # The green component of the color, from 0.0 to 1.0.
+                                      "red": 3.14, # The red component of the color, from 0.0 to 1.0.
+                                    },
+                                  },
+                                },
+                                "bold": True or False, # Whether or not the text is bold.
+                                "baselineOffset": "A String", # The text's vertical offset from its normal position.
+                                    #
+                                    # Text with `SUPERSCRIPT` or `SUBSCRIPT` baseline offsets is automatically
+                                    # rendered in a smaller font size, computed based on the `font_size` field.
+                                    # The `font_size` itself is not affected by changes in this field.
+                                "strikethrough": True or False, # Whether or not the text is struck through.
+                                "smallCaps": True or False, # Whether or not the text is in small capital letters.
+                                "fontFamily": "A String", # The font family of the text.
+                                    #
+                                    # The font family can be any font from the Font menu in Slides or from
+                                    # [Google Fonts] (https://fonts.google.com/). If the font name is
+                                    # unrecognized, the text is rendered in `Arial`.
+                                    #
+                                    # Some fonts can affect the weight of the text. If an update request
+                                    # specifies values for both `font_family` and `bold`, the explicitly-set
+                                    # `bold` value is used.
+                                "link": { # A hypertext link. # The hyperlink destination of the text. If unset, there is no link. Links
+                                    # are not inherited from parent text.
+                                    #
+                                    # Changing the link in an update request causes some other changes to the
+                                    # text style of the range:
+                                    #
+                                    # * When setting a link, the text foreground color will be set to
+                                    #   ThemeColorType.HYPERLINK and the text will
+                                    #   be underlined. If these fields are modified in the same
+                                    #   request, those values will be used instead of the link defaults.
+                                    # * Setting a link on a text range that overlaps with an existing link will
+                                    #   also update the existing link to point to the new URL.
+                                    # * Links are not settable on newline characters. As a result, setting a link
+                                    #   on a text range that crosses a paragraph boundary, such as `"ABC\n123"`,
+                                    #   will separate the newline character(s) into their own text runs. The
+                                    #   link will be applied separately to the runs before and after the newline.
+                                    # * Removing a link will update the text style of the range to match the
+                                    #   style of the preceding text (or the default text styles if the preceding
+                                    #   text is another link) unless different styles are being set in the same
+                                    #   request.
+                                  "url": "A String", # If set, indicates this is a link to the external web page at this URL.
+                                  "pageObjectId": "A String", # If set, indicates this is a link to the specific page in this
+                                      # presentation with this ID. A page with this ID may not exist.
+                                  "slideIndex": 42, # If set, indicates this is a link to the slide at this zero-based index
+                                      # in the presentation. There may not be a slide at this index.
+                                  "relativeLink": "A String", # If set, indicates this is a link to a slide in this presentation,
+                                      # addressed by its position.
+                                },
+                                "italic": True or False, # Whether or not the text is italicized.
+                                "fontSize": { # A magnitude in a single direction in the specified units. # The size of the text's font. When read, the `font_size` will specified in
+                                    # points.
+                                  "magnitude": 3.14, # The magnitude.
+                                  "unit": "A String", # The units for magnitude.
+                                },
+                                "underline": True or False, # Whether or not the text is underlined.
+                                "backgroundColor": { # A color that can either be fully opaque or fully transparent. # The background color of the text. If set, the color is either opaque or
+                                    # transparent, depending on if the `opaque_color` field in it is set.
+                                  "opaqueColor": { # A themeable solid color value. # If set, this will be used as an opaque color. If unset, this represents
+                                      # a transparent color.
+                                    "themeColor": "A String", # An opaque theme color.
+                                    "rgbColor": { # An RGB color. # An opaque RGB color.
+                                      "blue": 3.14, # The blue component of the color, from 0.0 to 1.0.
+                                      "green": 3.14, # The green component of the color, from 0.0 to 1.0.
+                                      "red": 3.14, # The red component of the color, from 0.0 to 1.0.
+                                    },
+                                  },
+                                },
+                              },
+                              "type": "A String", # The type of this auto text.
+                            },
+                            "endIndex": 42, # The zero-based end index of this text element, exclusive, in Unicode code
+                                # units.
+                            "startIndex": 42, # The zero-based start index of this text element, in Unicode code units.
+                            "paragraphMarker": { # A TextElement kind that represents the beginning of a new paragraph. # A marker representing the beginning of a new paragraph.
+                                #
+                                # The `start_index` and `end_index` of this TextElement represent the
+                                # range of the paragraph. Other TextElements with an index range contained
+                                # inside this paragraph's range are considered to be part of this
+                                # paragraph. The range of indices of two separate paragraphs will never
+                                # overlap.
+                              "style": { # Styles that apply to a whole paragraph. # The paragraph's style
+                                  #
+                                  # If this text is contained in a shape with a parent placeholder, then these paragraph styles may be
+                                  # inherited from the parent. Which paragraph styles are inherited depend on the
+                                  # nesting level of lists:
+                                  #
+                                  # * A paragraph not in a list will inherit its paragraph style from the
+                                  #   paragraph at the 0 nesting level of the list inside the parent placeholder.
+                                  # * A paragraph in a list will inherit its paragraph style from the paragraph
+                                  #   at its corresponding nesting level of the list inside the parent
+                                  #   placeholder.
+                                  #
+                                  # Inherited paragraph styles are represented as unset fields in this message.
+                                "spacingMode": "A String", # The spacing mode for the paragraph. This property is read-only.
+                                "direction": "A String", # The text direction of this paragraph. This property is read-only.
+                                "spaceBelow": { # A magnitude in a single direction in the specified units. # The amount of extra space above the paragraph. If unset, the value is
+                                    # inherited from the parent. This property is read-only.
+                                  "magnitude": 3.14, # The magnitude.
+                                  "unit": "A String", # The units for magnitude.
+                                },
+                                "lineSpacing": 3.14, # The amount of space between lines, as a percentage of normal, where normal
+                                    # is represented as 100.0. If unset, the value is inherited from the parent.
+                                    # This property is read-only.
+                                "indentStart": { # A magnitude in a single direction in the specified units. # The amount indentation for the paragraph on the side that corresponds to
+                                    # the start of the text, based on the current text direction. If unset, the
+                                    # value is inherited from the parent. This property is read-only.
+                                  "magnitude": 3.14, # The magnitude.
+                                  "unit": "A String", # The units for magnitude.
+                                },
+                                "spaceAbove": { # A magnitude in a single direction in the specified units. # The amount of extra space above the paragraph. If unset, the value is
+                                    # inherited from the parent. This property is read-only.
+                                  "magnitude": 3.14, # The magnitude.
+                                  "unit": "A String", # The units for magnitude.
+                                },
+                                "indentEnd": { # A magnitude in a single direction in the specified units. # The amount indentation for the paragraph on the side that corresponds to
+                                    # the end of the text, based on the current text direction. If unset, the
+                                    # value is inherited from the parent. This property is read-only.
+                                  "magnitude": 3.14, # The magnitude.
+                                  "unit": "A String", # The units for magnitude.
+                                },
+                                "indentFirstLine": { # A magnitude in a single direction in the specified units. # The amount of indentation for the start of the first line of the paragraph.
+                                    # If unset, the value is inherited from the parent. This property is
+                                    # read-only.
+                                  "magnitude": 3.14, # The magnitude.
+                                  "unit": "A String", # The units for magnitude.
+                                },
+                                "alignment": "A String", # The text alignment for this paragraph. This property is read-only.
+                              },
+                              "bullet": { # Describes the bullet of a paragraph. # The bullet for this paragraph. If not present, the paragraph does not
+                                  # belong to a list.
+                                "nestingLevel": 42, # The nesting level of this paragraph in the list.
+                                "listId": "A String", # The ID of the list this paragraph belongs to.
+                                "bulletStyle": { # Represents the styling that can be applied to a TextRun. # The paragraph specific text style applied to this bullet.
+                                    #
+                                    # If this text is contained in a shape with a parent placeholder, then these text styles may be
+                                    # inherited from the parent. Which text styles are inherited depend on the
+                                    # nesting level of lists:
+                                    #
+                                    # * A text run in a paragraph that is not in a list will inherit its text style
+                                    #   from the the newline character in the paragraph at the 0 nesting level of
+                                    #   the list inside the parent placeholder.
+                                    # * A text run in a paragraph that is in a list will inherit its text style
+                                    #   from the newline character in the paragraph at its corresponding nesting
+                                    #   level of the list inside the parent placeholder.
+                                    #
+                                    # Inherited text styles are represented as unset fields in this message. If
+                                    # text is contained in a shape without a parent placeholder, unsetting these
+                                    # fields will revert the style to a value matching the defaults in the Slides
+                                    # editor.
+                                  "foregroundColor": { # A color that can either be fully opaque or fully transparent. # The color of the text itself. If set, the color is either opaque or
+                                      # transparent, depending on if the `opaque_color` field in it is set.
+                                    "opaqueColor": { # A themeable solid color value. # If set, this will be used as an opaque color. If unset, this represents
+                                        # a transparent color.
+                                      "themeColor": "A String", # An opaque theme color.
+                                      "rgbColor": { # An RGB color. # An opaque RGB color.
+                                        "blue": 3.14, # The blue component of the color, from 0.0 to 1.0.
+                                        "green": 3.14, # The green component of the color, from 0.0 to 1.0.
+                                        "red": 3.14, # The red component of the color, from 0.0 to 1.0.
+                                      },
+                                    },
+                                  },
+                                  "bold": True or False, # Whether or not the text is bold.
+                                  "baselineOffset": "A String", # The text's vertical offset from its normal position.
+                                      #
+                                      # Text with `SUPERSCRIPT` or `SUBSCRIPT` baseline offsets is automatically
+                                      # rendered in a smaller font size, computed based on the `font_size` field.
+                                      # The `font_size` itself is not affected by changes in this field.
+                                  "strikethrough": True or False, # Whether or not the text is struck through.
+                                  "smallCaps": True or False, # Whether or not the text is in small capital letters.
+                                  "fontFamily": "A String", # The font family of the text.
+                                      #
+                                      # The font family can be any font from the Font menu in Slides or from
+                                      # [Google Fonts] (https://fonts.google.com/). If the font name is
+                                      # unrecognized, the text is rendered in `Arial`.
+                                      #
+                                      # Some fonts can affect the weight of the text. If an update request
+                                      # specifies values for both `font_family` and `bold`, the explicitly-set
+                                      # `bold` value is used.
+                                  "link": { # A hypertext link. # The hyperlink destination of the text. If unset, there is no link. Links
+                                      # are not inherited from parent text.
+                                      #
+                                      # Changing the link in an update request causes some other changes to the
+                                      # text style of the range:
+                                      #
+                                      # * When setting a link, the text foreground color will be set to
+                                      #   ThemeColorType.HYPERLINK and the text will
+                                      #   be underlined. If these fields are modified in the same
+                                      #   request, those values will be used instead of the link defaults.
+                                      # * Setting a link on a text range that overlaps with an existing link will
+                                      #   also update the existing link to point to the new URL.
+                                      # * Links are not settable on newline characters. As a result, setting a link
+                                      #   on a text range that crosses a paragraph boundary, such as `"ABC\n123"`,
+                                      #   will separate the newline character(s) into their own text runs. The
+                                      #   link will be applied separately to the runs before and after the newline.
+                                      # * Removing a link will update the text style of the range to match the
+                                      #   style of the preceding text (or the default text styles if the preceding
+                                      #   text is another link) unless different styles are being set in the same
+                                      #   request.
+                                    "url": "A String", # If set, indicates this is a link to the external web page at this URL.
+                                    "pageObjectId": "A String", # If set, indicates this is a link to the specific page in this
+                                        # presentation with this ID. A page with this ID may not exist.
+                                    "slideIndex": 42, # If set, indicates this is a link to the slide at this zero-based index
+                                        # in the presentation. There may not be a slide at this index.
+                                    "relativeLink": "A String", # If set, indicates this is a link to a slide in this presentation,
+                                        # addressed by its position.
+                                  },
+                                  "italic": True or False, # Whether or not the text is italicized.
+                                  "fontSize": { # A magnitude in a single direction in the specified units. # The size of the text's font. When read, the `font_size` will specified in
+                                      # points.
+                                    "magnitude": 3.14, # The magnitude.
+                                    "unit": "A String", # The units for magnitude.
+                                  },
+                                  "underline": True or False, # Whether or not the text is underlined.
+                                  "backgroundColor": { # A color that can either be fully opaque or fully transparent. # The background color of the text. If set, the color is either opaque or
+                                      # transparent, depending on if the `opaque_color` field in it is set.
+                                    "opaqueColor": { # A themeable solid color value. # If set, this will be used as an opaque color. If unset, this represents
+                                        # a transparent color.
+                                      "themeColor": "A String", # An opaque theme color.
+                                      "rgbColor": { # An RGB color. # An opaque RGB color.
+                                        "blue": 3.14, # The blue component of the color, from 0.0 to 1.0.
+                                        "green": 3.14, # The green component of the color, from 0.0 to 1.0.
+                                        "red": 3.14, # The red component of the color, from 0.0 to 1.0.
+                                      },
+                                    },
+                                  },
+                                },
+                                "glyph": "A String", # The rendered bullet glyph for this paragraph.
+                              },
+                            },
+                            "textRun": { # A TextElement kind that represents a run of text that all has the same # A TextElement representing a run of text where all of the characters
+                                # in the run have the same TextStyle.
+                                #
+                                # The `start_index` and `end_index` of TextRuns will always be fully
+                                # contained in the index range of a single `paragraph_marker` TextElement.
+                                # In other words, a TextRun will never span multiple paragraphs.
+                                # styling.
+                              "content": "A String", # The text of this run.
+                              "style": { # Represents the styling that can be applied to a TextRun. # The styling applied to this run.
+                                  #
+                                  # If this text is contained in a shape with a parent placeholder, then these text styles may be
+                                  # inherited from the parent. Which text styles are inherited depend on the
+                                  # nesting level of lists:
+                                  #
+                                  # * A text run in a paragraph that is not in a list will inherit its text style
+                                  #   from the the newline character in the paragraph at the 0 nesting level of
+                                  #   the list inside the parent placeholder.
+                                  # * A text run in a paragraph that is in a list will inherit its text style
+                                  #   from the newline character in the paragraph at its corresponding nesting
+                                  #   level of the list inside the parent placeholder.
+                                  #
+                                  # Inherited text styles are represented as unset fields in this message. If
+                                  # text is contained in a shape without a parent placeholder, unsetting these
+                                  # fields will revert the style to a value matching the defaults in the Slides
+                                  # editor.
+                                "foregroundColor": { # A color that can either be fully opaque or fully transparent. # The color of the text itself. If set, the color is either opaque or
+                                    # transparent, depending on if the `opaque_color` field in it is set.
+                                  "opaqueColor": { # A themeable solid color value. # If set, this will be used as an opaque color. If unset, this represents
+                                      # a transparent color.
+                                    "themeColor": "A String", # An opaque theme color.
+                                    "rgbColor": { # An RGB color. # An opaque RGB color.
+                                      "blue": 3.14, # The blue component of the color, from 0.0 to 1.0.
+                                      "green": 3.14, # The green component of the color, from 0.0 to 1.0.
+                                      "red": 3.14, # The red component of the color, from 0.0 to 1.0.
+                                    },
+                                  },
+                                },
+                                "bold": True or False, # Whether or not the text is bold.
+                                "baselineOffset": "A String", # The text's vertical offset from its normal position.
+                                    #
+                                    # Text with `SUPERSCRIPT` or `SUBSCRIPT` baseline offsets is automatically
+                                    # rendered in a smaller font size, computed based on the `font_size` field.
+                                    # The `font_size` itself is not affected by changes in this field.
+                                "strikethrough": True or False, # Whether or not the text is struck through.
+                                "smallCaps": True or False, # Whether or not the text is in small capital letters.
+                                "fontFamily": "A String", # The font family of the text.
+                                    #
+                                    # The font family can be any font from the Font menu in Slides or from
+                                    # [Google Fonts] (https://fonts.google.com/). If the font name is
+                                    # unrecognized, the text is rendered in `Arial`.
+                                    #
+                                    # Some fonts can affect the weight of the text. If an update request
+                                    # specifies values for both `font_family` and `bold`, the explicitly-set
+                                    # `bold` value is used.
+                                "link": { # A hypertext link. # The hyperlink destination of the text. If unset, there is no link. Links
+                                    # are not inherited from parent text.
+                                    #
+                                    # Changing the link in an update request causes some other changes to the
+                                    # text style of the range:
+                                    #
+                                    # * When setting a link, the text foreground color will be set to
+                                    #   ThemeColorType.HYPERLINK and the text will
+                                    #   be underlined. If these fields are modified in the same
+                                    #   request, those values will be used instead of the link defaults.
+                                    # * Setting a link on a text range that overlaps with an existing link will
+                                    #   also update the existing link to point to the new URL.
+                                    # * Links are not settable on newline characters. As a result, setting a link
+                                    #   on a text range that crosses a paragraph boundary, such as `"ABC\n123"`,
+                                    #   will separate the newline character(s) into their own text runs. The
+                                    #   link will be applied separately to the runs before and after the newline.
+                                    # * Removing a link will update the text style of the range to match the
+                                    #   style of the preceding text (or the default text styles if the preceding
+                                    #   text is another link) unless different styles are being set in the same
+                                    #   request.
+                                  "url": "A String", # If set, indicates this is a link to the external web page at this URL.
+                                  "pageObjectId": "A String", # If set, indicates this is a link to the specific page in this
+                                      # presentation with this ID. A page with this ID may not exist.
+                                  "slideIndex": 42, # If set, indicates this is a link to the slide at this zero-based index
+                                      # in the presentation. There may not be a slide at this index.
+                                  "relativeLink": "A String", # If set, indicates this is a link to a slide in this presentation,
+                                      # addressed by its position.
+                                },
+                                "italic": True or False, # Whether or not the text is italicized.
+                                "fontSize": { # A magnitude in a single direction in the specified units. # The size of the text's font. When read, the `font_size` will specified in
+                                    # points.
+                                  "magnitude": 3.14, # The magnitude.
+                                  "unit": "A String", # The units for magnitude.
+                                },
+                                "underline": True or False, # Whether or not the text is underlined.
+                                "backgroundColor": { # A color that can either be fully opaque or fully transparent. # The background color of the text. If set, the color is either opaque or
+                                    # transparent, depending on if the `opaque_color` field in it is set.
+                                  "opaqueColor": { # A themeable solid color value. # If set, this will be used as an opaque color. If unset, this represents
+                                      # a transparent color.
+                                    "themeColor": "A String", # An opaque theme color.
+                                    "rgbColor": { # An RGB color. # An opaque RGB color.
+                                      "blue": 3.14, # The blue component of the color, from 0.0 to 1.0.
+                                      "green": 3.14, # The green component of the color, from 0.0 to 1.0.
+                                      "red": 3.14, # The red component of the color, from 0.0 to 1.0.
+                                    },
+                                  },
+                                },
+                              },
+                            },
+                          },
+                        ],
+                        "lists": { # The bulleted lists contained in this text, keyed by list ID.
+                          "a_key": { # A List describes the look and feel of bullets belonging to paragraphs
+                              # associated with a list. A paragraph that is part of a list has an implicit
+                              # reference to that list's ID.
+                            "nestingLevel": { # A map of nesting levels to the properties of bullets at the associated
+                                # level. A list has at most nine levels of nesting, so the possible values
+                                # for the keys of this map are 0 through 8, inclusive.
+                              "a_key": { # Contains properties describing the look and feel of a list bullet at a given
+                                  # level of nesting.
+                                "bulletStyle": { # Represents the styling that can be applied to a TextRun. # The style of a bullet at this level of nesting.
+                                    #
+                                    # If this text is contained in a shape with a parent placeholder, then these text styles may be
+                                    # inherited from the parent. Which text styles are inherited depend on the
+                                    # nesting level of lists:
+                                    #
+                                    # * A text run in a paragraph that is not in a list will inherit its text style
+                                    #   from the the newline character in the paragraph at the 0 nesting level of
+                                    #   the list inside the parent placeholder.
+                                    # * A text run in a paragraph that is in a list will inherit its text style
+                                    #   from the newline character in the paragraph at its corresponding nesting
+                                    #   level of the list inside the parent placeholder.
+                                    #
+                                    # Inherited text styles are represented as unset fields in this message. If
+                                    # text is contained in a shape without a parent placeholder, unsetting these
+                                    # fields will revert the style to a value matching the defaults in the Slides
+                                    # editor.
+                                  "foregroundColor": { # A color that can either be fully opaque or fully transparent. # The color of the text itself. If set, the color is either opaque or
+                                      # transparent, depending on if the `opaque_color` field in it is set.
+                                    "opaqueColor": { # A themeable solid color value. # If set, this will be used as an opaque color. If unset, this represents
+                                        # a transparent color.
+                                      "themeColor": "A String", # An opaque theme color.
+                                      "rgbColor": { # An RGB color. # An opaque RGB color.
+                                        "blue": 3.14, # The blue component of the color, from 0.0 to 1.0.
+                                        "green": 3.14, # The green component of the color, from 0.0 to 1.0.
+                                        "red": 3.14, # The red component of the color, from 0.0 to 1.0.
+                                      },
+                                    },
+                                  },
+                                  "bold": True or False, # Whether or not the text is bold.
+                                  "baselineOffset": "A String", # The text's vertical offset from its normal position.
+                                      #
+                                      # Text with `SUPERSCRIPT` or `SUBSCRIPT` baseline offsets is automatically
+                                      # rendered in a smaller font size, computed based on the `font_size` field.
+                                      # The `font_size` itself is not affected by changes in this field.
+                                  "strikethrough": True or False, # Whether or not the text is struck through.
+                                  "smallCaps": True or False, # Whether or not the text is in small capital letters.
+                                  "fontFamily": "A String", # The font family of the text.
+                                      #
+                                      # The font family can be any font from the Font menu in Slides or from
+                                      # [Google Fonts] (https://fonts.google.com/). If the font name is
+                                      # unrecognized, the text is rendered in `Arial`.
+                                      #
+                                      # Some fonts can affect the weight of the text. If an update request
+                                      # specifies values for both `font_family` and `bold`, the explicitly-set
+                                      # `bold` value is used.
+                                  "link": { # A hypertext link. # The hyperlink destination of the text. If unset, there is no link. Links
+                                      # are not inherited from parent text.
+                                      #
+                                      # Changing the link in an update request causes some other changes to the
+                                      # text style of the range:
+                                      #
+                                      # * When setting a link, the text foreground color will be set to
+                                      #   ThemeColorType.HYPERLINK and the text will
+                                      #   be underlined. If these fields are modified in the same
+                                      #   request, those values will be used instead of the link defaults.
+                                      # * Setting a link on a text range that overlaps with an existing link will
+                                      #   also update the existing link to point to the new URL.
+                                      # * Links are not settable on newline characters. As a result, setting a link
+                                      #   on a text range that crosses a paragraph boundary, such as `"ABC\n123"`,
+                                      #   will separate the newline character(s) into their own text runs. The
+                                      #   link will be applied separately to the runs before and after the newline.
+                                      # * Removing a link will update the text style of the range to match the
+                                      #   style of the preceding text (or the default text styles if the preceding
+                                      #   text is another link) unless different styles are being set in the same
+                                      #   request.
+                                    "url": "A String", # If set, indicates this is a link to the external web page at this URL.
+                                    "pageObjectId": "A String", # If set, indicates this is a link to the specific page in this
+                                        # presentation with this ID. A page with this ID may not exist.
+                                    "slideIndex": 42, # If set, indicates this is a link to the slide at this zero-based index
+                                        # in the presentation. There may not be a slide at this index.
+                                    "relativeLink": "A String", # If set, indicates this is a link to a slide in this presentation,
+                                        # addressed by its position.
+                                  },
+                                  "italic": True or False, # Whether or not the text is italicized.
+                                  "fontSize": { # A magnitude in a single direction in the specified units. # The size of the text's font. When read, the `font_size` will specified in
+                                      # points.
+                                    "magnitude": 3.14, # The magnitude.
+                                    "unit": "A String", # The units for magnitude.
+                                  },
+                                  "underline": True or False, # Whether or not the text is underlined.
+                                  "backgroundColor": { # A color that can either be fully opaque or fully transparent. # The background color of the text. If set, the color is either opaque or
+                                      # transparent, depending on if the `opaque_color` field in it is set.
+                                    "opaqueColor": { # A themeable solid color value. # If set, this will be used as an opaque color. If unset, this represents
+                                        # a transparent color.
+                                      "themeColor": "A String", # An opaque theme color.
+                                      "rgbColor": { # An RGB color. # An opaque RGB color.
+                                        "blue": 3.14, # The blue component of the color, from 0.0 to 1.0.
+                                        "green": 3.14, # The green component of the color, from 0.0 to 1.0.
+                                        "red": 3.14, # The red component of the color, from 0.0 to 1.0.
+                                      },
+                                    },
+                                  },
+                                },
+                              },
+                            },
+                            "listId": "A String", # The ID of the list.
+                          },
+                        },
+                      },
+                      "rowSpan": 42, # Row span of the cell.
+                      "tableCellProperties": { # The properties of the TableCell. # The properties of the table cell.
+                        "tableCellBackgroundFill": { # The table cell background fill. # The background fill of the table cell. The default fill matches the fill
+                            # for newly created table cells in the Slides editor.
+                          "solidFill": { # A solid color fill. The page or page element is filled entirely with the # Solid color fill.
+                              # specified color value.
+                              #
+                              # If any field is unset, its value may be inherited from a parent placeholder
+                              # if it exists.
+                            "color": { # A themeable solid color value. # The color value of the solid fill.
+                              "themeColor": "A String", # An opaque theme color.
+                              "rgbColor": { # An RGB color. # An opaque RGB color.
+                                "blue": 3.14, # The blue component of the color, from 0.0 to 1.0.
+                                "green": 3.14, # The green component of the color, from 0.0 to 1.0.
+                                "red": 3.14, # The red component of the color, from 0.0 to 1.0.
+                              },
+                            },
+                            "alpha": 3.14, # The fraction of this `color` that should be applied to the pixel.
+                                # That is, the final pixel color is defined by the equation:
+                                #
+                                #   pixel color = alpha * (color) + (1.0 - alpha) * (background color)
+                                #
+                                # This means that a value of 1.0 corresponds to a solid color, whereas
+                                # a value of 0.0 corresponds to a completely transparent color.
+                          },
+                          "propertyState": "A String", # The background fill property state.
+                              #
+                              # Updating the the fill on a table cell will implicitly update this field
+                              # to `RENDERED`, unless another value is specified in the same request. To
+                              # have no fill on a table cell, set this field to `NOT_RENDERED`. In this
+                              # case, any other fill fields set in the same request will be ignored.
+                        },
+                      },
+                      "location": { # A location of a single table cell within a table. # The location of the cell within the table.
+                        "rowIndex": 42, # The 0-based row index.
+                        "columnIndex": 42, # The 0-based column index.
+                      },
+                      "columnSpan": 42, # Column span of the cell.
+                    },
+                  ],
+                  "rowHeight": { # A magnitude in a single direction in the specified units. # Height of a row.
+                    "magnitude": 3.14, # The magnitude.
+                    "unit": "A String", # The units for magnitude.
+                  },
+                },
+              ],
+              "rows": 42, # Number of rows in the table.
+              "columns": 42, # Number of columns in the table.
+            },
+            "line": { # A PageElement kind representing a # A line page element.
+                # line, curved connector, or bent connector.
+              "lineProperties": { # The properties of the Line. # The properties of the line.
+                  #
+                  # When unset, these fields default to values that match the appearance of
+                  # new lines created in the Slides editor.
+                "dashStyle": "A String", # The dash style of the line.
+                "weight": { # A magnitude in a single direction in the specified units. # The thickness of the line.
+                  "magnitude": 3.14, # The magnitude.
+                  "unit": "A String", # The units for magnitude.
+                },
+                "endArrow": "A String", # The style of the arrow at the end of the line.
+                "link": { # A hypertext link. # The hyperlink destination of the line. If unset, there is no link.
+                  "url": "A String", # If set, indicates this is a link to the external web page at this URL.
+                  "pageObjectId": "A String", # If set, indicates this is a link to the specific page in this
+                      # presentation with this ID. A page with this ID may not exist.
+                  "slideIndex": 42, # If set, indicates this is a link to the slide at this zero-based index
+                      # in the presentation. There may not be a slide at this index.
+                  "relativeLink": "A String", # If set, indicates this is a link to a slide in this presentation,
+                      # addressed by its position.
+                },
+                "startArrow": "A String", # The style of the arrow at the beginning of the line.
+                "lineFill": { # The fill of the line. # The fill of the line. The default line fill matches the defaults for new
+                    # lines created in the Slides editor.
+                  "solidFill": { # A solid color fill. The page or page element is filled entirely with the # Solid color fill.
+                      # specified color value.
+                      #
+                      # If any field is unset, its value may be inherited from a parent placeholder
+                      # if it exists.
+                    "color": { # A themeable solid color value. # The color value of the solid fill.
+                      "themeColor": "A String", # An opaque theme color.
+                      "rgbColor": { # An RGB color. # An opaque RGB color.
+                        "blue": 3.14, # The blue component of the color, from 0.0 to 1.0.
+                        "green": 3.14, # The green component of the color, from 0.0 to 1.0.
+                        "red": 3.14, # The red component of the color, from 0.0 to 1.0.
+                      },
+                    },
+                    "alpha": 3.14, # The fraction of this `color` that should be applied to the pixel.
+                        # That is, the final pixel color is defined by the equation:
+                        #
+                        #   pixel color = alpha * (color) + (1.0 - alpha) * (background color)
+                        #
+                        # This means that a value of 1.0 corresponds to a solid color, whereas
+                        # a value of 0.0 corresponds to a completely transparent color.
+                  },
+                },
+              },
+              "lineType": "A String", # The type of the line.
+            },
+            "size": { # A width and height. # The size of the page element.
+              "width": { # A magnitude in a single direction in the specified units. # The width of the object.
+                "magnitude": 3.14, # The magnitude.
+                "unit": "A String", # The units for magnitude.
+              },
+              "height": { # A magnitude in a single direction in the specified units. # The height of the object.
+                "magnitude": 3.14, # The magnitude.
+                "unit": "A String", # The units for magnitude.
+              },
+            },
+            "elementGroup": { # A PageElement kind representing a # A collection of page elements joined as a single unit.
+                # joined collection of PageElements.
+              "children": [ # The collection of elements in the group. The minimum size of a group is 2.
+                # Object with schema name: PageElement
+              ],
+            },
+          },
+        ],
+        "objectId": "A String", # The object ID for this page. Object IDs used by
+            # Page and
+            # PageElement share the same namespace.
+        "pageProperties": { # The properties of the Page. # The properties of the page.
+            #
+            # The page will inherit properties from the parent page. Depending on the page
+            # type the hierarchy is defined in either
+            # SlideProperties or
+            # LayoutProperties.
+          "pageBackgroundFill": { # The page background fill. # The background fill of the page. If unset, the background fill is inherited
+              # from a parent page if it exists. If the page has no parent, then the
+              # background fill defaults to the corresponding fill in the Slides editor.
+            "solidFill": { # A solid color fill. The page or page element is filled entirely with the # Solid color fill.
+                # specified color value.
+                #
+                # If any field is unset, its value may be inherited from a parent placeholder
+                # if it exists.
+              "color": { # A themeable solid color value. # The color value of the solid fill.
+                "themeColor": "A String", # An opaque theme color.
+                "rgbColor": { # An RGB color. # An opaque RGB color.
+                  "blue": 3.14, # The blue component of the color, from 0.0 to 1.0.
+                  "green": 3.14, # The green component of the color, from 0.0 to 1.0.
+                  "red": 3.14, # The red component of the color, from 0.0 to 1.0.
+                },
+              },
+              "alpha": 3.14, # The fraction of this `color` that should be applied to the pixel.
+                  # That is, the final pixel color is defined by the equation:
+                  #
+                  #   pixel color = alpha * (color) + (1.0 - alpha) * (background color)
+                  #
+                  # This means that a value of 1.0 corresponds to a solid color, whereas
+                  # a value of 0.0 corresponds to a completely transparent color.
+            },
+            "propertyState": "A String", # The background fill property state.
+                #
+                # Updating the the fill on a page will implicitly update this field to
+                # `RENDERED`, unless another value is specified in the same request. To
+                # have no fill on a page, set this field to `NOT_RENDERED`. In this case,
+                # any other fill fields set in the same request will be ignored.
+            "stretchedPictureFill": { # The stretched picture fill. The page or page element is filled entirely with # Stretched picture fill.
+                # the specified picture. The picture is stretched to fit its container.
+              "contentUrl": "A String", # Reading the content_url:
+                  #
+                  # An URL to a picture with a default lifetime of 30 minutes.
+                  # This URL is tagged with the account of the requester. Anyone with the URL
+                  # effectively accesses the picture as the original requester. Access to the
+                  # picture may be lost if the presentation's sharing settings change.
+                  #
+                  # Writing the content_url:
+                  #
+                  # The picture is fetched once at insertion time and a copy is stored for
+                  # display inside the presentation. Pictures must be less than 50MB in size,
+                  # cannot exceed 25 megapixels, and must be in either in PNG, JPEG, or GIF
+                  # format.
+              "size": { # A width and height. # The original size of the picture fill. This field is read-only.
+                "width": { # A magnitude in a single direction in the specified units. # The width of the object.
+                  "magnitude": 3.14, # The magnitude.
+                  "unit": "A String", # The units for magnitude.
+                },
+                "height": { # A magnitude in a single direction in the specified units. # The height of the object.
+                  "magnitude": 3.14, # The magnitude.
+                  "unit": "A String", # The units for magnitude.
+                },
+              },
+            },
+          },
+          "colorScheme": { # The palette of predefined colors for a page. # The color scheme of the page. If unset, the color scheme is inherited from
+              # a parent page. If the page has no parent, the color scheme uses a default
+              # Slides color scheme. This field is read-only.
+            "colors": [ # The ThemeColorType and corresponding concrete color pairs.
+              { # A pair mapping a theme color type to the concrete color it represents.
+                "color": { # An RGB color. # The concrete color corresponding to the theme color type above.
+                  "blue": 3.14, # The blue component of the color, from 0.0 to 1.0.
+                  "green": 3.14, # The green component of the color, from 0.0 to 1.0.
+                  "red": 3.14, # The red component of the color, from 0.0 to 1.0.
+                },
+                "type": "A String", # The type of the theme color.
+              },
+            ],
+          },
+        },
+        "pageType": "A String", # The type of the page.
+        "slideProperties": { # The properties of Page that are only # Slide specific properties. Only set if page_type = SLIDE.
+            # relevant for pages with page_type SLIDE.
+          "masterObjectId": "A String", # The object ID of the master that this slide is based on.
+          "layoutObjectId": "A String", # The object ID of the layout that this slide is based on.
+        },
+      },
+    ],
+    "layouts": [ # The layouts in the presentation. A layout is a template that determines
+        # how content is arranged and styled on the slides that inherit from that
+        # layout.
+      { # A page in a presentation.
+        "layoutProperties": { # The properties of Page are only # Layout specific properties. Only set if page_type = LAYOUT.
+            # relevant for pages with page_type LAYOUT.
+          "displayName": "A String", # The human readable name of the layout in the presentation's locale.
+          "name": "A String", # The name of the layout.
+          "masterObjectId": "A String", # The object ID of the master that this layout is based on.
+        },
+        "pageElements": [ # The page elements rendered on the page.
+          { # A visual element rendered on a page.
+            "wordArt": { # A PageElement kind representing # A word art page element.
+                # word art.
+              "renderedText": "A String", # The text rendered as word art.
+            },
+            "description": "A String", # The description of the page element. Combined with title to display alt
+                # text.
+            "objectId": "A String", # The object ID for this page element. Object IDs used by
+                # google.apps.slides.v1.Page and
+                # google.apps.slides.v1.PageElement share the same namespace.
+            "title": "A String", # The title of the page element. Combined with description to display alt
+                # text.
+            "image": { # A PageElement kind representing an # An image page element.
+                # image.
+              "contentUrl": "A String", # An URL to an image with a default lifetime of 30 minutes.
+                  # This URL is tagged with the account of the requester. Anyone with the URL
+                  # effectively accesses the image as the original requester. Access to the
+                  # image may be lost if the presentation's sharing settings change.
+              "imageProperties": { # The properties of the Image. # The properties of the image.
+                "outline": { # The outline of a PageElement. # The outline of the image. If not set, the the image has no outline.
+                    #
+                    # If these fields are unset, they may be inherited from a parent placeholder
+                    # if it exists. If there is no parent, the fields will default to the value
+                    # used for new page elements created in the Slides editor, which may depend on
+                    # the page element kind.
+                  "dashStyle": "A String", # The dash style of the outline.
+                  "propertyState": "A String", # The outline property state.
+                      #
+                      # Updating the the outline on a page element will implicitly update this
+                      # field to`RENDERED`, unless another value is specified in the same request.
+                      # To have no outline on a page element, set this field to `NOT_RENDERED`. In
+                      # this case, any other outline fields set in the same request will be
+                      # ignored.
+                  "outlineFill": { # The fill of the outline. # The fill of the outline.
+                    "solidFill": { # A solid color fill. The page or page element is filled entirely with the # Solid color fill.
+                        # specified color value.
+                        #
+                        # If any field is unset, its value may be inherited from a parent placeholder
+                        # if it exists.
+                      "color": { # A themeable solid color value. # The color value of the solid fill.
+                        "themeColor": "A String", # An opaque theme color.
+                        "rgbColor": { # An RGB color. # An opaque RGB color.
+                          "blue": 3.14, # The blue component of the color, from 0.0 to 1.0.
+                          "green": 3.14, # The green component of the color, from 0.0 to 1.0.
+                          "red": 3.14, # The red component of the color, from 0.0 to 1.0.
+                        },
+                      },
+                      "alpha": 3.14, # The fraction of this `color` that should be applied to the pixel.
+                          # That is, the final pixel color is defined by the equation:
+                          #
+                          #   pixel color = alpha * (color) + (1.0 - alpha) * (background color)
+                          #
+                          # This means that a value of 1.0 corresponds to a solid color, whereas
+                          # a value of 0.0 corresponds to a completely transparent color.
+                    },
+                  },
+                  "weight": { # A magnitude in a single direction in the specified units. # The thickness of the outline.
+                    "magnitude": 3.14, # The magnitude.
+                    "unit": "A String", # The units for magnitude.
+                  },
+                },
+                "brightness": 3.14, # The brightness effect of the image. The value should be in the interval
+                    # [-1.0, 1.0], where 0 means no effect. This property is read-only.
+                "recolor": { # A recolor effect applied on an image. # The recolor effect of the image. If not set, the image is not recolored.
+                    # This property is read-only.
+                  "recolorStops": [ # The recolor effect is represented by a gradient, which is a list of color
+                      # stops. This property is read-only.
+                    { # A color and position in a gradient band.
+                      "color": { # A themeable solid color value. # The color of the gradient stop.
+                        "themeColor": "A String", # An opaque theme color.
+                        "rgbColor": { # An RGB color. # An opaque RGB color.
+                          "blue": 3.14, # The blue component of the color, from 0.0 to 1.0.
+                          "green": 3.14, # The green component of the color, from 0.0 to 1.0.
+                          "red": 3.14, # The red component of the color, from 0.0 to 1.0.
+                        },
+                      },
+                      "position": 3.14, # The relative position of the color stop in the gradient band measured
+                          # in percentage. The value should be in the interval [0.0, 1.0].
+                      "alpha": 3.14, # The alpha value of this color in the gradient band. Defaults to 1.0,
+                          # fully opaque.
+                    },
+                  ],
+                },
+                "link": { # A hypertext link. # The hyperlink destination of the image. If unset, there is no link.
+                  "url": "A String", # If set, indicates this is a link to the external web page at this URL.
+                  "pageObjectId": "A String", # If set, indicates this is a link to the specific page in this
+                      # presentation with this ID. A page with this ID may not exist.
+                  "slideIndex": 42, # If set, indicates this is a link to the slide at this zero-based index
+                      # in the presentation. There may not be a slide at this index.
+                  "relativeLink": "A String", # If set, indicates this is a link to a slide in this presentation,
+                      # addressed by its position.
+                },
+                "transparency": 3.14, # The transparency effect of the image. The value should be in the interval
+                    # [0.0, 1.0], where 0 means no effect and 1 means completely transparent.
+                    # This property is read-only.
+                "cropProperties": { # The crop properties of an object enclosed in a container. For example, an # The crop properties of the image. If not set, the image is not cropped.
+                    # This property is read-only.
+                    # Image.
+                    #
+                    # The crop properties is represented by the offsets of four edges which define
+                    # a crop rectangle. The offsets are measured in percentage from the
+                    # corresponding edges of the object's original bounding rectangle towards
+                    # inside, relative to the object's original dimensions.
+                    #
+                    # - If the offset is in the interval (0, 1), the corresponding edge of crop
+                    # rectangle is positioned inside of the object's original bounding rectangle.
+                    # - If the offset is negative or greater than 1, the corresponding edge of crop
+                    # rectangle is positioned outside of the object's original bounding rectangle.
+                    # - If the left edge of the crop rectangle is on the right side of its right
+                    # edge, the object will be flipped horizontally.
+                    # - If the top edge of the crop rectangle is below its bottom edge, the object
+                    # will be flipped vertically.
+                    # - If all offsets and rotation angle is 0, the object is not cropped.
+                    #
+                    # After cropping, the content in the crop rectangle will be stretched to fit
+                    # its container.
+                  "leftOffset": 3.14, # The offset specifies the left edge of the crop rectangle that is located to
+                      # the right of the original bounding rectangle left edge, relative to the
+                      # object's original width.
+                  "angle": 3.14, # The rotation angle of the crop window around its center, in radians.
+                      # Rotation angle is applied after the offset.
+                  "bottomOffset": 3.14, # The offset specifies the bottom edge of the crop rectangle that is located
+                      # above the original bounding rectangle bottom edge, relative to the object's
+                      # original height.
+                  "rightOffset": 3.14, # The offset specifies the right edge of the crop rectangle that is located
+                      # to the left of the original bounding rectangle right edge, relative to the
+                      # object's original width.
+                  "topOffset": 3.14, # The offset specifies the top edge of the crop rectangle that is located
+                      # below the original bounding rectangle top edge, relative to the object's
+                      # original height.
+                },
+                "shadow": { # The shadow properties of a page element. # The shadow of the image. If not set, the image has no shadow. This property
+                    # is read-only.
+                    #
+                    # If these fields are unset, they may be inherited from a parent placeholder
+                    # if it exists. If there is no parent, the fields will default to the value
+                    # used for new page elements created in the Slides editor, which may depend on
+                    # the page element kind.
+                  "color": { # A themeable solid color value. # The shadow color value.
+                    "themeColor": "A String", # An opaque theme color.
+                    "rgbColor": { # An RGB color. # An opaque RGB color.
+                      "blue": 3.14, # The blue component of the color, from 0.0 to 1.0.
+                      "green": 3.14, # The green component of the color, from 0.0 to 1.0.
+                      "red": 3.14, # The red component of the color, from 0.0 to 1.0.
+                    },
+                  },
+                  "transform": { # AffineTransform uses a 3x3 matrix with an implied last row of [ 0 0 1 ] # Transform that encodes the translate, scale, and skew of the shadow,
+                      # relative to the alignment position.
+                      # to transform source coordinates (x,y) into destination coordinates (x', y')
+                      # according to:
+                      #
+                      #       x'  x  =   shear_y  scale_y  translate_y
+                      #       1  [ 1 ]
+                      #
+                      # After transformation,
+                      #
+                      #      x' = scale_x * x + shear_x * y + translate_x;
+                      #      y' = scale_y * y + shear_y * x + translate_y;
+                      #
+                      # This message is therefore composed of these six matrix elements.
+                    "translateX": 3.14, # The X coordinate translation element.
+                    "translateY": 3.14, # The Y coordinate translation element.
+                    "scaleX": 3.14, # The X coordinate scaling element.
+                    "scaleY": 3.14, # The Y coordinate scaling element.
+                    "shearY": 3.14, # The Y coordinate shearing element.
+                    "shearX": 3.14, # The X coordinate shearing element.
+                    "unit": "A String", # The units for translate elements.
+                  },
+                  "propertyState": "A String", # The shadow property state.
+                      #
+                      # Updating the the shadow on a page element will implicitly update this field
+                      # to `RENDERED`, unless another value is specified in the same request. To
+                      # have no shadow on a page element, set this field to `NOT_RENDERED`. In this
+                      # case, any other shadow fields set in the same request will be ignored.
+                  "blurRadius": { # A magnitude in a single direction in the specified units. # The radius of the shadow blur. The larger the radius, the more diffuse the
+                      # shadow becomes.
+                    "magnitude": 3.14, # The magnitude.
+                    "unit": "A String", # The units for magnitude.
+                  },
+                  "alpha": 3.14, # The alpha of the shadow's color, from 0.0 to 1.0.
+                  "type": "A String", # The type of the shadow.
+                  "alignment": "A String", # The alignment point of the shadow, that sets the origin for translate,
+                      # scale and skew of the shadow.
+                  "rotateWithShape": True or False, # Whether the shadow should rotate with the shape.
+                },
+                "contrast": 3.14, # The contrast effect of the image. The value should be in the interval
+                    # [-1.0, 1.0], where 0 means no effect. This property is read-only.
+              },
+            },
+            "transform": { # AffineTransform uses a 3x3 matrix with an implied last row of [ 0 0 1 ] # The transform of the page element.
+                # to transform source coordinates (x,y) into destination coordinates (x', y')
+                # according to:
+                #
+                #       x'  x  =   shear_y  scale_y  translate_y
+                #       1  [ 1 ]
+                #
+                # After transformation,
+                #
+                #      x' = scale_x * x + shear_x * y + translate_x;
+                #      y' = scale_y * y + shear_y * x + translate_y;
+                #
+                # This message is therefore composed of these six matrix elements.
+              "translateX": 3.14, # The X coordinate translation element.
+              "translateY": 3.14, # The Y coordinate translation element.
+              "scaleX": 3.14, # The X coordinate scaling element.
+              "scaleY": 3.14, # The Y coordinate scaling element.
+              "shearY": 3.14, # The Y coordinate shearing element.
+              "shearX": 3.14, # The X coordinate shearing element.
+              "unit": "A String", # The units for translate elements.
+            },
+            "shape": { # A PageElement kind representing a # A generic shape.
+                # generic shape that does not have a more specific classification.
+              "text": { # The general text content. The text must reside in a compatible shape (e.g. # The text content of the shape.
+                  # text box or rectangle) or a table cell in a page.
+                "textElements": [ # The text contents broken down into its component parts, including styling
+                    # information. This property is read-only.
+                  { # A TextElement describes the content of a range of indices in the text content
+                      # of a Shape or TableCell.
+                    "autoText": { # A TextElement kind that represents auto text. # A TextElement representing a spot in the text that is dynamically
+                        # replaced with content that can change over time.
+                      "content": "A String", # The rendered content of this auto text, if available.
+                      "style": { # Represents the styling that can be applied to a TextRun. # The styling applied to this auto text.
+                          #
+                          # If this text is contained in a shape with a parent placeholder, then these text styles may be
+                          # inherited from the parent. Which text styles are inherited depend on the
+                          # nesting level of lists:
+                          #
+                          # * A text run in a paragraph that is not in a list will inherit its text style
+                          #   from the the newline character in the paragraph at the 0 nesting level of
+                          #   the list inside the parent placeholder.
+                          # * A text run in a paragraph that is in a list will inherit its text style
+                          #   from the newline character in the paragraph at its corresponding nesting
+                          #   level of the list inside the parent placeholder.
+                          #
+                          # Inherited text styles are represented as unset fields in this message. If
+                          # text is contained in a shape without a parent placeholder, unsetting these
+                          # fields will revert the style to a value matching the defaults in the Slides
+                          # editor.
+                        "foregroundColor": { # A color that can either be fully opaque or fully transparent. # The color of the text itself. If set, the color is either opaque or
+                            # transparent, depending on if the `opaque_color` field in it is set.
+                          "opaqueColor": { # A themeable solid color value. # If set, this will be used as an opaque color. If unset, this represents
+                              # a transparent color.
+                            "themeColor": "A String", # An opaque theme color.
+                            "rgbColor": { # An RGB color. # An opaque RGB color.
+                              "blue": 3.14, # The blue component of the color, from 0.0 to 1.0.
+                              "green": 3.14, # The green component of the color, from 0.0 to 1.0.
+                              "red": 3.14, # The red component of the color, from 0.0 to 1.0.
+                            },
+                          },
+                        },
+                        "bold": True or False, # Whether or not the text is bold.
+                        "baselineOffset": "A String", # The text's vertical offset from its normal position.
+                            #
+                            # Text with `SUPERSCRIPT` or `SUBSCRIPT` baseline offsets is automatically
+                            # rendered in a smaller font size, computed based on the `font_size` field.
+                            # The `font_size` itself is not affected by changes in this field.
+                        "strikethrough": True or False, # Whether or not the text is struck through.
+                        "smallCaps": True or False, # Whether or not the text is in small capital letters.
+                        "fontFamily": "A String", # The font family of the text.
+                            #
+                            # The font family can be any font from the Font menu in Slides or from
+                            # [Google Fonts] (https://fonts.google.com/). If the font name is
+                            # unrecognized, the text is rendered in `Arial`.
+                            #
+                            # Some fonts can affect the weight of the text. If an update request
+                            # specifies values for both `font_family` and `bold`, the explicitly-set
+                            # `bold` value is used.
+                        "link": { # A hypertext link. # The hyperlink destination of the text. If unset, there is no link. Links
+                            # are not inherited from parent text.
+                            #
+                            # Changing the link in an update request causes some other changes to the
+                            # text style of the range:
+                            #
+                            # * When setting a link, the text foreground color will be set to
+                            #   ThemeColorType.HYPERLINK and the text will
+                            #   be underlined. If these fields are modified in the same
+                            #   request, those values will be used instead of the link defaults.
+                            # * Setting a link on a text range that overlaps with an existing link will
+                            #   also update the existing link to point to the new URL.
+                            # * Links are not settable on newline characters. As a result, setting a link
+                            #   on a text range that crosses a paragraph boundary, such as `"ABC\n123"`,
+                            #   will separate the newline character(s) into their own text runs. The
+                            #   link will be applied separately to the runs before and after the newline.
+                            # * Removing a link will update the text style of the range to match the
+                            #   style of the preceding text (or the default text styles if the preceding
+                            #   text is another link) unless different styles are being set in the same
+                            #   request.
+                          "url": "A String", # If set, indicates this is a link to the external web page at this URL.
+                          "pageObjectId": "A String", # If set, indicates this is a link to the specific page in this
+                              # presentation with this ID. A page with this ID may not exist.
+                          "slideIndex": 42, # If set, indicates this is a link to the slide at this zero-based index
+                              # in the presentation. There may not be a slide at this index.
+                          "relativeLink": "A String", # If set, indicates this is a link to a slide in this presentation,
+                              # addressed by its position.
+                        },
+                        "italic": True or False, # Whether or not the text is italicized.
+                        "fontSize": { # A magnitude in a single direction in the specified units. # The size of the text's font. When read, the `font_size` will specified in
+                            # points.
+                          "magnitude": 3.14, # The magnitude.
+                          "unit": "A String", # The units for magnitude.
+                        },
+                        "underline": True or False, # Whether or not the text is underlined.
+                        "backgroundColor": { # A color that can either be fully opaque or fully transparent. # The background color of the text. If set, the color is either opaque or
+                            # transparent, depending on if the `opaque_color` field in it is set.
+                          "opaqueColor": { # A themeable solid color value. # If set, this will be used as an opaque color. If unset, this represents
+                              # a transparent color.
+                            "themeColor": "A String", # An opaque theme color.
+                            "rgbColor": { # An RGB color. # An opaque RGB color.
+                              "blue": 3.14, # The blue component of the color, from 0.0 to 1.0.
+                              "green": 3.14, # The green component of the color, from 0.0 to 1.0.
+                              "red": 3.14, # The red component of the color, from 0.0 to 1.0.
+                            },
+                          },
+                        },
+                      },
+                      "type": "A String", # The type of this auto text.
+                    },
+                    "endIndex": 42, # The zero-based end index of this text element, exclusive, in Unicode code
+                        # units.
+                    "startIndex": 42, # The zero-based start index of this text element, in Unicode code units.
+                    "paragraphMarker": { # A TextElement kind that represents the beginning of a new paragraph. # A marker representing the beginning of a new paragraph.
+                        #
+                        # The `start_index` and `end_index` of this TextElement represent the
+                        # range of the paragraph. Other TextElements with an index range contained
+                        # inside this paragraph's range are considered to be part of this
+                        # paragraph. The range of indices of two separate paragraphs will never
+                        # overlap.
+                      "style": { # Styles that apply to a whole paragraph. # The paragraph's style
+                          #
+                          # If this text is contained in a shape with a parent placeholder, then these paragraph styles may be
+                          # inherited from the parent. Which paragraph styles are inherited depend on the
+                          # nesting level of lists:
+                          #
+                          # * A paragraph not in a list will inherit its paragraph style from the
+                          #   paragraph at the 0 nesting level of the list inside the parent placeholder.
+                          # * A paragraph in a list will inherit its paragraph style from the paragraph
+                          #   at its corresponding nesting level of the list inside the parent
+                          #   placeholder.
+                          #
+                          # Inherited paragraph styles are represented as unset fields in this message.
+                        "spacingMode": "A String", # The spacing mode for the paragraph. This property is read-only.
+                        "direction": "A String", # The text direction of this paragraph. This property is read-only.
+                        "spaceBelow": { # A magnitude in a single direction in the specified units. # The amount of extra space above the paragraph. If unset, the value is
+                            # inherited from the parent. This property is read-only.
+                          "magnitude": 3.14, # The magnitude.
+                          "unit": "A String", # The units for magnitude.
+                        },
+                        "lineSpacing": 3.14, # The amount of space between lines, as a percentage of normal, where normal
+                            # is represented as 100.0. If unset, the value is inherited from the parent.
+                            # This property is read-only.
+                        "indentStart": { # A magnitude in a single direction in the specified units. # The amount indentation for the paragraph on the side that corresponds to
+                            # the start of the text, based on the current text direction. If unset, the
+                            # value is inherited from the parent. This property is read-only.
+                          "magnitude": 3.14, # The magnitude.
+                          "unit": "A String", # The units for magnitude.
+                        },
+                        "spaceAbove": { # A magnitude in a single direction in the specified units. # The amount of extra space above the paragraph. If unset, the value is
+                            # inherited from the parent. This property is read-only.
+                          "magnitude": 3.14, # The magnitude.
+                          "unit": "A String", # The units for magnitude.
+                        },
+                        "indentEnd": { # A magnitude in a single direction in the specified units. # The amount indentation for the paragraph on the side that corresponds to
+                            # the end of the text, based on the current text direction. If unset, the
+                            # value is inherited from the parent. This property is read-only.
+                          "magnitude": 3.14, # The magnitude.
+                          "unit": "A String", # The units for magnitude.
+                        },
+                        "indentFirstLine": { # A magnitude in a single direction in the specified units. # The amount of indentation for the start of the first line of the paragraph.
+                            # If unset, the value is inherited from the parent. This property is
+                            # read-only.
+                          "magnitude": 3.14, # The magnitude.
+                          "unit": "A String", # The units for magnitude.
+                        },
+                        "alignment": "A String", # The text alignment for this paragraph. This property is read-only.
+                      },
+                      "bullet": { # Describes the bullet of a paragraph. # The bullet for this paragraph. If not present, the paragraph does not
+                          # belong to a list.
+                        "nestingLevel": 42, # The nesting level of this paragraph in the list.
+                        "listId": "A String", # The ID of the list this paragraph belongs to.
+                        "bulletStyle": { # Represents the styling that can be applied to a TextRun. # The paragraph specific text style applied to this bullet.
+                            #
+                            # If this text is contained in a shape with a parent placeholder, then these text styles may be
+                            # inherited from the parent. Which text styles are inherited depend on the
+                            # nesting level of lists:
+                            #
+                            # * A text run in a paragraph that is not in a list will inherit its text style
+                            #   from the the newline character in the paragraph at the 0 nesting level of
+                            #   the list inside the parent placeholder.
+                            # * A text run in a paragraph that is in a list will inherit its text style
+                            #   from the newline character in the paragraph at its corresponding nesting
+                            #   level of the list inside the parent placeholder.
+                            #
+                            # Inherited text styles are represented as unset fields in this message. If
+                            # text is contained in a shape without a parent placeholder, unsetting these
+                            # fields will revert the style to a value matching the defaults in the Slides
+                            # editor.
+                          "foregroundColor": { # A color that can either be fully opaque or fully transparent. # The color of the text itself. If set, the color is either opaque or
+                              # transparent, depending on if the `opaque_color` field in it is set.
+                            "opaqueColor": { # A themeable solid color value. # If set, this will be used as an opaque color. If unset, this represents
+                                # a transparent color.
+                              "themeColor": "A String", # An opaque theme color.
+                              "rgbColor": { # An RGB color. # An opaque RGB color.
+                                "blue": 3.14, # The blue component of the color, from 0.0 to 1.0.
+                                "green": 3.14, # The green component of the color, from 0.0 to 1.0.
+                                "red": 3.14, # The red component of the color, from 0.0 to 1.0.
+                              },
+                            },
+                          },
+                          "bold": True or False, # Whether or not the text is bold.
+                          "baselineOffset": "A String", # The text's vertical offset from its normal position.
+                              #
+                              # Text with `SUPERSCRIPT` or `SUBSCRIPT` baseline offsets is automatically
+                              # rendered in a smaller font size, computed based on the `font_size` field.
+                              # The `font_size` itself is not affected by changes in this field.
+                          "strikethrough": True or False, # Whether or not the text is struck through.
+                          "smallCaps": True or False, # Whether or not the text is in small capital letters.
+                          "fontFamily": "A String", # The font family of the text.
+                              #
+                              # The font family can be any font from the Font menu in Slides or from
+                              # [Google Fonts] (https://fonts.google.com/). If the font name is
+                              # unrecognized, the text is rendered in `Arial`.
+                              #
+                              # Some fonts can affect the weight of the text. If an update request
+                              # specifies values for both `font_family` and `bold`, the explicitly-set
+                              # `bold` value is used.
+                          "link": { # A hypertext link. # The hyperlink destination of the text. If unset, there is no link. Links
+                              # are not inherited from parent text.
+                              #
+                              # Changing the link in an update request causes some other changes to the
+                              # text style of the range:
+                              #
+                              # * When setting a link, the text foreground color will be set to
+                              #   ThemeColorType.HYPERLINK and the text will
+                              #   be underlined. If these fields are modified in the same
+                              #   request, those values will be used instead of the link defaults.
+                              # * Setting a link on a text range that overlaps with an existing link will
+                              #   also update the existing link to point to the new URL.
+                              # * Links are not settable on newline characters. As a result, setting a link
+                              #   on a text range that crosses a paragraph boundary, such as `"ABC\n123"`,
+                              #   will separate the newline character(s) into their own text runs. The
+                              #   link will be applied separately to the runs before and after the newline.
+                              # * Removing a link will update the text style of the range to match the
+                              #   style of the preceding text (or the default text styles if the preceding
+                              #   text is another link) unless different styles are being set in the same
+                              #   request.
+                            "url": "A String", # If set, indicates this is a link to the external web page at this URL.
+                            "pageObjectId": "A String", # If set, indicates this is a link to the specific page in this
+                                # presentation with this ID. A page with this ID may not exist.
+                            "slideIndex": 42, # If set, indicates this is a link to the slide at this zero-based index
+                                # in the presentation. There may not be a slide at this index.
+                            "relativeLink": "A String", # If set, indicates this is a link to a slide in this presentation,
+                                # addressed by its position.
+                          },
+                          "italic": True or False, # Whether or not the text is italicized.
+                          "fontSize": { # A magnitude in a single direction in the specified units. # The size of the text's font. When read, the `font_size` will specified in
+                              # points.
+                            "magnitude": 3.14, # The magnitude.
+                            "unit": "A String", # The units for magnitude.
+                          },
+                          "underline": True or False, # Whether or not the text is underlined.
+                          "backgroundColor": { # A color that can either be fully opaque or fully transparent. # The background color of the text. If set, the color is either opaque or
+                              # transparent, depending on if the `opaque_color` field in it is set.
+                            "opaqueColor": { # A themeable solid color value. # If set, this will be used as an opaque color. If unset, this represents
+                                # a transparent color.
+                              "themeColor": "A String", # An opaque theme color.
+                              "rgbColor": { # An RGB color. # An opaque RGB color.
+                                "blue": 3.14, # The blue component of the color, from 0.0 to 1.0.
+                                "green": 3.14, # The green component of the color, from 0.0 to 1.0.
+                                "red": 3.14, # The red component of the color, from 0.0 to 1.0.
+                              },
+                            },
+                          },
+                        },
+                        "glyph": "A String", # The rendered bullet glyph for this paragraph.
+                      },
+                    },
+                    "textRun": { # A TextElement kind that represents a run of text that all has the same # A TextElement representing a run of text where all of the characters
+                        # in the run have the same TextStyle.
+                        #
+                        # The `start_index` and `end_index` of TextRuns will always be fully
+                        # contained in the index range of a single `paragraph_marker` TextElement.
+                        # In other words, a TextRun will never span multiple paragraphs.
+                        # styling.
+                      "content": "A String", # The text of this run.
+                      "style": { # Represents the styling that can be applied to a TextRun. # The styling applied to this run.
+                          #
+                          # If this text is contained in a shape with a parent placeholder, then these text styles may be
+                          # inherited from the parent. Which text styles are inherited depend on the
+                          # nesting level of lists:
+                          #
+                          # * A text run in a paragraph that is not in a list will inherit its text style
+                          #   from the the newline character in the paragraph at the 0 nesting level of
+                          #   the list inside the parent placeholder.
+                          # * A text run in a paragraph that is in a list will inherit its text style
+                          #   from the newline character in the paragraph at its corresponding nesting
+                          #   level of the list inside the parent placeholder.
+                          #
+                          # Inherited text styles are represented as unset fields in this message. If
+                          # text is contained in a shape without a parent placeholder, unsetting these
+                          # fields will revert the style to a value matching the defaults in the Slides
+                          # editor.
+                        "foregroundColor": { # A color that can either be fully opaque or fully transparent. # The color of the text itself. If set, the color is either opaque or
+                            # transparent, depending on if the `opaque_color` field in it is set.
+                          "opaqueColor": { # A themeable solid color value. # If set, this will be used as an opaque color. If unset, this represents
+                              # a transparent color.
+                            "themeColor": "A String", # An opaque theme color.
+                            "rgbColor": { # An RGB color. # An opaque RGB color.
+                              "blue": 3.14, # The blue component of the color, from 0.0 to 1.0.
+                              "green": 3.14, # The green component of the color, from 0.0 to 1.0.
+                              "red": 3.14, # The red component of the color, from 0.0 to 1.0.
+                            },
+                          },
+                        },
+                        "bold": True or False, # Whether or not the text is bold.
+                        "baselineOffset": "A String", # The text's vertical offset from its normal position.
+                            #
+                            # Text with `SUPERSCRIPT` or `SUBSCRIPT` baseline offsets is automatically
+                            # rendered in a smaller font size, computed based on the `font_size` field.
+                            # The `font_size` itself is not affected by changes in this field.
+                        "strikethrough": True or False, # Whether or not the text is struck through.
+                        "smallCaps": True or False, # Whether or not the text is in small capital letters.
+                        "fontFamily": "A String", # The font family of the text.
+                            #
+                            # The font family can be any font from the Font menu in Slides or from
+                            # [Google Fonts] (https://fonts.google.com/). If the font name is
+                            # unrecognized, the text is rendered in `Arial`.
+                            #
+                            # Some fonts can affect the weight of the text. If an update request
+                            # specifies values for both `font_family` and `bold`, the explicitly-set
+                            # `bold` value is used.
+                        "link": { # A hypertext link. # The hyperlink destination of the text. If unset, there is no link. Links
+                            # are not inherited from parent text.
+                            #
+                            # Changing the link in an update request causes some other changes to the
+                            # text style of the range:
+                            #
+                            # * When setting a link, the text foreground color will be set to
+                            #   ThemeColorType.HYPERLINK and the text will
+                            #   be underlined. If these fields are modified in the same
+                            #   request, those values will be used instead of the link defaults.
+                            # * Setting a link on a text range that overlaps with an existing link will
+                            #   also update the existing link to point to the new URL.
+                            # * Links are not settable on newline characters. As a result, setting a link
+                            #   on a text range that crosses a paragraph boundary, such as `"ABC\n123"`,
+                            #   will separate the newline character(s) into their own text runs. The
+                            #   link will be applied separately to the runs before and after the newline.
+                            # * Removing a link will update the text style of the range to match the
+                            #   style of the preceding text (or the default text styles if the preceding
+                            #   text is another link) unless different styles are being set in the same
+                            #   request.
+                          "url": "A String", # If set, indicates this is a link to the external web page at this URL.
+                          "pageObjectId": "A String", # If set, indicates this is a link to the specific page in this
+                              # presentation with this ID. A page with this ID may not exist.
+                          "slideIndex": 42, # If set, indicates this is a link to the slide at this zero-based index
+                              # in the presentation. There may not be a slide at this index.
+                          "relativeLink": "A String", # If set, indicates this is a link to a slide in this presentation,
+                              # addressed by its position.
+                        },
+                        "italic": True or False, # Whether or not the text is italicized.
+                        "fontSize": { # A magnitude in a single direction in the specified units. # The size of the text's font. When read, the `font_size` will specified in
+                            # points.
+                          "magnitude": 3.14, # The magnitude.
+                          "unit": "A String", # The units for magnitude.
+                        },
+                        "underline": True or False, # Whether or not the text is underlined.
+                        "backgroundColor": { # A color that can either be fully opaque or fully transparent. # The background color of the text. If set, the color is either opaque or
+                            # transparent, depending on if the `opaque_color` field in it is set.
+                          "opaqueColor": { # A themeable solid color value. # If set, this will be used as an opaque color. If unset, this represents
+                              # a transparent color.
+                            "themeColor": "A String", # An opaque theme color.
+                            "rgbColor": { # An RGB color. # An opaque RGB color.
+                              "blue": 3.14, # The blue component of the color, from 0.0 to 1.0.
+                              "green": 3.14, # The green component of the color, from 0.0 to 1.0.
+                              "red": 3.14, # The red component of the color, from 0.0 to 1.0.
+                            },
+                          },
+                        },
+                      },
+                    },
+                  },
+                ],
+                "lists": { # The bulleted lists contained in this text, keyed by list ID.
+                  "a_key": { # A List describes the look and feel of bullets belonging to paragraphs
+                      # associated with a list. A paragraph that is part of a list has an implicit
+                      # reference to that list's ID.
+                    "nestingLevel": { # A map of nesting levels to the properties of bullets at the associated
+                        # level. A list has at most nine levels of nesting, so the possible values
+                        # for the keys of this map are 0 through 8, inclusive.
+                      "a_key": { # Contains properties describing the look and feel of a list bullet at a given
+                          # level of nesting.
+                        "bulletStyle": { # Represents the styling that can be applied to a TextRun. # The style of a bullet at this level of nesting.
+                            #
+                            # If this text is contained in a shape with a parent placeholder, then these text styles may be
+                            # inherited from the parent. Which text styles are inherited depend on the
+                            # nesting level of lists:
+                            #
+                            # * A text run in a paragraph that is not in a list will inherit its text style
+                            #   from the the newline character in the paragraph at the 0 nesting level of
+                            #   the list inside the parent placeholder.
+                            # * A text run in a paragraph that is in a list will inherit its text style
+                            #   from the newline character in the paragraph at its corresponding nesting
+                            #   level of the list inside the parent placeholder.
+                            #
+                            # Inherited text styles are represented as unset fields in this message. If
+                            # text is contained in a shape without a parent placeholder, unsetting these
+                            # fields will revert the style to a value matching the defaults in the Slides
+                            # editor.
+                          "foregroundColor": { # A color that can either be fully opaque or fully transparent. # The color of the text itself. If set, the color is either opaque or
+                              # transparent, depending on if the `opaque_color` field in it is set.
+                            "opaqueColor": { # A themeable solid color value. # If set, this will be used as an opaque color. If unset, this represents
+                                # a transparent color.
+                              "themeColor": "A String", # An opaque theme color.
+                              "rgbColor": { # An RGB color. # An opaque RGB color.
+                                "blue": 3.14, # The blue component of the color, from 0.0 to 1.0.
+                                "green": 3.14, # The green component of the color, from 0.0 to 1.0.
+                                "red": 3.14, # The red component of the color, from 0.0 to 1.0.
+                              },
+                            },
+                          },
+                          "bold": True or False, # Whether or not the text is bold.
+                          "baselineOffset": "A String", # The text's vertical offset from its normal position.
+                              #
+                              # Text with `SUPERSCRIPT` or `SUBSCRIPT` baseline offsets is automatically
+                              # rendered in a smaller font size, computed based on the `font_size` field.
+                              # The `font_size` itself is not affected by changes in this field.
+                          "strikethrough": True or False, # Whether or not the text is struck through.
+                          "smallCaps": True or False, # Whether or not the text is in small capital letters.
+                          "fontFamily": "A String", # The font family of the text.
+                              #
+                              # The font family can be any font from the Font menu in Slides or from
+                              # [Google Fonts] (https://fonts.google.com/). If the font name is
+                              # unrecognized, the text is rendered in `Arial`.
+                              #
+                              # Some fonts can affect the weight of the text. If an update request
+                              # specifies values for both `font_family` and `bold`, the explicitly-set
+                              # `bold` value is used.
+                          "link": { # A hypertext link. # The hyperlink destination of the text. If unset, there is no link. Links
+                              # are not inherited from parent text.
+                              #
+                              # Changing the link in an update request causes some other changes to the
+                              # text style of the range:
+                              #
+                              # * When setting a link, the text foreground color will be set to
+                              #   ThemeColorType.HYPERLINK and the text will
+                              #   be underlined. If these fields are modified in the same
+                              #   request, those values will be used instead of the link defaults.
+                              # * Setting a link on a text range that overlaps with an existing link will
+                              #   also update the existing link to point to the new URL.
+                              # * Links are not settable on newline characters. As a result, setting a link
+                              #   on a text range that crosses a paragraph boundary, such as `"ABC\n123"`,
+                              #   will separate the newline character(s) into their own text runs. The
+                              #   link will be applied separately to the runs before and after the newline.
+                              # * Removing a link will update the text style of the range to match the
+                              #   style of the preceding text (or the default text styles if the preceding
+                              #   text is another link) unless different styles are being set in the same
+                              #   request.
+                            "url": "A String", # If set, indicates this is a link to the external web page at this URL.
+                            "pageObjectId": "A String", # If set, indicates this is a link to the specific page in this
+                                # presentation with this ID. A page with this ID may not exist.
+                            "slideIndex": 42, # If set, indicates this is a link to the slide at this zero-based index
+                                # in the presentation. There may not be a slide at this index.
+                            "relativeLink": "A String", # If set, indicates this is a link to a slide in this presentation,
+                                # addressed by its position.
+                          },
+                          "italic": True or False, # Whether or not the text is italicized.
+                          "fontSize": { # A magnitude in a single direction in the specified units. # The size of the text's font. When read, the `font_size` will specified in
+                              # points.
+                            "magnitude": 3.14, # The magnitude.
+                            "unit": "A String", # The units for magnitude.
+                          },
+                          "underline": True or False, # Whether or not the text is underlined.
+                          "backgroundColor": { # A color that can either be fully opaque or fully transparent. # The background color of the text. If set, the color is either opaque or
+                              # transparent, depending on if the `opaque_color` field in it is set.
+                            "opaqueColor": { # A themeable solid color value. # If set, this will be used as an opaque color. If unset, this represents
+                                # a transparent color.
+                              "themeColor": "A String", # An opaque theme color.
+                              "rgbColor": { # An RGB color. # An opaque RGB color.
+                                "blue": 3.14, # The blue component of the color, from 0.0 to 1.0.
+                                "green": 3.14, # The green component of the color, from 0.0 to 1.0.
+                                "red": 3.14, # The red component of the color, from 0.0 to 1.0.
+                              },
+                            },
+                          },
+                        },
+                      },
+                    },
+                    "listId": "A String", # The ID of the list.
+                  },
+                },
+              },
+              "shapeProperties": { # The properties of a Shape. # The properties of the shape.
+                  #
+                  # If the shape is a placeholder shape as determined by the
+                  # placeholder field, then these
+                  # properties may be inherited from a parent placeholder shape.
+                  # Determining the rendered value of the property depends on the corresponding
+                  # property_state field value.
+                "shadow": { # The shadow properties of a page element. # The shadow properties of the shape. If unset, the shadow is inherited from
+                    # a parent placeholder if it exists. If the shape has no parent, then the
+                    # default shadow matches the defaults for new shapes created in the Slides
+                    # editor. This property is read-only.
+                    #
+                    # If these fields are unset, they may be inherited from a parent placeholder
+                    # if it exists. If there is no parent, the fields will default to the value
+                    # used for new page elements created in the Slides editor, which may depend on
+                    # the page element kind.
+                  "color": { # A themeable solid color value. # The shadow color value.
+                    "themeColor": "A String", # An opaque theme color.
+                    "rgbColor": { # An RGB color. # An opaque RGB color.
+                      "blue": 3.14, # The blue component of the color, from 0.0 to 1.0.
+                      "green": 3.14, # The green component of the color, from 0.0 to 1.0.
+                      "red": 3.14, # The red component of the color, from 0.0 to 1.0.
+                    },
+                  },
+                  "transform": { # AffineTransform uses a 3x3 matrix with an implied last row of [ 0 0 1 ] # Transform that encodes the translate, scale, and skew of the shadow,
+                      # relative to the alignment position.
+                      # to transform source coordinates (x,y) into destination coordinates (x', y')
+                      # according to:
+                      #
+                      #       x'  x  =   shear_y  scale_y  translate_y
+                      #       1  [ 1 ]
+                      #
+                      # After transformation,
+                      #
+                      #      x' = scale_x * x + shear_x * y + translate_x;
+                      #      y' = scale_y * y + shear_y * x + translate_y;
+                      #
+                      # This message is therefore composed of these six matrix elements.
+                    "translateX": 3.14, # The X coordinate translation element.
+                    "translateY": 3.14, # The Y coordinate translation element.
+                    "scaleX": 3.14, # The X coordinate scaling element.
+                    "scaleY": 3.14, # The Y coordinate scaling element.
+                    "shearY": 3.14, # The Y coordinate shearing element.
+                    "shearX": 3.14, # The X coordinate shearing element.
+                    "unit": "A String", # The units for translate elements.
+                  },
+                  "propertyState": "A String", # The shadow property state.
+                      #
+                      # Updating the the shadow on a page element will implicitly update this field
+                      # to `RENDERED`, unless another value is specified in the same request. To
+                      # have no shadow on a page element, set this field to `NOT_RENDERED`. In this
+                      # case, any other shadow fields set in the same request will be ignored.
+                  "blurRadius": { # A magnitude in a single direction in the specified units. # The radius of the shadow blur. The larger the radius, the more diffuse the
+                      # shadow becomes.
+                    "magnitude": 3.14, # The magnitude.
+                    "unit": "A String", # The units for magnitude.
+                  },
+                  "alpha": 3.14, # The alpha of the shadow's color, from 0.0 to 1.0.
+                  "type": "A String", # The type of the shadow.
+                  "alignment": "A String", # The alignment point of the shadow, that sets the origin for translate,
+                      # scale and skew of the shadow.
+                  "rotateWithShape": True or False, # Whether the shadow should rotate with the shape.
+                },
+                "shapeBackgroundFill": { # The shape background fill. # The background fill of the shape. If unset, the background fill is
+                    # inherited from a parent placeholder if it exists. If the shape has no
+                    # parent, then the default background fill depends on the shape type,
+                    # matching the defaults for new shapes created in the Slides editor.
+                  "solidFill": { # A solid color fill. The page or page element is filled entirely with the # Solid color fill.
+                      # specified color value.
+                      #
+                      # If any field is unset, its value may be inherited from a parent placeholder
+                      # if it exists.
+                    "color": { # A themeable solid color value. # The color value of the solid fill.
+                      "themeColor": "A String", # An opaque theme color.
+                      "rgbColor": { # An RGB color. # An opaque RGB color.
+                        "blue": 3.14, # The blue component of the color, from 0.0 to 1.0.
+                        "green": 3.14, # The green component of the color, from 0.0 to 1.0.
+                        "red": 3.14, # The red component of the color, from 0.0 to 1.0.
+                      },
+                    },
+                    "alpha": 3.14, # The fraction of this `color` that should be applied to the pixel.
+                        # That is, the final pixel color is defined by the equation:
+                        #
+                        #   pixel color = alpha * (color) + (1.0 - alpha) * (background color)
+                        #
+                        # This means that a value of 1.0 corresponds to a solid color, whereas
+                        # a value of 0.0 corresponds to a completely transparent color.
+                  },
+                  "propertyState": "A String", # The background fill property state.
+                      #
+                      # Updating the the fill on a shape will implicitly update this field to
+                      # `RENDERED`, unless another value is specified in the same request. To
+                      # have no fill on a shape, set this field to `NOT_RENDERED`. In this case,
+                      # any other fill fields set in the same request will be ignored.
+                },
+                "link": { # A hypertext link. # The hyperlink destination of the shape. If unset, there is no link. Links
+                    # are not inherited from parent placeholders.
+                  "url": "A String", # If set, indicates this is a link to the external web page at this URL.
+                  "pageObjectId": "A String", # If set, indicates this is a link to the specific page in this
+                      # presentation with this ID. A page with this ID may not exist.
+                  "slideIndex": 42, # If set, indicates this is a link to the slide at this zero-based index
+                      # in the presentation. There may not be a slide at this index.
+                  "relativeLink": "A String", # If set, indicates this is a link to a slide in this presentation,
+                      # addressed by its position.
+                },
+                "outline": { # The outline of a PageElement. # The outline of the shape. If unset, the outline is inherited from a
+                    # parent placeholder if it exists. If the shape has no parent, then the
+                    # default outline depends on the shape type, matching the defaults for
+                    # new shapes created in the Slides editor.
+                    #
+                    # If these fields are unset, they may be inherited from a parent placeholder
+                    # if it exists. If there is no parent, the fields will default to the value
+                    # used for new page elements created in the Slides editor, which may depend on
+                    # the page element kind.
+                  "dashStyle": "A String", # The dash style of the outline.
+                  "propertyState": "A String", # The outline property state.
+                      #
+                      # Updating the the outline on a page element will implicitly update this
+                      # field to`RENDERED`, unless another value is specified in the same request.
+                      # To have no outline on a page element, set this field to `NOT_RENDERED`. In
+                      # this case, any other outline fields set in the same request will be
+                      # ignored.
+                  "outlineFill": { # The fill of the outline. # The fill of the outline.
+                    "solidFill": { # A solid color fill. The page or page element is filled entirely with the # Solid color fill.
+                        # specified color value.
+                        #
+                        # If any field is unset, its value may be inherited from a parent placeholder
+                        # if it exists.
+                      "color": { # A themeable solid color value. # The color value of the solid fill.
+                        "themeColor": "A String", # An opaque theme color.
+                        "rgbColor": { # An RGB color. # An opaque RGB color.
+                          "blue": 3.14, # The blue component of the color, from 0.0 to 1.0.
+                          "green": 3.14, # The green component of the color, from 0.0 to 1.0.
+                          "red": 3.14, # The red component of the color, from 0.0 to 1.0.
+                        },
+                      },
+                      "alpha": 3.14, # The fraction of this `color` that should be applied to the pixel.
+                          # That is, the final pixel color is defined by the equation:
+                          #
+                          #   pixel color = alpha * (color) + (1.0 - alpha) * (background color)
+                          #
+                          # This means that a value of 1.0 corresponds to a solid color, whereas
+                          # a value of 0.0 corresponds to a completely transparent color.
+                    },
+                  },
+                  "weight": { # A magnitude in a single direction in the specified units. # The thickness of the outline.
+                    "magnitude": 3.14, # The magnitude.
+                    "unit": "A String", # The units for magnitude.
+                  },
+                },
+              },
+              "placeholder": { # The placeholder information that uniquely identifies a placeholder shape. # Placeholders are shapes that are inherit from corresponding placeholders on
+                  # layouts and masters.
+                  #
+                  # If set, the shape is a placeholder shape and any inherited properties
+                  # can be resolved by looking at the parent placeholder identified by the
+                  # Placeholder.parent_object_id field.
+                "parentObjectId": "A String", # The object ID of this shape's parent placeholder.
+                    # If unset, the parent placeholder shape does not exist, so the shape does
+                    # not inherit properties from any other shape.
+                "index": 42, # The index of the placeholder. If the same placeholder types are the present
+                    # in the same page, they would have different index values.
+                "type": "A String", # The type of the placeholder.
+              },
+              "shapeType": "A String", # The type of the shape.
+            },
+            "sheetsChart": { # A PageElement kind representing # A linked chart embedded from Google Sheets. Unlinked charts are
+                # represented as images.
+                # a linked chart embedded from Google Sheets.
+              "chartId": 42, # The ID of the specific chart in the Google Sheets spreadsheet that is
+                  # embedded.
+              "spreadsheetId": "A String", # The ID of the Google Sheets spreadsheet that contains the source chart.
+              "sheetsChartProperties": { # The properties of the SheetsChart. # The properties of the Sheets chart.
+                "chartImageProperties": { # The properties of the Image. # The properties of the embedded chart image.
+                  "outline": { # The outline of a PageElement. # The outline of the image. If not set, the the image has no outline.
+                      #
+                      # If these fields are unset, they may be inherited from a parent placeholder
+                      # if it exists. If there is no parent, the fields will default to the value
+                      # used for new page elements created in the Slides editor, which may depend on
+                      # the page element kind.
+                    "dashStyle": "A String", # The dash style of the outline.
+                    "propertyState": "A String", # The outline property state.
+                        #
+                        # Updating the the outline on a page element will implicitly update this
+                        # field to`RENDERED`, unless another value is specified in the same request.
+                        # To have no outline on a page element, set this field to `NOT_RENDERED`. In
+                        # this case, any other outline fields set in the same request will be
+                        # ignored.
+                    "outlineFill": { # The fill of the outline. # The fill of the outline.
+                      "solidFill": { # A solid color fill. The page or page element is filled entirely with the # Solid color fill.
+                          # specified color value.
+                          #
+                          # If any field is unset, its value may be inherited from a parent placeholder
+                          # if it exists.
+                        "color": { # A themeable solid color value. # The color value of the solid fill.
+                          "themeColor": "A String", # An opaque theme color.
+                          "rgbColor": { # An RGB color. # An opaque RGB color.
+                            "blue": 3.14, # The blue component of the color, from 0.0 to 1.0.
+                            "green": 3.14, # The green component of the color, from 0.0 to 1.0.
+                            "red": 3.14, # The red component of the color, from 0.0 to 1.0.
+                          },
+                        },
+                        "alpha": 3.14, # The fraction of this `color` that should be applied to the pixel.
+                            # That is, the final pixel color is defined by the equation:
+                            #
+                            #   pixel color = alpha * (color) + (1.0 - alpha) * (background color)
+                            #
+                            # This means that a value of 1.0 corresponds to a solid color, whereas
+                            # a value of 0.0 corresponds to a completely transparent color.
+                      },
+                    },
+                    "weight": { # A magnitude in a single direction in the specified units. # The thickness of the outline.
+                      "magnitude": 3.14, # The magnitude.
+                      "unit": "A String", # The units for magnitude.
+                    },
+                  },
+                  "brightness": 3.14, # The brightness effect of the image. The value should be in the interval
+                      # [-1.0, 1.0], where 0 means no effect. This property is read-only.
+                  "recolor": { # A recolor effect applied on an image. # The recolor effect of the image. If not set, the image is not recolored.
+                      # This property is read-only.
+                    "recolorStops": [ # The recolor effect is represented by a gradient, which is a list of color
+                        # stops. This property is read-only.
+                      { # A color and position in a gradient band.
+                        "color": { # A themeable solid color value. # The color of the gradient stop.
+                          "themeColor": "A String", # An opaque theme color.
+                          "rgbColor": { # An RGB color. # An opaque RGB color.
+                            "blue": 3.14, # The blue component of the color, from 0.0 to 1.0.
+                            "green": 3.14, # The green component of the color, from 0.0 to 1.0.
+                            "red": 3.14, # The red component of the color, from 0.0 to 1.0.
+                          },
+                        },
+                        "position": 3.14, # The relative position of the color stop in the gradient band measured
+                            # in percentage. The value should be in the interval [0.0, 1.0].
+                        "alpha": 3.14, # The alpha value of this color in the gradient band. Defaults to 1.0,
+                            # fully opaque.
+                      },
+                    ],
+                  },
+                  "link": { # A hypertext link. # The hyperlink destination of the image. If unset, there is no link.
+                    "url": "A String", # If set, indicates this is a link to the external web page at this URL.
+                    "pageObjectId": "A String", # If set, indicates this is a link to the specific page in this
+                        # presentation with this ID. A page with this ID may not exist.
+                    "slideIndex": 42, # If set, indicates this is a link to the slide at this zero-based index
+                        # in the presentation. There may not be a slide at this index.
+                    "relativeLink": "A String", # If set, indicates this is a link to a slide in this presentation,
+                        # addressed by its position.
+                  },
+                  "transparency": 3.14, # The transparency effect of the image. The value should be in the interval
+                      # [0.0, 1.0], where 0 means no effect and 1 means completely transparent.
+                      # This property is read-only.
+                  "cropProperties": { # The crop properties of an object enclosed in a container. For example, an # The crop properties of the image. If not set, the image is not cropped.
+                      # This property is read-only.
+                      # Image.
+                      #
+                      # The crop properties is represented by the offsets of four edges which define
+                      # a crop rectangle. The offsets are measured in percentage from the
+                      # corresponding edges of the object's original bounding rectangle towards
+                      # inside, relative to the object's original dimensions.
+                      #
+                      # - If the offset is in the interval (0, 1), the corresponding edge of crop
+                      # rectangle is positioned inside of the object's original bounding rectangle.
+                      # - If the offset is negative or greater than 1, the corresponding edge of crop
+                      # rectangle is positioned outside of the object's original bounding rectangle.
+                      # - If the left edge of the crop rectangle is on the right side of its right
+                      # edge, the object will be flipped horizontally.
+                      # - If the top edge of the crop rectangle is below its bottom edge, the object
+                      # will be flipped vertically.
+                      # - If all offsets and rotation angle is 0, the object is not cropped.
+                      #
+                      # After cropping, the content in the crop rectangle will be stretched to fit
+                      # its container.
+                    "leftOffset": 3.14, # The offset specifies the left edge of the crop rectangle that is located to
+                        # the right of the original bounding rectangle left edge, relative to the
+                        # object's original width.
+                    "angle": 3.14, # The rotation angle of the crop window around its center, in radians.
+                        # Rotation angle is applied after the offset.
+                    "bottomOffset": 3.14, # The offset specifies the bottom edge of the crop rectangle that is located
+                        # above the original bounding rectangle bottom edge, relative to the object's
+                        # original height.
+                    "rightOffset": 3.14, # The offset specifies the right edge of the crop rectangle that is located
+                        # to the left of the original bounding rectangle right edge, relative to the
+                        # object's original width.
+                    "topOffset": 3.14, # The offset specifies the top edge of the crop rectangle that is located
+                        # below the original bounding rectangle top edge, relative to the object's
+                        # original height.
+                  },
+                  "shadow": { # The shadow properties of a page element. # The shadow of the image. If not set, the image has no shadow. This property
+                      # is read-only.
+                      #
+                      # If these fields are unset, they may be inherited from a parent placeholder
+                      # if it exists. If there is no parent, the fields will default to the value
+                      # used for new page elements created in the Slides editor, which may depend on
+                      # the page element kind.
+                    "color": { # A themeable solid color value. # The shadow color value.
+                      "themeColor": "A String", # An opaque theme color.
+                      "rgbColor": { # An RGB color. # An opaque RGB color.
+                        "blue": 3.14, # The blue component of the color, from 0.0 to 1.0.
+                        "green": 3.14, # The green component of the color, from 0.0 to 1.0.
+                        "red": 3.14, # The red component of the color, from 0.0 to 1.0.
+                      },
+                    },
+                    "transform": { # AffineTransform uses a 3x3 matrix with an implied last row of [ 0 0 1 ] # Transform that encodes the translate, scale, and skew of the shadow,
+                        # relative to the alignment position.
+                        # to transform source coordinates (x,y) into destination coordinates (x', y')
+                        # according to:
+                        #
+                        #       x'  x  =   shear_y  scale_y  translate_y
+                        #       1  [ 1 ]
+                        #
+                        # After transformation,
+                        #
+                        #      x' = scale_x * x + shear_x * y + translate_x;
+                        #      y' = scale_y * y + shear_y * x + translate_y;
+                        #
+                        # This message is therefore composed of these six matrix elements.
+                      "translateX": 3.14, # The X coordinate translation element.
+                      "translateY": 3.14, # The Y coordinate translation element.
+                      "scaleX": 3.14, # The X coordinate scaling element.
+                      "scaleY": 3.14, # The Y coordinate scaling element.
+                      "shearY": 3.14, # The Y coordinate shearing element.
+                      "shearX": 3.14, # The X coordinate shearing element.
+                      "unit": "A String", # The units for translate elements.
+                    },
+                    "propertyState": "A String", # The shadow property state.
+                        #
+                        # Updating the the shadow on a page element will implicitly update this field
+                        # to `RENDERED`, unless another value is specified in the same request. To
+                        # have no shadow on a page element, set this field to `NOT_RENDERED`. In this
+                        # case, any other shadow fields set in the same request will be ignored.
+                    "blurRadius": { # A magnitude in a single direction in the specified units. # The radius of the shadow blur. The larger the radius, the more diffuse the
+                        # shadow becomes.
+                      "magnitude": 3.14, # The magnitude.
+                      "unit": "A String", # The units for magnitude.
+                    },
+                    "alpha": 3.14, # The alpha of the shadow's color, from 0.0 to 1.0.
+                    "type": "A String", # The type of the shadow.
+                    "alignment": "A String", # The alignment point of the shadow, that sets the origin for translate,
+                        # scale and skew of the shadow.
+                    "rotateWithShape": True or False, # Whether the shadow should rotate with the shape.
+                  },
+                  "contrast": 3.14, # The contrast effect of the image. The value should be in the interval
+                      # [-1.0, 1.0], where 0 means no effect. This property is read-only.
+                },
+              },
+              "contentUrl": "A String", # The URL of an image of the embedded chart, with a default lifetime of 30
+                  # minutes. This URL is tagged with the account of the requester. Anyone with
+                  # the URL effectively accesses the image as the original requester. Access to
+                  # the image may be lost if the presentation's sharing settings change.
+            },
+            "video": { # A PageElement kind representing a # A video page element.
+                # video.
+              "url": "A String", # An URL to a video. The URL is valid as long as the source video
+                  # exists and sharing settings do not change.
+              "videoProperties": { # The properties of the Video. # The properties of the video.
+                "outline": { # The outline of a PageElement. # The outline of the video. The default outline matches the defaults for new
+                    # videos created in the Slides editor.
+                    #
+                    # If these fields are unset, they may be inherited from a parent placeholder
+                    # if it exists. If there is no parent, the fields will default to the value
+                    # used for new page elements created in the Slides editor, which may depend on
+                    # the page element kind.
+                  "dashStyle": "A String", # The dash style of the outline.
+                  "propertyState": "A String", # The outline property state.
+                      #
+                      # Updating the the outline on a page element will implicitly update this
+                      # field to`RENDERED`, unless another value is specified in the same request.
+                      # To have no outline on a page element, set this field to `NOT_RENDERED`. In
+                      # this case, any other outline fields set in the same request will be
+                      # ignored.
+                  "outlineFill": { # The fill of the outline. # The fill of the outline.
+                    "solidFill": { # A solid color fill. The page or page element is filled entirely with the # Solid color fill.
+                        # specified color value.
+                        #
+                        # If any field is unset, its value may be inherited from a parent placeholder
+                        # if it exists.
+                      "color": { # A themeable solid color value. # The color value of the solid fill.
+                        "themeColor": "A String", # An opaque theme color.
+                        "rgbColor": { # An RGB color. # An opaque RGB color.
+                          "blue": 3.14, # The blue component of the color, from 0.0 to 1.0.
+                          "green": 3.14, # The green component of the color, from 0.0 to 1.0.
+                          "red": 3.14, # The red component of the color, from 0.0 to 1.0.
+                        },
+                      },
+                      "alpha": 3.14, # The fraction of this `color` that should be applied to the pixel.
+                          # That is, the final pixel color is defined by the equation:
+                          #
+                          #   pixel color = alpha * (color) + (1.0 - alpha) * (background color)
+                          #
+                          # This means that a value of 1.0 corresponds to a solid color, whereas
+                          # a value of 0.0 corresponds to a completely transparent color.
+                    },
+                  },
+                  "weight": { # A magnitude in a single direction in the specified units. # The thickness of the outline.
+                    "magnitude": 3.14, # The magnitude.
+                    "unit": "A String", # The units for magnitude.
+                  },
+                },
+              },
+              "id": "A String", # The video source's unique identifier for this video.
+              "source": "A String", # The video source.
+            },
+            "table": { # A PageElement kind representing a # A table page element.
+                # table.
+              "tableColumns": [ # Properties of each column.
+                { # Properties of each column in a table.
+                  "columnWidth": { # A magnitude in a single direction in the specified units. # Width of a column.
+                    "magnitude": 3.14, # The magnitude.
+                    "unit": "A String", # The units for magnitude.
+                  },
+                },
+              ],
+              "tableRows": [ # Properties and contents of each row.
+                  #
+                  # Cells that span multiple rows are contained in only one of these rows and
+                  # have a row_span greater
+                  # than 1.
+                { # Properties and contents of each row in a table.
+                  "tableCells": [ # Properties and contents of each cell.
+                      #
+                      # Cells that span multiple columns are represented only once with a
+                      # column_span greater
+                      # than 1. As a result, the length of this collection does not always match
+                      # the number of columns of the entire table.
+                    { # Properties and contents of each table cell.
+                      "text": { # The general text content. The text must reside in a compatible shape (e.g. # The text content of the cell.
+                          # text box or rectangle) or a table cell in a page.
+                        "textElements": [ # The text contents broken down into its component parts, including styling
+                            # information. This property is read-only.
+                          { # A TextElement describes the content of a range of indices in the text content
+                              # of a Shape or TableCell.
+                            "autoText": { # A TextElement kind that represents auto text. # A TextElement representing a spot in the text that is dynamically
+                                # replaced with content that can change over time.
+                              "content": "A String", # The rendered content of this auto text, if available.
+                              "style": { # Represents the styling that can be applied to a TextRun. # The styling applied to this auto text.
+                                  #
+                                  # If this text is contained in a shape with a parent placeholder, then these text styles may be
+                                  # inherited from the parent. Which text styles are inherited depend on the
+                                  # nesting level of lists:
+                                  #
+                                  # * A text run in a paragraph that is not in a list will inherit its text style
+                                  #   from the the newline character in the paragraph at the 0 nesting level of
+                                  #   the list inside the parent placeholder.
+                                  # * A text run in a paragraph that is in a list will inherit its text style
+                                  #   from the newline character in the paragraph at its corresponding nesting
+                                  #   level of the list inside the parent placeholder.
+                                  #
+                                  # Inherited text styles are represented as unset fields in this message. If
+                                  # text is contained in a shape without a parent placeholder, unsetting these
+                                  # fields will revert the style to a value matching the defaults in the Slides
+                                  # editor.
+                                "foregroundColor": { # A color that can either be fully opaque or fully transparent. # The color of the text itself. If set, the color is either opaque or
+                                    # transparent, depending on if the `opaque_color` field in it is set.
+                                  "opaqueColor": { # A themeable solid color value. # If set, this will be used as an opaque color. If unset, this represents
+                                      # a transparent color.
+                                    "themeColor": "A String", # An opaque theme color.
+                                    "rgbColor": { # An RGB color. # An opaque RGB color.
+                                      "blue": 3.14, # The blue component of the color, from 0.0 to 1.0.
+                                      "green": 3.14, # The green component of the color, from 0.0 to 1.0.
+                                      "red": 3.14, # The red component of the color, from 0.0 to 1.0.
+                                    },
+                                  },
+                                },
+                                "bold": True or False, # Whether or not the text is bold.
+                                "baselineOffset": "A String", # The text's vertical offset from its normal position.
+                                    #
+                                    # Text with `SUPERSCRIPT` or `SUBSCRIPT` baseline offsets is automatically
+                                    # rendered in a smaller font size, computed based on the `font_size` field.
+                                    # The `font_size` itself is not affected by changes in this field.
+                                "strikethrough": True or False, # Whether or not the text is struck through.
+                                "smallCaps": True or False, # Whether or not the text is in small capital letters.
+                                "fontFamily": "A String", # The font family of the text.
+                                    #
+                                    # The font family can be any font from the Font menu in Slides or from
+                                    # [Google Fonts] (https://fonts.google.com/). If the font name is
+                                    # unrecognized, the text is rendered in `Arial`.
+                                    #
+                                    # Some fonts can affect the weight of the text. If an update request
+                                    # specifies values for both `font_family` and `bold`, the explicitly-set
+                                    # `bold` value is used.
+                                "link": { # A hypertext link. # The hyperlink destination of the text. If unset, there is no link. Links
+                                    # are not inherited from parent text.
+                                    #
+                                    # Changing the link in an update request causes some other changes to the
+                                    # text style of the range:
+                                    #
+                                    # * When setting a link, the text foreground color will be set to
+                                    #   ThemeColorType.HYPERLINK and the text will
+                                    #   be underlined. If these fields are modified in the same
+                                    #   request, those values will be used instead of the link defaults.
+                                    # * Setting a link on a text range that overlaps with an existing link will
+                                    #   also update the existing link to point to the new URL.
+                                    # * Links are not settable on newline characters. As a result, setting a link
+                                    #   on a text range that crosses a paragraph boundary, such as `"ABC\n123"`,
+                                    #   will separate the newline character(s) into their own text runs. The
+                                    #   link will be applied separately to the runs before and after the newline.
+                                    # * Removing a link will update the text style of the range to match the
+                                    #   style of the preceding text (or the default text styles if the preceding
+                                    #   text is another link) unless different styles are being set in the same
+                                    #   request.
+                                  "url": "A String", # If set, indicates this is a link to the external web page at this URL.
+                                  "pageObjectId": "A String", # If set, indicates this is a link to the specific page in this
+                                      # presentation with this ID. A page with this ID may not exist.
+                                  "slideIndex": 42, # If set, indicates this is a link to the slide at this zero-based index
+                                      # in the presentation. There may not be a slide at this index.
+                                  "relativeLink": "A String", # If set, indicates this is a link to a slide in this presentation,
+                                      # addressed by its position.
+                                },
+                                "italic": True or False, # Whether or not the text is italicized.
+                                "fontSize": { # A magnitude in a single direction in the specified units. # The size of the text's font. When read, the `font_size` will specified in
+                                    # points.
+                                  "magnitude": 3.14, # The magnitude.
+                                  "unit": "A String", # The units for magnitude.
+                                },
+                                "underline": True or False, # Whether or not the text is underlined.
+                                "backgroundColor": { # A color that can either be fully opaque or fully transparent. # The background color of the text. If set, the color is either opaque or
+                                    # transparent, depending on if the `opaque_color` field in it is set.
+                                  "opaqueColor": { # A themeable solid color value. # If set, this will be used as an opaque color. If unset, this represents
+                                      # a transparent color.
+                                    "themeColor": "A String", # An opaque theme color.
+                                    "rgbColor": { # An RGB color. # An opaque RGB color.
+                                      "blue": 3.14, # The blue component of the color, from 0.0 to 1.0.
+                                      "green": 3.14, # The green component of the color, from 0.0 to 1.0.
+                                      "red": 3.14, # The red component of the color, from 0.0 to 1.0.
+                                    },
+                                  },
+                                },
+                              },
+                              "type": "A String", # The type of this auto text.
+                            },
+                            "endIndex": 42, # The zero-based end index of this text element, exclusive, in Unicode code
+                                # units.
+                            "startIndex": 42, # The zero-based start index of this text element, in Unicode code units.
+                            "paragraphMarker": { # A TextElement kind that represents the beginning of a new paragraph. # A marker representing the beginning of a new paragraph.
+                                #
+                                # The `start_index` and `end_index` of this TextElement represent the
+                                # range of the paragraph. Other TextElements with an index range contained
+                                # inside this paragraph's range are considered to be part of this
+                                # paragraph. The range of indices of two separate paragraphs will never
+                                # overlap.
+                              "style": { # Styles that apply to a whole paragraph. # The paragraph's style
+                                  #
+                                  # If this text is contained in a shape with a parent placeholder, then these paragraph styles may be
+                                  # inherited from the parent. Which paragraph styles are inherited depend on the
+                                  # nesting level of lists:
+                                  #
+                                  # * A paragraph not in a list will inherit its paragraph style from the
+                                  #   paragraph at the 0 nesting level of the list inside the parent placeholder.
+                                  # * A paragraph in a list will inherit its paragraph style from the paragraph
+                                  #   at its corresponding nesting level of the list inside the parent
+                                  #   placeholder.
+                                  #
+                                  # Inherited paragraph styles are represented as unset fields in this message.
+                                "spacingMode": "A String", # The spacing mode for the paragraph. This property is read-only.
+                                "direction": "A String", # The text direction of this paragraph. This property is read-only.
+                                "spaceBelow": { # A magnitude in a single direction in the specified units. # The amount of extra space above the paragraph. If unset, the value is
+                                    # inherited from the parent. This property is read-only.
+                                  "magnitude": 3.14, # The magnitude.
+                                  "unit": "A String", # The units for magnitude.
+                                },
+                                "lineSpacing": 3.14, # The amount of space between lines, as a percentage of normal, where normal
+                                    # is represented as 100.0. If unset, the value is inherited from the parent.
+                                    # This property is read-only.
+                                "indentStart": { # A magnitude in a single direction in the specified units. # The amount indentation for the paragraph on the side that corresponds to
+                                    # the start of the text, based on the current text direction. If unset, the
+                                    # value is inherited from the parent. This property is read-only.
+                                  "magnitude": 3.14, # The magnitude.
+                                  "unit": "A String", # The units for magnitude.
+                                },
+                                "spaceAbove": { # A magnitude in a single direction in the specified units. # The amount of extra space above the paragraph. If unset, the value is
+                                    # inherited from the parent. This property is read-only.
+                                  "magnitude": 3.14, # The magnitude.
+                                  "unit": "A String", # The units for magnitude.
+                                },
+                                "indentEnd": { # A magnitude in a single direction in the specified units. # The amount indentation for the paragraph on the side that corresponds to
+                                    # the end of the text, based on the current text direction. If unset, the
+                                    # value is inherited from the parent. This property is read-only.
+                                  "magnitude": 3.14, # The magnitude.
+                                  "unit": "A String", # The units for magnitude.
+                                },
+                                "indentFirstLine": { # A magnitude in a single direction in the specified units. # The amount of indentation for the start of the first line of the paragraph.
+                                    # If unset, the value is inherited from the parent. This property is
+                                    # read-only.
+                                  "magnitude": 3.14, # The magnitude.
+                                  "unit": "A String", # The units for magnitude.
+                                },
+                                "alignment": "A String", # The text alignment for this paragraph. This property is read-only.
+                              },
+                              "bullet": { # Describes the bullet of a paragraph. # The bullet for this paragraph. If not present, the paragraph does not
+                                  # belong to a list.
+                                "nestingLevel": 42, # The nesting level of this paragraph in the list.
+                                "listId": "A String", # The ID of the list this paragraph belongs to.
+                                "bulletStyle": { # Represents the styling that can be applied to a TextRun. # The paragraph specific text style applied to this bullet.
+                                    #
+                                    # If this text is contained in a shape with a parent placeholder, then these text styles may be
+                                    # inherited from the parent. Which text styles are inherited depend on the
+                                    # nesting level of lists:
+                                    #
+                                    # * A text run in a paragraph that is not in a list will inherit its text style
+                                    #   from the the newline character in the paragraph at the 0 nesting level of
+                                    #   the list inside the parent placeholder.
+                                    # * A text run in a paragraph that is in a list will inherit its text style
+                                    #   from the newline character in the paragraph at its corresponding nesting
+                                    #   level of the list inside the parent placeholder.
+                                    #
+                                    # Inherited text styles are represented as unset fields in this message. If
+                                    # text is contained in a shape without a parent placeholder, unsetting these
+                                    # fields will revert the style to a value matching the defaults in the Slides
+                                    # editor.
+                                  "foregroundColor": { # A color that can either be fully opaque or fully transparent. # The color of the text itself. If set, the color is either opaque or
+                                      # transparent, depending on if the `opaque_color` field in it is set.
+                                    "opaqueColor": { # A themeable solid color value. # If set, this will be used as an opaque color. If unset, this represents
+                                        # a transparent color.
+                                      "themeColor": "A String", # An opaque theme color.
+                                      "rgbColor": { # An RGB color. # An opaque RGB color.
+                                        "blue": 3.14, # The blue component of the color, from 0.0 to 1.0.
+                                        "green": 3.14, # The green component of the color, from 0.0 to 1.0.
+                                        "red": 3.14, # The red component of the color, from 0.0 to 1.0.
+                                      },
+                                    },
+                                  },
+                                  "bold": True or False, # Whether or not the text is bold.
+                                  "baselineOffset": "A String", # The text's vertical offset from its normal position.
+                                      #
+                                      # Text with `SUPERSCRIPT` or `SUBSCRIPT` baseline offsets is automatically
+                                      # rendered in a smaller font size, computed based on the `font_size` field.
+                                      # The `font_size` itself is not affected by changes in this field.
+                                  "strikethrough": True or False, # Whether or not the text is struck through.
+                                  "smallCaps": True or False, # Whether or not the text is in small capital letters.
+                                  "fontFamily": "A String", # The font family of the text.
+                                      #
+                                      # The font family can be any font from the Font menu in Slides or from
+                                      # [Google Fonts] (https://fonts.google.com/). If the font name is
+                                      # unrecognized, the text is rendered in `Arial`.
+                                      #
+                                      # Some fonts can affect the weight of the text. If an update request
+                                      # specifies values for both `font_family` and `bold`, the explicitly-set
+                                      # `bold` value is used.
+                                  "link": { # A hypertext link. # The hyperlink destination of the text. If unset, there is no link. Links
+                                      # are not inherited from parent text.
+                                      #
+                                      # Changing the link in an update request causes some other changes to the
+                                      # text style of the range:
+                                      #
+                                      # * When setting a link, the text foreground color will be set to
+                                      #   ThemeColorType.HYPERLINK and the text will
+                                      #   be underlined. If these fields are modified in the same
+                                      #   request, those values will be used instead of the link defaults.
+                                      # * Setting a link on a text range that overlaps with an existing link will
+                                      #   also update the existing link to point to the new URL.
+                                      # * Links are not settable on newline characters. As a result, setting a link
+                                      #   on a text range that crosses a paragraph boundary, such as `"ABC\n123"`,
+                                      #   will separate the newline character(s) into their own text runs. The
+                                      #   link will be applied separately to the runs before and after the newline.
+                                      # * Removing a link will update the text style of the range to match the
+                                      #   style of the preceding text (or the default text styles if the preceding
+                                      #   text is another link) unless different styles are being set in the same
+                                      #   request.
+                                    "url": "A String", # If set, indicates this is a link to the external web page at this URL.
+                                    "pageObjectId": "A String", # If set, indicates this is a link to the specific page in this
+                                        # presentation with this ID. A page with this ID may not exist.
+                                    "slideIndex": 42, # If set, indicates this is a link to the slide at this zero-based index
+                                        # in the presentation. There may not be a slide at this index.
+                                    "relativeLink": "A String", # If set, indicates this is a link to a slide in this presentation,
+                                        # addressed by its position.
+                                  },
+                                  "italic": True or False, # Whether or not the text is italicized.
+                                  "fontSize": { # A magnitude in a single direction in the specified units. # The size of the text's font. When read, the `font_size` will specified in
+                                      # points.
+                                    "magnitude": 3.14, # The magnitude.
+                                    "unit": "A String", # The units for magnitude.
+                                  },
+                                  "underline": True or False, # Whether or not the text is underlined.
+                                  "backgroundColor": { # A color that can either be fully opaque or fully transparent. # The background color of the text. If set, the color is either opaque or
+                                      # transparent, depending on if the `opaque_color` field in it is set.
+                                    "opaqueColor": { # A themeable solid color value. # If set, this will be used as an opaque color. If unset, this represents
+                                        # a transparent color.
+                                      "themeColor": "A String", # An opaque theme color.
+                                      "rgbColor": { # An RGB color. # An opaque RGB color.
+                                        "blue": 3.14, # The blue component of the color, from 0.0 to 1.0.
+                                        "green": 3.14, # The green component of the color, from 0.0 to 1.0.
+                                        "red": 3.14, # The red component of the color, from 0.0 to 1.0.
+                                      },
+                                    },
+                                  },
+                                },
+                                "glyph": "A String", # The rendered bullet glyph for this paragraph.
+                              },
+                            },
+                            "textRun": { # A TextElement kind that represents a run of text that all has the same # A TextElement representing a run of text where all of the characters
+                                # in the run have the same TextStyle.
+                                #
+                                # The `start_index` and `end_index` of TextRuns will always be fully
+                                # contained in the index range of a single `paragraph_marker` TextElement.
+                                # In other words, a TextRun will never span multiple paragraphs.
+                                # styling.
+                              "content": "A String", # The text of this run.
+                              "style": { # Represents the styling that can be applied to a TextRun. # The styling applied to this run.
+                                  #
+                                  # If this text is contained in a shape with a parent placeholder, then these text styles may be
+                                  # inherited from the parent. Which text styles are inherited depend on the
+                                  # nesting level of lists:
+                                  #
+                                  # * A text run in a paragraph that is not in a list will inherit its text style
+                                  #   from the the newline character in the paragraph at the 0 nesting level of
+                                  #   the list inside the parent placeholder.
+                                  # * A text run in a paragraph that is in a list will inherit its text style
+                                  #   from the newline character in the paragraph at its corresponding nesting
+                                  #   level of the list inside the parent placeholder.
+                                  #
+                                  # Inherited text styles are represented as unset fields in this message. If
+                                  # text is contained in a shape without a parent placeholder, unsetting these
+                                  # fields will revert the style to a value matching the defaults in the Slides
+                                  # editor.
+                                "foregroundColor": { # A color that can either be fully opaque or fully transparent. # The color of the text itself. If set, the color is either opaque or
+                                    # transparent, depending on if the `opaque_color` field in it is set.
+                                  "opaqueColor": { # A themeable solid color value. # If set, this will be used as an opaque color. If unset, this represents
+                                      # a transparent color.
+                                    "themeColor": "A String", # An opaque theme color.
+                                    "rgbColor": { # An RGB color. # An opaque RGB color.
+                                      "blue": 3.14, # The blue component of the color, from 0.0 to 1.0.
+                                      "green": 3.14, # The green component of the color, from 0.0 to 1.0.
+                                      "red": 3.14, # The red component of the color, from 0.0 to 1.0.
+                                    },
+                                  },
+                                },
+                                "bold": True or False, # Whether or not the text is bold.
+                                "baselineOffset": "A String", # The text's vertical offset from its normal position.
+                                    #
+                                    # Text with `SUPERSCRIPT` or `SUBSCRIPT` baseline offsets is automatically
+                                    # rendered in a smaller font size, computed based on the `font_size` field.
+                                    # The `font_size` itself is not affected by changes in this field.
+                                "strikethrough": True or False, # Whether or not the text is struck through.
+                                "smallCaps": True or False, # Whether or not the text is in small capital letters.
+                                "fontFamily": "A String", # The font family of the text.
+                                    #
+                                    # The font family can be any font from the Font menu in Slides or from
+                                    # [Google Fonts] (https://fonts.google.com/). If the font name is
+                                    # unrecognized, the text is rendered in `Arial`.
+                                    #
+                                    # Some fonts can affect the weight of the text. If an update request
+                                    # specifies values for both `font_family` and `bold`, the explicitly-set
+                                    # `bold` value is used.
+                                "link": { # A hypertext link. # The hyperlink destination of the text. If unset, there is no link. Links
+                                    # are not inherited from parent text.
+                                    #
+                                    # Changing the link in an update request causes some other changes to the
+                                    # text style of the range:
+                                    #
+                                    # * When setting a link, the text foreground color will be set to
+                                    #   ThemeColorType.HYPERLINK and the text will
+                                    #   be underlined. If these fields are modified in the same
+                                    #   request, those values will be used instead of the link defaults.
+                                    # * Setting a link on a text range that overlaps with an existing link will
+                                    #   also update the existing link to point to the new URL.
+                                    # * Links are not settable on newline characters. As a result, setting a link
+                                    #   on a text range that crosses a paragraph boundary, such as `"ABC\n123"`,
+                                    #   will separate the newline character(s) into their own text runs. The
+                                    #   link will be applied separately to the runs before and after the newline.
+                                    # * Removing a link will update the text style of the range to match the
+                                    #   style of the preceding text (or the default text styles if the preceding
+                                    #   text is another link) unless different styles are being set in the same
+                                    #   request.
+                                  "url": "A String", # If set, indicates this is a link to the external web page at this URL.
+                                  "pageObjectId": "A String", # If set, indicates this is a link to the specific page in this
+                                      # presentation with this ID. A page with this ID may not exist.
+                                  "slideIndex": 42, # If set, indicates this is a link to the slide at this zero-based index
+                                      # in the presentation. There may not be a slide at this index.
+                                  "relativeLink": "A String", # If set, indicates this is a link to a slide in this presentation,
+                                      # addressed by its position.
+                                },
+                                "italic": True or False, # Whether or not the text is italicized.
+                                "fontSize": { # A magnitude in a single direction in the specified units. # The size of the text's font. When read, the `font_size` will specified in
+                                    # points.
+                                  "magnitude": 3.14, # The magnitude.
+                                  "unit": "A String", # The units for magnitude.
+                                },
+                                "underline": True or False, # Whether or not the text is underlined.
+                                "backgroundColor": { # A color that can either be fully opaque or fully transparent. # The background color of the text. If set, the color is either opaque or
+                                    # transparent, depending on if the `opaque_color` field in it is set.
+                                  "opaqueColor": { # A themeable solid color value. # If set, this will be used as an opaque color. If unset, this represents
+                                      # a transparent color.
+                                    "themeColor": "A String", # An opaque theme color.
+                                    "rgbColor": { # An RGB color. # An opaque RGB color.
+                                      "blue": 3.14, # The blue component of the color, from 0.0 to 1.0.
+                                      "green": 3.14, # The green component of the color, from 0.0 to 1.0.
+                                      "red": 3.14, # The red component of the color, from 0.0 to 1.0.
+                                    },
+                                  },
+                                },
+                              },
+                            },
+                          },
+                        ],
+                        "lists": { # The bulleted lists contained in this text, keyed by list ID.
+                          "a_key": { # A List describes the look and feel of bullets belonging to paragraphs
+                              # associated with a list. A paragraph that is part of a list has an implicit
+                              # reference to that list's ID.
+                            "nestingLevel": { # A map of nesting levels to the properties of bullets at the associated
+                                # level. A list has at most nine levels of nesting, so the possible values
+                                # for the keys of this map are 0 through 8, inclusive.
+                              "a_key": { # Contains properties describing the look and feel of a list bullet at a given
+                                  # level of nesting.
+                                "bulletStyle": { # Represents the styling that can be applied to a TextRun. # The style of a bullet at this level of nesting.
+                                    #
+                                    # If this text is contained in a shape with a parent placeholder, then these text styles may be
+                                    # inherited from the parent. Which text styles are inherited depend on the
+                                    # nesting level of lists:
+                                    #
+                                    # * A text run in a paragraph that is not in a list will inherit its text style
+                                    #   from the the newline character in the paragraph at the 0 nesting level of
+                                    #   the list inside the parent placeholder.
+                                    # * A text run in a paragraph that is in a list will inherit its text style
+                                    #   from the newline character in the paragraph at its corresponding nesting
+                                    #   level of the list inside the parent placeholder.
+                                    #
+                                    # Inherited text styles are represented as unset fields in this message. If
+                                    # text is contained in a shape without a parent placeholder, unsetting these
+                                    # fields will revert the style to a value matching the defaults in the Slides
+                                    # editor.
+                                  "foregroundColor": { # A color that can either be fully opaque or fully transparent. # The color of the text itself. If set, the color is either opaque or
+                                      # transparent, depending on if the `opaque_color` field in it is set.
+                                    "opaqueColor": { # A themeable solid color value. # If set, this will be used as an opaque color. If unset, this represents
+                                        # a transparent color.
+                                      "themeColor": "A String", # An opaque theme color.
+                                      "rgbColor": { # An RGB color. # An opaque RGB color.
+                                        "blue": 3.14, # The blue component of the color, from 0.0 to 1.0.
+                                        "green": 3.14, # The green component of the color, from 0.0 to 1.0.
+                                        "red": 3.14, # The red component of the color, from 0.0 to 1.0.
+                                      },
+                                    },
+                                  },
+                                  "bold": True or False, # Whether or not the text is bold.
+                                  "baselineOffset": "A String", # The text's vertical offset from its normal position.
+                                      #
+                                      # Text with `SUPERSCRIPT` or `SUBSCRIPT` baseline offsets is automatically
+                                      # rendered in a smaller font size, computed based on the `font_size` field.
+                                      # The `font_size` itself is not affected by changes in this field.
+                                  "strikethrough": True or False, # Whether or not the text is struck through.
+                                  "smallCaps": True or False, # Whether or not the text is in small capital letters.
+                                  "fontFamily": "A String", # The font family of the text.
+                                      #
+                                      # The font family can be any font from the Font menu in Slides or from
+                                      # [Google Fonts] (https://fonts.google.com/). If the font name is
+                                      # unrecognized, the text is rendered in `Arial`.
+                                      #
+                                      # Some fonts can affect the weight of the text. If an update request
+                                      # specifies values for both `font_family` and `bold`, the explicitly-set
+                                      # `bold` value is used.
+                                  "link": { # A hypertext link. # The hyperlink destination of the text. If unset, there is no link. Links
+                                      # are not inherited from parent text.
+                                      #
+                                      # Changing the link in an update request causes some other changes to the
+                                      # text style of the range:
+                                      #
+                                      # * When setting a link, the text foreground color will be set to
+                                      #   ThemeColorType.HYPERLINK and the text will
+                                      #   be underlined. If these fields are modified in the same
+                                      #   request, those values will be used instead of the link defaults.
+                                      # * Setting a link on a text range that overlaps with an existing link will
+                                      #   also update the existing link to point to the new URL.
+                                      # * Links are not settable on newline characters. As a result, setting a link
+                                      #   on a text range that crosses a paragraph boundary, such as `"ABC\n123"`,
+                                      #   will separate the newline character(s) into their own text runs. The
+                                      #   link will be applied separately to the runs before and after the newline.
+                                      # * Removing a link will update the text style of the range to match the
+                                      #   style of the preceding text (or the default text styles if the preceding
+                                      #   text is another link) unless different styles are being set in the same
+                                      #   request.
+                                    "url": "A String", # If set, indicates this is a link to the external web page at this URL.
+                                    "pageObjectId": "A String", # If set, indicates this is a link to the specific page in this
+                                        # presentation with this ID. A page with this ID may not exist.
+                                    "slideIndex": 42, # If set, indicates this is a link to the slide at this zero-based index
+                                        # in the presentation. There may not be a slide at this index.
+                                    "relativeLink": "A String", # If set, indicates this is a link to a slide in this presentation,
+                                        # addressed by its position.
+                                  },
+                                  "italic": True or False, # Whether or not the text is italicized.
+                                  "fontSize": { # A magnitude in a single direction in the specified units. # The size of the text's font. When read, the `font_size` will specified in
+                                      # points.
+                                    "magnitude": 3.14, # The magnitude.
+                                    "unit": "A String", # The units for magnitude.
+                                  },
+                                  "underline": True or False, # Whether or not the text is underlined.
+                                  "backgroundColor": { # A color that can either be fully opaque or fully transparent. # The background color of the text. If set, the color is either opaque or
+                                      # transparent, depending on if the `opaque_color` field in it is set.
+                                    "opaqueColor": { # A themeable solid color value. # If set, this will be used as an opaque color. If unset, this represents
+                                        # a transparent color.
+                                      "themeColor": "A String", # An opaque theme color.
+                                      "rgbColor": { # An RGB color. # An opaque RGB color.
+                                        "blue": 3.14, # The blue component of the color, from 0.0 to 1.0.
+                                        "green": 3.14, # The green component of the color, from 0.0 to 1.0.
+                                        "red": 3.14, # The red component of the color, from 0.0 to 1.0.
+                                      },
+                                    },
+                                  },
+                                },
+                              },
+                            },
+                            "listId": "A String", # The ID of the list.
+                          },
+                        },
+                      },
+                      "rowSpan": 42, # Row span of the cell.
+                      "tableCellProperties": { # The properties of the TableCell. # The properties of the table cell.
+                        "tableCellBackgroundFill": { # The table cell background fill. # The background fill of the table cell. The default fill matches the fill
+                            # for newly created table cells in the Slides editor.
+                          "solidFill": { # A solid color fill. The page or page element is filled entirely with the # Solid color fill.
+                              # specified color value.
+                              #
+                              # If any field is unset, its value may be inherited from a parent placeholder
+                              # if it exists.
+                            "color": { # A themeable solid color value. # The color value of the solid fill.
+                              "themeColor": "A String", # An opaque theme color.
+                              "rgbColor": { # An RGB color. # An opaque RGB color.
+                                "blue": 3.14, # The blue component of the color, from 0.0 to 1.0.
+                                "green": 3.14, # The green component of the color, from 0.0 to 1.0.
+                                "red": 3.14, # The red component of the color, from 0.0 to 1.0.
+                              },
+                            },
+                            "alpha": 3.14, # The fraction of this `color` that should be applied to the pixel.
+                                # That is, the final pixel color is defined by the equation:
+                                #
+                                #   pixel color = alpha * (color) + (1.0 - alpha) * (background color)
+                                #
+                                # This means that a value of 1.0 corresponds to a solid color, whereas
+                                # a value of 0.0 corresponds to a completely transparent color.
+                          },
+                          "propertyState": "A String", # The background fill property state.
+                              #
+                              # Updating the the fill on a table cell will implicitly update this field
+                              # to `RENDERED`, unless another value is specified in the same request. To
+                              # have no fill on a table cell, set this field to `NOT_RENDERED`. In this
+                              # case, any other fill fields set in the same request will be ignored.
+                        },
+                      },
+                      "location": { # A location of a single table cell within a table. # The location of the cell within the table.
+                        "rowIndex": 42, # The 0-based row index.
+                        "columnIndex": 42, # The 0-based column index.
+                      },
+                      "columnSpan": 42, # Column span of the cell.
+                    },
+                  ],
+                  "rowHeight": { # A magnitude in a single direction in the specified units. # Height of a row.
+                    "magnitude": 3.14, # The magnitude.
+                    "unit": "A String", # The units for magnitude.
+                  },
+                },
+              ],
+              "rows": 42, # Number of rows in the table.
+              "columns": 42, # Number of columns in the table.
+            },
+            "line": { # A PageElement kind representing a # A line page element.
+                # line, curved connector, or bent connector.
+              "lineProperties": { # The properties of the Line. # The properties of the line.
+                  #
+                  # When unset, these fields default to values that match the appearance of
+                  # new lines created in the Slides editor.
+                "dashStyle": "A String", # The dash style of the line.
+                "weight": { # A magnitude in a single direction in the specified units. # The thickness of the line.
+                  "magnitude": 3.14, # The magnitude.
+                  "unit": "A String", # The units for magnitude.
+                },
+                "endArrow": "A String", # The style of the arrow at the end of the line.
+                "link": { # A hypertext link. # The hyperlink destination of the line. If unset, there is no link.
+                  "url": "A String", # If set, indicates this is a link to the external web page at this URL.
+                  "pageObjectId": "A String", # If set, indicates this is a link to the specific page in this
+                      # presentation with this ID. A page with this ID may not exist.
+                  "slideIndex": 42, # If set, indicates this is a link to the slide at this zero-based index
+                      # in the presentation. There may not be a slide at this index.
+                  "relativeLink": "A String", # If set, indicates this is a link to a slide in this presentation,
+                      # addressed by its position.
+                },
+                "startArrow": "A String", # The style of the arrow at the beginning of the line.
+                "lineFill": { # The fill of the line. # The fill of the line. The default line fill matches the defaults for new
+                    # lines created in the Slides editor.
+                  "solidFill": { # A solid color fill. The page or page element is filled entirely with the # Solid color fill.
+                      # specified color value.
+                      #
+                      # If any field is unset, its value may be inherited from a parent placeholder
+                      # if it exists.
+                    "color": { # A themeable solid color value. # The color value of the solid fill.
+                      "themeColor": "A String", # An opaque theme color.
+                      "rgbColor": { # An RGB color. # An opaque RGB color.
+                        "blue": 3.14, # The blue component of the color, from 0.0 to 1.0.
+                        "green": 3.14, # The green component of the color, from 0.0 to 1.0.
+                        "red": 3.14, # The red component of the color, from 0.0 to 1.0.
+                      },
+                    },
+                    "alpha": 3.14, # The fraction of this `color` that should be applied to the pixel.
+                        # That is, the final pixel color is defined by the equation:
+                        #
+                        #   pixel color = alpha * (color) + (1.0 - alpha) * (background color)
+                        #
+                        # This means that a value of 1.0 corresponds to a solid color, whereas
+                        # a value of 0.0 corresponds to a completely transparent color.
+                  },
+                },
+              },
+              "lineType": "A String", # The type of the line.
+            },
+            "size": { # A width and height. # The size of the page element.
+              "width": { # A magnitude in a single direction in the specified units. # The width of the object.
+                "magnitude": 3.14, # The magnitude.
+                "unit": "A String", # The units for magnitude.
+              },
+              "height": { # A magnitude in a single direction in the specified units. # The height of the object.
+                "magnitude": 3.14, # The magnitude.
+                "unit": "A String", # The units for magnitude.
+              },
+            },
+            "elementGroup": { # A PageElement kind representing a # A collection of page elements joined as a single unit.
+                # joined collection of PageElements.
+              "children": [ # The collection of elements in the group. The minimum size of a group is 2.
+                # Object with schema name: PageElement
+              ],
+            },
+          },
+        ],
+        "objectId": "A String", # The object ID for this page. Object IDs used by
+            # Page and
+            # PageElement share the same namespace.
+        "pageProperties": { # The properties of the Page. # The properties of the page.
+            #
+            # The page will inherit properties from the parent page. Depending on the page
+            # type the hierarchy is defined in either
+            # SlideProperties or
+            # LayoutProperties.
+          "pageBackgroundFill": { # The page background fill. # The background fill of the page. If unset, the background fill is inherited
+              # from a parent page if it exists. If the page has no parent, then the
+              # background fill defaults to the corresponding fill in the Slides editor.
+            "solidFill": { # A solid color fill. The page or page element is filled entirely with the # Solid color fill.
+                # specified color value.
+                #
+                # If any field is unset, its value may be inherited from a parent placeholder
+                # if it exists.
+              "color": { # A themeable solid color value. # The color value of the solid fill.
+                "themeColor": "A String", # An opaque theme color.
+                "rgbColor": { # An RGB color. # An opaque RGB color.
+                  "blue": 3.14, # The blue component of the color, from 0.0 to 1.0.
+                  "green": 3.14, # The green component of the color, from 0.0 to 1.0.
+                  "red": 3.14, # The red component of the color, from 0.0 to 1.0.
+                },
+              },
+              "alpha": 3.14, # The fraction of this `color` that should be applied to the pixel.
+                  # That is, the final pixel color is defined by the equation:
+                  #
+                  #   pixel color = alpha * (color) + (1.0 - alpha) * (background color)
+                  #
+                  # This means that a value of 1.0 corresponds to a solid color, whereas
+                  # a value of 0.0 corresponds to a completely transparent color.
+            },
+            "propertyState": "A String", # The background fill property state.
+                #
+                # Updating the the fill on a page will implicitly update this field to
+                # `RENDERED`, unless another value is specified in the same request. To
+                # have no fill on a page, set this field to `NOT_RENDERED`. In this case,
+                # any other fill fields set in the same request will be ignored.
+            "stretchedPictureFill": { # The stretched picture fill. The page or page element is filled entirely with # Stretched picture fill.
+                # the specified picture. The picture is stretched to fit its container.
+              "contentUrl": "A String", # Reading the content_url:
+                  #
+                  # An URL to a picture with a default lifetime of 30 minutes.
+                  # This URL is tagged with the account of the requester. Anyone with the URL
+                  # effectively accesses the picture as the original requester. Access to the
+                  # picture may be lost if the presentation's sharing settings change.
+                  #
+                  # Writing the content_url:
+                  #
+                  # The picture is fetched once at insertion time and a copy is stored for
+                  # display inside the presentation. Pictures must be less than 50MB in size,
+                  # cannot exceed 25 megapixels, and must be in either in PNG, JPEG, or GIF
+                  # format.
+              "size": { # A width and height. # The original size of the picture fill. This field is read-only.
+                "width": { # A magnitude in a single direction in the specified units. # The width of the object.
+                  "magnitude": 3.14, # The magnitude.
+                  "unit": "A String", # The units for magnitude.
+                },
+                "height": { # A magnitude in a single direction in the specified units. # The height of the object.
+                  "magnitude": 3.14, # The magnitude.
+                  "unit": "A String", # The units for magnitude.
+                },
+              },
+            },
+          },
+          "colorScheme": { # The palette of predefined colors for a page. # The color scheme of the page. If unset, the color scheme is inherited from
+              # a parent page. If the page has no parent, the color scheme uses a default
+              # Slides color scheme. This field is read-only.
+            "colors": [ # The ThemeColorType and corresponding concrete color pairs.
+              { # A pair mapping a theme color type to the concrete color it represents.
+                "color": { # An RGB color. # The concrete color corresponding to the theme color type above.
+                  "blue": 3.14, # The blue component of the color, from 0.0 to 1.0.
+                  "green": 3.14, # The green component of the color, from 0.0 to 1.0.
+                  "red": 3.14, # The red component of the color, from 0.0 to 1.0.
+                },
+                "type": "A String", # The type of the theme color.
+              },
+            ],
+          },
+        },
+        "pageType": "A String", # The type of the page.
+        "slideProperties": { # The properties of Page that are only # Slide specific properties. Only set if page_type = SLIDE.
+            # relevant for pages with page_type SLIDE.
+          "masterObjectId": "A String", # The object ID of the master that this slide is based on.
+          "layoutObjectId": "A String", # The object ID of the layout that this slide is based on.
+        },
+      },
+    ],
+  }
+
+  x__xgafv: string, V1 error format.
+    Allowed values
+      1 - v1 error format
+      2 - v2 error format
+
+Returns:
+  An object of the form:
+
+    { # A Google Slides presentation.
+      "presentationId": "A String", # The ID of the presentation.
+      "masters": [ # The slide masters in the presentation. A slide master contains all common
+          # page elements and the common properties for a set of layouts. They serve
+          # three purposes:
+          #
+          # - Placeholder shapes on a master contain the default text styles and shape
+          #   properties of all placeholder shapes on pages that use that master.
+          # - The master page properties define the common page properties inherited by
+          #   its layouts.
+          # - Any other shapes on the master slide will appear on all slides using that
+          #   master, regardless of their layout.
+        { # A page in a presentation.
+          "layoutProperties": { # The properties of Page are only # Layout specific properties. Only set if page_type = LAYOUT.
+              # relevant for pages with page_type LAYOUT.
+            "displayName": "A String", # The human readable name of the layout in the presentation's locale.
+            "name": "A String", # The name of the layout.
+            "masterObjectId": "A String", # The object ID of the master that this layout is based on.
+          },
+          "pageElements": [ # The page elements rendered on the page.
+            { # A visual element rendered on a page.
+              "wordArt": { # A PageElement kind representing # A word art page element.
+                  # word art.
+                "renderedText": "A String", # The text rendered as word art.
+              },
+              "description": "A String", # The description of the page element. Combined with title to display alt
+                  # text.
+              "objectId": "A String", # The object ID for this page element. Object IDs used by
+                  # google.apps.slides.v1.Page and
+                  # google.apps.slides.v1.PageElement share the same namespace.
+              "title": "A String", # The title of the page element. Combined with description to display alt
+                  # text.
+              "image": { # A PageElement kind representing an # An image page element.
+                  # image.
+                "contentUrl": "A String", # An URL to an image with a default lifetime of 30 minutes.
+                    # This URL is tagged with the account of the requester. Anyone with the URL
+                    # effectively accesses the image as the original requester. Access to the
+                    # image may be lost if the presentation's sharing settings change.
+                "imageProperties": { # The properties of the Image. # The properties of the image.
+                  "outline": { # The outline of a PageElement. # The outline of the image. If not set, the the image has no outline.
+                      #
+                      # If these fields are unset, they may be inherited from a parent placeholder
+                      # if it exists. If there is no parent, the fields will default to the value
+                      # used for new page elements created in the Slides editor, which may depend on
+                      # the page element kind.
+                    "dashStyle": "A String", # The dash style of the outline.
+                    "propertyState": "A String", # The outline property state.
+                        #
+                        # Updating the the outline on a page element will implicitly update this
+                        # field to`RENDERED`, unless another value is specified in the same request.
+                        # To have no outline on a page element, set this field to `NOT_RENDERED`. In
+                        # this case, any other outline fields set in the same request will be
+                        # ignored.
+                    "outlineFill": { # The fill of the outline. # The fill of the outline.
+                      "solidFill": { # A solid color fill. The page or page element is filled entirely with the # Solid color fill.
+                          # specified color value.
+                          #
+                          # If any field is unset, its value may be inherited from a parent placeholder
+                          # if it exists.
+                        "color": { # A themeable solid color value. # The color value of the solid fill.
+                          "themeColor": "A String", # An opaque theme color.
+                          "rgbColor": { # An RGB color. # An opaque RGB color.
+                            "blue": 3.14, # The blue component of the color, from 0.0 to 1.0.
+                            "green": 3.14, # The green component of the color, from 0.0 to 1.0.
+                            "red": 3.14, # The red component of the color, from 0.0 to 1.0.
+                          },
+                        },
+                        "alpha": 3.14, # The fraction of this `color` that should be applied to the pixel.
+                            # That is, the final pixel color is defined by the equation:
+                            #
+                            #   pixel color = alpha * (color) + (1.0 - alpha) * (background color)
+                            #
+                            # This means that a value of 1.0 corresponds to a solid color, whereas
+                            # a value of 0.0 corresponds to a completely transparent color.
+                      },
+                    },
+                    "weight": { # A magnitude in a single direction in the specified units. # The thickness of the outline.
+                      "magnitude": 3.14, # The magnitude.
+                      "unit": "A String", # The units for magnitude.
+                    },
+                  },
+                  "brightness": 3.14, # The brightness effect of the image. The value should be in the interval
+                      # [-1.0, 1.0], where 0 means no effect. This property is read-only.
+                  "recolor": { # A recolor effect applied on an image. # The recolor effect of the image. If not set, the image is not recolored.
+                      # This property is read-only.
+                    "recolorStops": [ # The recolor effect is represented by a gradient, which is a list of color
+                        # stops. This property is read-only.
+                      { # A color and position in a gradient band.
+                        "color": { # A themeable solid color value. # The color of the gradient stop.
+                          "themeColor": "A String", # An opaque theme color.
+                          "rgbColor": { # An RGB color. # An opaque RGB color.
+                            "blue": 3.14, # The blue component of the color, from 0.0 to 1.0.
+                            "green": 3.14, # The green component of the color, from 0.0 to 1.0.
+                            "red": 3.14, # The red component of the color, from 0.0 to 1.0.
+                          },
+                        },
+                        "position": 3.14, # The relative position of the color stop in the gradient band measured
+                            # in percentage. The value should be in the interval [0.0, 1.0].
+                        "alpha": 3.14, # The alpha value of this color in the gradient band. Defaults to 1.0,
+                            # fully opaque.
+                      },
+                    ],
+                  },
+                  "link": { # A hypertext link. # The hyperlink destination of the image. If unset, there is no link.
+                    "url": "A String", # If set, indicates this is a link to the external web page at this URL.
+                    "pageObjectId": "A String", # If set, indicates this is a link to the specific page in this
+                        # presentation with this ID. A page with this ID may not exist.
+                    "slideIndex": 42, # If set, indicates this is a link to the slide at this zero-based index
+                        # in the presentation. There may not be a slide at this index.
+                    "relativeLink": "A String", # If set, indicates this is a link to a slide in this presentation,
+                        # addressed by its position.
+                  },
+                  "transparency": 3.14, # The transparency effect of the image. The value should be in the interval
+                      # [0.0, 1.0], where 0 means no effect and 1 means completely transparent.
+                      # This property is read-only.
+                  "cropProperties": { # The crop properties of an object enclosed in a container. For example, an # The crop properties of the image. If not set, the image is not cropped.
+                      # This property is read-only.
+                      # Image.
+                      #
+                      # The crop properties is represented by the offsets of four edges which define
+                      # a crop rectangle. The offsets are measured in percentage from the
+                      # corresponding edges of the object's original bounding rectangle towards
+                      # inside, relative to the object's original dimensions.
+                      #
+                      # - If the offset is in the interval (0, 1), the corresponding edge of crop
+                      # rectangle is positioned inside of the object's original bounding rectangle.
+                      # - If the offset is negative or greater than 1, the corresponding edge of crop
+                      # rectangle is positioned outside of the object's original bounding rectangle.
+                      # - If the left edge of the crop rectangle is on the right side of its right
+                      # edge, the object will be flipped horizontally.
+                      # - If the top edge of the crop rectangle is below its bottom edge, the object
+                      # will be flipped vertically.
+                      # - If all offsets and rotation angle is 0, the object is not cropped.
+                      #
+                      # After cropping, the content in the crop rectangle will be stretched to fit
+                      # its container.
+                    "leftOffset": 3.14, # The offset specifies the left edge of the crop rectangle that is located to
+                        # the right of the original bounding rectangle left edge, relative to the
+                        # object's original width.
+                    "angle": 3.14, # The rotation angle of the crop window around its center, in radians.
+                        # Rotation angle is applied after the offset.
+                    "bottomOffset": 3.14, # The offset specifies the bottom edge of the crop rectangle that is located
+                        # above the original bounding rectangle bottom edge, relative to the object's
+                        # original height.
+                    "rightOffset": 3.14, # The offset specifies the right edge of the crop rectangle that is located
+                        # to the left of the original bounding rectangle right edge, relative to the
+                        # object's original width.
+                    "topOffset": 3.14, # The offset specifies the top edge of the crop rectangle that is located
+                        # below the original bounding rectangle top edge, relative to the object's
+                        # original height.
+                  },
+                  "shadow": { # The shadow properties of a page element. # The shadow of the image. If not set, the image has no shadow. This property
+                      # is read-only.
+                      #
+                      # If these fields are unset, they may be inherited from a parent placeholder
+                      # if it exists. If there is no parent, the fields will default to the value
+                      # used for new page elements created in the Slides editor, which may depend on
+                      # the page element kind.
+                    "color": { # A themeable solid color value. # The shadow color value.
+                      "themeColor": "A String", # An opaque theme color.
+                      "rgbColor": { # An RGB color. # An opaque RGB color.
+                        "blue": 3.14, # The blue component of the color, from 0.0 to 1.0.
+                        "green": 3.14, # The green component of the color, from 0.0 to 1.0.
+                        "red": 3.14, # The red component of the color, from 0.0 to 1.0.
+                      },
+                    },
+                    "transform": { # AffineTransform uses a 3x3 matrix with an implied last row of [ 0 0 1 ] # Transform that encodes the translate, scale, and skew of the shadow,
+                        # relative to the alignment position.
+                        # to transform source coordinates (x,y) into destination coordinates (x', y')
+                        # according to:
+                        #
+                        #       x'  x  =   shear_y  scale_y  translate_y
+                        #       1  [ 1 ]
+                        #
+                        # After transformation,
+                        #
+                        #      x' = scale_x * x + shear_x * y + translate_x;
+                        #      y' = scale_y * y + shear_y * x + translate_y;
+                        #
+                        # This message is therefore composed of these six matrix elements.
+                      "translateX": 3.14, # The X coordinate translation element.
+                      "translateY": 3.14, # The Y coordinate translation element.
+                      "scaleX": 3.14, # The X coordinate scaling element.
+                      "scaleY": 3.14, # The Y coordinate scaling element.
+                      "shearY": 3.14, # The Y coordinate shearing element.
+                      "shearX": 3.14, # The X coordinate shearing element.
+                      "unit": "A String", # The units for translate elements.
+                    },
+                    "propertyState": "A String", # The shadow property state.
+                        #
+                        # Updating the the shadow on a page element will implicitly update this field
+                        # to `RENDERED`, unless another value is specified in the same request. To
+                        # have no shadow on a page element, set this field to `NOT_RENDERED`. In this
+                        # case, any other shadow fields set in the same request will be ignored.
+                    "blurRadius": { # A magnitude in a single direction in the specified units. # The radius of the shadow blur. The larger the radius, the more diffuse the
+                        # shadow becomes.
+                      "magnitude": 3.14, # The magnitude.
+                      "unit": "A String", # The units for magnitude.
+                    },
+                    "alpha": 3.14, # The alpha of the shadow's color, from 0.0 to 1.0.
+                    "type": "A String", # The type of the shadow.
+                    "alignment": "A String", # The alignment point of the shadow, that sets the origin for translate,
+                        # scale and skew of the shadow.
+                    "rotateWithShape": True or False, # Whether the shadow should rotate with the shape.
+                  },
+                  "contrast": 3.14, # The contrast effect of the image. The value should be in the interval
+                      # [-1.0, 1.0], where 0 means no effect. This property is read-only.
+                },
+              },
+              "transform": { # AffineTransform uses a 3x3 matrix with an implied last row of [ 0 0 1 ] # The transform of the page element.
+                  # to transform source coordinates (x,y) into destination coordinates (x', y')
+                  # according to:
+                  #
+                  #       x'  x  =   shear_y  scale_y  translate_y
+                  #       1  [ 1 ]
+                  #
+                  # After transformation,
+                  #
+                  #      x' = scale_x * x + shear_x * y + translate_x;
+                  #      y' = scale_y * y + shear_y * x + translate_y;
+                  #
+                  # This message is therefore composed of these six matrix elements.
+                "translateX": 3.14, # The X coordinate translation element.
+                "translateY": 3.14, # The Y coordinate translation element.
+                "scaleX": 3.14, # The X coordinate scaling element.
+                "scaleY": 3.14, # The Y coordinate scaling element.
+                "shearY": 3.14, # The Y coordinate shearing element.
+                "shearX": 3.14, # The X coordinate shearing element.
+                "unit": "A String", # The units for translate elements.
+              },
+              "shape": { # A PageElement kind representing a # A generic shape.
+                  # generic shape that does not have a more specific classification.
+                "text": { # The general text content. The text must reside in a compatible shape (e.g. # The text content of the shape.
+                    # text box or rectangle) or a table cell in a page.
+                  "textElements": [ # The text contents broken down into its component parts, including styling
+                      # information. This property is read-only.
+                    { # A TextElement describes the content of a range of indices in the text content
+                        # of a Shape or TableCell.
+                      "autoText": { # A TextElement kind that represents auto text. # A TextElement representing a spot in the text that is dynamically
+                          # replaced with content that can change over time.
+                        "content": "A String", # The rendered content of this auto text, if available.
+                        "style": { # Represents the styling that can be applied to a TextRun. # The styling applied to this auto text.
+                            #
+                            # If this text is contained in a shape with a parent placeholder, then these text styles may be
+                            # inherited from the parent. Which text styles are inherited depend on the
+                            # nesting level of lists:
+                            #
+                            # * A text run in a paragraph that is not in a list will inherit its text style
+                            #   from the the newline character in the paragraph at the 0 nesting level of
+                            #   the list inside the parent placeholder.
+                            # * A text run in a paragraph that is in a list will inherit its text style
+                            #   from the newline character in the paragraph at its corresponding nesting
+                            #   level of the list inside the parent placeholder.
+                            #
+                            # Inherited text styles are represented as unset fields in this message. If
+                            # text is contained in a shape without a parent placeholder, unsetting these
+                            # fields will revert the style to a value matching the defaults in the Slides
+                            # editor.
+                          "foregroundColor": { # A color that can either be fully opaque or fully transparent. # The color of the text itself. If set, the color is either opaque or
+                              # transparent, depending on if the `opaque_color` field in it is set.
+                            "opaqueColor": { # A themeable solid color value. # If set, this will be used as an opaque color. If unset, this represents
+                                # a transparent color.
+                              "themeColor": "A String", # An opaque theme color.
+                              "rgbColor": { # An RGB color. # An opaque RGB color.
+                                "blue": 3.14, # The blue component of the color, from 0.0 to 1.0.
+                                "green": 3.14, # The green component of the color, from 0.0 to 1.0.
+                                "red": 3.14, # The red component of the color, from 0.0 to 1.0.
+                              },
+                            },
+                          },
+                          "bold": True or False, # Whether or not the text is bold.
+                          "baselineOffset": "A String", # The text's vertical offset from its normal position.
+                              #
+                              # Text with `SUPERSCRIPT` or `SUBSCRIPT` baseline offsets is automatically
+                              # rendered in a smaller font size, computed based on the `font_size` field.
+                              # The `font_size` itself is not affected by changes in this field.
+                          "strikethrough": True or False, # Whether or not the text is struck through.
+                          "smallCaps": True or False, # Whether or not the text is in small capital letters.
+                          "fontFamily": "A String", # The font family of the text.
+                              #
+                              # The font family can be any font from the Font menu in Slides or from
+                              # [Google Fonts] (https://fonts.google.com/). If the font name is
+                              # unrecognized, the text is rendered in `Arial`.
+                              #
+                              # Some fonts can affect the weight of the text. If an update request
+                              # specifies values for both `font_family` and `bold`, the explicitly-set
+                              # `bold` value is used.
+                          "link": { # A hypertext link. # The hyperlink destination of the text. If unset, there is no link. Links
+                              # are not inherited from parent text.
+                              #
+                              # Changing the link in an update request causes some other changes to the
+                              # text style of the range:
+                              #
+                              # * When setting a link, the text foreground color will be set to
+                              #   ThemeColorType.HYPERLINK and the text will
+                              #   be underlined. If these fields are modified in the same
+                              #   request, those values will be used instead of the link defaults.
+                              # * Setting a link on a text range that overlaps with an existing link will
+                              #   also update the existing link to point to the new URL.
+                              # * Links are not settable on newline characters. As a result, setting a link
+                              #   on a text range that crosses a paragraph boundary, such as `"ABC\n123"`,
+                              #   will separate the newline character(s) into their own text runs. The
+                              #   link will be applied separately to the runs before and after the newline.
+                              # * Removing a link will update the text style of the range to match the
+                              #   style of the preceding text (or the default text styles if the preceding
+                              #   text is another link) unless different styles are being set in the same
+                              #   request.
+                            "url": "A String", # If set, indicates this is a link to the external web page at this URL.
+                            "pageObjectId": "A String", # If set, indicates this is a link to the specific page in this
+                                # presentation with this ID. A page with this ID may not exist.
+                            "slideIndex": 42, # If set, indicates this is a link to the slide at this zero-based index
+                                # in the presentation. There may not be a slide at this index.
+                            "relativeLink": "A String", # If set, indicates this is a link to a slide in this presentation,
+                                # addressed by its position.
+                          },
+                          "italic": True or False, # Whether or not the text is italicized.
+                          "fontSize": { # A magnitude in a single direction in the specified units. # The size of the text's font. When read, the `font_size` will specified in
+                              # points.
+                            "magnitude": 3.14, # The magnitude.
+                            "unit": "A String", # The units for magnitude.
+                          },
+                          "underline": True or False, # Whether or not the text is underlined.
+                          "backgroundColor": { # A color that can either be fully opaque or fully transparent. # The background color of the text. If set, the color is either opaque or
+                              # transparent, depending on if the `opaque_color` field in it is set.
+                            "opaqueColor": { # A themeable solid color value. # If set, this will be used as an opaque color. If unset, this represents
+                                # a transparent color.
+                              "themeColor": "A String", # An opaque theme color.
+                              "rgbColor": { # An RGB color. # An opaque RGB color.
+                                "blue": 3.14, # The blue component of the color, from 0.0 to 1.0.
+                                "green": 3.14, # The green component of the color, from 0.0 to 1.0.
+                                "red": 3.14, # The red component of the color, from 0.0 to 1.0.
+                              },
+                            },
+                          },
+                        },
+                        "type": "A String", # The type of this auto text.
+                      },
+                      "endIndex": 42, # The zero-based end index of this text element, exclusive, in Unicode code
+                          # units.
+                      "startIndex": 42, # The zero-based start index of this text element, in Unicode code units.
+                      "paragraphMarker": { # A TextElement kind that represents the beginning of a new paragraph. # A marker representing the beginning of a new paragraph.
+                          #
+                          # The `start_index` and `end_index` of this TextElement represent the
+                          # range of the paragraph. Other TextElements with an index range contained
+                          # inside this paragraph's range are considered to be part of this
+                          # paragraph. The range of indices of two separate paragraphs will never
+                          # overlap.
+                        "style": { # Styles that apply to a whole paragraph. # The paragraph's style
+                            #
+                            # If this text is contained in a shape with a parent placeholder, then these paragraph styles may be
+                            # inherited from the parent. Which paragraph styles are inherited depend on the
+                            # nesting level of lists:
+                            #
+                            # * A paragraph not in a list will inherit its paragraph style from the
+                            #   paragraph at the 0 nesting level of the list inside the parent placeholder.
+                            # * A paragraph in a list will inherit its paragraph style from the paragraph
+                            #   at its corresponding nesting level of the list inside the parent
+                            #   placeholder.
+                            #
+                            # Inherited paragraph styles are represented as unset fields in this message.
+                          "spacingMode": "A String", # The spacing mode for the paragraph. This property is read-only.
+                          "direction": "A String", # The text direction of this paragraph. This property is read-only.
+                          "spaceBelow": { # A magnitude in a single direction in the specified units. # The amount of extra space above the paragraph. If unset, the value is
+                              # inherited from the parent. This property is read-only.
+                            "magnitude": 3.14, # The magnitude.
+                            "unit": "A String", # The units for magnitude.
+                          },
+                          "lineSpacing": 3.14, # The amount of space between lines, as a percentage of normal, where normal
+                              # is represented as 100.0. If unset, the value is inherited from the parent.
+                              # This property is read-only.
+                          "indentStart": { # A magnitude in a single direction in the specified units. # The amount indentation for the paragraph on the side that corresponds to
+                              # the start of the text, based on the current text direction. If unset, the
+                              # value is inherited from the parent. This property is read-only.
+                            "magnitude": 3.14, # The magnitude.
+                            "unit": "A String", # The units for magnitude.
+                          },
+                          "spaceAbove": { # A magnitude in a single direction in the specified units. # The amount of extra space above the paragraph. If unset, the value is
+                              # inherited from the parent. This property is read-only.
+                            "magnitude": 3.14, # The magnitude.
+                            "unit": "A String", # The units for magnitude.
+                          },
+                          "indentEnd": { # A magnitude in a single direction in the specified units. # The amount indentation for the paragraph on the side that corresponds to
+                              # the end of the text, based on the current text direction. If unset, the
+                              # value is inherited from the parent. This property is read-only.
+                            "magnitude": 3.14, # The magnitude.
+                            "unit": "A String", # The units for magnitude.
+                          },
+                          "indentFirstLine": { # A magnitude in a single direction in the specified units. # The amount of indentation for the start of the first line of the paragraph.
+                              # If unset, the value is inherited from the parent. This property is
+                              # read-only.
+                            "magnitude": 3.14, # The magnitude.
+                            "unit": "A String", # The units for magnitude.
+                          },
+                          "alignment": "A String", # The text alignment for this paragraph. This property is read-only.
+                        },
+                        "bullet": { # Describes the bullet of a paragraph. # The bullet for this paragraph. If not present, the paragraph does not
+                            # belong to a list.
+                          "nestingLevel": 42, # The nesting level of this paragraph in the list.
+                          "listId": "A String", # The ID of the list this paragraph belongs to.
+                          "bulletStyle": { # Represents the styling that can be applied to a TextRun. # The paragraph specific text style applied to this bullet.
+                              #
+                              # If this text is contained in a shape with a parent placeholder, then these text styles may be
+                              # inherited from the parent. Which text styles are inherited depend on the
+                              # nesting level of lists:
+                              #
+                              # * A text run in a paragraph that is not in a list will inherit its text style
+                              #   from the the newline character in the paragraph at the 0 nesting level of
+                              #   the list inside the parent placeholder.
+                              # * A text run in a paragraph that is in a list will inherit its text style
+                              #   from the newline character in the paragraph at its corresponding nesting
+                              #   level of the list inside the parent placeholder.
+                              #
+                              # Inherited text styles are represented as unset fields in this message. If
+                              # text is contained in a shape without a parent placeholder, unsetting these
+                              # fields will revert the style to a value matching the defaults in the Slides
+                              # editor.
+                            "foregroundColor": { # A color that can either be fully opaque or fully transparent. # The color of the text itself. If set, the color is either opaque or
+                                # transparent, depending on if the `opaque_color` field in it is set.
+                              "opaqueColor": { # A themeable solid color value. # If set, this will be used as an opaque color. If unset, this represents
+                                  # a transparent color.
+                                "themeColor": "A String", # An opaque theme color.
+                                "rgbColor": { # An RGB color. # An opaque RGB color.
+                                  "blue": 3.14, # The blue component of the color, from 0.0 to 1.0.
+                                  "green": 3.14, # The green component of the color, from 0.0 to 1.0.
+                                  "red": 3.14, # The red component of the color, from 0.0 to 1.0.
+                                },
+                              },
+                            },
+                            "bold": True or False, # Whether or not the text is bold.
+                            "baselineOffset": "A String", # The text's vertical offset from its normal position.
+                                #
+                                # Text with `SUPERSCRIPT` or `SUBSCRIPT` baseline offsets is automatically
+                                # rendered in a smaller font size, computed based on the `font_size` field.
+                                # The `font_size` itself is not affected by changes in this field.
+                            "strikethrough": True or False, # Whether or not the text is struck through.
+                            "smallCaps": True or False, # Whether or not the text is in small capital letters.
+                            "fontFamily": "A String", # The font family of the text.
+                                #
+                                # The font family can be any font from the Font menu in Slides or from
+                                # [Google Fonts] (https://fonts.google.com/). If the font name is
+                                # unrecognized, the text is rendered in `Arial`.
+                                #
+                                # Some fonts can affect the weight of the text. If an update request
+                                # specifies values for both `font_family` and `bold`, the explicitly-set
+                                # `bold` value is used.
+                            "link": { # A hypertext link. # The hyperlink destination of the text. If unset, there is no link. Links
+                                # are not inherited from parent text.
+                                #
+                                # Changing the link in an update request causes some other changes to the
+                                # text style of the range:
+                                #
+                                # * When setting a link, the text foreground color will be set to
+                                #   ThemeColorType.HYPERLINK and the text will
+                                #   be underlined. If these fields are modified in the same
+                                #   request, those values will be used instead of the link defaults.
+                                # * Setting a link on a text range that overlaps with an existing link will
+                                #   also update the existing link to point to the new URL.
+                                # * Links are not settable on newline characters. As a result, setting a link
+                                #   on a text range that crosses a paragraph boundary, such as `"ABC\n123"`,
+                                #   will separate the newline character(s) into their own text runs. The
+                                #   link will be applied separately to the runs before and after the newline.
+                                # * Removing a link will update the text style of the range to match the
+                                #   style of the preceding text (or the default text styles if the preceding
+                                #   text is another link) unless different styles are being set in the same
+                                #   request.
+                              "url": "A String", # If set, indicates this is a link to the external web page at this URL.
+                              "pageObjectId": "A String", # If set, indicates this is a link to the specific page in this
+                                  # presentation with this ID. A page with this ID may not exist.
+                              "slideIndex": 42, # If set, indicates this is a link to the slide at this zero-based index
+                                  # in the presentation. There may not be a slide at this index.
+                              "relativeLink": "A String", # If set, indicates this is a link to a slide in this presentation,
+                                  # addressed by its position.
+                            },
+                            "italic": True or False, # Whether or not the text is italicized.
+                            "fontSize": { # A magnitude in a single direction in the specified units. # The size of the text's font. When read, the `font_size` will specified in
+                                # points.
+                              "magnitude": 3.14, # The magnitude.
+                              "unit": "A String", # The units for magnitude.
+                            },
+                            "underline": True or False, # Whether or not the text is underlined.
+                            "backgroundColor": { # A color that can either be fully opaque or fully transparent. # The background color of the text. If set, the color is either opaque or
+                                # transparent, depending on if the `opaque_color` field in it is set.
+                              "opaqueColor": { # A themeable solid color value. # If set, this will be used as an opaque color. If unset, this represents
+                                  # a transparent color.
+                                "themeColor": "A String", # An opaque theme color.
+                                "rgbColor": { # An RGB color. # An opaque RGB color.
+                                  "blue": 3.14, # The blue component of the color, from 0.0 to 1.0.
+                                  "green": 3.14, # The green component of the color, from 0.0 to 1.0.
+                                  "red": 3.14, # The red component of the color, from 0.0 to 1.0.
+                                },
+                              },
+                            },
+                          },
+                          "glyph": "A String", # The rendered bullet glyph for this paragraph.
+                        },
+                      },
+                      "textRun": { # A TextElement kind that represents a run of text that all has the same # A TextElement representing a run of text where all of the characters
+                          # in the run have the same TextStyle.
+                          #
+                          # The `start_index` and `end_index` of TextRuns will always be fully
+                          # contained in the index range of a single `paragraph_marker` TextElement.
+                          # In other words, a TextRun will never span multiple paragraphs.
+                          # styling.
+                        "content": "A String", # The text of this run.
+                        "style": { # Represents the styling that can be applied to a TextRun. # The styling applied to this run.
+                            #
+                            # If this text is contained in a shape with a parent placeholder, then these text styles may be
+                            # inherited from the parent. Which text styles are inherited depend on the
+                            # nesting level of lists:
+                            #
+                            # * A text run in a paragraph that is not in a list will inherit its text style
+                            #   from the the newline character in the paragraph at the 0 nesting level of
+                            #   the list inside the parent placeholder.
+                            # * A text run in a paragraph that is in a list will inherit its text style
+                            #   from the newline character in the paragraph at its corresponding nesting
+                            #   level of the list inside the parent placeholder.
+                            #
+                            # Inherited text styles are represented as unset fields in this message. If
+                            # text is contained in a shape without a parent placeholder, unsetting these
+                            # fields will revert the style to a value matching the defaults in the Slides
+                            # editor.
+                          "foregroundColor": { # A color that can either be fully opaque or fully transparent. # The color of the text itself. If set, the color is either opaque or
+                              # transparent, depending on if the `opaque_color` field in it is set.
+                            "opaqueColor": { # A themeable solid color value. # If set, this will be used as an opaque color. If unset, this represents
+                                # a transparent color.
+                              "themeColor": "A String", # An opaque theme color.
+                              "rgbColor": { # An RGB color. # An opaque RGB color.
+                                "blue": 3.14, # The blue component of the color, from 0.0 to 1.0.
+                                "green": 3.14, # The green component of the color, from 0.0 to 1.0.
+                                "red": 3.14, # The red component of the color, from 0.0 to 1.0.
+                              },
+                            },
+                          },
+                          "bold": True or False, # Whether or not the text is bold.
+                          "baselineOffset": "A String", # The text's vertical offset from its normal position.
+                              #
+                              # Text with `SUPERSCRIPT` or `SUBSCRIPT` baseline offsets is automatically
+                              # rendered in a smaller font size, computed based on the `font_size` field.
+                              # The `font_size` itself is not affected by changes in this field.
+                          "strikethrough": True or False, # Whether or not the text is struck through.
+                          "smallCaps": True or False, # Whether or not the text is in small capital letters.
+                          "fontFamily": "A String", # The font family of the text.
+                              #
+                              # The font family can be any font from the Font menu in Slides or from
+                              # [Google Fonts] (https://fonts.google.com/). If the font name is
+                              # unrecognized, the text is rendered in `Arial`.
+                              #
+                              # Some fonts can affect the weight of the text. If an update request
+                              # specifies values for both `font_family` and `bold`, the explicitly-set
+                              # `bold` value is used.
+                          "link": { # A hypertext link. # The hyperlink destination of the text. If unset, there is no link. Links
+                              # are not inherited from parent text.
+                              #
+                              # Changing the link in an update request causes some other changes to the
+                              # text style of the range:
+                              #
+                              # * When setting a link, the text foreground color will be set to
+                              #   ThemeColorType.HYPERLINK and the text will
+                              #   be underlined. If these fields are modified in the same
+                              #   request, those values will be used instead of the link defaults.
+                              # * Setting a link on a text range that overlaps with an existing link will
+                              #   also update the existing link to point to the new URL.
+                              # * Links are not settable on newline characters. As a result, setting a link
+                              #   on a text range that crosses a paragraph boundary, such as `"ABC\n123"`,
+                              #   will separate the newline character(s) into their own text runs. The
+                              #   link will be applied separately to the runs before and after the newline.
+                              # * Removing a link will update the text style of the range to match the
+                              #   style of the preceding text (or the default text styles if the preceding
+                              #   text is another link) unless different styles are being set in the same
+                              #   request.
+                            "url": "A String", # If set, indicates this is a link to the external web page at this URL.
+                            "pageObjectId": "A String", # If set, indicates this is a link to the specific page in this
+                                # presentation with this ID. A page with this ID may not exist.
+                            "slideIndex": 42, # If set, indicates this is a link to the slide at this zero-based index
+                                # in the presentation. There may not be a slide at this index.
+                            "relativeLink": "A String", # If set, indicates this is a link to a slide in this presentation,
+                                # addressed by its position.
+                          },
+                          "italic": True or False, # Whether or not the text is italicized.
+                          "fontSize": { # A magnitude in a single direction in the specified units. # The size of the text's font. When read, the `font_size` will specified in
+                              # points.
+                            "magnitude": 3.14, # The magnitude.
+                            "unit": "A String", # The units for magnitude.
+                          },
+                          "underline": True or False, # Whether or not the text is underlined.
+                          "backgroundColor": { # A color that can either be fully opaque or fully transparent. # The background color of the text. If set, the color is either opaque or
+                              # transparent, depending on if the `opaque_color` field in it is set.
+                            "opaqueColor": { # A themeable solid color value. # If set, this will be used as an opaque color. If unset, this represents
+                                # a transparent color.
+                              "themeColor": "A String", # An opaque theme color.
+                              "rgbColor": { # An RGB color. # An opaque RGB color.
+                                "blue": 3.14, # The blue component of the color, from 0.0 to 1.0.
+                                "green": 3.14, # The green component of the color, from 0.0 to 1.0.
+                                "red": 3.14, # The red component of the color, from 0.0 to 1.0.
+                              },
+                            },
+                          },
+                        },
+                      },
+                    },
+                  ],
+                  "lists": { # The bulleted lists contained in this text, keyed by list ID.
+                    "a_key": { # A List describes the look and feel of bullets belonging to paragraphs
+                        # associated with a list. A paragraph that is part of a list has an implicit
+                        # reference to that list's ID.
+                      "nestingLevel": { # A map of nesting levels to the properties of bullets at the associated
+                          # level. A list has at most nine levels of nesting, so the possible values
+                          # for the keys of this map are 0 through 8, inclusive.
+                        "a_key": { # Contains properties describing the look and feel of a list bullet at a given
+                            # level of nesting.
+                          "bulletStyle": { # Represents the styling that can be applied to a TextRun. # The style of a bullet at this level of nesting.
+                              #
+                              # If this text is contained in a shape with a parent placeholder, then these text styles may be
+                              # inherited from the parent. Which text styles are inherited depend on the
+                              # nesting level of lists:
+                              #
+                              # * A text run in a paragraph that is not in a list will inherit its text style
+                              #   from the the newline character in the paragraph at the 0 nesting level of
+                              #   the list inside the parent placeholder.
+                              # * A text run in a paragraph that is in a list will inherit its text style
+                              #   from the newline character in the paragraph at its corresponding nesting
+                              #   level of the list inside the parent placeholder.
+                              #
+                              # Inherited text styles are represented as unset fields in this message. If
+                              # text is contained in a shape without a parent placeholder, unsetting these
+                              # fields will revert the style to a value matching the defaults in the Slides
+                              # editor.
+                            "foregroundColor": { # A color that can either be fully opaque or fully transparent. # The color of the text itself. If set, the color is either opaque or
+                                # transparent, depending on if the `opaque_color` field in it is set.
+                              "opaqueColor": { # A themeable solid color value. # If set, this will be used as an opaque color. If unset, this represents
+                                  # a transparent color.
+                                "themeColor": "A String", # An opaque theme color.
+                                "rgbColor": { # An RGB color. # An opaque RGB color.
+                                  "blue": 3.14, # The blue component of the color, from 0.0 to 1.0.
+                                  "green": 3.14, # The green component of the color, from 0.0 to 1.0.
+                                  "red": 3.14, # The red component of the color, from 0.0 to 1.0.
+                                },
+                              },
+                            },
+                            "bold": True or False, # Whether or not the text is bold.
+                            "baselineOffset": "A String", # The text's vertical offset from its normal position.
+                                #
+                                # Text with `SUPERSCRIPT` or `SUBSCRIPT` baseline offsets is automatically
+                                # rendered in a smaller font size, computed based on the `font_size` field.
+                                # The `font_size` itself is not affected by changes in this field.
+                            "strikethrough": True or False, # Whether or not the text is struck through.
+                            "smallCaps": True or False, # Whether or not the text is in small capital letters.
+                            "fontFamily": "A String", # The font family of the text.
+                                #
+                                # The font family can be any font from the Font menu in Slides or from
+                                # [Google Fonts] (https://fonts.google.com/). If the font name is
+                                # unrecognized, the text is rendered in `Arial`.
+                                #
+                                # Some fonts can affect the weight of the text. If an update request
+                                # specifies values for both `font_family` and `bold`, the explicitly-set
+                                # `bold` value is used.
+                            "link": { # A hypertext link. # The hyperlink destination of the text. If unset, there is no link. Links
+                                # are not inherited from parent text.
+                                #
+                                # Changing the link in an update request causes some other changes to the
+                                # text style of the range:
+                                #
+                                # * When setting a link, the text foreground color will be set to
+                                #   ThemeColorType.HYPERLINK and the text will
+                                #   be underlined. If these fields are modified in the same
+                                #   request, those values will be used instead of the link defaults.
+                                # * Setting a link on a text range that overlaps with an existing link will
+                                #   also update the existing link to point to the new URL.
+                                # * Links are not settable on newline characters. As a result, setting a link
+                                #   on a text range that crosses a paragraph boundary, such as `"ABC\n123"`,
+                                #   will separate the newline character(s) into their own text runs. The
+                                #   link will be applied separately to the runs before and after the newline.
+                                # * Removing a link will update the text style of the range to match the
+                                #   style of the preceding text (or the default text styles if the preceding
+                                #   text is another link) unless different styles are being set in the same
+                                #   request.
+                              "url": "A String", # If set, indicates this is a link to the external web page at this URL.
+                              "pageObjectId": "A String", # If set, indicates this is a link to the specific page in this
+                                  # presentation with this ID. A page with this ID may not exist.
+                              "slideIndex": 42, # If set, indicates this is a link to the slide at this zero-based index
+                                  # in the presentation. There may not be a slide at this index.
+                              "relativeLink": "A String", # If set, indicates this is a link to a slide in this presentation,
+                                  # addressed by its position.
+                            },
+                            "italic": True or False, # Whether or not the text is italicized.
+                            "fontSize": { # A magnitude in a single direction in the specified units. # The size of the text's font. When read, the `font_size` will specified in
+                                # points.
+                              "magnitude": 3.14, # The magnitude.
+                              "unit": "A String", # The units for magnitude.
+                            },
+                            "underline": True or False, # Whether or not the text is underlined.
+                            "backgroundColor": { # A color that can either be fully opaque or fully transparent. # The background color of the text. If set, the color is either opaque or
+                                # transparent, depending on if the `opaque_color` field in it is set.
+                              "opaqueColor": { # A themeable solid color value. # If set, this will be used as an opaque color. If unset, this represents
+                                  # a transparent color.
+                                "themeColor": "A String", # An opaque theme color.
+                                "rgbColor": { # An RGB color. # An opaque RGB color.
+                                  "blue": 3.14, # The blue component of the color, from 0.0 to 1.0.
+                                  "green": 3.14, # The green component of the color, from 0.0 to 1.0.
+                                  "red": 3.14, # The red component of the color, from 0.0 to 1.0.
+                                },
+                              },
+                            },
+                          },
+                        },
+                      },
+                      "listId": "A String", # The ID of the list.
+                    },
+                  },
+                },
+                "shapeProperties": { # The properties of a Shape. # The properties of the shape.
+                    #
+                    # If the shape is a placeholder shape as determined by the
+                    # placeholder field, then these
+                    # properties may be inherited from a parent placeholder shape.
+                    # Determining the rendered value of the property depends on the corresponding
+                    # property_state field value.
+                  "shadow": { # The shadow properties of a page element. # The shadow properties of the shape. If unset, the shadow is inherited from
+                      # a parent placeholder if it exists. If the shape has no parent, then the
+                      # default shadow matches the defaults for new shapes created in the Slides
+                      # editor. This property is read-only.
+                      #
+                      # If these fields are unset, they may be inherited from a parent placeholder
+                      # if it exists. If there is no parent, the fields will default to the value
+                      # used for new page elements created in the Slides editor, which may depend on
+                      # the page element kind.
+                    "color": { # A themeable solid color value. # The shadow color value.
+                      "themeColor": "A String", # An opaque theme color.
+                      "rgbColor": { # An RGB color. # An opaque RGB color.
+                        "blue": 3.14, # The blue component of the color, from 0.0 to 1.0.
+                        "green": 3.14, # The green component of the color, from 0.0 to 1.0.
+                        "red": 3.14, # The red component of the color, from 0.0 to 1.0.
+                      },
+                    },
+                    "transform": { # AffineTransform uses a 3x3 matrix with an implied last row of [ 0 0 1 ] # Transform that encodes the translate, scale, and skew of the shadow,
+                        # relative to the alignment position.
+                        # to transform source coordinates (x,y) into destination coordinates (x', y')
+                        # according to:
+                        #
+                        #       x'  x  =   shear_y  scale_y  translate_y
+                        #       1  [ 1 ]
+                        #
+                        # After transformation,
+                        #
+                        #      x' = scale_x * x + shear_x * y + translate_x;
+                        #      y' = scale_y * y + shear_y * x + translate_y;
+                        #
+                        # This message is therefore composed of these six matrix elements.
+                      "translateX": 3.14, # The X coordinate translation element.
+                      "translateY": 3.14, # The Y coordinate translation element.
+                      "scaleX": 3.14, # The X coordinate scaling element.
+                      "scaleY": 3.14, # The Y coordinate scaling element.
+                      "shearY": 3.14, # The Y coordinate shearing element.
+                      "shearX": 3.14, # The X coordinate shearing element.
+                      "unit": "A String", # The units for translate elements.
+                    },
+                    "propertyState": "A String", # The shadow property state.
+                        #
+                        # Updating the the shadow on a page element will implicitly update this field
+                        # to `RENDERED`, unless another value is specified in the same request. To
+                        # have no shadow on a page element, set this field to `NOT_RENDERED`. In this
+                        # case, any other shadow fields set in the same request will be ignored.
+                    "blurRadius": { # A magnitude in a single direction in the specified units. # The radius of the shadow blur. The larger the radius, the more diffuse the
+                        # shadow becomes.
+                      "magnitude": 3.14, # The magnitude.
+                      "unit": "A String", # The units for magnitude.
+                    },
+                    "alpha": 3.14, # The alpha of the shadow's color, from 0.0 to 1.0.
+                    "type": "A String", # The type of the shadow.
+                    "alignment": "A String", # The alignment point of the shadow, that sets the origin for translate,
+                        # scale and skew of the shadow.
+                    "rotateWithShape": True or False, # Whether the shadow should rotate with the shape.
+                  },
+                  "shapeBackgroundFill": { # The shape background fill. # The background fill of the shape. If unset, the background fill is
+                      # inherited from a parent placeholder if it exists. If the shape has no
+                      # parent, then the default background fill depends on the shape type,
+                      # matching the defaults for new shapes created in the Slides editor.
+                    "solidFill": { # A solid color fill. The page or page element is filled entirely with the # Solid color fill.
+                        # specified color value.
+                        #
+                        # If any field is unset, its value may be inherited from a parent placeholder
+                        # if it exists.
+                      "color": { # A themeable solid color value. # The color value of the solid fill.
+                        "themeColor": "A String", # An opaque theme color.
+                        "rgbColor": { # An RGB color. # An opaque RGB color.
+                          "blue": 3.14, # The blue component of the color, from 0.0 to 1.0.
+                          "green": 3.14, # The green component of the color, from 0.0 to 1.0.
+                          "red": 3.14, # The red component of the color, from 0.0 to 1.0.
+                        },
+                      },
+                      "alpha": 3.14, # The fraction of this `color` that should be applied to the pixel.
+                          # That is, the final pixel color is defined by the equation:
+                          #
+                          #   pixel color = alpha * (color) + (1.0 - alpha) * (background color)
+                          #
+                          # This means that a value of 1.0 corresponds to a solid color, whereas
+                          # a value of 0.0 corresponds to a completely transparent color.
+                    },
+                    "propertyState": "A String", # The background fill property state.
+                        #
+                        # Updating the the fill on a shape will implicitly update this field to
+                        # `RENDERED`, unless another value is specified in the same request. To
+                        # have no fill on a shape, set this field to `NOT_RENDERED`. In this case,
+                        # any other fill fields set in the same request will be ignored.
+                  },
+                  "link": { # A hypertext link. # The hyperlink destination of the shape. If unset, there is no link. Links
+                      # are not inherited from parent placeholders.
+                    "url": "A String", # If set, indicates this is a link to the external web page at this URL.
+                    "pageObjectId": "A String", # If set, indicates this is a link to the specific page in this
+                        # presentation with this ID. A page with this ID may not exist.
+                    "slideIndex": 42, # If set, indicates this is a link to the slide at this zero-based index
+                        # in the presentation. There may not be a slide at this index.
+                    "relativeLink": "A String", # If set, indicates this is a link to a slide in this presentation,
+                        # addressed by its position.
+                  },
+                  "outline": { # The outline of a PageElement. # The outline of the shape. If unset, the outline is inherited from a
+                      # parent placeholder if it exists. If the shape has no parent, then the
+                      # default outline depends on the shape type, matching the defaults for
+                      # new shapes created in the Slides editor.
+                      #
+                      # If these fields are unset, they may be inherited from a parent placeholder
+                      # if it exists. If there is no parent, the fields will default to the value
+                      # used for new page elements created in the Slides editor, which may depend on
+                      # the page element kind.
+                    "dashStyle": "A String", # The dash style of the outline.
+                    "propertyState": "A String", # The outline property state.
+                        #
+                        # Updating the the outline on a page element will implicitly update this
+                        # field to`RENDERED`, unless another value is specified in the same request.
+                        # To have no outline on a page element, set this field to `NOT_RENDERED`. In
+                        # this case, any other outline fields set in the same request will be
+                        # ignored.
+                    "outlineFill": { # The fill of the outline. # The fill of the outline.
+                      "solidFill": { # A solid color fill. The page or page element is filled entirely with the # Solid color fill.
+                          # specified color value.
+                          #
+                          # If any field is unset, its value may be inherited from a parent placeholder
+                          # if it exists.
+                        "color": { # A themeable solid color value. # The color value of the solid fill.
+                          "themeColor": "A String", # An opaque theme color.
+                          "rgbColor": { # An RGB color. # An opaque RGB color.
+                            "blue": 3.14, # The blue component of the color, from 0.0 to 1.0.
+                            "green": 3.14, # The green component of the color, from 0.0 to 1.0.
+                            "red": 3.14, # The red component of the color, from 0.0 to 1.0.
+                          },
+                        },
+                        "alpha": 3.14, # The fraction of this `color` that should be applied to the pixel.
+                            # That is, the final pixel color is defined by the equation:
+                            #
+                            #   pixel color = alpha * (color) + (1.0 - alpha) * (background color)
+                            #
+                            # This means that a value of 1.0 corresponds to a solid color, whereas
+                            # a value of 0.0 corresponds to a completely transparent color.
+                      },
+                    },
+                    "weight": { # A magnitude in a single direction in the specified units. # The thickness of the outline.
+                      "magnitude": 3.14, # The magnitude.
+                      "unit": "A String", # The units for magnitude.
+                    },
+                  },
+                },
+                "placeholder": { # The placeholder information that uniquely identifies a placeholder shape. # Placeholders are shapes that are inherit from corresponding placeholders on
+                    # layouts and masters.
+                    #
+                    # If set, the shape is a placeholder shape and any inherited properties
+                    # can be resolved by looking at the parent placeholder identified by the
+                    # Placeholder.parent_object_id field.
+                  "parentObjectId": "A String", # The object ID of this shape's parent placeholder.
+                      # If unset, the parent placeholder shape does not exist, so the shape does
+                      # not inherit properties from any other shape.
+                  "index": 42, # The index of the placeholder. If the same placeholder types are the present
+                      # in the same page, they would have different index values.
+                  "type": "A String", # The type of the placeholder.
+                },
+                "shapeType": "A String", # The type of the shape.
+              },
+              "sheetsChart": { # A PageElement kind representing # A linked chart embedded from Google Sheets. Unlinked charts are
+                  # represented as images.
+                  # a linked chart embedded from Google Sheets.
+                "chartId": 42, # The ID of the specific chart in the Google Sheets spreadsheet that is
+                    # embedded.
+                "spreadsheetId": "A String", # The ID of the Google Sheets spreadsheet that contains the source chart.
+                "sheetsChartProperties": { # The properties of the SheetsChart. # The properties of the Sheets chart.
+                  "chartImageProperties": { # The properties of the Image. # The properties of the embedded chart image.
+                    "outline": { # The outline of a PageElement. # The outline of the image. If not set, the the image has no outline.
+                        #
+                        # If these fields are unset, they may be inherited from a parent placeholder
+                        # if it exists. If there is no parent, the fields will default to the value
+                        # used for new page elements created in the Slides editor, which may depend on
+                        # the page element kind.
+                      "dashStyle": "A String", # The dash style of the outline.
+                      "propertyState": "A String", # The outline property state.
+                          #
+                          # Updating the the outline on a page element will implicitly update this
+                          # field to`RENDERED`, unless another value is specified in the same request.
+                          # To have no outline on a page element, set this field to `NOT_RENDERED`. In
+                          # this case, any other outline fields set in the same request will be
+                          # ignored.
+                      "outlineFill": { # The fill of the outline. # The fill of the outline.
+                        "solidFill": { # A solid color fill. The page or page element is filled entirely with the # Solid color fill.
+                            # specified color value.
+                            #
+                            # If any field is unset, its value may be inherited from a parent placeholder
+                            # if it exists.
+                          "color": { # A themeable solid color value. # The color value of the solid fill.
+                            "themeColor": "A String", # An opaque theme color.
+                            "rgbColor": { # An RGB color. # An opaque RGB color.
+                              "blue": 3.14, # The blue component of the color, from 0.0 to 1.0.
+                              "green": 3.14, # The green component of the color, from 0.0 to 1.0.
+                              "red": 3.14, # The red component of the color, from 0.0 to 1.0.
+                            },
+                          },
+                          "alpha": 3.14, # The fraction of this `color` that should be applied to the pixel.
+                              # That is, the final pixel color is defined by the equation:
+                              #
+                              #   pixel color = alpha * (color) + (1.0 - alpha) * (background color)
+                              #
+                              # This means that a value of 1.0 corresponds to a solid color, whereas
+                              # a value of 0.0 corresponds to a completely transparent color.
+                        },
+                      },
+                      "weight": { # A magnitude in a single direction in the specified units. # The thickness of the outline.
+                        "magnitude": 3.14, # The magnitude.
+                        "unit": "A String", # The units for magnitude.
+                      },
+                    },
+                    "brightness": 3.14, # The brightness effect of the image. The value should be in the interval
+                        # [-1.0, 1.0], where 0 means no effect. This property is read-only.
+                    "recolor": { # A recolor effect applied on an image. # The recolor effect of the image. If not set, the image is not recolored.
+                        # This property is read-only.
+                      "recolorStops": [ # The recolor effect is represented by a gradient, which is a list of color
+                          # stops. This property is read-only.
+                        { # A color and position in a gradient band.
+                          "color": { # A themeable solid color value. # The color of the gradient stop.
+                            "themeColor": "A String", # An opaque theme color.
+                            "rgbColor": { # An RGB color. # An opaque RGB color.
+                              "blue": 3.14, # The blue component of the color, from 0.0 to 1.0.
+                              "green": 3.14, # The green component of the color, from 0.0 to 1.0.
+                              "red": 3.14, # The red component of the color, from 0.0 to 1.0.
+                            },
+                          },
+                          "position": 3.14, # The relative position of the color stop in the gradient band measured
+                              # in percentage. The value should be in the interval [0.0, 1.0].
+                          "alpha": 3.14, # The alpha value of this color in the gradient band. Defaults to 1.0,
+                              # fully opaque.
+                        },
+                      ],
+                    },
+                    "link": { # A hypertext link. # The hyperlink destination of the image. If unset, there is no link.
+                      "url": "A String", # If set, indicates this is a link to the external web page at this URL.
+                      "pageObjectId": "A String", # If set, indicates this is a link to the specific page in this
+                          # presentation with this ID. A page with this ID may not exist.
+                      "slideIndex": 42, # If set, indicates this is a link to the slide at this zero-based index
+                          # in the presentation. There may not be a slide at this index.
+                      "relativeLink": "A String", # If set, indicates this is a link to a slide in this presentation,
+                          # addressed by its position.
+                    },
+                    "transparency": 3.14, # The transparency effect of the image. The value should be in the interval
+                        # [0.0, 1.0], where 0 means no effect and 1 means completely transparent.
+                        # This property is read-only.
+                    "cropProperties": { # The crop properties of an object enclosed in a container. For example, an # The crop properties of the image. If not set, the image is not cropped.
+                        # This property is read-only.
+                        # Image.
+                        #
+                        # The crop properties is represented by the offsets of four edges which define
+                        # a crop rectangle. The offsets are measured in percentage from the
+                        # corresponding edges of the object's original bounding rectangle towards
+                        # inside, relative to the object's original dimensions.
+                        #
+                        # - If the offset is in the interval (0, 1), the corresponding edge of crop
+                        # rectangle is positioned inside of the object's original bounding rectangle.
+                        # - If the offset is negative or greater than 1, the corresponding edge of crop
+                        # rectangle is positioned outside of the object's original bounding rectangle.
+                        # - If the left edge of the crop rectangle is on the right side of its right
+                        # edge, the object will be flipped horizontally.
+                        # - If the top edge of the crop rectangle is below its bottom edge, the object
+                        # will be flipped vertically.
+                        # - If all offsets and rotation angle is 0, the object is not cropped.
+                        #
+                        # After cropping, the content in the crop rectangle will be stretched to fit
+                        # its container.
+                      "leftOffset": 3.14, # The offset specifies the left edge of the crop rectangle that is located to
+                          # the right of the original bounding rectangle left edge, relative to the
+                          # object's original width.
+                      "angle": 3.14, # The rotation angle of the crop window around its center, in radians.
+                          # Rotation angle is applied after the offset.
+                      "bottomOffset": 3.14, # The offset specifies the bottom edge of the crop rectangle that is located
+                          # above the original bounding rectangle bottom edge, relative to the object's
+                          # original height.
+                      "rightOffset": 3.14, # The offset specifies the right edge of the crop rectangle that is located
+                          # to the left of the original bounding rectangle right edge, relative to the
+                          # object's original width.
+                      "topOffset": 3.14, # The offset specifies the top edge of the crop rectangle that is located
+                          # below the original bounding rectangle top edge, relative to the object's
+                          # original height.
+                    },
+                    "shadow": { # The shadow properties of a page element. # The shadow of the image. If not set, the image has no shadow. This property
+                        # is read-only.
+                        #
+                        # If these fields are unset, they may be inherited from a parent placeholder
+                        # if it exists. If there is no parent, the fields will default to the value
+                        # used for new page elements created in the Slides editor, which may depend on
+                        # the page element kind.
+                      "color": { # A themeable solid color value. # The shadow color value.
+                        "themeColor": "A String", # An opaque theme color.
+                        "rgbColor": { # An RGB color. # An opaque RGB color.
+                          "blue": 3.14, # The blue component of the color, from 0.0 to 1.0.
+                          "green": 3.14, # The green component of the color, from 0.0 to 1.0.
+                          "red": 3.14, # The red component of the color, from 0.0 to 1.0.
+                        },
+                      },
+                      "transform": { # AffineTransform uses a 3x3 matrix with an implied last row of [ 0 0 1 ] # Transform that encodes the translate, scale, and skew of the shadow,
+                          # relative to the alignment position.
+                          # to transform source coordinates (x,y) into destination coordinates (x', y')
+                          # according to:
+                          #
+                          #       x'  x  =   shear_y  scale_y  translate_y
+                          #       1  [ 1 ]
+                          #
+                          # After transformation,
+                          #
+                          #      x' = scale_x * x + shear_x * y + translate_x;
+                          #      y' = scale_y * y + shear_y * x + translate_y;
+                          #
+                          # This message is therefore composed of these six matrix elements.
+                        "translateX": 3.14, # The X coordinate translation element.
+                        "translateY": 3.14, # The Y coordinate translation element.
+                        "scaleX": 3.14, # The X coordinate scaling element.
+                        "scaleY": 3.14, # The Y coordinate scaling element.
+                        "shearY": 3.14, # The Y coordinate shearing element.
+                        "shearX": 3.14, # The X coordinate shearing element.
+                        "unit": "A String", # The units for translate elements.
+                      },
+                      "propertyState": "A String", # The shadow property state.
+                          #
+                          # Updating the the shadow on a page element will implicitly update this field
+                          # to `RENDERED`, unless another value is specified in the same request. To
+                          # have no shadow on a page element, set this field to `NOT_RENDERED`. In this
+                          # case, any other shadow fields set in the same request will be ignored.
+                      "blurRadius": { # A magnitude in a single direction in the specified units. # The radius of the shadow blur. The larger the radius, the more diffuse the
+                          # shadow becomes.
+                        "magnitude": 3.14, # The magnitude.
+                        "unit": "A String", # The units for magnitude.
+                      },
+                      "alpha": 3.14, # The alpha of the shadow's color, from 0.0 to 1.0.
+                      "type": "A String", # The type of the shadow.
+                      "alignment": "A String", # The alignment point of the shadow, that sets the origin for translate,
+                          # scale and skew of the shadow.
+                      "rotateWithShape": True or False, # Whether the shadow should rotate with the shape.
+                    },
+                    "contrast": 3.14, # The contrast effect of the image. The value should be in the interval
+                        # [-1.0, 1.0], where 0 means no effect. This property is read-only.
+                  },
+                },
+                "contentUrl": "A String", # The URL of an image of the embedded chart, with a default lifetime of 30
+                    # minutes. This URL is tagged with the account of the requester. Anyone with
+                    # the URL effectively accesses the image as the original requester. Access to
+                    # the image may be lost if the presentation's sharing settings change.
+              },
+              "video": { # A PageElement kind representing a # A video page element.
+                  # video.
+                "url": "A String", # An URL to a video. The URL is valid as long as the source video
+                    # exists and sharing settings do not change.
+                "videoProperties": { # The properties of the Video. # The properties of the video.
+                  "outline": { # The outline of a PageElement. # The outline of the video. The default outline matches the defaults for new
+                      # videos created in the Slides editor.
+                      #
+                      # If these fields are unset, they may be inherited from a parent placeholder
+                      # if it exists. If there is no parent, the fields will default to the value
+                      # used for new page elements created in the Slides editor, which may depend on
+                      # the page element kind.
+                    "dashStyle": "A String", # The dash style of the outline.
+                    "propertyState": "A String", # The outline property state.
+                        #
+                        # Updating the the outline on a page element will implicitly update this
+                        # field to`RENDERED`, unless another value is specified in the same request.
+                        # To have no outline on a page element, set this field to `NOT_RENDERED`. In
+                        # this case, any other outline fields set in the same request will be
+                        # ignored.
+                    "outlineFill": { # The fill of the outline. # The fill of the outline.
+                      "solidFill": { # A solid color fill. The page or page element is filled entirely with the # Solid color fill.
+                          # specified color value.
+                          #
+                          # If any field is unset, its value may be inherited from a parent placeholder
+                          # if it exists.
+                        "color": { # A themeable solid color value. # The color value of the solid fill.
+                          "themeColor": "A String", # An opaque theme color.
+                          "rgbColor": { # An RGB color. # An opaque RGB color.
+                            "blue": 3.14, # The blue component of the color, from 0.0 to 1.0.
+                            "green": 3.14, # The green component of the color, from 0.0 to 1.0.
+                            "red": 3.14, # The red component of the color, from 0.0 to 1.0.
+                          },
+                        },
+                        "alpha": 3.14, # The fraction of this `color` that should be applied to the pixel.
+                            # That is, the final pixel color is defined by the equation:
+                            #
+                            #   pixel color = alpha * (color) + (1.0 - alpha) * (background color)
+                            #
+                            # This means that a value of 1.0 corresponds to a solid color, whereas
+                            # a value of 0.0 corresponds to a completely transparent color.
+                      },
+                    },
+                    "weight": { # A magnitude in a single direction in the specified units. # The thickness of the outline.
+                      "magnitude": 3.14, # The magnitude.
+                      "unit": "A String", # The units for magnitude.
+                    },
+                  },
+                },
+                "id": "A String", # The video source's unique identifier for this video.
+                "source": "A String", # The video source.
+              },
+              "table": { # A PageElement kind representing a # A table page element.
+                  # table.
+                "tableColumns": [ # Properties of each column.
+                  { # Properties of each column in a table.
+                    "columnWidth": { # A magnitude in a single direction in the specified units. # Width of a column.
+                      "magnitude": 3.14, # The magnitude.
+                      "unit": "A String", # The units for magnitude.
+                    },
+                  },
+                ],
+                "tableRows": [ # Properties and contents of each row.
+                    #
+                    # Cells that span multiple rows are contained in only one of these rows and
+                    # have a row_span greater
+                    # than 1.
+                  { # Properties and contents of each row in a table.
+                    "tableCells": [ # Properties and contents of each cell.
+                        #
+                        # Cells that span multiple columns are represented only once with a
+                        # column_span greater
+                        # than 1. As a result, the length of this collection does not always match
+                        # the number of columns of the entire table.
+                      { # Properties and contents of each table cell.
+                        "text": { # The general text content. The text must reside in a compatible shape (e.g. # The text content of the cell.
+                            # text box or rectangle) or a table cell in a page.
+                          "textElements": [ # The text contents broken down into its component parts, including styling
+                              # information. This property is read-only.
+                            { # A TextElement describes the content of a range of indices in the text content
+                                # of a Shape or TableCell.
+                              "autoText": { # A TextElement kind that represents auto text. # A TextElement representing a spot in the text that is dynamically
+                                  # replaced with content that can change over time.
+                                "content": "A String", # The rendered content of this auto text, if available.
+                                "style": { # Represents the styling that can be applied to a TextRun. # The styling applied to this auto text.
+                                    #
+                                    # If this text is contained in a shape with a parent placeholder, then these text styles may be
+                                    # inherited from the parent. Which text styles are inherited depend on the
+                                    # nesting level of lists:
+                                    #
+                                    # * A text run in a paragraph that is not in a list will inherit its text style
+                                    #   from the the newline character in the paragraph at the 0 nesting level of
+                                    #   the list inside the parent placeholder.
+                                    # * A text run in a paragraph that is in a list will inherit its text style
+                                    #   from the newline character in the paragraph at its corresponding nesting
+                                    #   level of the list inside the parent placeholder.
+                                    #
+                                    # Inherited text styles are represented as unset fields in this message. If
+                                    # text is contained in a shape without a parent placeholder, unsetting these
+                                    # fields will revert the style to a value matching the defaults in the Slides
+                                    # editor.
+                                  "foregroundColor": { # A color that can either be fully opaque or fully transparent. # The color of the text itself. If set, the color is either opaque or
+                                      # transparent, depending on if the `opaque_color` field in it is set.
+                                    "opaqueColor": { # A themeable solid color value. # If set, this will be used as an opaque color. If unset, this represents
+                                        # a transparent color.
+                                      "themeColor": "A String", # An opaque theme color.
+                                      "rgbColor": { # An RGB color. # An opaque RGB color.
+                                        "blue": 3.14, # The blue component of the color, from 0.0 to 1.0.
+                                        "green": 3.14, # The green component of the color, from 0.0 to 1.0.
+                                        "red": 3.14, # The red component of the color, from 0.0 to 1.0.
+                                      },
+                                    },
+                                  },
+                                  "bold": True or False, # Whether or not the text is bold.
+                                  "baselineOffset": "A String", # The text's vertical offset from its normal position.
+                                      #
+                                      # Text with `SUPERSCRIPT` or `SUBSCRIPT` baseline offsets is automatically
+                                      # rendered in a smaller font size, computed based on the `font_size` field.
+                                      # The `font_size` itself is not affected by changes in this field.
+                                  "strikethrough": True or False, # Whether or not the text is struck through.
+                                  "smallCaps": True or False, # Whether or not the text is in small capital letters.
+                                  "fontFamily": "A String", # The font family of the text.
+                                      #
+                                      # The font family can be any font from the Font menu in Slides or from
+                                      # [Google Fonts] (https://fonts.google.com/). If the font name is
+                                      # unrecognized, the text is rendered in `Arial`.
+                                      #
+                                      # Some fonts can affect the weight of the text. If an update request
+                                      # specifies values for both `font_family` and `bold`, the explicitly-set
+                                      # `bold` value is used.
+                                  "link": { # A hypertext link. # The hyperlink destination of the text. If unset, there is no link. Links
+                                      # are not inherited from parent text.
+                                      #
+                                      # Changing the link in an update request causes some other changes to the
+                                      # text style of the range:
+                                      #
+                                      # * When setting a link, the text foreground color will be set to
+                                      #   ThemeColorType.HYPERLINK and the text will
+                                      #   be underlined. If these fields are modified in the same
+                                      #   request, those values will be used instead of the link defaults.
+                                      # * Setting a link on a text range that overlaps with an existing link will
+                                      #   also update the existing link to point to the new URL.
+                                      # * Links are not settable on newline characters. As a result, setting a link
+                                      #   on a text range that crosses a paragraph boundary, such as `"ABC\n123"`,
+                                      #   will separate the newline character(s) into their own text runs. The
+                                      #   link will be applied separately to the runs before and after the newline.
+                                      # * Removing a link will update the text style of the range to match the
+                                      #   style of the preceding text (or the default text styles if the preceding
+                                      #   text is another link) unless different styles are being set in the same
+                                      #   request.
+                                    "url": "A String", # If set, indicates this is a link to the external web page at this URL.
+                                    "pageObjectId": "A String", # If set, indicates this is a link to the specific page in this
+                                        # presentation with this ID. A page with this ID may not exist.
+                                    "slideIndex": 42, # If set, indicates this is a link to the slide at this zero-based index
+                                        # in the presentation. There may not be a slide at this index.
+                                    "relativeLink": "A String", # If set, indicates this is a link to a slide in this presentation,
+                                        # addressed by its position.
+                                  },
+                                  "italic": True or False, # Whether or not the text is italicized.
+                                  "fontSize": { # A magnitude in a single direction in the specified units. # The size of the text's font. When read, the `font_size` will specified in
+                                      # points.
+                                    "magnitude": 3.14, # The magnitude.
+                                    "unit": "A String", # The units for magnitude.
+                                  },
+                                  "underline": True or False, # Whether or not the text is underlined.
+                                  "backgroundColor": { # A color that can either be fully opaque or fully transparent. # The background color of the text. If set, the color is either opaque or
+                                      # transparent, depending on if the `opaque_color` field in it is set.
+                                    "opaqueColor": { # A themeable solid color value. # If set, this will be used as an opaque color. If unset, this represents
+                                        # a transparent color.
+                                      "themeColor": "A String", # An opaque theme color.
+                                      "rgbColor": { # An RGB color. # An opaque RGB color.
+                                        "blue": 3.14, # The blue component of the color, from 0.0 to 1.0.
+                                        "green": 3.14, # The green component of the color, from 0.0 to 1.0.
+                                        "red": 3.14, # The red component of the color, from 0.0 to 1.0.
+                                      },
+                                    },
+                                  },
+                                },
+                                "type": "A String", # The type of this auto text.
+                              },
+                              "endIndex": 42, # The zero-based end index of this text element, exclusive, in Unicode code
+                                  # units.
+                              "startIndex": 42, # The zero-based start index of this text element, in Unicode code units.
+                              "paragraphMarker": { # A TextElement kind that represents the beginning of a new paragraph. # A marker representing the beginning of a new paragraph.
+                                  #
+                                  # The `start_index` and `end_index` of this TextElement represent the
+                                  # range of the paragraph. Other TextElements with an index range contained
+                                  # inside this paragraph's range are considered to be part of this
+                                  # paragraph. The range of indices of two separate paragraphs will never
+                                  # overlap.
+                                "style": { # Styles that apply to a whole paragraph. # The paragraph's style
+                                    #
+                                    # If this text is contained in a shape with a parent placeholder, then these paragraph styles may be
+                                    # inherited from the parent. Which paragraph styles are inherited depend on the
+                                    # nesting level of lists:
+                                    #
+                                    # * A paragraph not in a list will inherit its paragraph style from the
+                                    #   paragraph at the 0 nesting level of the list inside the parent placeholder.
+                                    # * A paragraph in a list will inherit its paragraph style from the paragraph
+                                    #   at its corresponding nesting level of the list inside the parent
+                                    #   placeholder.
+                                    #
+                                    # Inherited paragraph styles are represented as unset fields in this message.
+                                  "spacingMode": "A String", # The spacing mode for the paragraph. This property is read-only.
+                                  "direction": "A String", # The text direction of this paragraph. This property is read-only.
+                                  "spaceBelow": { # A magnitude in a single direction in the specified units. # The amount of extra space above the paragraph. If unset, the value is
+                                      # inherited from the parent. This property is read-only.
+                                    "magnitude": 3.14, # The magnitude.
+                                    "unit": "A String", # The units for magnitude.
+                                  },
+                                  "lineSpacing": 3.14, # The amount of space between lines, as a percentage of normal, where normal
+                                      # is represented as 100.0. If unset, the value is inherited from the parent.
+                                      # This property is read-only.
+                                  "indentStart": { # A magnitude in a single direction in the specified units. # The amount indentation for the paragraph on the side that corresponds to
+                                      # the start of the text, based on the current text direction. If unset, the
+                                      # value is inherited from the parent. This property is read-only.
+                                    "magnitude": 3.14, # The magnitude.
+                                    "unit": "A String", # The units for magnitude.
+                                  },
+                                  "spaceAbove": { # A magnitude in a single direction in the specified units. # The amount of extra space above the paragraph. If unset, the value is
+                                      # inherited from the parent. This property is read-only.
+                                    "magnitude": 3.14, # The magnitude.
+                                    "unit": "A String", # The units for magnitude.
+                                  },
+                                  "indentEnd": { # A magnitude in a single direction in the specified units. # The amount indentation for the paragraph on the side that corresponds to
+                                      # the end of the text, based on the current text direction. If unset, the
+                                      # value is inherited from the parent. This property is read-only.
+                                    "magnitude": 3.14, # The magnitude.
+                                    "unit": "A String", # The units for magnitude.
+                                  },
+                                  "indentFirstLine": { # A magnitude in a single direction in the specified units. # The amount of indentation for the start of the first line of the paragraph.
+                                      # If unset, the value is inherited from the parent. This property is
+                                      # read-only.
+                                    "magnitude": 3.14, # The magnitude.
+                                    "unit": "A String", # The units for magnitude.
+                                  },
+                                  "alignment": "A String", # The text alignment for this paragraph. This property is read-only.
+                                },
+                                "bullet": { # Describes the bullet of a paragraph. # The bullet for this paragraph. If not present, the paragraph does not
+                                    # belong to a list.
+                                  "nestingLevel": 42, # The nesting level of this paragraph in the list.
+                                  "listId": "A String", # The ID of the list this paragraph belongs to.
+                                  "bulletStyle": { # Represents the styling that can be applied to a TextRun. # The paragraph specific text style applied to this bullet.
+                                      #
+                                      # If this text is contained in a shape with a parent placeholder, then these text styles may be
+                                      # inherited from the parent. Which text styles are inherited depend on the
+                                      # nesting level of lists:
+                                      #
+                                      # * A text run in a paragraph that is not in a list will inherit its text style
+                                      #   from the the newline character in the paragraph at the 0 nesting level of
+                                      #   the list inside the parent placeholder.
+                                      # * A text run in a paragraph that is in a list will inherit its text style
+                                      #   from the newline character in the paragraph at its corresponding nesting
+                                      #   level of the list inside the parent placeholder.
+                                      #
+                                      # Inherited text styles are represented as unset fields in this message. If
+                                      # text is contained in a shape without a parent placeholder, unsetting these
+                                      # fields will revert the style to a value matching the defaults in the Slides
+                                      # editor.
+                                    "foregroundColor": { # A color that can either be fully opaque or fully transparent. # The color of the text itself. If set, the color is either opaque or
+                                        # transparent, depending on if the `opaque_color` field in it is set.
+                                      "opaqueColor": { # A themeable solid color value. # If set, this will be used as an opaque color. If unset, this represents
+                                          # a transparent color.
+                                        "themeColor": "A String", # An opaque theme color.
+                                        "rgbColor": { # An RGB color. # An opaque RGB color.
+                                          "blue": 3.14, # The blue component of the color, from 0.0 to 1.0.
+                                          "green": 3.14, # The green component of the color, from 0.0 to 1.0.
+                                          "red": 3.14, # The red component of the color, from 0.0 to 1.0.
+                                        },
+                                      },
+                                    },
+                                    "bold": True or False, # Whether or not the text is bold.
+                                    "baselineOffset": "A String", # The text's vertical offset from its normal position.
+                                        #
+                                        # Text with `SUPERSCRIPT` or `SUBSCRIPT` baseline offsets is automatically
+                                        # rendered in a smaller font size, computed based on the `font_size` field.
+                                        # The `font_size` itself is not affected by changes in this field.
+                                    "strikethrough": True or False, # Whether or not the text is struck through.
+                                    "smallCaps": True or False, # Whether or not the text is in small capital letters.
+                                    "fontFamily": "A String", # The font family of the text.
+                                        #
+                                        # The font family can be any font from the Font menu in Slides or from
+                                        # [Google Fonts] (https://fonts.google.com/). If the font name is
+                                        # unrecognized, the text is rendered in `Arial`.
+                                        #
+                                        # Some fonts can affect the weight of the text. If an update request
+                                        # specifies values for both `font_family` and `bold`, the explicitly-set
+                                        # `bold` value is used.
+                                    "link": { # A hypertext link. # The hyperlink destination of the text. If unset, there is no link. Links
+                                        # are not inherited from parent text.
+                                        #
+                                        # Changing the link in an update request causes some other changes to the
+                                        # text style of the range:
+                                        #
+                                        # * When setting a link, the text foreground color will be set to
+                                        #   ThemeColorType.HYPERLINK and the text will
+                                        #   be underlined. If these fields are modified in the same
+                                        #   request, those values will be used instead of the link defaults.
+                                        # * Setting a link on a text range that overlaps with an existing link will
+                                        #   also update the existing link to point to the new URL.
+                                        # * Links are not settable on newline characters. As a result, setting a link
+                                        #   on a text range that crosses a paragraph boundary, such as `"ABC\n123"`,
+                                        #   will separate the newline character(s) into their own text runs. The
+                                        #   link will be applied separately to the runs before and after the newline.
+                                        # * Removing a link will update the text style of the range to match the
+                                        #   style of the preceding text (or the default text styles if the preceding
+                                        #   text is another link) unless different styles are being set in the same
+                                        #   request.
+                                      "url": "A String", # If set, indicates this is a link to the external web page at this URL.
+                                      "pageObjectId": "A String", # If set, indicates this is a link to the specific page in this
+                                          # presentation with this ID. A page with this ID may not exist.
+                                      "slideIndex": 42, # If set, indicates this is a link to the slide at this zero-based index
+                                          # in the presentation. There may not be a slide at this index.
+                                      "relativeLink": "A String", # If set, indicates this is a link to a slide in this presentation,
+                                          # addressed by its position.
+                                    },
+                                    "italic": True or False, # Whether or not the text is italicized.
+                                    "fontSize": { # A magnitude in a single direction in the specified units. # The size of the text's font. When read, the `font_size` will specified in
+                                        # points.
+                                      "magnitude": 3.14, # The magnitude.
+                                      "unit": "A String", # The units for magnitude.
+                                    },
+                                    "underline": True or False, # Whether or not the text is underlined.
+                                    "backgroundColor": { # A color that can either be fully opaque or fully transparent. # The background color of the text. If set, the color is either opaque or
+                                        # transparent, depending on if the `opaque_color` field in it is set.
+                                      "opaqueColor": { # A themeable solid color value. # If set, this will be used as an opaque color. If unset, this represents
+                                          # a transparent color.
+                                        "themeColor": "A String", # An opaque theme color.
+                                        "rgbColor": { # An RGB color. # An opaque RGB color.
+                                          "blue": 3.14, # The blue component of the color, from 0.0 to 1.0.
+                                          "green": 3.14, # The green component of the color, from 0.0 to 1.0.
+                                          "red": 3.14, # The red component of the color, from 0.0 to 1.0.
+                                        },
+                                      },
+                                    },
+                                  },
+                                  "glyph": "A String", # The rendered bullet glyph for this paragraph.
+                                },
+                              },
+                              "textRun": { # A TextElement kind that represents a run of text that all has the same # A TextElement representing a run of text where all of the characters
+                                  # in the run have the same TextStyle.
+                                  #
+                                  # The `start_index` and `end_index` of TextRuns will always be fully
+                                  # contained in the index range of a single `paragraph_marker` TextElement.
+                                  # In other words, a TextRun will never span multiple paragraphs.
+                                  # styling.
+                                "content": "A String", # The text of this run.
+                                "style": { # Represents the styling that can be applied to a TextRun. # The styling applied to this run.
+                                    #
+                                    # If this text is contained in a shape with a parent placeholder, then these text styles may be
+                                    # inherited from the parent. Which text styles are inherited depend on the
+                                    # nesting level of lists:
+                                    #
+                                    # * A text run in a paragraph that is not in a list will inherit its text style
+                                    #   from the the newline character in the paragraph at the 0 nesting level of
+                                    #   the list inside the parent placeholder.
+                                    # * A text run in a paragraph that is in a list will inherit its text style
+                                    #   from the newline character in the paragraph at its corresponding nesting
+                                    #   level of the list inside the parent placeholder.
+                                    #
+                                    # Inherited text styles are represented as unset fields in this message. If
+                                    # text is contained in a shape without a parent placeholder, unsetting these
+                                    # fields will revert the style to a value matching the defaults in the Slides
+                                    # editor.
+                                  "foregroundColor": { # A color that can either be fully opaque or fully transparent. # The color of the text itself. If set, the color is either opaque or
+                                      # transparent, depending on if the `opaque_color` field in it is set.
+                                    "opaqueColor": { # A themeable solid color value. # If set, this will be used as an opaque color. If unset, this represents
+                                        # a transparent color.
+                                      "themeColor": "A String", # An opaque theme color.
+                                      "rgbColor": { # An RGB color. # An opaque RGB color.
+                                        "blue": 3.14, # The blue component of the color, from 0.0 to 1.0.
+                                        "green": 3.14, # The green component of the color, from 0.0 to 1.0.
+                                        "red": 3.14, # The red component of the color, from 0.0 to 1.0.
+                                      },
+                                    },
+                                  },
+                                  "bold": True or False, # Whether or not the text is bold.
+                                  "baselineOffset": "A String", # The text's vertical offset from its normal position.
+                                      #
+                                      # Text with `SUPERSCRIPT` or `SUBSCRIPT` baseline offsets is automatically
+                                      # rendered in a smaller font size, computed based on the `font_size` field.
+                                      # The `font_size` itself is not affected by changes in this field.
+                                  "strikethrough": True or False, # Whether or not the text is struck through.
+                                  "smallCaps": True or False, # Whether or not the text is in small capital letters.
+                                  "fontFamily": "A String", # The font family of the text.
+                                      #
+                                      # The font family can be any font from the Font menu in Slides or from
+                                      # [Google Fonts] (https://fonts.google.com/). If the font name is
+                                      # unrecognized, the text is rendered in `Arial`.
+                                      #
+                                      # Some fonts can affect the weight of the text. If an update request
+                                      # specifies values for both `font_family` and `bold`, the explicitly-set
+                                      # `bold` value is used.
+                                  "link": { # A hypertext link. # The hyperlink destination of the text. If unset, there is no link. Links
+                                      # are not inherited from parent text.
+                                      #
+                                      # Changing the link in an update request causes some other changes to the
+                                      # text style of the range:
+                                      #
+                                      # * When setting a link, the text foreground color will be set to
+                                      #   ThemeColorType.HYPERLINK and the text will
+                                      #   be underlined. If these fields are modified in the same
+                                      #   request, those values will be used instead of the link defaults.
+                                      # * Setting a link on a text range that overlaps with an existing link will
+                                      #   also update the existing link to point to the new URL.
+                                      # * Links are not settable on newline characters. As a result, setting a link
+                                      #   on a text range that crosses a paragraph boundary, such as `"ABC\n123"`,
+                                      #   will separate the newline character(s) into their own text runs. The
+                                      #   link will be applied separately to the runs before and after the newline.
+                                      # * Removing a link will update the text style of the range to match the
+                                      #   style of the preceding text (or the default text styles if the preceding
+                                      #   text is another link) unless different styles are being set in the same
+                                      #   request.
+                                    "url": "A String", # If set, indicates this is a link to the external web page at this URL.
+                                    "pageObjectId": "A String", # If set, indicates this is a link to the specific page in this
+                                        # presentation with this ID. A page with this ID may not exist.
+                                    "slideIndex": 42, # If set, indicates this is a link to the slide at this zero-based index
+                                        # in the presentation. There may not be a slide at this index.
+                                    "relativeLink": "A String", # If set, indicates this is a link to a slide in this presentation,
+                                        # addressed by its position.
+                                  },
+                                  "italic": True or False, # Whether or not the text is italicized.
+                                  "fontSize": { # A magnitude in a single direction in the specified units. # The size of the text's font. When read, the `font_size` will specified in
+                                      # points.
+                                    "magnitude": 3.14, # The magnitude.
+                                    "unit": "A String", # The units for magnitude.
+                                  },
+                                  "underline": True or False, # Whether or not the text is underlined.
+                                  "backgroundColor": { # A color that can either be fully opaque or fully transparent. # The background color of the text. If set, the color is either opaque or
+                                      # transparent, depending on if the `opaque_color` field in it is set.
+                                    "opaqueColor": { # A themeable solid color value. # If set, this will be used as an opaque color. If unset, this represents
+                                        # a transparent color.
+                                      "themeColor": "A String", # An opaque theme color.
+                                      "rgbColor": { # An RGB color. # An opaque RGB color.
+                                        "blue": 3.14, # The blue component of the color, from 0.0 to 1.0.
+                                        "green": 3.14, # The green component of the color, from 0.0 to 1.0.
+                                        "red": 3.14, # The red component of the color, from 0.0 to 1.0.
+                                      },
+                                    },
+                                  },
+                                },
+                              },
+                            },
+                          ],
+                          "lists": { # The bulleted lists contained in this text, keyed by list ID.
+                            "a_key": { # A List describes the look and feel of bullets belonging to paragraphs
+                                # associated with a list. A paragraph that is part of a list has an implicit
+                                # reference to that list's ID.
+                              "nestingLevel": { # A map of nesting levels to the properties of bullets at the associated
+                                  # level. A list has at most nine levels of nesting, so the possible values
+                                  # for the keys of this map are 0 through 8, inclusive.
+                                "a_key": { # Contains properties describing the look and feel of a list bullet at a given
+                                    # level of nesting.
+                                  "bulletStyle": { # Represents the styling that can be applied to a TextRun. # The style of a bullet at this level of nesting.
+                                      #
+                                      # If this text is contained in a shape with a parent placeholder, then these text styles may be
+                                      # inherited from the parent. Which text styles are inherited depend on the
+                                      # nesting level of lists:
+                                      #
+                                      # * A text run in a paragraph that is not in a list will inherit its text style
+                                      #   from the the newline character in the paragraph at the 0 nesting level of
+                                      #   the list inside the parent placeholder.
+                                      # * A text run in a paragraph that is in a list will inherit its text style
+                                      #   from the newline character in the paragraph at its corresponding nesting
+                                      #   level of the list inside the parent placeholder.
+                                      #
+                                      # Inherited text styles are represented as unset fields in this message. If
+                                      # text is contained in a shape without a parent placeholder, unsetting these
+                                      # fields will revert the style to a value matching the defaults in the Slides
+                                      # editor.
+                                    "foregroundColor": { # A color that can either be fully opaque or fully transparent. # The color of the text itself. If set, the color is either opaque or
+                                        # transparent, depending on if the `opaque_color` field in it is set.
+                                      "opaqueColor": { # A themeable solid color value. # If set, this will be used as an opaque color. If unset, this represents
+                                          # a transparent color.
+                                        "themeColor": "A String", # An opaque theme color.
+                                        "rgbColor": { # An RGB color. # An opaque RGB color.
+                                          "blue": 3.14, # The blue component of the color, from 0.0 to 1.0.
+                                          "green": 3.14, # The green component of the color, from 0.0 to 1.0.
+                                          "red": 3.14, # The red component of the color, from 0.0 to 1.0.
+                                        },
+                                      },
+                                    },
+                                    "bold": True or False, # Whether or not the text is bold.
+                                    "baselineOffset": "A String", # The text's vertical offset from its normal position.
+                                        #
+                                        # Text with `SUPERSCRIPT` or `SUBSCRIPT` baseline offsets is automatically
+                                        # rendered in a smaller font size, computed based on the `font_size` field.
+                                        # The `font_size` itself is not affected by changes in this field.
+                                    "strikethrough": True or False, # Whether or not the text is struck through.
+                                    "smallCaps": True or False, # Whether or not the text is in small capital letters.
+                                    "fontFamily": "A String", # The font family of the text.
+                                        #
+                                        # The font family can be any font from the Font menu in Slides or from
+                                        # [Google Fonts] (https://fonts.google.com/). If the font name is
+                                        # unrecognized, the text is rendered in `Arial`.
+                                        #
+                                        # Some fonts can affect the weight of the text. If an update request
+                                        # specifies values for both `font_family` and `bold`, the explicitly-set
+                                        # `bold` value is used.
+                                    "link": { # A hypertext link. # The hyperlink destination of the text. If unset, there is no link. Links
+                                        # are not inherited from parent text.
+                                        #
+                                        # Changing the link in an update request causes some other changes to the
+                                        # text style of the range:
+                                        #
+                                        # * When setting a link, the text foreground color will be set to
+                                        #   ThemeColorType.HYPERLINK and the text will
+                                        #   be underlined. If these fields are modified in the same
+                                        #   request, those values will be used instead of the link defaults.
+                                        # * Setting a link on a text range that overlaps with an existing link will
+                                        #   also update the existing link to point to the new URL.
+                                        # * Links are not settable on newline characters. As a result, setting a link
+                                        #   on a text range that crosses a paragraph boundary, such as `"ABC\n123"`,
+                                        #   will separate the newline character(s) into their own text runs. The
+                                        #   link will be applied separately to the runs before and after the newline.
+                                        # * Removing a link will update the text style of the range to match the
+                                        #   style of the preceding text (or the default text styles if the preceding
+                                        #   text is another link) unless different styles are being set in the same
+                                        #   request.
+                                      "url": "A String", # If set, indicates this is a link to the external web page at this URL.
+                                      "pageObjectId": "A String", # If set, indicates this is a link to the specific page in this
+                                          # presentation with this ID. A page with this ID may not exist.
+                                      "slideIndex": 42, # If set, indicates this is a link to the slide at this zero-based index
+                                          # in the presentation. There may not be a slide at this index.
+                                      "relativeLink": "A String", # If set, indicates this is a link to a slide in this presentation,
+                                          # addressed by its position.
+                                    },
+                                    "italic": True or False, # Whether or not the text is italicized.
+                                    "fontSize": { # A magnitude in a single direction in the specified units. # The size of the text's font. When read, the `font_size` will specified in
+                                        # points.
+                                      "magnitude": 3.14, # The magnitude.
+                                      "unit": "A String", # The units for magnitude.
+                                    },
+                                    "underline": True or False, # Whether or not the text is underlined.
+                                    "backgroundColor": { # A color that can either be fully opaque or fully transparent. # The background color of the text. If set, the color is either opaque or
+                                        # transparent, depending on if the `opaque_color` field in it is set.
+                                      "opaqueColor": { # A themeable solid color value. # If set, this will be used as an opaque color. If unset, this represents
+                                          # a transparent color.
+                                        "themeColor": "A String", # An opaque theme color.
+                                        "rgbColor": { # An RGB color. # An opaque RGB color.
+                                          "blue": 3.14, # The blue component of the color, from 0.0 to 1.0.
+                                          "green": 3.14, # The green component of the color, from 0.0 to 1.0.
+                                          "red": 3.14, # The red component of the color, from 0.0 to 1.0.
+                                        },
+                                      },
+                                    },
+                                  },
+                                },
+                              },
+                              "listId": "A String", # The ID of the list.
+                            },
+                          },
+                        },
+                        "rowSpan": 42, # Row span of the cell.
+                        "tableCellProperties": { # The properties of the TableCell. # The properties of the table cell.
+                          "tableCellBackgroundFill": { # The table cell background fill. # The background fill of the table cell. The default fill matches the fill
+                              # for newly created table cells in the Slides editor.
+                            "solidFill": { # A solid color fill. The page or page element is filled entirely with the # Solid color fill.
+                                # specified color value.
+                                #
+                                # If any field is unset, its value may be inherited from a parent placeholder
+                                # if it exists.
+                              "color": { # A themeable solid color value. # The color value of the solid fill.
+                                "themeColor": "A String", # An opaque theme color.
+                                "rgbColor": { # An RGB color. # An opaque RGB color.
+                                  "blue": 3.14, # The blue component of the color, from 0.0 to 1.0.
+                                  "green": 3.14, # The green component of the color, from 0.0 to 1.0.
+                                  "red": 3.14, # The red component of the color, from 0.0 to 1.0.
+                                },
+                              },
+                              "alpha": 3.14, # The fraction of this `color` that should be applied to the pixel.
+                                  # That is, the final pixel color is defined by the equation:
+                                  #
+                                  #   pixel color = alpha * (color) + (1.0 - alpha) * (background color)
+                                  #
+                                  # This means that a value of 1.0 corresponds to a solid color, whereas
+                                  # a value of 0.0 corresponds to a completely transparent color.
+                            },
+                            "propertyState": "A String", # The background fill property state.
+                                #
+                                # Updating the the fill on a table cell will implicitly update this field
+                                # to `RENDERED`, unless another value is specified in the same request. To
+                                # have no fill on a table cell, set this field to `NOT_RENDERED`. In this
+                                # case, any other fill fields set in the same request will be ignored.
+                          },
+                        },
+                        "location": { # A location of a single table cell within a table. # The location of the cell within the table.
+                          "rowIndex": 42, # The 0-based row index.
+                          "columnIndex": 42, # The 0-based column index.
+                        },
+                        "columnSpan": 42, # Column span of the cell.
+                      },
+                    ],
+                    "rowHeight": { # A magnitude in a single direction in the specified units. # Height of a row.
+                      "magnitude": 3.14, # The magnitude.
+                      "unit": "A String", # The units for magnitude.
+                    },
+                  },
+                ],
+                "rows": 42, # Number of rows in the table.
+                "columns": 42, # Number of columns in the table.
+              },
+              "line": { # A PageElement kind representing a # A line page element.
+                  # line, curved connector, or bent connector.
+                "lineProperties": { # The properties of the Line. # The properties of the line.
+                    #
+                    # When unset, these fields default to values that match the appearance of
+                    # new lines created in the Slides editor.
+                  "dashStyle": "A String", # The dash style of the line.
+                  "weight": { # A magnitude in a single direction in the specified units. # The thickness of the line.
+                    "magnitude": 3.14, # The magnitude.
+                    "unit": "A String", # The units for magnitude.
+                  },
+                  "endArrow": "A String", # The style of the arrow at the end of the line.
+                  "link": { # A hypertext link. # The hyperlink destination of the line. If unset, there is no link.
+                    "url": "A String", # If set, indicates this is a link to the external web page at this URL.
+                    "pageObjectId": "A String", # If set, indicates this is a link to the specific page in this
+                        # presentation with this ID. A page with this ID may not exist.
+                    "slideIndex": 42, # If set, indicates this is a link to the slide at this zero-based index
+                        # in the presentation. There may not be a slide at this index.
+                    "relativeLink": "A String", # If set, indicates this is a link to a slide in this presentation,
+                        # addressed by its position.
+                  },
+                  "startArrow": "A String", # The style of the arrow at the beginning of the line.
+                  "lineFill": { # The fill of the line. # The fill of the line. The default line fill matches the defaults for new
+                      # lines created in the Slides editor.
+                    "solidFill": { # A solid color fill. The page or page element is filled entirely with the # Solid color fill.
+                        # specified color value.
+                        #
+                        # If any field is unset, its value may be inherited from a parent placeholder
+                        # if it exists.
+                      "color": { # A themeable solid color value. # The color value of the solid fill.
+                        "themeColor": "A String", # An opaque theme color.
+                        "rgbColor": { # An RGB color. # An opaque RGB color.
+                          "blue": 3.14, # The blue component of the color, from 0.0 to 1.0.
+                          "green": 3.14, # The green component of the color, from 0.0 to 1.0.
+                          "red": 3.14, # The red component of the color, from 0.0 to 1.0.
+                        },
+                      },
+                      "alpha": 3.14, # The fraction of this `color` that should be applied to the pixel.
+                          # That is, the final pixel color is defined by the equation:
+                          #
+                          #   pixel color = alpha * (color) + (1.0 - alpha) * (background color)
+                          #
+                          # This means that a value of 1.0 corresponds to a solid color, whereas
+                          # a value of 0.0 corresponds to a completely transparent color.
+                    },
+                  },
+                },
+                "lineType": "A String", # The type of the line.
+              },
+              "size": { # A width and height. # The size of the page element.
+                "width": { # A magnitude in a single direction in the specified units. # The width of the object.
+                  "magnitude": 3.14, # The magnitude.
+                  "unit": "A String", # The units for magnitude.
+                },
+                "height": { # A magnitude in a single direction in the specified units. # The height of the object.
+                  "magnitude": 3.14, # The magnitude.
+                  "unit": "A String", # The units for magnitude.
+                },
+              },
+              "elementGroup": { # A PageElement kind representing a # A collection of page elements joined as a single unit.
+                  # joined collection of PageElements.
+                "children": [ # The collection of elements in the group. The minimum size of a group is 2.
+                  # Object with schema name: PageElement
+                ],
+              },
+            },
+          ],
+          "objectId": "A String", # The object ID for this page. Object IDs used by
+              # Page and
+              # PageElement share the same namespace.
+          "pageProperties": { # The properties of the Page. # The properties of the page.
+              #
+              # The page will inherit properties from the parent page. Depending on the page
+              # type the hierarchy is defined in either
+              # SlideProperties or
+              # LayoutProperties.
+            "pageBackgroundFill": { # The page background fill. # The background fill of the page. If unset, the background fill is inherited
+                # from a parent page if it exists. If the page has no parent, then the
+                # background fill defaults to the corresponding fill in the Slides editor.
+              "solidFill": { # A solid color fill. The page or page element is filled entirely with the # Solid color fill.
+                  # specified color value.
+                  #
+                  # If any field is unset, its value may be inherited from a parent placeholder
+                  # if it exists.
+                "color": { # A themeable solid color value. # The color value of the solid fill.
+                  "themeColor": "A String", # An opaque theme color.
+                  "rgbColor": { # An RGB color. # An opaque RGB color.
+                    "blue": 3.14, # The blue component of the color, from 0.0 to 1.0.
+                    "green": 3.14, # The green component of the color, from 0.0 to 1.0.
+                    "red": 3.14, # The red component of the color, from 0.0 to 1.0.
+                  },
+                },
+                "alpha": 3.14, # The fraction of this `color` that should be applied to the pixel.
+                    # That is, the final pixel color is defined by the equation:
+                    #
+                    #   pixel color = alpha * (color) + (1.0 - alpha) * (background color)
+                    #
+                    # This means that a value of 1.0 corresponds to a solid color, whereas
+                    # a value of 0.0 corresponds to a completely transparent color.
+              },
+              "propertyState": "A String", # The background fill property state.
+                  #
+                  # Updating the the fill on a page will implicitly update this field to
+                  # `RENDERED`, unless another value is specified in the same request. To
+                  # have no fill on a page, set this field to `NOT_RENDERED`. In this case,
+                  # any other fill fields set in the same request will be ignored.
+              "stretchedPictureFill": { # The stretched picture fill. The page or page element is filled entirely with # Stretched picture fill.
+                  # the specified picture. The picture is stretched to fit its container.
+                "contentUrl": "A String", # Reading the content_url:
+                    #
+                    # An URL to a picture with a default lifetime of 30 minutes.
+                    # This URL is tagged with the account of the requester. Anyone with the URL
+                    # effectively accesses the picture as the original requester. Access to the
+                    # picture may be lost if the presentation's sharing settings change.
+                    #
+                    # Writing the content_url:
+                    #
+                    # The picture is fetched once at insertion time and a copy is stored for
+                    # display inside the presentation. Pictures must be less than 50MB in size,
+                    # cannot exceed 25 megapixels, and must be in either in PNG, JPEG, or GIF
+                    # format.
+                "size": { # A width and height. # The original size of the picture fill. This field is read-only.
+                  "width": { # A magnitude in a single direction in the specified units. # The width of the object.
+                    "magnitude": 3.14, # The magnitude.
+                    "unit": "A String", # The units for magnitude.
+                  },
+                  "height": { # A magnitude in a single direction in the specified units. # The height of the object.
+                    "magnitude": 3.14, # The magnitude.
+                    "unit": "A String", # The units for magnitude.
+                  },
+                },
+              },
+            },
+            "colorScheme": { # The palette of predefined colors for a page. # The color scheme of the page. If unset, the color scheme is inherited from
+                # a parent page. If the page has no parent, the color scheme uses a default
+                # Slides color scheme. This field is read-only.
+              "colors": [ # The ThemeColorType and corresponding concrete color pairs.
+                { # A pair mapping a theme color type to the concrete color it represents.
+                  "color": { # An RGB color. # The concrete color corresponding to the theme color type above.
+                    "blue": 3.14, # The blue component of the color, from 0.0 to 1.0.
+                    "green": 3.14, # The green component of the color, from 0.0 to 1.0.
+                    "red": 3.14, # The red component of the color, from 0.0 to 1.0.
+                  },
+                  "type": "A String", # The type of the theme color.
+                },
+              ],
+            },
+          },
+          "pageType": "A String", # The type of the page.
+          "slideProperties": { # The properties of Page that are only # Slide specific properties. Only set if page_type = SLIDE.
+              # relevant for pages with page_type SLIDE.
+            "masterObjectId": "A String", # The object ID of the master that this slide is based on.
+            "layoutObjectId": "A String", # The object ID of the layout that this slide is based on.
+          },
+        },
+      ],
+      "pageSize": { # A width and height. # The size of pages in the presentation.
+        "width": { # A magnitude in a single direction in the specified units. # The width of the object.
+          "magnitude": 3.14, # The magnitude.
+          "unit": "A String", # The units for magnitude.
+        },
+        "height": { # A magnitude in a single direction in the specified units. # The height of the object.
+          "magnitude": 3.14, # The magnitude.
+          "unit": "A String", # The units for magnitude.
+        },
+      },
+      "title": "A String", # The title of the presentation.
+      "locale": "A String", # The locale of the presentation, as an IETF BCP 47 language tag.
+      "slides": [ # The slides in the presentation.
+          # A slide inherits properties from a slide layout.
+        { # A page in a presentation.
+          "layoutProperties": { # The properties of Page are only # Layout specific properties. Only set if page_type = LAYOUT.
+              # relevant for pages with page_type LAYOUT.
+            "displayName": "A String", # The human readable name of the layout in the presentation's locale.
+            "name": "A String", # The name of the layout.
+            "masterObjectId": "A String", # The object ID of the master that this layout is based on.
+          },
+          "pageElements": [ # The page elements rendered on the page.
+            { # A visual element rendered on a page.
+              "wordArt": { # A PageElement kind representing # A word art page element.
+                  # word art.
+                "renderedText": "A String", # The text rendered as word art.
+              },
+              "description": "A String", # The description of the page element. Combined with title to display alt
+                  # text.
+              "objectId": "A String", # The object ID for this page element. Object IDs used by
+                  # google.apps.slides.v1.Page and
+                  # google.apps.slides.v1.PageElement share the same namespace.
+              "title": "A String", # The title of the page element. Combined with description to display alt
+                  # text.
+              "image": { # A PageElement kind representing an # An image page element.
+                  # image.
+                "contentUrl": "A String", # An URL to an image with a default lifetime of 30 minutes.
+                    # This URL is tagged with the account of the requester. Anyone with the URL
+                    # effectively accesses the image as the original requester. Access to the
+                    # image may be lost if the presentation's sharing settings change.
+                "imageProperties": { # The properties of the Image. # The properties of the image.
+                  "outline": { # The outline of a PageElement. # The outline of the image. If not set, the the image has no outline.
+                      #
+                      # If these fields are unset, they may be inherited from a parent placeholder
+                      # if it exists. If there is no parent, the fields will default to the value
+                      # used for new page elements created in the Slides editor, which may depend on
+                      # the page element kind.
+                    "dashStyle": "A String", # The dash style of the outline.
+                    "propertyState": "A String", # The outline property state.
+                        #
+                        # Updating the the outline on a page element will implicitly update this
+                        # field to`RENDERED`, unless another value is specified in the same request.
+                        # To have no outline on a page element, set this field to `NOT_RENDERED`. In
+                        # this case, any other outline fields set in the same request will be
+                        # ignored.
+                    "outlineFill": { # The fill of the outline. # The fill of the outline.
+                      "solidFill": { # A solid color fill. The page or page element is filled entirely with the # Solid color fill.
+                          # specified color value.
+                          #
+                          # If any field is unset, its value may be inherited from a parent placeholder
+                          # if it exists.
+                        "color": { # A themeable solid color value. # The color value of the solid fill.
+                          "themeColor": "A String", # An opaque theme color.
+                          "rgbColor": { # An RGB color. # An opaque RGB color.
+                            "blue": 3.14, # The blue component of the color, from 0.0 to 1.0.
+                            "green": 3.14, # The green component of the color, from 0.0 to 1.0.
+                            "red": 3.14, # The red component of the color, from 0.0 to 1.0.
+                          },
+                        },
+                        "alpha": 3.14, # The fraction of this `color` that should be applied to the pixel.
+                            # That is, the final pixel color is defined by the equation:
+                            #
+                            #   pixel color = alpha * (color) + (1.0 - alpha) * (background color)
+                            #
+                            # This means that a value of 1.0 corresponds to a solid color, whereas
+                            # a value of 0.0 corresponds to a completely transparent color.
+                      },
+                    },
+                    "weight": { # A magnitude in a single direction in the specified units. # The thickness of the outline.
+                      "magnitude": 3.14, # The magnitude.
+                      "unit": "A String", # The units for magnitude.
+                    },
+                  },
+                  "brightness": 3.14, # The brightness effect of the image. The value should be in the interval
+                      # [-1.0, 1.0], where 0 means no effect. This property is read-only.
+                  "recolor": { # A recolor effect applied on an image. # The recolor effect of the image. If not set, the image is not recolored.
+                      # This property is read-only.
+                    "recolorStops": [ # The recolor effect is represented by a gradient, which is a list of color
+                        # stops. This property is read-only.
+                      { # A color and position in a gradient band.
+                        "color": { # A themeable solid color value. # The color of the gradient stop.
+                          "themeColor": "A String", # An opaque theme color.
+                          "rgbColor": { # An RGB color. # An opaque RGB color.
+                            "blue": 3.14, # The blue component of the color, from 0.0 to 1.0.
+                            "green": 3.14, # The green component of the color, from 0.0 to 1.0.
+                            "red": 3.14, # The red component of the color, from 0.0 to 1.0.
+                          },
+                        },
+                        "position": 3.14, # The relative position of the color stop in the gradient band measured
+                            # in percentage. The value should be in the interval [0.0, 1.0].
+                        "alpha": 3.14, # The alpha value of this color in the gradient band. Defaults to 1.0,
+                            # fully opaque.
+                      },
+                    ],
+                  },
+                  "link": { # A hypertext link. # The hyperlink destination of the image. If unset, there is no link.
+                    "url": "A String", # If set, indicates this is a link to the external web page at this URL.
+                    "pageObjectId": "A String", # If set, indicates this is a link to the specific page in this
+                        # presentation with this ID. A page with this ID may not exist.
+                    "slideIndex": 42, # If set, indicates this is a link to the slide at this zero-based index
+                        # in the presentation. There may not be a slide at this index.
+                    "relativeLink": "A String", # If set, indicates this is a link to a slide in this presentation,
+                        # addressed by its position.
+                  },
+                  "transparency": 3.14, # The transparency effect of the image. The value should be in the interval
+                      # [0.0, 1.0], where 0 means no effect and 1 means completely transparent.
+                      # This property is read-only.
+                  "cropProperties": { # The crop properties of an object enclosed in a container. For example, an # The crop properties of the image. If not set, the image is not cropped.
+                      # This property is read-only.
+                      # Image.
+                      #
+                      # The crop properties is represented by the offsets of four edges which define
+                      # a crop rectangle. The offsets are measured in percentage from the
+                      # corresponding edges of the object's original bounding rectangle towards
+                      # inside, relative to the object's original dimensions.
+                      #
+                      # - If the offset is in the interval (0, 1), the corresponding edge of crop
+                      # rectangle is positioned inside of the object's original bounding rectangle.
+                      # - If the offset is negative or greater than 1, the corresponding edge of crop
+                      # rectangle is positioned outside of the object's original bounding rectangle.
+                      # - If the left edge of the crop rectangle is on the right side of its right
+                      # edge, the object will be flipped horizontally.
+                      # - If the top edge of the crop rectangle is below its bottom edge, the object
+                      # will be flipped vertically.
+                      # - If all offsets and rotation angle is 0, the object is not cropped.
+                      #
+                      # After cropping, the content in the crop rectangle will be stretched to fit
+                      # its container.
+                    "leftOffset": 3.14, # The offset specifies the left edge of the crop rectangle that is located to
+                        # the right of the original bounding rectangle left edge, relative to the
+                        # object's original width.
+                    "angle": 3.14, # The rotation angle of the crop window around its center, in radians.
+                        # Rotation angle is applied after the offset.
+                    "bottomOffset": 3.14, # The offset specifies the bottom edge of the crop rectangle that is located
+                        # above the original bounding rectangle bottom edge, relative to the object's
+                        # original height.
+                    "rightOffset": 3.14, # The offset specifies the right edge of the crop rectangle that is located
+                        # to the left of the original bounding rectangle right edge, relative to the
+                        # object's original width.
+                    "topOffset": 3.14, # The offset specifies the top edge of the crop rectangle that is located
+                        # below the original bounding rectangle top edge, relative to the object's
+                        # original height.
+                  },
+                  "shadow": { # The shadow properties of a page element. # The shadow of the image. If not set, the image has no shadow. This property
+                      # is read-only.
+                      #
+                      # If these fields are unset, they may be inherited from a parent placeholder
+                      # if it exists. If there is no parent, the fields will default to the value
+                      # used for new page elements created in the Slides editor, which may depend on
+                      # the page element kind.
+                    "color": { # A themeable solid color value. # The shadow color value.
+                      "themeColor": "A String", # An opaque theme color.
+                      "rgbColor": { # An RGB color. # An opaque RGB color.
+                        "blue": 3.14, # The blue component of the color, from 0.0 to 1.0.
+                        "green": 3.14, # The green component of the color, from 0.0 to 1.0.
+                        "red": 3.14, # The red component of the color, from 0.0 to 1.0.
+                      },
+                    },
+                    "transform": { # AffineTransform uses a 3x3 matrix with an implied last row of [ 0 0 1 ] # Transform that encodes the translate, scale, and skew of the shadow,
+                        # relative to the alignment position.
+                        # to transform source coordinates (x,y) into destination coordinates (x', y')
+                        # according to:
+                        #
+                        #       x'  x  =   shear_y  scale_y  translate_y
+                        #       1  [ 1 ]
+                        #
+                        # After transformation,
+                        #
+                        #      x' = scale_x * x + shear_x * y + translate_x;
+                        #      y' = scale_y * y + shear_y * x + translate_y;
+                        #
+                        # This message is therefore composed of these six matrix elements.
+                      "translateX": 3.14, # The X coordinate translation element.
+                      "translateY": 3.14, # The Y coordinate translation element.
+                      "scaleX": 3.14, # The X coordinate scaling element.
+                      "scaleY": 3.14, # The Y coordinate scaling element.
+                      "shearY": 3.14, # The Y coordinate shearing element.
+                      "shearX": 3.14, # The X coordinate shearing element.
+                      "unit": "A String", # The units for translate elements.
+                    },
+                    "propertyState": "A String", # The shadow property state.
+                        #
+                        # Updating the the shadow on a page element will implicitly update this field
+                        # to `RENDERED`, unless another value is specified in the same request. To
+                        # have no shadow on a page element, set this field to `NOT_RENDERED`. In this
+                        # case, any other shadow fields set in the same request will be ignored.
+                    "blurRadius": { # A magnitude in a single direction in the specified units. # The radius of the shadow blur. The larger the radius, the more diffuse the
+                        # shadow becomes.
+                      "magnitude": 3.14, # The magnitude.
+                      "unit": "A String", # The units for magnitude.
+                    },
+                    "alpha": 3.14, # The alpha of the shadow's color, from 0.0 to 1.0.
+                    "type": "A String", # The type of the shadow.
+                    "alignment": "A String", # The alignment point of the shadow, that sets the origin for translate,
+                        # scale and skew of the shadow.
+                    "rotateWithShape": True or False, # Whether the shadow should rotate with the shape.
+                  },
+                  "contrast": 3.14, # The contrast effect of the image. The value should be in the interval
+                      # [-1.0, 1.0], where 0 means no effect. This property is read-only.
+                },
+              },
+              "transform": { # AffineTransform uses a 3x3 matrix with an implied last row of [ 0 0 1 ] # The transform of the page element.
+                  # to transform source coordinates (x,y) into destination coordinates (x', y')
+                  # according to:
+                  #
+                  #       x'  x  =   shear_y  scale_y  translate_y
+                  #       1  [ 1 ]
+                  #
+                  # After transformation,
+                  #
+                  #      x' = scale_x * x + shear_x * y + translate_x;
+                  #      y' = scale_y * y + shear_y * x + translate_y;
+                  #
+                  # This message is therefore composed of these six matrix elements.
+                "translateX": 3.14, # The X coordinate translation element.
+                "translateY": 3.14, # The Y coordinate translation element.
+                "scaleX": 3.14, # The X coordinate scaling element.
+                "scaleY": 3.14, # The Y coordinate scaling element.
+                "shearY": 3.14, # The Y coordinate shearing element.
+                "shearX": 3.14, # The X coordinate shearing element.
+                "unit": "A String", # The units for translate elements.
+              },
+              "shape": { # A PageElement kind representing a # A generic shape.
+                  # generic shape that does not have a more specific classification.
+                "text": { # The general text content. The text must reside in a compatible shape (e.g. # The text content of the shape.
+                    # text box or rectangle) or a table cell in a page.
+                  "textElements": [ # The text contents broken down into its component parts, including styling
+                      # information. This property is read-only.
+                    { # A TextElement describes the content of a range of indices in the text content
+                        # of a Shape or TableCell.
+                      "autoText": { # A TextElement kind that represents auto text. # A TextElement representing a spot in the text that is dynamically
+                          # replaced with content that can change over time.
+                        "content": "A String", # The rendered content of this auto text, if available.
+                        "style": { # Represents the styling that can be applied to a TextRun. # The styling applied to this auto text.
+                            #
+                            # If this text is contained in a shape with a parent placeholder, then these text styles may be
+                            # inherited from the parent. Which text styles are inherited depend on the
+                            # nesting level of lists:
+                            #
+                            # * A text run in a paragraph that is not in a list will inherit its text style
+                            #   from the the newline character in the paragraph at the 0 nesting level of
+                            #   the list inside the parent placeholder.
+                            # * A text run in a paragraph that is in a list will inherit its text style
+                            #   from the newline character in the paragraph at its corresponding nesting
+                            #   level of the list inside the parent placeholder.
+                            #
+                            # Inherited text styles are represented as unset fields in this message. If
+                            # text is contained in a shape without a parent placeholder, unsetting these
+                            # fields will revert the style to a value matching the defaults in the Slides
+                            # editor.
+                          "foregroundColor": { # A color that can either be fully opaque or fully transparent. # The color of the text itself. If set, the color is either opaque or
+                              # transparent, depending on if the `opaque_color` field in it is set.
+                            "opaqueColor": { # A themeable solid color value. # If set, this will be used as an opaque color. If unset, this represents
+                                # a transparent color.
+                              "themeColor": "A String", # An opaque theme color.
+                              "rgbColor": { # An RGB color. # An opaque RGB color.
+                                "blue": 3.14, # The blue component of the color, from 0.0 to 1.0.
+                                "green": 3.14, # The green component of the color, from 0.0 to 1.0.
+                                "red": 3.14, # The red component of the color, from 0.0 to 1.0.
+                              },
+                            },
+                          },
+                          "bold": True or False, # Whether or not the text is bold.
+                          "baselineOffset": "A String", # The text's vertical offset from its normal position.
+                              #
+                              # Text with `SUPERSCRIPT` or `SUBSCRIPT` baseline offsets is automatically
+                              # rendered in a smaller font size, computed based on the `font_size` field.
+                              # The `font_size` itself is not affected by changes in this field.
+                          "strikethrough": True or False, # Whether or not the text is struck through.
+                          "smallCaps": True or False, # Whether or not the text is in small capital letters.
+                          "fontFamily": "A String", # The font family of the text.
+                              #
+                              # The font family can be any font from the Font menu in Slides or from
+                              # [Google Fonts] (https://fonts.google.com/). If the font name is
+                              # unrecognized, the text is rendered in `Arial`.
+                              #
+                              # Some fonts can affect the weight of the text. If an update request
+                              # specifies values for both `font_family` and `bold`, the explicitly-set
+                              # `bold` value is used.
+                          "link": { # A hypertext link. # The hyperlink destination of the text. If unset, there is no link. Links
+                              # are not inherited from parent text.
+                              #
+                              # Changing the link in an update request causes some other changes to the
+                              # text style of the range:
+                              #
+                              # * When setting a link, the text foreground color will be set to
+                              #   ThemeColorType.HYPERLINK and the text will
+                              #   be underlined. If these fields are modified in the same
+                              #   request, those values will be used instead of the link defaults.
+                              # * Setting a link on a text range that overlaps with an existing link will
+                              #   also update the existing link to point to the new URL.
+                              # * Links are not settable on newline characters. As a result, setting a link
+                              #   on a text range that crosses a paragraph boundary, such as `"ABC\n123"`,
+                              #   will separate the newline character(s) into their own text runs. The
+                              #   link will be applied separately to the runs before and after the newline.
+                              # * Removing a link will update the text style of the range to match the
+                              #   style of the preceding text (or the default text styles if the preceding
+                              #   text is another link) unless different styles are being set in the same
+                              #   request.
+                            "url": "A String", # If set, indicates this is a link to the external web page at this URL.
+                            "pageObjectId": "A String", # If set, indicates this is a link to the specific page in this
+                                # presentation with this ID. A page with this ID may not exist.
+                            "slideIndex": 42, # If set, indicates this is a link to the slide at this zero-based index
+                                # in the presentation. There may not be a slide at this index.
+                            "relativeLink": "A String", # If set, indicates this is a link to a slide in this presentation,
+                                # addressed by its position.
+                          },
+                          "italic": True or False, # Whether or not the text is italicized.
+                          "fontSize": { # A magnitude in a single direction in the specified units. # The size of the text's font. When read, the `font_size` will specified in
+                              # points.
+                            "magnitude": 3.14, # The magnitude.
+                            "unit": "A String", # The units for magnitude.
+                          },
+                          "underline": True or False, # Whether or not the text is underlined.
+                          "backgroundColor": { # A color that can either be fully opaque or fully transparent. # The background color of the text. If set, the color is either opaque or
+                              # transparent, depending on if the `opaque_color` field in it is set.
+                            "opaqueColor": { # A themeable solid color value. # If set, this will be used as an opaque color. If unset, this represents
+                                # a transparent color.
+                              "themeColor": "A String", # An opaque theme color.
+                              "rgbColor": { # An RGB color. # An opaque RGB color.
+                                "blue": 3.14, # The blue component of the color, from 0.0 to 1.0.
+                                "green": 3.14, # The green component of the color, from 0.0 to 1.0.
+                                "red": 3.14, # The red component of the color, from 0.0 to 1.0.
+                              },
+                            },
+                          },
+                        },
+                        "type": "A String", # The type of this auto text.
+                      },
+                      "endIndex": 42, # The zero-based end index of this text element, exclusive, in Unicode code
+                          # units.
+                      "startIndex": 42, # The zero-based start index of this text element, in Unicode code units.
+                      "paragraphMarker": { # A TextElement kind that represents the beginning of a new paragraph. # A marker representing the beginning of a new paragraph.
+                          #
+                          # The `start_index` and `end_index` of this TextElement represent the
+                          # range of the paragraph. Other TextElements with an index range contained
+                          # inside this paragraph's range are considered to be part of this
+                          # paragraph. The range of indices of two separate paragraphs will never
+                          # overlap.
+                        "style": { # Styles that apply to a whole paragraph. # The paragraph's style
+                            #
+                            # If this text is contained in a shape with a parent placeholder, then these paragraph styles may be
+                            # inherited from the parent. Which paragraph styles are inherited depend on the
+                            # nesting level of lists:
+                            #
+                            # * A paragraph not in a list will inherit its paragraph style from the
+                            #   paragraph at the 0 nesting level of the list inside the parent placeholder.
+                            # * A paragraph in a list will inherit its paragraph style from the paragraph
+                            #   at its corresponding nesting level of the list inside the parent
+                            #   placeholder.
+                            #
+                            # Inherited paragraph styles are represented as unset fields in this message.
+                          "spacingMode": "A String", # The spacing mode for the paragraph. This property is read-only.
+                          "direction": "A String", # The text direction of this paragraph. This property is read-only.
+                          "spaceBelow": { # A magnitude in a single direction in the specified units. # The amount of extra space above the paragraph. If unset, the value is
+                              # inherited from the parent. This property is read-only.
+                            "magnitude": 3.14, # The magnitude.
+                            "unit": "A String", # The units for magnitude.
+                          },
+                          "lineSpacing": 3.14, # The amount of space between lines, as a percentage of normal, where normal
+                              # is represented as 100.0. If unset, the value is inherited from the parent.
+                              # This property is read-only.
+                          "indentStart": { # A magnitude in a single direction in the specified units. # The amount indentation for the paragraph on the side that corresponds to
+                              # the start of the text, based on the current text direction. If unset, the
+                              # value is inherited from the parent. This property is read-only.
+                            "magnitude": 3.14, # The magnitude.
+                            "unit": "A String", # The units for magnitude.
+                          },
+                          "spaceAbove": { # A magnitude in a single direction in the specified units. # The amount of extra space above the paragraph. If unset, the value is
+                              # inherited from the parent. This property is read-only.
+                            "magnitude": 3.14, # The magnitude.
+                            "unit": "A String", # The units for magnitude.
+                          },
+                          "indentEnd": { # A magnitude in a single direction in the specified units. # The amount indentation for the paragraph on the side that corresponds to
+                              # the end of the text, based on the current text direction. If unset, the
+                              # value is inherited from the parent. This property is read-only.
+                            "magnitude": 3.14, # The magnitude.
+                            "unit": "A String", # The units for magnitude.
+                          },
+                          "indentFirstLine": { # A magnitude in a single direction in the specified units. # The amount of indentation for the start of the first line of the paragraph.
+                              # If unset, the value is inherited from the parent. This property is
+                              # read-only.
+                            "magnitude": 3.14, # The magnitude.
+                            "unit": "A String", # The units for magnitude.
+                          },
+                          "alignment": "A String", # The text alignment for this paragraph. This property is read-only.
+                        },
+                        "bullet": { # Describes the bullet of a paragraph. # The bullet for this paragraph. If not present, the paragraph does not
+                            # belong to a list.
+                          "nestingLevel": 42, # The nesting level of this paragraph in the list.
+                          "listId": "A String", # The ID of the list this paragraph belongs to.
+                          "bulletStyle": { # Represents the styling that can be applied to a TextRun. # The paragraph specific text style applied to this bullet.
+                              #
+                              # If this text is contained in a shape with a parent placeholder, then these text styles may be
+                              # inherited from the parent. Which text styles are inherited depend on the
+                              # nesting level of lists:
+                              #
+                              # * A text run in a paragraph that is not in a list will inherit its text style
+                              #   from the the newline character in the paragraph at the 0 nesting level of
+                              #   the list inside the parent placeholder.
+                              # * A text run in a paragraph that is in a list will inherit its text style
+                              #   from the newline character in the paragraph at its corresponding nesting
+                              #   level of the list inside the parent placeholder.
+                              #
+                              # Inherited text styles are represented as unset fields in this message. If
+                              # text is contained in a shape without a parent placeholder, unsetting these
+                              # fields will revert the style to a value matching the defaults in the Slides
+                              # editor.
+                            "foregroundColor": { # A color that can either be fully opaque or fully transparent. # The color of the text itself. If set, the color is either opaque or
+                                # transparent, depending on if the `opaque_color` field in it is set.
+                              "opaqueColor": { # A themeable solid color value. # If set, this will be used as an opaque color. If unset, this represents
+                                  # a transparent color.
+                                "themeColor": "A String", # An opaque theme color.
+                                "rgbColor": { # An RGB color. # An opaque RGB color.
+                                  "blue": 3.14, # The blue component of the color, from 0.0 to 1.0.
+                                  "green": 3.14, # The green component of the color, from 0.0 to 1.0.
+                                  "red": 3.14, # The red component of the color, from 0.0 to 1.0.
+                                },
+                              },
+                            },
+                            "bold": True or False, # Whether or not the text is bold.
+                            "baselineOffset": "A String", # The text's vertical offset from its normal position.
+                                #
+                                # Text with `SUPERSCRIPT` or `SUBSCRIPT` baseline offsets is automatically
+                                # rendered in a smaller font size, computed based on the `font_size` field.
+                                # The `font_size` itself is not affected by changes in this field.
+                            "strikethrough": True or False, # Whether or not the text is struck through.
+                            "smallCaps": True or False, # Whether or not the text is in small capital letters.
+                            "fontFamily": "A String", # The font family of the text.
+                                #
+                                # The font family can be any font from the Font menu in Slides or from
+                                # [Google Fonts] (https://fonts.google.com/). If the font name is
+                                # unrecognized, the text is rendered in `Arial`.
+                                #
+                                # Some fonts can affect the weight of the text. If an update request
+                                # specifies values for both `font_family` and `bold`, the explicitly-set
+                                # `bold` value is used.
+                            "link": { # A hypertext link. # The hyperlink destination of the text. If unset, there is no link. Links
+                                # are not inherited from parent text.
+                                #
+                                # Changing the link in an update request causes some other changes to the
+                                # text style of the range:
+                                #
+                                # * When setting a link, the text foreground color will be set to
+                                #   ThemeColorType.HYPERLINK and the text will
+                                #   be underlined. If these fields are modified in the same
+                                #   request, those values will be used instead of the link defaults.
+                                # * Setting a link on a text range that overlaps with an existing link will
+                                #   also update the existing link to point to the new URL.
+                                # * Links are not settable on newline characters. As a result, setting a link
+                                #   on a text range that crosses a paragraph boundary, such as `"ABC\n123"`,
+                                #   will separate the newline character(s) into their own text runs. The
+                                #   link will be applied separately to the runs before and after the newline.
+                                # * Removing a link will update the text style of the range to match the
+                                #   style of the preceding text (or the default text styles if the preceding
+                                #   text is another link) unless different styles are being set in the same
+                                #   request.
+                              "url": "A String", # If set, indicates this is a link to the external web page at this URL.
+                              "pageObjectId": "A String", # If set, indicates this is a link to the specific page in this
+                                  # presentation with this ID. A page with this ID may not exist.
+                              "slideIndex": 42, # If set, indicates this is a link to the slide at this zero-based index
+                                  # in the presentation. There may not be a slide at this index.
+                              "relativeLink": "A String", # If set, indicates this is a link to a slide in this presentation,
+                                  # addressed by its position.
+                            },
+                            "italic": True or False, # Whether or not the text is italicized.
+                            "fontSize": { # A magnitude in a single direction in the specified units. # The size of the text's font. When read, the `font_size` will specified in
+                                # points.
+                              "magnitude": 3.14, # The magnitude.
+                              "unit": "A String", # The units for magnitude.
+                            },
+                            "underline": True or False, # Whether or not the text is underlined.
+                            "backgroundColor": { # A color that can either be fully opaque or fully transparent. # The background color of the text. If set, the color is either opaque or
+                                # transparent, depending on if the `opaque_color` field in it is set.
+                              "opaqueColor": { # A themeable solid color value. # If set, this will be used as an opaque color. If unset, this represents
+                                  # a transparent color.
+                                "themeColor": "A String", # An opaque theme color.
+                                "rgbColor": { # An RGB color. # An opaque RGB color.
+                                  "blue": 3.14, # The blue component of the color, from 0.0 to 1.0.
+                                  "green": 3.14, # The green component of the color, from 0.0 to 1.0.
+                                  "red": 3.14, # The red component of the color, from 0.0 to 1.0.
+                                },
+                              },
+                            },
+                          },
+                          "glyph": "A String", # The rendered bullet glyph for this paragraph.
+                        },
+                      },
+                      "textRun": { # A TextElement kind that represents a run of text that all has the same # A TextElement representing a run of text where all of the characters
+                          # in the run have the same TextStyle.
+                          #
+                          # The `start_index` and `end_index` of TextRuns will always be fully
+                          # contained in the index range of a single `paragraph_marker` TextElement.
+                          # In other words, a TextRun will never span multiple paragraphs.
+                          # styling.
+                        "content": "A String", # The text of this run.
+                        "style": { # Represents the styling that can be applied to a TextRun. # The styling applied to this run.
+                            #
+                            # If this text is contained in a shape with a parent placeholder, then these text styles may be
+                            # inherited from the parent. Which text styles are inherited depend on the
+                            # nesting level of lists:
+                            #
+                            # * A text run in a paragraph that is not in a list will inherit its text style
+                            #   from the the newline character in the paragraph at the 0 nesting level of
+                            #   the list inside the parent placeholder.
+                            # * A text run in a paragraph that is in a list will inherit its text style
+                            #   from the newline character in the paragraph at its corresponding nesting
+                            #   level of the list inside the parent placeholder.
+                            #
+                            # Inherited text styles are represented as unset fields in this message. If
+                            # text is contained in a shape without a parent placeholder, unsetting these
+                            # fields will revert the style to a value matching the defaults in the Slides
+                            # editor.
+                          "foregroundColor": { # A color that can either be fully opaque or fully transparent. # The color of the text itself. If set, the color is either opaque or
+                              # transparent, depending on if the `opaque_color` field in it is set.
+                            "opaqueColor": { # A themeable solid color value. # If set, this will be used as an opaque color. If unset, this represents
+                                # a transparent color.
+                              "themeColor": "A String", # An opaque theme color.
+                              "rgbColor": { # An RGB color. # An opaque RGB color.
+                                "blue": 3.14, # The blue component of the color, from 0.0 to 1.0.
+                                "green": 3.14, # The green component of the color, from 0.0 to 1.0.
+                                "red": 3.14, # The red component of the color, from 0.0 to 1.0.
+                              },
+                            },
+                          },
+                          "bold": True or False, # Whether or not the text is bold.
+                          "baselineOffset": "A String", # The text's vertical offset from its normal position.
+                              #
+                              # Text with `SUPERSCRIPT` or `SUBSCRIPT` baseline offsets is automatically
+                              # rendered in a smaller font size, computed based on the `font_size` field.
+                              # The `font_size` itself is not affected by changes in this field.
+                          "strikethrough": True or False, # Whether or not the text is struck through.
+                          "smallCaps": True or False, # Whether or not the text is in small capital letters.
+                          "fontFamily": "A String", # The font family of the text.
+                              #
+                              # The font family can be any font from the Font menu in Slides or from
+                              # [Google Fonts] (https://fonts.google.com/). If the font name is
+                              # unrecognized, the text is rendered in `Arial`.
+                              #
+                              # Some fonts can affect the weight of the text. If an update request
+                              # specifies values for both `font_family` and `bold`, the explicitly-set
+                              # `bold` value is used.
+                          "link": { # A hypertext link. # The hyperlink destination of the text. If unset, there is no link. Links
+                              # are not inherited from parent text.
+                              #
+                              # Changing the link in an update request causes some other changes to the
+                              # text style of the range:
+                              #
+                              # * When setting a link, the text foreground color will be set to
+                              #   ThemeColorType.HYPERLINK and the text will
+                              #   be underlined. If these fields are modified in the same
+                              #   request, those values will be used instead of the link defaults.
+                              # * Setting a link on a text range that overlaps with an existing link will
+                              #   also update the existing link to point to the new URL.
+                              # * Links are not settable on newline characters. As a result, setting a link
+                              #   on a text range that crosses a paragraph boundary, such as `"ABC\n123"`,
+                              #   will separate the newline character(s) into their own text runs. The
+                              #   link will be applied separately to the runs before and after the newline.
+                              # * Removing a link will update the text style of the range to match the
+                              #   style of the preceding text (or the default text styles if the preceding
+                              #   text is another link) unless different styles are being set in the same
+                              #   request.
+                            "url": "A String", # If set, indicates this is a link to the external web page at this URL.
+                            "pageObjectId": "A String", # If set, indicates this is a link to the specific page in this
+                                # presentation with this ID. A page with this ID may not exist.
+                            "slideIndex": 42, # If set, indicates this is a link to the slide at this zero-based index
+                                # in the presentation. There may not be a slide at this index.
+                            "relativeLink": "A String", # If set, indicates this is a link to a slide in this presentation,
+                                # addressed by its position.
+                          },
+                          "italic": True or False, # Whether or not the text is italicized.
+                          "fontSize": { # A magnitude in a single direction in the specified units. # The size of the text's font. When read, the `font_size` will specified in
+                              # points.
+                            "magnitude": 3.14, # The magnitude.
+                            "unit": "A String", # The units for magnitude.
+                          },
+                          "underline": True or False, # Whether or not the text is underlined.
+                          "backgroundColor": { # A color that can either be fully opaque or fully transparent. # The background color of the text. If set, the color is either opaque or
+                              # transparent, depending on if the `opaque_color` field in it is set.
+                            "opaqueColor": { # A themeable solid color value. # If set, this will be used as an opaque color. If unset, this represents
+                                # a transparent color.
+                              "themeColor": "A String", # An opaque theme color.
+                              "rgbColor": { # An RGB color. # An opaque RGB color.
+                                "blue": 3.14, # The blue component of the color, from 0.0 to 1.0.
+                                "green": 3.14, # The green component of the color, from 0.0 to 1.0.
+                                "red": 3.14, # The red component of the color, from 0.0 to 1.0.
+                              },
+                            },
+                          },
+                        },
+                      },
+                    },
+                  ],
+                  "lists": { # The bulleted lists contained in this text, keyed by list ID.
+                    "a_key": { # A List describes the look and feel of bullets belonging to paragraphs
+                        # associated with a list. A paragraph that is part of a list has an implicit
+                        # reference to that list's ID.
+                      "nestingLevel": { # A map of nesting levels to the properties of bullets at the associated
+                          # level. A list has at most nine levels of nesting, so the possible values
+                          # for the keys of this map are 0 through 8, inclusive.
+                        "a_key": { # Contains properties describing the look and feel of a list bullet at a given
+                            # level of nesting.
+                          "bulletStyle": { # Represents the styling that can be applied to a TextRun. # The style of a bullet at this level of nesting.
+                              #
+                              # If this text is contained in a shape with a parent placeholder, then these text styles may be
+                              # inherited from the parent. Which text styles are inherited depend on the
+                              # nesting level of lists:
+                              #
+                              # * A text run in a paragraph that is not in a list will inherit its text style
+                              #   from the the newline character in the paragraph at the 0 nesting level of
+                              #   the list inside the parent placeholder.
+                              # * A text run in a paragraph that is in a list will inherit its text style
+                              #   from the newline character in the paragraph at its corresponding nesting
+                              #   level of the list inside the parent placeholder.
+                              #
+                              # Inherited text styles are represented as unset fields in this message. If
+                              # text is contained in a shape without a parent placeholder, unsetting these
+                              # fields will revert the style to a value matching the defaults in the Slides
+                              # editor.
+                            "foregroundColor": { # A color that can either be fully opaque or fully transparent. # The color of the text itself. If set, the color is either opaque or
+                                # transparent, depending on if the `opaque_color` field in it is set.
+                              "opaqueColor": { # A themeable solid color value. # If set, this will be used as an opaque color. If unset, this represents
+                                  # a transparent color.
+                                "themeColor": "A String", # An opaque theme color.
+                                "rgbColor": { # An RGB color. # An opaque RGB color.
+                                  "blue": 3.14, # The blue component of the color, from 0.0 to 1.0.
+                                  "green": 3.14, # The green component of the color, from 0.0 to 1.0.
+                                  "red": 3.14, # The red component of the color, from 0.0 to 1.0.
+                                },
+                              },
+                            },
+                            "bold": True or False, # Whether or not the text is bold.
+                            "baselineOffset": "A String", # The text's vertical offset from its normal position.
+                                #
+                                # Text with `SUPERSCRIPT` or `SUBSCRIPT` baseline offsets is automatically
+                                # rendered in a smaller font size, computed based on the `font_size` field.
+                                # The `font_size` itself is not affected by changes in this field.
+                            "strikethrough": True or False, # Whether or not the text is struck through.
+                            "smallCaps": True or False, # Whether or not the text is in small capital letters.
+                            "fontFamily": "A String", # The font family of the text.
+                                #
+                                # The font family can be any font from the Font menu in Slides or from
+                                # [Google Fonts] (https://fonts.google.com/). If the font name is
+                                # unrecognized, the text is rendered in `Arial`.
+                                #
+                                # Some fonts can affect the weight of the text. If an update request
+                                # specifies values for both `font_family` and `bold`, the explicitly-set
+                                # `bold` value is used.
+                            "link": { # A hypertext link. # The hyperlink destination of the text. If unset, there is no link. Links
+                                # are not inherited from parent text.
+                                #
+                                # Changing the link in an update request causes some other changes to the
+                                # text style of the range:
+                                #
+                                # * When setting a link, the text foreground color will be set to
+                                #   ThemeColorType.HYPERLINK and the text will
+                                #   be underlined. If these fields are modified in the same
+                                #   request, those values will be used instead of the link defaults.
+                                # * Setting a link on a text range that overlaps with an existing link will
+                                #   also update the existing link to point to the new URL.
+                                # * Links are not settable on newline characters. As a result, setting a link
+                                #   on a text range that crosses a paragraph boundary, such as `"ABC\n123"`,
+                                #   will separate the newline character(s) into their own text runs. The
+                                #   link will be applied separately to the runs before and after the newline.
+                                # * Removing a link will update the text style of the range to match the
+                                #   style of the preceding text (or the default text styles if the preceding
+                                #   text is another link) unless different styles are being set in the same
+                                #   request.
+                              "url": "A String", # If set, indicates this is a link to the external web page at this URL.
+                              "pageObjectId": "A String", # If set, indicates this is a link to the specific page in this
+                                  # presentation with this ID. A page with this ID may not exist.
+                              "slideIndex": 42, # If set, indicates this is a link to the slide at this zero-based index
+                                  # in the presentation. There may not be a slide at this index.
+                              "relativeLink": "A String", # If set, indicates this is a link to a slide in this presentation,
+                                  # addressed by its position.
+                            },
+                            "italic": True or False, # Whether or not the text is italicized.
+                            "fontSize": { # A magnitude in a single direction in the specified units. # The size of the text's font. When read, the `font_size` will specified in
+                                # points.
+                              "magnitude": 3.14, # The magnitude.
+                              "unit": "A String", # The units for magnitude.
+                            },
+                            "underline": True or False, # Whether or not the text is underlined.
+                            "backgroundColor": { # A color that can either be fully opaque or fully transparent. # The background color of the text. If set, the color is either opaque or
+                                # transparent, depending on if the `opaque_color` field in it is set.
+                              "opaqueColor": { # A themeable solid color value. # If set, this will be used as an opaque color. If unset, this represents
+                                  # a transparent color.
+                                "themeColor": "A String", # An opaque theme color.
+                                "rgbColor": { # An RGB color. # An opaque RGB color.
+                                  "blue": 3.14, # The blue component of the color, from 0.0 to 1.0.
+                                  "green": 3.14, # The green component of the color, from 0.0 to 1.0.
+                                  "red": 3.14, # The red component of the color, from 0.0 to 1.0.
+                                },
+                              },
+                            },
+                          },
+                        },
+                      },
+                      "listId": "A String", # The ID of the list.
+                    },
+                  },
+                },
+                "shapeProperties": { # The properties of a Shape. # The properties of the shape.
+                    #
+                    # If the shape is a placeholder shape as determined by the
+                    # placeholder field, then these
+                    # properties may be inherited from a parent placeholder shape.
+                    # Determining the rendered value of the property depends on the corresponding
+                    # property_state field value.
+                  "shadow": { # The shadow properties of a page element. # The shadow properties of the shape. If unset, the shadow is inherited from
+                      # a parent placeholder if it exists. If the shape has no parent, then the
+                      # default shadow matches the defaults for new shapes created in the Slides
+                      # editor. This property is read-only.
+                      #
+                      # If these fields are unset, they may be inherited from a parent placeholder
+                      # if it exists. If there is no parent, the fields will default to the value
+                      # used for new page elements created in the Slides editor, which may depend on
+                      # the page element kind.
+                    "color": { # A themeable solid color value. # The shadow color value.
+                      "themeColor": "A String", # An opaque theme color.
+                      "rgbColor": { # An RGB color. # An opaque RGB color.
+                        "blue": 3.14, # The blue component of the color, from 0.0 to 1.0.
+                        "green": 3.14, # The green component of the color, from 0.0 to 1.0.
+                        "red": 3.14, # The red component of the color, from 0.0 to 1.0.
+                      },
+                    },
+                    "transform": { # AffineTransform uses a 3x3 matrix with an implied last row of [ 0 0 1 ] # Transform that encodes the translate, scale, and skew of the shadow,
+                        # relative to the alignment position.
+                        # to transform source coordinates (x,y) into destination coordinates (x', y')
+                        # according to:
+                        #
+                        #       x'  x  =   shear_y  scale_y  translate_y
+                        #       1  [ 1 ]
+                        #
+                        # After transformation,
+                        #
+                        #      x' = scale_x * x + shear_x * y + translate_x;
+                        #      y' = scale_y * y + shear_y * x + translate_y;
+                        #
+                        # This message is therefore composed of these six matrix elements.
+                      "translateX": 3.14, # The X coordinate translation element.
+                      "translateY": 3.14, # The Y coordinate translation element.
+                      "scaleX": 3.14, # The X coordinate scaling element.
+                      "scaleY": 3.14, # The Y coordinate scaling element.
+                      "shearY": 3.14, # The Y coordinate shearing element.
+                      "shearX": 3.14, # The X coordinate shearing element.
+                      "unit": "A String", # The units for translate elements.
+                    },
+                    "propertyState": "A String", # The shadow property state.
+                        #
+                        # Updating the the shadow on a page element will implicitly update this field
+                        # to `RENDERED`, unless another value is specified in the same request. To
+                        # have no shadow on a page element, set this field to `NOT_RENDERED`. In this
+                        # case, any other shadow fields set in the same request will be ignored.
+                    "blurRadius": { # A magnitude in a single direction in the specified units. # The radius of the shadow blur. The larger the radius, the more diffuse the
+                        # shadow becomes.
+                      "magnitude": 3.14, # The magnitude.
+                      "unit": "A String", # The units for magnitude.
+                    },
+                    "alpha": 3.14, # The alpha of the shadow's color, from 0.0 to 1.0.
+                    "type": "A String", # The type of the shadow.
+                    "alignment": "A String", # The alignment point of the shadow, that sets the origin for translate,
+                        # scale and skew of the shadow.
+                    "rotateWithShape": True or False, # Whether the shadow should rotate with the shape.
+                  },
+                  "shapeBackgroundFill": { # The shape background fill. # The background fill of the shape. If unset, the background fill is
+                      # inherited from a parent placeholder if it exists. If the shape has no
+                      # parent, then the default background fill depends on the shape type,
+                      # matching the defaults for new shapes created in the Slides editor.
+                    "solidFill": { # A solid color fill. The page or page element is filled entirely with the # Solid color fill.
+                        # specified color value.
+                        #
+                        # If any field is unset, its value may be inherited from a parent placeholder
+                        # if it exists.
+                      "color": { # A themeable solid color value. # The color value of the solid fill.
+                        "themeColor": "A String", # An opaque theme color.
+                        "rgbColor": { # An RGB color. # An opaque RGB color.
+                          "blue": 3.14, # The blue component of the color, from 0.0 to 1.0.
+                          "green": 3.14, # The green component of the color, from 0.0 to 1.0.
+                          "red": 3.14, # The red component of the color, from 0.0 to 1.0.
+                        },
+                      },
+                      "alpha": 3.14, # The fraction of this `color` that should be applied to the pixel.
+                          # That is, the final pixel color is defined by the equation:
+                          #
+                          #   pixel color = alpha * (color) + (1.0 - alpha) * (background color)
+                          #
+                          # This means that a value of 1.0 corresponds to a solid color, whereas
+                          # a value of 0.0 corresponds to a completely transparent color.
+                    },
+                    "propertyState": "A String", # The background fill property state.
+                        #
+                        # Updating the the fill on a shape will implicitly update this field to
+                        # `RENDERED`, unless another value is specified in the same request. To
+                        # have no fill on a shape, set this field to `NOT_RENDERED`. In this case,
+                        # any other fill fields set in the same request will be ignored.
+                  },
+                  "link": { # A hypertext link. # The hyperlink destination of the shape. If unset, there is no link. Links
+                      # are not inherited from parent placeholders.
+                    "url": "A String", # If set, indicates this is a link to the external web page at this URL.
+                    "pageObjectId": "A String", # If set, indicates this is a link to the specific page in this
+                        # presentation with this ID. A page with this ID may not exist.
+                    "slideIndex": 42, # If set, indicates this is a link to the slide at this zero-based index
+                        # in the presentation. There may not be a slide at this index.
+                    "relativeLink": "A String", # If set, indicates this is a link to a slide in this presentation,
+                        # addressed by its position.
+                  },
+                  "outline": { # The outline of a PageElement. # The outline of the shape. If unset, the outline is inherited from a
+                      # parent placeholder if it exists. If the shape has no parent, then the
+                      # default outline depends on the shape type, matching the defaults for
+                      # new shapes created in the Slides editor.
+                      #
+                      # If these fields are unset, they may be inherited from a parent placeholder
+                      # if it exists. If there is no parent, the fields will default to the value
+                      # used for new page elements created in the Slides editor, which may depend on
+                      # the page element kind.
+                    "dashStyle": "A String", # The dash style of the outline.
+                    "propertyState": "A String", # The outline property state.
+                        #
+                        # Updating the the outline on a page element will implicitly update this
+                        # field to`RENDERED`, unless another value is specified in the same request.
+                        # To have no outline on a page element, set this field to `NOT_RENDERED`. In
+                        # this case, any other outline fields set in the same request will be
+                        # ignored.
+                    "outlineFill": { # The fill of the outline. # The fill of the outline.
+                      "solidFill": { # A solid color fill. The page or page element is filled entirely with the # Solid color fill.
+                          # specified color value.
+                          #
+                          # If any field is unset, its value may be inherited from a parent placeholder
+                          # if it exists.
+                        "color": { # A themeable solid color value. # The color value of the solid fill.
+                          "themeColor": "A String", # An opaque theme color.
+                          "rgbColor": { # An RGB color. # An opaque RGB color.
+                            "blue": 3.14, # The blue component of the color, from 0.0 to 1.0.
+                            "green": 3.14, # The green component of the color, from 0.0 to 1.0.
+                            "red": 3.14, # The red component of the color, from 0.0 to 1.0.
+                          },
+                        },
+                        "alpha": 3.14, # The fraction of this `color` that should be applied to the pixel.
+                            # That is, the final pixel color is defined by the equation:
+                            #
+                            #   pixel color = alpha * (color) + (1.0 - alpha) * (background color)
+                            #
+                            # This means that a value of 1.0 corresponds to a solid color, whereas
+                            # a value of 0.0 corresponds to a completely transparent color.
+                      },
+                    },
+                    "weight": { # A magnitude in a single direction in the specified units. # The thickness of the outline.
+                      "magnitude": 3.14, # The magnitude.
+                      "unit": "A String", # The units for magnitude.
+                    },
+                  },
+                },
+                "placeholder": { # The placeholder information that uniquely identifies a placeholder shape. # Placeholders are shapes that are inherit from corresponding placeholders on
+                    # layouts and masters.
+                    #
+                    # If set, the shape is a placeholder shape and any inherited properties
+                    # can be resolved by looking at the parent placeholder identified by the
+                    # Placeholder.parent_object_id field.
+                  "parentObjectId": "A String", # The object ID of this shape's parent placeholder.
+                      # If unset, the parent placeholder shape does not exist, so the shape does
+                      # not inherit properties from any other shape.
+                  "index": 42, # The index of the placeholder. If the same placeholder types are the present
+                      # in the same page, they would have different index values.
+                  "type": "A String", # The type of the placeholder.
+                },
+                "shapeType": "A String", # The type of the shape.
+              },
+              "sheetsChart": { # A PageElement kind representing # A linked chart embedded from Google Sheets. Unlinked charts are
+                  # represented as images.
+                  # a linked chart embedded from Google Sheets.
+                "chartId": 42, # The ID of the specific chart in the Google Sheets spreadsheet that is
+                    # embedded.
+                "spreadsheetId": "A String", # The ID of the Google Sheets spreadsheet that contains the source chart.
+                "sheetsChartProperties": { # The properties of the SheetsChart. # The properties of the Sheets chart.
+                  "chartImageProperties": { # The properties of the Image. # The properties of the embedded chart image.
+                    "outline": { # The outline of a PageElement. # The outline of the image. If not set, the the image has no outline.
+                        #
+                        # If these fields are unset, they may be inherited from a parent placeholder
+                        # if it exists. If there is no parent, the fields will default to the value
+                        # used for new page elements created in the Slides editor, which may depend on
+                        # the page element kind.
+                      "dashStyle": "A String", # The dash style of the outline.
+                      "propertyState": "A String", # The outline property state.
+                          #
+                          # Updating the the outline on a page element will implicitly update this
+                          # field to`RENDERED`, unless another value is specified in the same request.
+                          # To have no outline on a page element, set this field to `NOT_RENDERED`. In
+                          # this case, any other outline fields set in the same request will be
+                          # ignored.
+                      "outlineFill": { # The fill of the outline. # The fill of the outline.
+                        "solidFill": { # A solid color fill. The page or page element is filled entirely with the # Solid color fill.
+                            # specified color value.
+                            #
+                            # If any field is unset, its value may be inherited from a parent placeholder
+                            # if it exists.
+                          "color": { # A themeable solid color value. # The color value of the solid fill.
+                            "themeColor": "A String", # An opaque theme color.
+                            "rgbColor": { # An RGB color. # An opaque RGB color.
+                              "blue": 3.14, # The blue component of the color, from 0.0 to 1.0.
+                              "green": 3.14, # The green component of the color, from 0.0 to 1.0.
+                              "red": 3.14, # The red component of the color, from 0.0 to 1.0.
+                            },
+                          },
+                          "alpha": 3.14, # The fraction of this `color` that should be applied to the pixel.
+                              # That is, the final pixel color is defined by the equation:
+                              #
+                              #   pixel color = alpha * (color) + (1.0 - alpha) * (background color)
+                              #
+                              # This means that a value of 1.0 corresponds to a solid color, whereas
+                              # a value of 0.0 corresponds to a completely transparent color.
+                        },
+                      },
+                      "weight": { # A magnitude in a single direction in the specified units. # The thickness of the outline.
+                        "magnitude": 3.14, # The magnitude.
+                        "unit": "A String", # The units for magnitude.
+                      },
+                    },
+                    "brightness": 3.14, # The brightness effect of the image. The value should be in the interval
+                        # [-1.0, 1.0], where 0 means no effect. This property is read-only.
+                    "recolor": { # A recolor effect applied on an image. # The recolor effect of the image. If not set, the image is not recolored.
+                        # This property is read-only.
+                      "recolorStops": [ # The recolor effect is represented by a gradient, which is a list of color
+                          # stops. This property is read-only.
+                        { # A color and position in a gradient band.
+                          "color": { # A themeable solid color value. # The color of the gradient stop.
+                            "themeColor": "A String", # An opaque theme color.
+                            "rgbColor": { # An RGB color. # An opaque RGB color.
+                              "blue": 3.14, # The blue component of the color, from 0.0 to 1.0.
+                              "green": 3.14, # The green component of the color, from 0.0 to 1.0.
+                              "red": 3.14, # The red component of the color, from 0.0 to 1.0.
+                            },
+                          },
+                          "position": 3.14, # The relative position of the color stop in the gradient band measured
+                              # in percentage. The value should be in the interval [0.0, 1.0].
+                          "alpha": 3.14, # The alpha value of this color in the gradient band. Defaults to 1.0,
+                              # fully opaque.
+                        },
+                      ],
+                    },
+                    "link": { # A hypertext link. # The hyperlink destination of the image. If unset, there is no link.
+                      "url": "A String", # If set, indicates this is a link to the external web page at this URL.
+                      "pageObjectId": "A String", # If set, indicates this is a link to the specific page in this
+                          # presentation with this ID. A page with this ID may not exist.
+                      "slideIndex": 42, # If set, indicates this is a link to the slide at this zero-based index
+                          # in the presentation. There may not be a slide at this index.
+                      "relativeLink": "A String", # If set, indicates this is a link to a slide in this presentation,
+                          # addressed by its position.
+                    },
+                    "transparency": 3.14, # The transparency effect of the image. The value should be in the interval
+                        # [0.0, 1.0], where 0 means no effect and 1 means completely transparent.
+                        # This property is read-only.
+                    "cropProperties": { # The crop properties of an object enclosed in a container. For example, an # The crop properties of the image. If not set, the image is not cropped.
+                        # This property is read-only.
+                        # Image.
+                        #
+                        # The crop properties is represented by the offsets of four edges which define
+                        # a crop rectangle. The offsets are measured in percentage from the
+                        # corresponding edges of the object's original bounding rectangle towards
+                        # inside, relative to the object's original dimensions.
+                        #
+                        # - If the offset is in the interval (0, 1), the corresponding edge of crop
+                        # rectangle is positioned inside of the object's original bounding rectangle.
+                        # - If the offset is negative or greater than 1, the corresponding edge of crop
+                        # rectangle is positioned outside of the object's original bounding rectangle.
+                        # - If the left edge of the crop rectangle is on the right side of its right
+                        # edge, the object will be flipped horizontally.
+                        # - If the top edge of the crop rectangle is below its bottom edge, the object
+                        # will be flipped vertically.
+                        # - If all offsets and rotation angle is 0, the object is not cropped.
+                        #
+                        # After cropping, the content in the crop rectangle will be stretched to fit
+                        # its container.
+                      "leftOffset": 3.14, # The offset specifies the left edge of the crop rectangle that is located to
+                          # the right of the original bounding rectangle left edge, relative to the
+                          # object's original width.
+                      "angle": 3.14, # The rotation angle of the crop window around its center, in radians.
+                          # Rotation angle is applied after the offset.
+                      "bottomOffset": 3.14, # The offset specifies the bottom edge of the crop rectangle that is located
+                          # above the original bounding rectangle bottom edge, relative to the object's
+                          # original height.
+                      "rightOffset": 3.14, # The offset specifies the right edge of the crop rectangle that is located
+                          # to the left of the original bounding rectangle right edge, relative to the
+                          # object's original width.
+                      "topOffset": 3.14, # The offset specifies the top edge of the crop rectangle that is located
+                          # below the original bounding rectangle top edge, relative to the object's
+                          # original height.
+                    },
+                    "shadow": { # The shadow properties of a page element. # The shadow of the image. If not set, the image has no shadow. This property
+                        # is read-only.
+                        #
+                        # If these fields are unset, they may be inherited from a parent placeholder
+                        # if it exists. If there is no parent, the fields will default to the value
+                        # used for new page elements created in the Slides editor, which may depend on
+                        # the page element kind.
+                      "color": { # A themeable solid color value. # The shadow color value.
+                        "themeColor": "A String", # An opaque theme color.
+                        "rgbColor": { # An RGB color. # An opaque RGB color.
+                          "blue": 3.14, # The blue component of the color, from 0.0 to 1.0.
+                          "green": 3.14, # The green component of the color, from 0.0 to 1.0.
+                          "red": 3.14, # The red component of the color, from 0.0 to 1.0.
+                        },
+                      },
+                      "transform": { # AffineTransform uses a 3x3 matrix with an implied last row of [ 0 0 1 ] # Transform that encodes the translate, scale, and skew of the shadow,
+                          # relative to the alignment position.
+                          # to transform source coordinates (x,y) into destination coordinates (x', y')
+                          # according to:
+                          #
+                          #       x'  x  =   shear_y  scale_y  translate_y
+                          #       1  [ 1 ]
+                          #
+                          # After transformation,
+                          #
+                          #      x' = scale_x * x + shear_x * y + translate_x;
+                          #      y' = scale_y * y + shear_y * x + translate_y;
+                          #
+                          # This message is therefore composed of these six matrix elements.
+                        "translateX": 3.14, # The X coordinate translation element.
+                        "translateY": 3.14, # The Y coordinate translation element.
+                        "scaleX": 3.14, # The X coordinate scaling element.
+                        "scaleY": 3.14, # The Y coordinate scaling element.
+                        "shearY": 3.14, # The Y coordinate shearing element.
+                        "shearX": 3.14, # The X coordinate shearing element.
+                        "unit": "A String", # The units for translate elements.
+                      },
+                      "propertyState": "A String", # The shadow property state.
+                          #
+                          # Updating the the shadow on a page element will implicitly update this field
+                          # to `RENDERED`, unless another value is specified in the same request. To
+                          # have no shadow on a page element, set this field to `NOT_RENDERED`. In this
+                          # case, any other shadow fields set in the same request will be ignored.
+                      "blurRadius": { # A magnitude in a single direction in the specified units. # The radius of the shadow blur. The larger the radius, the more diffuse the
+                          # shadow becomes.
+                        "magnitude": 3.14, # The magnitude.
+                        "unit": "A String", # The units for magnitude.
+                      },
+                      "alpha": 3.14, # The alpha of the shadow's color, from 0.0 to 1.0.
+                      "type": "A String", # The type of the shadow.
+                      "alignment": "A String", # The alignment point of the shadow, that sets the origin for translate,
+                          # scale and skew of the shadow.
+                      "rotateWithShape": True or False, # Whether the shadow should rotate with the shape.
+                    },
+                    "contrast": 3.14, # The contrast effect of the image. The value should be in the interval
+                        # [-1.0, 1.0], where 0 means no effect. This property is read-only.
+                  },
+                },
+                "contentUrl": "A String", # The URL of an image of the embedded chart, with a default lifetime of 30
+                    # minutes. This URL is tagged with the account of the requester. Anyone with
+                    # the URL effectively accesses the image as the original requester. Access to
+                    # the image may be lost if the presentation's sharing settings change.
+              },
+              "video": { # A PageElement kind representing a # A video page element.
+                  # video.
+                "url": "A String", # An URL to a video. The URL is valid as long as the source video
+                    # exists and sharing settings do not change.
+                "videoProperties": { # The properties of the Video. # The properties of the video.
+                  "outline": { # The outline of a PageElement. # The outline of the video. The default outline matches the defaults for new
+                      # videos created in the Slides editor.
+                      #
+                      # If these fields are unset, they may be inherited from a parent placeholder
+                      # if it exists. If there is no parent, the fields will default to the value
+                      # used for new page elements created in the Slides editor, which may depend on
+                      # the page element kind.
+                    "dashStyle": "A String", # The dash style of the outline.
+                    "propertyState": "A String", # The outline property state.
+                        #
+                        # Updating the the outline on a page element will implicitly update this
+                        # field to`RENDERED`, unless another value is specified in the same request.
+                        # To have no outline on a page element, set this field to `NOT_RENDERED`. In
+                        # this case, any other outline fields set in the same request will be
+                        # ignored.
+                    "outlineFill": { # The fill of the outline. # The fill of the outline.
+                      "solidFill": { # A solid color fill. The page or page element is filled entirely with the # Solid color fill.
+                          # specified color value.
+                          #
+                          # If any field is unset, its value may be inherited from a parent placeholder
+                          # if it exists.
+                        "color": { # A themeable solid color value. # The color value of the solid fill.
+                          "themeColor": "A String", # An opaque theme color.
+                          "rgbColor": { # An RGB color. # An opaque RGB color.
+                            "blue": 3.14, # The blue component of the color, from 0.0 to 1.0.
+                            "green": 3.14, # The green component of the color, from 0.0 to 1.0.
+                            "red": 3.14, # The red component of the color, from 0.0 to 1.0.
+                          },
+                        },
+                        "alpha": 3.14, # The fraction of this `color` that should be applied to the pixel.
+                            # That is, the final pixel color is defined by the equation:
+                            #
+                            #   pixel color = alpha * (color) + (1.0 - alpha) * (background color)
+                            #
+                            # This means that a value of 1.0 corresponds to a solid color, whereas
+                            # a value of 0.0 corresponds to a completely transparent color.
+                      },
+                    },
+                    "weight": { # A magnitude in a single direction in the specified units. # The thickness of the outline.
+                      "magnitude": 3.14, # The magnitude.
+                      "unit": "A String", # The units for magnitude.
+                    },
+                  },
+                },
+                "id": "A String", # The video source's unique identifier for this video.
+                "source": "A String", # The video source.
+              },
+              "table": { # A PageElement kind representing a # A table page element.
+                  # table.
+                "tableColumns": [ # Properties of each column.
+                  { # Properties of each column in a table.
+                    "columnWidth": { # A magnitude in a single direction in the specified units. # Width of a column.
+                      "magnitude": 3.14, # The magnitude.
+                      "unit": "A String", # The units for magnitude.
+                    },
+                  },
+                ],
+                "tableRows": [ # Properties and contents of each row.
+                    #
+                    # Cells that span multiple rows are contained in only one of these rows and
+                    # have a row_span greater
+                    # than 1.
+                  { # Properties and contents of each row in a table.
+                    "tableCells": [ # Properties and contents of each cell.
+                        #
+                        # Cells that span multiple columns are represented only once with a
+                        # column_span greater
+                        # than 1. As a result, the length of this collection does not always match
+                        # the number of columns of the entire table.
+                      { # Properties and contents of each table cell.
+                        "text": { # The general text content. The text must reside in a compatible shape (e.g. # The text content of the cell.
+                            # text box or rectangle) or a table cell in a page.
+                          "textElements": [ # The text contents broken down into its component parts, including styling
+                              # information. This property is read-only.
+                            { # A TextElement describes the content of a range of indices in the text content
+                                # of a Shape or TableCell.
+                              "autoText": { # A TextElement kind that represents auto text. # A TextElement representing a spot in the text that is dynamically
+                                  # replaced with content that can change over time.
+                                "content": "A String", # The rendered content of this auto text, if available.
+                                "style": { # Represents the styling that can be applied to a TextRun. # The styling applied to this auto text.
+                                    #
+                                    # If this text is contained in a shape with a parent placeholder, then these text styles may be
+                                    # inherited from the parent. Which text styles are inherited depend on the
+                                    # nesting level of lists:
+                                    #
+                                    # * A text run in a paragraph that is not in a list will inherit its text style
+                                    #   from the the newline character in the paragraph at the 0 nesting level of
+                                    #   the list inside the parent placeholder.
+                                    # * A text run in a paragraph that is in a list will inherit its text style
+                                    #   from the newline character in the paragraph at its corresponding nesting
+                                    #   level of the list inside the parent placeholder.
+                                    #
+                                    # Inherited text styles are represented as unset fields in this message. If
+                                    # text is contained in a shape without a parent placeholder, unsetting these
+                                    # fields will revert the style to a value matching the defaults in the Slides
+                                    # editor.
+                                  "foregroundColor": { # A color that can either be fully opaque or fully transparent. # The color of the text itself. If set, the color is either opaque or
+                                      # transparent, depending on if the `opaque_color` field in it is set.
+                                    "opaqueColor": { # A themeable solid color value. # If set, this will be used as an opaque color. If unset, this represents
+                                        # a transparent color.
+                                      "themeColor": "A String", # An opaque theme color.
+                                      "rgbColor": { # An RGB color. # An opaque RGB color.
+                                        "blue": 3.14, # The blue component of the color, from 0.0 to 1.0.
+                                        "green": 3.14, # The green component of the color, from 0.0 to 1.0.
+                                        "red": 3.14, # The red component of the color, from 0.0 to 1.0.
+                                      },
+                                    },
+                                  },
+                                  "bold": True or False, # Whether or not the text is bold.
+                                  "baselineOffset": "A String", # The text's vertical offset from its normal position.
+                                      #
+                                      # Text with `SUPERSCRIPT` or `SUBSCRIPT` baseline offsets is automatically
+                                      # rendered in a smaller font size, computed based on the `font_size` field.
+                                      # The `font_size` itself is not affected by changes in this field.
+                                  "strikethrough": True or False, # Whether or not the text is struck through.
+                                  "smallCaps": True or False, # Whether or not the text is in small capital letters.
+                                  "fontFamily": "A String", # The font family of the text.
+                                      #
+                                      # The font family can be any font from the Font menu in Slides or from
+                                      # [Google Fonts] (https://fonts.google.com/). If the font name is
+                                      # unrecognized, the text is rendered in `Arial`.
+                                      #
+                                      # Some fonts can affect the weight of the text. If an update request
+                                      # specifies values for both `font_family` and `bold`, the explicitly-set
+                                      # `bold` value is used.
+                                  "link": { # A hypertext link. # The hyperlink destination of the text. If unset, there is no link. Links
+                                      # are not inherited from parent text.
+                                      #
+                                      # Changing the link in an update request causes some other changes to the
+                                      # text style of the range:
+                                      #
+                                      # * When setting a link, the text foreground color will be set to
+                                      #   ThemeColorType.HYPERLINK and the text will
+                                      #   be underlined. If these fields are modified in the same
+                                      #   request, those values will be used instead of the link defaults.
+                                      # * Setting a link on a text range that overlaps with an existing link will
+                                      #   also update the existing link to point to the new URL.
+                                      # * Links are not settable on newline characters. As a result, setting a link
+                                      #   on a text range that crosses a paragraph boundary, such as `"ABC\n123"`,
+                                      #   will separate the newline character(s) into their own text runs. The
+                                      #   link will be applied separately to the runs before and after the newline.
+                                      # * Removing a link will update the text style of the range to match the
+                                      #   style of the preceding text (or the default text styles if the preceding
+                                      #   text is another link) unless different styles are being set in the same
+                                      #   request.
+                                    "url": "A String", # If set, indicates this is a link to the external web page at this URL.
+                                    "pageObjectId": "A String", # If set, indicates this is a link to the specific page in this
+                                        # presentation with this ID. A page with this ID may not exist.
+                                    "slideIndex": 42, # If set, indicates this is a link to the slide at this zero-based index
+                                        # in the presentation. There may not be a slide at this index.
+                                    "relativeLink": "A String", # If set, indicates this is a link to a slide in this presentation,
+                                        # addressed by its position.
+                                  },
+                                  "italic": True or False, # Whether or not the text is italicized.
+                                  "fontSize": { # A magnitude in a single direction in the specified units. # The size of the text's font. When read, the `font_size` will specified in
+                                      # points.
+                                    "magnitude": 3.14, # The magnitude.
+                                    "unit": "A String", # The units for magnitude.
+                                  },
+                                  "underline": True or False, # Whether or not the text is underlined.
+                                  "backgroundColor": { # A color that can either be fully opaque or fully transparent. # The background color of the text. If set, the color is either opaque or
+                                      # transparent, depending on if the `opaque_color` field in it is set.
+                                    "opaqueColor": { # A themeable solid color value. # If set, this will be used as an opaque color. If unset, this represents
+                                        # a transparent color.
+                                      "themeColor": "A String", # An opaque theme color.
+                                      "rgbColor": { # An RGB color. # An opaque RGB color.
+                                        "blue": 3.14, # The blue component of the color, from 0.0 to 1.0.
+                                        "green": 3.14, # The green component of the color, from 0.0 to 1.0.
+                                        "red": 3.14, # The red component of the color, from 0.0 to 1.0.
+                                      },
+                                    },
+                                  },
+                                },
+                                "type": "A String", # The type of this auto text.
+                              },
+                              "endIndex": 42, # The zero-based end index of this text element, exclusive, in Unicode code
+                                  # units.
+                              "startIndex": 42, # The zero-based start index of this text element, in Unicode code units.
+                              "paragraphMarker": { # A TextElement kind that represents the beginning of a new paragraph. # A marker representing the beginning of a new paragraph.
+                                  #
+                                  # The `start_index` and `end_index` of this TextElement represent the
+                                  # range of the paragraph. Other TextElements with an index range contained
+                                  # inside this paragraph's range are considered to be part of this
+                                  # paragraph. The range of indices of two separate paragraphs will never
+                                  # overlap.
+                                "style": { # Styles that apply to a whole paragraph. # The paragraph's style
+                                    #
+                                    # If this text is contained in a shape with a parent placeholder, then these paragraph styles may be
+                                    # inherited from the parent. Which paragraph styles are inherited depend on the
+                                    # nesting level of lists:
+                                    #
+                                    # * A paragraph not in a list will inherit its paragraph style from the
+                                    #   paragraph at the 0 nesting level of the list inside the parent placeholder.
+                                    # * A paragraph in a list will inherit its paragraph style from the paragraph
+                                    #   at its corresponding nesting level of the list inside the parent
+                                    #   placeholder.
+                                    #
+                                    # Inherited paragraph styles are represented as unset fields in this message.
+                                  "spacingMode": "A String", # The spacing mode for the paragraph. This property is read-only.
+                                  "direction": "A String", # The text direction of this paragraph. This property is read-only.
+                                  "spaceBelow": { # A magnitude in a single direction in the specified units. # The amount of extra space above the paragraph. If unset, the value is
+                                      # inherited from the parent. This property is read-only.
+                                    "magnitude": 3.14, # The magnitude.
+                                    "unit": "A String", # The units for magnitude.
+                                  },
+                                  "lineSpacing": 3.14, # The amount of space between lines, as a percentage of normal, where normal
+                                      # is represented as 100.0. If unset, the value is inherited from the parent.
+                                      # This property is read-only.
+                                  "indentStart": { # A magnitude in a single direction in the specified units. # The amount indentation for the paragraph on the side that corresponds to
+                                      # the start of the text, based on the current text direction. If unset, the
+                                      # value is inherited from the parent. This property is read-only.
+                                    "magnitude": 3.14, # The magnitude.
+                                    "unit": "A String", # The units for magnitude.
+                                  },
+                                  "spaceAbove": { # A magnitude in a single direction in the specified units. # The amount of extra space above the paragraph. If unset, the value is
+                                      # inherited from the parent. This property is read-only.
+                                    "magnitude": 3.14, # The magnitude.
+                                    "unit": "A String", # The units for magnitude.
+                                  },
+                                  "indentEnd": { # A magnitude in a single direction in the specified units. # The amount indentation for the paragraph on the side that corresponds to
+                                      # the end of the text, based on the current text direction. If unset, the
+                                      # value is inherited from the parent. This property is read-only.
+                                    "magnitude": 3.14, # The magnitude.
+                                    "unit": "A String", # The units for magnitude.
+                                  },
+                                  "indentFirstLine": { # A magnitude in a single direction in the specified units. # The amount of indentation for the start of the first line of the paragraph.
+                                      # If unset, the value is inherited from the parent. This property is
+                                      # read-only.
+                                    "magnitude": 3.14, # The magnitude.
+                                    "unit": "A String", # The units for magnitude.
+                                  },
+                                  "alignment": "A String", # The text alignment for this paragraph. This property is read-only.
+                                },
+                                "bullet": { # Describes the bullet of a paragraph. # The bullet for this paragraph. If not present, the paragraph does not
+                                    # belong to a list.
+                                  "nestingLevel": 42, # The nesting level of this paragraph in the list.
+                                  "listId": "A String", # The ID of the list this paragraph belongs to.
+                                  "bulletStyle": { # Represents the styling that can be applied to a TextRun. # The paragraph specific text style applied to this bullet.
+                                      #
+                                      # If this text is contained in a shape with a parent placeholder, then these text styles may be
+                                      # inherited from the parent. Which text styles are inherited depend on the
+                                      # nesting level of lists:
+                                      #
+                                      # * A text run in a paragraph that is not in a list will inherit its text style
+                                      #   from the the newline character in the paragraph at the 0 nesting level of
+                                      #   the list inside the parent placeholder.
+                                      # * A text run in a paragraph that is in a list will inherit its text style
+                                      #   from the newline character in the paragraph at its corresponding nesting
+                                      #   level of the list inside the parent placeholder.
+                                      #
+                                      # Inherited text styles are represented as unset fields in this message. If
+                                      # text is contained in a shape without a parent placeholder, unsetting these
+                                      # fields will revert the style to a value matching the defaults in the Slides
+                                      # editor.
+                                    "foregroundColor": { # A color that can either be fully opaque or fully transparent. # The color of the text itself. If set, the color is either opaque or
+                                        # transparent, depending on if the `opaque_color` field in it is set.
+                                      "opaqueColor": { # A themeable solid color value. # If set, this will be used as an opaque color. If unset, this represents
+                                          # a transparent color.
+                                        "themeColor": "A String", # An opaque theme color.
+                                        "rgbColor": { # An RGB color. # An opaque RGB color.
+                                          "blue": 3.14, # The blue component of the color, from 0.0 to 1.0.
+                                          "green": 3.14, # The green component of the color, from 0.0 to 1.0.
+                                          "red": 3.14, # The red component of the color, from 0.0 to 1.0.
+                                        },
+                                      },
+                                    },
+                                    "bold": True or False, # Whether or not the text is bold.
+                                    "baselineOffset": "A String", # The text's vertical offset from its normal position.
+                                        #
+                                        # Text with `SUPERSCRIPT` or `SUBSCRIPT` baseline offsets is automatically
+                                        # rendered in a smaller font size, computed based on the `font_size` field.
+                                        # The `font_size` itself is not affected by changes in this field.
+                                    "strikethrough": True or False, # Whether or not the text is struck through.
+                                    "smallCaps": True or False, # Whether or not the text is in small capital letters.
+                                    "fontFamily": "A String", # The font family of the text.
+                                        #
+                                        # The font family can be any font from the Font menu in Slides or from
+                                        # [Google Fonts] (https://fonts.google.com/). If the font name is
+                                        # unrecognized, the text is rendered in `Arial`.
+                                        #
+                                        # Some fonts can affect the weight of the text. If an update request
+                                        # specifies values for both `font_family` and `bold`, the explicitly-set
+                                        # `bold` value is used.
+                                    "link": { # A hypertext link. # The hyperlink destination of the text. If unset, there is no link. Links
+                                        # are not inherited from parent text.
+                                        #
+                                        # Changing the link in an update request causes some other changes to the
+                                        # text style of the range:
+                                        #
+                                        # * When setting a link, the text foreground color will be set to
+                                        #   ThemeColorType.HYPERLINK and the text will
+                                        #   be underlined. If these fields are modified in the same
+                                        #   request, those values will be used instead of the link defaults.
+                                        # * Setting a link on a text range that overlaps with an existing link will
+                                        #   also update the existing link to point to the new URL.
+                                        # * Links are not settable on newline characters. As a result, setting a link
+                                        #   on a text range that crosses a paragraph boundary, such as `"ABC\n123"`,
+                                        #   will separate the newline character(s) into their own text runs. The
+                                        #   link will be applied separately to the runs before and after the newline.
+                                        # * Removing a link will update the text style of the range to match the
+                                        #   style of the preceding text (or the default text styles if the preceding
+                                        #   text is another link) unless different styles are being set in the same
+                                        #   request.
+                                      "url": "A String", # If set, indicates this is a link to the external web page at this URL.
+                                      "pageObjectId": "A String", # If set, indicates this is a link to the specific page in this
+                                          # presentation with this ID. A page with this ID may not exist.
+                                      "slideIndex": 42, # If set, indicates this is a link to the slide at this zero-based index
+                                          # in the presentation. There may not be a slide at this index.
+                                      "relativeLink": "A String", # If set, indicates this is a link to a slide in this presentation,
+                                          # addressed by its position.
+                                    },
+                                    "italic": True or False, # Whether or not the text is italicized.
+                                    "fontSize": { # A magnitude in a single direction in the specified units. # The size of the text's font. When read, the `font_size` will specified in
+                                        # points.
+                                      "magnitude": 3.14, # The magnitude.
+                                      "unit": "A String", # The units for magnitude.
+                                    },
+                                    "underline": True or False, # Whether or not the text is underlined.
+                                    "backgroundColor": { # A color that can either be fully opaque or fully transparent. # The background color of the text. If set, the color is either opaque or
+                                        # transparent, depending on if the `opaque_color` field in it is set.
+                                      "opaqueColor": { # A themeable solid color value. # If set, this will be used as an opaque color. If unset, this represents
+                                          # a transparent color.
+                                        "themeColor": "A String", # An opaque theme color.
+                                        "rgbColor": { # An RGB color. # An opaque RGB color.
+                                          "blue": 3.14, # The blue component of the color, from 0.0 to 1.0.
+                                          "green": 3.14, # The green component of the color, from 0.0 to 1.0.
+                                          "red": 3.14, # The red component of the color, from 0.0 to 1.0.
+                                        },
+                                      },
+                                    },
+                                  },
+                                  "glyph": "A String", # The rendered bullet glyph for this paragraph.
+                                },
+                              },
+                              "textRun": { # A TextElement kind that represents a run of text that all has the same # A TextElement representing a run of text where all of the characters
+                                  # in the run have the same TextStyle.
+                                  #
+                                  # The `start_index` and `end_index` of TextRuns will always be fully
+                                  # contained in the index range of a single `paragraph_marker` TextElement.
+                                  # In other words, a TextRun will never span multiple paragraphs.
+                                  # styling.
+                                "content": "A String", # The text of this run.
+                                "style": { # Represents the styling that can be applied to a TextRun. # The styling applied to this run.
+                                    #
+                                    # If this text is contained in a shape with a parent placeholder, then these text styles may be
+                                    # inherited from the parent. Which text styles are inherited depend on the
+                                    # nesting level of lists:
+                                    #
+                                    # * A text run in a paragraph that is not in a list will inherit its text style
+                                    #   from the the newline character in the paragraph at the 0 nesting level of
+                                    #   the list inside the parent placeholder.
+                                    # * A text run in a paragraph that is in a list will inherit its text style
+                                    #   from the newline character in the paragraph at its corresponding nesting
+                                    #   level of the list inside the parent placeholder.
+                                    #
+                                    # Inherited text styles are represented as unset fields in this message. If
+                                    # text is contained in a shape without a parent placeholder, unsetting these
+                                    # fields will revert the style to a value matching the defaults in the Slides
+                                    # editor.
+                                  "foregroundColor": { # A color that can either be fully opaque or fully transparent. # The color of the text itself. If set, the color is either opaque or
+                                      # transparent, depending on if the `opaque_color` field in it is set.
+                                    "opaqueColor": { # A themeable solid color value. # If set, this will be used as an opaque color. If unset, this represents
+                                        # a transparent color.
+                                      "themeColor": "A String", # An opaque theme color.
+                                      "rgbColor": { # An RGB color. # An opaque RGB color.
+                                        "blue": 3.14, # The blue component of the color, from 0.0 to 1.0.
+                                        "green": 3.14, # The green component of the color, from 0.0 to 1.0.
+                                        "red": 3.14, # The red component of the color, from 0.0 to 1.0.
+                                      },
+                                    },
+                                  },
+                                  "bold": True or False, # Whether or not the text is bold.
+                                  "baselineOffset": "A String", # The text's vertical offset from its normal position.
+                                      #
+                                      # Text with `SUPERSCRIPT` or `SUBSCRIPT` baseline offsets is automatically
+                                      # rendered in a smaller font size, computed based on the `font_size` field.
+                                      # The `font_size` itself is not affected by changes in this field.
+                                  "strikethrough": True or False, # Whether or not the text is struck through.
+                                  "smallCaps": True or False, # Whether or not the text is in small capital letters.
+                                  "fontFamily": "A String", # The font family of the text.
+                                      #
+                                      # The font family can be any font from the Font menu in Slides or from
+                                      # [Google Fonts] (https://fonts.google.com/). If the font name is
+                                      # unrecognized, the text is rendered in `Arial`.
+                                      #
+                                      # Some fonts can affect the weight of the text. If an update request
+                                      # specifies values for both `font_family` and `bold`, the explicitly-set
+                                      # `bold` value is used.
+                                  "link": { # A hypertext link. # The hyperlink destination of the text. If unset, there is no link. Links
+                                      # are not inherited from parent text.
+                                      #
+                                      # Changing the link in an update request causes some other changes to the
+                                      # text style of the range:
+                                      #
+                                      # * When setting a link, the text foreground color will be set to
+                                      #   ThemeColorType.HYPERLINK and the text will
+                                      #   be underlined. If these fields are modified in the same
+                                      #   request, those values will be used instead of the link defaults.
+                                      # * Setting a link on a text range that overlaps with an existing link will
+                                      #   also update the existing link to point to the new URL.
+                                      # * Links are not settable on newline characters. As a result, setting a link
+                                      #   on a text range that crosses a paragraph boundary, such as `"ABC\n123"`,
+                                      #   will separate the newline character(s) into their own text runs. The
+                                      #   link will be applied separately to the runs before and after the newline.
+                                      # * Removing a link will update the text style of the range to match the
+                                      #   style of the preceding text (or the default text styles if the preceding
+                                      #   text is another link) unless different styles are being set in the same
+                                      #   request.
+                                    "url": "A String", # If set, indicates this is a link to the external web page at this URL.
+                                    "pageObjectId": "A String", # If set, indicates this is a link to the specific page in this
+                                        # presentation with this ID. A page with this ID may not exist.
+                                    "slideIndex": 42, # If set, indicates this is a link to the slide at this zero-based index
+                                        # in the presentation. There may not be a slide at this index.
+                                    "relativeLink": "A String", # If set, indicates this is a link to a slide in this presentation,
+                                        # addressed by its position.
+                                  },
+                                  "italic": True or False, # Whether or not the text is italicized.
+                                  "fontSize": { # A magnitude in a single direction in the specified units. # The size of the text's font. When read, the `font_size` will specified in
+                                      # points.
+                                    "magnitude": 3.14, # The magnitude.
+                                    "unit": "A String", # The units for magnitude.
+                                  },
+                                  "underline": True or False, # Whether or not the text is underlined.
+                                  "backgroundColor": { # A color that can either be fully opaque or fully transparent. # The background color of the text. If set, the color is either opaque or
+                                      # transparent, depending on if the `opaque_color` field in it is set.
+                                    "opaqueColor": { # A themeable solid color value. # If set, this will be used as an opaque color. If unset, this represents
+                                        # a transparent color.
+                                      "themeColor": "A String", # An opaque theme color.
+                                      "rgbColor": { # An RGB color. # An opaque RGB color.
+                                        "blue": 3.14, # The blue component of the color, from 0.0 to 1.0.
+                                        "green": 3.14, # The green component of the color, from 0.0 to 1.0.
+                                        "red": 3.14, # The red component of the color, from 0.0 to 1.0.
+                                      },
+                                    },
+                                  },
+                                },
+                              },
+                            },
+                          ],
+                          "lists": { # The bulleted lists contained in this text, keyed by list ID.
+                            "a_key": { # A List describes the look and feel of bullets belonging to paragraphs
+                                # associated with a list. A paragraph that is part of a list has an implicit
+                                # reference to that list's ID.
+                              "nestingLevel": { # A map of nesting levels to the properties of bullets at the associated
+                                  # level. A list has at most nine levels of nesting, so the possible values
+                                  # for the keys of this map are 0 through 8, inclusive.
+                                "a_key": { # Contains properties describing the look and feel of a list bullet at a given
+                                    # level of nesting.
+                                  "bulletStyle": { # Represents the styling that can be applied to a TextRun. # The style of a bullet at this level of nesting.
+                                      #
+                                      # If this text is contained in a shape with a parent placeholder, then these text styles may be
+                                      # inherited from the parent. Which text styles are inherited depend on the
+                                      # nesting level of lists:
+                                      #
+                                      # * A text run in a paragraph that is not in a list will inherit its text style
+                                      #   from the the newline character in the paragraph at the 0 nesting level of
+                                      #   the list inside the parent placeholder.
+                                      # * A text run in a paragraph that is in a list will inherit its text style
+                                      #   from the newline character in the paragraph at its corresponding nesting
+                                      #   level of the list inside the parent placeholder.
+                                      #
+                                      # Inherited text styles are represented as unset fields in this message. If
+                                      # text is contained in a shape without a parent placeholder, unsetting these
+                                      # fields will revert the style to a value matching the defaults in the Slides
+                                      # editor.
+                                    "foregroundColor": { # A color that can either be fully opaque or fully transparent. # The color of the text itself. If set, the color is either opaque or
+                                        # transparent, depending on if the `opaque_color` field in it is set.
+                                      "opaqueColor": { # A themeable solid color value. # If set, this will be used as an opaque color. If unset, this represents
+                                          # a transparent color.
+                                        "themeColor": "A String", # An opaque theme color.
+                                        "rgbColor": { # An RGB color. # An opaque RGB color.
+                                          "blue": 3.14, # The blue component of the color, from 0.0 to 1.0.
+                                          "green": 3.14, # The green component of the color, from 0.0 to 1.0.
+                                          "red": 3.14, # The red component of the color, from 0.0 to 1.0.
+                                        },
+                                      },
+                                    },
+                                    "bold": True or False, # Whether or not the text is bold.
+                                    "baselineOffset": "A String", # The text's vertical offset from its normal position.
+                                        #
+                                        # Text with `SUPERSCRIPT` or `SUBSCRIPT` baseline offsets is automatically
+                                        # rendered in a smaller font size, computed based on the `font_size` field.
+                                        # The `font_size` itself is not affected by changes in this field.
+                                    "strikethrough": True or False, # Whether or not the text is struck through.
+                                    "smallCaps": True or False, # Whether or not the text is in small capital letters.
+                                    "fontFamily": "A String", # The font family of the text.
+                                        #
+                                        # The font family can be any font from the Font menu in Slides or from
+                                        # [Google Fonts] (https://fonts.google.com/). If the font name is
+                                        # unrecognized, the text is rendered in `Arial`.
+                                        #
+                                        # Some fonts can affect the weight of the text. If an update request
+                                        # specifies values for both `font_family` and `bold`, the explicitly-set
+                                        # `bold` value is used.
+                                    "link": { # A hypertext link. # The hyperlink destination of the text. If unset, there is no link. Links
+                                        # are not inherited from parent text.
+                                        #
+                                        # Changing the link in an update request causes some other changes to the
+                                        # text style of the range:
+                                        #
+                                        # * When setting a link, the text foreground color will be set to
+                                        #   ThemeColorType.HYPERLINK and the text will
+                                        #   be underlined. If these fields are modified in the same
+                                        #   request, those values will be used instead of the link defaults.
+                                        # * Setting a link on a text range that overlaps with an existing link will
+                                        #   also update the existing link to point to the new URL.
+                                        # * Links are not settable on newline characters. As a result, setting a link
+                                        #   on a text range that crosses a paragraph boundary, such as `"ABC\n123"`,
+                                        #   will separate the newline character(s) into their own text runs. The
+                                        #   link will be applied separately to the runs before and after the newline.
+                                        # * Removing a link will update the text style of the range to match the
+                                        #   style of the preceding text (or the default text styles if the preceding
+                                        #   text is another link) unless different styles are being set in the same
+                                        #   request.
+                                      "url": "A String", # If set, indicates this is a link to the external web page at this URL.
+                                      "pageObjectId": "A String", # If set, indicates this is a link to the specific page in this
+                                          # presentation with this ID. A page with this ID may not exist.
+                                      "slideIndex": 42, # If set, indicates this is a link to the slide at this zero-based index
+                                          # in the presentation. There may not be a slide at this index.
+                                      "relativeLink": "A String", # If set, indicates this is a link to a slide in this presentation,
+                                          # addressed by its position.
+                                    },
+                                    "italic": True or False, # Whether or not the text is italicized.
+                                    "fontSize": { # A magnitude in a single direction in the specified units. # The size of the text's font. When read, the `font_size` will specified in
+                                        # points.
+                                      "magnitude": 3.14, # The magnitude.
+                                      "unit": "A String", # The units for magnitude.
+                                    },
+                                    "underline": True or False, # Whether or not the text is underlined.
+                                    "backgroundColor": { # A color that can either be fully opaque or fully transparent. # The background color of the text. If set, the color is either opaque or
+                                        # transparent, depending on if the `opaque_color` field in it is set.
+                                      "opaqueColor": { # A themeable solid color value. # If set, this will be used as an opaque color. If unset, this represents
+                                          # a transparent color.
+                                        "themeColor": "A String", # An opaque theme color.
+                                        "rgbColor": { # An RGB color. # An opaque RGB color.
+                                          "blue": 3.14, # The blue component of the color, from 0.0 to 1.0.
+                                          "green": 3.14, # The green component of the color, from 0.0 to 1.0.
+                                          "red": 3.14, # The red component of the color, from 0.0 to 1.0.
+                                        },
+                                      },
+                                    },
+                                  },
+                                },
+                              },
+                              "listId": "A String", # The ID of the list.
+                            },
+                          },
+                        },
+                        "rowSpan": 42, # Row span of the cell.
+                        "tableCellProperties": { # The properties of the TableCell. # The properties of the table cell.
+                          "tableCellBackgroundFill": { # The table cell background fill. # The background fill of the table cell. The default fill matches the fill
+                              # for newly created table cells in the Slides editor.
+                            "solidFill": { # A solid color fill. The page or page element is filled entirely with the # Solid color fill.
+                                # specified color value.
+                                #
+                                # If any field is unset, its value may be inherited from a parent placeholder
+                                # if it exists.
+                              "color": { # A themeable solid color value. # The color value of the solid fill.
+                                "themeColor": "A String", # An opaque theme color.
+                                "rgbColor": { # An RGB color. # An opaque RGB color.
+                                  "blue": 3.14, # The blue component of the color, from 0.0 to 1.0.
+                                  "green": 3.14, # The green component of the color, from 0.0 to 1.0.
+                                  "red": 3.14, # The red component of the color, from 0.0 to 1.0.
+                                },
+                              },
+                              "alpha": 3.14, # The fraction of this `color` that should be applied to the pixel.
+                                  # That is, the final pixel color is defined by the equation:
+                                  #
+                                  #   pixel color = alpha * (color) + (1.0 - alpha) * (background color)
+                                  #
+                                  # This means that a value of 1.0 corresponds to a solid color, whereas
+                                  # a value of 0.0 corresponds to a completely transparent color.
+                            },
+                            "propertyState": "A String", # The background fill property state.
+                                #
+                                # Updating the the fill on a table cell will implicitly update this field
+                                # to `RENDERED`, unless another value is specified in the same request. To
+                                # have no fill on a table cell, set this field to `NOT_RENDERED`. In this
+                                # case, any other fill fields set in the same request will be ignored.
+                          },
+                        },
+                        "location": { # A location of a single table cell within a table. # The location of the cell within the table.
+                          "rowIndex": 42, # The 0-based row index.
+                          "columnIndex": 42, # The 0-based column index.
+                        },
+                        "columnSpan": 42, # Column span of the cell.
+                      },
+                    ],
+                    "rowHeight": { # A magnitude in a single direction in the specified units. # Height of a row.
+                      "magnitude": 3.14, # The magnitude.
+                      "unit": "A String", # The units for magnitude.
+                    },
+                  },
+                ],
+                "rows": 42, # Number of rows in the table.
+                "columns": 42, # Number of columns in the table.
+              },
+              "line": { # A PageElement kind representing a # A line page element.
+                  # line, curved connector, or bent connector.
+                "lineProperties": { # The properties of the Line. # The properties of the line.
+                    #
+                    # When unset, these fields default to values that match the appearance of
+                    # new lines created in the Slides editor.
+                  "dashStyle": "A String", # The dash style of the line.
+                  "weight": { # A magnitude in a single direction in the specified units. # The thickness of the line.
+                    "magnitude": 3.14, # The magnitude.
+                    "unit": "A String", # The units for magnitude.
+                  },
+                  "endArrow": "A String", # The style of the arrow at the end of the line.
+                  "link": { # A hypertext link. # The hyperlink destination of the line. If unset, there is no link.
+                    "url": "A String", # If set, indicates this is a link to the external web page at this URL.
+                    "pageObjectId": "A String", # If set, indicates this is a link to the specific page in this
+                        # presentation with this ID. A page with this ID may not exist.
+                    "slideIndex": 42, # If set, indicates this is a link to the slide at this zero-based index
+                        # in the presentation. There may not be a slide at this index.
+                    "relativeLink": "A String", # If set, indicates this is a link to a slide in this presentation,
+                        # addressed by its position.
+                  },
+                  "startArrow": "A String", # The style of the arrow at the beginning of the line.
+                  "lineFill": { # The fill of the line. # The fill of the line. The default line fill matches the defaults for new
+                      # lines created in the Slides editor.
+                    "solidFill": { # A solid color fill. The page or page element is filled entirely with the # Solid color fill.
+                        # specified color value.
+                        #
+                        # If any field is unset, its value may be inherited from a parent placeholder
+                        # if it exists.
+                      "color": { # A themeable solid color value. # The color value of the solid fill.
+                        "themeColor": "A String", # An opaque theme color.
+                        "rgbColor": { # An RGB color. # An opaque RGB color.
+                          "blue": 3.14, # The blue component of the color, from 0.0 to 1.0.
+                          "green": 3.14, # The green component of the color, from 0.0 to 1.0.
+                          "red": 3.14, # The red component of the color, from 0.0 to 1.0.
+                        },
+                      },
+                      "alpha": 3.14, # The fraction of this `color` that should be applied to the pixel.
+                          # That is, the final pixel color is defined by the equation:
+                          #
+                          #   pixel color = alpha * (color) + (1.0 - alpha) * (background color)
+                          #
+                          # This means that a value of 1.0 corresponds to a solid color, whereas
+                          # a value of 0.0 corresponds to a completely transparent color.
+                    },
+                  },
+                },
+                "lineType": "A String", # The type of the line.
+              },
+              "size": { # A width and height. # The size of the page element.
+                "width": { # A magnitude in a single direction in the specified units. # The width of the object.
+                  "magnitude": 3.14, # The magnitude.
+                  "unit": "A String", # The units for magnitude.
+                },
+                "height": { # A magnitude in a single direction in the specified units. # The height of the object.
+                  "magnitude": 3.14, # The magnitude.
+                  "unit": "A String", # The units for magnitude.
+                },
+              },
+              "elementGroup": { # A PageElement kind representing a # A collection of page elements joined as a single unit.
+                  # joined collection of PageElements.
+                "children": [ # The collection of elements in the group. The minimum size of a group is 2.
+                  # Object with schema name: PageElement
+                ],
+              },
+            },
+          ],
+          "objectId": "A String", # The object ID for this page. Object IDs used by
+              # Page and
+              # PageElement share the same namespace.
+          "pageProperties": { # The properties of the Page. # The properties of the page.
+              #
+              # The page will inherit properties from the parent page. Depending on the page
+              # type the hierarchy is defined in either
+              # SlideProperties or
+              # LayoutProperties.
+            "pageBackgroundFill": { # The page background fill. # The background fill of the page. If unset, the background fill is inherited
+                # from a parent page if it exists. If the page has no parent, then the
+                # background fill defaults to the corresponding fill in the Slides editor.
+              "solidFill": { # A solid color fill. The page or page element is filled entirely with the # Solid color fill.
+                  # specified color value.
+                  #
+                  # If any field is unset, its value may be inherited from a parent placeholder
+                  # if it exists.
+                "color": { # A themeable solid color value. # The color value of the solid fill.
+                  "themeColor": "A String", # An opaque theme color.
+                  "rgbColor": { # An RGB color. # An opaque RGB color.
+                    "blue": 3.14, # The blue component of the color, from 0.0 to 1.0.
+                    "green": 3.14, # The green component of the color, from 0.0 to 1.0.
+                    "red": 3.14, # The red component of the color, from 0.0 to 1.0.
+                  },
+                },
+                "alpha": 3.14, # The fraction of this `color` that should be applied to the pixel.
+                    # That is, the final pixel color is defined by the equation:
+                    #
+                    #   pixel color = alpha * (color) + (1.0 - alpha) * (background color)
+                    #
+                    # This means that a value of 1.0 corresponds to a solid color, whereas
+                    # a value of 0.0 corresponds to a completely transparent color.
+              },
+              "propertyState": "A String", # The background fill property state.
+                  #
+                  # Updating the the fill on a page will implicitly update this field to
+                  # `RENDERED`, unless another value is specified in the same request. To
+                  # have no fill on a page, set this field to `NOT_RENDERED`. In this case,
+                  # any other fill fields set in the same request will be ignored.
+              "stretchedPictureFill": { # The stretched picture fill. The page or page element is filled entirely with # Stretched picture fill.
+                  # the specified picture. The picture is stretched to fit its container.
+                "contentUrl": "A String", # Reading the content_url:
+                    #
+                    # An URL to a picture with a default lifetime of 30 minutes.
+                    # This URL is tagged with the account of the requester. Anyone with the URL
+                    # effectively accesses the picture as the original requester. Access to the
+                    # picture may be lost if the presentation's sharing settings change.
+                    #
+                    # Writing the content_url:
+                    #
+                    # The picture is fetched once at insertion time and a copy is stored for
+                    # display inside the presentation. Pictures must be less than 50MB in size,
+                    # cannot exceed 25 megapixels, and must be in either in PNG, JPEG, or GIF
+                    # format.
+                "size": { # A width and height. # The original size of the picture fill. This field is read-only.
+                  "width": { # A magnitude in a single direction in the specified units. # The width of the object.
+                    "magnitude": 3.14, # The magnitude.
+                    "unit": "A String", # The units for magnitude.
+                  },
+                  "height": { # A magnitude in a single direction in the specified units. # The height of the object.
+                    "magnitude": 3.14, # The magnitude.
+                    "unit": "A String", # The units for magnitude.
+                  },
+                },
+              },
+            },
+            "colorScheme": { # The palette of predefined colors for a page. # The color scheme of the page. If unset, the color scheme is inherited from
+                # a parent page. If the page has no parent, the color scheme uses a default
+                # Slides color scheme. This field is read-only.
+              "colors": [ # The ThemeColorType and corresponding concrete color pairs.
+                { # A pair mapping a theme color type to the concrete color it represents.
+                  "color": { # An RGB color. # The concrete color corresponding to the theme color type above.
+                    "blue": 3.14, # The blue component of the color, from 0.0 to 1.0.
+                    "green": 3.14, # The green component of the color, from 0.0 to 1.0.
+                    "red": 3.14, # The red component of the color, from 0.0 to 1.0.
+                  },
+                  "type": "A String", # The type of the theme color.
+                },
+              ],
+            },
+          },
+          "pageType": "A String", # The type of the page.
+          "slideProperties": { # The properties of Page that are only # Slide specific properties. Only set if page_type = SLIDE.
+              # relevant for pages with page_type SLIDE.
+            "masterObjectId": "A String", # The object ID of the master that this slide is based on.
+            "layoutObjectId": "A String", # The object ID of the layout that this slide is based on.
+          },
+        },
+      ],
+      "layouts": [ # The layouts in the presentation. A layout is a template that determines
+          # how content is arranged and styled on the slides that inherit from that
+          # layout.
+        { # A page in a presentation.
+          "layoutProperties": { # The properties of Page are only # Layout specific properties. Only set if page_type = LAYOUT.
+              # relevant for pages with page_type LAYOUT.
+            "displayName": "A String", # The human readable name of the layout in the presentation's locale.
+            "name": "A String", # The name of the layout.
+            "masterObjectId": "A String", # The object ID of the master that this layout is based on.
+          },
+          "pageElements": [ # The page elements rendered on the page.
+            { # A visual element rendered on a page.
+              "wordArt": { # A PageElement kind representing # A word art page element.
+                  # word art.
+                "renderedText": "A String", # The text rendered as word art.
+              },
+              "description": "A String", # The description of the page element. Combined with title to display alt
+                  # text.
+              "objectId": "A String", # The object ID for this page element. Object IDs used by
+                  # google.apps.slides.v1.Page and
+                  # google.apps.slides.v1.PageElement share the same namespace.
+              "title": "A String", # The title of the page element. Combined with description to display alt
+                  # text.
+              "image": { # A PageElement kind representing an # An image page element.
+                  # image.
+                "contentUrl": "A String", # An URL to an image with a default lifetime of 30 minutes.
+                    # This URL is tagged with the account of the requester. Anyone with the URL
+                    # effectively accesses the image as the original requester. Access to the
+                    # image may be lost if the presentation's sharing settings change.
+                "imageProperties": { # The properties of the Image. # The properties of the image.
+                  "outline": { # The outline of a PageElement. # The outline of the image. If not set, the the image has no outline.
+                      #
+                      # If these fields are unset, they may be inherited from a parent placeholder
+                      # if it exists. If there is no parent, the fields will default to the value
+                      # used for new page elements created in the Slides editor, which may depend on
+                      # the page element kind.
+                    "dashStyle": "A String", # The dash style of the outline.
+                    "propertyState": "A String", # The outline property state.
+                        #
+                        # Updating the the outline on a page element will implicitly update this
+                        # field to`RENDERED`, unless another value is specified in the same request.
+                        # To have no outline on a page element, set this field to `NOT_RENDERED`. In
+                        # this case, any other outline fields set in the same request will be
+                        # ignored.
+                    "outlineFill": { # The fill of the outline. # The fill of the outline.
+                      "solidFill": { # A solid color fill. The page or page element is filled entirely with the # Solid color fill.
+                          # specified color value.
+                          #
+                          # If any field is unset, its value may be inherited from a parent placeholder
+                          # if it exists.
+                        "color": { # A themeable solid color value. # The color value of the solid fill.
+                          "themeColor": "A String", # An opaque theme color.
+                          "rgbColor": { # An RGB color. # An opaque RGB color.
+                            "blue": 3.14, # The blue component of the color, from 0.0 to 1.0.
+                            "green": 3.14, # The green component of the color, from 0.0 to 1.0.
+                            "red": 3.14, # The red component of the color, from 0.0 to 1.0.
+                          },
+                        },
+                        "alpha": 3.14, # The fraction of this `color` that should be applied to the pixel.
+                            # That is, the final pixel color is defined by the equation:
+                            #
+                            #   pixel color = alpha * (color) + (1.0 - alpha) * (background color)
+                            #
+                            # This means that a value of 1.0 corresponds to a solid color, whereas
+                            # a value of 0.0 corresponds to a completely transparent color.
+                      },
+                    },
+                    "weight": { # A magnitude in a single direction in the specified units. # The thickness of the outline.
+                      "magnitude": 3.14, # The magnitude.
+                      "unit": "A String", # The units for magnitude.
+                    },
+                  },
+                  "brightness": 3.14, # The brightness effect of the image. The value should be in the interval
+                      # [-1.0, 1.0], where 0 means no effect. This property is read-only.
+                  "recolor": { # A recolor effect applied on an image. # The recolor effect of the image. If not set, the image is not recolored.
+                      # This property is read-only.
+                    "recolorStops": [ # The recolor effect is represented by a gradient, which is a list of color
+                        # stops. This property is read-only.
+                      { # A color and position in a gradient band.
+                        "color": { # A themeable solid color value. # The color of the gradient stop.
+                          "themeColor": "A String", # An opaque theme color.
+                          "rgbColor": { # An RGB color. # An opaque RGB color.
+                            "blue": 3.14, # The blue component of the color, from 0.0 to 1.0.
+                            "green": 3.14, # The green component of the color, from 0.0 to 1.0.
+                            "red": 3.14, # The red component of the color, from 0.0 to 1.0.
+                          },
+                        },
+                        "position": 3.14, # The relative position of the color stop in the gradient band measured
+                            # in percentage. The value should be in the interval [0.0, 1.0].
+                        "alpha": 3.14, # The alpha value of this color in the gradient band. Defaults to 1.0,
+                            # fully opaque.
+                      },
+                    ],
+                  },
+                  "link": { # A hypertext link. # The hyperlink destination of the image. If unset, there is no link.
+                    "url": "A String", # If set, indicates this is a link to the external web page at this URL.
+                    "pageObjectId": "A String", # If set, indicates this is a link to the specific page in this
+                        # presentation with this ID. A page with this ID may not exist.
+                    "slideIndex": 42, # If set, indicates this is a link to the slide at this zero-based index
+                        # in the presentation. There may not be a slide at this index.
+                    "relativeLink": "A String", # If set, indicates this is a link to a slide in this presentation,
+                        # addressed by its position.
+                  },
+                  "transparency": 3.14, # The transparency effect of the image. The value should be in the interval
+                      # [0.0, 1.0], where 0 means no effect and 1 means completely transparent.
+                      # This property is read-only.
+                  "cropProperties": { # The crop properties of an object enclosed in a container. For example, an # The crop properties of the image. If not set, the image is not cropped.
+                      # This property is read-only.
+                      # Image.
+                      #
+                      # The crop properties is represented by the offsets of four edges which define
+                      # a crop rectangle. The offsets are measured in percentage from the
+                      # corresponding edges of the object's original bounding rectangle towards
+                      # inside, relative to the object's original dimensions.
+                      #
+                      # - If the offset is in the interval (0, 1), the corresponding edge of crop
+                      # rectangle is positioned inside of the object's original bounding rectangle.
+                      # - If the offset is negative or greater than 1, the corresponding edge of crop
+                      # rectangle is positioned outside of the object's original bounding rectangle.
+                      # - If the left edge of the crop rectangle is on the right side of its right
+                      # edge, the object will be flipped horizontally.
+                      # - If the top edge of the crop rectangle is below its bottom edge, the object
+                      # will be flipped vertically.
+                      # - If all offsets and rotation angle is 0, the object is not cropped.
+                      #
+                      # After cropping, the content in the crop rectangle will be stretched to fit
+                      # its container.
+                    "leftOffset": 3.14, # The offset specifies the left edge of the crop rectangle that is located to
+                        # the right of the original bounding rectangle left edge, relative to the
+                        # object's original width.
+                    "angle": 3.14, # The rotation angle of the crop window around its center, in radians.
+                        # Rotation angle is applied after the offset.
+                    "bottomOffset": 3.14, # The offset specifies the bottom edge of the crop rectangle that is located
+                        # above the original bounding rectangle bottom edge, relative to the object's
+                        # original height.
+                    "rightOffset": 3.14, # The offset specifies the right edge of the crop rectangle that is located
+                        # to the left of the original bounding rectangle right edge, relative to the
+                        # object's original width.
+                    "topOffset": 3.14, # The offset specifies the top edge of the crop rectangle that is located
+                        # below the original bounding rectangle top edge, relative to the object's
+                        # original height.
+                  },
+                  "shadow": { # The shadow properties of a page element. # The shadow of the image. If not set, the image has no shadow. This property
+                      # is read-only.
+                      #
+                      # If these fields are unset, they may be inherited from a parent placeholder
+                      # if it exists. If there is no parent, the fields will default to the value
+                      # used for new page elements created in the Slides editor, which may depend on
+                      # the page element kind.
+                    "color": { # A themeable solid color value. # The shadow color value.
+                      "themeColor": "A String", # An opaque theme color.
+                      "rgbColor": { # An RGB color. # An opaque RGB color.
+                        "blue": 3.14, # The blue component of the color, from 0.0 to 1.0.
+                        "green": 3.14, # The green component of the color, from 0.0 to 1.0.
+                        "red": 3.14, # The red component of the color, from 0.0 to 1.0.
+                      },
+                    },
+                    "transform": { # AffineTransform uses a 3x3 matrix with an implied last row of [ 0 0 1 ] # Transform that encodes the translate, scale, and skew of the shadow,
+                        # relative to the alignment position.
+                        # to transform source coordinates (x,y) into destination coordinates (x', y')
+                        # according to:
+                        #
+                        #       x'  x  =   shear_y  scale_y  translate_y
+                        #       1  [ 1 ]
+                        #
+                        # After transformation,
+                        #
+                        #      x' = scale_x * x + shear_x * y + translate_x;
+                        #      y' = scale_y * y + shear_y * x + translate_y;
+                        #
+                        # This message is therefore composed of these six matrix elements.
+                      "translateX": 3.14, # The X coordinate translation element.
+                      "translateY": 3.14, # The Y coordinate translation element.
+                      "scaleX": 3.14, # The X coordinate scaling element.
+                      "scaleY": 3.14, # The Y coordinate scaling element.
+                      "shearY": 3.14, # The Y coordinate shearing element.
+                      "shearX": 3.14, # The X coordinate shearing element.
+                      "unit": "A String", # The units for translate elements.
+                    },
+                    "propertyState": "A String", # The shadow property state.
+                        #
+                        # Updating the the shadow on a page element will implicitly update this field
+                        # to `RENDERED`, unless another value is specified in the same request. To
+                        # have no shadow on a page element, set this field to `NOT_RENDERED`. In this
+                        # case, any other shadow fields set in the same request will be ignored.
+                    "blurRadius": { # A magnitude in a single direction in the specified units. # The radius of the shadow blur. The larger the radius, the more diffuse the
+                        # shadow becomes.
+                      "magnitude": 3.14, # The magnitude.
+                      "unit": "A String", # The units for magnitude.
+                    },
+                    "alpha": 3.14, # The alpha of the shadow's color, from 0.0 to 1.0.
+                    "type": "A String", # The type of the shadow.
+                    "alignment": "A String", # The alignment point of the shadow, that sets the origin for translate,
+                        # scale and skew of the shadow.
+                    "rotateWithShape": True or False, # Whether the shadow should rotate with the shape.
+                  },
+                  "contrast": 3.14, # The contrast effect of the image. The value should be in the interval
+                      # [-1.0, 1.0], where 0 means no effect. This property is read-only.
+                },
+              },
+              "transform": { # AffineTransform uses a 3x3 matrix with an implied last row of [ 0 0 1 ] # The transform of the page element.
+                  # to transform source coordinates (x,y) into destination coordinates (x', y')
+                  # according to:
+                  #
+                  #       x'  x  =   shear_y  scale_y  translate_y
+                  #       1  [ 1 ]
+                  #
+                  # After transformation,
+                  #
+                  #      x' = scale_x * x + shear_x * y + translate_x;
+                  #      y' = scale_y * y + shear_y * x + translate_y;
+                  #
+                  # This message is therefore composed of these six matrix elements.
+                "translateX": 3.14, # The X coordinate translation element.
+                "translateY": 3.14, # The Y coordinate translation element.
+                "scaleX": 3.14, # The X coordinate scaling element.
+                "scaleY": 3.14, # The Y coordinate scaling element.
+                "shearY": 3.14, # The Y coordinate shearing element.
+                "shearX": 3.14, # The X coordinate shearing element.
+                "unit": "A String", # The units for translate elements.
+              },
+              "shape": { # A PageElement kind representing a # A generic shape.
+                  # generic shape that does not have a more specific classification.
+                "text": { # The general text content. The text must reside in a compatible shape (e.g. # The text content of the shape.
+                    # text box or rectangle) or a table cell in a page.
+                  "textElements": [ # The text contents broken down into its component parts, including styling
+                      # information. This property is read-only.
+                    { # A TextElement describes the content of a range of indices in the text content
+                        # of a Shape or TableCell.
+                      "autoText": { # A TextElement kind that represents auto text. # A TextElement representing a spot in the text that is dynamically
+                          # replaced with content that can change over time.
+                        "content": "A String", # The rendered content of this auto text, if available.
+                        "style": { # Represents the styling that can be applied to a TextRun. # The styling applied to this auto text.
+                            #
+                            # If this text is contained in a shape with a parent placeholder, then these text styles may be
+                            # inherited from the parent. Which text styles are inherited depend on the
+                            # nesting level of lists:
+                            #
+                            # * A text run in a paragraph that is not in a list will inherit its text style
+                            #   from the the newline character in the paragraph at the 0 nesting level of
+                            #   the list inside the parent placeholder.
+                            # * A text run in a paragraph that is in a list will inherit its text style
+                            #   from the newline character in the paragraph at its corresponding nesting
+                            #   level of the list inside the parent placeholder.
+                            #
+                            # Inherited text styles are represented as unset fields in this message. If
+                            # text is contained in a shape without a parent placeholder, unsetting these
+                            # fields will revert the style to a value matching the defaults in the Slides
+                            # editor.
+                          "foregroundColor": { # A color that can either be fully opaque or fully transparent. # The color of the text itself. If set, the color is either opaque or
+                              # transparent, depending on if the `opaque_color` field in it is set.
+                            "opaqueColor": { # A themeable solid color value. # If set, this will be used as an opaque color. If unset, this represents
+                                # a transparent color.
+                              "themeColor": "A String", # An opaque theme color.
+                              "rgbColor": { # An RGB color. # An opaque RGB color.
+                                "blue": 3.14, # The blue component of the color, from 0.0 to 1.0.
+                                "green": 3.14, # The green component of the color, from 0.0 to 1.0.
+                                "red": 3.14, # The red component of the color, from 0.0 to 1.0.
+                              },
+                            },
+                          },
+                          "bold": True or False, # Whether or not the text is bold.
+                          "baselineOffset": "A String", # The text's vertical offset from its normal position.
+                              #
+                              # Text with `SUPERSCRIPT` or `SUBSCRIPT` baseline offsets is automatically
+                              # rendered in a smaller font size, computed based on the `font_size` field.
+                              # The `font_size` itself is not affected by changes in this field.
+                          "strikethrough": True or False, # Whether or not the text is struck through.
+                          "smallCaps": True or False, # Whether or not the text is in small capital letters.
+                          "fontFamily": "A String", # The font family of the text.
+                              #
+                              # The font family can be any font from the Font menu in Slides or from
+                              # [Google Fonts] (https://fonts.google.com/). If the font name is
+                              # unrecognized, the text is rendered in `Arial`.
+                              #
+                              # Some fonts can affect the weight of the text. If an update request
+                              # specifies values for both `font_family` and `bold`, the explicitly-set
+                              # `bold` value is used.
+                          "link": { # A hypertext link. # The hyperlink destination of the text. If unset, there is no link. Links
+                              # are not inherited from parent text.
+                              #
+                              # Changing the link in an update request causes some other changes to the
+                              # text style of the range:
+                              #
+                              # * When setting a link, the text foreground color will be set to
+                              #   ThemeColorType.HYPERLINK and the text will
+                              #   be underlined. If these fields are modified in the same
+                              #   request, those values will be used instead of the link defaults.
+                              # * Setting a link on a text range that overlaps with an existing link will
+                              #   also update the existing link to point to the new URL.
+                              # * Links are not settable on newline characters. As a result, setting a link
+                              #   on a text range that crosses a paragraph boundary, such as `"ABC\n123"`,
+                              #   will separate the newline character(s) into their own text runs. The
+                              #   link will be applied separately to the runs before and after the newline.
+                              # * Removing a link will update the text style of the range to match the
+                              #   style of the preceding text (or the default text styles if the preceding
+                              #   text is another link) unless different styles are being set in the same
+                              #   request.
+                            "url": "A String", # If set, indicates this is a link to the external web page at this URL.
+                            "pageObjectId": "A String", # If set, indicates this is a link to the specific page in this
+                                # presentation with this ID. A page with this ID may not exist.
+                            "slideIndex": 42, # If set, indicates this is a link to the slide at this zero-based index
+                                # in the presentation. There may not be a slide at this index.
+                            "relativeLink": "A String", # If set, indicates this is a link to a slide in this presentation,
+                                # addressed by its position.
+                          },
+                          "italic": True or False, # Whether or not the text is italicized.
+                          "fontSize": { # A magnitude in a single direction in the specified units. # The size of the text's font. When read, the `font_size` will specified in
+                              # points.
+                            "magnitude": 3.14, # The magnitude.
+                            "unit": "A String", # The units for magnitude.
+                          },
+                          "underline": True or False, # Whether or not the text is underlined.
+                          "backgroundColor": { # A color that can either be fully opaque or fully transparent. # The background color of the text. If set, the color is either opaque or
+                              # transparent, depending on if the `opaque_color` field in it is set.
+                            "opaqueColor": { # A themeable solid color value. # If set, this will be used as an opaque color. If unset, this represents
+                                # a transparent color.
+                              "themeColor": "A String", # An opaque theme color.
+                              "rgbColor": { # An RGB color. # An opaque RGB color.
+                                "blue": 3.14, # The blue component of the color, from 0.0 to 1.0.
+                                "green": 3.14, # The green component of the color, from 0.0 to 1.0.
+                                "red": 3.14, # The red component of the color, from 0.0 to 1.0.
+                              },
+                            },
+                          },
+                        },
+                        "type": "A String", # The type of this auto text.
+                      },
+                      "endIndex": 42, # The zero-based end index of this text element, exclusive, in Unicode code
+                          # units.
+                      "startIndex": 42, # The zero-based start index of this text element, in Unicode code units.
+                      "paragraphMarker": { # A TextElement kind that represents the beginning of a new paragraph. # A marker representing the beginning of a new paragraph.
+                          #
+                          # The `start_index` and `end_index` of this TextElement represent the
+                          # range of the paragraph. Other TextElements with an index range contained
+                          # inside this paragraph's range are considered to be part of this
+                          # paragraph. The range of indices of two separate paragraphs will never
+                          # overlap.
+                        "style": { # Styles that apply to a whole paragraph. # The paragraph's style
+                            #
+                            # If this text is contained in a shape with a parent placeholder, then these paragraph styles may be
+                            # inherited from the parent. Which paragraph styles are inherited depend on the
+                            # nesting level of lists:
+                            #
+                            # * A paragraph not in a list will inherit its paragraph style from the
+                            #   paragraph at the 0 nesting level of the list inside the parent placeholder.
+                            # * A paragraph in a list will inherit its paragraph style from the paragraph
+                            #   at its corresponding nesting level of the list inside the parent
+                            #   placeholder.
+                            #
+                            # Inherited paragraph styles are represented as unset fields in this message.
+                          "spacingMode": "A String", # The spacing mode for the paragraph. This property is read-only.
+                          "direction": "A String", # The text direction of this paragraph. This property is read-only.
+                          "spaceBelow": { # A magnitude in a single direction in the specified units. # The amount of extra space above the paragraph. If unset, the value is
+                              # inherited from the parent. This property is read-only.
+                            "magnitude": 3.14, # The magnitude.
+                            "unit": "A String", # The units for magnitude.
+                          },
+                          "lineSpacing": 3.14, # The amount of space between lines, as a percentage of normal, where normal
+                              # is represented as 100.0. If unset, the value is inherited from the parent.
+                              # This property is read-only.
+                          "indentStart": { # A magnitude in a single direction in the specified units. # The amount indentation for the paragraph on the side that corresponds to
+                              # the start of the text, based on the current text direction. If unset, the
+                              # value is inherited from the parent. This property is read-only.
+                            "magnitude": 3.14, # The magnitude.
+                            "unit": "A String", # The units for magnitude.
+                          },
+                          "spaceAbove": { # A magnitude in a single direction in the specified units. # The amount of extra space above the paragraph. If unset, the value is
+                              # inherited from the parent. This property is read-only.
+                            "magnitude": 3.14, # The magnitude.
+                            "unit": "A String", # The units for magnitude.
+                          },
+                          "indentEnd": { # A magnitude in a single direction in the specified units. # The amount indentation for the paragraph on the side that corresponds to
+                              # the end of the text, based on the current text direction. If unset, the
+                              # value is inherited from the parent. This property is read-only.
+                            "magnitude": 3.14, # The magnitude.
+                            "unit": "A String", # The units for magnitude.
+                          },
+                          "indentFirstLine": { # A magnitude in a single direction in the specified units. # The amount of indentation for the start of the first line of the paragraph.
+                              # If unset, the value is inherited from the parent. This property is
+                              # read-only.
+                            "magnitude": 3.14, # The magnitude.
+                            "unit": "A String", # The units for magnitude.
+                          },
+                          "alignment": "A String", # The text alignment for this paragraph. This property is read-only.
+                        },
+                        "bullet": { # Describes the bullet of a paragraph. # The bullet for this paragraph. If not present, the paragraph does not
+                            # belong to a list.
+                          "nestingLevel": 42, # The nesting level of this paragraph in the list.
+                          "listId": "A String", # The ID of the list this paragraph belongs to.
+                          "bulletStyle": { # Represents the styling that can be applied to a TextRun. # The paragraph specific text style applied to this bullet.
+                              #
+                              # If this text is contained in a shape with a parent placeholder, then these text styles may be
+                              # inherited from the parent. Which text styles are inherited depend on the
+                              # nesting level of lists:
+                              #
+                              # * A text run in a paragraph that is not in a list will inherit its text style
+                              #   from the the newline character in the paragraph at the 0 nesting level of
+                              #   the list inside the parent placeholder.
+                              # * A text run in a paragraph that is in a list will inherit its text style
+                              #   from the newline character in the paragraph at its corresponding nesting
+                              #   level of the list inside the parent placeholder.
+                              #
+                              # Inherited text styles are represented as unset fields in this message. If
+                              # text is contained in a shape without a parent placeholder, unsetting these
+                              # fields will revert the style to a value matching the defaults in the Slides
+                              # editor.
+                            "foregroundColor": { # A color that can either be fully opaque or fully transparent. # The color of the text itself. If set, the color is either opaque or
+                                # transparent, depending on if the `opaque_color` field in it is set.
+                              "opaqueColor": { # A themeable solid color value. # If set, this will be used as an opaque color. If unset, this represents
+                                  # a transparent color.
+                                "themeColor": "A String", # An opaque theme color.
+                                "rgbColor": { # An RGB color. # An opaque RGB color.
+                                  "blue": 3.14, # The blue component of the color, from 0.0 to 1.0.
+                                  "green": 3.14, # The green component of the color, from 0.0 to 1.0.
+                                  "red": 3.14, # The red component of the color, from 0.0 to 1.0.
+                                },
+                              },
+                            },
+                            "bold": True or False, # Whether or not the text is bold.
+                            "baselineOffset": "A String", # The text's vertical offset from its normal position.
+                                #
+                                # Text with `SUPERSCRIPT` or `SUBSCRIPT` baseline offsets is automatically
+                                # rendered in a smaller font size, computed based on the `font_size` field.
+                                # The `font_size` itself is not affected by changes in this field.
+                            "strikethrough": True or False, # Whether or not the text is struck through.
+                            "smallCaps": True or False, # Whether or not the text is in small capital letters.
+                            "fontFamily": "A String", # The font family of the text.
+                                #
+                                # The font family can be any font from the Font menu in Slides or from
+                                # [Google Fonts] (https://fonts.google.com/). If the font name is
+                                # unrecognized, the text is rendered in `Arial`.
+                                #
+                                # Some fonts can affect the weight of the text. If an update request
+                                # specifies values for both `font_family` and `bold`, the explicitly-set
+                                # `bold` value is used.
+                            "link": { # A hypertext link. # The hyperlink destination of the text. If unset, there is no link. Links
+                                # are not inherited from parent text.
+                                #
+                                # Changing the link in an update request causes some other changes to the
+                                # text style of the range:
+                                #
+                                # * When setting a link, the text foreground color will be set to
+                                #   ThemeColorType.HYPERLINK and the text will
+                                #   be underlined. If these fields are modified in the same
+                                #   request, those values will be used instead of the link defaults.
+                                # * Setting a link on a text range that overlaps with an existing link will
+                                #   also update the existing link to point to the new URL.
+                                # * Links are not settable on newline characters. As a result, setting a link
+                                #   on a text range that crosses a paragraph boundary, such as `"ABC\n123"`,
+                                #   will separate the newline character(s) into their own text runs. The
+                                #   link will be applied separately to the runs before and after the newline.
+                                # * Removing a link will update the text style of the range to match the
+                                #   style of the preceding text (or the default text styles if the preceding
+                                #   text is another link) unless different styles are being set in the same
+                                #   request.
+                              "url": "A String", # If set, indicates this is a link to the external web page at this URL.
+                              "pageObjectId": "A String", # If set, indicates this is a link to the specific page in this
+                                  # presentation with this ID. A page with this ID may not exist.
+                              "slideIndex": 42, # If set, indicates this is a link to the slide at this zero-based index
+                                  # in the presentation. There may not be a slide at this index.
+                              "relativeLink": "A String", # If set, indicates this is a link to a slide in this presentation,
+                                  # addressed by its position.
+                            },
+                            "italic": True or False, # Whether or not the text is italicized.
+                            "fontSize": { # A magnitude in a single direction in the specified units. # The size of the text's font. When read, the `font_size` will specified in
+                                # points.
+                              "magnitude": 3.14, # The magnitude.
+                              "unit": "A String", # The units for magnitude.
+                            },
+                            "underline": True or False, # Whether or not the text is underlined.
+                            "backgroundColor": { # A color that can either be fully opaque or fully transparent. # The background color of the text. If set, the color is either opaque or
+                                # transparent, depending on if the `opaque_color` field in it is set.
+                              "opaqueColor": { # A themeable solid color value. # If set, this will be used as an opaque color. If unset, this represents
+                                  # a transparent color.
+                                "themeColor": "A String", # An opaque theme color.
+                                "rgbColor": { # An RGB color. # An opaque RGB color.
+                                  "blue": 3.14, # The blue component of the color, from 0.0 to 1.0.
+                                  "green": 3.14, # The green component of the color, from 0.0 to 1.0.
+                                  "red": 3.14, # The red component of the color, from 0.0 to 1.0.
+                                },
+                              },
+                            },
+                          },
+                          "glyph": "A String", # The rendered bullet glyph for this paragraph.
+                        },
+                      },
+                      "textRun": { # A TextElement kind that represents a run of text that all has the same # A TextElement representing a run of text where all of the characters
+                          # in the run have the same TextStyle.
+                          #
+                          # The `start_index` and `end_index` of TextRuns will always be fully
+                          # contained in the index range of a single `paragraph_marker` TextElement.
+                          # In other words, a TextRun will never span multiple paragraphs.
+                          # styling.
+                        "content": "A String", # The text of this run.
+                        "style": { # Represents the styling that can be applied to a TextRun. # The styling applied to this run.
+                            #
+                            # If this text is contained in a shape with a parent placeholder, then these text styles may be
+                            # inherited from the parent. Which text styles are inherited depend on the
+                            # nesting level of lists:
+                            #
+                            # * A text run in a paragraph that is not in a list will inherit its text style
+                            #   from the the newline character in the paragraph at the 0 nesting level of
+                            #   the list inside the parent placeholder.
+                            # * A text run in a paragraph that is in a list will inherit its text style
+                            #   from the newline character in the paragraph at its corresponding nesting
+                            #   level of the list inside the parent placeholder.
+                            #
+                            # Inherited text styles are represented as unset fields in this message. If
+                            # text is contained in a shape without a parent placeholder, unsetting these
+                            # fields will revert the style to a value matching the defaults in the Slides
+                            # editor.
+                          "foregroundColor": { # A color that can either be fully opaque or fully transparent. # The color of the text itself. If set, the color is either opaque or
+                              # transparent, depending on if the `opaque_color` field in it is set.
+                            "opaqueColor": { # A themeable solid color value. # If set, this will be used as an opaque color. If unset, this represents
+                                # a transparent color.
+                              "themeColor": "A String", # An opaque theme color.
+                              "rgbColor": { # An RGB color. # An opaque RGB color.
+                                "blue": 3.14, # The blue component of the color, from 0.0 to 1.0.
+                                "green": 3.14, # The green component of the color, from 0.0 to 1.0.
+                                "red": 3.14, # The red component of the color, from 0.0 to 1.0.
+                              },
+                            },
+                          },
+                          "bold": True or False, # Whether or not the text is bold.
+                          "baselineOffset": "A String", # The text's vertical offset from its normal position.
+                              #
+                              # Text with `SUPERSCRIPT` or `SUBSCRIPT` baseline offsets is automatically
+                              # rendered in a smaller font size, computed based on the `font_size` field.
+                              # The `font_size` itself is not affected by changes in this field.
+                          "strikethrough": True or False, # Whether or not the text is struck through.
+                          "smallCaps": True or False, # Whether or not the text is in small capital letters.
+                          "fontFamily": "A String", # The font family of the text.
+                              #
+                              # The font family can be any font from the Font menu in Slides or from
+                              # [Google Fonts] (https://fonts.google.com/). If the font name is
+                              # unrecognized, the text is rendered in `Arial`.
+                              #
+                              # Some fonts can affect the weight of the text. If an update request
+                              # specifies values for both `font_family` and `bold`, the explicitly-set
+                              # `bold` value is used.
+                          "link": { # A hypertext link. # The hyperlink destination of the text. If unset, there is no link. Links
+                              # are not inherited from parent text.
+                              #
+                              # Changing the link in an update request causes some other changes to the
+                              # text style of the range:
+                              #
+                              # * When setting a link, the text foreground color will be set to
+                              #   ThemeColorType.HYPERLINK and the text will
+                              #   be underlined. If these fields are modified in the same
+                              #   request, those values will be used instead of the link defaults.
+                              # * Setting a link on a text range that overlaps with an existing link will
+                              #   also update the existing link to point to the new URL.
+                              # * Links are not settable on newline characters. As a result, setting a link
+                              #   on a text range that crosses a paragraph boundary, such as `"ABC\n123"`,
+                              #   will separate the newline character(s) into their own text runs. The
+                              #   link will be applied separately to the runs before and after the newline.
+                              # * Removing a link will update the text style of the range to match the
+                              #   style of the preceding text (or the default text styles if the preceding
+                              #   text is another link) unless different styles are being set in the same
+                              #   request.
+                            "url": "A String", # If set, indicates this is a link to the external web page at this URL.
+                            "pageObjectId": "A String", # If set, indicates this is a link to the specific page in this
+                                # presentation with this ID. A page with this ID may not exist.
+                            "slideIndex": 42, # If set, indicates this is a link to the slide at this zero-based index
+                                # in the presentation. There may not be a slide at this index.
+                            "relativeLink": "A String", # If set, indicates this is a link to a slide in this presentation,
+                                # addressed by its position.
+                          },
+                          "italic": True or False, # Whether or not the text is italicized.
+                          "fontSize": { # A magnitude in a single direction in the specified units. # The size of the text's font. When read, the `font_size` will specified in
+                              # points.
+                            "magnitude": 3.14, # The magnitude.
+                            "unit": "A String", # The units for magnitude.
+                          },
+                          "underline": True or False, # Whether or not the text is underlined.
+                          "backgroundColor": { # A color that can either be fully opaque or fully transparent. # The background color of the text. If set, the color is either opaque or
+                              # transparent, depending on if the `opaque_color` field in it is set.
+                            "opaqueColor": { # A themeable solid color value. # If set, this will be used as an opaque color. If unset, this represents
+                                # a transparent color.
+                              "themeColor": "A String", # An opaque theme color.
+                              "rgbColor": { # An RGB color. # An opaque RGB color.
+                                "blue": 3.14, # The blue component of the color, from 0.0 to 1.0.
+                                "green": 3.14, # The green component of the color, from 0.0 to 1.0.
+                                "red": 3.14, # The red component of the color, from 0.0 to 1.0.
+                              },
+                            },
+                          },
+                        },
+                      },
+                    },
+                  ],
+                  "lists": { # The bulleted lists contained in this text, keyed by list ID.
+                    "a_key": { # A List describes the look and feel of bullets belonging to paragraphs
+                        # associated with a list. A paragraph that is part of a list has an implicit
+                        # reference to that list's ID.
+                      "nestingLevel": { # A map of nesting levels to the properties of bullets at the associated
+                          # level. A list has at most nine levels of nesting, so the possible values
+                          # for the keys of this map are 0 through 8, inclusive.
+                        "a_key": { # Contains properties describing the look and feel of a list bullet at a given
+                            # level of nesting.
+                          "bulletStyle": { # Represents the styling that can be applied to a TextRun. # The style of a bullet at this level of nesting.
+                              #
+                              # If this text is contained in a shape with a parent placeholder, then these text styles may be
+                              # inherited from the parent. Which text styles are inherited depend on the
+                              # nesting level of lists:
+                              #
+                              # * A text run in a paragraph that is not in a list will inherit its text style
+                              #   from the the newline character in the paragraph at the 0 nesting level of
+                              #   the list inside the parent placeholder.
+                              # * A text run in a paragraph that is in a list will inherit its text style
+                              #   from the newline character in the paragraph at its corresponding nesting
+                              #   level of the list inside the parent placeholder.
+                              #
+                              # Inherited text styles are represented as unset fields in this message. If
+                              # text is contained in a shape without a parent placeholder, unsetting these
+                              # fields will revert the style to a value matching the defaults in the Slides
+                              # editor.
+                            "foregroundColor": { # A color that can either be fully opaque or fully transparent. # The color of the text itself. If set, the color is either opaque or
+                                # transparent, depending on if the `opaque_color` field in it is set.
+                              "opaqueColor": { # A themeable solid color value. # If set, this will be used as an opaque color. If unset, this represents
+                                  # a transparent color.
+                                "themeColor": "A String", # An opaque theme color.
+                                "rgbColor": { # An RGB color. # An opaque RGB color.
+                                  "blue": 3.14, # The blue component of the color, from 0.0 to 1.0.
+                                  "green": 3.14, # The green component of the color, from 0.0 to 1.0.
+                                  "red": 3.14, # The red component of the color, from 0.0 to 1.0.
+                                },
+                              },
+                            },
+                            "bold": True or False, # Whether or not the text is bold.
+                            "baselineOffset": "A String", # The text's vertical offset from its normal position.
+                                #
+                                # Text with `SUPERSCRIPT` or `SUBSCRIPT` baseline offsets is automatically
+                                # rendered in a smaller font size, computed based on the `font_size` field.
+                                # The `font_size` itself is not affected by changes in this field.
+                            "strikethrough": True or False, # Whether or not the text is struck through.
+                            "smallCaps": True or False, # Whether or not the text is in small capital letters.
+                            "fontFamily": "A String", # The font family of the text.
+                                #
+                                # The font family can be any font from the Font menu in Slides or from
+                                # [Google Fonts] (https://fonts.google.com/). If the font name is
+                                # unrecognized, the text is rendered in `Arial`.
+                                #
+                                # Some fonts can affect the weight of the text. If an update request
+                                # specifies values for both `font_family` and `bold`, the explicitly-set
+                                # `bold` value is used.
+                            "link": { # A hypertext link. # The hyperlink destination of the text. If unset, there is no link. Links
+                                # are not inherited from parent text.
+                                #
+                                # Changing the link in an update request causes some other changes to the
+                                # text style of the range:
+                                #
+                                # * When setting a link, the text foreground color will be set to
+                                #   ThemeColorType.HYPERLINK and the text will
+                                #   be underlined. If these fields are modified in the same
+                                #   request, those values will be used instead of the link defaults.
+                                # * Setting a link on a text range that overlaps with an existing link will
+                                #   also update the existing link to point to the new URL.
+                                # * Links are not settable on newline characters. As a result, setting a link
+                                #   on a text range that crosses a paragraph boundary, such as `"ABC\n123"`,
+                                #   will separate the newline character(s) into their own text runs. The
+                                #   link will be applied separately to the runs before and after the newline.
+                                # * Removing a link will update the text style of the range to match the
+                                #   style of the preceding text (or the default text styles if the preceding
+                                #   text is another link) unless different styles are being set in the same
+                                #   request.
+                              "url": "A String", # If set, indicates this is a link to the external web page at this URL.
+                              "pageObjectId": "A String", # If set, indicates this is a link to the specific page in this
+                                  # presentation with this ID. A page with this ID may not exist.
+                              "slideIndex": 42, # If set, indicates this is a link to the slide at this zero-based index
+                                  # in the presentation. There may not be a slide at this index.
+                              "relativeLink": "A String", # If set, indicates this is a link to a slide in this presentation,
+                                  # addressed by its position.
+                            },
+                            "italic": True or False, # Whether or not the text is italicized.
+                            "fontSize": { # A magnitude in a single direction in the specified units. # The size of the text's font. When read, the `font_size` will specified in
+                                # points.
+                              "magnitude": 3.14, # The magnitude.
+                              "unit": "A String", # The units for magnitude.
+                            },
+                            "underline": True or False, # Whether or not the text is underlined.
+                            "backgroundColor": { # A color that can either be fully opaque or fully transparent. # The background color of the text. If set, the color is either opaque or
+                                # transparent, depending on if the `opaque_color` field in it is set.
+                              "opaqueColor": { # A themeable solid color value. # If set, this will be used as an opaque color. If unset, this represents
+                                  # a transparent color.
+                                "themeColor": "A String", # An opaque theme color.
+                                "rgbColor": { # An RGB color. # An opaque RGB color.
+                                  "blue": 3.14, # The blue component of the color, from 0.0 to 1.0.
+                                  "green": 3.14, # The green component of the color, from 0.0 to 1.0.
+                                  "red": 3.14, # The red component of the color, from 0.0 to 1.0.
+                                },
+                              },
+                            },
+                          },
+                        },
+                      },
+                      "listId": "A String", # The ID of the list.
+                    },
+                  },
+                },
+                "shapeProperties": { # The properties of a Shape. # The properties of the shape.
+                    #
+                    # If the shape is a placeholder shape as determined by the
+                    # placeholder field, then these
+                    # properties may be inherited from a parent placeholder shape.
+                    # Determining the rendered value of the property depends on the corresponding
+                    # property_state field value.
+                  "shadow": { # The shadow properties of a page element. # The shadow properties of the shape. If unset, the shadow is inherited from
+                      # a parent placeholder if it exists. If the shape has no parent, then the
+                      # default shadow matches the defaults for new shapes created in the Slides
+                      # editor. This property is read-only.
+                      #
+                      # If these fields are unset, they may be inherited from a parent placeholder
+                      # if it exists. If there is no parent, the fields will default to the value
+                      # used for new page elements created in the Slides editor, which may depend on
+                      # the page element kind.
+                    "color": { # A themeable solid color value. # The shadow color value.
+                      "themeColor": "A String", # An opaque theme color.
+                      "rgbColor": { # An RGB color. # An opaque RGB color.
+                        "blue": 3.14, # The blue component of the color, from 0.0 to 1.0.
+                        "green": 3.14, # The green component of the color, from 0.0 to 1.0.
+                        "red": 3.14, # The red component of the color, from 0.0 to 1.0.
+                      },
+                    },
+                    "transform": { # AffineTransform uses a 3x3 matrix with an implied last row of [ 0 0 1 ] # Transform that encodes the translate, scale, and skew of the shadow,
+                        # relative to the alignment position.
+                        # to transform source coordinates (x,y) into destination coordinates (x', y')
+                        # according to:
+                        #
+                        #       x'  x  =   shear_y  scale_y  translate_y
+                        #       1  [ 1 ]
+                        #
+                        # After transformation,
+                        #
+                        #      x' = scale_x * x + shear_x * y + translate_x;
+                        #      y' = scale_y * y + shear_y * x + translate_y;
+                        #
+                        # This message is therefore composed of these six matrix elements.
+                      "translateX": 3.14, # The X coordinate translation element.
+                      "translateY": 3.14, # The Y coordinate translation element.
+                      "scaleX": 3.14, # The X coordinate scaling element.
+                      "scaleY": 3.14, # The Y coordinate scaling element.
+                      "shearY": 3.14, # The Y coordinate shearing element.
+                      "shearX": 3.14, # The X coordinate shearing element.
+                      "unit": "A String", # The units for translate elements.
+                    },
+                    "propertyState": "A String", # The shadow property state.
+                        #
+                        # Updating the the shadow on a page element will implicitly update this field
+                        # to `RENDERED`, unless another value is specified in the same request. To
+                        # have no shadow on a page element, set this field to `NOT_RENDERED`. In this
+                        # case, any other shadow fields set in the same request will be ignored.
+                    "blurRadius": { # A magnitude in a single direction in the specified units. # The radius of the shadow blur. The larger the radius, the more diffuse the
+                        # shadow becomes.
+                      "magnitude": 3.14, # The magnitude.
+                      "unit": "A String", # The units for magnitude.
+                    },
+                    "alpha": 3.14, # The alpha of the shadow's color, from 0.0 to 1.0.
+                    "type": "A String", # The type of the shadow.
+                    "alignment": "A String", # The alignment point of the shadow, that sets the origin for translate,
+                        # scale and skew of the shadow.
+                    "rotateWithShape": True or False, # Whether the shadow should rotate with the shape.
+                  },
+                  "shapeBackgroundFill": { # The shape background fill. # The background fill of the shape. If unset, the background fill is
+                      # inherited from a parent placeholder if it exists. If the shape has no
+                      # parent, then the default background fill depends on the shape type,
+                      # matching the defaults for new shapes created in the Slides editor.
+                    "solidFill": { # A solid color fill. The page or page element is filled entirely with the # Solid color fill.
+                        # specified color value.
+                        #
+                        # If any field is unset, its value may be inherited from a parent placeholder
+                        # if it exists.
+                      "color": { # A themeable solid color value. # The color value of the solid fill.
+                        "themeColor": "A String", # An opaque theme color.
+                        "rgbColor": { # An RGB color. # An opaque RGB color.
+                          "blue": 3.14, # The blue component of the color, from 0.0 to 1.0.
+                          "green": 3.14, # The green component of the color, from 0.0 to 1.0.
+                          "red": 3.14, # The red component of the color, from 0.0 to 1.0.
+                        },
+                      },
+                      "alpha": 3.14, # The fraction of this `color` that should be applied to the pixel.
+                          # That is, the final pixel color is defined by the equation:
+                          #
+                          #   pixel color = alpha * (color) + (1.0 - alpha) * (background color)
+                          #
+                          # This means that a value of 1.0 corresponds to a solid color, whereas
+                          # a value of 0.0 corresponds to a completely transparent color.
+                    },
+                    "propertyState": "A String", # The background fill property state.
+                        #
+                        # Updating the the fill on a shape will implicitly update this field to
+                        # `RENDERED`, unless another value is specified in the same request. To
+                        # have no fill on a shape, set this field to `NOT_RENDERED`. In this case,
+                        # any other fill fields set in the same request will be ignored.
+                  },
+                  "link": { # A hypertext link. # The hyperlink destination of the shape. If unset, there is no link. Links
+                      # are not inherited from parent placeholders.
+                    "url": "A String", # If set, indicates this is a link to the external web page at this URL.
+                    "pageObjectId": "A String", # If set, indicates this is a link to the specific page in this
+                        # presentation with this ID. A page with this ID may not exist.
+                    "slideIndex": 42, # If set, indicates this is a link to the slide at this zero-based index
+                        # in the presentation. There may not be a slide at this index.
+                    "relativeLink": "A String", # If set, indicates this is a link to a slide in this presentation,
+                        # addressed by its position.
+                  },
+                  "outline": { # The outline of a PageElement. # The outline of the shape. If unset, the outline is inherited from a
+                      # parent placeholder if it exists. If the shape has no parent, then the
+                      # default outline depends on the shape type, matching the defaults for
+                      # new shapes created in the Slides editor.
+                      #
+                      # If these fields are unset, they may be inherited from a parent placeholder
+                      # if it exists. If there is no parent, the fields will default to the value
+                      # used for new page elements created in the Slides editor, which may depend on
+                      # the page element kind.
+                    "dashStyle": "A String", # The dash style of the outline.
+                    "propertyState": "A String", # The outline property state.
+                        #
+                        # Updating the the outline on a page element will implicitly update this
+                        # field to`RENDERED`, unless another value is specified in the same request.
+                        # To have no outline on a page element, set this field to `NOT_RENDERED`. In
+                        # this case, any other outline fields set in the same request will be
+                        # ignored.
+                    "outlineFill": { # The fill of the outline. # The fill of the outline.
+                      "solidFill": { # A solid color fill. The page or page element is filled entirely with the # Solid color fill.
+                          # specified color value.
+                          #
+                          # If any field is unset, its value may be inherited from a parent placeholder
+                          # if it exists.
+                        "color": { # A themeable solid color value. # The color value of the solid fill.
+                          "themeColor": "A String", # An opaque theme color.
+                          "rgbColor": { # An RGB color. # An opaque RGB color.
+                            "blue": 3.14, # The blue component of the color, from 0.0 to 1.0.
+                            "green": 3.14, # The green component of the color, from 0.0 to 1.0.
+                            "red": 3.14, # The red component of the color, from 0.0 to 1.0.
+                          },
+                        },
+                        "alpha": 3.14, # The fraction of this `color` that should be applied to the pixel.
+                            # That is, the final pixel color is defined by the equation:
+                            #
+                            #   pixel color = alpha * (color) + (1.0 - alpha) * (background color)
+                            #
+                            # This means that a value of 1.0 corresponds to a solid color, whereas
+                            # a value of 0.0 corresponds to a completely transparent color.
+                      },
+                    },
+                    "weight": { # A magnitude in a single direction in the specified units. # The thickness of the outline.
+                      "magnitude": 3.14, # The magnitude.
+                      "unit": "A String", # The units for magnitude.
+                    },
+                  },
+                },
+                "placeholder": { # The placeholder information that uniquely identifies a placeholder shape. # Placeholders are shapes that are inherit from corresponding placeholders on
+                    # layouts and masters.
+                    #
+                    # If set, the shape is a placeholder shape and any inherited properties
+                    # can be resolved by looking at the parent placeholder identified by the
+                    # Placeholder.parent_object_id field.
+                  "parentObjectId": "A String", # The object ID of this shape's parent placeholder.
+                      # If unset, the parent placeholder shape does not exist, so the shape does
+                      # not inherit properties from any other shape.
+                  "index": 42, # The index of the placeholder. If the same placeholder types are the present
+                      # in the same page, they would have different index values.
+                  "type": "A String", # The type of the placeholder.
+                },
+                "shapeType": "A String", # The type of the shape.
+              },
+              "sheetsChart": { # A PageElement kind representing # A linked chart embedded from Google Sheets. Unlinked charts are
+                  # represented as images.
+                  # a linked chart embedded from Google Sheets.
+                "chartId": 42, # The ID of the specific chart in the Google Sheets spreadsheet that is
+                    # embedded.
+                "spreadsheetId": "A String", # The ID of the Google Sheets spreadsheet that contains the source chart.
+                "sheetsChartProperties": { # The properties of the SheetsChart. # The properties of the Sheets chart.
+                  "chartImageProperties": { # The properties of the Image. # The properties of the embedded chart image.
+                    "outline": { # The outline of a PageElement. # The outline of the image. If not set, the the image has no outline.
+                        #
+                        # If these fields are unset, they may be inherited from a parent placeholder
+                        # if it exists. If there is no parent, the fields will default to the value
+                        # used for new page elements created in the Slides editor, which may depend on
+                        # the page element kind.
+                      "dashStyle": "A String", # The dash style of the outline.
+                      "propertyState": "A String", # The outline property state.
+                          #
+                          # Updating the the outline on a page element will implicitly update this
+                          # field to`RENDERED`, unless another value is specified in the same request.
+                          # To have no outline on a page element, set this field to `NOT_RENDERED`. In
+                          # this case, any other outline fields set in the same request will be
+                          # ignored.
+                      "outlineFill": { # The fill of the outline. # The fill of the outline.
+                        "solidFill": { # A solid color fill. The page or page element is filled entirely with the # Solid color fill.
+                            # specified color value.
+                            #
+                            # If any field is unset, its value may be inherited from a parent placeholder
+                            # if it exists.
+                          "color": { # A themeable solid color value. # The color value of the solid fill.
+                            "themeColor": "A String", # An opaque theme color.
+                            "rgbColor": { # An RGB color. # An opaque RGB color.
+                              "blue": 3.14, # The blue component of the color, from 0.0 to 1.0.
+                              "green": 3.14, # The green component of the color, from 0.0 to 1.0.
+                              "red": 3.14, # The red component of the color, from 0.0 to 1.0.
+                            },
+                          },
+                          "alpha": 3.14, # The fraction of this `color` that should be applied to the pixel.
+                              # That is, the final pixel color is defined by the equation:
+                              #
+                              #   pixel color = alpha * (color) + (1.0 - alpha) * (background color)
+                              #
+                              # This means that a value of 1.0 corresponds to a solid color, whereas
+                              # a value of 0.0 corresponds to a completely transparent color.
+                        },
+                      },
+                      "weight": { # A magnitude in a single direction in the specified units. # The thickness of the outline.
+                        "magnitude": 3.14, # The magnitude.
+                        "unit": "A String", # The units for magnitude.
+                      },
+                    },
+                    "brightness": 3.14, # The brightness effect of the image. The value should be in the interval
+                        # [-1.0, 1.0], where 0 means no effect. This property is read-only.
+                    "recolor": { # A recolor effect applied on an image. # The recolor effect of the image. If not set, the image is not recolored.
+                        # This property is read-only.
+                      "recolorStops": [ # The recolor effect is represented by a gradient, which is a list of color
+                          # stops. This property is read-only.
+                        { # A color and position in a gradient band.
+                          "color": { # A themeable solid color value. # The color of the gradient stop.
+                            "themeColor": "A String", # An opaque theme color.
+                            "rgbColor": { # An RGB color. # An opaque RGB color.
+                              "blue": 3.14, # The blue component of the color, from 0.0 to 1.0.
+                              "green": 3.14, # The green component of the color, from 0.0 to 1.0.
+                              "red": 3.14, # The red component of the color, from 0.0 to 1.0.
+                            },
+                          },
+                          "position": 3.14, # The relative position of the color stop in the gradient band measured
+                              # in percentage. The value should be in the interval [0.0, 1.0].
+                          "alpha": 3.14, # The alpha value of this color in the gradient band. Defaults to 1.0,
+                              # fully opaque.
+                        },
+                      ],
+                    },
+                    "link": { # A hypertext link. # The hyperlink destination of the image. If unset, there is no link.
+                      "url": "A String", # If set, indicates this is a link to the external web page at this URL.
+                      "pageObjectId": "A String", # If set, indicates this is a link to the specific page in this
+                          # presentation with this ID. A page with this ID may not exist.
+                      "slideIndex": 42, # If set, indicates this is a link to the slide at this zero-based index
+                          # in the presentation. There may not be a slide at this index.
+                      "relativeLink": "A String", # If set, indicates this is a link to a slide in this presentation,
+                          # addressed by its position.
+                    },
+                    "transparency": 3.14, # The transparency effect of the image. The value should be in the interval
+                        # [0.0, 1.0], where 0 means no effect and 1 means completely transparent.
+                        # This property is read-only.
+                    "cropProperties": { # The crop properties of an object enclosed in a container. For example, an # The crop properties of the image. If not set, the image is not cropped.
+                        # This property is read-only.
+                        # Image.
+                        #
+                        # The crop properties is represented by the offsets of four edges which define
+                        # a crop rectangle. The offsets are measured in percentage from the
+                        # corresponding edges of the object's original bounding rectangle towards
+                        # inside, relative to the object's original dimensions.
+                        #
+                        # - If the offset is in the interval (0, 1), the corresponding edge of crop
+                        # rectangle is positioned inside of the object's original bounding rectangle.
+                        # - If the offset is negative or greater than 1, the corresponding edge of crop
+                        # rectangle is positioned outside of the object's original bounding rectangle.
+                        # - If the left edge of the crop rectangle is on the right side of its right
+                        # edge, the object will be flipped horizontally.
+                        # - If the top edge of the crop rectangle is below its bottom edge, the object
+                        # will be flipped vertically.
+                        # - If all offsets and rotation angle is 0, the object is not cropped.
+                        #
+                        # After cropping, the content in the crop rectangle will be stretched to fit
+                        # its container.
+                      "leftOffset": 3.14, # The offset specifies the left edge of the crop rectangle that is located to
+                          # the right of the original bounding rectangle left edge, relative to the
+                          # object's original width.
+                      "angle": 3.14, # The rotation angle of the crop window around its center, in radians.
+                          # Rotation angle is applied after the offset.
+                      "bottomOffset": 3.14, # The offset specifies the bottom edge of the crop rectangle that is located
+                          # above the original bounding rectangle bottom edge, relative to the object's
+                          # original height.
+                      "rightOffset": 3.14, # The offset specifies the right edge of the crop rectangle that is located
+                          # to the left of the original bounding rectangle right edge, relative to the
+                          # object's original width.
+                      "topOffset": 3.14, # The offset specifies the top edge of the crop rectangle that is located
+                          # below the original bounding rectangle top edge, relative to the object's
+                          # original height.
+                    },
+                    "shadow": { # The shadow properties of a page element. # The shadow of the image. If not set, the image has no shadow. This property
+                        # is read-only.
+                        #
+                        # If these fields are unset, they may be inherited from a parent placeholder
+                        # if it exists. If there is no parent, the fields will default to the value
+                        # used for new page elements created in the Slides editor, which may depend on
+                        # the page element kind.
+                      "color": { # A themeable solid color value. # The shadow color value.
+                        "themeColor": "A String", # An opaque theme color.
+                        "rgbColor": { # An RGB color. # An opaque RGB color.
+                          "blue": 3.14, # The blue component of the color, from 0.0 to 1.0.
+                          "green": 3.14, # The green component of the color, from 0.0 to 1.0.
+                          "red": 3.14, # The red component of the color, from 0.0 to 1.0.
+                        },
+                      },
+                      "transform": { # AffineTransform uses a 3x3 matrix with an implied last row of [ 0 0 1 ] # Transform that encodes the translate, scale, and skew of the shadow,
+                          # relative to the alignment position.
+                          # to transform source coordinates (x,y) into destination coordinates (x', y')
+                          # according to:
+                          #
+                          #       x'  x  =   shear_y  scale_y  translate_y
+                          #       1  [ 1 ]
+                          #
+                          # After transformation,
+                          #
+                          #      x' = scale_x * x + shear_x * y + translate_x;
+                          #      y' = scale_y * y + shear_y * x + translate_y;
+                          #
+                          # This message is therefore composed of these six matrix elements.
+                        "translateX": 3.14, # The X coordinate translation element.
+                        "translateY": 3.14, # The Y coordinate translation element.
+                        "scaleX": 3.14, # The X coordinate scaling element.
+                        "scaleY": 3.14, # The Y coordinate scaling element.
+                        "shearY": 3.14, # The Y coordinate shearing element.
+                        "shearX": 3.14, # The X coordinate shearing element.
+                        "unit": "A String", # The units for translate elements.
+                      },
+                      "propertyState": "A String", # The shadow property state.
+                          #
+                          # Updating the the shadow on a page element will implicitly update this field
+                          # to `RENDERED`, unless another value is specified in the same request. To
+                          # have no shadow on a page element, set this field to `NOT_RENDERED`. In this
+                          # case, any other shadow fields set in the same request will be ignored.
+                      "blurRadius": { # A magnitude in a single direction in the specified units. # The radius of the shadow blur. The larger the radius, the more diffuse the
+                          # shadow becomes.
+                        "magnitude": 3.14, # The magnitude.
+                        "unit": "A String", # The units for magnitude.
+                      },
+                      "alpha": 3.14, # The alpha of the shadow's color, from 0.0 to 1.0.
+                      "type": "A String", # The type of the shadow.
+                      "alignment": "A String", # The alignment point of the shadow, that sets the origin for translate,
+                          # scale and skew of the shadow.
+                      "rotateWithShape": True or False, # Whether the shadow should rotate with the shape.
+                    },
+                    "contrast": 3.14, # The contrast effect of the image. The value should be in the interval
+                        # [-1.0, 1.0], where 0 means no effect. This property is read-only.
+                  },
+                },
+                "contentUrl": "A String", # The URL of an image of the embedded chart, with a default lifetime of 30
+                    # minutes. This URL is tagged with the account of the requester. Anyone with
+                    # the URL effectively accesses the image as the original requester. Access to
+                    # the image may be lost if the presentation's sharing settings change.
+              },
+              "video": { # A PageElement kind representing a # A video page element.
+                  # video.
+                "url": "A String", # An URL to a video. The URL is valid as long as the source video
+                    # exists and sharing settings do not change.
+                "videoProperties": { # The properties of the Video. # The properties of the video.
+                  "outline": { # The outline of a PageElement. # The outline of the video. The default outline matches the defaults for new
+                      # videos created in the Slides editor.
+                      #
+                      # If these fields are unset, they may be inherited from a parent placeholder
+                      # if it exists. If there is no parent, the fields will default to the value
+                      # used for new page elements created in the Slides editor, which may depend on
+                      # the page element kind.
+                    "dashStyle": "A String", # The dash style of the outline.
+                    "propertyState": "A String", # The outline property state.
+                        #
+                        # Updating the the outline on a page element will implicitly update this
+                        # field to`RENDERED`, unless another value is specified in the same request.
+                        # To have no outline on a page element, set this field to `NOT_RENDERED`. In
+                        # this case, any other outline fields set in the same request will be
+                        # ignored.
+                    "outlineFill": { # The fill of the outline. # The fill of the outline.
+                      "solidFill": { # A solid color fill. The page or page element is filled entirely with the # Solid color fill.
+                          # specified color value.
+                          #
+                          # If any field is unset, its value may be inherited from a parent placeholder
+                          # if it exists.
+                        "color": { # A themeable solid color value. # The color value of the solid fill.
+                          "themeColor": "A String", # An opaque theme color.
+                          "rgbColor": { # An RGB color. # An opaque RGB color.
+                            "blue": 3.14, # The blue component of the color, from 0.0 to 1.0.
+                            "green": 3.14, # The green component of the color, from 0.0 to 1.0.
+                            "red": 3.14, # The red component of the color, from 0.0 to 1.0.
+                          },
+                        },
+                        "alpha": 3.14, # The fraction of this `color` that should be applied to the pixel.
+                            # That is, the final pixel color is defined by the equation:
+                            #
+                            #   pixel color = alpha * (color) + (1.0 - alpha) * (background color)
+                            #
+                            # This means that a value of 1.0 corresponds to a solid color, whereas
+                            # a value of 0.0 corresponds to a completely transparent color.
+                      },
+                    },
+                    "weight": { # A magnitude in a single direction in the specified units. # The thickness of the outline.
+                      "magnitude": 3.14, # The magnitude.
+                      "unit": "A String", # The units for magnitude.
+                    },
+                  },
+                },
+                "id": "A String", # The video source's unique identifier for this video.
+                "source": "A String", # The video source.
+              },
+              "table": { # A PageElement kind representing a # A table page element.
+                  # table.
+                "tableColumns": [ # Properties of each column.
+                  { # Properties of each column in a table.
+                    "columnWidth": { # A magnitude in a single direction in the specified units. # Width of a column.
+                      "magnitude": 3.14, # The magnitude.
+                      "unit": "A String", # The units for magnitude.
+                    },
+                  },
+                ],
+                "tableRows": [ # Properties and contents of each row.
+                    #
+                    # Cells that span multiple rows are contained in only one of these rows and
+                    # have a row_span greater
+                    # than 1.
+                  { # Properties and contents of each row in a table.
+                    "tableCells": [ # Properties and contents of each cell.
+                        #
+                        # Cells that span multiple columns are represented only once with a
+                        # column_span greater
+                        # than 1. As a result, the length of this collection does not always match
+                        # the number of columns of the entire table.
+                      { # Properties and contents of each table cell.
+                        "text": { # The general text content. The text must reside in a compatible shape (e.g. # The text content of the cell.
+                            # text box or rectangle) or a table cell in a page.
+                          "textElements": [ # The text contents broken down into its component parts, including styling
+                              # information. This property is read-only.
+                            { # A TextElement describes the content of a range of indices in the text content
+                                # of a Shape or TableCell.
+                              "autoText": { # A TextElement kind that represents auto text. # A TextElement representing a spot in the text that is dynamically
+                                  # replaced with content that can change over time.
+                                "content": "A String", # The rendered content of this auto text, if available.
+                                "style": { # Represents the styling that can be applied to a TextRun. # The styling applied to this auto text.
+                                    #
+                                    # If this text is contained in a shape with a parent placeholder, then these text styles may be
+                                    # inherited from the parent. Which text styles are inherited depend on the
+                                    # nesting level of lists:
+                                    #
+                                    # * A text run in a paragraph that is not in a list will inherit its text style
+                                    #   from the the newline character in the paragraph at the 0 nesting level of
+                                    #   the list inside the parent placeholder.
+                                    # * A text run in a paragraph that is in a list will inherit its text style
+                                    #   from the newline character in the paragraph at its corresponding nesting
+                                    #   level of the list inside the parent placeholder.
+                                    #
+                                    # Inherited text styles are represented as unset fields in this message. If
+                                    # text is contained in a shape without a parent placeholder, unsetting these
+                                    # fields will revert the style to a value matching the defaults in the Slides
+                                    # editor.
+                                  "foregroundColor": { # A color that can either be fully opaque or fully transparent. # The color of the text itself. If set, the color is either opaque or
+                                      # transparent, depending on if the `opaque_color` field in it is set.
+                                    "opaqueColor": { # A themeable solid color value. # If set, this will be used as an opaque color. If unset, this represents
+                                        # a transparent color.
+                                      "themeColor": "A String", # An opaque theme color.
+                                      "rgbColor": { # An RGB color. # An opaque RGB color.
+                                        "blue": 3.14, # The blue component of the color, from 0.0 to 1.0.
+                                        "green": 3.14, # The green component of the color, from 0.0 to 1.0.
+                                        "red": 3.14, # The red component of the color, from 0.0 to 1.0.
+                                      },
+                                    },
+                                  },
+                                  "bold": True or False, # Whether or not the text is bold.
+                                  "baselineOffset": "A String", # The text's vertical offset from its normal position.
+                                      #
+                                      # Text with `SUPERSCRIPT` or `SUBSCRIPT` baseline offsets is automatically
+                                      # rendered in a smaller font size, computed based on the `font_size` field.
+                                      # The `font_size` itself is not affected by changes in this field.
+                                  "strikethrough": True or False, # Whether or not the text is struck through.
+                                  "smallCaps": True or False, # Whether or not the text is in small capital letters.
+                                  "fontFamily": "A String", # The font family of the text.
+                                      #
+                                      # The font family can be any font from the Font menu in Slides or from
+                                      # [Google Fonts] (https://fonts.google.com/). If the font name is
+                                      # unrecognized, the text is rendered in `Arial`.
+                                      #
+                                      # Some fonts can affect the weight of the text. If an update request
+                                      # specifies values for both `font_family` and `bold`, the explicitly-set
+                                      # `bold` value is used.
+                                  "link": { # A hypertext link. # The hyperlink destination of the text. If unset, there is no link. Links
+                                      # are not inherited from parent text.
+                                      #
+                                      # Changing the link in an update request causes some other changes to the
+                                      # text style of the range:
+                                      #
+                                      # * When setting a link, the text foreground color will be set to
+                                      #   ThemeColorType.HYPERLINK and the text will
+                                      #   be underlined. If these fields are modified in the same
+                                      #   request, those values will be used instead of the link defaults.
+                                      # * Setting a link on a text range that overlaps with an existing link will
+                                      #   also update the existing link to point to the new URL.
+                                      # * Links are not settable on newline characters. As a result, setting a link
+                                      #   on a text range that crosses a paragraph boundary, such as `"ABC\n123"`,
+                                      #   will separate the newline character(s) into their own text runs. The
+                                      #   link will be applied separately to the runs before and after the newline.
+                                      # * Removing a link will update the text style of the range to match the
+                                      #   style of the preceding text (or the default text styles if the preceding
+                                      #   text is another link) unless different styles are being set in the same
+                                      #   request.
+                                    "url": "A String", # If set, indicates this is a link to the external web page at this URL.
+                                    "pageObjectId": "A String", # If set, indicates this is a link to the specific page in this
+                                        # presentation with this ID. A page with this ID may not exist.
+                                    "slideIndex": 42, # If set, indicates this is a link to the slide at this zero-based index
+                                        # in the presentation. There may not be a slide at this index.
+                                    "relativeLink": "A String", # If set, indicates this is a link to a slide in this presentation,
+                                        # addressed by its position.
+                                  },
+                                  "italic": True or False, # Whether or not the text is italicized.
+                                  "fontSize": { # A magnitude in a single direction in the specified units. # The size of the text's font. When read, the `font_size` will specified in
+                                      # points.
+                                    "magnitude": 3.14, # The magnitude.
+                                    "unit": "A String", # The units for magnitude.
+                                  },
+                                  "underline": True or False, # Whether or not the text is underlined.
+                                  "backgroundColor": { # A color that can either be fully opaque or fully transparent. # The background color of the text. If set, the color is either opaque or
+                                      # transparent, depending on if the `opaque_color` field in it is set.
+                                    "opaqueColor": { # A themeable solid color value. # If set, this will be used as an opaque color. If unset, this represents
+                                        # a transparent color.
+                                      "themeColor": "A String", # An opaque theme color.
+                                      "rgbColor": { # An RGB color. # An opaque RGB color.
+                                        "blue": 3.14, # The blue component of the color, from 0.0 to 1.0.
+                                        "green": 3.14, # The green component of the color, from 0.0 to 1.0.
+                                        "red": 3.14, # The red component of the color, from 0.0 to 1.0.
+                                      },
+                                    },
+                                  },
+                                },
+                                "type": "A String", # The type of this auto text.
+                              },
+                              "endIndex": 42, # The zero-based end index of this text element, exclusive, in Unicode code
+                                  # units.
+                              "startIndex": 42, # The zero-based start index of this text element, in Unicode code units.
+                              "paragraphMarker": { # A TextElement kind that represents the beginning of a new paragraph. # A marker representing the beginning of a new paragraph.
+                                  #
+                                  # The `start_index` and `end_index` of this TextElement represent the
+                                  # range of the paragraph. Other TextElements with an index range contained
+                                  # inside this paragraph's range are considered to be part of this
+                                  # paragraph. The range of indices of two separate paragraphs will never
+                                  # overlap.
+                                "style": { # Styles that apply to a whole paragraph. # The paragraph's style
+                                    #
+                                    # If this text is contained in a shape with a parent placeholder, then these paragraph styles may be
+                                    # inherited from the parent. Which paragraph styles are inherited depend on the
+                                    # nesting level of lists:
+                                    #
+                                    # * A paragraph not in a list will inherit its paragraph style from the
+                                    #   paragraph at the 0 nesting level of the list inside the parent placeholder.
+                                    # * A paragraph in a list will inherit its paragraph style from the paragraph
+                                    #   at its corresponding nesting level of the list inside the parent
+                                    #   placeholder.
+                                    #
+                                    # Inherited paragraph styles are represented as unset fields in this message.
+                                  "spacingMode": "A String", # The spacing mode for the paragraph. This property is read-only.
+                                  "direction": "A String", # The text direction of this paragraph. This property is read-only.
+                                  "spaceBelow": { # A magnitude in a single direction in the specified units. # The amount of extra space above the paragraph. If unset, the value is
+                                      # inherited from the parent. This property is read-only.
+                                    "magnitude": 3.14, # The magnitude.
+                                    "unit": "A String", # The units for magnitude.
+                                  },
+                                  "lineSpacing": 3.14, # The amount of space between lines, as a percentage of normal, where normal
+                                      # is represented as 100.0. If unset, the value is inherited from the parent.
+                                      # This property is read-only.
+                                  "indentStart": { # A magnitude in a single direction in the specified units. # The amount indentation for the paragraph on the side that corresponds to
+                                      # the start of the text, based on the current text direction. If unset, the
+                                      # value is inherited from the parent. This property is read-only.
+                                    "magnitude": 3.14, # The magnitude.
+                                    "unit": "A String", # The units for magnitude.
+                                  },
+                                  "spaceAbove": { # A magnitude in a single direction in the specified units. # The amount of extra space above the paragraph. If unset, the value is
+                                      # inherited from the parent. This property is read-only.
+                                    "magnitude": 3.14, # The magnitude.
+                                    "unit": "A String", # The units for magnitude.
+                                  },
+                                  "indentEnd": { # A magnitude in a single direction in the specified units. # The amount indentation for the paragraph on the side that corresponds to
+                                      # the end of the text, based on the current text direction. If unset, the
+                                      # value is inherited from the parent. This property is read-only.
+                                    "magnitude": 3.14, # The magnitude.
+                                    "unit": "A String", # The units for magnitude.
+                                  },
+                                  "indentFirstLine": { # A magnitude in a single direction in the specified units. # The amount of indentation for the start of the first line of the paragraph.
+                                      # If unset, the value is inherited from the parent. This property is
+                                      # read-only.
+                                    "magnitude": 3.14, # The magnitude.
+                                    "unit": "A String", # The units for magnitude.
+                                  },
+                                  "alignment": "A String", # The text alignment for this paragraph. This property is read-only.
+                                },
+                                "bullet": { # Describes the bullet of a paragraph. # The bullet for this paragraph. If not present, the paragraph does not
+                                    # belong to a list.
+                                  "nestingLevel": 42, # The nesting level of this paragraph in the list.
+                                  "listId": "A String", # The ID of the list this paragraph belongs to.
+                                  "bulletStyle": { # Represents the styling that can be applied to a TextRun. # The paragraph specific text style applied to this bullet.
+                                      #
+                                      # If this text is contained in a shape with a parent placeholder, then these text styles may be
+                                      # inherited from the parent. Which text styles are inherited depend on the
+                                      # nesting level of lists:
+                                      #
+                                      # * A text run in a paragraph that is not in a list will inherit its text style
+                                      #   from the the newline character in the paragraph at the 0 nesting level of
+                                      #   the list inside the parent placeholder.
+                                      # * A text run in a paragraph that is in a list will inherit its text style
+                                      #   from the newline character in the paragraph at its corresponding nesting
+                                      #   level of the list inside the parent placeholder.
+                                      #
+                                      # Inherited text styles are represented as unset fields in this message. If
+                                      # text is contained in a shape without a parent placeholder, unsetting these
+                                      # fields will revert the style to a value matching the defaults in the Slides
+                                      # editor.
+                                    "foregroundColor": { # A color that can either be fully opaque or fully transparent. # The color of the text itself. If set, the color is either opaque or
+                                        # transparent, depending on if the `opaque_color` field in it is set.
+                                      "opaqueColor": { # A themeable solid color value. # If set, this will be used as an opaque color. If unset, this represents
+                                          # a transparent color.
+                                        "themeColor": "A String", # An opaque theme color.
+                                        "rgbColor": { # An RGB color. # An opaque RGB color.
+                                          "blue": 3.14, # The blue component of the color, from 0.0 to 1.0.
+                                          "green": 3.14, # The green component of the color, from 0.0 to 1.0.
+                                          "red": 3.14, # The red component of the color, from 0.0 to 1.0.
+                                        },
+                                      },
+                                    },
+                                    "bold": True or False, # Whether or not the text is bold.
+                                    "baselineOffset": "A String", # The text's vertical offset from its normal position.
+                                        #
+                                        # Text with `SUPERSCRIPT` or `SUBSCRIPT` baseline offsets is automatically
+                                        # rendered in a smaller font size, computed based on the `font_size` field.
+                                        # The `font_size` itself is not affected by changes in this field.
+                                    "strikethrough": True or False, # Whether or not the text is struck through.
+                                    "smallCaps": True or False, # Whether or not the text is in small capital letters.
+                                    "fontFamily": "A String", # The font family of the text.
+                                        #
+                                        # The font family can be any font from the Font menu in Slides or from
+                                        # [Google Fonts] (https://fonts.google.com/). If the font name is
+                                        # unrecognized, the text is rendered in `Arial`.
+                                        #
+                                        # Some fonts can affect the weight of the text. If an update request
+                                        # specifies values for both `font_family` and `bold`, the explicitly-set
+                                        # `bold` value is used.
+                                    "link": { # A hypertext link. # The hyperlink destination of the text. If unset, there is no link. Links
+                                        # are not inherited from parent text.
+                                        #
+                                        # Changing the link in an update request causes some other changes to the
+                                        # text style of the range:
+                                        #
+                                        # * When setting a link, the text foreground color will be set to
+                                        #   ThemeColorType.HYPERLINK and the text will
+                                        #   be underlined. If these fields are modified in the same
+                                        #   request, those values will be used instead of the link defaults.
+                                        # * Setting a link on a text range that overlaps with an existing link will
+                                        #   also update the existing link to point to the new URL.
+                                        # * Links are not settable on newline characters. As a result, setting a link
+                                        #   on a text range that crosses a paragraph boundary, such as `"ABC\n123"`,
+                                        #   will separate the newline character(s) into their own text runs. The
+                                        #   link will be applied separately to the runs before and after the newline.
+                                        # * Removing a link will update the text style of the range to match the
+                                        #   style of the preceding text (or the default text styles if the preceding
+                                        #   text is another link) unless different styles are being set in the same
+                                        #   request.
+                                      "url": "A String", # If set, indicates this is a link to the external web page at this URL.
+                                      "pageObjectId": "A String", # If set, indicates this is a link to the specific page in this
+                                          # presentation with this ID. A page with this ID may not exist.
+                                      "slideIndex": 42, # If set, indicates this is a link to the slide at this zero-based index
+                                          # in the presentation. There may not be a slide at this index.
+                                      "relativeLink": "A String", # If set, indicates this is a link to a slide in this presentation,
+                                          # addressed by its position.
+                                    },
+                                    "italic": True or False, # Whether or not the text is italicized.
+                                    "fontSize": { # A magnitude in a single direction in the specified units. # The size of the text's font. When read, the `font_size` will specified in
+                                        # points.
+                                      "magnitude": 3.14, # The magnitude.
+                                      "unit": "A String", # The units for magnitude.
+                                    },
+                                    "underline": True or False, # Whether or not the text is underlined.
+                                    "backgroundColor": { # A color that can either be fully opaque or fully transparent. # The background color of the text. If set, the color is either opaque or
+                                        # transparent, depending on if the `opaque_color` field in it is set.
+                                      "opaqueColor": { # A themeable solid color value. # If set, this will be used as an opaque color. If unset, this represents
+                                          # a transparent color.
+                                        "themeColor": "A String", # An opaque theme color.
+                                        "rgbColor": { # An RGB color. # An opaque RGB color.
+                                          "blue": 3.14, # The blue component of the color, from 0.0 to 1.0.
+                                          "green": 3.14, # The green component of the color, from 0.0 to 1.0.
+                                          "red": 3.14, # The red component of the color, from 0.0 to 1.0.
+                                        },
+                                      },
+                                    },
+                                  },
+                                  "glyph": "A String", # The rendered bullet glyph for this paragraph.
+                                },
+                              },
+                              "textRun": { # A TextElement kind that represents a run of text that all has the same # A TextElement representing a run of text where all of the characters
+                                  # in the run have the same TextStyle.
+                                  #
+                                  # The `start_index` and `end_index` of TextRuns will always be fully
+                                  # contained in the index range of a single `paragraph_marker` TextElement.
+                                  # In other words, a TextRun will never span multiple paragraphs.
+                                  # styling.
+                                "content": "A String", # The text of this run.
+                                "style": { # Represents the styling that can be applied to a TextRun. # The styling applied to this run.
+                                    #
+                                    # If this text is contained in a shape with a parent placeholder, then these text styles may be
+                                    # inherited from the parent. Which text styles are inherited depend on the
+                                    # nesting level of lists:
+                                    #
+                                    # * A text run in a paragraph that is not in a list will inherit its text style
+                                    #   from the the newline character in the paragraph at the 0 nesting level of
+                                    #   the list inside the parent placeholder.
+                                    # * A text run in a paragraph that is in a list will inherit its text style
+                                    #   from the newline character in the paragraph at its corresponding nesting
+                                    #   level of the list inside the parent placeholder.
+                                    #
+                                    # Inherited text styles are represented as unset fields in this message. If
+                                    # text is contained in a shape without a parent placeholder, unsetting these
+                                    # fields will revert the style to a value matching the defaults in the Slides
+                                    # editor.
+                                  "foregroundColor": { # A color that can either be fully opaque or fully transparent. # The color of the text itself. If set, the color is either opaque or
+                                      # transparent, depending on if the `opaque_color` field in it is set.
+                                    "opaqueColor": { # A themeable solid color value. # If set, this will be used as an opaque color. If unset, this represents
+                                        # a transparent color.
+                                      "themeColor": "A String", # An opaque theme color.
+                                      "rgbColor": { # An RGB color. # An opaque RGB color.
+                                        "blue": 3.14, # The blue component of the color, from 0.0 to 1.0.
+                                        "green": 3.14, # The green component of the color, from 0.0 to 1.0.
+                                        "red": 3.14, # The red component of the color, from 0.0 to 1.0.
+                                      },
+                                    },
+                                  },
+                                  "bold": True or False, # Whether or not the text is bold.
+                                  "baselineOffset": "A String", # The text's vertical offset from its normal position.
+                                      #
+                                      # Text with `SUPERSCRIPT` or `SUBSCRIPT` baseline offsets is automatically
+                                      # rendered in a smaller font size, computed based on the `font_size` field.
+                                      # The `font_size` itself is not affected by changes in this field.
+                                  "strikethrough": True or False, # Whether or not the text is struck through.
+                                  "smallCaps": True or False, # Whether or not the text is in small capital letters.
+                                  "fontFamily": "A String", # The font family of the text.
+                                      #
+                                      # The font family can be any font from the Font menu in Slides or from
+                                      # [Google Fonts] (https://fonts.google.com/). If the font name is
+                                      # unrecognized, the text is rendered in `Arial`.
+                                      #
+                                      # Some fonts can affect the weight of the text. If an update request
+                                      # specifies values for both `font_family` and `bold`, the explicitly-set
+                                      # `bold` value is used.
+                                  "link": { # A hypertext link. # The hyperlink destination of the text. If unset, there is no link. Links
+                                      # are not inherited from parent text.
+                                      #
+                                      # Changing the link in an update request causes some other changes to the
+                                      # text style of the range:
+                                      #
+                                      # * When setting a link, the text foreground color will be set to
+                                      #   ThemeColorType.HYPERLINK and the text will
+                                      #   be underlined. If these fields are modified in the same
+                                      #   request, those values will be used instead of the link defaults.
+                                      # * Setting a link on a text range that overlaps with an existing link will
+                                      #   also update the existing link to point to the new URL.
+                                      # * Links are not settable on newline characters. As a result, setting a link
+                                      #   on a text range that crosses a paragraph boundary, such as `"ABC\n123"`,
+                                      #   will separate the newline character(s) into their own text runs. The
+                                      #   link will be applied separately to the runs before and after the newline.
+                                      # * Removing a link will update the text style of the range to match the
+                                      #   style of the preceding text (or the default text styles if the preceding
+                                      #   text is another link) unless different styles are being set in the same
+                                      #   request.
+                                    "url": "A String", # If set, indicates this is a link to the external web page at this URL.
+                                    "pageObjectId": "A String", # If set, indicates this is a link to the specific page in this
+                                        # presentation with this ID. A page with this ID may not exist.
+                                    "slideIndex": 42, # If set, indicates this is a link to the slide at this zero-based index
+                                        # in the presentation. There may not be a slide at this index.
+                                    "relativeLink": "A String", # If set, indicates this is a link to a slide in this presentation,
+                                        # addressed by its position.
+                                  },
+                                  "italic": True or False, # Whether or not the text is italicized.
+                                  "fontSize": { # A magnitude in a single direction in the specified units. # The size of the text's font. When read, the `font_size` will specified in
+                                      # points.
+                                    "magnitude": 3.14, # The magnitude.
+                                    "unit": "A String", # The units for magnitude.
+                                  },
+                                  "underline": True or False, # Whether or not the text is underlined.
+                                  "backgroundColor": { # A color that can either be fully opaque or fully transparent. # The background color of the text. If set, the color is either opaque or
+                                      # transparent, depending on if the `opaque_color` field in it is set.
+                                    "opaqueColor": { # A themeable solid color value. # If set, this will be used as an opaque color. If unset, this represents
+                                        # a transparent color.
+                                      "themeColor": "A String", # An opaque theme color.
+                                      "rgbColor": { # An RGB color. # An opaque RGB color.
+                                        "blue": 3.14, # The blue component of the color, from 0.0 to 1.0.
+                                        "green": 3.14, # The green component of the color, from 0.0 to 1.0.
+                                        "red": 3.14, # The red component of the color, from 0.0 to 1.0.
+                                      },
+                                    },
+                                  },
+                                },
+                              },
+                            },
+                          ],
+                          "lists": { # The bulleted lists contained in this text, keyed by list ID.
+                            "a_key": { # A List describes the look and feel of bullets belonging to paragraphs
+                                # associated with a list. A paragraph that is part of a list has an implicit
+                                # reference to that list's ID.
+                              "nestingLevel": { # A map of nesting levels to the properties of bullets at the associated
+                                  # level. A list has at most nine levels of nesting, so the possible values
+                                  # for the keys of this map are 0 through 8, inclusive.
+                                "a_key": { # Contains properties describing the look and feel of a list bullet at a given
+                                    # level of nesting.
+                                  "bulletStyle": { # Represents the styling that can be applied to a TextRun. # The style of a bullet at this level of nesting.
+                                      #
+                                      # If this text is contained in a shape with a parent placeholder, then these text styles may be
+                                      # inherited from the parent. Which text styles are inherited depend on the
+                                      # nesting level of lists:
+                                      #
+                                      # * A text run in a paragraph that is not in a list will inherit its text style
+                                      #   from the the newline character in the paragraph at the 0 nesting level of
+                                      #   the list inside the parent placeholder.
+                                      # * A text run in a paragraph that is in a list will inherit its text style
+                                      #   from the newline character in the paragraph at its corresponding nesting
+                                      #   level of the list inside the parent placeholder.
+                                      #
+                                      # Inherited text styles are represented as unset fields in this message. If
+                                      # text is contained in a shape without a parent placeholder, unsetting these
+                                      # fields will revert the style to a value matching the defaults in the Slides
+                                      # editor.
+                                    "foregroundColor": { # A color that can either be fully opaque or fully transparent. # The color of the text itself. If set, the color is either opaque or
+                                        # transparent, depending on if the `opaque_color` field in it is set.
+                                      "opaqueColor": { # A themeable solid color value. # If set, this will be used as an opaque color. If unset, this represents
+                                          # a transparent color.
+                                        "themeColor": "A String", # An opaque theme color.
+                                        "rgbColor": { # An RGB color. # An opaque RGB color.
+                                          "blue": 3.14, # The blue component of the color, from 0.0 to 1.0.
+                                          "green": 3.14, # The green component of the color, from 0.0 to 1.0.
+                                          "red": 3.14, # The red component of the color, from 0.0 to 1.0.
+                                        },
+                                      },
+                                    },
+                                    "bold": True or False, # Whether or not the text is bold.
+                                    "baselineOffset": "A String", # The text's vertical offset from its normal position.
+                                        #
+                                        # Text with `SUPERSCRIPT` or `SUBSCRIPT` baseline offsets is automatically
+                                        # rendered in a smaller font size, computed based on the `font_size` field.
+                                        # The `font_size` itself is not affected by changes in this field.
+                                    "strikethrough": True or False, # Whether or not the text is struck through.
+                                    "smallCaps": True or False, # Whether or not the text is in small capital letters.
+                                    "fontFamily": "A String", # The font family of the text.
+                                        #
+                                        # The font family can be any font from the Font menu in Slides or from
+                                        # [Google Fonts] (https://fonts.google.com/). If the font name is
+                                        # unrecognized, the text is rendered in `Arial`.
+                                        #
+                                        # Some fonts can affect the weight of the text. If an update request
+                                        # specifies values for both `font_family` and `bold`, the explicitly-set
+                                        # `bold` value is used.
+                                    "link": { # A hypertext link. # The hyperlink destination of the text. If unset, there is no link. Links
+                                        # are not inherited from parent text.
+                                        #
+                                        # Changing the link in an update request causes some other changes to the
+                                        # text style of the range:
+                                        #
+                                        # * When setting a link, the text foreground color will be set to
+                                        #   ThemeColorType.HYPERLINK and the text will
+                                        #   be underlined. If these fields are modified in the same
+                                        #   request, those values will be used instead of the link defaults.
+                                        # * Setting a link on a text range that overlaps with an existing link will
+                                        #   also update the existing link to point to the new URL.
+                                        # * Links are not settable on newline characters. As a result, setting a link
+                                        #   on a text range that crosses a paragraph boundary, such as `"ABC\n123"`,
+                                        #   will separate the newline character(s) into their own text runs. The
+                                        #   link will be applied separately to the runs before and after the newline.
+                                        # * Removing a link will update the text style of the range to match the
+                                        #   style of the preceding text (or the default text styles if the preceding
+                                        #   text is another link) unless different styles are being set in the same
+                                        #   request.
+                                      "url": "A String", # If set, indicates this is a link to the external web page at this URL.
+                                      "pageObjectId": "A String", # If set, indicates this is a link to the specific page in this
+                                          # presentation with this ID. A page with this ID may not exist.
+                                      "slideIndex": 42, # If set, indicates this is a link to the slide at this zero-based index
+                                          # in the presentation. There may not be a slide at this index.
+                                      "relativeLink": "A String", # If set, indicates this is a link to a slide in this presentation,
+                                          # addressed by its position.
+                                    },
+                                    "italic": True or False, # Whether or not the text is italicized.
+                                    "fontSize": { # A magnitude in a single direction in the specified units. # The size of the text's font. When read, the `font_size` will specified in
+                                        # points.
+                                      "magnitude": 3.14, # The magnitude.
+                                      "unit": "A String", # The units for magnitude.
+                                    },
+                                    "underline": True or False, # Whether or not the text is underlined.
+                                    "backgroundColor": { # A color that can either be fully opaque or fully transparent. # The background color of the text. If set, the color is either opaque or
+                                        # transparent, depending on if the `opaque_color` field in it is set.
+                                      "opaqueColor": { # A themeable solid color value. # If set, this will be used as an opaque color. If unset, this represents
+                                          # a transparent color.
+                                        "themeColor": "A String", # An opaque theme color.
+                                        "rgbColor": { # An RGB color. # An opaque RGB color.
+                                          "blue": 3.14, # The blue component of the color, from 0.0 to 1.0.
+                                          "green": 3.14, # The green component of the color, from 0.0 to 1.0.
+                                          "red": 3.14, # The red component of the color, from 0.0 to 1.0.
+                                        },
+                                      },
+                                    },
+                                  },
+                                },
+                              },
+                              "listId": "A String", # The ID of the list.
+                            },
+                          },
+                        },
+                        "rowSpan": 42, # Row span of the cell.
+                        "tableCellProperties": { # The properties of the TableCell. # The properties of the table cell.
+                          "tableCellBackgroundFill": { # The table cell background fill. # The background fill of the table cell. The default fill matches the fill
+                              # for newly created table cells in the Slides editor.
+                            "solidFill": { # A solid color fill. The page or page element is filled entirely with the # Solid color fill.
+                                # specified color value.
+                                #
+                                # If any field is unset, its value may be inherited from a parent placeholder
+                                # if it exists.
+                              "color": { # A themeable solid color value. # The color value of the solid fill.
+                                "themeColor": "A String", # An opaque theme color.
+                                "rgbColor": { # An RGB color. # An opaque RGB color.
+                                  "blue": 3.14, # The blue component of the color, from 0.0 to 1.0.
+                                  "green": 3.14, # The green component of the color, from 0.0 to 1.0.
+                                  "red": 3.14, # The red component of the color, from 0.0 to 1.0.
+                                },
+                              },
+                              "alpha": 3.14, # The fraction of this `color` that should be applied to the pixel.
+                                  # That is, the final pixel color is defined by the equation:
+                                  #
+                                  #   pixel color = alpha * (color) + (1.0 - alpha) * (background color)
+                                  #
+                                  # This means that a value of 1.0 corresponds to a solid color, whereas
+                                  # a value of 0.0 corresponds to a completely transparent color.
+                            },
+                            "propertyState": "A String", # The background fill property state.
+                                #
+                                # Updating the the fill on a table cell will implicitly update this field
+                                # to `RENDERED`, unless another value is specified in the same request. To
+                                # have no fill on a table cell, set this field to `NOT_RENDERED`. In this
+                                # case, any other fill fields set in the same request will be ignored.
+                          },
+                        },
+                        "location": { # A location of a single table cell within a table. # The location of the cell within the table.
+                          "rowIndex": 42, # The 0-based row index.
+                          "columnIndex": 42, # The 0-based column index.
+                        },
+                        "columnSpan": 42, # Column span of the cell.
+                      },
+                    ],
+                    "rowHeight": { # A magnitude in a single direction in the specified units. # Height of a row.
+                      "magnitude": 3.14, # The magnitude.
+                      "unit": "A String", # The units for magnitude.
+                    },
+                  },
+                ],
+                "rows": 42, # Number of rows in the table.
+                "columns": 42, # Number of columns in the table.
+              },
+              "line": { # A PageElement kind representing a # A line page element.
+                  # line, curved connector, or bent connector.
+                "lineProperties": { # The properties of the Line. # The properties of the line.
+                    #
+                    # When unset, these fields default to values that match the appearance of
+                    # new lines created in the Slides editor.
+                  "dashStyle": "A String", # The dash style of the line.
+                  "weight": { # A magnitude in a single direction in the specified units. # The thickness of the line.
+                    "magnitude": 3.14, # The magnitude.
+                    "unit": "A String", # The units for magnitude.
+                  },
+                  "endArrow": "A String", # The style of the arrow at the end of the line.
+                  "link": { # A hypertext link. # The hyperlink destination of the line. If unset, there is no link.
+                    "url": "A String", # If set, indicates this is a link to the external web page at this URL.
+                    "pageObjectId": "A String", # If set, indicates this is a link to the specific page in this
+                        # presentation with this ID. A page with this ID may not exist.
+                    "slideIndex": 42, # If set, indicates this is a link to the slide at this zero-based index
+                        # in the presentation. There may not be a slide at this index.
+                    "relativeLink": "A String", # If set, indicates this is a link to a slide in this presentation,
+                        # addressed by its position.
+                  },
+                  "startArrow": "A String", # The style of the arrow at the beginning of the line.
+                  "lineFill": { # The fill of the line. # The fill of the line. The default line fill matches the defaults for new
+                      # lines created in the Slides editor.
+                    "solidFill": { # A solid color fill. The page or page element is filled entirely with the # Solid color fill.
+                        # specified color value.
+                        #
+                        # If any field is unset, its value may be inherited from a parent placeholder
+                        # if it exists.
+                      "color": { # A themeable solid color value. # The color value of the solid fill.
+                        "themeColor": "A String", # An opaque theme color.
+                        "rgbColor": { # An RGB color. # An opaque RGB color.
+                          "blue": 3.14, # The blue component of the color, from 0.0 to 1.0.
+                          "green": 3.14, # The green component of the color, from 0.0 to 1.0.
+                          "red": 3.14, # The red component of the color, from 0.0 to 1.0.
+                        },
+                      },
+                      "alpha": 3.14, # The fraction of this `color` that should be applied to the pixel.
+                          # That is, the final pixel color is defined by the equation:
+                          #
+                          #   pixel color = alpha * (color) + (1.0 - alpha) * (background color)
+                          #
+                          # This means that a value of 1.0 corresponds to a solid color, whereas
+                          # a value of 0.0 corresponds to a completely transparent color.
+                    },
+                  },
+                },
+                "lineType": "A String", # The type of the line.
+              },
+              "size": { # A width and height. # The size of the page element.
+                "width": { # A magnitude in a single direction in the specified units. # The width of the object.
+                  "magnitude": 3.14, # The magnitude.
+                  "unit": "A String", # The units for magnitude.
+                },
+                "height": { # A magnitude in a single direction in the specified units. # The height of the object.
+                  "magnitude": 3.14, # The magnitude.
+                  "unit": "A String", # The units for magnitude.
+                },
+              },
+              "elementGroup": { # A PageElement kind representing a # A collection of page elements joined as a single unit.
+                  # joined collection of PageElements.
+                "children": [ # The collection of elements in the group. The minimum size of a group is 2.
+                  # Object with schema name: PageElement
+                ],
+              },
+            },
+          ],
+          "objectId": "A String", # The object ID for this page. Object IDs used by
+              # Page and
+              # PageElement share the same namespace.
+          "pageProperties": { # The properties of the Page. # The properties of the page.
+              #
+              # The page will inherit properties from the parent page. Depending on the page
+              # type the hierarchy is defined in either
+              # SlideProperties or
+              # LayoutProperties.
+            "pageBackgroundFill": { # The page background fill. # The background fill of the page. If unset, the background fill is inherited
+                # from a parent page if it exists. If the page has no parent, then the
+                # background fill defaults to the corresponding fill in the Slides editor.
+              "solidFill": { # A solid color fill. The page or page element is filled entirely with the # Solid color fill.
+                  # specified color value.
+                  #
+                  # If any field is unset, its value may be inherited from a parent placeholder
+                  # if it exists.
+                "color": { # A themeable solid color value. # The color value of the solid fill.
+                  "themeColor": "A String", # An opaque theme color.
+                  "rgbColor": { # An RGB color. # An opaque RGB color.
+                    "blue": 3.14, # The blue component of the color, from 0.0 to 1.0.
+                    "green": 3.14, # The green component of the color, from 0.0 to 1.0.
+                    "red": 3.14, # The red component of the color, from 0.0 to 1.0.
+                  },
+                },
+                "alpha": 3.14, # The fraction of this `color` that should be applied to the pixel.
+                    # That is, the final pixel color is defined by the equation:
+                    #
+                    #   pixel color = alpha * (color) + (1.0 - alpha) * (background color)
+                    #
+                    # This means that a value of 1.0 corresponds to a solid color, whereas
+                    # a value of 0.0 corresponds to a completely transparent color.
+              },
+              "propertyState": "A String", # The background fill property state.
+                  #
+                  # Updating the the fill on a page will implicitly update this field to
+                  # `RENDERED`, unless another value is specified in the same request. To
+                  # have no fill on a page, set this field to `NOT_RENDERED`. In this case,
+                  # any other fill fields set in the same request will be ignored.
+              "stretchedPictureFill": { # The stretched picture fill. The page or page element is filled entirely with # Stretched picture fill.
+                  # the specified picture. The picture is stretched to fit its container.
+                "contentUrl": "A String", # Reading the content_url:
+                    #
+                    # An URL to a picture with a default lifetime of 30 minutes.
+                    # This URL is tagged with the account of the requester. Anyone with the URL
+                    # effectively accesses the picture as the original requester. Access to the
+                    # picture may be lost if the presentation's sharing settings change.
+                    #
+                    # Writing the content_url:
+                    #
+                    # The picture is fetched once at insertion time and a copy is stored for
+                    # display inside the presentation. Pictures must be less than 50MB in size,
+                    # cannot exceed 25 megapixels, and must be in either in PNG, JPEG, or GIF
+                    # format.
+                "size": { # A width and height. # The original size of the picture fill. This field is read-only.
+                  "width": { # A magnitude in a single direction in the specified units. # The width of the object.
+                    "magnitude": 3.14, # The magnitude.
+                    "unit": "A String", # The units for magnitude.
+                  },
+                  "height": { # A magnitude in a single direction in the specified units. # The height of the object.
+                    "magnitude": 3.14, # The magnitude.
+                    "unit": "A String", # The units for magnitude.
+                  },
+                },
+              },
+            },
+            "colorScheme": { # The palette of predefined colors for a page. # The color scheme of the page. If unset, the color scheme is inherited from
+                # a parent page. If the page has no parent, the color scheme uses a default
+                # Slides color scheme. This field is read-only.
+              "colors": [ # The ThemeColorType and corresponding concrete color pairs.
+                { # A pair mapping a theme color type to the concrete color it represents.
+                  "color": { # An RGB color. # The concrete color corresponding to the theme color type above.
+                    "blue": 3.14, # The blue component of the color, from 0.0 to 1.0.
+                    "green": 3.14, # The green component of the color, from 0.0 to 1.0.
+                    "red": 3.14, # The red component of the color, from 0.0 to 1.0.
+                  },
+                  "type": "A String", # The type of the theme color.
+                },
+              ],
+            },
+          },
+          "pageType": "A String", # The type of the page.
+          "slideProperties": { # The properties of Page that are only # Slide specific properties. Only set if page_type = SLIDE.
+              # relevant for pages with page_type SLIDE.
+            "masterObjectId": "A String", # The object ID of the master that this slide is based on.
+            "layoutObjectId": "A String", # The object ID of the layout that this slide is based on.
+          },
+        },
+      ],
+    }</pre>
+</div>
+
+<div class="method">
+    <code class="details" id="get">get(presentationId, x__xgafv=None)</code>
+  <pre>Gets the latest version of the specified presentation.
+
+Args:
+  presentationId: string, The ID of the presentation to retrieve. (required)
+  x__xgafv: string, V1 error format.
+    Allowed values
+      1 - v1 error format
+      2 - v2 error format
+
+Returns:
+  An object of the form:
+
+    { # A Google Slides presentation.
+      "presentationId": "A String", # The ID of the presentation.
+      "masters": [ # The slide masters in the presentation. A slide master contains all common
+          # page elements and the common properties for a set of layouts. They serve
+          # three purposes:
+          #
+          # - Placeholder shapes on a master contain the default text styles and shape
+          #   properties of all placeholder shapes on pages that use that master.
+          # - The master page properties define the common page properties inherited by
+          #   its layouts.
+          # - Any other shapes on the master slide will appear on all slides using that
+          #   master, regardless of their layout.
+        { # A page in a presentation.
+          "layoutProperties": { # The properties of Page are only # Layout specific properties. Only set if page_type = LAYOUT.
+              # relevant for pages with page_type LAYOUT.
+            "displayName": "A String", # The human readable name of the layout in the presentation's locale.
+            "name": "A String", # The name of the layout.
+            "masterObjectId": "A String", # The object ID of the master that this layout is based on.
+          },
+          "pageElements": [ # The page elements rendered on the page.
+            { # A visual element rendered on a page.
+              "wordArt": { # A PageElement kind representing # A word art page element.
+                  # word art.
+                "renderedText": "A String", # The text rendered as word art.
+              },
+              "description": "A String", # The description of the page element. Combined with title to display alt
+                  # text.
+              "objectId": "A String", # The object ID for this page element. Object IDs used by
+                  # google.apps.slides.v1.Page and
+                  # google.apps.slides.v1.PageElement share the same namespace.
+              "title": "A String", # The title of the page element. Combined with description to display alt
+                  # text.
+              "image": { # A PageElement kind representing an # An image page element.
+                  # image.
+                "contentUrl": "A String", # An URL to an image with a default lifetime of 30 minutes.
+                    # This URL is tagged with the account of the requester. Anyone with the URL
+                    # effectively accesses the image as the original requester. Access to the
+                    # image may be lost if the presentation's sharing settings change.
+                "imageProperties": { # The properties of the Image. # The properties of the image.
+                  "outline": { # The outline of a PageElement. # The outline of the image. If not set, the the image has no outline.
+                      #
+                      # If these fields are unset, they may be inherited from a parent placeholder
+                      # if it exists. If there is no parent, the fields will default to the value
+                      # used for new page elements created in the Slides editor, which may depend on
+                      # the page element kind.
+                    "dashStyle": "A String", # The dash style of the outline.
+                    "propertyState": "A String", # The outline property state.
+                        #
+                        # Updating the the outline on a page element will implicitly update this
+                        # field to`RENDERED`, unless another value is specified in the same request.
+                        # To have no outline on a page element, set this field to `NOT_RENDERED`. In
+                        # this case, any other outline fields set in the same request will be
+                        # ignored.
+                    "outlineFill": { # The fill of the outline. # The fill of the outline.
+                      "solidFill": { # A solid color fill. The page or page element is filled entirely with the # Solid color fill.
+                          # specified color value.
+                          #
+                          # If any field is unset, its value may be inherited from a parent placeholder
+                          # if it exists.
+                        "color": { # A themeable solid color value. # The color value of the solid fill.
+                          "themeColor": "A String", # An opaque theme color.
+                          "rgbColor": { # An RGB color. # An opaque RGB color.
+                            "blue": 3.14, # The blue component of the color, from 0.0 to 1.0.
+                            "green": 3.14, # The green component of the color, from 0.0 to 1.0.
+                            "red": 3.14, # The red component of the color, from 0.0 to 1.0.
+                          },
+                        },
+                        "alpha": 3.14, # The fraction of this `color` that should be applied to the pixel.
+                            # That is, the final pixel color is defined by the equation:
+                            #
+                            #   pixel color = alpha * (color) + (1.0 - alpha) * (background color)
+                            #
+                            # This means that a value of 1.0 corresponds to a solid color, whereas
+                            # a value of 0.0 corresponds to a completely transparent color.
+                      },
+                    },
+                    "weight": { # A magnitude in a single direction in the specified units. # The thickness of the outline.
+                      "magnitude": 3.14, # The magnitude.
+                      "unit": "A String", # The units for magnitude.
+                    },
+                  },
+                  "brightness": 3.14, # The brightness effect of the image. The value should be in the interval
+                      # [-1.0, 1.0], where 0 means no effect. This property is read-only.
+                  "recolor": { # A recolor effect applied on an image. # The recolor effect of the image. If not set, the image is not recolored.
+                      # This property is read-only.
+                    "recolorStops": [ # The recolor effect is represented by a gradient, which is a list of color
+                        # stops. This property is read-only.
+                      { # A color and position in a gradient band.
+                        "color": { # A themeable solid color value. # The color of the gradient stop.
+                          "themeColor": "A String", # An opaque theme color.
+                          "rgbColor": { # An RGB color. # An opaque RGB color.
+                            "blue": 3.14, # The blue component of the color, from 0.0 to 1.0.
+                            "green": 3.14, # The green component of the color, from 0.0 to 1.0.
+                            "red": 3.14, # The red component of the color, from 0.0 to 1.0.
+                          },
+                        },
+                        "position": 3.14, # The relative position of the color stop in the gradient band measured
+                            # in percentage. The value should be in the interval [0.0, 1.0].
+                        "alpha": 3.14, # The alpha value of this color in the gradient band. Defaults to 1.0,
+                            # fully opaque.
+                      },
+                    ],
+                  },
+                  "link": { # A hypertext link. # The hyperlink destination of the image. If unset, there is no link.
+                    "url": "A String", # If set, indicates this is a link to the external web page at this URL.
+                    "pageObjectId": "A String", # If set, indicates this is a link to the specific page in this
+                        # presentation with this ID. A page with this ID may not exist.
+                    "slideIndex": 42, # If set, indicates this is a link to the slide at this zero-based index
+                        # in the presentation. There may not be a slide at this index.
+                    "relativeLink": "A String", # If set, indicates this is a link to a slide in this presentation,
+                        # addressed by its position.
+                  },
+                  "transparency": 3.14, # The transparency effect of the image. The value should be in the interval
+                      # [0.0, 1.0], where 0 means no effect and 1 means completely transparent.
+                      # This property is read-only.
+                  "cropProperties": { # The crop properties of an object enclosed in a container. For example, an # The crop properties of the image. If not set, the image is not cropped.
+                      # This property is read-only.
+                      # Image.
+                      #
+                      # The crop properties is represented by the offsets of four edges which define
+                      # a crop rectangle. The offsets are measured in percentage from the
+                      # corresponding edges of the object's original bounding rectangle towards
+                      # inside, relative to the object's original dimensions.
+                      #
+                      # - If the offset is in the interval (0, 1), the corresponding edge of crop
+                      # rectangle is positioned inside of the object's original bounding rectangle.
+                      # - If the offset is negative or greater than 1, the corresponding edge of crop
+                      # rectangle is positioned outside of the object's original bounding rectangle.
+                      # - If the left edge of the crop rectangle is on the right side of its right
+                      # edge, the object will be flipped horizontally.
+                      # - If the top edge of the crop rectangle is below its bottom edge, the object
+                      # will be flipped vertically.
+                      # - If all offsets and rotation angle is 0, the object is not cropped.
+                      #
+                      # After cropping, the content in the crop rectangle will be stretched to fit
+                      # its container.
+                    "leftOffset": 3.14, # The offset specifies the left edge of the crop rectangle that is located to
+                        # the right of the original bounding rectangle left edge, relative to the
+                        # object's original width.
+                    "angle": 3.14, # The rotation angle of the crop window around its center, in radians.
+                        # Rotation angle is applied after the offset.
+                    "bottomOffset": 3.14, # The offset specifies the bottom edge of the crop rectangle that is located
+                        # above the original bounding rectangle bottom edge, relative to the object's
+                        # original height.
+                    "rightOffset": 3.14, # The offset specifies the right edge of the crop rectangle that is located
+                        # to the left of the original bounding rectangle right edge, relative to the
+                        # object's original width.
+                    "topOffset": 3.14, # The offset specifies the top edge of the crop rectangle that is located
+                        # below the original bounding rectangle top edge, relative to the object's
+                        # original height.
+                  },
+                  "shadow": { # The shadow properties of a page element. # The shadow of the image. If not set, the image has no shadow. This property
+                      # is read-only.
+                      #
+                      # If these fields are unset, they may be inherited from a parent placeholder
+                      # if it exists. If there is no parent, the fields will default to the value
+                      # used for new page elements created in the Slides editor, which may depend on
+                      # the page element kind.
+                    "color": { # A themeable solid color value. # The shadow color value.
+                      "themeColor": "A String", # An opaque theme color.
+                      "rgbColor": { # An RGB color. # An opaque RGB color.
+                        "blue": 3.14, # The blue component of the color, from 0.0 to 1.0.
+                        "green": 3.14, # The green component of the color, from 0.0 to 1.0.
+                        "red": 3.14, # The red component of the color, from 0.0 to 1.0.
+                      },
+                    },
+                    "transform": { # AffineTransform uses a 3x3 matrix with an implied last row of [ 0 0 1 ] # Transform that encodes the translate, scale, and skew of the shadow,
+                        # relative to the alignment position.
+                        # to transform source coordinates (x,y) into destination coordinates (x', y')
+                        # according to:
+                        #
+                        #       x'  x  =   shear_y  scale_y  translate_y
+                        #       1  [ 1 ]
+                        #
+                        # After transformation,
+                        #
+                        #      x' = scale_x * x + shear_x * y + translate_x;
+                        #      y' = scale_y * y + shear_y * x + translate_y;
+                        #
+                        # This message is therefore composed of these six matrix elements.
+                      "translateX": 3.14, # The X coordinate translation element.
+                      "translateY": 3.14, # The Y coordinate translation element.
+                      "scaleX": 3.14, # The X coordinate scaling element.
+                      "scaleY": 3.14, # The Y coordinate scaling element.
+                      "shearY": 3.14, # The Y coordinate shearing element.
+                      "shearX": 3.14, # The X coordinate shearing element.
+                      "unit": "A String", # The units for translate elements.
+                    },
+                    "propertyState": "A String", # The shadow property state.
+                        #
+                        # Updating the the shadow on a page element will implicitly update this field
+                        # to `RENDERED`, unless another value is specified in the same request. To
+                        # have no shadow on a page element, set this field to `NOT_RENDERED`. In this
+                        # case, any other shadow fields set in the same request will be ignored.
+                    "blurRadius": { # A magnitude in a single direction in the specified units. # The radius of the shadow blur. The larger the radius, the more diffuse the
+                        # shadow becomes.
+                      "magnitude": 3.14, # The magnitude.
+                      "unit": "A String", # The units for magnitude.
+                    },
+                    "alpha": 3.14, # The alpha of the shadow's color, from 0.0 to 1.0.
+                    "type": "A String", # The type of the shadow.
+                    "alignment": "A String", # The alignment point of the shadow, that sets the origin for translate,
+                        # scale and skew of the shadow.
+                    "rotateWithShape": True or False, # Whether the shadow should rotate with the shape.
+                  },
+                  "contrast": 3.14, # The contrast effect of the image. The value should be in the interval
+                      # [-1.0, 1.0], where 0 means no effect. This property is read-only.
+                },
+              },
+              "transform": { # AffineTransform uses a 3x3 matrix with an implied last row of [ 0 0 1 ] # The transform of the page element.
+                  # to transform source coordinates (x,y) into destination coordinates (x', y')
+                  # according to:
+                  #
+                  #       x'  x  =   shear_y  scale_y  translate_y
+                  #       1  [ 1 ]
+                  #
+                  # After transformation,
+                  #
+                  #      x' = scale_x * x + shear_x * y + translate_x;
+                  #      y' = scale_y * y + shear_y * x + translate_y;
+                  #
+                  # This message is therefore composed of these six matrix elements.
+                "translateX": 3.14, # The X coordinate translation element.
+                "translateY": 3.14, # The Y coordinate translation element.
+                "scaleX": 3.14, # The X coordinate scaling element.
+                "scaleY": 3.14, # The Y coordinate scaling element.
+                "shearY": 3.14, # The Y coordinate shearing element.
+                "shearX": 3.14, # The X coordinate shearing element.
+                "unit": "A String", # The units for translate elements.
+              },
+              "shape": { # A PageElement kind representing a # A generic shape.
+                  # generic shape that does not have a more specific classification.
+                "text": { # The general text content. The text must reside in a compatible shape (e.g. # The text content of the shape.
+                    # text box or rectangle) or a table cell in a page.
+                  "textElements": [ # The text contents broken down into its component parts, including styling
+                      # information. This property is read-only.
+                    { # A TextElement describes the content of a range of indices in the text content
+                        # of a Shape or TableCell.
+                      "autoText": { # A TextElement kind that represents auto text. # A TextElement representing a spot in the text that is dynamically
+                          # replaced with content that can change over time.
+                        "content": "A String", # The rendered content of this auto text, if available.
+                        "style": { # Represents the styling that can be applied to a TextRun. # The styling applied to this auto text.
+                            #
+                            # If this text is contained in a shape with a parent placeholder, then these text styles may be
+                            # inherited from the parent. Which text styles are inherited depend on the
+                            # nesting level of lists:
+                            #
+                            # * A text run in a paragraph that is not in a list will inherit its text style
+                            #   from the the newline character in the paragraph at the 0 nesting level of
+                            #   the list inside the parent placeholder.
+                            # * A text run in a paragraph that is in a list will inherit its text style
+                            #   from the newline character in the paragraph at its corresponding nesting
+                            #   level of the list inside the parent placeholder.
+                            #
+                            # Inherited text styles are represented as unset fields in this message. If
+                            # text is contained in a shape without a parent placeholder, unsetting these
+                            # fields will revert the style to a value matching the defaults in the Slides
+                            # editor.
+                          "foregroundColor": { # A color that can either be fully opaque or fully transparent. # The color of the text itself. If set, the color is either opaque or
+                              # transparent, depending on if the `opaque_color` field in it is set.
+                            "opaqueColor": { # A themeable solid color value. # If set, this will be used as an opaque color. If unset, this represents
+                                # a transparent color.
+                              "themeColor": "A String", # An opaque theme color.
+                              "rgbColor": { # An RGB color. # An opaque RGB color.
+                                "blue": 3.14, # The blue component of the color, from 0.0 to 1.0.
+                                "green": 3.14, # The green component of the color, from 0.0 to 1.0.
+                                "red": 3.14, # The red component of the color, from 0.0 to 1.0.
+                              },
+                            },
+                          },
+                          "bold": True or False, # Whether or not the text is bold.
+                          "baselineOffset": "A String", # The text's vertical offset from its normal position.
+                              #
+                              # Text with `SUPERSCRIPT` or `SUBSCRIPT` baseline offsets is automatically
+                              # rendered in a smaller font size, computed based on the `font_size` field.
+                              # The `font_size` itself is not affected by changes in this field.
+                          "strikethrough": True or False, # Whether or not the text is struck through.
+                          "smallCaps": True or False, # Whether or not the text is in small capital letters.
+                          "fontFamily": "A String", # The font family of the text.
+                              #
+                              # The font family can be any font from the Font menu in Slides or from
+                              # [Google Fonts] (https://fonts.google.com/). If the font name is
+                              # unrecognized, the text is rendered in `Arial`.
+                              #
+                              # Some fonts can affect the weight of the text. If an update request
+                              # specifies values for both `font_family` and `bold`, the explicitly-set
+                              # `bold` value is used.
+                          "link": { # A hypertext link. # The hyperlink destination of the text. If unset, there is no link. Links
+                              # are not inherited from parent text.
+                              #
+                              # Changing the link in an update request causes some other changes to the
+                              # text style of the range:
+                              #
+                              # * When setting a link, the text foreground color will be set to
+                              #   ThemeColorType.HYPERLINK and the text will
+                              #   be underlined. If these fields are modified in the same
+                              #   request, those values will be used instead of the link defaults.
+                              # * Setting a link on a text range that overlaps with an existing link will
+                              #   also update the existing link to point to the new URL.
+                              # * Links are not settable on newline characters. As a result, setting a link
+                              #   on a text range that crosses a paragraph boundary, such as `"ABC\n123"`,
+                              #   will separate the newline character(s) into their own text runs. The
+                              #   link will be applied separately to the runs before and after the newline.
+                              # * Removing a link will update the text style of the range to match the
+                              #   style of the preceding text (or the default text styles if the preceding
+                              #   text is another link) unless different styles are being set in the same
+                              #   request.
+                            "url": "A String", # If set, indicates this is a link to the external web page at this URL.
+                            "pageObjectId": "A String", # If set, indicates this is a link to the specific page in this
+                                # presentation with this ID. A page with this ID may not exist.
+                            "slideIndex": 42, # If set, indicates this is a link to the slide at this zero-based index
+                                # in the presentation. There may not be a slide at this index.
+                            "relativeLink": "A String", # If set, indicates this is a link to a slide in this presentation,
+                                # addressed by its position.
+                          },
+                          "italic": True or False, # Whether or not the text is italicized.
+                          "fontSize": { # A magnitude in a single direction in the specified units. # The size of the text's font. When read, the `font_size` will specified in
+                              # points.
+                            "magnitude": 3.14, # The magnitude.
+                            "unit": "A String", # The units for magnitude.
+                          },
+                          "underline": True or False, # Whether or not the text is underlined.
+                          "backgroundColor": { # A color that can either be fully opaque or fully transparent. # The background color of the text. If set, the color is either opaque or
+                              # transparent, depending on if the `opaque_color` field in it is set.
+                            "opaqueColor": { # A themeable solid color value. # If set, this will be used as an opaque color. If unset, this represents
+                                # a transparent color.
+                              "themeColor": "A String", # An opaque theme color.
+                              "rgbColor": { # An RGB color. # An opaque RGB color.
+                                "blue": 3.14, # The blue component of the color, from 0.0 to 1.0.
+                                "green": 3.14, # The green component of the color, from 0.0 to 1.0.
+                                "red": 3.14, # The red component of the color, from 0.0 to 1.0.
+                              },
+                            },
+                          },
+                        },
+                        "type": "A String", # The type of this auto text.
+                      },
+                      "endIndex": 42, # The zero-based end index of this text element, exclusive, in Unicode code
+                          # units.
+                      "startIndex": 42, # The zero-based start index of this text element, in Unicode code units.
+                      "paragraphMarker": { # A TextElement kind that represents the beginning of a new paragraph. # A marker representing the beginning of a new paragraph.
+                          #
+                          # The `start_index` and `end_index` of this TextElement represent the
+                          # range of the paragraph. Other TextElements with an index range contained
+                          # inside this paragraph's range are considered to be part of this
+                          # paragraph. The range of indices of two separate paragraphs will never
+                          # overlap.
+                        "style": { # Styles that apply to a whole paragraph. # The paragraph's style
+                            #
+                            # If this text is contained in a shape with a parent placeholder, then these paragraph styles may be
+                            # inherited from the parent. Which paragraph styles are inherited depend on the
+                            # nesting level of lists:
+                            #
+                            # * A paragraph not in a list will inherit its paragraph style from the
+                            #   paragraph at the 0 nesting level of the list inside the parent placeholder.
+                            # * A paragraph in a list will inherit its paragraph style from the paragraph
+                            #   at its corresponding nesting level of the list inside the parent
+                            #   placeholder.
+                            #
+                            # Inherited paragraph styles are represented as unset fields in this message.
+                          "spacingMode": "A String", # The spacing mode for the paragraph. This property is read-only.
+                          "direction": "A String", # The text direction of this paragraph. This property is read-only.
+                          "spaceBelow": { # A magnitude in a single direction in the specified units. # The amount of extra space above the paragraph. If unset, the value is
+                              # inherited from the parent. This property is read-only.
+                            "magnitude": 3.14, # The magnitude.
+                            "unit": "A String", # The units for magnitude.
+                          },
+                          "lineSpacing": 3.14, # The amount of space between lines, as a percentage of normal, where normal
+                              # is represented as 100.0. If unset, the value is inherited from the parent.
+                              # This property is read-only.
+                          "indentStart": { # A magnitude in a single direction in the specified units. # The amount indentation for the paragraph on the side that corresponds to
+                              # the start of the text, based on the current text direction. If unset, the
+                              # value is inherited from the parent. This property is read-only.
+                            "magnitude": 3.14, # The magnitude.
+                            "unit": "A String", # The units for magnitude.
+                          },
+                          "spaceAbove": { # A magnitude in a single direction in the specified units. # The amount of extra space above the paragraph. If unset, the value is
+                              # inherited from the parent. This property is read-only.
+                            "magnitude": 3.14, # The magnitude.
+                            "unit": "A String", # The units for magnitude.
+                          },
+                          "indentEnd": { # A magnitude in a single direction in the specified units. # The amount indentation for the paragraph on the side that corresponds to
+                              # the end of the text, based on the current text direction. If unset, the
+                              # value is inherited from the parent. This property is read-only.
+                            "magnitude": 3.14, # The magnitude.
+                            "unit": "A String", # The units for magnitude.
+                          },
+                          "indentFirstLine": { # A magnitude in a single direction in the specified units. # The amount of indentation for the start of the first line of the paragraph.
+                              # If unset, the value is inherited from the parent. This property is
+                              # read-only.
+                            "magnitude": 3.14, # The magnitude.
+                            "unit": "A String", # The units for magnitude.
+                          },
+                          "alignment": "A String", # The text alignment for this paragraph. This property is read-only.
+                        },
+                        "bullet": { # Describes the bullet of a paragraph. # The bullet for this paragraph. If not present, the paragraph does not
+                            # belong to a list.
+                          "nestingLevel": 42, # The nesting level of this paragraph in the list.
+                          "listId": "A String", # The ID of the list this paragraph belongs to.
+                          "bulletStyle": { # Represents the styling that can be applied to a TextRun. # The paragraph specific text style applied to this bullet.
+                              #
+                              # If this text is contained in a shape with a parent placeholder, then these text styles may be
+                              # inherited from the parent. Which text styles are inherited depend on the
+                              # nesting level of lists:
+                              #
+                              # * A text run in a paragraph that is not in a list will inherit its text style
+                              #   from the the newline character in the paragraph at the 0 nesting level of
+                              #   the list inside the parent placeholder.
+                              # * A text run in a paragraph that is in a list will inherit its text style
+                              #   from the newline character in the paragraph at its corresponding nesting
+                              #   level of the list inside the parent placeholder.
+                              #
+                              # Inherited text styles are represented as unset fields in this message. If
+                              # text is contained in a shape without a parent placeholder, unsetting these
+                              # fields will revert the style to a value matching the defaults in the Slides
+                              # editor.
+                            "foregroundColor": { # A color that can either be fully opaque or fully transparent. # The color of the text itself. If set, the color is either opaque or
+                                # transparent, depending on if the `opaque_color` field in it is set.
+                              "opaqueColor": { # A themeable solid color value. # If set, this will be used as an opaque color. If unset, this represents
+                                  # a transparent color.
+                                "themeColor": "A String", # An opaque theme color.
+                                "rgbColor": { # An RGB color. # An opaque RGB color.
+                                  "blue": 3.14, # The blue component of the color, from 0.0 to 1.0.
+                                  "green": 3.14, # The green component of the color, from 0.0 to 1.0.
+                                  "red": 3.14, # The red component of the color, from 0.0 to 1.0.
+                                },
+                              },
+                            },
+                            "bold": True or False, # Whether or not the text is bold.
+                            "baselineOffset": "A String", # The text's vertical offset from its normal position.
+                                #
+                                # Text with `SUPERSCRIPT` or `SUBSCRIPT` baseline offsets is automatically
+                                # rendered in a smaller font size, computed based on the `font_size` field.
+                                # The `font_size` itself is not affected by changes in this field.
+                            "strikethrough": True or False, # Whether or not the text is struck through.
+                            "smallCaps": True or False, # Whether or not the text is in small capital letters.
+                            "fontFamily": "A String", # The font family of the text.
+                                #
+                                # The font family can be any font from the Font menu in Slides or from
+                                # [Google Fonts] (https://fonts.google.com/). If the font name is
+                                # unrecognized, the text is rendered in `Arial`.
+                                #
+                                # Some fonts can affect the weight of the text. If an update request
+                                # specifies values for both `font_family` and `bold`, the explicitly-set
+                                # `bold` value is used.
+                            "link": { # A hypertext link. # The hyperlink destination of the text. If unset, there is no link. Links
+                                # are not inherited from parent text.
+                                #
+                                # Changing the link in an update request causes some other changes to the
+                                # text style of the range:
+                                #
+                                # * When setting a link, the text foreground color will be set to
+                                #   ThemeColorType.HYPERLINK and the text will
+                                #   be underlined. If these fields are modified in the same
+                                #   request, those values will be used instead of the link defaults.
+                                # * Setting a link on a text range that overlaps with an existing link will
+                                #   also update the existing link to point to the new URL.
+                                # * Links are not settable on newline characters. As a result, setting a link
+                                #   on a text range that crosses a paragraph boundary, such as `"ABC\n123"`,
+                                #   will separate the newline character(s) into their own text runs. The
+                                #   link will be applied separately to the runs before and after the newline.
+                                # * Removing a link will update the text style of the range to match the
+                                #   style of the preceding text (or the default text styles if the preceding
+                                #   text is another link) unless different styles are being set in the same
+                                #   request.
+                              "url": "A String", # If set, indicates this is a link to the external web page at this URL.
+                              "pageObjectId": "A String", # If set, indicates this is a link to the specific page in this
+                                  # presentation with this ID. A page with this ID may not exist.
+                              "slideIndex": 42, # If set, indicates this is a link to the slide at this zero-based index
+                                  # in the presentation. There may not be a slide at this index.
+                              "relativeLink": "A String", # If set, indicates this is a link to a slide in this presentation,
+                                  # addressed by its position.
+                            },
+                            "italic": True or False, # Whether or not the text is italicized.
+                            "fontSize": { # A magnitude in a single direction in the specified units. # The size of the text's font. When read, the `font_size` will specified in
+                                # points.
+                              "magnitude": 3.14, # The magnitude.
+                              "unit": "A String", # The units for magnitude.
+                            },
+                            "underline": True or False, # Whether or not the text is underlined.
+                            "backgroundColor": { # A color that can either be fully opaque or fully transparent. # The background color of the text. If set, the color is either opaque or
+                                # transparent, depending on if the `opaque_color` field in it is set.
+                              "opaqueColor": { # A themeable solid color value. # If set, this will be used as an opaque color. If unset, this represents
+                                  # a transparent color.
+                                "themeColor": "A String", # An opaque theme color.
+                                "rgbColor": { # An RGB color. # An opaque RGB color.
+                                  "blue": 3.14, # The blue component of the color, from 0.0 to 1.0.
+                                  "green": 3.14, # The green component of the color, from 0.0 to 1.0.
+                                  "red": 3.14, # The red component of the color, from 0.0 to 1.0.
+                                },
+                              },
+                            },
+                          },
+                          "glyph": "A String", # The rendered bullet glyph for this paragraph.
+                        },
+                      },
+                      "textRun": { # A TextElement kind that represents a run of text that all has the same # A TextElement representing a run of text where all of the characters
+                          # in the run have the same TextStyle.
+                          #
+                          # The `start_index` and `end_index` of TextRuns will always be fully
+                          # contained in the index range of a single `paragraph_marker` TextElement.
+                          # In other words, a TextRun will never span multiple paragraphs.
+                          # styling.
+                        "content": "A String", # The text of this run.
+                        "style": { # Represents the styling that can be applied to a TextRun. # The styling applied to this run.
+                            #
+                            # If this text is contained in a shape with a parent placeholder, then these text styles may be
+                            # inherited from the parent. Which text styles are inherited depend on the
+                            # nesting level of lists:
+                            #
+                            # * A text run in a paragraph that is not in a list will inherit its text style
+                            #   from the the newline character in the paragraph at the 0 nesting level of
+                            #   the list inside the parent placeholder.
+                            # * A text run in a paragraph that is in a list will inherit its text style
+                            #   from the newline character in the paragraph at its corresponding nesting
+                            #   level of the list inside the parent placeholder.
+                            #
+                            # Inherited text styles are represented as unset fields in this message. If
+                            # text is contained in a shape without a parent placeholder, unsetting these
+                            # fields will revert the style to a value matching the defaults in the Slides
+                            # editor.
+                          "foregroundColor": { # A color that can either be fully opaque or fully transparent. # The color of the text itself. If set, the color is either opaque or
+                              # transparent, depending on if the `opaque_color` field in it is set.
+                            "opaqueColor": { # A themeable solid color value. # If set, this will be used as an opaque color. If unset, this represents
+                                # a transparent color.
+                              "themeColor": "A String", # An opaque theme color.
+                              "rgbColor": { # An RGB color. # An opaque RGB color.
+                                "blue": 3.14, # The blue component of the color, from 0.0 to 1.0.
+                                "green": 3.14, # The green component of the color, from 0.0 to 1.0.
+                                "red": 3.14, # The red component of the color, from 0.0 to 1.0.
+                              },
+                            },
+                          },
+                          "bold": True or False, # Whether or not the text is bold.
+                          "baselineOffset": "A String", # The text's vertical offset from its normal position.
+                              #
+                              # Text with `SUPERSCRIPT` or `SUBSCRIPT` baseline offsets is automatically
+                              # rendered in a smaller font size, computed based on the `font_size` field.
+                              # The `font_size` itself is not affected by changes in this field.
+                          "strikethrough": True or False, # Whether or not the text is struck through.
+                          "smallCaps": True or False, # Whether or not the text is in small capital letters.
+                          "fontFamily": "A String", # The font family of the text.
+                              #
+                              # The font family can be any font from the Font menu in Slides or from
+                              # [Google Fonts] (https://fonts.google.com/). If the font name is
+                              # unrecognized, the text is rendered in `Arial`.
+                              #
+                              # Some fonts can affect the weight of the text. If an update request
+                              # specifies values for both `font_family` and `bold`, the explicitly-set
+                              # `bold` value is used.
+                          "link": { # A hypertext link. # The hyperlink destination of the text. If unset, there is no link. Links
+                              # are not inherited from parent text.
+                              #
+                              # Changing the link in an update request causes some other changes to the
+                              # text style of the range:
+                              #
+                              # * When setting a link, the text foreground color will be set to
+                              #   ThemeColorType.HYPERLINK and the text will
+                              #   be underlined. If these fields are modified in the same
+                              #   request, those values will be used instead of the link defaults.
+                              # * Setting a link on a text range that overlaps with an existing link will
+                              #   also update the existing link to point to the new URL.
+                              # * Links are not settable on newline characters. As a result, setting a link
+                              #   on a text range that crosses a paragraph boundary, such as `"ABC\n123"`,
+                              #   will separate the newline character(s) into their own text runs. The
+                              #   link will be applied separately to the runs before and after the newline.
+                              # * Removing a link will update the text style of the range to match the
+                              #   style of the preceding text (or the default text styles if the preceding
+                              #   text is another link) unless different styles are being set in the same
+                              #   request.
+                            "url": "A String", # If set, indicates this is a link to the external web page at this URL.
+                            "pageObjectId": "A String", # If set, indicates this is a link to the specific page in this
+                                # presentation with this ID. A page with this ID may not exist.
+                            "slideIndex": 42, # If set, indicates this is a link to the slide at this zero-based index
+                                # in the presentation. There may not be a slide at this index.
+                            "relativeLink": "A String", # If set, indicates this is a link to a slide in this presentation,
+                                # addressed by its position.
+                          },
+                          "italic": True or False, # Whether or not the text is italicized.
+                          "fontSize": { # A magnitude in a single direction in the specified units. # The size of the text's font. When read, the `font_size` will specified in
+                              # points.
+                            "magnitude": 3.14, # The magnitude.
+                            "unit": "A String", # The units for magnitude.
+                          },
+                          "underline": True or False, # Whether or not the text is underlined.
+                          "backgroundColor": { # A color that can either be fully opaque or fully transparent. # The background color of the text. If set, the color is either opaque or
+                              # transparent, depending on if the `opaque_color` field in it is set.
+                            "opaqueColor": { # A themeable solid color value. # If set, this will be used as an opaque color. If unset, this represents
+                                # a transparent color.
+                              "themeColor": "A String", # An opaque theme color.
+                              "rgbColor": { # An RGB color. # An opaque RGB color.
+                                "blue": 3.14, # The blue component of the color, from 0.0 to 1.0.
+                                "green": 3.14, # The green component of the color, from 0.0 to 1.0.
+                                "red": 3.14, # The red component of the color, from 0.0 to 1.0.
+                              },
+                            },
+                          },
+                        },
+                      },
+                    },
+                  ],
+                  "lists": { # The bulleted lists contained in this text, keyed by list ID.
+                    "a_key": { # A List describes the look and feel of bullets belonging to paragraphs
+                        # associated with a list. A paragraph that is part of a list has an implicit
+                        # reference to that list's ID.
+                      "nestingLevel": { # A map of nesting levels to the properties of bullets at the associated
+                          # level. A list has at most nine levels of nesting, so the possible values
+                          # for the keys of this map are 0 through 8, inclusive.
+                        "a_key": { # Contains properties describing the look and feel of a list bullet at a given
+                            # level of nesting.
+                          "bulletStyle": { # Represents the styling that can be applied to a TextRun. # The style of a bullet at this level of nesting.
+                              #
+                              # If this text is contained in a shape with a parent placeholder, then these text styles may be
+                              # inherited from the parent. Which text styles are inherited depend on the
+                              # nesting level of lists:
+                              #
+                              # * A text run in a paragraph that is not in a list will inherit its text style
+                              #   from the the newline character in the paragraph at the 0 nesting level of
+                              #   the list inside the parent placeholder.
+                              # * A text run in a paragraph that is in a list will inherit its text style
+                              #   from the newline character in the paragraph at its corresponding nesting
+                              #   level of the list inside the parent placeholder.
+                              #
+                              # Inherited text styles are represented as unset fields in this message. If
+                              # text is contained in a shape without a parent placeholder, unsetting these
+                              # fields will revert the style to a value matching the defaults in the Slides
+                              # editor.
+                            "foregroundColor": { # A color that can either be fully opaque or fully transparent. # The color of the text itself. If set, the color is either opaque or
+                                # transparent, depending on if the `opaque_color` field in it is set.
+                              "opaqueColor": { # A themeable solid color value. # If set, this will be used as an opaque color. If unset, this represents
+                                  # a transparent color.
+                                "themeColor": "A String", # An opaque theme color.
+                                "rgbColor": { # An RGB color. # An opaque RGB color.
+                                  "blue": 3.14, # The blue component of the color, from 0.0 to 1.0.
+                                  "green": 3.14, # The green component of the color, from 0.0 to 1.0.
+                                  "red": 3.14, # The red component of the color, from 0.0 to 1.0.
+                                },
+                              },
+                            },
+                            "bold": True or False, # Whether or not the text is bold.
+                            "baselineOffset": "A String", # The text's vertical offset from its normal position.
+                                #
+                                # Text with `SUPERSCRIPT` or `SUBSCRIPT` baseline offsets is automatically
+                                # rendered in a smaller font size, computed based on the `font_size` field.
+                                # The `font_size` itself is not affected by changes in this field.
+                            "strikethrough": True or False, # Whether or not the text is struck through.
+                            "smallCaps": True or False, # Whether or not the text is in small capital letters.
+                            "fontFamily": "A String", # The font family of the text.
+                                #
+                                # The font family can be any font from the Font menu in Slides or from
+                                # [Google Fonts] (https://fonts.google.com/). If the font name is
+                                # unrecognized, the text is rendered in `Arial`.
+                                #
+                                # Some fonts can affect the weight of the text. If an update request
+                                # specifies values for both `font_family` and `bold`, the explicitly-set
+                                # `bold` value is used.
+                            "link": { # A hypertext link. # The hyperlink destination of the text. If unset, there is no link. Links
+                                # are not inherited from parent text.
+                                #
+                                # Changing the link in an update request causes some other changes to the
+                                # text style of the range:
+                                #
+                                # * When setting a link, the text foreground color will be set to
+                                #   ThemeColorType.HYPERLINK and the text will
+                                #   be underlined. If these fields are modified in the same
+                                #   request, those values will be used instead of the link defaults.
+                                # * Setting a link on a text range that overlaps with an existing link will
+                                #   also update the existing link to point to the new URL.
+                                # * Links are not settable on newline characters. As a result, setting a link
+                                #   on a text range that crosses a paragraph boundary, such as `"ABC\n123"`,
+                                #   will separate the newline character(s) into their own text runs. The
+                                #   link will be applied separately to the runs before and after the newline.
+                                # * Removing a link will update the text style of the range to match the
+                                #   style of the preceding text (or the default text styles if the preceding
+                                #   text is another link) unless different styles are being set in the same
+                                #   request.
+                              "url": "A String", # If set, indicates this is a link to the external web page at this URL.
+                              "pageObjectId": "A String", # If set, indicates this is a link to the specific page in this
+                                  # presentation with this ID. A page with this ID may not exist.
+                              "slideIndex": 42, # If set, indicates this is a link to the slide at this zero-based index
+                                  # in the presentation. There may not be a slide at this index.
+                              "relativeLink": "A String", # If set, indicates this is a link to a slide in this presentation,
+                                  # addressed by its position.
+                            },
+                            "italic": True or False, # Whether or not the text is italicized.
+                            "fontSize": { # A magnitude in a single direction in the specified units. # The size of the text's font. When read, the `font_size` will specified in
+                                # points.
+                              "magnitude": 3.14, # The magnitude.
+                              "unit": "A String", # The units for magnitude.
+                            },
+                            "underline": True or False, # Whether or not the text is underlined.
+                            "backgroundColor": { # A color that can either be fully opaque or fully transparent. # The background color of the text. If set, the color is either opaque or
+                                # transparent, depending on if the `opaque_color` field in it is set.
+                              "opaqueColor": { # A themeable solid color value. # If set, this will be used as an opaque color. If unset, this represents
+                                  # a transparent color.
+                                "themeColor": "A String", # An opaque theme color.
+                                "rgbColor": { # An RGB color. # An opaque RGB color.
+                                  "blue": 3.14, # The blue component of the color, from 0.0 to 1.0.
+                                  "green": 3.14, # The green component of the color, from 0.0 to 1.0.
+                                  "red": 3.14, # The red component of the color, from 0.0 to 1.0.
+                                },
+                              },
+                            },
+                          },
+                        },
+                      },
+                      "listId": "A String", # The ID of the list.
+                    },
+                  },
+                },
+                "shapeProperties": { # The properties of a Shape. # The properties of the shape.
+                    #
+                    # If the shape is a placeholder shape as determined by the
+                    # placeholder field, then these
+                    # properties may be inherited from a parent placeholder shape.
+                    # Determining the rendered value of the property depends on the corresponding
+                    # property_state field value.
+                  "shadow": { # The shadow properties of a page element. # The shadow properties of the shape. If unset, the shadow is inherited from
+                      # a parent placeholder if it exists. If the shape has no parent, then the
+                      # default shadow matches the defaults for new shapes created in the Slides
+                      # editor. This property is read-only.
+                      #
+                      # If these fields are unset, they may be inherited from a parent placeholder
+                      # if it exists. If there is no parent, the fields will default to the value
+                      # used for new page elements created in the Slides editor, which may depend on
+                      # the page element kind.
+                    "color": { # A themeable solid color value. # The shadow color value.
+                      "themeColor": "A String", # An opaque theme color.
+                      "rgbColor": { # An RGB color. # An opaque RGB color.
+                        "blue": 3.14, # The blue component of the color, from 0.0 to 1.0.
+                        "green": 3.14, # The green component of the color, from 0.0 to 1.0.
+                        "red": 3.14, # The red component of the color, from 0.0 to 1.0.
+                      },
+                    },
+                    "transform": { # AffineTransform uses a 3x3 matrix with an implied last row of [ 0 0 1 ] # Transform that encodes the translate, scale, and skew of the shadow,
+                        # relative to the alignment position.
+                        # to transform source coordinates (x,y) into destination coordinates (x', y')
+                        # according to:
+                        #
+                        #       x'  x  =   shear_y  scale_y  translate_y
+                        #       1  [ 1 ]
+                        #
+                        # After transformation,
+                        #
+                        #      x' = scale_x * x + shear_x * y + translate_x;
+                        #      y' = scale_y * y + shear_y * x + translate_y;
+                        #
+                        # This message is therefore composed of these six matrix elements.
+                      "translateX": 3.14, # The X coordinate translation element.
+                      "translateY": 3.14, # The Y coordinate translation element.
+                      "scaleX": 3.14, # The X coordinate scaling element.
+                      "scaleY": 3.14, # The Y coordinate scaling element.
+                      "shearY": 3.14, # The Y coordinate shearing element.
+                      "shearX": 3.14, # The X coordinate shearing element.
+                      "unit": "A String", # The units for translate elements.
+                    },
+                    "propertyState": "A String", # The shadow property state.
+                        #
+                        # Updating the the shadow on a page element will implicitly update this field
+                        # to `RENDERED`, unless another value is specified in the same request. To
+                        # have no shadow on a page element, set this field to `NOT_RENDERED`. In this
+                        # case, any other shadow fields set in the same request will be ignored.
+                    "blurRadius": { # A magnitude in a single direction in the specified units. # The radius of the shadow blur. The larger the radius, the more diffuse the
+                        # shadow becomes.
+                      "magnitude": 3.14, # The magnitude.
+                      "unit": "A String", # The units for magnitude.
+                    },
+                    "alpha": 3.14, # The alpha of the shadow's color, from 0.0 to 1.0.
+                    "type": "A String", # The type of the shadow.
+                    "alignment": "A String", # The alignment point of the shadow, that sets the origin for translate,
+                        # scale and skew of the shadow.
+                    "rotateWithShape": True or False, # Whether the shadow should rotate with the shape.
+                  },
+                  "shapeBackgroundFill": { # The shape background fill. # The background fill of the shape. If unset, the background fill is
+                      # inherited from a parent placeholder if it exists. If the shape has no
+                      # parent, then the default background fill depends on the shape type,
+                      # matching the defaults for new shapes created in the Slides editor.
+                    "solidFill": { # A solid color fill. The page or page element is filled entirely with the # Solid color fill.
+                        # specified color value.
+                        #
+                        # If any field is unset, its value may be inherited from a parent placeholder
+                        # if it exists.
+                      "color": { # A themeable solid color value. # The color value of the solid fill.
+                        "themeColor": "A String", # An opaque theme color.
+                        "rgbColor": { # An RGB color. # An opaque RGB color.
+                          "blue": 3.14, # The blue component of the color, from 0.0 to 1.0.
+                          "green": 3.14, # The green component of the color, from 0.0 to 1.0.
+                          "red": 3.14, # The red component of the color, from 0.0 to 1.0.
+                        },
+                      },
+                      "alpha": 3.14, # The fraction of this `color` that should be applied to the pixel.
+                          # That is, the final pixel color is defined by the equation:
+                          #
+                          #   pixel color = alpha * (color) + (1.0 - alpha) * (background color)
+                          #
+                          # This means that a value of 1.0 corresponds to a solid color, whereas
+                          # a value of 0.0 corresponds to a completely transparent color.
+                    },
+                    "propertyState": "A String", # The background fill property state.
+                        #
+                        # Updating the the fill on a shape will implicitly update this field to
+                        # `RENDERED`, unless another value is specified in the same request. To
+                        # have no fill on a shape, set this field to `NOT_RENDERED`. In this case,
+                        # any other fill fields set in the same request will be ignored.
+                  },
+                  "link": { # A hypertext link. # The hyperlink destination of the shape. If unset, there is no link. Links
+                      # are not inherited from parent placeholders.
+                    "url": "A String", # If set, indicates this is a link to the external web page at this URL.
+                    "pageObjectId": "A String", # If set, indicates this is a link to the specific page in this
+                        # presentation with this ID. A page with this ID may not exist.
+                    "slideIndex": 42, # If set, indicates this is a link to the slide at this zero-based index
+                        # in the presentation. There may not be a slide at this index.
+                    "relativeLink": "A String", # If set, indicates this is a link to a slide in this presentation,
+                        # addressed by its position.
+                  },
+                  "outline": { # The outline of a PageElement. # The outline of the shape. If unset, the outline is inherited from a
+                      # parent placeholder if it exists. If the shape has no parent, then the
+                      # default outline depends on the shape type, matching the defaults for
+                      # new shapes created in the Slides editor.
+                      #
+                      # If these fields are unset, they may be inherited from a parent placeholder
+                      # if it exists. If there is no parent, the fields will default to the value
+                      # used for new page elements created in the Slides editor, which may depend on
+                      # the page element kind.
+                    "dashStyle": "A String", # The dash style of the outline.
+                    "propertyState": "A String", # The outline property state.
+                        #
+                        # Updating the the outline on a page element will implicitly update this
+                        # field to`RENDERED`, unless another value is specified in the same request.
+                        # To have no outline on a page element, set this field to `NOT_RENDERED`. In
+                        # this case, any other outline fields set in the same request will be
+                        # ignored.
+                    "outlineFill": { # The fill of the outline. # The fill of the outline.
+                      "solidFill": { # A solid color fill. The page or page element is filled entirely with the # Solid color fill.
+                          # specified color value.
+                          #
+                          # If any field is unset, its value may be inherited from a parent placeholder
+                          # if it exists.
+                        "color": { # A themeable solid color value. # The color value of the solid fill.
+                          "themeColor": "A String", # An opaque theme color.
+                          "rgbColor": { # An RGB color. # An opaque RGB color.
+                            "blue": 3.14, # The blue component of the color, from 0.0 to 1.0.
+                            "green": 3.14, # The green component of the color, from 0.0 to 1.0.
+                            "red": 3.14, # The red component of the color, from 0.0 to 1.0.
+                          },
+                        },
+                        "alpha": 3.14, # The fraction of this `color` that should be applied to the pixel.
+                            # That is, the final pixel color is defined by the equation:
+                            #
+                            #   pixel color = alpha * (color) + (1.0 - alpha) * (background color)
+                            #
+                            # This means that a value of 1.0 corresponds to a solid color, whereas
+                            # a value of 0.0 corresponds to a completely transparent color.
+                      },
+                    },
+                    "weight": { # A magnitude in a single direction in the specified units. # The thickness of the outline.
+                      "magnitude": 3.14, # The magnitude.
+                      "unit": "A String", # The units for magnitude.
+                    },
+                  },
+                },
+                "placeholder": { # The placeholder information that uniquely identifies a placeholder shape. # Placeholders are shapes that are inherit from corresponding placeholders on
+                    # layouts and masters.
+                    #
+                    # If set, the shape is a placeholder shape and any inherited properties
+                    # can be resolved by looking at the parent placeholder identified by the
+                    # Placeholder.parent_object_id field.
+                  "parentObjectId": "A String", # The object ID of this shape's parent placeholder.
+                      # If unset, the parent placeholder shape does not exist, so the shape does
+                      # not inherit properties from any other shape.
+                  "index": 42, # The index of the placeholder. If the same placeholder types are the present
+                      # in the same page, they would have different index values.
+                  "type": "A String", # The type of the placeholder.
+                },
+                "shapeType": "A String", # The type of the shape.
+              },
+              "sheetsChart": { # A PageElement kind representing # A linked chart embedded from Google Sheets. Unlinked charts are
+                  # represented as images.
+                  # a linked chart embedded from Google Sheets.
+                "chartId": 42, # The ID of the specific chart in the Google Sheets spreadsheet that is
+                    # embedded.
+                "spreadsheetId": "A String", # The ID of the Google Sheets spreadsheet that contains the source chart.
+                "sheetsChartProperties": { # The properties of the SheetsChart. # The properties of the Sheets chart.
+                  "chartImageProperties": { # The properties of the Image. # The properties of the embedded chart image.
+                    "outline": { # The outline of a PageElement. # The outline of the image. If not set, the the image has no outline.
+                        #
+                        # If these fields are unset, they may be inherited from a parent placeholder
+                        # if it exists. If there is no parent, the fields will default to the value
+                        # used for new page elements created in the Slides editor, which may depend on
+                        # the page element kind.
+                      "dashStyle": "A String", # The dash style of the outline.
+                      "propertyState": "A String", # The outline property state.
+                          #
+                          # Updating the the outline on a page element will implicitly update this
+                          # field to`RENDERED`, unless another value is specified in the same request.
+                          # To have no outline on a page element, set this field to `NOT_RENDERED`. In
+                          # this case, any other outline fields set in the same request will be
+                          # ignored.
+                      "outlineFill": { # The fill of the outline. # The fill of the outline.
+                        "solidFill": { # A solid color fill. The page or page element is filled entirely with the # Solid color fill.
+                            # specified color value.
+                            #
+                            # If any field is unset, its value may be inherited from a parent placeholder
+                            # if it exists.
+                          "color": { # A themeable solid color value. # The color value of the solid fill.
+                            "themeColor": "A String", # An opaque theme color.
+                            "rgbColor": { # An RGB color. # An opaque RGB color.
+                              "blue": 3.14, # The blue component of the color, from 0.0 to 1.0.
+                              "green": 3.14, # The green component of the color, from 0.0 to 1.0.
+                              "red": 3.14, # The red component of the color, from 0.0 to 1.0.
+                            },
+                          },
+                          "alpha": 3.14, # The fraction of this `color` that should be applied to the pixel.
+                              # That is, the final pixel color is defined by the equation:
+                              #
+                              #   pixel color = alpha * (color) + (1.0 - alpha) * (background color)
+                              #
+                              # This means that a value of 1.0 corresponds to a solid color, whereas
+                              # a value of 0.0 corresponds to a completely transparent color.
+                        },
+                      },
+                      "weight": { # A magnitude in a single direction in the specified units. # The thickness of the outline.
+                        "magnitude": 3.14, # The magnitude.
+                        "unit": "A String", # The units for magnitude.
+                      },
+                    },
+                    "brightness": 3.14, # The brightness effect of the image. The value should be in the interval
+                        # [-1.0, 1.0], where 0 means no effect. This property is read-only.
+                    "recolor": { # A recolor effect applied on an image. # The recolor effect of the image. If not set, the image is not recolored.
+                        # This property is read-only.
+                      "recolorStops": [ # The recolor effect is represented by a gradient, which is a list of color
+                          # stops. This property is read-only.
+                        { # A color and position in a gradient band.
+                          "color": { # A themeable solid color value. # The color of the gradient stop.
+                            "themeColor": "A String", # An opaque theme color.
+                            "rgbColor": { # An RGB color. # An opaque RGB color.
+                              "blue": 3.14, # The blue component of the color, from 0.0 to 1.0.
+                              "green": 3.14, # The green component of the color, from 0.0 to 1.0.
+                              "red": 3.14, # The red component of the color, from 0.0 to 1.0.
+                            },
+                          },
+                          "position": 3.14, # The relative position of the color stop in the gradient band measured
+                              # in percentage. The value should be in the interval [0.0, 1.0].
+                          "alpha": 3.14, # The alpha value of this color in the gradient band. Defaults to 1.0,
+                              # fully opaque.
+                        },
+                      ],
+                    },
+                    "link": { # A hypertext link. # The hyperlink destination of the image. If unset, there is no link.
+                      "url": "A String", # If set, indicates this is a link to the external web page at this URL.
+                      "pageObjectId": "A String", # If set, indicates this is a link to the specific page in this
+                          # presentation with this ID. A page with this ID may not exist.
+                      "slideIndex": 42, # If set, indicates this is a link to the slide at this zero-based index
+                          # in the presentation. There may not be a slide at this index.
+                      "relativeLink": "A String", # If set, indicates this is a link to a slide in this presentation,
+                          # addressed by its position.
+                    },
+                    "transparency": 3.14, # The transparency effect of the image. The value should be in the interval
+                        # [0.0, 1.0], where 0 means no effect and 1 means completely transparent.
+                        # This property is read-only.
+                    "cropProperties": { # The crop properties of an object enclosed in a container. For example, an # The crop properties of the image. If not set, the image is not cropped.
+                        # This property is read-only.
+                        # Image.
+                        #
+                        # The crop properties is represented by the offsets of four edges which define
+                        # a crop rectangle. The offsets are measured in percentage from the
+                        # corresponding edges of the object's original bounding rectangle towards
+                        # inside, relative to the object's original dimensions.
+                        #
+                        # - If the offset is in the interval (0, 1), the corresponding edge of crop
+                        # rectangle is positioned inside of the object's original bounding rectangle.
+                        # - If the offset is negative or greater than 1, the corresponding edge of crop
+                        # rectangle is positioned outside of the object's original bounding rectangle.
+                        # - If the left edge of the crop rectangle is on the right side of its right
+                        # edge, the object will be flipped horizontally.
+                        # - If the top edge of the crop rectangle is below its bottom edge, the object
+                        # will be flipped vertically.
+                        # - If all offsets and rotation angle is 0, the object is not cropped.
+                        #
+                        # After cropping, the content in the crop rectangle will be stretched to fit
+                        # its container.
+                      "leftOffset": 3.14, # The offset specifies the left edge of the crop rectangle that is located to
+                          # the right of the original bounding rectangle left edge, relative to the
+                          # object's original width.
+                      "angle": 3.14, # The rotation angle of the crop window around its center, in radians.
+                          # Rotation angle is applied after the offset.
+                      "bottomOffset": 3.14, # The offset specifies the bottom edge of the crop rectangle that is located
+                          # above the original bounding rectangle bottom edge, relative to the object's
+                          # original height.
+                      "rightOffset": 3.14, # The offset specifies the right edge of the crop rectangle that is located
+                          # to the left of the original bounding rectangle right edge, relative to the
+                          # object's original width.
+                      "topOffset": 3.14, # The offset specifies the top edge of the crop rectangle that is located
+                          # below the original bounding rectangle top edge, relative to the object's
+                          # original height.
+                    },
+                    "shadow": { # The shadow properties of a page element. # The shadow of the image. If not set, the image has no shadow. This property
+                        # is read-only.
+                        #
+                        # If these fields are unset, they may be inherited from a parent placeholder
+                        # if it exists. If there is no parent, the fields will default to the value
+                        # used for new page elements created in the Slides editor, which may depend on
+                        # the page element kind.
+                      "color": { # A themeable solid color value. # The shadow color value.
+                        "themeColor": "A String", # An opaque theme color.
+                        "rgbColor": { # An RGB color. # An opaque RGB color.
+                          "blue": 3.14, # The blue component of the color, from 0.0 to 1.0.
+                          "green": 3.14, # The green component of the color, from 0.0 to 1.0.
+                          "red": 3.14, # The red component of the color, from 0.0 to 1.0.
+                        },
+                      },
+                      "transform": { # AffineTransform uses a 3x3 matrix with an implied last row of [ 0 0 1 ] # Transform that encodes the translate, scale, and skew of the shadow,
+                          # relative to the alignment position.
+                          # to transform source coordinates (x,y) into destination coordinates (x', y')
+                          # according to:
+                          #
+                          #       x'  x  =   shear_y  scale_y  translate_y
+                          #       1  [ 1 ]
+                          #
+                          # After transformation,
+                          #
+                          #      x' = scale_x * x + shear_x * y + translate_x;
+                          #      y' = scale_y * y + shear_y * x + translate_y;
+                          #
+                          # This message is therefore composed of these six matrix elements.
+                        "translateX": 3.14, # The X coordinate translation element.
+                        "translateY": 3.14, # The Y coordinate translation element.
+                        "scaleX": 3.14, # The X coordinate scaling element.
+                        "scaleY": 3.14, # The Y coordinate scaling element.
+                        "shearY": 3.14, # The Y coordinate shearing element.
+                        "shearX": 3.14, # The X coordinate shearing element.
+                        "unit": "A String", # The units for translate elements.
+                      },
+                      "propertyState": "A String", # The shadow property state.
+                          #
+                          # Updating the the shadow on a page element will implicitly update this field
+                          # to `RENDERED`, unless another value is specified in the same request. To
+                          # have no shadow on a page element, set this field to `NOT_RENDERED`. In this
+                          # case, any other shadow fields set in the same request will be ignored.
+                      "blurRadius": { # A magnitude in a single direction in the specified units. # The radius of the shadow blur. The larger the radius, the more diffuse the
+                          # shadow becomes.
+                        "magnitude": 3.14, # The magnitude.
+                        "unit": "A String", # The units for magnitude.
+                      },
+                      "alpha": 3.14, # The alpha of the shadow's color, from 0.0 to 1.0.
+                      "type": "A String", # The type of the shadow.
+                      "alignment": "A String", # The alignment point of the shadow, that sets the origin for translate,
+                          # scale and skew of the shadow.
+                      "rotateWithShape": True or False, # Whether the shadow should rotate with the shape.
+                    },
+                    "contrast": 3.14, # The contrast effect of the image. The value should be in the interval
+                        # [-1.0, 1.0], where 0 means no effect. This property is read-only.
+                  },
+                },
+                "contentUrl": "A String", # The URL of an image of the embedded chart, with a default lifetime of 30
+                    # minutes. This URL is tagged with the account of the requester. Anyone with
+                    # the URL effectively accesses the image as the original requester. Access to
+                    # the image may be lost if the presentation's sharing settings change.
+              },
+              "video": { # A PageElement kind representing a # A video page element.
+                  # video.
+                "url": "A String", # An URL to a video. The URL is valid as long as the source video
+                    # exists and sharing settings do not change.
+                "videoProperties": { # The properties of the Video. # The properties of the video.
+                  "outline": { # The outline of a PageElement. # The outline of the video. The default outline matches the defaults for new
+                      # videos created in the Slides editor.
+                      #
+                      # If these fields are unset, they may be inherited from a parent placeholder
+                      # if it exists. If there is no parent, the fields will default to the value
+                      # used for new page elements created in the Slides editor, which may depend on
+                      # the page element kind.
+                    "dashStyle": "A String", # The dash style of the outline.
+                    "propertyState": "A String", # The outline property state.
+                        #
+                        # Updating the the outline on a page element will implicitly update this
+                        # field to`RENDERED`, unless another value is specified in the same request.
+                        # To have no outline on a page element, set this field to `NOT_RENDERED`. In
+                        # this case, any other outline fields set in the same request will be
+                        # ignored.
+                    "outlineFill": { # The fill of the outline. # The fill of the outline.
+                      "solidFill": { # A solid color fill. The page or page element is filled entirely with the # Solid color fill.
+                          # specified color value.
+                          #
+                          # If any field is unset, its value may be inherited from a parent placeholder
+                          # if it exists.
+                        "color": { # A themeable solid color value. # The color value of the solid fill.
+                          "themeColor": "A String", # An opaque theme color.
+                          "rgbColor": { # An RGB color. # An opaque RGB color.
+                            "blue": 3.14, # The blue component of the color, from 0.0 to 1.0.
+                            "green": 3.14, # The green component of the color, from 0.0 to 1.0.
+                            "red": 3.14, # The red component of the color, from 0.0 to 1.0.
+                          },
+                        },
+                        "alpha": 3.14, # The fraction of this `color` that should be applied to the pixel.
+                            # That is, the final pixel color is defined by the equation:
+                            #
+                            #   pixel color = alpha * (color) + (1.0 - alpha) * (background color)
+                            #
+                            # This means that a value of 1.0 corresponds to a solid color, whereas
+                            # a value of 0.0 corresponds to a completely transparent color.
+                      },
+                    },
+                    "weight": { # A magnitude in a single direction in the specified units. # The thickness of the outline.
+                      "magnitude": 3.14, # The magnitude.
+                      "unit": "A String", # The units for magnitude.
+                    },
+                  },
+                },
+                "id": "A String", # The video source's unique identifier for this video.
+                "source": "A String", # The video source.
+              },
+              "table": { # A PageElement kind representing a # A table page element.
+                  # table.
+                "tableColumns": [ # Properties of each column.
+                  { # Properties of each column in a table.
+                    "columnWidth": { # A magnitude in a single direction in the specified units. # Width of a column.
+                      "magnitude": 3.14, # The magnitude.
+                      "unit": "A String", # The units for magnitude.
+                    },
+                  },
+                ],
+                "tableRows": [ # Properties and contents of each row.
+                    #
+                    # Cells that span multiple rows are contained in only one of these rows and
+                    # have a row_span greater
+                    # than 1.
+                  { # Properties and contents of each row in a table.
+                    "tableCells": [ # Properties and contents of each cell.
+                        #
+                        # Cells that span multiple columns are represented only once with a
+                        # column_span greater
+                        # than 1. As a result, the length of this collection does not always match
+                        # the number of columns of the entire table.
+                      { # Properties and contents of each table cell.
+                        "text": { # The general text content. The text must reside in a compatible shape (e.g. # The text content of the cell.
+                            # text box or rectangle) or a table cell in a page.
+                          "textElements": [ # The text contents broken down into its component parts, including styling
+                              # information. This property is read-only.
+                            { # A TextElement describes the content of a range of indices in the text content
+                                # of a Shape or TableCell.
+                              "autoText": { # A TextElement kind that represents auto text. # A TextElement representing a spot in the text that is dynamically
+                                  # replaced with content that can change over time.
+                                "content": "A String", # The rendered content of this auto text, if available.
+                                "style": { # Represents the styling that can be applied to a TextRun. # The styling applied to this auto text.
+                                    #
+                                    # If this text is contained in a shape with a parent placeholder, then these text styles may be
+                                    # inherited from the parent. Which text styles are inherited depend on the
+                                    # nesting level of lists:
+                                    #
+                                    # * A text run in a paragraph that is not in a list will inherit its text style
+                                    #   from the the newline character in the paragraph at the 0 nesting level of
+                                    #   the list inside the parent placeholder.
+                                    # * A text run in a paragraph that is in a list will inherit its text style
+                                    #   from the newline character in the paragraph at its corresponding nesting
+                                    #   level of the list inside the parent placeholder.
+                                    #
+                                    # Inherited text styles are represented as unset fields in this message. If
+                                    # text is contained in a shape without a parent placeholder, unsetting these
+                                    # fields will revert the style to a value matching the defaults in the Slides
+                                    # editor.
+                                  "foregroundColor": { # A color that can either be fully opaque or fully transparent. # The color of the text itself. If set, the color is either opaque or
+                                      # transparent, depending on if the `opaque_color` field in it is set.
+                                    "opaqueColor": { # A themeable solid color value. # If set, this will be used as an opaque color. If unset, this represents
+                                        # a transparent color.
+                                      "themeColor": "A String", # An opaque theme color.
+                                      "rgbColor": { # An RGB color. # An opaque RGB color.
+                                        "blue": 3.14, # The blue component of the color, from 0.0 to 1.0.
+                                        "green": 3.14, # The green component of the color, from 0.0 to 1.0.
+                                        "red": 3.14, # The red component of the color, from 0.0 to 1.0.
+                                      },
+                                    },
+                                  },
+                                  "bold": True or False, # Whether or not the text is bold.
+                                  "baselineOffset": "A String", # The text's vertical offset from its normal position.
+                                      #
+                                      # Text with `SUPERSCRIPT` or `SUBSCRIPT` baseline offsets is automatically
+                                      # rendered in a smaller font size, computed based on the `font_size` field.
+                                      # The `font_size` itself is not affected by changes in this field.
+                                  "strikethrough": True or False, # Whether or not the text is struck through.
+                                  "smallCaps": True or False, # Whether or not the text is in small capital letters.
+                                  "fontFamily": "A String", # The font family of the text.
+                                      #
+                                      # The font family can be any font from the Font menu in Slides or from
+                                      # [Google Fonts] (https://fonts.google.com/). If the font name is
+                                      # unrecognized, the text is rendered in `Arial`.
+                                      #
+                                      # Some fonts can affect the weight of the text. If an update request
+                                      # specifies values for both `font_family` and `bold`, the explicitly-set
+                                      # `bold` value is used.
+                                  "link": { # A hypertext link. # The hyperlink destination of the text. If unset, there is no link. Links
+                                      # are not inherited from parent text.
+                                      #
+                                      # Changing the link in an update request causes some other changes to the
+                                      # text style of the range:
+                                      #
+                                      # * When setting a link, the text foreground color will be set to
+                                      #   ThemeColorType.HYPERLINK and the text will
+                                      #   be underlined. If these fields are modified in the same
+                                      #   request, those values will be used instead of the link defaults.
+                                      # * Setting a link on a text range that overlaps with an existing link will
+                                      #   also update the existing link to point to the new URL.
+                                      # * Links are not settable on newline characters. As a result, setting a link
+                                      #   on a text range that crosses a paragraph boundary, such as `"ABC\n123"`,
+                                      #   will separate the newline character(s) into their own text runs. The
+                                      #   link will be applied separately to the runs before and after the newline.
+                                      # * Removing a link will update the text style of the range to match the
+                                      #   style of the preceding text (or the default text styles if the preceding
+                                      #   text is another link) unless different styles are being set in the same
+                                      #   request.
+                                    "url": "A String", # If set, indicates this is a link to the external web page at this URL.
+                                    "pageObjectId": "A String", # If set, indicates this is a link to the specific page in this
+                                        # presentation with this ID. A page with this ID may not exist.
+                                    "slideIndex": 42, # If set, indicates this is a link to the slide at this zero-based index
+                                        # in the presentation. There may not be a slide at this index.
+                                    "relativeLink": "A String", # If set, indicates this is a link to a slide in this presentation,
+                                        # addressed by its position.
+                                  },
+                                  "italic": True or False, # Whether or not the text is italicized.
+                                  "fontSize": { # A magnitude in a single direction in the specified units. # The size of the text's font. When read, the `font_size` will specified in
+                                      # points.
+                                    "magnitude": 3.14, # The magnitude.
+                                    "unit": "A String", # The units for magnitude.
+                                  },
+                                  "underline": True or False, # Whether or not the text is underlined.
+                                  "backgroundColor": { # A color that can either be fully opaque or fully transparent. # The background color of the text. If set, the color is either opaque or
+                                      # transparent, depending on if the `opaque_color` field in it is set.
+                                    "opaqueColor": { # A themeable solid color value. # If set, this will be used as an opaque color. If unset, this represents
+                                        # a transparent color.
+                                      "themeColor": "A String", # An opaque theme color.
+                                      "rgbColor": { # An RGB color. # An opaque RGB color.
+                                        "blue": 3.14, # The blue component of the color, from 0.0 to 1.0.
+                                        "green": 3.14, # The green component of the color, from 0.0 to 1.0.
+                                        "red": 3.14, # The red component of the color, from 0.0 to 1.0.
+                                      },
+                                    },
+                                  },
+                                },
+                                "type": "A String", # The type of this auto text.
+                              },
+                              "endIndex": 42, # The zero-based end index of this text element, exclusive, in Unicode code
+                                  # units.
+                              "startIndex": 42, # The zero-based start index of this text element, in Unicode code units.
+                              "paragraphMarker": { # A TextElement kind that represents the beginning of a new paragraph. # A marker representing the beginning of a new paragraph.
+                                  #
+                                  # The `start_index` and `end_index` of this TextElement represent the
+                                  # range of the paragraph. Other TextElements with an index range contained
+                                  # inside this paragraph's range are considered to be part of this
+                                  # paragraph. The range of indices of two separate paragraphs will never
+                                  # overlap.
+                                "style": { # Styles that apply to a whole paragraph. # The paragraph's style
+                                    #
+                                    # If this text is contained in a shape with a parent placeholder, then these paragraph styles may be
+                                    # inherited from the parent. Which paragraph styles are inherited depend on the
+                                    # nesting level of lists:
+                                    #
+                                    # * A paragraph not in a list will inherit its paragraph style from the
+                                    #   paragraph at the 0 nesting level of the list inside the parent placeholder.
+                                    # * A paragraph in a list will inherit its paragraph style from the paragraph
+                                    #   at its corresponding nesting level of the list inside the parent
+                                    #   placeholder.
+                                    #
+                                    # Inherited paragraph styles are represented as unset fields in this message.
+                                  "spacingMode": "A String", # The spacing mode for the paragraph. This property is read-only.
+                                  "direction": "A String", # The text direction of this paragraph. This property is read-only.
+                                  "spaceBelow": { # A magnitude in a single direction in the specified units. # The amount of extra space above the paragraph. If unset, the value is
+                                      # inherited from the parent. This property is read-only.
+                                    "magnitude": 3.14, # The magnitude.
+                                    "unit": "A String", # The units for magnitude.
+                                  },
+                                  "lineSpacing": 3.14, # The amount of space between lines, as a percentage of normal, where normal
+                                      # is represented as 100.0. If unset, the value is inherited from the parent.
+                                      # This property is read-only.
+                                  "indentStart": { # A magnitude in a single direction in the specified units. # The amount indentation for the paragraph on the side that corresponds to
+                                      # the start of the text, based on the current text direction. If unset, the
+                                      # value is inherited from the parent. This property is read-only.
+                                    "magnitude": 3.14, # The magnitude.
+                                    "unit": "A String", # The units for magnitude.
+                                  },
+                                  "spaceAbove": { # A magnitude in a single direction in the specified units. # The amount of extra space above the paragraph. If unset, the value is
+                                      # inherited from the parent. This property is read-only.
+                                    "magnitude": 3.14, # The magnitude.
+                                    "unit": "A String", # The units for magnitude.
+                                  },
+                                  "indentEnd": { # A magnitude in a single direction in the specified units. # The amount indentation for the paragraph on the side that corresponds to
+                                      # the end of the text, based on the current text direction. If unset, the
+                                      # value is inherited from the parent. This property is read-only.
+                                    "magnitude": 3.14, # The magnitude.
+                                    "unit": "A String", # The units for magnitude.
+                                  },
+                                  "indentFirstLine": { # A magnitude in a single direction in the specified units. # The amount of indentation for the start of the first line of the paragraph.
+                                      # If unset, the value is inherited from the parent. This property is
+                                      # read-only.
+                                    "magnitude": 3.14, # The magnitude.
+                                    "unit": "A String", # The units for magnitude.
+                                  },
+                                  "alignment": "A String", # The text alignment for this paragraph. This property is read-only.
+                                },
+                                "bullet": { # Describes the bullet of a paragraph. # The bullet for this paragraph. If not present, the paragraph does not
+                                    # belong to a list.
+                                  "nestingLevel": 42, # The nesting level of this paragraph in the list.
+                                  "listId": "A String", # The ID of the list this paragraph belongs to.
+                                  "bulletStyle": { # Represents the styling that can be applied to a TextRun. # The paragraph specific text style applied to this bullet.
+                                      #
+                                      # If this text is contained in a shape with a parent placeholder, then these text styles may be
+                                      # inherited from the parent. Which text styles are inherited depend on the
+                                      # nesting level of lists:
+                                      #
+                                      # * A text run in a paragraph that is not in a list will inherit its text style
+                                      #   from the the newline character in the paragraph at the 0 nesting level of
+                                      #   the list inside the parent placeholder.
+                                      # * A text run in a paragraph that is in a list will inherit its text style
+                                      #   from the newline character in the paragraph at its corresponding nesting
+                                      #   level of the list inside the parent placeholder.
+                                      #
+                                      # Inherited text styles are represented as unset fields in this message. If
+                                      # text is contained in a shape without a parent placeholder, unsetting these
+                                      # fields will revert the style to a value matching the defaults in the Slides
+                                      # editor.
+                                    "foregroundColor": { # A color that can either be fully opaque or fully transparent. # The color of the text itself. If set, the color is either opaque or
+                                        # transparent, depending on if the `opaque_color` field in it is set.
+                                      "opaqueColor": { # A themeable solid color value. # If set, this will be used as an opaque color. If unset, this represents
+                                          # a transparent color.
+                                        "themeColor": "A String", # An opaque theme color.
+                                        "rgbColor": { # An RGB color. # An opaque RGB color.
+                                          "blue": 3.14, # The blue component of the color, from 0.0 to 1.0.
+                                          "green": 3.14, # The green component of the color, from 0.0 to 1.0.
+                                          "red": 3.14, # The red component of the color, from 0.0 to 1.0.
+                                        },
+                                      },
+                                    },
+                                    "bold": True or False, # Whether or not the text is bold.
+                                    "baselineOffset": "A String", # The text's vertical offset from its normal position.
+                                        #
+                                        # Text with `SUPERSCRIPT` or `SUBSCRIPT` baseline offsets is automatically
+                                        # rendered in a smaller font size, computed based on the `font_size` field.
+                                        # The `font_size` itself is not affected by changes in this field.
+                                    "strikethrough": True or False, # Whether or not the text is struck through.
+                                    "smallCaps": True or False, # Whether or not the text is in small capital letters.
+                                    "fontFamily": "A String", # The font family of the text.
+                                        #
+                                        # The font family can be any font from the Font menu in Slides or from
+                                        # [Google Fonts] (https://fonts.google.com/). If the font name is
+                                        # unrecognized, the text is rendered in `Arial`.
+                                        #
+                                        # Some fonts can affect the weight of the text. If an update request
+                                        # specifies values for both `font_family` and `bold`, the explicitly-set
+                                        # `bold` value is used.
+                                    "link": { # A hypertext link. # The hyperlink destination of the text. If unset, there is no link. Links
+                                        # are not inherited from parent text.
+                                        #
+                                        # Changing the link in an update request causes some other changes to the
+                                        # text style of the range:
+                                        #
+                                        # * When setting a link, the text foreground color will be set to
+                                        #   ThemeColorType.HYPERLINK and the text will
+                                        #   be underlined. If these fields are modified in the same
+                                        #   request, those values will be used instead of the link defaults.
+                                        # * Setting a link on a text range that overlaps with an existing link will
+                                        #   also update the existing link to point to the new URL.
+                                        # * Links are not settable on newline characters. As a result, setting a link
+                                        #   on a text range that crosses a paragraph boundary, such as `"ABC\n123"`,
+                                        #   will separate the newline character(s) into their own text runs. The
+                                        #   link will be applied separately to the runs before and after the newline.
+                                        # * Removing a link will update the text style of the range to match the
+                                        #   style of the preceding text (or the default text styles if the preceding
+                                        #   text is another link) unless different styles are being set in the same
+                                        #   request.
+                                      "url": "A String", # If set, indicates this is a link to the external web page at this URL.
+                                      "pageObjectId": "A String", # If set, indicates this is a link to the specific page in this
+                                          # presentation with this ID. A page with this ID may not exist.
+                                      "slideIndex": 42, # If set, indicates this is a link to the slide at this zero-based index
+                                          # in the presentation. There may not be a slide at this index.
+                                      "relativeLink": "A String", # If set, indicates this is a link to a slide in this presentation,
+                                          # addressed by its position.
+                                    },
+                                    "italic": True or False, # Whether or not the text is italicized.
+                                    "fontSize": { # A magnitude in a single direction in the specified units. # The size of the text's font. When read, the `font_size` will specified in
+                                        # points.
+                                      "magnitude": 3.14, # The magnitude.
+                                      "unit": "A String", # The units for magnitude.
+                                    },
+                                    "underline": True or False, # Whether or not the text is underlined.
+                                    "backgroundColor": { # A color that can either be fully opaque or fully transparent. # The background color of the text. If set, the color is either opaque or
+                                        # transparent, depending on if the `opaque_color` field in it is set.
+                                      "opaqueColor": { # A themeable solid color value. # If set, this will be used as an opaque color. If unset, this represents
+                                          # a transparent color.
+                                        "themeColor": "A String", # An opaque theme color.
+                                        "rgbColor": { # An RGB color. # An opaque RGB color.
+                                          "blue": 3.14, # The blue component of the color, from 0.0 to 1.0.
+                                          "green": 3.14, # The green component of the color, from 0.0 to 1.0.
+                                          "red": 3.14, # The red component of the color, from 0.0 to 1.0.
+                                        },
+                                      },
+                                    },
+                                  },
+                                  "glyph": "A String", # The rendered bullet glyph for this paragraph.
+                                },
+                              },
+                              "textRun": { # A TextElement kind that represents a run of text that all has the same # A TextElement representing a run of text where all of the characters
+                                  # in the run have the same TextStyle.
+                                  #
+                                  # The `start_index` and `end_index` of TextRuns will always be fully
+                                  # contained in the index range of a single `paragraph_marker` TextElement.
+                                  # In other words, a TextRun will never span multiple paragraphs.
+                                  # styling.
+                                "content": "A String", # The text of this run.
+                                "style": { # Represents the styling that can be applied to a TextRun. # The styling applied to this run.
+                                    #
+                                    # If this text is contained in a shape with a parent placeholder, then these text styles may be
+                                    # inherited from the parent. Which text styles are inherited depend on the
+                                    # nesting level of lists:
+                                    #
+                                    # * A text run in a paragraph that is not in a list will inherit its text style
+                                    #   from the the newline character in the paragraph at the 0 nesting level of
+                                    #   the list inside the parent placeholder.
+                                    # * A text run in a paragraph that is in a list will inherit its text style
+                                    #   from the newline character in the paragraph at its corresponding nesting
+                                    #   level of the list inside the parent placeholder.
+                                    #
+                                    # Inherited text styles are represented as unset fields in this message. If
+                                    # text is contained in a shape without a parent placeholder, unsetting these
+                                    # fields will revert the style to a value matching the defaults in the Slides
+                                    # editor.
+                                  "foregroundColor": { # A color that can either be fully opaque or fully transparent. # The color of the text itself. If set, the color is either opaque or
+                                      # transparent, depending on if the `opaque_color` field in it is set.
+                                    "opaqueColor": { # A themeable solid color value. # If set, this will be used as an opaque color. If unset, this represents
+                                        # a transparent color.
+                                      "themeColor": "A String", # An opaque theme color.
+                                      "rgbColor": { # An RGB color. # An opaque RGB color.
+                                        "blue": 3.14, # The blue component of the color, from 0.0 to 1.0.
+                                        "green": 3.14, # The green component of the color, from 0.0 to 1.0.
+                                        "red": 3.14, # The red component of the color, from 0.0 to 1.0.
+                                      },
+                                    },
+                                  },
+                                  "bold": True or False, # Whether or not the text is bold.
+                                  "baselineOffset": "A String", # The text's vertical offset from its normal position.
+                                      #
+                                      # Text with `SUPERSCRIPT` or `SUBSCRIPT` baseline offsets is automatically
+                                      # rendered in a smaller font size, computed based on the `font_size` field.
+                                      # The `font_size` itself is not affected by changes in this field.
+                                  "strikethrough": True or False, # Whether or not the text is struck through.
+                                  "smallCaps": True or False, # Whether or not the text is in small capital letters.
+                                  "fontFamily": "A String", # The font family of the text.
+                                      #
+                                      # The font family can be any font from the Font menu in Slides or from
+                                      # [Google Fonts] (https://fonts.google.com/). If the font name is
+                                      # unrecognized, the text is rendered in `Arial`.
+                                      #
+                                      # Some fonts can affect the weight of the text. If an update request
+                                      # specifies values for both `font_family` and `bold`, the explicitly-set
+                                      # `bold` value is used.
+                                  "link": { # A hypertext link. # The hyperlink destination of the text. If unset, there is no link. Links
+                                      # are not inherited from parent text.
+                                      #
+                                      # Changing the link in an update request causes some other changes to the
+                                      # text style of the range:
+                                      #
+                                      # * When setting a link, the text foreground color will be set to
+                                      #   ThemeColorType.HYPERLINK and the text will
+                                      #   be underlined. If these fields are modified in the same
+                                      #   request, those values will be used instead of the link defaults.
+                                      # * Setting a link on a text range that overlaps with an existing link will
+                                      #   also update the existing link to point to the new URL.
+                                      # * Links are not settable on newline characters. As a result, setting a link
+                                      #   on a text range that crosses a paragraph boundary, such as `"ABC\n123"`,
+                                      #   will separate the newline character(s) into their own text runs. The
+                                      #   link will be applied separately to the runs before and after the newline.
+                                      # * Removing a link will update the text style of the range to match the
+                                      #   style of the preceding text (or the default text styles if the preceding
+                                      #   text is another link) unless different styles are being set in the same
+                                      #   request.
+                                    "url": "A String", # If set, indicates this is a link to the external web page at this URL.
+                                    "pageObjectId": "A String", # If set, indicates this is a link to the specific page in this
+                                        # presentation with this ID. A page with this ID may not exist.
+                                    "slideIndex": 42, # If set, indicates this is a link to the slide at this zero-based index
+                                        # in the presentation. There may not be a slide at this index.
+                                    "relativeLink": "A String", # If set, indicates this is a link to a slide in this presentation,
+                                        # addressed by its position.
+                                  },
+                                  "italic": True or False, # Whether or not the text is italicized.
+                                  "fontSize": { # A magnitude in a single direction in the specified units. # The size of the text's font. When read, the `font_size` will specified in
+                                      # points.
+                                    "magnitude": 3.14, # The magnitude.
+                                    "unit": "A String", # The units for magnitude.
+                                  },
+                                  "underline": True or False, # Whether or not the text is underlined.
+                                  "backgroundColor": { # A color that can either be fully opaque or fully transparent. # The background color of the text. If set, the color is either opaque or
+                                      # transparent, depending on if the `opaque_color` field in it is set.
+                                    "opaqueColor": { # A themeable solid color value. # If set, this will be used as an opaque color. If unset, this represents
+                                        # a transparent color.
+                                      "themeColor": "A String", # An opaque theme color.
+                                      "rgbColor": { # An RGB color. # An opaque RGB color.
+                                        "blue": 3.14, # The blue component of the color, from 0.0 to 1.0.
+                                        "green": 3.14, # The green component of the color, from 0.0 to 1.0.
+                                        "red": 3.14, # The red component of the color, from 0.0 to 1.0.
+                                      },
+                                    },
+                                  },
+                                },
+                              },
+                            },
+                          ],
+                          "lists": { # The bulleted lists contained in this text, keyed by list ID.
+                            "a_key": { # A List describes the look and feel of bullets belonging to paragraphs
+                                # associated with a list. A paragraph that is part of a list has an implicit
+                                # reference to that list's ID.
+                              "nestingLevel": { # A map of nesting levels to the properties of bullets at the associated
+                                  # level. A list has at most nine levels of nesting, so the possible values
+                                  # for the keys of this map are 0 through 8, inclusive.
+                                "a_key": { # Contains properties describing the look and feel of a list bullet at a given
+                                    # level of nesting.
+                                  "bulletStyle": { # Represents the styling that can be applied to a TextRun. # The style of a bullet at this level of nesting.
+                                      #
+                                      # If this text is contained in a shape with a parent placeholder, then these text styles may be
+                                      # inherited from the parent. Which text styles are inherited depend on the
+                                      # nesting level of lists:
+                                      #
+                                      # * A text run in a paragraph that is not in a list will inherit its text style
+                                      #   from the the newline character in the paragraph at the 0 nesting level of
+                                      #   the list inside the parent placeholder.
+                                      # * A text run in a paragraph that is in a list will inherit its text style
+                                      #   from the newline character in the paragraph at its corresponding nesting
+                                      #   level of the list inside the parent placeholder.
+                                      #
+                                      # Inherited text styles are represented as unset fields in this message. If
+                                      # text is contained in a shape without a parent placeholder, unsetting these
+                                      # fields will revert the style to a value matching the defaults in the Slides
+                                      # editor.
+                                    "foregroundColor": { # A color that can either be fully opaque or fully transparent. # The color of the text itself. If set, the color is either opaque or
+                                        # transparent, depending on if the `opaque_color` field in it is set.
+                                      "opaqueColor": { # A themeable solid color value. # If set, this will be used as an opaque color. If unset, this represents
+                                          # a transparent color.
+                                        "themeColor": "A String", # An opaque theme color.
+                                        "rgbColor": { # An RGB color. # An opaque RGB color.
+                                          "blue": 3.14, # The blue component of the color, from 0.0 to 1.0.
+                                          "green": 3.14, # The green component of the color, from 0.0 to 1.0.
+                                          "red": 3.14, # The red component of the color, from 0.0 to 1.0.
+                                        },
+                                      },
+                                    },
+                                    "bold": True or False, # Whether or not the text is bold.
+                                    "baselineOffset": "A String", # The text's vertical offset from its normal position.
+                                        #
+                                        # Text with `SUPERSCRIPT` or `SUBSCRIPT` baseline offsets is automatically
+                                        # rendered in a smaller font size, computed based on the `font_size` field.
+                                        # The `font_size` itself is not affected by changes in this field.
+                                    "strikethrough": True or False, # Whether or not the text is struck through.
+                                    "smallCaps": True or False, # Whether or not the text is in small capital letters.
+                                    "fontFamily": "A String", # The font family of the text.
+                                        #
+                                        # The font family can be any font from the Font menu in Slides or from
+                                        # [Google Fonts] (https://fonts.google.com/). If the font name is
+                                        # unrecognized, the text is rendered in `Arial`.
+                                        #
+                                        # Some fonts can affect the weight of the text. If an update request
+                                        # specifies values for both `font_family` and `bold`, the explicitly-set
+                                        # `bold` value is used.
+                                    "link": { # A hypertext link. # The hyperlink destination of the text. If unset, there is no link. Links
+                                        # are not inherited from parent text.
+                                        #
+                                        # Changing the link in an update request causes some other changes to the
+                                        # text style of the range:
+                                        #
+                                        # * When setting a link, the text foreground color will be set to
+                                        #   ThemeColorType.HYPERLINK and the text will
+                                        #   be underlined. If these fields are modified in the same
+                                        #   request, those values will be used instead of the link defaults.
+                                        # * Setting a link on a text range that overlaps with an existing link will
+                                        #   also update the existing link to point to the new URL.
+                                        # * Links are not settable on newline characters. As a result, setting a link
+                                        #   on a text range that crosses a paragraph boundary, such as `"ABC\n123"`,
+                                        #   will separate the newline character(s) into their own text runs. The
+                                        #   link will be applied separately to the runs before and after the newline.
+                                        # * Removing a link will update the text style of the range to match the
+                                        #   style of the preceding text (or the default text styles if the preceding
+                                        #   text is another link) unless different styles are being set in the same
+                                        #   request.
+                                      "url": "A String", # If set, indicates this is a link to the external web page at this URL.
+                                      "pageObjectId": "A String", # If set, indicates this is a link to the specific page in this
+                                          # presentation with this ID. A page with this ID may not exist.
+                                      "slideIndex": 42, # If set, indicates this is a link to the slide at this zero-based index
+                                          # in the presentation. There may not be a slide at this index.
+                                      "relativeLink": "A String", # If set, indicates this is a link to a slide in this presentation,
+                                          # addressed by its position.
+                                    },
+                                    "italic": True or False, # Whether or not the text is italicized.
+                                    "fontSize": { # A magnitude in a single direction in the specified units. # The size of the text's font. When read, the `font_size` will specified in
+                                        # points.
+                                      "magnitude": 3.14, # The magnitude.
+                                      "unit": "A String", # The units for magnitude.
+                                    },
+                                    "underline": True or False, # Whether or not the text is underlined.
+                                    "backgroundColor": { # A color that can either be fully opaque or fully transparent. # The background color of the text. If set, the color is either opaque or
+                                        # transparent, depending on if the `opaque_color` field in it is set.
+                                      "opaqueColor": { # A themeable solid color value. # If set, this will be used as an opaque color. If unset, this represents
+                                          # a transparent color.
+                                        "themeColor": "A String", # An opaque theme color.
+                                        "rgbColor": { # An RGB color. # An opaque RGB color.
+                                          "blue": 3.14, # The blue component of the color, from 0.0 to 1.0.
+                                          "green": 3.14, # The green component of the color, from 0.0 to 1.0.
+                                          "red": 3.14, # The red component of the color, from 0.0 to 1.0.
+                                        },
+                                      },
+                                    },
+                                  },
+                                },
+                              },
+                              "listId": "A String", # The ID of the list.
+                            },
+                          },
+                        },
+                        "rowSpan": 42, # Row span of the cell.
+                        "tableCellProperties": { # The properties of the TableCell. # The properties of the table cell.
+                          "tableCellBackgroundFill": { # The table cell background fill. # The background fill of the table cell. The default fill matches the fill
+                              # for newly created table cells in the Slides editor.
+                            "solidFill": { # A solid color fill. The page or page element is filled entirely with the # Solid color fill.
+                                # specified color value.
+                                #
+                                # If any field is unset, its value may be inherited from a parent placeholder
+                                # if it exists.
+                              "color": { # A themeable solid color value. # The color value of the solid fill.
+                                "themeColor": "A String", # An opaque theme color.
+                                "rgbColor": { # An RGB color. # An opaque RGB color.
+                                  "blue": 3.14, # The blue component of the color, from 0.0 to 1.0.
+                                  "green": 3.14, # The green component of the color, from 0.0 to 1.0.
+                                  "red": 3.14, # The red component of the color, from 0.0 to 1.0.
+                                },
+                              },
+                              "alpha": 3.14, # The fraction of this `color` that should be applied to the pixel.
+                                  # That is, the final pixel color is defined by the equation:
+                                  #
+                                  #   pixel color = alpha * (color) + (1.0 - alpha) * (background color)
+                                  #
+                                  # This means that a value of 1.0 corresponds to a solid color, whereas
+                                  # a value of 0.0 corresponds to a completely transparent color.
+                            },
+                            "propertyState": "A String", # The background fill property state.
+                                #
+                                # Updating the the fill on a table cell will implicitly update this field
+                                # to `RENDERED`, unless another value is specified in the same request. To
+                                # have no fill on a table cell, set this field to `NOT_RENDERED`. In this
+                                # case, any other fill fields set in the same request will be ignored.
+                          },
+                        },
+                        "location": { # A location of a single table cell within a table. # The location of the cell within the table.
+                          "rowIndex": 42, # The 0-based row index.
+                          "columnIndex": 42, # The 0-based column index.
+                        },
+                        "columnSpan": 42, # Column span of the cell.
+                      },
+                    ],
+                    "rowHeight": { # A magnitude in a single direction in the specified units. # Height of a row.
+                      "magnitude": 3.14, # The magnitude.
+                      "unit": "A String", # The units for magnitude.
+                    },
+                  },
+                ],
+                "rows": 42, # Number of rows in the table.
+                "columns": 42, # Number of columns in the table.
+              },
+              "line": { # A PageElement kind representing a # A line page element.
+                  # line, curved connector, or bent connector.
+                "lineProperties": { # The properties of the Line. # The properties of the line.
+                    #
+                    # When unset, these fields default to values that match the appearance of
+                    # new lines created in the Slides editor.
+                  "dashStyle": "A String", # The dash style of the line.
+                  "weight": { # A magnitude in a single direction in the specified units. # The thickness of the line.
+                    "magnitude": 3.14, # The magnitude.
+                    "unit": "A String", # The units for magnitude.
+                  },
+                  "endArrow": "A String", # The style of the arrow at the end of the line.
+                  "link": { # A hypertext link. # The hyperlink destination of the line. If unset, there is no link.
+                    "url": "A String", # If set, indicates this is a link to the external web page at this URL.
+                    "pageObjectId": "A String", # If set, indicates this is a link to the specific page in this
+                        # presentation with this ID. A page with this ID may not exist.
+                    "slideIndex": 42, # If set, indicates this is a link to the slide at this zero-based index
+                        # in the presentation. There may not be a slide at this index.
+                    "relativeLink": "A String", # If set, indicates this is a link to a slide in this presentation,
+                        # addressed by its position.
+                  },
+                  "startArrow": "A String", # The style of the arrow at the beginning of the line.
+                  "lineFill": { # The fill of the line. # The fill of the line. The default line fill matches the defaults for new
+                      # lines created in the Slides editor.
+                    "solidFill": { # A solid color fill. The page or page element is filled entirely with the # Solid color fill.
+                        # specified color value.
+                        #
+                        # If any field is unset, its value may be inherited from a parent placeholder
+                        # if it exists.
+                      "color": { # A themeable solid color value. # The color value of the solid fill.
+                        "themeColor": "A String", # An opaque theme color.
+                        "rgbColor": { # An RGB color. # An opaque RGB color.
+                          "blue": 3.14, # The blue component of the color, from 0.0 to 1.0.
+                          "green": 3.14, # The green component of the color, from 0.0 to 1.0.
+                          "red": 3.14, # The red component of the color, from 0.0 to 1.0.
+                        },
+                      },
+                      "alpha": 3.14, # The fraction of this `color` that should be applied to the pixel.
+                          # That is, the final pixel color is defined by the equation:
+                          #
+                          #   pixel color = alpha * (color) + (1.0 - alpha) * (background color)
+                          #
+                          # This means that a value of 1.0 corresponds to a solid color, whereas
+                          # a value of 0.0 corresponds to a completely transparent color.
+                    },
+                  },
+                },
+                "lineType": "A String", # The type of the line.
+              },
+              "size": { # A width and height. # The size of the page element.
+                "width": { # A magnitude in a single direction in the specified units. # The width of the object.
+                  "magnitude": 3.14, # The magnitude.
+                  "unit": "A String", # The units for magnitude.
+                },
+                "height": { # A magnitude in a single direction in the specified units. # The height of the object.
+                  "magnitude": 3.14, # The magnitude.
+                  "unit": "A String", # The units for magnitude.
+                },
+              },
+              "elementGroup": { # A PageElement kind representing a # A collection of page elements joined as a single unit.
+                  # joined collection of PageElements.
+                "children": [ # The collection of elements in the group. The minimum size of a group is 2.
+                  # Object with schema name: PageElement
+                ],
+              },
+            },
+          ],
+          "objectId": "A String", # The object ID for this page. Object IDs used by
+              # Page and
+              # PageElement share the same namespace.
+          "pageProperties": { # The properties of the Page. # The properties of the page.
+              #
+              # The page will inherit properties from the parent page. Depending on the page
+              # type the hierarchy is defined in either
+              # SlideProperties or
+              # LayoutProperties.
+            "pageBackgroundFill": { # The page background fill. # The background fill of the page. If unset, the background fill is inherited
+                # from a parent page if it exists. If the page has no parent, then the
+                # background fill defaults to the corresponding fill in the Slides editor.
+              "solidFill": { # A solid color fill. The page or page element is filled entirely with the # Solid color fill.
+                  # specified color value.
+                  #
+                  # If any field is unset, its value may be inherited from a parent placeholder
+                  # if it exists.
+                "color": { # A themeable solid color value. # The color value of the solid fill.
+                  "themeColor": "A String", # An opaque theme color.
+                  "rgbColor": { # An RGB color. # An opaque RGB color.
+                    "blue": 3.14, # The blue component of the color, from 0.0 to 1.0.
+                    "green": 3.14, # The green component of the color, from 0.0 to 1.0.
+                    "red": 3.14, # The red component of the color, from 0.0 to 1.0.
+                  },
+                },
+                "alpha": 3.14, # The fraction of this `color` that should be applied to the pixel.
+                    # That is, the final pixel color is defined by the equation:
+                    #
+                    #   pixel color = alpha * (color) + (1.0 - alpha) * (background color)
+                    #
+                    # This means that a value of 1.0 corresponds to a solid color, whereas
+                    # a value of 0.0 corresponds to a completely transparent color.
+              },
+              "propertyState": "A String", # The background fill property state.
+                  #
+                  # Updating the the fill on a page will implicitly update this field to
+                  # `RENDERED`, unless another value is specified in the same request. To
+                  # have no fill on a page, set this field to `NOT_RENDERED`. In this case,
+                  # any other fill fields set in the same request will be ignored.
+              "stretchedPictureFill": { # The stretched picture fill. The page or page element is filled entirely with # Stretched picture fill.
+                  # the specified picture. The picture is stretched to fit its container.
+                "contentUrl": "A String", # Reading the content_url:
+                    #
+                    # An URL to a picture with a default lifetime of 30 minutes.
+                    # This URL is tagged with the account of the requester. Anyone with the URL
+                    # effectively accesses the picture as the original requester. Access to the
+                    # picture may be lost if the presentation's sharing settings change.
+                    #
+                    # Writing the content_url:
+                    #
+                    # The picture is fetched once at insertion time and a copy is stored for
+                    # display inside the presentation. Pictures must be less than 50MB in size,
+                    # cannot exceed 25 megapixels, and must be in either in PNG, JPEG, or GIF
+                    # format.
+                "size": { # A width and height. # The original size of the picture fill. This field is read-only.
+                  "width": { # A magnitude in a single direction in the specified units. # The width of the object.
+                    "magnitude": 3.14, # The magnitude.
+                    "unit": "A String", # The units for magnitude.
+                  },
+                  "height": { # A magnitude in a single direction in the specified units. # The height of the object.
+                    "magnitude": 3.14, # The magnitude.
+                    "unit": "A String", # The units for magnitude.
+                  },
+                },
+              },
+            },
+            "colorScheme": { # The palette of predefined colors for a page. # The color scheme of the page. If unset, the color scheme is inherited from
+                # a parent page. If the page has no parent, the color scheme uses a default
+                # Slides color scheme. This field is read-only.
+              "colors": [ # The ThemeColorType and corresponding concrete color pairs.
+                { # A pair mapping a theme color type to the concrete color it represents.
+                  "color": { # An RGB color. # The concrete color corresponding to the theme color type above.
+                    "blue": 3.14, # The blue component of the color, from 0.0 to 1.0.
+                    "green": 3.14, # The green component of the color, from 0.0 to 1.0.
+                    "red": 3.14, # The red component of the color, from 0.0 to 1.0.
+                  },
+                  "type": "A String", # The type of the theme color.
+                },
+              ],
+            },
+          },
+          "pageType": "A String", # The type of the page.
+          "slideProperties": { # The properties of Page that are only # Slide specific properties. Only set if page_type = SLIDE.
+              # relevant for pages with page_type SLIDE.
+            "masterObjectId": "A String", # The object ID of the master that this slide is based on.
+            "layoutObjectId": "A String", # The object ID of the layout that this slide is based on.
+          },
+        },
+      ],
+      "pageSize": { # A width and height. # The size of pages in the presentation.
+        "width": { # A magnitude in a single direction in the specified units. # The width of the object.
+          "magnitude": 3.14, # The magnitude.
+          "unit": "A String", # The units for magnitude.
+        },
+        "height": { # A magnitude in a single direction in the specified units. # The height of the object.
+          "magnitude": 3.14, # The magnitude.
+          "unit": "A String", # The units for magnitude.
+        },
+      },
+      "title": "A String", # The title of the presentation.
+      "locale": "A String", # The locale of the presentation, as an IETF BCP 47 language tag.
+      "slides": [ # The slides in the presentation.
+          # A slide inherits properties from a slide layout.
+        { # A page in a presentation.
+          "layoutProperties": { # The properties of Page are only # Layout specific properties. Only set if page_type = LAYOUT.
+              # relevant for pages with page_type LAYOUT.
+            "displayName": "A String", # The human readable name of the layout in the presentation's locale.
+            "name": "A String", # The name of the layout.
+            "masterObjectId": "A String", # The object ID of the master that this layout is based on.
+          },
+          "pageElements": [ # The page elements rendered on the page.
+            { # A visual element rendered on a page.
+              "wordArt": { # A PageElement kind representing # A word art page element.
+                  # word art.
+                "renderedText": "A String", # The text rendered as word art.
+              },
+              "description": "A String", # The description of the page element. Combined with title to display alt
+                  # text.
+              "objectId": "A String", # The object ID for this page element. Object IDs used by
+                  # google.apps.slides.v1.Page and
+                  # google.apps.slides.v1.PageElement share the same namespace.
+              "title": "A String", # The title of the page element. Combined with description to display alt
+                  # text.
+              "image": { # A PageElement kind representing an # An image page element.
+                  # image.
+                "contentUrl": "A String", # An URL to an image with a default lifetime of 30 minutes.
+                    # This URL is tagged with the account of the requester. Anyone with the URL
+                    # effectively accesses the image as the original requester. Access to the
+                    # image may be lost if the presentation's sharing settings change.
+                "imageProperties": { # The properties of the Image. # The properties of the image.
+                  "outline": { # The outline of a PageElement. # The outline of the image. If not set, the the image has no outline.
+                      #
+                      # If these fields are unset, they may be inherited from a parent placeholder
+                      # if it exists. If there is no parent, the fields will default to the value
+                      # used for new page elements created in the Slides editor, which may depend on
+                      # the page element kind.
+                    "dashStyle": "A String", # The dash style of the outline.
+                    "propertyState": "A String", # The outline property state.
+                        #
+                        # Updating the the outline on a page element will implicitly update this
+                        # field to`RENDERED`, unless another value is specified in the same request.
+                        # To have no outline on a page element, set this field to `NOT_RENDERED`. In
+                        # this case, any other outline fields set in the same request will be
+                        # ignored.
+                    "outlineFill": { # The fill of the outline. # The fill of the outline.
+                      "solidFill": { # A solid color fill. The page or page element is filled entirely with the # Solid color fill.
+                          # specified color value.
+                          #
+                          # If any field is unset, its value may be inherited from a parent placeholder
+                          # if it exists.
+                        "color": { # A themeable solid color value. # The color value of the solid fill.
+                          "themeColor": "A String", # An opaque theme color.
+                          "rgbColor": { # An RGB color. # An opaque RGB color.
+                            "blue": 3.14, # The blue component of the color, from 0.0 to 1.0.
+                            "green": 3.14, # The green component of the color, from 0.0 to 1.0.
+                            "red": 3.14, # The red component of the color, from 0.0 to 1.0.
+                          },
+                        },
+                        "alpha": 3.14, # The fraction of this `color` that should be applied to the pixel.
+                            # That is, the final pixel color is defined by the equation:
+                            #
+                            #   pixel color = alpha * (color) + (1.0 - alpha) * (background color)
+                            #
+                            # This means that a value of 1.0 corresponds to a solid color, whereas
+                            # a value of 0.0 corresponds to a completely transparent color.
+                      },
+                    },
+                    "weight": { # A magnitude in a single direction in the specified units. # The thickness of the outline.
+                      "magnitude": 3.14, # The magnitude.
+                      "unit": "A String", # The units for magnitude.
+                    },
+                  },
+                  "brightness": 3.14, # The brightness effect of the image. The value should be in the interval
+                      # [-1.0, 1.0], where 0 means no effect. This property is read-only.
+                  "recolor": { # A recolor effect applied on an image. # The recolor effect of the image. If not set, the image is not recolored.
+                      # This property is read-only.
+                    "recolorStops": [ # The recolor effect is represented by a gradient, which is a list of color
+                        # stops. This property is read-only.
+                      { # A color and position in a gradient band.
+                        "color": { # A themeable solid color value. # The color of the gradient stop.
+                          "themeColor": "A String", # An opaque theme color.
+                          "rgbColor": { # An RGB color. # An opaque RGB color.
+                            "blue": 3.14, # The blue component of the color, from 0.0 to 1.0.
+                            "green": 3.14, # The green component of the color, from 0.0 to 1.0.
+                            "red": 3.14, # The red component of the color, from 0.0 to 1.0.
+                          },
+                        },
+                        "position": 3.14, # The relative position of the color stop in the gradient band measured
+                            # in percentage. The value should be in the interval [0.0, 1.0].
+                        "alpha": 3.14, # The alpha value of this color in the gradient band. Defaults to 1.0,
+                            # fully opaque.
+                      },
+                    ],
+                  },
+                  "link": { # A hypertext link. # The hyperlink destination of the image. If unset, there is no link.
+                    "url": "A String", # If set, indicates this is a link to the external web page at this URL.
+                    "pageObjectId": "A String", # If set, indicates this is a link to the specific page in this
+                        # presentation with this ID. A page with this ID may not exist.
+                    "slideIndex": 42, # If set, indicates this is a link to the slide at this zero-based index
+                        # in the presentation. There may not be a slide at this index.
+                    "relativeLink": "A String", # If set, indicates this is a link to a slide in this presentation,
+                        # addressed by its position.
+                  },
+                  "transparency": 3.14, # The transparency effect of the image. The value should be in the interval
+                      # [0.0, 1.0], where 0 means no effect and 1 means completely transparent.
+                      # This property is read-only.
+                  "cropProperties": { # The crop properties of an object enclosed in a container. For example, an # The crop properties of the image. If not set, the image is not cropped.
+                      # This property is read-only.
+                      # Image.
+                      #
+                      # The crop properties is represented by the offsets of four edges which define
+                      # a crop rectangle. The offsets are measured in percentage from the
+                      # corresponding edges of the object's original bounding rectangle towards
+                      # inside, relative to the object's original dimensions.
+                      #
+                      # - If the offset is in the interval (0, 1), the corresponding edge of crop
+                      # rectangle is positioned inside of the object's original bounding rectangle.
+                      # - If the offset is negative or greater than 1, the corresponding edge of crop
+                      # rectangle is positioned outside of the object's original bounding rectangle.
+                      # - If the left edge of the crop rectangle is on the right side of its right
+                      # edge, the object will be flipped horizontally.
+                      # - If the top edge of the crop rectangle is below its bottom edge, the object
+                      # will be flipped vertically.
+                      # - If all offsets and rotation angle is 0, the object is not cropped.
+                      #
+                      # After cropping, the content in the crop rectangle will be stretched to fit
+                      # its container.
+                    "leftOffset": 3.14, # The offset specifies the left edge of the crop rectangle that is located to
+                        # the right of the original bounding rectangle left edge, relative to the
+                        # object's original width.
+                    "angle": 3.14, # The rotation angle of the crop window around its center, in radians.
+                        # Rotation angle is applied after the offset.
+                    "bottomOffset": 3.14, # The offset specifies the bottom edge of the crop rectangle that is located
+                        # above the original bounding rectangle bottom edge, relative to the object's
+                        # original height.
+                    "rightOffset": 3.14, # The offset specifies the right edge of the crop rectangle that is located
+                        # to the left of the original bounding rectangle right edge, relative to the
+                        # object's original width.
+                    "topOffset": 3.14, # The offset specifies the top edge of the crop rectangle that is located
+                        # below the original bounding rectangle top edge, relative to the object's
+                        # original height.
+                  },
+                  "shadow": { # The shadow properties of a page element. # The shadow of the image. If not set, the image has no shadow. This property
+                      # is read-only.
+                      #
+                      # If these fields are unset, they may be inherited from a parent placeholder
+                      # if it exists. If there is no parent, the fields will default to the value
+                      # used for new page elements created in the Slides editor, which may depend on
+                      # the page element kind.
+                    "color": { # A themeable solid color value. # The shadow color value.
+                      "themeColor": "A String", # An opaque theme color.
+                      "rgbColor": { # An RGB color. # An opaque RGB color.
+                        "blue": 3.14, # The blue component of the color, from 0.0 to 1.0.
+                        "green": 3.14, # The green component of the color, from 0.0 to 1.0.
+                        "red": 3.14, # The red component of the color, from 0.0 to 1.0.
+                      },
+                    },
+                    "transform": { # AffineTransform uses a 3x3 matrix with an implied last row of [ 0 0 1 ] # Transform that encodes the translate, scale, and skew of the shadow,
+                        # relative to the alignment position.
+                        # to transform source coordinates (x,y) into destination coordinates (x', y')
+                        # according to:
+                        #
+                        #       x'  x  =   shear_y  scale_y  translate_y
+                        #       1  [ 1 ]
+                        #
+                        # After transformation,
+                        #
+                        #      x' = scale_x * x + shear_x * y + translate_x;
+                        #      y' = scale_y * y + shear_y * x + translate_y;
+                        #
+                        # This message is therefore composed of these six matrix elements.
+                      "translateX": 3.14, # The X coordinate translation element.
+                      "translateY": 3.14, # The Y coordinate translation element.
+                      "scaleX": 3.14, # The X coordinate scaling element.
+                      "scaleY": 3.14, # The Y coordinate scaling element.
+                      "shearY": 3.14, # The Y coordinate shearing element.
+                      "shearX": 3.14, # The X coordinate shearing element.
+                      "unit": "A String", # The units for translate elements.
+                    },
+                    "propertyState": "A String", # The shadow property state.
+                        #
+                        # Updating the the shadow on a page element will implicitly update this field
+                        # to `RENDERED`, unless another value is specified in the same request. To
+                        # have no shadow on a page element, set this field to `NOT_RENDERED`. In this
+                        # case, any other shadow fields set in the same request will be ignored.
+                    "blurRadius": { # A magnitude in a single direction in the specified units. # The radius of the shadow blur. The larger the radius, the more diffuse the
+                        # shadow becomes.
+                      "magnitude": 3.14, # The magnitude.
+                      "unit": "A String", # The units for magnitude.
+                    },
+                    "alpha": 3.14, # The alpha of the shadow's color, from 0.0 to 1.0.
+                    "type": "A String", # The type of the shadow.
+                    "alignment": "A String", # The alignment point of the shadow, that sets the origin for translate,
+                        # scale and skew of the shadow.
+                    "rotateWithShape": True or False, # Whether the shadow should rotate with the shape.
+                  },
+                  "contrast": 3.14, # The contrast effect of the image. The value should be in the interval
+                      # [-1.0, 1.0], where 0 means no effect. This property is read-only.
+                },
+              },
+              "transform": { # AffineTransform uses a 3x3 matrix with an implied last row of [ 0 0 1 ] # The transform of the page element.
+                  # to transform source coordinates (x,y) into destination coordinates (x', y')
+                  # according to:
+                  #
+                  #       x'  x  =   shear_y  scale_y  translate_y
+                  #       1  [ 1 ]
+                  #
+                  # After transformation,
+                  #
+                  #      x' = scale_x * x + shear_x * y + translate_x;
+                  #      y' = scale_y * y + shear_y * x + translate_y;
+                  #
+                  # This message is therefore composed of these six matrix elements.
+                "translateX": 3.14, # The X coordinate translation element.
+                "translateY": 3.14, # The Y coordinate translation element.
+                "scaleX": 3.14, # The X coordinate scaling element.
+                "scaleY": 3.14, # The Y coordinate scaling element.
+                "shearY": 3.14, # The Y coordinate shearing element.
+                "shearX": 3.14, # The X coordinate shearing element.
+                "unit": "A String", # The units for translate elements.
+              },
+              "shape": { # A PageElement kind representing a # A generic shape.
+                  # generic shape that does not have a more specific classification.
+                "text": { # The general text content. The text must reside in a compatible shape (e.g. # The text content of the shape.
+                    # text box or rectangle) or a table cell in a page.
+                  "textElements": [ # The text contents broken down into its component parts, including styling
+                      # information. This property is read-only.
+                    { # A TextElement describes the content of a range of indices in the text content
+                        # of a Shape or TableCell.
+                      "autoText": { # A TextElement kind that represents auto text. # A TextElement representing a spot in the text that is dynamically
+                          # replaced with content that can change over time.
+                        "content": "A String", # The rendered content of this auto text, if available.
+                        "style": { # Represents the styling that can be applied to a TextRun. # The styling applied to this auto text.
+                            #
+                            # If this text is contained in a shape with a parent placeholder, then these text styles may be
+                            # inherited from the parent. Which text styles are inherited depend on the
+                            # nesting level of lists:
+                            #
+                            # * A text run in a paragraph that is not in a list will inherit its text style
+                            #   from the the newline character in the paragraph at the 0 nesting level of
+                            #   the list inside the parent placeholder.
+                            # * A text run in a paragraph that is in a list will inherit its text style
+                            #   from the newline character in the paragraph at its corresponding nesting
+                            #   level of the list inside the parent placeholder.
+                            #
+                            # Inherited text styles are represented as unset fields in this message. If
+                            # text is contained in a shape without a parent placeholder, unsetting these
+                            # fields will revert the style to a value matching the defaults in the Slides
+                            # editor.
+                          "foregroundColor": { # A color that can either be fully opaque or fully transparent. # The color of the text itself. If set, the color is either opaque or
+                              # transparent, depending on if the `opaque_color` field in it is set.
+                            "opaqueColor": { # A themeable solid color value. # If set, this will be used as an opaque color. If unset, this represents
+                                # a transparent color.
+                              "themeColor": "A String", # An opaque theme color.
+                              "rgbColor": { # An RGB color. # An opaque RGB color.
+                                "blue": 3.14, # The blue component of the color, from 0.0 to 1.0.
+                                "green": 3.14, # The green component of the color, from 0.0 to 1.0.
+                                "red": 3.14, # The red component of the color, from 0.0 to 1.0.
+                              },
+                            },
+                          },
+                          "bold": True or False, # Whether or not the text is bold.
+                          "baselineOffset": "A String", # The text's vertical offset from its normal position.
+                              #
+                              # Text with `SUPERSCRIPT` or `SUBSCRIPT` baseline offsets is automatically
+                              # rendered in a smaller font size, computed based on the `font_size` field.
+                              # The `font_size` itself is not affected by changes in this field.
+                          "strikethrough": True or False, # Whether or not the text is struck through.
+                          "smallCaps": True or False, # Whether or not the text is in small capital letters.
+                          "fontFamily": "A String", # The font family of the text.
+                              #
+                              # The font family can be any font from the Font menu in Slides or from
+                              # [Google Fonts] (https://fonts.google.com/). If the font name is
+                              # unrecognized, the text is rendered in `Arial`.
+                              #
+                              # Some fonts can affect the weight of the text. If an update request
+                              # specifies values for both `font_family` and `bold`, the explicitly-set
+                              # `bold` value is used.
+                          "link": { # A hypertext link. # The hyperlink destination of the text. If unset, there is no link. Links
+                              # are not inherited from parent text.
+                              #
+                              # Changing the link in an update request causes some other changes to the
+                              # text style of the range:
+                              #
+                              # * When setting a link, the text foreground color will be set to
+                              #   ThemeColorType.HYPERLINK and the text will
+                              #   be underlined. If these fields are modified in the same
+                              #   request, those values will be used instead of the link defaults.
+                              # * Setting a link on a text range that overlaps with an existing link will
+                              #   also update the existing link to point to the new URL.
+                              # * Links are not settable on newline characters. As a result, setting a link
+                              #   on a text range that crosses a paragraph boundary, such as `"ABC\n123"`,
+                              #   will separate the newline character(s) into their own text runs. The
+                              #   link will be applied separately to the runs before and after the newline.
+                              # * Removing a link will update the text style of the range to match the
+                              #   style of the preceding text (or the default text styles if the preceding
+                              #   text is another link) unless different styles are being set in the same
+                              #   request.
+                            "url": "A String", # If set, indicates this is a link to the external web page at this URL.
+                            "pageObjectId": "A String", # If set, indicates this is a link to the specific page in this
+                                # presentation with this ID. A page with this ID may not exist.
+                            "slideIndex": 42, # If set, indicates this is a link to the slide at this zero-based index
+                                # in the presentation. There may not be a slide at this index.
+                            "relativeLink": "A String", # If set, indicates this is a link to a slide in this presentation,
+                                # addressed by its position.
+                          },
+                          "italic": True or False, # Whether or not the text is italicized.
+                          "fontSize": { # A magnitude in a single direction in the specified units. # The size of the text's font. When read, the `font_size` will specified in
+                              # points.
+                            "magnitude": 3.14, # The magnitude.
+                            "unit": "A String", # The units for magnitude.
+                          },
+                          "underline": True or False, # Whether or not the text is underlined.
+                          "backgroundColor": { # A color that can either be fully opaque or fully transparent. # The background color of the text. If set, the color is either opaque or
+                              # transparent, depending on if the `opaque_color` field in it is set.
+                            "opaqueColor": { # A themeable solid color value. # If set, this will be used as an opaque color. If unset, this represents
+                                # a transparent color.
+                              "themeColor": "A String", # An opaque theme color.
+                              "rgbColor": { # An RGB color. # An opaque RGB color.
+                                "blue": 3.14, # The blue component of the color, from 0.0 to 1.0.
+                                "green": 3.14, # The green component of the color, from 0.0 to 1.0.
+                                "red": 3.14, # The red component of the color, from 0.0 to 1.0.
+                              },
+                            },
+                          },
+                        },
+                        "type": "A String", # The type of this auto text.
+                      },
+                      "endIndex": 42, # The zero-based end index of this text element, exclusive, in Unicode code
+                          # units.
+                      "startIndex": 42, # The zero-based start index of this text element, in Unicode code units.
+                      "paragraphMarker": { # A TextElement kind that represents the beginning of a new paragraph. # A marker representing the beginning of a new paragraph.
+                          #
+                          # The `start_index` and `end_index` of this TextElement represent the
+                          # range of the paragraph. Other TextElements with an index range contained
+                          # inside this paragraph's range are considered to be part of this
+                          # paragraph. The range of indices of two separate paragraphs will never
+                          # overlap.
+                        "style": { # Styles that apply to a whole paragraph. # The paragraph's style
+                            #
+                            # If this text is contained in a shape with a parent placeholder, then these paragraph styles may be
+                            # inherited from the parent. Which paragraph styles are inherited depend on the
+                            # nesting level of lists:
+                            #
+                            # * A paragraph not in a list will inherit its paragraph style from the
+                            #   paragraph at the 0 nesting level of the list inside the parent placeholder.
+                            # * A paragraph in a list will inherit its paragraph style from the paragraph
+                            #   at its corresponding nesting level of the list inside the parent
+                            #   placeholder.
+                            #
+                            # Inherited paragraph styles are represented as unset fields in this message.
+                          "spacingMode": "A String", # The spacing mode for the paragraph. This property is read-only.
+                          "direction": "A String", # The text direction of this paragraph. This property is read-only.
+                          "spaceBelow": { # A magnitude in a single direction in the specified units. # The amount of extra space above the paragraph. If unset, the value is
+                              # inherited from the parent. This property is read-only.
+                            "magnitude": 3.14, # The magnitude.
+                            "unit": "A String", # The units for magnitude.
+                          },
+                          "lineSpacing": 3.14, # The amount of space between lines, as a percentage of normal, where normal
+                              # is represented as 100.0. If unset, the value is inherited from the parent.
+                              # This property is read-only.
+                          "indentStart": { # A magnitude in a single direction in the specified units. # The amount indentation for the paragraph on the side that corresponds to
+                              # the start of the text, based on the current text direction. If unset, the
+                              # value is inherited from the parent. This property is read-only.
+                            "magnitude": 3.14, # The magnitude.
+                            "unit": "A String", # The units for magnitude.
+                          },
+                          "spaceAbove": { # A magnitude in a single direction in the specified units. # The amount of extra space above the paragraph. If unset, the value is
+                              # inherited from the parent. This property is read-only.
+                            "magnitude": 3.14, # The magnitude.
+                            "unit": "A String", # The units for magnitude.
+                          },
+                          "indentEnd": { # A magnitude in a single direction in the specified units. # The amount indentation for the paragraph on the side that corresponds to
+                              # the end of the text, based on the current text direction. If unset, the
+                              # value is inherited from the parent. This property is read-only.
+                            "magnitude": 3.14, # The magnitude.
+                            "unit": "A String", # The units for magnitude.
+                          },
+                          "indentFirstLine": { # A magnitude in a single direction in the specified units. # The amount of indentation for the start of the first line of the paragraph.
+                              # If unset, the value is inherited from the parent. This property is
+                              # read-only.
+                            "magnitude": 3.14, # The magnitude.
+                            "unit": "A String", # The units for magnitude.
+                          },
+                          "alignment": "A String", # The text alignment for this paragraph. This property is read-only.
+                        },
+                        "bullet": { # Describes the bullet of a paragraph. # The bullet for this paragraph. If not present, the paragraph does not
+                            # belong to a list.
+                          "nestingLevel": 42, # The nesting level of this paragraph in the list.
+                          "listId": "A String", # The ID of the list this paragraph belongs to.
+                          "bulletStyle": { # Represents the styling that can be applied to a TextRun. # The paragraph specific text style applied to this bullet.
+                              #
+                              # If this text is contained in a shape with a parent placeholder, then these text styles may be
+                              # inherited from the parent. Which text styles are inherited depend on the
+                              # nesting level of lists:
+                              #
+                              # * A text run in a paragraph that is not in a list will inherit its text style
+                              #   from the the newline character in the paragraph at the 0 nesting level of
+                              #   the list inside the parent placeholder.
+                              # * A text run in a paragraph that is in a list will inherit its text style
+                              #   from the newline character in the paragraph at its corresponding nesting
+                              #   level of the list inside the parent placeholder.
+                              #
+                              # Inherited text styles are represented as unset fields in this message. If
+                              # text is contained in a shape without a parent placeholder, unsetting these
+                              # fields will revert the style to a value matching the defaults in the Slides
+                              # editor.
+                            "foregroundColor": { # A color that can either be fully opaque or fully transparent. # The color of the text itself. If set, the color is either opaque or
+                                # transparent, depending on if the `opaque_color` field in it is set.
+                              "opaqueColor": { # A themeable solid color value. # If set, this will be used as an opaque color. If unset, this represents
+                                  # a transparent color.
+                                "themeColor": "A String", # An opaque theme color.
+                                "rgbColor": { # An RGB color. # An opaque RGB color.
+                                  "blue": 3.14, # The blue component of the color, from 0.0 to 1.0.
+                                  "green": 3.14, # The green component of the color, from 0.0 to 1.0.
+                                  "red": 3.14, # The red component of the color, from 0.0 to 1.0.
+                                },
+                              },
+                            },
+                            "bold": True or False, # Whether or not the text is bold.
+                            "baselineOffset": "A String", # The text's vertical offset from its normal position.
+                                #
+                                # Text with `SUPERSCRIPT` or `SUBSCRIPT` baseline offsets is automatically
+                                # rendered in a smaller font size, computed based on the `font_size` field.
+                                # The `font_size` itself is not affected by changes in this field.
+                            "strikethrough": True or False, # Whether or not the text is struck through.
+                            "smallCaps": True or False, # Whether or not the text is in small capital letters.
+                            "fontFamily": "A String", # The font family of the text.
+                                #
+                                # The font family can be any font from the Font menu in Slides or from
+                                # [Google Fonts] (https://fonts.google.com/). If the font name is
+                                # unrecognized, the text is rendered in `Arial`.
+                                #
+                                # Some fonts can affect the weight of the text. If an update request
+                                # specifies values for both `font_family` and `bold`, the explicitly-set
+                                # `bold` value is used.
+                            "link": { # A hypertext link. # The hyperlink destination of the text. If unset, there is no link. Links
+                                # are not inherited from parent text.
+                                #
+                                # Changing the link in an update request causes some other changes to the
+                                # text style of the range:
+                                #
+                                # * When setting a link, the text foreground color will be set to
+                                #   ThemeColorType.HYPERLINK and the text will
+                                #   be underlined. If these fields are modified in the same
+                                #   request, those values will be used instead of the link defaults.
+                                # * Setting a link on a text range that overlaps with an existing link will
+                                #   also update the existing link to point to the new URL.
+                                # * Links are not settable on newline characters. As a result, setting a link
+                                #   on a text range that crosses a paragraph boundary, such as `"ABC\n123"`,
+                                #   will separate the newline character(s) into their own text runs. The
+                                #   link will be applied separately to the runs before and after the newline.
+                                # * Removing a link will update the text style of the range to match the
+                                #   style of the preceding text (or the default text styles if the preceding
+                                #   text is another link) unless different styles are being set in the same
+                                #   request.
+                              "url": "A String", # If set, indicates this is a link to the external web page at this URL.
+                              "pageObjectId": "A String", # If set, indicates this is a link to the specific page in this
+                                  # presentation with this ID. A page with this ID may not exist.
+                              "slideIndex": 42, # If set, indicates this is a link to the slide at this zero-based index
+                                  # in the presentation. There may not be a slide at this index.
+                              "relativeLink": "A String", # If set, indicates this is a link to a slide in this presentation,
+                                  # addressed by its position.
+                            },
+                            "italic": True or False, # Whether or not the text is italicized.
+                            "fontSize": { # A magnitude in a single direction in the specified units. # The size of the text's font. When read, the `font_size` will specified in
+                                # points.
+                              "magnitude": 3.14, # The magnitude.
+                              "unit": "A String", # The units for magnitude.
+                            },
+                            "underline": True or False, # Whether or not the text is underlined.
+                            "backgroundColor": { # A color that can either be fully opaque or fully transparent. # The background color of the text. If set, the color is either opaque or
+                                # transparent, depending on if the `opaque_color` field in it is set.
+                              "opaqueColor": { # A themeable solid color value. # If set, this will be used as an opaque color. If unset, this represents
+                                  # a transparent color.
+                                "themeColor": "A String", # An opaque theme color.
+                                "rgbColor": { # An RGB color. # An opaque RGB color.
+                                  "blue": 3.14, # The blue component of the color, from 0.0 to 1.0.
+                                  "green": 3.14, # The green component of the color, from 0.0 to 1.0.
+                                  "red": 3.14, # The red component of the color, from 0.0 to 1.0.
+                                },
+                              },
+                            },
+                          },
+                          "glyph": "A String", # The rendered bullet glyph for this paragraph.
+                        },
+                      },
+                      "textRun": { # A TextElement kind that represents a run of text that all has the same # A TextElement representing a run of text where all of the characters
+                          # in the run have the same TextStyle.
+                          #
+                          # The `start_index` and `end_index` of TextRuns will always be fully
+                          # contained in the index range of a single `paragraph_marker` TextElement.
+                          # In other words, a TextRun will never span multiple paragraphs.
+                          # styling.
+                        "content": "A String", # The text of this run.
+                        "style": { # Represents the styling that can be applied to a TextRun. # The styling applied to this run.
+                            #
+                            # If this text is contained in a shape with a parent placeholder, then these text styles may be
+                            # inherited from the parent. Which text styles are inherited depend on the
+                            # nesting level of lists:
+                            #
+                            # * A text run in a paragraph that is not in a list will inherit its text style
+                            #   from the the newline character in the paragraph at the 0 nesting level of
+                            #   the list inside the parent placeholder.
+                            # * A text run in a paragraph that is in a list will inherit its text style
+                            #   from the newline character in the paragraph at its corresponding nesting
+                            #   level of the list inside the parent placeholder.
+                            #
+                            # Inherited text styles are represented as unset fields in this message. If
+                            # text is contained in a shape without a parent placeholder, unsetting these
+                            # fields will revert the style to a value matching the defaults in the Slides
+                            # editor.
+                          "foregroundColor": { # A color that can either be fully opaque or fully transparent. # The color of the text itself. If set, the color is either opaque or
+                              # transparent, depending on if the `opaque_color` field in it is set.
+                            "opaqueColor": { # A themeable solid color value. # If set, this will be used as an opaque color. If unset, this represents
+                                # a transparent color.
+                              "themeColor": "A String", # An opaque theme color.
+                              "rgbColor": { # An RGB color. # An opaque RGB color.
+                                "blue": 3.14, # The blue component of the color, from 0.0 to 1.0.
+                                "green": 3.14, # The green component of the color, from 0.0 to 1.0.
+                                "red": 3.14, # The red component of the color, from 0.0 to 1.0.
+                              },
+                            },
+                          },
+                          "bold": True or False, # Whether or not the text is bold.
+                          "baselineOffset": "A String", # The text's vertical offset from its normal position.
+                              #
+                              # Text with `SUPERSCRIPT` or `SUBSCRIPT` baseline offsets is automatically
+                              # rendered in a smaller font size, computed based on the `font_size` field.
+                              # The `font_size` itself is not affected by changes in this field.
+                          "strikethrough": True or False, # Whether or not the text is struck through.
+                          "smallCaps": True or False, # Whether or not the text is in small capital letters.
+                          "fontFamily": "A String", # The font family of the text.
+                              #
+                              # The font family can be any font from the Font menu in Slides or from
+                              # [Google Fonts] (https://fonts.google.com/). If the font name is
+                              # unrecognized, the text is rendered in `Arial`.
+                              #
+                              # Some fonts can affect the weight of the text. If an update request
+                              # specifies values for both `font_family` and `bold`, the explicitly-set
+                              # `bold` value is used.
+                          "link": { # A hypertext link. # The hyperlink destination of the text. If unset, there is no link. Links
+                              # are not inherited from parent text.
+                              #
+                              # Changing the link in an update request causes some other changes to the
+                              # text style of the range:
+                              #
+                              # * When setting a link, the text foreground color will be set to
+                              #   ThemeColorType.HYPERLINK and the text will
+                              #   be underlined. If these fields are modified in the same
+                              #   request, those values will be used instead of the link defaults.
+                              # * Setting a link on a text range that overlaps with an existing link will
+                              #   also update the existing link to point to the new URL.
+                              # * Links are not settable on newline characters. As a result, setting a link
+                              #   on a text range that crosses a paragraph boundary, such as `"ABC\n123"`,
+                              #   will separate the newline character(s) into their own text runs. The
+                              #   link will be applied separately to the runs before and after the newline.
+                              # * Removing a link will update the text style of the range to match the
+                              #   style of the preceding text (or the default text styles if the preceding
+                              #   text is another link) unless different styles are being set in the same
+                              #   request.
+                            "url": "A String", # If set, indicates this is a link to the external web page at this URL.
+                            "pageObjectId": "A String", # If set, indicates this is a link to the specific page in this
+                                # presentation with this ID. A page with this ID may not exist.
+                            "slideIndex": 42, # If set, indicates this is a link to the slide at this zero-based index
+                                # in the presentation. There may not be a slide at this index.
+                            "relativeLink": "A String", # If set, indicates this is a link to a slide in this presentation,
+                                # addressed by its position.
+                          },
+                          "italic": True or False, # Whether or not the text is italicized.
+                          "fontSize": { # A magnitude in a single direction in the specified units. # The size of the text's font. When read, the `font_size` will specified in
+                              # points.
+                            "magnitude": 3.14, # The magnitude.
+                            "unit": "A String", # The units for magnitude.
+                          },
+                          "underline": True or False, # Whether or not the text is underlined.
+                          "backgroundColor": { # A color that can either be fully opaque or fully transparent. # The background color of the text. If set, the color is either opaque or
+                              # transparent, depending on if the `opaque_color` field in it is set.
+                            "opaqueColor": { # A themeable solid color value. # If set, this will be used as an opaque color. If unset, this represents
+                                # a transparent color.
+                              "themeColor": "A String", # An opaque theme color.
+                              "rgbColor": { # An RGB color. # An opaque RGB color.
+                                "blue": 3.14, # The blue component of the color, from 0.0 to 1.0.
+                                "green": 3.14, # The green component of the color, from 0.0 to 1.0.
+                                "red": 3.14, # The red component of the color, from 0.0 to 1.0.
+                              },
+                            },
+                          },
+                        },
+                      },
+                    },
+                  ],
+                  "lists": { # The bulleted lists contained in this text, keyed by list ID.
+                    "a_key": { # A List describes the look and feel of bullets belonging to paragraphs
+                        # associated with a list. A paragraph that is part of a list has an implicit
+                        # reference to that list's ID.
+                      "nestingLevel": { # A map of nesting levels to the properties of bullets at the associated
+                          # level. A list has at most nine levels of nesting, so the possible values
+                          # for the keys of this map are 0 through 8, inclusive.
+                        "a_key": { # Contains properties describing the look and feel of a list bullet at a given
+                            # level of nesting.
+                          "bulletStyle": { # Represents the styling that can be applied to a TextRun. # The style of a bullet at this level of nesting.
+                              #
+                              # If this text is contained in a shape with a parent placeholder, then these text styles may be
+                              # inherited from the parent. Which text styles are inherited depend on the
+                              # nesting level of lists:
+                              #
+                              # * A text run in a paragraph that is not in a list will inherit its text style
+                              #   from the the newline character in the paragraph at the 0 nesting level of
+                              #   the list inside the parent placeholder.
+                              # * A text run in a paragraph that is in a list will inherit its text style
+                              #   from the newline character in the paragraph at its corresponding nesting
+                              #   level of the list inside the parent placeholder.
+                              #
+                              # Inherited text styles are represented as unset fields in this message. If
+                              # text is contained in a shape without a parent placeholder, unsetting these
+                              # fields will revert the style to a value matching the defaults in the Slides
+                              # editor.
+                            "foregroundColor": { # A color that can either be fully opaque or fully transparent. # The color of the text itself. If set, the color is either opaque or
+                                # transparent, depending on if the `opaque_color` field in it is set.
+                              "opaqueColor": { # A themeable solid color value. # If set, this will be used as an opaque color. If unset, this represents
+                                  # a transparent color.
+                                "themeColor": "A String", # An opaque theme color.
+                                "rgbColor": { # An RGB color. # An opaque RGB color.
+                                  "blue": 3.14, # The blue component of the color, from 0.0 to 1.0.
+                                  "green": 3.14, # The green component of the color, from 0.0 to 1.0.
+                                  "red": 3.14, # The red component of the color, from 0.0 to 1.0.
+                                },
+                              },
+                            },
+                            "bold": True or False, # Whether or not the text is bold.
+                            "baselineOffset": "A String", # The text's vertical offset from its normal position.
+                                #
+                                # Text with `SUPERSCRIPT` or `SUBSCRIPT` baseline offsets is automatically
+                                # rendered in a smaller font size, computed based on the `font_size` field.
+                                # The `font_size` itself is not affected by changes in this field.
+                            "strikethrough": True or False, # Whether or not the text is struck through.
+                            "smallCaps": True or False, # Whether or not the text is in small capital letters.
+                            "fontFamily": "A String", # The font family of the text.
+                                #
+                                # The font family can be any font from the Font menu in Slides or from
+                                # [Google Fonts] (https://fonts.google.com/). If the font name is
+                                # unrecognized, the text is rendered in `Arial`.
+                                #
+                                # Some fonts can affect the weight of the text. If an update request
+                                # specifies values for both `font_family` and `bold`, the explicitly-set
+                                # `bold` value is used.
+                            "link": { # A hypertext link. # The hyperlink destination of the text. If unset, there is no link. Links
+                                # are not inherited from parent text.
+                                #
+                                # Changing the link in an update request causes some other changes to the
+                                # text style of the range:
+                                #
+                                # * When setting a link, the text foreground color will be set to
+                                #   ThemeColorType.HYPERLINK and the text will
+                                #   be underlined. If these fields are modified in the same
+                                #   request, those values will be used instead of the link defaults.
+                                # * Setting a link on a text range that overlaps with an existing link will
+                                #   also update the existing link to point to the new URL.
+                                # * Links are not settable on newline characters. As a result, setting a link
+                                #   on a text range that crosses a paragraph boundary, such as `"ABC\n123"`,
+                                #   will separate the newline character(s) into their own text runs. The
+                                #   link will be applied separately to the runs before and after the newline.
+                                # * Removing a link will update the text style of the range to match the
+                                #   style of the preceding text (or the default text styles if the preceding
+                                #   text is another link) unless different styles are being set in the same
+                                #   request.
+                              "url": "A String", # If set, indicates this is a link to the external web page at this URL.
+                              "pageObjectId": "A String", # If set, indicates this is a link to the specific page in this
+                                  # presentation with this ID. A page with this ID may not exist.
+                              "slideIndex": 42, # If set, indicates this is a link to the slide at this zero-based index
+                                  # in the presentation. There may not be a slide at this index.
+                              "relativeLink": "A String", # If set, indicates this is a link to a slide in this presentation,
+                                  # addressed by its position.
+                            },
+                            "italic": True or False, # Whether or not the text is italicized.
+                            "fontSize": { # A magnitude in a single direction in the specified units. # The size of the text's font. When read, the `font_size` will specified in
+                                # points.
+                              "magnitude": 3.14, # The magnitude.
+                              "unit": "A String", # The units for magnitude.
+                            },
+                            "underline": True or False, # Whether or not the text is underlined.
+                            "backgroundColor": { # A color that can either be fully opaque or fully transparent. # The background color of the text. If set, the color is either opaque or
+                                # transparent, depending on if the `opaque_color` field in it is set.
+                              "opaqueColor": { # A themeable solid color value. # If set, this will be used as an opaque color. If unset, this represents
+                                  # a transparent color.
+                                "themeColor": "A String", # An opaque theme color.
+                                "rgbColor": { # An RGB color. # An opaque RGB color.
+                                  "blue": 3.14, # The blue component of the color, from 0.0 to 1.0.
+                                  "green": 3.14, # The green component of the color, from 0.0 to 1.0.
+                                  "red": 3.14, # The red component of the color, from 0.0 to 1.0.
+                                },
+                              },
+                            },
+                          },
+                        },
+                      },
+                      "listId": "A String", # The ID of the list.
+                    },
+                  },
+                },
+                "shapeProperties": { # The properties of a Shape. # The properties of the shape.
+                    #
+                    # If the shape is a placeholder shape as determined by the
+                    # placeholder field, then these
+                    # properties may be inherited from a parent placeholder shape.
+                    # Determining the rendered value of the property depends on the corresponding
+                    # property_state field value.
+                  "shadow": { # The shadow properties of a page element. # The shadow properties of the shape. If unset, the shadow is inherited from
+                      # a parent placeholder if it exists. If the shape has no parent, then the
+                      # default shadow matches the defaults for new shapes created in the Slides
+                      # editor. This property is read-only.
+                      #
+                      # If these fields are unset, they may be inherited from a parent placeholder
+                      # if it exists. If there is no parent, the fields will default to the value
+                      # used for new page elements created in the Slides editor, which may depend on
+                      # the page element kind.
+                    "color": { # A themeable solid color value. # The shadow color value.
+                      "themeColor": "A String", # An opaque theme color.
+                      "rgbColor": { # An RGB color. # An opaque RGB color.
+                        "blue": 3.14, # The blue component of the color, from 0.0 to 1.0.
+                        "green": 3.14, # The green component of the color, from 0.0 to 1.0.
+                        "red": 3.14, # The red component of the color, from 0.0 to 1.0.
+                      },
+                    },
+                    "transform": { # AffineTransform uses a 3x3 matrix with an implied last row of [ 0 0 1 ] # Transform that encodes the translate, scale, and skew of the shadow,
+                        # relative to the alignment position.
+                        # to transform source coordinates (x,y) into destination coordinates (x', y')
+                        # according to:
+                        #
+                        #       x'  x  =   shear_y  scale_y  translate_y
+                        #       1  [ 1 ]
+                        #
+                        # After transformation,
+                        #
+                        #      x' = scale_x * x + shear_x * y + translate_x;
+                        #      y' = scale_y * y + shear_y * x + translate_y;
+                        #
+                        # This message is therefore composed of these six matrix elements.
+                      "translateX": 3.14, # The X coordinate translation element.
+                      "translateY": 3.14, # The Y coordinate translation element.
+                      "scaleX": 3.14, # The X coordinate scaling element.
+                      "scaleY": 3.14, # The Y coordinate scaling element.
+                      "shearY": 3.14, # The Y coordinate shearing element.
+                      "shearX": 3.14, # The X coordinate shearing element.
+                      "unit": "A String", # The units for translate elements.
+                    },
+                    "propertyState": "A String", # The shadow property state.
+                        #
+                        # Updating the the shadow on a page element will implicitly update this field
+                        # to `RENDERED`, unless another value is specified in the same request. To
+                        # have no shadow on a page element, set this field to `NOT_RENDERED`. In this
+                        # case, any other shadow fields set in the same request will be ignored.
+                    "blurRadius": { # A magnitude in a single direction in the specified units. # The radius of the shadow blur. The larger the radius, the more diffuse the
+                        # shadow becomes.
+                      "magnitude": 3.14, # The magnitude.
+                      "unit": "A String", # The units for magnitude.
+                    },
+                    "alpha": 3.14, # The alpha of the shadow's color, from 0.0 to 1.0.
+                    "type": "A String", # The type of the shadow.
+                    "alignment": "A String", # The alignment point of the shadow, that sets the origin for translate,
+                        # scale and skew of the shadow.
+                    "rotateWithShape": True or False, # Whether the shadow should rotate with the shape.
+                  },
+                  "shapeBackgroundFill": { # The shape background fill. # The background fill of the shape. If unset, the background fill is
+                      # inherited from a parent placeholder if it exists. If the shape has no
+                      # parent, then the default background fill depends on the shape type,
+                      # matching the defaults for new shapes created in the Slides editor.
+                    "solidFill": { # A solid color fill. The page or page element is filled entirely with the # Solid color fill.
+                        # specified color value.
+                        #
+                        # If any field is unset, its value may be inherited from a parent placeholder
+                        # if it exists.
+                      "color": { # A themeable solid color value. # The color value of the solid fill.
+                        "themeColor": "A String", # An opaque theme color.
+                        "rgbColor": { # An RGB color. # An opaque RGB color.
+                          "blue": 3.14, # The blue component of the color, from 0.0 to 1.0.
+                          "green": 3.14, # The green component of the color, from 0.0 to 1.0.
+                          "red": 3.14, # The red component of the color, from 0.0 to 1.0.
+                        },
+                      },
+                      "alpha": 3.14, # The fraction of this `color` that should be applied to the pixel.
+                          # That is, the final pixel color is defined by the equation:
+                          #
+                          #   pixel color = alpha * (color) + (1.0 - alpha) * (background color)
+                          #
+                          # This means that a value of 1.0 corresponds to a solid color, whereas
+                          # a value of 0.0 corresponds to a completely transparent color.
+                    },
+                    "propertyState": "A String", # The background fill property state.
+                        #
+                        # Updating the the fill on a shape will implicitly update this field to
+                        # `RENDERED`, unless another value is specified in the same request. To
+                        # have no fill on a shape, set this field to `NOT_RENDERED`. In this case,
+                        # any other fill fields set in the same request will be ignored.
+                  },
+                  "link": { # A hypertext link. # The hyperlink destination of the shape. If unset, there is no link. Links
+                      # are not inherited from parent placeholders.
+                    "url": "A String", # If set, indicates this is a link to the external web page at this URL.
+                    "pageObjectId": "A String", # If set, indicates this is a link to the specific page in this
+                        # presentation with this ID. A page with this ID may not exist.
+                    "slideIndex": 42, # If set, indicates this is a link to the slide at this zero-based index
+                        # in the presentation. There may not be a slide at this index.
+                    "relativeLink": "A String", # If set, indicates this is a link to a slide in this presentation,
+                        # addressed by its position.
+                  },
+                  "outline": { # The outline of a PageElement. # The outline of the shape. If unset, the outline is inherited from a
+                      # parent placeholder if it exists. If the shape has no parent, then the
+                      # default outline depends on the shape type, matching the defaults for
+                      # new shapes created in the Slides editor.
+                      #
+                      # If these fields are unset, they may be inherited from a parent placeholder
+                      # if it exists. If there is no parent, the fields will default to the value
+                      # used for new page elements created in the Slides editor, which may depend on
+                      # the page element kind.
+                    "dashStyle": "A String", # The dash style of the outline.
+                    "propertyState": "A String", # The outline property state.
+                        #
+                        # Updating the the outline on a page element will implicitly update this
+                        # field to`RENDERED`, unless another value is specified in the same request.
+                        # To have no outline on a page element, set this field to `NOT_RENDERED`. In
+                        # this case, any other outline fields set in the same request will be
+                        # ignored.
+                    "outlineFill": { # The fill of the outline. # The fill of the outline.
+                      "solidFill": { # A solid color fill. The page or page element is filled entirely with the # Solid color fill.
+                          # specified color value.
+                          #
+                          # If any field is unset, its value may be inherited from a parent placeholder
+                          # if it exists.
+                        "color": { # A themeable solid color value. # The color value of the solid fill.
+                          "themeColor": "A String", # An opaque theme color.
+                          "rgbColor": { # An RGB color. # An opaque RGB color.
+                            "blue": 3.14, # The blue component of the color, from 0.0 to 1.0.
+                            "green": 3.14, # The green component of the color, from 0.0 to 1.0.
+                            "red": 3.14, # The red component of the color, from 0.0 to 1.0.
+                          },
+                        },
+                        "alpha": 3.14, # The fraction of this `color` that should be applied to the pixel.
+                            # That is, the final pixel color is defined by the equation:
+                            #
+                            #   pixel color = alpha * (color) + (1.0 - alpha) * (background color)
+                            #
+                            # This means that a value of 1.0 corresponds to a solid color, whereas
+                            # a value of 0.0 corresponds to a completely transparent color.
+                      },
+                    },
+                    "weight": { # A magnitude in a single direction in the specified units. # The thickness of the outline.
+                      "magnitude": 3.14, # The magnitude.
+                      "unit": "A String", # The units for magnitude.
+                    },
+                  },
+                },
+                "placeholder": { # The placeholder information that uniquely identifies a placeholder shape. # Placeholders are shapes that are inherit from corresponding placeholders on
+                    # layouts and masters.
+                    #
+                    # If set, the shape is a placeholder shape and any inherited properties
+                    # can be resolved by looking at the parent placeholder identified by the
+                    # Placeholder.parent_object_id field.
+                  "parentObjectId": "A String", # The object ID of this shape's parent placeholder.
+                      # If unset, the parent placeholder shape does not exist, so the shape does
+                      # not inherit properties from any other shape.
+                  "index": 42, # The index of the placeholder. If the same placeholder types are the present
+                      # in the same page, they would have different index values.
+                  "type": "A String", # The type of the placeholder.
+                },
+                "shapeType": "A String", # The type of the shape.
+              },
+              "sheetsChart": { # A PageElement kind representing # A linked chart embedded from Google Sheets. Unlinked charts are
+                  # represented as images.
+                  # a linked chart embedded from Google Sheets.
+                "chartId": 42, # The ID of the specific chart in the Google Sheets spreadsheet that is
+                    # embedded.
+                "spreadsheetId": "A String", # The ID of the Google Sheets spreadsheet that contains the source chart.
+                "sheetsChartProperties": { # The properties of the SheetsChart. # The properties of the Sheets chart.
+                  "chartImageProperties": { # The properties of the Image. # The properties of the embedded chart image.
+                    "outline": { # The outline of a PageElement. # The outline of the image. If not set, the the image has no outline.
+                        #
+                        # If these fields are unset, they may be inherited from a parent placeholder
+                        # if it exists. If there is no parent, the fields will default to the value
+                        # used for new page elements created in the Slides editor, which may depend on
+                        # the page element kind.
+                      "dashStyle": "A String", # The dash style of the outline.
+                      "propertyState": "A String", # The outline property state.
+                          #
+                          # Updating the the outline on a page element will implicitly update this
+                          # field to`RENDERED`, unless another value is specified in the same request.
+                          # To have no outline on a page element, set this field to `NOT_RENDERED`. In
+                          # this case, any other outline fields set in the same request will be
+                          # ignored.
+                      "outlineFill": { # The fill of the outline. # The fill of the outline.
+                        "solidFill": { # A solid color fill. The page or page element is filled entirely with the # Solid color fill.
+                            # specified color value.
+                            #
+                            # If any field is unset, its value may be inherited from a parent placeholder
+                            # if it exists.
+                          "color": { # A themeable solid color value. # The color value of the solid fill.
+                            "themeColor": "A String", # An opaque theme color.
+                            "rgbColor": { # An RGB color. # An opaque RGB color.
+                              "blue": 3.14, # The blue component of the color, from 0.0 to 1.0.
+                              "green": 3.14, # The green component of the color, from 0.0 to 1.0.
+                              "red": 3.14, # The red component of the color, from 0.0 to 1.0.
+                            },
+                          },
+                          "alpha": 3.14, # The fraction of this `color` that should be applied to the pixel.
+                              # That is, the final pixel color is defined by the equation:
+                              #
+                              #   pixel color = alpha * (color) + (1.0 - alpha) * (background color)
+                              #
+                              # This means that a value of 1.0 corresponds to a solid color, whereas
+                              # a value of 0.0 corresponds to a completely transparent color.
+                        },
+                      },
+                      "weight": { # A magnitude in a single direction in the specified units. # The thickness of the outline.
+                        "magnitude": 3.14, # The magnitude.
+                        "unit": "A String", # The units for magnitude.
+                      },
+                    },
+                    "brightness": 3.14, # The brightness effect of the image. The value should be in the interval
+                        # [-1.0, 1.0], where 0 means no effect. This property is read-only.
+                    "recolor": { # A recolor effect applied on an image. # The recolor effect of the image. If not set, the image is not recolored.
+                        # This property is read-only.
+                      "recolorStops": [ # The recolor effect is represented by a gradient, which is a list of color
+                          # stops. This property is read-only.
+                        { # A color and position in a gradient band.
+                          "color": { # A themeable solid color value. # The color of the gradient stop.
+                            "themeColor": "A String", # An opaque theme color.
+                            "rgbColor": { # An RGB color. # An opaque RGB color.
+                              "blue": 3.14, # The blue component of the color, from 0.0 to 1.0.
+                              "green": 3.14, # The green component of the color, from 0.0 to 1.0.
+                              "red": 3.14, # The red component of the color, from 0.0 to 1.0.
+                            },
+                          },
+                          "position": 3.14, # The relative position of the color stop in the gradient band measured
+                              # in percentage. The value should be in the interval [0.0, 1.0].
+                          "alpha": 3.14, # The alpha value of this color in the gradient band. Defaults to 1.0,
+                              # fully opaque.
+                        },
+                      ],
+                    },
+                    "link": { # A hypertext link. # The hyperlink destination of the image. If unset, there is no link.
+                      "url": "A String", # If set, indicates this is a link to the external web page at this URL.
+                      "pageObjectId": "A String", # If set, indicates this is a link to the specific page in this
+                          # presentation with this ID. A page with this ID may not exist.
+                      "slideIndex": 42, # If set, indicates this is a link to the slide at this zero-based index
+                          # in the presentation. There may not be a slide at this index.
+                      "relativeLink": "A String", # If set, indicates this is a link to a slide in this presentation,
+                          # addressed by its position.
+                    },
+                    "transparency": 3.14, # The transparency effect of the image. The value should be in the interval
+                        # [0.0, 1.0], where 0 means no effect and 1 means completely transparent.
+                        # This property is read-only.
+                    "cropProperties": { # The crop properties of an object enclosed in a container. For example, an # The crop properties of the image. If not set, the image is not cropped.
+                        # This property is read-only.
+                        # Image.
+                        #
+                        # The crop properties is represented by the offsets of four edges which define
+                        # a crop rectangle. The offsets are measured in percentage from the
+                        # corresponding edges of the object's original bounding rectangle towards
+                        # inside, relative to the object's original dimensions.
+                        #
+                        # - If the offset is in the interval (0, 1), the corresponding edge of crop
+                        # rectangle is positioned inside of the object's original bounding rectangle.
+                        # - If the offset is negative or greater than 1, the corresponding edge of crop
+                        # rectangle is positioned outside of the object's original bounding rectangle.
+                        # - If the left edge of the crop rectangle is on the right side of its right
+                        # edge, the object will be flipped horizontally.
+                        # - If the top edge of the crop rectangle is below its bottom edge, the object
+                        # will be flipped vertically.
+                        # - If all offsets and rotation angle is 0, the object is not cropped.
+                        #
+                        # After cropping, the content in the crop rectangle will be stretched to fit
+                        # its container.
+                      "leftOffset": 3.14, # The offset specifies the left edge of the crop rectangle that is located to
+                          # the right of the original bounding rectangle left edge, relative to the
+                          # object's original width.
+                      "angle": 3.14, # The rotation angle of the crop window around its center, in radians.
+                          # Rotation angle is applied after the offset.
+                      "bottomOffset": 3.14, # The offset specifies the bottom edge of the crop rectangle that is located
+                          # above the original bounding rectangle bottom edge, relative to the object's
+                          # original height.
+                      "rightOffset": 3.14, # The offset specifies the right edge of the crop rectangle that is located
+                          # to the left of the original bounding rectangle right edge, relative to the
+                          # object's original width.
+                      "topOffset": 3.14, # The offset specifies the top edge of the crop rectangle that is located
+                          # below the original bounding rectangle top edge, relative to the object's
+                          # original height.
+                    },
+                    "shadow": { # The shadow properties of a page element. # The shadow of the image. If not set, the image has no shadow. This property
+                        # is read-only.
+                        #
+                        # If these fields are unset, they may be inherited from a parent placeholder
+                        # if it exists. If there is no parent, the fields will default to the value
+                        # used for new page elements created in the Slides editor, which may depend on
+                        # the page element kind.
+                      "color": { # A themeable solid color value. # The shadow color value.
+                        "themeColor": "A String", # An opaque theme color.
+                        "rgbColor": { # An RGB color. # An opaque RGB color.
+                          "blue": 3.14, # The blue component of the color, from 0.0 to 1.0.
+                          "green": 3.14, # The green component of the color, from 0.0 to 1.0.
+                          "red": 3.14, # The red component of the color, from 0.0 to 1.0.
+                        },
+                      },
+                      "transform": { # AffineTransform uses a 3x3 matrix with an implied last row of [ 0 0 1 ] # Transform that encodes the translate, scale, and skew of the shadow,
+                          # relative to the alignment position.
+                          # to transform source coordinates (x,y) into destination coordinates (x', y')
+                          # according to:
+                          #
+                          #       x'  x  =   shear_y  scale_y  translate_y
+                          #       1  [ 1 ]
+                          #
+                          # After transformation,
+                          #
+                          #      x' = scale_x * x + shear_x * y + translate_x;
+                          #      y' = scale_y * y + shear_y * x + translate_y;
+                          #
+                          # This message is therefore composed of these six matrix elements.
+                        "translateX": 3.14, # The X coordinate translation element.
+                        "translateY": 3.14, # The Y coordinate translation element.
+                        "scaleX": 3.14, # The X coordinate scaling element.
+                        "scaleY": 3.14, # The Y coordinate scaling element.
+                        "shearY": 3.14, # The Y coordinate shearing element.
+                        "shearX": 3.14, # The X coordinate shearing element.
+                        "unit": "A String", # The units for translate elements.
+                      },
+                      "propertyState": "A String", # The shadow property state.
+                          #
+                          # Updating the the shadow on a page element will implicitly update this field
+                          # to `RENDERED`, unless another value is specified in the same request. To
+                          # have no shadow on a page element, set this field to `NOT_RENDERED`. In this
+                          # case, any other shadow fields set in the same request will be ignored.
+                      "blurRadius": { # A magnitude in a single direction in the specified units. # The radius of the shadow blur. The larger the radius, the more diffuse the
+                          # shadow becomes.
+                        "magnitude": 3.14, # The magnitude.
+                        "unit": "A String", # The units for magnitude.
+                      },
+                      "alpha": 3.14, # The alpha of the shadow's color, from 0.0 to 1.0.
+                      "type": "A String", # The type of the shadow.
+                      "alignment": "A String", # The alignment point of the shadow, that sets the origin for translate,
+                          # scale and skew of the shadow.
+                      "rotateWithShape": True or False, # Whether the shadow should rotate with the shape.
+                    },
+                    "contrast": 3.14, # The contrast effect of the image. The value should be in the interval
+                        # [-1.0, 1.0], where 0 means no effect. This property is read-only.
+                  },
+                },
+                "contentUrl": "A String", # The URL of an image of the embedded chart, with a default lifetime of 30
+                    # minutes. This URL is tagged with the account of the requester. Anyone with
+                    # the URL effectively accesses the image as the original requester. Access to
+                    # the image may be lost if the presentation's sharing settings change.
+              },
+              "video": { # A PageElement kind representing a # A video page element.
+                  # video.
+                "url": "A String", # An URL to a video. The URL is valid as long as the source video
+                    # exists and sharing settings do not change.
+                "videoProperties": { # The properties of the Video. # The properties of the video.
+                  "outline": { # The outline of a PageElement. # The outline of the video. The default outline matches the defaults for new
+                      # videos created in the Slides editor.
+                      #
+                      # If these fields are unset, they may be inherited from a parent placeholder
+                      # if it exists. If there is no parent, the fields will default to the value
+                      # used for new page elements created in the Slides editor, which may depend on
+                      # the page element kind.
+                    "dashStyle": "A String", # The dash style of the outline.
+                    "propertyState": "A String", # The outline property state.
+                        #
+                        # Updating the the outline on a page element will implicitly update this
+                        # field to`RENDERED`, unless another value is specified in the same request.
+                        # To have no outline on a page element, set this field to `NOT_RENDERED`. In
+                        # this case, any other outline fields set in the same request will be
+                        # ignored.
+                    "outlineFill": { # The fill of the outline. # The fill of the outline.
+                      "solidFill": { # A solid color fill. The page or page element is filled entirely with the # Solid color fill.
+                          # specified color value.
+                          #
+                          # If any field is unset, its value may be inherited from a parent placeholder
+                          # if it exists.
+                        "color": { # A themeable solid color value. # The color value of the solid fill.
+                          "themeColor": "A String", # An opaque theme color.
+                          "rgbColor": { # An RGB color. # An opaque RGB color.
+                            "blue": 3.14, # The blue component of the color, from 0.0 to 1.0.
+                            "green": 3.14, # The green component of the color, from 0.0 to 1.0.
+                            "red": 3.14, # The red component of the color, from 0.0 to 1.0.
+                          },
+                        },
+                        "alpha": 3.14, # The fraction of this `color` that should be applied to the pixel.
+                            # That is, the final pixel color is defined by the equation:
+                            #
+                            #   pixel color = alpha * (color) + (1.0 - alpha) * (background color)
+                            #
+                            # This means that a value of 1.0 corresponds to a solid color, whereas
+                            # a value of 0.0 corresponds to a completely transparent color.
+                      },
+                    },
+                    "weight": { # A magnitude in a single direction in the specified units. # The thickness of the outline.
+                      "magnitude": 3.14, # The magnitude.
+                      "unit": "A String", # The units for magnitude.
+                    },
+                  },
+                },
+                "id": "A String", # The video source's unique identifier for this video.
+                "source": "A String", # The video source.
+              },
+              "table": { # A PageElement kind representing a # A table page element.
+                  # table.
+                "tableColumns": [ # Properties of each column.
+                  { # Properties of each column in a table.
+                    "columnWidth": { # A magnitude in a single direction in the specified units. # Width of a column.
+                      "magnitude": 3.14, # The magnitude.
+                      "unit": "A String", # The units for magnitude.
+                    },
+                  },
+                ],
+                "tableRows": [ # Properties and contents of each row.
+                    #
+                    # Cells that span multiple rows are contained in only one of these rows and
+                    # have a row_span greater
+                    # than 1.
+                  { # Properties and contents of each row in a table.
+                    "tableCells": [ # Properties and contents of each cell.
+                        #
+                        # Cells that span multiple columns are represented only once with a
+                        # column_span greater
+                        # than 1. As a result, the length of this collection does not always match
+                        # the number of columns of the entire table.
+                      { # Properties and contents of each table cell.
+                        "text": { # The general text content. The text must reside in a compatible shape (e.g. # The text content of the cell.
+                            # text box or rectangle) or a table cell in a page.
+                          "textElements": [ # The text contents broken down into its component parts, including styling
+                              # information. This property is read-only.
+                            { # A TextElement describes the content of a range of indices in the text content
+                                # of a Shape or TableCell.
+                              "autoText": { # A TextElement kind that represents auto text. # A TextElement representing a spot in the text that is dynamically
+                                  # replaced with content that can change over time.
+                                "content": "A String", # The rendered content of this auto text, if available.
+                                "style": { # Represents the styling that can be applied to a TextRun. # The styling applied to this auto text.
+                                    #
+                                    # If this text is contained in a shape with a parent placeholder, then these text styles may be
+                                    # inherited from the parent. Which text styles are inherited depend on the
+                                    # nesting level of lists:
+                                    #
+                                    # * A text run in a paragraph that is not in a list will inherit its text style
+                                    #   from the the newline character in the paragraph at the 0 nesting level of
+                                    #   the list inside the parent placeholder.
+                                    # * A text run in a paragraph that is in a list will inherit its text style
+                                    #   from the newline character in the paragraph at its corresponding nesting
+                                    #   level of the list inside the parent placeholder.
+                                    #
+                                    # Inherited text styles are represented as unset fields in this message. If
+                                    # text is contained in a shape without a parent placeholder, unsetting these
+                                    # fields will revert the style to a value matching the defaults in the Slides
+                                    # editor.
+                                  "foregroundColor": { # A color that can either be fully opaque or fully transparent. # The color of the text itself. If set, the color is either opaque or
+                                      # transparent, depending on if the `opaque_color` field in it is set.
+                                    "opaqueColor": { # A themeable solid color value. # If set, this will be used as an opaque color. If unset, this represents
+                                        # a transparent color.
+                                      "themeColor": "A String", # An opaque theme color.
+                                      "rgbColor": { # An RGB color. # An opaque RGB color.
+                                        "blue": 3.14, # The blue component of the color, from 0.0 to 1.0.
+                                        "green": 3.14, # The green component of the color, from 0.0 to 1.0.
+                                        "red": 3.14, # The red component of the color, from 0.0 to 1.0.
+                                      },
+                                    },
+                                  },
+                                  "bold": True or False, # Whether or not the text is bold.
+                                  "baselineOffset": "A String", # The text's vertical offset from its normal position.
+                                      #
+                                      # Text with `SUPERSCRIPT` or `SUBSCRIPT` baseline offsets is automatically
+                                      # rendered in a smaller font size, computed based on the `font_size` field.
+                                      # The `font_size` itself is not affected by changes in this field.
+                                  "strikethrough": True or False, # Whether or not the text is struck through.
+                                  "smallCaps": True or False, # Whether or not the text is in small capital letters.
+                                  "fontFamily": "A String", # The font family of the text.
+                                      #
+                                      # The font family can be any font from the Font menu in Slides or from
+                                      # [Google Fonts] (https://fonts.google.com/). If the font name is
+                                      # unrecognized, the text is rendered in `Arial`.
+                                      #
+                                      # Some fonts can affect the weight of the text. If an update request
+                                      # specifies values for both `font_family` and `bold`, the explicitly-set
+                                      # `bold` value is used.
+                                  "link": { # A hypertext link. # The hyperlink destination of the text. If unset, there is no link. Links
+                                      # are not inherited from parent text.
+                                      #
+                                      # Changing the link in an update request causes some other changes to the
+                                      # text style of the range:
+                                      #
+                                      # * When setting a link, the text foreground color will be set to
+                                      #   ThemeColorType.HYPERLINK and the text will
+                                      #   be underlined. If these fields are modified in the same
+                                      #   request, those values will be used instead of the link defaults.
+                                      # * Setting a link on a text range that overlaps with an existing link will
+                                      #   also update the existing link to point to the new URL.
+                                      # * Links are not settable on newline characters. As a result, setting a link
+                                      #   on a text range that crosses a paragraph boundary, such as `"ABC\n123"`,
+                                      #   will separate the newline character(s) into their own text runs. The
+                                      #   link will be applied separately to the runs before and after the newline.
+                                      # * Removing a link will update the text style of the range to match the
+                                      #   style of the preceding text (or the default text styles if the preceding
+                                      #   text is another link) unless different styles are being set in the same
+                                      #   request.
+                                    "url": "A String", # If set, indicates this is a link to the external web page at this URL.
+                                    "pageObjectId": "A String", # If set, indicates this is a link to the specific page in this
+                                        # presentation with this ID. A page with this ID may not exist.
+                                    "slideIndex": 42, # If set, indicates this is a link to the slide at this zero-based index
+                                        # in the presentation. There may not be a slide at this index.
+                                    "relativeLink": "A String", # If set, indicates this is a link to a slide in this presentation,
+                                        # addressed by its position.
+                                  },
+                                  "italic": True or False, # Whether or not the text is italicized.
+                                  "fontSize": { # A magnitude in a single direction in the specified units. # The size of the text's font. When read, the `font_size` will specified in
+                                      # points.
+                                    "magnitude": 3.14, # The magnitude.
+                                    "unit": "A String", # The units for magnitude.
+                                  },
+                                  "underline": True or False, # Whether or not the text is underlined.
+                                  "backgroundColor": { # A color that can either be fully opaque or fully transparent. # The background color of the text. If set, the color is either opaque or
+                                      # transparent, depending on if the `opaque_color` field in it is set.
+                                    "opaqueColor": { # A themeable solid color value. # If set, this will be used as an opaque color. If unset, this represents
+                                        # a transparent color.
+                                      "themeColor": "A String", # An opaque theme color.
+                                      "rgbColor": { # An RGB color. # An opaque RGB color.
+                                        "blue": 3.14, # The blue component of the color, from 0.0 to 1.0.
+                                        "green": 3.14, # The green component of the color, from 0.0 to 1.0.
+                                        "red": 3.14, # The red component of the color, from 0.0 to 1.0.
+                                      },
+                                    },
+                                  },
+                                },
+                                "type": "A String", # The type of this auto text.
+                              },
+                              "endIndex": 42, # The zero-based end index of this text element, exclusive, in Unicode code
+                                  # units.
+                              "startIndex": 42, # The zero-based start index of this text element, in Unicode code units.
+                              "paragraphMarker": { # A TextElement kind that represents the beginning of a new paragraph. # A marker representing the beginning of a new paragraph.
+                                  #
+                                  # The `start_index` and `end_index` of this TextElement represent the
+                                  # range of the paragraph. Other TextElements with an index range contained
+                                  # inside this paragraph's range are considered to be part of this
+                                  # paragraph. The range of indices of two separate paragraphs will never
+                                  # overlap.
+                                "style": { # Styles that apply to a whole paragraph. # The paragraph's style
+                                    #
+                                    # If this text is contained in a shape with a parent placeholder, then these paragraph styles may be
+                                    # inherited from the parent. Which paragraph styles are inherited depend on the
+                                    # nesting level of lists:
+                                    #
+                                    # * A paragraph not in a list will inherit its paragraph style from the
+                                    #   paragraph at the 0 nesting level of the list inside the parent placeholder.
+                                    # * A paragraph in a list will inherit its paragraph style from the paragraph
+                                    #   at its corresponding nesting level of the list inside the parent
+                                    #   placeholder.
+                                    #
+                                    # Inherited paragraph styles are represented as unset fields in this message.
+                                  "spacingMode": "A String", # The spacing mode for the paragraph. This property is read-only.
+                                  "direction": "A String", # The text direction of this paragraph. This property is read-only.
+                                  "spaceBelow": { # A magnitude in a single direction in the specified units. # The amount of extra space above the paragraph. If unset, the value is
+                                      # inherited from the parent. This property is read-only.
+                                    "magnitude": 3.14, # The magnitude.
+                                    "unit": "A String", # The units for magnitude.
+                                  },
+                                  "lineSpacing": 3.14, # The amount of space between lines, as a percentage of normal, where normal
+                                      # is represented as 100.0. If unset, the value is inherited from the parent.
+                                      # This property is read-only.
+                                  "indentStart": { # A magnitude in a single direction in the specified units. # The amount indentation for the paragraph on the side that corresponds to
+                                      # the start of the text, based on the current text direction. If unset, the
+                                      # value is inherited from the parent. This property is read-only.
+                                    "magnitude": 3.14, # The magnitude.
+                                    "unit": "A String", # The units for magnitude.
+                                  },
+                                  "spaceAbove": { # A magnitude in a single direction in the specified units. # The amount of extra space above the paragraph. If unset, the value is
+                                      # inherited from the parent. This property is read-only.
+                                    "magnitude": 3.14, # The magnitude.
+                                    "unit": "A String", # The units for magnitude.
+                                  },
+                                  "indentEnd": { # A magnitude in a single direction in the specified units. # The amount indentation for the paragraph on the side that corresponds to
+                                      # the end of the text, based on the current text direction. If unset, the
+                                      # value is inherited from the parent. This property is read-only.
+                                    "magnitude": 3.14, # The magnitude.
+                                    "unit": "A String", # The units for magnitude.
+                                  },
+                                  "indentFirstLine": { # A magnitude in a single direction in the specified units. # The amount of indentation for the start of the first line of the paragraph.
+                                      # If unset, the value is inherited from the parent. This property is
+                                      # read-only.
+                                    "magnitude": 3.14, # The magnitude.
+                                    "unit": "A String", # The units for magnitude.
+                                  },
+                                  "alignment": "A String", # The text alignment for this paragraph. This property is read-only.
+                                },
+                                "bullet": { # Describes the bullet of a paragraph. # The bullet for this paragraph. If not present, the paragraph does not
+                                    # belong to a list.
+                                  "nestingLevel": 42, # The nesting level of this paragraph in the list.
+                                  "listId": "A String", # The ID of the list this paragraph belongs to.
+                                  "bulletStyle": { # Represents the styling that can be applied to a TextRun. # The paragraph specific text style applied to this bullet.
+                                      #
+                                      # If this text is contained in a shape with a parent placeholder, then these text styles may be
+                                      # inherited from the parent. Which text styles are inherited depend on the
+                                      # nesting level of lists:
+                                      #
+                                      # * A text run in a paragraph that is not in a list will inherit its text style
+                                      #   from the the newline character in the paragraph at the 0 nesting level of
+                                      #   the list inside the parent placeholder.
+                                      # * A text run in a paragraph that is in a list will inherit its text style
+                                      #   from the newline character in the paragraph at its corresponding nesting
+                                      #   level of the list inside the parent placeholder.
+                                      #
+                                      # Inherited text styles are represented as unset fields in this message. If
+                                      # text is contained in a shape without a parent placeholder, unsetting these
+                                      # fields will revert the style to a value matching the defaults in the Slides
+                                      # editor.
+                                    "foregroundColor": { # A color that can either be fully opaque or fully transparent. # The color of the text itself. If set, the color is either opaque or
+                                        # transparent, depending on if the `opaque_color` field in it is set.
+                                      "opaqueColor": { # A themeable solid color value. # If set, this will be used as an opaque color. If unset, this represents
+                                          # a transparent color.
+                                        "themeColor": "A String", # An opaque theme color.
+                                        "rgbColor": { # An RGB color. # An opaque RGB color.
+                                          "blue": 3.14, # The blue component of the color, from 0.0 to 1.0.
+                                          "green": 3.14, # The green component of the color, from 0.0 to 1.0.
+                                          "red": 3.14, # The red component of the color, from 0.0 to 1.0.
+                                        },
+                                      },
+                                    },
+                                    "bold": True or False, # Whether or not the text is bold.
+                                    "baselineOffset": "A String", # The text's vertical offset from its normal position.
+                                        #
+                                        # Text with `SUPERSCRIPT` or `SUBSCRIPT` baseline offsets is automatically
+                                        # rendered in a smaller font size, computed based on the `font_size` field.
+                                        # The `font_size` itself is not affected by changes in this field.
+                                    "strikethrough": True or False, # Whether or not the text is struck through.
+                                    "smallCaps": True or False, # Whether or not the text is in small capital letters.
+                                    "fontFamily": "A String", # The font family of the text.
+                                        #
+                                        # The font family can be any font from the Font menu in Slides or from
+                                        # [Google Fonts] (https://fonts.google.com/). If the font name is
+                                        # unrecognized, the text is rendered in `Arial`.
+                                        #
+                                        # Some fonts can affect the weight of the text. If an update request
+                                        # specifies values for both `font_family` and `bold`, the explicitly-set
+                                        # `bold` value is used.
+                                    "link": { # A hypertext link. # The hyperlink destination of the text. If unset, there is no link. Links
+                                        # are not inherited from parent text.
+                                        #
+                                        # Changing the link in an update request causes some other changes to the
+                                        # text style of the range:
+                                        #
+                                        # * When setting a link, the text foreground color will be set to
+                                        #   ThemeColorType.HYPERLINK and the text will
+                                        #   be underlined. If these fields are modified in the same
+                                        #   request, those values will be used instead of the link defaults.
+                                        # * Setting a link on a text range that overlaps with an existing link will
+                                        #   also update the existing link to point to the new URL.
+                                        # * Links are not settable on newline characters. As a result, setting a link
+                                        #   on a text range that crosses a paragraph boundary, such as `"ABC\n123"`,
+                                        #   will separate the newline character(s) into their own text runs. The
+                                        #   link will be applied separately to the runs before and after the newline.
+                                        # * Removing a link will update the text style of the range to match the
+                                        #   style of the preceding text (or the default text styles if the preceding
+                                        #   text is another link) unless different styles are being set in the same
+                                        #   request.
+                                      "url": "A String", # If set, indicates this is a link to the external web page at this URL.
+                                      "pageObjectId": "A String", # If set, indicates this is a link to the specific page in this
+                                          # presentation with this ID. A page with this ID may not exist.
+                                      "slideIndex": 42, # If set, indicates this is a link to the slide at this zero-based index
+                                          # in the presentation. There may not be a slide at this index.
+                                      "relativeLink": "A String", # If set, indicates this is a link to a slide in this presentation,
+                                          # addressed by its position.
+                                    },
+                                    "italic": True or False, # Whether or not the text is italicized.
+                                    "fontSize": { # A magnitude in a single direction in the specified units. # The size of the text's font. When read, the `font_size` will specified in
+                                        # points.
+                                      "magnitude": 3.14, # The magnitude.
+                                      "unit": "A String", # The units for magnitude.
+                                    },
+                                    "underline": True or False, # Whether or not the text is underlined.
+                                    "backgroundColor": { # A color that can either be fully opaque or fully transparent. # The background color of the text. If set, the color is either opaque or
+                                        # transparent, depending on if the `opaque_color` field in it is set.
+                                      "opaqueColor": { # A themeable solid color value. # If set, this will be used as an opaque color. If unset, this represents
+                                          # a transparent color.
+                                        "themeColor": "A String", # An opaque theme color.
+                                        "rgbColor": { # An RGB color. # An opaque RGB color.
+                                          "blue": 3.14, # The blue component of the color, from 0.0 to 1.0.
+                                          "green": 3.14, # The green component of the color, from 0.0 to 1.0.
+                                          "red": 3.14, # The red component of the color, from 0.0 to 1.0.
+                                        },
+                                      },
+                                    },
+                                  },
+                                  "glyph": "A String", # The rendered bullet glyph for this paragraph.
+                                },
+                              },
+                              "textRun": { # A TextElement kind that represents a run of text that all has the same # A TextElement representing a run of text where all of the characters
+                                  # in the run have the same TextStyle.
+                                  #
+                                  # The `start_index` and `end_index` of TextRuns will always be fully
+                                  # contained in the index range of a single `paragraph_marker` TextElement.
+                                  # In other words, a TextRun will never span multiple paragraphs.
+                                  # styling.
+                                "content": "A String", # The text of this run.
+                                "style": { # Represents the styling that can be applied to a TextRun. # The styling applied to this run.
+                                    #
+                                    # If this text is contained in a shape with a parent placeholder, then these text styles may be
+                                    # inherited from the parent. Which text styles are inherited depend on the
+                                    # nesting level of lists:
+                                    #
+                                    # * A text run in a paragraph that is not in a list will inherit its text style
+                                    #   from the the newline character in the paragraph at the 0 nesting level of
+                                    #   the list inside the parent placeholder.
+                                    # * A text run in a paragraph that is in a list will inherit its text style
+                                    #   from the newline character in the paragraph at its corresponding nesting
+                                    #   level of the list inside the parent placeholder.
+                                    #
+                                    # Inherited text styles are represented as unset fields in this message. If
+                                    # text is contained in a shape without a parent placeholder, unsetting these
+                                    # fields will revert the style to a value matching the defaults in the Slides
+                                    # editor.
+                                  "foregroundColor": { # A color that can either be fully opaque or fully transparent. # The color of the text itself. If set, the color is either opaque or
+                                      # transparent, depending on if the `opaque_color` field in it is set.
+                                    "opaqueColor": { # A themeable solid color value. # If set, this will be used as an opaque color. If unset, this represents
+                                        # a transparent color.
+                                      "themeColor": "A String", # An opaque theme color.
+                                      "rgbColor": { # An RGB color. # An opaque RGB color.
+                                        "blue": 3.14, # The blue component of the color, from 0.0 to 1.0.
+                                        "green": 3.14, # The green component of the color, from 0.0 to 1.0.
+                                        "red": 3.14, # The red component of the color, from 0.0 to 1.0.
+                                      },
+                                    },
+                                  },
+                                  "bold": True or False, # Whether or not the text is bold.
+                                  "baselineOffset": "A String", # The text's vertical offset from its normal position.
+                                      #
+                                      # Text with `SUPERSCRIPT` or `SUBSCRIPT` baseline offsets is automatically
+                                      # rendered in a smaller font size, computed based on the `font_size` field.
+                                      # The `font_size` itself is not affected by changes in this field.
+                                  "strikethrough": True or False, # Whether or not the text is struck through.
+                                  "smallCaps": True or False, # Whether or not the text is in small capital letters.
+                                  "fontFamily": "A String", # The font family of the text.
+                                      #
+                                      # The font family can be any font from the Font menu in Slides or from
+                                      # [Google Fonts] (https://fonts.google.com/). If the font name is
+                                      # unrecognized, the text is rendered in `Arial`.
+                                      #
+                                      # Some fonts can affect the weight of the text. If an update request
+                                      # specifies values for both `font_family` and `bold`, the explicitly-set
+                                      # `bold` value is used.
+                                  "link": { # A hypertext link. # The hyperlink destination of the text. If unset, there is no link. Links
+                                      # are not inherited from parent text.
+                                      #
+                                      # Changing the link in an update request causes some other changes to the
+                                      # text style of the range:
+                                      #
+                                      # * When setting a link, the text foreground color will be set to
+                                      #   ThemeColorType.HYPERLINK and the text will
+                                      #   be underlined. If these fields are modified in the same
+                                      #   request, those values will be used instead of the link defaults.
+                                      # * Setting a link on a text range that overlaps with an existing link will
+                                      #   also update the existing link to point to the new URL.
+                                      # * Links are not settable on newline characters. As a result, setting a link
+                                      #   on a text range that crosses a paragraph boundary, such as `"ABC\n123"`,
+                                      #   will separate the newline character(s) into their own text runs. The
+                                      #   link will be applied separately to the runs before and after the newline.
+                                      # * Removing a link will update the text style of the range to match the
+                                      #   style of the preceding text (or the default text styles if the preceding
+                                      #   text is another link) unless different styles are being set in the same
+                                      #   request.
+                                    "url": "A String", # If set, indicates this is a link to the external web page at this URL.
+                                    "pageObjectId": "A String", # If set, indicates this is a link to the specific page in this
+                                        # presentation with this ID. A page with this ID may not exist.
+                                    "slideIndex": 42, # If set, indicates this is a link to the slide at this zero-based index
+                                        # in the presentation. There may not be a slide at this index.
+                                    "relativeLink": "A String", # If set, indicates this is a link to a slide in this presentation,
+                                        # addressed by its position.
+                                  },
+                                  "italic": True or False, # Whether or not the text is italicized.
+                                  "fontSize": { # A magnitude in a single direction in the specified units. # The size of the text's font. When read, the `font_size` will specified in
+                                      # points.
+                                    "magnitude": 3.14, # The magnitude.
+                                    "unit": "A String", # The units for magnitude.
+                                  },
+                                  "underline": True or False, # Whether or not the text is underlined.
+                                  "backgroundColor": { # A color that can either be fully opaque or fully transparent. # The background color of the text. If set, the color is either opaque or
+                                      # transparent, depending on if the `opaque_color` field in it is set.
+                                    "opaqueColor": { # A themeable solid color value. # If set, this will be used as an opaque color. If unset, this represents
+                                        # a transparent color.
+                                      "themeColor": "A String", # An opaque theme color.
+                                      "rgbColor": { # An RGB color. # An opaque RGB color.
+                                        "blue": 3.14, # The blue component of the color, from 0.0 to 1.0.
+                                        "green": 3.14, # The green component of the color, from 0.0 to 1.0.
+                                        "red": 3.14, # The red component of the color, from 0.0 to 1.0.
+                                      },
+                                    },
+                                  },
+                                },
+                              },
+                            },
+                          ],
+                          "lists": { # The bulleted lists contained in this text, keyed by list ID.
+                            "a_key": { # A List describes the look and feel of bullets belonging to paragraphs
+                                # associated with a list. A paragraph that is part of a list has an implicit
+                                # reference to that list's ID.
+                              "nestingLevel": { # A map of nesting levels to the properties of bullets at the associated
+                                  # level. A list has at most nine levels of nesting, so the possible values
+                                  # for the keys of this map are 0 through 8, inclusive.
+                                "a_key": { # Contains properties describing the look and feel of a list bullet at a given
+                                    # level of nesting.
+                                  "bulletStyle": { # Represents the styling that can be applied to a TextRun. # The style of a bullet at this level of nesting.
+                                      #
+                                      # If this text is contained in a shape with a parent placeholder, then these text styles may be
+                                      # inherited from the parent. Which text styles are inherited depend on the
+                                      # nesting level of lists:
+                                      #
+                                      # * A text run in a paragraph that is not in a list will inherit its text style
+                                      #   from the the newline character in the paragraph at the 0 nesting level of
+                                      #   the list inside the parent placeholder.
+                                      # * A text run in a paragraph that is in a list will inherit its text style
+                                      #   from the newline character in the paragraph at its corresponding nesting
+                                      #   level of the list inside the parent placeholder.
+                                      #
+                                      # Inherited text styles are represented as unset fields in this message. If
+                                      # text is contained in a shape without a parent placeholder, unsetting these
+                                      # fields will revert the style to a value matching the defaults in the Slides
+                                      # editor.
+                                    "foregroundColor": { # A color that can either be fully opaque or fully transparent. # The color of the text itself. If set, the color is either opaque or
+                                        # transparent, depending on if the `opaque_color` field in it is set.
+                                      "opaqueColor": { # A themeable solid color value. # If set, this will be used as an opaque color. If unset, this represents
+                                          # a transparent color.
+                                        "themeColor": "A String", # An opaque theme color.
+                                        "rgbColor": { # An RGB color. # An opaque RGB color.
+                                          "blue": 3.14, # The blue component of the color, from 0.0 to 1.0.
+                                          "green": 3.14, # The green component of the color, from 0.0 to 1.0.
+                                          "red": 3.14, # The red component of the color, from 0.0 to 1.0.
+                                        },
+                                      },
+                                    },
+                                    "bold": True or False, # Whether or not the text is bold.
+                                    "baselineOffset": "A String", # The text's vertical offset from its normal position.
+                                        #
+                                        # Text with `SUPERSCRIPT` or `SUBSCRIPT` baseline offsets is automatically
+                                        # rendered in a smaller font size, computed based on the `font_size` field.
+                                        # The `font_size` itself is not affected by changes in this field.
+                                    "strikethrough": True or False, # Whether or not the text is struck through.
+                                    "smallCaps": True or False, # Whether or not the text is in small capital letters.
+                                    "fontFamily": "A String", # The font family of the text.
+                                        #
+                                        # The font family can be any font from the Font menu in Slides or from
+                                        # [Google Fonts] (https://fonts.google.com/). If the font name is
+                                        # unrecognized, the text is rendered in `Arial`.
+                                        #
+                                        # Some fonts can affect the weight of the text. If an update request
+                                        # specifies values for both `font_family` and `bold`, the explicitly-set
+                                        # `bold` value is used.
+                                    "link": { # A hypertext link. # The hyperlink destination of the text. If unset, there is no link. Links
+                                        # are not inherited from parent text.
+                                        #
+                                        # Changing the link in an update request causes some other changes to the
+                                        # text style of the range:
+                                        #
+                                        # * When setting a link, the text foreground color will be set to
+                                        #   ThemeColorType.HYPERLINK and the text will
+                                        #   be underlined. If these fields are modified in the same
+                                        #   request, those values will be used instead of the link defaults.
+                                        # * Setting a link on a text range that overlaps with an existing link will
+                                        #   also update the existing link to point to the new URL.
+                                        # * Links are not settable on newline characters. As a result, setting a link
+                                        #   on a text range that crosses a paragraph boundary, such as `"ABC\n123"`,
+                                        #   will separate the newline character(s) into their own text runs. The
+                                        #   link will be applied separately to the runs before and after the newline.
+                                        # * Removing a link will update the text style of the range to match the
+                                        #   style of the preceding text (or the default text styles if the preceding
+                                        #   text is another link) unless different styles are being set in the same
+                                        #   request.
+                                      "url": "A String", # If set, indicates this is a link to the external web page at this URL.
+                                      "pageObjectId": "A String", # If set, indicates this is a link to the specific page in this
+                                          # presentation with this ID. A page with this ID may not exist.
+                                      "slideIndex": 42, # If set, indicates this is a link to the slide at this zero-based index
+                                          # in the presentation. There may not be a slide at this index.
+                                      "relativeLink": "A String", # If set, indicates this is a link to a slide in this presentation,
+                                          # addressed by its position.
+                                    },
+                                    "italic": True or False, # Whether or not the text is italicized.
+                                    "fontSize": { # A magnitude in a single direction in the specified units. # The size of the text's font. When read, the `font_size` will specified in
+                                        # points.
+                                      "magnitude": 3.14, # The magnitude.
+                                      "unit": "A String", # The units for magnitude.
+                                    },
+                                    "underline": True or False, # Whether or not the text is underlined.
+                                    "backgroundColor": { # A color that can either be fully opaque or fully transparent. # The background color of the text. If set, the color is either opaque or
+                                        # transparent, depending on if the `opaque_color` field in it is set.
+                                      "opaqueColor": { # A themeable solid color value. # If set, this will be used as an opaque color. If unset, this represents
+                                          # a transparent color.
+                                        "themeColor": "A String", # An opaque theme color.
+                                        "rgbColor": { # An RGB color. # An opaque RGB color.
+                                          "blue": 3.14, # The blue component of the color, from 0.0 to 1.0.
+                                          "green": 3.14, # The green component of the color, from 0.0 to 1.0.
+                                          "red": 3.14, # The red component of the color, from 0.0 to 1.0.
+                                        },
+                                      },
+                                    },
+                                  },
+                                },
+                              },
+                              "listId": "A String", # The ID of the list.
+                            },
+                          },
+                        },
+                        "rowSpan": 42, # Row span of the cell.
+                        "tableCellProperties": { # The properties of the TableCell. # The properties of the table cell.
+                          "tableCellBackgroundFill": { # The table cell background fill. # The background fill of the table cell. The default fill matches the fill
+                              # for newly created table cells in the Slides editor.
+                            "solidFill": { # A solid color fill. The page or page element is filled entirely with the # Solid color fill.
+                                # specified color value.
+                                #
+                                # If any field is unset, its value may be inherited from a parent placeholder
+                                # if it exists.
+                              "color": { # A themeable solid color value. # The color value of the solid fill.
+                                "themeColor": "A String", # An opaque theme color.
+                                "rgbColor": { # An RGB color. # An opaque RGB color.
+                                  "blue": 3.14, # The blue component of the color, from 0.0 to 1.0.
+                                  "green": 3.14, # The green component of the color, from 0.0 to 1.0.
+                                  "red": 3.14, # The red component of the color, from 0.0 to 1.0.
+                                },
+                              },
+                              "alpha": 3.14, # The fraction of this `color` that should be applied to the pixel.
+                                  # That is, the final pixel color is defined by the equation:
+                                  #
+                                  #   pixel color = alpha * (color) + (1.0 - alpha) * (background color)
+                                  #
+                                  # This means that a value of 1.0 corresponds to a solid color, whereas
+                                  # a value of 0.0 corresponds to a completely transparent color.
+                            },
+                            "propertyState": "A String", # The background fill property state.
+                                #
+                                # Updating the the fill on a table cell will implicitly update this field
+                                # to `RENDERED`, unless another value is specified in the same request. To
+                                # have no fill on a table cell, set this field to `NOT_RENDERED`. In this
+                                # case, any other fill fields set in the same request will be ignored.
+                          },
+                        },
+                        "location": { # A location of a single table cell within a table. # The location of the cell within the table.
+                          "rowIndex": 42, # The 0-based row index.
+                          "columnIndex": 42, # The 0-based column index.
+                        },
+                        "columnSpan": 42, # Column span of the cell.
+                      },
+                    ],
+                    "rowHeight": { # A magnitude in a single direction in the specified units. # Height of a row.
+                      "magnitude": 3.14, # The magnitude.
+                      "unit": "A String", # The units for magnitude.
+                    },
+                  },
+                ],
+                "rows": 42, # Number of rows in the table.
+                "columns": 42, # Number of columns in the table.
+              },
+              "line": { # A PageElement kind representing a # A line page element.
+                  # line, curved connector, or bent connector.
+                "lineProperties": { # The properties of the Line. # The properties of the line.
+                    #
+                    # When unset, these fields default to values that match the appearance of
+                    # new lines created in the Slides editor.
+                  "dashStyle": "A String", # The dash style of the line.
+                  "weight": { # A magnitude in a single direction in the specified units. # The thickness of the line.
+                    "magnitude": 3.14, # The magnitude.
+                    "unit": "A String", # The units for magnitude.
+                  },
+                  "endArrow": "A String", # The style of the arrow at the end of the line.
+                  "link": { # A hypertext link. # The hyperlink destination of the line. If unset, there is no link.
+                    "url": "A String", # If set, indicates this is a link to the external web page at this URL.
+                    "pageObjectId": "A String", # If set, indicates this is a link to the specific page in this
+                        # presentation with this ID. A page with this ID may not exist.
+                    "slideIndex": 42, # If set, indicates this is a link to the slide at this zero-based index
+                        # in the presentation. There may not be a slide at this index.
+                    "relativeLink": "A String", # If set, indicates this is a link to a slide in this presentation,
+                        # addressed by its position.
+                  },
+                  "startArrow": "A String", # The style of the arrow at the beginning of the line.
+                  "lineFill": { # The fill of the line. # The fill of the line. The default line fill matches the defaults for new
+                      # lines created in the Slides editor.
+                    "solidFill": { # A solid color fill. The page or page element is filled entirely with the # Solid color fill.
+                        # specified color value.
+                        #
+                        # If any field is unset, its value may be inherited from a parent placeholder
+                        # if it exists.
+                      "color": { # A themeable solid color value. # The color value of the solid fill.
+                        "themeColor": "A String", # An opaque theme color.
+                        "rgbColor": { # An RGB color. # An opaque RGB color.
+                          "blue": 3.14, # The blue component of the color, from 0.0 to 1.0.
+                          "green": 3.14, # The green component of the color, from 0.0 to 1.0.
+                          "red": 3.14, # The red component of the color, from 0.0 to 1.0.
+                        },
+                      },
+                      "alpha": 3.14, # The fraction of this `color` that should be applied to the pixel.
+                          # That is, the final pixel color is defined by the equation:
+                          #
+                          #   pixel color = alpha * (color) + (1.0 - alpha) * (background color)
+                          #
+                          # This means that a value of 1.0 corresponds to a solid color, whereas
+                          # a value of 0.0 corresponds to a completely transparent color.
+                    },
+                  },
+                },
+                "lineType": "A String", # The type of the line.
+              },
+              "size": { # A width and height. # The size of the page element.
+                "width": { # A magnitude in a single direction in the specified units. # The width of the object.
+                  "magnitude": 3.14, # The magnitude.
+                  "unit": "A String", # The units for magnitude.
+                },
+                "height": { # A magnitude in a single direction in the specified units. # The height of the object.
+                  "magnitude": 3.14, # The magnitude.
+                  "unit": "A String", # The units for magnitude.
+                },
+              },
+              "elementGroup": { # A PageElement kind representing a # A collection of page elements joined as a single unit.
+                  # joined collection of PageElements.
+                "children": [ # The collection of elements in the group. The minimum size of a group is 2.
+                  # Object with schema name: PageElement
+                ],
+              },
+            },
+          ],
+          "objectId": "A String", # The object ID for this page. Object IDs used by
+              # Page and
+              # PageElement share the same namespace.
+          "pageProperties": { # The properties of the Page. # The properties of the page.
+              #
+              # The page will inherit properties from the parent page. Depending on the page
+              # type the hierarchy is defined in either
+              # SlideProperties or
+              # LayoutProperties.
+            "pageBackgroundFill": { # The page background fill. # The background fill of the page. If unset, the background fill is inherited
+                # from a parent page if it exists. If the page has no parent, then the
+                # background fill defaults to the corresponding fill in the Slides editor.
+              "solidFill": { # A solid color fill. The page or page element is filled entirely with the # Solid color fill.
+                  # specified color value.
+                  #
+                  # If any field is unset, its value may be inherited from a parent placeholder
+                  # if it exists.
+                "color": { # A themeable solid color value. # The color value of the solid fill.
+                  "themeColor": "A String", # An opaque theme color.
+                  "rgbColor": { # An RGB color. # An opaque RGB color.
+                    "blue": 3.14, # The blue component of the color, from 0.0 to 1.0.
+                    "green": 3.14, # The green component of the color, from 0.0 to 1.0.
+                    "red": 3.14, # The red component of the color, from 0.0 to 1.0.
+                  },
+                },
+                "alpha": 3.14, # The fraction of this `color` that should be applied to the pixel.
+                    # That is, the final pixel color is defined by the equation:
+                    #
+                    #   pixel color = alpha * (color) + (1.0 - alpha) * (background color)
+                    #
+                    # This means that a value of 1.0 corresponds to a solid color, whereas
+                    # a value of 0.0 corresponds to a completely transparent color.
+              },
+              "propertyState": "A String", # The background fill property state.
+                  #
+                  # Updating the the fill on a page will implicitly update this field to
+                  # `RENDERED`, unless another value is specified in the same request. To
+                  # have no fill on a page, set this field to `NOT_RENDERED`. In this case,
+                  # any other fill fields set in the same request will be ignored.
+              "stretchedPictureFill": { # The stretched picture fill. The page or page element is filled entirely with # Stretched picture fill.
+                  # the specified picture. The picture is stretched to fit its container.
+                "contentUrl": "A String", # Reading the content_url:
+                    #
+                    # An URL to a picture with a default lifetime of 30 minutes.
+                    # This URL is tagged with the account of the requester. Anyone with the URL
+                    # effectively accesses the picture as the original requester. Access to the
+                    # picture may be lost if the presentation's sharing settings change.
+                    #
+                    # Writing the content_url:
+                    #
+                    # The picture is fetched once at insertion time and a copy is stored for
+                    # display inside the presentation. Pictures must be less than 50MB in size,
+                    # cannot exceed 25 megapixels, and must be in either in PNG, JPEG, or GIF
+                    # format.
+                "size": { # A width and height. # The original size of the picture fill. This field is read-only.
+                  "width": { # A magnitude in a single direction in the specified units. # The width of the object.
+                    "magnitude": 3.14, # The magnitude.
+                    "unit": "A String", # The units for magnitude.
+                  },
+                  "height": { # A magnitude in a single direction in the specified units. # The height of the object.
+                    "magnitude": 3.14, # The magnitude.
+                    "unit": "A String", # The units for magnitude.
+                  },
+                },
+              },
+            },
+            "colorScheme": { # The palette of predefined colors for a page. # The color scheme of the page. If unset, the color scheme is inherited from
+                # a parent page. If the page has no parent, the color scheme uses a default
+                # Slides color scheme. This field is read-only.
+              "colors": [ # The ThemeColorType and corresponding concrete color pairs.
+                { # A pair mapping a theme color type to the concrete color it represents.
+                  "color": { # An RGB color. # The concrete color corresponding to the theme color type above.
+                    "blue": 3.14, # The blue component of the color, from 0.0 to 1.0.
+                    "green": 3.14, # The green component of the color, from 0.0 to 1.0.
+                    "red": 3.14, # The red component of the color, from 0.0 to 1.0.
+                  },
+                  "type": "A String", # The type of the theme color.
+                },
+              ],
+            },
+          },
+          "pageType": "A String", # The type of the page.
+          "slideProperties": { # The properties of Page that are only # Slide specific properties. Only set if page_type = SLIDE.
+              # relevant for pages with page_type SLIDE.
+            "masterObjectId": "A String", # The object ID of the master that this slide is based on.
+            "layoutObjectId": "A String", # The object ID of the layout that this slide is based on.
+          },
+        },
+      ],
+      "layouts": [ # The layouts in the presentation. A layout is a template that determines
+          # how content is arranged and styled on the slides that inherit from that
+          # layout.
+        { # A page in a presentation.
+          "layoutProperties": { # The properties of Page are only # Layout specific properties. Only set if page_type = LAYOUT.
+              # relevant for pages with page_type LAYOUT.
+            "displayName": "A String", # The human readable name of the layout in the presentation's locale.
+            "name": "A String", # The name of the layout.
+            "masterObjectId": "A String", # The object ID of the master that this layout is based on.
+          },
+          "pageElements": [ # The page elements rendered on the page.
+            { # A visual element rendered on a page.
+              "wordArt": { # A PageElement kind representing # A word art page element.
+                  # word art.
+                "renderedText": "A String", # The text rendered as word art.
+              },
+              "description": "A String", # The description of the page element. Combined with title to display alt
+                  # text.
+              "objectId": "A String", # The object ID for this page element. Object IDs used by
+                  # google.apps.slides.v1.Page and
+                  # google.apps.slides.v1.PageElement share the same namespace.
+              "title": "A String", # The title of the page element. Combined with description to display alt
+                  # text.
+              "image": { # A PageElement kind representing an # An image page element.
+                  # image.
+                "contentUrl": "A String", # An URL to an image with a default lifetime of 30 minutes.
+                    # This URL is tagged with the account of the requester. Anyone with the URL
+                    # effectively accesses the image as the original requester. Access to the
+                    # image may be lost if the presentation's sharing settings change.
+                "imageProperties": { # The properties of the Image. # The properties of the image.
+                  "outline": { # The outline of a PageElement. # The outline of the image. If not set, the the image has no outline.
+                      #
+                      # If these fields are unset, they may be inherited from a parent placeholder
+                      # if it exists. If there is no parent, the fields will default to the value
+                      # used for new page elements created in the Slides editor, which may depend on
+                      # the page element kind.
+                    "dashStyle": "A String", # The dash style of the outline.
+                    "propertyState": "A String", # The outline property state.
+                        #
+                        # Updating the the outline on a page element will implicitly update this
+                        # field to`RENDERED`, unless another value is specified in the same request.
+                        # To have no outline on a page element, set this field to `NOT_RENDERED`. In
+                        # this case, any other outline fields set in the same request will be
+                        # ignored.
+                    "outlineFill": { # The fill of the outline. # The fill of the outline.
+                      "solidFill": { # A solid color fill. The page or page element is filled entirely with the # Solid color fill.
+                          # specified color value.
+                          #
+                          # If any field is unset, its value may be inherited from a parent placeholder
+                          # if it exists.
+                        "color": { # A themeable solid color value. # The color value of the solid fill.
+                          "themeColor": "A String", # An opaque theme color.
+                          "rgbColor": { # An RGB color. # An opaque RGB color.
+                            "blue": 3.14, # The blue component of the color, from 0.0 to 1.0.
+                            "green": 3.14, # The green component of the color, from 0.0 to 1.0.
+                            "red": 3.14, # The red component of the color, from 0.0 to 1.0.
+                          },
+                        },
+                        "alpha": 3.14, # The fraction of this `color` that should be applied to the pixel.
+                            # That is, the final pixel color is defined by the equation:
+                            #
+                            #   pixel color = alpha * (color) + (1.0 - alpha) * (background color)
+                            #
+                            # This means that a value of 1.0 corresponds to a solid color, whereas
+                            # a value of 0.0 corresponds to a completely transparent color.
+                      },
+                    },
+                    "weight": { # A magnitude in a single direction in the specified units. # The thickness of the outline.
+                      "magnitude": 3.14, # The magnitude.
+                      "unit": "A String", # The units for magnitude.
+                    },
+                  },
+                  "brightness": 3.14, # The brightness effect of the image. The value should be in the interval
+                      # [-1.0, 1.0], where 0 means no effect. This property is read-only.
+                  "recolor": { # A recolor effect applied on an image. # The recolor effect of the image. If not set, the image is not recolored.
+                      # This property is read-only.
+                    "recolorStops": [ # The recolor effect is represented by a gradient, which is a list of color
+                        # stops. This property is read-only.
+                      { # A color and position in a gradient band.
+                        "color": { # A themeable solid color value. # The color of the gradient stop.
+                          "themeColor": "A String", # An opaque theme color.
+                          "rgbColor": { # An RGB color. # An opaque RGB color.
+                            "blue": 3.14, # The blue component of the color, from 0.0 to 1.0.
+                            "green": 3.14, # The green component of the color, from 0.0 to 1.0.
+                            "red": 3.14, # The red component of the color, from 0.0 to 1.0.
+                          },
+                        },
+                        "position": 3.14, # The relative position of the color stop in the gradient band measured
+                            # in percentage. The value should be in the interval [0.0, 1.0].
+                        "alpha": 3.14, # The alpha value of this color in the gradient band. Defaults to 1.0,
+                            # fully opaque.
+                      },
+                    ],
+                  },
+                  "link": { # A hypertext link. # The hyperlink destination of the image. If unset, there is no link.
+                    "url": "A String", # If set, indicates this is a link to the external web page at this URL.
+                    "pageObjectId": "A String", # If set, indicates this is a link to the specific page in this
+                        # presentation with this ID. A page with this ID may not exist.
+                    "slideIndex": 42, # If set, indicates this is a link to the slide at this zero-based index
+                        # in the presentation. There may not be a slide at this index.
+                    "relativeLink": "A String", # If set, indicates this is a link to a slide in this presentation,
+                        # addressed by its position.
+                  },
+                  "transparency": 3.14, # The transparency effect of the image. The value should be in the interval
+                      # [0.0, 1.0], where 0 means no effect and 1 means completely transparent.
+                      # This property is read-only.
+                  "cropProperties": { # The crop properties of an object enclosed in a container. For example, an # The crop properties of the image. If not set, the image is not cropped.
+                      # This property is read-only.
+                      # Image.
+                      #
+                      # The crop properties is represented by the offsets of four edges which define
+                      # a crop rectangle. The offsets are measured in percentage from the
+                      # corresponding edges of the object's original bounding rectangle towards
+                      # inside, relative to the object's original dimensions.
+                      #
+                      # - If the offset is in the interval (0, 1), the corresponding edge of crop
+                      # rectangle is positioned inside of the object's original bounding rectangle.
+                      # - If the offset is negative or greater than 1, the corresponding edge of crop
+                      # rectangle is positioned outside of the object's original bounding rectangle.
+                      # - If the left edge of the crop rectangle is on the right side of its right
+                      # edge, the object will be flipped horizontally.
+                      # - If the top edge of the crop rectangle is below its bottom edge, the object
+                      # will be flipped vertically.
+                      # - If all offsets and rotation angle is 0, the object is not cropped.
+                      #
+                      # After cropping, the content in the crop rectangle will be stretched to fit
+                      # its container.
+                    "leftOffset": 3.14, # The offset specifies the left edge of the crop rectangle that is located to
+                        # the right of the original bounding rectangle left edge, relative to the
+                        # object's original width.
+                    "angle": 3.14, # The rotation angle of the crop window around its center, in radians.
+                        # Rotation angle is applied after the offset.
+                    "bottomOffset": 3.14, # The offset specifies the bottom edge of the crop rectangle that is located
+                        # above the original bounding rectangle bottom edge, relative to the object's
+                        # original height.
+                    "rightOffset": 3.14, # The offset specifies the right edge of the crop rectangle that is located
+                        # to the left of the original bounding rectangle right edge, relative to the
+                        # object's original width.
+                    "topOffset": 3.14, # The offset specifies the top edge of the crop rectangle that is located
+                        # below the original bounding rectangle top edge, relative to the object's
+                        # original height.
+                  },
+                  "shadow": { # The shadow properties of a page element. # The shadow of the image. If not set, the image has no shadow. This property
+                      # is read-only.
+                      #
+                      # If these fields are unset, they may be inherited from a parent placeholder
+                      # if it exists. If there is no parent, the fields will default to the value
+                      # used for new page elements created in the Slides editor, which may depend on
+                      # the page element kind.
+                    "color": { # A themeable solid color value. # The shadow color value.
+                      "themeColor": "A String", # An opaque theme color.
+                      "rgbColor": { # An RGB color. # An opaque RGB color.
+                        "blue": 3.14, # The blue component of the color, from 0.0 to 1.0.
+                        "green": 3.14, # The green component of the color, from 0.0 to 1.0.
+                        "red": 3.14, # The red component of the color, from 0.0 to 1.0.
+                      },
+                    },
+                    "transform": { # AffineTransform uses a 3x3 matrix with an implied last row of [ 0 0 1 ] # Transform that encodes the translate, scale, and skew of the shadow,
+                        # relative to the alignment position.
+                        # to transform source coordinates (x,y) into destination coordinates (x', y')
+                        # according to:
+                        #
+                        #       x'  x  =   shear_y  scale_y  translate_y
+                        #       1  [ 1 ]
+                        #
+                        # After transformation,
+                        #
+                        #      x' = scale_x * x + shear_x * y + translate_x;
+                        #      y' = scale_y * y + shear_y * x + translate_y;
+                        #
+                        # This message is therefore composed of these six matrix elements.
+                      "translateX": 3.14, # The X coordinate translation element.
+                      "translateY": 3.14, # The Y coordinate translation element.
+                      "scaleX": 3.14, # The X coordinate scaling element.
+                      "scaleY": 3.14, # The Y coordinate scaling element.
+                      "shearY": 3.14, # The Y coordinate shearing element.
+                      "shearX": 3.14, # The X coordinate shearing element.
+                      "unit": "A String", # The units for translate elements.
+                    },
+                    "propertyState": "A String", # The shadow property state.
+                        #
+                        # Updating the the shadow on a page element will implicitly update this field
+                        # to `RENDERED`, unless another value is specified in the same request. To
+                        # have no shadow on a page element, set this field to `NOT_RENDERED`. In this
+                        # case, any other shadow fields set in the same request will be ignored.
+                    "blurRadius": { # A magnitude in a single direction in the specified units. # The radius of the shadow blur. The larger the radius, the more diffuse the
+                        # shadow becomes.
+                      "magnitude": 3.14, # The magnitude.
+                      "unit": "A String", # The units for magnitude.
+                    },
+                    "alpha": 3.14, # The alpha of the shadow's color, from 0.0 to 1.0.
+                    "type": "A String", # The type of the shadow.
+                    "alignment": "A String", # The alignment point of the shadow, that sets the origin for translate,
+                        # scale and skew of the shadow.
+                    "rotateWithShape": True or False, # Whether the shadow should rotate with the shape.
+                  },
+                  "contrast": 3.14, # The contrast effect of the image. The value should be in the interval
+                      # [-1.0, 1.0], where 0 means no effect. This property is read-only.
+                },
+              },
+              "transform": { # AffineTransform uses a 3x3 matrix with an implied last row of [ 0 0 1 ] # The transform of the page element.
+                  # to transform source coordinates (x,y) into destination coordinates (x', y')
+                  # according to:
+                  #
+                  #       x'  x  =   shear_y  scale_y  translate_y
+                  #       1  [ 1 ]
+                  #
+                  # After transformation,
+                  #
+                  #      x' = scale_x * x + shear_x * y + translate_x;
+                  #      y' = scale_y * y + shear_y * x + translate_y;
+                  #
+                  # This message is therefore composed of these six matrix elements.
+                "translateX": 3.14, # The X coordinate translation element.
+                "translateY": 3.14, # The Y coordinate translation element.
+                "scaleX": 3.14, # The X coordinate scaling element.
+                "scaleY": 3.14, # The Y coordinate scaling element.
+                "shearY": 3.14, # The Y coordinate shearing element.
+                "shearX": 3.14, # The X coordinate shearing element.
+                "unit": "A String", # The units for translate elements.
+              },
+              "shape": { # A PageElement kind representing a # A generic shape.
+                  # generic shape that does not have a more specific classification.
+                "text": { # The general text content. The text must reside in a compatible shape (e.g. # The text content of the shape.
+                    # text box or rectangle) or a table cell in a page.
+                  "textElements": [ # The text contents broken down into its component parts, including styling
+                      # information. This property is read-only.
+                    { # A TextElement describes the content of a range of indices in the text content
+                        # of a Shape or TableCell.
+                      "autoText": { # A TextElement kind that represents auto text. # A TextElement representing a spot in the text that is dynamically
+                          # replaced with content that can change over time.
+                        "content": "A String", # The rendered content of this auto text, if available.
+                        "style": { # Represents the styling that can be applied to a TextRun. # The styling applied to this auto text.
+                            #
+                            # If this text is contained in a shape with a parent placeholder, then these text styles may be
+                            # inherited from the parent. Which text styles are inherited depend on the
+                            # nesting level of lists:
+                            #
+                            # * A text run in a paragraph that is not in a list will inherit its text style
+                            #   from the the newline character in the paragraph at the 0 nesting level of
+                            #   the list inside the parent placeholder.
+                            # * A text run in a paragraph that is in a list will inherit its text style
+                            #   from the newline character in the paragraph at its corresponding nesting
+                            #   level of the list inside the parent placeholder.
+                            #
+                            # Inherited text styles are represented as unset fields in this message. If
+                            # text is contained in a shape without a parent placeholder, unsetting these
+                            # fields will revert the style to a value matching the defaults in the Slides
+                            # editor.
+                          "foregroundColor": { # A color that can either be fully opaque or fully transparent. # The color of the text itself. If set, the color is either opaque or
+                              # transparent, depending on if the `opaque_color` field in it is set.
+                            "opaqueColor": { # A themeable solid color value. # If set, this will be used as an opaque color. If unset, this represents
+                                # a transparent color.
+                              "themeColor": "A String", # An opaque theme color.
+                              "rgbColor": { # An RGB color. # An opaque RGB color.
+                                "blue": 3.14, # The blue component of the color, from 0.0 to 1.0.
+                                "green": 3.14, # The green component of the color, from 0.0 to 1.0.
+                                "red": 3.14, # The red component of the color, from 0.0 to 1.0.
+                              },
+                            },
+                          },
+                          "bold": True or False, # Whether or not the text is bold.
+                          "baselineOffset": "A String", # The text's vertical offset from its normal position.
+                              #
+                              # Text with `SUPERSCRIPT` or `SUBSCRIPT` baseline offsets is automatically
+                              # rendered in a smaller font size, computed based on the `font_size` field.
+                              # The `font_size` itself is not affected by changes in this field.
+                          "strikethrough": True or False, # Whether or not the text is struck through.
+                          "smallCaps": True or False, # Whether or not the text is in small capital letters.
+                          "fontFamily": "A String", # The font family of the text.
+                              #
+                              # The font family can be any font from the Font menu in Slides or from
+                              # [Google Fonts] (https://fonts.google.com/). If the font name is
+                              # unrecognized, the text is rendered in `Arial`.
+                              #
+                              # Some fonts can affect the weight of the text. If an update request
+                              # specifies values for both `font_family` and `bold`, the explicitly-set
+                              # `bold` value is used.
+                          "link": { # A hypertext link. # The hyperlink destination of the text. If unset, there is no link. Links
+                              # are not inherited from parent text.
+                              #
+                              # Changing the link in an update request causes some other changes to the
+                              # text style of the range:
+                              #
+                              # * When setting a link, the text foreground color will be set to
+                              #   ThemeColorType.HYPERLINK and the text will
+                              #   be underlined. If these fields are modified in the same
+                              #   request, those values will be used instead of the link defaults.
+                              # * Setting a link on a text range that overlaps with an existing link will
+                              #   also update the existing link to point to the new URL.
+                              # * Links are not settable on newline characters. As a result, setting a link
+                              #   on a text range that crosses a paragraph boundary, such as `"ABC\n123"`,
+                              #   will separate the newline character(s) into their own text runs. The
+                              #   link will be applied separately to the runs before and after the newline.
+                              # * Removing a link will update the text style of the range to match the
+                              #   style of the preceding text (or the default text styles if the preceding
+                              #   text is another link) unless different styles are being set in the same
+                              #   request.
+                            "url": "A String", # If set, indicates this is a link to the external web page at this URL.
+                            "pageObjectId": "A String", # If set, indicates this is a link to the specific page in this
+                                # presentation with this ID. A page with this ID may not exist.
+                            "slideIndex": 42, # If set, indicates this is a link to the slide at this zero-based index
+                                # in the presentation. There may not be a slide at this index.
+                            "relativeLink": "A String", # If set, indicates this is a link to a slide in this presentation,
+                                # addressed by its position.
+                          },
+                          "italic": True or False, # Whether or not the text is italicized.
+                          "fontSize": { # A magnitude in a single direction in the specified units. # The size of the text's font. When read, the `font_size` will specified in
+                              # points.
+                            "magnitude": 3.14, # The magnitude.
+                            "unit": "A String", # The units for magnitude.
+                          },
+                          "underline": True or False, # Whether or not the text is underlined.
+                          "backgroundColor": { # A color that can either be fully opaque or fully transparent. # The background color of the text. If set, the color is either opaque or
+                              # transparent, depending on if the `opaque_color` field in it is set.
+                            "opaqueColor": { # A themeable solid color value. # If set, this will be used as an opaque color. If unset, this represents
+                                # a transparent color.
+                              "themeColor": "A String", # An opaque theme color.
+                              "rgbColor": { # An RGB color. # An opaque RGB color.
+                                "blue": 3.14, # The blue component of the color, from 0.0 to 1.0.
+                                "green": 3.14, # The green component of the color, from 0.0 to 1.0.
+                                "red": 3.14, # The red component of the color, from 0.0 to 1.0.
+                              },
+                            },
+                          },
+                        },
+                        "type": "A String", # The type of this auto text.
+                      },
+                      "endIndex": 42, # The zero-based end index of this text element, exclusive, in Unicode code
+                          # units.
+                      "startIndex": 42, # The zero-based start index of this text element, in Unicode code units.
+                      "paragraphMarker": { # A TextElement kind that represents the beginning of a new paragraph. # A marker representing the beginning of a new paragraph.
+                          #
+                          # The `start_index` and `end_index` of this TextElement represent the
+                          # range of the paragraph. Other TextElements with an index range contained
+                          # inside this paragraph's range are considered to be part of this
+                          # paragraph. The range of indices of two separate paragraphs will never
+                          # overlap.
+                        "style": { # Styles that apply to a whole paragraph. # The paragraph's style
+                            #
+                            # If this text is contained in a shape with a parent placeholder, then these paragraph styles may be
+                            # inherited from the parent. Which paragraph styles are inherited depend on the
+                            # nesting level of lists:
+                            #
+                            # * A paragraph not in a list will inherit its paragraph style from the
+                            #   paragraph at the 0 nesting level of the list inside the parent placeholder.
+                            # * A paragraph in a list will inherit its paragraph style from the paragraph
+                            #   at its corresponding nesting level of the list inside the parent
+                            #   placeholder.
+                            #
+                            # Inherited paragraph styles are represented as unset fields in this message.
+                          "spacingMode": "A String", # The spacing mode for the paragraph. This property is read-only.
+                          "direction": "A String", # The text direction of this paragraph. This property is read-only.
+                          "spaceBelow": { # A magnitude in a single direction in the specified units. # The amount of extra space above the paragraph. If unset, the value is
+                              # inherited from the parent. This property is read-only.
+                            "magnitude": 3.14, # The magnitude.
+                            "unit": "A String", # The units for magnitude.
+                          },
+                          "lineSpacing": 3.14, # The amount of space between lines, as a percentage of normal, where normal
+                              # is represented as 100.0. If unset, the value is inherited from the parent.
+                              # This property is read-only.
+                          "indentStart": { # A magnitude in a single direction in the specified units. # The amount indentation for the paragraph on the side that corresponds to
+                              # the start of the text, based on the current text direction. If unset, the
+                              # value is inherited from the parent. This property is read-only.
+                            "magnitude": 3.14, # The magnitude.
+                            "unit": "A String", # The units for magnitude.
+                          },
+                          "spaceAbove": { # A magnitude in a single direction in the specified units. # The amount of extra space above the paragraph. If unset, the value is
+                              # inherited from the parent. This property is read-only.
+                            "magnitude": 3.14, # The magnitude.
+                            "unit": "A String", # The units for magnitude.
+                          },
+                          "indentEnd": { # A magnitude in a single direction in the specified units. # The amount indentation for the paragraph on the side that corresponds to
+                              # the end of the text, based on the current text direction. If unset, the
+                              # value is inherited from the parent. This property is read-only.
+                            "magnitude": 3.14, # The magnitude.
+                            "unit": "A String", # The units for magnitude.
+                          },
+                          "indentFirstLine": { # A magnitude in a single direction in the specified units. # The amount of indentation for the start of the first line of the paragraph.
+                              # If unset, the value is inherited from the parent. This property is
+                              # read-only.
+                            "magnitude": 3.14, # The magnitude.
+                            "unit": "A String", # The units for magnitude.
+                          },
+                          "alignment": "A String", # The text alignment for this paragraph. This property is read-only.
+                        },
+                        "bullet": { # Describes the bullet of a paragraph. # The bullet for this paragraph. If not present, the paragraph does not
+                            # belong to a list.
+                          "nestingLevel": 42, # The nesting level of this paragraph in the list.
+                          "listId": "A String", # The ID of the list this paragraph belongs to.
+                          "bulletStyle": { # Represents the styling that can be applied to a TextRun. # The paragraph specific text style applied to this bullet.
+                              #
+                              # If this text is contained in a shape with a parent placeholder, then these text styles may be
+                              # inherited from the parent. Which text styles are inherited depend on the
+                              # nesting level of lists:
+                              #
+                              # * A text run in a paragraph that is not in a list will inherit its text style
+                              #   from the the newline character in the paragraph at the 0 nesting level of
+                              #   the list inside the parent placeholder.
+                              # * A text run in a paragraph that is in a list will inherit its text style
+                              #   from the newline character in the paragraph at its corresponding nesting
+                              #   level of the list inside the parent placeholder.
+                              #
+                              # Inherited text styles are represented as unset fields in this message. If
+                              # text is contained in a shape without a parent placeholder, unsetting these
+                              # fields will revert the style to a value matching the defaults in the Slides
+                              # editor.
+                            "foregroundColor": { # A color that can either be fully opaque or fully transparent. # The color of the text itself. If set, the color is either opaque or
+                                # transparent, depending on if the `opaque_color` field in it is set.
+                              "opaqueColor": { # A themeable solid color value. # If set, this will be used as an opaque color. If unset, this represents
+                                  # a transparent color.
+                                "themeColor": "A String", # An opaque theme color.
+                                "rgbColor": { # An RGB color. # An opaque RGB color.
+                                  "blue": 3.14, # The blue component of the color, from 0.0 to 1.0.
+                                  "green": 3.14, # The green component of the color, from 0.0 to 1.0.
+                                  "red": 3.14, # The red component of the color, from 0.0 to 1.0.
+                                },
+                              },
+                            },
+                            "bold": True or False, # Whether or not the text is bold.
+                            "baselineOffset": "A String", # The text's vertical offset from its normal position.
+                                #
+                                # Text with `SUPERSCRIPT` or `SUBSCRIPT` baseline offsets is automatically
+                                # rendered in a smaller font size, computed based on the `font_size` field.
+                                # The `font_size` itself is not affected by changes in this field.
+                            "strikethrough": True or False, # Whether or not the text is struck through.
+                            "smallCaps": True or False, # Whether or not the text is in small capital letters.
+                            "fontFamily": "A String", # The font family of the text.
+                                #
+                                # The font family can be any font from the Font menu in Slides or from
+                                # [Google Fonts] (https://fonts.google.com/). If the font name is
+                                # unrecognized, the text is rendered in `Arial`.
+                                #
+                                # Some fonts can affect the weight of the text. If an update request
+                                # specifies values for both `font_family` and `bold`, the explicitly-set
+                                # `bold` value is used.
+                            "link": { # A hypertext link. # The hyperlink destination of the text. If unset, there is no link. Links
+                                # are not inherited from parent text.
+                                #
+                                # Changing the link in an update request causes some other changes to the
+                                # text style of the range:
+                                #
+                                # * When setting a link, the text foreground color will be set to
+                                #   ThemeColorType.HYPERLINK and the text will
+                                #   be underlined. If these fields are modified in the same
+                                #   request, those values will be used instead of the link defaults.
+                                # * Setting a link on a text range that overlaps with an existing link will
+                                #   also update the existing link to point to the new URL.
+                                # * Links are not settable on newline characters. As a result, setting a link
+                                #   on a text range that crosses a paragraph boundary, such as `"ABC\n123"`,
+                                #   will separate the newline character(s) into their own text runs. The
+                                #   link will be applied separately to the runs before and after the newline.
+                                # * Removing a link will update the text style of the range to match the
+                                #   style of the preceding text (or the default text styles if the preceding
+                                #   text is another link) unless different styles are being set in the same
+                                #   request.
+                              "url": "A String", # If set, indicates this is a link to the external web page at this URL.
+                              "pageObjectId": "A String", # If set, indicates this is a link to the specific page in this
+                                  # presentation with this ID. A page with this ID may not exist.
+                              "slideIndex": 42, # If set, indicates this is a link to the slide at this zero-based index
+                                  # in the presentation. There may not be a slide at this index.
+                              "relativeLink": "A String", # If set, indicates this is a link to a slide in this presentation,
+                                  # addressed by its position.
+                            },
+                            "italic": True or False, # Whether or not the text is italicized.
+                            "fontSize": { # A magnitude in a single direction in the specified units. # The size of the text's font. When read, the `font_size` will specified in
+                                # points.
+                              "magnitude": 3.14, # The magnitude.
+                              "unit": "A String", # The units for magnitude.
+                            },
+                            "underline": True or False, # Whether or not the text is underlined.
+                            "backgroundColor": { # A color that can either be fully opaque or fully transparent. # The background color of the text. If set, the color is either opaque or
+                                # transparent, depending on if the `opaque_color` field in it is set.
+                              "opaqueColor": { # A themeable solid color value. # If set, this will be used as an opaque color. If unset, this represents
+                                  # a transparent color.
+                                "themeColor": "A String", # An opaque theme color.
+                                "rgbColor": { # An RGB color. # An opaque RGB color.
+                                  "blue": 3.14, # The blue component of the color, from 0.0 to 1.0.
+                                  "green": 3.14, # The green component of the color, from 0.0 to 1.0.
+                                  "red": 3.14, # The red component of the color, from 0.0 to 1.0.
+                                },
+                              },
+                            },
+                          },
+                          "glyph": "A String", # The rendered bullet glyph for this paragraph.
+                        },
+                      },
+                      "textRun": { # A TextElement kind that represents a run of text that all has the same # A TextElement representing a run of text where all of the characters
+                          # in the run have the same TextStyle.
+                          #
+                          # The `start_index` and `end_index` of TextRuns will always be fully
+                          # contained in the index range of a single `paragraph_marker` TextElement.
+                          # In other words, a TextRun will never span multiple paragraphs.
+                          # styling.
+                        "content": "A String", # The text of this run.
+                        "style": { # Represents the styling that can be applied to a TextRun. # The styling applied to this run.
+                            #
+                            # If this text is contained in a shape with a parent placeholder, then these text styles may be
+                            # inherited from the parent. Which text styles are inherited depend on the
+                            # nesting level of lists:
+                            #
+                            # * A text run in a paragraph that is not in a list will inherit its text style
+                            #   from the the newline character in the paragraph at the 0 nesting level of
+                            #   the list inside the parent placeholder.
+                            # * A text run in a paragraph that is in a list will inherit its text style
+                            #   from the newline character in the paragraph at its corresponding nesting
+                            #   level of the list inside the parent placeholder.
+                            #
+                            # Inherited text styles are represented as unset fields in this message. If
+                            # text is contained in a shape without a parent placeholder, unsetting these
+                            # fields will revert the style to a value matching the defaults in the Slides
+                            # editor.
+                          "foregroundColor": { # A color that can either be fully opaque or fully transparent. # The color of the text itself. If set, the color is either opaque or
+                              # transparent, depending on if the `opaque_color` field in it is set.
+                            "opaqueColor": { # A themeable solid color value. # If set, this will be used as an opaque color. If unset, this represents
+                                # a transparent color.
+                              "themeColor": "A String", # An opaque theme color.
+                              "rgbColor": { # An RGB color. # An opaque RGB color.
+                                "blue": 3.14, # The blue component of the color, from 0.0 to 1.0.
+                                "green": 3.14, # The green component of the color, from 0.0 to 1.0.
+                                "red": 3.14, # The red component of the color, from 0.0 to 1.0.
+                              },
+                            },
+                          },
+                          "bold": True or False, # Whether or not the text is bold.
+                          "baselineOffset": "A String", # The text's vertical offset from its normal position.
+                              #
+                              # Text with `SUPERSCRIPT` or `SUBSCRIPT` baseline offsets is automatically
+                              # rendered in a smaller font size, computed based on the `font_size` field.
+                              # The `font_size` itself is not affected by changes in this field.
+                          "strikethrough": True or False, # Whether or not the text is struck through.
+                          "smallCaps": True or False, # Whether or not the text is in small capital letters.
+                          "fontFamily": "A String", # The font family of the text.
+                              #
+                              # The font family can be any font from the Font menu in Slides or from
+                              # [Google Fonts] (https://fonts.google.com/). If the font name is
+                              # unrecognized, the text is rendered in `Arial`.
+                              #
+                              # Some fonts can affect the weight of the text. If an update request
+                              # specifies values for both `font_family` and `bold`, the explicitly-set
+                              # `bold` value is used.
+                          "link": { # A hypertext link. # The hyperlink destination of the text. If unset, there is no link. Links
+                              # are not inherited from parent text.
+                              #
+                              # Changing the link in an update request causes some other changes to the
+                              # text style of the range:
+                              #
+                              # * When setting a link, the text foreground color will be set to
+                              #   ThemeColorType.HYPERLINK and the text will
+                              #   be underlined. If these fields are modified in the same
+                              #   request, those values will be used instead of the link defaults.
+                              # * Setting a link on a text range that overlaps with an existing link will
+                              #   also update the existing link to point to the new URL.
+                              # * Links are not settable on newline characters. As a result, setting a link
+                              #   on a text range that crosses a paragraph boundary, such as `"ABC\n123"`,
+                              #   will separate the newline character(s) into their own text runs. The
+                              #   link will be applied separately to the runs before and after the newline.
+                              # * Removing a link will update the text style of the range to match the
+                              #   style of the preceding text (or the default text styles if the preceding
+                              #   text is another link) unless different styles are being set in the same
+                              #   request.
+                            "url": "A String", # If set, indicates this is a link to the external web page at this URL.
+                            "pageObjectId": "A String", # If set, indicates this is a link to the specific page in this
+                                # presentation with this ID. A page with this ID may not exist.
+                            "slideIndex": 42, # If set, indicates this is a link to the slide at this zero-based index
+                                # in the presentation. There may not be a slide at this index.
+                            "relativeLink": "A String", # If set, indicates this is a link to a slide in this presentation,
+                                # addressed by its position.
+                          },
+                          "italic": True or False, # Whether or not the text is italicized.
+                          "fontSize": { # A magnitude in a single direction in the specified units. # The size of the text's font. When read, the `font_size` will specified in
+                              # points.
+                            "magnitude": 3.14, # The magnitude.
+                            "unit": "A String", # The units for magnitude.
+                          },
+                          "underline": True or False, # Whether or not the text is underlined.
+                          "backgroundColor": { # A color that can either be fully opaque or fully transparent. # The background color of the text. If set, the color is either opaque or
+                              # transparent, depending on if the `opaque_color` field in it is set.
+                            "opaqueColor": { # A themeable solid color value. # If set, this will be used as an opaque color. If unset, this represents
+                                # a transparent color.
+                              "themeColor": "A String", # An opaque theme color.
+                              "rgbColor": { # An RGB color. # An opaque RGB color.
+                                "blue": 3.14, # The blue component of the color, from 0.0 to 1.0.
+                                "green": 3.14, # The green component of the color, from 0.0 to 1.0.
+                                "red": 3.14, # The red component of the color, from 0.0 to 1.0.
+                              },
+                            },
+                          },
+                        },
+                      },
+                    },
+                  ],
+                  "lists": { # The bulleted lists contained in this text, keyed by list ID.
+                    "a_key": { # A List describes the look and feel of bullets belonging to paragraphs
+                        # associated with a list. A paragraph that is part of a list has an implicit
+                        # reference to that list's ID.
+                      "nestingLevel": { # A map of nesting levels to the properties of bullets at the associated
+                          # level. A list has at most nine levels of nesting, so the possible values
+                          # for the keys of this map are 0 through 8, inclusive.
+                        "a_key": { # Contains properties describing the look and feel of a list bullet at a given
+                            # level of nesting.
+                          "bulletStyle": { # Represents the styling that can be applied to a TextRun. # The style of a bullet at this level of nesting.
+                              #
+                              # If this text is contained in a shape with a parent placeholder, then these text styles may be
+                              # inherited from the parent. Which text styles are inherited depend on the
+                              # nesting level of lists:
+                              #
+                              # * A text run in a paragraph that is not in a list will inherit its text style
+                              #   from the the newline character in the paragraph at the 0 nesting level of
+                              #   the list inside the parent placeholder.
+                              # * A text run in a paragraph that is in a list will inherit its text style
+                              #   from the newline character in the paragraph at its corresponding nesting
+                              #   level of the list inside the parent placeholder.
+                              #
+                              # Inherited text styles are represented as unset fields in this message. If
+                              # text is contained in a shape without a parent placeholder, unsetting these
+                              # fields will revert the style to a value matching the defaults in the Slides
+                              # editor.
+                            "foregroundColor": { # A color that can either be fully opaque or fully transparent. # The color of the text itself. If set, the color is either opaque or
+                                # transparent, depending on if the `opaque_color` field in it is set.
+                              "opaqueColor": { # A themeable solid color value. # If set, this will be used as an opaque color. If unset, this represents
+                                  # a transparent color.
+                                "themeColor": "A String", # An opaque theme color.
+                                "rgbColor": { # An RGB color. # An opaque RGB color.
+                                  "blue": 3.14, # The blue component of the color, from 0.0 to 1.0.
+                                  "green": 3.14, # The green component of the color, from 0.0 to 1.0.
+                                  "red": 3.14, # The red component of the color, from 0.0 to 1.0.
+                                },
+                              },
+                            },
+                            "bold": True or False, # Whether or not the text is bold.
+                            "baselineOffset": "A String", # The text's vertical offset from its normal position.
+                                #
+                                # Text with `SUPERSCRIPT` or `SUBSCRIPT` baseline offsets is automatically
+                                # rendered in a smaller font size, computed based on the `font_size` field.
+                                # The `font_size` itself is not affected by changes in this field.
+                            "strikethrough": True or False, # Whether or not the text is struck through.
+                            "smallCaps": True or False, # Whether or not the text is in small capital letters.
+                            "fontFamily": "A String", # The font family of the text.
+                                #
+                                # The font family can be any font from the Font menu in Slides or from
+                                # [Google Fonts] (https://fonts.google.com/). If the font name is
+                                # unrecognized, the text is rendered in `Arial`.
+                                #
+                                # Some fonts can affect the weight of the text. If an update request
+                                # specifies values for both `font_family` and `bold`, the explicitly-set
+                                # `bold` value is used.
+                            "link": { # A hypertext link. # The hyperlink destination of the text. If unset, there is no link. Links
+                                # are not inherited from parent text.
+                                #
+                                # Changing the link in an update request causes some other changes to the
+                                # text style of the range:
+                                #
+                                # * When setting a link, the text foreground color will be set to
+                                #   ThemeColorType.HYPERLINK and the text will
+                                #   be underlined. If these fields are modified in the same
+                                #   request, those values will be used instead of the link defaults.
+                                # * Setting a link on a text range that overlaps with an existing link will
+                                #   also update the existing link to point to the new URL.
+                                # * Links are not settable on newline characters. As a result, setting a link
+                                #   on a text range that crosses a paragraph boundary, such as `"ABC\n123"`,
+                                #   will separate the newline character(s) into their own text runs. The
+                                #   link will be applied separately to the runs before and after the newline.
+                                # * Removing a link will update the text style of the range to match the
+                                #   style of the preceding text (or the default text styles if the preceding
+                                #   text is another link) unless different styles are being set in the same
+                                #   request.
+                              "url": "A String", # If set, indicates this is a link to the external web page at this URL.
+                              "pageObjectId": "A String", # If set, indicates this is a link to the specific page in this
+                                  # presentation with this ID. A page with this ID may not exist.
+                              "slideIndex": 42, # If set, indicates this is a link to the slide at this zero-based index
+                                  # in the presentation. There may not be a slide at this index.
+                              "relativeLink": "A String", # If set, indicates this is a link to a slide in this presentation,
+                                  # addressed by its position.
+                            },
+                            "italic": True or False, # Whether or not the text is italicized.
+                            "fontSize": { # A magnitude in a single direction in the specified units. # The size of the text's font. When read, the `font_size` will specified in
+                                # points.
+                              "magnitude": 3.14, # The magnitude.
+                              "unit": "A String", # The units for magnitude.
+                            },
+                            "underline": True or False, # Whether or not the text is underlined.
+                            "backgroundColor": { # A color that can either be fully opaque or fully transparent. # The background color of the text. If set, the color is either opaque or
+                                # transparent, depending on if the `opaque_color` field in it is set.
+                              "opaqueColor": { # A themeable solid color value. # If set, this will be used as an opaque color. If unset, this represents
+                                  # a transparent color.
+                                "themeColor": "A String", # An opaque theme color.
+                                "rgbColor": { # An RGB color. # An opaque RGB color.
+                                  "blue": 3.14, # The blue component of the color, from 0.0 to 1.0.
+                                  "green": 3.14, # The green component of the color, from 0.0 to 1.0.
+                                  "red": 3.14, # The red component of the color, from 0.0 to 1.0.
+                                },
+                              },
+                            },
+                          },
+                        },
+                      },
+                      "listId": "A String", # The ID of the list.
+                    },
+                  },
+                },
+                "shapeProperties": { # The properties of a Shape. # The properties of the shape.
+                    #
+                    # If the shape is a placeholder shape as determined by the
+                    # placeholder field, then these
+                    # properties may be inherited from a parent placeholder shape.
+                    # Determining the rendered value of the property depends on the corresponding
+                    # property_state field value.
+                  "shadow": { # The shadow properties of a page element. # The shadow properties of the shape. If unset, the shadow is inherited from
+                      # a parent placeholder if it exists. If the shape has no parent, then the
+                      # default shadow matches the defaults for new shapes created in the Slides
+                      # editor. This property is read-only.
+                      #
+                      # If these fields are unset, they may be inherited from a parent placeholder
+                      # if it exists. If there is no parent, the fields will default to the value
+                      # used for new page elements created in the Slides editor, which may depend on
+                      # the page element kind.
+                    "color": { # A themeable solid color value. # The shadow color value.
+                      "themeColor": "A String", # An opaque theme color.
+                      "rgbColor": { # An RGB color. # An opaque RGB color.
+                        "blue": 3.14, # The blue component of the color, from 0.0 to 1.0.
+                        "green": 3.14, # The green component of the color, from 0.0 to 1.0.
+                        "red": 3.14, # The red component of the color, from 0.0 to 1.0.
+                      },
+                    },
+                    "transform": { # AffineTransform uses a 3x3 matrix with an implied last row of [ 0 0 1 ] # Transform that encodes the translate, scale, and skew of the shadow,
+                        # relative to the alignment position.
+                        # to transform source coordinates (x,y) into destination coordinates (x', y')
+                        # according to:
+                        #
+                        #       x'  x  =   shear_y  scale_y  translate_y
+                        #       1  [ 1 ]
+                        #
+                        # After transformation,
+                        #
+                        #      x' = scale_x * x + shear_x * y + translate_x;
+                        #      y' = scale_y * y + shear_y * x + translate_y;
+                        #
+                        # This message is therefore composed of these six matrix elements.
+                      "translateX": 3.14, # The X coordinate translation element.
+                      "translateY": 3.14, # The Y coordinate translation element.
+                      "scaleX": 3.14, # The X coordinate scaling element.
+                      "scaleY": 3.14, # The Y coordinate scaling element.
+                      "shearY": 3.14, # The Y coordinate shearing element.
+                      "shearX": 3.14, # The X coordinate shearing element.
+                      "unit": "A String", # The units for translate elements.
+                    },
+                    "propertyState": "A String", # The shadow property state.
+                        #
+                        # Updating the the shadow on a page element will implicitly update this field
+                        # to `RENDERED`, unless another value is specified in the same request. To
+                        # have no shadow on a page element, set this field to `NOT_RENDERED`. In this
+                        # case, any other shadow fields set in the same request will be ignored.
+                    "blurRadius": { # A magnitude in a single direction in the specified units. # The radius of the shadow blur. The larger the radius, the more diffuse the
+                        # shadow becomes.
+                      "magnitude": 3.14, # The magnitude.
+                      "unit": "A String", # The units for magnitude.
+                    },
+                    "alpha": 3.14, # The alpha of the shadow's color, from 0.0 to 1.0.
+                    "type": "A String", # The type of the shadow.
+                    "alignment": "A String", # The alignment point of the shadow, that sets the origin for translate,
+                        # scale and skew of the shadow.
+                    "rotateWithShape": True or False, # Whether the shadow should rotate with the shape.
+                  },
+                  "shapeBackgroundFill": { # The shape background fill. # The background fill of the shape. If unset, the background fill is
+                      # inherited from a parent placeholder if it exists. If the shape has no
+                      # parent, then the default background fill depends on the shape type,
+                      # matching the defaults for new shapes created in the Slides editor.
+                    "solidFill": { # A solid color fill. The page or page element is filled entirely with the # Solid color fill.
+                        # specified color value.
+                        #
+                        # If any field is unset, its value may be inherited from a parent placeholder
+                        # if it exists.
+                      "color": { # A themeable solid color value. # The color value of the solid fill.
+                        "themeColor": "A String", # An opaque theme color.
+                        "rgbColor": { # An RGB color. # An opaque RGB color.
+                          "blue": 3.14, # The blue component of the color, from 0.0 to 1.0.
+                          "green": 3.14, # The green component of the color, from 0.0 to 1.0.
+                          "red": 3.14, # The red component of the color, from 0.0 to 1.0.
+                        },
+                      },
+                      "alpha": 3.14, # The fraction of this `color` that should be applied to the pixel.
+                          # That is, the final pixel color is defined by the equation:
+                          #
+                          #   pixel color = alpha * (color) + (1.0 - alpha) * (background color)
+                          #
+                          # This means that a value of 1.0 corresponds to a solid color, whereas
+                          # a value of 0.0 corresponds to a completely transparent color.
+                    },
+                    "propertyState": "A String", # The background fill property state.
+                        #
+                        # Updating the the fill on a shape will implicitly update this field to
+                        # `RENDERED`, unless another value is specified in the same request. To
+                        # have no fill on a shape, set this field to `NOT_RENDERED`. In this case,
+                        # any other fill fields set in the same request will be ignored.
+                  },
+                  "link": { # A hypertext link. # The hyperlink destination of the shape. If unset, there is no link. Links
+                      # are not inherited from parent placeholders.
+                    "url": "A String", # If set, indicates this is a link to the external web page at this URL.
+                    "pageObjectId": "A String", # If set, indicates this is a link to the specific page in this
+                        # presentation with this ID. A page with this ID may not exist.
+                    "slideIndex": 42, # If set, indicates this is a link to the slide at this zero-based index
+                        # in the presentation. There may not be a slide at this index.
+                    "relativeLink": "A String", # If set, indicates this is a link to a slide in this presentation,
+                        # addressed by its position.
+                  },
+                  "outline": { # The outline of a PageElement. # The outline of the shape. If unset, the outline is inherited from a
+                      # parent placeholder if it exists. If the shape has no parent, then the
+                      # default outline depends on the shape type, matching the defaults for
+                      # new shapes created in the Slides editor.
+                      #
+                      # If these fields are unset, they may be inherited from a parent placeholder
+                      # if it exists. If there is no parent, the fields will default to the value
+                      # used for new page elements created in the Slides editor, which may depend on
+                      # the page element kind.
+                    "dashStyle": "A String", # The dash style of the outline.
+                    "propertyState": "A String", # The outline property state.
+                        #
+                        # Updating the the outline on a page element will implicitly update this
+                        # field to`RENDERED`, unless another value is specified in the same request.
+                        # To have no outline on a page element, set this field to `NOT_RENDERED`. In
+                        # this case, any other outline fields set in the same request will be
+                        # ignored.
+                    "outlineFill": { # The fill of the outline. # The fill of the outline.
+                      "solidFill": { # A solid color fill. The page or page element is filled entirely with the # Solid color fill.
+                          # specified color value.
+                          #
+                          # If any field is unset, its value may be inherited from a parent placeholder
+                          # if it exists.
+                        "color": { # A themeable solid color value. # The color value of the solid fill.
+                          "themeColor": "A String", # An opaque theme color.
+                          "rgbColor": { # An RGB color. # An opaque RGB color.
+                            "blue": 3.14, # The blue component of the color, from 0.0 to 1.0.
+                            "green": 3.14, # The green component of the color, from 0.0 to 1.0.
+                            "red": 3.14, # The red component of the color, from 0.0 to 1.0.
+                          },
+                        },
+                        "alpha": 3.14, # The fraction of this `color` that should be applied to the pixel.
+                            # That is, the final pixel color is defined by the equation:
+                            #
+                            #   pixel color = alpha * (color) + (1.0 - alpha) * (background color)
+                            #
+                            # This means that a value of 1.0 corresponds to a solid color, whereas
+                            # a value of 0.0 corresponds to a completely transparent color.
+                      },
+                    },
+                    "weight": { # A magnitude in a single direction in the specified units. # The thickness of the outline.
+                      "magnitude": 3.14, # The magnitude.
+                      "unit": "A String", # The units for magnitude.
+                    },
+                  },
+                },
+                "placeholder": { # The placeholder information that uniquely identifies a placeholder shape. # Placeholders are shapes that are inherit from corresponding placeholders on
+                    # layouts and masters.
+                    #
+                    # If set, the shape is a placeholder shape and any inherited properties
+                    # can be resolved by looking at the parent placeholder identified by the
+                    # Placeholder.parent_object_id field.
+                  "parentObjectId": "A String", # The object ID of this shape's parent placeholder.
+                      # If unset, the parent placeholder shape does not exist, so the shape does
+                      # not inherit properties from any other shape.
+                  "index": 42, # The index of the placeholder. If the same placeholder types are the present
+                      # in the same page, they would have different index values.
+                  "type": "A String", # The type of the placeholder.
+                },
+                "shapeType": "A String", # The type of the shape.
+              },
+              "sheetsChart": { # A PageElement kind representing # A linked chart embedded from Google Sheets. Unlinked charts are
+                  # represented as images.
+                  # a linked chart embedded from Google Sheets.
+                "chartId": 42, # The ID of the specific chart in the Google Sheets spreadsheet that is
+                    # embedded.
+                "spreadsheetId": "A String", # The ID of the Google Sheets spreadsheet that contains the source chart.
+                "sheetsChartProperties": { # The properties of the SheetsChart. # The properties of the Sheets chart.
+                  "chartImageProperties": { # The properties of the Image. # The properties of the embedded chart image.
+                    "outline": { # The outline of a PageElement. # The outline of the image. If not set, the the image has no outline.
+                        #
+                        # If these fields are unset, they may be inherited from a parent placeholder
+                        # if it exists. If there is no parent, the fields will default to the value
+                        # used for new page elements created in the Slides editor, which may depend on
+                        # the page element kind.
+                      "dashStyle": "A String", # The dash style of the outline.
+                      "propertyState": "A String", # The outline property state.
+                          #
+                          # Updating the the outline on a page element will implicitly update this
+                          # field to`RENDERED`, unless another value is specified in the same request.
+                          # To have no outline on a page element, set this field to `NOT_RENDERED`. In
+                          # this case, any other outline fields set in the same request will be
+                          # ignored.
+                      "outlineFill": { # The fill of the outline. # The fill of the outline.
+                        "solidFill": { # A solid color fill. The page or page element is filled entirely with the # Solid color fill.
+                            # specified color value.
+                            #
+                            # If any field is unset, its value may be inherited from a parent placeholder
+                            # if it exists.
+                          "color": { # A themeable solid color value. # The color value of the solid fill.
+                            "themeColor": "A String", # An opaque theme color.
+                            "rgbColor": { # An RGB color. # An opaque RGB color.
+                              "blue": 3.14, # The blue component of the color, from 0.0 to 1.0.
+                              "green": 3.14, # The green component of the color, from 0.0 to 1.0.
+                              "red": 3.14, # The red component of the color, from 0.0 to 1.0.
+                            },
+                          },
+                          "alpha": 3.14, # The fraction of this `color` that should be applied to the pixel.
+                              # That is, the final pixel color is defined by the equation:
+                              #
+                              #   pixel color = alpha * (color) + (1.0 - alpha) * (background color)
+                              #
+                              # This means that a value of 1.0 corresponds to a solid color, whereas
+                              # a value of 0.0 corresponds to a completely transparent color.
+                        },
+                      },
+                      "weight": { # A magnitude in a single direction in the specified units. # The thickness of the outline.
+                        "magnitude": 3.14, # The magnitude.
+                        "unit": "A String", # The units for magnitude.
+                      },
+                    },
+                    "brightness": 3.14, # The brightness effect of the image. The value should be in the interval
+                        # [-1.0, 1.0], where 0 means no effect. This property is read-only.
+                    "recolor": { # A recolor effect applied on an image. # The recolor effect of the image. If not set, the image is not recolored.
+                        # This property is read-only.
+                      "recolorStops": [ # The recolor effect is represented by a gradient, which is a list of color
+                          # stops. This property is read-only.
+                        { # A color and position in a gradient band.
+                          "color": { # A themeable solid color value. # The color of the gradient stop.
+                            "themeColor": "A String", # An opaque theme color.
+                            "rgbColor": { # An RGB color. # An opaque RGB color.
+                              "blue": 3.14, # The blue component of the color, from 0.0 to 1.0.
+                              "green": 3.14, # The green component of the color, from 0.0 to 1.0.
+                              "red": 3.14, # The red component of the color, from 0.0 to 1.0.
+                            },
+                          },
+                          "position": 3.14, # The relative position of the color stop in the gradient band measured
+                              # in percentage. The value should be in the interval [0.0, 1.0].
+                          "alpha": 3.14, # The alpha value of this color in the gradient band. Defaults to 1.0,
+                              # fully opaque.
+                        },
+                      ],
+                    },
+                    "link": { # A hypertext link. # The hyperlink destination of the image. If unset, there is no link.
+                      "url": "A String", # If set, indicates this is a link to the external web page at this URL.
+                      "pageObjectId": "A String", # If set, indicates this is a link to the specific page in this
+                          # presentation with this ID. A page with this ID may not exist.
+                      "slideIndex": 42, # If set, indicates this is a link to the slide at this zero-based index
+                          # in the presentation. There may not be a slide at this index.
+                      "relativeLink": "A String", # If set, indicates this is a link to a slide in this presentation,
+                          # addressed by its position.
+                    },
+                    "transparency": 3.14, # The transparency effect of the image. The value should be in the interval
+                        # [0.0, 1.0], where 0 means no effect and 1 means completely transparent.
+                        # This property is read-only.
+                    "cropProperties": { # The crop properties of an object enclosed in a container. For example, an # The crop properties of the image. If not set, the image is not cropped.
+                        # This property is read-only.
+                        # Image.
+                        #
+                        # The crop properties is represented by the offsets of four edges which define
+                        # a crop rectangle. The offsets are measured in percentage from the
+                        # corresponding edges of the object's original bounding rectangle towards
+                        # inside, relative to the object's original dimensions.
+                        #
+                        # - If the offset is in the interval (0, 1), the corresponding edge of crop
+                        # rectangle is positioned inside of the object's original bounding rectangle.
+                        # - If the offset is negative or greater than 1, the corresponding edge of crop
+                        # rectangle is positioned outside of the object's original bounding rectangle.
+                        # - If the left edge of the crop rectangle is on the right side of its right
+                        # edge, the object will be flipped horizontally.
+                        # - If the top edge of the crop rectangle is below its bottom edge, the object
+                        # will be flipped vertically.
+                        # - If all offsets and rotation angle is 0, the object is not cropped.
+                        #
+                        # After cropping, the content in the crop rectangle will be stretched to fit
+                        # its container.
+                      "leftOffset": 3.14, # The offset specifies the left edge of the crop rectangle that is located to
+                          # the right of the original bounding rectangle left edge, relative to the
+                          # object's original width.
+                      "angle": 3.14, # The rotation angle of the crop window around its center, in radians.
+                          # Rotation angle is applied after the offset.
+                      "bottomOffset": 3.14, # The offset specifies the bottom edge of the crop rectangle that is located
+                          # above the original bounding rectangle bottom edge, relative to the object's
+                          # original height.
+                      "rightOffset": 3.14, # The offset specifies the right edge of the crop rectangle that is located
+                          # to the left of the original bounding rectangle right edge, relative to the
+                          # object's original width.
+                      "topOffset": 3.14, # The offset specifies the top edge of the crop rectangle that is located
+                          # below the original bounding rectangle top edge, relative to the object's
+                          # original height.
+                    },
+                    "shadow": { # The shadow properties of a page element. # The shadow of the image. If not set, the image has no shadow. This property
+                        # is read-only.
+                        #
+                        # If these fields are unset, they may be inherited from a parent placeholder
+                        # if it exists. If there is no parent, the fields will default to the value
+                        # used for new page elements created in the Slides editor, which may depend on
+                        # the page element kind.
+                      "color": { # A themeable solid color value. # The shadow color value.
+                        "themeColor": "A String", # An opaque theme color.
+                        "rgbColor": { # An RGB color. # An opaque RGB color.
+                          "blue": 3.14, # The blue component of the color, from 0.0 to 1.0.
+                          "green": 3.14, # The green component of the color, from 0.0 to 1.0.
+                          "red": 3.14, # The red component of the color, from 0.0 to 1.0.
+                        },
+                      },
+                      "transform": { # AffineTransform uses a 3x3 matrix with an implied last row of [ 0 0 1 ] # Transform that encodes the translate, scale, and skew of the shadow,
+                          # relative to the alignment position.
+                          # to transform source coordinates (x,y) into destination coordinates (x', y')
+                          # according to:
+                          #
+                          #       x'  x  =   shear_y  scale_y  translate_y
+                          #       1  [ 1 ]
+                          #
+                          # After transformation,
+                          #
+                          #      x' = scale_x * x + shear_x * y + translate_x;
+                          #      y' = scale_y * y + shear_y * x + translate_y;
+                          #
+                          # This message is therefore composed of these six matrix elements.
+                        "translateX": 3.14, # The X coordinate translation element.
+                        "translateY": 3.14, # The Y coordinate translation element.
+                        "scaleX": 3.14, # The X coordinate scaling element.
+                        "scaleY": 3.14, # The Y coordinate scaling element.
+                        "shearY": 3.14, # The Y coordinate shearing element.
+                        "shearX": 3.14, # The X coordinate shearing element.
+                        "unit": "A String", # The units for translate elements.
+                      },
+                      "propertyState": "A String", # The shadow property state.
+                          #
+                          # Updating the the shadow on a page element will implicitly update this field
+                          # to `RENDERED`, unless another value is specified in the same request. To
+                          # have no shadow on a page element, set this field to `NOT_RENDERED`. In this
+                          # case, any other shadow fields set in the same request will be ignored.
+                      "blurRadius": { # A magnitude in a single direction in the specified units. # The radius of the shadow blur. The larger the radius, the more diffuse the
+                          # shadow becomes.
+                        "magnitude": 3.14, # The magnitude.
+                        "unit": "A String", # The units for magnitude.
+                      },
+                      "alpha": 3.14, # The alpha of the shadow's color, from 0.0 to 1.0.
+                      "type": "A String", # The type of the shadow.
+                      "alignment": "A String", # The alignment point of the shadow, that sets the origin for translate,
+                          # scale and skew of the shadow.
+                      "rotateWithShape": True or False, # Whether the shadow should rotate with the shape.
+                    },
+                    "contrast": 3.14, # The contrast effect of the image. The value should be in the interval
+                        # [-1.0, 1.0], where 0 means no effect. This property is read-only.
+                  },
+                },
+                "contentUrl": "A String", # The URL of an image of the embedded chart, with a default lifetime of 30
+                    # minutes. This URL is tagged with the account of the requester. Anyone with
+                    # the URL effectively accesses the image as the original requester. Access to
+                    # the image may be lost if the presentation's sharing settings change.
+              },
+              "video": { # A PageElement kind representing a # A video page element.
+                  # video.
+                "url": "A String", # An URL to a video. The URL is valid as long as the source video
+                    # exists and sharing settings do not change.
+                "videoProperties": { # The properties of the Video. # The properties of the video.
+                  "outline": { # The outline of a PageElement. # The outline of the video. The default outline matches the defaults for new
+                      # videos created in the Slides editor.
+                      #
+                      # If these fields are unset, they may be inherited from a parent placeholder
+                      # if it exists. If there is no parent, the fields will default to the value
+                      # used for new page elements created in the Slides editor, which may depend on
+                      # the page element kind.
+                    "dashStyle": "A String", # The dash style of the outline.
+                    "propertyState": "A String", # The outline property state.
+                        #
+                        # Updating the the outline on a page element will implicitly update this
+                        # field to`RENDERED`, unless another value is specified in the same request.
+                        # To have no outline on a page element, set this field to `NOT_RENDERED`. In
+                        # this case, any other outline fields set in the same request will be
+                        # ignored.
+                    "outlineFill": { # The fill of the outline. # The fill of the outline.
+                      "solidFill": { # A solid color fill. The page or page element is filled entirely with the # Solid color fill.
+                          # specified color value.
+                          #
+                          # If any field is unset, its value may be inherited from a parent placeholder
+                          # if it exists.
+                        "color": { # A themeable solid color value. # The color value of the solid fill.
+                          "themeColor": "A String", # An opaque theme color.
+                          "rgbColor": { # An RGB color. # An opaque RGB color.
+                            "blue": 3.14, # The blue component of the color, from 0.0 to 1.0.
+                            "green": 3.14, # The green component of the color, from 0.0 to 1.0.
+                            "red": 3.14, # The red component of the color, from 0.0 to 1.0.
+                          },
+                        },
+                        "alpha": 3.14, # The fraction of this `color` that should be applied to the pixel.
+                            # That is, the final pixel color is defined by the equation:
+                            #
+                            #   pixel color = alpha * (color) + (1.0 - alpha) * (background color)
+                            #
+                            # This means that a value of 1.0 corresponds to a solid color, whereas
+                            # a value of 0.0 corresponds to a completely transparent color.
+                      },
+                    },
+                    "weight": { # A magnitude in a single direction in the specified units. # The thickness of the outline.
+                      "magnitude": 3.14, # The magnitude.
+                      "unit": "A String", # The units for magnitude.
+                    },
+                  },
+                },
+                "id": "A String", # The video source's unique identifier for this video.
+                "source": "A String", # The video source.
+              },
+              "table": { # A PageElement kind representing a # A table page element.
+                  # table.
+                "tableColumns": [ # Properties of each column.
+                  { # Properties of each column in a table.
+                    "columnWidth": { # A magnitude in a single direction in the specified units. # Width of a column.
+                      "magnitude": 3.14, # The magnitude.
+                      "unit": "A String", # The units for magnitude.
+                    },
+                  },
+                ],
+                "tableRows": [ # Properties and contents of each row.
+                    #
+                    # Cells that span multiple rows are contained in only one of these rows and
+                    # have a row_span greater
+                    # than 1.
+                  { # Properties and contents of each row in a table.
+                    "tableCells": [ # Properties and contents of each cell.
+                        #
+                        # Cells that span multiple columns are represented only once with a
+                        # column_span greater
+                        # than 1. As a result, the length of this collection does not always match
+                        # the number of columns of the entire table.
+                      { # Properties and contents of each table cell.
+                        "text": { # The general text content. The text must reside in a compatible shape (e.g. # The text content of the cell.
+                            # text box or rectangle) or a table cell in a page.
+                          "textElements": [ # The text contents broken down into its component parts, including styling
+                              # information. This property is read-only.
+                            { # A TextElement describes the content of a range of indices in the text content
+                                # of a Shape or TableCell.
+                              "autoText": { # A TextElement kind that represents auto text. # A TextElement representing a spot in the text that is dynamically
+                                  # replaced with content that can change over time.
+                                "content": "A String", # The rendered content of this auto text, if available.
+                                "style": { # Represents the styling that can be applied to a TextRun. # The styling applied to this auto text.
+                                    #
+                                    # If this text is contained in a shape with a parent placeholder, then these text styles may be
+                                    # inherited from the parent. Which text styles are inherited depend on the
+                                    # nesting level of lists:
+                                    #
+                                    # * A text run in a paragraph that is not in a list will inherit its text style
+                                    #   from the the newline character in the paragraph at the 0 nesting level of
+                                    #   the list inside the parent placeholder.
+                                    # * A text run in a paragraph that is in a list will inherit its text style
+                                    #   from the newline character in the paragraph at its corresponding nesting
+                                    #   level of the list inside the parent placeholder.
+                                    #
+                                    # Inherited text styles are represented as unset fields in this message. If
+                                    # text is contained in a shape without a parent placeholder, unsetting these
+                                    # fields will revert the style to a value matching the defaults in the Slides
+                                    # editor.
+                                  "foregroundColor": { # A color that can either be fully opaque or fully transparent. # The color of the text itself. If set, the color is either opaque or
+                                      # transparent, depending on if the `opaque_color` field in it is set.
+                                    "opaqueColor": { # A themeable solid color value. # If set, this will be used as an opaque color. If unset, this represents
+                                        # a transparent color.
+                                      "themeColor": "A String", # An opaque theme color.
+                                      "rgbColor": { # An RGB color. # An opaque RGB color.
+                                        "blue": 3.14, # The blue component of the color, from 0.0 to 1.0.
+                                        "green": 3.14, # The green component of the color, from 0.0 to 1.0.
+                                        "red": 3.14, # The red component of the color, from 0.0 to 1.0.
+                                      },
+                                    },
+                                  },
+                                  "bold": True or False, # Whether or not the text is bold.
+                                  "baselineOffset": "A String", # The text's vertical offset from its normal position.
+                                      #
+                                      # Text with `SUPERSCRIPT` or `SUBSCRIPT` baseline offsets is automatically
+                                      # rendered in a smaller font size, computed based on the `font_size` field.
+                                      # The `font_size` itself is not affected by changes in this field.
+                                  "strikethrough": True or False, # Whether or not the text is struck through.
+                                  "smallCaps": True or False, # Whether or not the text is in small capital letters.
+                                  "fontFamily": "A String", # The font family of the text.
+                                      #
+                                      # The font family can be any font from the Font menu in Slides or from
+                                      # [Google Fonts] (https://fonts.google.com/). If the font name is
+                                      # unrecognized, the text is rendered in `Arial`.
+                                      #
+                                      # Some fonts can affect the weight of the text. If an update request
+                                      # specifies values for both `font_family` and `bold`, the explicitly-set
+                                      # `bold` value is used.
+                                  "link": { # A hypertext link. # The hyperlink destination of the text. If unset, there is no link. Links
+                                      # are not inherited from parent text.
+                                      #
+                                      # Changing the link in an update request causes some other changes to the
+                                      # text style of the range:
+                                      #
+                                      # * When setting a link, the text foreground color will be set to
+                                      #   ThemeColorType.HYPERLINK and the text will
+                                      #   be underlined. If these fields are modified in the same
+                                      #   request, those values will be used instead of the link defaults.
+                                      # * Setting a link on a text range that overlaps with an existing link will
+                                      #   also update the existing link to point to the new URL.
+                                      # * Links are not settable on newline characters. As a result, setting a link
+                                      #   on a text range that crosses a paragraph boundary, such as `"ABC\n123"`,
+                                      #   will separate the newline character(s) into their own text runs. The
+                                      #   link will be applied separately to the runs before and after the newline.
+                                      # * Removing a link will update the text style of the range to match the
+                                      #   style of the preceding text (or the default text styles if the preceding
+                                      #   text is another link) unless different styles are being set in the same
+                                      #   request.
+                                    "url": "A String", # If set, indicates this is a link to the external web page at this URL.
+                                    "pageObjectId": "A String", # If set, indicates this is a link to the specific page in this
+                                        # presentation with this ID. A page with this ID may not exist.
+                                    "slideIndex": 42, # If set, indicates this is a link to the slide at this zero-based index
+                                        # in the presentation. There may not be a slide at this index.
+                                    "relativeLink": "A String", # If set, indicates this is a link to a slide in this presentation,
+                                        # addressed by its position.
+                                  },
+                                  "italic": True or False, # Whether or not the text is italicized.
+                                  "fontSize": { # A magnitude in a single direction in the specified units. # The size of the text's font. When read, the `font_size` will specified in
+                                      # points.
+                                    "magnitude": 3.14, # The magnitude.
+                                    "unit": "A String", # The units for magnitude.
+                                  },
+                                  "underline": True or False, # Whether or not the text is underlined.
+                                  "backgroundColor": { # A color that can either be fully opaque or fully transparent. # The background color of the text. If set, the color is either opaque or
+                                      # transparent, depending on if the `opaque_color` field in it is set.
+                                    "opaqueColor": { # A themeable solid color value. # If set, this will be used as an opaque color. If unset, this represents
+                                        # a transparent color.
+                                      "themeColor": "A String", # An opaque theme color.
+                                      "rgbColor": { # An RGB color. # An opaque RGB color.
+                                        "blue": 3.14, # The blue component of the color, from 0.0 to 1.0.
+                                        "green": 3.14, # The green component of the color, from 0.0 to 1.0.
+                                        "red": 3.14, # The red component of the color, from 0.0 to 1.0.
+                                      },
+                                    },
+                                  },
+                                },
+                                "type": "A String", # The type of this auto text.
+                              },
+                              "endIndex": 42, # The zero-based end index of this text element, exclusive, in Unicode code
+                                  # units.
+                              "startIndex": 42, # The zero-based start index of this text element, in Unicode code units.
+                              "paragraphMarker": { # A TextElement kind that represents the beginning of a new paragraph. # A marker representing the beginning of a new paragraph.
+                                  #
+                                  # The `start_index` and `end_index` of this TextElement represent the
+                                  # range of the paragraph. Other TextElements with an index range contained
+                                  # inside this paragraph's range are considered to be part of this
+                                  # paragraph. The range of indices of two separate paragraphs will never
+                                  # overlap.
+                                "style": { # Styles that apply to a whole paragraph. # The paragraph's style
+                                    #
+                                    # If this text is contained in a shape with a parent placeholder, then these paragraph styles may be
+                                    # inherited from the parent. Which paragraph styles are inherited depend on the
+                                    # nesting level of lists:
+                                    #
+                                    # * A paragraph not in a list will inherit its paragraph style from the
+                                    #   paragraph at the 0 nesting level of the list inside the parent placeholder.
+                                    # * A paragraph in a list will inherit its paragraph style from the paragraph
+                                    #   at its corresponding nesting level of the list inside the parent
+                                    #   placeholder.
+                                    #
+                                    # Inherited paragraph styles are represented as unset fields in this message.
+                                  "spacingMode": "A String", # The spacing mode for the paragraph. This property is read-only.
+                                  "direction": "A String", # The text direction of this paragraph. This property is read-only.
+                                  "spaceBelow": { # A magnitude in a single direction in the specified units. # The amount of extra space above the paragraph. If unset, the value is
+                                      # inherited from the parent. This property is read-only.
+                                    "magnitude": 3.14, # The magnitude.
+                                    "unit": "A String", # The units for magnitude.
+                                  },
+                                  "lineSpacing": 3.14, # The amount of space between lines, as a percentage of normal, where normal
+                                      # is represented as 100.0. If unset, the value is inherited from the parent.
+                                      # This property is read-only.
+                                  "indentStart": { # A magnitude in a single direction in the specified units. # The amount indentation for the paragraph on the side that corresponds to
+                                      # the start of the text, based on the current text direction. If unset, the
+                                      # value is inherited from the parent. This property is read-only.
+                                    "magnitude": 3.14, # The magnitude.
+                                    "unit": "A String", # The units for magnitude.
+                                  },
+                                  "spaceAbove": { # A magnitude in a single direction in the specified units. # The amount of extra space above the paragraph. If unset, the value is
+                                      # inherited from the parent. This property is read-only.
+                                    "magnitude": 3.14, # The magnitude.
+                                    "unit": "A String", # The units for magnitude.
+                                  },
+                                  "indentEnd": { # A magnitude in a single direction in the specified units. # The amount indentation for the paragraph on the side that corresponds to
+                                      # the end of the text, based on the current text direction. If unset, the
+                                      # value is inherited from the parent. This property is read-only.
+                                    "magnitude": 3.14, # The magnitude.
+                                    "unit": "A String", # The units for magnitude.
+                                  },
+                                  "indentFirstLine": { # A magnitude in a single direction in the specified units. # The amount of indentation for the start of the first line of the paragraph.
+                                      # If unset, the value is inherited from the parent. This property is
+                                      # read-only.
+                                    "magnitude": 3.14, # The magnitude.
+                                    "unit": "A String", # The units for magnitude.
+                                  },
+                                  "alignment": "A String", # The text alignment for this paragraph. This property is read-only.
+                                },
+                                "bullet": { # Describes the bullet of a paragraph. # The bullet for this paragraph. If not present, the paragraph does not
+                                    # belong to a list.
+                                  "nestingLevel": 42, # The nesting level of this paragraph in the list.
+                                  "listId": "A String", # The ID of the list this paragraph belongs to.
+                                  "bulletStyle": { # Represents the styling that can be applied to a TextRun. # The paragraph specific text style applied to this bullet.
+                                      #
+                                      # If this text is contained in a shape with a parent placeholder, then these text styles may be
+                                      # inherited from the parent. Which text styles are inherited depend on the
+                                      # nesting level of lists:
+                                      #
+                                      # * A text run in a paragraph that is not in a list will inherit its text style
+                                      #   from the the newline character in the paragraph at the 0 nesting level of
+                                      #   the list inside the parent placeholder.
+                                      # * A text run in a paragraph that is in a list will inherit its text style
+                                      #   from the newline character in the paragraph at its corresponding nesting
+                                      #   level of the list inside the parent placeholder.
+                                      #
+                                      # Inherited text styles are represented as unset fields in this message. If
+                                      # text is contained in a shape without a parent placeholder, unsetting these
+                                      # fields will revert the style to a value matching the defaults in the Slides
+                                      # editor.
+                                    "foregroundColor": { # A color that can either be fully opaque or fully transparent. # The color of the text itself. If set, the color is either opaque or
+                                        # transparent, depending on if the `opaque_color` field in it is set.
+                                      "opaqueColor": { # A themeable solid color value. # If set, this will be used as an opaque color. If unset, this represents
+                                          # a transparent color.
+                                        "themeColor": "A String", # An opaque theme color.
+                                        "rgbColor": { # An RGB color. # An opaque RGB color.
+                                          "blue": 3.14, # The blue component of the color, from 0.0 to 1.0.
+                                          "green": 3.14, # The green component of the color, from 0.0 to 1.0.
+                                          "red": 3.14, # The red component of the color, from 0.0 to 1.0.
+                                        },
+                                      },
+                                    },
+                                    "bold": True or False, # Whether or not the text is bold.
+                                    "baselineOffset": "A String", # The text's vertical offset from its normal position.
+                                        #
+                                        # Text with `SUPERSCRIPT` or `SUBSCRIPT` baseline offsets is automatically
+                                        # rendered in a smaller font size, computed based on the `font_size` field.
+                                        # The `font_size` itself is not affected by changes in this field.
+                                    "strikethrough": True or False, # Whether or not the text is struck through.
+                                    "smallCaps": True or False, # Whether or not the text is in small capital letters.
+                                    "fontFamily": "A String", # The font family of the text.
+                                        #
+                                        # The font family can be any font from the Font menu in Slides or from
+                                        # [Google Fonts] (https://fonts.google.com/). If the font name is
+                                        # unrecognized, the text is rendered in `Arial`.
+                                        #
+                                        # Some fonts can affect the weight of the text. If an update request
+                                        # specifies values for both `font_family` and `bold`, the explicitly-set
+                                        # `bold` value is used.
+                                    "link": { # A hypertext link. # The hyperlink destination of the text. If unset, there is no link. Links
+                                        # are not inherited from parent text.
+                                        #
+                                        # Changing the link in an update request causes some other changes to the
+                                        # text style of the range:
+                                        #
+                                        # * When setting a link, the text foreground color will be set to
+                                        #   ThemeColorType.HYPERLINK and the text will
+                                        #   be underlined. If these fields are modified in the same
+                                        #   request, those values will be used instead of the link defaults.
+                                        # * Setting a link on a text range that overlaps with an existing link will
+                                        #   also update the existing link to point to the new URL.
+                                        # * Links are not settable on newline characters. As a result, setting a link
+                                        #   on a text range that crosses a paragraph boundary, such as `"ABC\n123"`,
+                                        #   will separate the newline character(s) into their own text runs. The
+                                        #   link will be applied separately to the runs before and after the newline.
+                                        # * Removing a link will update the text style of the range to match the
+                                        #   style of the preceding text (or the default text styles if the preceding
+                                        #   text is another link) unless different styles are being set in the same
+                                        #   request.
+                                      "url": "A String", # If set, indicates this is a link to the external web page at this URL.
+                                      "pageObjectId": "A String", # If set, indicates this is a link to the specific page in this
+                                          # presentation with this ID. A page with this ID may not exist.
+                                      "slideIndex": 42, # If set, indicates this is a link to the slide at this zero-based index
+                                          # in the presentation. There may not be a slide at this index.
+                                      "relativeLink": "A String", # If set, indicates this is a link to a slide in this presentation,
+                                          # addressed by its position.
+                                    },
+                                    "italic": True or False, # Whether or not the text is italicized.
+                                    "fontSize": { # A magnitude in a single direction in the specified units. # The size of the text's font. When read, the `font_size` will specified in
+                                        # points.
+                                      "magnitude": 3.14, # The magnitude.
+                                      "unit": "A String", # The units for magnitude.
+                                    },
+                                    "underline": True or False, # Whether or not the text is underlined.
+                                    "backgroundColor": { # A color that can either be fully opaque or fully transparent. # The background color of the text. If set, the color is either opaque or
+                                        # transparent, depending on if the `opaque_color` field in it is set.
+                                      "opaqueColor": { # A themeable solid color value. # If set, this will be used as an opaque color. If unset, this represents
+                                          # a transparent color.
+                                        "themeColor": "A String", # An opaque theme color.
+                                        "rgbColor": { # An RGB color. # An opaque RGB color.
+                                          "blue": 3.14, # The blue component of the color, from 0.0 to 1.0.
+                                          "green": 3.14, # The green component of the color, from 0.0 to 1.0.
+                                          "red": 3.14, # The red component of the color, from 0.0 to 1.0.
+                                        },
+                                      },
+                                    },
+                                  },
+                                  "glyph": "A String", # The rendered bullet glyph for this paragraph.
+                                },
+                              },
+                              "textRun": { # A TextElement kind that represents a run of text that all has the same # A TextElement representing a run of text where all of the characters
+                                  # in the run have the same TextStyle.
+                                  #
+                                  # The `start_index` and `end_index` of TextRuns will always be fully
+                                  # contained in the index range of a single `paragraph_marker` TextElement.
+                                  # In other words, a TextRun will never span multiple paragraphs.
+                                  # styling.
+                                "content": "A String", # The text of this run.
+                                "style": { # Represents the styling that can be applied to a TextRun. # The styling applied to this run.
+                                    #
+                                    # If this text is contained in a shape with a parent placeholder, then these text styles may be
+                                    # inherited from the parent. Which text styles are inherited depend on the
+                                    # nesting level of lists:
+                                    #
+                                    # * A text run in a paragraph that is not in a list will inherit its text style
+                                    #   from the the newline character in the paragraph at the 0 nesting level of
+                                    #   the list inside the parent placeholder.
+                                    # * A text run in a paragraph that is in a list will inherit its text style
+                                    #   from the newline character in the paragraph at its corresponding nesting
+                                    #   level of the list inside the parent placeholder.
+                                    #
+                                    # Inherited text styles are represented as unset fields in this message. If
+                                    # text is contained in a shape without a parent placeholder, unsetting these
+                                    # fields will revert the style to a value matching the defaults in the Slides
+                                    # editor.
+                                  "foregroundColor": { # A color that can either be fully opaque or fully transparent. # The color of the text itself. If set, the color is either opaque or
+                                      # transparent, depending on if the `opaque_color` field in it is set.
+                                    "opaqueColor": { # A themeable solid color value. # If set, this will be used as an opaque color. If unset, this represents
+                                        # a transparent color.
+                                      "themeColor": "A String", # An opaque theme color.
+                                      "rgbColor": { # An RGB color. # An opaque RGB color.
+                                        "blue": 3.14, # The blue component of the color, from 0.0 to 1.0.
+                                        "green": 3.14, # The green component of the color, from 0.0 to 1.0.
+                                        "red": 3.14, # The red component of the color, from 0.0 to 1.0.
+                                      },
+                                    },
+                                  },
+                                  "bold": True or False, # Whether or not the text is bold.
+                                  "baselineOffset": "A String", # The text's vertical offset from its normal position.
+                                      #
+                                      # Text with `SUPERSCRIPT` or `SUBSCRIPT` baseline offsets is automatically
+                                      # rendered in a smaller font size, computed based on the `font_size` field.
+                                      # The `font_size` itself is not affected by changes in this field.
+                                  "strikethrough": True or False, # Whether or not the text is struck through.
+                                  "smallCaps": True or False, # Whether or not the text is in small capital letters.
+                                  "fontFamily": "A String", # The font family of the text.
+                                      #
+                                      # The font family can be any font from the Font menu in Slides or from
+                                      # [Google Fonts] (https://fonts.google.com/). If the font name is
+                                      # unrecognized, the text is rendered in `Arial`.
+                                      #
+                                      # Some fonts can affect the weight of the text. If an update request
+                                      # specifies values for both `font_family` and `bold`, the explicitly-set
+                                      # `bold` value is used.
+                                  "link": { # A hypertext link. # The hyperlink destination of the text. If unset, there is no link. Links
+                                      # are not inherited from parent text.
+                                      #
+                                      # Changing the link in an update request causes some other changes to the
+                                      # text style of the range:
+                                      #
+                                      # * When setting a link, the text foreground color will be set to
+                                      #   ThemeColorType.HYPERLINK and the text will
+                                      #   be underlined. If these fields are modified in the same
+                                      #   request, those values will be used instead of the link defaults.
+                                      # * Setting a link on a text range that overlaps with an existing link will
+                                      #   also update the existing link to point to the new URL.
+                                      # * Links are not settable on newline characters. As a result, setting a link
+                                      #   on a text range that crosses a paragraph boundary, such as `"ABC\n123"`,
+                                      #   will separate the newline character(s) into their own text runs. The
+                                      #   link will be applied separately to the runs before and after the newline.
+                                      # * Removing a link will update the text style of the range to match the
+                                      #   style of the preceding text (or the default text styles if the preceding
+                                      #   text is another link) unless different styles are being set in the same
+                                      #   request.
+                                    "url": "A String", # If set, indicates this is a link to the external web page at this URL.
+                                    "pageObjectId": "A String", # If set, indicates this is a link to the specific page in this
+                                        # presentation with this ID. A page with this ID may not exist.
+                                    "slideIndex": 42, # If set, indicates this is a link to the slide at this zero-based index
+                                        # in the presentation. There may not be a slide at this index.
+                                    "relativeLink": "A String", # If set, indicates this is a link to a slide in this presentation,
+                                        # addressed by its position.
+                                  },
+                                  "italic": True or False, # Whether or not the text is italicized.
+                                  "fontSize": { # A magnitude in a single direction in the specified units. # The size of the text's font. When read, the `font_size` will specified in
+                                      # points.
+                                    "magnitude": 3.14, # The magnitude.
+                                    "unit": "A String", # The units for magnitude.
+                                  },
+                                  "underline": True or False, # Whether or not the text is underlined.
+                                  "backgroundColor": { # A color that can either be fully opaque or fully transparent. # The background color of the text. If set, the color is either opaque or
+                                      # transparent, depending on if the `opaque_color` field in it is set.
+                                    "opaqueColor": { # A themeable solid color value. # If set, this will be used as an opaque color. If unset, this represents
+                                        # a transparent color.
+                                      "themeColor": "A String", # An opaque theme color.
+                                      "rgbColor": { # An RGB color. # An opaque RGB color.
+                                        "blue": 3.14, # The blue component of the color, from 0.0 to 1.0.
+                                        "green": 3.14, # The green component of the color, from 0.0 to 1.0.
+                                        "red": 3.14, # The red component of the color, from 0.0 to 1.0.
+                                      },
+                                    },
+                                  },
+                                },
+                              },
+                            },
+                          ],
+                          "lists": { # The bulleted lists contained in this text, keyed by list ID.
+                            "a_key": { # A List describes the look and feel of bullets belonging to paragraphs
+                                # associated with a list. A paragraph that is part of a list has an implicit
+                                # reference to that list's ID.
+                              "nestingLevel": { # A map of nesting levels to the properties of bullets at the associated
+                                  # level. A list has at most nine levels of nesting, so the possible values
+                                  # for the keys of this map are 0 through 8, inclusive.
+                                "a_key": { # Contains properties describing the look and feel of a list bullet at a given
+                                    # level of nesting.
+                                  "bulletStyle": { # Represents the styling that can be applied to a TextRun. # The style of a bullet at this level of nesting.
+                                      #
+                                      # If this text is contained in a shape with a parent placeholder, then these text styles may be
+                                      # inherited from the parent. Which text styles are inherited depend on the
+                                      # nesting level of lists:
+                                      #
+                                      # * A text run in a paragraph that is not in a list will inherit its text style
+                                      #   from the the newline character in the paragraph at the 0 nesting level of
+                                      #   the list inside the parent placeholder.
+                                      # * A text run in a paragraph that is in a list will inherit its text style
+                                      #   from the newline character in the paragraph at its corresponding nesting
+                                      #   level of the list inside the parent placeholder.
+                                      #
+                                      # Inherited text styles are represented as unset fields in this message. If
+                                      # text is contained in a shape without a parent placeholder, unsetting these
+                                      # fields will revert the style to a value matching the defaults in the Slides
+                                      # editor.
+                                    "foregroundColor": { # A color that can either be fully opaque or fully transparent. # The color of the text itself. If set, the color is either opaque or
+                                        # transparent, depending on if the `opaque_color` field in it is set.
+                                      "opaqueColor": { # A themeable solid color value. # If set, this will be used as an opaque color. If unset, this represents
+                                          # a transparent color.
+                                        "themeColor": "A String", # An opaque theme color.
+                                        "rgbColor": { # An RGB color. # An opaque RGB color.
+                                          "blue": 3.14, # The blue component of the color, from 0.0 to 1.0.
+                                          "green": 3.14, # The green component of the color, from 0.0 to 1.0.
+                                          "red": 3.14, # The red component of the color, from 0.0 to 1.0.
+                                        },
+                                      },
+                                    },
+                                    "bold": True or False, # Whether or not the text is bold.
+                                    "baselineOffset": "A String", # The text's vertical offset from its normal position.
+                                        #
+                                        # Text with `SUPERSCRIPT` or `SUBSCRIPT` baseline offsets is automatically
+                                        # rendered in a smaller font size, computed based on the `font_size` field.
+                                        # The `font_size` itself is not affected by changes in this field.
+                                    "strikethrough": True or False, # Whether or not the text is struck through.
+                                    "smallCaps": True or False, # Whether or not the text is in small capital letters.
+                                    "fontFamily": "A String", # The font family of the text.
+                                        #
+                                        # The font family can be any font from the Font menu in Slides or from
+                                        # [Google Fonts] (https://fonts.google.com/). If the font name is
+                                        # unrecognized, the text is rendered in `Arial`.
+                                        #
+                                        # Some fonts can affect the weight of the text. If an update request
+                                        # specifies values for both `font_family` and `bold`, the explicitly-set
+                                        # `bold` value is used.
+                                    "link": { # A hypertext link. # The hyperlink destination of the text. If unset, there is no link. Links
+                                        # are not inherited from parent text.
+                                        #
+                                        # Changing the link in an update request causes some other changes to the
+                                        # text style of the range:
+                                        #
+                                        # * When setting a link, the text foreground color will be set to
+                                        #   ThemeColorType.HYPERLINK and the text will
+                                        #   be underlined. If these fields are modified in the same
+                                        #   request, those values will be used instead of the link defaults.
+                                        # * Setting a link on a text range that overlaps with an existing link will
+                                        #   also update the existing link to point to the new URL.
+                                        # * Links are not settable on newline characters. As a result, setting a link
+                                        #   on a text range that crosses a paragraph boundary, such as `"ABC\n123"`,
+                                        #   will separate the newline character(s) into their own text runs. The
+                                        #   link will be applied separately to the runs before and after the newline.
+                                        # * Removing a link will update the text style of the range to match the
+                                        #   style of the preceding text (or the default text styles if the preceding
+                                        #   text is another link) unless different styles are being set in the same
+                                        #   request.
+                                      "url": "A String", # If set, indicates this is a link to the external web page at this URL.
+                                      "pageObjectId": "A String", # If set, indicates this is a link to the specific page in this
+                                          # presentation with this ID. A page with this ID may not exist.
+                                      "slideIndex": 42, # If set, indicates this is a link to the slide at this zero-based index
+                                          # in the presentation. There may not be a slide at this index.
+                                      "relativeLink": "A String", # If set, indicates this is a link to a slide in this presentation,
+                                          # addressed by its position.
+                                    },
+                                    "italic": True or False, # Whether or not the text is italicized.
+                                    "fontSize": { # A magnitude in a single direction in the specified units. # The size of the text's font. When read, the `font_size` will specified in
+                                        # points.
+                                      "magnitude": 3.14, # The magnitude.
+                                      "unit": "A String", # The units for magnitude.
+                                    },
+                                    "underline": True or False, # Whether or not the text is underlined.
+                                    "backgroundColor": { # A color that can either be fully opaque or fully transparent. # The background color of the text. If set, the color is either opaque or
+                                        # transparent, depending on if the `opaque_color` field in it is set.
+                                      "opaqueColor": { # A themeable solid color value. # If set, this will be used as an opaque color. If unset, this represents
+                                          # a transparent color.
+                                        "themeColor": "A String", # An opaque theme color.
+                                        "rgbColor": { # An RGB color. # An opaque RGB color.
+                                          "blue": 3.14, # The blue component of the color, from 0.0 to 1.0.
+                                          "green": 3.14, # The green component of the color, from 0.0 to 1.0.
+                                          "red": 3.14, # The red component of the color, from 0.0 to 1.0.
+                                        },
+                                      },
+                                    },
+                                  },
+                                },
+                              },
+                              "listId": "A String", # The ID of the list.
+                            },
+                          },
+                        },
+                        "rowSpan": 42, # Row span of the cell.
+                        "tableCellProperties": { # The properties of the TableCell. # The properties of the table cell.
+                          "tableCellBackgroundFill": { # The table cell background fill. # The background fill of the table cell. The default fill matches the fill
+                              # for newly created table cells in the Slides editor.
+                            "solidFill": { # A solid color fill. The page or page element is filled entirely with the # Solid color fill.
+                                # specified color value.
+                                #
+                                # If any field is unset, its value may be inherited from a parent placeholder
+                                # if it exists.
+                              "color": { # A themeable solid color value. # The color value of the solid fill.
+                                "themeColor": "A String", # An opaque theme color.
+                                "rgbColor": { # An RGB color. # An opaque RGB color.
+                                  "blue": 3.14, # The blue component of the color, from 0.0 to 1.0.
+                                  "green": 3.14, # The green component of the color, from 0.0 to 1.0.
+                                  "red": 3.14, # The red component of the color, from 0.0 to 1.0.
+                                },
+                              },
+                              "alpha": 3.14, # The fraction of this `color` that should be applied to the pixel.
+                                  # That is, the final pixel color is defined by the equation:
+                                  #
+                                  #   pixel color = alpha * (color) + (1.0 - alpha) * (background color)
+                                  #
+                                  # This means that a value of 1.0 corresponds to a solid color, whereas
+                                  # a value of 0.0 corresponds to a completely transparent color.
+                            },
+                            "propertyState": "A String", # The background fill property state.
+                                #
+                                # Updating the the fill on a table cell will implicitly update this field
+                                # to `RENDERED`, unless another value is specified in the same request. To
+                                # have no fill on a table cell, set this field to `NOT_RENDERED`. In this
+                                # case, any other fill fields set in the same request will be ignored.
+                          },
+                        },
+                        "location": { # A location of a single table cell within a table. # The location of the cell within the table.
+                          "rowIndex": 42, # The 0-based row index.
+                          "columnIndex": 42, # The 0-based column index.
+                        },
+                        "columnSpan": 42, # Column span of the cell.
+                      },
+                    ],
+                    "rowHeight": { # A magnitude in a single direction in the specified units. # Height of a row.
+                      "magnitude": 3.14, # The magnitude.
+                      "unit": "A String", # The units for magnitude.
+                    },
+                  },
+                ],
+                "rows": 42, # Number of rows in the table.
+                "columns": 42, # Number of columns in the table.
+              },
+              "line": { # A PageElement kind representing a # A line page element.
+                  # line, curved connector, or bent connector.
+                "lineProperties": { # The properties of the Line. # The properties of the line.
+                    #
+                    # When unset, these fields default to values that match the appearance of
+                    # new lines created in the Slides editor.
+                  "dashStyle": "A String", # The dash style of the line.
+                  "weight": { # A magnitude in a single direction in the specified units. # The thickness of the line.
+                    "magnitude": 3.14, # The magnitude.
+                    "unit": "A String", # The units for magnitude.
+                  },
+                  "endArrow": "A String", # The style of the arrow at the end of the line.
+                  "link": { # A hypertext link. # The hyperlink destination of the line. If unset, there is no link.
+                    "url": "A String", # If set, indicates this is a link to the external web page at this URL.
+                    "pageObjectId": "A String", # If set, indicates this is a link to the specific page in this
+                        # presentation with this ID. A page with this ID may not exist.
+                    "slideIndex": 42, # If set, indicates this is a link to the slide at this zero-based index
+                        # in the presentation. There may not be a slide at this index.
+                    "relativeLink": "A String", # If set, indicates this is a link to a slide in this presentation,
+                        # addressed by its position.
+                  },
+                  "startArrow": "A String", # The style of the arrow at the beginning of the line.
+                  "lineFill": { # The fill of the line. # The fill of the line. The default line fill matches the defaults for new
+                      # lines created in the Slides editor.
+                    "solidFill": { # A solid color fill. The page or page element is filled entirely with the # Solid color fill.
+                        # specified color value.
+                        #
+                        # If any field is unset, its value may be inherited from a parent placeholder
+                        # if it exists.
+                      "color": { # A themeable solid color value. # The color value of the solid fill.
+                        "themeColor": "A String", # An opaque theme color.
+                        "rgbColor": { # An RGB color. # An opaque RGB color.
+                          "blue": 3.14, # The blue component of the color, from 0.0 to 1.0.
+                          "green": 3.14, # The green component of the color, from 0.0 to 1.0.
+                          "red": 3.14, # The red component of the color, from 0.0 to 1.0.
+                        },
+                      },
+                      "alpha": 3.14, # The fraction of this `color` that should be applied to the pixel.
+                          # That is, the final pixel color is defined by the equation:
+                          #
+                          #   pixel color = alpha * (color) + (1.0 - alpha) * (background color)
+                          #
+                          # This means that a value of 1.0 corresponds to a solid color, whereas
+                          # a value of 0.0 corresponds to a completely transparent color.
+                    },
+                  },
+                },
+                "lineType": "A String", # The type of the line.
+              },
+              "size": { # A width and height. # The size of the page element.
+                "width": { # A magnitude in a single direction in the specified units. # The width of the object.
+                  "magnitude": 3.14, # The magnitude.
+                  "unit": "A String", # The units for magnitude.
+                },
+                "height": { # A magnitude in a single direction in the specified units. # The height of the object.
+                  "magnitude": 3.14, # The magnitude.
+                  "unit": "A String", # The units for magnitude.
+                },
+              },
+              "elementGroup": { # A PageElement kind representing a # A collection of page elements joined as a single unit.
+                  # joined collection of PageElements.
+                "children": [ # The collection of elements in the group. The minimum size of a group is 2.
+                  # Object with schema name: PageElement
+                ],
+              },
+            },
+          ],
+          "objectId": "A String", # The object ID for this page. Object IDs used by
+              # Page and
+              # PageElement share the same namespace.
+          "pageProperties": { # The properties of the Page. # The properties of the page.
+              #
+              # The page will inherit properties from the parent page. Depending on the page
+              # type the hierarchy is defined in either
+              # SlideProperties or
+              # LayoutProperties.
+            "pageBackgroundFill": { # The page background fill. # The background fill of the page. If unset, the background fill is inherited
+                # from a parent page if it exists. If the page has no parent, then the
+                # background fill defaults to the corresponding fill in the Slides editor.
+              "solidFill": { # A solid color fill. The page or page element is filled entirely with the # Solid color fill.
+                  # specified color value.
+                  #
+                  # If any field is unset, its value may be inherited from a parent placeholder
+                  # if it exists.
+                "color": { # A themeable solid color value. # The color value of the solid fill.
+                  "themeColor": "A String", # An opaque theme color.
+                  "rgbColor": { # An RGB color. # An opaque RGB color.
+                    "blue": 3.14, # The blue component of the color, from 0.0 to 1.0.
+                    "green": 3.14, # The green component of the color, from 0.0 to 1.0.
+                    "red": 3.14, # The red component of the color, from 0.0 to 1.0.
+                  },
+                },
+                "alpha": 3.14, # The fraction of this `color` that should be applied to the pixel.
+                    # That is, the final pixel color is defined by the equation:
+                    #
+                    #   pixel color = alpha * (color) + (1.0 - alpha) * (background color)
+                    #
+                    # This means that a value of 1.0 corresponds to a solid color, whereas
+                    # a value of 0.0 corresponds to a completely transparent color.
+              },
+              "propertyState": "A String", # The background fill property state.
+                  #
+                  # Updating the the fill on a page will implicitly update this field to
+                  # `RENDERED`, unless another value is specified in the same request. To
+                  # have no fill on a page, set this field to `NOT_RENDERED`. In this case,
+                  # any other fill fields set in the same request will be ignored.
+              "stretchedPictureFill": { # The stretched picture fill. The page or page element is filled entirely with # Stretched picture fill.
+                  # the specified picture. The picture is stretched to fit its container.
+                "contentUrl": "A String", # Reading the content_url:
+                    #
+                    # An URL to a picture with a default lifetime of 30 minutes.
+                    # This URL is tagged with the account of the requester. Anyone with the URL
+                    # effectively accesses the picture as the original requester. Access to the
+                    # picture may be lost if the presentation's sharing settings change.
+                    #
+                    # Writing the content_url:
+                    #
+                    # The picture is fetched once at insertion time and a copy is stored for
+                    # display inside the presentation. Pictures must be less than 50MB in size,
+                    # cannot exceed 25 megapixels, and must be in either in PNG, JPEG, or GIF
+                    # format.
+                "size": { # A width and height. # The original size of the picture fill. This field is read-only.
+                  "width": { # A magnitude in a single direction in the specified units. # The width of the object.
+                    "magnitude": 3.14, # The magnitude.
+                    "unit": "A String", # The units for magnitude.
+                  },
+                  "height": { # A magnitude in a single direction in the specified units. # The height of the object.
+                    "magnitude": 3.14, # The magnitude.
+                    "unit": "A String", # The units for magnitude.
+                  },
+                },
+              },
+            },
+            "colorScheme": { # The palette of predefined colors for a page. # The color scheme of the page. If unset, the color scheme is inherited from
+                # a parent page. If the page has no parent, the color scheme uses a default
+                # Slides color scheme. This field is read-only.
+              "colors": [ # The ThemeColorType and corresponding concrete color pairs.
+                { # A pair mapping a theme color type to the concrete color it represents.
+                  "color": { # An RGB color. # The concrete color corresponding to the theme color type above.
+                    "blue": 3.14, # The blue component of the color, from 0.0 to 1.0.
+                    "green": 3.14, # The green component of the color, from 0.0 to 1.0.
+                    "red": 3.14, # The red component of the color, from 0.0 to 1.0.
+                  },
+                  "type": "A String", # The type of the theme color.
+                },
+              ],
+            },
+          },
+          "pageType": "A String", # The type of the page.
+          "slideProperties": { # The properties of Page that are only # Slide specific properties. Only set if page_type = SLIDE.
+              # relevant for pages with page_type SLIDE.
+            "masterObjectId": "A String", # The object ID of the master that this slide is based on.
+            "layoutObjectId": "A String", # The object ID of the layout that this slide is based on.
+          },
+        },
+      ],
+    }</pre>
+</div>
+
+</body></html>
\ No newline at end of file
diff --git a/docs/dyn/slides_v1.presentations.pages.html b/docs/dyn/slides_v1.presentations.pages.html
new file mode 100644
index 0000000..2d57246
--- /dev/null
+++ b/docs/dyn/slides_v1.presentations.pages.html
@@ -0,0 +1,1902 @@
+<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="slides_v1.html">Google Slides API</a> . <a href="slides_v1.presentations.html">presentations</a> . <a href="slides_v1.presentations.pages.html">pages</a></h1>
+<h2>Instance Methods</h2>
+<p class="toc_element">
+  <code><a href="#get">get(presentationId, pageObjectId, x__xgafv=None)</a></code></p>
+<p class="firstline">Gets the latest version of the specified page in the presentation.</p>
+<h3>Method Details</h3>
+<div class="method">
+    <code class="details" id="get">get(presentationId, pageObjectId, x__xgafv=None)</code>
+  <pre>Gets the latest version of the specified page in the presentation.
+
+Args:
+  presentationId: string, The ID of the presentation to retrieve. (required)
+  pageObjectId: string, The object ID of the page to retrieve. (required)
+  x__xgafv: string, V1 error format.
+    Allowed values
+      1 - v1 error format
+      2 - v2 error format
+
+Returns:
+  An object of the form:
+
+    { # A page in a presentation.
+    "layoutProperties": { # The properties of Page are only # Layout specific properties. Only set if page_type = LAYOUT.
+        # relevant for pages with page_type LAYOUT.
+      "displayName": "A String", # The human readable name of the layout in the presentation's locale.
+      "name": "A String", # The name of the layout.
+      "masterObjectId": "A String", # The object ID of the master that this layout is based on.
+    },
+    "pageElements": [ # The page elements rendered on the page.
+      { # A visual element rendered on a page.
+        "wordArt": { # A PageElement kind representing # A word art page element.
+            # word art.
+          "renderedText": "A String", # The text rendered as word art.
+        },
+        "description": "A String", # The description of the page element. Combined with title to display alt
+            # text.
+        "objectId": "A String", # The object ID for this page element. Object IDs used by
+            # google.apps.slides.v1.Page and
+            # google.apps.slides.v1.PageElement share the same namespace.
+        "title": "A String", # The title of the page element. Combined with description to display alt
+            # text.
+        "image": { # A PageElement kind representing an # An image page element.
+            # image.
+          "contentUrl": "A String", # An URL to an image with a default lifetime of 30 minutes.
+              # This URL is tagged with the account of the requester. Anyone with the URL
+              # effectively accesses the image as the original requester. Access to the
+              # image may be lost if the presentation's sharing settings change.
+          "imageProperties": { # The properties of the Image. # The properties of the image.
+            "outline": { # The outline of a PageElement. # The outline of the image. If not set, the the image has no outline.
+                #
+                # If these fields are unset, they may be inherited from a parent placeholder
+                # if it exists. If there is no parent, the fields will default to the value
+                # used for new page elements created in the Slides editor, which may depend on
+                # the page element kind.
+              "dashStyle": "A String", # The dash style of the outline.
+              "propertyState": "A String", # The outline property state.
+                  #
+                  # Updating the the outline on a page element will implicitly update this
+                  # field to`RENDERED`, unless another value is specified in the same request.
+                  # To have no outline on a page element, set this field to `NOT_RENDERED`. In
+                  # this case, any other outline fields set in the same request will be
+                  # ignored.
+              "outlineFill": { # The fill of the outline. # The fill of the outline.
+                "solidFill": { # A solid color fill. The page or page element is filled entirely with the # Solid color fill.
+                    # specified color value.
+                    #
+                    # If any field is unset, its value may be inherited from a parent placeholder
+                    # if it exists.
+                  "color": { # A themeable solid color value. # The color value of the solid fill.
+                    "themeColor": "A String", # An opaque theme color.
+                    "rgbColor": { # An RGB color. # An opaque RGB color.
+                      "blue": 3.14, # The blue component of the color, from 0.0 to 1.0.
+                      "green": 3.14, # The green component of the color, from 0.0 to 1.0.
+                      "red": 3.14, # The red component of the color, from 0.0 to 1.0.
+                    },
+                  },
+                  "alpha": 3.14, # The fraction of this `color` that should be applied to the pixel.
+                      # That is, the final pixel color is defined by the equation:
+                      #
+                      #   pixel color = alpha * (color) + (1.0 - alpha) * (background color)
+                      #
+                      # This means that a value of 1.0 corresponds to a solid color, whereas
+                      # a value of 0.0 corresponds to a completely transparent color.
+                },
+              },
+              "weight": { # A magnitude in a single direction in the specified units. # The thickness of the outline.
+                "magnitude": 3.14, # The magnitude.
+                "unit": "A String", # The units for magnitude.
+              },
+            },
+            "brightness": 3.14, # The brightness effect of the image. The value should be in the interval
+                # [-1.0, 1.0], where 0 means no effect. This property is read-only.
+            "recolor": { # A recolor effect applied on an image. # The recolor effect of the image. If not set, the image is not recolored.
+                # This property is read-only.
+              "recolorStops": [ # The recolor effect is represented by a gradient, which is a list of color
+                  # stops. This property is read-only.
+                { # A color and position in a gradient band.
+                  "color": { # A themeable solid color value. # The color of the gradient stop.
+                    "themeColor": "A String", # An opaque theme color.
+                    "rgbColor": { # An RGB color. # An opaque RGB color.
+                      "blue": 3.14, # The blue component of the color, from 0.0 to 1.0.
+                      "green": 3.14, # The green component of the color, from 0.0 to 1.0.
+                      "red": 3.14, # The red component of the color, from 0.0 to 1.0.
+                    },
+                  },
+                  "position": 3.14, # The relative position of the color stop in the gradient band measured
+                      # in percentage. The value should be in the interval [0.0, 1.0].
+                  "alpha": 3.14, # The alpha value of this color in the gradient band. Defaults to 1.0,
+                      # fully opaque.
+                },
+              ],
+            },
+            "link": { # A hypertext link. # The hyperlink destination of the image. If unset, there is no link.
+              "url": "A String", # If set, indicates this is a link to the external web page at this URL.
+              "pageObjectId": "A String", # If set, indicates this is a link to the specific page in this
+                  # presentation with this ID. A page with this ID may not exist.
+              "slideIndex": 42, # If set, indicates this is a link to the slide at this zero-based index
+                  # in the presentation. There may not be a slide at this index.
+              "relativeLink": "A String", # If set, indicates this is a link to a slide in this presentation,
+                  # addressed by its position.
+            },
+            "transparency": 3.14, # The transparency effect of the image. The value should be in the interval
+                # [0.0, 1.0], where 0 means no effect and 1 means completely transparent.
+                # This property is read-only.
+            "cropProperties": { # The crop properties of an object enclosed in a container. For example, an # The crop properties of the image. If not set, the image is not cropped.
+                # This property is read-only.
+                # Image.
+                #
+                # The crop properties is represented by the offsets of four edges which define
+                # a crop rectangle. The offsets are measured in percentage from the
+                # corresponding edges of the object's original bounding rectangle towards
+                # inside, relative to the object's original dimensions.
+                #
+                # - If the offset is in the interval (0, 1), the corresponding edge of crop
+                # rectangle is positioned inside of the object's original bounding rectangle.
+                # - If the offset is negative or greater than 1, the corresponding edge of crop
+                # rectangle is positioned outside of the object's original bounding rectangle.
+                # - If the left edge of the crop rectangle is on the right side of its right
+                # edge, the object will be flipped horizontally.
+                # - If the top edge of the crop rectangle is below its bottom edge, the object
+                # will be flipped vertically.
+                # - If all offsets and rotation angle is 0, the object is not cropped.
+                #
+                # After cropping, the content in the crop rectangle will be stretched to fit
+                # its container.
+              "leftOffset": 3.14, # The offset specifies the left edge of the crop rectangle that is located to
+                  # the right of the original bounding rectangle left edge, relative to the
+                  # object's original width.
+              "angle": 3.14, # The rotation angle of the crop window around its center, in radians.
+                  # Rotation angle is applied after the offset.
+              "bottomOffset": 3.14, # The offset specifies the bottom edge of the crop rectangle that is located
+                  # above the original bounding rectangle bottom edge, relative to the object's
+                  # original height.
+              "rightOffset": 3.14, # The offset specifies the right edge of the crop rectangle that is located
+                  # to the left of the original bounding rectangle right edge, relative to the
+                  # object's original width.
+              "topOffset": 3.14, # The offset specifies the top edge of the crop rectangle that is located
+                  # below the original bounding rectangle top edge, relative to the object's
+                  # original height.
+            },
+            "shadow": { # The shadow properties of a page element. # The shadow of the image. If not set, the image has no shadow. This property
+                # is read-only.
+                #
+                # If these fields are unset, they may be inherited from a parent placeholder
+                # if it exists. If there is no parent, the fields will default to the value
+                # used for new page elements created in the Slides editor, which may depend on
+                # the page element kind.
+              "color": { # A themeable solid color value. # The shadow color value.
+                "themeColor": "A String", # An opaque theme color.
+                "rgbColor": { # An RGB color. # An opaque RGB color.
+                  "blue": 3.14, # The blue component of the color, from 0.0 to 1.0.
+                  "green": 3.14, # The green component of the color, from 0.0 to 1.0.
+                  "red": 3.14, # The red component of the color, from 0.0 to 1.0.
+                },
+              },
+              "transform": { # AffineTransform uses a 3x3 matrix with an implied last row of [ 0 0 1 ] # Transform that encodes the translate, scale, and skew of the shadow,
+                  # relative to the alignment position.
+                  # to transform source coordinates (x,y) into destination coordinates (x', y')
+                  # according to:
+                  #
+                  #       x'  x  =   shear_y  scale_y  translate_y
+                  #       1  [ 1 ]
+                  #
+                  # After transformation,
+                  #
+                  #      x' = scale_x * x + shear_x * y + translate_x;
+                  #      y' = scale_y * y + shear_y * x + translate_y;
+                  #
+                  # This message is therefore composed of these six matrix elements.
+                "translateX": 3.14, # The X coordinate translation element.
+                "translateY": 3.14, # The Y coordinate translation element.
+                "scaleX": 3.14, # The X coordinate scaling element.
+                "scaleY": 3.14, # The Y coordinate scaling element.
+                "shearY": 3.14, # The Y coordinate shearing element.
+                "shearX": 3.14, # The X coordinate shearing element.
+                "unit": "A String", # The units for translate elements.
+              },
+              "propertyState": "A String", # The shadow property state.
+                  #
+                  # Updating the the shadow on a page element will implicitly update this field
+                  # to `RENDERED`, unless another value is specified in the same request. To
+                  # have no shadow on a page element, set this field to `NOT_RENDERED`. In this
+                  # case, any other shadow fields set in the same request will be ignored.
+              "blurRadius": { # A magnitude in a single direction in the specified units. # The radius of the shadow blur. The larger the radius, the more diffuse the
+                  # shadow becomes.
+                "magnitude": 3.14, # The magnitude.
+                "unit": "A String", # The units for magnitude.
+              },
+              "alpha": 3.14, # The alpha of the shadow's color, from 0.0 to 1.0.
+              "type": "A String", # The type of the shadow.
+              "alignment": "A String", # The alignment point of the shadow, that sets the origin for translate,
+                  # scale and skew of the shadow.
+              "rotateWithShape": True or False, # Whether the shadow should rotate with the shape.
+            },
+            "contrast": 3.14, # The contrast effect of the image. The value should be in the interval
+                # [-1.0, 1.0], where 0 means no effect. This property is read-only.
+          },
+        },
+        "transform": { # AffineTransform uses a 3x3 matrix with an implied last row of [ 0 0 1 ] # The transform of the page element.
+            # to transform source coordinates (x,y) into destination coordinates (x', y')
+            # according to:
+            #
+            #       x'  x  =   shear_y  scale_y  translate_y
+            #       1  [ 1 ]
+            #
+            # After transformation,
+            #
+            #      x' = scale_x * x + shear_x * y + translate_x;
+            #      y' = scale_y * y + shear_y * x + translate_y;
+            #
+            # This message is therefore composed of these six matrix elements.
+          "translateX": 3.14, # The X coordinate translation element.
+          "translateY": 3.14, # The Y coordinate translation element.
+          "scaleX": 3.14, # The X coordinate scaling element.
+          "scaleY": 3.14, # The Y coordinate scaling element.
+          "shearY": 3.14, # The Y coordinate shearing element.
+          "shearX": 3.14, # The X coordinate shearing element.
+          "unit": "A String", # The units for translate elements.
+        },
+        "shape": { # A PageElement kind representing a # A generic shape.
+            # generic shape that does not have a more specific classification.
+          "text": { # The general text content. The text must reside in a compatible shape (e.g. # The text content of the shape.
+              # text box or rectangle) or a table cell in a page.
+            "textElements": [ # The text contents broken down into its component parts, including styling
+                # information. This property is read-only.
+              { # A TextElement describes the content of a range of indices in the text content
+                  # of a Shape or TableCell.
+                "autoText": { # A TextElement kind that represents auto text. # A TextElement representing a spot in the text that is dynamically
+                    # replaced with content that can change over time.
+                  "content": "A String", # The rendered content of this auto text, if available.
+                  "style": { # Represents the styling that can be applied to a TextRun. # The styling applied to this auto text.
+                      #
+                      # If this text is contained in a shape with a parent placeholder, then these text styles may be
+                      # inherited from the parent. Which text styles are inherited depend on the
+                      # nesting level of lists:
+                      #
+                      # * A text run in a paragraph that is not in a list will inherit its text style
+                      #   from the the newline character in the paragraph at the 0 nesting level of
+                      #   the list inside the parent placeholder.
+                      # * A text run in a paragraph that is in a list will inherit its text style
+                      #   from the newline character in the paragraph at its corresponding nesting
+                      #   level of the list inside the parent placeholder.
+                      #
+                      # Inherited text styles are represented as unset fields in this message. If
+                      # text is contained in a shape without a parent placeholder, unsetting these
+                      # fields will revert the style to a value matching the defaults in the Slides
+                      # editor.
+                    "foregroundColor": { # A color that can either be fully opaque or fully transparent. # The color of the text itself. If set, the color is either opaque or
+                        # transparent, depending on if the `opaque_color` field in it is set.
+                      "opaqueColor": { # A themeable solid color value. # If set, this will be used as an opaque color. If unset, this represents
+                          # a transparent color.
+                        "themeColor": "A String", # An opaque theme color.
+                        "rgbColor": { # An RGB color. # An opaque RGB color.
+                          "blue": 3.14, # The blue component of the color, from 0.0 to 1.0.
+                          "green": 3.14, # The green component of the color, from 0.0 to 1.0.
+                          "red": 3.14, # The red component of the color, from 0.0 to 1.0.
+                        },
+                      },
+                    },
+                    "bold": True or False, # Whether or not the text is bold.
+                    "baselineOffset": "A String", # The text's vertical offset from its normal position.
+                        #
+                        # Text with `SUPERSCRIPT` or `SUBSCRIPT` baseline offsets is automatically
+                        # rendered in a smaller font size, computed based on the `font_size` field.
+                        # The `font_size` itself is not affected by changes in this field.
+                    "strikethrough": True or False, # Whether or not the text is struck through.
+                    "smallCaps": True or False, # Whether or not the text is in small capital letters.
+                    "fontFamily": "A String", # The font family of the text.
+                        #
+                        # The font family can be any font from the Font menu in Slides or from
+                        # [Google Fonts] (https://fonts.google.com/). If the font name is
+                        # unrecognized, the text is rendered in `Arial`.
+                        #
+                        # Some fonts can affect the weight of the text. If an update request
+                        # specifies values for both `font_family` and `bold`, the explicitly-set
+                        # `bold` value is used.
+                    "link": { # A hypertext link. # The hyperlink destination of the text. If unset, there is no link. Links
+                        # are not inherited from parent text.
+                        #
+                        # Changing the link in an update request causes some other changes to the
+                        # text style of the range:
+                        #
+                        # * When setting a link, the text foreground color will be set to
+                        #   ThemeColorType.HYPERLINK and the text will
+                        #   be underlined. If these fields are modified in the same
+                        #   request, those values will be used instead of the link defaults.
+                        # * Setting a link on a text range that overlaps with an existing link will
+                        #   also update the existing link to point to the new URL.
+                        # * Links are not settable on newline characters. As a result, setting a link
+                        #   on a text range that crosses a paragraph boundary, such as `"ABC\n123"`,
+                        #   will separate the newline character(s) into their own text runs. The
+                        #   link will be applied separately to the runs before and after the newline.
+                        # * Removing a link will update the text style of the range to match the
+                        #   style of the preceding text (or the default text styles if the preceding
+                        #   text is another link) unless different styles are being set in the same
+                        #   request.
+                      "url": "A String", # If set, indicates this is a link to the external web page at this URL.
+                      "pageObjectId": "A String", # If set, indicates this is a link to the specific page in this
+                          # presentation with this ID. A page with this ID may not exist.
+                      "slideIndex": 42, # If set, indicates this is a link to the slide at this zero-based index
+                          # in the presentation. There may not be a slide at this index.
+                      "relativeLink": "A String", # If set, indicates this is a link to a slide in this presentation,
+                          # addressed by its position.
+                    },
+                    "italic": True or False, # Whether or not the text is italicized.
+                    "fontSize": { # A magnitude in a single direction in the specified units. # The size of the text's font. When read, the `font_size` will specified in
+                        # points.
+                      "magnitude": 3.14, # The magnitude.
+                      "unit": "A String", # The units for magnitude.
+                    },
+                    "underline": True or False, # Whether or not the text is underlined.
+                    "backgroundColor": { # A color that can either be fully opaque or fully transparent. # The background color of the text. If set, the color is either opaque or
+                        # transparent, depending on if the `opaque_color` field in it is set.
+                      "opaqueColor": { # A themeable solid color value. # If set, this will be used as an opaque color. If unset, this represents
+                          # a transparent color.
+                        "themeColor": "A String", # An opaque theme color.
+                        "rgbColor": { # An RGB color. # An opaque RGB color.
+                          "blue": 3.14, # The blue component of the color, from 0.0 to 1.0.
+                          "green": 3.14, # The green component of the color, from 0.0 to 1.0.
+                          "red": 3.14, # The red component of the color, from 0.0 to 1.0.
+                        },
+                      },
+                    },
+                  },
+                  "type": "A String", # The type of this auto text.
+                },
+                "endIndex": 42, # The zero-based end index of this text element, exclusive, in Unicode code
+                    # units.
+                "startIndex": 42, # The zero-based start index of this text element, in Unicode code units.
+                "paragraphMarker": { # A TextElement kind that represents the beginning of a new paragraph. # A marker representing the beginning of a new paragraph.
+                    #
+                    # The `start_index` and `end_index` of this TextElement represent the
+                    # range of the paragraph. Other TextElements with an index range contained
+                    # inside this paragraph's range are considered to be part of this
+                    # paragraph. The range of indices of two separate paragraphs will never
+                    # overlap.
+                  "style": { # Styles that apply to a whole paragraph. # The paragraph's style
+                      #
+                      # If this text is contained in a shape with a parent placeholder, then these paragraph styles may be
+                      # inherited from the parent. Which paragraph styles are inherited depend on the
+                      # nesting level of lists:
+                      #
+                      # * A paragraph not in a list will inherit its paragraph style from the
+                      #   paragraph at the 0 nesting level of the list inside the parent placeholder.
+                      # * A paragraph in a list will inherit its paragraph style from the paragraph
+                      #   at its corresponding nesting level of the list inside the parent
+                      #   placeholder.
+                      #
+                      # Inherited paragraph styles are represented as unset fields in this message.
+                    "spacingMode": "A String", # The spacing mode for the paragraph. This property is read-only.
+                    "direction": "A String", # The text direction of this paragraph. This property is read-only.
+                    "spaceBelow": { # A magnitude in a single direction in the specified units. # The amount of extra space above the paragraph. If unset, the value is
+                        # inherited from the parent. This property is read-only.
+                      "magnitude": 3.14, # The magnitude.
+                      "unit": "A String", # The units for magnitude.
+                    },
+                    "lineSpacing": 3.14, # The amount of space between lines, as a percentage of normal, where normal
+                        # is represented as 100.0. If unset, the value is inherited from the parent.
+                        # This property is read-only.
+                    "indentStart": { # A magnitude in a single direction in the specified units. # The amount indentation for the paragraph on the side that corresponds to
+                        # the start of the text, based on the current text direction. If unset, the
+                        # value is inherited from the parent. This property is read-only.
+                      "magnitude": 3.14, # The magnitude.
+                      "unit": "A String", # The units for magnitude.
+                    },
+                    "spaceAbove": { # A magnitude in a single direction in the specified units. # The amount of extra space above the paragraph. If unset, the value is
+                        # inherited from the parent. This property is read-only.
+                      "magnitude": 3.14, # The magnitude.
+                      "unit": "A String", # The units for magnitude.
+                    },
+                    "indentEnd": { # A magnitude in a single direction in the specified units. # The amount indentation for the paragraph on the side that corresponds to
+                        # the end of the text, based on the current text direction. If unset, the
+                        # value is inherited from the parent. This property is read-only.
+                      "magnitude": 3.14, # The magnitude.
+                      "unit": "A String", # The units for magnitude.
+                    },
+                    "indentFirstLine": { # A magnitude in a single direction in the specified units. # The amount of indentation for the start of the first line of the paragraph.
+                        # If unset, the value is inherited from the parent. This property is
+                        # read-only.
+                      "magnitude": 3.14, # The magnitude.
+                      "unit": "A String", # The units for magnitude.
+                    },
+                    "alignment": "A String", # The text alignment for this paragraph. This property is read-only.
+                  },
+                  "bullet": { # Describes the bullet of a paragraph. # The bullet for this paragraph. If not present, the paragraph does not
+                      # belong to a list.
+                    "nestingLevel": 42, # The nesting level of this paragraph in the list.
+                    "listId": "A String", # The ID of the list this paragraph belongs to.
+                    "bulletStyle": { # Represents the styling that can be applied to a TextRun. # The paragraph specific text style applied to this bullet.
+                        #
+                        # If this text is contained in a shape with a parent placeholder, then these text styles may be
+                        # inherited from the parent. Which text styles are inherited depend on the
+                        # nesting level of lists:
+                        #
+                        # * A text run in a paragraph that is not in a list will inherit its text style
+                        #   from the the newline character in the paragraph at the 0 nesting level of
+                        #   the list inside the parent placeholder.
+                        # * A text run in a paragraph that is in a list will inherit its text style
+                        #   from the newline character in the paragraph at its corresponding nesting
+                        #   level of the list inside the parent placeholder.
+                        #
+                        # Inherited text styles are represented as unset fields in this message. If
+                        # text is contained in a shape without a parent placeholder, unsetting these
+                        # fields will revert the style to a value matching the defaults in the Slides
+                        # editor.
+                      "foregroundColor": { # A color that can either be fully opaque or fully transparent. # The color of the text itself. If set, the color is either opaque or
+                          # transparent, depending on if the `opaque_color` field in it is set.
+                        "opaqueColor": { # A themeable solid color value. # If set, this will be used as an opaque color. If unset, this represents
+                            # a transparent color.
+                          "themeColor": "A String", # An opaque theme color.
+                          "rgbColor": { # An RGB color. # An opaque RGB color.
+                            "blue": 3.14, # The blue component of the color, from 0.0 to 1.0.
+                            "green": 3.14, # The green component of the color, from 0.0 to 1.0.
+                            "red": 3.14, # The red component of the color, from 0.0 to 1.0.
+                          },
+                        },
+                      },
+                      "bold": True or False, # Whether or not the text is bold.
+                      "baselineOffset": "A String", # The text's vertical offset from its normal position.
+                          #
+                          # Text with `SUPERSCRIPT` or `SUBSCRIPT` baseline offsets is automatically
+                          # rendered in a smaller font size, computed based on the `font_size` field.
+                          # The `font_size` itself is not affected by changes in this field.
+                      "strikethrough": True or False, # Whether or not the text is struck through.
+                      "smallCaps": True or False, # Whether or not the text is in small capital letters.
+                      "fontFamily": "A String", # The font family of the text.
+                          #
+                          # The font family can be any font from the Font menu in Slides or from
+                          # [Google Fonts] (https://fonts.google.com/). If the font name is
+                          # unrecognized, the text is rendered in `Arial`.
+                          #
+                          # Some fonts can affect the weight of the text. If an update request
+                          # specifies values for both `font_family` and `bold`, the explicitly-set
+                          # `bold` value is used.
+                      "link": { # A hypertext link. # The hyperlink destination of the text. If unset, there is no link. Links
+                          # are not inherited from parent text.
+                          #
+                          # Changing the link in an update request causes some other changes to the
+                          # text style of the range:
+                          #
+                          # * When setting a link, the text foreground color will be set to
+                          #   ThemeColorType.HYPERLINK and the text will
+                          #   be underlined. If these fields are modified in the same
+                          #   request, those values will be used instead of the link defaults.
+                          # * Setting a link on a text range that overlaps with an existing link will
+                          #   also update the existing link to point to the new URL.
+                          # * Links are not settable on newline characters. As a result, setting a link
+                          #   on a text range that crosses a paragraph boundary, such as `"ABC\n123"`,
+                          #   will separate the newline character(s) into their own text runs. The
+                          #   link will be applied separately to the runs before and after the newline.
+                          # * Removing a link will update the text style of the range to match the
+                          #   style of the preceding text (or the default text styles if the preceding
+                          #   text is another link) unless different styles are being set in the same
+                          #   request.
+                        "url": "A String", # If set, indicates this is a link to the external web page at this URL.
+                        "pageObjectId": "A String", # If set, indicates this is a link to the specific page in this
+                            # presentation with this ID. A page with this ID may not exist.
+                        "slideIndex": 42, # If set, indicates this is a link to the slide at this zero-based index
+                            # in the presentation. There may not be a slide at this index.
+                        "relativeLink": "A String", # If set, indicates this is a link to a slide in this presentation,
+                            # addressed by its position.
+                      },
+                      "italic": True or False, # Whether or not the text is italicized.
+                      "fontSize": { # A magnitude in a single direction in the specified units. # The size of the text's font. When read, the `font_size` will specified in
+                          # points.
+                        "magnitude": 3.14, # The magnitude.
+                        "unit": "A String", # The units for magnitude.
+                      },
+                      "underline": True or False, # Whether or not the text is underlined.
+                      "backgroundColor": { # A color that can either be fully opaque or fully transparent. # The background color of the text. If set, the color is either opaque or
+                          # transparent, depending on if the `opaque_color` field in it is set.
+                        "opaqueColor": { # A themeable solid color value. # If set, this will be used as an opaque color. If unset, this represents
+                            # a transparent color.
+                          "themeColor": "A String", # An opaque theme color.
+                          "rgbColor": { # An RGB color. # An opaque RGB color.
+                            "blue": 3.14, # The blue component of the color, from 0.0 to 1.0.
+                            "green": 3.14, # The green component of the color, from 0.0 to 1.0.
+                            "red": 3.14, # The red component of the color, from 0.0 to 1.0.
+                          },
+                        },
+                      },
+                    },
+                    "glyph": "A String", # The rendered bullet glyph for this paragraph.
+                  },
+                },
+                "textRun": { # A TextElement kind that represents a run of text that all has the same # A TextElement representing a run of text where all of the characters
+                    # in the run have the same TextStyle.
+                    #
+                    # The `start_index` and `end_index` of TextRuns will always be fully
+                    # contained in the index range of a single `paragraph_marker` TextElement.
+                    # In other words, a TextRun will never span multiple paragraphs.
+                    # styling.
+                  "content": "A String", # The text of this run.
+                  "style": { # Represents the styling that can be applied to a TextRun. # The styling applied to this run.
+                      #
+                      # If this text is contained in a shape with a parent placeholder, then these text styles may be
+                      # inherited from the parent. Which text styles are inherited depend on the
+                      # nesting level of lists:
+                      #
+                      # * A text run in a paragraph that is not in a list will inherit its text style
+                      #   from the the newline character in the paragraph at the 0 nesting level of
+                      #   the list inside the parent placeholder.
+                      # * A text run in a paragraph that is in a list will inherit its text style
+                      #   from the newline character in the paragraph at its corresponding nesting
+                      #   level of the list inside the parent placeholder.
+                      #
+                      # Inherited text styles are represented as unset fields in this message. If
+                      # text is contained in a shape without a parent placeholder, unsetting these
+                      # fields will revert the style to a value matching the defaults in the Slides
+                      # editor.
+                    "foregroundColor": { # A color that can either be fully opaque or fully transparent. # The color of the text itself. If set, the color is either opaque or
+                        # transparent, depending on if the `opaque_color` field in it is set.
+                      "opaqueColor": { # A themeable solid color value. # If set, this will be used as an opaque color. If unset, this represents
+                          # a transparent color.
+                        "themeColor": "A String", # An opaque theme color.
+                        "rgbColor": { # An RGB color. # An opaque RGB color.
+                          "blue": 3.14, # The blue component of the color, from 0.0 to 1.0.
+                          "green": 3.14, # The green component of the color, from 0.0 to 1.0.
+                          "red": 3.14, # The red component of the color, from 0.0 to 1.0.
+                        },
+                      },
+                    },
+                    "bold": True or False, # Whether or not the text is bold.
+                    "baselineOffset": "A String", # The text's vertical offset from its normal position.
+                        #
+                        # Text with `SUPERSCRIPT` or `SUBSCRIPT` baseline offsets is automatically
+                        # rendered in a smaller font size, computed based on the `font_size` field.
+                        # The `font_size` itself is not affected by changes in this field.
+                    "strikethrough": True or False, # Whether or not the text is struck through.
+                    "smallCaps": True or False, # Whether or not the text is in small capital letters.
+                    "fontFamily": "A String", # The font family of the text.
+                        #
+                        # The font family can be any font from the Font menu in Slides or from
+                        # [Google Fonts] (https://fonts.google.com/). If the font name is
+                        # unrecognized, the text is rendered in `Arial`.
+                        #
+                        # Some fonts can affect the weight of the text. If an update request
+                        # specifies values for both `font_family` and `bold`, the explicitly-set
+                        # `bold` value is used.
+                    "link": { # A hypertext link. # The hyperlink destination of the text. If unset, there is no link. Links
+                        # are not inherited from parent text.
+                        #
+                        # Changing the link in an update request causes some other changes to the
+                        # text style of the range:
+                        #
+                        # * When setting a link, the text foreground color will be set to
+                        #   ThemeColorType.HYPERLINK and the text will
+                        #   be underlined. If these fields are modified in the same
+                        #   request, those values will be used instead of the link defaults.
+                        # * Setting a link on a text range that overlaps with an existing link will
+                        #   also update the existing link to point to the new URL.
+                        # * Links are not settable on newline characters. As a result, setting a link
+                        #   on a text range that crosses a paragraph boundary, such as `"ABC\n123"`,
+                        #   will separate the newline character(s) into their own text runs. The
+                        #   link will be applied separately to the runs before and after the newline.
+                        # * Removing a link will update the text style of the range to match the
+                        #   style of the preceding text (or the default text styles if the preceding
+                        #   text is another link) unless different styles are being set in the same
+                        #   request.
+                      "url": "A String", # If set, indicates this is a link to the external web page at this URL.
+                      "pageObjectId": "A String", # If set, indicates this is a link to the specific page in this
+                          # presentation with this ID. A page with this ID may not exist.
+                      "slideIndex": 42, # If set, indicates this is a link to the slide at this zero-based index
+                          # in the presentation. There may not be a slide at this index.
+                      "relativeLink": "A String", # If set, indicates this is a link to a slide in this presentation,
+                          # addressed by its position.
+                    },
+                    "italic": True or False, # Whether or not the text is italicized.
+                    "fontSize": { # A magnitude in a single direction in the specified units. # The size of the text's font. When read, the `font_size` will specified in
+                        # points.
+                      "magnitude": 3.14, # The magnitude.
+                      "unit": "A String", # The units for magnitude.
+                    },
+                    "underline": True or False, # Whether or not the text is underlined.
+                    "backgroundColor": { # A color that can either be fully opaque or fully transparent. # The background color of the text. If set, the color is either opaque or
+                        # transparent, depending on if the `opaque_color` field in it is set.
+                      "opaqueColor": { # A themeable solid color value. # If set, this will be used as an opaque color. If unset, this represents
+                          # a transparent color.
+                        "themeColor": "A String", # An opaque theme color.
+                        "rgbColor": { # An RGB color. # An opaque RGB color.
+                          "blue": 3.14, # The blue component of the color, from 0.0 to 1.0.
+                          "green": 3.14, # The green component of the color, from 0.0 to 1.0.
+                          "red": 3.14, # The red component of the color, from 0.0 to 1.0.
+                        },
+                      },
+                    },
+                  },
+                },
+              },
+            ],
+            "lists": { # The bulleted lists contained in this text, keyed by list ID.
+              "a_key": { # A List describes the look and feel of bullets belonging to paragraphs
+                  # associated with a list. A paragraph that is part of a list has an implicit
+                  # reference to that list's ID.
+                "nestingLevel": { # A map of nesting levels to the properties of bullets at the associated
+                    # level. A list has at most nine levels of nesting, so the possible values
+                    # for the keys of this map are 0 through 8, inclusive.
+                  "a_key": { # Contains properties describing the look and feel of a list bullet at a given
+                      # level of nesting.
+                    "bulletStyle": { # Represents the styling that can be applied to a TextRun. # The style of a bullet at this level of nesting.
+                        #
+                        # If this text is contained in a shape with a parent placeholder, then these text styles may be
+                        # inherited from the parent. Which text styles are inherited depend on the
+                        # nesting level of lists:
+                        #
+                        # * A text run in a paragraph that is not in a list will inherit its text style
+                        #   from the the newline character in the paragraph at the 0 nesting level of
+                        #   the list inside the parent placeholder.
+                        # * A text run in a paragraph that is in a list will inherit its text style
+                        #   from the newline character in the paragraph at its corresponding nesting
+                        #   level of the list inside the parent placeholder.
+                        #
+                        # Inherited text styles are represented as unset fields in this message. If
+                        # text is contained in a shape without a parent placeholder, unsetting these
+                        # fields will revert the style to a value matching the defaults in the Slides
+                        # editor.
+                      "foregroundColor": { # A color that can either be fully opaque or fully transparent. # The color of the text itself. If set, the color is either opaque or
+                          # transparent, depending on if the `opaque_color` field in it is set.
+                        "opaqueColor": { # A themeable solid color value. # If set, this will be used as an opaque color. If unset, this represents
+                            # a transparent color.
+                          "themeColor": "A String", # An opaque theme color.
+                          "rgbColor": { # An RGB color. # An opaque RGB color.
+                            "blue": 3.14, # The blue component of the color, from 0.0 to 1.0.
+                            "green": 3.14, # The green component of the color, from 0.0 to 1.0.
+                            "red": 3.14, # The red component of the color, from 0.0 to 1.0.
+                          },
+                        },
+                      },
+                      "bold": True or False, # Whether or not the text is bold.
+                      "baselineOffset": "A String", # The text's vertical offset from its normal position.
+                          #
+                          # Text with `SUPERSCRIPT` or `SUBSCRIPT` baseline offsets is automatically
+                          # rendered in a smaller font size, computed based on the `font_size` field.
+                          # The `font_size` itself is not affected by changes in this field.
+                      "strikethrough": True or False, # Whether or not the text is struck through.
+                      "smallCaps": True or False, # Whether or not the text is in small capital letters.
+                      "fontFamily": "A String", # The font family of the text.
+                          #
+                          # The font family can be any font from the Font menu in Slides or from
+                          # [Google Fonts] (https://fonts.google.com/). If the font name is
+                          # unrecognized, the text is rendered in `Arial`.
+                          #
+                          # Some fonts can affect the weight of the text. If an update request
+                          # specifies values for both `font_family` and `bold`, the explicitly-set
+                          # `bold` value is used.
+                      "link": { # A hypertext link. # The hyperlink destination of the text. If unset, there is no link. Links
+                          # are not inherited from parent text.
+                          #
+                          # Changing the link in an update request causes some other changes to the
+                          # text style of the range:
+                          #
+                          # * When setting a link, the text foreground color will be set to
+                          #   ThemeColorType.HYPERLINK and the text will
+                          #   be underlined. If these fields are modified in the same
+                          #   request, those values will be used instead of the link defaults.
+                          # * Setting a link on a text range that overlaps with an existing link will
+                          #   also update the existing link to point to the new URL.
+                          # * Links are not settable on newline characters. As a result, setting a link
+                          #   on a text range that crosses a paragraph boundary, such as `"ABC\n123"`,
+                          #   will separate the newline character(s) into their own text runs. The
+                          #   link will be applied separately to the runs before and after the newline.
+                          # * Removing a link will update the text style of the range to match the
+                          #   style of the preceding text (or the default text styles if the preceding
+                          #   text is another link) unless different styles are being set in the same
+                          #   request.
+                        "url": "A String", # If set, indicates this is a link to the external web page at this URL.
+                        "pageObjectId": "A String", # If set, indicates this is a link to the specific page in this
+                            # presentation with this ID. A page with this ID may not exist.
+                        "slideIndex": 42, # If set, indicates this is a link to the slide at this zero-based index
+                            # in the presentation. There may not be a slide at this index.
+                        "relativeLink": "A String", # If set, indicates this is a link to a slide in this presentation,
+                            # addressed by its position.
+                      },
+                      "italic": True or False, # Whether or not the text is italicized.
+                      "fontSize": { # A magnitude in a single direction in the specified units. # The size of the text's font. When read, the `font_size` will specified in
+                          # points.
+                        "magnitude": 3.14, # The magnitude.
+                        "unit": "A String", # The units for magnitude.
+                      },
+                      "underline": True or False, # Whether or not the text is underlined.
+                      "backgroundColor": { # A color that can either be fully opaque or fully transparent. # The background color of the text. If set, the color is either opaque or
+                          # transparent, depending on if the `opaque_color` field in it is set.
+                        "opaqueColor": { # A themeable solid color value. # If set, this will be used as an opaque color. If unset, this represents
+                            # a transparent color.
+                          "themeColor": "A String", # An opaque theme color.
+                          "rgbColor": { # An RGB color. # An opaque RGB color.
+                            "blue": 3.14, # The blue component of the color, from 0.0 to 1.0.
+                            "green": 3.14, # The green component of the color, from 0.0 to 1.0.
+                            "red": 3.14, # The red component of the color, from 0.0 to 1.0.
+                          },
+                        },
+                      },
+                    },
+                  },
+                },
+                "listId": "A String", # The ID of the list.
+              },
+            },
+          },
+          "shapeProperties": { # The properties of a Shape. # The properties of the shape.
+              #
+              # If the shape is a placeholder shape as determined by the
+              # placeholder field, then these
+              # properties may be inherited from a parent placeholder shape.
+              # Determining the rendered value of the property depends on the corresponding
+              # property_state field value.
+            "shadow": { # The shadow properties of a page element. # The shadow properties of the shape. If unset, the shadow is inherited from
+                # a parent placeholder if it exists. If the shape has no parent, then the
+                # default shadow matches the defaults for new shapes created in the Slides
+                # editor. This property is read-only.
+                #
+                # If these fields are unset, they may be inherited from a parent placeholder
+                # if it exists. If there is no parent, the fields will default to the value
+                # used for new page elements created in the Slides editor, which may depend on
+                # the page element kind.
+              "color": { # A themeable solid color value. # The shadow color value.
+                "themeColor": "A String", # An opaque theme color.
+                "rgbColor": { # An RGB color. # An opaque RGB color.
+                  "blue": 3.14, # The blue component of the color, from 0.0 to 1.0.
+                  "green": 3.14, # The green component of the color, from 0.0 to 1.0.
+                  "red": 3.14, # The red component of the color, from 0.0 to 1.0.
+                },
+              },
+              "transform": { # AffineTransform uses a 3x3 matrix with an implied last row of [ 0 0 1 ] # Transform that encodes the translate, scale, and skew of the shadow,
+                  # relative to the alignment position.
+                  # to transform source coordinates (x,y) into destination coordinates (x', y')
+                  # according to:
+                  #
+                  #       x'  x  =   shear_y  scale_y  translate_y
+                  #       1  [ 1 ]
+                  #
+                  # After transformation,
+                  #
+                  #      x' = scale_x * x + shear_x * y + translate_x;
+                  #      y' = scale_y * y + shear_y * x + translate_y;
+                  #
+                  # This message is therefore composed of these six matrix elements.
+                "translateX": 3.14, # The X coordinate translation element.
+                "translateY": 3.14, # The Y coordinate translation element.
+                "scaleX": 3.14, # The X coordinate scaling element.
+                "scaleY": 3.14, # The Y coordinate scaling element.
+                "shearY": 3.14, # The Y coordinate shearing element.
+                "shearX": 3.14, # The X coordinate shearing element.
+                "unit": "A String", # The units for translate elements.
+              },
+              "propertyState": "A String", # The shadow property state.
+                  #
+                  # Updating the the shadow on a page element will implicitly update this field
+                  # to `RENDERED`, unless another value is specified in the same request. To
+                  # have no shadow on a page element, set this field to `NOT_RENDERED`. In this
+                  # case, any other shadow fields set in the same request will be ignored.
+              "blurRadius": { # A magnitude in a single direction in the specified units. # The radius of the shadow blur. The larger the radius, the more diffuse the
+                  # shadow becomes.
+                "magnitude": 3.14, # The magnitude.
+                "unit": "A String", # The units for magnitude.
+              },
+              "alpha": 3.14, # The alpha of the shadow's color, from 0.0 to 1.0.
+              "type": "A String", # The type of the shadow.
+              "alignment": "A String", # The alignment point of the shadow, that sets the origin for translate,
+                  # scale and skew of the shadow.
+              "rotateWithShape": True or False, # Whether the shadow should rotate with the shape.
+            },
+            "shapeBackgroundFill": { # The shape background fill. # The background fill of the shape. If unset, the background fill is
+                # inherited from a parent placeholder if it exists. If the shape has no
+                # parent, then the default background fill depends on the shape type,
+                # matching the defaults for new shapes created in the Slides editor.
+              "solidFill": { # A solid color fill. The page or page element is filled entirely with the # Solid color fill.
+                  # specified color value.
+                  #
+                  # If any field is unset, its value may be inherited from a parent placeholder
+                  # if it exists.
+                "color": { # A themeable solid color value. # The color value of the solid fill.
+                  "themeColor": "A String", # An opaque theme color.
+                  "rgbColor": { # An RGB color. # An opaque RGB color.
+                    "blue": 3.14, # The blue component of the color, from 0.0 to 1.0.
+                    "green": 3.14, # The green component of the color, from 0.0 to 1.0.
+                    "red": 3.14, # The red component of the color, from 0.0 to 1.0.
+                  },
+                },
+                "alpha": 3.14, # The fraction of this `color` that should be applied to the pixel.
+                    # That is, the final pixel color is defined by the equation:
+                    #
+                    #   pixel color = alpha * (color) + (1.0 - alpha) * (background color)
+                    #
+                    # This means that a value of 1.0 corresponds to a solid color, whereas
+                    # a value of 0.0 corresponds to a completely transparent color.
+              },
+              "propertyState": "A String", # The background fill property state.
+                  #
+                  # Updating the the fill on a shape will implicitly update this field to
+                  # `RENDERED`, unless another value is specified in the same request. To
+                  # have no fill on a shape, set this field to `NOT_RENDERED`. In this case,
+                  # any other fill fields set in the same request will be ignored.
+            },
+            "link": { # A hypertext link. # The hyperlink destination of the shape. If unset, there is no link. Links
+                # are not inherited from parent placeholders.
+              "url": "A String", # If set, indicates this is a link to the external web page at this URL.
+              "pageObjectId": "A String", # If set, indicates this is a link to the specific page in this
+                  # presentation with this ID. A page with this ID may not exist.
+              "slideIndex": 42, # If set, indicates this is a link to the slide at this zero-based index
+                  # in the presentation. There may not be a slide at this index.
+              "relativeLink": "A String", # If set, indicates this is a link to a slide in this presentation,
+                  # addressed by its position.
+            },
+            "outline": { # The outline of a PageElement. # The outline of the shape. If unset, the outline is inherited from a
+                # parent placeholder if it exists. If the shape has no parent, then the
+                # default outline depends on the shape type, matching the defaults for
+                # new shapes created in the Slides editor.
+                #
+                # If these fields are unset, they may be inherited from a parent placeholder
+                # if it exists. If there is no parent, the fields will default to the value
+                # used for new page elements created in the Slides editor, which may depend on
+                # the page element kind.
+              "dashStyle": "A String", # The dash style of the outline.
+              "propertyState": "A String", # The outline property state.
+                  #
+                  # Updating the the outline on a page element will implicitly update this
+                  # field to`RENDERED`, unless another value is specified in the same request.
+                  # To have no outline on a page element, set this field to `NOT_RENDERED`. In
+                  # this case, any other outline fields set in the same request will be
+                  # ignored.
+              "outlineFill": { # The fill of the outline. # The fill of the outline.
+                "solidFill": { # A solid color fill. The page or page element is filled entirely with the # Solid color fill.
+                    # specified color value.
+                    #
+                    # If any field is unset, its value may be inherited from a parent placeholder
+                    # if it exists.
+                  "color": { # A themeable solid color value. # The color value of the solid fill.
+                    "themeColor": "A String", # An opaque theme color.
+                    "rgbColor": { # An RGB color. # An opaque RGB color.
+                      "blue": 3.14, # The blue component of the color, from 0.0 to 1.0.
+                      "green": 3.14, # The green component of the color, from 0.0 to 1.0.
+                      "red": 3.14, # The red component of the color, from 0.0 to 1.0.
+                    },
+                  },
+                  "alpha": 3.14, # The fraction of this `color` that should be applied to the pixel.
+                      # That is, the final pixel color is defined by the equation:
+                      #
+                      #   pixel color = alpha * (color) + (1.0 - alpha) * (background color)
+                      #
+                      # This means that a value of 1.0 corresponds to a solid color, whereas
+                      # a value of 0.0 corresponds to a completely transparent color.
+                },
+              },
+              "weight": { # A magnitude in a single direction in the specified units. # The thickness of the outline.
+                "magnitude": 3.14, # The magnitude.
+                "unit": "A String", # The units for magnitude.
+              },
+            },
+          },
+          "placeholder": { # The placeholder information that uniquely identifies a placeholder shape. # Placeholders are shapes that are inherit from corresponding placeholders on
+              # layouts and masters.
+              #
+              # If set, the shape is a placeholder shape and any inherited properties
+              # can be resolved by looking at the parent placeholder identified by the
+              # Placeholder.parent_object_id field.
+            "parentObjectId": "A String", # The object ID of this shape's parent placeholder.
+                # If unset, the parent placeholder shape does not exist, so the shape does
+                # not inherit properties from any other shape.
+            "index": 42, # The index of the placeholder. If the same placeholder types are the present
+                # in the same page, they would have different index values.
+            "type": "A String", # The type of the placeholder.
+          },
+          "shapeType": "A String", # The type of the shape.
+        },
+        "sheetsChart": { # A PageElement kind representing # A linked chart embedded from Google Sheets. Unlinked charts are
+            # represented as images.
+            # a linked chart embedded from Google Sheets.
+          "chartId": 42, # The ID of the specific chart in the Google Sheets spreadsheet that is
+              # embedded.
+          "spreadsheetId": "A String", # The ID of the Google Sheets spreadsheet that contains the source chart.
+          "sheetsChartProperties": { # The properties of the SheetsChart. # The properties of the Sheets chart.
+            "chartImageProperties": { # The properties of the Image. # The properties of the embedded chart image.
+              "outline": { # The outline of a PageElement. # The outline of the image. If not set, the the image has no outline.
+                  #
+                  # If these fields are unset, they may be inherited from a parent placeholder
+                  # if it exists. If there is no parent, the fields will default to the value
+                  # used for new page elements created in the Slides editor, which may depend on
+                  # the page element kind.
+                "dashStyle": "A String", # The dash style of the outline.
+                "propertyState": "A String", # The outline property state.
+                    #
+                    # Updating the the outline on a page element will implicitly update this
+                    # field to`RENDERED`, unless another value is specified in the same request.
+                    # To have no outline on a page element, set this field to `NOT_RENDERED`. In
+                    # this case, any other outline fields set in the same request will be
+                    # ignored.
+                "outlineFill": { # The fill of the outline. # The fill of the outline.
+                  "solidFill": { # A solid color fill. The page or page element is filled entirely with the # Solid color fill.
+                      # specified color value.
+                      #
+                      # If any field is unset, its value may be inherited from a parent placeholder
+                      # if it exists.
+                    "color": { # A themeable solid color value. # The color value of the solid fill.
+                      "themeColor": "A String", # An opaque theme color.
+                      "rgbColor": { # An RGB color. # An opaque RGB color.
+                        "blue": 3.14, # The blue component of the color, from 0.0 to 1.0.
+                        "green": 3.14, # The green component of the color, from 0.0 to 1.0.
+                        "red": 3.14, # The red component of the color, from 0.0 to 1.0.
+                      },
+                    },
+                    "alpha": 3.14, # The fraction of this `color` that should be applied to the pixel.
+                        # That is, the final pixel color is defined by the equation:
+                        #
+                        #   pixel color = alpha * (color) + (1.0 - alpha) * (background color)
+                        #
+                        # This means that a value of 1.0 corresponds to a solid color, whereas
+                        # a value of 0.0 corresponds to a completely transparent color.
+                  },
+                },
+                "weight": { # A magnitude in a single direction in the specified units. # The thickness of the outline.
+                  "magnitude": 3.14, # The magnitude.
+                  "unit": "A String", # The units for magnitude.
+                },
+              },
+              "brightness": 3.14, # The brightness effect of the image. The value should be in the interval
+                  # [-1.0, 1.0], where 0 means no effect. This property is read-only.
+              "recolor": { # A recolor effect applied on an image. # The recolor effect of the image. If not set, the image is not recolored.
+                  # This property is read-only.
+                "recolorStops": [ # The recolor effect is represented by a gradient, which is a list of color
+                    # stops. This property is read-only.
+                  { # A color and position in a gradient band.
+                    "color": { # A themeable solid color value. # The color of the gradient stop.
+                      "themeColor": "A String", # An opaque theme color.
+                      "rgbColor": { # An RGB color. # An opaque RGB color.
+                        "blue": 3.14, # The blue component of the color, from 0.0 to 1.0.
+                        "green": 3.14, # The green component of the color, from 0.0 to 1.0.
+                        "red": 3.14, # The red component of the color, from 0.0 to 1.0.
+                      },
+                    },
+                    "position": 3.14, # The relative position of the color stop in the gradient band measured
+                        # in percentage. The value should be in the interval [0.0, 1.0].
+                    "alpha": 3.14, # The alpha value of this color in the gradient band. Defaults to 1.0,
+                        # fully opaque.
+                  },
+                ],
+              },
+              "link": { # A hypertext link. # The hyperlink destination of the image. If unset, there is no link.
+                "url": "A String", # If set, indicates this is a link to the external web page at this URL.
+                "pageObjectId": "A String", # If set, indicates this is a link to the specific page in this
+                    # presentation with this ID. A page with this ID may not exist.
+                "slideIndex": 42, # If set, indicates this is a link to the slide at this zero-based index
+                    # in the presentation. There may not be a slide at this index.
+                "relativeLink": "A String", # If set, indicates this is a link to a slide in this presentation,
+                    # addressed by its position.
+              },
+              "transparency": 3.14, # The transparency effect of the image. The value should be in the interval
+                  # [0.0, 1.0], where 0 means no effect and 1 means completely transparent.
+                  # This property is read-only.
+              "cropProperties": { # The crop properties of an object enclosed in a container. For example, an # The crop properties of the image. If not set, the image is not cropped.
+                  # This property is read-only.
+                  # Image.
+                  #
+                  # The crop properties is represented by the offsets of four edges which define
+                  # a crop rectangle. The offsets are measured in percentage from the
+                  # corresponding edges of the object's original bounding rectangle towards
+                  # inside, relative to the object's original dimensions.
+                  #
+                  # - If the offset is in the interval (0, 1), the corresponding edge of crop
+                  # rectangle is positioned inside of the object's original bounding rectangle.
+                  # - If the offset is negative or greater than 1, the corresponding edge of crop
+                  # rectangle is positioned outside of the object's original bounding rectangle.
+                  # - If the left edge of the crop rectangle is on the right side of its right
+                  # edge, the object will be flipped horizontally.
+                  # - If the top edge of the crop rectangle is below its bottom edge, the object
+                  # will be flipped vertically.
+                  # - If all offsets and rotation angle is 0, the object is not cropped.
+                  #
+                  # After cropping, the content in the crop rectangle will be stretched to fit
+                  # its container.
+                "leftOffset": 3.14, # The offset specifies the left edge of the crop rectangle that is located to
+                    # the right of the original bounding rectangle left edge, relative to the
+                    # object's original width.
+                "angle": 3.14, # The rotation angle of the crop window around its center, in radians.
+                    # Rotation angle is applied after the offset.
+                "bottomOffset": 3.14, # The offset specifies the bottom edge of the crop rectangle that is located
+                    # above the original bounding rectangle bottom edge, relative to the object's
+                    # original height.
+                "rightOffset": 3.14, # The offset specifies the right edge of the crop rectangle that is located
+                    # to the left of the original bounding rectangle right edge, relative to the
+                    # object's original width.
+                "topOffset": 3.14, # The offset specifies the top edge of the crop rectangle that is located
+                    # below the original bounding rectangle top edge, relative to the object's
+                    # original height.
+              },
+              "shadow": { # The shadow properties of a page element. # The shadow of the image. If not set, the image has no shadow. This property
+                  # is read-only.
+                  #
+                  # If these fields are unset, they may be inherited from a parent placeholder
+                  # if it exists. If there is no parent, the fields will default to the value
+                  # used for new page elements created in the Slides editor, which may depend on
+                  # the page element kind.
+                "color": { # A themeable solid color value. # The shadow color value.
+                  "themeColor": "A String", # An opaque theme color.
+                  "rgbColor": { # An RGB color. # An opaque RGB color.
+                    "blue": 3.14, # The blue component of the color, from 0.0 to 1.0.
+                    "green": 3.14, # The green component of the color, from 0.0 to 1.0.
+                    "red": 3.14, # The red component of the color, from 0.0 to 1.0.
+                  },
+                },
+                "transform": { # AffineTransform uses a 3x3 matrix with an implied last row of [ 0 0 1 ] # Transform that encodes the translate, scale, and skew of the shadow,
+                    # relative to the alignment position.
+                    # to transform source coordinates (x,y) into destination coordinates (x', y')
+                    # according to:
+                    #
+                    #       x'  x  =   shear_y  scale_y  translate_y
+                    #       1  [ 1 ]
+                    #
+                    # After transformation,
+                    #
+                    #      x' = scale_x * x + shear_x * y + translate_x;
+                    #      y' = scale_y * y + shear_y * x + translate_y;
+                    #
+                    # This message is therefore composed of these six matrix elements.
+                  "translateX": 3.14, # The X coordinate translation element.
+                  "translateY": 3.14, # The Y coordinate translation element.
+                  "scaleX": 3.14, # The X coordinate scaling element.
+                  "scaleY": 3.14, # The Y coordinate scaling element.
+                  "shearY": 3.14, # The Y coordinate shearing element.
+                  "shearX": 3.14, # The X coordinate shearing element.
+                  "unit": "A String", # The units for translate elements.
+                },
+                "propertyState": "A String", # The shadow property state.
+                    #
+                    # Updating the the shadow on a page element will implicitly update this field
+                    # to `RENDERED`, unless another value is specified in the same request. To
+                    # have no shadow on a page element, set this field to `NOT_RENDERED`. In this
+                    # case, any other shadow fields set in the same request will be ignored.
+                "blurRadius": { # A magnitude in a single direction in the specified units. # The radius of the shadow blur. The larger the radius, the more diffuse the
+                    # shadow becomes.
+                  "magnitude": 3.14, # The magnitude.
+                  "unit": "A String", # The units for magnitude.
+                },
+                "alpha": 3.14, # The alpha of the shadow's color, from 0.0 to 1.0.
+                "type": "A String", # The type of the shadow.
+                "alignment": "A String", # The alignment point of the shadow, that sets the origin for translate,
+                    # scale and skew of the shadow.
+                "rotateWithShape": True or False, # Whether the shadow should rotate with the shape.
+              },
+              "contrast": 3.14, # The contrast effect of the image. The value should be in the interval
+                  # [-1.0, 1.0], where 0 means no effect. This property is read-only.
+            },
+          },
+          "contentUrl": "A String", # The URL of an image of the embedded chart, with a default lifetime of 30
+              # minutes. This URL is tagged with the account of the requester. Anyone with
+              # the URL effectively accesses the image as the original requester. Access to
+              # the image may be lost if the presentation's sharing settings change.
+        },
+        "video": { # A PageElement kind representing a # A video page element.
+            # video.
+          "url": "A String", # An URL to a video. The URL is valid as long as the source video
+              # exists and sharing settings do not change.
+          "videoProperties": { # The properties of the Video. # The properties of the video.
+            "outline": { # The outline of a PageElement. # The outline of the video. The default outline matches the defaults for new
+                # videos created in the Slides editor.
+                #
+                # If these fields are unset, they may be inherited from a parent placeholder
+                # if it exists. If there is no parent, the fields will default to the value
+                # used for new page elements created in the Slides editor, which may depend on
+                # the page element kind.
+              "dashStyle": "A String", # The dash style of the outline.
+              "propertyState": "A String", # The outline property state.
+                  #
+                  # Updating the the outline on a page element will implicitly update this
+                  # field to`RENDERED`, unless another value is specified in the same request.
+                  # To have no outline on a page element, set this field to `NOT_RENDERED`. In
+                  # this case, any other outline fields set in the same request will be
+                  # ignored.
+              "outlineFill": { # The fill of the outline. # The fill of the outline.
+                "solidFill": { # A solid color fill. The page or page element is filled entirely with the # Solid color fill.
+                    # specified color value.
+                    #
+                    # If any field is unset, its value may be inherited from a parent placeholder
+                    # if it exists.
+                  "color": { # A themeable solid color value. # The color value of the solid fill.
+                    "themeColor": "A String", # An opaque theme color.
+                    "rgbColor": { # An RGB color. # An opaque RGB color.
+                      "blue": 3.14, # The blue component of the color, from 0.0 to 1.0.
+                      "green": 3.14, # The green component of the color, from 0.0 to 1.0.
+                      "red": 3.14, # The red component of the color, from 0.0 to 1.0.
+                    },
+                  },
+                  "alpha": 3.14, # The fraction of this `color` that should be applied to the pixel.
+                      # That is, the final pixel color is defined by the equation:
+                      #
+                      #   pixel color = alpha * (color) + (1.0 - alpha) * (background color)
+                      #
+                      # This means that a value of 1.0 corresponds to a solid color, whereas
+                      # a value of 0.0 corresponds to a completely transparent color.
+                },
+              },
+              "weight": { # A magnitude in a single direction in the specified units. # The thickness of the outline.
+                "magnitude": 3.14, # The magnitude.
+                "unit": "A String", # The units for magnitude.
+              },
+            },
+          },
+          "id": "A String", # The video source's unique identifier for this video.
+          "source": "A String", # The video source.
+        },
+        "table": { # A PageElement kind representing a # A table page element.
+            # table.
+          "tableColumns": [ # Properties of each column.
+            { # Properties of each column in a table.
+              "columnWidth": { # A magnitude in a single direction in the specified units. # Width of a column.
+                "magnitude": 3.14, # The magnitude.
+                "unit": "A String", # The units for magnitude.
+              },
+            },
+          ],
+          "tableRows": [ # Properties and contents of each row.
+              #
+              # Cells that span multiple rows are contained in only one of these rows and
+              # have a row_span greater
+              # than 1.
+            { # Properties and contents of each row in a table.
+              "tableCells": [ # Properties and contents of each cell.
+                  #
+                  # Cells that span multiple columns are represented only once with a
+                  # column_span greater
+                  # than 1. As a result, the length of this collection does not always match
+                  # the number of columns of the entire table.
+                { # Properties and contents of each table cell.
+                  "text": { # The general text content. The text must reside in a compatible shape (e.g. # The text content of the cell.
+                      # text box or rectangle) or a table cell in a page.
+                    "textElements": [ # The text contents broken down into its component parts, including styling
+                        # information. This property is read-only.
+                      { # A TextElement describes the content of a range of indices in the text content
+                          # of a Shape or TableCell.
+                        "autoText": { # A TextElement kind that represents auto text. # A TextElement representing a spot in the text that is dynamically
+                            # replaced with content that can change over time.
+                          "content": "A String", # The rendered content of this auto text, if available.
+                          "style": { # Represents the styling that can be applied to a TextRun. # The styling applied to this auto text.
+                              #
+                              # If this text is contained in a shape with a parent placeholder, then these text styles may be
+                              # inherited from the parent. Which text styles are inherited depend on the
+                              # nesting level of lists:
+                              #
+                              # * A text run in a paragraph that is not in a list will inherit its text style
+                              #   from the the newline character in the paragraph at the 0 nesting level of
+                              #   the list inside the parent placeholder.
+                              # * A text run in a paragraph that is in a list will inherit its text style
+                              #   from the newline character in the paragraph at its corresponding nesting
+                              #   level of the list inside the parent placeholder.
+                              #
+                              # Inherited text styles are represented as unset fields in this message. If
+                              # text is contained in a shape without a parent placeholder, unsetting these
+                              # fields will revert the style to a value matching the defaults in the Slides
+                              # editor.
+                            "foregroundColor": { # A color that can either be fully opaque or fully transparent. # The color of the text itself. If set, the color is either opaque or
+                                # transparent, depending on if the `opaque_color` field in it is set.
+                              "opaqueColor": { # A themeable solid color value. # If set, this will be used as an opaque color. If unset, this represents
+                                  # a transparent color.
+                                "themeColor": "A String", # An opaque theme color.
+                                "rgbColor": { # An RGB color. # An opaque RGB color.
+                                  "blue": 3.14, # The blue component of the color, from 0.0 to 1.0.
+                                  "green": 3.14, # The green component of the color, from 0.0 to 1.0.
+                                  "red": 3.14, # The red component of the color, from 0.0 to 1.0.
+                                },
+                              },
+                            },
+                            "bold": True or False, # Whether or not the text is bold.
+                            "baselineOffset": "A String", # The text's vertical offset from its normal position.
+                                #
+                                # Text with `SUPERSCRIPT` or `SUBSCRIPT` baseline offsets is automatically
+                                # rendered in a smaller font size, computed based on the `font_size` field.
+                                # The `font_size` itself is not affected by changes in this field.
+                            "strikethrough": True or False, # Whether or not the text is struck through.
+                            "smallCaps": True or False, # Whether or not the text is in small capital letters.
+                            "fontFamily": "A String", # The font family of the text.
+                                #
+                                # The font family can be any font from the Font menu in Slides or from
+                                # [Google Fonts] (https://fonts.google.com/). If the font name is
+                                # unrecognized, the text is rendered in `Arial`.
+                                #
+                                # Some fonts can affect the weight of the text. If an update request
+                                # specifies values for both `font_family` and `bold`, the explicitly-set
+                                # `bold` value is used.
+                            "link": { # A hypertext link. # The hyperlink destination of the text. If unset, there is no link. Links
+                                # are not inherited from parent text.
+                                #
+                                # Changing the link in an update request causes some other changes to the
+                                # text style of the range:
+                                #
+                                # * When setting a link, the text foreground color will be set to
+                                #   ThemeColorType.HYPERLINK and the text will
+                                #   be underlined. If these fields are modified in the same
+                                #   request, those values will be used instead of the link defaults.
+                                # * Setting a link on a text range that overlaps with an existing link will
+                                #   also update the existing link to point to the new URL.
+                                # * Links are not settable on newline characters. As a result, setting a link
+                                #   on a text range that crosses a paragraph boundary, such as `"ABC\n123"`,
+                                #   will separate the newline character(s) into their own text runs. The
+                                #   link will be applied separately to the runs before and after the newline.
+                                # * Removing a link will update the text style of the range to match the
+                                #   style of the preceding text (or the default text styles if the preceding
+                                #   text is another link) unless different styles are being set in the same
+                                #   request.
+                              "url": "A String", # If set, indicates this is a link to the external web page at this URL.
+                              "pageObjectId": "A String", # If set, indicates this is a link to the specific page in this
+                                  # presentation with this ID. A page with this ID may not exist.
+                              "slideIndex": 42, # If set, indicates this is a link to the slide at this zero-based index
+                                  # in the presentation. There may not be a slide at this index.
+                              "relativeLink": "A String", # If set, indicates this is a link to a slide in this presentation,
+                                  # addressed by its position.
+                            },
+                            "italic": True or False, # Whether or not the text is italicized.
+                            "fontSize": { # A magnitude in a single direction in the specified units. # The size of the text's font. When read, the `font_size` will specified in
+                                # points.
+                              "magnitude": 3.14, # The magnitude.
+                              "unit": "A String", # The units for magnitude.
+                            },
+                            "underline": True or False, # Whether or not the text is underlined.
+                            "backgroundColor": { # A color that can either be fully opaque or fully transparent. # The background color of the text. If set, the color is either opaque or
+                                # transparent, depending on if the `opaque_color` field in it is set.
+                              "opaqueColor": { # A themeable solid color value. # If set, this will be used as an opaque color. If unset, this represents
+                                  # a transparent color.
+                                "themeColor": "A String", # An opaque theme color.
+                                "rgbColor": { # An RGB color. # An opaque RGB color.
+                                  "blue": 3.14, # The blue component of the color, from 0.0 to 1.0.
+                                  "green": 3.14, # The green component of the color, from 0.0 to 1.0.
+                                  "red": 3.14, # The red component of the color, from 0.0 to 1.0.
+                                },
+                              },
+                            },
+                          },
+                          "type": "A String", # The type of this auto text.
+                        },
+                        "endIndex": 42, # The zero-based end index of this text element, exclusive, in Unicode code
+                            # units.
+                        "startIndex": 42, # The zero-based start index of this text element, in Unicode code units.
+                        "paragraphMarker": { # A TextElement kind that represents the beginning of a new paragraph. # A marker representing the beginning of a new paragraph.
+                            #
+                            # The `start_index` and `end_index` of this TextElement represent the
+                            # range of the paragraph. Other TextElements with an index range contained
+                            # inside this paragraph's range are considered to be part of this
+                            # paragraph. The range of indices of two separate paragraphs will never
+                            # overlap.
+                          "style": { # Styles that apply to a whole paragraph. # The paragraph's style
+                              #
+                              # If this text is contained in a shape with a parent placeholder, then these paragraph styles may be
+                              # inherited from the parent. Which paragraph styles are inherited depend on the
+                              # nesting level of lists:
+                              #
+                              # * A paragraph not in a list will inherit its paragraph style from the
+                              #   paragraph at the 0 nesting level of the list inside the parent placeholder.
+                              # * A paragraph in a list will inherit its paragraph style from the paragraph
+                              #   at its corresponding nesting level of the list inside the parent
+                              #   placeholder.
+                              #
+                              # Inherited paragraph styles are represented as unset fields in this message.
+                            "spacingMode": "A String", # The spacing mode for the paragraph. This property is read-only.
+                            "direction": "A String", # The text direction of this paragraph. This property is read-only.
+                            "spaceBelow": { # A magnitude in a single direction in the specified units. # The amount of extra space above the paragraph. If unset, the value is
+                                # inherited from the parent. This property is read-only.
+                              "magnitude": 3.14, # The magnitude.
+                              "unit": "A String", # The units for magnitude.
+                            },
+                            "lineSpacing": 3.14, # The amount of space between lines, as a percentage of normal, where normal
+                                # is represented as 100.0. If unset, the value is inherited from the parent.
+                                # This property is read-only.
+                            "indentStart": { # A magnitude in a single direction in the specified units. # The amount indentation for the paragraph on the side that corresponds to
+                                # the start of the text, based on the current text direction. If unset, the
+                                # value is inherited from the parent. This property is read-only.
+                              "magnitude": 3.14, # The magnitude.
+                              "unit": "A String", # The units for magnitude.
+                            },
+                            "spaceAbove": { # A magnitude in a single direction in the specified units. # The amount of extra space above the paragraph. If unset, the value is
+                                # inherited from the parent. This property is read-only.
+                              "magnitude": 3.14, # The magnitude.
+                              "unit": "A String", # The units for magnitude.
+                            },
+                            "indentEnd": { # A magnitude in a single direction in the specified units. # The amount indentation for the paragraph on the side that corresponds to
+                                # the end of the text, based on the current text direction. If unset, the
+                                # value is inherited from the parent. This property is read-only.
+                              "magnitude": 3.14, # The magnitude.
+                              "unit": "A String", # The units for magnitude.
+                            },
+                            "indentFirstLine": { # A magnitude in a single direction in the specified units. # The amount of indentation for the start of the first line of the paragraph.
+                                # If unset, the value is inherited from the parent. This property is
+                                # read-only.
+                              "magnitude": 3.14, # The magnitude.
+                              "unit": "A String", # The units for magnitude.
+                            },
+                            "alignment": "A String", # The text alignment for this paragraph. This property is read-only.
+                          },
+                          "bullet": { # Describes the bullet of a paragraph. # The bullet for this paragraph. If not present, the paragraph does not
+                              # belong to a list.
+                            "nestingLevel": 42, # The nesting level of this paragraph in the list.
+                            "listId": "A String", # The ID of the list this paragraph belongs to.
+                            "bulletStyle": { # Represents the styling that can be applied to a TextRun. # The paragraph specific text style applied to this bullet.
+                                #
+                                # If this text is contained in a shape with a parent placeholder, then these text styles may be
+                                # inherited from the parent. Which text styles are inherited depend on the
+                                # nesting level of lists:
+                                #
+                                # * A text run in a paragraph that is not in a list will inherit its text style
+                                #   from the the newline character in the paragraph at the 0 nesting level of
+                                #   the list inside the parent placeholder.
+                                # * A text run in a paragraph that is in a list will inherit its text style
+                                #   from the newline character in the paragraph at its corresponding nesting
+                                #   level of the list inside the parent placeholder.
+                                #
+                                # Inherited text styles are represented as unset fields in this message. If
+                                # text is contained in a shape without a parent placeholder, unsetting these
+                                # fields will revert the style to a value matching the defaults in the Slides
+                                # editor.
+                              "foregroundColor": { # A color that can either be fully opaque or fully transparent. # The color of the text itself. If set, the color is either opaque or
+                                  # transparent, depending on if the `opaque_color` field in it is set.
+                                "opaqueColor": { # A themeable solid color value. # If set, this will be used as an opaque color. If unset, this represents
+                                    # a transparent color.
+                                  "themeColor": "A String", # An opaque theme color.
+                                  "rgbColor": { # An RGB color. # An opaque RGB color.
+                                    "blue": 3.14, # The blue component of the color, from 0.0 to 1.0.
+                                    "green": 3.14, # The green component of the color, from 0.0 to 1.0.
+                                    "red": 3.14, # The red component of the color, from 0.0 to 1.0.
+                                  },
+                                },
+                              },
+                              "bold": True or False, # Whether or not the text is bold.
+                              "baselineOffset": "A String", # The text's vertical offset from its normal position.
+                                  #
+                                  # Text with `SUPERSCRIPT` or `SUBSCRIPT` baseline offsets is automatically
+                                  # rendered in a smaller font size, computed based on the `font_size` field.
+                                  # The `font_size` itself is not affected by changes in this field.
+                              "strikethrough": True or False, # Whether or not the text is struck through.
+                              "smallCaps": True or False, # Whether or not the text is in small capital letters.
+                              "fontFamily": "A String", # The font family of the text.
+                                  #
+                                  # The font family can be any font from the Font menu in Slides or from
+                                  # [Google Fonts] (https://fonts.google.com/). If the font name is
+                                  # unrecognized, the text is rendered in `Arial`.
+                                  #
+                                  # Some fonts can affect the weight of the text. If an update request
+                                  # specifies values for both `font_family` and `bold`, the explicitly-set
+                                  # `bold` value is used.
+                              "link": { # A hypertext link. # The hyperlink destination of the text. If unset, there is no link. Links
+                                  # are not inherited from parent text.
+                                  #
+                                  # Changing the link in an update request causes some other changes to the
+                                  # text style of the range:
+                                  #
+                                  # * When setting a link, the text foreground color will be set to
+                                  #   ThemeColorType.HYPERLINK and the text will
+                                  #   be underlined. If these fields are modified in the same
+                                  #   request, those values will be used instead of the link defaults.
+                                  # * Setting a link on a text range that overlaps with an existing link will
+                                  #   also update the existing link to point to the new URL.
+                                  # * Links are not settable on newline characters. As a result, setting a link
+                                  #   on a text range that crosses a paragraph boundary, such as `"ABC\n123"`,
+                                  #   will separate the newline character(s) into their own text runs. The
+                                  #   link will be applied separately to the runs before and after the newline.
+                                  # * Removing a link will update the text style of the range to match the
+                                  #   style of the preceding text (or the default text styles if the preceding
+                                  #   text is another link) unless different styles are being set in the same
+                                  #   request.
+                                "url": "A String", # If set, indicates this is a link to the external web page at this URL.
+                                "pageObjectId": "A String", # If set, indicates this is a link to the specific page in this
+                                    # presentation with this ID. A page with this ID may not exist.
+                                "slideIndex": 42, # If set, indicates this is a link to the slide at this zero-based index
+                                    # in the presentation. There may not be a slide at this index.
+                                "relativeLink": "A String", # If set, indicates this is a link to a slide in this presentation,
+                                    # addressed by its position.
+                              },
+                              "italic": True or False, # Whether or not the text is italicized.
+                              "fontSize": { # A magnitude in a single direction in the specified units. # The size of the text's font. When read, the `font_size` will specified in
+                                  # points.
+                                "magnitude": 3.14, # The magnitude.
+                                "unit": "A String", # The units for magnitude.
+                              },
+                              "underline": True or False, # Whether or not the text is underlined.
+                              "backgroundColor": { # A color that can either be fully opaque or fully transparent. # The background color of the text. If set, the color is either opaque or
+                                  # transparent, depending on if the `opaque_color` field in it is set.
+                                "opaqueColor": { # A themeable solid color value. # If set, this will be used as an opaque color. If unset, this represents
+                                    # a transparent color.
+                                  "themeColor": "A String", # An opaque theme color.
+                                  "rgbColor": { # An RGB color. # An opaque RGB color.
+                                    "blue": 3.14, # The blue component of the color, from 0.0 to 1.0.
+                                    "green": 3.14, # The green component of the color, from 0.0 to 1.0.
+                                    "red": 3.14, # The red component of the color, from 0.0 to 1.0.
+                                  },
+                                },
+                              },
+                            },
+                            "glyph": "A String", # The rendered bullet glyph for this paragraph.
+                          },
+                        },
+                        "textRun": { # A TextElement kind that represents a run of text that all has the same # A TextElement representing a run of text where all of the characters
+                            # in the run have the same TextStyle.
+                            #
+                            # The `start_index` and `end_index` of TextRuns will always be fully
+                            # contained in the index range of a single `paragraph_marker` TextElement.
+                            # In other words, a TextRun will never span multiple paragraphs.
+                            # styling.
+                          "content": "A String", # The text of this run.
+                          "style": { # Represents the styling that can be applied to a TextRun. # The styling applied to this run.
+                              #
+                              # If this text is contained in a shape with a parent placeholder, then these text styles may be
+                              # inherited from the parent. Which text styles are inherited depend on the
+                              # nesting level of lists:
+                              #
+                              # * A text run in a paragraph that is not in a list will inherit its text style
+                              #   from the the newline character in the paragraph at the 0 nesting level of
+                              #   the list inside the parent placeholder.
+                              # * A text run in a paragraph that is in a list will inherit its text style
+                              #   from the newline character in the paragraph at its corresponding nesting
+                              #   level of the list inside the parent placeholder.
+                              #
+                              # Inherited text styles are represented as unset fields in this message. If
+                              # text is contained in a shape without a parent placeholder, unsetting these
+                              # fields will revert the style to a value matching the defaults in the Slides
+                              # editor.
+                            "foregroundColor": { # A color that can either be fully opaque or fully transparent. # The color of the text itself. If set, the color is either opaque or
+                                # transparent, depending on if the `opaque_color` field in it is set.
+                              "opaqueColor": { # A themeable solid color value. # If set, this will be used as an opaque color. If unset, this represents
+                                  # a transparent color.
+                                "themeColor": "A String", # An opaque theme color.
+                                "rgbColor": { # An RGB color. # An opaque RGB color.
+                                  "blue": 3.14, # The blue component of the color, from 0.0 to 1.0.
+                                  "green": 3.14, # The green component of the color, from 0.0 to 1.0.
+                                  "red": 3.14, # The red component of the color, from 0.0 to 1.0.
+                                },
+                              },
+                            },
+                            "bold": True or False, # Whether or not the text is bold.
+                            "baselineOffset": "A String", # The text's vertical offset from its normal position.
+                                #
+                                # Text with `SUPERSCRIPT` or `SUBSCRIPT` baseline offsets is automatically
+                                # rendered in a smaller font size, computed based on the `font_size` field.
+                                # The `font_size` itself is not affected by changes in this field.
+                            "strikethrough": True or False, # Whether or not the text is struck through.
+                            "smallCaps": True or False, # Whether or not the text is in small capital letters.
+                            "fontFamily": "A String", # The font family of the text.
+                                #
+                                # The font family can be any font from the Font menu in Slides or from
+                                # [Google Fonts] (https://fonts.google.com/). If the font name is
+                                # unrecognized, the text is rendered in `Arial`.
+                                #
+                                # Some fonts can affect the weight of the text. If an update request
+                                # specifies values for both `font_family` and `bold`, the explicitly-set
+                                # `bold` value is used.
+                            "link": { # A hypertext link. # The hyperlink destination of the text. If unset, there is no link. Links
+                                # are not inherited from parent text.
+                                #
+                                # Changing the link in an update request causes some other changes to the
+                                # text style of the range:
+                                #
+                                # * When setting a link, the text foreground color will be set to
+                                #   ThemeColorType.HYPERLINK and the text will
+                                #   be underlined. If these fields are modified in the same
+                                #   request, those values will be used instead of the link defaults.
+                                # * Setting a link on a text range that overlaps with an existing link will
+                                #   also update the existing link to point to the new URL.
+                                # * Links are not settable on newline characters. As a result, setting a link
+                                #   on a text range that crosses a paragraph boundary, such as `"ABC\n123"`,
+                                #   will separate the newline character(s) into their own text runs. The
+                                #   link will be applied separately to the runs before and after the newline.
+                                # * Removing a link will update the text style of the range to match the
+                                #   style of the preceding text (or the default text styles if the preceding
+                                #   text is another link) unless different styles are being set in the same
+                                #   request.
+                              "url": "A String", # If set, indicates this is a link to the external web page at this URL.
+                              "pageObjectId": "A String", # If set, indicates this is a link to the specific page in this
+                                  # presentation with this ID. A page with this ID may not exist.
+                              "slideIndex": 42, # If set, indicates this is a link to the slide at this zero-based index
+                                  # in the presentation. There may not be a slide at this index.
+                              "relativeLink": "A String", # If set, indicates this is a link to a slide in this presentation,
+                                  # addressed by its position.
+                            },
+                            "italic": True or False, # Whether or not the text is italicized.
+                            "fontSize": { # A magnitude in a single direction in the specified units. # The size of the text's font. When read, the `font_size` will specified in
+                                # points.
+                              "magnitude": 3.14, # The magnitude.
+                              "unit": "A String", # The units for magnitude.
+                            },
+                            "underline": True or False, # Whether or not the text is underlined.
+                            "backgroundColor": { # A color that can either be fully opaque or fully transparent. # The background color of the text. If set, the color is either opaque or
+                                # transparent, depending on if the `opaque_color` field in it is set.
+                              "opaqueColor": { # A themeable solid color value. # If set, this will be used as an opaque color. If unset, this represents
+                                  # a transparent color.
+                                "themeColor": "A String", # An opaque theme color.
+                                "rgbColor": { # An RGB color. # An opaque RGB color.
+                                  "blue": 3.14, # The blue component of the color, from 0.0 to 1.0.
+                                  "green": 3.14, # The green component of the color, from 0.0 to 1.0.
+                                  "red": 3.14, # The red component of the color, from 0.0 to 1.0.
+                                },
+                              },
+                            },
+                          },
+                        },
+                      },
+                    ],
+                    "lists": { # The bulleted lists contained in this text, keyed by list ID.
+                      "a_key": { # A List describes the look and feel of bullets belonging to paragraphs
+                          # associated with a list. A paragraph that is part of a list has an implicit
+                          # reference to that list's ID.
+                        "nestingLevel": { # A map of nesting levels to the properties of bullets at the associated
+                            # level. A list has at most nine levels of nesting, so the possible values
+                            # for the keys of this map are 0 through 8, inclusive.
+                          "a_key": { # Contains properties describing the look and feel of a list bullet at a given
+                              # level of nesting.
+                            "bulletStyle": { # Represents the styling that can be applied to a TextRun. # The style of a bullet at this level of nesting.
+                                #
+                                # If this text is contained in a shape with a parent placeholder, then these text styles may be
+                                # inherited from the parent. Which text styles are inherited depend on the
+                                # nesting level of lists:
+                                #
+                                # * A text run in a paragraph that is not in a list will inherit its text style
+                                #   from the the newline character in the paragraph at the 0 nesting level of
+                                #   the list inside the parent placeholder.
+                                # * A text run in a paragraph that is in a list will inherit its text style
+                                #   from the newline character in the paragraph at its corresponding nesting
+                                #   level of the list inside the parent placeholder.
+                                #
+                                # Inherited text styles are represented as unset fields in this message. If
+                                # text is contained in a shape without a parent placeholder, unsetting these
+                                # fields will revert the style to a value matching the defaults in the Slides
+                                # editor.
+                              "foregroundColor": { # A color that can either be fully opaque or fully transparent. # The color of the text itself. If set, the color is either opaque or
+                                  # transparent, depending on if the `opaque_color` field in it is set.
+                                "opaqueColor": { # A themeable solid color value. # If set, this will be used as an opaque color. If unset, this represents
+                                    # a transparent color.
+                                  "themeColor": "A String", # An opaque theme color.
+                                  "rgbColor": { # An RGB color. # An opaque RGB color.
+                                    "blue": 3.14, # The blue component of the color, from 0.0 to 1.0.
+                                    "green": 3.14, # The green component of the color, from 0.0 to 1.0.
+                                    "red": 3.14, # The red component of the color, from 0.0 to 1.0.
+                                  },
+                                },
+                              },
+                              "bold": True or False, # Whether or not the text is bold.
+                              "baselineOffset": "A String", # The text's vertical offset from its normal position.
+                                  #
+                                  # Text with `SUPERSCRIPT` or `SUBSCRIPT` baseline offsets is automatically
+                                  # rendered in a smaller font size, computed based on the `font_size` field.
+                                  # The `font_size` itself is not affected by changes in this field.
+                              "strikethrough": True or False, # Whether or not the text is struck through.
+                              "smallCaps": True or False, # Whether or not the text is in small capital letters.
+                              "fontFamily": "A String", # The font family of the text.
+                                  #
+                                  # The font family can be any font from the Font menu in Slides or from
+                                  # [Google Fonts] (https://fonts.google.com/). If the font name is
+                                  # unrecognized, the text is rendered in `Arial`.
+                                  #
+                                  # Some fonts can affect the weight of the text. If an update request
+                                  # specifies values for both `font_family` and `bold`, the explicitly-set
+                                  # `bold` value is used.
+                              "link": { # A hypertext link. # The hyperlink destination of the text. If unset, there is no link. Links
+                                  # are not inherited from parent text.
+                                  #
+                                  # Changing the link in an update request causes some other changes to the
+                                  # text style of the range:
+                                  #
+                                  # * When setting a link, the text foreground color will be set to
+                                  #   ThemeColorType.HYPERLINK and the text will
+                                  #   be underlined. If these fields are modified in the same
+                                  #   request, those values will be used instead of the link defaults.
+                                  # * Setting a link on a text range that overlaps with an existing link will
+                                  #   also update the existing link to point to the new URL.
+                                  # * Links are not settable on newline characters. As a result, setting a link
+                                  #   on a text range that crosses a paragraph boundary, such as `"ABC\n123"`,
+                                  #   will separate the newline character(s) into their own text runs. The
+                                  #   link will be applied separately to the runs before and after the newline.
+                                  # * Removing a link will update the text style of the range to match the
+                                  #   style of the preceding text (or the default text styles if the preceding
+                                  #   text is another link) unless different styles are being set in the same
+                                  #   request.
+                                "url": "A String", # If set, indicates this is a link to the external web page at this URL.
+                                "pageObjectId": "A String", # If set, indicates this is a link to the specific page in this
+                                    # presentation with this ID. A page with this ID may not exist.
+                                "slideIndex": 42, # If set, indicates this is a link to the slide at this zero-based index
+                                    # in the presentation. There may not be a slide at this index.
+                                "relativeLink": "A String", # If set, indicates this is a link to a slide in this presentation,
+                                    # addressed by its position.
+                              },
+                              "italic": True or False, # Whether or not the text is italicized.
+                              "fontSize": { # A magnitude in a single direction in the specified units. # The size of the text's font. When read, the `font_size` will specified in
+                                  # points.
+                                "magnitude": 3.14, # The magnitude.
+                                "unit": "A String", # The units for magnitude.
+                              },
+                              "underline": True or False, # Whether or not the text is underlined.
+                              "backgroundColor": { # A color that can either be fully opaque or fully transparent. # The background color of the text. If set, the color is either opaque or
+                                  # transparent, depending on if the `opaque_color` field in it is set.
+                                "opaqueColor": { # A themeable solid color value. # If set, this will be used as an opaque color. If unset, this represents
+                                    # a transparent color.
+                                  "themeColor": "A String", # An opaque theme color.
+                                  "rgbColor": { # An RGB color. # An opaque RGB color.
+                                    "blue": 3.14, # The blue component of the color, from 0.0 to 1.0.
+                                    "green": 3.14, # The green component of the color, from 0.0 to 1.0.
+                                    "red": 3.14, # The red component of the color, from 0.0 to 1.0.
+                                  },
+                                },
+                              },
+                            },
+                          },
+                        },
+                        "listId": "A String", # The ID of the list.
+                      },
+                    },
+                  },
+                  "rowSpan": 42, # Row span of the cell.
+                  "tableCellProperties": { # The properties of the TableCell. # The properties of the table cell.
+                    "tableCellBackgroundFill": { # The table cell background fill. # The background fill of the table cell. The default fill matches the fill
+                        # for newly created table cells in the Slides editor.
+                      "solidFill": { # A solid color fill. The page or page element is filled entirely with the # Solid color fill.
+                          # specified color value.
+                          #
+                          # If any field is unset, its value may be inherited from a parent placeholder
+                          # if it exists.
+                        "color": { # A themeable solid color value. # The color value of the solid fill.
+                          "themeColor": "A String", # An opaque theme color.
+                          "rgbColor": { # An RGB color. # An opaque RGB color.
+                            "blue": 3.14, # The blue component of the color, from 0.0 to 1.0.
+                            "green": 3.14, # The green component of the color, from 0.0 to 1.0.
+                            "red": 3.14, # The red component of the color, from 0.0 to 1.0.
+                          },
+                        },
+                        "alpha": 3.14, # The fraction of this `color` that should be applied to the pixel.
+                            # That is, the final pixel color is defined by the equation:
+                            #
+                            #   pixel color = alpha * (color) + (1.0 - alpha) * (background color)
+                            #
+                            # This means that a value of 1.0 corresponds to a solid color, whereas
+                            # a value of 0.0 corresponds to a completely transparent color.
+                      },
+                      "propertyState": "A String", # The background fill property state.
+                          #
+                          # Updating the the fill on a table cell will implicitly update this field
+                          # to `RENDERED`, unless another value is specified in the same request. To
+                          # have no fill on a table cell, set this field to `NOT_RENDERED`. In this
+                          # case, any other fill fields set in the same request will be ignored.
+                    },
+                  },
+                  "location": { # A location of a single table cell within a table. # The location of the cell within the table.
+                    "rowIndex": 42, # The 0-based row index.
+                    "columnIndex": 42, # The 0-based column index.
+                  },
+                  "columnSpan": 42, # Column span of the cell.
+                },
+              ],
+              "rowHeight": { # A magnitude in a single direction in the specified units. # Height of a row.
+                "magnitude": 3.14, # The magnitude.
+                "unit": "A String", # The units for magnitude.
+              },
+            },
+          ],
+          "rows": 42, # Number of rows in the table.
+          "columns": 42, # Number of columns in the table.
+        },
+        "line": { # A PageElement kind representing a # A line page element.
+            # line, curved connector, or bent connector.
+          "lineProperties": { # The properties of the Line. # The properties of the line.
+              #
+              # When unset, these fields default to values that match the appearance of
+              # new lines created in the Slides editor.
+            "dashStyle": "A String", # The dash style of the line.
+            "weight": { # A magnitude in a single direction in the specified units. # The thickness of the line.
+              "magnitude": 3.14, # The magnitude.
+              "unit": "A String", # The units for magnitude.
+            },
+            "endArrow": "A String", # The style of the arrow at the end of the line.
+            "link": { # A hypertext link. # The hyperlink destination of the line. If unset, there is no link.
+              "url": "A String", # If set, indicates this is a link to the external web page at this URL.
+              "pageObjectId": "A String", # If set, indicates this is a link to the specific page in this
+                  # presentation with this ID. A page with this ID may not exist.
+              "slideIndex": 42, # If set, indicates this is a link to the slide at this zero-based index
+                  # in the presentation. There may not be a slide at this index.
+              "relativeLink": "A String", # If set, indicates this is a link to a slide in this presentation,
+                  # addressed by its position.
+            },
+            "startArrow": "A String", # The style of the arrow at the beginning of the line.
+            "lineFill": { # The fill of the line. # The fill of the line. The default line fill matches the defaults for new
+                # lines created in the Slides editor.
+              "solidFill": { # A solid color fill. The page or page element is filled entirely with the # Solid color fill.
+                  # specified color value.
+                  #
+                  # If any field is unset, its value may be inherited from a parent placeholder
+                  # if it exists.
+                "color": { # A themeable solid color value. # The color value of the solid fill.
+                  "themeColor": "A String", # An opaque theme color.
+                  "rgbColor": { # An RGB color. # An opaque RGB color.
+                    "blue": 3.14, # The blue component of the color, from 0.0 to 1.0.
+                    "green": 3.14, # The green component of the color, from 0.0 to 1.0.
+                    "red": 3.14, # The red component of the color, from 0.0 to 1.0.
+                  },
+                },
+                "alpha": 3.14, # The fraction of this `color` that should be applied to the pixel.
+                    # That is, the final pixel color is defined by the equation:
+                    #
+                    #   pixel color = alpha * (color) + (1.0 - alpha) * (background color)
+                    #
+                    # This means that a value of 1.0 corresponds to a solid color, whereas
+                    # a value of 0.0 corresponds to a completely transparent color.
+              },
+            },
+          },
+          "lineType": "A String", # The type of the line.
+        },
+        "size": { # A width and height. # The size of the page element.
+          "width": { # A magnitude in a single direction in the specified units. # The width of the object.
+            "magnitude": 3.14, # The magnitude.
+            "unit": "A String", # The units for magnitude.
+          },
+          "height": { # A magnitude in a single direction in the specified units. # The height of the object.
+            "magnitude": 3.14, # The magnitude.
+            "unit": "A String", # The units for magnitude.
+          },
+        },
+        "elementGroup": { # A PageElement kind representing a # A collection of page elements joined as a single unit.
+            # joined collection of PageElements.
+          "children": [ # The collection of elements in the group. The minimum size of a group is 2.
+            # Object with schema name: PageElement
+          ],
+        },
+      },
+    ],
+    "objectId": "A String", # The object ID for this page. Object IDs used by
+        # Page and
+        # PageElement share the same namespace.
+    "pageProperties": { # The properties of the Page. # The properties of the page.
+        #
+        # The page will inherit properties from the parent page. Depending on the page
+        # type the hierarchy is defined in either
+        # SlideProperties or
+        # LayoutProperties.
+      "pageBackgroundFill": { # The page background fill. # The background fill of the page. If unset, the background fill is inherited
+          # from a parent page if it exists. If the page has no parent, then the
+          # background fill defaults to the corresponding fill in the Slides editor.
+        "solidFill": { # A solid color fill. The page or page element is filled entirely with the # Solid color fill.
+            # specified color value.
+            #
+            # If any field is unset, its value may be inherited from a parent placeholder
+            # if it exists.
+          "color": { # A themeable solid color value. # The color value of the solid fill.
+            "themeColor": "A String", # An opaque theme color.
+            "rgbColor": { # An RGB color. # An opaque RGB color.
+              "blue": 3.14, # The blue component of the color, from 0.0 to 1.0.
+              "green": 3.14, # The green component of the color, from 0.0 to 1.0.
+              "red": 3.14, # The red component of the color, from 0.0 to 1.0.
+            },
+          },
+          "alpha": 3.14, # The fraction of this `color` that should be applied to the pixel.
+              # That is, the final pixel color is defined by the equation:
+              #
+              #   pixel color = alpha * (color) + (1.0 - alpha) * (background color)
+              #
+              # This means that a value of 1.0 corresponds to a solid color, whereas
+              # a value of 0.0 corresponds to a completely transparent color.
+        },
+        "propertyState": "A String", # The background fill property state.
+            #
+            # Updating the the fill on a page will implicitly update this field to
+            # `RENDERED`, unless another value is specified in the same request. To
+            # have no fill on a page, set this field to `NOT_RENDERED`. In this case,
+            # any other fill fields set in the same request will be ignored.
+        "stretchedPictureFill": { # The stretched picture fill. The page or page element is filled entirely with # Stretched picture fill.
+            # the specified picture. The picture is stretched to fit its container.
+          "contentUrl": "A String", # Reading the content_url:
+              #
+              # An URL to a picture with a default lifetime of 30 minutes.
+              # This URL is tagged with the account of the requester. Anyone with the URL
+              # effectively accesses the picture as the original requester. Access to the
+              # picture may be lost if the presentation's sharing settings change.
+              #
+              # Writing the content_url:
+              #
+              # The picture is fetched once at insertion time and a copy is stored for
+              # display inside the presentation. Pictures must be less than 50MB in size,
+              # cannot exceed 25 megapixels, and must be in either in PNG, JPEG, or GIF
+              # format.
+          "size": { # A width and height. # The original size of the picture fill. This field is read-only.
+            "width": { # A magnitude in a single direction in the specified units. # The width of the object.
+              "magnitude": 3.14, # The magnitude.
+              "unit": "A String", # The units for magnitude.
+            },
+            "height": { # A magnitude in a single direction in the specified units. # The height of the object.
+              "magnitude": 3.14, # The magnitude.
+              "unit": "A String", # The units for magnitude.
+            },
+          },
+        },
+      },
+      "colorScheme": { # The palette of predefined colors for a page. # The color scheme of the page. If unset, the color scheme is inherited from
+          # a parent page. If the page has no parent, the color scheme uses a default
+          # Slides color scheme. This field is read-only.
+        "colors": [ # The ThemeColorType and corresponding concrete color pairs.
+          { # A pair mapping a theme color type to the concrete color it represents.
+            "color": { # An RGB color. # The concrete color corresponding to the theme color type above.
+              "blue": 3.14, # The blue component of the color, from 0.0 to 1.0.
+              "green": 3.14, # The green component of the color, from 0.0 to 1.0.
+              "red": 3.14, # The red component of the color, from 0.0 to 1.0.
+            },
+            "type": "A String", # The type of the theme color.
+          },
+        ],
+      },
+    },
+    "pageType": "A String", # The type of the page.
+    "slideProperties": { # The properties of Page that are only # Slide specific properties. Only set if page_type = SLIDE.
+        # relevant for pages with page_type SLIDE.
+      "masterObjectId": "A String", # The object ID of the master that this slide is based on.
+      "layoutObjectId": "A String", # The object ID of the layout that this slide is based on.
+    },
+  }</pre>
+</div>
+
+</body></html>
\ No newline at end of file
diff --git a/docs/dyn/speech_v1beta1.speech.html b/docs/dyn/speech_v1beta1.speech.html
index 2f96060..628ebbc 100644
--- a/docs/dyn/speech_v1beta1.speech.html
+++ b/docs/dyn/speech_v1beta1.speech.html
@@ -76,15 +76,17 @@
 <h2>Instance Methods</h2>
 <p class="toc_element">
   <code><a href="#asyncrecognize">asyncrecognize(body, x__xgafv=None)</a></code></p>
-<p class="firstline">Perform asynchronous speech-recognition: receive results via the</p>
+<p class="firstline">Performs asynchronous speech recognition: receive results via the</p>
 <p class="toc_element">
   <code><a href="#syncrecognize">syncrecognize(body, x__xgafv=None)</a></code></p>
-<p class="firstline">Perform synchronous speech-recognition: receive results after all audio</p>
+<p class="firstline">Performs synchronous speech recognition: receive results after all audio</p>
 <h3>Method Details</h3>
 <div class="method">
     <code class="details" id="asyncrecognize">asyncrecognize(body, x__xgafv=None)</code>
-  <pre>Perform asynchronous speech-recognition: receive results via the
-google.longrunning.Operations interface. Returns either an
+  <pre>Performs asynchronous speech recognition: receive results via the
+[google.longrunning.Operations]
+(/speech/reference/rest/v1beta1/operations#Operation)
+interface. Returns either an
 `Operation.error` or an `Operation.response` which contains
 an `AsyncRecognizeResponse` message.
 
@@ -246,7 +248,7 @@
 
 <div class="method">
     <code class="details" id="syncrecognize">syncrecognize(body, x__xgafv=None)</code>
-  <pre>Perform synchronous speech-recognition: receive results after all audio
+  <pre>Performs synchronous speech recognition: receive results after all audio
 has been sent and processed.
 
 Args:
diff --git a/docs/dyn/sqladmin_v1beta3.tiers.html b/docs/dyn/sqladmin_v1beta3.tiers.html
index d58123b..70bcf3b 100644
--- a/docs/dyn/sqladmin_v1beta3.tiers.html
+++ b/docs/dyn/sqladmin_v1beta3.tiers.html
@@ -95,7 +95,7 @@
         "tier": "A String", # An identifier for the service tier, for example D1, D2 etc. For related information, see Pricing.
         "kind": "sql#tier", # This is always sql#tier.
         "RAM": "A String", # The maximum RAM usage of this tier in bytes.
-        "region": [ # The applicable regions for this tier. Can be us-east1, europe-west1, or asia-east1.
+        "region": [ # The applicable regions for this tier.
           "A String",
         ],
       },
diff --git a/docs/dyn/sqladmin_v1beta4.instances.html b/docs/dyn/sqladmin_v1beta4.instances.html
index 51805b7..f4b3ef0 100644
--- a/docs/dyn/sqladmin_v1beta4.instances.html
+++ b/docs/dyn/sqladmin_v1beta4.instances.html
@@ -123,6 +123,9 @@
   <code><a href="#stopReplica">stopReplica(project, instance)</a></code></p>
 <p class="firstline">Stops the replication in the read replica instance.</p>
 <p class="toc_element">
+  <code><a href="#truncateLog">truncateLog(project, instance, body)</a></code></p>
+<p class="firstline">Truncate MySQL general and slow query log tables</p>
+<p class="toc_element">
   <code><a href="#update">update(project, instance, body)</a></code></p>
 <p class="firstline">Updates settings of a Cloud SQL instance. Caution: This is not a partial update, so you must include values for all the settings that you want to retain. For partial updates, use patch.</p>
 <h3>Method Details</h3>
@@ -477,6 +480,7 @@
         { # Database instance IP Mapping.
           "timeToRetire": "A String", # The due time for this IP to be retired in RFC 3339 format, for example 2012-11-15T16:19:00.094Z. This field is only available when the IP is scheduled to be retired.
           "ipAddress": "A String", # The IP address assigned.
+          "type": "A String", # The type of this IP address. A PRIMARY address is an address that can accept incoming connections. An OUTGOING address is the source address of connections originating from the instance, if supported.
         },
       ],
       "databaseVersion": "A String", # The database engine type and version. The databaseVersion can not be changed after instance creation. Can be MYSQL_5_5, MYSQL_5_6 or MYSQL_5_7. Defaults to MYSQL_5_6. MYSQL_5_7 is applicable only to Second Generation instances.
@@ -710,6 +714,7 @@
       { # Database instance IP Mapping.
         "timeToRetire": "A String", # The due time for this IP to be retired in RFC 3339 format, for example 2012-11-15T16:19:00.094Z. This field is only available when the IP is scheduled to be retired.
         "ipAddress": "A String", # The IP address assigned.
+        "type": "A String", # The type of this IP address. A PRIMARY address is an address that can accept incoming connections. An OUTGOING address is the source address of connections originating from the instance, if supported.
       },
     ],
     "databaseVersion": "A String", # The database engine type and version. The databaseVersion can not be changed after instance creation. Can be MYSQL_5_5, MYSQL_5_6 or MYSQL_5_7. Defaults to MYSQL_5_6. MYSQL_5_7 is applicable only to Second Generation instances.
@@ -921,6 +926,7 @@
             { # Database instance IP Mapping.
               "timeToRetire": "A String", # The due time for this IP to be retired in RFC 3339 format, for example 2012-11-15T16:19:00.094Z. This field is only available when the IP is scheduled to be retired.
               "ipAddress": "A String", # The IP address assigned.
+              "type": "A String", # The type of this IP address. A PRIMARY address is an address that can accept incoming connections. An OUTGOING address is the source address of connections originating from the instance, if supported.
             },
           ],
           "databaseVersion": "A String", # The database engine type and version. The databaseVersion can not be changed after instance creation. Can be MYSQL_5_5, MYSQL_5_6 or MYSQL_5_7. Defaults to MYSQL_5_6. MYSQL_5_7 is applicable only to Second Generation instances.
@@ -1082,6 +1088,7 @@
       { # Database instance IP Mapping.
         "timeToRetire": "A String", # The due time for this IP to be retired in RFC 3339 format, for example 2012-11-15T16:19:00.094Z. This field is only available when the IP is scheduled to be retired.
         "ipAddress": "A String", # The IP address assigned.
+        "type": "A String", # The type of this IP address. A PRIMARY address is an address that can accept incoming connections. An OUTGOING address is the source address of connections originating from the instance, if supported.
       },
     ],
     "databaseVersion": "A String", # The database engine type and version. The databaseVersion can not be changed after instance creation. Can be MYSQL_5_5, MYSQL_5_6 or MYSQL_5_7. Defaults to MYSQL_5_6. MYSQL_5_7 is applicable only to Second Generation instances.
@@ -1700,6 +1707,86 @@
 </div>
 
 <div class="method">
+    <code class="details" id="truncateLog">truncateLog(project, instance, body)</code>
+  <pre>Truncate MySQL general and slow query log tables
+
+Args:
+  project: string, Project ID of the Cloud SQL project. (required)
+  instance: string, Cloud SQL instance ID. This does not include the project ID. (required)
+  body: object, The request body. (required)
+    The object takes the form of:
+
+{ # Instance truncate log request.
+    "truncateLogContext": { # Database Instance truncate log context. # Contains details about the truncate log operation.
+      "logType": "A String", # The type of log to truncate. Valid values are MYSQL_GENERAL_TABLE and MYSQL_SLOW_TABLE.
+      "kind": "sql#truncateLogContext", # This is always sql#truncateLogContext.
+    },
+  }
+
+
+Returns:
+  An object of the form:
+
+    { # An Operations resource contains information about database instance operations such as create, delete, and restart. Operations resources are created in response to operations that were initiated; you never create them directly.
+    "status": "A String", # The status of an operation. Valid values are PENDING, RUNNING, DONE, UNKNOWN.
+    "importContext": { # Database instance import context. # The context for import operation, if applicable.
+      "fileType": "A String", # The file type for the specified uri.
+          # SQL: The file contains SQL statements.
+          # CSV: The file contains CSV data.
+      "database": "A String", # The database (for example, guestbook) to which the import is made. If fileType is SQL and no database is specified, it is assumed that the database is specified in the file to be imported. If fileType is CSV, it must be specified.
+      "kind": "sql#importContext", # This is always sql#importContext.
+      "uri": "A String", # A path to the file in Google Cloud Storage from which the import is made. The URI is in the form gs://bucketName/fileName. Compressed gzip files (.gz) are supported when fileType is SQL.
+      "csvImportOptions": { # Options for importing data as CSV.
+        "table": "A String", # The table to which CSV data is imported.
+        "columns": [ # The columns to which CSV data is imported. If not specified, all columns of the database table are loaded with CSV data.
+          "A String",
+        ],
+      },
+    },
+    "kind": "sql#operation", # This is always sql#operation.
+    "name": "A String", # An identifier that uniquely identifies the operation. You can use this identifier to retrieve the Operations resource that has information about the operation.
+    "exportContext": { # Database instance export context. # The context for export operation, if applicable.
+      "kind": "sql#exportContext", # This is always sql#exportContext.
+      "fileType": "A String", # The file type for the specified uri.
+          # SQL: The file contains SQL statements.
+          # CSV: The file contains CSV data.
+      "uri": "A String", # The path to the file in Google Cloud Storage where the export will be stored. The URI is in the form gs://bucketName/fileName. If the file already exists, the operation fails. If fileType is SQL and the filename ends with .gz, the contents are compressed.
+      "csvExportOptions": { # Options for exporting data as CSV.
+        "selectQuery": "A String", # The select query used to extract the data.
+      },
+      "databases": [ # Databases (for example, guestbook) from which the export is made. If fileType is SQL and no database is specified, all databases are exported. If fileType is CSV, you can optionally specify at most one database to export. If csvExportOptions.selectQuery also specifies the database, this field will be ignored.
+        "A String",
+      ],
+      "sqlExportOptions": { # Options for exporting data as SQL statements.
+        "tables": [ # Tables to export, or that were exported, from the specified database. If you specify tables, specify one and only one database.
+          "A String",
+        ],
+        "schemaOnly": True or False, # Export only schemas.
+      },
+    },
+    "startTime": "A String", # The time this operation actually started in UTC timezone in RFC 3339 format, for example 2012-11-15T16:19:00.094Z.
+    "targetProject": "A String", # The project ID of the target instance related to this operation.
+    "targetId": "A String", # Name of the database instance related to this operation.
+    "operationType": "A String", # The type of the operation. Valid values are CREATE, DELETE, UPDATE, RESTART, IMPORT, EXPORT, BACKUP_VOLUME, RESTORE_VOLUME, CREATE_USER, DELETE_USER, CREATE_DATABASE, DELETE_DATABASE .
+    "targetLink": "A String", # The URI of the instance related to the operation.
+    "insertTime": "A String", # The time this operation was enqueued in UTC timezone in RFC 3339 format, for example 2012-11-15T16:19:00.094Z.
+    "error": { # Database instance operation errors list wrapper. # If errors occurred during processing of this operation, this field will be populated.
+      "kind": "sql#operationErrors", # This is always sql#operationErrors.
+      "errors": [ # The list of errors encountered while processing this operation.
+        { # Database instance operation error.
+          "kind": "sql#operationError", # This is always sql#operationError.
+          "code": "A String", # Identifies the specific error that occurred.
+          "message": "A String", # Additional information about the error encountered.
+        },
+      ],
+    },
+    "endTime": "A String", # The time this operation finished in UTC timezone in RFC 3339 format, for example 2012-11-15T16:19:00.094Z.
+    "selfLink": "A String", # The URI of this resource.
+    "user": "A String", # The email address of the user who initiated this operation.
+  }</pre>
+</div>
+
+<div class="method">
     <code class="details" id="update">update(project, instance, body)</code>
   <pre>Updates settings of a Cloud SQL instance. Caution: This is not a partial update, so you must include values for all the settings that you want to retain. For partial updates, use patch.
 
@@ -1719,6 +1806,7 @@
       { # Database instance IP Mapping.
         "timeToRetire": "A String", # The due time for this IP to be retired in RFC 3339 format, for example 2012-11-15T16:19:00.094Z. This field is only available when the IP is scheduled to be retired.
         "ipAddress": "A String", # The IP address assigned.
+        "type": "A String", # The type of this IP address. A PRIMARY address is an address that can accept incoming connections. An OUTGOING address is the source address of connections originating from the instance, if supported.
       },
     ],
     "databaseVersion": "A String", # The database engine type and version. The databaseVersion can not be changed after instance creation. Can be MYSQL_5_5, MYSQL_5_6 or MYSQL_5_7. Defaults to MYSQL_5_6. MYSQL_5_7 is applicable only to Second Generation instances.
diff --git a/docs/dyn/sqladmin_v1beta4.tiers.html b/docs/dyn/sqladmin_v1beta4.tiers.html
index b73f236..5c4199e 100644
--- a/docs/dyn/sqladmin_v1beta4.tiers.html
+++ b/docs/dyn/sqladmin_v1beta4.tiers.html
@@ -95,7 +95,7 @@
         "tier": "A String", # An identifier for the service tier, for example D1, D2 etc. For related information, see Pricing.
         "kind": "sql#tier", # This is always sql#tier.
         "RAM": "A String", # The maximum RAM usage of this tier in bytes.
-        "region": [ # The applicable regions for this tier. Can be us-east1, europe-west1 or asia-east1.
+        "region": [ # The applicable regions for this tier.
           "A String",
         ],
       },
diff --git a/docs/dyn/storage_v1.objects.html b/docs/dyn/storage_v1.objects.html
index 62dc691..8502dec 100644
--- a/docs/dyn/storage_v1.objects.html
+++ b/docs/dyn/storage_v1.objects.html
@@ -96,10 +96,10 @@
   <code><a href="#get_media">get_media(bucket, object, ifGenerationNotMatch=None, generation=None, ifMetagenerationMatch=None, ifGenerationMatch=None, ifMetagenerationNotMatch=None, projection=None)</a></code></p>
 <p class="firstline">Retrieves an object or its metadata.</p>
 <p class="toc_element">
-  <code><a href="#insert">insert(bucket, body=None, projection=None, media_body=None, predefinedAcl=None, ifGenerationMatch=None, ifGenerationNotMatch=None, name=None, ifMetagenerationMatch=None, contentEncoding=None, ifMetagenerationNotMatch=None)</a></code></p>
+  <code><a href="#insert">insert(bucket, body=None, projection=None, media_body=None, predefinedAcl=None, ifGenerationMatch=None, ifGenerationNotMatch=None, name=None, ifMetagenerationMatch=None, contentEncoding=None, media_mime_type=None, ifMetagenerationNotMatch=None)</a></code></p>
 <p class="firstline">Stores a new object and metadata.</p>
 <p class="toc_element">
-  <code><a href="#insert_media">insert_media(bucket, body=None, projection=None, media_body=None, predefinedAcl=None, ifGenerationMatch=None, ifGenerationNotMatch=None, name=None, ifMetagenerationMatch=None, contentEncoding=None, ifMetagenerationNotMatch=None)</a></code></p>
+  <code><a href="#insert_media">insert_media(bucket, body=None, projection=None, media_body=None, predefinedAcl=None, ifGenerationMatch=None, ifGenerationNotMatch=None, name=None, ifMetagenerationMatch=None, contentEncoding=None, media_mime_type=None, ifMetagenerationNotMatch=None)</a></code></p>
 <p class="firstline">Stores a new object and metadata.</p>
 <p class="toc_element">
   <code><a href="#list">list(bucket, projection=None, versions=None, delimiter=None, maxResults=None, pageToken=None, prefix=None)</a></code></p>
@@ -193,6 +193,7 @@
           "keySha256": "A String", # SHA256 hash value of the encryption key.
         },
         "metageneration": "A String", # The version of the metadata for this object at this generation. Used for preconditions and for detecting changes in metadata. A metageneration number is only meaningful in the context of a particular generation of a particular object.
+        "timeStorageClassUpdated": "A String", # The time at which the object's storage class was last changed. When the object is initially created, it will be set to timeCreated.
         "kind": "storage#object", # The kind of item this is. For objects, this is always storage#object.
         "name": "A String", # The name of this object. Required if not specified by URL parameter.
         "bucket": "A String", # The name of the bucket containing this object.
@@ -284,6 +285,7 @@
         "keySha256": "A String", # SHA256 hash value of the encryption key.
       },
       "metageneration": "A String", # The version of the metadata for this object at this generation. Used for preconditions and for detecting changes in metadata. A metageneration number is only meaningful in the context of a particular generation of a particular object.
+      "timeStorageClassUpdated": "A String", # The time at which the object's storage class was last changed. When the object is initially created, it will be set to timeCreated.
       "kind": "storage#object", # The kind of item this is. For objects, this is always storage#object.
       "name": "A String", # The name of this object. Required if not specified by URL parameter.
       "bucket": "A String", # The name of the bucket containing this object.
@@ -364,6 +366,7 @@
           "keySha256": "A String", # SHA256 hash value of the encryption key.
         },
         "metageneration": "A String", # The version of the metadata for this object at this generation. Used for preconditions and for detecting changes in metadata. A metageneration number is only meaningful in the context of a particular generation of a particular object.
+        "timeStorageClassUpdated": "A String", # The time at which the object's storage class was last changed. When the object is initially created, it will be set to timeCreated.
         "kind": "storage#object", # The kind of item this is. For objects, this is always storage#object.
         "name": "A String", # The name of this object. Required if not specified by URL parameter.
         "bucket": "A String", # The name of the bucket containing this object.
@@ -470,6 +473,7 @@
       "keySha256": "A String", # SHA256 hash value of the encryption key.
     },
     "metageneration": "A String", # The version of the metadata for this object at this generation. Used for preconditions and for detecting changes in metadata. A metageneration number is only meaningful in the context of a particular generation of a particular object.
+    "timeStorageClassUpdated": "A String", # The time at which the object's storage class was last changed. When the object is initially created, it will be set to timeCreated.
     "kind": "storage#object", # The kind of item this is. For objects, this is always storage#object.
     "name": "A String", # The name of this object. Required if not specified by URL parameter.
     "bucket": "A String", # The name of the bucket containing this object.
@@ -562,6 +566,7 @@
         "keySha256": "A String", # SHA256 hash value of the encryption key.
       },
       "metageneration": "A String", # The version of the metadata for this object at this generation. Used for preconditions and for detecting changes in metadata. A metageneration number is only meaningful in the context of a particular generation of a particular object.
+      "timeStorageClassUpdated": "A String", # The time at which the object's storage class was last changed. When the object is initially created, it will be set to timeCreated.
       "kind": "storage#object", # The kind of item this is. For objects, this is always storage#object.
       "name": "A String", # The name of this object. Required if not specified by URL parameter.
       "bucket": "A String", # The name of the bucket containing this object.
@@ -642,6 +647,7 @@
       "keySha256": "A String", # SHA256 hash value of the encryption key.
     },
     "metageneration": "A String", # The version of the metadata for this object at this generation. Used for preconditions and for detecting changes in metadata. A metageneration number is only meaningful in the context of a particular generation of a particular object.
+    "timeStorageClassUpdated": "A String", # The time at which the object's storage class was last changed. When the object is initially created, it will be set to timeCreated.
     "kind": "storage#object", # The kind of item this is. For objects, this is always storage#object.
     "name": "A String", # The name of this object. Required if not specified by URL parameter.
     "bucket": "A String", # The name of the bucket containing this object.
@@ -772,6 +778,7 @@
         "keySha256": "A String", # SHA256 hash value of the encryption key.
       },
       "metageneration": "A String", # The version of the metadata for this object at this generation. Used for preconditions and for detecting changes in metadata. A metageneration number is only meaningful in the context of a particular generation of a particular object.
+      "timeStorageClassUpdated": "A String", # The time at which the object's storage class was last changed. When the object is initially created, it will be set to timeCreated.
       "kind": "storage#object", # The kind of item this is. For objects, this is always storage#object.
       "name": "A String", # The name of this object. Required if not specified by URL parameter.
       "bucket": "A String", # The name of the bucket containing this object.
@@ -806,7 +813,7 @@
 </div>
 
 <div class="method">
-    <code class="details" id="insert">insert(bucket, body=None, projection=None, media_body=None, predefinedAcl=None, ifGenerationMatch=None, ifGenerationNotMatch=None, name=None, ifMetagenerationMatch=None, contentEncoding=None, ifMetagenerationNotMatch=None)</code>
+    <code class="details" id="insert">insert(bucket, body=None, projection=None, media_body=None, predefinedAcl=None, ifGenerationMatch=None, ifGenerationNotMatch=None, name=None, ifMetagenerationMatch=None, contentEncoding=None, media_mime_type=None, ifMetagenerationNotMatch=None)</code>
   <pre>Stores a new object and metadata.
 
 Args:
@@ -872,6 +879,7 @@
       "keySha256": "A String", # SHA256 hash value of the encryption key.
     },
     "metageneration": "A String", # The version of the metadata for this object at this generation. Used for preconditions and for detecting changes in metadata. A metageneration number is only meaningful in the context of a particular generation of a particular object.
+    "timeStorageClassUpdated": "A String", # The time at which the object's storage class was last changed. When the object is initially created, it will be set to timeCreated.
     "kind": "storage#object", # The kind of item this is. For objects, this is always storage#object.
     "name": "A String", # The name of this object. Required if not specified by URL parameter.
     "bucket": "A String", # The name of the bucket containing this object.
@@ -899,6 +907,7 @@
   name: string, Name of the object. Required when the object metadata is not otherwise provided. Overrides the object metadata's name value, if any. For information about how to URL encode object names to be path safe, see Encoding URI Path Parts.
   ifMetagenerationMatch: string, Makes the operation conditional on whether the object's current metageneration matches the given value.
   contentEncoding: string, If set, sets the contentEncoding property of the final object to this value. Setting this parameter is equivalent to setting the contentEncoding metadata property. This can be useful when uploading an object with uploadType=media to indicate the encoding of the content being uploaded.
+  media_mime_type: string, The MIME type of the media request body, or an instance of a MediaUpload object.
   ifMetagenerationNotMatch: string, Makes the operation conditional on whether the object's current metageneration does not match the given value.
 
 Returns:
@@ -962,6 +971,7 @@
         "keySha256": "A String", # SHA256 hash value of the encryption key.
       },
       "metageneration": "A String", # The version of the metadata for this object at this generation. Used for preconditions and for detecting changes in metadata. A metageneration number is only meaningful in the context of a particular generation of a particular object.
+      "timeStorageClassUpdated": "A String", # The time at which the object's storage class was last changed. When the object is initially created, it will be set to timeCreated.
       "kind": "storage#object", # The kind of item this is. For objects, this is always storage#object.
       "name": "A String", # The name of this object. Required if not specified by URL parameter.
       "bucket": "A String", # The name of the bucket containing this object.
@@ -973,7 +983,7 @@
 </div>
 
 <div class="method">
-    <code class="details" id="insert_media">insert_media(bucket, body=None, projection=None, media_body=None, predefinedAcl=None, ifGenerationMatch=None, ifGenerationNotMatch=None, name=None, ifMetagenerationMatch=None, contentEncoding=None, ifMetagenerationNotMatch=None)</code>
+    <code class="details" id="insert_media">insert_media(bucket, body=None, projection=None, media_body=None, predefinedAcl=None, ifGenerationMatch=None, ifGenerationNotMatch=None, name=None, ifMetagenerationMatch=None, contentEncoding=None, media_mime_type=None, ifMetagenerationNotMatch=None)</code>
   <pre>Stores a new object and metadata.
 
 Args:
@@ -1039,6 +1049,7 @@
       "keySha256": "A String", # SHA256 hash value of the encryption key.
     },
     "metageneration": "A String", # The version of the metadata for this object at this generation. Used for preconditions and for detecting changes in metadata. A metageneration number is only meaningful in the context of a particular generation of a particular object.
+    "timeStorageClassUpdated": "A String", # The time at which the object's storage class was last changed. When the object is initially created, it will be set to timeCreated.
     "kind": "storage#object", # The kind of item this is. For objects, this is always storage#object.
     "name": "A String", # The name of this object. Required if not specified by URL parameter.
     "bucket": "A String", # The name of the bucket containing this object.
@@ -1066,6 +1077,7 @@
   name: string, Name of the object. Required when the object metadata is not otherwise provided. Overrides the object metadata's name value, if any. For information about how to URL encode object names to be path safe, see Encoding URI Path Parts.
   ifMetagenerationMatch: string, Makes the operation conditional on whether the object's current metageneration matches the given value.
   contentEncoding: string, If set, sets the contentEncoding property of the final object to this value. Setting this parameter is equivalent to setting the contentEncoding metadata property. This can be useful when uploading an object with uploadType=media to indicate the encoding of the content being uploaded.
+  media_mime_type: string, The MIME type of the media request body, or an instance of a MediaUpload object.
   ifMetagenerationNotMatch: string, Makes the operation conditional on whether the object's current metageneration does not match the given value.
 
 Returns:
@@ -1154,6 +1166,7 @@
             "keySha256": "A String", # SHA256 hash value of the encryption key.
           },
           "metageneration": "A String", # The version of the metadata for this object at this generation. Used for preconditions and for detecting changes in metadata. A metageneration number is only meaningful in the context of a particular generation of a particular object.
+          "timeStorageClassUpdated": "A String", # The time at which the object's storage class was last changed. When the object is initially created, it will be set to timeCreated.
           "kind": "storage#object", # The kind of item this is. For objects, this is always storage#object.
           "name": "A String", # The name of this object. Required if not specified by URL parameter.
           "bucket": "A String", # The name of the bucket containing this object.
@@ -1252,6 +1265,7 @@
       "keySha256": "A String", # SHA256 hash value of the encryption key.
     },
     "metageneration": "A String", # The version of the metadata for this object at this generation. Used for preconditions and for detecting changes in metadata. A metageneration number is only meaningful in the context of a particular generation of a particular object.
+    "timeStorageClassUpdated": "A String", # The time at which the object's storage class was last changed. When the object is initially created, it will be set to timeCreated.
     "kind": "storage#object", # The kind of item this is. For objects, this is always storage#object.
     "name": "A String", # The name of this object. Required if not specified by URL parameter.
     "bucket": "A String", # The name of the bucket containing this object.
@@ -1340,6 +1354,7 @@
         "keySha256": "A String", # SHA256 hash value of the encryption key.
       },
       "metageneration": "A String", # The version of the metadata for this object at this generation. Used for preconditions and for detecting changes in metadata. A metageneration number is only meaningful in the context of a particular generation of a particular object.
+      "timeStorageClassUpdated": "A String", # The time at which the object's storage class was last changed. When the object is initially created, it will be set to timeCreated.
       "kind": "storage#object", # The kind of item this is. For objects, this is always storage#object.
       "name": "A String", # The name of this object. Required if not specified by URL parameter.
       "bucket": "A String", # The name of the bucket containing this object.
@@ -1420,6 +1435,7 @@
       "keySha256": "A String", # SHA256 hash value of the encryption key.
     },
     "metageneration": "A String", # The version of the metadata for this object at this generation. Used for preconditions and for detecting changes in metadata. A metageneration number is only meaningful in the context of a particular generation of a particular object.
+    "timeStorageClassUpdated": "A String", # The time at which the object's storage class was last changed. When the object is initially created, it will be set to timeCreated.
     "kind": "storage#object", # The kind of item this is. For objects, this is always storage#object.
     "name": "A String", # The name of this object. Required if not specified by URL parameter.
     "bucket": "A String", # The name of the bucket containing this object.
@@ -1517,6 +1533,7 @@
           "keySha256": "A String", # SHA256 hash value of the encryption key.
         },
         "metageneration": "A String", # The version of the metadata for this object at this generation. Used for preconditions and for detecting changes in metadata. A metageneration number is only meaningful in the context of a particular generation of a particular object.
+        "timeStorageClassUpdated": "A String", # The time at which the object's storage class was last changed. When the object is initially created, it will be set to timeCreated.
         "kind": "storage#object", # The kind of item this is. For objects, this is always storage#object.
         "name": "A String", # The name of this object. Required if not specified by URL parameter.
         "bucket": "A String", # The name of the bucket containing this object.
@@ -1599,6 +1616,7 @@
       "keySha256": "A String", # SHA256 hash value of the encryption key.
     },
     "metageneration": "A String", # The version of the metadata for this object at this generation. Used for preconditions and for detecting changes in metadata. A metageneration number is only meaningful in the context of a particular generation of a particular object.
+    "timeStorageClassUpdated": "A String", # The time at which the object's storage class was last changed. When the object is initially created, it will be set to timeCreated.
     "kind": "storage#object", # The kind of item this is. For objects, this is always storage#object.
     "name": "A String", # The name of this object. Required if not specified by URL parameter.
     "bucket": "A String", # The name of the bucket containing this object.
@@ -1687,6 +1705,7 @@
         "keySha256": "A String", # SHA256 hash value of the encryption key.
       },
       "metageneration": "A String", # The version of the metadata for this object at this generation. Used for preconditions and for detecting changes in metadata. A metageneration number is only meaningful in the context of a particular generation of a particular object.
+      "timeStorageClassUpdated": "A String", # The time at which the object's storage class was last changed. When the object is initially created, it will be set to timeCreated.
       "kind": "storage#object", # The kind of item this is. For objects, this is always storage#object.
       "name": "A String", # The name of this object. Required if not specified by URL parameter.
       "bucket": "A String", # The name of the bucket containing this object.
@@ -1765,6 +1784,7 @@
       "keySha256": "A String", # SHA256 hash value of the encryption key.
     },
     "metageneration": "A String", # The version of the metadata for this object at this generation. Used for preconditions and for detecting changes in metadata. A metageneration number is only meaningful in the context of a particular generation of a particular object.
+    "timeStorageClassUpdated": "A String", # The time at which the object's storage class was last changed. When the object is initially created, it will be set to timeCreated.
     "kind": "storage#object", # The kind of item this is. For objects, this is always storage#object.
     "name": "A String", # The name of this object. Required if not specified by URL parameter.
     "bucket": "A String", # The name of the bucket containing this object.
diff --git a/docs/dyn/storage_v1beta1.objects.html b/docs/dyn/storage_v1beta1.objects.html
index c80a39a..c984fdf 100644
--- a/docs/dyn/storage_v1beta1.objects.html
+++ b/docs/dyn/storage_v1beta1.objects.html
@@ -84,10 +84,10 @@
   <code><a href="#get_media">get_media(bucket, object, projection=None)</a></code></p>
 <p class="firstline">Retrieves objects or their associated metadata.</p>
 <p class="toc_element">
-  <code><a href="#insert">insert(bucket, body=None, media_body=None, name=None, projection=None)</a></code></p>
+  <code><a href="#insert">insert(bucket, body=None, media_body=None, name=None, media_mime_type=None, projection=None)</a></code></p>
 <p class="firstline">Stores new data blobs and associated metadata.</p>
 <p class="toc_element">
-  <code><a href="#insert_media">insert_media(bucket, body=None, media_body=None, name=None, projection=None)</a></code></p>
+  <code><a href="#insert_media">insert_media(bucket, body=None, media_body=None, name=None, media_mime_type=None, projection=None)</a></code></p>
 <p class="firstline">Stores new data blobs and associated metadata.</p>
 <p class="toc_element">
   <code><a href="#list">list(bucket, projection=None, pageToken=None, delimiter=None, prefix=None, max_results=None)</a></code></p>
@@ -202,7 +202,7 @@
 </div>
 
 <div class="method">
-    <code class="details" id="insert">insert(bucket, body=None, media_body=None, name=None, projection=None)</code>
+    <code class="details" id="insert">insert(bucket, body=None, media_body=None, name=None, media_mime_type=None, projection=None)</code>
   <pre>Stores new data blobs and associated metadata.
 
 Args:
@@ -264,6 +264,7 @@
 
   media_body: string, The filename of the media request body, or an instance of a MediaUpload object.
   name: string, Name of the object. Required when the object metadata is not otherwise provided. Overrides the object metadata's name value, if any.
+  media_mime_type: string, The MIME type of the media request body, or an instance of a MediaUpload object.
   projection: string, Set of properties to return. Defaults to no_acl, unless the object resource specifies the acl property, when it defaults to full.
     Allowed values
       full - Include all properties.
@@ -326,7 +327,7 @@
 </div>
 
 <div class="method">
-    <code class="details" id="insert_media">insert_media(bucket, body=None, media_body=None, name=None, projection=None)</code>
+    <code class="details" id="insert_media">insert_media(bucket, body=None, media_body=None, name=None, media_mime_type=None, projection=None)</code>
   <pre>Stores new data blobs and associated metadata.
 
 Args:
@@ -388,6 +389,7 @@
 
   media_body: string, The filename of the media request body, or an instance of a MediaUpload object.
   name: string, Name of the object. Required when the object metadata is not otherwise provided. Overrides the object metadata's name value, if any.
+  media_mime_type: string, The MIME type of the media request body, or an instance of a MediaUpload object.
   projection: string, Set of properties to return. Defaults to no_acl, unless the object resource specifies the acl property, when it defaults to full.
     Allowed values
       full - Include all properties.
diff --git a/docs/dyn/storage_v1beta2.objects.html b/docs/dyn/storage_v1beta2.objects.html
index 48ecde9..ad9b48f 100644
--- a/docs/dyn/storage_v1beta2.objects.html
+++ b/docs/dyn/storage_v1beta2.objects.html
@@ -96,10 +96,10 @@
   <code><a href="#get_media">get_media(bucket, object, ifGenerationNotMatch=None, generation=None, ifMetagenerationMatch=None, ifGenerationMatch=None, ifMetagenerationNotMatch=None, projection=None)</a></code></p>
 <p class="firstline">Retrieves objects or their associated metadata.</p>
 <p class="toc_element">
-  <code><a href="#insert">insert(bucket, body=None, media_body=None, projection=None, ifMetagenerationMatch=None, name=None, ifGenerationMatch=None, ifMetagenerationNotMatch=None, ifGenerationNotMatch=None)</a></code></p>
+  <code><a href="#insert">insert(bucket, body=None, media_body=None, projection=None, media_mime_type=None, ifMetagenerationMatch=None, name=None, ifGenerationMatch=None, ifMetagenerationNotMatch=None, ifGenerationNotMatch=None)</a></code></p>
 <p class="firstline">Stores new data blobs and associated metadata.</p>
 <p class="toc_element">
-  <code><a href="#insert_media">insert_media(bucket, body=None, media_body=None, projection=None, ifMetagenerationMatch=None, name=None, ifGenerationMatch=None, ifMetagenerationNotMatch=None, ifGenerationNotMatch=None)</a></code></p>
+  <code><a href="#insert_media">insert_media(bucket, body=None, media_body=None, projection=None, media_mime_type=None, ifMetagenerationMatch=None, name=None, ifGenerationMatch=None, ifMetagenerationNotMatch=None, ifGenerationNotMatch=None)</a></code></p>
 <p class="firstline">Stores new data blobs and associated metadata.</p>
 <p class="toc_element">
   <code><a href="#list">list(bucket, projection=None, versions=None, delimiter=None, maxResults=None, pageToken=None, prefix=None)</a></code></p>
@@ -701,7 +701,7 @@
 </div>
 
 <div class="method">
-    <code class="details" id="insert">insert(bucket, body=None, media_body=None, projection=None, ifMetagenerationMatch=None, name=None, ifGenerationMatch=None, ifMetagenerationNotMatch=None, ifGenerationNotMatch=None)</code>
+    <code class="details" id="insert">insert(bucket, body=None, media_body=None, projection=None, media_mime_type=None, ifMetagenerationMatch=None, name=None, ifGenerationMatch=None, ifMetagenerationNotMatch=None, ifGenerationNotMatch=None)</code>
   <pre>Stores new data blobs and associated metadata.
 
 Args:
@@ -771,6 +771,7 @@
     Allowed values
       full - Include all properties.
       noAcl - Omit the acl property.
+  media_mime_type: string, The MIME type of the media request body, or an instance of a MediaUpload object.
   ifMetagenerationMatch: string, Makes the operation conditional on whether the object's current metageneration matches the given value.
   name: string, Name of the object. Required when the object metadata is not otherwise provided. Overrides the object metadata's name value, if any.
   ifGenerationMatch: string, Makes the operation conditional on whether the object's current generation matches the given value.
@@ -839,7 +840,7 @@
 </div>
 
 <div class="method">
-    <code class="details" id="insert_media">insert_media(bucket, body=None, media_body=None, projection=None, ifMetagenerationMatch=None, name=None, ifGenerationMatch=None, ifMetagenerationNotMatch=None, ifGenerationNotMatch=None)</code>
+    <code class="details" id="insert_media">insert_media(bucket, body=None, media_body=None, projection=None, media_mime_type=None, ifMetagenerationMatch=None, name=None, ifGenerationMatch=None, ifMetagenerationNotMatch=None, ifGenerationNotMatch=None)</code>
   <pre>Stores new data blobs and associated metadata.
 
 Args:
@@ -909,6 +910,7 @@
     Allowed values
       full - Include all properties.
       noAcl - Omit the acl property.
+  media_mime_type: string, The MIME type of the media request body, or an instance of a MediaUpload object.
   ifMetagenerationMatch: string, Makes the operation conditional on whether the object's current metageneration matches the given value.
   name: string, Name of the object. Required when the object metadata is not otherwise provided. Overrides the object metadata's name value, if any.
   ifGenerationMatch: string, Makes the operation conditional on whether the object's current generation matches the given value.
diff --git a/docs/dyn/surveys_v2.surveys.html b/docs/dyn/surveys_v2.surveys.html
index 13016b5..7d259bb 100644
--- a/docs/dyn/surveys_v2.surveys.html
+++ b/docs/dyn/surveys_v2.surveys.html
@@ -184,9 +184,9 @@
         },
       ],
       "wantedResponseCount": 42, # Number of responses desired for the survey.
-      "rejectionReason": { # Message representing why the survey was rejected from review, if it was. # Reason for the survey being rejected. Only present if the survey state is 'rejected'.
+      "rejectionReason": { # Message representing why the survey was rejected from review, if it was. # Reason for the survey being rejected. Only present if the survey state is rejected.
         "explanation": "A String", # A human-readable explanation of what was wrong with the survey.
-        "type": "A String", # Which category of rejection this was. See the GCS Help Center for additional details on each category.
+        "type": "A String", # Which category of rejection this was. See the  Google Surveys Help Center for additional details on each category.
       },
     }</pre>
 </div>
@@ -262,9 +262,9 @@
       },
     ],
     "wantedResponseCount": 42, # Number of responses desired for the survey.
-    "rejectionReason": { # Message representing why the survey was rejected from review, if it was. # Reason for the survey being rejected. Only present if the survey state is 'rejected'.
+    "rejectionReason": { # Message representing why the survey was rejected from review, if it was. # Reason for the survey being rejected. Only present if the survey state is rejected.
       "explanation": "A String", # A human-readable explanation of what was wrong with the survey.
-      "type": "A String", # Which category of rejection this was. See the GCS Help Center for additional details on each category.
+      "type": "A String", # Which category of rejection this was. See the  Google Surveys Help Center for additional details on each category.
     },
   }
 
@@ -335,9 +335,9 @@
         },
       ],
       "wantedResponseCount": 42, # Number of responses desired for the survey.
-      "rejectionReason": { # Message representing why the survey was rejected from review, if it was. # Reason for the survey being rejected. Only present if the survey state is 'rejected'.
+      "rejectionReason": { # Message representing why the survey was rejected from review, if it was. # Reason for the survey being rejected. Only present if the survey state is rejected.
         "explanation": "A String", # A human-readable explanation of what was wrong with the survey.
-        "type": "A String", # Which category of rejection this was. See the GCS Help Center for additional details on each category.
+        "type": "A String", # Which category of rejection this was. See the  Google Surveys Help Center for additional details on each category.
       },
     }</pre>
 </div>
@@ -428,9 +428,9 @@
             },
           ],
           "wantedResponseCount": 42, # Number of responses desired for the survey.
-          "rejectionReason": { # Message representing why the survey was rejected from review, if it was. # Reason for the survey being rejected. Only present if the survey state is 'rejected'.
+          "rejectionReason": { # Message representing why the survey was rejected from review, if it was. # Reason for the survey being rejected. Only present if the survey state is rejected.
             "explanation": "A String", # A human-readable explanation of what was wrong with the survey.
-            "type": "A String", # Which category of rejection this was. See the GCS Help Center for additional details on each category.
+            "type": "A String", # Which category of rejection this was. See the  Google Surveys Help Center for additional details on each category.
           },
         },
     ],
@@ -519,9 +519,9 @@
           },
         ],
         "wantedResponseCount": 42, # Number of responses desired for the survey.
-        "rejectionReason": { # Message representing why the survey was rejected from review, if it was. # Reason for the survey being rejected. Only present if the survey state is 'rejected'.
+        "rejectionReason": { # Message representing why the survey was rejected from review, if it was. # Reason for the survey being rejected. Only present if the survey state is rejected.
           "explanation": "A String", # A human-readable explanation of what was wrong with the survey.
-          "type": "A String", # Which category of rejection this was. See the GCS Help Center for additional details on each category.
+          "type": "A String", # Which category of rejection this was. See the  Google Surveys Help Center for additional details on each category.
         },
       },
     "requestId": "A String", # Unique request ID used for logging and debugging. Please include in any error reporting or troubleshooting requests.
@@ -602,9 +602,9 @@
           },
         ],
         "wantedResponseCount": 42, # Number of responses desired for the survey.
-        "rejectionReason": { # Message representing why the survey was rejected from review, if it was. # Reason for the survey being rejected. Only present if the survey state is 'rejected'.
+        "rejectionReason": { # Message representing why the survey was rejected from review, if it was. # Reason for the survey being rejected. Only present if the survey state is rejected.
           "explanation": "A String", # A human-readable explanation of what was wrong with the survey.
-          "type": "A String", # Which category of rejection this was. See the GCS Help Center for additional details on each category.
+          "type": "A String", # Which category of rejection this was. See the  Google Surveys Help Center for additional details on each category.
         },
       },
     "requestId": "A String", # Unique request ID used for logging and debugging. Please include in any error reporting or troubleshooting requests.
@@ -683,9 +683,9 @@
       },
     ],
     "wantedResponseCount": 42, # Number of responses desired for the survey.
-    "rejectionReason": { # Message representing why the survey was rejected from review, if it was. # Reason for the survey being rejected. Only present if the survey state is 'rejected'.
+    "rejectionReason": { # Message representing why the survey was rejected from review, if it was. # Reason for the survey being rejected. Only present if the survey state is rejected.
       "explanation": "A String", # A human-readable explanation of what was wrong with the survey.
-      "type": "A String", # Which category of rejection this was. See the GCS Help Center for additional details on each category.
+      "type": "A String", # Which category of rejection this was. See the  Google Surveys Help Center for additional details on each category.
     },
   }
 
@@ -756,9 +756,9 @@
         },
       ],
       "wantedResponseCount": 42, # Number of responses desired for the survey.
-      "rejectionReason": { # Message representing why the survey was rejected from review, if it was. # Reason for the survey being rejected. Only present if the survey state is 'rejected'.
+      "rejectionReason": { # Message representing why the survey was rejected from review, if it was. # Reason for the survey being rejected. Only present if the survey state is rejected.
         "explanation": "A String", # A human-readable explanation of what was wrong with the survey.
-        "type": "A String", # Which category of rejection this was. See the GCS Help Center for additional details on each category.
+        "type": "A String", # Which category of rejection this was. See the  Google Surveys Help Center for additional details on each category.
       },
     }</pre>
 </div>
diff --git a/docs/dyn/vision_v1.images.html b/docs/dyn/vision_v1.images.html
index 7f5d55a..7db68f0 100644
--- a/docs/dyn/vision_v1.images.html
+++ b/docs/dyn/vision_v1.images.html
@@ -90,8 +90,8 @@
     "requests": [ # Individual image annotation requests for this batch.
       { # Request for performing Google Cloud Vision API tasks over a user-provided
           # image, with user-requested features.
-        "imageContext": { # Image context. # Additional context that may accompany the image.
-          "latLongRect": { # Rectangle determined by min and max LatLng pairs. # Lat/long rectangle that specifies the location of the image.
+        "imageContext": { # Image context and/or feature-specific parameters. # Additional context that may accompany the image.
+          "latLongRect": { # Rectangle determined by min and max `LatLng` pairs. # lat/long rectangle that specifies the location of the image.
             "minLatLng": { # An object representing a latitude/longitude pair. This is expressed as a pair # Min lat/long pair.
                 # of doubles representing degrees latitude and degrees longitude. Unless
                 # specified otherwise, this must conform to the
@@ -184,8 +184,7 @@
               # setting a hint will help get better results (although it will be a
               # significant hindrance if the hint is wrong). Text detection returns an
               # error if one or more of the specified languages is not one of the
-              # [supported
-              # languages](/translate/v2/translate-reference#supported_languages).
+              # [supported languages](/vision/docs/languages).
             "A String",
           ],
         },
@@ -193,19 +192,19 @@
           "content": "A String", # Image content, represented as a stream of bytes.
               # Note: as with all `bytes` fields, protobuffers use a pure binary
               # representation, whereas JSON representations use base64.
-          "source": { # External image source (Google Cloud Storage image location). # Google Cloud Storage image location. If both 'content' and 'source'
-              # are filled for an image, 'content' takes precedence and it will be
-              # used for performing the image annotation request.
-            "gcsImageUri": "A String", # Google Cloud Storage image URI. It must be in the following form:
-                # `gs://bucket_name/object_name`. For more
-                # details, please see: https://cloud.google.com/storage/docs/reference-uris.
-                # NOTE: Cloud Storage object versioning is not supported!
+          "source": { # External image source (Google Cloud Storage image location). # Google Cloud Storage image location. If both `content` and `source`
+              # are provided for an image, `content` takes precedence and is
+              # used to perform the image annotation request.
+            "gcsImageUri": "A String", # Google Cloud Storage image URI, which must be in the following form:
+                # `gs://bucket_name/object_name` (for details, see
+                # [Google Cloud Storage Request URIs](https://cloud.google.com/storage/docs/reference-uris)).
+                # NOTE: Cloud Storage object versioning is not supported.
           },
         },
         "features": [ # Requested features.
-          { # The <em>Feature</em> indicates what type of image detection task to perform.
-              # Users describe the type of Google Cloud Vision API tasks to perform over
-              # images by using <em>Feature</em>s. Features encode the Cloud Vision API
+          { # Users describe the type of Google Cloud Vision API tasks to perform over
+              # images by using *Feature*s. Each Feature indicates a type of image
+              # detection task to perform. Features encode the Cloud Vision API
               # vertical to operate on and the number of top-scoring results to return.
             "type": "A String", # The feature type.
             "maxResults": 42, # Maximum number of results of this type.
@@ -226,39 +225,37 @@
     { # Response to a batch image annotation request.
     "responses": [ # Individual responses to image annotation requests within the batch.
       { # Response to an image annotation request.
-        "safeSearchAnnotation": { # Set of features pertaining to the image, computed by various computer vision # If present, safe-search annotation completed successfully.
-            # methods over safe-search verticals (for example, adult, spoof, medical,
-            # violence).
-          "medical": "A String", # Likelihood this is a medical image.
+        "safeSearchAnnotation": { # If present, safe-search annotation has completed successfully.
+          "medical": "A String", # Likelihood that this is a medical image.
           "violence": "A String", # Violence likelihood.
-          "spoof": "A String", # Spoof likelihood. The likelihood that an obvious modification
+          "spoof": "A String", # Spoof likelihood. The likelihood that an modification
               # was made to the image's canonical version to make it appear
               # funny or offensive.
-          "adult": "A String", # Represents the adult contents likelihood for the image.
+          "adult": "A String", # Represents the adult content likelihood for the image.
         },
-        "textAnnotations": [ # If present, text (OCR) detection completed successfully.
+        "textAnnotations": [ # If present, text (OCR) detection has completed successfully.
           { # Set of detected entity features.
             "confidence": 3.14, # The accuracy of the entity detection in an image.
-                # For example, for an image containing 'Eiffel Tower,' this field represents
-                # the confidence that there is a tower in the query image. Range [0, 1].
-            "description": "A String", # Entity textual description, expressed in its <code>locale</code> language.
+                # For example, for an image in which the "Eiffel Tower" entity is detected,
+                # this field represents the confidence that there is a tower in the query
+                # image. Range [0, 1].
+            "description": "A String", # Entity textual description, expressed in its `locale` language.
             "locale": "A String", # The language code for the locale in which the entity textual
-                # <code>description</code> (next field) is expressed.
+                # `description` is expressed.
             "topicality": 3.14, # The relevancy of the ICA (Image Content Annotation) label to the
-                # image. For example, the relevancy of 'tower' to an image containing
-                # 'Eiffel Tower' is likely higher than an image containing a distant towering
-                # building, though the confidence that there is a tower may be the same.
-                # Range [0, 1].
-            "mid": "A String", # Opaque entity ID. Some IDs might be available in Knowledge Graph(KG).
-                # For more details on KG please see:
-                # https://developers.google.com/knowledge-graph/
+                # image. For example, the relevancy of "tower" is likely higher to an image
+                # containing the detected "Eiffel Tower" than to an image containing a
+                # detected distant towering building, even though the confidence that
+                # there is a tower in each image may be the same. Range [0, 1].
+            "mid": "A String", # Opaque entity ID. Some IDs may be available in
+                # [Google Knowledge Graph Search API](https://developers.google.com/knowledge-graph/).
             "locations": [ # The location information for the detected entity. Multiple
-                # <code>LocationInfo</code> elements can be present since one location may
-                # indicate the location of the scene in the query image, and another the
-                # location of the place where the query image was taken. Location information
-                # is usually present for landmarks.
+                # `LocationInfo` elements can be present because one location may
+                # indicate the location of the scene in the image, and another location
+                # may indicate the location of the place where the image was taken.
+                # Location information is usually present for landmarks.
               { # Detected entity location information.
-                "latLng": { # An object representing a latitude/longitude pair. This is expressed as a pair # Lat - long location coordinates.
+                "latLng": { # An object representing a latitude/longitude pair. This is expressed as a pair # lat/long location coordinates.
                     # of doubles representing degrees latitude and degrees longitude. Unless
                     # specified otherwise, this must conform to the
                     # <a href="http://www.unoosa.org/pdf/icg/2012/template/WGS_84.pdf">WGS84
@@ -303,7 +300,7 @@
               },
             ],
             "score": 3.14, # Overall score of the result. Range [0, 1].
-            "boundingPoly": { # A bounding polygon for the detected image annotation. # Image region to which this entity belongs. Not filled currently
+            "boundingPoly": { # A bounding polygon for the detected image annotation. # Image region to which this entity belongs. Currently not produced
                 # for `LABEL_DETECTION` features. For `TEXT_DETECTION` (OCR), `boundingPoly`s
                 # are produced for the entire text detected in an image region, followed by
                 # `boundingPoly`s for each word within the detected text.
@@ -315,38 +312,38 @@
                 },
               ],
             },
-            "properties": [ # Some entities can have additional optional <code>Property</code> fields.
-                # For example a different kind of score or string that qualifies the entity.
-              { # Arbitrary name/value pair.
+            "properties": [ # Some entities may have optional user-supplied `Property` (name/value)
+                # fields, such a score or string that qualifies the entity.
+              { # A `Property` consists of a user-supplied name/value pair.
                 "name": "A String", # Name of the property.
                 "value": "A String", # Value of the property.
               },
             ],
           },
         ],
-        "labelAnnotations": [ # If present, label detection completed successfully.
+        "labelAnnotations": [ # If present, label detection has completed successfully.
           { # Set of detected entity features.
             "confidence": 3.14, # The accuracy of the entity detection in an image.
-                # For example, for an image containing 'Eiffel Tower,' this field represents
-                # the confidence that there is a tower in the query image. Range [0, 1].
-            "description": "A String", # Entity textual description, expressed in its <code>locale</code> language.
+                # For example, for an image in which the "Eiffel Tower" entity is detected,
+                # this field represents the confidence that there is a tower in the query
+                # image. Range [0, 1].
+            "description": "A String", # Entity textual description, expressed in its `locale` language.
             "locale": "A String", # The language code for the locale in which the entity textual
-                # <code>description</code> (next field) is expressed.
+                # `description` is expressed.
             "topicality": 3.14, # The relevancy of the ICA (Image Content Annotation) label to the
-                # image. For example, the relevancy of 'tower' to an image containing
-                # 'Eiffel Tower' is likely higher than an image containing a distant towering
-                # building, though the confidence that there is a tower may be the same.
-                # Range [0, 1].
-            "mid": "A String", # Opaque entity ID. Some IDs might be available in Knowledge Graph(KG).
-                # For more details on KG please see:
-                # https://developers.google.com/knowledge-graph/
+                # image. For example, the relevancy of "tower" is likely higher to an image
+                # containing the detected "Eiffel Tower" than to an image containing a
+                # detected distant towering building, even though the confidence that
+                # there is a tower in each image may be the same. Range [0, 1].
+            "mid": "A String", # Opaque entity ID. Some IDs may be available in
+                # [Google Knowledge Graph Search API](https://developers.google.com/knowledge-graph/).
             "locations": [ # The location information for the detected entity. Multiple
-                # <code>LocationInfo</code> elements can be present since one location may
-                # indicate the location of the scene in the query image, and another the
-                # location of the place where the query image was taken. Location information
-                # is usually present for landmarks.
+                # `LocationInfo` elements can be present because one location may
+                # indicate the location of the scene in the image, and another location
+                # may indicate the location of the place where the image was taken.
+                # Location information is usually present for landmarks.
               { # Detected entity location information.
-                "latLng": { # An object representing a latitude/longitude pair. This is expressed as a pair # Lat - long location coordinates.
+                "latLng": { # An object representing a latitude/longitude pair. This is expressed as a pair # lat/long location coordinates.
                     # of doubles representing degrees latitude and degrees longitude. Unless
                     # specified otherwise, this must conform to the
                     # <a href="http://www.unoosa.org/pdf/icg/2012/template/WGS_84.pdf">WGS84
@@ -391,7 +388,7 @@
               },
             ],
             "score": 3.14, # Overall score of the result. Range [0, 1].
-            "boundingPoly": { # A bounding polygon for the detected image annotation. # Image region to which this entity belongs. Not filled currently
+            "boundingPoly": { # A bounding polygon for the detected image annotation. # Image region to which this entity belongs. Currently not produced
                 # for `LABEL_DETECTION` features. For `TEXT_DETECTION` (OCR), `boundingPoly`s
                 # are produced for the entire text detected in an image region, followed by
                 # `boundingPoly`s for each word within the detected text.
@@ -403,20 +400,20 @@
                 },
               ],
             },
-            "properties": [ # Some entities can have additional optional <code>Property</code> fields.
-                # For example a different kind of score or string that qualifies the entity.
-              { # Arbitrary name/value pair.
+            "properties": [ # Some entities may have optional user-supplied `Property` (name/value)
+                # fields, such a score or string that qualifies the entity.
+              { # A `Property` consists of a user-supplied name/value pair.
                 "name": "A String", # Name of the property.
                 "value": "A String", # Value of the property.
               },
             ],
           },
         ],
-        "imagePropertiesAnnotation": { # Stores image properties (e.g. dominant colors). # If present, image properties were extracted successfully.
+        "imagePropertiesAnnotation": { # Stores image properties, such as dominant colors. # If present, image properties were extracted successfully.
           "dominantColors": { # Set of dominant colors and their corresponding scores. # If present, dominant colors completed successfully.
-            "colors": [ # RGB color values, with their score and pixel fraction.
-              { # Color information consists of RGB channels, score and fraction of
-                  # image the color occupies in the image.
+            "colors": [ # RGB color values with their score and pixel fraction.
+              { # Color information consists of RGB channels, score, and the fraction of
+                  # the image that the color occupies in the image.
                 "color": { # Represents a color in the RGBA color space. This representation is designed # RGB components of the color.
                     # for simplicity of conversion to/from color representations in various
                     # languages over compactness; for example, the fields of this representation
@@ -546,17 +543,17 @@
                   "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
                   "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
                 },
-                "pixelFraction": 3.14, # Stores the fraction of pixels the color occupies in the image.
+                "pixelFraction": 3.14, # The fraction of pixels the color occupies in the image.
                     # Value in range [0, 1].
                 "score": 3.14, # Image-specific score for this color. Value in range [0, 1].
               },
             ],
           },
         },
-        "faceAnnotations": [ # If present, face detection completed successfully.
+        "faceAnnotations": [ # If present, face detection has completed successfully.
           { # A face annotation object contains the results of face detection.
-            "panAngle": 3.14, # Yaw angle. Indicates the leftward/rightward angle that the face is
-                # pointing, relative to the vertical plane perpendicular to the image. Range
+            "panAngle": 3.14, # Yaw angle, which indicates the leftward/rightward angle that the face is
+                # pointing relative to the vertical plane perpendicular to the image. Range
                 # [-180,180].
             "sorrowLikelihood": "A String", # Sorrow likelihood.
             "underExposedLikelihood": "A String", # Under-exposed likelihood.
@@ -565,8 +562,9 @@
             "landmarks": [ # Detected face landmarks.
               { # A face-specific landmark (for example, a face feature).
                   # Landmark positions may fall outside the bounds of the image
-                  # when the face is near one or more edges of the image.
-                  # Therefore it is NOT guaranteed that 0 <= x < width or 0 <= y < height.
+                  # if the face is near one or more edges of the image.
+                  # Therefore it is NOT guaranteed that `0 <= x < width` or
+                  # `0 <= y < height`.
                 "position": { # A 3D position in the image, used primarily for Face detection landmarks. # Face landmark position.
                     # A valid Position must have both x and y coordinates.
                     # The position coordinates are in the same scale as the original image.
@@ -579,17 +577,16 @@
             ],
             "surpriseLikelihood": "A String", # Surprise likelihood.
             "blurredLikelihood": "A String", # Blurred likelihood.
-            "tiltAngle": 3.14, # Pitch angle. Indicates the upwards/downwards angle that the face is
-                # pointing
-                # relative to the image's horizontal plane. Range [-180,180].
+            "tiltAngle": 3.14, # Pitch angle, which indicates the upwards/downwards angle that the face is
+                # pointing relative to the image's horizontal plane. Range [-180,180].
             "angerLikelihood": "A String", # Anger likelihood.
             "boundingPoly": { # A bounding polygon for the detected image annotation. # The bounding polygon around the face. The coordinates of the bounding box
-                # are in the original image's scale, as returned in ImageParams.
+                # are in the original image's scale, as returned in `ImageParams`.
                 # The bounding box is computed to "frame" the face in accordance with human
                 # expectations. It is based on the landmarker results.
                 # Note that one or more x and/or y coordinates may not be generated in the
-                # BoundingPoly (the polygon will be unbounded) if only a partial face appears in
-                # the image to be annotated.
+                # `BoundingPoly` (the polygon will be unbounded) if only a partial face
+                # appears in the image to be annotated.
               "vertices": [ # The bounding polygon vertices.
                 { # A vertex represents a 2D point in the image.
                     # NOTE: the vertex coordinates are in the same scale as the original image.
@@ -598,15 +595,13 @@
                 },
               ],
             },
-            "rollAngle": 3.14, # Roll angle. Indicates the amount of clockwise/anti-clockwise rotation of
-                # the
-                # face relative to the image vertical, about the axis perpendicular to the
-                # face. Range [-180,180].
+            "rollAngle": 3.14, # Roll angle, which indicates the amount of clockwise/anti-clockwise rotation
+                # of the face relative to the image vertical about the axis perpendicular to
+                # the face. Range [-180,180].
             "headwearLikelihood": "A String", # Headwear likelihood.
-            "fdBoundingPoly": { # A bounding polygon for the detected image annotation. # This bounding polygon is tighter than the previous
-                # <code>boundingPoly</code>, and
-                # encloses only the skin part of the face. Typically, it is used to
-                # eliminate the face from any image analysis that detects the
+            "fdBoundingPoly": { # A bounding polygon for the detected image annotation. # The `fd_bounding_poly` bounding polygon is tighter than the
+                # `boundingPoly`, and encloses only the skin part of the face. Typically, it
+                # is used to eliminate the face from any image analysis that detects the
                 # "amount of skin" visible in an image. It is not based on the
                 # landmarker results, only on the initial face detection, hence
                 # the <code>fd</code> (face detection) prefix.
@@ -621,29 +616,29 @@
             "landmarkingConfidence": 3.14, # Face landmarking confidence. Range [0, 1].
           },
         ],
-        "logoAnnotations": [ # If present, logo detection completed successfully.
+        "logoAnnotations": [ # If present, logo detection has completed successfully.
           { # Set of detected entity features.
             "confidence": 3.14, # The accuracy of the entity detection in an image.
-                # For example, for an image containing 'Eiffel Tower,' this field represents
-                # the confidence that there is a tower in the query image. Range [0, 1].
-            "description": "A String", # Entity textual description, expressed in its <code>locale</code> language.
+                # For example, for an image in which the "Eiffel Tower" entity is detected,
+                # this field represents the confidence that there is a tower in the query
+                # image. Range [0, 1].
+            "description": "A String", # Entity textual description, expressed in its `locale` language.
             "locale": "A String", # The language code for the locale in which the entity textual
-                # <code>description</code> (next field) is expressed.
+                # `description` is expressed.
             "topicality": 3.14, # The relevancy of the ICA (Image Content Annotation) label to the
-                # image. For example, the relevancy of 'tower' to an image containing
-                # 'Eiffel Tower' is likely higher than an image containing a distant towering
-                # building, though the confidence that there is a tower may be the same.
-                # Range [0, 1].
-            "mid": "A String", # Opaque entity ID. Some IDs might be available in Knowledge Graph(KG).
-                # For more details on KG please see:
-                # https://developers.google.com/knowledge-graph/
+                # image. For example, the relevancy of "tower" is likely higher to an image
+                # containing the detected "Eiffel Tower" than to an image containing a
+                # detected distant towering building, even though the confidence that
+                # there is a tower in each image may be the same. Range [0, 1].
+            "mid": "A String", # Opaque entity ID. Some IDs may be available in
+                # [Google Knowledge Graph Search API](https://developers.google.com/knowledge-graph/).
             "locations": [ # The location information for the detected entity. Multiple
-                # <code>LocationInfo</code> elements can be present since one location may
-                # indicate the location of the scene in the query image, and another the
-                # location of the place where the query image was taken. Location information
-                # is usually present for landmarks.
+                # `LocationInfo` elements can be present because one location may
+                # indicate the location of the scene in the image, and another location
+                # may indicate the location of the place where the image was taken.
+                # Location information is usually present for landmarks.
               { # Detected entity location information.
-                "latLng": { # An object representing a latitude/longitude pair. This is expressed as a pair # Lat - long location coordinates.
+                "latLng": { # An object representing a latitude/longitude pair. This is expressed as a pair # lat/long location coordinates.
                     # of doubles representing degrees latitude and degrees longitude. Unless
                     # specified otherwise, this must conform to the
                     # <a href="http://www.unoosa.org/pdf/icg/2012/template/WGS_84.pdf">WGS84
@@ -688,7 +683,7 @@
               },
             ],
             "score": 3.14, # Overall score of the result. Range [0, 1].
-            "boundingPoly": { # A bounding polygon for the detected image annotation. # Image region to which this entity belongs. Not filled currently
+            "boundingPoly": { # A bounding polygon for the detected image annotation. # Image region to which this entity belongs. Currently not produced
                 # for `LABEL_DETECTION` features. For `TEXT_DETECTION` (OCR), `boundingPoly`s
                 # are produced for the entire text detected in an image region, followed by
                 # `boundingPoly`s for each word within the detected text.
@@ -700,38 +695,38 @@
                 },
               ],
             },
-            "properties": [ # Some entities can have additional optional <code>Property</code> fields.
-                # For example a different kind of score or string that qualifies the entity.
-              { # Arbitrary name/value pair.
+            "properties": [ # Some entities may have optional user-supplied `Property` (name/value)
+                # fields, such a score or string that qualifies the entity.
+              { # A `Property` consists of a user-supplied name/value pair.
                 "name": "A String", # Name of the property.
                 "value": "A String", # Value of the property.
               },
             ],
           },
         ],
-        "landmarkAnnotations": [ # If present, landmark detection completed successfully.
+        "landmarkAnnotations": [ # If present, landmark detection has completed successfully.
           { # Set of detected entity features.
             "confidence": 3.14, # The accuracy of the entity detection in an image.
-                # For example, for an image containing 'Eiffel Tower,' this field represents
-                # the confidence that there is a tower in the query image. Range [0, 1].
-            "description": "A String", # Entity textual description, expressed in its <code>locale</code> language.
+                # For example, for an image in which the "Eiffel Tower" entity is detected,
+                # this field represents the confidence that there is a tower in the query
+                # image. Range [0, 1].
+            "description": "A String", # Entity textual description, expressed in its `locale` language.
             "locale": "A String", # The language code for the locale in which the entity textual
-                # <code>description</code> (next field) is expressed.
+                # `description` is expressed.
             "topicality": 3.14, # The relevancy of the ICA (Image Content Annotation) label to the
-                # image. For example, the relevancy of 'tower' to an image containing
-                # 'Eiffel Tower' is likely higher than an image containing a distant towering
-                # building, though the confidence that there is a tower may be the same.
-                # Range [0, 1].
-            "mid": "A String", # Opaque entity ID. Some IDs might be available in Knowledge Graph(KG).
-                # For more details on KG please see:
-                # https://developers.google.com/knowledge-graph/
+                # image. For example, the relevancy of "tower" is likely higher to an image
+                # containing the detected "Eiffel Tower" than to an image containing a
+                # detected distant towering building, even though the confidence that
+                # there is a tower in each image may be the same. Range [0, 1].
+            "mid": "A String", # Opaque entity ID. Some IDs may be available in
+                # [Google Knowledge Graph Search API](https://developers.google.com/knowledge-graph/).
             "locations": [ # The location information for the detected entity. Multiple
-                # <code>LocationInfo</code> elements can be present since one location may
-                # indicate the location of the scene in the query image, and another the
-                # location of the place where the query image was taken. Location information
-                # is usually present for landmarks.
+                # `LocationInfo` elements can be present because one location may
+                # indicate the location of the scene in the image, and another location
+                # may indicate the location of the place where the image was taken.
+                # Location information is usually present for landmarks.
               { # Detected entity location information.
-                "latLng": { # An object representing a latitude/longitude pair. This is expressed as a pair # Lat - long location coordinates.
+                "latLng": { # An object representing a latitude/longitude pair. This is expressed as a pair # lat/long location coordinates.
                     # of doubles representing degrees latitude and degrees longitude. Unless
                     # specified otherwise, this must conform to the
                     # <a href="http://www.unoosa.org/pdf/icg/2012/template/WGS_84.pdf">WGS84
@@ -776,7 +771,7 @@
               },
             ],
             "score": 3.14, # Overall score of the result. Range [0, 1].
-            "boundingPoly": { # A bounding polygon for the detected image annotation. # Image region to which this entity belongs. Not filled currently
+            "boundingPoly": { # A bounding polygon for the detected image annotation. # Image region to which this entity belongs. Currently not produced
                 # for `LABEL_DETECTION` features. For `TEXT_DETECTION` (OCR), `boundingPoly`s
                 # are produced for the entire text detected in an image region, followed by
                 # `boundingPoly`s for each word within the detected text.
@@ -788,9 +783,9 @@
                 },
               ],
             },
-            "properties": [ # Some entities can have additional optional <code>Property</code> fields.
-                # For example a different kind of score or string that qualifies the entity.
-              { # Arbitrary name/value pair.
+            "properties": [ # Some entities may have optional user-supplied `Property` (name/value)
+                # fields, such a score or string that qualifies the entity.
+              { # A `Property` consists of a user-supplied name/value pair.
                 "name": "A String", # Name of the property.
                 "value": "A String", # Value of the property.
               },
@@ -798,8 +793,8 @@
           },
         ],
         "error": { # The `Status` type defines a logical error model that is suitable for different # If set, represents the error message for the operation.
-            # Note that filled-in mage annotations are guaranteed to be
-            # correct, even when <code>error</code> is non-empty.
+            # Note that filled-in image annotations are guaranteed to be
+            # correct, even when `error` is set.
             # programming environments, including REST APIs and RPC APIs. It is used by
             # [gRPC](https://github.com/grpc). The error model is designed to be:
             #
diff --git a/docs/dyn/youtubeAnalytics_v1.html b/docs/dyn/youtubeAnalytics_v1.html
index 5584c1a..329db88 100644
--- a/docs/dyn/youtubeAnalytics_v1.html
+++ b/docs/dyn/youtubeAnalytics_v1.html
@@ -75,16 +75,6 @@
 <h1><a href="youtubeAnalytics_v1.html">YouTube Analytics API</a></h1>
 <h2>Instance Methods</h2>
 <p class="toc_element">
-  <code><a href="youtubeAnalytics_v1.batchReportDefinitions.html">batchReportDefinitions()</a></code>
-</p>
-<p class="firstline">Returns the batchReportDefinitions Resource.</p>
-
-<p class="toc_element">
-  <code><a href="youtubeAnalytics_v1.batchReports.html">batchReports()</a></code>
-</p>
-<p class="firstline">Returns the batchReports Resource.</p>
-
-<p class="toc_element">
   <code><a href="youtubeAnalytics_v1.groupItems.html">groupItems()</a></code>
 </p>
 <p class="firstline">Returns the groupItems Resource.</p>
diff --git a/docs/dyn/youtubeAnalytics_v1beta1.html b/docs/dyn/youtubeAnalytics_v1beta1.html
index 0e3e33a..9609ae2 100644
--- a/docs/dyn/youtubeAnalytics_v1beta1.html
+++ b/docs/dyn/youtubeAnalytics_v1beta1.html
@@ -75,16 +75,6 @@
 <h1><a href="youtubeAnalytics_v1beta1.html">YouTube Analytics API</a></h1>
 <h2>Instance Methods</h2>
 <p class="toc_element">
-  <code><a href="youtubeAnalytics_v1beta1.batchReportDefinitions.html">batchReportDefinitions()</a></code>
-</p>
-<p class="firstline">Returns the batchReportDefinitions Resource.</p>
-
-<p class="toc_element">
-  <code><a href="youtubeAnalytics_v1beta1.batchReports.html">batchReports()</a></code>
-</p>
-<p class="firstline">Returns the batchReports Resource.</p>
-
-<p class="toc_element">
   <code><a href="youtubeAnalytics_v1beta1.groupItems.html">groupItems()</a></code>
 </p>
 <p class="firstline">Returns the groupItems Resource.</p>
diff --git a/docs/dyn/youtube_v3.captions.html b/docs/dyn/youtube_v3.captions.html
index ecbae0f..6b5ec67 100644
--- a/docs/dyn/youtube_v3.captions.html
+++ b/docs/dyn/youtube_v3.captions.html
@@ -84,13 +84,13 @@
   <code><a href="#download_media">download_media(id, onBehalfOf=None, tlang=None, onBehalfOfContentOwner=None, tfmt=None)</a></code></p>
 <p class="firstline">Downloads a caption track. The caption track is returned in its original format unless the request specifies a value for the tfmt parameter and in its original language unless the request specifies a value for the tlang parameter.</p>
 <p class="toc_element">
-  <code><a href="#insert">insert(part, body=None, media_body=None, onBehalfOf=None, sync=None, onBehalfOfContentOwner=None)</a></code></p>
+  <code><a href="#insert">insert(part, body=None, media_body=None, onBehalfOf=None, media_mime_type=None, sync=None, onBehalfOfContentOwner=None)</a></code></p>
 <p class="firstline">Uploads a caption track.</p>
 <p class="toc_element">
   <code><a href="#list">list(part, videoId, onBehalfOf=None, onBehalfOfContentOwner=None, id=None)</a></code></p>
 <p class="firstline">Returns a list of caption tracks that are associated with a specified video. Note that the API response does not contain the actual captions and that the captions.download method provides the ability to retrieve a caption track.</p>
 <p class="toc_element">
-  <code><a href="#update">update(part, body=None, media_body=None, onBehalfOf=None, sync=None, onBehalfOfContentOwner=None)</a></code></p>
+  <code><a href="#update">update(part, body=None, media_body=None, onBehalfOf=None, media_mime_type=None, sync=None, onBehalfOfContentOwner=None)</a></code></p>
 <p class="firstline">Updates a caption track. When updating a caption track, you can change the track's draft status, upload a new caption file for the track, or both.</p>
 <h3>Method Details</h3>
 <div class="method">
@@ -149,7 +149,7 @@
 </div>
 
 <div class="method">
-    <code class="details" id="insert">insert(part, body=None, media_body=None, onBehalfOf=None, sync=None, onBehalfOfContentOwner=None)</code>
+    <code class="details" id="insert">insert(part, body=None, media_body=None, onBehalfOf=None, media_mime_type=None, sync=None, onBehalfOfContentOwner=None)</code>
   <pre>Uploads a caption track.
 
 Args:
@@ -180,6 +180,7 @@
 
   media_body: string, The filename of the media request body, or an instance of a MediaUpload object.
   onBehalfOf: string, ID of the Google+ Page for the channel that the request is be on behalf of
+  media_mime_type: string, The MIME type of the media request body, or an instance of a MediaUpload object.
   sync: boolean, The sync parameter indicates whether YouTube should automatically synchronize the caption file with the audio track of the video. If you set the value to true, YouTube will disregard any time codes that are in the uploaded caption file and generate new time codes for the captions.
 
 You should set the sync parameter to true if you are uploading a transcript, which has no time codes, or if you suspect the time codes in your file are incorrect and want YouTube to try to fix them.
@@ -259,7 +260,7 @@
 </div>
 
 <div class="method">
-    <code class="details" id="update">update(part, body=None, media_body=None, onBehalfOf=None, sync=None, onBehalfOfContentOwner=None)</code>
+    <code class="details" id="update">update(part, body=None, media_body=None, onBehalfOf=None, media_mime_type=None, sync=None, onBehalfOfContentOwner=None)</code>
   <pre>Updates a caption track. When updating a caption track, you can change the track's draft status, upload a new caption file for the track, or both.
 
 Args:
@@ -290,6 +291,7 @@
 
   media_body: string, The filename of the media request body, or an instance of a MediaUpload object.
   onBehalfOf: string, ID of the Google+ Page for the channel that the request is be on behalf of
+  media_mime_type: string, The MIME type of the media request body, or an instance of a MediaUpload object.
   sync: boolean, Note: The API server only processes the parameter value if the request contains an updated caption file.
 
 The sync parameter indicates whether YouTube should automatically synchronize the caption file with the audio track of the video. If you set the value to true, YouTube will automatically synchronize the caption track with the audio track.
diff --git a/docs/dyn/youtube_v3.channelBanners.html b/docs/dyn/youtube_v3.channelBanners.html
index 029b80e..d1254e3 100644
--- a/docs/dyn/youtube_v3.channelBanners.html
+++ b/docs/dyn/youtube_v3.channelBanners.html
@@ -75,11 +75,11 @@
 <h1><a href="youtube_v3.html">YouTube Data API</a> . <a href="youtube_v3.channelBanners.html">channelBanners</a></h1>
 <h2>Instance Methods</h2>
 <p class="toc_element">
-  <code><a href="#insert">insert(body=None, media_body=None, onBehalfOfContentOwner=None)</a></code></p>
+  <code><a href="#insert">insert(body=None, media_body=None, onBehalfOfContentOwner=None, media_mime_type=None)</a></code></p>
 <p class="firstline">Uploads a channel banner image to YouTube. This method represents the first two steps in a three-step process to update the banner image for a channel:</p>
 <h3>Method Details</h3>
 <div class="method">
-    <code class="details" id="insert">insert(body=None, media_body=None, onBehalfOfContentOwner=None)</code>
+    <code class="details" id="insert">insert(body=None, media_body=None, onBehalfOfContentOwner=None, media_mime_type=None)</code>
   <pre>Uploads a channel banner image to YouTube. This method represents the first two steps in a three-step process to update the banner image for a channel:
 
 - Call the channelBanners.insert method to upload the binary image data to YouTube. The image must have a 16:9 aspect ratio and be at least 2120x1192 pixels.
@@ -100,6 +100,7 @@
   onBehalfOfContentOwner: string, Note: This parameter is intended exclusively for YouTube content partners.
 
 The onBehalfOfContentOwner parameter indicates that the request's authorization credentials identify a YouTube CMS user who is acting on behalf of the content owner specified in the parameter value. This parameter is intended for YouTube content partners that own and manage many different YouTube channels. It allows content owners to authenticate once and get access to all their video and channel data, without having to provide authentication credentials for each individual channel. The CMS account that the user authenticates with must be linked to the specified YouTube content owner.
+  media_mime_type: string, The MIME type of the media request body, or an instance of a MediaUpload object.
 
 Returns:
   An object of the form:
diff --git a/docs/dyn/youtube_v3.channels.html b/docs/dyn/youtube_v3.channels.html
index 05d1ed3..b0d359e 100644
--- a/docs/dyn/youtube_v3.channels.html
+++ b/docs/dyn/youtube_v3.channels.html
@@ -176,7 +176,6 @@
             "favorites": "A String", # The ID of the playlist that contains the channel"s favorite videos. Use the  playlistItems.insert and  playlistItems.delete to add or remove items from that list.
             "uploads": "A String", # The ID of the playlist that contains the channel"s uploaded videos. Use the  videos.insert method to upload new videos and the videos.delete method to delete previously uploaded videos.
           },
-          "googlePlusUserId": "A String", # The googlePlusUserId object identifies the Google+ profile ID associated with this channel.
         },
         "brandingSettings": { # Branding properties of a YouTube channel. # The brandingSettings object encapsulates information about the branding of the channel.
           "image": { # Branding properties for images associated with the channel. # Branding properties for branding images.
@@ -449,7 +448,6 @@
       "favorites": "A String", # The ID of the playlist that contains the channel"s favorite videos. Use the  playlistItems.insert and  playlistItems.delete to add or remove items from that list.
       "uploads": "A String", # The ID of the playlist that contains the channel"s uploaded videos. Use the  videos.insert method to upload new videos and the videos.delete method to delete previously uploaded videos.
     },
-    "googlePlusUserId": "A String", # The googlePlusUserId object identifies the Google+ profile ID associated with this channel.
   },
   "brandingSettings": { # Branding properties of a YouTube channel. # The brandingSettings object encapsulates information about the branding of the channel.
     "image": { # Branding properties for images associated with the channel. # Branding properties for branding images.
@@ -689,7 +687,6 @@
         "favorites": "A String", # The ID of the playlist that contains the channel"s favorite videos. Use the  playlistItems.insert and  playlistItems.delete to add or remove items from that list.
         "uploads": "A String", # The ID of the playlist that contains the channel"s uploaded videos. Use the  videos.insert method to upload new videos and the videos.delete method to delete previously uploaded videos.
       },
-      "googlePlusUserId": "A String", # The googlePlusUserId object identifies the Google+ profile ID associated with this channel.
     },
     "brandingSettings": { # Branding properties of a YouTube channel. # The brandingSettings object encapsulates information about the branding of the channel.
       "image": { # Branding properties for images associated with the channel. # Branding properties for branding images.
diff --git a/docs/dyn/youtube_v3.commentThreads.html b/docs/dyn/youtube_v3.commentThreads.html
index bc90f13..2bacbc2 100644
--- a/docs/dyn/youtube_v3.commentThreads.html
+++ b/docs/dyn/youtube_v3.commentThreads.html
@@ -119,7 +119,6 @@
           "textOriginal": "A String", # The comment's original raw text as initially posted or last updated. The original text will only be returned if it is accessible to the viewer, which is only guaranteed if the viewer is the comment's author.
           "updatedAt": "A String", # The date and time when was last updated . The value is specified in ISO 8601 (YYYY-MM-DDThh:mm:ss.sZ) format.
           "authorProfileImageUrl": "A String", # The URL for the avatar of the user who posted the comment.
-          "authorGoogleplusProfileUrl": "A String", # Link to the author's Google+ profile, if any.
           "textDisplay": "A String", # The comment's text. The format is either plain text or HTML dependent on what has been requested. Even the plain text representation may differ from the text originally posted in that it may replace video links with video titles etc.
         },
         "kind": "youtube#comment", # Identifies what kind of resource this is. Value: the fixed string "youtube#comment".
@@ -148,7 +147,6 @@
             "textOriginal": "A String", # The comment's original raw text as initially posted or last updated. The original text will only be returned if it is accessible to the viewer, which is only guaranteed if the viewer is the comment's author.
             "updatedAt": "A String", # The date and time when was last updated . The value is specified in ISO 8601 (YYYY-MM-DDThh:mm:ss.sZ) format.
             "authorProfileImageUrl": "A String", # The URL for the avatar of the user who posted the comment.
-            "authorGoogleplusProfileUrl": "A String", # Link to the author's Google+ profile, if any.
             "textDisplay": "A String", # The comment's text. The format is either plain text or HTML dependent on what has been requested. Even the plain text representation may differ from the text originally posted in that it may replace video links with video titles etc.
           },
           "kind": "youtube#comment", # Identifies what kind of resource this is. Value: the fixed string "youtube#comment".
@@ -186,7 +184,6 @@
             "textOriginal": "A String", # The comment's original raw text as initially posted or last updated. The original text will only be returned if it is accessible to the viewer, which is only guaranteed if the viewer is the comment's author.
             "updatedAt": "A String", # The date and time when was last updated . The value is specified in ISO 8601 (YYYY-MM-DDThh:mm:ss.sZ) format.
             "authorProfileImageUrl": "A String", # The URL for the avatar of the user who posted the comment.
-            "authorGoogleplusProfileUrl": "A String", # Link to the author's Google+ profile, if any.
             "textDisplay": "A String", # The comment's text. The format is either plain text or HTML dependent on what has been requested. Even the plain text representation may differ from the text originally posted in that it may replace video links with video titles etc.
           },
           "kind": "youtube#comment", # Identifies what kind of resource this is. Value: the fixed string "youtube#comment".
@@ -215,7 +212,6 @@
               "textOriginal": "A String", # The comment's original raw text as initially posted or last updated. The original text will only be returned if it is accessible to the viewer, which is only guaranteed if the viewer is the comment's author.
               "updatedAt": "A String", # The date and time when was last updated . The value is specified in ISO 8601 (YYYY-MM-DDThh:mm:ss.sZ) format.
               "authorProfileImageUrl": "A String", # The URL for the avatar of the user who posted the comment.
-              "authorGoogleplusProfileUrl": "A String", # Link to the author's Google+ profile, if any.
               "textDisplay": "A String", # The comment's text. The format is either plain text or HTML dependent on what has been requested. Even the plain text representation may differ from the text originally posted in that it may replace video links with video titles etc.
             },
             "kind": "youtube#comment", # Identifies what kind of resource this is. Value: the fixed string "youtube#comment".
@@ -296,7 +292,6 @@
                 "textOriginal": "A String", # The comment's original raw text as initially posted or last updated. The original text will only be returned if it is accessible to the viewer, which is only guaranteed if the viewer is the comment's author.
                 "updatedAt": "A String", # The date and time when was last updated . The value is specified in ISO 8601 (YYYY-MM-DDThh:mm:ss.sZ) format.
                 "authorProfileImageUrl": "A String", # The URL for the avatar of the user who posted the comment.
-                "authorGoogleplusProfileUrl": "A String", # Link to the author's Google+ profile, if any.
                 "textDisplay": "A String", # The comment's text. The format is either plain text or HTML dependent on what has been requested. Even the plain text representation may differ from the text originally posted in that it may replace video links with video titles etc.
               },
               "kind": "youtube#comment", # Identifies what kind of resource this is. Value: the fixed string "youtube#comment".
@@ -325,7 +320,6 @@
                   "textOriginal": "A String", # The comment's original raw text as initially posted or last updated. The original text will only be returned if it is accessible to the viewer, which is only guaranteed if the viewer is the comment's author.
                   "updatedAt": "A String", # The date and time when was last updated . The value is specified in ISO 8601 (YYYY-MM-DDThh:mm:ss.sZ) format.
                   "authorProfileImageUrl": "A String", # The URL for the avatar of the user who posted the comment.
-                  "authorGoogleplusProfileUrl": "A String", # Link to the author's Google+ profile, if any.
                   "textDisplay": "A String", # The comment's text. The format is either plain text or HTML dependent on what has been requested. Even the plain text representation may differ from the text originally posted in that it may replace video links with video titles etc.
                 },
                 "kind": "youtube#comment", # Identifies what kind of resource this is. Value: the fixed string "youtube#comment".
@@ -392,7 +386,6 @@
           "textOriginal": "A String", # The comment's original raw text as initially posted or last updated. The original text will only be returned if it is accessible to the viewer, which is only guaranteed if the viewer is the comment's author.
           "updatedAt": "A String", # The date and time when was last updated . The value is specified in ISO 8601 (YYYY-MM-DDThh:mm:ss.sZ) format.
           "authorProfileImageUrl": "A String", # The URL for the avatar of the user who posted the comment.
-          "authorGoogleplusProfileUrl": "A String", # Link to the author's Google+ profile, if any.
           "textDisplay": "A String", # The comment's text. The format is either plain text or HTML dependent on what has been requested. Even the plain text representation may differ from the text originally posted in that it may replace video links with video titles etc.
         },
         "kind": "youtube#comment", # Identifies what kind of resource this is. Value: the fixed string "youtube#comment".
@@ -421,7 +414,6 @@
             "textOriginal": "A String", # The comment's original raw text as initially posted or last updated. The original text will only be returned if it is accessible to the viewer, which is only guaranteed if the viewer is the comment's author.
             "updatedAt": "A String", # The date and time when was last updated . The value is specified in ISO 8601 (YYYY-MM-DDThh:mm:ss.sZ) format.
             "authorProfileImageUrl": "A String", # The URL for the avatar of the user who posted the comment.
-            "authorGoogleplusProfileUrl": "A String", # Link to the author's Google+ profile, if any.
             "textDisplay": "A String", # The comment's text. The format is either plain text or HTML dependent on what has been requested. Even the plain text representation may differ from the text originally posted in that it may replace video links with video titles etc.
           },
           "kind": "youtube#comment", # Identifies what kind of resource this is. Value: the fixed string "youtube#comment".
@@ -459,7 +451,6 @@
             "textOriginal": "A String", # The comment's original raw text as initially posted or last updated. The original text will only be returned if it is accessible to the viewer, which is only guaranteed if the viewer is the comment's author.
             "updatedAt": "A String", # The date and time when was last updated . The value is specified in ISO 8601 (YYYY-MM-DDThh:mm:ss.sZ) format.
             "authorProfileImageUrl": "A String", # The URL for the avatar of the user who posted the comment.
-            "authorGoogleplusProfileUrl": "A String", # Link to the author's Google+ profile, if any.
             "textDisplay": "A String", # The comment's text. The format is either plain text or HTML dependent on what has been requested. Even the plain text representation may differ from the text originally posted in that it may replace video links with video titles etc.
           },
           "kind": "youtube#comment", # Identifies what kind of resource this is. Value: the fixed string "youtube#comment".
@@ -488,7 +479,6 @@
               "textOriginal": "A String", # The comment's original raw text as initially posted or last updated. The original text will only be returned if it is accessible to the viewer, which is only guaranteed if the viewer is the comment's author.
               "updatedAt": "A String", # The date and time when was last updated . The value is specified in ISO 8601 (YYYY-MM-DDThh:mm:ss.sZ) format.
               "authorProfileImageUrl": "A String", # The URL for the avatar of the user who posted the comment.
-              "authorGoogleplusProfileUrl": "A String", # Link to the author's Google+ profile, if any.
               "textDisplay": "A String", # The comment's text. The format is either plain text or HTML dependent on what has been requested. Even the plain text representation may differ from the text originally posted in that it may replace video links with video titles etc.
             },
             "kind": "youtube#comment", # Identifies what kind of resource this is. Value: the fixed string "youtube#comment".
diff --git a/docs/dyn/youtube_v3.comments.html b/docs/dyn/youtube_v3.comments.html
index a4ba460..6d89386 100644
--- a/docs/dyn/youtube_v3.comments.html
+++ b/docs/dyn/youtube_v3.comments.html
@@ -130,7 +130,6 @@
     "textOriginal": "A String", # The comment's original raw text as initially posted or last updated. The original text will only be returned if it is accessible to the viewer, which is only guaranteed if the viewer is the comment's author.
     "updatedAt": "A String", # The date and time when was last updated . The value is specified in ISO 8601 (YYYY-MM-DDThh:mm:ss.sZ) format.
     "authorProfileImageUrl": "A String", # The URL for the avatar of the user who posted the comment.
-    "authorGoogleplusProfileUrl": "A String", # Link to the author's Google+ profile, if any.
     "textDisplay": "A String", # The comment's text. The format is either plain text or HTML dependent on what has been requested. Even the plain text representation may differ from the text originally posted in that it may replace video links with video titles etc.
   },
   "kind": "youtube#comment", # Identifies what kind of resource this is. Value: the fixed string "youtube#comment".
@@ -158,7 +157,6 @@
       "textOriginal": "A String", # The comment's original raw text as initially posted or last updated. The original text will only be returned if it is accessible to the viewer, which is only guaranteed if the viewer is the comment's author.
       "updatedAt": "A String", # The date and time when was last updated . The value is specified in ISO 8601 (YYYY-MM-DDThh:mm:ss.sZ) format.
       "authorProfileImageUrl": "A String", # The URL for the avatar of the user who posted the comment.
-      "authorGoogleplusProfileUrl": "A String", # Link to the author's Google+ profile, if any.
       "textDisplay": "A String", # The comment's text. The format is either plain text or HTML dependent on what has been requested. Even the plain text representation may differ from the text originally posted in that it may replace video links with video titles etc.
     },
     "kind": "youtube#comment", # Identifies what kind of resource this is. Value: the fixed string "youtube#comment".
@@ -213,7 +211,6 @@
           "textOriginal": "A String", # The comment's original raw text as initially posted or last updated. The original text will only be returned if it is accessible to the viewer, which is only guaranteed if the viewer is the comment's author.
           "updatedAt": "A String", # The date and time when was last updated . The value is specified in ISO 8601 (YYYY-MM-DDThh:mm:ss.sZ) format.
           "authorProfileImageUrl": "A String", # The URL for the avatar of the user who posted the comment.
-          "authorGoogleplusProfileUrl": "A String", # Link to the author's Google+ profile, if any.
           "textDisplay": "A String", # The comment's text. The format is either plain text or HTML dependent on what has been requested. Even the plain text representation may differ from the text originally posted in that it may replace video links with video titles etc.
         },
         "kind": "youtube#comment", # Identifies what kind of resource this is. Value: the fixed string "youtube#comment".
@@ -298,7 +295,6 @@
     "textOriginal": "A String", # The comment's original raw text as initially posted or last updated. The original text will only be returned if it is accessible to the viewer, which is only guaranteed if the viewer is the comment's author.
     "updatedAt": "A String", # The date and time when was last updated . The value is specified in ISO 8601 (YYYY-MM-DDThh:mm:ss.sZ) format.
     "authorProfileImageUrl": "A String", # The URL for the avatar of the user who posted the comment.
-    "authorGoogleplusProfileUrl": "A String", # Link to the author's Google+ profile, if any.
     "textDisplay": "A String", # The comment's text. The format is either plain text or HTML dependent on what has been requested. Even the plain text representation may differ from the text originally posted in that it may replace video links with video titles etc.
   },
   "kind": "youtube#comment", # Identifies what kind of resource this is. Value: the fixed string "youtube#comment".
@@ -326,7 +322,6 @@
       "textOriginal": "A String", # The comment's original raw text as initially posted or last updated. The original text will only be returned if it is accessible to the viewer, which is only guaranteed if the viewer is the comment's author.
       "updatedAt": "A String", # The date and time when was last updated . The value is specified in ISO 8601 (YYYY-MM-DDThh:mm:ss.sZ) format.
       "authorProfileImageUrl": "A String", # The URL for the avatar of the user who posted the comment.
-      "authorGoogleplusProfileUrl": "A String", # Link to the author's Google+ profile, if any.
       "textDisplay": "A String", # The comment's text. The format is either plain text or HTML dependent on what has been requested. Even the plain text representation may differ from the text originally posted in that it may replace video links with video titles etc.
     },
     "kind": "youtube#comment", # Identifies what kind of resource this is. Value: the fixed string "youtube#comment".
diff --git a/docs/dyn/youtube_v3.playlistItems.html b/docs/dyn/youtube_v3.playlistItems.html
index bdf5eb0..9f6f7b5 100644
--- a/docs/dyn/youtube_v3.playlistItems.html
+++ b/docs/dyn/youtube_v3.playlistItems.html
@@ -75,7 +75,7 @@
 <h1><a href="youtube_v3.html">YouTube Data API</a> . <a href="youtube_v3.playlistItems.html">playlistItems</a></h1>
 <h2>Instance Methods</h2>
 <p class="toc_element">
-  <code><a href="#delete">delete(id)</a></code></p>
+  <code><a href="#delete">delete(id, onBehalfOfContentOwner=None)</a></code></p>
 <p class="firstline">Deletes a playlist item.</p>
 <p class="toc_element">
   <code><a href="#insert">insert(part, body, onBehalfOfContentOwner=None)</a></code></p>
@@ -87,15 +87,18 @@
   <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="#update">update(part=None, body)</a></code></p>
+  <code><a href="#update">update(part=None, body, onBehalfOfContentOwner=None)</a></code></p>
 <p class="firstline">Modifies a playlist item. For example, you could update the item's position in the playlist.</p>
 <h3>Method Details</h3>
 <div class="method">
-    <code class="details" id="delete">delete(id)</code>
+    <code class="details" id="delete">delete(id, onBehalfOfContentOwner=None)</code>
   <pre>Deletes a playlist item.
 
 Args:
   id: string, The id parameter specifies the YouTube playlist item ID for the playlist item that is being deleted. In a playlistItem resource, the id property specifies the playlist item's ID. (required)
+  onBehalfOfContentOwner: string, Note: This parameter is intended exclusively for YouTube content partners.
+
+The onBehalfOfContentOwner parameter indicates that the request's authorization credentials identify a YouTube CMS user who is acting on behalf of the content owner specified in the parameter value. This parameter is intended for YouTube content partners that own and manage many different YouTube channels. It allows content owners to authenticate once and get access to all their video and channel data, without having to provide authentication credentials for each individual channel. The CMS account that the user authenticates with must be linked to the specified YouTube content owner.
 </pre>
 </div>
 
@@ -124,6 +127,7 @@
     "kind": "youtube#playlistItem", # Identifies what kind of resource this is. Value: the fixed string "youtube#playlistItem".
     "contentDetails": { # The contentDetails object is included in the resource if the included item is a YouTube video. The object contains additional information about the video.
       "note": "A String", # A user-generated note for this item.
+      "videoPublishedAt": "A String", # The date and time that the video was published to YouTube. The value is specified in ISO 8601 (YYYY-MM-DDThh:mm:ss.sZ) format.
       "startAt": "A String", # The time, measured in seconds from the start of the video, when the video should start playing. (The playlist owner can specify the times when the video should start and stop playing when the video is played in the context of the playlist.) The default value is 0.
       "endAt": "A String", # The time, measured in seconds from the start of the video, when the video should stop playing. (The playlist owner can specify the times when the video should start and stop playing when the video is played in the context of the playlist.) By default, assume that the video.endTime is the end of the video.
       "videoId": "A String", # The ID that YouTube uses to uniquely identify a video. To retrieve the video resource, set the id query parameter to this value in your API request.
@@ -197,6 +201,7 @@
       "kind": "youtube#playlistItem", # Identifies what kind of resource this is. Value: the fixed string "youtube#playlistItem".
       "contentDetails": { # The contentDetails object is included in the resource if the included item is a YouTube video. The object contains additional information about the video.
         "note": "A String", # A user-generated note for this item.
+        "videoPublishedAt": "A String", # The date and time that the video was published to YouTube. The value is specified in ISO 8601 (YYYY-MM-DDThh:mm:ss.sZ) format.
         "startAt": "A String", # The time, measured in seconds from the start of the video, when the video should start playing. (The playlist owner can specify the times when the video should start and stop playing when the video is played in the context of the playlist.) The default value is 0.
         "endAt": "A String", # The time, measured in seconds from the start of the video, when the video should stop playing. (The playlist owner can specify the times when the video should start and stop playing when the video is played in the context of the playlist.) By default, assume that the video.endTime is the end of the video.
         "videoId": "A String", # The ID that YouTube uses to uniquely identify a video. To retrieve the video resource, set the id query parameter to this value in your API request.
@@ -290,6 +295,7 @@
           "kind": "youtube#playlistItem", # Identifies what kind of resource this is. Value: the fixed string "youtube#playlistItem".
           "contentDetails": { # The contentDetails object is included in the resource if the included item is a YouTube video. The object contains additional information about the video.
             "note": "A String", # A user-generated note for this item.
+            "videoPublishedAt": "A String", # The date and time that the video was published to YouTube. The value is specified in ISO 8601 (YYYY-MM-DDThh:mm:ss.sZ) format.
             "startAt": "A String", # The time, measured in seconds from the start of the video, when the video should start playing. (The playlist owner can specify the times when the video should start and stop playing when the video is played in the context of the playlist.) The default value is 0.
             "endAt": "A String", # The time, measured in seconds from the start of the video, when the video should stop playing. (The playlist owner can specify the times when the video should start and stop playing when the video is played in the context of the playlist.) By default, assume that the video.endTime is the end of the video.
             "videoId": "A String", # The ID that YouTube uses to uniquely identify a video. To retrieve the video resource, set the id query parameter to this value in your API request.
@@ -366,7 +372,7 @@
 </div>
 
 <div class="method">
-    <code class="details" id="update">update(part=None, body)</code>
+    <code class="details" id="update">update(part=None, body, onBehalfOfContentOwner=None)</code>
   <pre>Modifies a playlist item. For example, you could update the item's position in the playlist.
 
 Args:
@@ -392,6 +398,7 @@
     "kind": "youtube#playlistItem", # Identifies what kind of resource this is. Value: the fixed string "youtube#playlistItem".
     "contentDetails": { # The contentDetails object is included in the resource if the included item is a YouTube video. The object contains additional information about the video.
       "note": "A String", # A user-generated note for this item.
+      "videoPublishedAt": "A String", # The date and time that the video was published to YouTube. The value is specified in ISO 8601 (YYYY-MM-DDThh:mm:ss.sZ) format.
       "startAt": "A String", # The time, measured in seconds from the start of the video, when the video should start playing. (The playlist owner can specify the times when the video should start and stop playing when the video is played in the context of the playlist.) The default value is 0.
       "endAt": "A String", # The time, measured in seconds from the start of the video, when the video should stop playing. (The playlist owner can specify the times when the video should start and stop playing when the video is played in the context of the playlist.) By default, assume that the video.endTime is the end of the video.
       "videoId": "A String", # The ID that YouTube uses to uniquely identify a video. To retrieve the video resource, set the id query parameter to this value in your API request.
@@ -442,6 +449,9 @@
     "id": "A String", # The ID that YouTube uses to uniquely identify the playlist item.
   }
 
+  onBehalfOfContentOwner: string, Note: This parameter is intended exclusively for YouTube content partners.
+
+The onBehalfOfContentOwner parameter indicates that the request's authorization credentials identify a YouTube CMS user who is acting on behalf of the content owner specified in the parameter value. This parameter is intended for YouTube content partners that own and manage many different YouTube channels. It allows content owners to authenticate once and get access to all their video and channel data, without having to provide authentication credentials for each individual channel. The CMS account that the user authenticates with must be linked to the specified YouTube content owner.
 
 Returns:
   An object of the form:
@@ -462,6 +472,7 @@
       "kind": "youtube#playlistItem", # Identifies what kind of resource this is. Value: the fixed string "youtube#playlistItem".
       "contentDetails": { # The contentDetails object is included in the resource if the included item is a YouTube video. The object contains additional information about the video.
         "note": "A String", # A user-generated note for this item.
+        "videoPublishedAt": "A String", # The date and time that the video was published to YouTube. The value is specified in ISO 8601 (YYYY-MM-DDThh:mm:ss.sZ) format.
         "startAt": "A String", # The time, measured in seconds from the start of the video, when the video should start playing. (The playlist owner can specify the times when the video should start and stop playing when the video is played in the context of the playlist.) The default value is 0.
         "endAt": "A String", # The time, measured in seconds from the start of the video, when the video should stop playing. (The playlist owner can specify the times when the video should start and stop playing when the video is played in the context of the playlist.) By default, assume that the video.endTime is the end of the video.
         "videoId": "A String", # The ID that YouTube uses to uniquely identify a video. To retrieve the video resource, set the id query parameter to this value in your API request.
diff --git a/docs/dyn/youtube_v3.thumbnails.html b/docs/dyn/youtube_v3.thumbnails.html
index 2aca020..28d987a 100644
--- a/docs/dyn/youtube_v3.thumbnails.html
+++ b/docs/dyn/youtube_v3.thumbnails.html
@@ -75,11 +75,11 @@
 <h1><a href="youtube_v3.html">YouTube Data API</a> . <a href="youtube_v3.thumbnails.html">thumbnails</a></h1>
 <h2>Instance Methods</h2>
 <p class="toc_element">
-  <code><a href="#set">set(videoId, media_body=None, onBehalfOfContentOwner=None)</a></code></p>
+  <code><a href="#set">set(videoId, media_body=None, onBehalfOfContentOwner=None, media_mime_type=None)</a></code></p>
 <p class="firstline">Uploads a custom video thumbnail to YouTube and sets it for a video.</p>
 <h3>Method Details</h3>
 <div class="method">
-    <code class="details" id="set">set(videoId, media_body=None, onBehalfOfContentOwner=None)</code>
+    <code class="details" id="set">set(videoId, media_body=None, onBehalfOfContentOwner=None, media_mime_type=None)</code>
   <pre>Uploads a custom video thumbnail to YouTube and sets it for a video.
 
 Args:
@@ -88,6 +88,7 @@
   onBehalfOfContentOwner: string, Note: This parameter is intended exclusively for YouTube content partners.
 
 The onBehalfOfContentOwner parameter indicates that the request's authorization credentials identify a YouTube CMS user who is acting on behalf of the content owner specified in the parameter value. This parameter is intended for YouTube content partners that own and manage many different YouTube channels. It allows content owners to authenticate once and get access to all their video and channel data, without having to provide authentication credentials for each individual channel. The actual CMS account that the user authenticates with must be linked to the specified YouTube content owner.
+  media_mime_type: string, The MIME type of the media request body, or an instance of a MediaUpload object.
 
 Returns:
   An object of the form:
diff --git a/docs/dyn/youtube_v3.videos.html b/docs/dyn/youtube_v3.videos.html
index 67c8fb8..def7113 100644
--- a/docs/dyn/youtube_v3.videos.html
+++ b/docs/dyn/youtube_v3.videos.html
@@ -81,10 +81,10 @@
   <code><a href="#getRating">getRating(id, onBehalfOfContentOwner=None)</a></code></p>
 <p class="firstline">Retrieves the ratings that the authorized user gave to a list of specified videos.</p>
 <p class="toc_element">
-  <code><a href="#insert">insert(part=None, body=None, media_body=None, onBehalfOfContentOwner=None, stabilize=None, onBehalfOfContentOwnerChannel=None, notifySubscribers=None, autoLevels=None)</a></code></p>
+  <code><a href="#insert">insert(part=None, body=None, media_body=None, onBehalfOfContentOwner=None, stabilize=None, media_mime_type=None, onBehalfOfContentOwnerChannel=None, notifySubscribers=None, autoLevels=None)</a></code></p>
 <p class="firstline">Uploads a video to YouTube and optionally sets the video's metadata.</p>
 <p class="toc_element">
-  <code><a href="#list">list(part=None, hl=None, locale=None, id=None, onBehalfOfContentOwner=None, regionCode=None, pageToken=None, maxResults=None, chart=None, myRating=None, videoCategoryId=None)</a></code></p>
+  <code><a href="#list">list(part=None, hl=None, maxWidth=None, locale=None, id=None, onBehalfOfContentOwner=None, regionCode=None, pageToken=None, maxResults=None, chart=None, myRating=None, maxHeight=None, videoCategoryId=None)</a></code></p>
 <p class="firstline">Returns a list of videos that match the API request parameters.</p>
 <p class="toc_element">
   <code><a href="#list_next">list_next(previous_request, previous_response)</a></code></p>
@@ -139,7 +139,7 @@
 </div>
 
 <div class="method">
-    <code class="details" id="insert">insert(part=None, body=None, media_body=None, onBehalfOfContentOwner=None, stabilize=None, onBehalfOfContentOwnerChannel=None, notifySubscribers=None, autoLevels=None)</code>
+    <code class="details" id="insert">insert(part=None, body=None, media_body=None, onBehalfOfContentOwner=None, stabilize=None, media_mime_type=None, onBehalfOfContentOwnerChannel=None, notifySubscribers=None, autoLevels=None)</code>
   <pre>Uploads a video to YouTube and optionally sets the video's metadata.
 
 Args:
@@ -236,7 +236,8 @@
         ],
         "allowed": True or False, # The value of allowed indicates whether the access to the policy is allowed or denied by default.
       },
-      "contentRating": { # Ratings schemes. The country-specific ratings are mostly for movies and shows. NEXT_ID: 68 # Specifies the ratings that the video received under various rating schemes.
+      "hasCustomThumbnail": True or False, # Indicates whether the video uploader has provided a custom thumbnail image for the video. This property is only visible to the video uploader.
+      "contentRating": { # Ratings schemes. The country-specific ratings are mostly for movies and shows. NEXT_ID: 69 # Specifies the ratings that the video received under various rating schemes.
         "cncRating": "A String", # Rating system in France - Commission de classification cinematographique
         "catvfrRating": "A String", # The video's rating from the Canadian Radio-Television and Telecommunications Commission (CRTC) for Canadian French-language broadcasts. For more information, see the Canadian Broadcast Standards Council website.
         "cbfcRating": "A String", # The video's Central Board of Film Certification (CBFC - India) rating.
@@ -289,6 +290,7 @@
         "mtrcbRating": "A String", # The video's rating from the Movie and Television Review and Classification Board (Philippines).
         "mibacRating": "A String", # The video's rating from the Ministero dei Beni e delle Attività Culturali e del Turismo (Italy).
         "anatelRating": "A String", # The video's Anatel (Asociación Nacional de Televisión) rating for Chilean television.
+        "mcstRating": "A String", # The video's rating system for Vietnam - MCST
         "smaisRating": "A String", # The video's rating in Iceland.
         "ilfilmRating": "A String", # The video's rating in Israel.
         "russiaRating": "A String", # The video's National Film Registry of the Russian Federation (MKRF - Russia) rating.
@@ -330,11 +332,6 @@
     "fileDetails": { # Describes original video file properties, including technical details about audio and video streams, but also metadata information like content length, digitization time, or geotagging information. # The fileDetails object encapsulates information about the video file that was uploaded to YouTube, including the file's resolution, duration, audio and video codecs, stream bitrates, and more. This data can only be retrieved by the video owner.
       "bitrateBps": "A String", # The uploaded video file's combined (video and audio) bitrate in bits per second.
       "container": "A String", # The uploaded video file's container format.
-      "recordingLocation": { # Geographical coordinates of a point, in WGS84. # Geographic coordinates that identify the place where the uploaded video was recorded. Coordinates are defined using WGS 84.
-        "latitude": 3.14, # Latitude in degrees.
-        "altitude": 3.14, # Altitude above the reference ellipsoid, in meters.
-        "longitude": 3.14, # Longitude in degrees.
-      },
       "fileType": "A String", # The uploaded file's type as detected by YouTube's video processing engine. Currently, YouTube only processes video files, but this field is present whether a video file or another type of file was uploaded.
       "creationTime": "A String", # The date and time when the uploaded video file was created. The value is specified in ISO 8601 format. Currently, the following ISO 8601 formats are supported:
           # - Date only: YYYY-MM-DD
@@ -385,6 +382,8 @@
     },
     "player": { # Player to be used for a video playback. # The player object contains information that you would use to play the video in an embedded player.
       "embedHtml": "A String", # An <iframe> tag that embeds a player that will play the video.
+      "embedHeight": "A String",
+      "embedWidth": "A String", # The embed width
     },
     "etag": "A String", # Etag of this resource.
     "status": { # Basic details about a video category, such as its localized title. # The status object contains information about the video's uploading, processing, and privacy statuses.
@@ -447,6 +446,7 @@
 
 The onBehalfOfContentOwner parameter indicates that the request's authorization credentials identify a YouTube CMS user who is acting on behalf of the content owner specified in the parameter value. This parameter is intended for YouTube content partners that own and manage many different YouTube channels. It allows content owners to authenticate once and get access to all their video and channel data, without having to provide authentication credentials for each individual channel. The CMS account that the user authenticates with must be linked to the specified YouTube content owner.
   stabilize: boolean, The stabilize parameter indicates whether YouTube should adjust the video to remove shaky camera motions.
+  media_mime_type: string, The MIME type of the media request body, or an instance of a MediaUpload object.
   onBehalfOfContentOwnerChannel: string, This parameter can only be used in a properly authorized request. Note: This parameter is intended exclusively for YouTube content partners.
 
 The onBehalfOfContentOwnerChannel parameter specifies the YouTube channel ID of the channel to which a video is being added. This parameter is required when a request specifies a value for the onBehalfOfContentOwner parameter, and it can only be used in conjunction with that parameter. In addition, the request must be authorized using a CMS account that is linked to the content owner that the onBehalfOfContentOwner parameter specifies. Finally, the channel that the onBehalfOfContentOwnerChannel parameter value specifies must be linked to the content owner that the onBehalfOfContentOwner parameter specifies.
@@ -545,7 +545,8 @@
           ],
           "allowed": True or False, # The value of allowed indicates whether the access to the policy is allowed or denied by default.
         },
-        "contentRating": { # Ratings schemes. The country-specific ratings are mostly for movies and shows. NEXT_ID: 68 # Specifies the ratings that the video received under various rating schemes.
+        "hasCustomThumbnail": True or False, # Indicates whether the video uploader has provided a custom thumbnail image for the video. This property is only visible to the video uploader.
+        "contentRating": { # Ratings schemes. The country-specific ratings are mostly for movies and shows. NEXT_ID: 69 # Specifies the ratings that the video received under various rating schemes.
           "cncRating": "A String", # Rating system in France - Commission de classification cinematographique
           "catvfrRating": "A String", # The video's rating from the Canadian Radio-Television and Telecommunications Commission (CRTC) for Canadian French-language broadcasts. For more information, see the Canadian Broadcast Standards Council website.
           "cbfcRating": "A String", # The video's Central Board of Film Certification (CBFC - India) rating.
@@ -598,6 +599,7 @@
           "mtrcbRating": "A String", # The video's rating from the Movie and Television Review and Classification Board (Philippines).
           "mibacRating": "A String", # The video's rating from the Ministero dei Beni e delle Attività Culturali e del Turismo (Italy).
           "anatelRating": "A String", # The video's Anatel (Asociación Nacional de Televisión) rating for Chilean television.
+          "mcstRating": "A String", # The video's rating system for Vietnam - MCST
           "smaisRating": "A String", # The video's rating in Iceland.
           "ilfilmRating": "A String", # The video's rating in Israel.
           "russiaRating": "A String", # The video's National Film Registry of the Russian Federation (MKRF - Russia) rating.
@@ -639,11 +641,6 @@
       "fileDetails": { # Describes original video file properties, including technical details about audio and video streams, but also metadata information like content length, digitization time, or geotagging information. # The fileDetails object encapsulates information about the video file that was uploaded to YouTube, including the file's resolution, duration, audio and video codecs, stream bitrates, and more. This data can only be retrieved by the video owner.
         "bitrateBps": "A String", # The uploaded video file's combined (video and audio) bitrate in bits per second.
         "container": "A String", # The uploaded video file's container format.
-        "recordingLocation": { # Geographical coordinates of a point, in WGS84. # Geographic coordinates that identify the place where the uploaded video was recorded. Coordinates are defined using WGS 84.
-          "latitude": 3.14, # Latitude in degrees.
-          "altitude": 3.14, # Altitude above the reference ellipsoid, in meters.
-          "longitude": 3.14, # Longitude in degrees.
-        },
         "fileType": "A String", # The uploaded file's type as detected by YouTube's video processing engine. Currently, YouTube only processes video files, but this field is present whether a video file or another type of file was uploaded.
         "creationTime": "A String", # The date and time when the uploaded video file was created. The value is specified in ISO 8601 format. Currently, the following ISO 8601 formats are supported:
             # - Date only: YYYY-MM-DD
@@ -694,6 +691,8 @@
       },
       "player": { # Player to be used for a video playback. # The player object contains information that you would use to play the video in an embedded player.
         "embedHtml": "A String", # An <iframe> tag that embeds a player that will play the video.
+        "embedHeight": "A String",
+        "embedWidth": "A String", # The embed width
       },
       "etag": "A String", # Etag of this resource.
       "status": { # Basic details about a video category, such as its localized title. # The status object contains information about the video's uploading, processing, and privacy statuses.
@@ -753,7 +752,7 @@
 </div>
 
 <div class="method">
-    <code class="details" id="list">list(part=None, hl=None, locale=None, id=None, onBehalfOfContentOwner=None, regionCode=None, pageToken=None, maxResults=None, chart=None, myRating=None, videoCategoryId=None)</code>
+    <code class="details" id="list">list(part=None, hl=None, maxWidth=None, locale=None, id=None, onBehalfOfContentOwner=None, regionCode=None, pageToken=None, maxResults=None, chart=None, myRating=None, maxHeight=None, videoCategoryId=None)</code>
   <pre>Returns a list of videos that match the API request parameters.
 
 Args:
@@ -763,6 +762,7 @@
   hl: string, The hl parameter instructs the API to retrieve localized resource metadata for a specific application language that the YouTube website supports. The parameter value must be a language code included in the list returned by the i18nLanguages.list method.
 
 If localized resource details are available in that language, the resource's snippet.localized object will contain the localized values. However, if localized details are not available, the snippet.localized object will contain resource details in the resource's default language.
+  maxWidth: integer, The maxWidth parameter specifies a maximum width of the embedded player. If maxHeight is provided, maxWidth may not be reached in order to not violate the height request.
   locale: string, DEPRECATED
   id: string, The id parameter specifies a comma-separated list of the YouTube video ID(s) for the resource(s) that are being retrieved. In a video resource, the id property specifies the video's ID.
   onBehalfOfContentOwner: string, Note: This parameter is intended exclusively for YouTube content partners.
@@ -771,10 +771,10 @@
   regionCode: string, The regionCode parameter instructs the API to select a video chart available in the specified region. This parameter can only be used in conjunction with the chart parameter. The parameter value is an ISO 3166-1 alpha-2 country code.
   pageToken: string, The pageToken parameter identifies a specific page in the result set that should be returned. In an API response, the nextPageToken and prevPageToken properties identify other pages that could be retrieved.
 
-Note: This parameter is supported for use in conjunction with the myRating parameter, but it is not supported for use in conjunction with the id parameter.
+Note: This parameter is supported for use in conjunction with the myRating and chart parameters, but it is not supported for use in conjunction with the id parameter.
   maxResults: integer, The maxResults parameter specifies the maximum number of items that should be returned in the result set.
 
-Note: This parameter is supported for use in conjunction with the myRating parameter, but it is not supported for use in conjunction with the id parameter.
+Note: This parameter is supported for use in conjunction with the myRating and chart parameters, but it is not supported for use in conjunction with the id parameter.
   chart: string, The chart parameter identifies the chart that you want to retrieve.
     Allowed values
       mostPopular - Return the most popular videos for the specified content region and video category.
@@ -782,6 +782,7 @@
     Allowed values
       dislike - Returns only videos disliked by the authenticated user.
       like - Returns only video liked by the authenticated user.
+  maxHeight: integer, The maxHeight parameter specifies a maximum height of the embedded player. If maxWidth is provided, maxHeight may not be reached in order to not violate the width request.
   videoCategoryId: string, The videoCategoryId parameter identifies the video category for which the chart should be retrieved. This parameter can only be used in conjunction with the chart parameter. By default, charts are not restricted to a particular category.
 
 Returns:
@@ -880,7 +881,8 @@
               ],
               "allowed": True or False, # The value of allowed indicates whether the access to the policy is allowed or denied by default.
             },
-            "contentRating": { # Ratings schemes. The country-specific ratings are mostly for movies and shows. NEXT_ID: 68 # Specifies the ratings that the video received under various rating schemes.
+            "hasCustomThumbnail": True or False, # Indicates whether the video uploader has provided a custom thumbnail image for the video. This property is only visible to the video uploader.
+            "contentRating": { # Ratings schemes. The country-specific ratings are mostly for movies and shows. NEXT_ID: 69 # Specifies the ratings that the video received under various rating schemes.
               "cncRating": "A String", # Rating system in France - Commission de classification cinematographique
               "catvfrRating": "A String", # The video's rating from the Canadian Radio-Television and Telecommunications Commission (CRTC) for Canadian French-language broadcasts. For more information, see the Canadian Broadcast Standards Council website.
               "cbfcRating": "A String", # The video's Central Board of Film Certification (CBFC - India) rating.
@@ -933,6 +935,7 @@
               "mtrcbRating": "A String", # The video's rating from the Movie and Television Review and Classification Board (Philippines).
               "mibacRating": "A String", # The video's rating from the Ministero dei Beni e delle Attività Culturali e del Turismo (Italy).
               "anatelRating": "A String", # The video's Anatel (Asociación Nacional de Televisión) rating for Chilean television.
+              "mcstRating": "A String", # The video's rating system for Vietnam - MCST
               "smaisRating": "A String", # The video's rating in Iceland.
               "ilfilmRating": "A String", # The video's rating in Israel.
               "russiaRating": "A String", # The video's National Film Registry of the Russian Federation (MKRF - Russia) rating.
@@ -974,11 +977,6 @@
           "fileDetails": { # Describes original video file properties, including technical details about audio and video streams, but also metadata information like content length, digitization time, or geotagging information. # The fileDetails object encapsulates information about the video file that was uploaded to YouTube, including the file's resolution, duration, audio and video codecs, stream bitrates, and more. This data can only be retrieved by the video owner.
             "bitrateBps": "A String", # The uploaded video file's combined (video and audio) bitrate in bits per second.
             "container": "A String", # The uploaded video file's container format.
-            "recordingLocation": { # Geographical coordinates of a point, in WGS84. # Geographic coordinates that identify the place where the uploaded video was recorded. Coordinates are defined using WGS 84.
-              "latitude": 3.14, # Latitude in degrees.
-              "altitude": 3.14, # Altitude above the reference ellipsoid, in meters.
-              "longitude": 3.14, # Longitude in degrees.
-            },
             "fileType": "A String", # The uploaded file's type as detected by YouTube's video processing engine. Currently, YouTube only processes video files, but this field is present whether a video file or another type of file was uploaded.
             "creationTime": "A String", # The date and time when the uploaded video file was created. The value is specified in ISO 8601 format. Currently, the following ISO 8601 formats are supported:
                 # - Date only: YYYY-MM-DD
@@ -1029,6 +1027,8 @@
           },
           "player": { # Player to be used for a video playback. # The player object contains information that you would use to play the video in an embedded player.
             "embedHtml": "A String", # An <iframe> tag that embeds a player that will play the video.
+            "embedHeight": "A String",
+            "embedWidth": "A String", # The embed width
           },
           "etag": "A String", # Etag of this resource.
           "status": { # Basic details about a video category, such as its localized title. # The status object contains information about the video's uploading, processing, and privacy statuses.
@@ -1247,7 +1247,8 @@
         ],
         "allowed": True or False, # The value of allowed indicates whether the access to the policy is allowed or denied by default.
       },
-      "contentRating": { # Ratings schemes. The country-specific ratings are mostly for movies and shows. NEXT_ID: 68 # Specifies the ratings that the video received under various rating schemes.
+      "hasCustomThumbnail": True or False, # Indicates whether the video uploader has provided a custom thumbnail image for the video. This property is only visible to the video uploader.
+      "contentRating": { # Ratings schemes. The country-specific ratings are mostly for movies and shows. NEXT_ID: 69 # Specifies the ratings that the video received under various rating schemes.
         "cncRating": "A String", # Rating system in France - Commission de classification cinematographique
         "catvfrRating": "A String", # The video's rating from the Canadian Radio-Television and Telecommunications Commission (CRTC) for Canadian French-language broadcasts. For more information, see the Canadian Broadcast Standards Council website.
         "cbfcRating": "A String", # The video's Central Board of Film Certification (CBFC - India) rating.
@@ -1300,6 +1301,7 @@
         "mtrcbRating": "A String", # The video's rating from the Movie and Television Review and Classification Board (Philippines).
         "mibacRating": "A String", # The video's rating from the Ministero dei Beni e delle Attività Culturali e del Turismo (Italy).
         "anatelRating": "A String", # The video's Anatel (Asociación Nacional de Televisión) rating for Chilean television.
+        "mcstRating": "A String", # The video's rating system for Vietnam - MCST
         "smaisRating": "A String", # The video's rating in Iceland.
         "ilfilmRating": "A String", # The video's rating in Israel.
         "russiaRating": "A String", # The video's National Film Registry of the Russian Federation (MKRF - Russia) rating.
@@ -1341,11 +1343,6 @@
     "fileDetails": { # Describes original video file properties, including technical details about audio and video streams, but also metadata information like content length, digitization time, or geotagging information. # The fileDetails object encapsulates information about the video file that was uploaded to YouTube, including the file's resolution, duration, audio and video codecs, stream bitrates, and more. This data can only be retrieved by the video owner.
       "bitrateBps": "A String", # The uploaded video file's combined (video and audio) bitrate in bits per second.
       "container": "A String", # The uploaded video file's container format.
-      "recordingLocation": { # Geographical coordinates of a point, in WGS84. # Geographic coordinates that identify the place where the uploaded video was recorded. Coordinates are defined using WGS 84.
-        "latitude": 3.14, # Latitude in degrees.
-        "altitude": 3.14, # Altitude above the reference ellipsoid, in meters.
-        "longitude": 3.14, # Longitude in degrees.
-      },
       "fileType": "A String", # The uploaded file's type as detected by YouTube's video processing engine. Currently, YouTube only processes video files, but this field is present whether a video file or another type of file was uploaded.
       "creationTime": "A String", # The date and time when the uploaded video file was created. The value is specified in ISO 8601 format. Currently, the following ISO 8601 formats are supported:
           # - Date only: YYYY-MM-DD
@@ -1396,6 +1393,8 @@
     },
     "player": { # Player to be used for a video playback. # The player object contains information that you would use to play the video in an embedded player.
       "embedHtml": "A String", # An <iframe> tag that embeds a player that will play the video.
+      "embedHeight": "A String",
+      "embedWidth": "A String", # The embed width
     },
     "etag": "A String", # Etag of this resource.
     "status": { # Basic details about a video category, such as its localized title. # The status object contains information about the video's uploading, processing, and privacy statuses.
@@ -1547,7 +1546,8 @@
           ],
           "allowed": True or False, # The value of allowed indicates whether the access to the policy is allowed or denied by default.
         },
-        "contentRating": { # Ratings schemes. The country-specific ratings are mostly for movies and shows. NEXT_ID: 68 # Specifies the ratings that the video received under various rating schemes.
+        "hasCustomThumbnail": True or False, # Indicates whether the video uploader has provided a custom thumbnail image for the video. This property is only visible to the video uploader.
+        "contentRating": { # Ratings schemes. The country-specific ratings are mostly for movies and shows. NEXT_ID: 69 # Specifies the ratings that the video received under various rating schemes.
           "cncRating": "A String", # Rating system in France - Commission de classification cinematographique
           "catvfrRating": "A String", # The video's rating from the Canadian Radio-Television and Telecommunications Commission (CRTC) for Canadian French-language broadcasts. For more information, see the Canadian Broadcast Standards Council website.
           "cbfcRating": "A String", # The video's Central Board of Film Certification (CBFC - India) rating.
@@ -1600,6 +1600,7 @@
           "mtrcbRating": "A String", # The video's rating from the Movie and Television Review and Classification Board (Philippines).
           "mibacRating": "A String", # The video's rating from the Ministero dei Beni e delle Attività Culturali e del Turismo (Italy).
           "anatelRating": "A String", # The video's Anatel (Asociación Nacional de Televisión) rating for Chilean television.
+          "mcstRating": "A String", # The video's rating system for Vietnam - MCST
           "smaisRating": "A String", # The video's rating in Iceland.
           "ilfilmRating": "A String", # The video's rating in Israel.
           "russiaRating": "A String", # The video's National Film Registry of the Russian Federation (MKRF - Russia) rating.
@@ -1641,11 +1642,6 @@
       "fileDetails": { # Describes original video file properties, including technical details about audio and video streams, but also metadata information like content length, digitization time, or geotagging information. # The fileDetails object encapsulates information about the video file that was uploaded to YouTube, including the file's resolution, duration, audio and video codecs, stream bitrates, and more. This data can only be retrieved by the video owner.
         "bitrateBps": "A String", # The uploaded video file's combined (video and audio) bitrate in bits per second.
         "container": "A String", # The uploaded video file's container format.
-        "recordingLocation": { # Geographical coordinates of a point, in WGS84. # Geographic coordinates that identify the place where the uploaded video was recorded. Coordinates are defined using WGS 84.
-          "latitude": 3.14, # Latitude in degrees.
-          "altitude": 3.14, # Altitude above the reference ellipsoid, in meters.
-          "longitude": 3.14, # Longitude in degrees.
-        },
         "fileType": "A String", # The uploaded file's type as detected by YouTube's video processing engine. Currently, YouTube only processes video files, but this field is present whether a video file or another type of file was uploaded.
         "creationTime": "A String", # The date and time when the uploaded video file was created. The value is specified in ISO 8601 format. Currently, the following ISO 8601 formats are supported:
             # - Date only: YYYY-MM-DD
@@ -1696,6 +1692,8 @@
       },
       "player": { # Player to be used for a video playback. # The player object contains information that you would use to play the video in an embedded player.
         "embedHtml": "A String", # An <iframe> tag that embeds a player that will play the video.
+        "embedHeight": "A String",
+        "embedWidth": "A String", # The embed width
       },
       "etag": "A String", # Etag of this resource.
       "status": { # Basic details about a video category, such as its localized title. # The status object contains information about the video's uploading, processing, and privacy statuses.
diff --git a/docs/dyn/youtube_v3.watermarks.html b/docs/dyn/youtube_v3.watermarks.html
index 76e313f..177a01c 100644
--- a/docs/dyn/youtube_v3.watermarks.html
+++ b/docs/dyn/youtube_v3.watermarks.html
@@ -75,14 +75,14 @@
 <h1><a href="youtube_v3.html">YouTube Data API</a> . <a href="youtube_v3.watermarks.html">watermarks</a></h1>
 <h2>Instance Methods</h2>
 <p class="toc_element">
-  <code><a href="#set">set(channelId, body=None, media_body=None, onBehalfOfContentOwner=None)</a></code></p>
+  <code><a href="#set">set(channelId, body=None, media_body=None, onBehalfOfContentOwner=None, media_mime_type=None)</a></code></p>
 <p class="firstline">Uploads a watermark image to YouTube and sets it for a channel.</p>
 <p class="toc_element">
   <code><a href="#unset">unset(channelId, onBehalfOfContentOwner=None)</a></code></p>
 <p class="firstline">Deletes a channel's watermark image.</p>
 <h3>Method Details</h3>
 <div class="method">
-    <code class="details" id="set">set(channelId, body=None, media_body=None, onBehalfOfContentOwner=None)</code>
+    <code class="details" id="set">set(channelId, body=None, media_body=None, onBehalfOfContentOwner=None, media_mime_type=None)</code>
   <pre>Uploads a watermark image to YouTube and sets it for a channel.
 
 Args:
@@ -109,6 +109,7 @@
   onBehalfOfContentOwner: string, Note: This parameter is intended exclusively for YouTube content partners.
 
 The onBehalfOfContentOwner parameter indicates that the request's authorization credentials identify a YouTube CMS user who is acting on behalf of the content owner specified in the parameter value. This parameter is intended for YouTube content partners that own and manage many different YouTube channels. It allows content owners to authenticate once and get access to all their video and channel data, without having to provide authentication credentials for each individual channel. The CMS account that the user authenticates with must be linked to the specified YouTube content owner.
+  media_mime_type: string, The MIME type of the media request body, or an instance of a MediaUpload object.
 </pre>
 </div>
 
diff --git a/docs/epy/api-objects.txt b/docs/epy/api-objects.txt
index 935999c..c0fefaf 100644
--- a/docs/epy/api-objects.txt
+++ b/docs/epy/api-objects.txt
@@ -1,4 +1,10 @@
 googleapiclient	googleapiclient-module.html
+googleapiclient._auth	googleapiclient._auth-module.html
+googleapiclient._auth.HAS_GOOGLE_AUTH	googleapiclient._auth-module.html#HAS_GOOGLE_AUTH
+googleapiclient._auth.default_credentials	googleapiclient._auth-module.html#default_credentials
+googleapiclient._auth.with_scopes	googleapiclient._auth-module.html#with_scopes
+googleapiclient._auth.HAS_OAUTH2CLIENT	googleapiclient._auth-module.html#HAS_OAUTH2CLIENT
+googleapiclient._auth.authorized_http	googleapiclient._auth-module.html#authorized_http
 googleapiclient.channel	googleapiclient.channel-module.html
 googleapiclient.channel.CHANNEL_PARAMS	googleapiclient.channel-module.html#CHANNEL_PARAMS
 googleapiclient.channel.notification_from_headers	googleapiclient.channel-module.html#notification_from_headers
diff --git a/docs/epy/class-tree.html b/docs/epy/class-tree.html
index d8cf1e5..57a9020 100644
--- a/docs/epy/class-tree.html
+++ b/docs/epy/class-tree.html
@@ -163,7 +163,7 @@
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Tue Nov  1 17:02:49 2016
+    Generated by Epydoc 3.0.1 on Thu Jan  5 12:55:02 2017
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/epy/googleapiclient-module.html b/docs/epy/googleapiclient-module.html
index 79098cd..160590c 100644
--- a/docs/epy/googleapiclient-module.html
+++ b/docs/epy/googleapiclient-module.html
@@ -57,7 +57,7 @@
 <h1 class="epydoc">Package googleapiclient</h1><p class="nomargin-top"><span class="codelink"><a href="googleapiclient-pysrc.html">source&nbsp;code</a></span></p>
 <hr />
 <div class="fields">      <p><strong>Version:</strong>
-        1.5.5
+        1.6.0
       </p>
 </div><!-- ==================== SUBMODULES ==================== -->
 <a name="section-Submodules"></a>
@@ -78,6 +78,7 @@
 </tr>
   <tr><td class="summary">
   <ul class="nomargin">
+    <li class="private"> <strong class="uidlink"><a href="googleapiclient._auth-module.html">googleapiclient._auth</a></strong>: <em class="summary">Helpers for authentication using oauth2client or google-auth.</em>    </li>
     <li> <strong class="uidlink"><a href="googleapiclient.channel-module.html">googleapiclient.channel</a></strong>: <em class="summary">Channel notifications support.</em>    </li>
     <li> <strong class="uidlink"><a href="googleapiclient.discovery-module.html">googleapiclient.discovery</a></strong>: <em class="summary">Client for discovery based APIs.</em>    </li>
     <li> <strong class="uidlink"><a href="googleapiclient.discovery_cache-module.html">googleapiclient.discovery_cache</a></strong>: <em class="summary">Caching utility for the discovery document.</em>
@@ -148,7 +149,7 @@
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Tue Nov  1 17:02:49 2016
+    Generated by Epydoc 3.0.1 on Thu Jan  5 12:55:02 2017
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/epy/googleapiclient-pysrc.html b/docs/epy/googleapiclient-pysrc.html
index 70afa7e..9d9d1ef 100644
--- a/docs/epy/googleapiclient-pysrc.html
+++ b/docs/epy/googleapiclient-pysrc.html
@@ -69,7 +69,7 @@
 <a name="L12"></a><tt class="py-lineno">12</tt>  <tt class="py-line"><tt class="py-comment"># See the License for the specific language governing permissions and</tt> </tt>
 <a name="L13"></a><tt class="py-lineno">13</tt>  <tt class="py-line"><tt class="py-comment"># limitations under the License.</tt> </tt>
 <a name="L14"></a><tt class="py-lineno">14</tt>  <tt class="py-line"> </tt>
-<a name="L15"></a><tt class="py-lineno">15</tt>  <tt class="py-line"><tt class="py-name">__version__</tt> <tt class="py-op">=</tt> <tt class="py-docstring">"1.5.5"</tt> </tt>
+<a name="L15"></a><tt class="py-lineno">15</tt>  <tt class="py-line"><tt class="py-name">__version__</tt> <tt class="py-op">=</tt> <tt class="py-docstring">"1.6.0"</tt> </tt>
 <a name="L16"></a><tt class="py-lineno">16</tt>  <tt class="py-line"> </tt>
 <a name="L17"></a><tt class="py-lineno">17</tt>  <tt class="py-line"><tt class="py-comment"># Set default logging handler to avoid "No handler found" warnings.</tt> </tt>
 <a name="L18"></a><tt class="py-lineno">18</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">logging</tt> </tt>
@@ -115,7 +115,7 @@
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Tue Nov  1 17:02:51 2016
+    Generated by Epydoc 3.0.1 on Thu Jan  5 12:55:05 2017
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/epy/googleapiclient.NullHandler-class.html b/docs/epy/googleapiclient.NullHandler-class.html
index 0e9087a..a440437 100644
--- a/docs/epy/googleapiclient.NullHandler-class.html
+++ b/docs/epy/googleapiclient.NullHandler-class.html
@@ -58,27 +58,27 @@
 <h1 class="epydoc">Class NullHandler</h1><p class="nomargin-top"><span class="codelink"><a href="googleapiclient-pysrc.html#NullHandler">source&nbsp;code</a></span></p>
 <center>
 <center>  <map id="uml_class_diagram_for_googleap" name="uml_class_diagram_for_googleap">
-<area shape="rect" id="node1_18" href="googleapiclient.NullHandler-class.html#emit" title="Do whatever it takes to actually log the specified logging record." alt="" coords="53,493,159,513"/>
-<area shape="rect" id="node1" href="googleapiclient.NullHandler-class.html" title="googleapiclient.NullHandler" alt="" coords="41,459,170,519"/>
-<area shape="rect" id="node2_19" href="javascript:void(0);" title="logging.Handler.name" alt="" coords="17,151,196,171"/>
-<area shape="rect" id="node2_20" href="javascript:void(0);" title="Initializes the instance &#45; basically setting the formatter to None and the filter list to empty." alt="" coords="17,173,196,193"/>
-<area shape="rect" id="node2_21" href="javascript:void(0);" title="logging.Handler.get_name" alt="" coords="17,193,196,213"/>
-<area shape="rect" id="node2_22" href="javascript:void(0);" title="logging.Handler.set_name" alt="" coords="17,213,196,233"/>
-<area shape="rect" id="node2_23" href="javascript:void(0);" title="Acquire a thread lock for serializing access to the underlying I/O." alt="" coords="17,233,196,253"/>
-<area shape="rect" id="node2_24" href="javascript:void(0);" title="Acquire the I/O thread lock." alt="" coords="17,253,196,273"/>
-<area shape="rect" id="node2_25" href="javascript:void(0);" title="Release the I/O thread lock." alt="" coords="17,273,196,293"/>
-<area shape="rect" id="node2_26" href="javascript:void(0);" title="Set the logging level of this handler." alt="" coords="17,293,196,313"/>
-<area shape="rect" id="node2_27" href="javascript:void(0);" title="Format the specified record." alt="" coords="17,313,196,333"/>
-<area shape="rect" id="node2_28" href="javascript:void(0);" title="Conditionally emit the specified logging record." alt="" coords="17,333,196,353"/>
-<area shape="rect" id="node2_29" href="javascript:void(0);" title="Set the formatter for this handler." alt="" coords="17,353,196,373"/>
-<area shape="rect" id="node2_30" href="javascript:void(0);" title="Ensure all logging output has been flushed." alt="" coords="17,373,196,393"/>
-<area shape="rect" id="node2_31" href="javascript:void(0);" title="Tidy up any resources used by the handler." alt="" coords="17,393,196,413"/>
-<area shape="rect" id="node2_32" href="javascript:void(0);" title="Handle errors which occur during an emit() call." alt="" coords="17,413,196,433"/>
-<area shape="rect" id="node2" href="javascript:void(0);" title="Handler instances dispatch logging events to specific destinations." alt="" coords="5,125,208,440"/>
-<area shape="rect" id="node3_33" href="javascript:void(0);" title="Add the specified filter to this handler." alt="" coords="36,40,177,60"/>
-<area shape="rect" id="node3_34" href="javascript:void(0);" title="Remove the specified filter from this handler." alt="" coords="36,60,177,80"/>
-<area shape="rect" id="node3_35" href="javascript:void(0);" title="Determine if a record is loggable by consulting all the filters." alt="" coords="36,80,177,100"/>
-<area shape="rect" id="node3" href="javascript:void(0);" title="A base class for loggers and handlers which allows them to share common code." alt="" coords="24,6,189,106"/>
+<area shape="rect" id="node1_18" href="googleapiclient.NullHandler-class.html#emit" title="Do whatever it takes to actually log the specified logging record." alt="" coords="54,460,159,479"/>
+<area shape="rect" id="node1" href="googleapiclient.NullHandler-class.html" title="googleapiclient.NullHandler" alt="" coords="41,429,171,485"/>
+<area shape="rect" id="node2_19" href="javascript:void(0);" title="logging.Handler.name" alt="" coords="18,140,195,159"/>
+<area shape="rect" id="node2_20" href="javascript:void(0);" title="Initializes the instance &#45; basically setting the formatter to None and the filter list to empty." alt="" coords="18,161,195,180"/>
+<area shape="rect" id="node2_21" href="javascript:void(0);" title="logging.Handler.get_name" alt="" coords="18,180,195,199"/>
+<area shape="rect" id="node2_22" href="javascript:void(0);" title="logging.Handler.set_name" alt="" coords="18,199,195,217"/>
+<area shape="rect" id="node2_23" href="javascript:void(0);" title="Acquire a thread lock for serializing access to the underlying I/O." alt="" coords="18,217,195,236"/>
+<area shape="rect" id="node2_24" href="javascript:void(0);" title="Acquire the I/O thread lock." alt="" coords="18,236,195,255"/>
+<area shape="rect" id="node2_25" href="javascript:void(0);" title="Release the I/O thread lock." alt="" coords="18,255,195,273"/>
+<area shape="rect" id="node2_26" href="javascript:void(0);" title="Set the logging level of this handler." alt="" coords="18,273,195,292"/>
+<area shape="rect" id="node2_27" href="javascript:void(0);" title="Format the specified record." alt="" coords="18,292,195,311"/>
+<area shape="rect" id="node2_28" href="javascript:void(0);" title="Conditionally emit the specified logging record." alt="" coords="18,311,195,329"/>
+<area shape="rect" id="node2_29" href="javascript:void(0);" title="Set the formatter for this handler." alt="" coords="18,329,195,348"/>
+<area shape="rect" id="node2_30" href="javascript:void(0);" title="Ensure all logging output has been flushed." alt="" coords="18,348,195,367"/>
+<area shape="rect" id="node2_31" href="javascript:void(0);" title="Tidy up any resources used by the handler." alt="" coords="18,367,195,385"/>
+<area shape="rect" id="node2_32" href="javascript:void(0);" title="Handle errors which occur during an emit() call." alt="" coords="18,385,195,404"/>
+<area shape="rect" id="node2" href="javascript:void(0);" title="Handler instances dispatch logging events to specific destinations." alt="" coords="5,117,207,411"/>
+<area shape="rect" id="node3_33" href="javascript:void(0);" title="Add the specified filter to this handler." alt="" coords="37,36,178,55"/>
+<area shape="rect" id="node3_34" href="javascript:void(0);" title="Remove the specified filter from this handler." alt="" coords="37,55,178,73"/>
+<area shape="rect" id="node3_35" href="javascript:void(0);" title="Determine if a record is loggable by consulting all the filters." alt="" coords="37,73,178,92"/>
+<area shape="rect" id="node3" href="javascript:void(0);" title="A base class for loggers and handlers which allows them to share common code." alt="" coords="25,5,190,99"/>
 </map>
   <img src="uml_class_diagram_for_googleap.gif" alt='' usemap="#uml_class_diagram_for_googleap" ismap="ismap" class="graph-without-title" />
 </center>
@@ -284,7 +284,7 @@
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Tue Nov  1 17:02:49 2016
+    Generated by Epydoc 3.0.1 on Thu Jan  5 12:55:02 2017
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/epy/googleapiclient._auth-module.html b/docs/epy/googleapiclient._auth-module.html
new file mode 100644
index 0000000..b221eba
--- /dev/null
+++ b/docs/epy/googleapiclient._auth-module.html
@@ -0,0 +1,294 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>googleapiclient._auth</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="googleapiclient-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Tree link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Index link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Help link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+
+      <th class="navbar" width="100%"></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="googleapiclient-module.html">Package&nbsp;googleapiclient</a> ::
+        Module&nbsp;_auth
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+    onclick="toggle_private();">hide&nbsp;private</a>]</span></td></tr>
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >]&nbsp;|&nbsp;<a href="googleapiclient._auth-module.html"
+            target="_top">no&nbsp;frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<!-- ==================== MODULE DESCRIPTION ==================== -->
+<h1 class="epydoc">Module _auth</h1><p class="nomargin-top"><span class="codelink"><a href="googleapiclient._auth-pysrc.html">source&nbsp;code</a></span></p>
+<pre class="literalblock">
+Helpers for authentication using oauth2client or google-auth.
+
+</pre>
+
+<!-- ==================== FUNCTIONS ==================== -->
+<a name="section-Functions"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Functions</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-Functions"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type">&nbsp;</span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="default_credentials"></a><span class="summary-sig-name">default_credentials</span>()</span><br />
+      Returns Application Default Credentials.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="googleapiclient._auth-pysrc.html#default_credentials">source&nbsp;code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type">&nbsp;</span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="googleapiclient._auth-module.html#with_scopes" class="summary-sig-name">with_scopes</a>(<span class="summary-sig-arg">credentials</span>,
+        <span class="summary-sig-arg">scopes</span>)</span><br />
+      Scopes the credentials if necessary.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="googleapiclient._auth-pysrc.html#with_scopes">source&nbsp;code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type">&nbsp;</span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a href="googleapiclient._auth-module.html#authorized_http" class="summary-sig-name">authorized_http</a>(<span class="summary-sig-arg">credentials</span>)</span><br />
+      Returns an http client that is authorized with the given credentials.</td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="googleapiclient._auth-pysrc.html#authorized_http">source&nbsp;code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+</table>
+<!-- ==================== VARIABLES ==================== -->
+<a name="section-Variables"></a>
+<table class="summary" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Variables</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-Variables"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type">&nbsp;</span>
+    </td><td class="summary">
+        <a name="HAS_GOOGLE_AUTH"></a><span class="summary-name">HAS_GOOGLE_AUTH</span> = <code title="False">False</code>
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type">&nbsp;</span>
+    </td><td class="summary">
+        <a name="HAS_OAUTH2CLIENT"></a><span class="summary-name">HAS_OAUTH2CLIENT</span> = <code title="False">False</code>
+    </td>
+  </tr>
+</table>
+<!-- ==================== FUNCTION DETAILS ==================== -->
+<a name="section-FunctionDetails"></a>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+  <td colspan="2" class="table-header">
+    <table border="0" cellpadding="0" cellspacing="0" width="100%">
+      <tr valign="top">
+        <td align="left"><span class="table-header">Function Details</span></td>
+        <td align="right" valign="top"
+         ><span class="options">[<a href="#section-FunctionDetails"
+         class="privatelink" onclick="toggle_private();"
+         >hide private</a>]</span></td>
+      </tr>
+    </table>
+  </td>
+</tr>
+</table>
+<a name="with_scopes"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">with_scopes</span>(<span class="sig-arg">credentials</span>,
+        <span class="sig-arg">scopes</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="googleapiclient._auth-pysrc.html#with_scopes">source&nbsp;code</a></span>&nbsp;
+    </td>
+  </tr></table>
+  
+  <pre class="literalblock">
+Scopes the credentials if necessary.
+
+Args:
+    credentials (Union[
+        google.auth.credentials.Credentials,
+        oauth2client.client.Credentials]): The credentials to scope.
+    scopes (Sequence[str]): The list of scopes.
+
+Returns:
+    Union[google.auth.credentials.Credentials,
+        oauth2client.client.Credentials]: The scoped credentials.
+
+</pre>
+  <dl class="fields">
+  </dl>
+</td></tr></table>
+</div>
+<a name="authorized_http"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+       cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+  <table width="100%" cellpadding="0" cellspacing="0" border="0">
+  <tr valign="top"><td>
+  <h3 class="epydoc"><span class="sig"><span class="sig-name">authorized_http</span>(<span class="sig-arg">credentials</span>)</span>
+  </h3>
+  </td><td align="right" valign="top"
+    ><span class="codelink"><a href="googleapiclient._auth-pysrc.html#authorized_http">source&nbsp;code</a></span>&nbsp;
+    </td>
+  </tr></table>
+  
+  <pre class="literalblock">
+Returns an http client that is authorized with the given credentials.
+
+Args:
+    credentials (Union[
+        google.auth.credentials.Credentials,
+        oauth2client.client.Credentials]): The credentials to use.
+
+Returns:
+    Union[httplib2.Http, google_auth_httplib2.AuthorizedHttp]: An
+        authorized http client.
+
+</pre>
+  <dl class="fields">
+  </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="googleapiclient-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Tree link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Index link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Help link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+
+      <th class="navbar" width="100%"></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    Generated by Epydoc 3.0.1 on Thu Jan  5 12:55:02 2017
+    </td>
+    <td align="right" class="footer">
+      <a target="mainFrame" href="http://epydoc.sourceforge.net"
+        >http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie();
+  // -->
+</script>
+</body>
+</html>
diff --git a/docs/epy/googleapiclient._auth-pysrc.html b/docs/epy/googleapiclient._auth-pysrc.html
new file mode 100644
index 0000000..4c73a85
--- /dev/null
+++ b/docs/epy/googleapiclient._auth-pysrc.html
@@ -0,0 +1,201 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>googleapiclient._auth</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="googleapiclient-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Tree link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Index link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Help link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+
+      <th class="navbar" width="100%"></th>
+  </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+  <tr valign="top">
+    <td width="100%">
+      <span class="breadcrumbs">
+        <a href="googleapiclient-module.html">Package&nbsp;googleapiclient</a> ::
+        Module&nbsp;_auth
+      </span>
+    </td>
+    <td>
+      <table cellpadding="0" cellspacing="0">
+        <!-- hide/show private -->
+        <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+    onclick="toggle_private();">hide&nbsp;private</a>]</span></td></tr>
+        <tr><td align="right"><span class="options"
+            >[<a href="frames.html" target="_top">frames</a
+            >]&nbsp;|&nbsp;<a href="googleapiclient._auth-pysrc.html"
+            target="_top">no&nbsp;frames</a>]</span></td></tr>
+      </table>
+    </td>
+  </tr>
+</table>
+<h1 class="epydoc">Source Code for <a href="googleapiclient._auth-module.html">Module googleapiclient._auth</a></h1>
+<pre class="py-src">
+<a name="L1"></a><tt class="py-lineno"> 1</tt>  <tt class="py-line"><tt class="py-comment"># Copyright 2016 Google Inc. All Rights Reserved.</tt> </tt>
+<a name="L2"></a><tt class="py-lineno"> 2</tt>  <tt class="py-line"><tt class="py-comment">#</tt> </tt>
+<a name="L3"></a><tt class="py-lineno"> 3</tt>  <tt class="py-line"><tt class="py-comment"># Licensed under the Apache License, Version 2.0 (the "License");</tt> </tt>
+<a name="L4"></a><tt class="py-lineno"> 4</tt>  <tt class="py-line"><tt class="py-comment"># you may not use this file except in compliance with the License.</tt> </tt>
+<a name="L5"></a><tt class="py-lineno"> 5</tt>  <tt class="py-line"><tt class="py-comment"># You may obtain a copy of the License at</tt> </tt>
+<a name="L6"></a><tt class="py-lineno"> 6</tt>  <tt class="py-line"><tt class="py-comment">#</tt> </tt>
+<a name="L7"></a><tt class="py-lineno"> 7</tt>  <tt class="py-line"><tt class="py-comment">#      http://www.apache.org/licenses/LICENSE-2.0</tt> </tt>
+<a name="L8"></a><tt class="py-lineno"> 8</tt>  <tt class="py-line"><tt class="py-comment">#</tt> </tt>
+<a name="L9"></a><tt class="py-lineno"> 9</tt>  <tt class="py-line"><tt class="py-comment"># Unless required by applicable law or agreed to in writing, software</tt> </tt>
+<a name="L10"></a><tt class="py-lineno">10</tt>  <tt class="py-line"><tt class="py-comment"># distributed under the License is distributed on an "AS IS" BASIS,</tt> </tt>
+<a name="L11"></a><tt class="py-lineno">11</tt>  <tt class="py-line"><tt class="py-comment"># WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</tt> </tt>
+<a name="L12"></a><tt class="py-lineno">12</tt>  <tt class="py-line"><tt class="py-comment"># See the License for the specific language governing permissions and</tt> </tt>
+<a name="L13"></a><tt class="py-lineno">13</tt>  <tt class="py-line"><tt class="py-comment"># limitations under the License.</tt> </tt>
+<a name="L14"></a><tt class="py-lineno">14</tt>  <tt class="py-line"> </tt>
+<a name="L15"></a><tt class="py-lineno">15</tt>  <tt class="py-line"><tt class="py-docstring">"""Helpers for authentication using oauth2client or google-auth."""</tt> </tt>
+<a name="L16"></a><tt class="py-lineno">16</tt>  <tt class="py-line"> </tt>
+<a name="L17"></a><tt class="py-lineno">17</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">httplib2</tt> </tt>
+<a name="L18"></a><tt class="py-lineno">18</tt>  <tt class="py-line"> </tt>
+<a name="L19"></a><tt class="py-lineno">19</tt>  <tt class="py-line"><tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
+<a name="L20"></a><tt class="py-lineno">20</tt>  <tt class="py-line">    <tt class="py-keyword">import</tt> <tt class="py-name">google</tt><tt class="py-op">.</tt><tt class="py-name">auth</tt> </tt>
+<a name="L21"></a><tt class="py-lineno">21</tt>  <tt class="py-line">    <tt class="py-keyword">import</tt> <tt class="py-name">google_auth_httplib2</tt> </tt>
+<a name="L22"></a><tt class="py-lineno">22</tt>  <tt class="py-line">    <tt id="link-0" class="py-name" targets="Variable googleapiclient._auth.HAS_GOOGLE_AUTH=googleapiclient._auth-module.html#HAS_GOOGLE_AUTH"><a title="googleapiclient._auth.HAS_GOOGLE_AUTH" class="py-name" href="#" onclick="return doclink('link-0', 'HAS_GOOGLE_AUTH', 'link-0');">HAS_GOOGLE_AUTH</a></tt> <tt class="py-op">=</tt> <tt class="py-name">True</tt> </tt>
+<a name="L23"></a><tt class="py-lineno">23</tt>  <tt class="py-line"><tt class="py-keyword">except</tt> <tt class="py-name">ImportError</tt><tt class="py-op">:</tt>  <tt class="py-comment"># pragma: NO COVER</tt> </tt>
+<a name="L24"></a><tt class="py-lineno">24</tt>  <tt class="py-line">    <tt id="link-1" class="py-name"><a title="googleapiclient._auth.HAS_GOOGLE_AUTH" class="py-name" href="#" onclick="return doclink('link-1', 'HAS_GOOGLE_AUTH', 'link-0');">HAS_GOOGLE_AUTH</a></tt> <tt class="py-op">=</tt> <tt class="py-name">False</tt> </tt>
+<a name="L25"></a><tt class="py-lineno">25</tt>  <tt class="py-line"> </tt>
+<a name="L26"></a><tt class="py-lineno">26</tt>  <tt class="py-line"><tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
+<a name="L27"></a><tt class="py-lineno">27</tt>  <tt class="py-line">    <tt class="py-keyword">import</tt> <tt class="py-name">oauth2client</tt> </tt>
+<a name="L28"></a><tt class="py-lineno">28</tt>  <tt class="py-line">    <tt class="py-keyword">import</tt> <tt class="py-name">oauth2client</tt><tt class="py-op">.</tt><tt class="py-name">client</tt> </tt>
+<a name="L29"></a><tt class="py-lineno">29</tt>  <tt class="py-line">    <tt id="link-2" class="py-name" targets="Variable googleapiclient._auth.HAS_OAUTH2CLIENT=googleapiclient._auth-module.html#HAS_OAUTH2CLIENT"><a title="googleapiclient._auth.HAS_OAUTH2CLIENT" class="py-name" href="#" onclick="return doclink('link-2', 'HAS_OAUTH2CLIENT', 'link-2');">HAS_OAUTH2CLIENT</a></tt> <tt class="py-op">=</tt> <tt class="py-name">True</tt> </tt>
+<a name="L30"></a><tt class="py-lineno">30</tt>  <tt class="py-line"><tt class="py-keyword">except</tt> <tt class="py-name">ImportError</tt><tt class="py-op">:</tt>  <tt class="py-comment"># pragma: NO COVER</tt> </tt>
+<a name="L31"></a><tt class="py-lineno">31</tt>  <tt class="py-line">    <tt id="link-3" class="py-name"><a title="googleapiclient._auth.HAS_OAUTH2CLIENT" class="py-name" href="#" onclick="return doclink('link-3', 'HAS_OAUTH2CLIENT', 'link-2');">HAS_OAUTH2CLIENT</a></tt> <tt class="py-op">=</tt> <tt class="py-name">False</tt> </tt>
+<a name="L32"></a><tt class="py-lineno">32</tt>  <tt class="py-line"> </tt>
+<a name="L33"></a><tt class="py-lineno">33</tt>  <tt class="py-line"> </tt>
+<a name="default_credentials"></a><div id="default_credentials-def"><a name="L34"></a><tt class="py-lineno">34</tt> <a class="py-toggle" href="#" id="default_credentials-toggle" onclick="return toggle('default_credentials');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="googleapiclient._auth-module.html#default_credentials">default_credentials</a><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="default_credentials-collapsed" style="display:none;" pad="++" indent="++++"></div><div id="default_credentials-expanded"><a name="L35"></a><tt class="py-lineno">35</tt>  <tt class="py-line">    <tt class="py-docstring">"""Returns Application Default Credentials."""</tt> </tt>
+<a name="L36"></a><tt class="py-lineno">36</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt id="link-4" class="py-name"><a title="googleapiclient._auth.HAS_GOOGLE_AUTH" class="py-name" href="#" onclick="return doclink('link-4', 'HAS_GOOGLE_AUTH', 'link-0');">HAS_GOOGLE_AUTH</a></tt><tt class="py-op">:</tt> </tt>
+<a name="L37"></a><tt class="py-lineno">37</tt>  <tt class="py-line">        <tt class="py-name">credentials</tt><tt class="py-op">,</tt> <tt class="py-name">_</tt> <tt class="py-op">=</tt> <tt class="py-name">google</tt><tt class="py-op">.</tt><tt class="py-name">auth</tt><tt class="py-op">.</tt><tt class="py-name">default</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L38"></a><tt class="py-lineno">38</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">credentials</tt> </tt>
+<a name="L39"></a><tt class="py-lineno">39</tt>  <tt class="py-line">    <tt class="py-keyword">elif</tt> <tt id="link-5" class="py-name"><a title="googleapiclient._auth.HAS_OAUTH2CLIENT" class="py-name" href="#" onclick="return doclink('link-5', 'HAS_OAUTH2CLIENT', 'link-2');">HAS_OAUTH2CLIENT</a></tt><tt class="py-op">:</tt> </tt>
+<a name="L40"></a><tt class="py-lineno">40</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">oauth2client</tt><tt class="py-op">.</tt><tt class="py-name">client</tt><tt class="py-op">.</tt><tt class="py-name">GoogleCredentials</tt><tt class="py-op">.</tt><tt class="py-name">get_application_default</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L41"></a><tt class="py-lineno">41</tt>  <tt class="py-line">    <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L42"></a><tt class="py-lineno">42</tt>  <tt class="py-line">        <tt class="py-keyword">raise</tt> <tt class="py-name">EnvironmentError</tt><tt class="py-op">(</tt> </tt>
+<a name="L43"></a><tt class="py-lineno">43</tt>  <tt class="py-line">            <tt class="py-string">'No authentication library is available. Please install either '</tt> </tt>
+<a name="L44"></a><tt class="py-lineno">44</tt>  <tt class="py-line">            <tt class="py-string">'google-auth or oauth2client.'</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L45"></a><tt class="py-lineno">45</tt>  <tt class="py-line"> </tt>
+<a name="L46"></a><tt class="py-lineno">46</tt>  <tt class="py-line"> </tt>
+<a name="with_scopes"></a><div id="with_scopes-def"><a name="L47"></a><tt class="py-lineno">47</tt> <a class="py-toggle" href="#" id="with_scopes-toggle" onclick="return toggle('with_scopes');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="googleapiclient._auth-module.html#with_scopes">with_scopes</a><tt class="py-op">(</tt><tt class="py-param">credentials</tt><tt class="py-op">,</tt> <tt class="py-param">scopes</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="with_scopes-collapsed" style="display:none;" pad="++" indent="++++"></div><div id="with_scopes-expanded"><a name="L48"></a><tt class="py-lineno">48</tt>  <tt class="py-line">    <tt class="py-docstring">"""Scopes the credentials if necessary.</tt> </tt>
+<a name="L49"></a><tt class="py-lineno">49</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L50"></a><tt class="py-lineno">50</tt>  <tt class="py-line"><tt class="py-docstring">    Args:</tt> </tt>
+<a name="L51"></a><tt class="py-lineno">51</tt>  <tt class="py-line"><tt class="py-docstring">        credentials (Union[</tt> </tt>
+<a name="L52"></a><tt class="py-lineno">52</tt>  <tt class="py-line"><tt class="py-docstring">            google.auth.credentials.Credentials,</tt> </tt>
+<a name="L53"></a><tt class="py-lineno">53</tt>  <tt class="py-line"><tt class="py-docstring">            oauth2client.client.Credentials]): The credentials to scope.</tt> </tt>
+<a name="L54"></a><tt class="py-lineno">54</tt>  <tt class="py-line"><tt class="py-docstring">        scopes (Sequence[str]): The list of scopes.</tt> </tt>
+<a name="L55"></a><tt class="py-lineno">55</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L56"></a><tt class="py-lineno">56</tt>  <tt class="py-line"><tt class="py-docstring">    Returns:</tt> </tt>
+<a name="L57"></a><tt class="py-lineno">57</tt>  <tt class="py-line"><tt class="py-docstring">        Union[google.auth.credentials.Credentials,</tt> </tt>
+<a name="L58"></a><tt class="py-lineno">58</tt>  <tt class="py-line"><tt class="py-docstring">            oauth2client.client.Credentials]: The scoped credentials.</tt> </tt>
+<a name="L59"></a><tt class="py-lineno">59</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
+<a name="L60"></a><tt class="py-lineno">60</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt id="link-6" class="py-name"><a title="googleapiclient._auth.HAS_GOOGLE_AUTH" class="py-name" href="#" onclick="return doclink('link-6', 'HAS_GOOGLE_AUTH', 'link-0');">HAS_GOOGLE_AUTH</a></tt> <tt class="py-keyword">and</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt> </tt>
+<a name="L61"></a><tt class="py-lineno">61</tt>  <tt class="py-line">            <tt class="py-name">credentials</tt><tt class="py-op">,</tt> <tt class="py-name">google</tt><tt class="py-op">.</tt><tt class="py-name">auth</tt><tt class="py-op">.</tt><tt class="py-name">credentials</tt><tt class="py-op">.</tt><tt class="py-name">Credentials</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L62"></a><tt class="py-lineno">62</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">google</tt><tt class="py-op">.</tt><tt class="py-name">auth</tt><tt class="py-op">.</tt><tt class="py-name">credentials</tt><tt class="py-op">.</tt><tt class="py-name">with_scopes_if_required</tt><tt class="py-op">(</tt> </tt>
+<a name="L63"></a><tt class="py-lineno">63</tt>  <tt class="py-line">            <tt class="py-name">credentials</tt><tt class="py-op">,</tt> <tt class="py-name">scopes</tt><tt class="py-op">)</tt> </tt>
+<a name="L64"></a><tt class="py-lineno">64</tt>  <tt class="py-line">    <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L65"></a><tt class="py-lineno">65</tt>  <tt class="py-line">        <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
+<a name="L66"></a><tt class="py-lineno">66</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">credentials</tt><tt class="py-op">.</tt><tt class="py-name">create_scoped_required</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L67"></a><tt class="py-lineno">67</tt>  <tt class="py-line">                <tt class="py-keyword">return</tt> <tt class="py-name">credentials</tt><tt class="py-op">.</tt><tt class="py-name">create_scoped</tt><tt class="py-op">(</tt><tt class="py-name">scopes</tt><tt class="py-op">)</tt> </tt>
+<a name="L68"></a><tt class="py-lineno">68</tt>  <tt class="py-line">            <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L69"></a><tt class="py-lineno">69</tt>  <tt class="py-line">                <tt class="py-keyword">return</tt> <tt class="py-name">credentials</tt> </tt>
+<a name="L70"></a><tt class="py-lineno">70</tt>  <tt class="py-line">        <tt class="py-keyword">except</tt> <tt class="py-name">AttributeError</tt><tt class="py-op">:</tt> </tt>
+<a name="L71"></a><tt class="py-lineno">71</tt>  <tt class="py-line">            <tt class="py-keyword">return</tt> <tt class="py-name">credentials</tt> </tt>
+</div><a name="L72"></a><tt class="py-lineno">72</tt>  <tt class="py-line"> </tt>
+<a name="L73"></a><tt class="py-lineno">73</tt>  <tt class="py-line"> </tt>
+<a name="authorized_http"></a><div id="authorized_http-def"><a name="L74"></a><tt class="py-lineno">74</tt> <a class="py-toggle" href="#" id="authorized_http-toggle" onclick="return toggle('authorized_http');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="googleapiclient._auth-module.html#authorized_http">authorized_http</a><tt class="py-op">(</tt><tt class="py-param">credentials</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="authorized_http-collapsed" style="display:none;" pad="++" indent="++++"></div><div id="authorized_http-expanded"><a name="L75"></a><tt class="py-lineno">75</tt>  <tt class="py-line">    <tt class="py-docstring">"""Returns an http client that is authorized with the given credentials.</tt> </tt>
+<a name="L76"></a><tt class="py-lineno">76</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L77"></a><tt class="py-lineno">77</tt>  <tt class="py-line"><tt class="py-docstring">    Args:</tt> </tt>
+<a name="L78"></a><tt class="py-lineno">78</tt>  <tt class="py-line"><tt class="py-docstring">        credentials (Union[</tt> </tt>
+<a name="L79"></a><tt class="py-lineno">79</tt>  <tt class="py-line"><tt class="py-docstring">            google.auth.credentials.Credentials,</tt> </tt>
+<a name="L80"></a><tt class="py-lineno">80</tt>  <tt class="py-line"><tt class="py-docstring">            oauth2client.client.Credentials]): The credentials to use.</tt> </tt>
+<a name="L81"></a><tt class="py-lineno">81</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L82"></a><tt class="py-lineno">82</tt>  <tt class="py-line"><tt class="py-docstring">    Returns:</tt> </tt>
+<a name="L83"></a><tt class="py-lineno">83</tt>  <tt class="py-line"><tt class="py-docstring">        Union[httplib2.Http, google_auth_httplib2.AuthorizedHttp]: An</tt> </tt>
+<a name="L84"></a><tt class="py-lineno">84</tt>  <tt class="py-line"><tt class="py-docstring">            authorized http client.</tt> </tt>
+<a name="L85"></a><tt class="py-lineno">85</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
+<a name="L86"></a><tt class="py-lineno">86</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt id="link-7" class="py-name"><a title="googleapiclient._auth.HAS_GOOGLE_AUTH" class="py-name" href="#" onclick="return doclink('link-7', 'HAS_GOOGLE_AUTH', 'link-0');">HAS_GOOGLE_AUTH</a></tt> <tt class="py-keyword">and</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt> </tt>
+<a name="L87"></a><tt class="py-lineno">87</tt>  <tt class="py-line">            <tt class="py-name">credentials</tt><tt class="py-op">,</tt> <tt class="py-name">google</tt><tt class="py-op">.</tt><tt class="py-name">auth</tt><tt class="py-op">.</tt><tt class="py-name">credentials</tt><tt class="py-op">.</tt><tt class="py-name">Credentials</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L88"></a><tt class="py-lineno">88</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">google_auth_httplib2</tt><tt class="py-op">.</tt><tt class="py-name">AuthorizedHttp</tt><tt class="py-op">(</tt><tt class="py-name">credentials</tt><tt class="py-op">)</tt> </tt>
+<a name="L89"></a><tt class="py-lineno">89</tt>  <tt class="py-line">    <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L90"></a><tt class="py-lineno">90</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">credentials</tt><tt class="py-op">.</tt><tt class="py-name">authorize</tt><tt class="py-op">(</tt><tt class="py-name">httplib2</tt><tt class="py-op">.</tt><tt class="py-name">Http</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L91"></a><tt class="py-lineno">91</tt>  <tt class="py-line"> </tt><script type="text/javascript">
+<!--
+expandto(location.href);
+// -->
+</script>
+</pre>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+       bgcolor="#a0c0ff" cellspacing="0">
+  <tr valign="middle">
+  <!-- Home link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="googleapiclient-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Tree link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Index link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>
+
+  <!-- Help link -->
+      <th>&nbsp;&nbsp;&nbsp;<a
+        href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>
+
+      <th class="navbar" width="100%"></th>
+  </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+  <tr>
+    <td align="left" class="footer">
+    Generated by Epydoc 3.0.1 on Thu Jan  5 12:55:05 2017
+    </td>
+    <td align="right" class="footer">
+      <a target="mainFrame" href="http://epydoc.sourceforge.net"
+        >http://epydoc.sourceforge.net</a>
+    </td>
+  </tr>
+</table>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie();
+  // -->
+</script>
+</body>
+</html>
diff --git a/docs/epy/googleapiclient.channel-module.html b/docs/epy/googleapiclient.channel-module.html
index 2415746..1c2a43f 100644
--- a/docs/epy/googleapiclient.channel-module.html
+++ b/docs/epy/googleapiclient.channel-module.html
@@ -455,7 +455,7 @@
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Tue Nov  1 17:02:49 2016
+    Generated by Epydoc 3.0.1 on Thu Jan  5 12:55:02 2017
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/epy/googleapiclient.channel-pysrc.html b/docs/epy/googleapiclient.channel-pysrc.html
index a14d722..48c9f87 100644
--- a/docs/epy/googleapiclient.channel-pysrc.html
+++ b/docs/epy/googleapiclient.channel-pysrc.html
@@ -386,7 +386,7 @@
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Tue Nov  1 17:02:50 2016
+    Generated by Epydoc 3.0.1 on Thu Jan  5 12:55:06 2017
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/epy/googleapiclient.channel.Channel-class.html b/docs/epy/googleapiclient.channel.Channel-class.html
index 1eff011..2292f91 100644
--- a/docs/epy/googleapiclient.channel.Channel-class.html
+++ b/docs/epy/googleapiclient.channel.Channel-class.html
@@ -59,10 +59,10 @@
 <h1 class="epydoc">Class Channel</h1><p class="nomargin-top"><span class="codelink"><a href="googleapiclient.channel-pysrc.html#Channel">source&nbsp;code</a></span></p>
 <center>
 <center>  <map id="uml_class_diagram_for_googleap_2" name="uml_class_diagram_for_googleap_2">
-<area shape="rect" id="node1_3" href="googleapiclient.channel.Channel-class.html#__init__" title="Create a new Channel." alt="" coords="17,40,627,60"/>
-<area shape="rect" id="node1_4" href="googleapiclient.channel.Channel-class.html#body" title="Build a body from the Channel." alt="" coords="17,60,627,80"/>
-<area shape="rect" id="node1_5" href="googleapiclient.channel.Channel-class.html#update" title="Update a channel with information from the response of watch()." alt="" coords="17,80,627,100"/>
-<area shape="rect" id="node1" href="googleapiclient.channel.Channel-class.html" title="A Channel for notifications." alt="" coords="5,6,638,106"/>
+<area shape="rect" id="node1_3" href="googleapiclient.channel.Channel-class.html#__init__" title="Create a new Channel." alt="" coords="17,36,633,55"/>
+<area shape="rect" id="node1_4" href="googleapiclient.channel.Channel-class.html#body" title="Build a body from the Channel." alt="" coords="17,55,633,73"/>
+<area shape="rect" id="node1_5" href="googleapiclient.channel.Channel-class.html#update" title="Update a channel with information from the response of watch()." alt="" coords="17,73,633,92"/>
+<area shape="rect" id="node1" href="googleapiclient.channel.Channel-class.html" title="A Channel for notifications." alt="" coords="5,5,645,99"/>
 </map>
   <img src="uml_class_diagram_for_googleap_2.gif" alt='' usemap="#uml_class_diagram_for_googleap_2" ismap="ismap" class="graph-without-title" />
 </center>
@@ -376,7 +376,7 @@
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Tue Nov  1 17:02:49 2016
+    Generated by Epydoc 3.0.1 on Thu Jan  5 12:55:02 2017
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/epy/googleapiclient.channel.Notification-class.html b/docs/epy/googleapiclient.channel.Notification-class.html
index 40c5d64..bb9c1f8 100644
--- a/docs/epy/googleapiclient.channel.Notification-class.html
+++ b/docs/epy/googleapiclient.channel.Notification-class.html
@@ -59,8 +59,8 @@
 <h1 class="epydoc">Class Notification</h1><p class="nomargin-top"><span class="codelink"><a href="googleapiclient.channel-pysrc.html#Notification">source&nbsp;code</a></span></p>
 <center>
 <center>  <map id="uml_class_diagram_for_googleap_3" name="uml_class_diagram_for_googleap_3">
-<area shape="rect" id="node1_1" href="googleapiclient.channel.Notification-class.html#__init__" title="Notification constructor." alt="" coords="17,40,401,60"/>
-<area shape="rect" id="node1" href="googleapiclient.channel.Notification-class.html" title="A Notification from a Channel." alt="" coords="5,6,413,66"/>
+<area shape="rect" id="node1_1" href="googleapiclient.channel.Notification-class.html#__init__" title="Notification constructor." alt="" coords="17,36,407,55"/>
+<area shape="rect" id="node1" href="googleapiclient.channel.Notification-class.html" title="A Notification from a Channel." alt="" coords="5,5,419,61"/>
 </map>
   <img src="uml_class_diagram_for_googleap_3.gif" alt='' usemap="#uml_class_diagram_for_googleap_3" ismap="ismap" class="graph-without-title" />
 </center>
@@ -249,7 +249,7 @@
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Tue Nov  1 17:02:49 2016
+    Generated by Epydoc 3.0.1 on Thu Jan  5 12:55:02 2017
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/epy/googleapiclient.discovery-module.html b/docs/epy/googleapiclient.discovery-module.html
index 009d36e..cb8ac4a 100644
--- a/docs/epy/googleapiclient.discovery-module.html
+++ b/docs/epy/googleapiclient.discovery-module.html
@@ -643,7 +643,8 @@
   model: googleapiclient.Model, converts to and from the wire format.
   requestBuilder: googleapiclient.http.HttpRequest, encapsulator for an HTTP
     request.
-  credentials: oauth2client.Credentials, credentials to be used for
+  credentials: oauth2client.Credentials or
+    google.auth.credentials.Credentials, credentials to be used for
     authentication.
   cache_discovery: Boolean, whether or not to cache the discovery doc.
   cache: googleapiclient.discovery_cache.base.CacheBase, an optional
@@ -739,7 +740,9 @@
   model: Model class instance that serializes and de-serializes requests and
     responses.
   requestBuilder: Takes an http request and packages it up to be executed.
-  credentials: object, credentials to be used for authentication.
+  credentials: oauth2client.Credentials or
+    google.auth.credentials.Credentials, credentials to be used for
+    authentication.
 
 Returns:
   A Resource object with methods for interacting with the service.
@@ -1250,7 +1253,7 @@
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Tue Nov  1 17:02:49 2016
+    Generated by Epydoc 3.0.1 on Thu Jan  5 12:55:02 2017
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/epy/googleapiclient.discovery-pysrc.html b/docs/epy/googleapiclient.discovery-pysrc.html
index 0ff4e6e..3392f06 100644
--- a/docs/epy/googleapiclient.discovery-pysrc.html
+++ b/docs/epy/googleapiclient.discovery-pysrc.html
@@ -111,1246 +111,1251 @@
 <a name="L53"></a><tt class="py-lineno">  53</tt>  <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">uritemplate</tt> </tt>
 <a name="L54"></a><tt class="py-lineno">  54</tt>  <tt class="py-line"> </tt>
 <a name="L55"></a><tt class="py-lineno">  55</tt>  <tt class="py-line"><tt class="py-comment"># Local imports</tt> </tt>
-<a name="L56"></a><tt class="py-lineno">  56</tt>  <tt class="py-line"><tt class="py-keyword">from</tt> <tt id="link-0" class="py-name" targets="Package googleapiclient=googleapiclient-module.html"><a title="googleapiclient" class="py-name" href="#" onclick="return doclink('link-0', 'googleapiclient', 'link-0');">googleapiclient</a></tt> <tt class="py-keyword">import</tt> <tt id="link-1" class="py-name" targets="Module googleapiclient.mimeparse=googleapiclient.mimeparse-module.html"><a title="googleapiclient.mimeparse" class="py-name" href="#" onclick="return doclink('link-1', 'mimeparse', 'link-1');">mimeparse</a></tt> </tt>
-<a name="L57"></a><tt class="py-lineno">  57</tt>  <tt class="py-line"><tt class="py-keyword">from</tt> <tt id="link-2" class="py-name"><a title="googleapiclient" class="py-name" href="#" onclick="return doclink('link-2', 'googleapiclient', 'link-0');">googleapiclient</a></tt><tt class="py-op">.</tt><tt id="link-3" class="py-name" targets="Module googleapiclient.errors=googleapiclient.errors-module.html"><a title="googleapiclient.errors" class="py-name" href="#" onclick="return doclink('link-3', 'errors', 'link-3');">errors</a></tt> <tt class="py-keyword">import</tt> <tt id="link-4" class="py-name" targets="Class googleapiclient.errors.HttpError=googleapiclient.errors.HttpError-class.html"><a title="googleapiclient.errors.HttpError" class="py-name" href="#" onclick="return doclink('link-4', 'HttpError', 'link-4');">HttpError</a></tt> </tt>
-<a name="L58"></a><tt class="py-lineno">  58</tt>  <tt class="py-line"><tt class="py-keyword">from</tt> <tt id="link-5" class="py-name"><a title="googleapiclient" class="py-name" href="#" onclick="return doclink('link-5', 'googleapiclient', 'link-0');">googleapiclient</a></tt><tt class="py-op">.</tt><tt id="link-6" class="py-name"><a title="googleapiclient.errors" class="py-name" href="#" onclick="return doclink('link-6', 'errors', 'link-3');">errors</a></tt> <tt class="py-keyword">import</tt> <tt id="link-7" class="py-name" targets="Class googleapiclient.errors.InvalidJsonError=googleapiclient.errors.InvalidJsonError-class.html"><a title="googleapiclient.errors.InvalidJsonError" class="py-name" href="#" onclick="return doclink('link-7', 'InvalidJsonError', 'link-7');">InvalidJsonError</a></tt> </tt>
-<a name="L59"></a><tt class="py-lineno">  59</tt>  <tt class="py-line"><tt class="py-keyword">from</tt> <tt id="link-8" class="py-name"><a title="googleapiclient" class="py-name" href="#" onclick="return doclink('link-8', 'googleapiclient', 'link-0');">googleapiclient</a></tt><tt class="py-op">.</tt><tt id="link-9" class="py-name"><a title="googleapiclient.errors" class="py-name" href="#" onclick="return doclink('link-9', 'errors', 'link-3');">errors</a></tt> <tt class="py-keyword">import</tt> <tt id="link-10" class="py-name" targets="Class googleapiclient.errors.MediaUploadSizeError=googleapiclient.errors.MediaUploadSizeError-class.html"><a title="googleapiclient.errors.MediaUploadSizeError" class="py-name" href="#" onclick="return doclink('link-10', 'MediaUploadSizeError', 'link-10');">MediaUploadSizeError</a></tt> </tt>
-<a name="L60"></a><tt class="py-lineno">  60</tt>  <tt class="py-line"><tt class="py-keyword">from</tt> <tt id="link-11" class="py-name"><a title="googleapiclient" class="py-name" href="#" onclick="return doclink('link-11', 'googleapiclient', 'link-0');">googleapiclient</a></tt><tt class="py-op">.</tt><tt id="link-12" class="py-name"><a title="googleapiclient.errors" class="py-name" href="#" onclick="return doclink('link-12', 'errors', 'link-3');">errors</a></tt> <tt class="py-keyword">import</tt> <tt id="link-13" class="py-name" targets="Class googleapiclient.errors.UnacceptableMimeTypeError=googleapiclient.errors.UnacceptableMimeTypeError-class.html"><a title="googleapiclient.errors.UnacceptableMimeTypeError" class="py-name" href="#" onclick="return doclink('link-13', 'UnacceptableMimeTypeError', 'link-13');">UnacceptableMimeTypeError</a></tt> </tt>
-<a name="L61"></a><tt class="py-lineno">  61</tt>  <tt class="py-line"><tt class="py-keyword">from</tt> <tt id="link-14" class="py-name"><a title="googleapiclient" class="py-name" href="#" onclick="return doclink('link-14', 'googleapiclient', 'link-0');">googleapiclient</a></tt><tt class="py-op">.</tt><tt id="link-15" class="py-name"><a title="googleapiclient.errors" class="py-name" href="#" onclick="return doclink('link-15', 'errors', 'link-3');">errors</a></tt> <tt class="py-keyword">import</tt> <tt id="link-16" class="py-name" targets="Class googleapiclient.errors.UnknownApiNameOrVersion=googleapiclient.errors.UnknownApiNameOrVersion-class.html"><a title="googleapiclient.errors.UnknownApiNameOrVersion" class="py-name" href="#" onclick="return doclink('link-16', 'UnknownApiNameOrVersion', 'link-16');">UnknownApiNameOrVersion</a></tt> </tt>
-<a name="L62"></a><tt class="py-lineno">  62</tt>  <tt class="py-line"><tt class="py-keyword">from</tt> <tt id="link-17" class="py-name"><a title="googleapiclient" class="py-name" href="#" onclick="return doclink('link-17', 'googleapiclient', 'link-0');">googleapiclient</a></tt><tt class="py-op">.</tt><tt id="link-18" class="py-name"><a title="googleapiclient.errors" class="py-name" href="#" onclick="return doclink('link-18', 'errors', 'link-3');">errors</a></tt> <tt class="py-keyword">import</tt> <tt id="link-19" class="py-name" targets="Class googleapiclient.errors.UnknownFileType=googleapiclient.errors.UnknownFileType-class.html"><a title="googleapiclient.errors.UnknownFileType" class="py-name" href="#" onclick="return doclink('link-19', 'UnknownFileType', 'link-19');">UnknownFileType</a></tt> </tt>
-<a name="L63"></a><tt class="py-lineno">  63</tt>  <tt class="py-line"><tt class="py-keyword">from</tt> <tt id="link-20" class="py-name"><a title="googleapiclient" class="py-name" href="#" onclick="return doclink('link-20', 'googleapiclient', 'link-0');">googleapiclient</a></tt><tt class="py-op">.</tt><tt id="link-21" class="py-name" targets="Module googleapiclient.http=googleapiclient.http-module.html"><a title="googleapiclient.http" class="py-name" href="#" onclick="return doclink('link-21', 'http', 'link-21');">http</a></tt> <tt class="py-keyword">import</tt> <tt id="link-22" class="py-name" targets="Class googleapiclient.http.BatchHttpRequest=googleapiclient.http.BatchHttpRequest-class.html"><a title="googleapiclient.http.BatchHttpRequest" class="py-name" href="#" onclick="return doclink('link-22', 'BatchHttpRequest', 'link-22');">BatchHttpRequest</a></tt> </tt>
-<a name="L64"></a><tt class="py-lineno">  64</tt>  <tt class="py-line"><tt class="py-keyword">from</tt> <tt id="link-23" class="py-name"><a title="googleapiclient" class="py-name" href="#" onclick="return doclink('link-23', 'googleapiclient', 'link-0');">googleapiclient</a></tt><tt class="py-op">.</tt><tt id="link-24" class="py-name"><a title="googleapiclient.http" class="py-name" href="#" onclick="return doclink('link-24', 'http', 'link-21');">http</a></tt> <tt class="py-keyword">import</tt> <tt id="link-25" class="py-name" targets="Class googleapiclient.http.HttpMock=googleapiclient.http.HttpMock-class.html"><a title="googleapiclient.http.HttpMock" class="py-name" href="#" onclick="return doclink('link-25', 'HttpMock', 'link-25');">HttpMock</a></tt> </tt>
-<a name="L65"></a><tt class="py-lineno">  65</tt>  <tt class="py-line"><tt class="py-keyword">from</tt> <tt id="link-26" class="py-name"><a title="googleapiclient" class="py-name" href="#" onclick="return doclink('link-26', 'googleapiclient', 'link-0');">googleapiclient</a></tt><tt class="py-op">.</tt><tt id="link-27" class="py-name"><a title="googleapiclient.http" class="py-name" href="#" onclick="return doclink('link-27', 'http', 'link-21');">http</a></tt> <tt class="py-keyword">import</tt> <tt id="link-28" class="py-name" targets="Class googleapiclient.http.HttpMockSequence=googleapiclient.http.HttpMockSequence-class.html"><a title="googleapiclient.http.HttpMockSequence" class="py-name" href="#" onclick="return doclink('link-28', 'HttpMockSequence', 'link-28');">HttpMockSequence</a></tt> </tt>
-<a name="L66"></a><tt class="py-lineno">  66</tt>  <tt class="py-line"><tt class="py-keyword">from</tt> <tt id="link-29" class="py-name"><a title="googleapiclient" class="py-name" href="#" onclick="return doclink('link-29', 'googleapiclient', 'link-0');">googleapiclient</a></tt><tt class="py-op">.</tt><tt id="link-30" class="py-name"><a title="googleapiclient.http" class="py-name" href="#" onclick="return doclink('link-30', 'http', 'link-21');">http</a></tt> <tt class="py-keyword">import</tt> <tt id="link-31" class="py-name" targets="Class googleapiclient.http.HttpRequest=googleapiclient.http.HttpRequest-class.html"><a title="googleapiclient.http.HttpRequest" class="py-name" href="#" onclick="return doclink('link-31', 'HttpRequest', 'link-31');">HttpRequest</a></tt> </tt>
-<a name="L67"></a><tt class="py-lineno">  67</tt>  <tt class="py-line"><tt class="py-keyword">from</tt> <tt id="link-32" class="py-name"><a title="googleapiclient" class="py-name" href="#" onclick="return doclink('link-32', 'googleapiclient', 'link-0');">googleapiclient</a></tt><tt class="py-op">.</tt><tt id="link-33" class="py-name"><a title="googleapiclient.http" class="py-name" href="#" onclick="return doclink('link-33', 'http', 'link-21');">http</a></tt> <tt class="py-keyword">import</tt> <tt id="link-34" class="py-name" targets="Class googleapiclient.http.MediaFileUpload=googleapiclient.http.MediaFileUpload-class.html"><a title="googleapiclient.http.MediaFileUpload" class="py-name" href="#" onclick="return doclink('link-34', 'MediaFileUpload', 'link-34');">MediaFileUpload</a></tt> </tt>
-<a name="L68"></a><tt class="py-lineno">  68</tt>  <tt class="py-line"><tt class="py-keyword">from</tt> <tt id="link-35" class="py-name"><a title="googleapiclient" class="py-name" href="#" onclick="return doclink('link-35', 'googleapiclient', 'link-0');">googleapiclient</a></tt><tt class="py-op">.</tt><tt id="link-36" class="py-name"><a title="googleapiclient.http" class="py-name" href="#" onclick="return doclink('link-36', 'http', 'link-21');">http</a></tt> <tt class="py-keyword">import</tt> <tt id="link-37" class="py-name" targets="Class googleapiclient.http.MediaUpload=googleapiclient.http.MediaUpload-class.html"><a title="googleapiclient.http.MediaUpload" class="py-name" href="#" onclick="return doclink('link-37', 'MediaUpload', 'link-37');">MediaUpload</a></tt> </tt>
-<a name="L69"></a><tt class="py-lineno">  69</tt>  <tt class="py-line"><tt class="py-keyword">from</tt> <tt id="link-38" class="py-name"><a title="googleapiclient" class="py-name" href="#" onclick="return doclink('link-38', 'googleapiclient', 'link-0');">googleapiclient</a></tt><tt class="py-op">.</tt><tt id="link-39" class="py-name" targets="Module googleapiclient.model=googleapiclient.model-module.html"><a title="googleapiclient.model" class="py-name" href="#" onclick="return doclink('link-39', 'model', 'link-39');">model</a></tt> <tt class="py-keyword">import</tt> <tt id="link-40" class="py-name" targets="Class googleapiclient.model.JsonModel=googleapiclient.model.JsonModel-class.html"><a title="googleapiclient.model.JsonModel" class="py-name" href="#" onclick="return doclink('link-40', 'JsonModel', 'link-40');">JsonModel</a></tt> </tt>
-<a name="L70"></a><tt class="py-lineno">  70</tt>  <tt class="py-line"><tt class="py-keyword">from</tt> <tt id="link-41" class="py-name"><a title="googleapiclient" class="py-name" href="#" onclick="return doclink('link-41', 'googleapiclient', 'link-0');">googleapiclient</a></tt><tt class="py-op">.</tt><tt id="link-42" class="py-name"><a title="googleapiclient.model" class="py-name" href="#" onclick="return doclink('link-42', 'model', 'link-39');">model</a></tt> <tt class="py-keyword">import</tt> <tt id="link-43" class="py-name" targets="Class googleapiclient.model.MediaModel=googleapiclient.model.MediaModel-class.html"><a title="googleapiclient.model.MediaModel" class="py-name" href="#" onclick="return doclink('link-43', 'MediaModel', 'link-43');">MediaModel</a></tt> </tt>
-<a name="L71"></a><tt class="py-lineno">  71</tt>  <tt class="py-line"><tt class="py-keyword">from</tt> <tt id="link-44" class="py-name"><a title="googleapiclient" class="py-name" href="#" onclick="return doclink('link-44', 'googleapiclient', 'link-0');">googleapiclient</a></tt><tt class="py-op">.</tt><tt id="link-45" class="py-name"><a title="googleapiclient.model" class="py-name" href="#" onclick="return doclink('link-45', 'model', 'link-39');">model</a></tt> <tt class="py-keyword">import</tt> <tt id="link-46" class="py-name" targets="Class googleapiclient.model.RawModel=googleapiclient.model.RawModel-class.html"><a title="googleapiclient.model.RawModel" class="py-name" href="#" onclick="return doclink('link-46', 'RawModel', 'link-46');">RawModel</a></tt> </tt>
-<a name="L72"></a><tt class="py-lineno">  72</tt>  <tt class="py-line"><tt class="py-keyword">from</tt> <tt id="link-47" class="py-name"><a title="googleapiclient" class="py-name" href="#" onclick="return doclink('link-47', 'googleapiclient', 'link-0');">googleapiclient</a></tt><tt class="py-op">.</tt><tt id="link-48" class="py-name" targets="Module googleapiclient.schema=googleapiclient.schema-module.html"><a title="googleapiclient.schema" class="py-name" href="#" onclick="return doclink('link-48', 'schema', 'link-48');">schema</a></tt> <tt class="py-keyword">import</tt> <tt id="link-49" class="py-name" targets="Class googleapiclient.schema.Schemas=googleapiclient.schema.Schemas-class.html"><a title="googleapiclient.schema.Schemas" class="py-name" href="#" onclick="return doclink('link-49', 'Schemas', 'link-49');">Schemas</a></tt> </tt>
-<a name="L73"></a><tt class="py-lineno">  73</tt>  <tt class="py-line"><tt class="py-keyword">from</tt> <tt class="py-name">oauth2client</tt><tt class="py-op">.</tt><tt class="py-name">client</tt> <tt class="py-keyword">import</tt> <tt class="py-name">GoogleCredentials</tt> </tt>
-<a name="L74"></a><tt class="py-lineno">  74</tt>  <tt class="py-line"> </tt>
-<a name="L75"></a><tt class="py-lineno">  75</tt>  <tt class="py-line"><tt class="py-comment"># Oauth2client &lt; 3 has the positional helper in 'util', &gt;= 3 has it</tt> </tt>
-<a name="L76"></a><tt class="py-lineno">  76</tt>  <tt class="py-line"><tt class="py-comment"># in '_helpers'.</tt> </tt>
-<a name="L77"></a><tt class="py-lineno">  77</tt>  <tt class="py-line"><tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
-<a name="L78"></a><tt class="py-lineno">  78</tt>  <tt class="py-line">  <tt class="py-keyword">from</tt> <tt class="py-name">oauth2client</tt><tt class="py-op">.</tt><tt class="py-name">util</tt> <tt class="py-keyword">import</tt> <tt class="py-name">_add_query_parameter</tt> </tt>
-<a name="L79"></a><tt class="py-lineno">  79</tt>  <tt class="py-line">  <tt class="py-keyword">from</tt> <tt class="py-name">oauth2client</tt><tt class="py-op">.</tt><tt class="py-name">util</tt> <tt class="py-keyword">import</tt> <tt class="py-name">positional</tt> </tt>
-<a name="L80"></a><tt class="py-lineno">  80</tt>  <tt class="py-line"><tt class="py-keyword">except</tt> <tt class="py-name">ImportError</tt><tt class="py-op">:</tt> </tt>
-<a name="L81"></a><tt class="py-lineno">  81</tt>  <tt class="py-line">  <tt class="py-keyword">from</tt> <tt class="py-name">oauth2client</tt><tt class="py-op">.</tt><tt class="py-name">_helpers</tt> <tt class="py-keyword">import</tt> <tt class="py-name">_add_query_parameter</tt> </tt>
-<a name="L82"></a><tt class="py-lineno">  82</tt>  <tt class="py-line">  <tt class="py-keyword">from</tt> <tt class="py-name">oauth2client</tt><tt class="py-op">.</tt><tt class="py-name">_helpers</tt> <tt class="py-keyword">import</tt> <tt class="py-name">positional</tt> </tt>
-<a name="L83"></a><tt class="py-lineno">  83</tt>  <tt class="py-line"> </tt>
+<a name="L56"></a><tt class="py-lineno">  56</tt>  <tt class="py-line"><tt class="py-keyword">from</tt> <tt id="link-0" class="py-name" targets="Package googleapiclient=googleapiclient-module.html"><a title="googleapiclient" class="py-name" href="#" onclick="return doclink('link-0', 'googleapiclient', 'link-0');">googleapiclient</a></tt> <tt class="py-keyword">import</tt> <tt id="link-1" class="py-name" targets="Module googleapiclient._auth=googleapiclient._auth-module.html"><a title="googleapiclient._auth" class="py-name" href="#" onclick="return doclink('link-1', '_auth', 'link-1');">_auth</a></tt> </tt>
+<a name="L57"></a><tt class="py-lineno">  57</tt>  <tt class="py-line"><tt class="py-keyword">from</tt> <tt id="link-2" class="py-name"><a title="googleapiclient" class="py-name" href="#" onclick="return doclink('link-2', 'googleapiclient', 'link-0');">googleapiclient</a></tt> <tt class="py-keyword">import</tt> <tt id="link-3" class="py-name" targets="Module googleapiclient.mimeparse=googleapiclient.mimeparse-module.html"><a title="googleapiclient.mimeparse" class="py-name" href="#" onclick="return doclink('link-3', 'mimeparse', 'link-3');">mimeparse</a></tt> </tt>
+<a name="L58"></a><tt class="py-lineno">  58</tt>  <tt class="py-line"><tt class="py-keyword">from</tt> <tt id="link-4" class="py-name"><a title="googleapiclient" class="py-name" href="#" onclick="return doclink('link-4', 'googleapiclient', 'link-0');">googleapiclient</a></tt><tt class="py-op">.</tt><tt id="link-5" class="py-name" targets="Module googleapiclient.errors=googleapiclient.errors-module.html"><a title="googleapiclient.errors" class="py-name" href="#" onclick="return doclink('link-5', 'errors', 'link-5');">errors</a></tt> <tt class="py-keyword">import</tt> <tt id="link-6" class="py-name" targets="Class googleapiclient.errors.HttpError=googleapiclient.errors.HttpError-class.html"><a title="googleapiclient.errors.HttpError" class="py-name" href="#" onclick="return doclink('link-6', 'HttpError', 'link-6');">HttpError</a></tt> </tt>
+<a name="L59"></a><tt class="py-lineno">  59</tt>  <tt class="py-line"><tt class="py-keyword">from</tt> <tt id="link-7" class="py-name"><a title="googleapiclient" class="py-name" href="#" onclick="return doclink('link-7', 'googleapiclient', 'link-0');">googleapiclient</a></tt><tt class="py-op">.</tt><tt id="link-8" class="py-name"><a title="googleapiclient.errors" class="py-name" href="#" onclick="return doclink('link-8', 'errors', 'link-5');">errors</a></tt> <tt class="py-keyword">import</tt> <tt id="link-9" class="py-name" targets="Class googleapiclient.errors.InvalidJsonError=googleapiclient.errors.InvalidJsonError-class.html"><a title="googleapiclient.errors.InvalidJsonError" class="py-name" href="#" onclick="return doclink('link-9', 'InvalidJsonError', 'link-9');">InvalidJsonError</a></tt> </tt>
+<a name="L60"></a><tt class="py-lineno">  60</tt>  <tt class="py-line"><tt class="py-keyword">from</tt> <tt id="link-10" class="py-name"><a title="googleapiclient" class="py-name" href="#" onclick="return doclink('link-10', 'googleapiclient', 'link-0');">googleapiclient</a></tt><tt class="py-op">.</tt><tt id="link-11" class="py-name"><a title="googleapiclient.errors" class="py-name" href="#" onclick="return doclink('link-11', 'errors', 'link-5');">errors</a></tt> <tt class="py-keyword">import</tt> <tt id="link-12" class="py-name" targets="Class googleapiclient.errors.MediaUploadSizeError=googleapiclient.errors.MediaUploadSizeError-class.html"><a title="googleapiclient.errors.MediaUploadSizeError" class="py-name" href="#" onclick="return doclink('link-12', 'MediaUploadSizeError', 'link-12');">MediaUploadSizeError</a></tt> </tt>
+<a name="L61"></a><tt class="py-lineno">  61</tt>  <tt class="py-line"><tt class="py-keyword">from</tt> <tt id="link-13" class="py-name"><a title="googleapiclient" class="py-name" href="#" onclick="return doclink('link-13', 'googleapiclient', 'link-0');">googleapiclient</a></tt><tt class="py-op">.</tt><tt id="link-14" class="py-name"><a title="googleapiclient.errors" class="py-name" href="#" onclick="return doclink('link-14', 'errors', 'link-5');">errors</a></tt> <tt class="py-keyword">import</tt> <tt id="link-15" class="py-name" targets="Class googleapiclient.errors.UnacceptableMimeTypeError=googleapiclient.errors.UnacceptableMimeTypeError-class.html"><a title="googleapiclient.errors.UnacceptableMimeTypeError" class="py-name" href="#" onclick="return doclink('link-15', 'UnacceptableMimeTypeError', 'link-15');">UnacceptableMimeTypeError</a></tt> </tt>
+<a name="L62"></a><tt class="py-lineno">  62</tt>  <tt class="py-line"><tt class="py-keyword">from</tt> <tt id="link-16" class="py-name"><a title="googleapiclient" class="py-name" href="#" onclick="return doclink('link-16', 'googleapiclient', 'link-0');">googleapiclient</a></tt><tt class="py-op">.</tt><tt id="link-17" class="py-name"><a title="googleapiclient.errors" class="py-name" href="#" onclick="return doclink('link-17', 'errors', 'link-5');">errors</a></tt> <tt class="py-keyword">import</tt> <tt id="link-18" class="py-name" targets="Class googleapiclient.errors.UnknownApiNameOrVersion=googleapiclient.errors.UnknownApiNameOrVersion-class.html"><a title="googleapiclient.errors.UnknownApiNameOrVersion" class="py-name" href="#" onclick="return doclink('link-18', 'UnknownApiNameOrVersion', 'link-18');">UnknownApiNameOrVersion</a></tt> </tt>
+<a name="L63"></a><tt class="py-lineno">  63</tt>  <tt class="py-line"><tt class="py-keyword">from</tt> <tt id="link-19" class="py-name"><a title="googleapiclient" class="py-name" href="#" onclick="return doclink('link-19', 'googleapiclient', 'link-0');">googleapiclient</a></tt><tt class="py-op">.</tt><tt id="link-20" class="py-name"><a title="googleapiclient.errors" class="py-name" href="#" onclick="return doclink('link-20', 'errors', 'link-5');">errors</a></tt> <tt class="py-keyword">import</tt> <tt id="link-21" class="py-name" targets="Class googleapiclient.errors.UnknownFileType=googleapiclient.errors.UnknownFileType-class.html"><a title="googleapiclient.errors.UnknownFileType" class="py-name" href="#" onclick="return doclink('link-21', 'UnknownFileType', 'link-21');">UnknownFileType</a></tt> </tt>
+<a name="L64"></a><tt class="py-lineno">  64</tt>  <tt class="py-line"><tt class="py-keyword">from</tt> <tt id="link-22" class="py-name"><a title="googleapiclient" class="py-name" href="#" onclick="return doclink('link-22', 'googleapiclient', 'link-0');">googleapiclient</a></tt><tt class="py-op">.</tt><tt id="link-23" class="py-name" targets="Module googleapiclient.http=googleapiclient.http-module.html"><a title="googleapiclient.http" class="py-name" href="#" onclick="return doclink('link-23', 'http', 'link-23');">http</a></tt> <tt class="py-keyword">import</tt> <tt id="link-24" class="py-name" targets="Class googleapiclient.http.BatchHttpRequest=googleapiclient.http.BatchHttpRequest-class.html"><a title="googleapiclient.http.BatchHttpRequest" class="py-name" href="#" onclick="return doclink('link-24', 'BatchHttpRequest', 'link-24');">BatchHttpRequest</a></tt> </tt>
+<a name="L65"></a><tt class="py-lineno">  65</tt>  <tt class="py-line"><tt class="py-keyword">from</tt> <tt id="link-25" class="py-name"><a title="googleapiclient" class="py-name" href="#" onclick="return doclink('link-25', 'googleapiclient', 'link-0');">googleapiclient</a></tt><tt class="py-op">.</tt><tt id="link-26" class="py-name"><a title="googleapiclient.http" class="py-name" href="#" onclick="return doclink('link-26', 'http', 'link-23');">http</a></tt> <tt class="py-keyword">import</tt> <tt id="link-27" class="py-name" targets="Class googleapiclient.http.HttpMock=googleapiclient.http.HttpMock-class.html"><a title="googleapiclient.http.HttpMock" class="py-name" href="#" onclick="return doclink('link-27', 'HttpMock', 'link-27');">HttpMock</a></tt> </tt>
+<a name="L66"></a><tt class="py-lineno">  66</tt>  <tt class="py-line"><tt class="py-keyword">from</tt> <tt id="link-28" class="py-name"><a title="googleapiclient" class="py-name" href="#" onclick="return doclink('link-28', 'googleapiclient', 'link-0');">googleapiclient</a></tt><tt class="py-op">.</tt><tt id="link-29" class="py-name"><a title="googleapiclient.http" class="py-name" href="#" onclick="return doclink('link-29', 'http', 'link-23');">http</a></tt> <tt class="py-keyword">import</tt> <tt id="link-30" class="py-name" targets="Class googleapiclient.http.HttpMockSequence=googleapiclient.http.HttpMockSequence-class.html"><a title="googleapiclient.http.HttpMockSequence" class="py-name" href="#" onclick="return doclink('link-30', 'HttpMockSequence', 'link-30');">HttpMockSequence</a></tt> </tt>
+<a name="L67"></a><tt class="py-lineno">  67</tt>  <tt class="py-line"><tt class="py-keyword">from</tt> <tt id="link-31" class="py-name"><a title="googleapiclient" class="py-name" href="#" onclick="return doclink('link-31', 'googleapiclient', 'link-0');">googleapiclient</a></tt><tt class="py-op">.</tt><tt id="link-32" class="py-name"><a title="googleapiclient.http" class="py-name" href="#" onclick="return doclink('link-32', 'http', 'link-23');">http</a></tt> <tt class="py-keyword">import</tt> <tt id="link-33" class="py-name" targets="Class googleapiclient.http.HttpRequest=googleapiclient.http.HttpRequest-class.html"><a title="googleapiclient.http.HttpRequest" class="py-name" href="#" onclick="return doclink('link-33', 'HttpRequest', 'link-33');">HttpRequest</a></tt> </tt>
+<a name="L68"></a><tt class="py-lineno">  68</tt>  <tt class="py-line"><tt class="py-keyword">from</tt> <tt id="link-34" class="py-name"><a title="googleapiclient" class="py-name" href="#" onclick="return doclink('link-34', 'googleapiclient', 'link-0');">googleapiclient</a></tt><tt class="py-op">.</tt><tt id="link-35" class="py-name"><a title="googleapiclient.http" class="py-name" href="#" onclick="return doclink('link-35', 'http', 'link-23');">http</a></tt> <tt class="py-keyword">import</tt> <tt id="link-36" class="py-name" targets="Class googleapiclient.http.MediaFileUpload=googleapiclient.http.MediaFileUpload-class.html"><a title="googleapiclient.http.MediaFileUpload" class="py-name" href="#" onclick="return doclink('link-36', 'MediaFileUpload', 'link-36');">MediaFileUpload</a></tt> </tt>
+<a name="L69"></a><tt class="py-lineno">  69</tt>  <tt class="py-line"><tt class="py-keyword">from</tt> <tt id="link-37" class="py-name"><a title="googleapiclient" class="py-name" href="#" onclick="return doclink('link-37', 'googleapiclient', 'link-0');">googleapiclient</a></tt><tt class="py-op">.</tt><tt id="link-38" class="py-name"><a title="googleapiclient.http" class="py-name" href="#" onclick="return doclink('link-38', 'http', 'link-23');">http</a></tt> <tt class="py-keyword">import</tt> <tt id="link-39" class="py-name" targets="Class googleapiclient.http.MediaUpload=googleapiclient.http.MediaUpload-class.html"><a title="googleapiclient.http.MediaUpload" class="py-name" href="#" onclick="return doclink('link-39', 'MediaUpload', 'link-39');">MediaUpload</a></tt> </tt>
+<a name="L70"></a><tt class="py-lineno">  70</tt>  <tt class="py-line"><tt class="py-keyword">from</tt> <tt id="link-40" class="py-name"><a title="googleapiclient" class="py-name" href="#" onclick="return doclink('link-40', 'googleapiclient', 'link-0');">googleapiclient</a></tt><tt class="py-op">.</tt><tt id="link-41" class="py-name" targets="Module googleapiclient.model=googleapiclient.model-module.html"><a title="googleapiclient.model" class="py-name" href="#" onclick="return doclink('link-41', 'model', 'link-41');">model</a></tt> <tt class="py-keyword">import</tt> <tt id="link-42" class="py-name" targets="Class googleapiclient.model.JsonModel=googleapiclient.model.JsonModel-class.html"><a title="googleapiclient.model.JsonModel" class="py-name" href="#" onclick="return doclink('link-42', 'JsonModel', 'link-42');">JsonModel</a></tt> </tt>
+<a name="L71"></a><tt class="py-lineno">  71</tt>  <tt class="py-line"><tt class="py-keyword">from</tt> <tt id="link-43" class="py-name"><a title="googleapiclient" class="py-name" href="#" onclick="return doclink('link-43', 'googleapiclient', 'link-0');">googleapiclient</a></tt><tt class="py-op">.</tt><tt id="link-44" class="py-name"><a title="googleapiclient.model" class="py-name" href="#" onclick="return doclink('link-44', 'model', 'link-41');">model</a></tt> <tt class="py-keyword">import</tt> <tt id="link-45" class="py-name" targets="Class googleapiclient.model.MediaModel=googleapiclient.model.MediaModel-class.html"><a title="googleapiclient.model.MediaModel" class="py-name" href="#" onclick="return doclink('link-45', 'MediaModel', 'link-45');">MediaModel</a></tt> </tt>
+<a name="L72"></a><tt class="py-lineno">  72</tt>  <tt class="py-line"><tt class="py-keyword">from</tt> <tt id="link-46" class="py-name"><a title="googleapiclient" class="py-name" href="#" onclick="return doclink('link-46', 'googleapiclient', 'link-0');">googleapiclient</a></tt><tt class="py-op">.</tt><tt id="link-47" class="py-name"><a title="googleapiclient.model" class="py-name" href="#" onclick="return doclink('link-47', 'model', 'link-41');">model</a></tt> <tt class="py-keyword">import</tt> <tt id="link-48" class="py-name" targets="Class googleapiclient.model.RawModel=googleapiclient.model.RawModel-class.html"><a title="googleapiclient.model.RawModel" class="py-name" href="#" onclick="return doclink('link-48', 'RawModel', 'link-48');">RawModel</a></tt> </tt>
+<a name="L73"></a><tt class="py-lineno">  73</tt>  <tt class="py-line"><tt class="py-keyword">from</tt> <tt id="link-49" class="py-name"><a title="googleapiclient" class="py-name" href="#" onclick="return doclink('link-49', 'googleapiclient', 'link-0');">googleapiclient</a></tt><tt class="py-op">.</tt><tt id="link-50" class="py-name" targets="Module googleapiclient.schema=googleapiclient.schema-module.html"><a title="googleapiclient.schema" class="py-name" href="#" onclick="return doclink('link-50', 'schema', 'link-50');">schema</a></tt> <tt class="py-keyword">import</tt> <tt id="link-51" class="py-name" targets="Class googleapiclient.schema.Schemas=googleapiclient.schema.Schemas-class.html"><a title="googleapiclient.schema.Schemas" class="py-name" href="#" onclick="return doclink('link-51', 'Schemas', 'link-51');">Schemas</a></tt> </tt>
+<a name="L74"></a><tt class="py-lineno">  74</tt>  <tt class="py-line"><tt class="py-keyword">from</tt> <tt class="py-name">oauth2client</tt><tt class="py-op">.</tt><tt class="py-name">client</tt> <tt class="py-keyword">import</tt> <tt class="py-name">GoogleCredentials</tt> </tt>
+<a name="L75"></a><tt class="py-lineno">  75</tt>  <tt class="py-line"> </tt>
+<a name="L76"></a><tt class="py-lineno">  76</tt>  <tt class="py-line"><tt class="py-comment"># Oauth2client &lt; 3 has the positional helper in 'util', &gt;= 3 has it</tt> </tt>
+<a name="L77"></a><tt class="py-lineno">  77</tt>  <tt class="py-line"><tt class="py-comment"># in '_helpers'.</tt> </tt>
+<a name="L78"></a><tt class="py-lineno">  78</tt>  <tt class="py-line"><tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
+<a name="L79"></a><tt class="py-lineno">  79</tt>  <tt class="py-line">  <tt class="py-keyword">from</tt> <tt class="py-name">oauth2client</tt><tt class="py-op">.</tt><tt class="py-name">util</tt> <tt class="py-keyword">import</tt> <tt class="py-name">_add_query_parameter</tt> </tt>
+<a name="L80"></a><tt class="py-lineno">  80</tt>  <tt class="py-line">  <tt class="py-keyword">from</tt> <tt class="py-name">oauth2client</tt><tt class="py-op">.</tt><tt class="py-name">util</tt> <tt class="py-keyword">import</tt> <tt class="py-name">positional</tt> </tt>
+<a name="L81"></a><tt class="py-lineno">  81</tt>  <tt class="py-line"><tt class="py-keyword">except</tt> <tt class="py-name">ImportError</tt><tt class="py-op">:</tt> </tt>
+<a name="L82"></a><tt class="py-lineno">  82</tt>  <tt class="py-line">  <tt class="py-keyword">from</tt> <tt class="py-name">oauth2client</tt><tt class="py-op">.</tt><tt class="py-name">_helpers</tt> <tt class="py-keyword">import</tt> <tt class="py-name">_add_query_parameter</tt> </tt>
+<a name="L83"></a><tt class="py-lineno">  83</tt>  <tt class="py-line">  <tt class="py-keyword">from</tt> <tt class="py-name">oauth2client</tt><tt class="py-op">.</tt><tt class="py-name">_helpers</tt> <tt class="py-keyword">import</tt> <tt class="py-name">positional</tt> </tt>
 <a name="L84"></a><tt class="py-lineno">  84</tt>  <tt class="py-line"> </tt>
-<a name="L85"></a><tt class="py-lineno">  85</tt>  <tt class="py-line"><tt class="py-comment"># The client library requires a version of httplib2 that supports RETRIES.</tt> </tt>
-<a name="L86"></a><tt class="py-lineno">  86</tt>  <tt class="py-line"><tt class="py-name">httplib2</tt><tt class="py-op">.</tt><tt class="py-name">RETRIES</tt> <tt class="py-op">=</tt> <tt class="py-number">1</tt> </tt>
-<a name="L87"></a><tt class="py-lineno">  87</tt>  <tt class="py-line"> </tt>
-<a name="L88"></a><tt class="py-lineno">  88</tt>  <tt class="py-line"><tt id="link-50" class="py-name" targets="Variable googleapiclient.discovery.logger=googleapiclient.discovery-module.html#logger"><a title="googleapiclient.discovery.logger" class="py-name" href="#" onclick="return doclink('link-50', 'logger', 'link-50');">logger</a></tt> <tt class="py-op">=</tt> <tt class="py-name">logging</tt><tt class="py-op">.</tt><tt class="py-name">getLogger</tt><tt class="py-op">(</tt><tt class="py-name">__name__</tt><tt class="py-op">)</tt> </tt>
-<a name="L89"></a><tt class="py-lineno">  89</tt>  <tt class="py-line"> </tt>
-<a name="L90"></a><tt class="py-lineno">  90</tt>  <tt class="py-line"><tt id="link-51" class="py-name" targets="Variable googleapiclient.discovery.URITEMPLATE=googleapiclient.discovery-module.html#URITEMPLATE"><a title="googleapiclient.discovery.URITEMPLATE" class="py-name" href="#" onclick="return doclink('link-51', 'URITEMPLATE', 'link-51');">URITEMPLATE</a></tt> <tt class="py-op">=</tt> <tt class="py-name">re</tt><tt class="py-op">.</tt><tt class="py-name">compile</tt><tt class="py-op">(</tt><tt class="py-string">'{[^}]*}'</tt><tt class="py-op">)</tt> </tt>
-<a name="L91"></a><tt class="py-lineno">  91</tt>  <tt class="py-line"><tt id="link-52" class="py-name" targets="Variable googleapiclient.discovery.VARNAME=googleapiclient.discovery-module.html#VARNAME"><a title="googleapiclient.discovery.VARNAME" class="py-name" href="#" onclick="return doclink('link-52', 'VARNAME', 'link-52');">VARNAME</a></tt> <tt class="py-op">=</tt> <tt class="py-name">re</tt><tt class="py-op">.</tt><tt class="py-name">compile</tt><tt class="py-op">(</tt><tt class="py-string">'[a-zA-Z0-9_-]+'</tt><tt class="py-op">)</tt> </tt>
-<a name="L92"></a><tt class="py-lineno">  92</tt>  <tt class="py-line"><tt id="link-53" class="py-name" targets="Variable googleapiclient.discovery.DISCOVERY_URI=googleapiclient.discovery-module.html#DISCOVERY_URI"><a title="googleapiclient.discovery.DISCOVERY_URI" class="py-name" href="#" onclick="return doclink('link-53', 'DISCOVERY_URI', 'link-53');">DISCOVERY_URI</a></tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-string">'https://www.googleapis.com/discovery/v1/apis/'</tt> </tt>
-<a name="L93"></a><tt class="py-lineno">  93</tt>  <tt class="py-line">                 <tt class="py-string">'{api}/{apiVersion}/rest'</tt><tt class="py-op">)</tt> </tt>
-<a name="L94"></a><tt class="py-lineno">  94</tt>  <tt class="py-line"><tt id="link-54" class="py-name" targets="Variable googleapiclient.discovery.V1_DISCOVERY_URI=googleapiclient.discovery-module.html#V1_DISCOVERY_URI"><a title="googleapiclient.discovery.V1_DISCOVERY_URI" class="py-name" href="#" onclick="return doclink('link-54', 'V1_DISCOVERY_URI', 'link-54');">V1_DISCOVERY_URI</a></tt> <tt class="py-op">=</tt> <tt id="link-55" class="py-name"><a title="googleapiclient.discovery.DISCOVERY_URI" class="py-name" href="#" onclick="return doclink('link-55', 'DISCOVERY_URI', 'link-53');">DISCOVERY_URI</a></tt> </tt>
-<a name="L95"></a><tt class="py-lineno">  95</tt>  <tt class="py-line"><tt id="link-56" class="py-name" targets="Variable googleapiclient.discovery.V2_DISCOVERY_URI=googleapiclient.discovery-module.html#V2_DISCOVERY_URI"><a title="googleapiclient.discovery.V2_DISCOVERY_URI" class="py-name" href="#" onclick="return doclink('link-56', 'V2_DISCOVERY_URI', 'link-56');">V2_DISCOVERY_URI</a></tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-string">'https://{api}.googleapis.com/$discovery/rest?'</tt> </tt>
-<a name="L96"></a><tt class="py-lineno">  96</tt>  <tt class="py-line">                    <tt class="py-string">'version={apiVersion}'</tt><tt class="py-op">)</tt> </tt>
-<a name="L97"></a><tt class="py-lineno">  97</tt>  <tt class="py-line"><tt id="link-57" class="py-name" targets="Variable googleapiclient.discovery.DEFAULT_METHOD_DOC=googleapiclient.discovery-module.html#DEFAULT_METHOD_DOC"><a title="googleapiclient.discovery.DEFAULT_METHOD_DOC" class="py-name" href="#" onclick="return doclink('link-57', 'DEFAULT_METHOD_DOC', 'link-57');">DEFAULT_METHOD_DOC</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'A description of how to use this function'</tt> </tt>
-<a name="L98"></a><tt class="py-lineno">  98</tt>  <tt class="py-line"><tt id="link-58" class="py-name" targets="Variable googleapiclient.discovery.HTTP_PAYLOAD_METHODS=googleapiclient.discovery-module.html#HTTP_PAYLOAD_METHODS"><a title="googleapiclient.discovery.HTTP_PAYLOAD_METHODS" class="py-name" href="#" onclick="return doclink('link-58', 'HTTP_PAYLOAD_METHODS', 'link-58');">HTTP_PAYLOAD_METHODS</a></tt> <tt class="py-op">=</tt> <tt class="py-name">frozenset</tt><tt class="py-op">(</tt><tt class="py-op">[</tt><tt class="py-string">'PUT'</tt><tt class="py-op">,</tt> <tt class="py-string">'POST'</tt><tt class="py-op">,</tt> <tt class="py-string">'PATCH'</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
-<a name="L99"></a><tt class="py-lineno">  99</tt>  <tt class="py-line"><tt id="link-59" class="py-name" targets="Variable googleapiclient.discovery._MEDIA_SIZE_BIT_SHIFTS=googleapiclient.discovery-module.html#_MEDIA_SIZE_BIT_SHIFTS"><a title="googleapiclient.discovery._MEDIA_SIZE_BIT_SHIFTS" class="py-name" href="#" onclick="return doclink('link-59', '_MEDIA_SIZE_BIT_SHIFTS', 'link-59');">_MEDIA_SIZE_BIT_SHIFTS</a></tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-string">'KB'</tt><tt class="py-op">:</tt> <tt class="py-number">10</tt><tt class="py-op">,</tt> <tt class="py-string">'MB'</tt><tt class="py-op">:</tt> <tt class="py-number">20</tt><tt class="py-op">,</tt> <tt class="py-string">'GB'</tt><tt class="py-op">:</tt> <tt class="py-number">30</tt><tt class="py-op">,</tt> <tt class="py-string">'TB'</tt><tt class="py-op">:</tt> <tt class="py-number">40</tt><tt class="py-op">}</tt> </tt>
-<a name="L100"></a><tt class="py-lineno"> 100</tt>  <tt class="py-line"><tt id="link-60" class="py-name" targets="Variable googleapiclient.discovery.BODY_PARAMETER_DEFAULT_VALUE=googleapiclient.discovery-module.html#BODY_PARAMETER_DEFAULT_VALUE"><a title="googleapiclient.discovery.BODY_PARAMETER_DEFAULT_VALUE" class="py-name" href="#" onclick="return doclink('link-60', 'BODY_PARAMETER_DEFAULT_VALUE', 'link-60');">BODY_PARAMETER_DEFAULT_VALUE</a></tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt> </tt>
-<a name="L101"></a><tt class="py-lineno"> 101</tt>  <tt class="py-line">    <tt class="py-string">'description'</tt><tt class="py-op">:</tt> <tt class="py-string">'The request body.'</tt><tt class="py-op">,</tt> </tt>
-<a name="L102"></a><tt class="py-lineno"> 102</tt>  <tt class="py-line">    <tt class="py-string">'type'</tt><tt class="py-op">:</tt> <tt class="py-string">'object'</tt><tt class="py-op">,</tt> </tt>
-<a name="L103"></a><tt class="py-lineno"> 103</tt>  <tt class="py-line">    <tt class="py-string">'required'</tt><tt class="py-op">:</tt> <tt class="py-name">True</tt><tt class="py-op">,</tt> </tt>
-<a name="L104"></a><tt class="py-lineno"> 104</tt>  <tt class="py-line"><tt class="py-op">}</tt> </tt>
-<a name="L105"></a><tt class="py-lineno"> 105</tt>  <tt class="py-line"><tt id="link-61" class="py-name" targets="Variable googleapiclient.discovery.MEDIA_BODY_PARAMETER_DEFAULT_VALUE=googleapiclient.discovery-module.html#MEDIA_BODY_PARAMETER_DEFAULT_VALUE"><a title="googleapiclient.discovery.MEDIA_BODY_PARAMETER_DEFAULT_VALUE" class="py-name" href="#" onclick="return doclink('link-61', 'MEDIA_BODY_PARAMETER_DEFAULT_VALUE', 'link-61');">MEDIA_BODY_PARAMETER_DEFAULT_VALUE</a></tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt> </tt>
-<a name="L106"></a><tt class="py-lineno"> 106</tt>  <tt class="py-line">    <tt class="py-string">'description'</tt><tt class="py-op">:</tt> <tt class="py-op">(</tt><tt class="py-string">'The filename of the media request body, or an instance '</tt> </tt>
-<a name="L107"></a><tt class="py-lineno"> 107</tt>  <tt class="py-line">                    <tt class="py-string">'of a MediaUpload object.'</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
-<a name="L108"></a><tt class="py-lineno"> 108</tt>  <tt class="py-line">    <tt class="py-string">'type'</tt><tt class="py-op">:</tt> <tt class="py-string">'string'</tt><tt class="py-op">,</tt> </tt>
-<a name="L109"></a><tt class="py-lineno"> 109</tt>  <tt class="py-line">    <tt class="py-string">'required'</tt><tt class="py-op">:</tt> <tt class="py-name">False</tt><tt class="py-op">,</tt> </tt>
-<a name="L110"></a><tt class="py-lineno"> 110</tt>  <tt class="py-line"><tt class="py-op">}</tt> </tt>
-<a name="L111"></a><tt class="py-lineno"> 111</tt>  <tt class="py-line"><tt id="link-62" class="py-name" targets="Variable googleapiclient.discovery.MEDIA_MIME_TYPE_PARAMETER_DEFAULT_VALUE=googleapiclient.discovery-module.html#MEDIA_MIME_TYPE_PARAMETER_DEFAULT_VALUE"><a title="googleapiclient.discovery.MEDIA_MIME_TYPE_PARAMETER_DEFAULT_VALUE" class="py-name" href="#" onclick="return doclink('link-62', 'MEDIA_MIME_TYPE_PARAMETER_DEFAULT_VALUE', 'link-62');">MEDIA_MIME_TYPE_PARAMETER_DEFAULT_VALUE</a></tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt> </tt>
-<a name="L112"></a><tt class="py-lineno"> 112</tt>  <tt class="py-line">    <tt class="py-string">'description'</tt><tt class="py-op">:</tt> <tt class="py-op">(</tt><tt class="py-string">'The MIME type of the media request body, or an instance '</tt> </tt>
-<a name="L113"></a><tt class="py-lineno"> 113</tt>  <tt class="py-line">                    <tt class="py-string">'of a MediaUpload object.'</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
-<a name="L114"></a><tt class="py-lineno"> 114</tt>  <tt class="py-line">    <tt class="py-string">'type'</tt><tt class="py-op">:</tt> <tt class="py-string">'string'</tt><tt class="py-op">,</tt> </tt>
-<a name="L115"></a><tt class="py-lineno"> 115</tt>  <tt class="py-line">    <tt class="py-string">'required'</tt><tt class="py-op">:</tt> <tt class="py-name">False</tt><tt class="py-op">,</tt> </tt>
-<a name="L116"></a><tt class="py-lineno"> 116</tt>  <tt class="py-line"><tt class="py-op">}</tt> </tt>
-<a name="L117"></a><tt class="py-lineno"> 117</tt>  <tt class="py-line"> </tt>
-<a name="L118"></a><tt class="py-lineno"> 118</tt>  <tt class="py-line"><tt class="py-comment"># Parameters accepted by the stack, but not visible via discovery.</tt> </tt>
-<a name="L119"></a><tt class="py-lineno"> 119</tt>  <tt class="py-line"><tt class="py-comment"># TODO(dhermes): Remove 'userip' in 'v2'.</tt> </tt>
-<a name="L120"></a><tt class="py-lineno"> 120</tt>  <tt class="py-line"><tt id="link-63" class="py-name" targets="Variable googleapiclient.discovery.STACK_QUERY_PARAMETERS=googleapiclient.discovery-module.html#STACK_QUERY_PARAMETERS"><a title="googleapiclient.discovery.STACK_QUERY_PARAMETERS" class="py-name" href="#" onclick="return doclink('link-63', 'STACK_QUERY_PARAMETERS', 'link-63');">STACK_QUERY_PARAMETERS</a></tt> <tt class="py-op">=</tt> <tt class="py-name">frozenset</tt><tt class="py-op">(</tt><tt class="py-op">[</tt><tt class="py-string">'trace'</tt><tt class="py-op">,</tt> <tt class="py-string">'pp'</tt><tt class="py-op">,</tt> <tt class="py-string">'userip'</tt><tt class="py-op">,</tt> <tt class="py-string">'strict'</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
-<a name="L121"></a><tt class="py-lineno"> 121</tt>  <tt class="py-line"><tt id="link-64" class="py-name" targets="Variable googleapiclient.discovery.STACK_QUERY_PARAMETER_DEFAULT_VALUE=googleapiclient.discovery-module.html#STACK_QUERY_PARAMETER_DEFAULT_VALUE"><a title="googleapiclient.discovery.STACK_QUERY_PARAMETER_DEFAULT_VALUE" class="py-name" href="#" onclick="return doclink('link-64', 'STACK_QUERY_PARAMETER_DEFAULT_VALUE', 'link-64');">STACK_QUERY_PARAMETER_DEFAULT_VALUE</a></tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-string">'type'</tt><tt class="py-op">:</tt> <tt class="py-string">'string'</tt><tt class="py-op">,</tt> <tt class="py-string">'location'</tt><tt class="py-op">:</tt> <tt class="py-string">'query'</tt><tt class="py-op">}</tt> </tt>
-<a name="L122"></a><tt class="py-lineno"> 122</tt>  <tt class="py-line"> </tt>
-<a name="L123"></a><tt class="py-lineno"> 123</tt>  <tt class="py-line"><tt class="py-comment"># Library-specific reserved words beyond Python keywords.</tt> </tt>
-<a name="L124"></a><tt class="py-lineno"> 124</tt>  <tt class="py-line"><tt id="link-65" class="py-name" targets="Variable googleapiclient.discovery.RESERVED_WORDS=googleapiclient.discovery-module.html#RESERVED_WORDS"><a title="googleapiclient.discovery.RESERVED_WORDS" class="py-name" href="#" onclick="return doclink('link-65', 'RESERVED_WORDS', 'link-65');">RESERVED_WORDS</a></tt> <tt class="py-op">=</tt> <tt class="py-name">frozenset</tt><tt class="py-op">(</tt><tt class="py-op">[</tt><tt class="py-string">'body'</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
-<a name="_BytesGenerator"></a><div id="_BytesGenerator-def"><a name="L125"></a><tt class="py-lineno"> 125</tt>  <tt class="py-line"> </tt>
-<a name="L126"></a><tt class="py-lineno"> 126</tt>  <tt class="py-line"><tt class="py-comment"># patch _write_lines to avoid munging '\r' into '\n'</tt> </tt>
-<a name="L127"></a><tt class="py-lineno"> 127</tt>  <tt class="py-line"><tt class="py-comment"># ( https://bugs.python.org/issue18886 https://bugs.python.org/issue19003 )</tt> </tt>
-<a name="L128"></a><tt class="py-lineno"> 128</tt> <a class="py-toggle" href="#" id="_BytesGenerator-toggle" onclick="return toggle('_BytesGenerator');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="googleapiclient.discovery._BytesGenerator-class.html">_BytesGenerator</a><tt class="py-op">(</tt><tt class="py-base-class">BytesGenerator</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="_BytesGenerator-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="_BytesGenerator-expanded"><a name="L129"></a><tt class="py-lineno"> 129</tt>  <tt class="py-line">  <tt id="link-66" class="py-name" targets="Variable googleapiclient.discovery._BytesGenerator._write_lines=googleapiclient.discovery._BytesGenerator-class.html#_write_lines"><a title="googleapiclient.discovery._BytesGenerator._write_lines" class="py-name" href="#" onclick="return doclink('link-66', '_write_lines', 'link-66');">_write_lines</a></tt> <tt class="py-op">=</tt> <tt class="py-name">BytesGenerator</tt><tt class="py-op">.</tt><tt class="py-name">write</tt> </tt>
-</div><a name="L130"></a><tt class="py-lineno"> 130</tt>  <tt class="py-line"> </tt>
-<a name="fix_method_name"></a><div id="fix_method_name-def"><a name="L131"></a><tt class="py-lineno"> 131</tt> <a class="py-toggle" href="#" id="fix_method_name-toggle" onclick="return toggle('fix_method_name');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="googleapiclient.discovery-module.html#fix_method_name">fix_method_name</a><tt class="py-op">(</tt><tt class="py-param">name</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="fix_method_name-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="fix_method_name-expanded"><a name="L132"></a><tt class="py-lineno"> 132</tt>  <tt class="py-line">  <tt class="py-docstring">"""Fix method names to avoid reserved word conflicts.</tt> </tt>
-<a name="L133"></a><tt class="py-lineno"> 133</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L134"></a><tt class="py-lineno"> 134</tt>  <tt class="py-line"><tt class="py-docstring">  Args:</tt> </tt>
-<a name="L135"></a><tt class="py-lineno"> 135</tt>  <tt class="py-line"><tt class="py-docstring">    name: string, method name.</tt> </tt>
-<a name="L136"></a><tt class="py-lineno"> 136</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L137"></a><tt class="py-lineno"> 137</tt>  <tt class="py-line"><tt class="py-docstring">  Returns:</tt> </tt>
-<a name="L138"></a><tt class="py-lineno"> 138</tt>  <tt class="py-line"><tt class="py-docstring">    The name with a '_' prefixed if the name is a reserved word.</tt> </tt>
-<a name="L139"></a><tt class="py-lineno"> 139</tt>  <tt class="py-line"><tt class="py-docstring">  """</tt> </tt>
-<a name="L140"></a><tt class="py-lineno"> 140</tt>  <tt class="py-line">  <tt class="py-keyword">if</tt> <tt class="py-name">keyword</tt><tt class="py-op">.</tt><tt class="py-name">iskeyword</tt><tt class="py-op">(</tt><tt class="py-name">name</tt><tt class="py-op">)</tt> <tt class="py-keyword">or</tt> <tt class="py-name">name</tt> <tt class="py-keyword">in</tt> <tt id="link-67" class="py-name"><a title="googleapiclient.discovery.RESERVED_WORDS" class="py-name" href="#" onclick="return doclink('link-67', 'RESERVED_WORDS', 'link-65');">RESERVED_WORDS</a></tt><tt class="py-op">:</tt> </tt>
-<a name="L141"></a><tt class="py-lineno"> 141</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-name">name</tt> <tt class="py-op">+</tt> <tt class="py-string">'_'</tt> </tt>
-<a name="L142"></a><tt class="py-lineno"> 142</tt>  <tt class="py-line">  <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
-<a name="L143"></a><tt class="py-lineno"> 143</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-name">name</tt> </tt>
-</div><a name="L144"></a><tt class="py-lineno"> 144</tt>  <tt class="py-line"> </tt>
-<a name="key2param"></a><div id="key2param-def"><a name="L145"></a><tt class="py-lineno"> 145</tt>  <tt class="py-line"> </tt>
-<a name="L146"></a><tt class="py-lineno"> 146</tt> <a class="py-toggle" href="#" id="key2param-toggle" onclick="return toggle('key2param');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="googleapiclient.discovery-module.html#key2param">key2param</a><tt class="py-op">(</tt><tt class="py-param">key</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="key2param-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="key2param-expanded"><a name="L147"></a><tt class="py-lineno"> 147</tt>  <tt class="py-line">  <tt class="py-docstring">"""Converts key names into parameter names.</tt> </tt>
-<a name="L148"></a><tt class="py-lineno"> 148</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L149"></a><tt class="py-lineno"> 149</tt>  <tt class="py-line"><tt class="py-docstring">  For example, converting "max-results" -&gt; "max_results"</tt> </tt>
-<a name="L150"></a><tt class="py-lineno"> 150</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L151"></a><tt class="py-lineno"> 151</tt>  <tt class="py-line"><tt class="py-docstring">  Args:</tt> </tt>
-<a name="L152"></a><tt class="py-lineno"> 152</tt>  <tt class="py-line"><tt class="py-docstring">    key: string, the method key name.</tt> </tt>
-<a name="L153"></a><tt class="py-lineno"> 153</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L154"></a><tt class="py-lineno"> 154</tt>  <tt class="py-line"><tt class="py-docstring">  Returns:</tt> </tt>
-<a name="L155"></a><tt class="py-lineno"> 155</tt>  <tt class="py-line"><tt class="py-docstring">    A safe method name based on the key name.</tt> </tt>
-<a name="L156"></a><tt class="py-lineno"> 156</tt>  <tt class="py-line"><tt class="py-docstring">  """</tt> </tt>
-<a name="L157"></a><tt class="py-lineno"> 157</tt>  <tt class="py-line">  <tt class="py-name">result</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
-<a name="L158"></a><tt class="py-lineno"> 158</tt>  <tt class="py-line">  <tt class="py-name">key</tt> <tt class="py-op">=</tt> <tt class="py-name">list</tt><tt class="py-op">(</tt><tt class="py-name">key</tt><tt class="py-op">)</tt> </tt>
-<a name="L159"></a><tt class="py-lineno"> 159</tt>  <tt class="py-line">  <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">key</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt class="py-name">isalpha</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="L160"></a><tt class="py-lineno"> 160</tt>  <tt class="py-line">    <tt class="py-name">result</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-string">'x'</tt><tt class="py-op">)</tt> </tt>
-<a name="L161"></a><tt class="py-lineno"> 161</tt>  <tt class="py-line">  <tt class="py-keyword">for</tt> <tt class="py-name">c</tt> <tt class="py-keyword">in</tt> <tt class="py-name">key</tt><tt class="py-op">:</tt> </tt>
-<a name="L162"></a><tt class="py-lineno"> 162</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">c</tt><tt class="py-op">.</tt><tt class="py-name">isalnum</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="L163"></a><tt class="py-lineno"> 163</tt>  <tt class="py-line">      <tt class="py-name">result</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-name">c</tt><tt class="py-op">)</tt> </tt>
-<a name="L164"></a><tt class="py-lineno"> 164</tt>  <tt class="py-line">    <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
-<a name="L165"></a><tt class="py-lineno"> 165</tt>  <tt class="py-line">      <tt class="py-name">result</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-string">'_'</tt><tt class="py-op">)</tt> </tt>
-<a name="L166"></a><tt class="py-lineno"> 166</tt>  <tt class="py-line"> </tt>
-<a name="L167"></a><tt class="py-lineno"> 167</tt>  <tt class="py-line">  <tt class="py-keyword">return</tt> <tt class="py-string">''</tt><tt class="py-op">.</tt><tt class="py-name">join</tt><tt class="py-op">(</tt><tt class="py-name">result</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L168"></a><tt class="py-lineno"> 168</tt>  <tt class="py-line"> </tt>
-<a name="build"></a><div id="build-def"><a name="L169"></a><tt class="py-lineno"> 169</tt>  <tt class="py-line"> </tt>
-<a name="L170"></a><tt class="py-lineno"> 170</tt>  <tt class="py-line"><tt class="py-decorator">@</tt><tt class="py-decorator">positional</tt><tt class="py-op">(</tt><tt class="py-number">2</tt><tt class="py-op">)</tt> </tt>
-<a name="L171"></a><tt class="py-lineno"> 171</tt> <a class="py-toggle" href="#" id="build-toggle" onclick="return toggle('build');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="googleapiclient.discovery-module.html#build">build</a><tt class="py-op">(</tt><tt class="py-param">serviceName</tt><tt class="py-op">,</tt> </tt>
-<a name="L172"></a><tt class="py-lineno"> 172</tt>  <tt class="py-line">          <tt class="py-param">version</tt><tt class="py-op">,</tt> </tt>
-<a name="L173"></a><tt class="py-lineno"> 173</tt>  <tt class="py-line">          <tt class="py-param">http</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> </tt>
-<a name="L174"></a><tt class="py-lineno"> 174</tt>  <tt class="py-line">          <tt class="py-param">discoveryServiceUrl</tt><tt class="py-op">=</tt><tt id="link-68" class="py-name"><a title="googleapiclient.discovery.DISCOVERY_URI" class="py-name" href="#" onclick="return doclink('link-68', 'DISCOVERY_URI', 'link-53');">DISCOVERY_URI</a></tt><tt class="py-op">,</tt> </tt>
-<a name="L175"></a><tt class="py-lineno"> 175</tt>  <tt class="py-line">          <tt class="py-param">developerKey</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> </tt>
-<a name="L176"></a><tt class="py-lineno"> 176</tt>  <tt class="py-line">          <tt class="py-param">model</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> </tt>
-<a name="L177"></a><tt class="py-lineno"> 177</tt>  <tt class="py-line">          <tt class="py-param">requestBuilder</tt><tt class="py-op">=</tt><tt id="link-69" class="py-name"><a title="googleapiclient.http.HttpRequest" class="py-name" href="#" onclick="return doclink('link-69', 'HttpRequest', 'link-31');">HttpRequest</a></tt><tt class="py-op">,</tt> </tt>
-<a name="L178"></a><tt class="py-lineno"> 178</tt>  <tt class="py-line">          <tt class="py-param">credentials</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> </tt>
-<a name="L179"></a><tt class="py-lineno"> 179</tt>  <tt class="py-line">          <tt class="py-param">cache_discovery</tt><tt class="py-op">=</tt><tt class="py-name">True</tt><tt class="py-op">,</tt> </tt>
-<a name="L180"></a><tt class="py-lineno"> 180</tt>  <tt class="py-line">          <tt class="py-param">cache</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="build-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="build-expanded"><a name="L181"></a><tt class="py-lineno"> 181</tt>  <tt class="py-line">  <tt class="py-docstring">"""Construct a Resource for interacting with an API.</tt> </tt>
-<a name="L182"></a><tt class="py-lineno"> 182</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L183"></a><tt class="py-lineno"> 183</tt>  <tt class="py-line"><tt class="py-docstring">  Construct a Resource object for interacting with an API. The serviceName and</tt> </tt>
-<a name="L184"></a><tt class="py-lineno"> 184</tt>  <tt class="py-line"><tt class="py-docstring">  version are the names from the Discovery service.</tt> </tt>
-<a name="L185"></a><tt class="py-lineno"> 185</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L186"></a><tt class="py-lineno"> 186</tt>  <tt class="py-line"><tt class="py-docstring">  Args:</tt> </tt>
-<a name="L187"></a><tt class="py-lineno"> 187</tt>  <tt class="py-line"><tt class="py-docstring">    serviceName: string, name of the service.</tt> </tt>
-<a name="L188"></a><tt class="py-lineno"> 188</tt>  <tt class="py-line"><tt class="py-docstring">    version: string, the version of the service.</tt> </tt>
-<a name="L189"></a><tt class="py-lineno"> 189</tt>  <tt class="py-line"><tt class="py-docstring">    http: httplib2.Http, An instance of httplib2.Http or something that acts</tt> </tt>
-<a name="L190"></a><tt class="py-lineno"> 190</tt>  <tt class="py-line"><tt class="py-docstring">      like it that HTTP requests will be made through.</tt> </tt>
-<a name="L191"></a><tt class="py-lineno"> 191</tt>  <tt class="py-line"><tt class="py-docstring">    discoveryServiceUrl: string, a URI Template that points to the location of</tt> </tt>
-<a name="L192"></a><tt class="py-lineno"> 192</tt>  <tt class="py-line"><tt class="py-docstring">      the discovery service. It should have two parameters {api} and</tt> </tt>
-<a name="L193"></a><tt class="py-lineno"> 193</tt>  <tt class="py-line"><tt class="py-docstring">      {apiVersion} that when filled in produce an absolute URI to the discovery</tt> </tt>
-<a name="L194"></a><tt class="py-lineno"> 194</tt>  <tt class="py-line"><tt class="py-docstring">      document for that service.</tt> </tt>
-<a name="L195"></a><tt class="py-lineno"> 195</tt>  <tt class="py-line"><tt class="py-docstring">    developerKey: string, key obtained from</tt> </tt>
-<a name="L196"></a><tt class="py-lineno"> 196</tt>  <tt class="py-line"><tt class="py-docstring">      https://code.google.com/apis/console.</tt> </tt>
-<a name="L197"></a><tt class="py-lineno"> 197</tt>  <tt class="py-line"><tt class="py-docstring">    model: googleapiclient.Model, converts to and from the wire format.</tt> </tt>
-<a name="L198"></a><tt class="py-lineno"> 198</tt>  <tt class="py-line"><tt class="py-docstring">    requestBuilder: googleapiclient.http.HttpRequest, encapsulator for an HTTP</tt> </tt>
-<a name="L199"></a><tt class="py-lineno"> 199</tt>  <tt class="py-line"><tt class="py-docstring">      request.</tt> </tt>
-<a name="L200"></a><tt class="py-lineno"> 200</tt>  <tt class="py-line"><tt class="py-docstring">    credentials: oauth2client.Credentials, credentials to be used for</tt> </tt>
-<a name="L201"></a><tt class="py-lineno"> 201</tt>  <tt class="py-line"><tt class="py-docstring">      authentication.</tt> </tt>
-<a name="L202"></a><tt class="py-lineno"> 202</tt>  <tt class="py-line"><tt class="py-docstring">    cache_discovery: Boolean, whether or not to cache the discovery doc.</tt> </tt>
-<a name="L203"></a><tt class="py-lineno"> 203</tt>  <tt class="py-line"><tt class="py-docstring">    cache: googleapiclient.discovery_cache.base.CacheBase, an optional</tt> </tt>
-<a name="L204"></a><tt class="py-lineno"> 204</tt>  <tt class="py-line"><tt class="py-docstring">      cache object for the discovery documents.</tt> </tt>
-<a name="L205"></a><tt class="py-lineno"> 205</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L206"></a><tt class="py-lineno"> 206</tt>  <tt class="py-line"><tt class="py-docstring">  Returns:</tt> </tt>
-<a name="L207"></a><tt class="py-lineno"> 207</tt>  <tt class="py-line"><tt class="py-docstring">    A Resource object with methods for interacting with the service.</tt> </tt>
-<a name="L208"></a><tt class="py-lineno"> 208</tt>  <tt class="py-line"><tt class="py-docstring">  """</tt> </tt>
-<a name="L209"></a><tt class="py-lineno"> 209</tt>  <tt class="py-line">  <tt class="py-name">params</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt> </tt>
-<a name="L210"></a><tt class="py-lineno"> 210</tt>  <tt class="py-line">      <tt class="py-string">'api'</tt><tt class="py-op">:</tt> <tt class="py-name">serviceName</tt><tt class="py-op">,</tt> </tt>
-<a name="L211"></a><tt class="py-lineno"> 211</tt>  <tt class="py-line">      <tt class="py-string">'apiVersion'</tt><tt class="py-op">:</tt> <tt class="py-name">version</tt> </tt>
-<a name="L212"></a><tt class="py-lineno"> 212</tt>  <tt class="py-line">      <tt class="py-op">}</tt> </tt>
-<a name="L213"></a><tt class="py-lineno"> 213</tt>  <tt class="py-line"> </tt>
-<a name="L214"></a><tt class="py-lineno"> 214</tt>  <tt class="py-line">  <tt class="py-keyword">if</tt> <tt id="link-70" class="py-name"><a title="googleapiclient.http" class="py-name" href="#" onclick="return doclink('link-70', 'http', 'link-21');">http</a></tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
-<a name="L215"></a><tt class="py-lineno"> 215</tt>  <tt class="py-line">    <tt id="link-71" class="py-name"><a title="googleapiclient.http" class="py-name" href="#" onclick="return doclink('link-71', 'http', 'link-21');">http</a></tt> <tt class="py-op">=</tt> <tt class="py-name">httplib2</tt><tt class="py-op">.</tt><tt class="py-name">Http</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-<a name="L216"></a><tt class="py-lineno"> 216</tt>  <tt class="py-line"> </tt>
-<a name="L217"></a><tt class="py-lineno"> 217</tt>  <tt class="py-line">  <tt class="py-keyword">for</tt> <tt class="py-name">discovery_url</tt> <tt class="py-keyword">in</tt> <tt class="py-op">(</tt><tt class="py-name">discoveryServiceUrl</tt><tt class="py-op">,</tt> <tt id="link-72" class="py-name"><a title="googleapiclient.discovery.V2_DISCOVERY_URI" class="py-name" href="#" onclick="return doclink('link-72', 'V2_DISCOVERY_URI', 'link-56');">V2_DISCOVERY_URI</a></tt><tt class="py-op">,</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="L218"></a><tt class="py-lineno"> 218</tt>  <tt class="py-line">    <tt class="py-name">requested_url</tt> <tt class="py-op">=</tt> <tt class="py-name">uritemplate</tt><tt class="py-op">.</tt><tt class="py-name">expand</tt><tt class="py-op">(</tt><tt class="py-name">discovery_url</tt><tt class="py-op">,</tt> <tt class="py-name">params</tt><tt class="py-op">)</tt> </tt>
-<a name="L219"></a><tt class="py-lineno"> 219</tt>  <tt class="py-line"> </tt>
-<a name="L220"></a><tt class="py-lineno"> 220</tt>  <tt class="py-line">    <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
-<a name="L221"></a><tt class="py-lineno"> 221</tt>  <tt class="py-line">      <tt class="py-name">content</tt> <tt class="py-op">=</tt> <tt id="link-73" class="py-name" targets="Function googleapiclient.discovery._retrieve_discovery_doc()=googleapiclient.discovery-module.html#_retrieve_discovery_doc"><a title="googleapiclient.discovery._retrieve_discovery_doc" class="py-name" href="#" onclick="return doclink('link-73', '_retrieve_discovery_doc', 'link-73');">_retrieve_discovery_doc</a></tt><tt class="py-op">(</tt><tt class="py-name">requested_url</tt><tt class="py-op">,</tt> <tt id="link-74" class="py-name"><a title="googleapiclient.http" class="py-name" href="#" onclick="return doclink('link-74', 'http', 'link-21');">http</a></tt><tt class="py-op">,</tt> <tt class="py-name">cache_discovery</tt><tt class="py-op">,</tt> </tt>
-<a name="L222"></a><tt class="py-lineno"> 222</tt>  <tt class="py-line">                                        <tt id="link-75" class="py-name" targets="Variable googleapiclient.discovery_cache.appengine_memcache.cache=googleapiclient.discovery_cache.appengine_memcache-module.html#cache,Variable googleapiclient.discovery_cache.file_cache.cache=googleapiclient.discovery_cache.file_cache-module.html#cache"><a title="googleapiclient.discovery_cache.appengine_memcache.cache
-googleapiclient.discovery_cache.file_cache.cache" class="py-name" href="#" onclick="return doclink('link-75', 'cache', 'link-75');">cache</a></tt><tt class="py-op">)</tt> </tt>
-<a name="L223"></a><tt class="py-lineno"> 223</tt>  <tt class="py-line">      <tt class="py-keyword">return</tt> <tt id="link-76" class="py-name" targets="Function googleapiclient.discovery.build_from_document()=googleapiclient.discovery-module.html#build_from_document"><a title="googleapiclient.discovery.build_from_document" class="py-name" href="#" onclick="return doclink('link-76', 'build_from_document', 'link-76');">build_from_document</a></tt><tt class="py-op">(</tt><tt class="py-name">content</tt><tt class="py-op">,</tt> <tt id="link-77" class="py-name" targets="Module googleapiclient.discovery_cache.base=googleapiclient.discovery_cache.base-module.html"><a title="googleapiclient.discovery_cache.base" class="py-name" href="#" onclick="return doclink('link-77', 'base', 'link-77');">base</a></tt><tt class="py-op">=</tt><tt class="py-name">discovery_url</tt><tt class="py-op">,</tt> <tt id="link-78" class="py-name"><a title="googleapiclient.http" class="py-name" href="#" onclick="return doclink('link-78', 'http', 'link-21');">http</a></tt><tt class="py-op">=</tt><tt id="link-79" class="py-name"><a title="googleapiclient.http" class="py-name" href="#" onclick="return doclink('link-79', 'http', 'link-21');">http</a></tt><tt class="py-op">,</tt> </tt>
-<a name="L224"></a><tt class="py-lineno"> 224</tt>  <tt class="py-line">          <tt class="py-name">developerKey</tt><tt class="py-op">=</tt><tt class="py-name">developerKey</tt><tt class="py-op">,</tt> <tt id="link-80" class="py-name"><a title="googleapiclient.model" class="py-name" href="#" onclick="return doclink('link-80', 'model', 'link-39');">model</a></tt><tt class="py-op">=</tt><tt id="link-81" class="py-name"><a title="googleapiclient.model" class="py-name" href="#" onclick="return doclink('link-81', 'model', 'link-39');">model</a></tt><tt class="py-op">,</tt> <tt class="py-name">requestBuilder</tt><tt class="py-op">=</tt><tt class="py-name">requestBuilder</tt><tt class="py-op">,</tt> </tt>
-<a name="L225"></a><tt class="py-lineno"> 225</tt>  <tt class="py-line">          <tt class="py-name">credentials</tt><tt class="py-op">=</tt><tt class="py-name">credentials</tt><tt class="py-op">)</tt> </tt>
-<a name="L226"></a><tt class="py-lineno"> 226</tt>  <tt class="py-line">    <tt class="py-keyword">except</tt> <tt id="link-82" class="py-name"><a title="googleapiclient.errors.HttpError" class="py-name" href="#" onclick="return doclink('link-82', 'HttpError', 'link-4');">HttpError</a></tt> <tt class="py-keyword">as</tt> <tt class="py-name">e</tt><tt class="py-op">:</tt> </tt>
-<a name="L227"></a><tt class="py-lineno"> 227</tt>  <tt class="py-line">      <tt class="py-keyword">if</tt> <tt class="py-name">e</tt><tt class="py-op">.</tt><tt class="py-name">resp</tt><tt class="py-op">.</tt><tt class="py-name">status</tt> <tt class="py-op">==</tt> <tt class="py-name">http_client</tt><tt class="py-op">.</tt><tt class="py-name">NOT_FOUND</tt><tt class="py-op">:</tt> </tt>
-<a name="L228"></a><tt class="py-lineno"> 228</tt>  <tt class="py-line">        <tt class="py-keyword">continue</tt> </tt>
-<a name="L229"></a><tt class="py-lineno"> 229</tt>  <tt class="py-line">      <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
-<a name="L230"></a><tt class="py-lineno"> 230</tt>  <tt class="py-line">        <tt class="py-keyword">raise</tt> <tt class="py-name">e</tt> </tt>
-<a name="L231"></a><tt class="py-lineno"> 231</tt>  <tt class="py-line"> </tt>
-<a name="L232"></a><tt class="py-lineno"> 232</tt>  <tt class="py-line">  <tt class="py-keyword">raise</tt> <tt id="link-83" class="py-name"><a title="googleapiclient.errors.UnknownApiNameOrVersion" class="py-name" href="#" onclick="return doclink('link-83', 'UnknownApiNameOrVersion', 'link-16');">UnknownApiNameOrVersion</a></tt><tt class="py-op">(</tt> </tt>
-<a name="L233"></a><tt class="py-lineno"> 233</tt>  <tt class="py-line">        <tt class="py-string">"name: %s  version: %s"</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">serviceName</tt><tt class="py-op">,</tt> <tt class="py-name">version</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L234"></a><tt class="py-lineno"> 234</tt>  <tt class="py-line"> </tt>
-<a name="_retrieve_discovery_doc"></a><div id="_retrieve_discovery_doc-def"><a name="L235"></a><tt class="py-lineno"> 235</tt>  <tt class="py-line"> </tt>
-<a name="L236"></a><tt class="py-lineno"> 236</tt> <a class="py-toggle" href="#" id="_retrieve_discovery_doc-toggle" onclick="return toggle('_retrieve_discovery_doc');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="googleapiclient.discovery-module.html#_retrieve_discovery_doc">_retrieve_discovery_doc</a><tt class="py-op">(</tt><tt class="py-param">url</tt><tt class="py-op">,</tt> <tt class="py-param">http</tt><tt class="py-op">,</tt> <tt class="py-param">cache_discovery</tt><tt class="py-op">,</tt> <tt class="py-param">cache</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="_retrieve_discovery_doc-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="_retrieve_discovery_doc-expanded"><a name="L237"></a><tt class="py-lineno"> 237</tt>  <tt class="py-line">  <tt class="py-docstring">"""Retrieves the discovery_doc from cache or the internet.</tt> </tt>
-<a name="L238"></a><tt class="py-lineno"> 238</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L239"></a><tt class="py-lineno"> 239</tt>  <tt class="py-line"><tt class="py-docstring">  Args:</tt> </tt>
-<a name="L240"></a><tt class="py-lineno"> 240</tt>  <tt class="py-line"><tt class="py-docstring">    url: string, the URL of the discovery document.</tt> </tt>
-<a name="L241"></a><tt class="py-lineno"> 241</tt>  <tt class="py-line"><tt class="py-docstring">    http: httplib2.Http, An instance of httplib2.Http or something that acts</tt> </tt>
-<a name="L242"></a><tt class="py-lineno"> 242</tt>  <tt class="py-line"><tt class="py-docstring">      like it through which HTTP requests will be made.</tt> </tt>
-<a name="L243"></a><tt class="py-lineno"> 243</tt>  <tt class="py-line"><tt class="py-docstring">    cache_discovery: Boolean, whether or not to cache the discovery doc.</tt> </tt>
-<a name="L244"></a><tt class="py-lineno"> 244</tt>  <tt class="py-line"><tt class="py-docstring">    cache: googleapiclient.discovery_cache.base.Cache, an optional cache</tt> </tt>
-<a name="L245"></a><tt class="py-lineno"> 245</tt>  <tt class="py-line"><tt class="py-docstring">      object for the discovery documents.</tt> </tt>
-<a name="L246"></a><tt class="py-lineno"> 246</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L247"></a><tt class="py-lineno"> 247</tt>  <tt class="py-line"><tt class="py-docstring">  Returns:</tt> </tt>
-<a name="L248"></a><tt class="py-lineno"> 248</tt>  <tt class="py-line"><tt class="py-docstring">    A unicode string representation of the discovery document.</tt> </tt>
-<a name="L249"></a><tt class="py-lineno"> 249</tt>  <tt class="py-line"><tt class="py-docstring">  """</tt> </tt>
-<a name="L250"></a><tt class="py-lineno"> 250</tt>  <tt class="py-line">  <tt class="py-keyword">if</tt> <tt class="py-name">cache_discovery</tt><tt class="py-op">:</tt> </tt>
-<a name="L251"></a><tt class="py-lineno"> 251</tt>  <tt class="py-line">    <tt class="py-keyword">from</tt> <tt class="py-op">.</tt> <tt class="py-keyword">import</tt> <tt id="link-84" class="py-name" targets="Package googleapiclient.discovery_cache=googleapiclient.discovery_cache-module.html"><a title="googleapiclient.discovery_cache" class="py-name" href="#" onclick="return doclink('link-84', 'discovery_cache', 'link-84');">discovery_cache</a></tt> </tt>
-<a name="L252"></a><tt class="py-lineno"> 252</tt>  <tt class="py-line">    <tt class="py-keyword">from</tt> <tt class="py-op">.</tt><tt id="link-85" class="py-name"><a title="googleapiclient.discovery_cache" class="py-name" href="#" onclick="return doclink('link-85', 'discovery_cache', 'link-84');">discovery_cache</a></tt> <tt class="py-keyword">import</tt> <tt id="link-86" class="py-name"><a title="googleapiclient.discovery_cache.base" class="py-name" href="#" onclick="return doclink('link-86', 'base', 'link-77');">base</a></tt> </tt>
-<a name="L253"></a><tt class="py-lineno"> 253</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt id="link-87" class="py-name"><a title="googleapiclient.discovery_cache.appengine_memcache.cache
-googleapiclient.discovery_cache.file_cache.cache" class="py-name" href="#" onclick="return doclink('link-87', 'cache', 'link-75');">cache</a></tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
-<a name="L254"></a><tt class="py-lineno"> 254</tt>  <tt class="py-line">      <tt id="link-88" class="py-name"><a title="googleapiclient.discovery_cache.appengine_memcache.cache
-googleapiclient.discovery_cache.file_cache.cache" class="py-name" href="#" onclick="return doclink('link-88', 'cache', 'link-75');">cache</a></tt> <tt class="py-op">=</tt> <tt id="link-89" class="py-name"><a title="googleapiclient.discovery_cache" class="py-name" href="#" onclick="return doclink('link-89', 'discovery_cache', 'link-84');">discovery_cache</a></tt><tt class="py-op">.</tt><tt id="link-90" class="py-name" targets="Function googleapiclient.discovery_cache.autodetect()=googleapiclient.discovery_cache-module.html#autodetect"><a title="googleapiclient.discovery_cache.autodetect" class="py-name" href="#" onclick="return doclink('link-90', 'autodetect', 'link-90');">autodetect</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-<a name="L255"></a><tt class="py-lineno"> 255</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt id="link-91" class="py-name"><a title="googleapiclient.discovery_cache.appengine_memcache.cache
-googleapiclient.discovery_cache.file_cache.cache" class="py-name" href="#" onclick="return doclink('link-91', 'cache', 'link-75');">cache</a></tt><tt class="py-op">:</tt> </tt>
-<a name="L256"></a><tt class="py-lineno"> 256</tt>  <tt class="py-line">      <tt class="py-name">content</tt> <tt class="py-op">=</tt> <tt id="link-92" class="py-name"><a title="googleapiclient.discovery_cache.appengine_memcache.cache
-googleapiclient.discovery_cache.file_cache.cache" class="py-name" href="#" onclick="return doclink('link-92', 'cache', 'link-75');">cache</a></tt><tt class="py-op">.</tt><tt id="link-93" class="py-name" targets="Method googleapiclient.discovery_cache.appengine_memcache.Cache.get()=googleapiclient.discovery_cache.appengine_memcache.Cache-class.html#get,Method googleapiclient.discovery_cache.base.Cache.get()=googleapiclient.discovery_cache.base.Cache-class.html#get,Method googleapiclient.discovery_cache.file_cache.Cache.get()=googleapiclient.discovery_cache.file_cache.Cache-class.html#get,Method googleapiclient.schema.Schemas.get()=googleapiclient.schema.Schemas-class.html#get"><a title="googleapiclient.discovery_cache.appengine_memcache.Cache.get
+<a name="L85"></a><tt class="py-lineno">  85</tt>  <tt class="py-line"> </tt>
+<a name="L86"></a><tt class="py-lineno">  86</tt>  <tt class="py-line"><tt class="py-comment"># The client library requires a version of httplib2 that supports RETRIES.</tt> </tt>
+<a name="L87"></a><tt class="py-lineno">  87</tt>  <tt class="py-line"><tt class="py-name">httplib2</tt><tt class="py-op">.</tt><tt class="py-name">RETRIES</tt> <tt class="py-op">=</tt> <tt class="py-number">1</tt> </tt>
+<a name="L88"></a><tt class="py-lineno">  88</tt>  <tt class="py-line"> </tt>
+<a name="L89"></a><tt class="py-lineno">  89</tt>  <tt class="py-line"><tt id="link-52" class="py-name" targets="Variable googleapiclient.discovery.logger=googleapiclient.discovery-module.html#logger"><a title="googleapiclient.discovery.logger" class="py-name" href="#" onclick="return doclink('link-52', 'logger', 'link-52');">logger</a></tt> <tt class="py-op">=</tt> <tt class="py-name">logging</tt><tt class="py-op">.</tt><tt class="py-name">getLogger</tt><tt class="py-op">(</tt><tt class="py-name">__name__</tt><tt class="py-op">)</tt> </tt>
+<a name="L90"></a><tt class="py-lineno">  90</tt>  <tt class="py-line"> </tt>
+<a name="L91"></a><tt class="py-lineno">  91</tt>  <tt class="py-line"><tt id="link-53" class="py-name" targets="Variable googleapiclient.discovery.URITEMPLATE=googleapiclient.discovery-module.html#URITEMPLATE"><a title="googleapiclient.discovery.URITEMPLATE" class="py-name" href="#" onclick="return doclink('link-53', 'URITEMPLATE', 'link-53');">URITEMPLATE</a></tt> <tt class="py-op">=</tt> <tt class="py-name">re</tt><tt class="py-op">.</tt><tt class="py-name">compile</tt><tt class="py-op">(</tt><tt class="py-string">'{[^}]*}'</tt><tt class="py-op">)</tt> </tt>
+<a name="L92"></a><tt class="py-lineno">  92</tt>  <tt class="py-line"><tt id="link-54" class="py-name" targets="Variable googleapiclient.discovery.VARNAME=googleapiclient.discovery-module.html#VARNAME"><a title="googleapiclient.discovery.VARNAME" class="py-name" href="#" onclick="return doclink('link-54', 'VARNAME', 'link-54');">VARNAME</a></tt> <tt class="py-op">=</tt> <tt class="py-name">re</tt><tt class="py-op">.</tt><tt class="py-name">compile</tt><tt class="py-op">(</tt><tt class="py-string">'[a-zA-Z0-9_-]+'</tt><tt class="py-op">)</tt> </tt>
+<a name="L93"></a><tt class="py-lineno">  93</tt>  <tt class="py-line"><tt id="link-55" class="py-name" targets="Variable googleapiclient.discovery.DISCOVERY_URI=googleapiclient.discovery-module.html#DISCOVERY_URI"><a title="googleapiclient.discovery.DISCOVERY_URI" class="py-name" href="#" onclick="return doclink('link-55', 'DISCOVERY_URI', 'link-55');">DISCOVERY_URI</a></tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-string">'https://www.googleapis.com/discovery/v1/apis/'</tt> </tt>
+<a name="L94"></a><tt class="py-lineno">  94</tt>  <tt class="py-line">                 <tt class="py-string">'{api}/{apiVersion}/rest'</tt><tt class="py-op">)</tt> </tt>
+<a name="L95"></a><tt class="py-lineno">  95</tt>  <tt class="py-line"><tt id="link-56" class="py-name" targets="Variable googleapiclient.discovery.V1_DISCOVERY_URI=googleapiclient.discovery-module.html#V1_DISCOVERY_URI"><a title="googleapiclient.discovery.V1_DISCOVERY_URI" class="py-name" href="#" onclick="return doclink('link-56', 'V1_DISCOVERY_URI', 'link-56');">V1_DISCOVERY_URI</a></tt> <tt class="py-op">=</tt> <tt id="link-57" class="py-name"><a title="googleapiclient.discovery.DISCOVERY_URI" class="py-name" href="#" onclick="return doclink('link-57', 'DISCOVERY_URI', 'link-55');">DISCOVERY_URI</a></tt> </tt>
+<a name="L96"></a><tt class="py-lineno">  96</tt>  <tt class="py-line"><tt id="link-58" class="py-name" targets="Variable googleapiclient.discovery.V2_DISCOVERY_URI=googleapiclient.discovery-module.html#V2_DISCOVERY_URI"><a title="googleapiclient.discovery.V2_DISCOVERY_URI" class="py-name" href="#" onclick="return doclink('link-58', 'V2_DISCOVERY_URI', 'link-58');">V2_DISCOVERY_URI</a></tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-string">'https://{api}.googleapis.com/$discovery/rest?'</tt> </tt>
+<a name="L97"></a><tt class="py-lineno">  97</tt>  <tt class="py-line">                    <tt class="py-string">'version={apiVersion}'</tt><tt class="py-op">)</tt> </tt>
+<a name="L98"></a><tt class="py-lineno">  98</tt>  <tt class="py-line"><tt id="link-59" class="py-name" targets="Variable googleapiclient.discovery.DEFAULT_METHOD_DOC=googleapiclient.discovery-module.html#DEFAULT_METHOD_DOC"><a title="googleapiclient.discovery.DEFAULT_METHOD_DOC" class="py-name" href="#" onclick="return doclink('link-59', 'DEFAULT_METHOD_DOC', 'link-59');">DEFAULT_METHOD_DOC</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'A description of how to use this function'</tt> </tt>
+<a name="L99"></a><tt class="py-lineno">  99</tt>  <tt class="py-line"><tt id="link-60" class="py-name" targets="Variable googleapiclient.discovery.HTTP_PAYLOAD_METHODS=googleapiclient.discovery-module.html#HTTP_PAYLOAD_METHODS"><a title="googleapiclient.discovery.HTTP_PAYLOAD_METHODS" class="py-name" href="#" onclick="return doclink('link-60', 'HTTP_PAYLOAD_METHODS', 'link-60');">HTTP_PAYLOAD_METHODS</a></tt> <tt class="py-op">=</tt> <tt class="py-name">frozenset</tt><tt class="py-op">(</tt><tt class="py-op">[</tt><tt class="py-string">'PUT'</tt><tt class="py-op">,</tt> <tt class="py-string">'POST'</tt><tt class="py-op">,</tt> <tt class="py-string">'PATCH'</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L100"></a><tt class="py-lineno"> 100</tt>  <tt class="py-line"><tt id="link-61" class="py-name" targets="Variable googleapiclient.discovery._MEDIA_SIZE_BIT_SHIFTS=googleapiclient.discovery-module.html#_MEDIA_SIZE_BIT_SHIFTS"><a title="googleapiclient.discovery._MEDIA_SIZE_BIT_SHIFTS" class="py-name" href="#" onclick="return doclink('link-61', '_MEDIA_SIZE_BIT_SHIFTS', 'link-61');">_MEDIA_SIZE_BIT_SHIFTS</a></tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-string">'KB'</tt><tt class="py-op">:</tt> <tt class="py-number">10</tt><tt class="py-op">,</tt> <tt class="py-string">'MB'</tt><tt class="py-op">:</tt> <tt class="py-number">20</tt><tt class="py-op">,</tt> <tt class="py-string">'GB'</tt><tt class="py-op">:</tt> <tt class="py-number">30</tt><tt class="py-op">,</tt> <tt class="py-string">'TB'</tt><tt class="py-op">:</tt> <tt class="py-number">40</tt><tt class="py-op">}</tt> </tt>
+<a name="L101"></a><tt class="py-lineno"> 101</tt>  <tt class="py-line"><tt id="link-62" class="py-name" targets="Variable googleapiclient.discovery.BODY_PARAMETER_DEFAULT_VALUE=googleapiclient.discovery-module.html#BODY_PARAMETER_DEFAULT_VALUE"><a title="googleapiclient.discovery.BODY_PARAMETER_DEFAULT_VALUE" class="py-name" href="#" onclick="return doclink('link-62', 'BODY_PARAMETER_DEFAULT_VALUE', 'link-62');">BODY_PARAMETER_DEFAULT_VALUE</a></tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt> </tt>
+<a name="L102"></a><tt class="py-lineno"> 102</tt>  <tt class="py-line">    <tt class="py-string">'description'</tt><tt class="py-op">:</tt> <tt class="py-string">'The request body.'</tt><tt class="py-op">,</tt> </tt>
+<a name="L103"></a><tt class="py-lineno"> 103</tt>  <tt class="py-line">    <tt class="py-string">'type'</tt><tt class="py-op">:</tt> <tt class="py-string">'object'</tt><tt class="py-op">,</tt> </tt>
+<a name="L104"></a><tt class="py-lineno"> 104</tt>  <tt class="py-line">    <tt class="py-string">'required'</tt><tt class="py-op">:</tt> <tt class="py-name">True</tt><tt class="py-op">,</tt> </tt>
+<a name="L105"></a><tt class="py-lineno"> 105</tt>  <tt class="py-line"><tt class="py-op">}</tt> </tt>
+<a name="L106"></a><tt class="py-lineno"> 106</tt>  <tt class="py-line"><tt id="link-63" class="py-name" targets="Variable googleapiclient.discovery.MEDIA_BODY_PARAMETER_DEFAULT_VALUE=googleapiclient.discovery-module.html#MEDIA_BODY_PARAMETER_DEFAULT_VALUE"><a title="googleapiclient.discovery.MEDIA_BODY_PARAMETER_DEFAULT_VALUE" class="py-name" href="#" onclick="return doclink('link-63', 'MEDIA_BODY_PARAMETER_DEFAULT_VALUE', 'link-63');">MEDIA_BODY_PARAMETER_DEFAULT_VALUE</a></tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt> </tt>
+<a name="L107"></a><tt class="py-lineno"> 107</tt>  <tt class="py-line">    <tt class="py-string">'description'</tt><tt class="py-op">:</tt> <tt class="py-op">(</tt><tt class="py-string">'The filename of the media request body, or an instance '</tt> </tt>
+<a name="L108"></a><tt class="py-lineno"> 108</tt>  <tt class="py-line">                    <tt class="py-string">'of a MediaUpload object.'</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L109"></a><tt class="py-lineno"> 109</tt>  <tt class="py-line">    <tt class="py-string">'type'</tt><tt class="py-op">:</tt> <tt class="py-string">'string'</tt><tt class="py-op">,</tt> </tt>
+<a name="L110"></a><tt class="py-lineno"> 110</tt>  <tt class="py-line">    <tt class="py-string">'required'</tt><tt class="py-op">:</tt> <tt class="py-name">False</tt><tt class="py-op">,</tt> </tt>
+<a name="L111"></a><tt class="py-lineno"> 111</tt>  <tt class="py-line"><tt class="py-op">}</tt> </tt>
+<a name="L112"></a><tt class="py-lineno"> 112</tt>  <tt class="py-line"><tt id="link-64" class="py-name" targets="Variable googleapiclient.discovery.MEDIA_MIME_TYPE_PARAMETER_DEFAULT_VALUE=googleapiclient.discovery-module.html#MEDIA_MIME_TYPE_PARAMETER_DEFAULT_VALUE"><a title="googleapiclient.discovery.MEDIA_MIME_TYPE_PARAMETER_DEFAULT_VALUE" class="py-name" href="#" onclick="return doclink('link-64', 'MEDIA_MIME_TYPE_PARAMETER_DEFAULT_VALUE', 'link-64');">MEDIA_MIME_TYPE_PARAMETER_DEFAULT_VALUE</a></tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt> </tt>
+<a name="L113"></a><tt class="py-lineno"> 113</tt>  <tt class="py-line">    <tt class="py-string">'description'</tt><tt class="py-op">:</tt> <tt class="py-op">(</tt><tt class="py-string">'The MIME type of the media request body, or an instance '</tt> </tt>
+<a name="L114"></a><tt class="py-lineno"> 114</tt>  <tt class="py-line">                    <tt class="py-string">'of a MediaUpload object.'</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L115"></a><tt class="py-lineno"> 115</tt>  <tt class="py-line">    <tt class="py-string">'type'</tt><tt class="py-op">:</tt> <tt class="py-string">'string'</tt><tt class="py-op">,</tt> </tt>
+<a name="L116"></a><tt class="py-lineno"> 116</tt>  <tt class="py-line">    <tt class="py-string">'required'</tt><tt class="py-op">:</tt> <tt class="py-name">False</tt><tt class="py-op">,</tt> </tt>
+<a name="L117"></a><tt class="py-lineno"> 117</tt>  <tt class="py-line"><tt class="py-op">}</tt> </tt>
+<a name="L118"></a><tt class="py-lineno"> 118</tt>  <tt class="py-line"> </tt>
+<a name="L119"></a><tt class="py-lineno"> 119</tt>  <tt class="py-line"><tt class="py-comment"># Parameters accepted by the stack, but not visible via discovery.</tt> </tt>
+<a name="L120"></a><tt class="py-lineno"> 120</tt>  <tt class="py-line"><tt class="py-comment"># TODO(dhermes): Remove 'userip' in 'v2'.</tt> </tt>
+<a name="L121"></a><tt class="py-lineno"> 121</tt>  <tt class="py-line"><tt id="link-65" class="py-name" targets="Variable googleapiclient.discovery.STACK_QUERY_PARAMETERS=googleapiclient.discovery-module.html#STACK_QUERY_PARAMETERS"><a title="googleapiclient.discovery.STACK_QUERY_PARAMETERS" class="py-name" href="#" onclick="return doclink('link-65', 'STACK_QUERY_PARAMETERS', 'link-65');">STACK_QUERY_PARAMETERS</a></tt> <tt class="py-op">=</tt> <tt class="py-name">frozenset</tt><tt class="py-op">(</tt><tt class="py-op">[</tt><tt class="py-string">'trace'</tt><tt class="py-op">,</tt> <tt class="py-string">'pp'</tt><tt class="py-op">,</tt> <tt class="py-string">'userip'</tt><tt class="py-op">,</tt> <tt class="py-string">'strict'</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L122"></a><tt class="py-lineno"> 122</tt>  <tt class="py-line"><tt id="link-66" class="py-name" targets="Variable googleapiclient.discovery.STACK_QUERY_PARAMETER_DEFAULT_VALUE=googleapiclient.discovery-module.html#STACK_QUERY_PARAMETER_DEFAULT_VALUE"><a title="googleapiclient.discovery.STACK_QUERY_PARAMETER_DEFAULT_VALUE" class="py-name" href="#" onclick="return doclink('link-66', 'STACK_QUERY_PARAMETER_DEFAULT_VALUE', 'link-66');">STACK_QUERY_PARAMETER_DEFAULT_VALUE</a></tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-string">'type'</tt><tt class="py-op">:</tt> <tt class="py-string">'string'</tt><tt class="py-op">,</tt> <tt class="py-string">'location'</tt><tt class="py-op">:</tt> <tt class="py-string">'query'</tt><tt class="py-op">}</tt> </tt>
+<a name="L123"></a><tt class="py-lineno"> 123</tt>  <tt class="py-line"> </tt>
+<a name="L124"></a><tt class="py-lineno"> 124</tt>  <tt class="py-line"><tt class="py-comment"># Library-specific reserved words beyond Python keywords.</tt> </tt>
+<a name="L125"></a><tt class="py-lineno"> 125</tt>  <tt class="py-line"><tt id="link-67" class="py-name" targets="Variable googleapiclient.discovery.RESERVED_WORDS=googleapiclient.discovery-module.html#RESERVED_WORDS"><a title="googleapiclient.discovery.RESERVED_WORDS" class="py-name" href="#" onclick="return doclink('link-67', 'RESERVED_WORDS', 'link-67');">RESERVED_WORDS</a></tt> <tt class="py-op">=</tt> <tt class="py-name">frozenset</tt><tt class="py-op">(</tt><tt class="py-op">[</tt><tt class="py-string">'body'</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="_BytesGenerator"></a><div id="_BytesGenerator-def"><a name="L126"></a><tt class="py-lineno"> 126</tt>  <tt class="py-line"> </tt>
+<a name="L127"></a><tt class="py-lineno"> 127</tt>  <tt class="py-line"><tt class="py-comment"># patch _write_lines to avoid munging '\r' into '\n'</tt> </tt>
+<a name="L128"></a><tt class="py-lineno"> 128</tt>  <tt class="py-line"><tt class="py-comment"># ( https://bugs.python.org/issue18886 https://bugs.python.org/issue19003 )</tt> </tt>
+<a name="L129"></a><tt class="py-lineno"> 129</tt> <a class="py-toggle" href="#" id="_BytesGenerator-toggle" onclick="return toggle('_BytesGenerator');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="googleapiclient.discovery._BytesGenerator-class.html">_BytesGenerator</a><tt class="py-op">(</tt><tt class="py-base-class">BytesGenerator</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="_BytesGenerator-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="_BytesGenerator-expanded"><a name="L130"></a><tt class="py-lineno"> 130</tt>  <tt class="py-line">  <tt id="link-68" class="py-name" targets="Variable googleapiclient.discovery._BytesGenerator._write_lines=googleapiclient.discovery._BytesGenerator-class.html#_write_lines"><a title="googleapiclient.discovery._BytesGenerator._write_lines" class="py-name" href="#" onclick="return doclink('link-68', '_write_lines', 'link-68');">_write_lines</a></tt> <tt class="py-op">=</tt> <tt class="py-name">BytesGenerator</tt><tt class="py-op">.</tt><tt class="py-name">write</tt> </tt>
+</div><a name="L131"></a><tt class="py-lineno"> 131</tt>  <tt class="py-line"> </tt>
+<a name="fix_method_name"></a><div id="fix_method_name-def"><a name="L132"></a><tt class="py-lineno"> 132</tt> <a class="py-toggle" href="#" id="fix_method_name-toggle" onclick="return toggle('fix_method_name');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="googleapiclient.discovery-module.html#fix_method_name">fix_method_name</a><tt class="py-op">(</tt><tt class="py-param">name</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="fix_method_name-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="fix_method_name-expanded"><a name="L133"></a><tt class="py-lineno"> 133</tt>  <tt class="py-line">  <tt class="py-docstring">"""Fix method names to avoid reserved word conflicts.</tt> </tt>
+<a name="L134"></a><tt class="py-lineno"> 134</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L135"></a><tt class="py-lineno"> 135</tt>  <tt class="py-line"><tt class="py-docstring">  Args:</tt> </tt>
+<a name="L136"></a><tt class="py-lineno"> 136</tt>  <tt class="py-line"><tt class="py-docstring">    name: string, method name.</tt> </tt>
+<a name="L137"></a><tt class="py-lineno"> 137</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L138"></a><tt class="py-lineno"> 138</tt>  <tt class="py-line"><tt class="py-docstring">  Returns:</tt> </tt>
+<a name="L139"></a><tt class="py-lineno"> 139</tt>  <tt class="py-line"><tt class="py-docstring">    The name with a '_' prefixed if the name is a reserved word.</tt> </tt>
+<a name="L140"></a><tt class="py-lineno"> 140</tt>  <tt class="py-line"><tt class="py-docstring">  """</tt> </tt>
+<a name="L141"></a><tt class="py-lineno"> 141</tt>  <tt class="py-line">  <tt class="py-keyword">if</tt> <tt class="py-name">keyword</tt><tt class="py-op">.</tt><tt class="py-name">iskeyword</tt><tt class="py-op">(</tt><tt class="py-name">name</tt><tt class="py-op">)</tt> <tt class="py-keyword">or</tt> <tt class="py-name">name</tt> <tt class="py-keyword">in</tt> <tt id="link-69" class="py-name"><a title="googleapiclient.discovery.RESERVED_WORDS" class="py-name" href="#" onclick="return doclink('link-69', 'RESERVED_WORDS', 'link-67');">RESERVED_WORDS</a></tt><tt class="py-op">:</tt> </tt>
+<a name="L142"></a><tt class="py-lineno"> 142</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-name">name</tt> <tt class="py-op">+</tt> <tt class="py-string">'_'</tt> </tt>
+<a name="L143"></a><tt class="py-lineno"> 143</tt>  <tt class="py-line">  <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L144"></a><tt class="py-lineno"> 144</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-name">name</tt> </tt>
+</div><a name="L145"></a><tt class="py-lineno"> 145</tt>  <tt class="py-line"> </tt>
+<a name="key2param"></a><div id="key2param-def"><a name="L146"></a><tt class="py-lineno"> 146</tt>  <tt class="py-line"> </tt>
+<a name="L147"></a><tt class="py-lineno"> 147</tt> <a class="py-toggle" href="#" id="key2param-toggle" onclick="return toggle('key2param');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="googleapiclient.discovery-module.html#key2param">key2param</a><tt class="py-op">(</tt><tt class="py-param">key</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="key2param-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="key2param-expanded"><a name="L148"></a><tt class="py-lineno"> 148</tt>  <tt class="py-line">  <tt class="py-docstring">"""Converts key names into parameter names.</tt> </tt>
+<a name="L149"></a><tt class="py-lineno"> 149</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L150"></a><tt class="py-lineno"> 150</tt>  <tt class="py-line"><tt class="py-docstring">  For example, converting "max-results" -&gt; "max_results"</tt> </tt>
+<a name="L151"></a><tt class="py-lineno"> 151</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L152"></a><tt class="py-lineno"> 152</tt>  <tt class="py-line"><tt class="py-docstring">  Args:</tt> </tt>
+<a name="L153"></a><tt class="py-lineno"> 153</tt>  <tt class="py-line"><tt class="py-docstring">    key: string, the method key name.</tt> </tt>
+<a name="L154"></a><tt class="py-lineno"> 154</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L155"></a><tt class="py-lineno"> 155</tt>  <tt class="py-line"><tt class="py-docstring">  Returns:</tt> </tt>
+<a name="L156"></a><tt class="py-lineno"> 156</tt>  <tt class="py-line"><tt class="py-docstring">    A safe method name based on the key name.</tt> </tt>
+<a name="L157"></a><tt class="py-lineno"> 157</tt>  <tt class="py-line"><tt class="py-docstring">  """</tt> </tt>
+<a name="L158"></a><tt class="py-lineno"> 158</tt>  <tt class="py-line">  <tt class="py-name">result</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
+<a name="L159"></a><tt class="py-lineno"> 159</tt>  <tt class="py-line">  <tt class="py-name">key</tt> <tt class="py-op">=</tt> <tt class="py-name">list</tt><tt class="py-op">(</tt><tt class="py-name">key</tt><tt class="py-op">)</tt> </tt>
+<a name="L160"></a><tt class="py-lineno"> 160</tt>  <tt class="py-line">  <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">key</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt class="py-name">isalpha</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L161"></a><tt class="py-lineno"> 161</tt>  <tt class="py-line">    <tt class="py-name">result</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-string">'x'</tt><tt class="py-op">)</tt> </tt>
+<a name="L162"></a><tt class="py-lineno"> 162</tt>  <tt class="py-line">  <tt class="py-keyword">for</tt> <tt class="py-name">c</tt> <tt class="py-keyword">in</tt> <tt class="py-name">key</tt><tt class="py-op">:</tt> </tt>
+<a name="L163"></a><tt class="py-lineno"> 163</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">c</tt><tt class="py-op">.</tt><tt class="py-name">isalnum</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L164"></a><tt class="py-lineno"> 164</tt>  <tt class="py-line">      <tt class="py-name">result</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-name">c</tt><tt class="py-op">)</tt> </tt>
+<a name="L165"></a><tt class="py-lineno"> 165</tt>  <tt class="py-line">    <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L166"></a><tt class="py-lineno"> 166</tt>  <tt class="py-line">      <tt class="py-name">result</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-string">'_'</tt><tt class="py-op">)</tt> </tt>
+<a name="L167"></a><tt class="py-lineno"> 167</tt>  <tt class="py-line"> </tt>
+<a name="L168"></a><tt class="py-lineno"> 168</tt>  <tt class="py-line">  <tt class="py-keyword">return</tt> <tt class="py-string">''</tt><tt class="py-op">.</tt><tt class="py-name">join</tt><tt class="py-op">(</tt><tt class="py-name">result</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L169"></a><tt class="py-lineno"> 169</tt>  <tt class="py-line"> </tt>
+<a name="build"></a><div id="build-def"><a name="L170"></a><tt class="py-lineno"> 170</tt>  <tt class="py-line"> </tt>
+<a name="L171"></a><tt class="py-lineno"> 171</tt>  <tt class="py-line"><tt class="py-decorator">@</tt><tt class="py-decorator">positional</tt><tt class="py-op">(</tt><tt class="py-number">2</tt><tt class="py-op">)</tt> </tt>
+<a name="L172"></a><tt class="py-lineno"> 172</tt> <a class="py-toggle" href="#" id="build-toggle" onclick="return toggle('build');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="googleapiclient.discovery-module.html#build">build</a><tt class="py-op">(</tt><tt class="py-param">serviceName</tt><tt class="py-op">,</tt> </tt>
+<a name="L173"></a><tt class="py-lineno"> 173</tt>  <tt class="py-line">          <tt class="py-param">version</tt><tt class="py-op">,</tt> </tt>
+<a name="L174"></a><tt class="py-lineno"> 174</tt>  <tt class="py-line">          <tt class="py-param">http</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> </tt>
+<a name="L175"></a><tt class="py-lineno"> 175</tt>  <tt class="py-line">          <tt class="py-param">discoveryServiceUrl</tt><tt class="py-op">=</tt><tt id="link-70" class="py-name"><a title="googleapiclient.discovery.DISCOVERY_URI" class="py-name" href="#" onclick="return doclink('link-70', 'DISCOVERY_URI', 'link-55');">DISCOVERY_URI</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L176"></a><tt class="py-lineno"> 176</tt>  <tt class="py-line">          <tt class="py-param">developerKey</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> </tt>
+<a name="L177"></a><tt class="py-lineno"> 177</tt>  <tt class="py-line">          <tt class="py-param">model</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> </tt>
+<a name="L178"></a><tt class="py-lineno"> 178</tt>  <tt class="py-line">          <tt class="py-param">requestBuilder</tt><tt class="py-op">=</tt><tt id="link-71" class="py-name"><a title="googleapiclient.http.HttpRequest" class="py-name" href="#" onclick="return doclink('link-71', 'HttpRequest', 'link-33');">HttpRequest</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L179"></a><tt class="py-lineno"> 179</tt>  <tt class="py-line">          <tt class="py-param">credentials</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> </tt>
+<a name="L180"></a><tt class="py-lineno"> 180</tt>  <tt class="py-line">          <tt class="py-param">cache_discovery</tt><tt class="py-op">=</tt><tt class="py-name">True</tt><tt class="py-op">,</tt> </tt>
+<a name="L181"></a><tt class="py-lineno"> 181</tt>  <tt class="py-line">          <tt class="py-param">cache</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="build-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="build-expanded"><a name="L182"></a><tt class="py-lineno"> 182</tt>  <tt class="py-line">  <tt class="py-docstring">"""Construct a Resource for interacting with an API.</tt> </tt>
+<a name="L183"></a><tt class="py-lineno"> 183</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L184"></a><tt class="py-lineno"> 184</tt>  <tt class="py-line"><tt class="py-docstring">  Construct a Resource object for interacting with an API. The serviceName and</tt> </tt>
+<a name="L185"></a><tt class="py-lineno"> 185</tt>  <tt class="py-line"><tt class="py-docstring">  version are the names from the Discovery service.</tt> </tt>
+<a name="L186"></a><tt class="py-lineno"> 186</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L187"></a><tt class="py-lineno"> 187</tt>  <tt class="py-line"><tt class="py-docstring">  Args:</tt> </tt>
+<a name="L188"></a><tt class="py-lineno"> 188</tt>  <tt class="py-line"><tt class="py-docstring">    serviceName: string, name of the service.</tt> </tt>
+<a name="L189"></a><tt class="py-lineno"> 189</tt>  <tt class="py-line"><tt class="py-docstring">    version: string, the version of the service.</tt> </tt>
+<a name="L190"></a><tt class="py-lineno"> 190</tt>  <tt class="py-line"><tt class="py-docstring">    http: httplib2.Http, An instance of httplib2.Http or something that acts</tt> </tt>
+<a name="L191"></a><tt class="py-lineno"> 191</tt>  <tt class="py-line"><tt class="py-docstring">      like it that HTTP requests will be made through.</tt> </tt>
+<a name="L192"></a><tt class="py-lineno"> 192</tt>  <tt class="py-line"><tt class="py-docstring">    discoveryServiceUrl: string, a URI Template that points to the location of</tt> </tt>
+<a name="L193"></a><tt class="py-lineno"> 193</tt>  <tt class="py-line"><tt class="py-docstring">      the discovery service. It should have two parameters {api} and</tt> </tt>
+<a name="L194"></a><tt class="py-lineno"> 194</tt>  <tt class="py-line"><tt class="py-docstring">      {apiVersion} that when filled in produce an absolute URI to the discovery</tt> </tt>
+<a name="L195"></a><tt class="py-lineno"> 195</tt>  <tt class="py-line"><tt class="py-docstring">      document for that service.</tt> </tt>
+<a name="L196"></a><tt class="py-lineno"> 196</tt>  <tt class="py-line"><tt class="py-docstring">    developerKey: string, key obtained from</tt> </tt>
+<a name="L197"></a><tt class="py-lineno"> 197</tt>  <tt class="py-line"><tt class="py-docstring">      https://code.google.com/apis/console.</tt> </tt>
+<a name="L198"></a><tt class="py-lineno"> 198</tt>  <tt class="py-line"><tt class="py-docstring">    model: googleapiclient.Model, converts to and from the wire format.</tt> </tt>
+<a name="L199"></a><tt class="py-lineno"> 199</tt>  <tt class="py-line"><tt class="py-docstring">    requestBuilder: googleapiclient.http.HttpRequest, encapsulator for an HTTP</tt> </tt>
+<a name="L200"></a><tt class="py-lineno"> 200</tt>  <tt class="py-line"><tt class="py-docstring">      request.</tt> </tt>
+<a name="L201"></a><tt class="py-lineno"> 201</tt>  <tt class="py-line"><tt class="py-docstring">    credentials: oauth2client.Credentials or</tt> </tt>
+<a name="L202"></a><tt class="py-lineno"> 202</tt>  <tt class="py-line"><tt class="py-docstring">      google.auth.credentials.Credentials, credentials to be used for</tt> </tt>
+<a name="L203"></a><tt class="py-lineno"> 203</tt>  <tt class="py-line"><tt class="py-docstring">      authentication.</tt> </tt>
+<a name="L204"></a><tt class="py-lineno"> 204</tt>  <tt class="py-line"><tt class="py-docstring">    cache_discovery: Boolean, whether or not to cache the discovery doc.</tt> </tt>
+<a name="L205"></a><tt class="py-lineno"> 205</tt>  <tt class="py-line"><tt class="py-docstring">    cache: googleapiclient.discovery_cache.base.CacheBase, an optional</tt> </tt>
+<a name="L206"></a><tt class="py-lineno"> 206</tt>  <tt class="py-line"><tt class="py-docstring">      cache object for the discovery documents.</tt> </tt>
+<a name="L207"></a><tt class="py-lineno"> 207</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L208"></a><tt class="py-lineno"> 208</tt>  <tt class="py-line"><tt class="py-docstring">  Returns:</tt> </tt>
+<a name="L209"></a><tt class="py-lineno"> 209</tt>  <tt class="py-line"><tt class="py-docstring">    A Resource object with methods for interacting with the service.</tt> </tt>
+<a name="L210"></a><tt class="py-lineno"> 210</tt>  <tt class="py-line"><tt class="py-docstring">  """</tt> </tt>
+<a name="L211"></a><tt class="py-lineno"> 211</tt>  <tt class="py-line">  <tt class="py-name">params</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt> </tt>
+<a name="L212"></a><tt class="py-lineno"> 212</tt>  <tt class="py-line">      <tt class="py-string">'api'</tt><tt class="py-op">:</tt> <tt class="py-name">serviceName</tt><tt class="py-op">,</tt> </tt>
+<a name="L213"></a><tt class="py-lineno"> 213</tt>  <tt class="py-line">      <tt class="py-string">'apiVersion'</tt><tt class="py-op">:</tt> <tt class="py-name">version</tt> </tt>
+<a name="L214"></a><tt class="py-lineno"> 214</tt>  <tt class="py-line">      <tt class="py-op">}</tt> </tt>
+<a name="L215"></a><tt class="py-lineno"> 215</tt>  <tt class="py-line"> </tt>
+<a name="L216"></a><tt class="py-lineno"> 216</tt>  <tt class="py-line">  <tt class="py-name">discovery_http</tt> <tt class="py-op">=</tt> <tt id="link-72" class="py-name"><a title="googleapiclient.http" class="py-name" href="#" onclick="return doclink('link-72', 'http', 'link-23');">http</a></tt> <tt class="py-keyword">if</tt> <tt id="link-73" class="py-name"><a title="googleapiclient.http" class="py-name" href="#" onclick="return doclink('link-73', 'http', 'link-23');">http</a></tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt> <tt class="py-keyword">else</tt> <tt class="py-name">httplib2</tt><tt class="py-op">.</tt><tt class="py-name">Http</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L217"></a><tt class="py-lineno"> 217</tt>  <tt class="py-line"> </tt>
+<a name="L218"></a><tt class="py-lineno"> 218</tt>  <tt class="py-line">  <tt class="py-keyword">for</tt> <tt class="py-name">discovery_url</tt> <tt class="py-keyword">in</tt> <tt class="py-op">(</tt><tt class="py-name">discoveryServiceUrl</tt><tt class="py-op">,</tt> <tt id="link-74" class="py-name"><a title="googleapiclient.discovery.V2_DISCOVERY_URI" class="py-name" href="#" onclick="return doclink('link-74', 'V2_DISCOVERY_URI', 'link-58');">V2_DISCOVERY_URI</a></tt><tt class="py-op">,</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L219"></a><tt class="py-lineno"> 219</tt>  <tt class="py-line">    <tt class="py-name">requested_url</tt> <tt class="py-op">=</tt> <tt class="py-name">uritemplate</tt><tt class="py-op">.</tt><tt class="py-name">expand</tt><tt class="py-op">(</tt><tt class="py-name">discovery_url</tt><tt class="py-op">,</tt> <tt class="py-name">params</tt><tt class="py-op">)</tt> </tt>
+<a name="L220"></a><tt class="py-lineno"> 220</tt>  <tt class="py-line"> </tt>
+<a name="L221"></a><tt class="py-lineno"> 221</tt>  <tt class="py-line">    <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
+<a name="L222"></a><tt class="py-lineno"> 222</tt>  <tt class="py-line">      <tt class="py-name">content</tt> <tt class="py-op">=</tt> <tt id="link-75" class="py-name" targets="Function googleapiclient.discovery._retrieve_discovery_doc()=googleapiclient.discovery-module.html#_retrieve_discovery_doc"><a title="googleapiclient.discovery._retrieve_discovery_doc" class="py-name" href="#" onclick="return doclink('link-75', '_retrieve_discovery_doc', 'link-75');">_retrieve_discovery_doc</a></tt><tt class="py-op">(</tt> </tt>
+<a name="L223"></a><tt class="py-lineno"> 223</tt>  <tt class="py-line">        <tt class="py-name">requested_url</tt><tt class="py-op">,</tt> <tt class="py-name">discovery_http</tt><tt class="py-op">,</tt> <tt class="py-name">cache_discovery</tt><tt class="py-op">,</tt> <tt id="link-76" class="py-name" targets="Variable googleapiclient.discovery_cache.appengine_memcache.cache=googleapiclient.discovery_cache.appengine_memcache-module.html#cache,Variable googleapiclient.discovery_cache.file_cache.cache=googleapiclient.discovery_cache.file_cache-module.html#cache"><a title="googleapiclient.discovery_cache.appengine_memcache.cache
+googleapiclient.discovery_cache.file_cache.cache" class="py-name" href="#" onclick="return doclink('link-76', 'cache', 'link-76');">cache</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L224"></a><tt class="py-lineno"> 224</tt>  <tt class="py-line">      <tt class="py-keyword">return</tt> <tt id="link-77" class="py-name" targets="Function googleapiclient.discovery.build_from_document()=googleapiclient.discovery-module.html#build_from_document"><a title="googleapiclient.discovery.build_from_document" class="py-name" href="#" onclick="return doclink('link-77', 'build_from_document', 'link-77');">build_from_document</a></tt><tt class="py-op">(</tt><tt class="py-name">content</tt><tt class="py-op">,</tt> <tt id="link-78" class="py-name" targets="Module googleapiclient.discovery_cache.base=googleapiclient.discovery_cache.base-module.html"><a title="googleapiclient.discovery_cache.base" class="py-name" href="#" onclick="return doclink('link-78', 'base', 'link-78');">base</a></tt><tt class="py-op">=</tt><tt class="py-name">discovery_url</tt><tt class="py-op">,</tt> <tt id="link-79" class="py-name"><a title="googleapiclient.http" class="py-name" href="#" onclick="return doclink('link-79', 'http', 'link-23');">http</a></tt><tt class="py-op">=</tt><tt id="link-80" class="py-name"><a title="googleapiclient.http" class="py-name" href="#" onclick="return doclink('link-80', 'http', 'link-23');">http</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L225"></a><tt class="py-lineno"> 225</tt>  <tt class="py-line">          <tt class="py-name">developerKey</tt><tt class="py-op">=</tt><tt class="py-name">developerKey</tt><tt class="py-op">,</tt> <tt id="link-81" class="py-name"><a title="googleapiclient.model" class="py-name" href="#" onclick="return doclink('link-81', 'model', 'link-41');">model</a></tt><tt class="py-op">=</tt><tt id="link-82" class="py-name"><a title="googleapiclient.model" class="py-name" href="#" onclick="return doclink('link-82', 'model', 'link-41');">model</a></tt><tt class="py-op">,</tt> <tt class="py-name">requestBuilder</tt><tt class="py-op">=</tt><tt class="py-name">requestBuilder</tt><tt class="py-op">,</tt> </tt>
+<a name="L226"></a><tt class="py-lineno"> 226</tt>  <tt class="py-line">          <tt class="py-name">credentials</tt><tt class="py-op">=</tt><tt class="py-name">credentials</tt><tt class="py-op">)</tt> </tt>
+<a name="L227"></a><tt class="py-lineno"> 227</tt>  <tt class="py-line">    <tt class="py-keyword">except</tt> <tt id="link-83" class="py-name"><a title="googleapiclient.errors.HttpError" class="py-name" href="#" onclick="return doclink('link-83', 'HttpError', 'link-6');">HttpError</a></tt> <tt class="py-keyword">as</tt> <tt class="py-name">e</tt><tt class="py-op">:</tt> </tt>
+<a name="L228"></a><tt class="py-lineno"> 228</tt>  <tt class="py-line">      <tt class="py-keyword">if</tt> <tt class="py-name">e</tt><tt class="py-op">.</tt><tt class="py-name">resp</tt><tt class="py-op">.</tt><tt class="py-name">status</tt> <tt class="py-op">==</tt> <tt class="py-name">http_client</tt><tt class="py-op">.</tt><tt class="py-name">NOT_FOUND</tt><tt class="py-op">:</tt> </tt>
+<a name="L229"></a><tt class="py-lineno"> 229</tt>  <tt class="py-line">        <tt class="py-keyword">continue</tt> </tt>
+<a name="L230"></a><tt class="py-lineno"> 230</tt>  <tt class="py-line">      <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L231"></a><tt class="py-lineno"> 231</tt>  <tt class="py-line">        <tt class="py-keyword">raise</tt> <tt class="py-name">e</tt> </tt>
+<a name="L232"></a><tt class="py-lineno"> 232</tt>  <tt class="py-line"> </tt>
+<a name="L233"></a><tt class="py-lineno"> 233</tt>  <tt class="py-line">  <tt class="py-keyword">raise</tt> <tt id="link-84" class="py-name"><a title="googleapiclient.errors.UnknownApiNameOrVersion" class="py-name" href="#" onclick="return doclink('link-84', 'UnknownApiNameOrVersion', 'link-18');">UnknownApiNameOrVersion</a></tt><tt class="py-op">(</tt> </tt>
+<a name="L234"></a><tt class="py-lineno"> 234</tt>  <tt class="py-line">        <tt class="py-string">"name: %s  version: %s"</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">serviceName</tt><tt class="py-op">,</tt> <tt class="py-name">version</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L235"></a><tt class="py-lineno"> 235</tt>  <tt class="py-line"> </tt>
+<a name="_retrieve_discovery_doc"></a><div id="_retrieve_discovery_doc-def"><a name="L236"></a><tt class="py-lineno"> 236</tt>  <tt class="py-line"> </tt>
+<a name="L237"></a><tt class="py-lineno"> 237</tt> <a class="py-toggle" href="#" id="_retrieve_discovery_doc-toggle" onclick="return toggle('_retrieve_discovery_doc');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="googleapiclient.discovery-module.html#_retrieve_discovery_doc">_retrieve_discovery_doc</a><tt class="py-op">(</tt><tt class="py-param">url</tt><tt class="py-op">,</tt> <tt class="py-param">http</tt><tt class="py-op">,</tt> <tt class="py-param">cache_discovery</tt><tt class="py-op">,</tt> <tt class="py-param">cache</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="_retrieve_discovery_doc-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="_retrieve_discovery_doc-expanded"><a name="L238"></a><tt class="py-lineno"> 238</tt>  <tt class="py-line">  <tt class="py-docstring">"""Retrieves the discovery_doc from cache or the internet.</tt> </tt>
+<a name="L239"></a><tt class="py-lineno"> 239</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L240"></a><tt class="py-lineno"> 240</tt>  <tt class="py-line"><tt class="py-docstring">  Args:</tt> </tt>
+<a name="L241"></a><tt class="py-lineno"> 241</tt>  <tt class="py-line"><tt class="py-docstring">    url: string, the URL of the discovery document.</tt> </tt>
+<a name="L242"></a><tt class="py-lineno"> 242</tt>  <tt class="py-line"><tt class="py-docstring">    http: httplib2.Http, An instance of httplib2.Http or something that acts</tt> </tt>
+<a name="L243"></a><tt class="py-lineno"> 243</tt>  <tt class="py-line"><tt class="py-docstring">      like it through which HTTP requests will be made.</tt> </tt>
+<a name="L244"></a><tt class="py-lineno"> 244</tt>  <tt class="py-line"><tt class="py-docstring">    cache_discovery: Boolean, whether or not to cache the discovery doc.</tt> </tt>
+<a name="L245"></a><tt class="py-lineno"> 245</tt>  <tt class="py-line"><tt class="py-docstring">    cache: googleapiclient.discovery_cache.base.Cache, an optional cache</tt> </tt>
+<a name="L246"></a><tt class="py-lineno"> 246</tt>  <tt class="py-line"><tt class="py-docstring">      object for the discovery documents.</tt> </tt>
+<a name="L247"></a><tt class="py-lineno"> 247</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L248"></a><tt class="py-lineno"> 248</tt>  <tt class="py-line"><tt class="py-docstring">  Returns:</tt> </tt>
+<a name="L249"></a><tt class="py-lineno"> 249</tt>  <tt class="py-line"><tt class="py-docstring">    A unicode string representation of the discovery document.</tt> </tt>
+<a name="L250"></a><tt class="py-lineno"> 250</tt>  <tt class="py-line"><tt class="py-docstring">  """</tt> </tt>
+<a name="L251"></a><tt class="py-lineno"> 251</tt>  <tt class="py-line">  <tt class="py-keyword">if</tt> <tt class="py-name">cache_discovery</tt><tt class="py-op">:</tt> </tt>
+<a name="L252"></a><tt class="py-lineno"> 252</tt>  <tt class="py-line">    <tt class="py-keyword">from</tt> <tt class="py-op">.</tt> <tt class="py-keyword">import</tt> <tt id="link-85" class="py-name" targets="Package googleapiclient.discovery_cache=googleapiclient.discovery_cache-module.html"><a title="googleapiclient.discovery_cache" class="py-name" href="#" onclick="return doclink('link-85', 'discovery_cache', 'link-85');">discovery_cache</a></tt> </tt>
+<a name="L253"></a><tt class="py-lineno"> 253</tt>  <tt class="py-line">    <tt class="py-keyword">from</tt> <tt class="py-op">.</tt><tt id="link-86" class="py-name"><a title="googleapiclient.discovery_cache" class="py-name" href="#" onclick="return doclink('link-86', 'discovery_cache', 'link-85');">discovery_cache</a></tt> <tt class="py-keyword">import</tt> <tt id="link-87" class="py-name"><a title="googleapiclient.discovery_cache.base" class="py-name" href="#" onclick="return doclink('link-87', 'base', 'link-78');">base</a></tt> </tt>
+<a name="L254"></a><tt class="py-lineno"> 254</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt id="link-88" class="py-name"><a title="googleapiclient.discovery_cache.appengine_memcache.cache
+googleapiclient.discovery_cache.file_cache.cache" class="py-name" href="#" onclick="return doclink('link-88', 'cache', 'link-76');">cache</a></tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L255"></a><tt class="py-lineno"> 255</tt>  <tt class="py-line">      <tt id="link-89" class="py-name"><a title="googleapiclient.discovery_cache.appengine_memcache.cache
+googleapiclient.discovery_cache.file_cache.cache" class="py-name" href="#" onclick="return doclink('link-89', 'cache', 'link-76');">cache</a></tt> <tt class="py-op">=</tt> <tt id="link-90" class="py-name"><a title="googleapiclient.discovery_cache" class="py-name" href="#" onclick="return doclink('link-90', 'discovery_cache', 'link-85');">discovery_cache</a></tt><tt class="py-op">.</tt><tt id="link-91" class="py-name" targets="Function googleapiclient.discovery_cache.autodetect()=googleapiclient.discovery_cache-module.html#autodetect"><a title="googleapiclient.discovery_cache.autodetect" class="py-name" href="#" onclick="return doclink('link-91', 'autodetect', 'link-91');">autodetect</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L256"></a><tt class="py-lineno"> 256</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt id="link-92" class="py-name"><a title="googleapiclient.discovery_cache.appengine_memcache.cache
+googleapiclient.discovery_cache.file_cache.cache" class="py-name" href="#" onclick="return doclink('link-92', 'cache', 'link-76');">cache</a></tt><tt class="py-op">:</tt> </tt>
+<a name="L257"></a><tt class="py-lineno"> 257</tt>  <tt class="py-line">      <tt class="py-name">content</tt> <tt class="py-op">=</tt> <tt id="link-93" class="py-name"><a title="googleapiclient.discovery_cache.appengine_memcache.cache
+googleapiclient.discovery_cache.file_cache.cache" class="py-name" href="#" onclick="return doclink('link-93', 'cache', 'link-76');">cache</a></tt><tt class="py-op">.</tt><tt id="link-94" class="py-name" targets="Method googleapiclient.discovery_cache.appengine_memcache.Cache.get()=googleapiclient.discovery_cache.appengine_memcache.Cache-class.html#get,Method googleapiclient.discovery_cache.base.Cache.get()=googleapiclient.discovery_cache.base.Cache-class.html#get,Method googleapiclient.discovery_cache.file_cache.Cache.get()=googleapiclient.discovery_cache.file_cache.Cache-class.html#get,Method googleapiclient.schema.Schemas.get()=googleapiclient.schema.Schemas-class.html#get"><a title="googleapiclient.discovery_cache.appengine_memcache.Cache.get
 googleapiclient.discovery_cache.base.Cache.get
 googleapiclient.discovery_cache.file_cache.Cache.get
-googleapiclient.schema.Schemas.get" class="py-name" href="#" onclick="return doclink('link-93', 'get', 'link-93');">get</a></tt><tt class="py-op">(</tt><tt class="py-name">url</tt><tt class="py-op">)</tt> </tt>
-<a name="L257"></a><tt class="py-lineno"> 257</tt>  <tt class="py-line">      <tt class="py-keyword">if</tt> <tt class="py-name">content</tt><tt class="py-op">:</tt> </tt>
-<a name="L258"></a><tt class="py-lineno"> 258</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">content</tt> </tt>
-<a name="L259"></a><tt class="py-lineno"> 259</tt>  <tt class="py-line"> </tt>
-<a name="L260"></a><tt class="py-lineno"> 260</tt>  <tt class="py-line">  <tt class="py-name">actual_url</tt> <tt class="py-op">=</tt> <tt class="py-name">url</tt> </tt>
-<a name="L261"></a><tt class="py-lineno"> 261</tt>  <tt class="py-line">  <tt class="py-comment"># REMOTE_ADDR is defined by the CGI spec [RFC3875] as the environment</tt> </tt>
-<a name="L262"></a><tt class="py-lineno"> 262</tt>  <tt class="py-line">  <tt class="py-comment"># variable that contains the network address of the client sending the</tt> </tt>
-<a name="L263"></a><tt class="py-lineno"> 263</tt>  <tt class="py-line">  <tt class="py-comment"># request. If it exists then add that to the request for the discovery</tt> </tt>
-<a name="L264"></a><tt class="py-lineno"> 264</tt>  <tt class="py-line">  <tt class="py-comment"># document to avoid exceeding the quota on discovery requests.</tt> </tt>
-<a name="L265"></a><tt class="py-lineno"> 265</tt>  <tt class="py-line">  <tt class="py-keyword">if</tt> <tt class="py-string">'REMOTE_ADDR'</tt> <tt class="py-keyword">in</tt> <tt class="py-name">os</tt><tt class="py-op">.</tt><tt class="py-name">environ</tt><tt class="py-op">:</tt> </tt>
-<a name="L266"></a><tt class="py-lineno"> 266</tt>  <tt class="py-line">    <tt class="py-name">actual_url</tt> <tt class="py-op">=</tt> <tt class="py-name">_add_query_parameter</tt><tt class="py-op">(</tt><tt class="py-name">url</tt><tt class="py-op">,</tt> <tt class="py-string">'userIp'</tt><tt class="py-op">,</tt> <tt class="py-name">os</tt><tt class="py-op">.</tt><tt class="py-name">environ</tt><tt class="py-op">[</tt><tt class="py-string">'REMOTE_ADDR'</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
-<a name="L267"></a><tt class="py-lineno"> 267</tt>  <tt class="py-line">  <tt id="link-94" class="py-name"><a title="googleapiclient.discovery.logger" class="py-name" href="#" onclick="return doclink('link-94', 'logger', 'link-50');">logger</a></tt><tt class="py-op">.</tt><tt class="py-name">info</tt><tt class="py-op">(</tt><tt class="py-string">'URL being requested: GET %s'</tt><tt class="py-op">,</tt> <tt class="py-name">actual_url</tt><tt class="py-op">)</tt> </tt>
-<a name="L268"></a><tt class="py-lineno"> 268</tt>  <tt class="py-line"> </tt>
-<a name="L269"></a><tt class="py-lineno"> 269</tt>  <tt class="py-line">  <tt class="py-name">resp</tt><tt class="py-op">,</tt> <tt class="py-name">content</tt> <tt class="py-op">=</tt> <tt id="link-95" class="py-name"><a title="googleapiclient.http" class="py-name" href="#" onclick="return doclink('link-95', 'http', 'link-21');">http</a></tt><tt class="py-op">.</tt><tt id="link-96" class="py-name" targets="Method googleapiclient.http.HttpMock.request()=googleapiclient.http.HttpMock-class.html#request,Method googleapiclient.http.HttpMockSequence.request()=googleapiclient.http.HttpMockSequence-class.html#request,Method googleapiclient.model.BaseModel.request()=googleapiclient.model.BaseModel-class.html#request,Method googleapiclient.model.Model.request()=googleapiclient.model.Model-class.html#request"><a title="googleapiclient.http.HttpMock.request
+googleapiclient.schema.Schemas.get" class="py-name" href="#" onclick="return doclink('link-94', 'get', 'link-94');">get</a></tt><tt class="py-op">(</tt><tt class="py-name">url</tt><tt class="py-op">)</tt> </tt>
+<a name="L258"></a><tt class="py-lineno"> 258</tt>  <tt class="py-line">      <tt class="py-keyword">if</tt> <tt class="py-name">content</tt><tt class="py-op">:</tt> </tt>
+<a name="L259"></a><tt class="py-lineno"> 259</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">content</tt> </tt>
+<a name="L260"></a><tt class="py-lineno"> 260</tt>  <tt class="py-line"> </tt>
+<a name="L261"></a><tt class="py-lineno"> 261</tt>  <tt class="py-line">  <tt class="py-name">actual_url</tt> <tt class="py-op">=</tt> <tt class="py-name">url</tt> </tt>
+<a name="L262"></a><tt class="py-lineno"> 262</tt>  <tt class="py-line">  <tt class="py-comment"># REMOTE_ADDR is defined by the CGI spec [RFC3875] as the environment</tt> </tt>
+<a name="L263"></a><tt class="py-lineno"> 263</tt>  <tt class="py-line">  <tt class="py-comment"># variable that contains the network address of the client sending the</tt> </tt>
+<a name="L264"></a><tt class="py-lineno"> 264</tt>  <tt class="py-line">  <tt class="py-comment"># request. If it exists then add that to the request for the discovery</tt> </tt>
+<a name="L265"></a><tt class="py-lineno"> 265</tt>  <tt class="py-line">  <tt class="py-comment"># document to avoid exceeding the quota on discovery requests.</tt> </tt>
+<a name="L266"></a><tt class="py-lineno"> 266</tt>  <tt class="py-line">  <tt class="py-keyword">if</tt> <tt class="py-string">'REMOTE_ADDR'</tt> <tt class="py-keyword">in</tt> <tt class="py-name">os</tt><tt class="py-op">.</tt><tt class="py-name">environ</tt><tt class="py-op">:</tt> </tt>
+<a name="L267"></a><tt class="py-lineno"> 267</tt>  <tt class="py-line">    <tt class="py-name">actual_url</tt> <tt class="py-op">=</tt> <tt class="py-name">_add_query_parameter</tt><tt class="py-op">(</tt><tt class="py-name">url</tt><tt class="py-op">,</tt> <tt class="py-string">'userIp'</tt><tt class="py-op">,</tt> <tt class="py-name">os</tt><tt class="py-op">.</tt><tt class="py-name">environ</tt><tt class="py-op">[</tt><tt class="py-string">'REMOTE_ADDR'</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L268"></a><tt class="py-lineno"> 268</tt>  <tt class="py-line">  <tt id="link-95" class="py-name"><a title="googleapiclient.discovery.logger" class="py-name" href="#" onclick="return doclink('link-95', 'logger', 'link-52');">logger</a></tt><tt class="py-op">.</tt><tt class="py-name">info</tt><tt class="py-op">(</tt><tt class="py-string">'URL being requested: GET %s'</tt><tt class="py-op">,</tt> <tt class="py-name">actual_url</tt><tt class="py-op">)</tt> </tt>
+<a name="L269"></a><tt class="py-lineno"> 269</tt>  <tt class="py-line"> </tt>
+<a name="L270"></a><tt class="py-lineno"> 270</tt>  <tt class="py-line">  <tt class="py-name">resp</tt><tt class="py-op">,</tt> <tt class="py-name">content</tt> <tt class="py-op">=</tt> <tt id="link-96" class="py-name"><a title="googleapiclient.http" class="py-name" href="#" onclick="return doclink('link-96', 'http', 'link-23');">http</a></tt><tt class="py-op">.</tt><tt id="link-97" class="py-name" targets="Method googleapiclient.http.HttpMock.request()=googleapiclient.http.HttpMock-class.html#request,Method googleapiclient.http.HttpMockSequence.request()=googleapiclient.http.HttpMockSequence-class.html#request,Method googleapiclient.model.BaseModel.request()=googleapiclient.model.BaseModel-class.html#request,Method googleapiclient.model.Model.request()=googleapiclient.model.Model-class.html#request"><a title="googleapiclient.http.HttpMock.request
 googleapiclient.http.HttpMockSequence.request
 googleapiclient.model.BaseModel.request
-googleapiclient.model.Model.request" class="py-name" href="#" onclick="return doclink('link-96', 'request', 'link-96');">request</a></tt><tt class="py-op">(</tt><tt class="py-name">actual_url</tt><tt class="py-op">)</tt> </tt>
-<a name="L270"></a><tt class="py-lineno"> 270</tt>  <tt class="py-line"> </tt>
-<a name="L271"></a><tt class="py-lineno"> 271</tt>  <tt class="py-line">  <tt class="py-keyword">if</tt> <tt class="py-name">resp</tt><tt class="py-op">.</tt><tt class="py-name">status</tt> <tt class="py-op">&gt;=</tt> <tt class="py-number">400</tt><tt class="py-op">:</tt> </tt>
-<a name="L272"></a><tt class="py-lineno"> 272</tt>  <tt class="py-line">    <tt class="py-keyword">raise</tt> <tt id="link-97" class="py-name"><a title="googleapiclient.errors.HttpError" class="py-name" href="#" onclick="return doclink('link-97', 'HttpError', 'link-4');">HttpError</a></tt><tt class="py-op">(</tt><tt class="py-name">resp</tt><tt class="py-op">,</tt> <tt class="py-name">content</tt><tt class="py-op">,</tt> <tt class="py-name">uri</tt><tt class="py-op">=</tt><tt class="py-name">actual_url</tt><tt class="py-op">)</tt> </tt>
-<a name="L273"></a><tt class="py-lineno"> 273</tt>  <tt class="py-line"> </tt>
-<a name="L274"></a><tt class="py-lineno"> 274</tt>  <tt class="py-line">  <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
-<a name="L275"></a><tt class="py-lineno"> 275</tt>  <tt class="py-line">    <tt class="py-name">content</tt> <tt class="py-op">=</tt> <tt class="py-name">content</tt><tt class="py-op">.</tt><tt class="py-name">decode</tt><tt class="py-op">(</tt><tt class="py-string">'utf-8'</tt><tt class="py-op">)</tt> </tt>
-<a name="L276"></a><tt class="py-lineno"> 276</tt>  <tt class="py-line">  <tt class="py-keyword">except</tt> <tt class="py-name">AttributeError</tt><tt class="py-op">:</tt> </tt>
-<a name="L277"></a><tt class="py-lineno"> 277</tt>  <tt class="py-line">    <tt class="py-keyword">pass</tt> </tt>
-<a name="L278"></a><tt class="py-lineno"> 278</tt>  <tt class="py-line"> </tt>
-<a name="L279"></a><tt class="py-lineno"> 279</tt>  <tt class="py-line">  <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
-<a name="L280"></a><tt class="py-lineno"> 280</tt>  <tt class="py-line">    <tt class="py-name">service</tt> <tt class="py-op">=</tt> <tt class="py-name">json</tt><tt class="py-op">.</tt><tt class="py-name">loads</tt><tt class="py-op">(</tt><tt class="py-name">content</tt><tt class="py-op">)</tt> </tt>
-<a name="L281"></a><tt class="py-lineno"> 281</tt>  <tt class="py-line">  <tt class="py-keyword">except</tt> <tt class="py-name">ValueError</tt> <tt class="py-keyword">as</tt> <tt class="py-name">e</tt><tt class="py-op">:</tt> </tt>
-<a name="L282"></a><tt class="py-lineno"> 282</tt>  <tt class="py-line">    <tt id="link-98" class="py-name"><a title="googleapiclient.discovery.logger" class="py-name" href="#" onclick="return doclink('link-98', 'logger', 'link-50');">logger</a></tt><tt class="py-op">.</tt><tt class="py-name">error</tt><tt class="py-op">(</tt><tt class="py-string">'Failed to parse as JSON: '</tt> <tt class="py-op">+</tt> <tt class="py-name">content</tt><tt class="py-op">)</tt> </tt>
-<a name="L283"></a><tt class="py-lineno"> 283</tt>  <tt class="py-line">    <tt class="py-keyword">raise</tt> <tt id="link-99" class="py-name"><a title="googleapiclient.errors.InvalidJsonError" class="py-name" href="#" onclick="return doclink('link-99', 'InvalidJsonError', 'link-7');">InvalidJsonError</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-<a name="L284"></a><tt class="py-lineno"> 284</tt>  <tt class="py-line">  <tt class="py-keyword">if</tt> <tt class="py-name">cache_discovery</tt> <tt class="py-keyword">and</tt> <tt id="link-100" class="py-name"><a title="googleapiclient.discovery_cache.appengine_memcache.cache
-googleapiclient.discovery_cache.file_cache.cache" class="py-name" href="#" onclick="return doclink('link-100', 'cache', 'link-75');">cache</a></tt><tt class="py-op">:</tt> </tt>
-<a name="L285"></a><tt class="py-lineno"> 285</tt>  <tt class="py-line">    <tt id="link-101" class="py-name"><a title="googleapiclient.discovery_cache.appengine_memcache.cache
-googleapiclient.discovery_cache.file_cache.cache" class="py-name" href="#" onclick="return doclink('link-101', 'cache', 'link-75');">cache</a></tt><tt class="py-op">.</tt><tt id="link-102" class="py-name" targets="Method googleapiclient.discovery_cache.appengine_memcache.Cache.set()=googleapiclient.discovery_cache.appengine_memcache.Cache-class.html#set,Method googleapiclient.discovery_cache.base.Cache.set()=googleapiclient.discovery_cache.base.Cache-class.html#set,Method googleapiclient.discovery_cache.file_cache.Cache.set()=googleapiclient.discovery_cache.file_cache.Cache-class.html#set"><a title="googleapiclient.discovery_cache.appengine_memcache.Cache.set
+googleapiclient.model.Model.request" class="py-name" href="#" onclick="return doclink('link-97', 'request', 'link-97');">request</a></tt><tt class="py-op">(</tt><tt class="py-name">actual_url</tt><tt class="py-op">)</tt> </tt>
+<a name="L271"></a><tt class="py-lineno"> 271</tt>  <tt class="py-line"> </tt>
+<a name="L272"></a><tt class="py-lineno"> 272</tt>  <tt class="py-line">  <tt class="py-keyword">if</tt> <tt class="py-name">resp</tt><tt class="py-op">.</tt><tt class="py-name">status</tt> <tt class="py-op">&gt;=</tt> <tt class="py-number">400</tt><tt class="py-op">:</tt> </tt>
+<a name="L273"></a><tt class="py-lineno"> 273</tt>  <tt class="py-line">    <tt class="py-keyword">raise</tt> <tt id="link-98" class="py-name"><a title="googleapiclient.errors.HttpError" class="py-name" href="#" onclick="return doclink('link-98', 'HttpError', 'link-6');">HttpError</a></tt><tt class="py-op">(</tt><tt class="py-name">resp</tt><tt class="py-op">,</tt> <tt class="py-name">content</tt><tt class="py-op">,</tt> <tt class="py-name">uri</tt><tt class="py-op">=</tt><tt class="py-name">actual_url</tt><tt class="py-op">)</tt> </tt>
+<a name="L274"></a><tt class="py-lineno"> 274</tt>  <tt class="py-line"> </tt>
+<a name="L275"></a><tt class="py-lineno"> 275</tt>  <tt class="py-line">  <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
+<a name="L276"></a><tt class="py-lineno"> 276</tt>  <tt class="py-line">    <tt class="py-name">content</tt> <tt class="py-op">=</tt> <tt class="py-name">content</tt><tt class="py-op">.</tt><tt class="py-name">decode</tt><tt class="py-op">(</tt><tt class="py-string">'utf-8'</tt><tt class="py-op">)</tt> </tt>
+<a name="L277"></a><tt class="py-lineno"> 277</tt>  <tt class="py-line">  <tt class="py-keyword">except</tt> <tt class="py-name">AttributeError</tt><tt class="py-op">:</tt> </tt>
+<a name="L278"></a><tt class="py-lineno"> 278</tt>  <tt class="py-line">    <tt class="py-keyword">pass</tt> </tt>
+<a name="L279"></a><tt class="py-lineno"> 279</tt>  <tt class="py-line"> </tt>
+<a name="L280"></a><tt class="py-lineno"> 280</tt>  <tt class="py-line">  <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
+<a name="L281"></a><tt class="py-lineno"> 281</tt>  <tt class="py-line">    <tt class="py-name">service</tt> <tt class="py-op">=</tt> <tt class="py-name">json</tt><tt class="py-op">.</tt><tt class="py-name">loads</tt><tt class="py-op">(</tt><tt class="py-name">content</tt><tt class="py-op">)</tt> </tt>
+<a name="L282"></a><tt class="py-lineno"> 282</tt>  <tt class="py-line">  <tt class="py-keyword">except</tt> <tt class="py-name">ValueError</tt> <tt class="py-keyword">as</tt> <tt class="py-name">e</tt><tt class="py-op">:</tt> </tt>
+<a name="L283"></a><tt class="py-lineno"> 283</tt>  <tt class="py-line">    <tt id="link-99" class="py-name"><a title="googleapiclient.discovery.logger" class="py-name" href="#" onclick="return doclink('link-99', 'logger', 'link-52');">logger</a></tt><tt class="py-op">.</tt><tt class="py-name">error</tt><tt class="py-op">(</tt><tt class="py-string">'Failed to parse as JSON: '</tt> <tt class="py-op">+</tt> <tt class="py-name">content</tt><tt class="py-op">)</tt> </tt>
+<a name="L284"></a><tt class="py-lineno"> 284</tt>  <tt class="py-line">    <tt class="py-keyword">raise</tt> <tt id="link-100" class="py-name"><a title="googleapiclient.errors.InvalidJsonError" class="py-name" href="#" onclick="return doclink('link-100', 'InvalidJsonError', 'link-9');">InvalidJsonError</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L285"></a><tt class="py-lineno"> 285</tt>  <tt class="py-line">  <tt class="py-keyword">if</tt> <tt class="py-name">cache_discovery</tt> <tt class="py-keyword">and</tt> <tt id="link-101" class="py-name"><a title="googleapiclient.discovery_cache.appengine_memcache.cache
+googleapiclient.discovery_cache.file_cache.cache" class="py-name" href="#" onclick="return doclink('link-101', 'cache', 'link-76');">cache</a></tt><tt class="py-op">:</tt> </tt>
+<a name="L286"></a><tt class="py-lineno"> 286</tt>  <tt class="py-line">    <tt id="link-102" class="py-name"><a title="googleapiclient.discovery_cache.appengine_memcache.cache
+googleapiclient.discovery_cache.file_cache.cache" class="py-name" href="#" onclick="return doclink('link-102', 'cache', 'link-76');">cache</a></tt><tt class="py-op">.</tt><tt id="link-103" class="py-name" targets="Method googleapiclient.discovery_cache.appengine_memcache.Cache.set()=googleapiclient.discovery_cache.appengine_memcache.Cache-class.html#set,Method googleapiclient.discovery_cache.base.Cache.set()=googleapiclient.discovery_cache.base.Cache-class.html#set,Method googleapiclient.discovery_cache.file_cache.Cache.set()=googleapiclient.discovery_cache.file_cache.Cache-class.html#set"><a title="googleapiclient.discovery_cache.appengine_memcache.Cache.set
 googleapiclient.discovery_cache.base.Cache.set
-googleapiclient.discovery_cache.file_cache.Cache.set" class="py-name" href="#" onclick="return doclink('link-102', 'set', 'link-102');">set</a></tt><tt class="py-op">(</tt><tt class="py-name">url</tt><tt class="py-op">,</tt> <tt class="py-name">content</tt><tt class="py-op">)</tt> </tt>
-<a name="L286"></a><tt class="py-lineno"> 286</tt>  <tt class="py-line">  <tt class="py-keyword">return</tt> <tt class="py-name">content</tt> </tt>
-</div><a name="L287"></a><tt class="py-lineno"> 287</tt>  <tt class="py-line"> </tt>
-<a name="build_from_document"></a><div id="build_from_document-def"><a name="L288"></a><tt class="py-lineno"> 288</tt>  <tt class="py-line"> </tt>
-<a name="L289"></a><tt class="py-lineno"> 289</tt>  <tt class="py-line"><tt class="py-decorator">@</tt><tt class="py-decorator">positional</tt><tt class="py-op">(</tt><tt class="py-number">1</tt><tt class="py-op">)</tt> </tt>
-<a name="L290"></a><tt class="py-lineno"> 290</tt> <a class="py-toggle" href="#" id="build_from_document-toggle" onclick="return toggle('build_from_document');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="googleapiclient.discovery-module.html#build_from_document">build_from_document</a><tt class="py-op">(</tt> </tt>
-<a name="L291"></a><tt class="py-lineno"> 291</tt>  <tt class="py-line">    <tt class="py-param">service</tt><tt class="py-op">,</tt> </tt>
-<a name="L292"></a><tt class="py-lineno"> 292</tt>  <tt class="py-line">    <tt class="py-param">base</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> </tt>
-<a name="L293"></a><tt class="py-lineno"> 293</tt>  <tt class="py-line">    <tt class="py-param">future</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> </tt>
-<a name="L294"></a><tt class="py-lineno"> 294</tt>  <tt class="py-line">    <tt class="py-param">http</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> </tt>
-<a name="L295"></a><tt class="py-lineno"> 295</tt>  <tt class="py-line">    <tt class="py-param">developerKey</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> </tt>
-<a name="L296"></a><tt class="py-lineno"> 296</tt>  <tt class="py-line">    <tt class="py-param">model</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> </tt>
-<a name="L297"></a><tt class="py-lineno"> 297</tt>  <tt class="py-line">    <tt class="py-param">requestBuilder</tt><tt class="py-op">=</tt><tt id="link-103" class="py-name"><a title="googleapiclient.http.HttpRequest" class="py-name" href="#" onclick="return doclink('link-103', 'HttpRequest', 'link-31');">HttpRequest</a></tt><tt class="py-op">,</tt> </tt>
-<a name="L298"></a><tt class="py-lineno"> 298</tt>  <tt class="py-line">    <tt class="py-param">credentials</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="build_from_document-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="build_from_document-expanded"><a name="L299"></a><tt class="py-lineno"> 299</tt>  <tt class="py-line">  <tt class="py-docstring">"""Create a Resource for interacting with an API.</tt> </tt>
-<a name="L300"></a><tt class="py-lineno"> 300</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L301"></a><tt class="py-lineno"> 301</tt>  <tt class="py-line"><tt class="py-docstring">  Same as `build()`, but constructs the Resource object from a discovery</tt> </tt>
-<a name="L302"></a><tt class="py-lineno"> 302</tt>  <tt class="py-line"><tt class="py-docstring">  document that is it given, as opposed to retrieving one over HTTP.</tt> </tt>
-<a name="L303"></a><tt class="py-lineno"> 303</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L304"></a><tt class="py-lineno"> 304</tt>  <tt class="py-line"><tt class="py-docstring">  Args:</tt> </tt>
-<a name="L305"></a><tt class="py-lineno"> 305</tt>  <tt class="py-line"><tt class="py-docstring">    service: string or object, the JSON discovery document describing the API.</tt> </tt>
-<a name="L306"></a><tt class="py-lineno"> 306</tt>  <tt class="py-line"><tt class="py-docstring">      The value passed in may either be the JSON string or the deserialized</tt> </tt>
-<a name="L307"></a><tt class="py-lineno"> 307</tt>  <tt class="py-line"><tt class="py-docstring">      JSON.</tt> </tt>
-<a name="L308"></a><tt class="py-lineno"> 308</tt>  <tt class="py-line"><tt class="py-docstring">    base: string, base URI for all HTTP requests, usually the discovery URI.</tt> </tt>
-<a name="L309"></a><tt class="py-lineno"> 309</tt>  <tt class="py-line"><tt class="py-docstring">      This parameter is no longer used as rootUrl and servicePath are included</tt> </tt>
-<a name="L310"></a><tt class="py-lineno"> 310</tt>  <tt class="py-line"><tt class="py-docstring">      within the discovery document. (deprecated)</tt> </tt>
-<a name="L311"></a><tt class="py-lineno"> 311</tt>  <tt class="py-line"><tt class="py-docstring">    future: string, discovery document with future capabilities (deprecated).</tt> </tt>
-<a name="L312"></a><tt class="py-lineno"> 312</tt>  <tt class="py-line"><tt class="py-docstring">    http: httplib2.Http, An instance of httplib2.Http or something that acts</tt> </tt>
-<a name="L313"></a><tt class="py-lineno"> 313</tt>  <tt class="py-line"><tt class="py-docstring">      like it that HTTP requests will be made through.</tt> </tt>
-<a name="L314"></a><tt class="py-lineno"> 314</tt>  <tt class="py-line"><tt class="py-docstring">    developerKey: string, Key for controlling API usage, generated</tt> </tt>
-<a name="L315"></a><tt class="py-lineno"> 315</tt>  <tt class="py-line"><tt class="py-docstring">      from the API Console.</tt> </tt>
-<a name="L316"></a><tt class="py-lineno"> 316</tt>  <tt class="py-line"><tt class="py-docstring">    model: Model class instance that serializes and de-serializes requests and</tt> </tt>
-<a name="L317"></a><tt class="py-lineno"> 317</tt>  <tt class="py-line"><tt class="py-docstring">      responses.</tt> </tt>
-<a name="L318"></a><tt class="py-lineno"> 318</tt>  <tt class="py-line"><tt class="py-docstring">    requestBuilder: Takes an http request and packages it up to be executed.</tt> </tt>
-<a name="L319"></a><tt class="py-lineno"> 319</tt>  <tt class="py-line"><tt class="py-docstring">    credentials: object, credentials to be used for authentication.</tt> </tt>
-<a name="L320"></a><tt class="py-lineno"> 320</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L321"></a><tt class="py-lineno"> 321</tt>  <tt class="py-line"><tt class="py-docstring">  Returns:</tt> </tt>
-<a name="L322"></a><tt class="py-lineno"> 322</tt>  <tt class="py-line"><tt class="py-docstring">    A Resource object with methods for interacting with the service.</tt> </tt>
-<a name="L323"></a><tt class="py-lineno"> 323</tt>  <tt class="py-line"><tt class="py-docstring">  """</tt> </tt>
-<a name="L324"></a><tt class="py-lineno"> 324</tt>  <tt class="py-line"> </tt>
-<a name="L325"></a><tt class="py-lineno"> 325</tt>  <tt class="py-line">  <tt class="py-keyword">if</tt> <tt id="link-104" class="py-name"><a title="googleapiclient.http" class="py-name" href="#" onclick="return doclink('link-104', 'http', 'link-21');">http</a></tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
-<a name="L326"></a><tt class="py-lineno"> 326</tt>  <tt class="py-line">    <tt id="link-105" class="py-name"><a title="googleapiclient.http" class="py-name" href="#" onclick="return doclink('link-105', 'http', 'link-21');">http</a></tt> <tt class="py-op">=</tt> <tt class="py-name">httplib2</tt><tt class="py-op">.</tt><tt class="py-name">Http</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+googleapiclient.discovery_cache.file_cache.Cache.set" class="py-name" href="#" onclick="return doclink('link-103', 'set', 'link-103');">set</a></tt><tt class="py-op">(</tt><tt class="py-name">url</tt><tt class="py-op">,</tt> <tt class="py-name">content</tt><tt class="py-op">)</tt> </tt>
+<a name="L287"></a><tt class="py-lineno"> 287</tt>  <tt class="py-line">  <tt class="py-keyword">return</tt> <tt class="py-name">content</tt> </tt>
+</div><a name="L288"></a><tt class="py-lineno"> 288</tt>  <tt class="py-line"> </tt>
+<a name="build_from_document"></a><div id="build_from_document-def"><a name="L289"></a><tt class="py-lineno"> 289</tt>  <tt class="py-line"> </tt>
+<a name="L290"></a><tt class="py-lineno"> 290</tt>  <tt class="py-line"><tt class="py-decorator">@</tt><tt class="py-decorator">positional</tt><tt class="py-op">(</tt><tt class="py-number">1</tt><tt class="py-op">)</tt> </tt>
+<a name="L291"></a><tt class="py-lineno"> 291</tt> <a class="py-toggle" href="#" id="build_from_document-toggle" onclick="return toggle('build_from_document');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="googleapiclient.discovery-module.html#build_from_document">build_from_document</a><tt class="py-op">(</tt> </tt>
+<a name="L292"></a><tt class="py-lineno"> 292</tt>  <tt class="py-line">    <tt class="py-param">service</tt><tt class="py-op">,</tt> </tt>
+<a name="L293"></a><tt class="py-lineno"> 293</tt>  <tt class="py-line">    <tt class="py-param">base</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> </tt>
+<a name="L294"></a><tt class="py-lineno"> 294</tt>  <tt class="py-line">    <tt class="py-param">future</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> </tt>
+<a name="L295"></a><tt class="py-lineno"> 295</tt>  <tt class="py-line">    <tt class="py-param">http</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> </tt>
+<a name="L296"></a><tt class="py-lineno"> 296</tt>  <tt class="py-line">    <tt class="py-param">developerKey</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> </tt>
+<a name="L297"></a><tt class="py-lineno"> 297</tt>  <tt class="py-line">    <tt class="py-param">model</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> </tt>
+<a name="L298"></a><tt class="py-lineno"> 298</tt>  <tt class="py-line">    <tt class="py-param">requestBuilder</tt><tt class="py-op">=</tt><tt id="link-104" class="py-name"><a title="googleapiclient.http.HttpRequest" class="py-name" href="#" onclick="return doclink('link-104', 'HttpRequest', 'link-33');">HttpRequest</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L299"></a><tt class="py-lineno"> 299</tt>  <tt class="py-line">    <tt class="py-param">credentials</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="build_from_document-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="build_from_document-expanded"><a name="L300"></a><tt class="py-lineno"> 300</tt>  <tt class="py-line">  <tt class="py-docstring">"""Create a Resource for interacting with an API.</tt> </tt>
+<a name="L301"></a><tt class="py-lineno"> 301</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L302"></a><tt class="py-lineno"> 302</tt>  <tt class="py-line"><tt class="py-docstring">  Same as `build()`, but constructs the Resource object from a discovery</tt> </tt>
+<a name="L303"></a><tt class="py-lineno"> 303</tt>  <tt class="py-line"><tt class="py-docstring">  document that is it given, as opposed to retrieving one over HTTP.</tt> </tt>
+<a name="L304"></a><tt class="py-lineno"> 304</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L305"></a><tt class="py-lineno"> 305</tt>  <tt class="py-line"><tt class="py-docstring">  Args:</tt> </tt>
+<a name="L306"></a><tt class="py-lineno"> 306</tt>  <tt class="py-line"><tt class="py-docstring">    service: string or object, the JSON discovery document describing the API.</tt> </tt>
+<a name="L307"></a><tt class="py-lineno"> 307</tt>  <tt class="py-line"><tt class="py-docstring">      The value passed in may either be the JSON string or the deserialized</tt> </tt>
+<a name="L308"></a><tt class="py-lineno"> 308</tt>  <tt class="py-line"><tt class="py-docstring">      JSON.</tt> </tt>
+<a name="L309"></a><tt class="py-lineno"> 309</tt>  <tt class="py-line"><tt class="py-docstring">    base: string, base URI for all HTTP requests, usually the discovery URI.</tt> </tt>
+<a name="L310"></a><tt class="py-lineno"> 310</tt>  <tt class="py-line"><tt class="py-docstring">      This parameter is no longer used as rootUrl and servicePath are included</tt> </tt>
+<a name="L311"></a><tt class="py-lineno"> 311</tt>  <tt class="py-line"><tt class="py-docstring">      within the discovery document. (deprecated)</tt> </tt>
+<a name="L312"></a><tt class="py-lineno"> 312</tt>  <tt class="py-line"><tt class="py-docstring">    future: string, discovery document with future capabilities (deprecated).</tt> </tt>
+<a name="L313"></a><tt class="py-lineno"> 313</tt>  <tt class="py-line"><tt class="py-docstring">    http: httplib2.Http, An instance of httplib2.Http or something that acts</tt> </tt>
+<a name="L314"></a><tt class="py-lineno"> 314</tt>  <tt class="py-line"><tt class="py-docstring">      like it that HTTP requests will be made through.</tt> </tt>
+<a name="L315"></a><tt class="py-lineno"> 315</tt>  <tt class="py-line"><tt class="py-docstring">    developerKey: string, Key for controlling API usage, generated</tt> </tt>
+<a name="L316"></a><tt class="py-lineno"> 316</tt>  <tt class="py-line"><tt class="py-docstring">      from the API Console.</tt> </tt>
+<a name="L317"></a><tt class="py-lineno"> 317</tt>  <tt class="py-line"><tt class="py-docstring">    model: Model class instance that serializes and de-serializes requests and</tt> </tt>
+<a name="L318"></a><tt class="py-lineno"> 318</tt>  <tt class="py-line"><tt class="py-docstring">      responses.</tt> </tt>
+<a name="L319"></a><tt class="py-lineno"> 319</tt>  <tt class="py-line"><tt class="py-docstring">    requestBuilder: Takes an http request and packages it up to be executed.</tt> </tt>
+<a name="L320"></a><tt class="py-lineno"> 320</tt>  <tt class="py-line"><tt class="py-docstring">    credentials: oauth2client.Credentials or</tt> </tt>
+<a name="L321"></a><tt class="py-lineno"> 321</tt>  <tt class="py-line"><tt class="py-docstring">      google.auth.credentials.Credentials, credentials to be used for</tt> </tt>
+<a name="L322"></a><tt class="py-lineno"> 322</tt>  <tt class="py-line"><tt class="py-docstring">      authentication.</tt> </tt>
+<a name="L323"></a><tt class="py-lineno"> 323</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L324"></a><tt class="py-lineno"> 324</tt>  <tt class="py-line"><tt class="py-docstring">  Returns:</tt> </tt>
+<a name="L325"></a><tt class="py-lineno"> 325</tt>  <tt class="py-line"><tt class="py-docstring">    A Resource object with methods for interacting with the service.</tt> </tt>
+<a name="L326"></a><tt class="py-lineno"> 326</tt>  <tt class="py-line"><tt class="py-docstring">  """</tt> </tt>
 <a name="L327"></a><tt class="py-lineno"> 327</tt>  <tt class="py-line"> </tt>
-<a name="L328"></a><tt class="py-lineno"> 328</tt>  <tt class="py-line">  <tt class="py-comment"># future is no longer used.</tt> </tt>
-<a name="L329"></a><tt class="py-lineno"> 329</tt>  <tt class="py-line">  <tt class="py-name">future</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-op">}</tt> </tt>
+<a name="L328"></a><tt class="py-lineno"> 328</tt>  <tt class="py-line">  <tt class="py-keyword">if</tt> <tt id="link-105" class="py-name"><a title="googleapiclient.http" class="py-name" href="#" onclick="return doclink('link-105', 'http', 'link-23');">http</a></tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt> <tt class="py-keyword">and</tt> <tt class="py-name">credentials</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L329"></a><tt class="py-lineno"> 329</tt>  <tt class="py-line">    <tt class="py-keyword">raise</tt> <tt class="py-name">ValueError</tt><tt class="py-op">(</tt><tt class="py-string">'Arguments http and credentials are mutually exclusive.'</tt><tt class="py-op">)</tt> </tt>
 <a name="L330"></a><tt class="py-lineno"> 330</tt>  <tt class="py-line"> </tt>
 <a name="L331"></a><tt class="py-lineno"> 331</tt>  <tt class="py-line">  <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">service</tt><tt class="py-op">,</tt> <tt class="py-name">six</tt><tt class="py-op">.</tt><tt class="py-name">string_types</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
 <a name="L332"></a><tt class="py-lineno"> 332</tt>  <tt class="py-line">    <tt class="py-name">service</tt> <tt class="py-op">=</tt> <tt class="py-name">json</tt><tt class="py-op">.</tt><tt class="py-name">loads</tt><tt class="py-op">(</tt><tt class="py-name">service</tt><tt class="py-op">)</tt> </tt>
 <a name="L333"></a><tt class="py-lineno"> 333</tt>  <tt class="py-line"> </tt>
-<a name="L334"></a><tt class="py-lineno"> 334</tt>  <tt class="py-line">  <tt class="py-keyword">if</tt>  <tt class="py-string">'rootUrl'</tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt class="py-name">service</tt> <tt class="py-keyword">and</tt> <tt class="py-op">(</tt><tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt id="link-106" class="py-name"><a title="googleapiclient.http" class="py-name" href="#" onclick="return doclink('link-106', 'http', 'link-21');">http</a></tt><tt class="py-op">,</tt> <tt class="py-op">(</tt><tt id="link-107" class="py-name"><a title="googleapiclient.http.HttpMock" class="py-name" href="#" onclick="return doclink('link-107', 'HttpMock', 'link-25');">HttpMock</a></tt><tt class="py-op">,</tt> </tt>
-<a name="L335"></a><tt class="py-lineno"> 335</tt>  <tt class="py-line">                                                      <tt id="link-108" class="py-name"><a title="googleapiclient.http.HttpMockSequence" class="py-name" href="#" onclick="return doclink('link-108', 'HttpMockSequence', 'link-28');">HttpMockSequence</a></tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="L336"></a><tt class="py-lineno"> 336</tt>  <tt class="py-line">      <tt id="link-109" class="py-name"><a title="googleapiclient.discovery.logger" class="py-name" href="#" onclick="return doclink('link-109', 'logger', 'link-50');">logger</a></tt><tt class="py-op">.</tt><tt class="py-name">error</tt><tt class="py-op">(</tt><tt class="py-string">"You are using HttpMock or HttpMockSequence without"</tt> <tt class="py-op">+</tt> </tt>
+<a name="L334"></a><tt class="py-lineno"> 334</tt>  <tt class="py-line">  <tt class="py-keyword">if</tt>  <tt class="py-string">'rootUrl'</tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt class="py-name">service</tt> <tt class="py-keyword">and</tt> <tt class="py-op">(</tt><tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt id="link-106" class="py-name"><a title="googleapiclient.http" class="py-name" href="#" onclick="return doclink('link-106', 'http', 'link-23');">http</a></tt><tt class="py-op">,</tt> <tt class="py-op">(</tt><tt id="link-107" class="py-name"><a title="googleapiclient.http.HttpMock" class="py-name" href="#" onclick="return doclink('link-107', 'HttpMock', 'link-27');">HttpMock</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L335"></a><tt class="py-lineno"> 335</tt>  <tt class="py-line">                                                      <tt id="link-108" class="py-name"><a title="googleapiclient.http.HttpMockSequence" class="py-name" href="#" onclick="return doclink('link-108', 'HttpMockSequence', 'link-30');">HttpMockSequence</a></tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L336"></a><tt class="py-lineno"> 336</tt>  <tt class="py-line">      <tt id="link-109" class="py-name"><a title="googleapiclient.discovery.logger" class="py-name" href="#" onclick="return doclink('link-109', 'logger', 'link-52');">logger</a></tt><tt class="py-op">.</tt><tt class="py-name">error</tt><tt class="py-op">(</tt><tt class="py-string">"You are using HttpMock or HttpMockSequence without"</tt> <tt class="py-op">+</tt> </tt>
 <a name="L337"></a><tt class="py-lineno"> 337</tt>  <tt class="py-line">                   <tt class="py-string">"having the service discovery doc in cache. Try calling "</tt> <tt class="py-op">+</tt> </tt>
 <a name="L338"></a><tt class="py-lineno"> 338</tt>  <tt class="py-line">                   <tt class="py-string">"build() without mocking once first to populate the "</tt> <tt class="py-op">+</tt> </tt>
 <a name="L339"></a><tt class="py-lineno"> 339</tt>  <tt class="py-line">                   <tt class="py-string">"cache."</tt><tt class="py-op">)</tt> </tt>
-<a name="L340"></a><tt class="py-lineno"> 340</tt>  <tt class="py-line">      <tt class="py-keyword">raise</tt> <tt id="link-110" class="py-name"><a title="googleapiclient.errors.InvalidJsonError" class="py-name" href="#" onclick="return doclink('link-110', 'InvalidJsonError', 'link-7');">InvalidJsonError</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L340"></a><tt class="py-lineno"> 340</tt>  <tt class="py-line">      <tt class="py-keyword">raise</tt> <tt id="link-110" class="py-name"><a title="googleapiclient.errors.InvalidJsonError" class="py-name" href="#" onclick="return doclink('link-110', 'InvalidJsonError', 'link-9');">InvalidJsonError</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
 <a name="L341"></a><tt class="py-lineno"> 341</tt>  <tt class="py-line"> </tt>
-<a name="L342"></a><tt class="py-lineno"> 342</tt>  <tt class="py-line">  <tt id="link-111" class="py-name"><a title="googleapiclient.discovery_cache.base" class="py-name" href="#" onclick="return doclink('link-111', 'base', 'link-77');">base</a></tt> <tt class="py-op">=</tt> <tt class="py-name">urljoin</tt><tt class="py-op">(</tt><tt class="py-name">service</tt><tt class="py-op">[</tt><tt class="py-string">'rootUrl'</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> <tt class="py-name">service</tt><tt class="py-op">[</tt><tt class="py-string">'servicePath'</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
-<a name="L343"></a><tt class="py-lineno"> 343</tt>  <tt class="py-line">  <tt id="link-112" class="py-name"><a title="googleapiclient.schema" class="py-name" href="#" onclick="return doclink('link-112', 'schema', 'link-48');">schema</a></tt> <tt class="py-op">=</tt> <tt id="link-113" class="py-name"><a title="googleapiclient.schema.Schemas" class="py-name" href="#" onclick="return doclink('link-113', 'Schemas', 'link-49');">Schemas</a></tt><tt class="py-op">(</tt><tt class="py-name">service</tt><tt class="py-op">)</tt> </tt>
+<a name="L342"></a><tt class="py-lineno"> 342</tt>  <tt class="py-line">  <tt id="link-111" class="py-name"><a title="googleapiclient.discovery_cache.base" class="py-name" href="#" onclick="return doclink('link-111', 'base', 'link-78');">base</a></tt> <tt class="py-op">=</tt> <tt class="py-name">urljoin</tt><tt class="py-op">(</tt><tt class="py-name">service</tt><tt class="py-op">[</tt><tt class="py-string">'rootUrl'</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> <tt class="py-name">service</tt><tt class="py-op">[</tt><tt class="py-string">'servicePath'</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L343"></a><tt class="py-lineno"> 343</tt>  <tt class="py-line">  <tt id="link-112" class="py-name"><a title="googleapiclient.schema" class="py-name" href="#" onclick="return doclink('link-112', 'schema', 'link-50');">schema</a></tt> <tt class="py-op">=</tt> <tt id="link-113" class="py-name"><a title="googleapiclient.schema.Schemas" class="py-name" href="#" onclick="return doclink('link-113', 'Schemas', 'link-51');">Schemas</a></tt><tt class="py-op">(</tt><tt class="py-name">service</tt><tt class="py-op">)</tt> </tt>
 <a name="L344"></a><tt class="py-lineno"> 344</tt>  <tt class="py-line"> </tt>
-<a name="L345"></a><tt class="py-lineno"> 345</tt>  <tt class="py-line">  <tt class="py-keyword">if</tt> <tt class="py-name">credentials</tt><tt class="py-op">:</tt> </tt>
-<a name="L346"></a><tt class="py-lineno"> 346</tt>  <tt class="py-line">    <tt class="py-comment"># If credentials were passed in, we could have two cases:</tt> </tt>
-<a name="L347"></a><tt class="py-lineno"> 347</tt>  <tt class="py-line">    <tt class="py-comment"># 1. the scopes were specified, in which case the given credentials</tt> </tt>
-<a name="L348"></a><tt class="py-lineno"> 348</tt>  <tt class="py-line">    <tt class="py-comment">#    are used for authorizing the http;</tt> </tt>
-<a name="L349"></a><tt class="py-lineno"> 349</tt>  <tt class="py-line">    <tt class="py-comment"># 2. the scopes were not provided (meaning the Application Default</tt> </tt>
-<a name="L350"></a><tt class="py-lineno"> 350</tt>  <tt class="py-line">    <tt class="py-comment">#    Credentials are to be used). In this case, the Application Default</tt> </tt>
-<a name="L351"></a><tt class="py-lineno"> 351</tt>  <tt class="py-line">    <tt class="py-comment">#    Credentials are built and used instead of the original credentials.</tt> </tt>
-<a name="L352"></a><tt class="py-lineno"> 352</tt>  <tt class="py-line">    <tt class="py-comment">#    If there are no scopes found (meaning the given service requires no</tt> </tt>
-<a name="L353"></a><tt class="py-lineno"> 353</tt>  <tt class="py-line">    <tt class="py-comment">#    authentication), there is no authorization of the http.</tt> </tt>
-<a name="L354"></a><tt class="py-lineno"> 354</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-op">(</tt><tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">credentials</tt><tt class="py-op">,</tt> <tt class="py-name">GoogleCredentials</tt><tt class="py-op">)</tt> <tt class="py-keyword">and</tt> </tt>
-<a name="L355"></a><tt class="py-lineno"> 355</tt>  <tt class="py-line">        <tt class="py-name">credentials</tt><tt class="py-op">.</tt><tt class="py-name">create_scoped_required</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="L356"></a><tt class="py-lineno"> 356</tt>  <tt class="py-line">      <tt class="py-name">scopes</tt> <tt class="py-op">=</tt> <tt class="py-name">service</tt><tt class="py-op">.</tt><tt id="link-114" class="py-name"><a title="googleapiclient.discovery_cache.appengine_memcache.Cache.get
+<a name="L345"></a><tt class="py-lineno"> 345</tt>  <tt class="py-line">  <tt class="py-comment"># If the http client is not specified, then we must construct an http client</tt> </tt>
+<a name="L346"></a><tt class="py-lineno"> 346</tt>  <tt class="py-line">  <tt class="py-comment"># to make requests. If the service has scopes, then we also need to setup</tt> </tt>
+<a name="L347"></a><tt class="py-lineno"> 347</tt>  <tt class="py-line">  <tt class="py-comment"># authentication.</tt> </tt>
+<a name="L348"></a><tt class="py-lineno"> 348</tt>  <tt class="py-line">  <tt class="py-keyword">if</tt> <tt id="link-114" class="py-name"><a title="googleapiclient.http" class="py-name" href="#" onclick="return doclink('link-114', 'http', 'link-23');">http</a></tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L349"></a><tt class="py-lineno"> 349</tt>  <tt class="py-line">    <tt class="py-comment"># Does the service require scopes?</tt> </tt>
+<a name="L350"></a><tt class="py-lineno"> 350</tt>  <tt class="py-line">    <tt class="py-name">scopes</tt> <tt class="py-op">=</tt> <tt class="py-name">list</tt><tt class="py-op">(</tt> </tt>
+<a name="L351"></a><tt class="py-lineno"> 351</tt>  <tt class="py-line">      <tt class="py-name">service</tt><tt class="py-op">.</tt><tt id="link-115" class="py-name"><a title="googleapiclient.discovery_cache.appengine_memcache.Cache.get
 googleapiclient.discovery_cache.base.Cache.get
 googleapiclient.discovery_cache.file_cache.Cache.get
-googleapiclient.schema.Schemas.get" class="py-name" href="#" onclick="return doclink('link-114', 'get', 'link-93');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">'auth'</tt><tt class="py-op">,</tt> <tt class="py-op">{</tt><tt class="py-op">}</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-115" class="py-name"><a title="googleapiclient.discovery_cache.appengine_memcache.Cache.get
+googleapiclient.schema.Schemas.get" class="py-name" href="#" onclick="return doclink('link-115', 'get', 'link-94');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">'auth'</tt><tt class="py-op">,</tt> <tt class="py-op">{</tt><tt class="py-op">}</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-116" class="py-name"><a title="googleapiclient.discovery_cache.appengine_memcache.Cache.get
 googleapiclient.discovery_cache.base.Cache.get
 googleapiclient.discovery_cache.file_cache.Cache.get
-googleapiclient.schema.Schemas.get" class="py-name" href="#" onclick="return doclink('link-115', 'get', 'link-93');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">'oauth2'</tt><tt class="py-op">,</tt> <tt class="py-op">{</tt><tt class="py-op">}</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-116" class="py-name"><a title="googleapiclient.discovery_cache.appengine_memcache.Cache.get
+googleapiclient.schema.Schemas.get" class="py-name" href="#" onclick="return doclink('link-116', 'get', 'link-94');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">'oauth2'</tt><tt class="py-op">,</tt> <tt class="py-op">{</tt><tt class="py-op">}</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-117" class="py-name"><a title="googleapiclient.discovery_cache.appengine_memcache.Cache.get
 googleapiclient.discovery_cache.base.Cache.get
 googleapiclient.discovery_cache.file_cache.Cache.get
-googleapiclient.schema.Schemas.get" class="py-name" href="#" onclick="return doclink('link-116', 'get', 'link-93');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">'scopes'</tt><tt class="py-op">,</tt> <tt class="py-op">{</tt><tt class="py-op">}</tt><tt class="py-op">)</tt> </tt>
-<a name="L357"></a><tt class="py-lineno"> 357</tt>  <tt class="py-line">      <tt class="py-keyword">if</tt> <tt class="py-name">scopes</tt><tt class="py-op">:</tt> </tt>
-<a name="L358"></a><tt class="py-lineno"> 358</tt>  <tt class="py-line">        <tt class="py-name">credentials</tt> <tt class="py-op">=</tt> <tt class="py-name">credentials</tt><tt class="py-op">.</tt><tt class="py-name">create_scoped</tt><tt class="py-op">(</tt><tt class="py-name">list</tt><tt class="py-op">(</tt><tt class="py-name">scopes</tt><tt class="py-op">.</tt><tt class="py-name">keys</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L359"></a><tt class="py-lineno"> 359</tt>  <tt class="py-line">      <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
-<a name="L360"></a><tt class="py-lineno"> 360</tt>  <tt class="py-line">        <tt class="py-comment"># No need to authorize the http object</tt> </tt>
-<a name="L361"></a><tt class="py-lineno"> 361</tt>  <tt class="py-line">        <tt class="py-comment"># if the service does not require authentication.</tt> </tt>
-<a name="L362"></a><tt class="py-lineno"> 362</tt>  <tt class="py-line">        <tt class="py-name">credentials</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
-<a name="L363"></a><tt class="py-lineno"> 363</tt>  <tt class="py-line"> </tt>
-<a name="L364"></a><tt class="py-lineno"> 364</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">credentials</tt><tt class="py-op">:</tt> </tt>
-<a name="L365"></a><tt class="py-lineno"> 365</tt>  <tt class="py-line">      <tt id="link-117" class="py-name"><a title="googleapiclient.http" class="py-name" href="#" onclick="return doclink('link-117', 'http', 'link-21');">http</a></tt> <tt class="py-op">=</tt> <tt class="py-name">credentials</tt><tt class="py-op">.</tt><tt class="py-name">authorize</tt><tt class="py-op">(</tt><tt id="link-118" class="py-name"><a title="googleapiclient.http" class="py-name" href="#" onclick="return doclink('link-118', 'http', 'link-21');">http</a></tt><tt class="py-op">)</tt> </tt>
-<a name="L366"></a><tt class="py-lineno"> 366</tt>  <tt class="py-line"> </tt>
-<a name="L367"></a><tt class="py-lineno"> 367</tt>  <tt class="py-line">  <tt class="py-keyword">if</tt> <tt id="link-119" class="py-name"><a title="googleapiclient.model" class="py-name" href="#" onclick="return doclink('link-119', 'model', 'link-39');">model</a></tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
-<a name="L368"></a><tt class="py-lineno"> 368</tt>  <tt class="py-line">    <tt class="py-name">features</tt> <tt class="py-op">=</tt> <tt class="py-name">service</tt><tt class="py-op">.</tt><tt id="link-120" class="py-name"><a title="googleapiclient.discovery_cache.appengine_memcache.Cache.get
+googleapiclient.schema.Schemas.get" class="py-name" href="#" onclick="return doclink('link-117', 'get', 'link-94');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">'scopes'</tt><tt class="py-op">,</tt> <tt class="py-op">{</tt><tt class="py-op">}</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">keys</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L352"></a><tt class="py-lineno"> 352</tt>  <tt class="py-line"> </tt>
+<a name="L353"></a><tt class="py-lineno"> 353</tt>  <tt class="py-line">    <tt class="py-comment"># If so, then the we need to setup authentication.</tt> </tt>
+<a name="L354"></a><tt class="py-lineno"> 354</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">scopes</tt><tt class="py-op">:</tt> </tt>
+<a name="L355"></a><tt class="py-lineno"> 355</tt>  <tt class="py-line">      <tt class="py-comment"># If the user didn't pass in credentials, attempt to acquire application</tt> </tt>
+<a name="L356"></a><tt class="py-lineno"> 356</tt>  <tt class="py-line">      <tt class="py-comment"># default credentials.</tt> </tt>
+<a name="L357"></a><tt class="py-lineno"> 357</tt>  <tt class="py-line">      <tt class="py-keyword">if</tt> <tt class="py-name">credentials</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L358"></a><tt class="py-lineno"> 358</tt>  <tt class="py-line">        <tt class="py-name">credentials</tt> <tt class="py-op">=</tt> <tt id="link-118" class="py-name"><a title="googleapiclient._auth" class="py-name" href="#" onclick="return doclink('link-118', '_auth', 'link-1');">_auth</a></tt><tt class="py-op">.</tt><tt id="link-119" class="py-name" targets="Function googleapiclient._auth.default_credentials()=googleapiclient._auth-module.html#default_credentials"><a title="googleapiclient._auth.default_credentials" class="py-name" href="#" onclick="return doclink('link-119', 'default_credentials', 'link-119');">default_credentials</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L359"></a><tt class="py-lineno"> 359</tt>  <tt class="py-line"> </tt>
+<a name="L360"></a><tt class="py-lineno"> 360</tt>  <tt class="py-line">      <tt class="py-comment"># The credentials need to be scoped.</tt> </tt>
+<a name="L361"></a><tt class="py-lineno"> 361</tt>  <tt class="py-line">      <tt class="py-name">credentials</tt> <tt class="py-op">=</tt> <tt id="link-120" class="py-name"><a title="googleapiclient._auth" class="py-name" href="#" onclick="return doclink('link-120', '_auth', 'link-1');">_auth</a></tt><tt class="py-op">.</tt><tt id="link-121" class="py-name" targets="Function googleapiclient._auth.with_scopes()=googleapiclient._auth-module.html#with_scopes"><a title="googleapiclient._auth.with_scopes" class="py-name" href="#" onclick="return doclink('link-121', 'with_scopes', 'link-121');">with_scopes</a></tt><tt class="py-op">(</tt><tt class="py-name">credentials</tt><tt class="py-op">,</tt> <tt class="py-name">scopes</tt><tt class="py-op">)</tt> </tt>
+<a name="L362"></a><tt class="py-lineno"> 362</tt>  <tt class="py-line"> </tt>
+<a name="L363"></a><tt class="py-lineno"> 363</tt>  <tt class="py-line">      <tt class="py-comment"># Create an authorized http instance</tt> </tt>
+<a name="L364"></a><tt class="py-lineno"> 364</tt>  <tt class="py-line">      <tt id="link-122" class="py-name"><a title="googleapiclient.http" class="py-name" href="#" onclick="return doclink('link-122', 'http', 'link-23');">http</a></tt> <tt class="py-op">=</tt> <tt id="link-123" class="py-name"><a title="googleapiclient._auth" class="py-name" href="#" onclick="return doclink('link-123', '_auth', 'link-1');">_auth</a></tt><tt class="py-op">.</tt><tt id="link-124" class="py-name" targets="Function googleapiclient._auth.authorized_http()=googleapiclient._auth-module.html#authorized_http"><a title="googleapiclient._auth.authorized_http" class="py-name" href="#" onclick="return doclink('link-124', 'authorized_http', 'link-124');">authorized_http</a></tt><tt class="py-op">(</tt><tt class="py-name">credentials</tt><tt class="py-op">)</tt> </tt>
+<a name="L365"></a><tt class="py-lineno"> 365</tt>  <tt class="py-line"> </tt>
+<a name="L366"></a><tt class="py-lineno"> 366</tt>  <tt class="py-line">    <tt class="py-comment"># If the service doesn't require scopes then there is no need for</tt> </tt>
+<a name="L367"></a><tt class="py-lineno"> 367</tt>  <tt class="py-line">    <tt class="py-comment"># authentication.</tt> </tt>
+<a name="L368"></a><tt class="py-lineno"> 368</tt>  <tt class="py-line">    <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L369"></a><tt class="py-lineno"> 369</tt>  <tt class="py-line">      <tt id="link-125" class="py-name"><a title="googleapiclient.http" class="py-name" href="#" onclick="return doclink('link-125', 'http', 'link-23');">http</a></tt> <tt class="py-op">=</tt> <tt class="py-name">httplib2</tt><tt class="py-op">.</tt><tt class="py-name">Http</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L370"></a><tt class="py-lineno"> 370</tt>  <tt class="py-line"> </tt>
+<a name="L371"></a><tt class="py-lineno"> 371</tt>  <tt class="py-line">  <tt class="py-keyword">if</tt> <tt id="link-126" class="py-name"><a title="googleapiclient.model" class="py-name" href="#" onclick="return doclink('link-126', 'model', 'link-41');">model</a></tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L372"></a><tt class="py-lineno"> 372</tt>  <tt class="py-line">    <tt class="py-name">features</tt> <tt class="py-op">=</tt> <tt class="py-name">service</tt><tt class="py-op">.</tt><tt id="link-127" class="py-name"><a title="googleapiclient.discovery_cache.appengine_memcache.Cache.get
 googleapiclient.discovery_cache.base.Cache.get
 googleapiclient.discovery_cache.file_cache.Cache.get
-googleapiclient.schema.Schemas.get" class="py-name" href="#" onclick="return doclink('link-120', 'get', 'link-93');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">'features'</tt><tt class="py-op">,</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
-<a name="L369"></a><tt class="py-lineno"> 369</tt>  <tt class="py-line">    <tt id="link-121" class="py-name"><a title="googleapiclient.model" class="py-name" href="#" onclick="return doclink('link-121', 'model', 'link-39');">model</a></tt> <tt class="py-op">=</tt> <tt id="link-122" class="py-name"><a title="googleapiclient.model.JsonModel" class="py-name" href="#" onclick="return doclink('link-122', 'JsonModel', 'link-40');">JsonModel</a></tt><tt class="py-op">(</tt><tt class="py-string">'dataWrapper'</tt> <tt class="py-keyword">in</tt> <tt class="py-name">features</tt><tt class="py-op">)</tt> </tt>
-<a name="L370"></a><tt class="py-lineno"> 370</tt>  <tt class="py-line">  <tt class="py-keyword">return</tt> <tt id="link-123" class="py-name" targets="Class googleapiclient.discovery.Resource=googleapiclient.discovery.Resource-class.html"><a title="googleapiclient.discovery.Resource" class="py-name" href="#" onclick="return doclink('link-123', 'Resource', 'link-123');">Resource</a></tt><tt class="py-op">(</tt><tt id="link-124" class="py-name"><a title="googleapiclient.http" class="py-name" href="#" onclick="return doclink('link-124', 'http', 'link-21');">http</a></tt><tt class="py-op">=</tt><tt id="link-125" class="py-name"><a title="googleapiclient.http" class="py-name" href="#" onclick="return doclink('link-125', 'http', 'link-21');">http</a></tt><tt class="py-op">,</tt> <tt class="py-name">baseUrl</tt><tt class="py-op">=</tt><tt id="link-126" class="py-name"><a title="googleapiclient.discovery_cache.base" class="py-name" href="#" onclick="return doclink('link-126', 'base', 'link-77');">base</a></tt><tt class="py-op">,</tt> <tt id="link-127" class="py-name"><a title="googleapiclient.model" class="py-name" href="#" onclick="return doclink('link-127', 'model', 'link-39');">model</a></tt><tt class="py-op">=</tt><tt id="link-128" class="py-name"><a title="googleapiclient.model" class="py-name" href="#" onclick="return doclink('link-128', 'model', 'link-39');">model</a></tt><tt class="py-op">,</tt> </tt>
-<a name="L371"></a><tt class="py-lineno"> 371</tt>  <tt class="py-line">                  <tt class="py-name">developerKey</tt><tt class="py-op">=</tt><tt class="py-name">developerKey</tt><tt class="py-op">,</tt> <tt class="py-name">requestBuilder</tt><tt class="py-op">=</tt><tt class="py-name">requestBuilder</tt><tt class="py-op">,</tt> </tt>
-<a name="L372"></a><tt class="py-lineno"> 372</tt>  <tt class="py-line">                  <tt class="py-name">resourceDesc</tt><tt class="py-op">=</tt><tt class="py-name">service</tt><tt class="py-op">,</tt> <tt class="py-name">rootDesc</tt><tt class="py-op">=</tt><tt class="py-name">service</tt><tt class="py-op">,</tt> <tt id="link-129" class="py-name"><a title="googleapiclient.schema" class="py-name" href="#" onclick="return doclink('link-129', 'schema', 'link-48');">schema</a></tt><tt class="py-op">=</tt><tt id="link-130" class="py-name"><a title="googleapiclient.schema" class="py-name" href="#" onclick="return doclink('link-130', 'schema', 'link-48');">schema</a></tt><tt class="py-op">)</tt> </tt>
-</div><a name="L373"></a><tt class="py-lineno"> 373</tt>  <tt class="py-line"> </tt>
-<a name="_cast"></a><div id="_cast-def"><a name="L374"></a><tt class="py-lineno"> 374</tt>  <tt class="py-line"> </tt>
-<a name="L375"></a><tt class="py-lineno"> 375</tt> <a class="py-toggle" href="#" id="_cast-toggle" onclick="return toggle('_cast');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="googleapiclient.discovery-module.html#_cast">_cast</a><tt class="py-op">(</tt><tt class="py-param">value</tt><tt class="py-op">,</tt> <tt class="py-param">schema_type</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="_cast-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="_cast-expanded"><a name="L376"></a><tt class="py-lineno"> 376</tt>  <tt class="py-line">  <tt class="py-docstring">"""Convert value to a string based on JSON Schema type.</tt> </tt>
-<a name="L377"></a><tt class="py-lineno"> 377</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L378"></a><tt class="py-lineno"> 378</tt>  <tt class="py-line"><tt class="py-docstring">  See http://tools.ietf.org/html/draft-zyp-json-schema-03 for more details on</tt> </tt>
-<a name="L379"></a><tt class="py-lineno"> 379</tt>  <tt class="py-line"><tt class="py-docstring">  JSON Schema.</tt> </tt>
-<a name="L380"></a><tt class="py-lineno"> 380</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L381"></a><tt class="py-lineno"> 381</tt>  <tt class="py-line"><tt class="py-docstring">  Args:</tt> </tt>
-<a name="L382"></a><tt class="py-lineno"> 382</tt>  <tt class="py-line"><tt class="py-docstring">    value: any, the value to convert</tt> </tt>
-<a name="L383"></a><tt class="py-lineno"> 383</tt>  <tt class="py-line"><tt class="py-docstring">    schema_type: string, the type that value should be interpreted as</tt> </tt>
-<a name="L384"></a><tt class="py-lineno"> 384</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L385"></a><tt class="py-lineno"> 385</tt>  <tt class="py-line"><tt class="py-docstring">  Returns:</tt> </tt>
-<a name="L386"></a><tt class="py-lineno"> 386</tt>  <tt class="py-line"><tt class="py-docstring">    A string representation of 'value' based on the schema_type.</tt> </tt>
-<a name="L387"></a><tt class="py-lineno"> 387</tt>  <tt class="py-line"><tt class="py-docstring">  """</tt> </tt>
-<a name="L388"></a><tt class="py-lineno"> 388</tt>  <tt class="py-line">  <tt class="py-keyword">if</tt> <tt class="py-name">schema_type</tt> <tt class="py-op">==</tt> <tt class="py-string">'string'</tt><tt class="py-op">:</tt> </tt>
-<a name="L389"></a><tt class="py-lineno"> 389</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">type</tt><tt class="py-op">(</tt><tt class="py-name">value</tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <tt class="py-name">type</tt><tt class="py-op">(</tt><tt class="py-string">''</tt><tt class="py-op">)</tt> <tt class="py-keyword">or</tt> <tt class="py-name">type</tt><tt class="py-op">(</tt><tt class="py-name">value</tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <tt class="py-name">type</tt><tt class="py-op">(</tt><tt class="py-string">u''</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="L390"></a><tt class="py-lineno"> 390</tt>  <tt class="py-line">      <tt class="py-keyword">return</tt> <tt class="py-name">value</tt> </tt>
-<a name="L391"></a><tt class="py-lineno"> 391</tt>  <tt class="py-line">    <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
-<a name="L392"></a><tt class="py-lineno"> 392</tt>  <tt class="py-line">      <tt class="py-keyword">return</tt> <tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">value</tt><tt class="py-op">)</tt> </tt>
-<a name="L393"></a><tt class="py-lineno"> 393</tt>  <tt class="py-line">  <tt class="py-keyword">elif</tt> <tt class="py-name">schema_type</tt> <tt class="py-op">==</tt> <tt class="py-string">'integer'</tt><tt class="py-op">:</tt> </tt>
-<a name="L394"></a><tt class="py-lineno"> 394</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">int</tt><tt class="py-op">(</tt><tt class="py-name">value</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L395"></a><tt class="py-lineno"> 395</tt>  <tt class="py-line">  <tt class="py-keyword">elif</tt> <tt class="py-name">schema_type</tt> <tt class="py-op">==</tt> <tt class="py-string">'number'</tt><tt class="py-op">:</tt> </tt>
-<a name="L396"></a><tt class="py-lineno"> 396</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">float</tt><tt class="py-op">(</tt><tt class="py-name">value</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L397"></a><tt class="py-lineno"> 397</tt>  <tt class="py-line">  <tt class="py-keyword">elif</tt> <tt class="py-name">schema_type</tt> <tt class="py-op">==</tt> <tt class="py-string">'boolean'</tt><tt class="py-op">:</tt> </tt>
-<a name="L398"></a><tt class="py-lineno"> 398</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">bool</tt><tt class="py-op">(</tt><tt class="py-name">value</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">lower</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-<a name="L399"></a><tt class="py-lineno"> 399</tt>  <tt class="py-line">  <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
-<a name="L400"></a><tt class="py-lineno"> 400</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">type</tt><tt class="py-op">(</tt><tt class="py-name">value</tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <tt class="py-name">type</tt><tt class="py-op">(</tt><tt class="py-string">''</tt><tt class="py-op">)</tt> <tt class="py-keyword">or</tt> <tt class="py-name">type</tt><tt class="py-op">(</tt><tt class="py-name">value</tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <tt class="py-name">type</tt><tt class="py-op">(</tt><tt class="py-string">u''</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="L401"></a><tt class="py-lineno"> 401</tt>  <tt class="py-line">      <tt class="py-keyword">return</tt> <tt class="py-name">value</tt> </tt>
-<a name="L402"></a><tt class="py-lineno"> 402</tt>  <tt class="py-line">    <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
-<a name="L403"></a><tt class="py-lineno"> 403</tt>  <tt class="py-line">      <tt class="py-keyword">return</tt> <tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">value</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L404"></a><tt class="py-lineno"> 404</tt>  <tt class="py-line"> </tt>
-<a name="_media_size_to_long"></a><div id="_media_size_to_long-def"><a name="L405"></a><tt class="py-lineno"> 405</tt>  <tt class="py-line"> </tt>
-<a name="L406"></a><tt class="py-lineno"> 406</tt> <a class="py-toggle" href="#" id="_media_size_to_long-toggle" onclick="return toggle('_media_size_to_long');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="googleapiclient.discovery-module.html#_media_size_to_long">_media_size_to_long</a><tt class="py-op">(</tt><tt class="py-param">maxSize</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="_media_size_to_long-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="_media_size_to_long-expanded"><a name="L407"></a><tt class="py-lineno"> 407</tt>  <tt class="py-line">  <tt class="py-docstring">"""Convert a string media size, such as 10GB or 3TB into an integer.</tt> </tt>
-<a name="L408"></a><tt class="py-lineno"> 408</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L409"></a><tt class="py-lineno"> 409</tt>  <tt class="py-line"><tt class="py-docstring">  Args:</tt> </tt>
-<a name="L410"></a><tt class="py-lineno"> 410</tt>  <tt class="py-line"><tt class="py-docstring">    maxSize: string, size as a string, such as 2MB or 7GB.</tt> </tt>
-<a name="L411"></a><tt class="py-lineno"> 411</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L412"></a><tt class="py-lineno"> 412</tt>  <tt class="py-line"><tt class="py-docstring">  Returns:</tt> </tt>
-<a name="L413"></a><tt class="py-lineno"> 413</tt>  <tt class="py-line"><tt class="py-docstring">    The size as an integer value.</tt> </tt>
-<a name="L414"></a><tt class="py-lineno"> 414</tt>  <tt class="py-line"><tt class="py-docstring">  """</tt> </tt>
-<a name="L415"></a><tt class="py-lineno"> 415</tt>  <tt class="py-line">  <tt class="py-keyword">if</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">maxSize</tt><tt class="py-op">)</tt> <tt class="py-op">&lt;</tt> <tt class="py-number">2</tt><tt class="py-op">:</tt> </tt>
-<a name="L416"></a><tt class="py-lineno"> 416</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-number">0</tt> </tt>
-<a name="L417"></a><tt class="py-lineno"> 417</tt>  <tt class="py-line">  <tt class="py-name">units</tt> <tt class="py-op">=</tt> <tt class="py-name">maxSize</tt><tt class="py-op">[</tt><tt class="py-op">-</tt><tt class="py-number">2</tt><tt class="py-op">:</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt class="py-name">upper</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-<a name="L418"></a><tt class="py-lineno"> 418</tt>  <tt class="py-line">  <tt class="py-name">bit_shift</tt> <tt class="py-op">=</tt> <tt id="link-131" class="py-name"><a title="googleapiclient.discovery._MEDIA_SIZE_BIT_SHIFTS" class="py-name" href="#" onclick="return doclink('link-131', '_MEDIA_SIZE_BIT_SHIFTS', 'link-59');">_MEDIA_SIZE_BIT_SHIFTS</a></tt><tt class="py-op">.</tt><tt id="link-132" class="py-name"><a title="googleapiclient.discovery_cache.appengine_memcache.Cache.get
+googleapiclient.schema.Schemas.get" class="py-name" href="#" onclick="return doclink('link-127', 'get', 'link-94');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">'features'</tt><tt class="py-op">,</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L373"></a><tt class="py-lineno"> 373</tt>  <tt class="py-line">    <tt id="link-128" class="py-name"><a title="googleapiclient.model" class="py-name" href="#" onclick="return doclink('link-128', 'model', 'link-41');">model</a></tt> <tt class="py-op">=</tt> <tt id="link-129" class="py-name"><a title="googleapiclient.model.JsonModel" class="py-name" href="#" onclick="return doclink('link-129', 'JsonModel', 'link-42');">JsonModel</a></tt><tt class="py-op">(</tt><tt class="py-string">'dataWrapper'</tt> <tt class="py-keyword">in</tt> <tt class="py-name">features</tt><tt class="py-op">)</tt> </tt>
+<a name="L374"></a><tt class="py-lineno"> 374</tt>  <tt class="py-line"> </tt>
+<a name="L375"></a><tt class="py-lineno"> 375</tt>  <tt class="py-line">  <tt class="py-keyword">return</tt> <tt id="link-130" class="py-name" targets="Class googleapiclient.discovery.Resource=googleapiclient.discovery.Resource-class.html"><a title="googleapiclient.discovery.Resource" class="py-name" href="#" onclick="return doclink('link-130', 'Resource', 'link-130');">Resource</a></tt><tt class="py-op">(</tt><tt id="link-131" class="py-name"><a title="googleapiclient.http" class="py-name" href="#" onclick="return doclink('link-131', 'http', 'link-23');">http</a></tt><tt class="py-op">=</tt><tt id="link-132" class="py-name"><a title="googleapiclient.http" class="py-name" href="#" onclick="return doclink('link-132', 'http', 'link-23');">http</a></tt><tt class="py-op">,</tt> <tt class="py-name">baseUrl</tt><tt class="py-op">=</tt><tt id="link-133" class="py-name"><a title="googleapiclient.discovery_cache.base" class="py-name" href="#" onclick="return doclink('link-133', 'base', 'link-78');">base</a></tt><tt class="py-op">,</tt> <tt id="link-134" class="py-name"><a title="googleapiclient.model" class="py-name" href="#" onclick="return doclink('link-134', 'model', 'link-41');">model</a></tt><tt class="py-op">=</tt><tt id="link-135" class="py-name"><a title="googleapiclient.model" class="py-name" href="#" onclick="return doclink('link-135', 'model', 'link-41');">model</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L376"></a><tt class="py-lineno"> 376</tt>  <tt class="py-line">                  <tt class="py-name">developerKey</tt><tt class="py-op">=</tt><tt class="py-name">developerKey</tt><tt class="py-op">,</tt> <tt class="py-name">requestBuilder</tt><tt class="py-op">=</tt><tt class="py-name">requestBuilder</tt><tt class="py-op">,</tt> </tt>
+<a name="L377"></a><tt class="py-lineno"> 377</tt>  <tt class="py-line">                  <tt class="py-name">resourceDesc</tt><tt class="py-op">=</tt><tt class="py-name">service</tt><tt class="py-op">,</tt> <tt class="py-name">rootDesc</tt><tt class="py-op">=</tt><tt class="py-name">service</tt><tt class="py-op">,</tt> <tt id="link-136" class="py-name"><a title="googleapiclient.schema" class="py-name" href="#" onclick="return doclink('link-136', 'schema', 'link-50');">schema</a></tt><tt class="py-op">=</tt><tt id="link-137" class="py-name"><a title="googleapiclient.schema" class="py-name" href="#" onclick="return doclink('link-137', 'schema', 'link-50');">schema</a></tt><tt class="py-op">)</tt> </tt>
+</div><a name="L378"></a><tt class="py-lineno"> 378</tt>  <tt class="py-line"> </tt>
+<a name="_cast"></a><div id="_cast-def"><a name="L379"></a><tt class="py-lineno"> 379</tt>  <tt class="py-line"> </tt>
+<a name="L380"></a><tt class="py-lineno"> 380</tt> <a class="py-toggle" href="#" id="_cast-toggle" onclick="return toggle('_cast');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="googleapiclient.discovery-module.html#_cast">_cast</a><tt class="py-op">(</tt><tt class="py-param">value</tt><tt class="py-op">,</tt> <tt class="py-param">schema_type</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="_cast-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="_cast-expanded"><a name="L381"></a><tt class="py-lineno"> 381</tt>  <tt class="py-line">  <tt class="py-docstring">"""Convert value to a string based on JSON Schema type.</tt> </tt>
+<a name="L382"></a><tt class="py-lineno"> 382</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L383"></a><tt class="py-lineno"> 383</tt>  <tt class="py-line"><tt class="py-docstring">  See http://tools.ietf.org/html/draft-zyp-json-schema-03 for more details on</tt> </tt>
+<a name="L384"></a><tt class="py-lineno"> 384</tt>  <tt class="py-line"><tt class="py-docstring">  JSON Schema.</tt> </tt>
+<a name="L385"></a><tt class="py-lineno"> 385</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L386"></a><tt class="py-lineno"> 386</tt>  <tt class="py-line"><tt class="py-docstring">  Args:</tt> </tt>
+<a name="L387"></a><tt class="py-lineno"> 387</tt>  <tt class="py-line"><tt class="py-docstring">    value: any, the value to convert</tt> </tt>
+<a name="L388"></a><tt class="py-lineno"> 388</tt>  <tt class="py-line"><tt class="py-docstring">    schema_type: string, the type that value should be interpreted as</tt> </tt>
+<a name="L389"></a><tt class="py-lineno"> 389</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L390"></a><tt class="py-lineno"> 390</tt>  <tt class="py-line"><tt class="py-docstring">  Returns:</tt> </tt>
+<a name="L391"></a><tt class="py-lineno"> 391</tt>  <tt class="py-line"><tt class="py-docstring">    A string representation of 'value' based on the schema_type.</tt> </tt>
+<a name="L392"></a><tt class="py-lineno"> 392</tt>  <tt class="py-line"><tt class="py-docstring">  """</tt> </tt>
+<a name="L393"></a><tt class="py-lineno"> 393</tt>  <tt class="py-line">  <tt class="py-keyword">if</tt> <tt class="py-name">schema_type</tt> <tt class="py-op">==</tt> <tt class="py-string">'string'</tt><tt class="py-op">:</tt> </tt>
+<a name="L394"></a><tt class="py-lineno"> 394</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">type</tt><tt class="py-op">(</tt><tt class="py-name">value</tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <tt class="py-name">type</tt><tt class="py-op">(</tt><tt class="py-string">''</tt><tt class="py-op">)</tt> <tt class="py-keyword">or</tt> <tt class="py-name">type</tt><tt class="py-op">(</tt><tt class="py-name">value</tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <tt class="py-name">type</tt><tt class="py-op">(</tt><tt class="py-string">u''</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L395"></a><tt class="py-lineno"> 395</tt>  <tt class="py-line">      <tt class="py-keyword">return</tt> <tt class="py-name">value</tt> </tt>
+<a name="L396"></a><tt class="py-lineno"> 396</tt>  <tt class="py-line">    <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L397"></a><tt class="py-lineno"> 397</tt>  <tt class="py-line">      <tt class="py-keyword">return</tt> <tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">value</tt><tt class="py-op">)</tt> </tt>
+<a name="L398"></a><tt class="py-lineno"> 398</tt>  <tt class="py-line">  <tt class="py-keyword">elif</tt> <tt class="py-name">schema_type</tt> <tt class="py-op">==</tt> <tt class="py-string">'integer'</tt><tt class="py-op">:</tt> </tt>
+<a name="L399"></a><tt class="py-lineno"> 399</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">int</tt><tt class="py-op">(</tt><tt class="py-name">value</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L400"></a><tt class="py-lineno"> 400</tt>  <tt class="py-line">  <tt class="py-keyword">elif</tt> <tt class="py-name">schema_type</tt> <tt class="py-op">==</tt> <tt class="py-string">'number'</tt><tt class="py-op">:</tt> </tt>
+<a name="L401"></a><tt class="py-lineno"> 401</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">float</tt><tt class="py-op">(</tt><tt class="py-name">value</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L402"></a><tt class="py-lineno"> 402</tt>  <tt class="py-line">  <tt class="py-keyword">elif</tt> <tt class="py-name">schema_type</tt> <tt class="py-op">==</tt> <tt class="py-string">'boolean'</tt><tt class="py-op">:</tt> </tt>
+<a name="L403"></a><tt class="py-lineno"> 403</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">bool</tt><tt class="py-op">(</tt><tt class="py-name">value</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">lower</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L404"></a><tt class="py-lineno"> 404</tt>  <tt class="py-line">  <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L405"></a><tt class="py-lineno"> 405</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">type</tt><tt class="py-op">(</tt><tt class="py-name">value</tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <tt class="py-name">type</tt><tt class="py-op">(</tt><tt class="py-string">''</tt><tt class="py-op">)</tt> <tt class="py-keyword">or</tt> <tt class="py-name">type</tt><tt class="py-op">(</tt><tt class="py-name">value</tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <tt class="py-name">type</tt><tt class="py-op">(</tt><tt class="py-string">u''</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L406"></a><tt class="py-lineno"> 406</tt>  <tt class="py-line">      <tt class="py-keyword">return</tt> <tt class="py-name">value</tt> </tt>
+<a name="L407"></a><tt class="py-lineno"> 407</tt>  <tt class="py-line">    <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L408"></a><tt class="py-lineno"> 408</tt>  <tt class="py-line">      <tt class="py-keyword">return</tt> <tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">value</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L409"></a><tt class="py-lineno"> 409</tt>  <tt class="py-line"> </tt>
+<a name="_media_size_to_long"></a><div id="_media_size_to_long-def"><a name="L410"></a><tt class="py-lineno"> 410</tt>  <tt class="py-line"> </tt>
+<a name="L411"></a><tt class="py-lineno"> 411</tt> <a class="py-toggle" href="#" id="_media_size_to_long-toggle" onclick="return toggle('_media_size_to_long');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="googleapiclient.discovery-module.html#_media_size_to_long">_media_size_to_long</a><tt class="py-op">(</tt><tt class="py-param">maxSize</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="_media_size_to_long-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="_media_size_to_long-expanded"><a name="L412"></a><tt class="py-lineno"> 412</tt>  <tt class="py-line">  <tt class="py-docstring">"""Convert a string media size, such as 10GB or 3TB into an integer.</tt> </tt>
+<a name="L413"></a><tt class="py-lineno"> 413</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L414"></a><tt class="py-lineno"> 414</tt>  <tt class="py-line"><tt class="py-docstring">  Args:</tt> </tt>
+<a name="L415"></a><tt class="py-lineno"> 415</tt>  <tt class="py-line"><tt class="py-docstring">    maxSize: string, size as a string, such as 2MB or 7GB.</tt> </tt>
+<a name="L416"></a><tt class="py-lineno"> 416</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L417"></a><tt class="py-lineno"> 417</tt>  <tt class="py-line"><tt class="py-docstring">  Returns:</tt> </tt>
+<a name="L418"></a><tt class="py-lineno"> 418</tt>  <tt class="py-line"><tt class="py-docstring">    The size as an integer value.</tt> </tt>
+<a name="L419"></a><tt class="py-lineno"> 419</tt>  <tt class="py-line"><tt class="py-docstring">  """</tt> </tt>
+<a name="L420"></a><tt class="py-lineno"> 420</tt>  <tt class="py-line">  <tt class="py-keyword">if</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">maxSize</tt><tt class="py-op">)</tt> <tt class="py-op">&lt;</tt> <tt class="py-number">2</tt><tt class="py-op">:</tt> </tt>
+<a name="L421"></a><tt class="py-lineno"> 421</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-number">0</tt> </tt>
+<a name="L422"></a><tt class="py-lineno"> 422</tt>  <tt class="py-line">  <tt class="py-name">units</tt> <tt class="py-op">=</tt> <tt class="py-name">maxSize</tt><tt class="py-op">[</tt><tt class="py-op">-</tt><tt class="py-number">2</tt><tt class="py-op">:</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt class="py-name">upper</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L423"></a><tt class="py-lineno"> 423</tt>  <tt class="py-line">  <tt class="py-name">bit_shift</tt> <tt class="py-op">=</tt> <tt id="link-138" class="py-name"><a title="googleapiclient.discovery._MEDIA_SIZE_BIT_SHIFTS" class="py-name" href="#" onclick="return doclink('link-138', '_MEDIA_SIZE_BIT_SHIFTS', 'link-61');">_MEDIA_SIZE_BIT_SHIFTS</a></tt><tt class="py-op">.</tt><tt id="link-139" class="py-name"><a title="googleapiclient.discovery_cache.appengine_memcache.Cache.get
 googleapiclient.discovery_cache.base.Cache.get
 googleapiclient.discovery_cache.file_cache.Cache.get
-googleapiclient.schema.Schemas.get" class="py-name" href="#" onclick="return doclink('link-132', 'get', 'link-93');">get</a></tt><tt class="py-op">(</tt><tt class="py-name">units</tt><tt class="py-op">)</tt> </tt>
-<a name="L419"></a><tt class="py-lineno"> 419</tt>  <tt class="py-line">  <tt class="py-keyword">if</tt> <tt class="py-name">bit_shift</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
-<a name="L420"></a><tt class="py-lineno"> 420</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-name">int</tt><tt class="py-op">(</tt><tt class="py-name">maxSize</tt><tt class="py-op">[</tt><tt class="py-op">:</tt><tt class="py-op">-</tt><tt class="py-number">2</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> <tt class="py-op">&lt;&lt;</tt> <tt class="py-name">bit_shift</tt> </tt>
-<a name="L421"></a><tt class="py-lineno"> 421</tt>  <tt class="py-line">  <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
-<a name="L422"></a><tt class="py-lineno"> 422</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-name">int</tt><tt class="py-op">(</tt><tt class="py-name">maxSize</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L423"></a><tt class="py-lineno"> 423</tt>  <tt class="py-line"> </tt>
-<a name="_media_path_url_from_info"></a><div id="_media_path_url_from_info-def"><a name="L424"></a><tt class="py-lineno"> 424</tt>  <tt class="py-line"> </tt>
-<a name="L425"></a><tt class="py-lineno"> 425</tt> <a class="py-toggle" href="#" id="_media_path_url_from_info-toggle" onclick="return toggle('_media_path_url_from_info');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="googleapiclient.discovery-module.html#_media_path_url_from_info">_media_path_url_from_info</a><tt class="py-op">(</tt><tt class="py-param">root_desc</tt><tt class="py-op">,</tt> <tt class="py-param">path_url</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="_media_path_url_from_info-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="_media_path_url_from_info-expanded"><a name="L426"></a><tt class="py-lineno"> 426</tt>  <tt class="py-line">  <tt class="py-docstring">"""Creates an absolute media path URL.</tt> </tt>
-<a name="L427"></a><tt class="py-lineno"> 427</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L428"></a><tt class="py-lineno"> 428</tt>  <tt class="py-line"><tt class="py-docstring">  Constructed using the API root URI and service path from the discovery</tt> </tt>
-<a name="L429"></a><tt class="py-lineno"> 429</tt>  <tt class="py-line"><tt class="py-docstring">  document and the relative path for the API method.</tt> </tt>
-<a name="L430"></a><tt class="py-lineno"> 430</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L431"></a><tt class="py-lineno"> 431</tt>  <tt class="py-line"><tt class="py-docstring">  Args:</tt> </tt>
-<a name="L432"></a><tt class="py-lineno"> 432</tt>  <tt class="py-line"><tt class="py-docstring">    root_desc: Dictionary; the entire original deserialized discovery document.</tt> </tt>
-<a name="L433"></a><tt class="py-lineno"> 433</tt>  <tt class="py-line"><tt class="py-docstring">    path_url: String; the relative URL for the API method. Relative to the API</tt> </tt>
-<a name="L434"></a><tt class="py-lineno"> 434</tt>  <tt class="py-line"><tt class="py-docstring">        root, which is specified in the discovery document.</tt> </tt>
+googleapiclient.schema.Schemas.get" class="py-name" href="#" onclick="return doclink('link-139', 'get', 'link-94');">get</a></tt><tt class="py-op">(</tt><tt class="py-name">units</tt><tt class="py-op">)</tt> </tt>
+<a name="L424"></a><tt class="py-lineno"> 424</tt>  <tt class="py-line">  <tt class="py-keyword">if</tt> <tt class="py-name">bit_shift</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L425"></a><tt class="py-lineno"> 425</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-name">int</tt><tt class="py-op">(</tt><tt class="py-name">maxSize</tt><tt class="py-op">[</tt><tt class="py-op">:</tt><tt class="py-op">-</tt><tt class="py-number">2</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> <tt class="py-op">&lt;&lt;</tt> <tt class="py-name">bit_shift</tt> </tt>
+<a name="L426"></a><tt class="py-lineno"> 426</tt>  <tt class="py-line">  <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L427"></a><tt class="py-lineno"> 427</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-name">int</tt><tt class="py-op">(</tt><tt class="py-name">maxSize</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L428"></a><tt class="py-lineno"> 428</tt>  <tt class="py-line"> </tt>
+<a name="_media_path_url_from_info"></a><div id="_media_path_url_from_info-def"><a name="L429"></a><tt class="py-lineno"> 429</tt>  <tt class="py-line"> </tt>
+<a name="L430"></a><tt class="py-lineno"> 430</tt> <a class="py-toggle" href="#" id="_media_path_url_from_info-toggle" onclick="return toggle('_media_path_url_from_info');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="googleapiclient.discovery-module.html#_media_path_url_from_info">_media_path_url_from_info</a><tt class="py-op">(</tt><tt class="py-param">root_desc</tt><tt class="py-op">,</tt> <tt class="py-param">path_url</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="_media_path_url_from_info-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="_media_path_url_from_info-expanded"><a name="L431"></a><tt class="py-lineno"> 431</tt>  <tt class="py-line">  <tt class="py-docstring">"""Creates an absolute media path URL.</tt> </tt>
+<a name="L432"></a><tt class="py-lineno"> 432</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L433"></a><tt class="py-lineno"> 433</tt>  <tt class="py-line"><tt class="py-docstring">  Constructed using the API root URI and service path from the discovery</tt> </tt>
+<a name="L434"></a><tt class="py-lineno"> 434</tt>  <tt class="py-line"><tt class="py-docstring">  document and the relative path for the API method.</tt> </tt>
 <a name="L435"></a><tt class="py-lineno"> 435</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L436"></a><tt class="py-lineno"> 436</tt>  <tt class="py-line"><tt class="py-docstring">  Returns:</tt> </tt>
-<a name="L437"></a><tt class="py-lineno"> 437</tt>  <tt class="py-line"><tt class="py-docstring">    String; the absolute URI for media upload for the API method.</tt> </tt>
-<a name="L438"></a><tt class="py-lineno"> 438</tt>  <tt class="py-line"><tt class="py-docstring">  """</tt> </tt>
-<a name="L439"></a><tt class="py-lineno"> 439</tt>  <tt class="py-line">  <tt class="py-keyword">return</tt> <tt class="py-string">'%(root)supload/%(service_path)s%(path)s'</tt> <tt class="py-op">%</tt> <tt class="py-op">{</tt> </tt>
-<a name="L440"></a><tt class="py-lineno"> 440</tt>  <tt class="py-line">      <tt class="py-string">'root'</tt><tt class="py-op">:</tt> <tt class="py-name">root_desc</tt><tt class="py-op">[</tt><tt class="py-string">'rootUrl'</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> </tt>
-<a name="L441"></a><tt class="py-lineno"> 441</tt>  <tt class="py-line">      <tt class="py-string">'service_path'</tt><tt class="py-op">:</tt> <tt class="py-name">root_desc</tt><tt class="py-op">[</tt><tt class="py-string">'servicePath'</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> </tt>
-<a name="L442"></a><tt class="py-lineno"> 442</tt>  <tt class="py-line">      <tt class="py-string">'path'</tt><tt class="py-op">:</tt> <tt class="py-name">path_url</tt><tt class="py-op">,</tt> </tt>
-<a name="L443"></a><tt class="py-lineno"> 443</tt>  <tt class="py-line">  <tt class="py-op">}</tt> </tt>
-</div><a name="L444"></a><tt class="py-lineno"> 444</tt>  <tt class="py-line"> </tt>
-<a name="_fix_up_parameters"></a><div id="_fix_up_parameters-def"><a name="L445"></a><tt class="py-lineno"> 445</tt>  <tt class="py-line"> </tt>
-<a name="L446"></a><tt class="py-lineno"> 446</tt> <a class="py-toggle" href="#" id="_fix_up_parameters-toggle" onclick="return toggle('_fix_up_parameters');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="googleapiclient.discovery-module.html#_fix_up_parameters">_fix_up_parameters</a><tt class="py-op">(</tt><tt class="py-param">method_desc</tt><tt class="py-op">,</tt> <tt class="py-param">root_desc</tt><tt class="py-op">,</tt> <tt class="py-param">http_method</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="_fix_up_parameters-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="_fix_up_parameters-expanded"><a name="L447"></a><tt class="py-lineno"> 447</tt>  <tt class="py-line">  <tt class="py-docstring">"""Updates parameters of an API method with values specific to this library.</tt> </tt>
-<a name="L448"></a><tt class="py-lineno"> 448</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L449"></a><tt class="py-lineno"> 449</tt>  <tt class="py-line"><tt class="py-docstring">  Specifically, adds whatever global parameters are specified by the API to the</tt> </tt>
-<a name="L450"></a><tt class="py-lineno"> 450</tt>  <tt class="py-line"><tt class="py-docstring">  parameters for the individual method. Also adds parameters which don't</tt> </tt>
-<a name="L451"></a><tt class="py-lineno"> 451</tt>  <tt class="py-line"><tt class="py-docstring">  appear in the discovery document, but are available to all discovery based</tt> </tt>
-<a name="L452"></a><tt class="py-lineno"> 452</tt>  <tt class="py-line"><tt class="py-docstring">  APIs (these are listed in STACK_QUERY_PARAMETERS).</tt> </tt>
+<a name="L436"></a><tt class="py-lineno"> 436</tt>  <tt class="py-line"><tt class="py-docstring">  Args:</tt> </tt>
+<a name="L437"></a><tt class="py-lineno"> 437</tt>  <tt class="py-line"><tt class="py-docstring">    root_desc: Dictionary; the entire original deserialized discovery document.</tt> </tt>
+<a name="L438"></a><tt class="py-lineno"> 438</tt>  <tt class="py-line"><tt class="py-docstring">    path_url: String; the relative URL for the API method. Relative to the API</tt> </tt>
+<a name="L439"></a><tt class="py-lineno"> 439</tt>  <tt class="py-line"><tt class="py-docstring">        root, which is specified in the discovery document.</tt> </tt>
+<a name="L440"></a><tt class="py-lineno"> 440</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L441"></a><tt class="py-lineno"> 441</tt>  <tt class="py-line"><tt class="py-docstring">  Returns:</tt> </tt>
+<a name="L442"></a><tt class="py-lineno"> 442</tt>  <tt class="py-line"><tt class="py-docstring">    String; the absolute URI for media upload for the API method.</tt> </tt>
+<a name="L443"></a><tt class="py-lineno"> 443</tt>  <tt class="py-line"><tt class="py-docstring">  """</tt> </tt>
+<a name="L444"></a><tt class="py-lineno"> 444</tt>  <tt class="py-line">  <tt class="py-keyword">return</tt> <tt class="py-string">'%(root)supload/%(service_path)s%(path)s'</tt> <tt class="py-op">%</tt> <tt class="py-op">{</tt> </tt>
+<a name="L445"></a><tt class="py-lineno"> 445</tt>  <tt class="py-line">      <tt class="py-string">'root'</tt><tt class="py-op">:</tt> <tt class="py-name">root_desc</tt><tt class="py-op">[</tt><tt class="py-string">'rootUrl'</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> </tt>
+<a name="L446"></a><tt class="py-lineno"> 446</tt>  <tt class="py-line">      <tt class="py-string">'service_path'</tt><tt class="py-op">:</tt> <tt class="py-name">root_desc</tt><tt class="py-op">[</tt><tt class="py-string">'servicePath'</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> </tt>
+<a name="L447"></a><tt class="py-lineno"> 447</tt>  <tt class="py-line">      <tt class="py-string">'path'</tt><tt class="py-op">:</tt> <tt class="py-name">path_url</tt><tt class="py-op">,</tt> </tt>
+<a name="L448"></a><tt class="py-lineno"> 448</tt>  <tt class="py-line">  <tt class="py-op">}</tt> </tt>
+</div><a name="L449"></a><tt class="py-lineno"> 449</tt>  <tt class="py-line"> </tt>
+<a name="_fix_up_parameters"></a><div id="_fix_up_parameters-def"><a name="L450"></a><tt class="py-lineno"> 450</tt>  <tt class="py-line"> </tt>
+<a name="L451"></a><tt class="py-lineno"> 451</tt> <a class="py-toggle" href="#" id="_fix_up_parameters-toggle" onclick="return toggle('_fix_up_parameters');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="googleapiclient.discovery-module.html#_fix_up_parameters">_fix_up_parameters</a><tt class="py-op">(</tt><tt class="py-param">method_desc</tt><tt class="py-op">,</tt> <tt class="py-param">root_desc</tt><tt class="py-op">,</tt> <tt class="py-param">http_method</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="_fix_up_parameters-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="_fix_up_parameters-expanded"><a name="L452"></a><tt class="py-lineno"> 452</tt>  <tt class="py-line">  <tt class="py-docstring">"""Updates parameters of an API method with values specific to this library.</tt> </tt>
 <a name="L453"></a><tt class="py-lineno"> 453</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L454"></a><tt class="py-lineno"> 454</tt>  <tt class="py-line"><tt class="py-docstring">  SIDE EFFECTS: This updates the parameters dictionary object in the method</tt> </tt>
-<a name="L455"></a><tt class="py-lineno"> 455</tt>  <tt class="py-line"><tt class="py-docstring">  description.</tt> </tt>
-<a name="L456"></a><tt class="py-lineno"> 456</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L457"></a><tt class="py-lineno"> 457</tt>  <tt class="py-line"><tt class="py-docstring">  Args:</tt> </tt>
-<a name="L458"></a><tt class="py-lineno"> 458</tt>  <tt class="py-line"><tt class="py-docstring">    method_desc: Dictionary with metadata describing an API method. Value comes</tt> </tt>
-<a name="L459"></a><tt class="py-lineno"> 459</tt>  <tt class="py-line"><tt class="py-docstring">        from the dictionary of methods stored in the 'methods' key in the</tt> </tt>
-<a name="L460"></a><tt class="py-lineno"> 460</tt>  <tt class="py-line"><tt class="py-docstring">        deserialized discovery document.</tt> </tt>
-<a name="L461"></a><tt class="py-lineno"> 461</tt>  <tt class="py-line"><tt class="py-docstring">    root_desc: Dictionary; the entire original deserialized discovery document.</tt> </tt>
-<a name="L462"></a><tt class="py-lineno"> 462</tt>  <tt class="py-line"><tt class="py-docstring">    http_method: String; the HTTP method used to call the API method described</tt> </tt>
-<a name="L463"></a><tt class="py-lineno"> 463</tt>  <tt class="py-line"><tt class="py-docstring">        in method_desc.</tt> </tt>
-<a name="L464"></a><tt class="py-lineno"> 464</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L465"></a><tt class="py-lineno"> 465</tt>  <tt class="py-line"><tt class="py-docstring">  Returns:</tt> </tt>
-<a name="L466"></a><tt class="py-lineno"> 466</tt>  <tt class="py-line"><tt class="py-docstring">    The updated Dictionary stored in the 'parameters' key of the method</tt> </tt>
-<a name="L467"></a><tt class="py-lineno"> 467</tt>  <tt class="py-line"><tt class="py-docstring">        description dictionary.</tt> </tt>
-<a name="L468"></a><tt class="py-lineno"> 468</tt>  <tt class="py-line"><tt class="py-docstring">  """</tt> </tt>
-<a name="L469"></a><tt class="py-lineno"> 469</tt>  <tt class="py-line">  <tt class="py-name">parameters</tt> <tt class="py-op">=</tt> <tt class="py-name">method_desc</tt><tt class="py-op">.</tt><tt class="py-name">setdefault</tt><tt class="py-op">(</tt><tt class="py-string">'parameters'</tt><tt class="py-op">,</tt> <tt class="py-op">{</tt><tt class="py-op">}</tt><tt class="py-op">)</tt> </tt>
-<a name="L470"></a><tt class="py-lineno"> 470</tt>  <tt class="py-line"> </tt>
-<a name="L471"></a><tt class="py-lineno"> 471</tt>  <tt class="py-line">  <tt class="py-comment"># Add in the parameters common to all methods.</tt> </tt>
-<a name="L472"></a><tt class="py-lineno"> 472</tt>  <tt class="py-line">  <tt class="py-keyword">for</tt> <tt class="py-name">name</tt><tt class="py-op">,</tt> <tt class="py-name">description</tt> <tt class="py-keyword">in</tt> <tt class="py-name">six</tt><tt class="py-op">.</tt><tt class="py-name">iteritems</tt><tt class="py-op">(</tt><tt class="py-name">root_desc</tt><tt class="py-op">.</tt><tt id="link-133" class="py-name"><a title="googleapiclient.discovery_cache.appengine_memcache.Cache.get
+<a name="L454"></a><tt class="py-lineno"> 454</tt>  <tt class="py-line"><tt class="py-docstring">  Specifically, adds whatever global parameters are specified by the API to the</tt> </tt>
+<a name="L455"></a><tt class="py-lineno"> 455</tt>  <tt class="py-line"><tt class="py-docstring">  parameters for the individual method. Also adds parameters which don't</tt> </tt>
+<a name="L456"></a><tt class="py-lineno"> 456</tt>  <tt class="py-line"><tt class="py-docstring">  appear in the discovery document, but are available to all discovery based</tt> </tt>
+<a name="L457"></a><tt class="py-lineno"> 457</tt>  <tt class="py-line"><tt class="py-docstring">  APIs (these are listed in STACK_QUERY_PARAMETERS).</tt> </tt>
+<a name="L458"></a><tt class="py-lineno"> 458</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L459"></a><tt class="py-lineno"> 459</tt>  <tt class="py-line"><tt class="py-docstring">  SIDE EFFECTS: This updates the parameters dictionary object in the method</tt> </tt>
+<a name="L460"></a><tt class="py-lineno"> 460</tt>  <tt class="py-line"><tt class="py-docstring">  description.</tt> </tt>
+<a name="L461"></a><tt class="py-lineno"> 461</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L462"></a><tt class="py-lineno"> 462</tt>  <tt class="py-line"><tt class="py-docstring">  Args:</tt> </tt>
+<a name="L463"></a><tt class="py-lineno"> 463</tt>  <tt class="py-line"><tt class="py-docstring">    method_desc: Dictionary with metadata describing an API method. Value comes</tt> </tt>
+<a name="L464"></a><tt class="py-lineno"> 464</tt>  <tt class="py-line"><tt class="py-docstring">        from the dictionary of methods stored in the 'methods' key in the</tt> </tt>
+<a name="L465"></a><tt class="py-lineno"> 465</tt>  <tt class="py-line"><tt class="py-docstring">        deserialized discovery document.</tt> </tt>
+<a name="L466"></a><tt class="py-lineno"> 466</tt>  <tt class="py-line"><tt class="py-docstring">    root_desc: Dictionary; the entire original deserialized discovery document.</tt> </tt>
+<a name="L467"></a><tt class="py-lineno"> 467</tt>  <tt class="py-line"><tt class="py-docstring">    http_method: String; the HTTP method used to call the API method described</tt> </tt>
+<a name="L468"></a><tt class="py-lineno"> 468</tt>  <tt class="py-line"><tt class="py-docstring">        in method_desc.</tt> </tt>
+<a name="L469"></a><tt class="py-lineno"> 469</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L470"></a><tt class="py-lineno"> 470</tt>  <tt class="py-line"><tt class="py-docstring">  Returns:</tt> </tt>
+<a name="L471"></a><tt class="py-lineno"> 471</tt>  <tt class="py-line"><tt class="py-docstring">    The updated Dictionary stored in the 'parameters' key of the method</tt> </tt>
+<a name="L472"></a><tt class="py-lineno"> 472</tt>  <tt class="py-line"><tt class="py-docstring">        description dictionary.</tt> </tt>
+<a name="L473"></a><tt class="py-lineno"> 473</tt>  <tt class="py-line"><tt class="py-docstring">  """</tt> </tt>
+<a name="L474"></a><tt class="py-lineno"> 474</tt>  <tt class="py-line">  <tt class="py-name">parameters</tt> <tt class="py-op">=</tt> <tt class="py-name">method_desc</tt><tt class="py-op">.</tt><tt class="py-name">setdefault</tt><tt class="py-op">(</tt><tt class="py-string">'parameters'</tt><tt class="py-op">,</tt> <tt class="py-op">{</tt><tt class="py-op">}</tt><tt class="py-op">)</tt> </tt>
+<a name="L475"></a><tt class="py-lineno"> 475</tt>  <tt class="py-line"> </tt>
+<a name="L476"></a><tt class="py-lineno"> 476</tt>  <tt class="py-line">  <tt class="py-comment"># Add in the parameters common to all methods.</tt> </tt>
+<a name="L477"></a><tt class="py-lineno"> 477</tt>  <tt class="py-line">  <tt class="py-keyword">for</tt> <tt class="py-name">name</tt><tt class="py-op">,</tt> <tt class="py-name">description</tt> <tt class="py-keyword">in</tt> <tt class="py-name">six</tt><tt class="py-op">.</tt><tt class="py-name">iteritems</tt><tt class="py-op">(</tt><tt class="py-name">root_desc</tt><tt class="py-op">.</tt><tt id="link-140" class="py-name"><a title="googleapiclient.discovery_cache.appengine_memcache.Cache.get
 googleapiclient.discovery_cache.base.Cache.get
 googleapiclient.discovery_cache.file_cache.Cache.get
-googleapiclient.schema.Schemas.get" class="py-name" href="#" onclick="return doclink('link-133', 'get', 'link-93');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">'parameters'</tt><tt class="py-op">,</tt> <tt class="py-op">{</tt><tt class="py-op">}</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="L473"></a><tt class="py-lineno"> 473</tt>  <tt class="py-line">    <tt class="py-name">parameters</tt><tt class="py-op">[</tt><tt class="py-name">name</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">description</tt> </tt>
-<a name="L474"></a><tt class="py-lineno"> 474</tt>  <tt class="py-line"> </tt>
-<a name="L475"></a><tt class="py-lineno"> 475</tt>  <tt class="py-line">  <tt class="py-comment"># Add in undocumented query parameters.</tt> </tt>
-<a name="L476"></a><tt class="py-lineno"> 476</tt>  <tt class="py-line">  <tt class="py-keyword">for</tt> <tt class="py-name">name</tt> <tt class="py-keyword">in</tt> <tt id="link-134" class="py-name"><a title="googleapiclient.discovery.STACK_QUERY_PARAMETERS" class="py-name" href="#" onclick="return doclink('link-134', 'STACK_QUERY_PARAMETERS', 'link-63');">STACK_QUERY_PARAMETERS</a></tt><tt class="py-op">:</tt> </tt>
-<a name="L477"></a><tt class="py-lineno"> 477</tt>  <tt class="py-line">    <tt class="py-name">parameters</tt><tt class="py-op">[</tt><tt class="py-name">name</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt id="link-135" class="py-name"><a title="googleapiclient.discovery.STACK_QUERY_PARAMETER_DEFAULT_VALUE" class="py-name" href="#" onclick="return doclink('link-135', 'STACK_QUERY_PARAMETER_DEFAULT_VALUE', 'link-64');">STACK_QUERY_PARAMETER_DEFAULT_VALUE</a></tt><tt class="py-op">.</tt><tt class="py-name">copy</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-<a name="L478"></a><tt class="py-lineno"> 478</tt>  <tt class="py-line"> </tt>
-<a name="L479"></a><tt class="py-lineno"> 479</tt>  <tt class="py-line">  <tt class="py-comment"># Add 'body' (our own reserved word) to parameters if the method supports</tt> </tt>
-<a name="L480"></a><tt class="py-lineno"> 480</tt>  <tt class="py-line">  <tt class="py-comment"># a request payload.</tt> </tt>
-<a name="L481"></a><tt class="py-lineno"> 481</tt>  <tt class="py-line">  <tt class="py-keyword">if</tt> <tt class="py-name">http_method</tt> <tt class="py-keyword">in</tt> <tt id="link-136" class="py-name"><a title="googleapiclient.discovery.HTTP_PAYLOAD_METHODS" class="py-name" href="#" onclick="return doclink('link-136', 'HTTP_PAYLOAD_METHODS', 'link-58');">HTTP_PAYLOAD_METHODS</a></tt> <tt class="py-keyword">and</tt> <tt class="py-string">'request'</tt> <tt class="py-keyword">in</tt> <tt class="py-name">method_desc</tt><tt class="py-op">:</tt> </tt>
-<a name="L482"></a><tt class="py-lineno"> 482</tt>  <tt class="py-line">    <tt id="link-137" class="py-name" targets="Method googleapiclient.channel.Channel.body()=googleapiclient.channel.Channel-class.html#body"><a title="googleapiclient.channel.Channel.body" class="py-name" href="#" onclick="return doclink('link-137', 'body', 'link-137');">body</a></tt> <tt class="py-op">=</tt> <tt id="link-138" class="py-name"><a title="googleapiclient.discovery.BODY_PARAMETER_DEFAULT_VALUE" class="py-name" href="#" onclick="return doclink('link-138', 'BODY_PARAMETER_DEFAULT_VALUE', 'link-60');">BODY_PARAMETER_DEFAULT_VALUE</a></tt><tt class="py-op">.</tt><tt class="py-name">copy</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-<a name="L483"></a><tt class="py-lineno"> 483</tt>  <tt class="py-line">    <tt id="link-139" class="py-name"><a title="googleapiclient.channel.Channel.body" class="py-name" href="#" onclick="return doclink('link-139', 'body', 'link-137');">body</a></tt><tt class="py-op">.</tt><tt id="link-140" class="py-name" targets="Method googleapiclient.channel.Channel.update()=googleapiclient.channel.Channel-class.html#update"><a title="googleapiclient.channel.Channel.update" class="py-name" href="#" onclick="return doclink('link-140', 'update', 'link-140');">update</a></tt><tt class="py-op">(</tt><tt class="py-name">method_desc</tt><tt class="py-op">[</tt><tt class="py-string">'request'</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
-<a name="L484"></a><tt class="py-lineno"> 484</tt>  <tt class="py-line">    <tt class="py-name">parameters</tt><tt class="py-op">[</tt><tt class="py-string">'body'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt id="link-141" class="py-name"><a title="googleapiclient.channel.Channel.body" class="py-name" href="#" onclick="return doclink('link-141', 'body', 'link-137');">body</a></tt> </tt>
-<a name="L485"></a><tt class="py-lineno"> 485</tt>  <tt class="py-line"> </tt>
-<a name="L486"></a><tt class="py-lineno"> 486</tt>  <tt class="py-line">  <tt class="py-keyword">return</tt> <tt class="py-name">parameters</tt> </tt>
-</div><a name="L487"></a><tt class="py-lineno"> 487</tt>  <tt class="py-line"> </tt>
-<a name="_fix_up_media_upload"></a><div id="_fix_up_media_upload-def"><a name="L488"></a><tt class="py-lineno"> 488</tt>  <tt class="py-line"> </tt>
-<a name="L489"></a><tt class="py-lineno"> 489</tt> <a class="py-toggle" href="#" id="_fix_up_media_upload-toggle" onclick="return toggle('_fix_up_media_upload');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="googleapiclient.discovery-module.html#_fix_up_media_upload">_fix_up_media_upload</a><tt class="py-op">(</tt><tt class="py-param">method_desc</tt><tt class="py-op">,</tt> <tt class="py-param">root_desc</tt><tt class="py-op">,</tt> <tt class="py-param">path_url</tt><tt class="py-op">,</tt> <tt class="py-param">parameters</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="_fix_up_media_upload-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="_fix_up_media_upload-expanded"><a name="L490"></a><tt class="py-lineno"> 490</tt>  <tt class="py-line">  <tt class="py-docstring">"""Adds 'media_body' and 'media_mime_type' parameters if supported by method.</tt> </tt>
-<a name="L491"></a><tt class="py-lineno"> 491</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L492"></a><tt class="py-lineno"> 492</tt>  <tt class="py-line"><tt class="py-docstring">  SIDE EFFECTS: If the method supports media upload and has a required body,</tt> </tt>
-<a name="L493"></a><tt class="py-lineno"> 493</tt>  <tt class="py-line"><tt class="py-docstring">  sets body to be optional (required=False) instead. Also, if there is a</tt> </tt>
-<a name="L494"></a><tt class="py-lineno"> 494</tt>  <tt class="py-line"><tt class="py-docstring">  'mediaUpload' in the method description, adds 'media_upload' key to</tt> </tt>
-<a name="L495"></a><tt class="py-lineno"> 495</tt>  <tt class="py-line"><tt class="py-docstring">  parameters.</tt> </tt>
+googleapiclient.schema.Schemas.get" class="py-name" href="#" onclick="return doclink('link-140', 'get', 'link-94');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">'parameters'</tt><tt class="py-op">,</tt> <tt class="py-op">{</tt><tt class="py-op">}</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L478"></a><tt class="py-lineno"> 478</tt>  <tt class="py-line">    <tt class="py-name">parameters</tt><tt class="py-op">[</tt><tt class="py-name">name</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">description</tt> </tt>
+<a name="L479"></a><tt class="py-lineno"> 479</tt>  <tt class="py-line"> </tt>
+<a name="L480"></a><tt class="py-lineno"> 480</tt>  <tt class="py-line">  <tt class="py-comment"># Add in undocumented query parameters.</tt> </tt>
+<a name="L481"></a><tt class="py-lineno"> 481</tt>  <tt class="py-line">  <tt class="py-keyword">for</tt> <tt class="py-name">name</tt> <tt class="py-keyword">in</tt> <tt id="link-141" class="py-name"><a title="googleapiclient.discovery.STACK_QUERY_PARAMETERS" class="py-name" href="#" onclick="return doclink('link-141', 'STACK_QUERY_PARAMETERS', 'link-65');">STACK_QUERY_PARAMETERS</a></tt><tt class="py-op">:</tt> </tt>
+<a name="L482"></a><tt class="py-lineno"> 482</tt>  <tt class="py-line">    <tt class="py-name">parameters</tt><tt class="py-op">[</tt><tt class="py-name">name</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt id="link-142" class="py-name"><a title="googleapiclient.discovery.STACK_QUERY_PARAMETER_DEFAULT_VALUE" class="py-name" href="#" onclick="return doclink('link-142', 'STACK_QUERY_PARAMETER_DEFAULT_VALUE', 'link-66');">STACK_QUERY_PARAMETER_DEFAULT_VALUE</a></tt><tt class="py-op">.</tt><tt class="py-name">copy</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L483"></a><tt class="py-lineno"> 483</tt>  <tt class="py-line"> </tt>
+<a name="L484"></a><tt class="py-lineno"> 484</tt>  <tt class="py-line">  <tt class="py-comment"># Add 'body' (our own reserved word) to parameters if the method supports</tt> </tt>
+<a name="L485"></a><tt class="py-lineno"> 485</tt>  <tt class="py-line">  <tt class="py-comment"># a request payload.</tt> </tt>
+<a name="L486"></a><tt class="py-lineno"> 486</tt>  <tt class="py-line">  <tt class="py-keyword">if</tt> <tt class="py-name">http_method</tt> <tt class="py-keyword">in</tt> <tt id="link-143" class="py-name"><a title="googleapiclient.discovery.HTTP_PAYLOAD_METHODS" class="py-name" href="#" onclick="return doclink('link-143', 'HTTP_PAYLOAD_METHODS', 'link-60');">HTTP_PAYLOAD_METHODS</a></tt> <tt class="py-keyword">and</tt> <tt class="py-string">'request'</tt> <tt class="py-keyword">in</tt> <tt class="py-name">method_desc</tt><tt class="py-op">:</tt> </tt>
+<a name="L487"></a><tt class="py-lineno"> 487</tt>  <tt class="py-line">    <tt id="link-144" class="py-name" targets="Method googleapiclient.channel.Channel.body()=googleapiclient.channel.Channel-class.html#body"><a title="googleapiclient.channel.Channel.body" class="py-name" href="#" onclick="return doclink('link-144', 'body', 'link-144');">body</a></tt> <tt class="py-op">=</tt> <tt id="link-145" class="py-name"><a title="googleapiclient.discovery.BODY_PARAMETER_DEFAULT_VALUE" class="py-name" href="#" onclick="return doclink('link-145', 'BODY_PARAMETER_DEFAULT_VALUE', 'link-62');">BODY_PARAMETER_DEFAULT_VALUE</a></tt><tt class="py-op">.</tt><tt class="py-name">copy</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L488"></a><tt class="py-lineno"> 488</tt>  <tt class="py-line">    <tt id="link-146" class="py-name"><a title="googleapiclient.channel.Channel.body" class="py-name" href="#" onclick="return doclink('link-146', 'body', 'link-144');">body</a></tt><tt class="py-op">.</tt><tt id="link-147" class="py-name" targets="Method googleapiclient.channel.Channel.update()=googleapiclient.channel.Channel-class.html#update"><a title="googleapiclient.channel.Channel.update" class="py-name" href="#" onclick="return doclink('link-147', 'update', 'link-147');">update</a></tt><tt class="py-op">(</tt><tt class="py-name">method_desc</tt><tt class="py-op">[</tt><tt class="py-string">'request'</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L489"></a><tt class="py-lineno"> 489</tt>  <tt class="py-line">    <tt class="py-name">parameters</tt><tt class="py-op">[</tt><tt class="py-string">'body'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt id="link-148" class="py-name"><a title="googleapiclient.channel.Channel.body" class="py-name" href="#" onclick="return doclink('link-148', 'body', 'link-144');">body</a></tt> </tt>
+<a name="L490"></a><tt class="py-lineno"> 490</tt>  <tt class="py-line"> </tt>
+<a name="L491"></a><tt class="py-lineno"> 491</tt>  <tt class="py-line">  <tt class="py-keyword">return</tt> <tt class="py-name">parameters</tt> </tt>
+</div><a name="L492"></a><tt class="py-lineno"> 492</tt>  <tt class="py-line"> </tt>
+<a name="_fix_up_media_upload"></a><div id="_fix_up_media_upload-def"><a name="L493"></a><tt class="py-lineno"> 493</tt>  <tt class="py-line"> </tt>
+<a name="L494"></a><tt class="py-lineno"> 494</tt> <a class="py-toggle" href="#" id="_fix_up_media_upload-toggle" onclick="return toggle('_fix_up_media_upload');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="googleapiclient.discovery-module.html#_fix_up_media_upload">_fix_up_media_upload</a><tt class="py-op">(</tt><tt class="py-param">method_desc</tt><tt class="py-op">,</tt> <tt class="py-param">root_desc</tt><tt class="py-op">,</tt> <tt class="py-param">path_url</tt><tt class="py-op">,</tt> <tt class="py-param">parameters</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="_fix_up_media_upload-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="_fix_up_media_upload-expanded"><a name="L495"></a><tt class="py-lineno"> 495</tt>  <tt class="py-line">  <tt class="py-docstring">"""Adds 'media_body' and 'media_mime_type' parameters if supported by method.</tt> </tt>
 <a name="L496"></a><tt class="py-lineno"> 496</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L497"></a><tt class="py-lineno"> 497</tt>  <tt class="py-line"><tt class="py-docstring">  Args:</tt> </tt>
-<a name="L498"></a><tt class="py-lineno"> 498</tt>  <tt class="py-line"><tt class="py-docstring">    method_desc: Dictionary with metadata describing an API method. Value comes</tt> </tt>
-<a name="L499"></a><tt class="py-lineno"> 499</tt>  <tt class="py-line"><tt class="py-docstring">        from the dictionary of methods stored in the 'methods' key in the</tt> </tt>
-<a name="L500"></a><tt class="py-lineno"> 500</tt>  <tt class="py-line"><tt class="py-docstring">        deserialized discovery document.</tt> </tt>
-<a name="L501"></a><tt class="py-lineno"> 501</tt>  <tt class="py-line"><tt class="py-docstring">    root_desc: Dictionary; the entire original deserialized discovery document.</tt> </tt>
-<a name="L502"></a><tt class="py-lineno"> 502</tt>  <tt class="py-line"><tt class="py-docstring">    path_url: String; the relative URL for the API method. Relative to the API</tt> </tt>
-<a name="L503"></a><tt class="py-lineno"> 503</tt>  <tt class="py-line"><tt class="py-docstring">        root, which is specified in the discovery document.</tt> </tt>
-<a name="L504"></a><tt class="py-lineno"> 504</tt>  <tt class="py-line"><tt class="py-docstring">    parameters: A dictionary describing method parameters for method described</tt> </tt>
-<a name="L505"></a><tt class="py-lineno"> 505</tt>  <tt class="py-line"><tt class="py-docstring">        in method_desc.</tt> </tt>
-<a name="L506"></a><tt class="py-lineno"> 506</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L507"></a><tt class="py-lineno"> 507</tt>  <tt class="py-line"><tt class="py-docstring">  Returns:</tt> </tt>
-<a name="L508"></a><tt class="py-lineno"> 508</tt>  <tt class="py-line"><tt class="py-docstring">    Triple (accept, max_size, media_path_url) where:</tt> </tt>
-<a name="L509"></a><tt class="py-lineno"> 509</tt>  <tt class="py-line"><tt class="py-docstring">      - accept is a list of strings representing what content types are</tt> </tt>
-<a name="L510"></a><tt class="py-lineno"> 510</tt>  <tt class="py-line"><tt class="py-docstring">        accepted for media upload. Defaults to empty list if not in the</tt> </tt>
-<a name="L511"></a><tt class="py-lineno"> 511</tt>  <tt class="py-line"><tt class="py-docstring">        discovery document.</tt> </tt>
-<a name="L512"></a><tt class="py-lineno"> 512</tt>  <tt class="py-line"><tt class="py-docstring">      - max_size is a long representing the max size in bytes allowed for a</tt> </tt>
-<a name="L513"></a><tt class="py-lineno"> 513</tt>  <tt class="py-line"><tt class="py-docstring">        media upload. Defaults to 0L if not in the discovery document.</tt> </tt>
-<a name="L514"></a><tt class="py-lineno"> 514</tt>  <tt class="py-line"><tt class="py-docstring">      - media_path_url is a String; the absolute URI for media upload for the</tt> </tt>
-<a name="L515"></a><tt class="py-lineno"> 515</tt>  <tt class="py-line"><tt class="py-docstring">        API method. Constructed using the API root URI and service path from</tt> </tt>
-<a name="L516"></a><tt class="py-lineno"> 516</tt>  <tt class="py-line"><tt class="py-docstring">        the discovery document and the relative path for the API method. If</tt> </tt>
-<a name="L517"></a><tt class="py-lineno"> 517</tt>  <tt class="py-line"><tt class="py-docstring">        media upload is not supported, this is None.</tt> </tt>
-<a name="L518"></a><tt class="py-lineno"> 518</tt>  <tt class="py-line"><tt class="py-docstring">  """</tt> </tt>
-<a name="L519"></a><tt class="py-lineno"> 519</tt>  <tt class="py-line">  <tt class="py-name">media_upload</tt> <tt class="py-op">=</tt> <tt class="py-name">method_desc</tt><tt class="py-op">.</tt><tt id="link-142" class="py-name"><a title="googleapiclient.discovery_cache.appengine_memcache.Cache.get
+<a name="L497"></a><tt class="py-lineno"> 497</tt>  <tt class="py-line"><tt class="py-docstring">  SIDE EFFECTS: If the method supports media upload and has a required body,</tt> </tt>
+<a name="L498"></a><tt class="py-lineno"> 498</tt>  <tt class="py-line"><tt class="py-docstring">  sets body to be optional (required=False) instead. Also, if there is a</tt> </tt>
+<a name="L499"></a><tt class="py-lineno"> 499</tt>  <tt class="py-line"><tt class="py-docstring">  'mediaUpload' in the method description, adds 'media_upload' key to</tt> </tt>
+<a name="L500"></a><tt class="py-lineno"> 500</tt>  <tt class="py-line"><tt class="py-docstring">  parameters.</tt> </tt>
+<a name="L501"></a><tt class="py-lineno"> 501</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L502"></a><tt class="py-lineno"> 502</tt>  <tt class="py-line"><tt class="py-docstring">  Args:</tt> </tt>
+<a name="L503"></a><tt class="py-lineno"> 503</tt>  <tt class="py-line"><tt class="py-docstring">    method_desc: Dictionary with metadata describing an API method. Value comes</tt> </tt>
+<a name="L504"></a><tt class="py-lineno"> 504</tt>  <tt class="py-line"><tt class="py-docstring">        from the dictionary of methods stored in the 'methods' key in the</tt> </tt>
+<a name="L505"></a><tt class="py-lineno"> 505</tt>  <tt class="py-line"><tt class="py-docstring">        deserialized discovery document.</tt> </tt>
+<a name="L506"></a><tt class="py-lineno"> 506</tt>  <tt class="py-line"><tt class="py-docstring">    root_desc: Dictionary; the entire original deserialized discovery document.</tt> </tt>
+<a name="L507"></a><tt class="py-lineno"> 507</tt>  <tt class="py-line"><tt class="py-docstring">    path_url: String; the relative URL for the API method. Relative to the API</tt> </tt>
+<a name="L508"></a><tt class="py-lineno"> 508</tt>  <tt class="py-line"><tt class="py-docstring">        root, which is specified in the discovery document.</tt> </tt>
+<a name="L509"></a><tt class="py-lineno"> 509</tt>  <tt class="py-line"><tt class="py-docstring">    parameters: A dictionary describing method parameters for method described</tt> </tt>
+<a name="L510"></a><tt class="py-lineno"> 510</tt>  <tt class="py-line"><tt class="py-docstring">        in method_desc.</tt> </tt>
+<a name="L511"></a><tt class="py-lineno"> 511</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L512"></a><tt class="py-lineno"> 512</tt>  <tt class="py-line"><tt class="py-docstring">  Returns:</tt> </tt>
+<a name="L513"></a><tt class="py-lineno"> 513</tt>  <tt class="py-line"><tt class="py-docstring">    Triple (accept, max_size, media_path_url) where:</tt> </tt>
+<a name="L514"></a><tt class="py-lineno"> 514</tt>  <tt class="py-line"><tt class="py-docstring">      - accept is a list of strings representing what content types are</tt> </tt>
+<a name="L515"></a><tt class="py-lineno"> 515</tt>  <tt class="py-line"><tt class="py-docstring">        accepted for media upload. Defaults to empty list if not in the</tt> </tt>
+<a name="L516"></a><tt class="py-lineno"> 516</tt>  <tt class="py-line"><tt class="py-docstring">        discovery document.</tt> </tt>
+<a name="L517"></a><tt class="py-lineno"> 517</tt>  <tt class="py-line"><tt class="py-docstring">      - max_size is a long representing the max size in bytes allowed for a</tt> </tt>
+<a name="L518"></a><tt class="py-lineno"> 518</tt>  <tt class="py-line"><tt class="py-docstring">        media upload. Defaults to 0L if not in the discovery document.</tt> </tt>
+<a name="L519"></a><tt class="py-lineno"> 519</tt>  <tt class="py-line"><tt class="py-docstring">      - media_path_url is a String; the absolute URI for media upload for the</tt> </tt>
+<a name="L520"></a><tt class="py-lineno"> 520</tt>  <tt class="py-line"><tt class="py-docstring">        API method. Constructed using the API root URI and service path from</tt> </tt>
+<a name="L521"></a><tt class="py-lineno"> 521</tt>  <tt class="py-line"><tt class="py-docstring">        the discovery document and the relative path for the API method. If</tt> </tt>
+<a name="L522"></a><tt class="py-lineno"> 522</tt>  <tt class="py-line"><tt class="py-docstring">        media upload is not supported, this is None.</tt> </tt>
+<a name="L523"></a><tt class="py-lineno"> 523</tt>  <tt class="py-line"><tt class="py-docstring">  """</tt> </tt>
+<a name="L524"></a><tt class="py-lineno"> 524</tt>  <tt class="py-line">  <tt class="py-name">media_upload</tt> <tt class="py-op">=</tt> <tt class="py-name">method_desc</tt><tt class="py-op">.</tt><tt id="link-149" class="py-name"><a title="googleapiclient.discovery_cache.appengine_memcache.Cache.get
 googleapiclient.discovery_cache.base.Cache.get
 googleapiclient.discovery_cache.file_cache.Cache.get
-googleapiclient.schema.Schemas.get" class="py-name" href="#" onclick="return doclink('link-142', 'get', 'link-93');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">'mediaUpload'</tt><tt class="py-op">,</tt> <tt class="py-op">{</tt><tt class="py-op">}</tt><tt class="py-op">)</tt> </tt>
-<a name="L520"></a><tt class="py-lineno"> 520</tt>  <tt class="py-line">  <tt id="link-143" class="py-name" targets="Variable googleapiclient.model.BaseModel.accept=googleapiclient.model.BaseModel-class.html#accept,Variable googleapiclient.model.JsonModel.accept=googleapiclient.model.JsonModel-class.html#accept,Variable googleapiclient.model.MediaModel.accept=googleapiclient.model.MediaModel-class.html#accept,Variable googleapiclient.model.ProtocolBufferModel.accept=googleapiclient.model.ProtocolBufferModel-class.html#accept,Variable googleapiclient.model.RawModel.accept=googleapiclient.model.RawModel-class.html#accept"><a title="googleapiclient.model.BaseModel.accept
+googleapiclient.schema.Schemas.get" class="py-name" href="#" onclick="return doclink('link-149', 'get', 'link-94');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">'mediaUpload'</tt><tt class="py-op">,</tt> <tt class="py-op">{</tt><tt class="py-op">}</tt><tt class="py-op">)</tt> </tt>
+<a name="L525"></a><tt class="py-lineno"> 525</tt>  <tt class="py-line">  <tt id="link-150" class="py-name" targets="Variable googleapiclient.model.BaseModel.accept=googleapiclient.model.BaseModel-class.html#accept,Variable googleapiclient.model.JsonModel.accept=googleapiclient.model.JsonModel-class.html#accept,Variable googleapiclient.model.MediaModel.accept=googleapiclient.model.MediaModel-class.html#accept,Variable googleapiclient.model.ProtocolBufferModel.accept=googleapiclient.model.ProtocolBufferModel-class.html#accept,Variable googleapiclient.model.RawModel.accept=googleapiclient.model.RawModel-class.html#accept"><a title="googleapiclient.model.BaseModel.accept
 googleapiclient.model.JsonModel.accept
 googleapiclient.model.MediaModel.accept
 googleapiclient.model.ProtocolBufferModel.accept
-googleapiclient.model.RawModel.accept" class="py-name" href="#" onclick="return doclink('link-143', 'accept', 'link-143');">accept</a></tt> <tt class="py-op">=</tt> <tt class="py-name">media_upload</tt><tt class="py-op">.</tt><tt id="link-144" class="py-name"><a title="googleapiclient.discovery_cache.appengine_memcache.Cache.get
+googleapiclient.model.RawModel.accept" class="py-name" href="#" onclick="return doclink('link-150', 'accept', 'link-150');">accept</a></tt> <tt class="py-op">=</tt> <tt class="py-name">media_upload</tt><tt class="py-op">.</tt><tt id="link-151" class="py-name"><a title="googleapiclient.discovery_cache.appengine_memcache.Cache.get
 googleapiclient.discovery_cache.base.Cache.get
 googleapiclient.discovery_cache.file_cache.Cache.get
-googleapiclient.schema.Schemas.get" class="py-name" href="#" onclick="return doclink('link-144', 'get', 'link-93');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">'accept'</tt><tt class="py-op">,</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
-<a name="L521"></a><tt class="py-lineno"> 521</tt>  <tt class="py-line">  <tt class="py-name">max_size</tt> <tt class="py-op">=</tt> <tt id="link-145" class="py-name" targets="Function googleapiclient.discovery._media_size_to_long()=googleapiclient.discovery-module.html#_media_size_to_long"><a title="googleapiclient.discovery._media_size_to_long" class="py-name" href="#" onclick="return doclink('link-145', '_media_size_to_long', 'link-145');">_media_size_to_long</a></tt><tt class="py-op">(</tt><tt class="py-name">media_upload</tt><tt class="py-op">.</tt><tt id="link-146" class="py-name"><a title="googleapiclient.discovery_cache.appengine_memcache.Cache.get
+googleapiclient.schema.Schemas.get" class="py-name" href="#" onclick="return doclink('link-151', 'get', 'link-94');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">'accept'</tt><tt class="py-op">,</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L526"></a><tt class="py-lineno"> 526</tt>  <tt class="py-line">  <tt class="py-name">max_size</tt> <tt class="py-op">=</tt> <tt id="link-152" class="py-name" targets="Function googleapiclient.discovery._media_size_to_long()=googleapiclient.discovery-module.html#_media_size_to_long"><a title="googleapiclient.discovery._media_size_to_long" class="py-name" href="#" onclick="return doclink('link-152', '_media_size_to_long', 'link-152');">_media_size_to_long</a></tt><tt class="py-op">(</tt><tt class="py-name">media_upload</tt><tt class="py-op">.</tt><tt id="link-153" class="py-name"><a title="googleapiclient.discovery_cache.appengine_memcache.Cache.get
 googleapiclient.discovery_cache.base.Cache.get
 googleapiclient.discovery_cache.file_cache.Cache.get
-googleapiclient.schema.Schemas.get" class="py-name" href="#" onclick="return doclink('link-146', 'get', 'link-93');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">'maxSize'</tt><tt class="py-op">,</tt> <tt class="py-string">''</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L522"></a><tt class="py-lineno"> 522</tt>  <tt class="py-line">  <tt class="py-name">media_path_url</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
-<a name="L523"></a><tt class="py-lineno"> 523</tt>  <tt class="py-line"> </tt>
-<a name="L524"></a><tt class="py-lineno"> 524</tt>  <tt class="py-line">  <tt class="py-keyword">if</tt> <tt class="py-name">media_upload</tt><tt class="py-op">:</tt> </tt>
-<a name="L525"></a><tt class="py-lineno"> 525</tt>  <tt class="py-line">    <tt class="py-name">media_path_url</tt> <tt class="py-op">=</tt> <tt id="link-147" class="py-name" targets="Function googleapiclient.discovery._media_path_url_from_info()=googleapiclient.discovery-module.html#_media_path_url_from_info"><a title="googleapiclient.discovery._media_path_url_from_info" class="py-name" href="#" onclick="return doclink('link-147', '_media_path_url_from_info', 'link-147');">_media_path_url_from_info</a></tt><tt class="py-op">(</tt><tt class="py-name">root_desc</tt><tt class="py-op">,</tt> <tt class="py-name">path_url</tt><tt class="py-op">)</tt> </tt>
-<a name="L526"></a><tt class="py-lineno"> 526</tt>  <tt class="py-line">    <tt class="py-name">parameters</tt><tt class="py-op">[</tt><tt class="py-string">'media_body'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt id="link-148" class="py-name"><a title="googleapiclient.discovery.MEDIA_BODY_PARAMETER_DEFAULT_VALUE" class="py-name" href="#" onclick="return doclink('link-148', 'MEDIA_BODY_PARAMETER_DEFAULT_VALUE', 'link-61');">MEDIA_BODY_PARAMETER_DEFAULT_VALUE</a></tt><tt class="py-op">.</tt><tt class="py-name">copy</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-<a name="L527"></a><tt class="py-lineno"> 527</tt>  <tt class="py-line">    <tt class="py-name">parameters</tt><tt class="py-op">[</tt><tt class="py-string">'media_mime_type'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt id="link-149" class="py-name"><a title="googleapiclient.discovery.MEDIA_MIME_TYPE_PARAMETER_DEFAULT_VALUE" class="py-name" href="#" onclick="return doclink('link-149', 'MEDIA_MIME_TYPE_PARAMETER_DEFAULT_VALUE', 'link-62');">MEDIA_MIME_TYPE_PARAMETER_DEFAULT_VALUE</a></tt><tt class="py-op">.</tt><tt class="py-name">copy</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-<a name="L528"></a><tt class="py-lineno"> 528</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-string">'body'</tt> <tt class="py-keyword">in</tt> <tt class="py-name">parameters</tt><tt class="py-op">:</tt> </tt>
-<a name="L529"></a><tt class="py-lineno"> 529</tt>  <tt class="py-line">      <tt class="py-name">parameters</tt><tt class="py-op">[</tt><tt class="py-string">'body'</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-string">'required'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">False</tt> </tt>
-<a name="L530"></a><tt class="py-lineno"> 530</tt>  <tt class="py-line"> </tt>
-<a name="L531"></a><tt class="py-lineno"> 531</tt>  <tt class="py-line">  <tt class="py-keyword">return</tt> <tt id="link-150" class="py-name"><a title="googleapiclient.model.BaseModel.accept
+googleapiclient.schema.Schemas.get" class="py-name" href="#" onclick="return doclink('link-153', 'get', 'link-94');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">'maxSize'</tt><tt class="py-op">,</tt> <tt class="py-string">''</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L527"></a><tt class="py-lineno"> 527</tt>  <tt class="py-line">  <tt class="py-name">media_path_url</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
+<a name="L528"></a><tt class="py-lineno"> 528</tt>  <tt class="py-line"> </tt>
+<a name="L529"></a><tt class="py-lineno"> 529</tt>  <tt class="py-line">  <tt class="py-keyword">if</tt> <tt class="py-name">media_upload</tt><tt class="py-op">:</tt> </tt>
+<a name="L530"></a><tt class="py-lineno"> 530</tt>  <tt class="py-line">    <tt class="py-name">media_path_url</tt> <tt class="py-op">=</tt> <tt id="link-154" class="py-name" targets="Function googleapiclient.discovery._media_path_url_from_info()=googleapiclient.discovery-module.html#_media_path_url_from_info"><a title="googleapiclient.discovery._media_path_url_from_info" class="py-name" href="#" onclick="return doclink('link-154', '_media_path_url_from_info', 'link-154');">_media_path_url_from_info</a></tt><tt class="py-op">(</tt><tt class="py-name">root_desc</tt><tt class="py-op">,</tt> <tt class="py-name">path_url</tt><tt class="py-op">)</tt> </tt>
+<a name="L531"></a><tt class="py-lineno"> 531</tt>  <tt class="py-line">    <tt class="py-name">parameters</tt><tt class="py-op">[</tt><tt class="py-string">'media_body'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt id="link-155" class="py-name"><a title="googleapiclient.discovery.MEDIA_BODY_PARAMETER_DEFAULT_VALUE" class="py-name" href="#" onclick="return doclink('link-155', 'MEDIA_BODY_PARAMETER_DEFAULT_VALUE', 'link-63');">MEDIA_BODY_PARAMETER_DEFAULT_VALUE</a></tt><tt class="py-op">.</tt><tt class="py-name">copy</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L532"></a><tt class="py-lineno"> 532</tt>  <tt class="py-line">    <tt class="py-name">parameters</tt><tt class="py-op">[</tt><tt class="py-string">'media_mime_type'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt id="link-156" class="py-name"><a title="googleapiclient.discovery.MEDIA_MIME_TYPE_PARAMETER_DEFAULT_VALUE" class="py-name" href="#" onclick="return doclink('link-156', 'MEDIA_MIME_TYPE_PARAMETER_DEFAULT_VALUE', 'link-64');">MEDIA_MIME_TYPE_PARAMETER_DEFAULT_VALUE</a></tt><tt class="py-op">.</tt><tt class="py-name">copy</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L533"></a><tt class="py-lineno"> 533</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-string">'body'</tt> <tt class="py-keyword">in</tt> <tt class="py-name">parameters</tt><tt class="py-op">:</tt> </tt>
+<a name="L534"></a><tt class="py-lineno"> 534</tt>  <tt class="py-line">      <tt class="py-name">parameters</tt><tt class="py-op">[</tt><tt class="py-string">'body'</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-string">'required'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">False</tt> </tt>
+<a name="L535"></a><tt class="py-lineno"> 535</tt>  <tt class="py-line"> </tt>
+<a name="L536"></a><tt class="py-lineno"> 536</tt>  <tt class="py-line">  <tt class="py-keyword">return</tt> <tt id="link-157" class="py-name"><a title="googleapiclient.model.BaseModel.accept
 googleapiclient.model.JsonModel.accept
 googleapiclient.model.MediaModel.accept
 googleapiclient.model.ProtocolBufferModel.accept
-googleapiclient.model.RawModel.accept" class="py-name" href="#" onclick="return doclink('link-150', 'accept', 'link-143');">accept</a></tt><tt class="py-op">,</tt> <tt class="py-name">max_size</tt><tt class="py-op">,</tt> <tt class="py-name">media_path_url</tt> </tt>
-</div><a name="L532"></a><tt class="py-lineno"> 532</tt>  <tt class="py-line"> </tt>
-<a name="_fix_up_method_description"></a><div id="_fix_up_method_description-def"><a name="L533"></a><tt class="py-lineno"> 533</tt>  <tt class="py-line"> </tt>
-<a name="L534"></a><tt class="py-lineno"> 534</tt> <a class="py-toggle" href="#" id="_fix_up_method_description-toggle" onclick="return toggle('_fix_up_method_description');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="googleapiclient.discovery-module.html#_fix_up_method_description">_fix_up_method_description</a><tt class="py-op">(</tt><tt class="py-param">method_desc</tt><tt class="py-op">,</tt> <tt class="py-param">root_desc</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="_fix_up_method_description-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="_fix_up_method_description-expanded"><a name="L535"></a><tt class="py-lineno"> 535</tt>  <tt class="py-line">  <tt class="py-docstring">"""Updates a method description in a discovery document.</tt> </tt>
-<a name="L536"></a><tt class="py-lineno"> 536</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L537"></a><tt class="py-lineno"> 537</tt>  <tt class="py-line"><tt class="py-docstring">  SIDE EFFECTS: Changes the parameters dictionary in the method description with</tt> </tt>
-<a name="L538"></a><tt class="py-lineno"> 538</tt>  <tt class="py-line"><tt class="py-docstring">  extra parameters which are used locally.</tt> </tt>
-<a name="L539"></a><tt class="py-lineno"> 539</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L540"></a><tt class="py-lineno"> 540</tt>  <tt class="py-line"><tt class="py-docstring">  Args:</tt> </tt>
-<a name="L541"></a><tt class="py-lineno"> 541</tt>  <tt class="py-line"><tt class="py-docstring">    method_desc: Dictionary with metadata describing an API method. Value comes</tt> </tt>
-<a name="L542"></a><tt class="py-lineno"> 542</tt>  <tt class="py-line"><tt class="py-docstring">        from the dictionary of methods stored in the 'methods' key in the</tt> </tt>
-<a name="L543"></a><tt class="py-lineno"> 543</tt>  <tt class="py-line"><tt class="py-docstring">        deserialized discovery document.</tt> </tt>
-<a name="L544"></a><tt class="py-lineno"> 544</tt>  <tt class="py-line"><tt class="py-docstring">    root_desc: Dictionary; the entire original deserialized discovery document.</tt> </tt>
-<a name="L545"></a><tt class="py-lineno"> 545</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L546"></a><tt class="py-lineno"> 546</tt>  <tt class="py-line"><tt class="py-docstring">  Returns:</tt> </tt>
-<a name="L547"></a><tt class="py-lineno"> 547</tt>  <tt class="py-line"><tt class="py-docstring">    Tuple (path_url, http_method, method_id, accept, max_size, media_path_url)</tt> </tt>
-<a name="L548"></a><tt class="py-lineno"> 548</tt>  <tt class="py-line"><tt class="py-docstring">    where:</tt> </tt>
-<a name="L549"></a><tt class="py-lineno"> 549</tt>  <tt class="py-line"><tt class="py-docstring">      - path_url is a String; the relative URL for the API method. Relative to</tt> </tt>
-<a name="L550"></a><tt class="py-lineno"> 550</tt>  <tt class="py-line"><tt class="py-docstring">        the API root, which is specified in the discovery document.</tt> </tt>
-<a name="L551"></a><tt class="py-lineno"> 551</tt>  <tt class="py-line"><tt class="py-docstring">      - http_method is a String; the HTTP method used to call the API method</tt> </tt>
-<a name="L552"></a><tt class="py-lineno"> 552</tt>  <tt class="py-line"><tt class="py-docstring">        described in the method description.</tt> </tt>
-<a name="L553"></a><tt class="py-lineno"> 553</tt>  <tt class="py-line"><tt class="py-docstring">      - method_id is a String; the name of the RPC method associated with the</tt> </tt>
-<a name="L554"></a><tt class="py-lineno"> 554</tt>  <tt class="py-line"><tt class="py-docstring">        API method, and is in the method description in the 'id' key.</tt> </tt>
-<a name="L555"></a><tt class="py-lineno"> 555</tt>  <tt class="py-line"><tt class="py-docstring">      - accept is a list of strings representing what content types are</tt> </tt>
-<a name="L556"></a><tt class="py-lineno"> 556</tt>  <tt class="py-line"><tt class="py-docstring">        accepted for media upload. Defaults to empty list if not in the</tt> </tt>
-<a name="L557"></a><tt class="py-lineno"> 557</tt>  <tt class="py-line"><tt class="py-docstring">        discovery document.</tt> </tt>
-<a name="L558"></a><tt class="py-lineno"> 558</tt>  <tt class="py-line"><tt class="py-docstring">      - max_size is a long representing the max size in bytes allowed for a</tt> </tt>
-<a name="L559"></a><tt class="py-lineno"> 559</tt>  <tt class="py-line"><tt class="py-docstring">        media upload. Defaults to 0L if not in the discovery document.</tt> </tt>
-<a name="L560"></a><tt class="py-lineno"> 560</tt>  <tt class="py-line"><tt class="py-docstring">      - media_path_url is a String; the absolute URI for media upload for the</tt> </tt>
-<a name="L561"></a><tt class="py-lineno"> 561</tt>  <tt class="py-line"><tt class="py-docstring">        API method. Constructed using the API root URI and service path from</tt> </tt>
-<a name="L562"></a><tt class="py-lineno"> 562</tt>  <tt class="py-line"><tt class="py-docstring">        the discovery document and the relative path for the API method. If</tt> </tt>
-<a name="L563"></a><tt class="py-lineno"> 563</tt>  <tt class="py-line"><tt class="py-docstring">        media upload is not supported, this is None.</tt> </tt>
-<a name="L564"></a><tt class="py-lineno"> 564</tt>  <tt class="py-line"><tt class="py-docstring">  """</tt> </tt>
-<a name="L565"></a><tt class="py-lineno"> 565</tt>  <tt class="py-line">  <tt class="py-name">path_url</tt> <tt class="py-op">=</tt> <tt class="py-name">method_desc</tt><tt class="py-op">[</tt><tt class="py-string">'path'</tt><tt class="py-op">]</tt> </tt>
-<a name="L566"></a><tt class="py-lineno"> 566</tt>  <tt class="py-line">  <tt class="py-name">http_method</tt> <tt class="py-op">=</tt> <tt class="py-name">method_desc</tt><tt class="py-op">[</tt><tt class="py-string">'httpMethod'</tt><tt class="py-op">]</tt> </tt>
-<a name="L567"></a><tt class="py-lineno"> 567</tt>  <tt class="py-line">  <tt class="py-name">method_id</tt> <tt class="py-op">=</tt> <tt class="py-name">method_desc</tt><tt class="py-op">[</tt><tt class="py-string">'id'</tt><tt class="py-op">]</tt> </tt>
-<a name="L568"></a><tt class="py-lineno"> 568</tt>  <tt class="py-line"> </tt>
-<a name="L569"></a><tt class="py-lineno"> 569</tt>  <tt class="py-line">  <tt class="py-name">parameters</tt> <tt class="py-op">=</tt> <tt id="link-151" class="py-name" targets="Function googleapiclient.discovery._fix_up_parameters()=googleapiclient.discovery-module.html#_fix_up_parameters"><a title="googleapiclient.discovery._fix_up_parameters" class="py-name" href="#" onclick="return doclink('link-151', '_fix_up_parameters', 'link-151');">_fix_up_parameters</a></tt><tt class="py-op">(</tt><tt class="py-name">method_desc</tt><tt class="py-op">,</tt> <tt class="py-name">root_desc</tt><tt class="py-op">,</tt> <tt class="py-name">http_method</tt><tt class="py-op">)</tt> </tt>
-<a name="L570"></a><tt class="py-lineno"> 570</tt>  <tt class="py-line">  <tt class="py-comment"># Order is important. `_fix_up_media_upload` needs `method_desc` to have a</tt> </tt>
-<a name="L571"></a><tt class="py-lineno"> 571</tt>  <tt class="py-line">  <tt class="py-comment"># 'parameters' key and needs to know if there is a 'body' parameter because it</tt> </tt>
-<a name="L572"></a><tt class="py-lineno"> 572</tt>  <tt class="py-line">  <tt class="py-comment"># also sets a 'media_body' parameter.</tt> </tt>
-<a name="L573"></a><tt class="py-lineno"> 573</tt>  <tt class="py-line">  <tt id="link-152" class="py-name"><a title="googleapiclient.model.BaseModel.accept
+googleapiclient.model.RawModel.accept" class="py-name" href="#" onclick="return doclink('link-157', 'accept', 'link-150');">accept</a></tt><tt class="py-op">,</tt> <tt class="py-name">max_size</tt><tt class="py-op">,</tt> <tt class="py-name">media_path_url</tt> </tt>
+</div><a name="L537"></a><tt class="py-lineno"> 537</tt>  <tt class="py-line"> </tt>
+<a name="_fix_up_method_description"></a><div id="_fix_up_method_description-def"><a name="L538"></a><tt class="py-lineno"> 538</tt>  <tt class="py-line"> </tt>
+<a name="L539"></a><tt class="py-lineno"> 539</tt> <a class="py-toggle" href="#" id="_fix_up_method_description-toggle" onclick="return toggle('_fix_up_method_description');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="googleapiclient.discovery-module.html#_fix_up_method_description">_fix_up_method_description</a><tt class="py-op">(</tt><tt class="py-param">method_desc</tt><tt class="py-op">,</tt> <tt class="py-param">root_desc</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="_fix_up_method_description-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="_fix_up_method_description-expanded"><a name="L540"></a><tt class="py-lineno"> 540</tt>  <tt class="py-line">  <tt class="py-docstring">"""Updates a method description in a discovery document.</tt> </tt>
+<a name="L541"></a><tt class="py-lineno"> 541</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L542"></a><tt class="py-lineno"> 542</tt>  <tt class="py-line"><tt class="py-docstring">  SIDE EFFECTS: Changes the parameters dictionary in the method description with</tt> </tt>
+<a name="L543"></a><tt class="py-lineno"> 543</tt>  <tt class="py-line"><tt class="py-docstring">  extra parameters which are used locally.</tt> </tt>
+<a name="L544"></a><tt class="py-lineno"> 544</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L545"></a><tt class="py-lineno"> 545</tt>  <tt class="py-line"><tt class="py-docstring">  Args:</tt> </tt>
+<a name="L546"></a><tt class="py-lineno"> 546</tt>  <tt class="py-line"><tt class="py-docstring">    method_desc: Dictionary with metadata describing an API method. Value comes</tt> </tt>
+<a name="L547"></a><tt class="py-lineno"> 547</tt>  <tt class="py-line"><tt class="py-docstring">        from the dictionary of methods stored in the 'methods' key in the</tt> </tt>
+<a name="L548"></a><tt class="py-lineno"> 548</tt>  <tt class="py-line"><tt class="py-docstring">        deserialized discovery document.</tt> </tt>
+<a name="L549"></a><tt class="py-lineno"> 549</tt>  <tt class="py-line"><tt class="py-docstring">    root_desc: Dictionary; the entire original deserialized discovery document.</tt> </tt>
+<a name="L550"></a><tt class="py-lineno"> 550</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L551"></a><tt class="py-lineno"> 551</tt>  <tt class="py-line"><tt class="py-docstring">  Returns:</tt> </tt>
+<a name="L552"></a><tt class="py-lineno"> 552</tt>  <tt class="py-line"><tt class="py-docstring">    Tuple (path_url, http_method, method_id, accept, max_size, media_path_url)</tt> </tt>
+<a name="L553"></a><tt class="py-lineno"> 553</tt>  <tt class="py-line"><tt class="py-docstring">    where:</tt> </tt>
+<a name="L554"></a><tt class="py-lineno"> 554</tt>  <tt class="py-line"><tt class="py-docstring">      - path_url is a String; the relative URL for the API method. Relative to</tt> </tt>
+<a name="L555"></a><tt class="py-lineno"> 555</tt>  <tt class="py-line"><tt class="py-docstring">        the API root, which is specified in the discovery document.</tt> </tt>
+<a name="L556"></a><tt class="py-lineno"> 556</tt>  <tt class="py-line"><tt class="py-docstring">      - http_method is a String; the HTTP method used to call the API method</tt> </tt>
+<a name="L557"></a><tt class="py-lineno"> 557</tt>  <tt class="py-line"><tt class="py-docstring">        described in the method description.</tt> </tt>
+<a name="L558"></a><tt class="py-lineno"> 558</tt>  <tt class="py-line"><tt class="py-docstring">      - method_id is a String; the name of the RPC method associated with the</tt> </tt>
+<a name="L559"></a><tt class="py-lineno"> 559</tt>  <tt class="py-line"><tt class="py-docstring">        API method, and is in the method description in the 'id' key.</tt> </tt>
+<a name="L560"></a><tt class="py-lineno"> 560</tt>  <tt class="py-line"><tt class="py-docstring">      - accept is a list of strings representing what content types are</tt> </tt>
+<a name="L561"></a><tt class="py-lineno"> 561</tt>  <tt class="py-line"><tt class="py-docstring">        accepted for media upload. Defaults to empty list if not in the</tt> </tt>
+<a name="L562"></a><tt class="py-lineno"> 562</tt>  <tt class="py-line"><tt class="py-docstring">        discovery document.</tt> </tt>
+<a name="L563"></a><tt class="py-lineno"> 563</tt>  <tt class="py-line"><tt class="py-docstring">      - max_size is a long representing the max size in bytes allowed for a</tt> </tt>
+<a name="L564"></a><tt class="py-lineno"> 564</tt>  <tt class="py-line"><tt class="py-docstring">        media upload. Defaults to 0L if not in the discovery document.</tt> </tt>
+<a name="L565"></a><tt class="py-lineno"> 565</tt>  <tt class="py-line"><tt class="py-docstring">      - media_path_url is a String; the absolute URI for media upload for the</tt> </tt>
+<a name="L566"></a><tt class="py-lineno"> 566</tt>  <tt class="py-line"><tt class="py-docstring">        API method. Constructed using the API root URI and service path from</tt> </tt>
+<a name="L567"></a><tt class="py-lineno"> 567</tt>  <tt class="py-line"><tt class="py-docstring">        the discovery document and the relative path for the API method. If</tt> </tt>
+<a name="L568"></a><tt class="py-lineno"> 568</tt>  <tt class="py-line"><tt class="py-docstring">        media upload is not supported, this is None.</tt> </tt>
+<a name="L569"></a><tt class="py-lineno"> 569</tt>  <tt class="py-line"><tt class="py-docstring">  """</tt> </tt>
+<a name="L570"></a><tt class="py-lineno"> 570</tt>  <tt class="py-line">  <tt class="py-name">path_url</tt> <tt class="py-op">=</tt> <tt class="py-name">method_desc</tt><tt class="py-op">[</tt><tt class="py-string">'path'</tt><tt class="py-op">]</tt> </tt>
+<a name="L571"></a><tt class="py-lineno"> 571</tt>  <tt class="py-line">  <tt class="py-name">http_method</tt> <tt class="py-op">=</tt> <tt class="py-name">method_desc</tt><tt class="py-op">[</tt><tt class="py-string">'httpMethod'</tt><tt class="py-op">]</tt> </tt>
+<a name="L572"></a><tt class="py-lineno"> 572</tt>  <tt class="py-line">  <tt class="py-name">method_id</tt> <tt class="py-op">=</tt> <tt class="py-name">method_desc</tt><tt class="py-op">[</tt><tt class="py-string">'id'</tt><tt class="py-op">]</tt> </tt>
+<a name="L573"></a><tt class="py-lineno"> 573</tt>  <tt class="py-line"> </tt>
+<a name="L574"></a><tt class="py-lineno"> 574</tt>  <tt class="py-line">  <tt class="py-name">parameters</tt> <tt class="py-op">=</tt> <tt id="link-158" class="py-name" targets="Function googleapiclient.discovery._fix_up_parameters()=googleapiclient.discovery-module.html#_fix_up_parameters"><a title="googleapiclient.discovery._fix_up_parameters" class="py-name" href="#" onclick="return doclink('link-158', '_fix_up_parameters', 'link-158');">_fix_up_parameters</a></tt><tt class="py-op">(</tt><tt class="py-name">method_desc</tt><tt class="py-op">,</tt> <tt class="py-name">root_desc</tt><tt class="py-op">,</tt> <tt class="py-name">http_method</tt><tt class="py-op">)</tt> </tt>
+<a name="L575"></a><tt class="py-lineno"> 575</tt>  <tt class="py-line">  <tt class="py-comment"># Order is important. `_fix_up_media_upload` needs `method_desc` to have a</tt> </tt>
+<a name="L576"></a><tt class="py-lineno"> 576</tt>  <tt class="py-line">  <tt class="py-comment"># 'parameters' key and needs to know if there is a 'body' parameter because it</tt> </tt>
+<a name="L577"></a><tt class="py-lineno"> 577</tt>  <tt class="py-line">  <tt class="py-comment"># also sets a 'media_body' parameter.</tt> </tt>
+<a name="L578"></a><tt class="py-lineno"> 578</tt>  <tt class="py-line">  <tt id="link-159" class="py-name"><a title="googleapiclient.model.BaseModel.accept
 googleapiclient.model.JsonModel.accept
 googleapiclient.model.MediaModel.accept
 googleapiclient.model.ProtocolBufferModel.accept
-googleapiclient.model.RawModel.accept" class="py-name" href="#" onclick="return doclink('link-152', 'accept', 'link-143');">accept</a></tt><tt class="py-op">,</tt> <tt class="py-name">max_size</tt><tt class="py-op">,</tt> <tt class="py-name">media_path_url</tt> <tt class="py-op">=</tt> <tt id="link-153" class="py-name" targets="Function googleapiclient.discovery._fix_up_media_upload()=googleapiclient.discovery-module.html#_fix_up_media_upload"><a title="googleapiclient.discovery._fix_up_media_upload" class="py-name" href="#" onclick="return doclink('link-153', '_fix_up_media_upload', 'link-153');">_fix_up_media_upload</a></tt><tt class="py-op">(</tt> </tt>
-<a name="L574"></a><tt class="py-lineno"> 574</tt>  <tt class="py-line">      <tt class="py-name">method_desc</tt><tt class="py-op">,</tt> <tt class="py-name">root_desc</tt><tt class="py-op">,</tt> <tt class="py-name">path_url</tt><tt class="py-op">,</tt> <tt class="py-name">parameters</tt><tt class="py-op">)</tt> </tt>
-<a name="L575"></a><tt class="py-lineno"> 575</tt>  <tt class="py-line"> </tt>
-<a name="L576"></a><tt class="py-lineno"> 576</tt>  <tt class="py-line">  <tt class="py-keyword">return</tt> <tt class="py-name">path_url</tt><tt class="py-op">,</tt> <tt class="py-name">http_method</tt><tt class="py-op">,</tt> <tt class="py-name">method_id</tt><tt class="py-op">,</tt> <tt id="link-154" class="py-name"><a title="googleapiclient.model.BaseModel.accept
+googleapiclient.model.RawModel.accept" class="py-name" href="#" onclick="return doclink('link-159', 'accept', 'link-150');">accept</a></tt><tt class="py-op">,</tt> <tt class="py-name">max_size</tt><tt class="py-op">,</tt> <tt class="py-name">media_path_url</tt> <tt class="py-op">=</tt> <tt id="link-160" class="py-name" targets="Function googleapiclient.discovery._fix_up_media_upload()=googleapiclient.discovery-module.html#_fix_up_media_upload"><a title="googleapiclient.discovery._fix_up_media_upload" class="py-name" href="#" onclick="return doclink('link-160', '_fix_up_media_upload', 'link-160');">_fix_up_media_upload</a></tt><tt class="py-op">(</tt> </tt>
+<a name="L579"></a><tt class="py-lineno"> 579</tt>  <tt class="py-line">      <tt class="py-name">method_desc</tt><tt class="py-op">,</tt> <tt class="py-name">root_desc</tt><tt class="py-op">,</tt> <tt class="py-name">path_url</tt><tt class="py-op">,</tt> <tt class="py-name">parameters</tt><tt class="py-op">)</tt> </tt>
+<a name="L580"></a><tt class="py-lineno"> 580</tt>  <tt class="py-line"> </tt>
+<a name="L581"></a><tt class="py-lineno"> 581</tt>  <tt class="py-line">  <tt class="py-keyword">return</tt> <tt class="py-name">path_url</tt><tt class="py-op">,</tt> <tt class="py-name">http_method</tt><tt class="py-op">,</tt> <tt class="py-name">method_id</tt><tt class="py-op">,</tt> <tt id="link-161" class="py-name"><a title="googleapiclient.model.BaseModel.accept
 googleapiclient.model.JsonModel.accept
 googleapiclient.model.MediaModel.accept
 googleapiclient.model.ProtocolBufferModel.accept
-googleapiclient.model.RawModel.accept" class="py-name" href="#" onclick="return doclink('link-154', 'accept', 'link-143');">accept</a></tt><tt class="py-op">,</tt> <tt class="py-name">max_size</tt><tt class="py-op">,</tt> <tt class="py-name">media_path_url</tt> </tt>
-</div><a name="L577"></a><tt class="py-lineno"> 577</tt>  <tt class="py-line"> </tt>
-<a name="_urljoin"></a><div id="_urljoin-def"><a name="L578"></a><tt class="py-lineno"> 578</tt>  <tt class="py-line"> </tt>
-<a name="L579"></a><tt class="py-lineno"> 579</tt> <a class="py-toggle" href="#" id="_urljoin-toggle" onclick="return toggle('_urljoin');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="googleapiclient.discovery-module.html#_urljoin">_urljoin</a><tt class="py-op">(</tt><tt class="py-param">base</tt><tt class="py-op">,</tt> <tt class="py-param">url</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="_urljoin-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="_urljoin-expanded"><a name="L580"></a><tt class="py-lineno"> 580</tt>  <tt class="py-line">  <tt class="py-docstring">"""Custom urljoin replacement supporting : before / in url."""</tt> </tt>
-<a name="L581"></a><tt class="py-lineno"> 581</tt>  <tt class="py-line">  <tt class="py-comment"># In general, it's unsafe to simply join base and url. However, for</tt> </tt>
-<a name="L582"></a><tt class="py-lineno"> 582</tt>  <tt class="py-line">  <tt class="py-comment"># the case of discovery documents, we know:</tt> </tt>
-<a name="L583"></a><tt class="py-lineno"> 583</tt>  <tt class="py-line">  <tt class="py-comment">#  * base will never contain params, query, or fragment</tt> </tt>
-<a name="L584"></a><tt class="py-lineno"> 584</tt>  <tt class="py-line">  <tt class="py-comment">#  * url will never contain a scheme or net_loc.</tt> </tt>
-<a name="L585"></a><tt class="py-lineno"> 585</tt>  <tt class="py-line">  <tt class="py-comment"># In general, this means we can safely join on /; we just need to</tt> </tt>
-<a name="L586"></a><tt class="py-lineno"> 586</tt>  <tt class="py-line">  <tt class="py-comment"># ensure we end up with precisely one / joining base and url. The</tt> </tt>
-<a name="L587"></a><tt class="py-lineno"> 587</tt>  <tt class="py-line">  <tt class="py-comment"># exception here is the case of media uploads, where url will be an</tt> </tt>
-<a name="L588"></a><tt class="py-lineno"> 588</tt>  <tt class="py-line">  <tt class="py-comment"># absolute url.</tt> </tt>
-<a name="L589"></a><tt class="py-lineno"> 589</tt>  <tt class="py-line">  <tt class="py-keyword">if</tt> <tt class="py-name">url</tt><tt class="py-op">.</tt><tt class="py-name">startswith</tt><tt class="py-op">(</tt><tt class="py-string">'http://'</tt><tt class="py-op">)</tt> <tt class="py-keyword">or</tt> <tt class="py-name">url</tt><tt class="py-op">.</tt><tt class="py-name">startswith</tt><tt class="py-op">(</tt><tt class="py-string">'https://'</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="L590"></a><tt class="py-lineno"> 590</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-name">urljoin</tt><tt class="py-op">(</tt><tt id="link-155" class="py-name"><a title="googleapiclient.discovery_cache.base" class="py-name" href="#" onclick="return doclink('link-155', 'base', 'link-77');">base</a></tt><tt class="py-op">,</tt> <tt class="py-name">url</tt><tt class="py-op">)</tt> </tt>
-<a name="L591"></a><tt class="py-lineno"> 591</tt>  <tt class="py-line">  <tt class="py-name">new_base</tt> <tt class="py-op">=</tt> <tt id="link-156" class="py-name"><a title="googleapiclient.discovery_cache.base" class="py-name" href="#" onclick="return doclink('link-156', 'base', 'link-77');">base</a></tt> <tt class="py-keyword">if</tt> <tt id="link-157" class="py-name"><a title="googleapiclient.discovery_cache.base" class="py-name" href="#" onclick="return doclink('link-157', 'base', 'link-77');">base</a></tt><tt class="py-op">.</tt><tt class="py-name">endswith</tt><tt class="py-op">(</tt><tt class="py-string">'/'</tt><tt class="py-op">)</tt> <tt class="py-keyword">else</tt> <tt id="link-158" class="py-name"><a title="googleapiclient.discovery_cache.base" class="py-name" href="#" onclick="return doclink('link-158', 'base', 'link-77');">base</a></tt> <tt class="py-op">+</tt> <tt class="py-string">'/'</tt> </tt>
-<a name="L592"></a><tt class="py-lineno"> 592</tt>  <tt class="py-line">  <tt class="py-name">new_url</tt> <tt class="py-op">=</tt> <tt class="py-name">url</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">:</tt><tt class="py-op">]</tt> <tt class="py-keyword">if</tt> <tt class="py-name">url</tt><tt class="py-op">.</tt><tt class="py-name">startswith</tt><tt class="py-op">(</tt><tt class="py-string">'/'</tt><tt class="py-op">)</tt> <tt class="py-keyword">else</tt> <tt class="py-name">url</tt> </tt>
-<a name="L593"></a><tt class="py-lineno"> 593</tt>  <tt class="py-line">  <tt class="py-keyword">return</tt> <tt class="py-name">new_base</tt> <tt class="py-op">+</tt> <tt class="py-name">new_url</tt> </tt>
-</div><a name="L594"></a><tt class="py-lineno"> 594</tt>  <tt class="py-line"> </tt>
-<a name="ResourceMethodParameters"></a><div id="ResourceMethodParameters-def"><a name="L595"></a><tt class="py-lineno"> 595</tt>  <tt class="py-line"> </tt>
-<a name="L596"></a><tt class="py-lineno"> 596</tt>  <tt class="py-line"><tt class="py-comment"># TODO(dhermes): Convert this class to ResourceMethod and make it callable</tt> </tt>
-<a name="L597"></a><tt class="py-lineno"> 597</tt> <a class="py-toggle" href="#" id="ResourceMethodParameters-toggle" onclick="return toggle('ResourceMethodParameters');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="googleapiclient.discovery.ResourceMethodParameters-class.html">ResourceMethodParameters</a><tt class="py-op">(</tt><tt class="py-base-class">object</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="ResourceMethodParameters-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="ResourceMethodParameters-expanded"><a name="L598"></a><tt class="py-lineno"> 598</tt>  <tt class="py-line">  <tt class="py-docstring">"""Represents the parameters associated with a method.</tt> </tt>
-<a name="L599"></a><tt class="py-lineno"> 599</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L600"></a><tt class="py-lineno"> 600</tt>  <tt class="py-line"><tt class="py-docstring">  Attributes:</tt> </tt>
-<a name="L601"></a><tt class="py-lineno"> 601</tt>  <tt class="py-line"><tt class="py-docstring">    argmap: Map from method parameter name (string) to query parameter name</tt> </tt>
-<a name="L602"></a><tt class="py-lineno"> 602</tt>  <tt class="py-line"><tt class="py-docstring">        (string).</tt> </tt>
-<a name="L603"></a><tt class="py-lineno"> 603</tt>  <tt class="py-line"><tt class="py-docstring">    required_params: List of required parameters (represented by parameter</tt> </tt>
-<a name="L604"></a><tt class="py-lineno"> 604</tt>  <tt class="py-line"><tt class="py-docstring">        name as string).</tt> </tt>
-<a name="L605"></a><tt class="py-lineno"> 605</tt>  <tt class="py-line"><tt class="py-docstring">    repeated_params: List of repeated parameters (represented by parameter</tt> </tt>
-<a name="L606"></a><tt class="py-lineno"> 606</tt>  <tt class="py-line"><tt class="py-docstring">        name as string).</tt> </tt>
-<a name="L607"></a><tt class="py-lineno"> 607</tt>  <tt class="py-line"><tt class="py-docstring">    pattern_params: Map from method parameter name (string) to regular</tt> </tt>
-<a name="L608"></a><tt class="py-lineno"> 608</tt>  <tt class="py-line"><tt class="py-docstring">        expression (as a string). If the pattern is set for a parameter, the</tt> </tt>
-<a name="L609"></a><tt class="py-lineno"> 609</tt>  <tt class="py-line"><tt class="py-docstring">        value for that parameter must match the regular expression.</tt> </tt>
-<a name="L610"></a><tt class="py-lineno"> 610</tt>  <tt class="py-line"><tt class="py-docstring">    query_params: List of parameters (represented by parameter name as string)</tt> </tt>
-<a name="L611"></a><tt class="py-lineno"> 611</tt>  <tt class="py-line"><tt class="py-docstring">        that will be used in the query string.</tt> </tt>
-<a name="L612"></a><tt class="py-lineno"> 612</tt>  <tt class="py-line"><tt class="py-docstring">    path_params: Set of parameters (represented by parameter name as string)</tt> </tt>
-<a name="L613"></a><tt class="py-lineno"> 613</tt>  <tt class="py-line"><tt class="py-docstring">        that will be used in the base URL path.</tt> </tt>
-<a name="L614"></a><tt class="py-lineno"> 614</tt>  <tt class="py-line"><tt class="py-docstring">    param_types: Map from method parameter name (string) to parameter type. Type</tt> </tt>
-<a name="L615"></a><tt class="py-lineno"> 615</tt>  <tt class="py-line"><tt class="py-docstring">        can be any valid JSON schema type; valid values are 'any', 'array',</tt> </tt>
-<a name="L616"></a><tt class="py-lineno"> 616</tt>  <tt class="py-line"><tt class="py-docstring">        'boolean', 'integer', 'number', 'object', or 'string'. Reference:</tt> </tt>
-<a name="L617"></a><tt class="py-lineno"> 617</tt>  <tt class="py-line"><tt class="py-docstring">        http://tools.ietf.org/html/draft-zyp-json-schema-03#section-5.1</tt> </tt>
-<a name="L618"></a><tt class="py-lineno"> 618</tt>  <tt class="py-line"><tt class="py-docstring">    enum_params: Map from method parameter name (string) to list of strings,</tt> </tt>
-<a name="L619"></a><tt class="py-lineno"> 619</tt>  <tt class="py-line"><tt class="py-docstring">       where each list of strings is the list of acceptable enum values.</tt> </tt>
-<a name="L620"></a><tt class="py-lineno"> 620</tt>  <tt class="py-line"><tt class="py-docstring">  """</tt> </tt>
-<a name="L621"></a><tt class="py-lineno"> 621</tt>  <tt class="py-line"> </tt>
-<a name="ResourceMethodParameters.__init__"></a><div id="ResourceMethodParameters.__init__-def"><a name="L622"></a><tt class="py-lineno"> 622</tt> <a class="py-toggle" href="#" id="ResourceMethodParameters.__init__-toggle" onclick="return toggle('ResourceMethodParameters.__init__');">-</a><tt class="py-line">  <tt class="py-keyword">def</tt> <a class="py-def-name" href="googleapiclient.discovery.ResourceMethodParameters-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">method_desc</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="ResourceMethodParameters.__init__-collapsed" style="display:none;" pad="++++" indent="++++++"></div><div id="ResourceMethodParameters.__init__-expanded"><a name="L623"></a><tt class="py-lineno"> 623</tt>  <tt class="py-line">    <tt class="py-docstring">"""Constructor for ResourceMethodParameters.</tt> </tt>
-<a name="L624"></a><tt class="py-lineno"> 624</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L625"></a><tt class="py-lineno"> 625</tt>  <tt class="py-line"><tt class="py-docstring">    Sets default values and defers to set_parameters to populate.</tt> </tt>
-<a name="L626"></a><tt class="py-lineno"> 626</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L627"></a><tt class="py-lineno"> 627</tt>  <tt class="py-line"><tt class="py-docstring">    Args:</tt> </tt>
-<a name="L628"></a><tt class="py-lineno"> 628</tt>  <tt class="py-line"><tt class="py-docstring">      method_desc: Dictionary with metadata describing an API method. Value</tt> </tt>
-<a name="L629"></a><tt class="py-lineno"> 629</tt>  <tt class="py-line"><tt class="py-docstring">          comes from the dictionary of methods stored in the 'methods' key in</tt> </tt>
-<a name="L630"></a><tt class="py-lineno"> 630</tt>  <tt class="py-line"><tt class="py-docstring">          the deserialized discovery document.</tt> </tt>
-<a name="L631"></a><tt class="py-lineno"> 631</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
-<a name="L632"></a><tt class="py-lineno"> 632</tt>  <tt class="py-line">    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">argmap</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-op">}</tt> </tt>
-<a name="L633"></a><tt class="py-lineno"> 633</tt>  <tt class="py-line">    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">required_params</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
-<a name="L634"></a><tt class="py-lineno"> 634</tt>  <tt class="py-line">    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">repeated_params</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
-<a name="L635"></a><tt class="py-lineno"> 635</tt>  <tt class="py-line">    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">pattern_params</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-op">}</tt> </tt>
-<a name="L636"></a><tt class="py-lineno"> 636</tt>  <tt class="py-line">    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">query_params</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
-<a name="L637"></a><tt class="py-lineno"> 637</tt>  <tt class="py-line">    <tt class="py-comment"># TODO(dhermes): Change path_params to a list if the extra URITEMPLATE</tt> </tt>
-<a name="L638"></a><tt class="py-lineno"> 638</tt>  <tt class="py-line">    <tt class="py-comment">#                parsing is gotten rid of.</tt> </tt>
-<a name="L639"></a><tt class="py-lineno"> 639</tt>  <tt class="py-line">    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">path_params</tt> <tt class="py-op">=</tt> <tt id="link-159" class="py-name"><a title="googleapiclient.discovery_cache.appengine_memcache.Cache.set
+googleapiclient.model.RawModel.accept" class="py-name" href="#" onclick="return doclink('link-161', 'accept', 'link-150');">accept</a></tt><tt class="py-op">,</tt> <tt class="py-name">max_size</tt><tt class="py-op">,</tt> <tt class="py-name">media_path_url</tt> </tt>
+</div><a name="L582"></a><tt class="py-lineno"> 582</tt>  <tt class="py-line"> </tt>
+<a name="_urljoin"></a><div id="_urljoin-def"><a name="L583"></a><tt class="py-lineno"> 583</tt>  <tt class="py-line"> </tt>
+<a name="L584"></a><tt class="py-lineno"> 584</tt> <a class="py-toggle" href="#" id="_urljoin-toggle" onclick="return toggle('_urljoin');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="googleapiclient.discovery-module.html#_urljoin">_urljoin</a><tt class="py-op">(</tt><tt class="py-param">base</tt><tt class="py-op">,</tt> <tt class="py-param">url</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="_urljoin-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="_urljoin-expanded"><a name="L585"></a><tt class="py-lineno"> 585</tt>  <tt class="py-line">  <tt class="py-docstring">"""Custom urljoin replacement supporting : before / in url."""</tt> </tt>
+<a name="L586"></a><tt class="py-lineno"> 586</tt>  <tt class="py-line">  <tt class="py-comment"># In general, it's unsafe to simply join base and url. However, for</tt> </tt>
+<a name="L587"></a><tt class="py-lineno"> 587</tt>  <tt class="py-line">  <tt class="py-comment"># the case of discovery documents, we know:</tt> </tt>
+<a name="L588"></a><tt class="py-lineno"> 588</tt>  <tt class="py-line">  <tt class="py-comment">#  * base will never contain params, query, or fragment</tt> </tt>
+<a name="L589"></a><tt class="py-lineno"> 589</tt>  <tt class="py-line">  <tt class="py-comment">#  * url will never contain a scheme or net_loc.</tt> </tt>
+<a name="L590"></a><tt class="py-lineno"> 590</tt>  <tt class="py-line">  <tt class="py-comment"># In general, this means we can safely join on /; we just need to</tt> </tt>
+<a name="L591"></a><tt class="py-lineno"> 591</tt>  <tt class="py-line">  <tt class="py-comment"># ensure we end up with precisely one / joining base and url. The</tt> </tt>
+<a name="L592"></a><tt class="py-lineno"> 592</tt>  <tt class="py-line">  <tt class="py-comment"># exception here is the case of media uploads, where url will be an</tt> </tt>
+<a name="L593"></a><tt class="py-lineno"> 593</tt>  <tt class="py-line">  <tt class="py-comment"># absolute url.</tt> </tt>
+<a name="L594"></a><tt class="py-lineno"> 594</tt>  <tt class="py-line">  <tt class="py-keyword">if</tt> <tt class="py-name">url</tt><tt class="py-op">.</tt><tt class="py-name">startswith</tt><tt class="py-op">(</tt><tt class="py-string">'http://'</tt><tt class="py-op">)</tt> <tt class="py-keyword">or</tt> <tt class="py-name">url</tt><tt class="py-op">.</tt><tt class="py-name">startswith</tt><tt class="py-op">(</tt><tt class="py-string">'https://'</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L595"></a><tt class="py-lineno"> 595</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-name">urljoin</tt><tt class="py-op">(</tt><tt id="link-162" class="py-name"><a title="googleapiclient.discovery_cache.base" class="py-name" href="#" onclick="return doclink('link-162', 'base', 'link-78');">base</a></tt><tt class="py-op">,</tt> <tt class="py-name">url</tt><tt class="py-op">)</tt> </tt>
+<a name="L596"></a><tt class="py-lineno"> 596</tt>  <tt class="py-line">  <tt class="py-name">new_base</tt> <tt class="py-op">=</tt> <tt id="link-163" class="py-name"><a title="googleapiclient.discovery_cache.base" class="py-name" href="#" onclick="return doclink('link-163', 'base', 'link-78');">base</a></tt> <tt class="py-keyword">if</tt> <tt id="link-164" class="py-name"><a title="googleapiclient.discovery_cache.base" class="py-name" href="#" onclick="return doclink('link-164', 'base', 'link-78');">base</a></tt><tt class="py-op">.</tt><tt class="py-name">endswith</tt><tt class="py-op">(</tt><tt class="py-string">'/'</tt><tt class="py-op">)</tt> <tt class="py-keyword">else</tt> <tt id="link-165" class="py-name"><a title="googleapiclient.discovery_cache.base" class="py-name" href="#" onclick="return doclink('link-165', 'base', 'link-78');">base</a></tt> <tt class="py-op">+</tt> <tt class="py-string">'/'</tt> </tt>
+<a name="L597"></a><tt class="py-lineno"> 597</tt>  <tt class="py-line">  <tt class="py-name">new_url</tt> <tt class="py-op">=</tt> <tt class="py-name">url</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">:</tt><tt class="py-op">]</tt> <tt class="py-keyword">if</tt> <tt class="py-name">url</tt><tt class="py-op">.</tt><tt class="py-name">startswith</tt><tt class="py-op">(</tt><tt class="py-string">'/'</tt><tt class="py-op">)</tt> <tt class="py-keyword">else</tt> <tt class="py-name">url</tt> </tt>
+<a name="L598"></a><tt class="py-lineno"> 598</tt>  <tt class="py-line">  <tt class="py-keyword">return</tt> <tt class="py-name">new_base</tt> <tt class="py-op">+</tt> <tt class="py-name">new_url</tt> </tt>
+</div><a name="L599"></a><tt class="py-lineno"> 599</tt>  <tt class="py-line"> </tt>
+<a name="ResourceMethodParameters"></a><div id="ResourceMethodParameters-def"><a name="L600"></a><tt class="py-lineno"> 600</tt>  <tt class="py-line"> </tt>
+<a name="L601"></a><tt class="py-lineno"> 601</tt>  <tt class="py-line"><tt class="py-comment"># TODO(dhermes): Convert this class to ResourceMethod and make it callable</tt> </tt>
+<a name="L602"></a><tt class="py-lineno"> 602</tt> <a class="py-toggle" href="#" id="ResourceMethodParameters-toggle" onclick="return toggle('ResourceMethodParameters');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="googleapiclient.discovery.ResourceMethodParameters-class.html">ResourceMethodParameters</a><tt class="py-op">(</tt><tt class="py-base-class">object</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="ResourceMethodParameters-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="ResourceMethodParameters-expanded"><a name="L603"></a><tt class="py-lineno"> 603</tt>  <tt class="py-line">  <tt class="py-docstring">"""Represents the parameters associated with a method.</tt> </tt>
+<a name="L604"></a><tt class="py-lineno"> 604</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L605"></a><tt class="py-lineno"> 605</tt>  <tt class="py-line"><tt class="py-docstring">  Attributes:</tt> </tt>
+<a name="L606"></a><tt class="py-lineno"> 606</tt>  <tt class="py-line"><tt class="py-docstring">    argmap: Map from method parameter name (string) to query parameter name</tt> </tt>
+<a name="L607"></a><tt class="py-lineno"> 607</tt>  <tt class="py-line"><tt class="py-docstring">        (string).</tt> </tt>
+<a name="L608"></a><tt class="py-lineno"> 608</tt>  <tt class="py-line"><tt class="py-docstring">    required_params: List of required parameters (represented by parameter</tt> </tt>
+<a name="L609"></a><tt class="py-lineno"> 609</tt>  <tt class="py-line"><tt class="py-docstring">        name as string).</tt> </tt>
+<a name="L610"></a><tt class="py-lineno"> 610</tt>  <tt class="py-line"><tt class="py-docstring">    repeated_params: List of repeated parameters (represented by parameter</tt> </tt>
+<a name="L611"></a><tt class="py-lineno"> 611</tt>  <tt class="py-line"><tt class="py-docstring">        name as string).</tt> </tt>
+<a name="L612"></a><tt class="py-lineno"> 612</tt>  <tt class="py-line"><tt class="py-docstring">    pattern_params: Map from method parameter name (string) to regular</tt> </tt>
+<a name="L613"></a><tt class="py-lineno"> 613</tt>  <tt class="py-line"><tt class="py-docstring">        expression (as a string). If the pattern is set for a parameter, the</tt> </tt>
+<a name="L614"></a><tt class="py-lineno"> 614</tt>  <tt class="py-line"><tt class="py-docstring">        value for that parameter must match the regular expression.</tt> </tt>
+<a name="L615"></a><tt class="py-lineno"> 615</tt>  <tt class="py-line"><tt class="py-docstring">    query_params: List of parameters (represented by parameter name as string)</tt> </tt>
+<a name="L616"></a><tt class="py-lineno"> 616</tt>  <tt class="py-line"><tt class="py-docstring">        that will be used in the query string.</tt> </tt>
+<a name="L617"></a><tt class="py-lineno"> 617</tt>  <tt class="py-line"><tt class="py-docstring">    path_params: Set of parameters (represented by parameter name as string)</tt> </tt>
+<a name="L618"></a><tt class="py-lineno"> 618</tt>  <tt class="py-line"><tt class="py-docstring">        that will be used in the base URL path.</tt> </tt>
+<a name="L619"></a><tt class="py-lineno"> 619</tt>  <tt class="py-line"><tt class="py-docstring">    param_types: Map from method parameter name (string) to parameter type. Type</tt> </tt>
+<a name="L620"></a><tt class="py-lineno"> 620</tt>  <tt class="py-line"><tt class="py-docstring">        can be any valid JSON schema type; valid values are 'any', 'array',</tt> </tt>
+<a name="L621"></a><tt class="py-lineno"> 621</tt>  <tt class="py-line"><tt class="py-docstring">        'boolean', 'integer', 'number', 'object', or 'string'. Reference:</tt> </tt>
+<a name="L622"></a><tt class="py-lineno"> 622</tt>  <tt class="py-line"><tt class="py-docstring">        http://tools.ietf.org/html/draft-zyp-json-schema-03#section-5.1</tt> </tt>
+<a name="L623"></a><tt class="py-lineno"> 623</tt>  <tt class="py-line"><tt class="py-docstring">    enum_params: Map from method parameter name (string) to list of strings,</tt> </tt>
+<a name="L624"></a><tt class="py-lineno"> 624</tt>  <tt class="py-line"><tt class="py-docstring">       where each list of strings is the list of acceptable enum values.</tt> </tt>
+<a name="L625"></a><tt class="py-lineno"> 625</tt>  <tt class="py-line"><tt class="py-docstring">  """</tt> </tt>
+<a name="L626"></a><tt class="py-lineno"> 626</tt>  <tt class="py-line"> </tt>
+<a name="ResourceMethodParameters.__init__"></a><div id="ResourceMethodParameters.__init__-def"><a name="L627"></a><tt class="py-lineno"> 627</tt> <a class="py-toggle" href="#" id="ResourceMethodParameters.__init__-toggle" onclick="return toggle('ResourceMethodParameters.__init__');">-</a><tt class="py-line">  <tt class="py-keyword">def</tt> <a class="py-def-name" href="googleapiclient.discovery.ResourceMethodParameters-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">method_desc</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="ResourceMethodParameters.__init__-collapsed" style="display:none;" pad="++++" indent="++++++"></div><div id="ResourceMethodParameters.__init__-expanded"><a name="L628"></a><tt class="py-lineno"> 628</tt>  <tt class="py-line">    <tt class="py-docstring">"""Constructor for ResourceMethodParameters.</tt> </tt>
+<a name="L629"></a><tt class="py-lineno"> 629</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L630"></a><tt class="py-lineno"> 630</tt>  <tt class="py-line"><tt class="py-docstring">    Sets default values and defers to set_parameters to populate.</tt> </tt>
+<a name="L631"></a><tt class="py-lineno"> 631</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L632"></a><tt class="py-lineno"> 632</tt>  <tt class="py-line"><tt class="py-docstring">    Args:</tt> </tt>
+<a name="L633"></a><tt class="py-lineno"> 633</tt>  <tt class="py-line"><tt class="py-docstring">      method_desc: Dictionary with metadata describing an API method. Value</tt> </tt>
+<a name="L634"></a><tt class="py-lineno"> 634</tt>  <tt class="py-line"><tt class="py-docstring">          comes from the dictionary of methods stored in the 'methods' key in</tt> </tt>
+<a name="L635"></a><tt class="py-lineno"> 635</tt>  <tt class="py-line"><tt class="py-docstring">          the deserialized discovery document.</tt> </tt>
+<a name="L636"></a><tt class="py-lineno"> 636</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
+<a name="L637"></a><tt class="py-lineno"> 637</tt>  <tt class="py-line">    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">argmap</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-op">}</tt> </tt>
+<a name="L638"></a><tt class="py-lineno"> 638</tt>  <tt class="py-line">    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">required_params</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
+<a name="L639"></a><tt class="py-lineno"> 639</tt>  <tt class="py-line">    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">repeated_params</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
+<a name="L640"></a><tt class="py-lineno"> 640</tt>  <tt class="py-line">    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">pattern_params</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-op">}</tt> </tt>
+<a name="L641"></a><tt class="py-lineno"> 641</tt>  <tt class="py-line">    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">query_params</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
+<a name="L642"></a><tt class="py-lineno"> 642</tt>  <tt class="py-line">    <tt class="py-comment"># TODO(dhermes): Change path_params to a list if the extra URITEMPLATE</tt> </tt>
+<a name="L643"></a><tt class="py-lineno"> 643</tt>  <tt class="py-line">    <tt class="py-comment">#                parsing is gotten rid of.</tt> </tt>
+<a name="L644"></a><tt class="py-lineno"> 644</tt>  <tt class="py-line">    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">path_params</tt> <tt class="py-op">=</tt> <tt id="link-166" class="py-name"><a title="googleapiclient.discovery_cache.appengine_memcache.Cache.set
 googleapiclient.discovery_cache.base.Cache.set
-googleapiclient.discovery_cache.file_cache.Cache.set" class="py-name" href="#" onclick="return doclink('link-159', 'set', 'link-102');">set</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-<a name="L640"></a><tt class="py-lineno"> 640</tt>  <tt class="py-line">    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">param_types</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-op">}</tt> </tt>
-<a name="L641"></a><tt class="py-lineno"> 641</tt>  <tt class="py-line">    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">enum_params</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-op">}</tt> </tt>
-<a name="L642"></a><tt class="py-lineno"> 642</tt>  <tt class="py-line"> </tt>
-<a name="L643"></a><tt class="py-lineno"> 643</tt>  <tt class="py-line">    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-160" class="py-name" targets="Method googleapiclient.discovery.ResourceMethodParameters.set_parameters()=googleapiclient.discovery.ResourceMethodParameters-class.html#set_parameters"><a title="googleapiclient.discovery.ResourceMethodParameters.set_parameters" class="py-name" href="#" onclick="return doclink('link-160', 'set_parameters', 'link-160');">set_parameters</a></tt><tt class="py-op">(</tt><tt class="py-name">method_desc</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L644"></a><tt class="py-lineno"> 644</tt>  <tt class="py-line"> </tt>
-<a name="ResourceMethodParameters.set_parameters"></a><div id="ResourceMethodParameters.set_parameters-def"><a name="L645"></a><tt class="py-lineno"> 645</tt> <a class="py-toggle" href="#" id="ResourceMethodParameters.set_parameters-toggle" onclick="return toggle('ResourceMethodParameters.set_parameters');">-</a><tt class="py-line">  <tt class="py-keyword">def</tt> <a class="py-def-name" href="googleapiclient.discovery.ResourceMethodParameters-class.html#set_parameters">set_parameters</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">method_desc</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="ResourceMethodParameters.set_parameters-collapsed" style="display:none;" pad="++++" indent="++++++"></div><div id="ResourceMethodParameters.set_parameters-expanded"><a name="L646"></a><tt class="py-lineno"> 646</tt>  <tt class="py-line">    <tt class="py-docstring">"""Populates maps and lists based on method description.</tt> </tt>
-<a name="L647"></a><tt class="py-lineno"> 647</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L648"></a><tt class="py-lineno"> 648</tt>  <tt class="py-line"><tt class="py-docstring">    Iterates through each parameter for the method and parses the values from</tt> </tt>
-<a name="L649"></a><tt class="py-lineno"> 649</tt>  <tt class="py-line"><tt class="py-docstring">    the parameter dictionary.</tt> </tt>
-<a name="L650"></a><tt class="py-lineno"> 650</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L651"></a><tt class="py-lineno"> 651</tt>  <tt class="py-line"><tt class="py-docstring">    Args:</tt> </tt>
-<a name="L652"></a><tt class="py-lineno"> 652</tt>  <tt class="py-line"><tt class="py-docstring">      method_desc: Dictionary with metadata describing an API method. Value</tt> </tt>
-<a name="L653"></a><tt class="py-lineno"> 653</tt>  <tt class="py-line"><tt class="py-docstring">          comes from the dictionary of methods stored in the 'methods' key in</tt> </tt>
-<a name="L654"></a><tt class="py-lineno"> 654</tt>  <tt class="py-line"><tt class="py-docstring">          the deserialized discovery document.</tt> </tt>
-<a name="L655"></a><tt class="py-lineno"> 655</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
-<a name="L656"></a><tt class="py-lineno"> 656</tt>  <tt class="py-line">    <tt class="py-keyword">for</tt> <tt class="py-name">arg</tt><tt class="py-op">,</tt> <tt class="py-name">desc</tt> <tt class="py-keyword">in</tt> <tt class="py-name">six</tt><tt class="py-op">.</tt><tt class="py-name">iteritems</tt><tt class="py-op">(</tt><tt class="py-name">method_desc</tt><tt class="py-op">.</tt><tt id="link-161" class="py-name"><a title="googleapiclient.discovery_cache.appengine_memcache.Cache.get
+googleapiclient.discovery_cache.file_cache.Cache.set" class="py-name" href="#" onclick="return doclink('link-166', 'set', 'link-103');">set</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L645"></a><tt class="py-lineno"> 645</tt>  <tt class="py-line">    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">param_types</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-op">}</tt> </tt>
+<a name="L646"></a><tt class="py-lineno"> 646</tt>  <tt class="py-line">    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">enum_params</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-op">}</tt> </tt>
+<a name="L647"></a><tt class="py-lineno"> 647</tt>  <tt class="py-line"> </tt>
+<a name="L648"></a><tt class="py-lineno"> 648</tt>  <tt class="py-line">    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-167" class="py-name" targets="Method googleapiclient.discovery.ResourceMethodParameters.set_parameters()=googleapiclient.discovery.ResourceMethodParameters-class.html#set_parameters"><a title="googleapiclient.discovery.ResourceMethodParameters.set_parameters" class="py-name" href="#" onclick="return doclink('link-167', 'set_parameters', 'link-167');">set_parameters</a></tt><tt class="py-op">(</tt><tt class="py-name">method_desc</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L649"></a><tt class="py-lineno"> 649</tt>  <tt class="py-line"> </tt>
+<a name="ResourceMethodParameters.set_parameters"></a><div id="ResourceMethodParameters.set_parameters-def"><a name="L650"></a><tt class="py-lineno"> 650</tt> <a class="py-toggle" href="#" id="ResourceMethodParameters.set_parameters-toggle" onclick="return toggle('ResourceMethodParameters.set_parameters');">-</a><tt class="py-line">  <tt class="py-keyword">def</tt> <a class="py-def-name" href="googleapiclient.discovery.ResourceMethodParameters-class.html#set_parameters">set_parameters</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">method_desc</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="ResourceMethodParameters.set_parameters-collapsed" style="display:none;" pad="++++" indent="++++++"></div><div id="ResourceMethodParameters.set_parameters-expanded"><a name="L651"></a><tt class="py-lineno"> 651</tt>  <tt class="py-line">    <tt class="py-docstring">"""Populates maps and lists based on method description.</tt> </tt>
+<a name="L652"></a><tt class="py-lineno"> 652</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L653"></a><tt class="py-lineno"> 653</tt>  <tt class="py-line"><tt class="py-docstring">    Iterates through each parameter for the method and parses the values from</tt> </tt>
+<a name="L654"></a><tt class="py-lineno"> 654</tt>  <tt class="py-line"><tt class="py-docstring">    the parameter dictionary.</tt> </tt>
+<a name="L655"></a><tt class="py-lineno"> 655</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L656"></a><tt class="py-lineno"> 656</tt>  <tt class="py-line"><tt class="py-docstring">    Args:</tt> </tt>
+<a name="L657"></a><tt class="py-lineno"> 657</tt>  <tt class="py-line"><tt class="py-docstring">      method_desc: Dictionary with metadata describing an API method. Value</tt> </tt>
+<a name="L658"></a><tt class="py-lineno"> 658</tt>  <tt class="py-line"><tt class="py-docstring">          comes from the dictionary of methods stored in the 'methods' key in</tt> </tt>
+<a name="L659"></a><tt class="py-lineno"> 659</tt>  <tt class="py-line"><tt class="py-docstring">          the deserialized discovery document.</tt> </tt>
+<a name="L660"></a><tt class="py-lineno"> 660</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
+<a name="L661"></a><tt class="py-lineno"> 661</tt>  <tt class="py-line">    <tt class="py-keyword">for</tt> <tt class="py-name">arg</tt><tt class="py-op">,</tt> <tt class="py-name">desc</tt> <tt class="py-keyword">in</tt> <tt class="py-name">six</tt><tt class="py-op">.</tt><tt class="py-name">iteritems</tt><tt class="py-op">(</tt><tt class="py-name">method_desc</tt><tt class="py-op">.</tt><tt id="link-168" class="py-name"><a title="googleapiclient.discovery_cache.appengine_memcache.Cache.get
 googleapiclient.discovery_cache.base.Cache.get
 googleapiclient.discovery_cache.file_cache.Cache.get
-googleapiclient.schema.Schemas.get" class="py-name" href="#" onclick="return doclink('link-161', 'get', 'link-93');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">'parameters'</tt><tt class="py-op">,</tt> <tt class="py-op">{</tt><tt class="py-op">}</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="L657"></a><tt class="py-lineno"> 657</tt>  <tt class="py-line">      <tt class="py-name">param</tt> <tt class="py-op">=</tt> <tt id="link-162" class="py-name" targets="Function googleapiclient.discovery.key2param()=googleapiclient.discovery-module.html#key2param"><a title="googleapiclient.discovery.key2param" class="py-name" href="#" onclick="return doclink('link-162', 'key2param', 'link-162');">key2param</a></tt><tt class="py-op">(</tt><tt class="py-name">arg</tt><tt class="py-op">)</tt> </tt>
-<a name="L658"></a><tt class="py-lineno"> 658</tt>  <tt class="py-line">      <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">argmap</tt><tt class="py-op">[</tt><tt class="py-name">param</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">arg</tt> </tt>
-<a name="L659"></a><tt class="py-lineno"> 659</tt>  <tt class="py-line"> </tt>
-<a name="L660"></a><tt class="py-lineno"> 660</tt>  <tt class="py-line">      <tt class="py-keyword">if</tt> <tt class="py-name">desc</tt><tt class="py-op">.</tt><tt id="link-163" class="py-name"><a title="googleapiclient.discovery_cache.appengine_memcache.Cache.get
+googleapiclient.schema.Schemas.get" class="py-name" href="#" onclick="return doclink('link-168', 'get', 'link-94');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">'parameters'</tt><tt class="py-op">,</tt> <tt class="py-op">{</tt><tt class="py-op">}</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L662"></a><tt class="py-lineno"> 662</tt>  <tt class="py-line">      <tt class="py-name">param</tt> <tt class="py-op">=</tt> <tt id="link-169" class="py-name" targets="Function googleapiclient.discovery.key2param()=googleapiclient.discovery-module.html#key2param"><a title="googleapiclient.discovery.key2param" class="py-name" href="#" onclick="return doclink('link-169', 'key2param', 'link-169');">key2param</a></tt><tt class="py-op">(</tt><tt class="py-name">arg</tt><tt class="py-op">)</tt> </tt>
+<a name="L663"></a><tt class="py-lineno"> 663</tt>  <tt class="py-line">      <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">argmap</tt><tt class="py-op">[</tt><tt class="py-name">param</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">arg</tt> </tt>
+<a name="L664"></a><tt class="py-lineno"> 664</tt>  <tt class="py-line"> </tt>
+<a name="L665"></a><tt class="py-lineno"> 665</tt>  <tt class="py-line">      <tt class="py-keyword">if</tt> <tt class="py-name">desc</tt><tt class="py-op">.</tt><tt id="link-170" class="py-name"><a title="googleapiclient.discovery_cache.appengine_memcache.Cache.get
 googleapiclient.discovery_cache.base.Cache.get
 googleapiclient.discovery_cache.file_cache.Cache.get
-googleapiclient.schema.Schemas.get" class="py-name" href="#" onclick="return doclink('link-163', 'get', 'link-93');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">'pattern'</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="L661"></a><tt class="py-lineno"> 661</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">pattern_params</tt><tt class="py-op">[</tt><tt class="py-name">param</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">desc</tt><tt class="py-op">[</tt><tt class="py-string">'pattern'</tt><tt class="py-op">]</tt> </tt>
-<a name="L662"></a><tt class="py-lineno"> 662</tt>  <tt class="py-line">      <tt class="py-keyword">if</tt> <tt class="py-name">desc</tt><tt class="py-op">.</tt><tt id="link-164" class="py-name"><a title="googleapiclient.discovery_cache.appengine_memcache.Cache.get
+googleapiclient.schema.Schemas.get" class="py-name" href="#" onclick="return doclink('link-170', 'get', 'link-94');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">'pattern'</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L666"></a><tt class="py-lineno"> 666</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">pattern_params</tt><tt class="py-op">[</tt><tt class="py-name">param</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">desc</tt><tt class="py-op">[</tt><tt class="py-string">'pattern'</tt><tt class="py-op">]</tt> </tt>
+<a name="L667"></a><tt class="py-lineno"> 667</tt>  <tt class="py-line">      <tt class="py-keyword">if</tt> <tt class="py-name">desc</tt><tt class="py-op">.</tt><tt id="link-171" class="py-name"><a title="googleapiclient.discovery_cache.appengine_memcache.Cache.get
 googleapiclient.discovery_cache.base.Cache.get
 googleapiclient.discovery_cache.file_cache.Cache.get
-googleapiclient.schema.Schemas.get" class="py-name" href="#" onclick="return doclink('link-164', 'get', 'link-93');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">'enum'</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="L663"></a><tt class="py-lineno"> 663</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">enum_params</tt><tt class="py-op">[</tt><tt class="py-name">param</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">desc</tt><tt class="py-op">[</tt><tt class="py-string">'enum'</tt><tt class="py-op">]</tt> </tt>
-<a name="L664"></a><tt class="py-lineno"> 664</tt>  <tt class="py-line">      <tt class="py-keyword">if</tt> <tt class="py-name">desc</tt><tt class="py-op">.</tt><tt id="link-165" class="py-name"><a title="googleapiclient.discovery_cache.appengine_memcache.Cache.get
+googleapiclient.schema.Schemas.get" class="py-name" href="#" onclick="return doclink('link-171', 'get', 'link-94');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">'enum'</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L668"></a><tt class="py-lineno"> 668</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">enum_params</tt><tt class="py-op">[</tt><tt class="py-name">param</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">desc</tt><tt class="py-op">[</tt><tt class="py-string">'enum'</tt><tt class="py-op">]</tt> </tt>
+<a name="L669"></a><tt class="py-lineno"> 669</tt>  <tt class="py-line">      <tt class="py-keyword">if</tt> <tt class="py-name">desc</tt><tt class="py-op">.</tt><tt id="link-172" class="py-name"><a title="googleapiclient.discovery_cache.appengine_memcache.Cache.get
 googleapiclient.discovery_cache.base.Cache.get
 googleapiclient.discovery_cache.file_cache.Cache.get
-googleapiclient.schema.Schemas.get" class="py-name" href="#" onclick="return doclink('link-165', 'get', 'link-93');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">'required'</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="L665"></a><tt class="py-lineno"> 665</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">required_params</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-name">param</tt><tt class="py-op">)</tt> </tt>
-<a name="L666"></a><tt class="py-lineno"> 666</tt>  <tt class="py-line">      <tt class="py-keyword">if</tt> <tt class="py-name">desc</tt><tt class="py-op">.</tt><tt id="link-166" class="py-name"><a title="googleapiclient.discovery_cache.appengine_memcache.Cache.get
+googleapiclient.schema.Schemas.get" class="py-name" href="#" onclick="return doclink('link-172', 'get', 'link-94');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">'required'</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L670"></a><tt class="py-lineno"> 670</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">required_params</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-name">param</tt><tt class="py-op">)</tt> </tt>
+<a name="L671"></a><tt class="py-lineno"> 671</tt>  <tt class="py-line">      <tt class="py-keyword">if</tt> <tt class="py-name">desc</tt><tt class="py-op">.</tt><tt id="link-173" class="py-name"><a title="googleapiclient.discovery_cache.appengine_memcache.Cache.get
 googleapiclient.discovery_cache.base.Cache.get
 googleapiclient.discovery_cache.file_cache.Cache.get
-googleapiclient.schema.Schemas.get" class="py-name" href="#" onclick="return doclink('link-166', 'get', 'link-93');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">'repeated'</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="L667"></a><tt class="py-lineno"> 667</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">repeated_params</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-name">param</tt><tt class="py-op">)</tt> </tt>
-<a name="L668"></a><tt class="py-lineno"> 668</tt>  <tt class="py-line">      <tt class="py-keyword">if</tt> <tt class="py-name">desc</tt><tt class="py-op">.</tt><tt id="link-167" class="py-name"><a title="googleapiclient.discovery_cache.appengine_memcache.Cache.get
+googleapiclient.schema.Schemas.get" class="py-name" href="#" onclick="return doclink('link-173', 'get', 'link-94');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">'repeated'</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L672"></a><tt class="py-lineno"> 672</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">repeated_params</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-name">param</tt><tt class="py-op">)</tt> </tt>
+<a name="L673"></a><tt class="py-lineno"> 673</tt>  <tt class="py-line">      <tt class="py-keyword">if</tt> <tt class="py-name">desc</tt><tt class="py-op">.</tt><tt id="link-174" class="py-name"><a title="googleapiclient.discovery_cache.appengine_memcache.Cache.get
 googleapiclient.discovery_cache.base.Cache.get
 googleapiclient.discovery_cache.file_cache.Cache.get
-googleapiclient.schema.Schemas.get" class="py-name" href="#" onclick="return doclink('link-167', 'get', 'link-93');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">'location'</tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <tt class="py-string">'query'</tt><tt class="py-op">:</tt> </tt>
-<a name="L669"></a><tt class="py-lineno"> 669</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">query_params</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-name">param</tt><tt class="py-op">)</tt> </tt>
-<a name="L670"></a><tt class="py-lineno"> 670</tt>  <tt class="py-line">      <tt class="py-keyword">if</tt> <tt class="py-name">desc</tt><tt class="py-op">.</tt><tt id="link-168" class="py-name"><a title="googleapiclient.discovery_cache.appengine_memcache.Cache.get
+googleapiclient.schema.Schemas.get" class="py-name" href="#" onclick="return doclink('link-174', 'get', 'link-94');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">'location'</tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <tt class="py-string">'query'</tt><tt class="py-op">:</tt> </tt>
+<a name="L674"></a><tt class="py-lineno"> 674</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">query_params</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-name">param</tt><tt class="py-op">)</tt> </tt>
+<a name="L675"></a><tt class="py-lineno"> 675</tt>  <tt class="py-line">      <tt class="py-keyword">if</tt> <tt class="py-name">desc</tt><tt class="py-op">.</tt><tt id="link-175" class="py-name"><a title="googleapiclient.discovery_cache.appengine_memcache.Cache.get
 googleapiclient.discovery_cache.base.Cache.get
 googleapiclient.discovery_cache.file_cache.Cache.get
-googleapiclient.schema.Schemas.get" class="py-name" href="#" onclick="return doclink('link-168', 'get', 'link-93');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">'location'</tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <tt class="py-string">'path'</tt><tt class="py-op">:</tt> </tt>
-<a name="L671"></a><tt class="py-lineno"> 671</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">path_params</tt><tt class="py-op">.</tt><tt id="link-169" class="py-name" targets="Method googleapiclient.http.BatchHttpRequest.add()=googleapiclient.http.BatchHttpRequest-class.html#add"><a title="googleapiclient.http.BatchHttpRequest.add" class="py-name" href="#" onclick="return doclink('link-169', 'add', 'link-169');">add</a></tt><tt class="py-op">(</tt><tt class="py-name">param</tt><tt class="py-op">)</tt> </tt>
-<a name="L672"></a><tt class="py-lineno"> 672</tt>  <tt class="py-line">      <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">param_types</tt><tt class="py-op">[</tt><tt class="py-name">param</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">desc</tt><tt class="py-op">.</tt><tt id="link-170" class="py-name"><a title="googleapiclient.discovery_cache.appengine_memcache.Cache.get
+googleapiclient.schema.Schemas.get" class="py-name" href="#" onclick="return doclink('link-175', 'get', 'link-94');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">'location'</tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <tt class="py-string">'path'</tt><tt class="py-op">:</tt> </tt>
+<a name="L676"></a><tt class="py-lineno"> 676</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">path_params</tt><tt class="py-op">.</tt><tt id="link-176" class="py-name" targets="Method googleapiclient.http.BatchHttpRequest.add()=googleapiclient.http.BatchHttpRequest-class.html#add"><a title="googleapiclient.http.BatchHttpRequest.add" class="py-name" href="#" onclick="return doclink('link-176', 'add', 'link-176');">add</a></tt><tt class="py-op">(</tt><tt class="py-name">param</tt><tt class="py-op">)</tt> </tt>
+<a name="L677"></a><tt class="py-lineno"> 677</tt>  <tt class="py-line">      <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">param_types</tt><tt class="py-op">[</tt><tt class="py-name">param</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">desc</tt><tt class="py-op">.</tt><tt id="link-177" class="py-name"><a title="googleapiclient.discovery_cache.appengine_memcache.Cache.get
 googleapiclient.discovery_cache.base.Cache.get
 googleapiclient.discovery_cache.file_cache.Cache.get
-googleapiclient.schema.Schemas.get" class="py-name" href="#" onclick="return doclink('link-170', 'get', 'link-93');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">'type'</tt><tt class="py-op">,</tt> <tt class="py-string">'string'</tt><tt class="py-op">)</tt> </tt>
-<a name="L673"></a><tt class="py-lineno"> 673</tt>  <tt class="py-line"> </tt>
-<a name="L674"></a><tt class="py-lineno"> 674</tt>  <tt class="py-line">    <tt class="py-comment"># TODO(dhermes): Determine if this is still necessary. Discovery based APIs</tt> </tt>
-<a name="L675"></a><tt class="py-lineno"> 675</tt>  <tt class="py-line">    <tt class="py-comment">#                should have all path parameters already marked with</tt> </tt>
-<a name="L676"></a><tt class="py-lineno"> 676</tt>  <tt class="py-line">    <tt class="py-comment">#                'location: path'.</tt> </tt>
-<a name="L677"></a><tt class="py-lineno"> 677</tt>  <tt class="py-line">    <tt class="py-keyword">for</tt> <tt class="py-name">match</tt> <tt class="py-keyword">in</tt> <tt id="link-171" class="py-name"><a title="googleapiclient.discovery.URITEMPLATE" class="py-name" href="#" onclick="return doclink('link-171', 'URITEMPLATE', 'link-51');">URITEMPLATE</a></tt><tt class="py-op">.</tt><tt class="py-name">finditer</tt><tt class="py-op">(</tt><tt class="py-name">method_desc</tt><tt class="py-op">[</tt><tt class="py-string">'path'</tt><tt class="py-op">]</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="L678"></a><tt class="py-lineno"> 678</tt>  <tt class="py-line">      <tt class="py-keyword">for</tt> <tt class="py-name">namematch</tt> <tt class="py-keyword">in</tt> <tt id="link-172" class="py-name"><a title="googleapiclient.discovery.VARNAME" class="py-name" href="#" onclick="return doclink('link-172', 'VARNAME', 'link-52');">VARNAME</a></tt><tt class="py-op">.</tt><tt class="py-name">finditer</tt><tt class="py-op">(</tt><tt class="py-name">match</tt><tt class="py-op">.</tt><tt class="py-name">group</tt><tt class="py-op">(</tt><tt class="py-number">0</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="L679"></a><tt class="py-lineno"> 679</tt>  <tt class="py-line">        <tt class="py-name">name</tt> <tt class="py-op">=</tt> <tt id="link-173" class="py-name"><a title="googleapiclient.discovery.key2param" class="py-name" href="#" onclick="return doclink('link-173', 'key2param', 'link-162');">key2param</a></tt><tt class="py-op">(</tt><tt class="py-name">namematch</tt><tt class="py-op">.</tt><tt class="py-name">group</tt><tt class="py-op">(</tt><tt class="py-number">0</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L680"></a><tt class="py-lineno"> 680</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">path_params</tt><tt class="py-op">.</tt><tt id="link-174" class="py-name"><a title="googleapiclient.http.BatchHttpRequest.add" class="py-name" href="#" onclick="return doclink('link-174', 'add', 'link-169');">add</a></tt><tt class="py-op">(</tt><tt class="py-name">name</tt><tt class="py-op">)</tt> </tt>
-<a name="L681"></a><tt class="py-lineno"> 681</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">name</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">query_params</tt><tt class="py-op">:</tt> </tt>
-<a name="L682"></a><tt class="py-lineno"> 682</tt>  <tt class="py-line">          <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">query_params</tt><tt class="py-op">.</tt><tt class="py-name">remove</tt><tt class="py-op">(</tt><tt class="py-name">name</tt><tt class="py-op">)</tt> </tt>
-</div></div><a name="L683"></a><tt class="py-lineno"> 683</tt>  <tt class="py-line"> </tt>
-<a name="createMethod"></a><div id="createMethod-def"><a name="L684"></a><tt class="py-lineno"> 684</tt>  <tt class="py-line"> </tt>
-<a name="L685"></a><tt class="py-lineno"> 685</tt> <a class="py-toggle" href="#" id="createMethod-toggle" onclick="return toggle('createMethod');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="googleapiclient.discovery-module.html#createMethod">createMethod</a><tt class="py-op">(</tt><tt class="py-param">methodName</tt><tt class="py-op">,</tt> <tt class="py-param">methodDesc</tt><tt class="py-op">,</tt> <tt class="py-param">rootDesc</tt><tt class="py-op">,</tt> <tt class="py-param">schema</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="createMethod-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="createMethod-expanded"><a name="L686"></a><tt class="py-lineno"> 686</tt>  <tt class="py-line">  <tt class="py-docstring">"""Creates a method for attaching to a Resource.</tt> </tt>
-<a name="L687"></a><tt class="py-lineno"> 687</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L688"></a><tt class="py-lineno"> 688</tt>  <tt class="py-line"><tt class="py-docstring">  Args:</tt> </tt>
-<a name="L689"></a><tt class="py-lineno"> 689</tt>  <tt class="py-line"><tt class="py-docstring">    methodName: string, name of the method to use.</tt> </tt>
-<a name="L690"></a><tt class="py-lineno"> 690</tt>  <tt class="py-line"><tt class="py-docstring">    methodDesc: object, fragment of deserialized discovery document that</tt> </tt>
-<a name="L691"></a><tt class="py-lineno"> 691</tt>  <tt class="py-line"><tt class="py-docstring">      describes the method.</tt> </tt>
-<a name="L692"></a><tt class="py-lineno"> 692</tt>  <tt class="py-line"><tt class="py-docstring">    rootDesc: object, the entire deserialized discovery document.</tt> </tt>
-<a name="L693"></a><tt class="py-lineno"> 693</tt>  <tt class="py-line"><tt class="py-docstring">    schema: object, mapping of schema names to schema descriptions.</tt> </tt>
-<a name="L694"></a><tt class="py-lineno"> 694</tt>  <tt class="py-line"><tt class="py-docstring">  """</tt> </tt>
-<a name="L695"></a><tt class="py-lineno"> 695</tt>  <tt class="py-line">  <tt class="py-name">methodName</tt> <tt class="py-op">=</tt> <tt id="link-175" class="py-name" targets="Function googleapiclient.discovery.fix_method_name()=googleapiclient.discovery-module.html#fix_method_name"><a title="googleapiclient.discovery.fix_method_name" class="py-name" href="#" onclick="return doclink('link-175', 'fix_method_name', 'link-175');">fix_method_name</a></tt><tt class="py-op">(</tt><tt class="py-name">methodName</tt><tt class="py-op">)</tt> </tt>
-<a name="L696"></a><tt class="py-lineno"> 696</tt>  <tt class="py-line">  <tt class="py-op">(</tt><tt class="py-name">pathUrl</tt><tt class="py-op">,</tt> <tt class="py-name">httpMethod</tt><tt class="py-op">,</tt> <tt class="py-name">methodId</tt><tt class="py-op">,</tt> <tt id="link-176" class="py-name"><a title="googleapiclient.model.BaseModel.accept
+googleapiclient.schema.Schemas.get" class="py-name" href="#" onclick="return doclink('link-177', 'get', 'link-94');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">'type'</tt><tt class="py-op">,</tt> <tt class="py-string">'string'</tt><tt class="py-op">)</tt> </tt>
+<a name="L678"></a><tt class="py-lineno"> 678</tt>  <tt class="py-line"> </tt>
+<a name="L679"></a><tt class="py-lineno"> 679</tt>  <tt class="py-line">    <tt class="py-comment"># TODO(dhermes): Determine if this is still necessary. Discovery based APIs</tt> </tt>
+<a name="L680"></a><tt class="py-lineno"> 680</tt>  <tt class="py-line">    <tt class="py-comment">#                should have all path parameters already marked with</tt> </tt>
+<a name="L681"></a><tt class="py-lineno"> 681</tt>  <tt class="py-line">    <tt class="py-comment">#                'location: path'.</tt> </tt>
+<a name="L682"></a><tt class="py-lineno"> 682</tt>  <tt class="py-line">    <tt class="py-keyword">for</tt> <tt class="py-name">match</tt> <tt class="py-keyword">in</tt> <tt id="link-178" class="py-name"><a title="googleapiclient.discovery.URITEMPLATE" class="py-name" href="#" onclick="return doclink('link-178', 'URITEMPLATE', 'link-53');">URITEMPLATE</a></tt><tt class="py-op">.</tt><tt class="py-name">finditer</tt><tt class="py-op">(</tt><tt class="py-name">method_desc</tt><tt class="py-op">[</tt><tt class="py-string">'path'</tt><tt class="py-op">]</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L683"></a><tt class="py-lineno"> 683</tt>  <tt class="py-line">      <tt class="py-keyword">for</tt> <tt class="py-name">namematch</tt> <tt class="py-keyword">in</tt> <tt id="link-179" class="py-name"><a title="googleapiclient.discovery.VARNAME" class="py-name" href="#" onclick="return doclink('link-179', 'VARNAME', 'link-54');">VARNAME</a></tt><tt class="py-op">.</tt><tt class="py-name">finditer</tt><tt class="py-op">(</tt><tt class="py-name">match</tt><tt class="py-op">.</tt><tt class="py-name">group</tt><tt class="py-op">(</tt><tt class="py-number">0</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L684"></a><tt class="py-lineno"> 684</tt>  <tt class="py-line">        <tt class="py-name">name</tt> <tt class="py-op">=</tt> <tt id="link-180" class="py-name"><a title="googleapiclient.discovery.key2param" class="py-name" href="#" onclick="return doclink('link-180', 'key2param', 'link-169');">key2param</a></tt><tt class="py-op">(</tt><tt class="py-name">namematch</tt><tt class="py-op">.</tt><tt class="py-name">group</tt><tt class="py-op">(</tt><tt class="py-number">0</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L685"></a><tt class="py-lineno"> 685</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">path_params</tt><tt class="py-op">.</tt><tt id="link-181" class="py-name"><a title="googleapiclient.http.BatchHttpRequest.add" class="py-name" href="#" onclick="return doclink('link-181', 'add', 'link-176');">add</a></tt><tt class="py-op">(</tt><tt class="py-name">name</tt><tt class="py-op">)</tt> </tt>
+<a name="L686"></a><tt class="py-lineno"> 686</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">name</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">query_params</tt><tt class="py-op">:</tt> </tt>
+<a name="L687"></a><tt class="py-lineno"> 687</tt>  <tt class="py-line">          <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">query_params</tt><tt class="py-op">.</tt><tt class="py-name">remove</tt><tt class="py-op">(</tt><tt class="py-name">name</tt><tt class="py-op">)</tt> </tt>
+</div></div><a name="L688"></a><tt class="py-lineno"> 688</tt>  <tt class="py-line"> </tt>
+<a name="createMethod"></a><div id="createMethod-def"><a name="L689"></a><tt class="py-lineno"> 689</tt>  <tt class="py-line"> </tt>
+<a name="L690"></a><tt class="py-lineno"> 690</tt> <a class="py-toggle" href="#" id="createMethod-toggle" onclick="return toggle('createMethod');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="googleapiclient.discovery-module.html#createMethod">createMethod</a><tt class="py-op">(</tt><tt class="py-param">methodName</tt><tt class="py-op">,</tt> <tt class="py-param">methodDesc</tt><tt class="py-op">,</tt> <tt class="py-param">rootDesc</tt><tt class="py-op">,</tt> <tt class="py-param">schema</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="createMethod-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="createMethod-expanded"><a name="L691"></a><tt class="py-lineno"> 691</tt>  <tt class="py-line">  <tt class="py-docstring">"""Creates a method for attaching to a Resource.</tt> </tt>
+<a name="L692"></a><tt class="py-lineno"> 692</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L693"></a><tt class="py-lineno"> 693</tt>  <tt class="py-line"><tt class="py-docstring">  Args:</tt> </tt>
+<a name="L694"></a><tt class="py-lineno"> 694</tt>  <tt class="py-line"><tt class="py-docstring">    methodName: string, name of the method to use.</tt> </tt>
+<a name="L695"></a><tt class="py-lineno"> 695</tt>  <tt class="py-line"><tt class="py-docstring">    methodDesc: object, fragment of deserialized discovery document that</tt> </tt>
+<a name="L696"></a><tt class="py-lineno"> 696</tt>  <tt class="py-line"><tt class="py-docstring">      describes the method.</tt> </tt>
+<a name="L697"></a><tt class="py-lineno"> 697</tt>  <tt class="py-line"><tt class="py-docstring">    rootDesc: object, the entire deserialized discovery document.</tt> </tt>
+<a name="L698"></a><tt class="py-lineno"> 698</tt>  <tt class="py-line"><tt class="py-docstring">    schema: object, mapping of schema names to schema descriptions.</tt> </tt>
+<a name="L699"></a><tt class="py-lineno"> 699</tt>  <tt class="py-line"><tt class="py-docstring">  """</tt> </tt>
+<a name="L700"></a><tt class="py-lineno"> 700</tt>  <tt class="py-line">  <tt class="py-name">methodName</tt> <tt class="py-op">=</tt> <tt id="link-182" class="py-name" targets="Function googleapiclient.discovery.fix_method_name()=googleapiclient.discovery-module.html#fix_method_name"><a title="googleapiclient.discovery.fix_method_name" class="py-name" href="#" onclick="return doclink('link-182', 'fix_method_name', 'link-182');">fix_method_name</a></tt><tt class="py-op">(</tt><tt class="py-name">methodName</tt><tt class="py-op">)</tt> </tt>
+<a name="L701"></a><tt class="py-lineno"> 701</tt>  <tt class="py-line">  <tt class="py-op">(</tt><tt class="py-name">pathUrl</tt><tt class="py-op">,</tt> <tt class="py-name">httpMethod</tt><tt class="py-op">,</tt> <tt class="py-name">methodId</tt><tt class="py-op">,</tt> <tt id="link-183" class="py-name"><a title="googleapiclient.model.BaseModel.accept
 googleapiclient.model.JsonModel.accept
 googleapiclient.model.MediaModel.accept
 googleapiclient.model.ProtocolBufferModel.accept
-googleapiclient.model.RawModel.accept" class="py-name" href="#" onclick="return doclink('link-176', 'accept', 'link-143');">accept</a></tt><tt class="py-op">,</tt> </tt>
-<a name="L697"></a><tt class="py-lineno"> 697</tt>  <tt class="py-line">   <tt class="py-name">maxSize</tt><tt class="py-op">,</tt> <tt class="py-name">mediaPathUrl</tt><tt class="py-op">)</tt> <tt class="py-op">=</tt> <tt id="link-177" class="py-name" targets="Function googleapiclient.discovery._fix_up_method_description()=googleapiclient.discovery-module.html#_fix_up_method_description"><a title="googleapiclient.discovery._fix_up_method_description" class="py-name" href="#" onclick="return doclink('link-177', '_fix_up_method_description', 'link-177');">_fix_up_method_description</a></tt><tt class="py-op">(</tt><tt class="py-name">methodDesc</tt><tt class="py-op">,</tt> <tt class="py-name">rootDesc</tt><tt class="py-op">)</tt> </tt>
-<a name="L698"></a><tt class="py-lineno"> 698</tt>  <tt class="py-line"> </tt>
-<a name="L699"></a><tt class="py-lineno"> 699</tt>  <tt class="py-line">  <tt class="py-name">parameters</tt> <tt class="py-op">=</tt> <tt id="link-178" class="py-name" targets="Class googleapiclient.discovery.ResourceMethodParameters=googleapiclient.discovery.ResourceMethodParameters-class.html"><a title="googleapiclient.discovery.ResourceMethodParameters" class="py-name" href="#" onclick="return doclink('link-178', 'ResourceMethodParameters', 'link-178');">ResourceMethodParameters</a></tt><tt class="py-op">(</tt><tt class="py-name">methodDesc</tt><tt class="py-op">)</tt> </tt>
-<a name="L700"></a><tt class="py-lineno"> 700</tt>  <tt class="py-line"> </tt>
-<a name="L701"></a><tt class="py-lineno"> 701</tt>  <tt class="py-line">  <tt class="py-keyword">def</tt> <tt class="py-def-name">method</tt><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-op">**</tt><tt class="py-param">kwargs</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="L702"></a><tt class="py-lineno"> 702</tt>  <tt class="py-line">    <tt class="py-comment"># Don't bother with doc string, it will be over-written by createMethod.</tt> </tt>
+googleapiclient.model.RawModel.accept" class="py-name" href="#" onclick="return doclink('link-183', 'accept', 'link-150');">accept</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L702"></a><tt class="py-lineno"> 702</tt>  <tt class="py-line">   <tt class="py-name">maxSize</tt><tt class="py-op">,</tt> <tt class="py-name">mediaPathUrl</tt><tt class="py-op">)</tt> <tt class="py-op">=</tt> <tt id="link-184" class="py-name" targets="Function googleapiclient.discovery._fix_up_method_description()=googleapiclient.discovery-module.html#_fix_up_method_description"><a title="googleapiclient.discovery._fix_up_method_description" class="py-name" href="#" onclick="return doclink('link-184', '_fix_up_method_description', 'link-184');">_fix_up_method_description</a></tt><tt class="py-op">(</tt><tt class="py-name">methodDesc</tt><tt class="py-op">,</tt> <tt class="py-name">rootDesc</tt><tt class="py-op">)</tt> </tt>
 <a name="L703"></a><tt class="py-lineno"> 703</tt>  <tt class="py-line"> </tt>
-<a name="L704"></a><tt class="py-lineno"> 704</tt>  <tt class="py-line">    <tt class="py-keyword">for</tt> <tt class="py-name">name</tt> <tt class="py-keyword">in</tt> <tt class="py-name">six</tt><tt class="py-op">.</tt><tt class="py-name">iterkeys</tt><tt class="py-op">(</tt><tt class="py-name">kwargs</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="L705"></a><tt class="py-lineno"> 705</tt>  <tt class="py-line">      <tt class="py-keyword">if</tt> <tt class="py-name">name</tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt class="py-name">parameters</tt><tt class="py-op">.</tt><tt class="py-name">argmap</tt><tt class="py-op">:</tt> </tt>
-<a name="L706"></a><tt class="py-lineno"> 706</tt>  <tt class="py-line">        <tt class="py-keyword">raise</tt> <tt class="py-name">TypeError</tt><tt class="py-op">(</tt><tt class="py-string">'Got an unexpected keyword argument "%s"'</tt> <tt class="py-op">%</tt> <tt class="py-name">name</tt><tt class="py-op">)</tt> </tt>
-<a name="L707"></a><tt class="py-lineno"> 707</tt>  <tt class="py-line"> </tt>
-<a name="L708"></a><tt class="py-lineno"> 708</tt>  <tt class="py-line">    <tt class="py-comment"># Remove args that have a value of None.</tt> </tt>
-<a name="L709"></a><tt class="py-lineno"> 709</tt>  <tt class="py-line">    <tt class="py-name">keys</tt> <tt class="py-op">=</tt> <tt class="py-name">list</tt><tt class="py-op">(</tt><tt class="py-name">kwargs</tt><tt class="py-op">.</tt><tt class="py-name">keys</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L710"></a><tt class="py-lineno"> 710</tt>  <tt class="py-line">    <tt class="py-keyword">for</tt> <tt class="py-name">name</tt> <tt class="py-keyword">in</tt> <tt class="py-name">keys</tt><tt class="py-op">:</tt> </tt>
-<a name="L711"></a><tt class="py-lineno"> 711</tt>  <tt class="py-line">      <tt class="py-keyword">if</tt> <tt class="py-name">kwargs</tt><tt class="py-op">[</tt><tt class="py-name">name</tt><tt class="py-op">]</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
-<a name="L712"></a><tt class="py-lineno"> 712</tt>  <tt class="py-line">        <tt class="py-keyword">del</tt> <tt class="py-name">kwargs</tt><tt class="py-op">[</tt><tt class="py-name">name</tt><tt class="py-op">]</tt> </tt>
-<a name="L713"></a><tt class="py-lineno"> 713</tt>  <tt class="py-line"> </tt>
-<a name="L714"></a><tt class="py-lineno"> 714</tt>  <tt class="py-line">    <tt class="py-keyword">for</tt> <tt class="py-name">name</tt> <tt class="py-keyword">in</tt> <tt class="py-name">parameters</tt><tt class="py-op">.</tt><tt class="py-name">required_params</tt><tt class="py-op">:</tt> </tt>
-<a name="L715"></a><tt class="py-lineno"> 715</tt>  <tt class="py-line">      <tt class="py-keyword">if</tt> <tt class="py-name">name</tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt class="py-name">kwargs</tt><tt class="py-op">:</tt> </tt>
-<a name="L716"></a><tt class="py-lineno"> 716</tt>  <tt class="py-line">        <tt class="py-keyword">raise</tt> <tt class="py-name">TypeError</tt><tt class="py-op">(</tt><tt class="py-string">'Missing required parameter "%s"'</tt> <tt class="py-op">%</tt> <tt class="py-name">name</tt><tt class="py-op">)</tt> </tt>
-<a name="L717"></a><tt class="py-lineno"> 717</tt>  <tt class="py-line"> </tt>
-<a name="L718"></a><tt class="py-lineno"> 718</tt>  <tt class="py-line">    <tt class="py-keyword">for</tt> <tt class="py-name">name</tt><tt class="py-op">,</tt> <tt class="py-name">regex</tt> <tt class="py-keyword">in</tt> <tt class="py-name">six</tt><tt class="py-op">.</tt><tt class="py-name">iteritems</tt><tt class="py-op">(</tt><tt class="py-name">parameters</tt><tt class="py-op">.</tt><tt class="py-name">pattern_params</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="L719"></a><tt class="py-lineno"> 719</tt>  <tt class="py-line">      <tt class="py-keyword">if</tt> <tt class="py-name">name</tt> <tt class="py-keyword">in</tt> <tt class="py-name">kwargs</tt><tt class="py-op">:</tt> </tt>
-<a name="L720"></a><tt class="py-lineno"> 720</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">kwargs</tt><tt class="py-op">[</tt><tt class="py-name">name</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> <tt class="py-name">six</tt><tt class="py-op">.</tt><tt class="py-name">string_types</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="L721"></a><tt class="py-lineno"> 721</tt>  <tt class="py-line">          <tt class="py-name">pvalues</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-name">kwargs</tt><tt class="py-op">[</tt><tt class="py-name">name</tt><tt class="py-op">]</tt><tt class="py-op">]</tt> </tt>
-<a name="L722"></a><tt class="py-lineno"> 722</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
-<a name="L723"></a><tt class="py-lineno"> 723</tt>  <tt class="py-line">          <tt class="py-name">pvalues</tt> <tt class="py-op">=</tt> <tt class="py-name">kwargs</tt><tt class="py-op">[</tt><tt class="py-name">name</tt><tt class="py-op">]</tt> </tt>
-<a name="L724"></a><tt class="py-lineno"> 724</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt class="py-name">pvalue</tt> <tt class="py-keyword">in</tt> <tt class="py-name">pvalues</tt><tt class="py-op">:</tt> </tt>
-<a name="L725"></a><tt class="py-lineno"> 725</tt>  <tt class="py-line">          <tt class="py-keyword">if</tt> <tt class="py-name">re</tt><tt class="py-op">.</tt><tt class="py-name">match</tt><tt class="py-op">(</tt><tt class="py-name">regex</tt><tt class="py-op">,</tt> <tt class="py-name">pvalue</tt><tt class="py-op">)</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
-<a name="L726"></a><tt class="py-lineno"> 726</tt>  <tt class="py-line">            <tt class="py-keyword">raise</tt> <tt class="py-name">TypeError</tt><tt class="py-op">(</tt> </tt>
-<a name="L727"></a><tt class="py-lineno"> 727</tt>  <tt class="py-line">                <tt class="py-string">'Parameter "%s" value "%s" does not match the pattern "%s"'</tt> <tt class="py-op">%</tt> </tt>
-<a name="L728"></a><tt class="py-lineno"> 728</tt>  <tt class="py-line">                <tt class="py-op">(</tt><tt class="py-name">name</tt><tt class="py-op">,</tt> <tt class="py-name">pvalue</tt><tt class="py-op">,</tt> <tt class="py-name">regex</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L729"></a><tt class="py-lineno"> 729</tt>  <tt class="py-line"> </tt>
-<a name="L730"></a><tt class="py-lineno"> 730</tt>  <tt class="py-line">    <tt class="py-keyword">for</tt> <tt class="py-name">name</tt><tt class="py-op">,</tt> <tt class="py-name">enums</tt> <tt class="py-keyword">in</tt> <tt class="py-name">six</tt><tt class="py-op">.</tt><tt class="py-name">iteritems</tt><tt class="py-op">(</tt><tt class="py-name">parameters</tt><tt class="py-op">.</tt><tt class="py-name">enum_params</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="L731"></a><tt class="py-lineno"> 731</tt>  <tt class="py-line">      <tt class="py-keyword">if</tt> <tt class="py-name">name</tt> <tt class="py-keyword">in</tt> <tt class="py-name">kwargs</tt><tt class="py-op">:</tt> </tt>
-<a name="L732"></a><tt class="py-lineno"> 732</tt>  <tt class="py-line">        <tt class="py-comment"># We need to handle the case of a repeated enum</tt> </tt>
-<a name="L733"></a><tt class="py-lineno"> 733</tt>  <tt class="py-line">        <tt class="py-comment"># name differently, since we want to handle both</tt> </tt>
-<a name="L734"></a><tt class="py-lineno"> 734</tt>  <tt class="py-line">        <tt class="py-comment"># arg='value' and arg=['value1', 'value2']</tt> </tt>
-<a name="L735"></a><tt class="py-lineno"> 735</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-op">(</tt><tt class="py-name">name</tt> <tt class="py-keyword">in</tt> <tt class="py-name">parameters</tt><tt class="py-op">.</tt><tt class="py-name">repeated_params</tt> <tt class="py-keyword">and</tt> </tt>
-<a name="L736"></a><tt class="py-lineno"> 736</tt>  <tt class="py-line">            <tt class="py-keyword">not</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">kwargs</tt><tt class="py-op">[</tt><tt class="py-name">name</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> <tt class="py-name">six</tt><tt class="py-op">.</tt><tt class="py-name">string_types</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="L737"></a><tt class="py-lineno"> 737</tt>  <tt class="py-line">          <tt class="py-name">values</tt> <tt class="py-op">=</tt> <tt class="py-name">kwargs</tt><tt class="py-op">[</tt><tt class="py-name">name</tt><tt class="py-op">]</tt> </tt>
-<a name="L738"></a><tt class="py-lineno"> 738</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
-<a name="L739"></a><tt class="py-lineno"> 739</tt>  <tt class="py-line">          <tt class="py-name">values</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-name">kwargs</tt><tt class="py-op">[</tt><tt class="py-name">name</tt><tt class="py-op">]</tt><tt class="py-op">]</tt> </tt>
-<a name="L740"></a><tt class="py-lineno"> 740</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt class="py-name">value</tt> <tt class="py-keyword">in</tt> <tt class="py-name">values</tt><tt class="py-op">:</tt> </tt>
-<a name="L741"></a><tt class="py-lineno"> 741</tt>  <tt class="py-line">          <tt class="py-keyword">if</tt> <tt class="py-name">value</tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt class="py-name">enums</tt><tt class="py-op">:</tt> </tt>
-<a name="L742"></a><tt class="py-lineno"> 742</tt>  <tt class="py-line">            <tt class="py-keyword">raise</tt> <tt class="py-name">TypeError</tt><tt class="py-op">(</tt> </tt>
-<a name="L743"></a><tt class="py-lineno"> 743</tt>  <tt class="py-line">                <tt class="py-string">'Parameter "%s" value "%s" is not an allowed value in "%s"'</tt> <tt class="py-op">%</tt> </tt>
-<a name="L744"></a><tt class="py-lineno"> 744</tt>  <tt class="py-line">                <tt class="py-op">(</tt><tt class="py-name">name</tt><tt class="py-op">,</tt> <tt class="py-name">value</tt><tt class="py-op">,</tt> <tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">enums</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L745"></a><tt class="py-lineno"> 745</tt>  <tt class="py-line"> </tt>
-<a name="L746"></a><tt class="py-lineno"> 746</tt>  <tt class="py-line">    <tt class="py-name">actual_query_params</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-op">}</tt> </tt>
-<a name="L747"></a><tt class="py-lineno"> 747</tt>  <tt class="py-line">    <tt class="py-name">actual_path_params</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-op">}</tt> </tt>
-<a name="L748"></a><tt class="py-lineno"> 748</tt>  <tt class="py-line">    <tt class="py-keyword">for</tt> <tt class="py-name">key</tt><tt class="py-op">,</tt> <tt class="py-name">value</tt> <tt class="py-keyword">in</tt> <tt class="py-name">six</tt><tt class="py-op">.</tt><tt class="py-name">iteritems</tt><tt class="py-op">(</tt><tt class="py-name">kwargs</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="L749"></a><tt class="py-lineno"> 749</tt>  <tt class="py-line">      <tt class="py-name">to_type</tt> <tt class="py-op">=</tt> <tt class="py-name">parameters</tt><tt class="py-op">.</tt><tt class="py-name">param_types</tt><tt class="py-op">.</tt><tt id="link-179" class="py-name"><a title="googleapiclient.discovery_cache.appengine_memcache.Cache.get
+<a name="L704"></a><tt class="py-lineno"> 704</tt>  <tt class="py-line">  <tt class="py-name">parameters</tt> <tt class="py-op">=</tt> <tt id="link-185" class="py-name" targets="Class googleapiclient.discovery.ResourceMethodParameters=googleapiclient.discovery.ResourceMethodParameters-class.html"><a title="googleapiclient.discovery.ResourceMethodParameters" class="py-name" href="#" onclick="return doclink('link-185', 'ResourceMethodParameters', 'link-185');">ResourceMethodParameters</a></tt><tt class="py-op">(</tt><tt class="py-name">methodDesc</tt><tt class="py-op">)</tt> </tt>
+<a name="L705"></a><tt class="py-lineno"> 705</tt>  <tt class="py-line"> </tt>
+<a name="L706"></a><tt class="py-lineno"> 706</tt>  <tt class="py-line">  <tt class="py-keyword">def</tt> <tt class="py-def-name">method</tt><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-op">**</tt><tt class="py-param">kwargs</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L707"></a><tt class="py-lineno"> 707</tt>  <tt class="py-line">    <tt class="py-comment"># Don't bother with doc string, it will be over-written by createMethod.</tt> </tt>
+<a name="L708"></a><tt class="py-lineno"> 708</tt>  <tt class="py-line"> </tt>
+<a name="L709"></a><tt class="py-lineno"> 709</tt>  <tt class="py-line">    <tt class="py-keyword">for</tt> <tt class="py-name">name</tt> <tt class="py-keyword">in</tt> <tt class="py-name">six</tt><tt class="py-op">.</tt><tt class="py-name">iterkeys</tt><tt class="py-op">(</tt><tt class="py-name">kwargs</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L710"></a><tt class="py-lineno"> 710</tt>  <tt class="py-line">      <tt class="py-keyword">if</tt> <tt class="py-name">name</tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt class="py-name">parameters</tt><tt class="py-op">.</tt><tt class="py-name">argmap</tt><tt class="py-op">:</tt> </tt>
+<a name="L711"></a><tt class="py-lineno"> 711</tt>  <tt class="py-line">        <tt class="py-keyword">raise</tt> <tt class="py-name">TypeError</tt><tt class="py-op">(</tt><tt class="py-string">'Got an unexpected keyword argument "%s"'</tt> <tt class="py-op">%</tt> <tt class="py-name">name</tt><tt class="py-op">)</tt> </tt>
+<a name="L712"></a><tt class="py-lineno"> 712</tt>  <tt class="py-line"> </tt>
+<a name="L713"></a><tt class="py-lineno"> 713</tt>  <tt class="py-line">    <tt class="py-comment"># Remove args that have a value of None.</tt> </tt>
+<a name="L714"></a><tt class="py-lineno"> 714</tt>  <tt class="py-line">    <tt class="py-name">keys</tt> <tt class="py-op">=</tt> <tt class="py-name">list</tt><tt class="py-op">(</tt><tt class="py-name">kwargs</tt><tt class="py-op">.</tt><tt class="py-name">keys</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L715"></a><tt class="py-lineno"> 715</tt>  <tt class="py-line">    <tt class="py-keyword">for</tt> <tt class="py-name">name</tt> <tt class="py-keyword">in</tt> <tt class="py-name">keys</tt><tt class="py-op">:</tt> </tt>
+<a name="L716"></a><tt class="py-lineno"> 716</tt>  <tt class="py-line">      <tt class="py-keyword">if</tt> <tt class="py-name">kwargs</tt><tt class="py-op">[</tt><tt class="py-name">name</tt><tt class="py-op">]</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L717"></a><tt class="py-lineno"> 717</tt>  <tt class="py-line">        <tt class="py-keyword">del</tt> <tt class="py-name">kwargs</tt><tt class="py-op">[</tt><tt class="py-name">name</tt><tt class="py-op">]</tt> </tt>
+<a name="L718"></a><tt class="py-lineno"> 718</tt>  <tt class="py-line"> </tt>
+<a name="L719"></a><tt class="py-lineno"> 719</tt>  <tt class="py-line">    <tt class="py-keyword">for</tt> <tt class="py-name">name</tt> <tt class="py-keyword">in</tt> <tt class="py-name">parameters</tt><tt class="py-op">.</tt><tt class="py-name">required_params</tt><tt class="py-op">:</tt> </tt>
+<a name="L720"></a><tt class="py-lineno"> 720</tt>  <tt class="py-line">      <tt class="py-keyword">if</tt> <tt class="py-name">name</tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt class="py-name">kwargs</tt><tt class="py-op">:</tt> </tt>
+<a name="L721"></a><tt class="py-lineno"> 721</tt>  <tt class="py-line">        <tt class="py-keyword">raise</tt> <tt class="py-name">TypeError</tt><tt class="py-op">(</tt><tt class="py-string">'Missing required parameter "%s"'</tt> <tt class="py-op">%</tt> <tt class="py-name">name</tt><tt class="py-op">)</tt> </tt>
+<a name="L722"></a><tt class="py-lineno"> 722</tt>  <tt class="py-line"> </tt>
+<a name="L723"></a><tt class="py-lineno"> 723</tt>  <tt class="py-line">    <tt class="py-keyword">for</tt> <tt class="py-name">name</tt><tt class="py-op">,</tt> <tt class="py-name">regex</tt> <tt class="py-keyword">in</tt> <tt class="py-name">six</tt><tt class="py-op">.</tt><tt class="py-name">iteritems</tt><tt class="py-op">(</tt><tt class="py-name">parameters</tt><tt class="py-op">.</tt><tt class="py-name">pattern_params</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L724"></a><tt class="py-lineno"> 724</tt>  <tt class="py-line">      <tt class="py-keyword">if</tt> <tt class="py-name">name</tt> <tt class="py-keyword">in</tt> <tt class="py-name">kwargs</tt><tt class="py-op">:</tt> </tt>
+<a name="L725"></a><tt class="py-lineno"> 725</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">kwargs</tt><tt class="py-op">[</tt><tt class="py-name">name</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> <tt class="py-name">six</tt><tt class="py-op">.</tt><tt class="py-name">string_types</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L726"></a><tt class="py-lineno"> 726</tt>  <tt class="py-line">          <tt class="py-name">pvalues</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-name">kwargs</tt><tt class="py-op">[</tt><tt class="py-name">name</tt><tt class="py-op">]</tt><tt class="py-op">]</tt> </tt>
+<a name="L727"></a><tt class="py-lineno"> 727</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L728"></a><tt class="py-lineno"> 728</tt>  <tt class="py-line">          <tt class="py-name">pvalues</tt> <tt class="py-op">=</tt> <tt class="py-name">kwargs</tt><tt class="py-op">[</tt><tt class="py-name">name</tt><tt class="py-op">]</tt> </tt>
+<a name="L729"></a><tt class="py-lineno"> 729</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt class="py-name">pvalue</tt> <tt class="py-keyword">in</tt> <tt class="py-name">pvalues</tt><tt class="py-op">:</tt> </tt>
+<a name="L730"></a><tt class="py-lineno"> 730</tt>  <tt class="py-line">          <tt class="py-keyword">if</tt> <tt class="py-name">re</tt><tt class="py-op">.</tt><tt class="py-name">match</tt><tt class="py-op">(</tt><tt class="py-name">regex</tt><tt class="py-op">,</tt> <tt class="py-name">pvalue</tt><tt class="py-op">)</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L731"></a><tt class="py-lineno"> 731</tt>  <tt class="py-line">            <tt class="py-keyword">raise</tt> <tt class="py-name">TypeError</tt><tt class="py-op">(</tt> </tt>
+<a name="L732"></a><tt class="py-lineno"> 732</tt>  <tt class="py-line">                <tt class="py-string">'Parameter "%s" value "%s" does not match the pattern "%s"'</tt> <tt class="py-op">%</tt> </tt>
+<a name="L733"></a><tt class="py-lineno"> 733</tt>  <tt class="py-line">                <tt class="py-op">(</tt><tt class="py-name">name</tt><tt class="py-op">,</tt> <tt class="py-name">pvalue</tt><tt class="py-op">,</tt> <tt class="py-name">regex</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L734"></a><tt class="py-lineno"> 734</tt>  <tt class="py-line"> </tt>
+<a name="L735"></a><tt class="py-lineno"> 735</tt>  <tt class="py-line">    <tt class="py-keyword">for</tt> <tt class="py-name">name</tt><tt class="py-op">,</tt> <tt class="py-name">enums</tt> <tt class="py-keyword">in</tt> <tt class="py-name">six</tt><tt class="py-op">.</tt><tt class="py-name">iteritems</tt><tt class="py-op">(</tt><tt class="py-name">parameters</tt><tt class="py-op">.</tt><tt class="py-name">enum_params</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L736"></a><tt class="py-lineno"> 736</tt>  <tt class="py-line">      <tt class="py-keyword">if</tt> <tt class="py-name">name</tt> <tt class="py-keyword">in</tt> <tt class="py-name">kwargs</tt><tt class="py-op">:</tt> </tt>
+<a name="L737"></a><tt class="py-lineno"> 737</tt>  <tt class="py-line">        <tt class="py-comment"># We need to handle the case of a repeated enum</tt> </tt>
+<a name="L738"></a><tt class="py-lineno"> 738</tt>  <tt class="py-line">        <tt class="py-comment"># name differently, since we want to handle both</tt> </tt>
+<a name="L739"></a><tt class="py-lineno"> 739</tt>  <tt class="py-line">        <tt class="py-comment"># arg='value' and arg=['value1', 'value2']</tt> </tt>
+<a name="L740"></a><tt class="py-lineno"> 740</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-op">(</tt><tt class="py-name">name</tt> <tt class="py-keyword">in</tt> <tt class="py-name">parameters</tt><tt class="py-op">.</tt><tt class="py-name">repeated_params</tt> <tt class="py-keyword">and</tt> </tt>
+<a name="L741"></a><tt class="py-lineno"> 741</tt>  <tt class="py-line">            <tt class="py-keyword">not</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">kwargs</tt><tt class="py-op">[</tt><tt class="py-name">name</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> <tt class="py-name">six</tt><tt class="py-op">.</tt><tt class="py-name">string_types</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L742"></a><tt class="py-lineno"> 742</tt>  <tt class="py-line">          <tt class="py-name">values</tt> <tt class="py-op">=</tt> <tt class="py-name">kwargs</tt><tt class="py-op">[</tt><tt class="py-name">name</tt><tt class="py-op">]</tt> </tt>
+<a name="L743"></a><tt class="py-lineno"> 743</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L744"></a><tt class="py-lineno"> 744</tt>  <tt class="py-line">          <tt class="py-name">values</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-name">kwargs</tt><tt class="py-op">[</tt><tt class="py-name">name</tt><tt class="py-op">]</tt><tt class="py-op">]</tt> </tt>
+<a name="L745"></a><tt class="py-lineno"> 745</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt class="py-name">value</tt> <tt class="py-keyword">in</tt> <tt class="py-name">values</tt><tt class="py-op">:</tt> </tt>
+<a name="L746"></a><tt class="py-lineno"> 746</tt>  <tt class="py-line">          <tt class="py-keyword">if</tt> <tt class="py-name">value</tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt class="py-name">enums</tt><tt class="py-op">:</tt> </tt>
+<a name="L747"></a><tt class="py-lineno"> 747</tt>  <tt class="py-line">            <tt class="py-keyword">raise</tt> <tt class="py-name">TypeError</tt><tt class="py-op">(</tt> </tt>
+<a name="L748"></a><tt class="py-lineno"> 748</tt>  <tt class="py-line">                <tt class="py-string">'Parameter "%s" value "%s" is not an allowed value in "%s"'</tt> <tt class="py-op">%</tt> </tt>
+<a name="L749"></a><tt class="py-lineno"> 749</tt>  <tt class="py-line">                <tt class="py-op">(</tt><tt class="py-name">name</tt><tt class="py-op">,</tt> <tt class="py-name">value</tt><tt class="py-op">,</tt> <tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">enums</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L750"></a><tt class="py-lineno"> 750</tt>  <tt class="py-line"> </tt>
+<a name="L751"></a><tt class="py-lineno"> 751</tt>  <tt class="py-line">    <tt class="py-name">actual_query_params</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-op">}</tt> </tt>
+<a name="L752"></a><tt class="py-lineno"> 752</tt>  <tt class="py-line">    <tt class="py-name">actual_path_params</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-op">}</tt> </tt>
+<a name="L753"></a><tt class="py-lineno"> 753</tt>  <tt class="py-line">    <tt class="py-keyword">for</tt> <tt class="py-name">key</tt><tt class="py-op">,</tt> <tt class="py-name">value</tt> <tt class="py-keyword">in</tt> <tt class="py-name">six</tt><tt class="py-op">.</tt><tt class="py-name">iteritems</tt><tt class="py-op">(</tt><tt class="py-name">kwargs</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L754"></a><tt class="py-lineno"> 754</tt>  <tt class="py-line">      <tt class="py-name">to_type</tt> <tt class="py-op">=</tt> <tt class="py-name">parameters</tt><tt class="py-op">.</tt><tt class="py-name">param_types</tt><tt class="py-op">.</tt><tt id="link-186" class="py-name"><a title="googleapiclient.discovery_cache.appengine_memcache.Cache.get
 googleapiclient.discovery_cache.base.Cache.get
 googleapiclient.discovery_cache.file_cache.Cache.get
-googleapiclient.schema.Schemas.get" class="py-name" href="#" onclick="return doclink('link-179', 'get', 'link-93');">get</a></tt><tt class="py-op">(</tt><tt class="py-name">key</tt><tt class="py-op">,</tt> <tt class="py-string">'string'</tt><tt class="py-op">)</tt> </tt>
-<a name="L750"></a><tt class="py-lineno"> 750</tt>  <tt class="py-line">      <tt class="py-comment"># For repeated parameters we cast each member of the list.</tt> </tt>
-<a name="L751"></a><tt class="py-lineno"> 751</tt>  <tt class="py-line">      <tt class="py-keyword">if</tt> <tt class="py-name">key</tt> <tt class="py-keyword">in</tt> <tt class="py-name">parameters</tt><tt class="py-op">.</tt><tt class="py-name">repeated_params</tt> <tt class="py-keyword">and</tt> <tt class="py-name">type</tt><tt class="py-op">(</tt><tt class="py-name">value</tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <tt class="py-name">type</tt><tt class="py-op">(</tt><tt class="py-op">[</tt><tt class="py-op">]</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="L752"></a><tt class="py-lineno"> 752</tt>  <tt class="py-line">        <tt class="py-name">cast_value</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt id="link-180" class="py-name" targets="Function googleapiclient.discovery._cast()=googleapiclient.discovery-module.html#_cast"><a title="googleapiclient.discovery._cast" class="py-name" href="#" onclick="return doclink('link-180', '_cast', 'link-180');">_cast</a></tt><tt class="py-op">(</tt><tt class="py-name">x</tt><tt class="py-op">,</tt> <tt class="py-name">to_type</tt><tt class="py-op">)</tt> <tt class="py-keyword">for</tt> <tt class="py-name">x</tt> <tt class="py-keyword">in</tt> <tt class="py-name">value</tt><tt class="py-op">]</tt> </tt>
-<a name="L753"></a><tt class="py-lineno"> 753</tt>  <tt class="py-line">      <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
-<a name="L754"></a><tt class="py-lineno"> 754</tt>  <tt class="py-line">        <tt class="py-name">cast_value</tt> <tt class="py-op">=</tt> <tt id="link-181" class="py-name"><a title="googleapiclient.discovery._cast" class="py-name" href="#" onclick="return doclink('link-181', '_cast', 'link-180');">_cast</a></tt><tt class="py-op">(</tt><tt class="py-name">value</tt><tt class="py-op">,</tt> <tt class="py-name">to_type</tt><tt class="py-op">)</tt> </tt>
-<a name="L755"></a><tt class="py-lineno"> 755</tt>  <tt class="py-line">      <tt class="py-keyword">if</tt> <tt class="py-name">key</tt> <tt class="py-keyword">in</tt> <tt class="py-name">parameters</tt><tt class="py-op">.</tt><tt class="py-name">query_params</tt><tt class="py-op">:</tt> </tt>
-<a name="L756"></a><tt class="py-lineno"> 756</tt>  <tt class="py-line">        <tt class="py-name">actual_query_params</tt><tt class="py-op">[</tt><tt class="py-name">parameters</tt><tt class="py-op">.</tt><tt class="py-name">argmap</tt><tt class="py-op">[</tt><tt class="py-name">key</tt><tt class="py-op">]</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">cast_value</tt> </tt>
-<a name="L757"></a><tt class="py-lineno"> 757</tt>  <tt class="py-line">      <tt class="py-keyword">if</tt> <tt class="py-name">key</tt> <tt class="py-keyword">in</tt> <tt class="py-name">parameters</tt><tt class="py-op">.</tt><tt class="py-name">path_params</tt><tt class="py-op">:</tt> </tt>
-<a name="L758"></a><tt class="py-lineno"> 758</tt>  <tt class="py-line">        <tt class="py-name">actual_path_params</tt><tt class="py-op">[</tt><tt class="py-name">parameters</tt><tt class="py-op">.</tt><tt class="py-name">argmap</tt><tt class="py-op">[</tt><tt class="py-name">key</tt><tt class="py-op">]</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">cast_value</tt> </tt>
-<a name="L759"></a><tt class="py-lineno"> 759</tt>  <tt class="py-line">    <tt class="py-name">body_value</tt> <tt class="py-op">=</tt> <tt class="py-name">kwargs</tt><tt class="py-op">.</tt><tt id="link-182" class="py-name"><a title="googleapiclient.discovery_cache.appengine_memcache.Cache.get
+googleapiclient.schema.Schemas.get" class="py-name" href="#" onclick="return doclink('link-186', 'get', 'link-94');">get</a></tt><tt class="py-op">(</tt><tt class="py-name">key</tt><tt class="py-op">,</tt> <tt class="py-string">'string'</tt><tt class="py-op">)</tt> </tt>
+<a name="L755"></a><tt class="py-lineno"> 755</tt>  <tt class="py-line">      <tt class="py-comment"># For repeated parameters we cast each member of the list.</tt> </tt>
+<a name="L756"></a><tt class="py-lineno"> 756</tt>  <tt class="py-line">      <tt class="py-keyword">if</tt> <tt class="py-name">key</tt> <tt class="py-keyword">in</tt> <tt class="py-name">parameters</tt><tt class="py-op">.</tt><tt class="py-name">repeated_params</tt> <tt class="py-keyword">and</tt> <tt class="py-name">type</tt><tt class="py-op">(</tt><tt class="py-name">value</tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <tt class="py-name">type</tt><tt class="py-op">(</tt><tt class="py-op">[</tt><tt class="py-op">]</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L757"></a><tt class="py-lineno"> 757</tt>  <tt class="py-line">        <tt class="py-name">cast_value</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt id="link-187" class="py-name" targets="Function googleapiclient.discovery._cast()=googleapiclient.discovery-module.html#_cast"><a title="googleapiclient.discovery._cast" class="py-name" href="#" onclick="return doclink('link-187', '_cast', 'link-187');">_cast</a></tt><tt class="py-op">(</tt><tt class="py-name">x</tt><tt class="py-op">,</tt> <tt class="py-name">to_type</tt><tt class="py-op">)</tt> <tt class="py-keyword">for</tt> <tt class="py-name">x</tt> <tt class="py-keyword">in</tt> <tt class="py-name">value</tt><tt class="py-op">]</tt> </tt>
+<a name="L758"></a><tt class="py-lineno"> 758</tt>  <tt class="py-line">      <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L759"></a><tt class="py-lineno"> 759</tt>  <tt class="py-line">        <tt class="py-name">cast_value</tt> <tt class="py-op">=</tt> <tt id="link-188" class="py-name"><a title="googleapiclient.discovery._cast" class="py-name" href="#" onclick="return doclink('link-188', '_cast', 'link-187');">_cast</a></tt><tt class="py-op">(</tt><tt class="py-name">value</tt><tt class="py-op">,</tt> <tt class="py-name">to_type</tt><tt class="py-op">)</tt> </tt>
+<a name="L760"></a><tt class="py-lineno"> 760</tt>  <tt class="py-line">      <tt class="py-keyword">if</tt> <tt class="py-name">key</tt> <tt class="py-keyword">in</tt> <tt class="py-name">parameters</tt><tt class="py-op">.</tt><tt class="py-name">query_params</tt><tt class="py-op">:</tt> </tt>
+<a name="L761"></a><tt class="py-lineno"> 761</tt>  <tt class="py-line">        <tt class="py-name">actual_query_params</tt><tt class="py-op">[</tt><tt class="py-name">parameters</tt><tt class="py-op">.</tt><tt class="py-name">argmap</tt><tt class="py-op">[</tt><tt class="py-name">key</tt><tt class="py-op">]</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">cast_value</tt> </tt>
+<a name="L762"></a><tt class="py-lineno"> 762</tt>  <tt class="py-line">      <tt class="py-keyword">if</tt> <tt class="py-name">key</tt> <tt class="py-keyword">in</tt> <tt class="py-name">parameters</tt><tt class="py-op">.</tt><tt class="py-name">path_params</tt><tt class="py-op">:</tt> </tt>
+<a name="L763"></a><tt class="py-lineno"> 763</tt>  <tt class="py-line">        <tt class="py-name">actual_path_params</tt><tt class="py-op">[</tt><tt class="py-name">parameters</tt><tt class="py-op">.</tt><tt class="py-name">argmap</tt><tt class="py-op">[</tt><tt class="py-name">key</tt><tt class="py-op">]</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">cast_value</tt> </tt>
+<a name="L764"></a><tt class="py-lineno"> 764</tt>  <tt class="py-line">    <tt class="py-name">body_value</tt> <tt class="py-op">=</tt> <tt class="py-name">kwargs</tt><tt class="py-op">.</tt><tt id="link-189" class="py-name"><a title="googleapiclient.discovery_cache.appengine_memcache.Cache.get
 googleapiclient.discovery_cache.base.Cache.get
 googleapiclient.discovery_cache.file_cache.Cache.get
-googleapiclient.schema.Schemas.get" class="py-name" href="#" onclick="return doclink('link-182', 'get', 'link-93');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">'body'</tt><tt class="py-op">,</tt> <tt class="py-name">None</tt><tt class="py-op">)</tt> </tt>
-<a name="L760"></a><tt class="py-lineno"> 760</tt>  <tt class="py-line">    <tt class="py-name">media_filename</tt> <tt class="py-op">=</tt> <tt class="py-name">kwargs</tt><tt class="py-op">.</tt><tt id="link-183" class="py-name"><a title="googleapiclient.discovery_cache.appengine_memcache.Cache.get
+googleapiclient.schema.Schemas.get" class="py-name" href="#" onclick="return doclink('link-189', 'get', 'link-94');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">'body'</tt><tt class="py-op">,</tt> <tt class="py-name">None</tt><tt class="py-op">)</tt> </tt>
+<a name="L765"></a><tt class="py-lineno"> 765</tt>  <tt class="py-line">    <tt class="py-name">media_filename</tt> <tt class="py-op">=</tt> <tt class="py-name">kwargs</tt><tt class="py-op">.</tt><tt id="link-190" class="py-name"><a title="googleapiclient.discovery_cache.appengine_memcache.Cache.get
 googleapiclient.discovery_cache.base.Cache.get
 googleapiclient.discovery_cache.file_cache.Cache.get
-googleapiclient.schema.Schemas.get" class="py-name" href="#" onclick="return doclink('link-183', 'get', 'link-93');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">'media_body'</tt><tt class="py-op">,</tt> <tt class="py-name">None</tt><tt class="py-op">)</tt> </tt>
-<a name="L761"></a><tt class="py-lineno"> 761</tt>  <tt class="py-line">    <tt class="py-name">media_mime_type</tt> <tt class="py-op">=</tt> <tt class="py-name">kwargs</tt><tt class="py-op">.</tt><tt id="link-184" class="py-name"><a title="googleapiclient.discovery_cache.appengine_memcache.Cache.get
+googleapiclient.schema.Schemas.get" class="py-name" href="#" onclick="return doclink('link-190', 'get', 'link-94');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">'media_body'</tt><tt class="py-op">,</tt> <tt class="py-name">None</tt><tt class="py-op">)</tt> </tt>
+<a name="L766"></a><tt class="py-lineno"> 766</tt>  <tt class="py-line">    <tt class="py-name">media_mime_type</tt> <tt class="py-op">=</tt> <tt class="py-name">kwargs</tt><tt class="py-op">.</tt><tt id="link-191" class="py-name"><a title="googleapiclient.discovery_cache.appengine_memcache.Cache.get
 googleapiclient.discovery_cache.base.Cache.get
 googleapiclient.discovery_cache.file_cache.Cache.get
-googleapiclient.schema.Schemas.get" class="py-name" href="#" onclick="return doclink('link-184', 'get', 'link-93');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">'media_mime_type'</tt><tt class="py-op">,</tt> <tt class="py-name">None</tt><tt class="py-op">)</tt> </tt>
-<a name="L762"></a><tt class="py-lineno"> 762</tt>  <tt class="py-line"> </tt>
-<a name="L763"></a><tt class="py-lineno"> 763</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_developerKey</tt><tt class="py-op">:</tt> </tt>
-<a name="L764"></a><tt class="py-lineno"> 764</tt>  <tt class="py-line">      <tt class="py-name">actual_query_params</tt><tt class="py-op">[</tt><tt class="py-string">'key'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_developerKey</tt> </tt>
-<a name="L765"></a><tt class="py-lineno"> 765</tt>  <tt class="py-line"> </tt>
-<a name="L766"></a><tt class="py-lineno"> 766</tt>  <tt class="py-line">    <tt id="link-185" class="py-name"><a title="googleapiclient.model" class="py-name" href="#" onclick="return doclink('link-185', 'model', 'link-39');">model</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_model</tt> </tt>
-<a name="L767"></a><tt class="py-lineno"> 767</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">methodName</tt><tt class="py-op">.</tt><tt class="py-name">endswith</tt><tt class="py-op">(</tt><tt class="py-string">'_media'</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="L768"></a><tt class="py-lineno"> 768</tt>  <tt class="py-line">      <tt id="link-186" class="py-name"><a title="googleapiclient.model" class="py-name" href="#" onclick="return doclink('link-186', 'model', 'link-39');">model</a></tt> <tt class="py-op">=</tt> <tt id="link-187" class="py-name"><a title="googleapiclient.model.MediaModel" class="py-name" href="#" onclick="return doclink('link-187', 'MediaModel', 'link-43');">MediaModel</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-<a name="L769"></a><tt class="py-lineno"> 769</tt>  <tt class="py-line">    <tt class="py-keyword">elif</tt> <tt class="py-string">'response'</tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt class="py-name">methodDesc</tt><tt class="py-op">:</tt> </tt>
-<a name="L770"></a><tt class="py-lineno"> 770</tt>  <tt class="py-line">      <tt id="link-188" class="py-name"><a title="googleapiclient.model" class="py-name" href="#" onclick="return doclink('link-188', 'model', 'link-39');">model</a></tt> <tt class="py-op">=</tt> <tt id="link-189" class="py-name"><a title="googleapiclient.model.RawModel" class="py-name" href="#" onclick="return doclink('link-189', 'RawModel', 'link-46');">RawModel</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-<a name="L771"></a><tt class="py-lineno"> 771</tt>  <tt class="py-line"> </tt>
-<a name="L772"></a><tt class="py-lineno"> 772</tt>  <tt class="py-line">    <tt class="py-name">headers</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-op">}</tt> </tt>
-<a name="L773"></a><tt class="py-lineno"> 773</tt>  <tt class="py-line">    <tt class="py-name">headers</tt><tt class="py-op">,</tt> <tt class="py-name">params</tt><tt class="py-op">,</tt> <tt class="py-name">query</tt><tt class="py-op">,</tt> <tt id="link-190" class="py-name"><a title="googleapiclient.channel.Channel.body" class="py-name" href="#" onclick="return doclink('link-190', 'body', 'link-137');">body</a></tt> <tt class="py-op">=</tt> <tt id="link-191" class="py-name"><a title="googleapiclient.model" class="py-name" href="#" onclick="return doclink('link-191', 'model', 'link-39');">model</a></tt><tt class="py-op">.</tt><tt id="link-192" class="py-name"><a title="googleapiclient.http.HttpMock.request
+googleapiclient.schema.Schemas.get" class="py-name" href="#" onclick="return doclink('link-191', 'get', 'link-94');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">'media_mime_type'</tt><tt class="py-op">,</tt> <tt class="py-name">None</tt><tt class="py-op">)</tt> </tt>
+<a name="L767"></a><tt class="py-lineno"> 767</tt>  <tt class="py-line"> </tt>
+<a name="L768"></a><tt class="py-lineno"> 768</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_developerKey</tt><tt class="py-op">:</tt> </tt>
+<a name="L769"></a><tt class="py-lineno"> 769</tt>  <tt class="py-line">      <tt class="py-name">actual_query_params</tt><tt class="py-op">[</tt><tt class="py-string">'key'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_developerKey</tt> </tt>
+<a name="L770"></a><tt class="py-lineno"> 770</tt>  <tt class="py-line"> </tt>
+<a name="L771"></a><tt class="py-lineno"> 771</tt>  <tt class="py-line">    <tt id="link-192" class="py-name"><a title="googleapiclient.model" class="py-name" href="#" onclick="return doclink('link-192', 'model', 'link-41');">model</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_model</tt> </tt>
+<a name="L772"></a><tt class="py-lineno"> 772</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">methodName</tt><tt class="py-op">.</tt><tt class="py-name">endswith</tt><tt class="py-op">(</tt><tt class="py-string">'_media'</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L773"></a><tt class="py-lineno"> 773</tt>  <tt class="py-line">      <tt id="link-193" class="py-name"><a title="googleapiclient.model" class="py-name" href="#" onclick="return doclink('link-193', 'model', 'link-41');">model</a></tt> <tt class="py-op">=</tt> <tt id="link-194" class="py-name"><a title="googleapiclient.model.MediaModel" class="py-name" href="#" onclick="return doclink('link-194', 'MediaModel', 'link-45');">MediaModel</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L774"></a><tt class="py-lineno"> 774</tt>  <tt class="py-line">    <tt class="py-keyword">elif</tt> <tt class="py-string">'response'</tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt class="py-name">methodDesc</tt><tt class="py-op">:</tt> </tt>
+<a name="L775"></a><tt class="py-lineno"> 775</tt>  <tt class="py-line">      <tt id="link-195" class="py-name"><a title="googleapiclient.model" class="py-name" href="#" onclick="return doclink('link-195', 'model', 'link-41');">model</a></tt> <tt class="py-op">=</tt> <tt id="link-196" class="py-name"><a title="googleapiclient.model.RawModel" class="py-name" href="#" onclick="return doclink('link-196', 'RawModel', 'link-48');">RawModel</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L776"></a><tt class="py-lineno"> 776</tt>  <tt class="py-line"> </tt>
+<a name="L777"></a><tt class="py-lineno"> 777</tt>  <tt class="py-line">    <tt class="py-name">headers</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-op">}</tt> </tt>
+<a name="L778"></a><tt class="py-lineno"> 778</tt>  <tt class="py-line">    <tt class="py-name">headers</tt><tt class="py-op">,</tt> <tt class="py-name">params</tt><tt class="py-op">,</tt> <tt class="py-name">query</tt><tt class="py-op">,</tt> <tt id="link-197" class="py-name"><a title="googleapiclient.channel.Channel.body" class="py-name" href="#" onclick="return doclink('link-197', 'body', 'link-144');">body</a></tt> <tt class="py-op">=</tt> <tt id="link-198" class="py-name"><a title="googleapiclient.model" class="py-name" href="#" onclick="return doclink('link-198', 'model', 'link-41');">model</a></tt><tt class="py-op">.</tt><tt id="link-199" class="py-name"><a title="googleapiclient.http.HttpMock.request
 googleapiclient.http.HttpMockSequence.request
 googleapiclient.model.BaseModel.request
-googleapiclient.model.Model.request" class="py-name" href="#" onclick="return doclink('link-192', 'request', 'link-96');">request</a></tt><tt class="py-op">(</tt><tt class="py-name">headers</tt><tt class="py-op">,</tt> </tt>
-<a name="L774"></a><tt class="py-lineno"> 774</tt>  <tt class="py-line">        <tt class="py-name">actual_path_params</tt><tt class="py-op">,</tt> <tt class="py-name">actual_query_params</tt><tt class="py-op">,</tt> <tt class="py-name">body_value</tt><tt class="py-op">)</tt> </tt>
-<a name="L775"></a><tt class="py-lineno"> 775</tt>  <tt class="py-line"> </tt>
-<a name="L776"></a><tt class="py-lineno"> 776</tt>  <tt class="py-line">    <tt class="py-name">expanded_url</tt> <tt class="py-op">=</tt> <tt class="py-name">uritemplate</tt><tt class="py-op">.</tt><tt class="py-name">expand</tt><tt class="py-op">(</tt><tt class="py-name">pathUrl</tt><tt class="py-op">,</tt> <tt class="py-name">params</tt><tt class="py-op">)</tt> </tt>
-<a name="L777"></a><tt class="py-lineno"> 777</tt>  <tt class="py-line">    <tt class="py-name">url</tt> <tt class="py-op">=</tt> <tt id="link-193" class="py-name" targets="Function googleapiclient.discovery._urljoin()=googleapiclient.discovery-module.html#_urljoin"><a title="googleapiclient.discovery._urljoin" class="py-name" href="#" onclick="return doclink('link-193', '_urljoin', 'link-193');">_urljoin</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_baseUrl</tt><tt class="py-op">,</tt> <tt class="py-name">expanded_url</tt> <tt class="py-op">+</tt> <tt class="py-name">query</tt><tt class="py-op">)</tt> </tt>
-<a name="L778"></a><tt class="py-lineno"> 778</tt>  <tt class="py-line"> </tt>
-<a name="L779"></a><tt class="py-lineno"> 779</tt>  <tt class="py-line">    <tt id="link-194" class="py-name" targets="Method googleapiclient.http.MediaIoBaseUpload.resumable()=googleapiclient.http.MediaIoBaseUpload-class.html#resumable,Method googleapiclient.http.MediaUpload.resumable()=googleapiclient.http.MediaUpload-class.html#resumable"><a title="googleapiclient.http.MediaIoBaseUpload.resumable
-googleapiclient.http.MediaUpload.resumable" class="py-name" href="#" onclick="return doclink('link-194', 'resumable', 'link-194');">resumable</a></tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
-<a name="L780"></a><tt class="py-lineno"> 780</tt>  <tt class="py-line">    <tt class="py-name">multipart_boundary</tt> <tt class="py-op">=</tt> <tt class="py-string">''</tt> </tt>
-<a name="L781"></a><tt class="py-lineno"> 781</tt>  <tt class="py-line"> </tt>
-<a name="L782"></a><tt class="py-lineno"> 782</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">media_filename</tt><tt class="py-op">:</tt> </tt>
-<a name="L783"></a><tt class="py-lineno"> 783</tt>  <tt class="py-line">      <tt class="py-comment"># Ensure we end up with a valid MediaUpload object.</tt> </tt>
-<a name="L784"></a><tt class="py-lineno"> 784</tt>  <tt class="py-line">      <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">media_filename</tt><tt class="py-op">,</tt> <tt class="py-name">six</tt><tt class="py-op">.</tt><tt class="py-name">string_types</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="L785"></a><tt class="py-lineno"> 785</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">media_mime_type</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
-<a name="L786"></a><tt class="py-lineno"> 786</tt>  <tt class="py-line">          <tt id="link-195" class="py-name"><a title="googleapiclient.discovery.logger" class="py-name" href="#" onclick="return doclink('link-195', 'logger', 'link-50');">logger</a></tt><tt class="py-op">.</tt><tt class="py-name">warning</tt><tt class="py-op">(</tt> </tt>
-<a name="L787"></a><tt class="py-lineno"> 787</tt>  <tt class="py-line">              <tt class="py-string">'media_mime_type argument not specified: trying to auto-detect for %s'</tt><tt class="py-op">,</tt> </tt>
-<a name="L788"></a><tt class="py-lineno"> 788</tt>  <tt class="py-line">              <tt class="py-name">media_filename</tt><tt class="py-op">)</tt> </tt>
-<a name="L789"></a><tt class="py-lineno"> 789</tt>  <tt class="py-line">          <tt class="py-name">media_mime_type</tt><tt class="py-op">,</tt> <tt class="py-name">_</tt> <tt class="py-op">=</tt> <tt class="py-name">mimetypes</tt><tt class="py-op">.</tt><tt class="py-name">guess_type</tt><tt class="py-op">(</tt><tt class="py-name">media_filename</tt><tt class="py-op">)</tt> </tt>
+googleapiclient.model.Model.request" class="py-name" href="#" onclick="return doclink('link-199', 'request', 'link-97');">request</a></tt><tt class="py-op">(</tt><tt class="py-name">headers</tt><tt class="py-op">,</tt> </tt>
+<a name="L779"></a><tt class="py-lineno"> 779</tt>  <tt class="py-line">        <tt class="py-name">actual_path_params</tt><tt class="py-op">,</tt> <tt class="py-name">actual_query_params</tt><tt class="py-op">,</tt> <tt class="py-name">body_value</tt><tt class="py-op">)</tt> </tt>
+<a name="L780"></a><tt class="py-lineno"> 780</tt>  <tt class="py-line"> </tt>
+<a name="L781"></a><tt class="py-lineno"> 781</tt>  <tt class="py-line">    <tt class="py-name">expanded_url</tt> <tt class="py-op">=</tt> <tt class="py-name">uritemplate</tt><tt class="py-op">.</tt><tt class="py-name">expand</tt><tt class="py-op">(</tt><tt class="py-name">pathUrl</tt><tt class="py-op">,</tt> <tt class="py-name">params</tt><tt class="py-op">)</tt> </tt>
+<a name="L782"></a><tt class="py-lineno"> 782</tt>  <tt class="py-line">    <tt class="py-name">url</tt> <tt class="py-op">=</tt> <tt id="link-200" class="py-name" targets="Function googleapiclient.discovery._urljoin()=googleapiclient.discovery-module.html#_urljoin"><a title="googleapiclient.discovery._urljoin" class="py-name" href="#" onclick="return doclink('link-200', '_urljoin', 'link-200');">_urljoin</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_baseUrl</tt><tt class="py-op">,</tt> <tt class="py-name">expanded_url</tt> <tt class="py-op">+</tt> <tt class="py-name">query</tt><tt class="py-op">)</tt> </tt>
+<a name="L783"></a><tt class="py-lineno"> 783</tt>  <tt class="py-line"> </tt>
+<a name="L784"></a><tt class="py-lineno"> 784</tt>  <tt class="py-line">    <tt id="link-201" class="py-name" targets="Method googleapiclient.http.MediaIoBaseUpload.resumable()=googleapiclient.http.MediaIoBaseUpload-class.html#resumable,Method googleapiclient.http.MediaUpload.resumable()=googleapiclient.http.MediaUpload-class.html#resumable"><a title="googleapiclient.http.MediaIoBaseUpload.resumable
+googleapiclient.http.MediaUpload.resumable" class="py-name" href="#" onclick="return doclink('link-201', 'resumable', 'link-201');">resumable</a></tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
+<a name="L785"></a><tt class="py-lineno"> 785</tt>  <tt class="py-line">    <tt class="py-name">multipart_boundary</tt> <tt class="py-op">=</tt> <tt class="py-string">''</tt> </tt>
+<a name="L786"></a><tt class="py-lineno"> 786</tt>  <tt class="py-line"> </tt>
+<a name="L787"></a><tt class="py-lineno"> 787</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">media_filename</tt><tt class="py-op">:</tt> </tt>
+<a name="L788"></a><tt class="py-lineno"> 788</tt>  <tt class="py-line">      <tt class="py-comment"># Ensure we end up with a valid MediaUpload object.</tt> </tt>
+<a name="L789"></a><tt class="py-lineno"> 789</tt>  <tt class="py-line">      <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">media_filename</tt><tt class="py-op">,</tt> <tt class="py-name">six</tt><tt class="py-op">.</tt><tt class="py-name">string_types</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
 <a name="L790"></a><tt class="py-lineno"> 790</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">media_mime_type</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
-<a name="L791"></a><tt class="py-lineno"> 791</tt>  <tt class="py-line">          <tt class="py-keyword">raise</tt> <tt id="link-196" class="py-name"><a title="googleapiclient.errors.UnknownFileType" class="py-name" href="#" onclick="return doclink('link-196', 'UnknownFileType', 'link-19');">UnknownFileType</a></tt><tt class="py-op">(</tt><tt class="py-name">media_filename</tt><tt class="py-op">)</tt> </tt>
-<a name="L792"></a><tt class="py-lineno"> 792</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt id="link-197" class="py-name"><a title="googleapiclient.mimeparse" class="py-name" href="#" onclick="return doclink('link-197', 'mimeparse', 'link-1');">mimeparse</a></tt><tt class="py-op">.</tt><tt id="link-198" class="py-name" targets="Function googleapiclient.mimeparse.best_match()=googleapiclient.mimeparse-module.html#best_match"><a title="googleapiclient.mimeparse.best_match" class="py-name" href="#" onclick="return doclink('link-198', 'best_match', 'link-198');">best_match</a></tt><tt class="py-op">(</tt><tt class="py-op">[</tt><tt class="py-name">media_mime_type</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> <tt class="py-string">','</tt><tt class="py-op">.</tt><tt class="py-name">join</tt><tt class="py-op">(</tt><tt id="link-199" class="py-name"><a title="googleapiclient.model.BaseModel.accept
+<a name="L791"></a><tt class="py-lineno"> 791</tt>  <tt class="py-line">          <tt id="link-202" class="py-name"><a title="googleapiclient.discovery.logger" class="py-name" href="#" onclick="return doclink('link-202', 'logger', 'link-52');">logger</a></tt><tt class="py-op">.</tt><tt class="py-name">warning</tt><tt class="py-op">(</tt> </tt>
+<a name="L792"></a><tt class="py-lineno"> 792</tt>  <tt class="py-line">              <tt class="py-string">'media_mime_type argument not specified: trying to auto-detect for %s'</tt><tt class="py-op">,</tt> </tt>
+<a name="L793"></a><tt class="py-lineno"> 793</tt>  <tt class="py-line">              <tt class="py-name">media_filename</tt><tt class="py-op">)</tt> </tt>
+<a name="L794"></a><tt class="py-lineno"> 794</tt>  <tt class="py-line">          <tt class="py-name">media_mime_type</tt><tt class="py-op">,</tt> <tt class="py-name">_</tt> <tt class="py-op">=</tt> <tt class="py-name">mimetypes</tt><tt class="py-op">.</tt><tt class="py-name">guess_type</tt><tt class="py-op">(</tt><tt class="py-name">media_filename</tt><tt class="py-op">)</tt> </tt>
+<a name="L795"></a><tt class="py-lineno"> 795</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">media_mime_type</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L796"></a><tt class="py-lineno"> 796</tt>  <tt class="py-line">          <tt class="py-keyword">raise</tt> <tt id="link-203" class="py-name"><a title="googleapiclient.errors.UnknownFileType" class="py-name" href="#" onclick="return doclink('link-203', 'UnknownFileType', 'link-21');">UnknownFileType</a></tt><tt class="py-op">(</tt><tt class="py-name">media_filename</tt><tt class="py-op">)</tt> </tt>
+<a name="L797"></a><tt class="py-lineno"> 797</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt id="link-204" class="py-name"><a title="googleapiclient.mimeparse" class="py-name" href="#" onclick="return doclink('link-204', 'mimeparse', 'link-3');">mimeparse</a></tt><tt class="py-op">.</tt><tt id="link-205" class="py-name" targets="Function googleapiclient.mimeparse.best_match()=googleapiclient.mimeparse-module.html#best_match"><a title="googleapiclient.mimeparse.best_match" class="py-name" href="#" onclick="return doclink('link-205', 'best_match', 'link-205');">best_match</a></tt><tt class="py-op">(</tt><tt class="py-op">[</tt><tt class="py-name">media_mime_type</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> <tt class="py-string">','</tt><tt class="py-op">.</tt><tt class="py-name">join</tt><tt class="py-op">(</tt><tt id="link-206" class="py-name"><a title="googleapiclient.model.BaseModel.accept
 googleapiclient.model.JsonModel.accept
 googleapiclient.model.MediaModel.accept
 googleapiclient.model.ProtocolBufferModel.accept
-googleapiclient.model.RawModel.accept" class="py-name" href="#" onclick="return doclink('link-199', 'accept', 'link-143');">accept</a></tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="L793"></a><tt class="py-lineno"> 793</tt>  <tt class="py-line">          <tt class="py-keyword">raise</tt> <tt id="link-200" class="py-name"><a title="googleapiclient.errors.UnacceptableMimeTypeError" class="py-name" href="#" onclick="return doclink('link-200', 'UnacceptableMimeTypeError', 'link-13');">UnacceptableMimeTypeError</a></tt><tt class="py-op">(</tt><tt class="py-name">media_mime_type</tt><tt class="py-op">)</tt> </tt>
-<a name="L794"></a><tt class="py-lineno"> 794</tt>  <tt class="py-line">        <tt class="py-name">media_upload</tt> <tt class="py-op">=</tt> <tt id="link-201" class="py-name"><a title="googleapiclient.http.MediaFileUpload" class="py-name" href="#" onclick="return doclink('link-201', 'MediaFileUpload', 'link-34');">MediaFileUpload</a></tt><tt class="py-op">(</tt><tt class="py-name">media_filename</tt><tt class="py-op">,</tt> </tt>
-<a name="L795"></a><tt class="py-lineno"> 795</tt>  <tt class="py-line">                                       <tt id="link-202" class="py-name" targets="Method googleapiclient.http.MediaIoBaseUpload.mimetype()=googleapiclient.http.MediaIoBaseUpload-class.html#mimetype,Method googleapiclient.http.MediaUpload.mimetype()=googleapiclient.http.MediaUpload-class.html#mimetype"><a title="googleapiclient.http.MediaIoBaseUpload.mimetype
-googleapiclient.http.MediaUpload.mimetype" class="py-name" href="#" onclick="return doclink('link-202', 'mimetype', 'link-202');">mimetype</a></tt><tt class="py-op">=</tt><tt class="py-name">media_mime_type</tt><tt class="py-op">)</tt> </tt>
-<a name="L796"></a><tt class="py-lineno"> 796</tt>  <tt class="py-line">      <tt class="py-keyword">elif</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">media_filename</tt><tt class="py-op">,</tt> <tt id="link-203" class="py-name"><a title="googleapiclient.http.MediaUpload" class="py-name" href="#" onclick="return doclink('link-203', 'MediaUpload', 'link-37');">MediaUpload</a></tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="L797"></a><tt class="py-lineno"> 797</tt>  <tt class="py-line">        <tt class="py-name">media_upload</tt> <tt class="py-op">=</tt> <tt class="py-name">media_filename</tt> </tt>
-<a name="L798"></a><tt class="py-lineno"> 798</tt>  <tt class="py-line">      <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
-<a name="L799"></a><tt class="py-lineno"> 799</tt>  <tt class="py-line">        <tt class="py-keyword">raise</tt> <tt class="py-name">TypeError</tt><tt class="py-op">(</tt><tt class="py-string">'media_filename must be str or MediaUpload.'</tt><tt class="py-op">)</tt> </tt>
-<a name="L800"></a><tt class="py-lineno"> 800</tt>  <tt class="py-line"> </tt>
-<a name="L801"></a><tt class="py-lineno"> 801</tt>  <tt class="py-line">      <tt class="py-comment"># Check the maxSize</tt> </tt>
-<a name="L802"></a><tt class="py-lineno"> 802</tt>  <tt class="py-line">      <tt class="py-keyword">if</tt> <tt class="py-name">media_upload</tt><tt class="py-op">.</tt><tt id="link-204" class="py-name" targets="Method googleapiclient.http.MediaIoBaseUpload.size()=googleapiclient.http.MediaIoBaseUpload-class.html#size,Method googleapiclient.http.MediaUpload.size()=googleapiclient.http.MediaUpload-class.html#size"><a title="googleapiclient.http.MediaIoBaseUpload.size
-googleapiclient.http.MediaUpload.size" class="py-name" href="#" onclick="return doclink('link-204', 'size', 'link-204');">size</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt> <tt class="py-keyword">and</tt> <tt class="py-name">media_upload</tt><tt class="py-op">.</tt><tt id="link-205" class="py-name"><a title="googleapiclient.http.MediaIoBaseUpload.size
-googleapiclient.http.MediaUpload.size" class="py-name" href="#" onclick="return doclink('link-205', 'size', 'link-204');">size</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-op">&gt;</tt> <tt class="py-name">maxSize</tt> <tt class="py-op">&gt;</tt> <tt class="py-number">0</tt><tt class="py-op">:</tt> </tt>
-<a name="L803"></a><tt class="py-lineno"> 803</tt>  <tt class="py-line">        <tt class="py-keyword">raise</tt> <tt id="link-206" class="py-name"><a title="googleapiclient.errors.MediaUploadSizeError" class="py-name" href="#" onclick="return doclink('link-206', 'MediaUploadSizeError', 'link-10');">MediaUploadSizeError</a></tt><tt class="py-op">(</tt><tt class="py-string">"Media larger than: %s"</tt> <tt class="py-op">%</tt> <tt class="py-name">maxSize</tt><tt class="py-op">)</tt> </tt>
-<a name="L804"></a><tt class="py-lineno"> 804</tt>  <tt class="py-line"> </tt>
-<a name="L805"></a><tt class="py-lineno"> 805</tt>  <tt class="py-line">      <tt class="py-comment"># Use the media path uri for media uploads</tt> </tt>
-<a name="L806"></a><tt class="py-lineno"> 806</tt>  <tt class="py-line">      <tt class="py-name">expanded_url</tt> <tt class="py-op">=</tt> <tt class="py-name">uritemplate</tt><tt class="py-op">.</tt><tt class="py-name">expand</tt><tt class="py-op">(</tt><tt class="py-name">mediaPathUrl</tt><tt class="py-op">,</tt> <tt class="py-name">params</tt><tt class="py-op">)</tt> </tt>
-<a name="L807"></a><tt class="py-lineno"> 807</tt>  <tt class="py-line">      <tt class="py-name">url</tt> <tt class="py-op">=</tt> <tt id="link-207" class="py-name"><a title="googleapiclient.discovery._urljoin" class="py-name" href="#" onclick="return doclink('link-207', '_urljoin', 'link-193');">_urljoin</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_baseUrl</tt><tt class="py-op">,</tt> <tt class="py-name">expanded_url</tt> <tt class="py-op">+</tt> <tt class="py-name">query</tt><tt class="py-op">)</tt> </tt>
-<a name="L808"></a><tt class="py-lineno"> 808</tt>  <tt class="py-line">      <tt class="py-keyword">if</tt> <tt class="py-name">media_upload</tt><tt class="py-op">.</tt><tt id="link-208" class="py-name"><a title="googleapiclient.http.MediaIoBaseUpload.resumable
-googleapiclient.http.MediaUpload.resumable" class="py-name" href="#" onclick="return doclink('link-208', 'resumable', 'link-194');">resumable</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="L809"></a><tt class="py-lineno"> 809</tt>  <tt class="py-line">        <tt class="py-name">url</tt> <tt class="py-op">=</tt> <tt class="py-name">_add_query_parameter</tt><tt class="py-op">(</tt><tt class="py-name">url</tt><tt class="py-op">,</tt> <tt class="py-string">'uploadType'</tt><tt class="py-op">,</tt> <tt class="py-string">'resumable'</tt><tt class="py-op">)</tt> </tt>
-<a name="L810"></a><tt class="py-lineno"> 810</tt>  <tt class="py-line"> </tt>
-<a name="L811"></a><tt class="py-lineno"> 811</tt>  <tt class="py-line">      <tt class="py-keyword">if</tt> <tt class="py-name">media_upload</tt><tt class="py-op">.</tt><tt id="link-209" class="py-name"><a title="googleapiclient.http.MediaIoBaseUpload.resumable
-googleapiclient.http.MediaUpload.resumable" class="py-name" href="#" onclick="return doclink('link-209', 'resumable', 'link-194');">resumable</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="L812"></a><tt class="py-lineno"> 812</tt>  <tt class="py-line">        <tt class="py-comment"># This is all we need to do for resumable, if the body exists it gets</tt> </tt>
-<a name="L813"></a><tt class="py-lineno"> 813</tt>  <tt class="py-line">        <tt class="py-comment"># sent in the first request, otherwise an empty body is sent.</tt> </tt>
-<a name="L814"></a><tt class="py-lineno"> 814</tt>  <tt class="py-line">        <tt id="link-210" class="py-name"><a title="googleapiclient.http.MediaIoBaseUpload.resumable
-googleapiclient.http.MediaUpload.resumable" class="py-name" href="#" onclick="return doclink('link-210', 'resumable', 'link-194');">resumable</a></tt> <tt class="py-op">=</tt> <tt class="py-name">media_upload</tt> </tt>
-<a name="L815"></a><tt class="py-lineno"> 815</tt>  <tt class="py-line">      <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
-<a name="L816"></a><tt class="py-lineno"> 816</tt>  <tt class="py-line">        <tt class="py-comment"># A non-resumable upload</tt> </tt>
-<a name="L817"></a><tt class="py-lineno"> 817</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt id="link-211" class="py-name"><a title="googleapiclient.channel.Channel.body" class="py-name" href="#" onclick="return doclink('link-211', 'body', 'link-137');">body</a></tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
-<a name="L818"></a><tt class="py-lineno"> 818</tt>  <tt class="py-line">          <tt class="py-comment"># This is a simple media upload</tt> </tt>
-<a name="L819"></a><tt class="py-lineno"> 819</tt>  <tt class="py-line">          <tt class="py-name">headers</tt><tt class="py-op">[</tt><tt class="py-string">'content-type'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">media_upload</tt><tt class="py-op">.</tt><tt id="link-212" class="py-name"><a title="googleapiclient.http.MediaIoBaseUpload.mimetype
-googleapiclient.http.MediaUpload.mimetype" class="py-name" href="#" onclick="return doclink('link-212', 'mimetype', 'link-202');">mimetype</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-<a name="L820"></a><tt class="py-lineno"> 820</tt>  <tt class="py-line">          <tt id="link-213" class="py-name"><a title="googleapiclient.channel.Channel.body" class="py-name" href="#" onclick="return doclink('link-213', 'body', 'link-137');">body</a></tt> <tt class="py-op">=</tt> <tt class="py-name">media_upload</tt><tt class="py-op">.</tt><tt id="link-214" class="py-name" targets="Method googleapiclient.http.MediaIoBaseUpload.getbytes()=googleapiclient.http.MediaIoBaseUpload-class.html#getbytes,Method googleapiclient.http.MediaUpload.getbytes()=googleapiclient.http.MediaUpload-class.html#getbytes"><a title="googleapiclient.http.MediaIoBaseUpload.getbytes
-googleapiclient.http.MediaUpload.getbytes" class="py-name" href="#" onclick="return doclink('link-214', 'getbytes', 'link-214');">getbytes</a></tt><tt class="py-op">(</tt><tt class="py-number">0</tt><tt class="py-op">,</tt> <tt class="py-name">media_upload</tt><tt class="py-op">.</tt><tt id="link-215" class="py-name"><a title="googleapiclient.http.MediaIoBaseUpload.size
-googleapiclient.http.MediaUpload.size" class="py-name" href="#" onclick="return doclink('link-215', 'size', 'link-204');">size</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L821"></a><tt class="py-lineno"> 821</tt>  <tt class="py-line">          <tt class="py-name">url</tt> <tt class="py-op">=</tt> <tt class="py-name">_add_query_parameter</tt><tt class="py-op">(</tt><tt class="py-name">url</tt><tt class="py-op">,</tt> <tt class="py-string">'uploadType'</tt><tt class="py-op">,</tt> <tt class="py-string">'media'</tt><tt class="py-op">)</tt> </tt>
-<a name="L822"></a><tt class="py-lineno"> 822</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
-<a name="L823"></a><tt class="py-lineno"> 823</tt>  <tt class="py-line">          <tt class="py-comment"># This is a multipart/related upload.</tt> </tt>
-<a name="L824"></a><tt class="py-lineno"> 824</tt>  <tt class="py-line">          <tt class="py-name">msgRoot</tt> <tt class="py-op">=</tt> <tt class="py-name">MIMEMultipart</tt><tt class="py-op">(</tt><tt class="py-string">'related'</tt><tt class="py-op">)</tt> </tt>
-<a name="L825"></a><tt class="py-lineno"> 825</tt>  <tt class="py-line">          <tt class="py-comment"># msgRoot should not write out it's own headers</tt> </tt>
-<a name="L826"></a><tt class="py-lineno"> 826</tt>  <tt class="py-line">          <tt class="py-name">setattr</tt><tt class="py-op">(</tt><tt class="py-name">msgRoot</tt><tt class="py-op">,</tt> <tt class="py-string">'_write_headers'</tt><tt class="py-op">,</tt> <tt class="py-keyword">lambda</tt> <tt class="py-name">self</tt><tt class="py-op">:</tt> <tt class="py-name">None</tt><tt class="py-op">)</tt> </tt>
-<a name="L827"></a><tt class="py-lineno"> 827</tt>  <tt class="py-line"> </tt>
-<a name="L828"></a><tt class="py-lineno"> 828</tt>  <tt class="py-line">          <tt class="py-comment"># attach the body as one part</tt> </tt>
-<a name="L829"></a><tt class="py-lineno"> 829</tt>  <tt class="py-line">          <tt class="py-name">msg</tt> <tt class="py-op">=</tt> <tt class="py-name">MIMENonMultipart</tt><tt class="py-op">(</tt><tt class="py-op">*</tt><tt class="py-name">headers</tt><tt class="py-op">[</tt><tt class="py-string">'content-type'</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt class="py-name">split</tt><tt class="py-op">(</tt><tt class="py-string">'/'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L830"></a><tt class="py-lineno"> 830</tt>  <tt class="py-line">          <tt class="py-name">msg</tt><tt class="py-op">.</tt><tt class="py-name">set_payload</tt><tt class="py-op">(</tt><tt id="link-216" class="py-name"><a title="googleapiclient.channel.Channel.body" class="py-name" href="#" onclick="return doclink('link-216', 'body', 'link-137');">body</a></tt><tt class="py-op">)</tt> </tt>
-<a name="L831"></a><tt class="py-lineno"> 831</tt>  <tt class="py-line">          <tt class="py-name">msgRoot</tt><tt class="py-op">.</tt><tt class="py-name">attach</tt><tt class="py-op">(</tt><tt class="py-name">msg</tt><tt class="py-op">)</tt> </tt>
+googleapiclient.model.RawModel.accept" class="py-name" href="#" onclick="return doclink('link-206', 'accept', 'link-150');">accept</a></tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L798"></a><tt class="py-lineno"> 798</tt>  <tt class="py-line">          <tt class="py-keyword">raise</tt> <tt id="link-207" class="py-name"><a title="googleapiclient.errors.UnacceptableMimeTypeError" class="py-name" href="#" onclick="return doclink('link-207', 'UnacceptableMimeTypeError', 'link-15');">UnacceptableMimeTypeError</a></tt><tt class="py-op">(</tt><tt class="py-name">media_mime_type</tt><tt class="py-op">)</tt> </tt>
+<a name="L799"></a><tt class="py-lineno"> 799</tt>  <tt class="py-line">        <tt class="py-name">media_upload</tt> <tt class="py-op">=</tt> <tt id="link-208" class="py-name"><a title="googleapiclient.http.MediaFileUpload" class="py-name" href="#" onclick="return doclink('link-208', 'MediaFileUpload', 'link-36');">MediaFileUpload</a></tt><tt class="py-op">(</tt><tt class="py-name">media_filename</tt><tt class="py-op">,</tt> </tt>
+<a name="L800"></a><tt class="py-lineno"> 800</tt>  <tt class="py-line">                                       <tt id="link-209" class="py-name" targets="Method googleapiclient.http.MediaIoBaseUpload.mimetype()=googleapiclient.http.MediaIoBaseUpload-class.html#mimetype,Method googleapiclient.http.MediaUpload.mimetype()=googleapiclient.http.MediaUpload-class.html#mimetype"><a title="googleapiclient.http.MediaIoBaseUpload.mimetype
+googleapiclient.http.MediaUpload.mimetype" class="py-name" href="#" onclick="return doclink('link-209', 'mimetype', 'link-209');">mimetype</a></tt><tt class="py-op">=</tt><tt class="py-name">media_mime_type</tt><tt class="py-op">)</tt> </tt>
+<a name="L801"></a><tt class="py-lineno"> 801</tt>  <tt class="py-line">      <tt class="py-keyword">elif</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">media_filename</tt><tt class="py-op">,</tt> <tt id="link-210" class="py-name"><a title="googleapiclient.http.MediaUpload" class="py-name" href="#" onclick="return doclink('link-210', 'MediaUpload', 'link-39');">MediaUpload</a></tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L802"></a><tt class="py-lineno"> 802</tt>  <tt class="py-line">        <tt class="py-name">media_upload</tt> <tt class="py-op">=</tt> <tt class="py-name">media_filename</tt> </tt>
+<a name="L803"></a><tt class="py-lineno"> 803</tt>  <tt class="py-line">      <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L804"></a><tt class="py-lineno"> 804</tt>  <tt class="py-line">        <tt class="py-keyword">raise</tt> <tt class="py-name">TypeError</tt><tt class="py-op">(</tt><tt class="py-string">'media_filename must be str or MediaUpload.'</tt><tt class="py-op">)</tt> </tt>
+<a name="L805"></a><tt class="py-lineno"> 805</tt>  <tt class="py-line"> </tt>
+<a name="L806"></a><tt class="py-lineno"> 806</tt>  <tt class="py-line">      <tt class="py-comment"># Check the maxSize</tt> </tt>
+<a name="L807"></a><tt class="py-lineno"> 807</tt>  <tt class="py-line">      <tt class="py-keyword">if</tt> <tt class="py-name">media_upload</tt><tt class="py-op">.</tt><tt id="link-211" class="py-name" targets="Method googleapiclient.http.MediaIoBaseUpload.size()=googleapiclient.http.MediaIoBaseUpload-class.html#size,Method googleapiclient.http.MediaUpload.size()=googleapiclient.http.MediaUpload-class.html#size"><a title="googleapiclient.http.MediaIoBaseUpload.size
+googleapiclient.http.MediaUpload.size" class="py-name" href="#" onclick="return doclink('link-211', 'size', 'link-211');">size</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt> <tt class="py-keyword">and</tt> <tt class="py-name">media_upload</tt><tt class="py-op">.</tt><tt id="link-212" class="py-name"><a title="googleapiclient.http.MediaIoBaseUpload.size
+googleapiclient.http.MediaUpload.size" class="py-name" href="#" onclick="return doclink('link-212', 'size', 'link-211');">size</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-op">&gt;</tt> <tt class="py-name">maxSize</tt> <tt class="py-op">&gt;</tt> <tt class="py-number">0</tt><tt class="py-op">:</tt> </tt>
+<a name="L808"></a><tt class="py-lineno"> 808</tt>  <tt class="py-line">        <tt class="py-keyword">raise</tt> <tt id="link-213" class="py-name"><a title="googleapiclient.errors.MediaUploadSizeError" class="py-name" href="#" onclick="return doclink('link-213', 'MediaUploadSizeError', 'link-12');">MediaUploadSizeError</a></tt><tt class="py-op">(</tt><tt class="py-string">"Media larger than: %s"</tt> <tt class="py-op">%</tt> <tt class="py-name">maxSize</tt><tt class="py-op">)</tt> </tt>
+<a name="L809"></a><tt class="py-lineno"> 809</tt>  <tt class="py-line"> </tt>
+<a name="L810"></a><tt class="py-lineno"> 810</tt>  <tt class="py-line">      <tt class="py-comment"># Use the media path uri for media uploads</tt> </tt>
+<a name="L811"></a><tt class="py-lineno"> 811</tt>  <tt class="py-line">      <tt class="py-name">expanded_url</tt> <tt class="py-op">=</tt> <tt class="py-name">uritemplate</tt><tt class="py-op">.</tt><tt class="py-name">expand</tt><tt class="py-op">(</tt><tt class="py-name">mediaPathUrl</tt><tt class="py-op">,</tt> <tt class="py-name">params</tt><tt class="py-op">)</tt> </tt>
+<a name="L812"></a><tt class="py-lineno"> 812</tt>  <tt class="py-line">      <tt class="py-name">url</tt> <tt class="py-op">=</tt> <tt id="link-214" class="py-name"><a title="googleapiclient.discovery._urljoin" class="py-name" href="#" onclick="return doclink('link-214', '_urljoin', 'link-200');">_urljoin</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_baseUrl</tt><tt class="py-op">,</tt> <tt class="py-name">expanded_url</tt> <tt class="py-op">+</tt> <tt class="py-name">query</tt><tt class="py-op">)</tt> </tt>
+<a name="L813"></a><tt class="py-lineno"> 813</tt>  <tt class="py-line">      <tt class="py-keyword">if</tt> <tt class="py-name">media_upload</tt><tt class="py-op">.</tt><tt id="link-215" class="py-name"><a title="googleapiclient.http.MediaIoBaseUpload.resumable
+googleapiclient.http.MediaUpload.resumable" class="py-name" href="#" onclick="return doclink('link-215', 'resumable', 'link-201');">resumable</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L814"></a><tt class="py-lineno"> 814</tt>  <tt class="py-line">        <tt class="py-name">url</tt> <tt class="py-op">=</tt> <tt class="py-name">_add_query_parameter</tt><tt class="py-op">(</tt><tt class="py-name">url</tt><tt class="py-op">,</tt> <tt class="py-string">'uploadType'</tt><tt class="py-op">,</tt> <tt class="py-string">'resumable'</tt><tt class="py-op">)</tt> </tt>
+<a name="L815"></a><tt class="py-lineno"> 815</tt>  <tt class="py-line"> </tt>
+<a name="L816"></a><tt class="py-lineno"> 816</tt>  <tt class="py-line">      <tt class="py-keyword">if</tt> <tt class="py-name">media_upload</tt><tt class="py-op">.</tt><tt id="link-216" class="py-name"><a title="googleapiclient.http.MediaIoBaseUpload.resumable
+googleapiclient.http.MediaUpload.resumable" class="py-name" href="#" onclick="return doclink('link-216', 'resumable', 'link-201');">resumable</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L817"></a><tt class="py-lineno"> 817</tt>  <tt class="py-line">        <tt class="py-comment"># This is all we need to do for resumable, if the body exists it gets</tt> </tt>
+<a name="L818"></a><tt class="py-lineno"> 818</tt>  <tt class="py-line">        <tt class="py-comment"># sent in the first request, otherwise an empty body is sent.</tt> </tt>
+<a name="L819"></a><tt class="py-lineno"> 819</tt>  <tt class="py-line">        <tt id="link-217" class="py-name"><a title="googleapiclient.http.MediaIoBaseUpload.resumable
+googleapiclient.http.MediaUpload.resumable" class="py-name" href="#" onclick="return doclink('link-217', 'resumable', 'link-201');">resumable</a></tt> <tt class="py-op">=</tt> <tt class="py-name">media_upload</tt> </tt>
+<a name="L820"></a><tt class="py-lineno"> 820</tt>  <tt class="py-line">      <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L821"></a><tt class="py-lineno"> 821</tt>  <tt class="py-line">        <tt class="py-comment"># A non-resumable upload</tt> </tt>
+<a name="L822"></a><tt class="py-lineno"> 822</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt id="link-218" class="py-name"><a title="googleapiclient.channel.Channel.body" class="py-name" href="#" onclick="return doclink('link-218', 'body', 'link-144');">body</a></tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L823"></a><tt class="py-lineno"> 823</tt>  <tt class="py-line">          <tt class="py-comment"># This is a simple media upload</tt> </tt>
+<a name="L824"></a><tt class="py-lineno"> 824</tt>  <tt class="py-line">          <tt class="py-name">headers</tt><tt class="py-op">[</tt><tt class="py-string">'content-type'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">media_upload</tt><tt class="py-op">.</tt><tt id="link-219" class="py-name"><a title="googleapiclient.http.MediaIoBaseUpload.mimetype
+googleapiclient.http.MediaUpload.mimetype" class="py-name" href="#" onclick="return doclink('link-219', 'mimetype', 'link-209');">mimetype</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L825"></a><tt class="py-lineno"> 825</tt>  <tt class="py-line">          <tt id="link-220" class="py-name"><a title="googleapiclient.channel.Channel.body" class="py-name" href="#" onclick="return doclink('link-220', 'body', 'link-144');">body</a></tt> <tt class="py-op">=</tt> <tt class="py-name">media_upload</tt><tt class="py-op">.</tt><tt id="link-221" class="py-name" targets="Method googleapiclient.http.MediaIoBaseUpload.getbytes()=googleapiclient.http.MediaIoBaseUpload-class.html#getbytes,Method googleapiclient.http.MediaUpload.getbytes()=googleapiclient.http.MediaUpload-class.html#getbytes"><a title="googleapiclient.http.MediaIoBaseUpload.getbytes
+googleapiclient.http.MediaUpload.getbytes" class="py-name" href="#" onclick="return doclink('link-221', 'getbytes', 'link-221');">getbytes</a></tt><tt class="py-op">(</tt><tt class="py-number">0</tt><tt class="py-op">,</tt> <tt class="py-name">media_upload</tt><tt class="py-op">.</tt><tt id="link-222" class="py-name"><a title="googleapiclient.http.MediaIoBaseUpload.size
+googleapiclient.http.MediaUpload.size" class="py-name" href="#" onclick="return doclink('link-222', 'size', 'link-211');">size</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L826"></a><tt class="py-lineno"> 826</tt>  <tt class="py-line">          <tt class="py-name">url</tt> <tt class="py-op">=</tt> <tt class="py-name">_add_query_parameter</tt><tt class="py-op">(</tt><tt class="py-name">url</tt><tt class="py-op">,</tt> <tt class="py-string">'uploadType'</tt><tt class="py-op">,</tt> <tt class="py-string">'media'</tt><tt class="py-op">)</tt> </tt>
+<a name="L827"></a><tt class="py-lineno"> 827</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L828"></a><tt class="py-lineno"> 828</tt>  <tt class="py-line">          <tt class="py-comment"># This is a multipart/related upload.</tt> </tt>
+<a name="L829"></a><tt class="py-lineno"> 829</tt>  <tt class="py-line">          <tt class="py-name">msgRoot</tt> <tt class="py-op">=</tt> <tt class="py-name">MIMEMultipart</tt><tt class="py-op">(</tt><tt class="py-string">'related'</tt><tt class="py-op">)</tt> </tt>
+<a name="L830"></a><tt class="py-lineno"> 830</tt>  <tt class="py-line">          <tt class="py-comment"># msgRoot should not write out it's own headers</tt> </tt>
+<a name="L831"></a><tt class="py-lineno"> 831</tt>  <tt class="py-line">          <tt class="py-name">setattr</tt><tt class="py-op">(</tt><tt class="py-name">msgRoot</tt><tt class="py-op">,</tt> <tt class="py-string">'_write_headers'</tt><tt class="py-op">,</tt> <tt class="py-keyword">lambda</tt> <tt class="py-name">self</tt><tt class="py-op">:</tt> <tt class="py-name">None</tt><tt class="py-op">)</tt> </tt>
 <a name="L832"></a><tt class="py-lineno"> 832</tt>  <tt class="py-line"> </tt>
-<a name="L833"></a><tt class="py-lineno"> 833</tt>  <tt class="py-line">          <tt class="py-comment"># attach the media as the second part</tt> </tt>
-<a name="L834"></a><tt class="py-lineno"> 834</tt>  <tt class="py-line">          <tt class="py-name">msg</tt> <tt class="py-op">=</tt> <tt class="py-name">MIMENonMultipart</tt><tt class="py-op">(</tt><tt class="py-op">*</tt><tt class="py-name">media_upload</tt><tt class="py-op">.</tt><tt id="link-217" class="py-name"><a title="googleapiclient.http.MediaIoBaseUpload.mimetype
-googleapiclient.http.MediaUpload.mimetype" class="py-name" href="#" onclick="return doclink('link-217', 'mimetype', 'link-202');">mimetype</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">split</tt><tt class="py-op">(</tt><tt class="py-string">'/'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L835"></a><tt class="py-lineno"> 835</tt>  <tt class="py-line">          <tt class="py-name">msg</tt><tt class="py-op">[</tt><tt class="py-string">'Content-Transfer-Encoding'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-string">'binary'</tt> </tt>
-<a name="L836"></a><tt class="py-lineno"> 836</tt>  <tt class="py-line"> </tt>
-<a name="L837"></a><tt class="py-lineno"> 837</tt>  <tt class="py-line">          <tt class="py-name">payload</tt> <tt class="py-op">=</tt> <tt class="py-name">media_upload</tt><tt class="py-op">.</tt><tt id="link-218" class="py-name"><a title="googleapiclient.http.MediaIoBaseUpload.getbytes
-googleapiclient.http.MediaUpload.getbytes" class="py-name" href="#" onclick="return doclink('link-218', 'getbytes', 'link-214');">getbytes</a></tt><tt class="py-op">(</tt><tt class="py-number">0</tt><tt class="py-op">,</tt> <tt class="py-name">media_upload</tt><tt class="py-op">.</tt><tt id="link-219" class="py-name"><a title="googleapiclient.http.MediaIoBaseUpload.size
-googleapiclient.http.MediaUpload.size" class="py-name" href="#" onclick="return doclink('link-219', 'size', 'link-204');">size</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L838"></a><tt class="py-lineno"> 838</tt>  <tt class="py-line">          <tt class="py-name">msg</tt><tt class="py-op">.</tt><tt class="py-name">set_payload</tt><tt class="py-op">(</tt><tt class="py-name">payload</tt><tt class="py-op">)</tt> </tt>
-<a name="L839"></a><tt class="py-lineno"> 839</tt>  <tt class="py-line">          <tt class="py-name">msgRoot</tt><tt class="py-op">.</tt><tt class="py-name">attach</tt><tt class="py-op">(</tt><tt class="py-name">msg</tt><tt class="py-op">)</tt> </tt>
-<a name="L840"></a><tt class="py-lineno"> 840</tt>  <tt class="py-line">          <tt class="py-comment"># encode the body: note that we can't use `as_string`, because</tt> </tt>
-<a name="L841"></a><tt class="py-lineno"> 841</tt>  <tt class="py-line">          <tt class="py-comment"># it plays games with `From ` lines.</tt> </tt>
-<a name="L842"></a><tt class="py-lineno"> 842</tt>  <tt class="py-line">          <tt class="py-name">fp</tt> <tt class="py-op">=</tt> <tt class="py-name">BytesIO</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-<a name="L843"></a><tt class="py-lineno"> 843</tt>  <tt class="py-line">          <tt class="py-name">g</tt> <tt class="py-op">=</tt> <tt id="link-220" class="py-name" targets="Class googleapiclient.discovery._BytesGenerator=googleapiclient.discovery._BytesGenerator-class.html"><a title="googleapiclient.discovery._BytesGenerator" class="py-name" href="#" onclick="return doclink('link-220', '_BytesGenerator', 'link-220');">_BytesGenerator</a></tt><tt class="py-op">(</tt><tt class="py-name">fp</tt><tt class="py-op">,</tt> <tt class="py-name">mangle_from_</tt><tt class="py-op">=</tt><tt class="py-name">False</tt><tt class="py-op">)</tt> </tt>
-<a name="L844"></a><tt class="py-lineno"> 844</tt>  <tt class="py-line">          <tt class="py-name">g</tt><tt class="py-op">.</tt><tt class="py-name">flatten</tt><tt class="py-op">(</tt><tt class="py-name">msgRoot</tt><tt class="py-op">,</tt> <tt class="py-name">unixfrom</tt><tt class="py-op">=</tt><tt class="py-name">False</tt><tt class="py-op">)</tt> </tt>
-<a name="L845"></a><tt class="py-lineno"> 845</tt>  <tt class="py-line">          <tt id="link-221" class="py-name"><a title="googleapiclient.channel.Channel.body" class="py-name" href="#" onclick="return doclink('link-221', 'body', 'link-137');">body</a></tt> <tt class="py-op">=</tt> <tt class="py-name">fp</tt><tt class="py-op">.</tt><tt class="py-name">getvalue</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-<a name="L846"></a><tt class="py-lineno"> 846</tt>  <tt class="py-line"> </tt>
-<a name="L847"></a><tt class="py-lineno"> 847</tt>  <tt class="py-line">          <tt class="py-name">multipart_boundary</tt> <tt class="py-op">=</tt> <tt class="py-name">msgRoot</tt><tt class="py-op">.</tt><tt class="py-name">get_boundary</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-<a name="L848"></a><tt class="py-lineno"> 848</tt>  <tt class="py-line">          <tt class="py-name">headers</tt><tt class="py-op">[</tt><tt class="py-string">'content-type'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-string">'multipart/related; '</tt> </tt>
-<a name="L849"></a><tt class="py-lineno"> 849</tt>  <tt class="py-line">                                     <tt class="py-string">'boundary="%s"'</tt><tt class="py-op">)</tt> <tt class="py-op">%</tt> <tt class="py-name">multipart_boundary</tt> </tt>
-<a name="L850"></a><tt class="py-lineno"> 850</tt>  <tt class="py-line">          <tt class="py-name">url</tt> <tt class="py-op">=</tt> <tt class="py-name">_add_query_parameter</tt><tt class="py-op">(</tt><tt class="py-name">url</tt><tt class="py-op">,</tt> <tt class="py-string">'uploadType'</tt><tt class="py-op">,</tt> <tt class="py-string">'multipart'</tt><tt class="py-op">)</tt> </tt>
+<a name="L833"></a><tt class="py-lineno"> 833</tt>  <tt class="py-line">          <tt class="py-comment"># attach the body as one part</tt> </tt>
+<a name="L834"></a><tt class="py-lineno"> 834</tt>  <tt class="py-line">          <tt class="py-name">msg</tt> <tt class="py-op">=</tt> <tt class="py-name">MIMENonMultipart</tt><tt class="py-op">(</tt><tt class="py-op">*</tt><tt class="py-name">headers</tt><tt class="py-op">[</tt><tt class="py-string">'content-type'</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt class="py-name">split</tt><tt class="py-op">(</tt><tt class="py-string">'/'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L835"></a><tt class="py-lineno"> 835</tt>  <tt class="py-line">          <tt class="py-name">msg</tt><tt class="py-op">.</tt><tt class="py-name">set_payload</tt><tt class="py-op">(</tt><tt id="link-223" class="py-name"><a title="googleapiclient.channel.Channel.body" class="py-name" href="#" onclick="return doclink('link-223', 'body', 'link-144');">body</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L836"></a><tt class="py-lineno"> 836</tt>  <tt class="py-line">          <tt class="py-name">msgRoot</tt><tt class="py-op">.</tt><tt class="py-name">attach</tt><tt class="py-op">(</tt><tt class="py-name">msg</tt><tt class="py-op">)</tt> </tt>
+<a name="L837"></a><tt class="py-lineno"> 837</tt>  <tt class="py-line"> </tt>
+<a name="L838"></a><tt class="py-lineno"> 838</tt>  <tt class="py-line">          <tt class="py-comment"># attach the media as the second part</tt> </tt>
+<a name="L839"></a><tt class="py-lineno"> 839</tt>  <tt class="py-line">          <tt class="py-name">msg</tt> <tt class="py-op">=</tt> <tt class="py-name">MIMENonMultipart</tt><tt class="py-op">(</tt><tt class="py-op">*</tt><tt class="py-name">media_upload</tt><tt class="py-op">.</tt><tt id="link-224" class="py-name"><a title="googleapiclient.http.MediaIoBaseUpload.mimetype
+googleapiclient.http.MediaUpload.mimetype" class="py-name" href="#" onclick="return doclink('link-224', 'mimetype', 'link-209');">mimetype</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">split</tt><tt class="py-op">(</tt><tt class="py-string">'/'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L840"></a><tt class="py-lineno"> 840</tt>  <tt class="py-line">          <tt class="py-name">msg</tt><tt class="py-op">[</tt><tt class="py-string">'Content-Transfer-Encoding'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-string">'binary'</tt> </tt>
+<a name="L841"></a><tt class="py-lineno"> 841</tt>  <tt class="py-line"> </tt>
+<a name="L842"></a><tt class="py-lineno"> 842</tt>  <tt class="py-line">          <tt class="py-name">payload</tt> <tt class="py-op">=</tt> <tt class="py-name">media_upload</tt><tt class="py-op">.</tt><tt id="link-225" class="py-name"><a title="googleapiclient.http.MediaIoBaseUpload.getbytes
+googleapiclient.http.MediaUpload.getbytes" class="py-name" href="#" onclick="return doclink('link-225', 'getbytes', 'link-221');">getbytes</a></tt><tt class="py-op">(</tt><tt class="py-number">0</tt><tt class="py-op">,</tt> <tt class="py-name">media_upload</tt><tt class="py-op">.</tt><tt id="link-226" class="py-name"><a title="googleapiclient.http.MediaIoBaseUpload.size
+googleapiclient.http.MediaUpload.size" class="py-name" href="#" onclick="return doclink('link-226', 'size', 'link-211');">size</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L843"></a><tt class="py-lineno"> 843</tt>  <tt class="py-line">          <tt class="py-name">msg</tt><tt class="py-op">.</tt><tt class="py-name">set_payload</tt><tt class="py-op">(</tt><tt class="py-name">payload</tt><tt class="py-op">)</tt> </tt>
+<a name="L844"></a><tt class="py-lineno"> 844</tt>  <tt class="py-line">          <tt class="py-name">msgRoot</tt><tt class="py-op">.</tt><tt class="py-name">attach</tt><tt class="py-op">(</tt><tt class="py-name">msg</tt><tt class="py-op">)</tt> </tt>
+<a name="L845"></a><tt class="py-lineno"> 845</tt>  <tt class="py-line">          <tt class="py-comment"># encode the body: note that we can't use `as_string`, because</tt> </tt>
+<a name="L846"></a><tt class="py-lineno"> 846</tt>  <tt class="py-line">          <tt class="py-comment"># it plays games with `From ` lines.</tt> </tt>
+<a name="L847"></a><tt class="py-lineno"> 847</tt>  <tt class="py-line">          <tt class="py-name">fp</tt> <tt class="py-op">=</tt> <tt class="py-name">BytesIO</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L848"></a><tt class="py-lineno"> 848</tt>  <tt class="py-line">          <tt class="py-name">g</tt> <tt class="py-op">=</tt> <tt id="link-227" class="py-name" targets="Class googleapiclient.discovery._BytesGenerator=googleapiclient.discovery._BytesGenerator-class.html"><a title="googleapiclient.discovery._BytesGenerator" class="py-name" href="#" onclick="return doclink('link-227', '_BytesGenerator', 'link-227');">_BytesGenerator</a></tt><tt class="py-op">(</tt><tt class="py-name">fp</tt><tt class="py-op">,</tt> <tt class="py-name">mangle_from_</tt><tt class="py-op">=</tt><tt class="py-name">False</tt><tt class="py-op">)</tt> </tt>
+<a name="L849"></a><tt class="py-lineno"> 849</tt>  <tt class="py-line">          <tt class="py-name">g</tt><tt class="py-op">.</tt><tt class="py-name">flatten</tt><tt class="py-op">(</tt><tt class="py-name">msgRoot</tt><tt class="py-op">,</tt> <tt class="py-name">unixfrom</tt><tt class="py-op">=</tt><tt class="py-name">False</tt><tt class="py-op">)</tt> </tt>
+<a name="L850"></a><tt class="py-lineno"> 850</tt>  <tt class="py-line">          <tt id="link-228" class="py-name"><a title="googleapiclient.channel.Channel.body" class="py-name" href="#" onclick="return doclink('link-228', 'body', 'link-144');">body</a></tt> <tt class="py-op">=</tt> <tt class="py-name">fp</tt><tt class="py-op">.</tt><tt class="py-name">getvalue</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
 <a name="L851"></a><tt class="py-lineno"> 851</tt>  <tt class="py-line"> </tt>
-<a name="L852"></a><tt class="py-lineno"> 852</tt>  <tt class="py-line">    <tt id="link-222" class="py-name"><a title="googleapiclient.discovery.logger" class="py-name" href="#" onclick="return doclink('link-222', 'logger', 'link-50');">logger</a></tt><tt class="py-op">.</tt><tt class="py-name">info</tt><tt class="py-op">(</tt><tt class="py-string">'URL being requested: %s %s'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">httpMethod</tt><tt class="py-op">,</tt><tt class="py-name">url</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L853"></a><tt class="py-lineno"> 853</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_requestBuilder</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_http</tt><tt class="py-op">,</tt> </tt>
-<a name="L854"></a><tt class="py-lineno"> 854</tt>  <tt class="py-line">                                <tt id="link-223" class="py-name"><a title="googleapiclient.model" class="py-name" href="#" onclick="return doclink('link-223', 'model', 'link-39');">model</a></tt><tt class="py-op">.</tt><tt id="link-224" class="py-name" targets="Method googleapiclient.model.BaseModel.response()=googleapiclient.model.BaseModel-class.html#response,Method googleapiclient.model.Model.response()=googleapiclient.model.Model-class.html#response"><a title="googleapiclient.model.BaseModel.response
-googleapiclient.model.Model.response" class="py-name" href="#" onclick="return doclink('link-224', 'response', 'link-224');">response</a></tt><tt class="py-op">,</tt> </tt>
-<a name="L855"></a><tt class="py-lineno"> 855</tt>  <tt class="py-line">                                <tt class="py-name">url</tt><tt class="py-op">,</tt> </tt>
-<a name="L856"></a><tt class="py-lineno"> 856</tt>  <tt class="py-line">                                <tt class="py-name">method</tt><tt class="py-op">=</tt><tt class="py-name">httpMethod</tt><tt class="py-op">,</tt> </tt>
-<a name="L857"></a><tt class="py-lineno"> 857</tt>  <tt class="py-line">                                <tt id="link-225" class="py-name"><a title="googleapiclient.channel.Channel.body" class="py-name" href="#" onclick="return doclink('link-225', 'body', 'link-137');">body</a></tt><tt class="py-op">=</tt><tt id="link-226" class="py-name"><a title="googleapiclient.channel.Channel.body" class="py-name" href="#" onclick="return doclink('link-226', 'body', 'link-137');">body</a></tt><tt class="py-op">,</tt> </tt>
-<a name="L858"></a><tt class="py-lineno"> 858</tt>  <tt class="py-line">                                <tt class="py-name">headers</tt><tt class="py-op">=</tt><tt class="py-name">headers</tt><tt class="py-op">,</tt> </tt>
-<a name="L859"></a><tt class="py-lineno"> 859</tt>  <tt class="py-line">                                <tt class="py-name">methodId</tt><tt class="py-op">=</tt><tt class="py-name">methodId</tt><tt class="py-op">,</tt> </tt>
-<a name="L860"></a><tt class="py-lineno"> 860</tt>  <tt class="py-line">                                <tt id="link-227" class="py-name"><a title="googleapiclient.http.MediaIoBaseUpload.resumable
-googleapiclient.http.MediaUpload.resumable" class="py-name" href="#" onclick="return doclink('link-227', 'resumable', 'link-194');">resumable</a></tt><tt class="py-op">=</tt><tt id="link-228" class="py-name"><a title="googleapiclient.http.MediaIoBaseUpload.resumable
-googleapiclient.http.MediaUpload.resumable" class="py-name" href="#" onclick="return doclink('link-228', 'resumable', 'link-194');">resumable</a></tt><tt class="py-op">)</tt> </tt>
-</div><a name="L861"></a><tt class="py-lineno"> 861</tt>  <tt class="py-line"> </tt>
-<a name="L862"></a><tt class="py-lineno"> 862</tt>  <tt class="py-line">  <tt class="py-name">docs</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-name">methodDesc</tt><tt class="py-op">.</tt><tt id="link-229" class="py-name"><a title="googleapiclient.discovery_cache.appengine_memcache.Cache.get
+<a name="L852"></a><tt class="py-lineno"> 852</tt>  <tt class="py-line">          <tt class="py-name">multipart_boundary</tt> <tt class="py-op">=</tt> <tt class="py-name">msgRoot</tt><tt class="py-op">.</tt><tt class="py-name">get_boundary</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L853"></a><tt class="py-lineno"> 853</tt>  <tt class="py-line">          <tt class="py-name">headers</tt><tt class="py-op">[</tt><tt class="py-string">'content-type'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-string">'multipart/related; '</tt> </tt>
+<a name="L854"></a><tt class="py-lineno"> 854</tt>  <tt class="py-line">                                     <tt class="py-string">'boundary="%s"'</tt><tt class="py-op">)</tt> <tt class="py-op">%</tt> <tt class="py-name">multipart_boundary</tt> </tt>
+<a name="L855"></a><tt class="py-lineno"> 855</tt>  <tt class="py-line">          <tt class="py-name">url</tt> <tt class="py-op">=</tt> <tt class="py-name">_add_query_parameter</tt><tt class="py-op">(</tt><tt class="py-name">url</tt><tt class="py-op">,</tt> <tt class="py-string">'uploadType'</tt><tt class="py-op">,</tt> <tt class="py-string">'multipart'</tt><tt class="py-op">)</tt> </tt>
+<a name="L856"></a><tt class="py-lineno"> 856</tt>  <tt class="py-line"> </tt>
+<a name="L857"></a><tt class="py-lineno"> 857</tt>  <tt class="py-line">    <tt id="link-229" class="py-name"><a title="googleapiclient.discovery.logger" class="py-name" href="#" onclick="return doclink('link-229', 'logger', 'link-52');">logger</a></tt><tt class="py-op">.</tt><tt class="py-name">info</tt><tt class="py-op">(</tt><tt class="py-string">'URL being requested: %s %s'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">httpMethod</tt><tt class="py-op">,</tt><tt class="py-name">url</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L858"></a><tt class="py-lineno"> 858</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_requestBuilder</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_http</tt><tt class="py-op">,</tt> </tt>
+<a name="L859"></a><tt class="py-lineno"> 859</tt>  <tt class="py-line">                                <tt id="link-230" class="py-name"><a title="googleapiclient.model" class="py-name" href="#" onclick="return doclink('link-230', 'model', 'link-41');">model</a></tt><tt class="py-op">.</tt><tt id="link-231" class="py-name" targets="Method googleapiclient.model.BaseModel.response()=googleapiclient.model.BaseModel-class.html#response,Method googleapiclient.model.Model.response()=googleapiclient.model.Model-class.html#response"><a title="googleapiclient.model.BaseModel.response
+googleapiclient.model.Model.response" class="py-name" href="#" onclick="return doclink('link-231', 'response', 'link-231');">response</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L860"></a><tt class="py-lineno"> 860</tt>  <tt class="py-line">                                <tt class="py-name">url</tt><tt class="py-op">,</tt> </tt>
+<a name="L861"></a><tt class="py-lineno"> 861</tt>  <tt class="py-line">                                <tt class="py-name">method</tt><tt class="py-op">=</tt><tt class="py-name">httpMethod</tt><tt class="py-op">,</tt> </tt>
+<a name="L862"></a><tt class="py-lineno"> 862</tt>  <tt class="py-line">                                <tt id="link-232" class="py-name"><a title="googleapiclient.channel.Channel.body" class="py-name" href="#" onclick="return doclink('link-232', 'body', 'link-144');">body</a></tt><tt class="py-op">=</tt><tt id="link-233" class="py-name"><a title="googleapiclient.channel.Channel.body" class="py-name" href="#" onclick="return doclink('link-233', 'body', 'link-144');">body</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L863"></a><tt class="py-lineno"> 863</tt>  <tt class="py-line">                                <tt class="py-name">headers</tt><tt class="py-op">=</tt><tt class="py-name">headers</tt><tt class="py-op">,</tt> </tt>
+<a name="L864"></a><tt class="py-lineno"> 864</tt>  <tt class="py-line">                                <tt class="py-name">methodId</tt><tt class="py-op">=</tt><tt class="py-name">methodId</tt><tt class="py-op">,</tt> </tt>
+<a name="L865"></a><tt class="py-lineno"> 865</tt>  <tt class="py-line">                                <tt id="link-234" class="py-name"><a title="googleapiclient.http.MediaIoBaseUpload.resumable
+googleapiclient.http.MediaUpload.resumable" class="py-name" href="#" onclick="return doclink('link-234', 'resumable', 'link-201');">resumable</a></tt><tt class="py-op">=</tt><tt id="link-235" class="py-name"><a title="googleapiclient.http.MediaIoBaseUpload.resumable
+googleapiclient.http.MediaUpload.resumable" class="py-name" href="#" onclick="return doclink('link-235', 'resumable', 'link-201');">resumable</a></tt><tt class="py-op">)</tt> </tt>
+</div><a name="L866"></a><tt class="py-lineno"> 866</tt>  <tt class="py-line"> </tt>
+<a name="L867"></a><tt class="py-lineno"> 867</tt>  <tt class="py-line">  <tt class="py-name">docs</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-name">methodDesc</tt><tt class="py-op">.</tt><tt id="link-236" class="py-name"><a title="googleapiclient.discovery_cache.appengine_memcache.Cache.get
 googleapiclient.discovery_cache.base.Cache.get
 googleapiclient.discovery_cache.file_cache.Cache.get
-googleapiclient.schema.Schemas.get" class="py-name" href="#" onclick="return doclink('link-229', 'get', 'link-93');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">'description'</tt><tt class="py-op">,</tt> <tt id="link-230" class="py-name"><a title="googleapiclient.discovery.DEFAULT_METHOD_DOC" class="py-name" href="#" onclick="return doclink('link-230', 'DEFAULT_METHOD_DOC', 'link-57');">DEFAULT_METHOD_DOC</a></tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-string">'\n\n'</tt><tt class="py-op">]</tt> </tt>
-<a name="L863"></a><tt class="py-lineno"> 863</tt>  <tt class="py-line">  <tt class="py-keyword">if</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">parameters</tt><tt class="py-op">.</tt><tt class="py-name">argmap</tt><tt class="py-op">)</tt> <tt class="py-op">&gt;</tt> <tt class="py-number">0</tt><tt class="py-op">:</tt> </tt>
-<a name="L864"></a><tt class="py-lineno"> 864</tt>  <tt class="py-line">    <tt class="py-name">docs</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-string">'Args:\n'</tt><tt class="py-op">)</tt> </tt>
-<a name="L865"></a><tt class="py-lineno"> 865</tt>  <tt class="py-line"> </tt>
-<a name="L866"></a><tt class="py-lineno"> 866</tt>  <tt class="py-line">  <tt class="py-comment"># Skip undocumented params and params common to all methods.</tt> </tt>
-<a name="L867"></a><tt class="py-lineno"> 867</tt>  <tt class="py-line">  <tt class="py-name">skip_parameters</tt> <tt class="py-op">=</tt> <tt class="py-name">list</tt><tt class="py-op">(</tt><tt class="py-name">rootDesc</tt><tt class="py-op">.</tt><tt id="link-231" class="py-name"><a title="googleapiclient.discovery_cache.appengine_memcache.Cache.get
+googleapiclient.schema.Schemas.get" class="py-name" href="#" onclick="return doclink('link-236', 'get', 'link-94');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">'description'</tt><tt class="py-op">,</tt> <tt id="link-237" class="py-name"><a title="googleapiclient.discovery.DEFAULT_METHOD_DOC" class="py-name" href="#" onclick="return doclink('link-237', 'DEFAULT_METHOD_DOC', 'link-59');">DEFAULT_METHOD_DOC</a></tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-string">'\n\n'</tt><tt class="py-op">]</tt> </tt>
+<a name="L868"></a><tt class="py-lineno"> 868</tt>  <tt class="py-line">  <tt class="py-keyword">if</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">parameters</tt><tt class="py-op">.</tt><tt class="py-name">argmap</tt><tt class="py-op">)</tt> <tt class="py-op">&gt;</tt> <tt class="py-number">0</tt><tt class="py-op">:</tt> </tt>
+<a name="L869"></a><tt class="py-lineno"> 869</tt>  <tt class="py-line">    <tt class="py-name">docs</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-string">'Args:\n'</tt><tt class="py-op">)</tt> </tt>
+<a name="L870"></a><tt class="py-lineno"> 870</tt>  <tt class="py-line"> </tt>
+<a name="L871"></a><tt class="py-lineno"> 871</tt>  <tt class="py-line">  <tt class="py-comment"># Skip undocumented params and params common to all methods.</tt> </tt>
+<a name="L872"></a><tt class="py-lineno"> 872</tt>  <tt class="py-line">  <tt class="py-name">skip_parameters</tt> <tt class="py-op">=</tt> <tt class="py-name">list</tt><tt class="py-op">(</tt><tt class="py-name">rootDesc</tt><tt class="py-op">.</tt><tt id="link-238" class="py-name"><a title="googleapiclient.discovery_cache.appengine_memcache.Cache.get
 googleapiclient.discovery_cache.base.Cache.get
 googleapiclient.discovery_cache.file_cache.Cache.get
-googleapiclient.schema.Schemas.get" class="py-name" href="#" onclick="return doclink('link-231', 'get', 'link-93');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">'parameters'</tt><tt class="py-op">,</tt> <tt class="py-op">{</tt><tt class="py-op">}</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">keys</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L868"></a><tt class="py-lineno"> 868</tt>  <tt class="py-line">  <tt class="py-name">skip_parameters</tt><tt class="py-op">.</tt><tt class="py-name">extend</tt><tt class="py-op">(</tt><tt id="link-232" class="py-name"><a title="googleapiclient.discovery.STACK_QUERY_PARAMETERS" class="py-name" href="#" onclick="return doclink('link-232', 'STACK_QUERY_PARAMETERS', 'link-63');">STACK_QUERY_PARAMETERS</a></tt><tt class="py-op">)</tt> </tt>
-<a name="L869"></a><tt class="py-lineno"> 869</tt>  <tt class="py-line"> </tt>
-<a name="L870"></a><tt class="py-lineno"> 870</tt>  <tt class="py-line">  <tt class="py-name">all_args</tt> <tt class="py-op">=</tt> <tt class="py-name">list</tt><tt class="py-op">(</tt><tt class="py-name">parameters</tt><tt class="py-op">.</tt><tt class="py-name">argmap</tt><tt class="py-op">.</tt><tt class="py-name">keys</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L871"></a><tt class="py-lineno"> 871</tt>  <tt class="py-line">  <tt class="py-name">args_ordered</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt id="link-233" class="py-name"><a title="googleapiclient.discovery.key2param" class="py-name" href="#" onclick="return doclink('link-233', 'key2param', 'link-162');">key2param</a></tt><tt class="py-op">(</tt><tt class="py-name">s</tt><tt class="py-op">)</tt> <tt class="py-keyword">for</tt> <tt class="py-name">s</tt> <tt class="py-keyword">in</tt> <tt class="py-name">methodDesc</tt><tt class="py-op">.</tt><tt id="link-234" class="py-name"><a title="googleapiclient.discovery_cache.appengine_memcache.Cache.get
+googleapiclient.schema.Schemas.get" class="py-name" href="#" onclick="return doclink('link-238', 'get', 'link-94');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">'parameters'</tt><tt class="py-op">,</tt> <tt class="py-op">{</tt><tt class="py-op">}</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">keys</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L873"></a><tt class="py-lineno"> 873</tt>  <tt class="py-line">  <tt class="py-name">skip_parameters</tt><tt class="py-op">.</tt><tt class="py-name">extend</tt><tt class="py-op">(</tt><tt id="link-239" class="py-name"><a title="googleapiclient.discovery.STACK_QUERY_PARAMETERS" class="py-name" href="#" onclick="return doclink('link-239', 'STACK_QUERY_PARAMETERS', 'link-65');">STACK_QUERY_PARAMETERS</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L874"></a><tt class="py-lineno"> 874</tt>  <tt class="py-line"> </tt>
+<a name="L875"></a><tt class="py-lineno"> 875</tt>  <tt class="py-line">  <tt class="py-name">all_args</tt> <tt class="py-op">=</tt> <tt class="py-name">list</tt><tt class="py-op">(</tt><tt class="py-name">parameters</tt><tt class="py-op">.</tt><tt class="py-name">argmap</tt><tt class="py-op">.</tt><tt class="py-name">keys</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L876"></a><tt class="py-lineno"> 876</tt>  <tt class="py-line">  <tt class="py-name">args_ordered</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt id="link-240" class="py-name"><a title="googleapiclient.discovery.key2param" class="py-name" href="#" onclick="return doclink('link-240', 'key2param', 'link-169');">key2param</a></tt><tt class="py-op">(</tt><tt class="py-name">s</tt><tt class="py-op">)</tt> <tt class="py-keyword">for</tt> <tt class="py-name">s</tt> <tt class="py-keyword">in</tt> <tt class="py-name">methodDesc</tt><tt class="py-op">.</tt><tt id="link-241" class="py-name"><a title="googleapiclient.discovery_cache.appengine_memcache.Cache.get
 googleapiclient.discovery_cache.base.Cache.get
 googleapiclient.discovery_cache.file_cache.Cache.get
-googleapiclient.schema.Schemas.get" class="py-name" href="#" onclick="return doclink('link-234', 'get', 'link-93');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">'parameterOrder'</tt><tt class="py-op">,</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt><tt class="py-op">)</tt><tt class="py-op">]</tt> </tt>
-<a name="L872"></a><tt class="py-lineno"> 872</tt>  <tt class="py-line"> </tt>
-<a name="L873"></a><tt class="py-lineno"> 873</tt>  <tt class="py-line">  <tt class="py-comment"># Move body to the front of the line.</tt> </tt>
-<a name="L874"></a><tt class="py-lineno"> 874</tt>  <tt class="py-line">  <tt class="py-keyword">if</tt> <tt class="py-string">'body'</tt> <tt class="py-keyword">in</tt> <tt class="py-name">all_args</tt><tt class="py-op">:</tt> </tt>
-<a name="L875"></a><tt class="py-lineno"> 875</tt>  <tt class="py-line">    <tt class="py-name">args_ordered</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-string">'body'</tt><tt class="py-op">)</tt> </tt>
-<a name="L876"></a><tt class="py-lineno"> 876</tt>  <tt class="py-line"> </tt>
-<a name="L877"></a><tt class="py-lineno"> 877</tt>  <tt class="py-line">  <tt class="py-keyword">for</tt> <tt class="py-name">name</tt> <tt class="py-keyword">in</tt> <tt class="py-name">all_args</tt><tt class="py-op">:</tt> </tt>
-<a name="L878"></a><tt class="py-lineno"> 878</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">name</tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt class="py-name">args_ordered</tt><tt class="py-op">:</tt> </tt>
-<a name="L879"></a><tt class="py-lineno"> 879</tt>  <tt class="py-line">      <tt class="py-name">args_ordered</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-name">name</tt><tt class="py-op">)</tt> </tt>
-<a name="L880"></a><tt class="py-lineno"> 880</tt>  <tt class="py-line"> </tt>
-<a name="L881"></a><tt class="py-lineno"> 881</tt>  <tt class="py-line">  <tt class="py-keyword">for</tt> <tt class="py-name">arg</tt> <tt class="py-keyword">in</tt> <tt class="py-name">args_ordered</tt><tt class="py-op">:</tt> </tt>
-<a name="L882"></a><tt class="py-lineno"> 882</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">arg</tt> <tt class="py-keyword">in</tt> <tt class="py-name">skip_parameters</tt><tt class="py-op">:</tt> </tt>
-<a name="L883"></a><tt class="py-lineno"> 883</tt>  <tt class="py-line">      <tt class="py-keyword">continue</tt> </tt>
-<a name="L884"></a><tt class="py-lineno"> 884</tt>  <tt class="py-line"> </tt>
-<a name="L885"></a><tt class="py-lineno"> 885</tt>  <tt class="py-line">    <tt class="py-name">repeated</tt> <tt class="py-op">=</tt> <tt class="py-string">''</tt> </tt>
-<a name="L886"></a><tt class="py-lineno"> 886</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">arg</tt> <tt class="py-keyword">in</tt> <tt class="py-name">parameters</tt><tt class="py-op">.</tt><tt class="py-name">repeated_params</tt><tt class="py-op">:</tt> </tt>
-<a name="L887"></a><tt class="py-lineno"> 887</tt>  <tt class="py-line">      <tt class="py-name">repeated</tt> <tt class="py-op">=</tt> <tt class="py-string">' (repeated)'</tt> </tt>
-<a name="L888"></a><tt class="py-lineno"> 888</tt>  <tt class="py-line">    <tt class="py-name">required</tt> <tt class="py-op">=</tt> <tt class="py-string">''</tt> </tt>
-<a name="L889"></a><tt class="py-lineno"> 889</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">arg</tt> <tt class="py-keyword">in</tt> <tt class="py-name">parameters</tt><tt class="py-op">.</tt><tt class="py-name">required_params</tt><tt class="py-op">:</tt> </tt>
-<a name="L890"></a><tt class="py-lineno"> 890</tt>  <tt class="py-line">      <tt class="py-name">required</tt> <tt class="py-op">=</tt> <tt class="py-string">' (required)'</tt> </tt>
-<a name="L891"></a><tt class="py-lineno"> 891</tt>  <tt class="py-line">    <tt class="py-name">paramdesc</tt> <tt class="py-op">=</tt> <tt class="py-name">methodDesc</tt><tt class="py-op">[</tt><tt class="py-string">'parameters'</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-name">parameters</tt><tt class="py-op">.</tt><tt class="py-name">argmap</tt><tt class="py-op">[</tt><tt class="py-name">arg</tt><tt class="py-op">]</tt><tt class="py-op">]</tt> </tt>
-<a name="L892"></a><tt class="py-lineno"> 892</tt>  <tt class="py-line">    <tt class="py-name">paramdoc</tt> <tt class="py-op">=</tt> <tt class="py-name">paramdesc</tt><tt class="py-op">.</tt><tt id="link-235" class="py-name"><a title="googleapiclient.discovery_cache.appengine_memcache.Cache.get
+googleapiclient.schema.Schemas.get" class="py-name" href="#" onclick="return doclink('link-241', 'get', 'link-94');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">'parameterOrder'</tt><tt class="py-op">,</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt><tt class="py-op">)</tt><tt class="py-op">]</tt> </tt>
+<a name="L877"></a><tt class="py-lineno"> 877</tt>  <tt class="py-line"> </tt>
+<a name="L878"></a><tt class="py-lineno"> 878</tt>  <tt class="py-line">  <tt class="py-comment"># Move body to the front of the line.</tt> </tt>
+<a name="L879"></a><tt class="py-lineno"> 879</tt>  <tt class="py-line">  <tt class="py-keyword">if</tt> <tt class="py-string">'body'</tt> <tt class="py-keyword">in</tt> <tt class="py-name">all_args</tt><tt class="py-op">:</tt> </tt>
+<a name="L880"></a><tt class="py-lineno"> 880</tt>  <tt class="py-line">    <tt class="py-name">args_ordered</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-string">'body'</tt><tt class="py-op">)</tt> </tt>
+<a name="L881"></a><tt class="py-lineno"> 881</tt>  <tt class="py-line"> </tt>
+<a name="L882"></a><tt class="py-lineno"> 882</tt>  <tt class="py-line">  <tt class="py-keyword">for</tt> <tt class="py-name">name</tt> <tt class="py-keyword">in</tt> <tt class="py-name">all_args</tt><tt class="py-op">:</tt> </tt>
+<a name="L883"></a><tt class="py-lineno"> 883</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">name</tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt class="py-name">args_ordered</tt><tt class="py-op">:</tt> </tt>
+<a name="L884"></a><tt class="py-lineno"> 884</tt>  <tt class="py-line">      <tt class="py-name">args_ordered</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-name">name</tt><tt class="py-op">)</tt> </tt>
+<a name="L885"></a><tt class="py-lineno"> 885</tt>  <tt class="py-line"> </tt>
+<a name="L886"></a><tt class="py-lineno"> 886</tt>  <tt class="py-line">  <tt class="py-keyword">for</tt> <tt class="py-name">arg</tt> <tt class="py-keyword">in</tt> <tt class="py-name">args_ordered</tt><tt class="py-op">:</tt> </tt>
+<a name="L887"></a><tt class="py-lineno"> 887</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">arg</tt> <tt class="py-keyword">in</tt> <tt class="py-name">skip_parameters</tt><tt class="py-op">:</tt> </tt>
+<a name="L888"></a><tt class="py-lineno"> 888</tt>  <tt class="py-line">      <tt class="py-keyword">continue</tt> </tt>
+<a name="L889"></a><tt class="py-lineno"> 889</tt>  <tt class="py-line"> </tt>
+<a name="L890"></a><tt class="py-lineno"> 890</tt>  <tt class="py-line">    <tt class="py-name">repeated</tt> <tt class="py-op">=</tt> <tt class="py-string">''</tt> </tt>
+<a name="L891"></a><tt class="py-lineno"> 891</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">arg</tt> <tt class="py-keyword">in</tt> <tt class="py-name">parameters</tt><tt class="py-op">.</tt><tt class="py-name">repeated_params</tt><tt class="py-op">:</tt> </tt>
+<a name="L892"></a><tt class="py-lineno"> 892</tt>  <tt class="py-line">      <tt class="py-name">repeated</tt> <tt class="py-op">=</tt> <tt class="py-string">' (repeated)'</tt> </tt>
+<a name="L893"></a><tt class="py-lineno"> 893</tt>  <tt class="py-line">    <tt class="py-name">required</tt> <tt class="py-op">=</tt> <tt class="py-string">''</tt> </tt>
+<a name="L894"></a><tt class="py-lineno"> 894</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">arg</tt> <tt class="py-keyword">in</tt> <tt class="py-name">parameters</tt><tt class="py-op">.</tt><tt class="py-name">required_params</tt><tt class="py-op">:</tt> </tt>
+<a name="L895"></a><tt class="py-lineno"> 895</tt>  <tt class="py-line">      <tt class="py-name">required</tt> <tt class="py-op">=</tt> <tt class="py-string">' (required)'</tt> </tt>
+<a name="L896"></a><tt class="py-lineno"> 896</tt>  <tt class="py-line">    <tt class="py-name">paramdesc</tt> <tt class="py-op">=</tt> <tt class="py-name">methodDesc</tt><tt class="py-op">[</tt><tt class="py-string">'parameters'</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-name">parameters</tt><tt class="py-op">.</tt><tt class="py-name">argmap</tt><tt class="py-op">[</tt><tt class="py-name">arg</tt><tt class="py-op">]</tt><tt class="py-op">]</tt> </tt>
+<a name="L897"></a><tt class="py-lineno"> 897</tt>  <tt class="py-line">    <tt class="py-name">paramdoc</tt> <tt class="py-op">=</tt> <tt class="py-name">paramdesc</tt><tt class="py-op">.</tt><tt id="link-242" class="py-name"><a title="googleapiclient.discovery_cache.appengine_memcache.Cache.get
 googleapiclient.discovery_cache.base.Cache.get
 googleapiclient.discovery_cache.file_cache.Cache.get
-googleapiclient.schema.Schemas.get" class="py-name" href="#" onclick="return doclink('link-235', 'get', 'link-93');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">'description'</tt><tt class="py-op">,</tt> <tt class="py-string">'A parameter'</tt><tt class="py-op">)</tt> </tt>
-<a name="L893"></a><tt class="py-lineno"> 893</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-string">'$ref'</tt> <tt class="py-keyword">in</tt> <tt class="py-name">paramdesc</tt><tt class="py-op">:</tt> </tt>
-<a name="L894"></a><tt class="py-lineno"> 894</tt>  <tt class="py-line">      <tt class="py-name">docs</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt> </tt>
-<a name="L895"></a><tt class="py-lineno"> 895</tt>  <tt class="py-line">          <tt class="py-op">(</tt><tt class="py-string">'  %s: object, %s%s%s\n    The object takes the'</tt> </tt>
-<a name="L896"></a><tt class="py-lineno"> 896</tt>  <tt class="py-line">          <tt class="py-string">' form of:\n\n%s\n\n'</tt><tt class="py-op">)</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">arg</tt><tt class="py-op">,</tt> <tt class="py-name">paramdoc</tt><tt class="py-op">,</tt> <tt class="py-name">required</tt><tt class="py-op">,</tt> <tt class="py-name">repeated</tt><tt class="py-op">,</tt> </tt>
-<a name="L897"></a><tt class="py-lineno"> 897</tt>  <tt class="py-line">            <tt id="link-236" class="py-name"><a title="googleapiclient.schema" class="py-name" href="#" onclick="return doclink('link-236', 'schema', 'link-48');">schema</a></tt><tt class="py-op">.</tt><tt id="link-237" class="py-name" targets="Method googleapiclient.schema.Schemas.prettyPrintByName()=googleapiclient.schema.Schemas-class.html#prettyPrintByName"><a title="googleapiclient.schema.Schemas.prettyPrintByName" class="py-name" href="#" onclick="return doclink('link-237', 'prettyPrintByName', 'link-237');">prettyPrintByName</a></tt><tt class="py-op">(</tt><tt class="py-name">paramdesc</tt><tt class="py-op">[</tt><tt class="py-string">'$ref'</tt><tt class="py-op">]</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L898"></a><tt class="py-lineno"> 898</tt>  <tt class="py-line">    <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
-<a name="L899"></a><tt class="py-lineno"> 899</tt>  <tt class="py-line">      <tt class="py-name">paramtype</tt> <tt class="py-op">=</tt> <tt class="py-name">paramdesc</tt><tt class="py-op">.</tt><tt id="link-238" class="py-name"><a title="googleapiclient.discovery_cache.appengine_memcache.Cache.get
+googleapiclient.schema.Schemas.get" class="py-name" href="#" onclick="return doclink('link-242', 'get', 'link-94');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">'description'</tt><tt class="py-op">,</tt> <tt class="py-string">'A parameter'</tt><tt class="py-op">)</tt> </tt>
+<a name="L898"></a><tt class="py-lineno"> 898</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-string">'$ref'</tt> <tt class="py-keyword">in</tt> <tt class="py-name">paramdesc</tt><tt class="py-op">:</tt> </tt>
+<a name="L899"></a><tt class="py-lineno"> 899</tt>  <tt class="py-line">      <tt class="py-name">docs</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt> </tt>
+<a name="L900"></a><tt class="py-lineno"> 900</tt>  <tt class="py-line">          <tt class="py-op">(</tt><tt class="py-string">'  %s: object, %s%s%s\n    The object takes the'</tt> </tt>
+<a name="L901"></a><tt class="py-lineno"> 901</tt>  <tt class="py-line">          <tt class="py-string">' form of:\n\n%s\n\n'</tt><tt class="py-op">)</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">arg</tt><tt class="py-op">,</tt> <tt class="py-name">paramdoc</tt><tt class="py-op">,</tt> <tt class="py-name">required</tt><tt class="py-op">,</tt> <tt class="py-name">repeated</tt><tt class="py-op">,</tt> </tt>
+<a name="L902"></a><tt class="py-lineno"> 902</tt>  <tt class="py-line">            <tt id="link-243" class="py-name"><a title="googleapiclient.schema" class="py-name" href="#" onclick="return doclink('link-243', 'schema', 'link-50');">schema</a></tt><tt class="py-op">.</tt><tt id="link-244" class="py-name" targets="Method googleapiclient.schema.Schemas.prettyPrintByName()=googleapiclient.schema.Schemas-class.html#prettyPrintByName"><a title="googleapiclient.schema.Schemas.prettyPrintByName" class="py-name" href="#" onclick="return doclink('link-244', 'prettyPrintByName', 'link-244');">prettyPrintByName</a></tt><tt class="py-op">(</tt><tt class="py-name">paramdesc</tt><tt class="py-op">[</tt><tt class="py-string">'$ref'</tt><tt class="py-op">]</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L903"></a><tt class="py-lineno"> 903</tt>  <tt class="py-line">    <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L904"></a><tt class="py-lineno"> 904</tt>  <tt class="py-line">      <tt class="py-name">paramtype</tt> <tt class="py-op">=</tt> <tt class="py-name">paramdesc</tt><tt class="py-op">.</tt><tt id="link-245" class="py-name"><a title="googleapiclient.discovery_cache.appengine_memcache.Cache.get
 googleapiclient.discovery_cache.base.Cache.get
 googleapiclient.discovery_cache.file_cache.Cache.get
-googleapiclient.schema.Schemas.get" class="py-name" href="#" onclick="return doclink('link-238', 'get', 'link-93');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">'type'</tt><tt class="py-op">,</tt> <tt class="py-string">'string'</tt><tt class="py-op">)</tt> </tt>
-<a name="L900"></a><tt class="py-lineno"> 900</tt>  <tt class="py-line">      <tt class="py-name">docs</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-string">'  %s: %s, %s%s%s\n'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">arg</tt><tt class="py-op">,</tt> <tt class="py-name">paramtype</tt><tt class="py-op">,</tt> <tt class="py-name">paramdoc</tt><tt class="py-op">,</tt> <tt class="py-name">required</tt><tt class="py-op">,</tt> </tt>
-<a name="L901"></a><tt class="py-lineno"> 901</tt>  <tt class="py-line">                                          <tt class="py-name">repeated</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L902"></a><tt class="py-lineno"> 902</tt>  <tt class="py-line">    <tt class="py-name">enum</tt> <tt class="py-op">=</tt> <tt class="py-name">paramdesc</tt><tt class="py-op">.</tt><tt id="link-239" class="py-name"><a title="googleapiclient.discovery_cache.appengine_memcache.Cache.get
+googleapiclient.schema.Schemas.get" class="py-name" href="#" onclick="return doclink('link-245', 'get', 'link-94');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">'type'</tt><tt class="py-op">,</tt> <tt class="py-string">'string'</tt><tt class="py-op">)</tt> </tt>
+<a name="L905"></a><tt class="py-lineno"> 905</tt>  <tt class="py-line">      <tt class="py-name">docs</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-string">'  %s: %s, %s%s%s\n'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">arg</tt><tt class="py-op">,</tt> <tt class="py-name">paramtype</tt><tt class="py-op">,</tt> <tt class="py-name">paramdoc</tt><tt class="py-op">,</tt> <tt class="py-name">required</tt><tt class="py-op">,</tt> </tt>
+<a name="L906"></a><tt class="py-lineno"> 906</tt>  <tt class="py-line">                                          <tt class="py-name">repeated</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L907"></a><tt class="py-lineno"> 907</tt>  <tt class="py-line">    <tt class="py-name">enum</tt> <tt class="py-op">=</tt> <tt class="py-name">paramdesc</tt><tt class="py-op">.</tt><tt id="link-246" class="py-name"><a title="googleapiclient.discovery_cache.appengine_memcache.Cache.get
 googleapiclient.discovery_cache.base.Cache.get
 googleapiclient.discovery_cache.file_cache.Cache.get
-googleapiclient.schema.Schemas.get" class="py-name" href="#" onclick="return doclink('link-239', 'get', 'link-93');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">'enum'</tt><tt class="py-op">,</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
-<a name="L903"></a><tt class="py-lineno"> 903</tt>  <tt class="py-line">    <tt class="py-name">enumDesc</tt> <tt class="py-op">=</tt> <tt class="py-name">paramdesc</tt><tt class="py-op">.</tt><tt id="link-240" class="py-name"><a title="googleapiclient.discovery_cache.appengine_memcache.Cache.get
+googleapiclient.schema.Schemas.get" class="py-name" href="#" onclick="return doclink('link-246', 'get', 'link-94');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">'enum'</tt><tt class="py-op">,</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L908"></a><tt class="py-lineno"> 908</tt>  <tt class="py-line">    <tt class="py-name">enumDesc</tt> <tt class="py-op">=</tt> <tt class="py-name">paramdesc</tt><tt class="py-op">.</tt><tt id="link-247" class="py-name"><a title="googleapiclient.discovery_cache.appengine_memcache.Cache.get
 googleapiclient.discovery_cache.base.Cache.get
 googleapiclient.discovery_cache.file_cache.Cache.get
-googleapiclient.schema.Schemas.get" class="py-name" href="#" onclick="return doclink('link-240', 'get', 'link-93');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">'enumDescriptions'</tt><tt class="py-op">,</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
-<a name="L904"></a><tt class="py-lineno"> 904</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">enum</tt> <tt class="py-keyword">and</tt> <tt class="py-name">enumDesc</tt><tt class="py-op">:</tt> </tt>
-<a name="L905"></a><tt class="py-lineno"> 905</tt>  <tt class="py-line">      <tt class="py-name">docs</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-string">'    Allowed values\n'</tt><tt class="py-op">)</tt> </tt>
-<a name="L906"></a><tt class="py-lineno"> 906</tt>  <tt class="py-line">      <tt class="py-keyword">for</tt> <tt class="py-op">(</tt><tt class="py-name">name</tt><tt class="py-op">,</tt> <tt class="py-name">desc</tt><tt class="py-op">)</tt> <tt class="py-keyword">in</tt> <tt class="py-name">zip</tt><tt class="py-op">(</tt><tt class="py-name">enum</tt><tt class="py-op">,</tt> <tt class="py-name">enumDesc</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="L907"></a><tt class="py-lineno"> 907</tt>  <tt class="py-line">        <tt class="py-name">docs</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-string">'      %s - %s\n'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">name</tt><tt class="py-op">,</tt> <tt class="py-name">desc</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L908"></a><tt class="py-lineno"> 908</tt>  <tt class="py-line">  <tt class="py-keyword">if</tt> <tt class="py-string">'response'</tt> <tt class="py-keyword">in</tt> <tt class="py-name">methodDesc</tt><tt class="py-op">:</tt> </tt>
-<a name="L909"></a><tt class="py-lineno"> 909</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">methodName</tt><tt class="py-op">.</tt><tt class="py-name">endswith</tt><tt class="py-op">(</tt><tt class="py-string">'_media'</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="L910"></a><tt class="py-lineno"> 910</tt>  <tt class="py-line">      <tt class="py-name">docs</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-string">'\nReturns:\n  The media object as a string.\n\n    '</tt><tt class="py-op">)</tt> </tt>
-<a name="L911"></a><tt class="py-lineno"> 911</tt>  <tt class="py-line">    <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
-<a name="L912"></a><tt class="py-lineno"> 912</tt>  <tt class="py-line">      <tt class="py-name">docs</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-string">'\nReturns:\n  An object of the form:\n\n    '</tt><tt class="py-op">)</tt> </tt>
-<a name="L913"></a><tt class="py-lineno"> 913</tt>  <tt class="py-line">      <tt class="py-name">docs</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt id="link-241" class="py-name"><a title="googleapiclient.schema" class="py-name" href="#" onclick="return doclink('link-241', 'schema', 'link-48');">schema</a></tt><tt class="py-op">.</tt><tt id="link-242" class="py-name" targets="Method googleapiclient.schema.Schemas.prettyPrintSchema()=googleapiclient.schema.Schemas-class.html#prettyPrintSchema"><a title="googleapiclient.schema.Schemas.prettyPrintSchema" class="py-name" href="#" onclick="return doclink('link-242', 'prettyPrintSchema', 'link-242');">prettyPrintSchema</a></tt><tt class="py-op">(</tt><tt class="py-name">methodDesc</tt><tt class="py-op">[</tt><tt class="py-string">'response'</tt><tt class="py-op">]</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L914"></a><tt class="py-lineno"> 914</tt>  <tt class="py-line"> </tt>
-<a name="L915"></a><tt class="py-lineno"> 915</tt>  <tt class="py-line">  <tt class="py-name">setattr</tt><tt class="py-op">(</tt><tt class="py-name">method</tt><tt class="py-op">,</tt> <tt class="py-string">'__doc__'</tt><tt class="py-op">,</tt> <tt class="py-string">''</tt><tt class="py-op">.</tt><tt class="py-name">join</tt><tt class="py-op">(</tt><tt class="py-name">docs</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L916"></a><tt class="py-lineno"> 916</tt>  <tt class="py-line">  <tt class="py-keyword">return</tt> <tt class="py-op">(</tt><tt class="py-name">methodName</tt><tt class="py-op">,</tt> <tt class="py-name">method</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L917"></a><tt class="py-lineno"> 917</tt>  <tt class="py-line"> </tt>
-<a name="createNextMethod"></a><div id="createNextMethod-def"><a name="L918"></a><tt class="py-lineno"> 918</tt>  <tt class="py-line"> </tt>
-<a name="L919"></a><tt class="py-lineno"> 919</tt> <a class="py-toggle" href="#" id="createNextMethod-toggle" onclick="return toggle('createNextMethod');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="googleapiclient.discovery-module.html#createNextMethod">createNextMethod</a><tt class="py-op">(</tt><tt class="py-param">methodName</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="createNextMethod-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="createNextMethod-expanded"><a name="L920"></a><tt class="py-lineno"> 920</tt>  <tt class="py-line">  <tt class="py-docstring">"""Creates any _next methods for attaching to a Resource.</tt> </tt>
-<a name="L921"></a><tt class="py-lineno"> 921</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L922"></a><tt class="py-lineno"> 922</tt>  <tt class="py-line"><tt class="py-docstring">  The _next methods allow for easy iteration through list() responses.</tt> </tt>
-<a name="L923"></a><tt class="py-lineno"> 923</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L924"></a><tt class="py-lineno"> 924</tt>  <tt class="py-line"><tt class="py-docstring">  Args:</tt> </tt>
-<a name="L925"></a><tt class="py-lineno"> 925</tt>  <tt class="py-line"><tt class="py-docstring">    methodName: string, name of the method to use.</tt> </tt>
-<a name="L926"></a><tt class="py-lineno"> 926</tt>  <tt class="py-line"><tt class="py-docstring">  """</tt> </tt>
-<a name="L927"></a><tt class="py-lineno"> 927</tt>  <tt class="py-line">  <tt class="py-name">methodName</tt> <tt class="py-op">=</tt> <tt id="link-243" class="py-name"><a title="googleapiclient.discovery.fix_method_name" class="py-name" href="#" onclick="return doclink('link-243', 'fix_method_name', 'link-175');">fix_method_name</a></tt><tt class="py-op">(</tt><tt class="py-name">methodName</tt><tt class="py-op">)</tt> </tt>
-<a name="L928"></a><tt class="py-lineno"> 928</tt>  <tt class="py-line"> </tt>
-<a name="L929"></a><tt class="py-lineno"> 929</tt>  <tt class="py-line">  <tt class="py-keyword">def</tt> <tt class="py-def-name">methodNext</tt><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">previous_request</tt><tt class="py-op">,</tt> <tt class="py-param">previous_response</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="L930"></a><tt class="py-lineno"> 930</tt>  <tt class="py-line">    <tt class="py-docstring">"""Retrieves the next page of results.</tt> </tt>
-<a name="L931"></a><tt class="py-lineno"> 931</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L932"></a><tt class="py-lineno"> 932</tt>  <tt class="py-line"><tt class="py-docstring">Args:</tt> </tt>
-<a name="L933"></a><tt class="py-lineno"> 933</tt>  <tt class="py-line"><tt class="py-docstring">  previous_request: The request for the previous page. (required)</tt> </tt>
-<a name="L934"></a><tt class="py-lineno"> 934</tt>  <tt class="py-line"><tt class="py-docstring">  previous_response: The response from the request for the previous page. (required)</tt> </tt>
-<a name="L935"></a><tt class="py-lineno"> 935</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L936"></a><tt class="py-lineno"> 936</tt>  <tt class="py-line"><tt class="py-docstring">Returns:</tt> </tt>
-<a name="L937"></a><tt class="py-lineno"> 937</tt>  <tt class="py-line"><tt class="py-docstring">  A request object that you can call 'execute()' on to request the next</tt> </tt>
-<a name="L938"></a><tt class="py-lineno"> 938</tt>  <tt class="py-line"><tt class="py-docstring">  page. Returns None if there are no more items in the collection.</tt> </tt>
-<a name="L939"></a><tt class="py-lineno"> 939</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
-<a name="L940"></a><tt class="py-lineno"> 940</tt>  <tt class="py-line">    <tt class="py-comment"># Retrieve nextPageToken from previous_response</tt> </tt>
-<a name="L941"></a><tt class="py-lineno"> 941</tt>  <tt class="py-line">    <tt class="py-comment"># Use as pageToken in previous_request to create new request.</tt> </tt>
-<a name="L942"></a><tt class="py-lineno"> 942</tt>  <tt class="py-line"> </tt>
-<a name="L943"></a><tt class="py-lineno"> 943</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-string">'nextPageToken'</tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt class="py-name">previous_response</tt> <tt class="py-keyword">or</tt> <tt class="py-keyword">not</tt> <tt class="py-name">previous_response</tt><tt class="py-op">[</tt><tt class="py-string">'nextPageToken'</tt><tt class="py-op">]</tt><tt class="py-op">:</tt> </tt>
-<a name="L944"></a><tt class="py-lineno"> 944</tt>  <tt class="py-line">      <tt class="py-keyword">return</tt> <tt class="py-name">None</tt> </tt>
-<a name="L945"></a><tt class="py-lineno"> 945</tt>  <tt class="py-line"> </tt>
-<a name="L946"></a><tt class="py-lineno"> 946</tt>  <tt class="py-line">    <tt id="link-244" class="py-name"><a title="googleapiclient.http.HttpMock.request
-googleapiclient.http.HttpMockSequence.request
-googleapiclient.model.BaseModel.request
-googleapiclient.model.Model.request" class="py-name" href="#" onclick="return doclink('link-244', 'request', 'link-96');">request</a></tt> <tt class="py-op">=</tt> <tt class="py-name">copy</tt><tt class="py-op">.</tt><tt class="py-name">copy</tt><tt class="py-op">(</tt><tt class="py-name">previous_request</tt><tt class="py-op">)</tt> </tt>
+googleapiclient.schema.Schemas.get" class="py-name" href="#" onclick="return doclink('link-247', 'get', 'link-94');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">'enumDescriptions'</tt><tt class="py-op">,</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L909"></a><tt class="py-lineno"> 909</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">enum</tt> <tt class="py-keyword">and</tt> <tt class="py-name">enumDesc</tt><tt class="py-op">:</tt> </tt>
+<a name="L910"></a><tt class="py-lineno"> 910</tt>  <tt class="py-line">      <tt class="py-name">docs</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-string">'    Allowed values\n'</tt><tt class="py-op">)</tt> </tt>
+<a name="L911"></a><tt class="py-lineno"> 911</tt>  <tt class="py-line">      <tt class="py-keyword">for</tt> <tt class="py-op">(</tt><tt class="py-name">name</tt><tt class="py-op">,</tt> <tt class="py-name">desc</tt><tt class="py-op">)</tt> <tt class="py-keyword">in</tt> <tt class="py-name">zip</tt><tt class="py-op">(</tt><tt class="py-name">enum</tt><tt class="py-op">,</tt> <tt class="py-name">enumDesc</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L912"></a><tt class="py-lineno"> 912</tt>  <tt class="py-line">        <tt class="py-name">docs</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-string">'      %s - %s\n'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">name</tt><tt class="py-op">,</tt> <tt class="py-name">desc</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L913"></a><tt class="py-lineno"> 913</tt>  <tt class="py-line">  <tt class="py-keyword">if</tt> <tt class="py-string">'response'</tt> <tt class="py-keyword">in</tt> <tt class="py-name">methodDesc</tt><tt class="py-op">:</tt> </tt>
+<a name="L914"></a><tt class="py-lineno"> 914</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">methodName</tt><tt class="py-op">.</tt><tt class="py-name">endswith</tt><tt class="py-op">(</tt><tt class="py-string">'_media'</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L915"></a><tt class="py-lineno"> 915</tt>  <tt class="py-line">      <tt class="py-name">docs</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-string">'\nReturns:\n  The media object as a string.\n\n    '</tt><tt class="py-op">)</tt> </tt>
+<a name="L916"></a><tt class="py-lineno"> 916</tt>  <tt class="py-line">    <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L917"></a><tt class="py-lineno"> 917</tt>  <tt class="py-line">      <tt class="py-name">docs</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-string">'\nReturns:\n  An object of the form:\n\n    '</tt><tt class="py-op">)</tt> </tt>
+<a name="L918"></a><tt class="py-lineno"> 918</tt>  <tt class="py-line">      <tt class="py-name">docs</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt id="link-248" class="py-name"><a title="googleapiclient.schema" class="py-name" href="#" onclick="return doclink('link-248', 'schema', 'link-50');">schema</a></tt><tt class="py-op">.</tt><tt id="link-249" class="py-name" targets="Method googleapiclient.schema.Schemas.prettyPrintSchema()=googleapiclient.schema.Schemas-class.html#prettyPrintSchema"><a title="googleapiclient.schema.Schemas.prettyPrintSchema" class="py-name" href="#" onclick="return doclink('link-249', 'prettyPrintSchema', 'link-249');">prettyPrintSchema</a></tt><tt class="py-op">(</tt><tt class="py-name">methodDesc</tt><tt class="py-op">[</tt><tt class="py-string">'response'</tt><tt class="py-op">]</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L919"></a><tt class="py-lineno"> 919</tt>  <tt class="py-line"> </tt>
+<a name="L920"></a><tt class="py-lineno"> 920</tt>  <tt class="py-line">  <tt class="py-name">setattr</tt><tt class="py-op">(</tt><tt class="py-name">method</tt><tt class="py-op">,</tt> <tt class="py-string">'__doc__'</tt><tt class="py-op">,</tt> <tt class="py-string">''</tt><tt class="py-op">.</tt><tt class="py-name">join</tt><tt class="py-op">(</tt><tt class="py-name">docs</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L921"></a><tt class="py-lineno"> 921</tt>  <tt class="py-line">  <tt class="py-keyword">return</tt> <tt class="py-op">(</tt><tt class="py-name">methodName</tt><tt class="py-op">,</tt> <tt class="py-name">method</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L922"></a><tt class="py-lineno"> 922</tt>  <tt class="py-line"> </tt>
+<a name="createNextMethod"></a><div id="createNextMethod-def"><a name="L923"></a><tt class="py-lineno"> 923</tt>  <tt class="py-line"> </tt>
+<a name="L924"></a><tt class="py-lineno"> 924</tt> <a class="py-toggle" href="#" id="createNextMethod-toggle" onclick="return toggle('createNextMethod');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="googleapiclient.discovery-module.html#createNextMethod">createNextMethod</a><tt class="py-op">(</tt><tt class="py-param">methodName</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="createNextMethod-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="createNextMethod-expanded"><a name="L925"></a><tt class="py-lineno"> 925</tt>  <tt class="py-line">  <tt class="py-docstring">"""Creates any _next methods for attaching to a Resource.</tt> </tt>
+<a name="L926"></a><tt class="py-lineno"> 926</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L927"></a><tt class="py-lineno"> 927</tt>  <tt class="py-line"><tt class="py-docstring">  The _next methods allow for easy iteration through list() responses.</tt> </tt>
+<a name="L928"></a><tt class="py-lineno"> 928</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L929"></a><tt class="py-lineno"> 929</tt>  <tt class="py-line"><tt class="py-docstring">  Args:</tt> </tt>
+<a name="L930"></a><tt class="py-lineno"> 930</tt>  <tt class="py-line"><tt class="py-docstring">    methodName: string, name of the method to use.</tt> </tt>
+<a name="L931"></a><tt class="py-lineno"> 931</tt>  <tt class="py-line"><tt class="py-docstring">  """</tt> </tt>
+<a name="L932"></a><tt class="py-lineno"> 932</tt>  <tt class="py-line">  <tt class="py-name">methodName</tt> <tt class="py-op">=</tt> <tt id="link-250" class="py-name"><a title="googleapiclient.discovery.fix_method_name" class="py-name" href="#" onclick="return doclink('link-250', 'fix_method_name', 'link-182');">fix_method_name</a></tt><tt class="py-op">(</tt><tt class="py-name">methodName</tt><tt class="py-op">)</tt> </tt>
+<a name="L933"></a><tt class="py-lineno"> 933</tt>  <tt class="py-line"> </tt>
+<a name="L934"></a><tt class="py-lineno"> 934</tt>  <tt class="py-line">  <tt class="py-keyword">def</tt> <tt class="py-def-name">methodNext</tt><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">previous_request</tt><tt class="py-op">,</tt> <tt class="py-param">previous_response</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L935"></a><tt class="py-lineno"> 935</tt>  <tt class="py-line">    <tt class="py-docstring">"""Retrieves the next page of results.</tt> </tt>
+<a name="L936"></a><tt class="py-lineno"> 936</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L937"></a><tt class="py-lineno"> 937</tt>  <tt class="py-line"><tt class="py-docstring">Args:</tt> </tt>
+<a name="L938"></a><tt class="py-lineno"> 938</tt>  <tt class="py-line"><tt class="py-docstring">  previous_request: The request for the previous page. (required)</tt> </tt>
+<a name="L939"></a><tt class="py-lineno"> 939</tt>  <tt class="py-line"><tt class="py-docstring">  previous_response: The response from the request for the previous page. (required)</tt> </tt>
+<a name="L940"></a><tt class="py-lineno"> 940</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L941"></a><tt class="py-lineno"> 941</tt>  <tt class="py-line"><tt class="py-docstring">Returns:</tt> </tt>
+<a name="L942"></a><tt class="py-lineno"> 942</tt>  <tt class="py-line"><tt class="py-docstring">  A request object that you can call 'execute()' on to request the next</tt> </tt>
+<a name="L943"></a><tt class="py-lineno"> 943</tt>  <tt class="py-line"><tt class="py-docstring">  page. Returns None if there are no more items in the collection.</tt> </tt>
+<a name="L944"></a><tt class="py-lineno"> 944</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
+<a name="L945"></a><tt class="py-lineno"> 945</tt>  <tt class="py-line">    <tt class="py-comment"># Retrieve nextPageToken from previous_response</tt> </tt>
+<a name="L946"></a><tt class="py-lineno"> 946</tt>  <tt class="py-line">    <tt class="py-comment"># Use as pageToken in previous_request to create new request.</tt> </tt>
 <a name="L947"></a><tt class="py-lineno"> 947</tt>  <tt class="py-line"> </tt>
-<a name="L948"></a><tt class="py-lineno"> 948</tt>  <tt class="py-line">    <tt class="py-name">pageToken</tt> <tt class="py-op">=</tt> <tt class="py-name">previous_response</tt><tt class="py-op">[</tt><tt class="py-string">'nextPageToken'</tt><tt class="py-op">]</tt> </tt>
-<a name="L949"></a><tt class="py-lineno"> 949</tt>  <tt class="py-line">    <tt class="py-name">parsed</tt> <tt class="py-op">=</tt> <tt class="py-name">list</tt><tt class="py-op">(</tt><tt class="py-name">urlparse</tt><tt class="py-op">(</tt><tt id="link-245" class="py-name"><a title="googleapiclient.http.HttpMock.request
+<a name="L948"></a><tt class="py-lineno"> 948</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-string">'nextPageToken'</tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt class="py-name">previous_response</tt> <tt class="py-keyword">or</tt> <tt class="py-keyword">not</tt> <tt class="py-name">previous_response</tt><tt class="py-op">[</tt><tt class="py-string">'nextPageToken'</tt><tt class="py-op">]</tt><tt class="py-op">:</tt> </tt>
+<a name="L949"></a><tt class="py-lineno"> 949</tt>  <tt class="py-line">      <tt class="py-keyword">return</tt> <tt class="py-name">None</tt> </tt>
+<a name="L950"></a><tt class="py-lineno"> 950</tt>  <tt class="py-line"> </tt>
+<a name="L951"></a><tt class="py-lineno"> 951</tt>  <tt class="py-line">    <tt id="link-251" class="py-name"><a title="googleapiclient.http.HttpMock.request
 googleapiclient.http.HttpMockSequence.request
 googleapiclient.model.BaseModel.request
-googleapiclient.model.Model.request" class="py-name" href="#" onclick="return doclink('link-245', 'request', 'link-96');">request</a></tt><tt class="py-op">.</tt><tt class="py-name">uri</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L950"></a><tt class="py-lineno"> 950</tt>  <tt class="py-line">    <tt class="py-name">q</tt> <tt class="py-op">=</tt> <tt class="py-name">parse_qsl</tt><tt class="py-op">(</tt><tt class="py-name">parsed</tt><tt class="py-op">[</tt><tt class="py-number">4</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
-<a name="L951"></a><tt class="py-lineno"> 951</tt>  <tt class="py-line"> </tt>
-<a name="L952"></a><tt class="py-lineno"> 952</tt>  <tt class="py-line">    <tt class="py-comment"># Find and remove old 'pageToken' value from URI</tt> </tt>
-<a name="L953"></a><tt class="py-lineno"> 953</tt>  <tt class="py-line">    <tt class="py-name">newq</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">(</tt><tt class="py-name">key</tt><tt class="py-op">,</tt> <tt class="py-name">value</tt><tt class="py-op">)</tt> <tt class="py-keyword">for</tt> <tt class="py-op">(</tt><tt class="py-name">key</tt><tt class="py-op">,</tt> <tt class="py-name">value</tt><tt class="py-op">)</tt> <tt class="py-keyword">in</tt> <tt class="py-name">q</tt> <tt class="py-keyword">if</tt> <tt class="py-name">key</tt> <tt class="py-op">!=</tt> <tt class="py-string">'pageToken'</tt><tt class="py-op">]</tt> </tt>
-<a name="L954"></a><tt class="py-lineno"> 954</tt>  <tt class="py-line">    <tt class="py-name">newq</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-op">(</tt><tt class="py-string">'pageToken'</tt><tt class="py-op">,</tt> <tt class="py-name">pageToken</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L955"></a><tt class="py-lineno"> 955</tt>  <tt class="py-line">    <tt class="py-name">parsed</tt><tt class="py-op">[</tt><tt class="py-number">4</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">urlencode</tt><tt class="py-op">(</tt><tt class="py-name">newq</tt><tt class="py-op">)</tt> </tt>
-<a name="L956"></a><tt class="py-lineno"> 956</tt>  <tt class="py-line">    <tt class="py-name">uri</tt> <tt class="py-op">=</tt> <tt class="py-name">urlunparse</tt><tt class="py-op">(</tt><tt class="py-name">parsed</tt><tt class="py-op">)</tt> </tt>
-<a name="L957"></a><tt class="py-lineno"> 957</tt>  <tt class="py-line"> </tt>
-<a name="L958"></a><tt class="py-lineno"> 958</tt>  <tt class="py-line">    <tt id="link-246" class="py-name"><a title="googleapiclient.http.HttpMock.request
+googleapiclient.model.Model.request" class="py-name" href="#" onclick="return doclink('link-251', 'request', 'link-97');">request</a></tt> <tt class="py-op">=</tt> <tt class="py-name">copy</tt><tt class="py-op">.</tt><tt class="py-name">copy</tt><tt class="py-op">(</tt><tt class="py-name">previous_request</tt><tt class="py-op">)</tt> </tt>
+<a name="L952"></a><tt class="py-lineno"> 952</tt>  <tt class="py-line"> </tt>
+<a name="L953"></a><tt class="py-lineno"> 953</tt>  <tt class="py-line">    <tt class="py-name">pageToken</tt> <tt class="py-op">=</tt> <tt class="py-name">previous_response</tt><tt class="py-op">[</tt><tt class="py-string">'nextPageToken'</tt><tt class="py-op">]</tt> </tt>
+<a name="L954"></a><tt class="py-lineno"> 954</tt>  <tt class="py-line">    <tt class="py-name">parsed</tt> <tt class="py-op">=</tt> <tt class="py-name">list</tt><tt class="py-op">(</tt><tt class="py-name">urlparse</tt><tt class="py-op">(</tt><tt id="link-252" class="py-name"><a title="googleapiclient.http.HttpMock.request
 googleapiclient.http.HttpMockSequence.request
 googleapiclient.model.BaseModel.request
-googleapiclient.model.Model.request" class="py-name" href="#" onclick="return doclink('link-246', 'request', 'link-96');">request</a></tt><tt class="py-op">.</tt><tt class="py-name">uri</tt> <tt class="py-op">=</tt> <tt class="py-name">uri</tt> </tt>
-<a name="L959"></a><tt class="py-lineno"> 959</tt>  <tt class="py-line"> </tt>
-<a name="L960"></a><tt class="py-lineno"> 960</tt>  <tt class="py-line">    <tt id="link-247" class="py-name"><a title="googleapiclient.discovery.logger" class="py-name" href="#" onclick="return doclink('link-247', 'logger', 'link-50');">logger</a></tt><tt class="py-op">.</tt><tt class="py-name">info</tt><tt class="py-op">(</tt><tt class="py-string">'URL being requested: %s %s'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">methodName</tt><tt class="py-op">,</tt><tt class="py-name">uri</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L961"></a><tt class="py-lineno"> 961</tt>  <tt class="py-line"> </tt>
-<a name="L962"></a><tt class="py-lineno"> 962</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt id="link-248" class="py-name"><a title="googleapiclient.http.HttpMock.request
+googleapiclient.model.Model.request" class="py-name" href="#" onclick="return doclink('link-252', 'request', 'link-97');">request</a></tt><tt class="py-op">.</tt><tt class="py-name">uri</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L955"></a><tt class="py-lineno"> 955</tt>  <tt class="py-line">    <tt class="py-name">q</tt> <tt class="py-op">=</tt> <tt class="py-name">parse_qsl</tt><tt class="py-op">(</tt><tt class="py-name">parsed</tt><tt class="py-op">[</tt><tt class="py-number">4</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L956"></a><tt class="py-lineno"> 956</tt>  <tt class="py-line"> </tt>
+<a name="L957"></a><tt class="py-lineno"> 957</tt>  <tt class="py-line">    <tt class="py-comment"># Find and remove old 'pageToken' value from URI</tt> </tt>
+<a name="L958"></a><tt class="py-lineno"> 958</tt>  <tt class="py-line">    <tt class="py-name">newq</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">(</tt><tt class="py-name">key</tt><tt class="py-op">,</tt> <tt class="py-name">value</tt><tt class="py-op">)</tt> <tt class="py-keyword">for</tt> <tt class="py-op">(</tt><tt class="py-name">key</tt><tt class="py-op">,</tt> <tt class="py-name">value</tt><tt class="py-op">)</tt> <tt class="py-keyword">in</tt> <tt class="py-name">q</tt> <tt class="py-keyword">if</tt> <tt class="py-name">key</tt> <tt class="py-op">!=</tt> <tt class="py-string">'pageToken'</tt><tt class="py-op">]</tt> </tt>
+<a name="L959"></a><tt class="py-lineno"> 959</tt>  <tt class="py-line">    <tt class="py-name">newq</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-op">(</tt><tt class="py-string">'pageToken'</tt><tt class="py-op">,</tt> <tt class="py-name">pageToken</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L960"></a><tt class="py-lineno"> 960</tt>  <tt class="py-line">    <tt class="py-name">parsed</tt><tt class="py-op">[</tt><tt class="py-number">4</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">urlencode</tt><tt class="py-op">(</tt><tt class="py-name">newq</tt><tt class="py-op">)</tt> </tt>
+<a name="L961"></a><tt class="py-lineno"> 961</tt>  <tt class="py-line">    <tt class="py-name">uri</tt> <tt class="py-op">=</tt> <tt class="py-name">urlunparse</tt><tt class="py-op">(</tt><tt class="py-name">parsed</tt><tt class="py-op">)</tt> </tt>
+<a name="L962"></a><tt class="py-lineno"> 962</tt>  <tt class="py-line"> </tt>
+<a name="L963"></a><tt class="py-lineno"> 963</tt>  <tt class="py-line">    <tt id="link-253" class="py-name"><a title="googleapiclient.http.HttpMock.request
 googleapiclient.http.HttpMockSequence.request
 googleapiclient.model.BaseModel.request
-googleapiclient.model.Model.request" class="py-name" href="#" onclick="return doclink('link-248', 'request', 'link-96');">request</a></tt> </tt>
-</div><a name="L963"></a><tt class="py-lineno"> 963</tt>  <tt class="py-line"> </tt>
-<a name="L964"></a><tt class="py-lineno"> 964</tt>  <tt class="py-line">  <tt class="py-keyword">return</tt> <tt class="py-op">(</tt><tt class="py-name">methodName</tt><tt class="py-op">,</tt> <tt class="py-name">methodNext</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L965"></a><tt class="py-lineno"> 965</tt>  <tt class="py-line"> </tt>
-<a name="Resource"></a><div id="Resource-def"><a name="L966"></a><tt class="py-lineno"> 966</tt>  <tt class="py-line"> </tt>
-<a name="L967"></a><tt class="py-lineno"> 967</tt> <a class="py-toggle" href="#" id="Resource-toggle" onclick="return toggle('Resource');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="googleapiclient.discovery.Resource-class.html">Resource</a><tt class="py-op">(</tt><tt class="py-base-class">object</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="Resource-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="Resource-expanded"><a name="L968"></a><tt class="py-lineno"> 968</tt>  <tt class="py-line">  <tt class="py-docstring">"""A class for interacting with a resource."""</tt> </tt>
-<a name="L969"></a><tt class="py-lineno"> 969</tt>  <tt class="py-line"> </tt>
-<a name="Resource.__init__"></a><div id="Resource.__init__-def"><a name="L970"></a><tt class="py-lineno"> 970</tt> <a class="py-toggle" href="#" id="Resource.__init__-toggle" onclick="return toggle('Resource.__init__');">-</a><tt class="py-line">  <tt class="py-keyword">def</tt> <a class="py-def-name" href="googleapiclient.discovery.Resource-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">http</tt><tt class="py-op">,</tt> <tt class="py-param">baseUrl</tt><tt class="py-op">,</tt> <tt class="py-param">model</tt><tt class="py-op">,</tt> <tt class="py-param">requestBuilder</tt><tt class="py-op">,</tt> <tt class="py-param">developerKey</tt><tt class="py-op">,</tt> </tt>
-<a name="L971"></a><tt class="py-lineno"> 971</tt>  <tt class="py-line">               <tt class="py-param">resourceDesc</tt><tt class="py-op">,</tt> <tt class="py-param">rootDesc</tt><tt class="py-op">,</tt> <tt class="py-param">schema</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="Resource.__init__-collapsed" style="display:none;" pad="++++" indent="++++++"></div><div id="Resource.__init__-expanded"><a name="L972"></a><tt class="py-lineno"> 972</tt>  <tt class="py-line">    <tt class="py-docstring">"""Build a Resource from the API description.</tt> </tt>
-<a name="L973"></a><tt class="py-lineno"> 973</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L974"></a><tt class="py-lineno"> 974</tt>  <tt class="py-line"><tt class="py-docstring">    Args:</tt> </tt>
-<a name="L975"></a><tt class="py-lineno"> 975</tt>  <tt class="py-line"><tt class="py-docstring">      http: httplib2.Http, Object to make http requests with.</tt> </tt>
-<a name="L976"></a><tt class="py-lineno"> 976</tt>  <tt class="py-line"><tt class="py-docstring">      baseUrl: string, base URL for the API. All requests are relative to this</tt> </tt>
-<a name="L977"></a><tt class="py-lineno"> 977</tt>  <tt class="py-line"><tt class="py-docstring">          URI.</tt> </tt>
-<a name="L978"></a><tt class="py-lineno"> 978</tt>  <tt class="py-line"><tt class="py-docstring">      model: googleapiclient.Model, converts to and from the wire format.</tt> </tt>
-<a name="L979"></a><tt class="py-lineno"> 979</tt>  <tt class="py-line"><tt class="py-docstring">      requestBuilder: class or callable that instantiates an</tt> </tt>
-<a name="L980"></a><tt class="py-lineno"> 980</tt>  <tt class="py-line"><tt class="py-docstring">          googleapiclient.HttpRequest object.</tt> </tt>
-<a name="L981"></a><tt class="py-lineno"> 981</tt>  <tt class="py-line"><tt class="py-docstring">      developerKey: string, key obtained from</tt> </tt>
-<a name="L982"></a><tt class="py-lineno"> 982</tt>  <tt class="py-line"><tt class="py-docstring">          https://code.google.com/apis/console</tt> </tt>
-<a name="L983"></a><tt class="py-lineno"> 983</tt>  <tt class="py-line"><tt class="py-docstring">      resourceDesc: object, section of deserialized discovery document that</tt> </tt>
-<a name="L984"></a><tt class="py-lineno"> 984</tt>  <tt class="py-line"><tt class="py-docstring">          describes a resource. Note that the top level discovery document</tt> </tt>
-<a name="L985"></a><tt class="py-lineno"> 985</tt>  <tt class="py-line"><tt class="py-docstring">          is considered a resource.</tt> </tt>
-<a name="L986"></a><tt class="py-lineno"> 986</tt>  <tt class="py-line"><tt class="py-docstring">      rootDesc: object, the entire deserialized discovery document.</tt> </tt>
-<a name="L987"></a><tt class="py-lineno"> 987</tt>  <tt class="py-line"><tt class="py-docstring">      schema: object, mapping of schema names to schema descriptions.</tt> </tt>
-<a name="L988"></a><tt class="py-lineno"> 988</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
-<a name="L989"></a><tt class="py-lineno"> 989</tt>  <tt class="py-line">    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_dynamic_attrs</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
-<a name="L990"></a><tt class="py-lineno"> 990</tt>  <tt class="py-line"> </tt>
-<a name="L991"></a><tt class="py-lineno"> 991</tt>  <tt class="py-line">    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_http</tt> <tt class="py-op">=</tt> <tt id="link-249" class="py-name"><a title="googleapiclient.http" class="py-name" href="#" onclick="return doclink('link-249', 'http', 'link-21');">http</a></tt> </tt>
-<a name="L992"></a><tt class="py-lineno"> 992</tt>  <tt class="py-line">    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_baseUrl</tt> <tt class="py-op">=</tt> <tt class="py-name">baseUrl</tt> </tt>
-<a name="L993"></a><tt class="py-lineno"> 993</tt>  <tt class="py-line">    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_model</tt> <tt class="py-op">=</tt> <tt id="link-250" class="py-name"><a title="googleapiclient.model" class="py-name" href="#" onclick="return doclink('link-250', 'model', 'link-39');">model</a></tt> </tt>
-<a name="L994"></a><tt class="py-lineno"> 994</tt>  <tt class="py-line">    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_developerKey</tt> <tt class="py-op">=</tt> <tt class="py-name">developerKey</tt> </tt>
-<a name="L995"></a><tt class="py-lineno"> 995</tt>  <tt class="py-line">    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_requestBuilder</tt> <tt class="py-op">=</tt> <tt class="py-name">requestBuilder</tt> </tt>
-<a name="L996"></a><tt class="py-lineno"> 996</tt>  <tt class="py-line">    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_resourceDesc</tt> <tt class="py-op">=</tt> <tt class="py-name">resourceDesc</tt> </tt>
-<a name="L997"></a><tt class="py-lineno"> 997</tt>  <tt class="py-line">    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_rootDesc</tt> <tt class="py-op">=</tt> <tt class="py-name">rootDesc</tt> </tt>
-<a name="L998"></a><tt class="py-lineno"> 998</tt>  <tt class="py-line">    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_schema</tt> <tt class="py-op">=</tt> <tt id="link-251" class="py-name"><a title="googleapiclient.schema" class="py-name" href="#" onclick="return doclink('link-251', 'schema', 'link-48');">schema</a></tt> </tt>
-<a name="L999"></a><tt class="py-lineno"> 999</tt>  <tt class="py-line"> </tt>
-<a name="L1000"></a><tt class="py-lineno">1000</tt>  <tt class="py-line">    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-252" class="py-name" targets="Method googleapiclient.discovery.Resource._set_service_methods()=googleapiclient.discovery.Resource-class.html#_set_service_methods"><a title="googleapiclient.discovery.Resource._set_service_methods" class="py-name" href="#" onclick="return doclink('link-252', '_set_service_methods', 'link-252');">_set_service_methods</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L1001"></a><tt class="py-lineno">1001</tt>  <tt class="py-line"> </tt>
-<a name="Resource._set_dynamic_attr"></a><div id="Resource._set_dynamic_attr-def"><a name="L1002"></a><tt class="py-lineno">1002</tt> <a class="py-toggle" href="#" id="Resource._set_dynamic_attr-toggle" onclick="return toggle('Resource._set_dynamic_attr');">-</a><tt class="py-line">  <tt class="py-keyword">def</tt> <a class="py-def-name" href="googleapiclient.discovery.Resource-class.html#_set_dynamic_attr">_set_dynamic_attr</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">attr_name</tt><tt class="py-op">,</tt> <tt class="py-param">value</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="Resource._set_dynamic_attr-collapsed" style="display:none;" pad="++++" indent="++++++"></div><div id="Resource._set_dynamic_attr-expanded"><a name="L1003"></a><tt class="py-lineno">1003</tt>  <tt class="py-line">    <tt class="py-docstring">"""Sets an instance attribute and tracks it in a list of dynamic attributes.</tt> </tt>
-<a name="L1004"></a><tt class="py-lineno">1004</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L1005"></a><tt class="py-lineno">1005</tt>  <tt class="py-line"><tt class="py-docstring">    Args:</tt> </tt>
-<a name="L1006"></a><tt class="py-lineno">1006</tt>  <tt class="py-line"><tt class="py-docstring">      attr_name: string; The name of the attribute to be set</tt> </tt>
-<a name="L1007"></a><tt class="py-lineno">1007</tt>  <tt class="py-line"><tt class="py-docstring">      value: The value being set on the object and tracked in the dynamic cache.</tt> </tt>
-<a name="L1008"></a><tt class="py-lineno">1008</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
-<a name="L1009"></a><tt class="py-lineno">1009</tt>  <tt class="py-line">    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_dynamic_attrs</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-name">attr_name</tt><tt class="py-op">)</tt> </tt>
-<a name="L1010"></a><tt class="py-lineno">1010</tt>  <tt class="py-line">    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__dict__</tt><tt class="py-op">[</tt><tt class="py-name">attr_name</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">value</tt> </tt>
-</div><a name="L1011"></a><tt class="py-lineno">1011</tt>  <tt class="py-line"> </tt>
-<a name="Resource.__getstate__"></a><div id="Resource.__getstate__-def"><a name="L1012"></a><tt class="py-lineno">1012</tt> <a class="py-toggle" href="#" id="Resource.__getstate__-toggle" onclick="return toggle('Resource.__getstate__');">-</a><tt class="py-line">  <tt class="py-keyword">def</tt> <a class="py-def-name" href="googleapiclient.discovery.Resource-class.html#__getstate__">__getstate__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="Resource.__getstate__-collapsed" style="display:none;" pad="++++" indent="++++++"></div><div id="Resource.__getstate__-expanded"><a name="L1013"></a><tt class="py-lineno">1013</tt>  <tt class="py-line">    <tt class="py-docstring">"""Trim the state down to something that can be pickled.</tt> </tt>
-<a name="L1014"></a><tt class="py-lineno">1014</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L1015"></a><tt class="py-lineno">1015</tt>  <tt class="py-line"><tt class="py-docstring">    Uses the fact that the instance variable _dynamic_attrs holds attrs that</tt> </tt>
-<a name="L1016"></a><tt class="py-lineno">1016</tt>  <tt class="py-line"><tt class="py-docstring">    will be wiped and restored on pickle serialization.</tt> </tt>
-<a name="L1017"></a><tt class="py-lineno">1017</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
-<a name="L1018"></a><tt class="py-lineno">1018</tt>  <tt class="py-line">    <tt class="py-name">state_dict</tt> <tt class="py-op">=</tt> <tt class="py-name">copy</tt><tt class="py-op">.</tt><tt class="py-name">copy</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__dict__</tt><tt class="py-op">)</tt> </tt>
-<a name="L1019"></a><tt class="py-lineno">1019</tt>  <tt class="py-line">    <tt class="py-keyword">for</tt> <tt class="py-name">dynamic_attr</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_dynamic_attrs</tt><tt class="py-op">:</tt> </tt>
-<a name="L1020"></a><tt class="py-lineno">1020</tt>  <tt class="py-line">      <tt class="py-keyword">del</tt> <tt class="py-name">state_dict</tt><tt class="py-op">[</tt><tt class="py-name">dynamic_attr</tt><tt class="py-op">]</tt> </tt>
-<a name="L1021"></a><tt class="py-lineno">1021</tt>  <tt class="py-line">    <tt class="py-keyword">del</tt> <tt class="py-name">state_dict</tt><tt class="py-op">[</tt><tt class="py-string">'_dynamic_attrs'</tt><tt class="py-op">]</tt> </tt>
-<a name="L1022"></a><tt class="py-lineno">1022</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-name">state_dict</tt> </tt>
-</div><a name="L1023"></a><tt class="py-lineno">1023</tt>  <tt class="py-line"> </tt>
-<a name="Resource.__setstate__"></a><div id="Resource.__setstate__-def"><a name="L1024"></a><tt class="py-lineno">1024</tt> <a class="py-toggle" href="#" id="Resource.__setstate__-toggle" onclick="return toggle('Resource.__setstate__');">-</a><tt class="py-line">  <tt class="py-keyword">def</tt> <a class="py-def-name" href="googleapiclient.discovery.Resource-class.html#__setstate__">__setstate__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">state</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="Resource.__setstate__-collapsed" style="display:none;" pad="++++" indent="++++++"></div><div id="Resource.__setstate__-expanded"><a name="L1025"></a><tt class="py-lineno">1025</tt>  <tt class="py-line">    <tt class="py-docstring">"""Reconstitute the state of the object from being pickled.</tt> </tt>
-<a name="L1026"></a><tt class="py-lineno">1026</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L1027"></a><tt class="py-lineno">1027</tt>  <tt class="py-line"><tt class="py-docstring">    Uses the fact that the instance variable _dynamic_attrs holds attrs that</tt> </tt>
-<a name="L1028"></a><tt class="py-lineno">1028</tt>  <tt class="py-line"><tt class="py-docstring">    will be wiped and restored on pickle serialization.</tt> </tt>
-<a name="L1029"></a><tt class="py-lineno">1029</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
-<a name="L1030"></a><tt class="py-lineno">1030</tt>  <tt class="py-line">    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__dict__</tt><tt class="py-op">.</tt><tt id="link-253" class="py-name"><a title="googleapiclient.channel.Channel.update" class="py-name" href="#" onclick="return doclink('link-253', 'update', 'link-140');">update</a></tt><tt class="py-op">(</tt><tt class="py-name">state</tt><tt class="py-op">)</tt> </tt>
-<a name="L1031"></a><tt class="py-lineno">1031</tt>  <tt class="py-line">    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_dynamic_attrs</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
-<a name="L1032"></a><tt class="py-lineno">1032</tt>  <tt class="py-line">    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-254" class="py-name"><a title="googleapiclient.discovery.Resource._set_service_methods" class="py-name" href="#" onclick="return doclink('link-254', '_set_service_methods', 'link-252');">_set_service_methods</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L1033"></a><tt class="py-lineno">1033</tt>  <tt class="py-line"> </tt>
-<a name="Resource._set_service_methods"></a><div id="Resource._set_service_methods-def"><a name="L1034"></a><tt class="py-lineno">1034</tt> <a class="py-toggle" href="#" id="Resource._set_service_methods-toggle" onclick="return toggle('Resource._set_service_methods');">-</a><tt class="py-line">  <tt class="py-keyword">def</tt> <a class="py-def-name" href="googleapiclient.discovery.Resource-class.html#_set_service_methods">_set_service_methods</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="Resource._set_service_methods-collapsed" style="display:none;" pad="++++" indent="++++++"></div><div id="Resource._set_service_methods-expanded"><a name="L1035"></a><tt class="py-lineno">1035</tt>  <tt class="py-line">    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-255" class="py-name" targets="Method googleapiclient.discovery.Resource._add_basic_methods()=googleapiclient.discovery.Resource-class.html#_add_basic_methods"><a title="googleapiclient.discovery.Resource._add_basic_methods" class="py-name" href="#" onclick="return doclink('link-255', '_add_basic_methods', 'link-255');">_add_basic_methods</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_resourceDesc</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_rootDesc</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_schema</tt><tt class="py-op">)</tt> </tt>
-<a name="L1036"></a><tt class="py-lineno">1036</tt>  <tt class="py-line">    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-256" class="py-name" targets="Method googleapiclient.discovery.Resource._add_nested_resources()=googleapiclient.discovery.Resource-class.html#_add_nested_resources"><a title="googleapiclient.discovery.Resource._add_nested_resources" class="py-name" href="#" onclick="return doclink('link-256', '_add_nested_resources', 'link-256');">_add_nested_resources</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_resourceDesc</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_rootDesc</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_schema</tt><tt class="py-op">)</tt> </tt>
-<a name="L1037"></a><tt class="py-lineno">1037</tt>  <tt class="py-line">    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-257" class="py-name" targets="Method googleapiclient.discovery.Resource._add_next_methods()=googleapiclient.discovery.Resource-class.html#_add_next_methods"><a title="googleapiclient.discovery.Resource._add_next_methods" class="py-name" href="#" onclick="return doclink('link-257', '_add_next_methods', 'link-257');">_add_next_methods</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_resourceDesc</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_schema</tt><tt class="py-op">)</tt> </tt>
+googleapiclient.model.Model.request" class="py-name" href="#" onclick="return doclink('link-253', 'request', 'link-97');">request</a></tt><tt class="py-op">.</tt><tt class="py-name">uri</tt> <tt class="py-op">=</tt> <tt class="py-name">uri</tt> </tt>
+<a name="L964"></a><tt class="py-lineno"> 964</tt>  <tt class="py-line"> </tt>
+<a name="L965"></a><tt class="py-lineno"> 965</tt>  <tt class="py-line">    <tt id="link-254" class="py-name"><a title="googleapiclient.discovery.logger" class="py-name" href="#" onclick="return doclink('link-254', 'logger', 'link-52');">logger</a></tt><tt class="py-op">.</tt><tt class="py-name">info</tt><tt class="py-op">(</tt><tt class="py-string">'URL being requested: %s %s'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">methodName</tt><tt class="py-op">,</tt><tt class="py-name">uri</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L966"></a><tt class="py-lineno"> 966</tt>  <tt class="py-line"> </tt>
+<a name="L967"></a><tt class="py-lineno"> 967</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt id="link-255" class="py-name"><a title="googleapiclient.http.HttpMock.request
+googleapiclient.http.HttpMockSequence.request
+googleapiclient.model.BaseModel.request
+googleapiclient.model.Model.request" class="py-name" href="#" onclick="return doclink('link-255', 'request', 'link-97');">request</a></tt> </tt>
+</div><a name="L968"></a><tt class="py-lineno"> 968</tt>  <tt class="py-line"> </tt>
+<a name="L969"></a><tt class="py-lineno"> 969</tt>  <tt class="py-line">  <tt class="py-keyword">return</tt> <tt class="py-op">(</tt><tt class="py-name">methodName</tt><tt class="py-op">,</tt> <tt class="py-name">methodNext</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L970"></a><tt class="py-lineno"> 970</tt>  <tt class="py-line"> </tt>
+<a name="Resource"></a><div id="Resource-def"><a name="L971"></a><tt class="py-lineno"> 971</tt>  <tt class="py-line"> </tt>
+<a name="L972"></a><tt class="py-lineno"> 972</tt> <a class="py-toggle" href="#" id="Resource-toggle" onclick="return toggle('Resource');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="googleapiclient.discovery.Resource-class.html">Resource</a><tt class="py-op">(</tt><tt class="py-base-class">object</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="Resource-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="Resource-expanded"><a name="L973"></a><tt class="py-lineno"> 973</tt>  <tt class="py-line">  <tt class="py-docstring">"""A class for interacting with a resource."""</tt> </tt>
+<a name="L974"></a><tt class="py-lineno"> 974</tt>  <tt class="py-line"> </tt>
+<a name="Resource.__init__"></a><div id="Resource.__init__-def"><a name="L975"></a><tt class="py-lineno"> 975</tt> <a class="py-toggle" href="#" id="Resource.__init__-toggle" onclick="return toggle('Resource.__init__');">-</a><tt class="py-line">  <tt class="py-keyword">def</tt> <a class="py-def-name" href="googleapiclient.discovery.Resource-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">http</tt><tt class="py-op">,</tt> <tt class="py-param">baseUrl</tt><tt class="py-op">,</tt> <tt class="py-param">model</tt><tt class="py-op">,</tt> <tt class="py-param">requestBuilder</tt><tt class="py-op">,</tt> <tt class="py-param">developerKey</tt><tt class="py-op">,</tt> </tt>
+<a name="L976"></a><tt class="py-lineno"> 976</tt>  <tt class="py-line">               <tt class="py-param">resourceDesc</tt><tt class="py-op">,</tt> <tt class="py-param">rootDesc</tt><tt class="py-op">,</tt> <tt class="py-param">schema</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="Resource.__init__-collapsed" style="display:none;" pad="++++" indent="++++++"></div><div id="Resource.__init__-expanded"><a name="L977"></a><tt class="py-lineno"> 977</tt>  <tt class="py-line">    <tt class="py-docstring">"""Build a Resource from the API description.</tt> </tt>
+<a name="L978"></a><tt class="py-lineno"> 978</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L979"></a><tt class="py-lineno"> 979</tt>  <tt class="py-line"><tt class="py-docstring">    Args:</tt> </tt>
+<a name="L980"></a><tt class="py-lineno"> 980</tt>  <tt class="py-line"><tt class="py-docstring">      http: httplib2.Http, Object to make http requests with.</tt> </tt>
+<a name="L981"></a><tt class="py-lineno"> 981</tt>  <tt class="py-line"><tt class="py-docstring">      baseUrl: string, base URL for the API. All requests are relative to this</tt> </tt>
+<a name="L982"></a><tt class="py-lineno"> 982</tt>  <tt class="py-line"><tt class="py-docstring">          URI.</tt> </tt>
+<a name="L983"></a><tt class="py-lineno"> 983</tt>  <tt class="py-line"><tt class="py-docstring">      model: googleapiclient.Model, converts to and from the wire format.</tt> </tt>
+<a name="L984"></a><tt class="py-lineno"> 984</tt>  <tt class="py-line"><tt class="py-docstring">      requestBuilder: class or callable that instantiates an</tt> </tt>
+<a name="L985"></a><tt class="py-lineno"> 985</tt>  <tt class="py-line"><tt class="py-docstring">          googleapiclient.HttpRequest object.</tt> </tt>
+<a name="L986"></a><tt class="py-lineno"> 986</tt>  <tt class="py-line"><tt class="py-docstring">      developerKey: string, key obtained from</tt> </tt>
+<a name="L987"></a><tt class="py-lineno"> 987</tt>  <tt class="py-line"><tt class="py-docstring">          https://code.google.com/apis/console</tt> </tt>
+<a name="L988"></a><tt class="py-lineno"> 988</tt>  <tt class="py-line"><tt class="py-docstring">      resourceDesc: object, section of deserialized discovery document that</tt> </tt>
+<a name="L989"></a><tt class="py-lineno"> 989</tt>  <tt class="py-line"><tt class="py-docstring">          describes a resource. Note that the top level discovery document</tt> </tt>
+<a name="L990"></a><tt class="py-lineno"> 990</tt>  <tt class="py-line"><tt class="py-docstring">          is considered a resource.</tt> </tt>
+<a name="L991"></a><tt class="py-lineno"> 991</tt>  <tt class="py-line"><tt class="py-docstring">      rootDesc: object, the entire deserialized discovery document.</tt> </tt>
+<a name="L992"></a><tt class="py-lineno"> 992</tt>  <tt class="py-line"><tt class="py-docstring">      schema: object, mapping of schema names to schema descriptions.</tt> </tt>
+<a name="L993"></a><tt class="py-lineno"> 993</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
+<a name="L994"></a><tt class="py-lineno"> 994</tt>  <tt class="py-line">    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_dynamic_attrs</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
+<a name="L995"></a><tt class="py-lineno"> 995</tt>  <tt class="py-line"> </tt>
+<a name="L996"></a><tt class="py-lineno"> 996</tt>  <tt class="py-line">    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_http</tt> <tt class="py-op">=</tt> <tt id="link-256" class="py-name"><a title="googleapiclient.http" class="py-name" href="#" onclick="return doclink('link-256', 'http', 'link-23');">http</a></tt> </tt>
+<a name="L997"></a><tt class="py-lineno"> 997</tt>  <tt class="py-line">    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_baseUrl</tt> <tt class="py-op">=</tt> <tt class="py-name">baseUrl</tt> </tt>
+<a name="L998"></a><tt class="py-lineno"> 998</tt>  <tt class="py-line">    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_model</tt> <tt class="py-op">=</tt> <tt id="link-257" class="py-name"><a title="googleapiclient.model" class="py-name" href="#" onclick="return doclink('link-257', 'model', 'link-41');">model</a></tt> </tt>
+<a name="L999"></a><tt class="py-lineno"> 999</tt>  <tt class="py-line">    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_developerKey</tt> <tt class="py-op">=</tt> <tt class="py-name">developerKey</tt> </tt>
+<a name="L1000"></a><tt class="py-lineno">1000</tt>  <tt class="py-line">    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_requestBuilder</tt> <tt class="py-op">=</tt> <tt class="py-name">requestBuilder</tt> </tt>
+<a name="L1001"></a><tt class="py-lineno">1001</tt>  <tt class="py-line">    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_resourceDesc</tt> <tt class="py-op">=</tt> <tt class="py-name">resourceDesc</tt> </tt>
+<a name="L1002"></a><tt class="py-lineno">1002</tt>  <tt class="py-line">    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_rootDesc</tt> <tt class="py-op">=</tt> <tt class="py-name">rootDesc</tt> </tt>
+<a name="L1003"></a><tt class="py-lineno">1003</tt>  <tt class="py-line">    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_schema</tt> <tt class="py-op">=</tt> <tt id="link-258" class="py-name"><a title="googleapiclient.schema" class="py-name" href="#" onclick="return doclink('link-258', 'schema', 'link-50');">schema</a></tt> </tt>
+<a name="L1004"></a><tt class="py-lineno">1004</tt>  <tt class="py-line"> </tt>
+<a name="L1005"></a><tt class="py-lineno">1005</tt>  <tt class="py-line">    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-259" class="py-name" targets="Method googleapiclient.discovery.Resource._set_service_methods()=googleapiclient.discovery.Resource-class.html#_set_service_methods"><a title="googleapiclient.discovery.Resource._set_service_methods" class="py-name" href="#" onclick="return doclink('link-259', '_set_service_methods', 'link-259');">_set_service_methods</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L1006"></a><tt class="py-lineno">1006</tt>  <tt class="py-line"> </tt>
+<a name="Resource._set_dynamic_attr"></a><div id="Resource._set_dynamic_attr-def"><a name="L1007"></a><tt class="py-lineno">1007</tt> <a class="py-toggle" href="#" id="Resource._set_dynamic_attr-toggle" onclick="return toggle('Resource._set_dynamic_attr');">-</a><tt class="py-line">  <tt class="py-keyword">def</tt> <a class="py-def-name" href="googleapiclient.discovery.Resource-class.html#_set_dynamic_attr">_set_dynamic_attr</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">attr_name</tt><tt class="py-op">,</tt> <tt class="py-param">value</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="Resource._set_dynamic_attr-collapsed" style="display:none;" pad="++++" indent="++++++"></div><div id="Resource._set_dynamic_attr-expanded"><a name="L1008"></a><tt class="py-lineno">1008</tt>  <tt class="py-line">    <tt class="py-docstring">"""Sets an instance attribute and tracks it in a list of dynamic attributes.</tt> </tt>
+<a name="L1009"></a><tt class="py-lineno">1009</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L1010"></a><tt class="py-lineno">1010</tt>  <tt class="py-line"><tt class="py-docstring">    Args:</tt> </tt>
+<a name="L1011"></a><tt class="py-lineno">1011</tt>  <tt class="py-line"><tt class="py-docstring">      attr_name: string; The name of the attribute to be set</tt> </tt>
+<a name="L1012"></a><tt class="py-lineno">1012</tt>  <tt class="py-line"><tt class="py-docstring">      value: The value being set on the object and tracked in the dynamic cache.</tt> </tt>
+<a name="L1013"></a><tt class="py-lineno">1013</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
+<a name="L1014"></a><tt class="py-lineno">1014</tt>  <tt class="py-line">    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_dynamic_attrs</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-name">attr_name</tt><tt class="py-op">)</tt> </tt>
+<a name="L1015"></a><tt class="py-lineno">1015</tt>  <tt class="py-line">    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__dict__</tt><tt class="py-op">[</tt><tt class="py-name">attr_name</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">value</tt> </tt>
+</div><a name="L1016"></a><tt class="py-lineno">1016</tt>  <tt class="py-line"> </tt>
+<a name="Resource.__getstate__"></a><div id="Resource.__getstate__-def"><a name="L1017"></a><tt class="py-lineno">1017</tt> <a class="py-toggle" href="#" id="Resource.__getstate__-toggle" onclick="return toggle('Resource.__getstate__');">-</a><tt class="py-line">  <tt class="py-keyword">def</tt> <a class="py-def-name" href="googleapiclient.discovery.Resource-class.html#__getstate__">__getstate__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="Resource.__getstate__-collapsed" style="display:none;" pad="++++" indent="++++++"></div><div id="Resource.__getstate__-expanded"><a name="L1018"></a><tt class="py-lineno">1018</tt>  <tt class="py-line">    <tt class="py-docstring">"""Trim the state down to something that can be pickled.</tt> </tt>
+<a name="L1019"></a><tt class="py-lineno">1019</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L1020"></a><tt class="py-lineno">1020</tt>  <tt class="py-line"><tt class="py-docstring">    Uses the fact that the instance variable _dynamic_attrs holds attrs that</tt> </tt>
+<a name="L1021"></a><tt class="py-lineno">1021</tt>  <tt class="py-line"><tt class="py-docstring">    will be wiped and restored on pickle serialization.</tt> </tt>
+<a name="L1022"></a><tt class="py-lineno">1022</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
+<a name="L1023"></a><tt class="py-lineno">1023</tt>  <tt class="py-line">    <tt class="py-name">state_dict</tt> <tt class="py-op">=</tt> <tt class="py-name">copy</tt><tt class="py-op">.</tt><tt class="py-name">copy</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__dict__</tt><tt class="py-op">)</tt> </tt>
+<a name="L1024"></a><tt class="py-lineno">1024</tt>  <tt class="py-line">    <tt class="py-keyword">for</tt> <tt class="py-name">dynamic_attr</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_dynamic_attrs</tt><tt class="py-op">:</tt> </tt>
+<a name="L1025"></a><tt class="py-lineno">1025</tt>  <tt class="py-line">      <tt class="py-keyword">del</tt> <tt class="py-name">state_dict</tt><tt class="py-op">[</tt><tt class="py-name">dynamic_attr</tt><tt class="py-op">]</tt> </tt>
+<a name="L1026"></a><tt class="py-lineno">1026</tt>  <tt class="py-line">    <tt class="py-keyword">del</tt> <tt class="py-name">state_dict</tt><tt class="py-op">[</tt><tt class="py-string">'_dynamic_attrs'</tt><tt class="py-op">]</tt> </tt>
+<a name="L1027"></a><tt class="py-lineno">1027</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-name">state_dict</tt> </tt>
+</div><a name="L1028"></a><tt class="py-lineno">1028</tt>  <tt class="py-line"> </tt>
+<a name="Resource.__setstate__"></a><div id="Resource.__setstate__-def"><a name="L1029"></a><tt class="py-lineno">1029</tt> <a class="py-toggle" href="#" id="Resource.__setstate__-toggle" onclick="return toggle('Resource.__setstate__');">-</a><tt class="py-line">  <tt class="py-keyword">def</tt> <a class="py-def-name" href="googleapiclient.discovery.Resource-class.html#__setstate__">__setstate__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">state</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="Resource.__setstate__-collapsed" style="display:none;" pad="++++" indent="++++++"></div><div id="Resource.__setstate__-expanded"><a name="L1030"></a><tt class="py-lineno">1030</tt>  <tt class="py-line">    <tt class="py-docstring">"""Reconstitute the state of the object from being pickled.</tt> </tt>
+<a name="L1031"></a><tt class="py-lineno">1031</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L1032"></a><tt class="py-lineno">1032</tt>  <tt class="py-line"><tt class="py-docstring">    Uses the fact that the instance variable _dynamic_attrs holds attrs that</tt> </tt>
+<a name="L1033"></a><tt class="py-lineno">1033</tt>  <tt class="py-line"><tt class="py-docstring">    will be wiped and restored on pickle serialization.</tt> </tt>
+<a name="L1034"></a><tt class="py-lineno">1034</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
+<a name="L1035"></a><tt class="py-lineno">1035</tt>  <tt class="py-line">    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__dict__</tt><tt class="py-op">.</tt><tt id="link-260" class="py-name"><a title="googleapiclient.channel.Channel.update" class="py-name" href="#" onclick="return doclink('link-260', 'update', 'link-147');">update</a></tt><tt class="py-op">(</tt><tt class="py-name">state</tt><tt class="py-op">)</tt> </tt>
+<a name="L1036"></a><tt class="py-lineno">1036</tt>  <tt class="py-line">    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_dynamic_attrs</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
+<a name="L1037"></a><tt class="py-lineno">1037</tt>  <tt class="py-line">    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-261" class="py-name"><a title="googleapiclient.discovery.Resource._set_service_methods" class="py-name" href="#" onclick="return doclink('link-261', '_set_service_methods', 'link-259');">_set_service_methods</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
 </div><a name="L1038"></a><tt class="py-lineno">1038</tt>  <tt class="py-line"> </tt>
-<a name="Resource._add_basic_methods"></a><div id="Resource._add_basic_methods-def"><a name="L1039"></a><tt class="py-lineno">1039</tt> <a class="py-toggle" href="#" id="Resource._add_basic_methods-toggle" onclick="return toggle('Resource._add_basic_methods');">-</a><tt class="py-line">  <tt class="py-keyword">def</tt> <a class="py-def-name" href="googleapiclient.discovery.Resource-class.html#_add_basic_methods">_add_basic_methods</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">resourceDesc</tt><tt class="py-op">,</tt> <tt class="py-param">rootDesc</tt><tt class="py-op">,</tt> <tt class="py-param">schema</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="Resource._add_basic_methods-collapsed" style="display:none;" pad="++++" indent="++++++"></div><div id="Resource._add_basic_methods-expanded"><a name="L1040"></a><tt class="py-lineno">1040</tt>  <tt class="py-line">    <tt class="py-comment"># If this is the root Resource, add a new_batch_http_request() method.</tt> </tt>
-<a name="L1041"></a><tt class="py-lineno">1041</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">resourceDesc</tt> <tt class="py-op">==</tt> <tt class="py-name">rootDesc</tt><tt class="py-op">:</tt> </tt>
-<a name="L1042"></a><tt class="py-lineno">1042</tt>  <tt class="py-line">      <tt class="py-name">batch_uri</tt> <tt class="py-op">=</tt> <tt class="py-string">'%s%s'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt> </tt>
-<a name="L1043"></a><tt class="py-lineno">1043</tt>  <tt class="py-line">        <tt class="py-name">rootDesc</tt><tt class="py-op">[</tt><tt class="py-string">'rootUrl'</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> <tt class="py-name">rootDesc</tt><tt class="py-op">.</tt><tt id="link-258" class="py-name"><a title="googleapiclient.discovery_cache.appengine_memcache.Cache.get
+<a name="Resource._set_service_methods"></a><div id="Resource._set_service_methods-def"><a name="L1039"></a><tt class="py-lineno">1039</tt> <a class="py-toggle" href="#" id="Resource._set_service_methods-toggle" onclick="return toggle('Resource._set_service_methods');">-</a><tt class="py-line">  <tt class="py-keyword">def</tt> <a class="py-def-name" href="googleapiclient.discovery.Resource-class.html#_set_service_methods">_set_service_methods</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="Resource._set_service_methods-collapsed" style="display:none;" pad="++++" indent="++++++"></div><div id="Resource._set_service_methods-expanded"><a name="L1040"></a><tt class="py-lineno">1040</tt>  <tt class="py-line">    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-262" class="py-name" targets="Method googleapiclient.discovery.Resource._add_basic_methods()=googleapiclient.discovery.Resource-class.html#_add_basic_methods"><a title="googleapiclient.discovery.Resource._add_basic_methods" class="py-name" href="#" onclick="return doclink('link-262', '_add_basic_methods', 'link-262');">_add_basic_methods</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_resourceDesc</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_rootDesc</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_schema</tt><tt class="py-op">)</tt> </tt>
+<a name="L1041"></a><tt class="py-lineno">1041</tt>  <tt class="py-line">    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-263" class="py-name" targets="Method googleapiclient.discovery.Resource._add_nested_resources()=googleapiclient.discovery.Resource-class.html#_add_nested_resources"><a title="googleapiclient.discovery.Resource._add_nested_resources" class="py-name" href="#" onclick="return doclink('link-263', '_add_nested_resources', 'link-263');">_add_nested_resources</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_resourceDesc</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_rootDesc</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_schema</tt><tt class="py-op">)</tt> </tt>
+<a name="L1042"></a><tt class="py-lineno">1042</tt>  <tt class="py-line">    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-264" class="py-name" targets="Method googleapiclient.discovery.Resource._add_next_methods()=googleapiclient.discovery.Resource-class.html#_add_next_methods"><a title="googleapiclient.discovery.Resource._add_next_methods" class="py-name" href="#" onclick="return doclink('link-264', '_add_next_methods', 'link-264');">_add_next_methods</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_resourceDesc</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_schema</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L1043"></a><tt class="py-lineno">1043</tt>  <tt class="py-line"> </tt>
+<a name="Resource._add_basic_methods"></a><div id="Resource._add_basic_methods-def"><a name="L1044"></a><tt class="py-lineno">1044</tt> <a class="py-toggle" href="#" id="Resource._add_basic_methods-toggle" onclick="return toggle('Resource._add_basic_methods');">-</a><tt class="py-line">  <tt class="py-keyword">def</tt> <a class="py-def-name" href="googleapiclient.discovery.Resource-class.html#_add_basic_methods">_add_basic_methods</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">resourceDesc</tt><tt class="py-op">,</tt> <tt class="py-param">rootDesc</tt><tt class="py-op">,</tt> <tt class="py-param">schema</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="Resource._add_basic_methods-collapsed" style="display:none;" pad="++++" indent="++++++"></div><div id="Resource._add_basic_methods-expanded"><a name="L1045"></a><tt class="py-lineno">1045</tt>  <tt class="py-line">    <tt class="py-comment"># If this is the root Resource, add a new_batch_http_request() method.</tt> </tt>
+<a name="L1046"></a><tt class="py-lineno">1046</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">resourceDesc</tt> <tt class="py-op">==</tt> <tt class="py-name">rootDesc</tt><tt class="py-op">:</tt> </tt>
+<a name="L1047"></a><tt class="py-lineno">1047</tt>  <tt class="py-line">      <tt class="py-name">batch_uri</tt> <tt class="py-op">=</tt> <tt class="py-string">'%s%s'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt> </tt>
+<a name="L1048"></a><tt class="py-lineno">1048</tt>  <tt class="py-line">        <tt class="py-name">rootDesc</tt><tt class="py-op">[</tt><tt class="py-string">'rootUrl'</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> <tt class="py-name">rootDesc</tt><tt class="py-op">.</tt><tt id="link-265" class="py-name"><a title="googleapiclient.discovery_cache.appengine_memcache.Cache.get
 googleapiclient.discovery_cache.base.Cache.get
 googleapiclient.discovery_cache.file_cache.Cache.get
-googleapiclient.schema.Schemas.get" class="py-name" href="#" onclick="return doclink('link-258', 'get', 'link-93');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">'batchPath'</tt><tt class="py-op">,</tt> <tt class="py-string">'batch'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L1044"></a><tt class="py-lineno">1044</tt>  <tt class="py-line">      <tt class="py-keyword">def</tt> <tt class="py-def-name">new_batch_http_request</tt><tt class="py-op">(</tt><tt class="py-param">callback</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="L1045"></a><tt class="py-lineno">1045</tt>  <tt class="py-line">        <tt class="py-docstring">"""Create a BatchHttpRequest object based on the discovery document.</tt> </tt>
-<a name="L1046"></a><tt class="py-lineno">1046</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L1047"></a><tt class="py-lineno">1047</tt>  <tt class="py-line"><tt class="py-docstring">        Args:</tt> </tt>
-<a name="L1048"></a><tt class="py-lineno">1048</tt>  <tt class="py-line"><tt class="py-docstring">          callback: callable, A callback to be called for each response, of the</tt> </tt>
-<a name="L1049"></a><tt class="py-lineno">1049</tt>  <tt class="py-line"><tt class="py-docstring">            form callback(id, response, exception). The first parameter is the</tt> </tt>
-<a name="L1050"></a><tt class="py-lineno">1050</tt>  <tt class="py-line"><tt class="py-docstring">            request id, and the second is the deserialized response object. The</tt> </tt>
-<a name="L1051"></a><tt class="py-lineno">1051</tt>  <tt class="py-line"><tt class="py-docstring">            third is an apiclient.errors.HttpError exception object if an HTTP</tt> </tt>
-<a name="L1052"></a><tt class="py-lineno">1052</tt>  <tt class="py-line"><tt class="py-docstring">            error occurred while processing the request, or None if no error</tt> </tt>
-<a name="L1053"></a><tt class="py-lineno">1053</tt>  <tt class="py-line"><tt class="py-docstring">            occurred.</tt> </tt>
-<a name="L1054"></a><tt class="py-lineno">1054</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L1055"></a><tt class="py-lineno">1055</tt>  <tt class="py-line"><tt class="py-docstring">        Returns:</tt> </tt>
-<a name="L1056"></a><tt class="py-lineno">1056</tt>  <tt class="py-line"><tt class="py-docstring">          A BatchHttpRequest object based on the discovery document.</tt> </tt>
-<a name="L1057"></a><tt class="py-lineno">1057</tt>  <tt class="py-line"><tt class="py-docstring">        """</tt> </tt>
-<a name="L1058"></a><tt class="py-lineno">1058</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt id="link-259" class="py-name"><a title="googleapiclient.http.BatchHttpRequest" class="py-name" href="#" onclick="return doclink('link-259', 'BatchHttpRequest', 'link-22');">BatchHttpRequest</a></tt><tt class="py-op">(</tt><tt class="py-name">callback</tt><tt class="py-op">=</tt><tt class="py-name">callback</tt><tt class="py-op">,</tt> <tt class="py-name">batch_uri</tt><tt class="py-op">=</tt><tt class="py-name">batch_uri</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L1059"></a><tt class="py-lineno">1059</tt>  <tt class="py-line">      <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-260" class="py-name" targets="Method googleapiclient.discovery.Resource._set_dynamic_attr()=googleapiclient.discovery.Resource-class.html#_set_dynamic_attr"><a title="googleapiclient.discovery.Resource._set_dynamic_attr" class="py-name" href="#" onclick="return doclink('link-260', '_set_dynamic_attr', 'link-260');">_set_dynamic_attr</a></tt><tt class="py-op">(</tt><tt class="py-string">'new_batch_http_request'</tt><tt class="py-op">,</tt> <tt class="py-name">new_batch_http_request</tt><tt class="py-op">)</tt> </tt>
-<a name="L1060"></a><tt class="py-lineno">1060</tt>  <tt class="py-line"> </tt>
-<a name="L1061"></a><tt class="py-lineno">1061</tt>  <tt class="py-line">    <tt class="py-comment"># Add basic methods to Resource</tt> </tt>
-<a name="L1062"></a><tt class="py-lineno">1062</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-string">'methods'</tt> <tt class="py-keyword">in</tt> <tt class="py-name">resourceDesc</tt><tt class="py-op">:</tt> </tt>
-<a name="L1063"></a><tt class="py-lineno">1063</tt>  <tt class="py-line">      <tt class="py-keyword">for</tt> <tt class="py-name">methodName</tt><tt class="py-op">,</tt> <tt class="py-name">methodDesc</tt> <tt class="py-keyword">in</tt> <tt class="py-name">six</tt><tt class="py-op">.</tt><tt class="py-name">iteritems</tt><tt class="py-op">(</tt><tt class="py-name">resourceDesc</tt><tt class="py-op">[</tt><tt class="py-string">'methods'</tt><tt class="py-op">]</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="L1064"></a><tt class="py-lineno">1064</tt>  <tt class="py-line">        <tt class="py-name">fixedMethodName</tt><tt class="py-op">,</tt> <tt class="py-name">method</tt> <tt class="py-op">=</tt> <tt id="link-261" class="py-name" targets="Function googleapiclient.discovery.createMethod()=googleapiclient.discovery-module.html#createMethod"><a title="googleapiclient.discovery.createMethod" class="py-name" href="#" onclick="return doclink('link-261', 'createMethod', 'link-261');">createMethod</a></tt><tt class="py-op">(</tt> </tt>
-<a name="L1065"></a><tt class="py-lineno">1065</tt>  <tt class="py-line">            <tt class="py-name">methodName</tt><tt class="py-op">,</tt> <tt class="py-name">methodDesc</tt><tt class="py-op">,</tt> <tt class="py-name">rootDesc</tt><tt class="py-op">,</tt> <tt id="link-262" class="py-name"><a title="googleapiclient.schema" class="py-name" href="#" onclick="return doclink('link-262', 'schema', 'link-48');">schema</a></tt><tt class="py-op">)</tt> </tt>
-<a name="L1066"></a><tt class="py-lineno">1066</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-263" class="py-name"><a title="googleapiclient.discovery.Resource._set_dynamic_attr" class="py-name" href="#" onclick="return doclink('link-263', '_set_dynamic_attr', 'link-260');">_set_dynamic_attr</a></tt><tt class="py-op">(</tt><tt class="py-name">fixedMethodName</tt><tt class="py-op">,</tt> </tt>
-<a name="L1067"></a><tt class="py-lineno">1067</tt>  <tt class="py-line">                               <tt class="py-name">method</tt><tt class="py-op">.</tt><tt class="py-name">__get__</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__class__</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L1068"></a><tt class="py-lineno">1068</tt>  <tt class="py-line">        <tt class="py-comment"># Add in _media methods. The functionality of the attached method will</tt> </tt>
-<a name="L1069"></a><tt class="py-lineno">1069</tt>  <tt class="py-line">        <tt class="py-comment"># change when it sees that the method name ends in _media.</tt> </tt>
-<a name="L1070"></a><tt class="py-lineno">1070</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">methodDesc</tt><tt class="py-op">.</tt><tt id="link-264" class="py-name"><a title="googleapiclient.discovery_cache.appengine_memcache.Cache.get
+googleapiclient.schema.Schemas.get" class="py-name" href="#" onclick="return doclink('link-265', 'get', 'link-94');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">'batchPath'</tt><tt class="py-op">,</tt> <tt class="py-string">'batch'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L1049"></a><tt class="py-lineno">1049</tt>  <tt class="py-line">      <tt class="py-keyword">def</tt> <tt class="py-def-name">new_batch_http_request</tt><tt class="py-op">(</tt><tt class="py-param">callback</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L1050"></a><tt class="py-lineno">1050</tt>  <tt class="py-line">        <tt class="py-docstring">"""Create a BatchHttpRequest object based on the discovery document.</tt> </tt>
+<a name="L1051"></a><tt class="py-lineno">1051</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L1052"></a><tt class="py-lineno">1052</tt>  <tt class="py-line"><tt class="py-docstring">        Args:</tt> </tt>
+<a name="L1053"></a><tt class="py-lineno">1053</tt>  <tt class="py-line"><tt class="py-docstring">          callback: callable, A callback to be called for each response, of the</tt> </tt>
+<a name="L1054"></a><tt class="py-lineno">1054</tt>  <tt class="py-line"><tt class="py-docstring">            form callback(id, response, exception). The first parameter is the</tt> </tt>
+<a name="L1055"></a><tt class="py-lineno">1055</tt>  <tt class="py-line"><tt class="py-docstring">            request id, and the second is the deserialized response object. The</tt> </tt>
+<a name="L1056"></a><tt class="py-lineno">1056</tt>  <tt class="py-line"><tt class="py-docstring">            third is an apiclient.errors.HttpError exception object if an HTTP</tt> </tt>
+<a name="L1057"></a><tt class="py-lineno">1057</tt>  <tt class="py-line"><tt class="py-docstring">            error occurred while processing the request, or None if no error</tt> </tt>
+<a name="L1058"></a><tt class="py-lineno">1058</tt>  <tt class="py-line"><tt class="py-docstring">            occurred.</tt> </tt>
+<a name="L1059"></a><tt class="py-lineno">1059</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L1060"></a><tt class="py-lineno">1060</tt>  <tt class="py-line"><tt class="py-docstring">        Returns:</tt> </tt>
+<a name="L1061"></a><tt class="py-lineno">1061</tt>  <tt class="py-line"><tt class="py-docstring">          A BatchHttpRequest object based on the discovery document.</tt> </tt>
+<a name="L1062"></a><tt class="py-lineno">1062</tt>  <tt class="py-line"><tt class="py-docstring">        """</tt> </tt>
+<a name="L1063"></a><tt class="py-lineno">1063</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt id="link-266" class="py-name"><a title="googleapiclient.http.BatchHttpRequest" class="py-name" href="#" onclick="return doclink('link-266', 'BatchHttpRequest', 'link-24');">BatchHttpRequest</a></tt><tt class="py-op">(</tt><tt class="py-name">callback</tt><tt class="py-op">=</tt><tt class="py-name">callback</tt><tt class="py-op">,</tt> <tt class="py-name">batch_uri</tt><tt class="py-op">=</tt><tt class="py-name">batch_uri</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L1064"></a><tt class="py-lineno">1064</tt>  <tt class="py-line">      <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-267" class="py-name" targets="Method googleapiclient.discovery.Resource._set_dynamic_attr()=googleapiclient.discovery.Resource-class.html#_set_dynamic_attr"><a title="googleapiclient.discovery.Resource._set_dynamic_attr" class="py-name" href="#" onclick="return doclink('link-267', '_set_dynamic_attr', 'link-267');">_set_dynamic_attr</a></tt><tt class="py-op">(</tt><tt class="py-string">'new_batch_http_request'</tt><tt class="py-op">,</tt> <tt class="py-name">new_batch_http_request</tt><tt class="py-op">)</tt> </tt>
+<a name="L1065"></a><tt class="py-lineno">1065</tt>  <tt class="py-line"> </tt>
+<a name="L1066"></a><tt class="py-lineno">1066</tt>  <tt class="py-line">    <tt class="py-comment"># Add basic methods to Resource</tt> </tt>
+<a name="L1067"></a><tt class="py-lineno">1067</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-string">'methods'</tt> <tt class="py-keyword">in</tt> <tt class="py-name">resourceDesc</tt><tt class="py-op">:</tt> </tt>
+<a name="L1068"></a><tt class="py-lineno">1068</tt>  <tt class="py-line">      <tt class="py-keyword">for</tt> <tt class="py-name">methodName</tt><tt class="py-op">,</tt> <tt class="py-name">methodDesc</tt> <tt class="py-keyword">in</tt> <tt class="py-name">six</tt><tt class="py-op">.</tt><tt class="py-name">iteritems</tt><tt class="py-op">(</tt><tt class="py-name">resourceDesc</tt><tt class="py-op">[</tt><tt class="py-string">'methods'</tt><tt class="py-op">]</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L1069"></a><tt class="py-lineno">1069</tt>  <tt class="py-line">        <tt class="py-name">fixedMethodName</tt><tt class="py-op">,</tt> <tt class="py-name">method</tt> <tt class="py-op">=</tt> <tt id="link-268" class="py-name" targets="Function googleapiclient.discovery.createMethod()=googleapiclient.discovery-module.html#createMethod"><a title="googleapiclient.discovery.createMethod" class="py-name" href="#" onclick="return doclink('link-268', 'createMethod', 'link-268');">createMethod</a></tt><tt class="py-op">(</tt> </tt>
+<a name="L1070"></a><tt class="py-lineno">1070</tt>  <tt class="py-line">            <tt class="py-name">methodName</tt><tt class="py-op">,</tt> <tt class="py-name">methodDesc</tt><tt class="py-op">,</tt> <tt class="py-name">rootDesc</tt><tt class="py-op">,</tt> <tt id="link-269" class="py-name"><a title="googleapiclient.schema" class="py-name" href="#" onclick="return doclink('link-269', 'schema', 'link-50');">schema</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L1071"></a><tt class="py-lineno">1071</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-270" class="py-name"><a title="googleapiclient.discovery.Resource._set_dynamic_attr" class="py-name" href="#" onclick="return doclink('link-270', '_set_dynamic_attr', 'link-267');">_set_dynamic_attr</a></tt><tt class="py-op">(</tt><tt class="py-name">fixedMethodName</tt><tt class="py-op">,</tt> </tt>
+<a name="L1072"></a><tt class="py-lineno">1072</tt>  <tt class="py-line">                               <tt class="py-name">method</tt><tt class="py-op">.</tt><tt class="py-name">__get__</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__class__</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L1073"></a><tt class="py-lineno">1073</tt>  <tt class="py-line">        <tt class="py-comment"># Add in _media methods. The functionality of the attached method will</tt> </tt>
+<a name="L1074"></a><tt class="py-lineno">1074</tt>  <tt class="py-line">        <tt class="py-comment"># change when it sees that the method name ends in _media.</tt> </tt>
+<a name="L1075"></a><tt class="py-lineno">1075</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">methodDesc</tt><tt class="py-op">.</tt><tt id="link-271" class="py-name"><a title="googleapiclient.discovery_cache.appengine_memcache.Cache.get
 googleapiclient.discovery_cache.base.Cache.get
 googleapiclient.discovery_cache.file_cache.Cache.get
-googleapiclient.schema.Schemas.get" class="py-name" href="#" onclick="return doclink('link-264', 'get', 'link-93');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">'supportsMediaDownload'</tt><tt class="py-op">,</tt> <tt class="py-name">False</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="L1071"></a><tt class="py-lineno">1071</tt>  <tt class="py-line">          <tt class="py-name">fixedMethodName</tt><tt class="py-op">,</tt> <tt class="py-name">method</tt> <tt class="py-op">=</tt> <tt id="link-265" class="py-name"><a title="googleapiclient.discovery.createMethod" class="py-name" href="#" onclick="return doclink('link-265', 'createMethod', 'link-261');">createMethod</a></tt><tt class="py-op">(</tt> </tt>
-<a name="L1072"></a><tt class="py-lineno">1072</tt>  <tt class="py-line">              <tt class="py-name">methodName</tt> <tt class="py-op">+</tt> <tt class="py-string">'_media'</tt><tt class="py-op">,</tt> <tt class="py-name">methodDesc</tt><tt class="py-op">,</tt> <tt class="py-name">rootDesc</tt><tt class="py-op">,</tt> <tt id="link-266" class="py-name"><a title="googleapiclient.schema" class="py-name" href="#" onclick="return doclink('link-266', 'schema', 'link-48');">schema</a></tt><tt class="py-op">)</tt> </tt>
-<a name="L1073"></a><tt class="py-lineno">1073</tt>  <tt class="py-line">          <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-267" class="py-name"><a title="googleapiclient.discovery.Resource._set_dynamic_attr" class="py-name" href="#" onclick="return doclink('link-267', '_set_dynamic_attr', 'link-260');">_set_dynamic_attr</a></tt><tt class="py-op">(</tt><tt class="py-name">fixedMethodName</tt><tt class="py-op">,</tt> </tt>
-<a name="L1074"></a><tt class="py-lineno">1074</tt>  <tt class="py-line">                                 <tt class="py-name">method</tt><tt class="py-op">.</tt><tt class="py-name">__get__</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__class__</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L1075"></a><tt class="py-lineno">1075</tt>  <tt class="py-line"> </tt>
-<a name="Resource._add_nested_resources"></a><div id="Resource._add_nested_resources-def"><a name="L1076"></a><tt class="py-lineno">1076</tt> <a class="py-toggle" href="#" id="Resource._add_nested_resources-toggle" onclick="return toggle('Resource._add_nested_resources');">-</a><tt class="py-line">  <tt class="py-keyword">def</tt> <a class="py-def-name" href="googleapiclient.discovery.Resource-class.html#_add_nested_resources">_add_nested_resources</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">resourceDesc</tt><tt class="py-op">,</tt> <tt class="py-param">rootDesc</tt><tt class="py-op">,</tt> <tt class="py-param">schema</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="Resource._add_nested_resources-collapsed" style="display:none;" pad="++++" indent="++++++"></div><div id="Resource._add_nested_resources-expanded"><a name="L1077"></a><tt class="py-lineno">1077</tt>  <tt class="py-line">    <tt class="py-comment"># Add in nested resources</tt> </tt>
-<a name="L1078"></a><tt class="py-lineno">1078</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-string">'resources'</tt> <tt class="py-keyword">in</tt> <tt class="py-name">resourceDesc</tt><tt class="py-op">:</tt> </tt>
-<a name="L1079"></a><tt class="py-lineno">1079</tt>  <tt class="py-line"> </tt>
-<a name="L1080"></a><tt class="py-lineno">1080</tt>  <tt class="py-line">      <tt class="py-keyword">def</tt> <tt class="py-def-name">createResourceMethod</tt><tt class="py-op">(</tt><tt class="py-param">methodName</tt><tt class="py-op">,</tt> <tt class="py-param">methodDesc</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="L1081"></a><tt class="py-lineno">1081</tt>  <tt class="py-line">        <tt class="py-docstring">"""Create a method on the Resource to access a nested Resource.</tt> </tt>
-<a name="L1082"></a><tt class="py-lineno">1082</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L1083"></a><tt class="py-lineno">1083</tt>  <tt class="py-line"><tt class="py-docstring">        Args:</tt> </tt>
-<a name="L1084"></a><tt class="py-lineno">1084</tt>  <tt class="py-line"><tt class="py-docstring">          methodName: string, name of the method to use.</tt> </tt>
-<a name="L1085"></a><tt class="py-lineno">1085</tt>  <tt class="py-line"><tt class="py-docstring">          methodDesc: object, fragment of deserialized discovery document that</tt> </tt>
-<a name="L1086"></a><tt class="py-lineno">1086</tt>  <tt class="py-line"><tt class="py-docstring">            describes the method.</tt> </tt>
-<a name="L1087"></a><tt class="py-lineno">1087</tt>  <tt class="py-line"><tt class="py-docstring">        """</tt> </tt>
-<a name="L1088"></a><tt class="py-lineno">1088</tt>  <tt class="py-line">        <tt class="py-name">methodName</tt> <tt class="py-op">=</tt> <tt id="link-268" class="py-name"><a title="googleapiclient.discovery.fix_method_name" class="py-name" href="#" onclick="return doclink('link-268', 'fix_method_name', 'link-175');">fix_method_name</a></tt><tt class="py-op">(</tt><tt class="py-name">methodName</tt><tt class="py-op">)</tt> </tt>
-<a name="L1089"></a><tt class="py-lineno">1089</tt>  <tt class="py-line"> </tt>
-<a name="L1090"></a><tt class="py-lineno">1090</tt>  <tt class="py-line">        <tt class="py-keyword">def</tt> <tt class="py-def-name">methodResource</tt><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="L1091"></a><tt class="py-lineno">1091</tt>  <tt class="py-line">          <tt class="py-keyword">return</tt> <tt id="link-269" class="py-name"><a title="googleapiclient.discovery.Resource" class="py-name" href="#" onclick="return doclink('link-269', 'Resource', 'link-123');">Resource</a></tt><tt class="py-op">(</tt><tt id="link-270" class="py-name"><a title="googleapiclient.http" class="py-name" href="#" onclick="return doclink('link-270', 'http', 'link-21');">http</a></tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_http</tt><tt class="py-op">,</tt> <tt class="py-name">baseUrl</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_baseUrl</tt><tt class="py-op">,</tt> </tt>
-<a name="L1092"></a><tt class="py-lineno">1092</tt>  <tt class="py-line">                          <tt id="link-271" class="py-name"><a title="googleapiclient.model" class="py-name" href="#" onclick="return doclink('link-271', 'model', 'link-39');">model</a></tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_model</tt><tt class="py-op">,</tt> <tt class="py-name">developerKey</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_developerKey</tt><tt class="py-op">,</tt> </tt>
-<a name="L1093"></a><tt class="py-lineno">1093</tt>  <tt class="py-line">                          <tt class="py-name">requestBuilder</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_requestBuilder</tt><tt class="py-op">,</tt> </tt>
-<a name="L1094"></a><tt class="py-lineno">1094</tt>  <tt class="py-line">                          <tt class="py-name">resourceDesc</tt><tt class="py-op">=</tt><tt class="py-name">methodDesc</tt><tt class="py-op">,</tt> <tt class="py-name">rootDesc</tt><tt class="py-op">=</tt><tt class="py-name">rootDesc</tt><tt class="py-op">,</tt> </tt>
-<a name="L1095"></a><tt class="py-lineno">1095</tt>  <tt class="py-line">                          <tt id="link-272" class="py-name"><a title="googleapiclient.schema" class="py-name" href="#" onclick="return doclink('link-272', 'schema', 'link-48');">schema</a></tt><tt class="py-op">=</tt><tt id="link-273" class="py-name"><a title="googleapiclient.schema" class="py-name" href="#" onclick="return doclink('link-273', 'schema', 'link-48');">schema</a></tt><tt class="py-op">)</tt> </tt>
-</div><a name="L1096"></a><tt class="py-lineno">1096</tt>  <tt class="py-line"> </tt>
-<a name="L1097"></a><tt class="py-lineno">1097</tt>  <tt class="py-line">        <tt class="py-name">setattr</tt><tt class="py-op">(</tt><tt class="py-name">methodResource</tt><tt class="py-op">,</tt> <tt class="py-string">'__doc__'</tt><tt class="py-op">,</tt> <tt class="py-string">'A collection resource.'</tt><tt class="py-op">)</tt> </tt>
-<a name="L1098"></a><tt class="py-lineno">1098</tt>  <tt class="py-line">        <tt class="py-name">setattr</tt><tt class="py-op">(</tt><tt class="py-name">methodResource</tt><tt class="py-op">,</tt> <tt class="py-string">'__is_resource__'</tt><tt class="py-op">,</tt> <tt class="py-name">True</tt><tt class="py-op">)</tt> </tt>
-<a name="L1099"></a><tt class="py-lineno">1099</tt>  <tt class="py-line"> </tt>
-<a name="L1100"></a><tt class="py-lineno">1100</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-op">(</tt><tt class="py-name">methodName</tt><tt class="py-op">,</tt> <tt class="py-name">methodResource</tt><tt class="py-op">)</tt> </tt>
+googleapiclient.schema.Schemas.get" class="py-name" href="#" onclick="return doclink('link-271', 'get', 'link-94');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">'supportsMediaDownload'</tt><tt class="py-op">,</tt> <tt class="py-name">False</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L1076"></a><tt class="py-lineno">1076</tt>  <tt class="py-line">          <tt class="py-name">fixedMethodName</tt><tt class="py-op">,</tt> <tt class="py-name">method</tt> <tt class="py-op">=</tt> <tt id="link-272" class="py-name"><a title="googleapiclient.discovery.createMethod" class="py-name" href="#" onclick="return doclink('link-272', 'createMethod', 'link-268');">createMethod</a></tt><tt class="py-op">(</tt> </tt>
+<a name="L1077"></a><tt class="py-lineno">1077</tt>  <tt class="py-line">              <tt class="py-name">methodName</tt> <tt class="py-op">+</tt> <tt class="py-string">'_media'</tt><tt class="py-op">,</tt> <tt class="py-name">methodDesc</tt><tt class="py-op">,</tt> <tt class="py-name">rootDesc</tt><tt class="py-op">,</tt> <tt id="link-273" class="py-name"><a title="googleapiclient.schema" class="py-name" href="#" onclick="return doclink('link-273', 'schema', 'link-50');">schema</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L1078"></a><tt class="py-lineno">1078</tt>  <tt class="py-line">          <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-274" class="py-name"><a title="googleapiclient.discovery.Resource._set_dynamic_attr" class="py-name" href="#" onclick="return doclink('link-274', '_set_dynamic_attr', 'link-267');">_set_dynamic_attr</a></tt><tt class="py-op">(</tt><tt class="py-name">fixedMethodName</tt><tt class="py-op">,</tt> </tt>
+<a name="L1079"></a><tt class="py-lineno">1079</tt>  <tt class="py-line">                                 <tt class="py-name">method</tt><tt class="py-op">.</tt><tt class="py-name">__get__</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__class__</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L1080"></a><tt class="py-lineno">1080</tt>  <tt class="py-line"> </tt>
+<a name="Resource._add_nested_resources"></a><div id="Resource._add_nested_resources-def"><a name="L1081"></a><tt class="py-lineno">1081</tt> <a class="py-toggle" href="#" id="Resource._add_nested_resources-toggle" onclick="return toggle('Resource._add_nested_resources');">-</a><tt class="py-line">  <tt class="py-keyword">def</tt> <a class="py-def-name" href="googleapiclient.discovery.Resource-class.html#_add_nested_resources">_add_nested_resources</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">resourceDesc</tt><tt class="py-op">,</tt> <tt class="py-param">rootDesc</tt><tt class="py-op">,</tt> <tt class="py-param">schema</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="Resource._add_nested_resources-collapsed" style="display:none;" pad="++++" indent="++++++"></div><div id="Resource._add_nested_resources-expanded"><a name="L1082"></a><tt class="py-lineno">1082</tt>  <tt class="py-line">    <tt class="py-comment"># Add in nested resources</tt> </tt>
+<a name="L1083"></a><tt class="py-lineno">1083</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-string">'resources'</tt> <tt class="py-keyword">in</tt> <tt class="py-name">resourceDesc</tt><tt class="py-op">:</tt> </tt>
+<a name="L1084"></a><tt class="py-lineno">1084</tt>  <tt class="py-line"> </tt>
+<a name="L1085"></a><tt class="py-lineno">1085</tt>  <tt class="py-line">      <tt class="py-keyword">def</tt> <tt class="py-def-name">createResourceMethod</tt><tt class="py-op">(</tt><tt class="py-param">methodName</tt><tt class="py-op">,</tt> <tt class="py-param">methodDesc</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L1086"></a><tt class="py-lineno">1086</tt>  <tt class="py-line">        <tt class="py-docstring">"""Create a method on the Resource to access a nested Resource.</tt> </tt>
+<a name="L1087"></a><tt class="py-lineno">1087</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L1088"></a><tt class="py-lineno">1088</tt>  <tt class="py-line"><tt class="py-docstring">        Args:</tt> </tt>
+<a name="L1089"></a><tt class="py-lineno">1089</tt>  <tt class="py-line"><tt class="py-docstring">          methodName: string, name of the method to use.</tt> </tt>
+<a name="L1090"></a><tt class="py-lineno">1090</tt>  <tt class="py-line"><tt class="py-docstring">          methodDesc: object, fragment of deserialized discovery document that</tt> </tt>
+<a name="L1091"></a><tt class="py-lineno">1091</tt>  <tt class="py-line"><tt class="py-docstring">            describes the method.</tt> </tt>
+<a name="L1092"></a><tt class="py-lineno">1092</tt>  <tt class="py-line"><tt class="py-docstring">        """</tt> </tt>
+<a name="L1093"></a><tt class="py-lineno">1093</tt>  <tt class="py-line">        <tt class="py-name">methodName</tt> <tt class="py-op">=</tt> <tt id="link-275" class="py-name"><a title="googleapiclient.discovery.fix_method_name" class="py-name" href="#" onclick="return doclink('link-275', 'fix_method_name', 'link-182');">fix_method_name</a></tt><tt class="py-op">(</tt><tt class="py-name">methodName</tt><tt class="py-op">)</tt> </tt>
+<a name="L1094"></a><tt class="py-lineno">1094</tt>  <tt class="py-line"> </tt>
+<a name="L1095"></a><tt class="py-lineno">1095</tt>  <tt class="py-line">        <tt class="py-keyword">def</tt> <tt class="py-def-name">methodResource</tt><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L1096"></a><tt class="py-lineno">1096</tt>  <tt class="py-line">          <tt class="py-keyword">return</tt> <tt id="link-276" class="py-name"><a title="googleapiclient.discovery.Resource" class="py-name" href="#" onclick="return doclink('link-276', 'Resource', 'link-130');">Resource</a></tt><tt class="py-op">(</tt><tt id="link-277" class="py-name"><a title="googleapiclient.http" class="py-name" href="#" onclick="return doclink('link-277', 'http', 'link-23');">http</a></tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_http</tt><tt class="py-op">,</tt> <tt class="py-name">baseUrl</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_baseUrl</tt><tt class="py-op">,</tt> </tt>
+<a name="L1097"></a><tt class="py-lineno">1097</tt>  <tt class="py-line">                          <tt id="link-278" class="py-name"><a title="googleapiclient.model" class="py-name" href="#" onclick="return doclink('link-278', 'model', 'link-41');">model</a></tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_model</tt><tt class="py-op">,</tt> <tt class="py-name">developerKey</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_developerKey</tt><tt class="py-op">,</tt> </tt>
+<a name="L1098"></a><tt class="py-lineno">1098</tt>  <tt class="py-line">                          <tt class="py-name">requestBuilder</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_requestBuilder</tt><tt class="py-op">,</tt> </tt>
+<a name="L1099"></a><tt class="py-lineno">1099</tt>  <tt class="py-line">                          <tt class="py-name">resourceDesc</tt><tt class="py-op">=</tt><tt class="py-name">methodDesc</tt><tt class="py-op">,</tt> <tt class="py-name">rootDesc</tt><tt class="py-op">=</tt><tt class="py-name">rootDesc</tt><tt class="py-op">,</tt> </tt>
+<a name="L1100"></a><tt class="py-lineno">1100</tt>  <tt class="py-line">                          <tt id="link-279" class="py-name"><a title="googleapiclient.schema" class="py-name" href="#" onclick="return doclink('link-279', 'schema', 'link-50');">schema</a></tt><tt class="py-op">=</tt><tt id="link-280" class="py-name"><a title="googleapiclient.schema" class="py-name" href="#" onclick="return doclink('link-280', 'schema', 'link-50');">schema</a></tt><tt class="py-op">)</tt> </tt>
 </div><a name="L1101"></a><tt class="py-lineno">1101</tt>  <tt class="py-line"> </tt>
-<a name="L1102"></a><tt class="py-lineno">1102</tt>  <tt class="py-line">      <tt class="py-keyword">for</tt> <tt class="py-name">methodName</tt><tt class="py-op">,</tt> <tt class="py-name">methodDesc</tt> <tt class="py-keyword">in</tt> <tt class="py-name">six</tt><tt class="py-op">.</tt><tt class="py-name">iteritems</tt><tt class="py-op">(</tt><tt class="py-name">resourceDesc</tt><tt class="py-op">[</tt><tt class="py-string">'resources'</tt><tt class="py-op">]</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="L1103"></a><tt class="py-lineno">1103</tt>  <tt class="py-line">        <tt class="py-name">fixedMethodName</tt><tt class="py-op">,</tt> <tt class="py-name">method</tt> <tt class="py-op">=</tt> <tt class="py-name">createResourceMethod</tt><tt class="py-op">(</tt><tt class="py-name">methodName</tt><tt class="py-op">,</tt> <tt class="py-name">methodDesc</tt><tt class="py-op">)</tt> </tt>
-<a name="L1104"></a><tt class="py-lineno">1104</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-274" class="py-name"><a title="googleapiclient.discovery.Resource._set_dynamic_attr" class="py-name" href="#" onclick="return doclink('link-274', '_set_dynamic_attr', 'link-260');">_set_dynamic_attr</a></tt><tt class="py-op">(</tt><tt class="py-name">fixedMethodName</tt><tt class="py-op">,</tt> </tt>
-<a name="L1105"></a><tt class="py-lineno">1105</tt>  <tt class="py-line">                               <tt class="py-name">method</tt><tt class="py-op">.</tt><tt class="py-name">__get__</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__class__</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L1102"></a><tt class="py-lineno">1102</tt>  <tt class="py-line">        <tt class="py-name">setattr</tt><tt class="py-op">(</tt><tt class="py-name">methodResource</tt><tt class="py-op">,</tt> <tt class="py-string">'__doc__'</tt><tt class="py-op">,</tt> <tt class="py-string">'A collection resource.'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1103"></a><tt class="py-lineno">1103</tt>  <tt class="py-line">        <tt class="py-name">setattr</tt><tt class="py-op">(</tt><tt class="py-name">methodResource</tt><tt class="py-op">,</tt> <tt class="py-string">'__is_resource__'</tt><tt class="py-op">,</tt> <tt class="py-name">True</tt><tt class="py-op">)</tt> </tt>
+<a name="L1104"></a><tt class="py-lineno">1104</tt>  <tt class="py-line"> </tt>
+<a name="L1105"></a><tt class="py-lineno">1105</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-op">(</tt><tt class="py-name">methodName</tt><tt class="py-op">,</tt> <tt class="py-name">methodResource</tt><tt class="py-op">)</tt> </tt>
 </div><a name="L1106"></a><tt class="py-lineno">1106</tt>  <tt class="py-line"> </tt>
-<a name="Resource._add_next_methods"></a><div id="Resource._add_next_methods-def"><a name="L1107"></a><tt class="py-lineno">1107</tt> <a class="py-toggle" href="#" id="Resource._add_next_methods-toggle" onclick="return toggle('Resource._add_next_methods');">-</a><tt class="py-line">  <tt class="py-keyword">def</tt> <a class="py-def-name" href="googleapiclient.discovery.Resource-class.html#_add_next_methods">_add_next_methods</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">resourceDesc</tt><tt class="py-op">,</tt> <tt class="py-param">schema</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="Resource._add_next_methods-collapsed" style="display:none;" pad="++++" indent="++++++"></div><div id="Resource._add_next_methods-expanded"><a name="L1108"></a><tt class="py-lineno">1108</tt>  <tt class="py-line">    <tt class="py-comment"># Add _next() methods</tt> </tt>
-<a name="L1109"></a><tt class="py-lineno">1109</tt>  <tt class="py-line">    <tt class="py-comment"># Look for response bodies in schema that contain nextPageToken, and methods</tt> </tt>
-<a name="L1110"></a><tt class="py-lineno">1110</tt>  <tt class="py-line">    <tt class="py-comment"># that take a pageToken parameter.</tt> </tt>
-<a name="L1111"></a><tt class="py-lineno">1111</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-string">'methods'</tt> <tt class="py-keyword">in</tt> <tt class="py-name">resourceDesc</tt><tt class="py-op">:</tt> </tt>
-<a name="L1112"></a><tt class="py-lineno">1112</tt>  <tt class="py-line">      <tt class="py-keyword">for</tt> <tt class="py-name">methodName</tt><tt class="py-op">,</tt> <tt class="py-name">methodDesc</tt> <tt class="py-keyword">in</tt> <tt class="py-name">six</tt><tt class="py-op">.</tt><tt class="py-name">iteritems</tt><tt class="py-op">(</tt><tt class="py-name">resourceDesc</tt><tt class="py-op">[</tt><tt class="py-string">'methods'</tt><tt class="py-op">]</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="L1113"></a><tt class="py-lineno">1113</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-string">'response'</tt> <tt class="py-keyword">in</tt> <tt class="py-name">methodDesc</tt><tt class="py-op">:</tt> </tt>
-<a name="L1114"></a><tt class="py-lineno">1114</tt>  <tt class="py-line">          <tt class="py-name">responseSchema</tt> <tt class="py-op">=</tt> <tt class="py-name">methodDesc</tt><tt class="py-op">[</tt><tt class="py-string">'response'</tt><tt class="py-op">]</tt> </tt>
-<a name="L1115"></a><tt class="py-lineno">1115</tt>  <tt class="py-line">          <tt class="py-keyword">if</tt> <tt class="py-string">'$ref'</tt> <tt class="py-keyword">in</tt> <tt class="py-name">responseSchema</tt><tt class="py-op">:</tt> </tt>
-<a name="L1116"></a><tt class="py-lineno">1116</tt>  <tt class="py-line">            <tt class="py-name">responseSchema</tt> <tt class="py-op">=</tt> <tt id="link-275" class="py-name"><a title="googleapiclient.schema" class="py-name" href="#" onclick="return doclink('link-275', 'schema', 'link-48');">schema</a></tt><tt class="py-op">.</tt><tt id="link-276" class="py-name"><a title="googleapiclient.discovery_cache.appengine_memcache.Cache.get
+<a name="L1107"></a><tt class="py-lineno">1107</tt>  <tt class="py-line">      <tt class="py-keyword">for</tt> <tt class="py-name">methodName</tt><tt class="py-op">,</tt> <tt class="py-name">methodDesc</tt> <tt class="py-keyword">in</tt> <tt class="py-name">six</tt><tt class="py-op">.</tt><tt class="py-name">iteritems</tt><tt class="py-op">(</tt><tt class="py-name">resourceDesc</tt><tt class="py-op">[</tt><tt class="py-string">'resources'</tt><tt class="py-op">]</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L1108"></a><tt class="py-lineno">1108</tt>  <tt class="py-line">        <tt class="py-name">fixedMethodName</tt><tt class="py-op">,</tt> <tt class="py-name">method</tt> <tt class="py-op">=</tt> <tt class="py-name">createResourceMethod</tt><tt class="py-op">(</tt><tt class="py-name">methodName</tt><tt class="py-op">,</tt> <tt class="py-name">methodDesc</tt><tt class="py-op">)</tt> </tt>
+<a name="L1109"></a><tt class="py-lineno">1109</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-281" class="py-name"><a title="googleapiclient.discovery.Resource._set_dynamic_attr" class="py-name" href="#" onclick="return doclink('link-281', '_set_dynamic_attr', 'link-267');">_set_dynamic_attr</a></tt><tt class="py-op">(</tt><tt class="py-name">fixedMethodName</tt><tt class="py-op">,</tt> </tt>
+<a name="L1110"></a><tt class="py-lineno">1110</tt>  <tt class="py-line">                               <tt class="py-name">method</tt><tt class="py-op">.</tt><tt class="py-name">__get__</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__class__</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L1111"></a><tt class="py-lineno">1111</tt>  <tt class="py-line"> </tt>
+<a name="Resource._add_next_methods"></a><div id="Resource._add_next_methods-def"><a name="L1112"></a><tt class="py-lineno">1112</tt> <a class="py-toggle" href="#" id="Resource._add_next_methods-toggle" onclick="return toggle('Resource._add_next_methods');">-</a><tt class="py-line">  <tt class="py-keyword">def</tt> <a class="py-def-name" href="googleapiclient.discovery.Resource-class.html#_add_next_methods">_add_next_methods</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">resourceDesc</tt><tt class="py-op">,</tt> <tt class="py-param">schema</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="Resource._add_next_methods-collapsed" style="display:none;" pad="++++" indent="++++++"></div><div id="Resource._add_next_methods-expanded"><a name="L1113"></a><tt class="py-lineno">1113</tt>  <tt class="py-line">    <tt class="py-comment"># Add _next() methods</tt> </tt>
+<a name="L1114"></a><tt class="py-lineno">1114</tt>  <tt class="py-line">    <tt class="py-comment"># Look for response bodies in schema that contain nextPageToken, and methods</tt> </tt>
+<a name="L1115"></a><tt class="py-lineno">1115</tt>  <tt class="py-line">    <tt class="py-comment"># that take a pageToken parameter.</tt> </tt>
+<a name="L1116"></a><tt class="py-lineno">1116</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-string">'methods'</tt> <tt class="py-keyword">in</tt> <tt class="py-name">resourceDesc</tt><tt class="py-op">:</tt> </tt>
+<a name="L1117"></a><tt class="py-lineno">1117</tt>  <tt class="py-line">      <tt class="py-keyword">for</tt> <tt class="py-name">methodName</tt><tt class="py-op">,</tt> <tt class="py-name">methodDesc</tt> <tt class="py-keyword">in</tt> <tt class="py-name">six</tt><tt class="py-op">.</tt><tt class="py-name">iteritems</tt><tt class="py-op">(</tt><tt class="py-name">resourceDesc</tt><tt class="py-op">[</tt><tt class="py-string">'methods'</tt><tt class="py-op">]</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L1118"></a><tt class="py-lineno">1118</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-string">'response'</tt> <tt class="py-keyword">in</tt> <tt class="py-name">methodDesc</tt><tt class="py-op">:</tt> </tt>
+<a name="L1119"></a><tt class="py-lineno">1119</tt>  <tt class="py-line">          <tt class="py-name">responseSchema</tt> <tt class="py-op">=</tt> <tt class="py-name">methodDesc</tt><tt class="py-op">[</tt><tt class="py-string">'response'</tt><tt class="py-op">]</tt> </tt>
+<a name="L1120"></a><tt class="py-lineno">1120</tt>  <tt class="py-line">          <tt class="py-keyword">if</tt> <tt class="py-string">'$ref'</tt> <tt class="py-keyword">in</tt> <tt class="py-name">responseSchema</tt><tt class="py-op">:</tt> </tt>
+<a name="L1121"></a><tt class="py-lineno">1121</tt>  <tt class="py-line">            <tt class="py-name">responseSchema</tt> <tt class="py-op">=</tt> <tt id="link-282" class="py-name"><a title="googleapiclient.schema" class="py-name" href="#" onclick="return doclink('link-282', 'schema', 'link-50');">schema</a></tt><tt class="py-op">.</tt><tt id="link-283" class="py-name"><a title="googleapiclient.discovery_cache.appengine_memcache.Cache.get
 googleapiclient.discovery_cache.base.Cache.get
 googleapiclient.discovery_cache.file_cache.Cache.get
-googleapiclient.schema.Schemas.get" class="py-name" href="#" onclick="return doclink('link-276', 'get', 'link-93');">get</a></tt><tt class="py-op">(</tt><tt class="py-name">responseSchema</tt><tt class="py-op">[</tt><tt class="py-string">'$ref'</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
-<a name="L1117"></a><tt class="py-lineno">1117</tt>  <tt class="py-line">          <tt class="py-name">hasNextPageToken</tt> <tt class="py-op">=</tt> <tt class="py-string">'nextPageToken'</tt> <tt class="py-keyword">in</tt> <tt class="py-name">responseSchema</tt><tt class="py-op">.</tt><tt id="link-277" class="py-name"><a title="googleapiclient.discovery_cache.appengine_memcache.Cache.get
+googleapiclient.schema.Schemas.get" class="py-name" href="#" onclick="return doclink('link-283', 'get', 'link-94');">get</a></tt><tt class="py-op">(</tt><tt class="py-name">responseSchema</tt><tt class="py-op">[</tt><tt class="py-string">'$ref'</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L1122"></a><tt class="py-lineno">1122</tt>  <tt class="py-line">          <tt class="py-name">hasNextPageToken</tt> <tt class="py-op">=</tt> <tt class="py-string">'nextPageToken'</tt> <tt class="py-keyword">in</tt> <tt class="py-name">responseSchema</tt><tt class="py-op">.</tt><tt id="link-284" class="py-name"><a title="googleapiclient.discovery_cache.appengine_memcache.Cache.get
 googleapiclient.discovery_cache.base.Cache.get
 googleapiclient.discovery_cache.file_cache.Cache.get
-googleapiclient.schema.Schemas.get" class="py-name" href="#" onclick="return doclink('link-277', 'get', 'link-93');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">'properties'</tt><tt class="py-op">,</tt> </tt>
-<a name="L1118"></a><tt class="py-lineno">1118</tt>  <tt class="py-line">                                                                   <tt class="py-op">{</tt><tt class="py-op">}</tt><tt class="py-op">)</tt> </tt>
-<a name="L1119"></a><tt class="py-lineno">1119</tt>  <tt class="py-line">          <tt class="py-name">hasPageToken</tt> <tt class="py-op">=</tt> <tt class="py-string">'pageToken'</tt> <tt class="py-keyword">in</tt> <tt class="py-name">methodDesc</tt><tt class="py-op">.</tt><tt id="link-278" class="py-name"><a title="googleapiclient.discovery_cache.appengine_memcache.Cache.get
+googleapiclient.schema.Schemas.get" class="py-name" href="#" onclick="return doclink('link-284', 'get', 'link-94');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">'properties'</tt><tt class="py-op">,</tt> </tt>
+<a name="L1123"></a><tt class="py-lineno">1123</tt>  <tt class="py-line">                                                                   <tt class="py-op">{</tt><tt class="py-op">}</tt><tt class="py-op">)</tt> </tt>
+<a name="L1124"></a><tt class="py-lineno">1124</tt>  <tt class="py-line">          <tt class="py-name">hasPageToken</tt> <tt class="py-op">=</tt> <tt class="py-string">'pageToken'</tt> <tt class="py-keyword">in</tt> <tt class="py-name">methodDesc</tt><tt class="py-op">.</tt><tt id="link-285" class="py-name"><a title="googleapiclient.discovery_cache.appengine_memcache.Cache.get
 googleapiclient.discovery_cache.base.Cache.get
 googleapiclient.discovery_cache.file_cache.Cache.get
-googleapiclient.schema.Schemas.get" class="py-name" href="#" onclick="return doclink('link-278', 'get', 'link-93');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">'parameters'</tt><tt class="py-op">,</tt> <tt class="py-op">{</tt><tt class="py-op">}</tt><tt class="py-op">)</tt> </tt>
-<a name="L1120"></a><tt class="py-lineno">1120</tt>  <tt class="py-line">          <tt class="py-keyword">if</tt> <tt class="py-name">hasNextPageToken</tt> <tt class="py-keyword">and</tt> <tt class="py-name">hasPageToken</tt><tt class="py-op">:</tt> </tt>
-<a name="L1121"></a><tt class="py-lineno">1121</tt>  <tt class="py-line">            <tt class="py-name">fixedMethodName</tt><tt class="py-op">,</tt> <tt class="py-name">method</tt> <tt class="py-op">=</tt> <tt id="link-279" class="py-name" targets="Function googleapiclient.discovery.createNextMethod()=googleapiclient.discovery-module.html#createNextMethod"><a title="googleapiclient.discovery.createNextMethod" class="py-name" href="#" onclick="return doclink('link-279', 'createNextMethod', 'link-279');">createNextMethod</a></tt><tt class="py-op">(</tt><tt class="py-name">methodName</tt> <tt class="py-op">+</tt> <tt class="py-string">'_next'</tt><tt class="py-op">)</tt> </tt>
-<a name="L1122"></a><tt class="py-lineno">1122</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-280" class="py-name"><a title="googleapiclient.discovery.Resource._set_dynamic_attr" class="py-name" href="#" onclick="return doclink('link-280', '_set_dynamic_attr', 'link-260');">_set_dynamic_attr</a></tt><tt class="py-op">(</tt><tt class="py-name">fixedMethodName</tt><tt class="py-op">,</tt> </tt>
-<a name="L1123"></a><tt class="py-lineno">1123</tt>  <tt class="py-line">                                   <tt class="py-name">method</tt><tt class="py-op">.</tt><tt class="py-name">__get__</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__class__</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-</div></div><a name="L1124"></a><tt class="py-lineno">1124</tt>  <tt class="py-line"> </tt><script type="text/javascript">
+googleapiclient.schema.Schemas.get" class="py-name" href="#" onclick="return doclink('link-285', 'get', 'link-94');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">'parameters'</tt><tt class="py-op">,</tt> <tt class="py-op">{</tt><tt class="py-op">}</tt><tt class="py-op">)</tt> </tt>
+<a name="L1125"></a><tt class="py-lineno">1125</tt>  <tt class="py-line">          <tt class="py-keyword">if</tt> <tt class="py-name">hasNextPageToken</tt> <tt class="py-keyword">and</tt> <tt class="py-name">hasPageToken</tt><tt class="py-op">:</tt> </tt>
+<a name="L1126"></a><tt class="py-lineno">1126</tt>  <tt class="py-line">            <tt class="py-name">fixedMethodName</tt><tt class="py-op">,</tt> <tt class="py-name">method</tt> <tt class="py-op">=</tt> <tt id="link-286" class="py-name" targets="Function googleapiclient.discovery.createNextMethod()=googleapiclient.discovery-module.html#createNextMethod"><a title="googleapiclient.discovery.createNextMethod" class="py-name" href="#" onclick="return doclink('link-286', 'createNextMethod', 'link-286');">createNextMethod</a></tt><tt class="py-op">(</tt><tt class="py-name">methodName</tt> <tt class="py-op">+</tt> <tt class="py-string">'_next'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1127"></a><tt class="py-lineno">1127</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-287" class="py-name"><a title="googleapiclient.discovery.Resource._set_dynamic_attr" class="py-name" href="#" onclick="return doclink('link-287', '_set_dynamic_attr', 'link-267');">_set_dynamic_attr</a></tt><tt class="py-op">(</tt><tt class="py-name">fixedMethodName</tt><tt class="py-op">,</tt> </tt>
+<a name="L1128"></a><tt class="py-lineno">1128</tt>  <tt class="py-line">                                   <tt class="py-name">method</tt><tt class="py-op">.</tt><tt class="py-name">__get__</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__class__</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+</div></div><a name="L1129"></a><tt class="py-lineno">1129</tt>  <tt class="py-line"> </tt><script type="text/javascript">
 <!--
 expandto(location.href);
 // -->
@@ -1383,7 +1388,7 @@
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Tue Nov  1 17:02:50 2016
+    Generated by Epydoc 3.0.1 on Thu Jan  5 12:55:05 2017
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/epy/googleapiclient.discovery.Resource-class.html b/docs/epy/googleapiclient.discovery.Resource-class.html
index c60bac4..1326df1 100644
--- a/docs/epy/googleapiclient.discovery.Resource-class.html
+++ b/docs/epy/googleapiclient.discovery.Resource-class.html
@@ -59,10 +59,10 @@
 <h1 class="epydoc">Class Resource</h1><p class="nomargin-top"><span class="codelink"><a href="googleapiclient.discovery-pysrc.html#Resource">source&nbsp;code</a></span></p>
 <center>
 <center>  <map id="uml_class_diagram_for_googleap_4" name="uml_class_diagram_for_googleap_4">
-<area shape="rect" id="node1_3" href="googleapiclient.discovery.Resource-class.html#__init__" title="Build a Resource from the API description." alt="" coords="16,40,605,60"/>
-<area shape="rect" id="node1_4" href="googleapiclient.discovery.Resource-class.html#__getstate__" title="Trim the state down to something that can be pickled." alt="" coords="16,60,605,80"/>
-<area shape="rect" id="node1_5" href="googleapiclient.discovery.Resource-class.html#__setstate__" title="Reconstitute the state of the object from being pickled." alt="" coords="16,80,605,100"/>
-<area shape="rect" id="node1" href="googleapiclient.discovery.Resource-class.html" title="A class for interacting with a resource." alt="" coords="4,6,617,106"/>
+<area shape="rect" id="node1_3" href="googleapiclient.discovery.Resource-class.html#__init__" title="Build a Resource from the API description." alt="" coords="18,36,611,55"/>
+<area shape="rect" id="node1_4" href="googleapiclient.discovery.Resource-class.html#__getstate__" title="Trim the state down to something that can be pickled." alt="" coords="18,55,611,73"/>
+<area shape="rect" id="node1_5" href="googleapiclient.discovery.Resource-class.html#__setstate__" title="Reconstitute the state of the object from being pickled." alt="" coords="18,73,611,92"/>
+<area shape="rect" id="node1" href="googleapiclient.discovery.Resource-class.html" title="A class for interacting with a resource." alt="" coords="5,5,623,99"/>
 </map>
   <img src="uml_class_diagram_for_googleap_4.gif" alt='' usemap="#uml_class_diagram_for_googleap_4" ismap="ismap" class="graph-without-title" />
 </center>
@@ -458,7 +458,7 @@
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Tue Nov  1 17:02:49 2016
+    Generated by Epydoc 3.0.1 on Thu Jan  5 12:55:02 2017
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/epy/googleapiclient.discovery.ResourceMethodParameters-class.html b/docs/epy/googleapiclient.discovery.ResourceMethodParameters-class.html
index 59fb7ff..3c71039 100644
--- a/docs/epy/googleapiclient.discovery.ResourceMethodParameters-class.html
+++ b/docs/epy/googleapiclient.discovery.ResourceMethodParameters-class.html
@@ -59,9 +59,9 @@
 <h1 class="epydoc">Class ResourceMethodParameters</h1><p class="nomargin-top"><span class="codelink"><a href="googleapiclient.discovery-pysrc.html#ResourceMethodParameters">source&nbsp;code</a></span></p>
 <center>
 <center>  <map id="uml_class_diagram_for_googleap_5" name="uml_class_diagram_for_googleap_5">
-<area shape="rect" id="node1_2" href="googleapiclient.discovery.ResourceMethodParameters-class.html#__init__" title="Constructor for ResourceMethodParameters." alt="" coords="17,39,229,59"/>
-<area shape="rect" id="node1_3" href="googleapiclient.discovery.ResourceMethodParameters-class.html#set_parameters" title="Populates maps and lists based on method description." alt="" coords="17,59,229,79"/>
-<area shape="rect" id="node1" href="googleapiclient.discovery.ResourceMethodParameters-class.html" title="Represents the parameters associated with a method." alt="" coords="5,5,241,85"/>
+<area shape="rect" id="node1_2" href="googleapiclient.discovery.ResourceMethodParameters-class.html#__init__" title="Constructor for ResourceMethodParameters." alt="" coords="18,36,233,55"/>
+<area shape="rect" id="node1_3" href="googleapiclient.discovery.ResourceMethodParameters-class.html#set_parameters" title="Populates maps and lists based on method description." alt="" coords="18,55,233,73"/>
+<area shape="rect" id="node1" href="googleapiclient.discovery.ResourceMethodParameters-class.html" title="Represents the parameters associated with a method." alt="" coords="5,5,244,80"/>
 </map>
   <img src="uml_class_diagram_for_googleap_5.gif" alt='' usemap="#uml_class_diagram_for_googleap_5" ismap="ismap" class="graph-without-title" />
 </center>
@@ -300,7 +300,7 @@
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Tue Nov  1 17:02:49 2016
+    Generated by Epydoc 3.0.1 on Thu Jan  5 12:55:02 2017
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/epy/googleapiclient.discovery._BytesGenerator-class.html b/docs/epy/googleapiclient.discovery._BytesGenerator-class.html
index 6a0630f..6edca21 100644
--- a/docs/epy/googleapiclient.discovery._BytesGenerator-class.html
+++ b/docs/epy/googleapiclient.discovery._BytesGenerator-class.html
@@ -59,7 +59,7 @@
 <h1 class="epydoc">Class _BytesGenerator</h1><p class="nomargin-top"><span class="codelink"><a href="googleapiclient.discovery-pysrc.html#_BytesGenerator">source&nbsp;code</a></span></p>
 <center>
 <center>  <map id="uml_class_diagram_for_googleap_6" name="uml_class_diagram_for_googleap_6">
-<area shape="rect" id="node1" href="googleapiclient.discovery._BytesGenerator-class.html" title="googleapiclient.discovery._BytesGenerator" alt="" coords="5,5,129,51"/>
+<area shape="rect" id="node1" href="googleapiclient.discovery._BytesGenerator-class.html" title="googleapiclient.discovery._BytesGenerator" alt="" coords="5,5,129,48"/>
 </map>
   <img src="uml_class_diagram_for_googleap_6.gif" alt='' usemap="#uml_class_diagram_for_googleap_6" ismap="ismap" class="graph-without-title" />
 </center>
@@ -116,7 +116,7 @@
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Tue Nov  1 17:02:49 2016
+    Generated by Epydoc 3.0.1 on Thu Jan  5 12:55:02 2017
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/epy/googleapiclient.discovery_cache-module.html b/docs/epy/googleapiclient.discovery_cache-module.html
index 9876ab7..4348198 100644
--- a/docs/epy/googleapiclient.discovery_cache-module.html
+++ b/docs/epy/googleapiclient.discovery_cache-module.html
@@ -225,7 +225,7 @@
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Tue Nov  1 17:02:49 2016
+    Generated by Epydoc 3.0.1 on Thu Jan  5 12:55:02 2017
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/epy/googleapiclient.discovery_cache-pysrc.html b/docs/epy/googleapiclient.discovery_cache-pysrc.html
index 3f54a8d..9e77de2 100644
--- a/docs/epy/googleapiclient.discovery_cache-pysrc.html
+++ b/docs/epy/googleapiclient.discovery_cache-pysrc.html
@@ -144,7 +144,7 @@
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Tue Nov  1 17:02:50 2016
+    Generated by Epydoc 3.0.1 on Thu Jan  5 12:55:06 2017
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/epy/googleapiclient.discovery_cache.appengine_memcache-module.html b/docs/epy/googleapiclient.discovery_cache.appengine_memcache-module.html
index 33716e4..def9757 100644
--- a/docs/epy/googleapiclient.discovery_cache.appengine_memcache-module.html
+++ b/docs/epy/googleapiclient.discovery_cache.appengine_memcache-module.html
@@ -153,7 +153,7 @@
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Tue Nov  1 17:02:49 2016
+    Generated by Epydoc 3.0.1 on Thu Jan  5 12:55:02 2017
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/epy/googleapiclient.discovery_cache.appengine_memcache-pysrc.html b/docs/epy/googleapiclient.discovery_cache.appengine_memcache-pysrc.html
index f614978..de47482 100644
--- a/docs/epy/googleapiclient.discovery_cache.appengine_memcache-pysrc.html
+++ b/docs/epy/googleapiclient.discovery_cache.appengine_memcache-pysrc.html
@@ -165,7 +165,7 @@
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Tue Nov  1 17:02:50 2016
+    Generated by Epydoc 3.0.1 on Thu Jan  5 12:55:06 2017
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/epy/googleapiclient.discovery_cache.appengine_memcache.Cache-class.html b/docs/epy/googleapiclient.discovery_cache.appengine_memcache.Cache-class.html
index 55e19bf..773ab4d 100644
--- a/docs/epy/googleapiclient.discovery_cache.appengine_memcache.Cache-class.html
+++ b/docs/epy/googleapiclient.discovery_cache.appengine_memcache.Cache-class.html
@@ -60,12 +60,12 @@
 <h1 class="epydoc">Class Cache</h1><p class="nomargin-top"><span class="codelink"><a href="googleapiclient.discovery_cache.appengine_memcache-pysrc.html#Cache">source&nbsp;code</a></span></p>
 <center>
 <center>  <map id="uml_class_diagram_for_googleap_7" name="uml_class_diagram_for_googleap_7">
-<area shape="rect" id="node1_4" href="googleapiclient.discovery_cache.appengine_memcache.Cache-class.html#__init__" title="Constructor." alt="" coords="17,120,160,140"/>
-<area shape="rect" id="node1_5" href="googleapiclient.discovery_cache.appengine_memcache.Cache-class.html#get" title="Gets the content from the memcache with a given key." alt="" coords="17,140,160,160"/>
-<area shape="rect" id="node1_6" href="googleapiclient.discovery_cache.appengine_memcache.Cache-class.html#set" title="Sets the given key and content in the cache." alt="" coords="17,160,160,180"/>
-<area shape="rect" id="node1" href="googleapiclient.discovery_cache.appengine_memcache.Cache-class.html" title="A cache with app engine memcache API." alt="" coords="5,86,171,186"/>
-<area shape="rect" id="node2_7" href="googleapiclient.discovery_cache.base.Cache-class.html#__metaclass__" title="googleapiclient.discovery_cache.base.Cache.__metaclass__" alt="" coords="41,32,137,52"/>
-<area shape="rect" id="node2" href="googleapiclient.discovery_cache.base.Cache-class.html" title="A base abstract cache class." alt="" coords="29,6,149,66"/>
+<area shape="rect" id="node1_4" href="googleapiclient.discovery_cache.appengine_memcache.Cache-class.html#__init__" title="Constructor." alt="" coords="18,111,161,129"/>
+<area shape="rect" id="node1_5" href="googleapiclient.discovery_cache.appengine_memcache.Cache-class.html#get" title="Gets the content from the memcache with a given key." alt="" coords="18,129,161,148"/>
+<area shape="rect" id="node1_6" href="googleapiclient.discovery_cache.appengine_memcache.Cache-class.html#set" title="Sets the given key and content in the cache." alt="" coords="18,148,161,167"/>
+<area shape="rect" id="node1" href="googleapiclient.discovery_cache.appengine_memcache.Cache-class.html" title="A cache with app engine memcache API." alt="" coords="5,80,172,173"/>
+<area shape="rect" id="node2_7" href="googleapiclient.discovery_cache.base.Cache-class.html#__metaclass__" title="googleapiclient.discovery_cache.base.Cache.__metaclass__" alt="" coords="42,28,137,47"/>
+<area shape="rect" id="node2" href="googleapiclient.discovery_cache.base.Cache-class.html" title="A base abstract cache class." alt="" coords="29,5,148,61"/>
 </map>
   <img src="uml_class_diagram_for_googleap_7.gif" alt='' usemap="#uml_class_diagram_for_googleap_7" ismap="ismap" class="graph-without-title" />
 </center>
@@ -358,7 +358,7 @@
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Tue Nov  1 17:02:49 2016
+    Generated by Epydoc 3.0.1 on Thu Jan  5 12:55:02 2017
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/epy/googleapiclient.discovery_cache.base-module.html b/docs/epy/googleapiclient.discovery_cache.base-module.html
index 7907d7b..575ce40 100644
--- a/docs/epy/googleapiclient.discovery_cache.base-module.html
+++ b/docs/epy/googleapiclient.discovery_cache.base-module.html
@@ -114,7 +114,7 @@
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Tue Nov  1 17:02:49 2016
+    Generated by Epydoc 3.0.1 on Thu Jan  5 12:55:02 2017
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/epy/googleapiclient.discovery_cache.base-pysrc.html b/docs/epy/googleapiclient.discovery_cache.base-pysrc.html
index 08c5012..d36406a 100644
--- a/docs/epy/googleapiclient.discovery_cache.base-pysrc.html
+++ b/docs/epy/googleapiclient.discovery_cache.base-pysrc.html
@@ -135,7 +135,7 @@
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Tue Nov  1 17:02:50 2016
+    Generated by Epydoc 3.0.1 on Thu Jan  5 12:55:06 2017
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/epy/googleapiclient.discovery_cache.base.Cache-class.html b/docs/epy/googleapiclient.discovery_cache.base.Cache-class.html
index fd48c54..c9d85d2 100644
--- a/docs/epy/googleapiclient.discovery_cache.base.Cache-class.html
+++ b/docs/epy/googleapiclient.discovery_cache.base.Cache-class.html
@@ -60,10 +60,10 @@
 <h1 class="epydoc">Class Cache</h1><p class="nomargin-top"><span class="codelink"><a href="googleapiclient.discovery_cache.base-pysrc.html#Cache">source&nbsp;code</a></span></p>
 <center>
 <center>  <map id="uml_class_diagram_for_googleap_8" name="uml_class_diagram_for_googleap_8">
-<area shape="rect" id="node1_3" href="googleapiclient.discovery_cache.base.Cache-class.html#__metaclass__" title="googleapiclient.discovery_cache.base.Cache.__metaclass__" alt="" coords="17,32,145,52"/>
-<area shape="rect" id="node1_4" href="googleapiclient.discovery_cache.base.Cache-class.html#get" title="Gets the content from the memcache with a given key." alt="" coords="17,55,145,75"/>
-<area shape="rect" id="node1_5" href="googleapiclient.discovery_cache.base.Cache-class.html#set" title="Sets the given key and content in the cache." alt="" coords="17,75,145,95"/>
-<area shape="rect" id="node1" href="googleapiclient.discovery_cache.base.Cache-class.html" title="A base abstract cache class." alt="" coords="5,6,157,101"/>
+<area shape="rect" id="node1_3" href="googleapiclient.discovery_cache.base.Cache-class.html#__metaclass__" title="googleapiclient.discovery_cache.base.Cache.__metaclass__" alt="" coords="17,28,143,47"/>
+<area shape="rect" id="node1_4" href="googleapiclient.discovery_cache.base.Cache-class.html#get" title="Gets the content from the memcache with a given key." alt="" coords="17,49,143,68"/>
+<area shape="rect" id="node1_5" href="googleapiclient.discovery_cache.base.Cache-class.html#set" title="Sets the given key and content in the cache." alt="" coords="17,68,143,87"/>
+<area shape="rect" id="node1" href="googleapiclient.discovery_cache.base.Cache-class.html" title="A base abstract cache class." alt="" coords="5,5,155,93"/>
 </map>
   <img src="uml_class_diagram_for_googleap_8.gif" alt='' usemap="#uml_class_diagram_for_googleap_8" ismap="ismap" class="graph-without-title" />
 </center>
@@ -309,7 +309,7 @@
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Tue Nov  1 17:02:49 2016
+    Generated by Epydoc 3.0.1 on Thu Jan  5 12:55:02 2017
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/epy/googleapiclient.discovery_cache.file_cache-module.html b/docs/epy/googleapiclient.discovery_cache.file_cache-module.html
index d6b71df..5def350 100644
--- a/docs/epy/googleapiclient.discovery_cache.file_cache-module.html
+++ b/docs/epy/googleapiclient.discovery_cache.file_cache-module.html
@@ -215,7 +215,7 @@
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Tue Nov  1 17:02:49 2016
+    Generated by Epydoc 3.0.1 on Thu Jan  5 12:55:02 2017
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/epy/googleapiclient.discovery_cache.file_cache-pysrc.html b/docs/epy/googleapiclient.discovery_cache.file_cache-pysrc.html
index cd97143..5c76f1d 100644
--- a/docs/epy/googleapiclient.discovery_cache.file_cache-pysrc.html
+++ b/docs/epy/googleapiclient.discovery_cache.file_cache-pysrc.html
@@ -276,7 +276,7 @@
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Tue Nov  1 17:02:51 2016
+    Generated by Epydoc 3.0.1 on Thu Jan  5 12:55:05 2017
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/epy/googleapiclient.discovery_cache.file_cache.Cache-class.html b/docs/epy/googleapiclient.discovery_cache.file_cache.Cache-class.html
index e54bb85..31be0a4 100644
--- a/docs/epy/googleapiclient.discovery_cache.file_cache.Cache-class.html
+++ b/docs/epy/googleapiclient.discovery_cache.file_cache.Cache-class.html
@@ -60,12 +60,12 @@
 <h1 class="epydoc">Class Cache</h1><p class="nomargin-top"><span class="codelink"><a href="googleapiclient.discovery_cache.file_cache-pysrc.html#Cache">source&nbsp;code</a></span></p>
 <center>
 <center>  <map id="uml_class_diagram_for_googleap_9" name="uml_class_diagram_for_googleap_9">
-<area shape="rect" id="node1_4" href="googleapiclient.discovery_cache.file_cache.Cache-class.html#__init__" title="Constructor." alt="" coords="17,120,160,140"/>
-<area shape="rect" id="node1_5" href="googleapiclient.discovery_cache.file_cache.Cache-class.html#get" title="Gets the content from the memcache with a given key." alt="" coords="17,140,160,160"/>
-<area shape="rect" id="node1_6" href="googleapiclient.discovery_cache.file_cache.Cache-class.html#set" title="Sets the given key and content in the cache." alt="" coords="17,160,160,180"/>
-<area shape="rect" id="node1" href="googleapiclient.discovery_cache.file_cache.Cache-class.html" title="A file based cache for the discovery documents." alt="" coords="5,86,171,186"/>
-<area shape="rect" id="node2_7" href="googleapiclient.discovery_cache.base.Cache-class.html#__metaclass__" title="googleapiclient.discovery_cache.base.Cache.__metaclass__" alt="" coords="41,32,137,52"/>
-<area shape="rect" id="node2" href="googleapiclient.discovery_cache.base.Cache-class.html" title="A base abstract cache class." alt="" coords="29,6,149,66"/>
+<area shape="rect" id="node1_4" href="googleapiclient.discovery_cache.file_cache.Cache-class.html#__init__" title="Constructor." alt="" coords="18,111,161,129"/>
+<area shape="rect" id="node1_5" href="googleapiclient.discovery_cache.file_cache.Cache-class.html#get" title="Gets the content from the memcache with a given key." alt="" coords="18,129,161,148"/>
+<area shape="rect" id="node1_6" href="googleapiclient.discovery_cache.file_cache.Cache-class.html#set" title="Sets the given key and content in the cache." alt="" coords="18,148,161,167"/>
+<area shape="rect" id="node1" href="googleapiclient.discovery_cache.file_cache.Cache-class.html" title="A file based cache for the discovery documents." alt="" coords="5,80,172,173"/>
+<area shape="rect" id="node2_7" href="googleapiclient.discovery_cache.base.Cache-class.html#__metaclass__" title="googleapiclient.discovery_cache.base.Cache.__metaclass__" alt="" coords="42,28,137,47"/>
+<area shape="rect" id="node2" href="googleapiclient.discovery_cache.base.Cache-class.html" title="A base abstract cache class." alt="" coords="29,5,148,61"/>
 </map>
   <img src="uml_class_diagram_for_googleap_9.gif" alt='' usemap="#uml_class_diagram_for_googleap_9" ismap="ismap" class="graph-without-title" />
 </center>
@@ -358,7 +358,7 @@
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Tue Nov  1 17:02:49 2016
+    Generated by Epydoc 3.0.1 on Thu Jan  5 12:55:03 2017
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/epy/googleapiclient.errors-module.html b/docs/epy/googleapiclient.errors-module.html
index b8acabd..beaf83e 100644
--- a/docs/epy/googleapiclient.errors-module.html
+++ b/docs/epy/googleapiclient.errors-module.html
@@ -224,7 +224,7 @@
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Tue Nov  1 17:02:49 2016
+    Generated by Epydoc 3.0.1 on Thu Jan  5 12:55:02 2017
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/epy/googleapiclient.errors-pysrc.html b/docs/epy/googleapiclient.errors-pysrc.html
index f1fe1c4..b75e272 100644
--- a/docs/epy/googleapiclient.errors-pysrc.html
+++ b/docs/epy/googleapiclient.errors-pysrc.html
@@ -296,7 +296,7 @@
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Tue Nov  1 17:02:50 2016
+    Generated by Epydoc 3.0.1 on Thu Jan  5 12:55:05 2017
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/epy/googleapiclient.errors.BatchError-class.html b/docs/epy/googleapiclient.errors.BatchError-class.html
index 8f6fee9..af95d2d 100644
--- a/docs/epy/googleapiclient.errors.BatchError-class.html
+++ b/docs/epy/googleapiclient.errors.BatchError-class.html
@@ -59,25 +59,25 @@
 <h1 class="epydoc">Class BatchError</h1><p class="nomargin-top"><span class="codelink"><a href="googleapiclient.errors-pysrc.html#BatchError">source&nbsp;code</a></span></p>
 <center>
 <center>  <map id="uml_class_diagram_for_googleap_10" name="uml_class_diagram_for_googleap_10">
-<area shape="rect" id="node1_14" href="googleapiclient.errors.BatchError-class.html#__init__" title="x.__init__(...) initializes x; see help(type(x)) for signature" alt="" coords="17,501,308,521"/>
-<area shape="rect" id="node1_15" href="googleapiclient.errors.BatchError-class.html#__repr__" title="str(x)" alt="" coords="17,521,308,541"/>
-<area shape="rect" id="node1_16" href="googleapiclient.errors.BatchError-class.html#__str__" title="str(x)" alt="" coords="17,541,308,561"/>
-<area shape="rect" id="node1" href="googleapiclient.errors.BatchError-class.html" title="Error occured during batch operations." alt="" coords="5,467,320,567"/>
-<area shape="rect" id="node2" href="googleapiclient.errors.HttpError-class.html" title="HTTP data was invalid or unexpected." alt="" coords="122,403,201,448"/>
-<area shape="rect" id="node3" href="googleapiclient.errors.Error-class.html" title="Base error for this module." alt="" coords="134,339,189,384"/>
-<area shape="rect" id="node4_17" href="javascript:void(0);" title="exceptions.BaseException.args" alt="" coords="84,31,241,51"/>
-<area shape="rect" id="node4_18" href="javascript:void(0);" title="exceptions.BaseException.message" alt="" coords="84,51,241,71"/>
-<area shape="rect" id="node4_19" href="javascript:void(0);" title="x.__delattr__(&#39;name&#39;) &lt;==&gt; del x.name" alt="" coords="84,73,241,93"/>
-<area shape="rect" id="node4_20" href="javascript:void(0);" title="x.__getattribute__(&#39;name&#39;) &lt;==&gt; x.name" alt="" coords="84,93,241,113"/>
-<area shape="rect" id="node4_21" href="javascript:void(0);" title="x[y]" alt="" coords="84,113,241,133"/>
-<area shape="rect" id="node4_22" href="javascript:void(0);" title="x[i:j]" alt="" coords="84,133,241,153"/>
-<area shape="rect" id="node4_23" href="javascript:void(0);" title="helper for pickle" alt="" coords="84,153,241,173"/>
-<area shape="rect" id="node4_24" href="javascript:void(0);" title="x.__setattr__(&#39;name&#39;, value) &lt;==&gt; x.name = value" alt="" coords="84,173,241,193"/>
-<area shape="rect" id="node4_25" href="javascript:void(0);" title="exceptions.BaseException.__setstate__" alt="" coords="84,193,241,213"/>
-<area shape="rect" id="node4_26" href="javascript:void(0);" title="exceptions.BaseException.__unicode__" alt="" coords="84,213,241,233"/>
-<area shape="rect" id="node4" href="javascript:void(0);" title="Common base class for all exceptions" alt="" coords="72,5,253,240"/>
-<area shape="rect" id="node5_27" href="javascript:void(0);" title="exceptions.Exception.__new__" alt="" coords="99,293,225,313"/>
-<area shape="rect" id="node5" href="javascript:void(0);" title="Common base class for all non&#45;exit exceptions." alt="" coords="86,259,237,319"/>
+<area shape="rect" id="node1_14" href="googleapiclient.errors.BatchError-class.html#__init__" title="x.__init__(...) initializes x; see help(type(x)) for signature" alt="" coords="17,471,311,489"/>
+<area shape="rect" id="node1_15" href="googleapiclient.errors.BatchError-class.html#__repr__" title="str(x)" alt="" coords="17,489,311,508"/>
+<area shape="rect" id="node1_16" href="googleapiclient.errors.BatchError-class.html#__str__" title="str(x)" alt="" coords="17,508,311,527"/>
+<area shape="rect" id="node1" href="googleapiclient.errors.BatchError-class.html" title="Error occured during batch operations." alt="" coords="5,440,323,533"/>
+<area shape="rect" id="node2" href="googleapiclient.errors.HttpError-class.html" title="HTTP data was invalid or unexpected." alt="" coords="125,379,203,421"/>
+<area shape="rect" id="node3_17" href="javascript:void(0);" title="exceptions.Exception.__new__" alt="" coords="101,273,227,292"/>
+<area shape="rect" id="node3" href="javascript:void(0);" title="Common base class for all non&#45;exit exceptions." alt="" coords="89,243,239,299"/>
+<area shape="rect" id="node5" href="googleapiclient.errors.Error-class.html" title="Base error for this module." alt="" coords="137,317,191,360"/>
+<area shape="rect" id="node4_18" href="javascript:void(0);" title="exceptions.BaseException.args" alt="" coords="85,28,241,47"/>
+<area shape="rect" id="node4_19" href="javascript:void(0);" title="exceptions.BaseException.message" alt="" coords="85,47,241,65"/>
+<area shape="rect" id="node4_20" href="javascript:void(0);" title="x.__delattr__(&#39;name&#39;) &lt;==&gt; del x.name" alt="" coords="85,68,241,87"/>
+<area shape="rect" id="node4_21" href="javascript:void(0);" title="x.__getattribute__(&#39;name&#39;) &lt;==&gt; x.name" alt="" coords="85,87,241,105"/>
+<area shape="rect" id="node4_22" href="javascript:void(0);" title="x[y]" alt="" coords="85,105,241,124"/>
+<area shape="rect" id="node4_23" href="javascript:void(0);" title="x[i:j]" alt="" coords="85,124,241,143"/>
+<area shape="rect" id="node4_24" href="javascript:void(0);" title="helper for pickle" alt="" coords="85,143,241,161"/>
+<area shape="rect" id="node4_25" href="javascript:void(0);" title="x.__setattr__(&#39;name&#39;, value) &lt;==&gt; x.name = value" alt="" coords="85,161,241,180"/>
+<area shape="rect" id="node4_26" href="javascript:void(0);" title="exceptions.BaseException.__setstate__" alt="" coords="85,180,241,199"/>
+<area shape="rect" id="node4_27" href="javascript:void(0);" title="exceptions.BaseException.__unicode__" alt="" coords="85,199,241,217"/>
+<area shape="rect" id="node4" href="javascript:void(0);" title="Common base class for all exceptions" alt="" coords="73,5,253,224"/>
 </map>
   <img src="uml_class_diagram_for_googleap_10.gif" alt='' usemap="#uml_class_diagram_for_googleap_10" ismap="ismap" class="graph-without-title" />
 </center>
@@ -349,7 +349,7 @@
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Tue Nov  1 17:02:49 2016
+    Generated by Epydoc 3.0.1 on Thu Jan  5 12:55:03 2017
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/epy/googleapiclient.errors.Error-class.html b/docs/epy/googleapiclient.errors.Error-class.html
index 59ce260..7ff585c 100644
--- a/docs/epy/googleapiclient.errors.Error-class.html
+++ b/docs/epy/googleapiclient.errors.Error-class.html
@@ -59,23 +59,23 @@
 <h1 class="epydoc">Class Error</h1><p class="nomargin-top"><span class="codelink"><a href="googleapiclient.errors-pysrc.html#Error">source&nbsp;code</a></span></p>
 <center>
 <center>  <map id="uml_class_diagram_for_googleap_11" name="uml_class_diagram_for_googleap_11">
-<area shape="rect" id="node1" href="googleapiclient.errors.Error-class.html" title="Base error for this module." alt="" coords="67,397,122,443"/>
-<area shape="rect" id="node2_14" href="javascript:void(0);" title="x.__init__(...) initializes x; see help(type(x)) for signature" alt="" coords="32,332,159,352"/>
-<area shape="rect" id="node2_15" href="javascript:void(0);" title="exceptions.Exception.__new__" alt="" coords="32,352,159,372"/>
-<area shape="rect" id="node2" href="javascript:void(0);" title="Common base class for all non&#45;exit exceptions." alt="" coords="19,299,170,379"/>
-<area shape="rect" id="node3_16" href="javascript:void(0);" title="exceptions.BaseException.args" alt="" coords="17,31,175,51"/>
-<area shape="rect" id="node3_17" href="javascript:void(0);" title="exceptions.BaseException.message" alt="" coords="17,51,175,71"/>
-<area shape="rect" id="node3_18" href="javascript:void(0);" title="x.__delattr__(&#39;name&#39;) &lt;==&gt; del x.name" alt="" coords="17,73,175,93"/>
-<area shape="rect" id="node3_19" href="javascript:void(0);" title="x.__getattribute__(&#39;name&#39;) &lt;==&gt; x.name" alt="" coords="17,93,175,113"/>
-<area shape="rect" id="node3_20" href="javascript:void(0);" title="x[y]" alt="" coords="17,113,175,133"/>
-<area shape="rect" id="node3_21" href="javascript:void(0);" title="x[i:j]" alt="" coords="17,133,175,153"/>
-<area shape="rect" id="node3_22" href="javascript:void(0);" title="helper for pickle" alt="" coords="17,153,175,173"/>
-<area shape="rect" id="node3_23" href="javascript:void(0);" title="repr(x)" alt="" coords="17,173,175,193"/>
-<area shape="rect" id="node3_24" href="javascript:void(0);" title="x.__setattr__(&#39;name&#39;, value) &lt;==&gt; x.name = value" alt="" coords="17,193,175,213"/>
-<area shape="rect" id="node3_25" href="javascript:void(0);" title="exceptions.BaseException.__setstate__" alt="" coords="17,213,175,233"/>
-<area shape="rect" id="node3_26" href="javascript:void(0);" title="str(x)" alt="" coords="17,233,175,253"/>
-<area shape="rect" id="node3_27" href="javascript:void(0);" title="exceptions.BaseException.__unicode__" alt="" coords="17,253,175,273"/>
-<area shape="rect" id="node3" href="javascript:void(0);" title="Common base class for all exceptions" alt="" coords="5,5,187,280"/>
+<area shape="rect" id="node1" href="googleapiclient.errors.Error-class.html" title="Base error for this module." alt="" coords="70,373,123,416"/>
+<area shape="rect" id="node2_14" href="javascript:void(0);" title="x.__init__(...) initializes x; see help(type(x)) for signature" alt="" coords="34,311,159,329"/>
+<area shape="rect" id="node2_15" href="javascript:void(0);" title="exceptions.Exception.__new__" alt="" coords="34,329,159,348"/>
+<area shape="rect" id="node2" href="javascript:void(0);" title="Common base class for all non&#45;exit exceptions." alt="" coords="22,280,171,355"/>
+<area shape="rect" id="node3_16" href="javascript:void(0);" title="exceptions.BaseException.args" alt="" coords="18,28,174,47"/>
+<area shape="rect" id="node3_17" href="javascript:void(0);" title="exceptions.BaseException.message" alt="" coords="18,47,174,65"/>
+<area shape="rect" id="node3_18" href="javascript:void(0);" title="x.__delattr__(&#39;name&#39;) &lt;==&gt; del x.name" alt="" coords="18,68,174,87"/>
+<area shape="rect" id="node3_19" href="javascript:void(0);" title="x.__getattribute__(&#39;name&#39;) &lt;==&gt; x.name" alt="" coords="18,87,174,105"/>
+<area shape="rect" id="node3_20" href="javascript:void(0);" title="x[y]" alt="" coords="18,105,174,124"/>
+<area shape="rect" id="node3_21" href="javascript:void(0);" title="x[i:j]" alt="" coords="18,124,174,143"/>
+<area shape="rect" id="node3_22" href="javascript:void(0);" title="helper for pickle" alt="" coords="18,143,174,161"/>
+<area shape="rect" id="node3_23" href="javascript:void(0);" title="repr(x)" alt="" coords="18,161,174,180"/>
+<area shape="rect" id="node3_24" href="javascript:void(0);" title="x.__setattr__(&#39;name&#39;, value) &lt;==&gt; x.name = value" alt="" coords="18,180,174,199"/>
+<area shape="rect" id="node3_25" href="javascript:void(0);" title="exceptions.BaseException.__setstate__" alt="" coords="18,199,174,217"/>
+<area shape="rect" id="node3_26" href="javascript:void(0);" title="str(x)" alt="" coords="18,217,174,236"/>
+<area shape="rect" id="node3_27" href="javascript:void(0);" title="exceptions.BaseException.__unicode__" alt="" coords="18,236,174,255"/>
+<area shape="rect" id="node3" href="javascript:void(0);" title="Common base class for all exceptions" alt="" coords="5,5,185,261"/>
 </map>
   <img src="uml_class_diagram_for_googleap_11.gif" alt='' usemap="#uml_class_diagram_for_googleap_11" ismap="ismap" class="graph-without-title" />
 </center>
@@ -186,7 +186,7 @@
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Tue Nov  1 17:02:49 2016
+    Generated by Epydoc 3.0.1 on Thu Jan  5 12:55:03 2017
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/epy/googleapiclient.errors.HttpError-class.html b/docs/epy/googleapiclient.errors.HttpError-class.html
index 9608bf4..ee959cf 100644
--- a/docs/epy/googleapiclient.errors.HttpError-class.html
+++ b/docs/epy/googleapiclient.errors.HttpError-class.html
@@ -59,24 +59,24 @@
 <h1 class="epydoc">Class HttpError</h1><p class="nomargin-top"><span class="codelink"><a href="googleapiclient.errors-pysrc.html#HttpError">source&nbsp;code</a></span></p>
 <center>
 <center>  <map id="uml_class_diagram_for_googleap_12" name="uml_class_diagram_for_googleap_12">
-<area shape="rect" id="node1_14" href="googleapiclient.errors.HttpError-class.html#__init__" title="x.__init__(...) initializes x; see help(type(x)) for signature" alt="" coords="17,437,244,457"/>
-<area shape="rect" id="node1_15" href="googleapiclient.errors.HttpError-class.html#__repr__" title="str(x)" alt="" coords="17,457,244,477"/>
-<area shape="rect" id="node1_16" href="googleapiclient.errors.HttpError-class.html#__str__" title="str(x)" alt="" coords="17,477,244,497"/>
-<area shape="rect" id="node1" href="googleapiclient.errors.HttpError-class.html" title="HTTP data was invalid or unexpected." alt="" coords="5,403,256,503"/>
-<area shape="rect" id="node2" href="googleapiclient.errors.Error-class.html" title="Base error for this module." alt="" coords="102,339,157,384"/>
-<area shape="rect" id="node3_17" href="javascript:void(0);" title="exceptions.Exception.__new__" alt="" coords="67,293,193,313"/>
-<area shape="rect" id="node3" href="javascript:void(0);" title="Common base class for all non&#45;exit exceptions." alt="" coords="54,259,205,319"/>
-<area shape="rect" id="node4_18" href="javascript:void(0);" title="exceptions.BaseException.args" alt="" coords="52,31,209,51"/>
-<area shape="rect" id="node4_19" href="javascript:void(0);" title="exceptions.BaseException.message" alt="" coords="52,51,209,71"/>
-<area shape="rect" id="node4_20" href="javascript:void(0);" title="x.__delattr__(&#39;name&#39;) &lt;==&gt; del x.name" alt="" coords="52,73,209,93"/>
-<area shape="rect" id="node4_21" href="javascript:void(0);" title="x.__getattribute__(&#39;name&#39;) &lt;==&gt; x.name" alt="" coords="52,93,209,113"/>
-<area shape="rect" id="node4_22" href="javascript:void(0);" title="x[y]" alt="" coords="52,113,209,133"/>
-<area shape="rect" id="node4_23" href="javascript:void(0);" title="x[i:j]" alt="" coords="52,133,209,153"/>
-<area shape="rect" id="node4_24" href="javascript:void(0);" title="helper for pickle" alt="" coords="52,153,209,173"/>
-<area shape="rect" id="node4_25" href="javascript:void(0);" title="x.__setattr__(&#39;name&#39;, value) &lt;==&gt; x.name = value" alt="" coords="52,173,209,193"/>
-<area shape="rect" id="node4_26" href="javascript:void(0);" title="exceptions.BaseException.__setstate__" alt="" coords="52,193,209,213"/>
-<area shape="rect" id="node4_27" href="javascript:void(0);" title="exceptions.BaseException.__unicode__" alt="" coords="52,213,209,233"/>
-<area shape="rect" id="node4" href="javascript:void(0);" title="Common base class for all exceptions" alt="" coords="40,5,221,240"/>
+<area shape="rect" id="node1_14" href="googleapiclient.errors.HttpError-class.html#__init__" title="x.__init__(...) initializes x; see help(type(x)) for signature" alt="" coords="18,409,246,428"/>
+<area shape="rect" id="node1_15" href="googleapiclient.errors.HttpError-class.html#__repr__" title="str(x)" alt="" coords="18,428,246,447"/>
+<area shape="rect" id="node1_16" href="googleapiclient.errors.HttpError-class.html#__str__" title="str(x)" alt="" coords="18,447,246,465"/>
+<area shape="rect" id="node1" href="googleapiclient.errors.HttpError-class.html" title="HTTP data was invalid or unexpected." alt="" coords="5,379,257,472"/>
+<area shape="rect" id="node2" href="googleapiclient.errors.Error-class.html" title="Base error for this module." alt="" coords="106,317,159,360"/>
+<area shape="rect" id="node3_17" href="javascript:void(0);" title="exceptions.Exception.__new__" alt="" coords="70,273,195,292"/>
+<area shape="rect" id="node3" href="javascript:void(0);" title="Common base class for all non&#45;exit exceptions." alt="" coords="58,243,207,299"/>
+<area shape="rect" id="node4_18" href="javascript:void(0);" title="exceptions.BaseException.args" alt="" coords="54,28,210,47"/>
+<area shape="rect" id="node4_19" href="javascript:void(0);" title="exceptions.BaseException.message" alt="" coords="54,47,210,65"/>
+<area shape="rect" id="node4_20" href="javascript:void(0);" title="x.__delattr__(&#39;name&#39;) &lt;==&gt; del x.name" alt="" coords="54,68,210,87"/>
+<area shape="rect" id="node4_21" href="javascript:void(0);" title="x.__getattribute__(&#39;name&#39;) &lt;==&gt; x.name" alt="" coords="54,87,210,105"/>
+<area shape="rect" id="node4_22" href="javascript:void(0);" title="x[y]" alt="" coords="54,105,210,124"/>
+<area shape="rect" id="node4_23" href="javascript:void(0);" title="x[i:j]" alt="" coords="54,124,210,143"/>
+<area shape="rect" id="node4_24" href="javascript:void(0);" title="helper for pickle" alt="" coords="54,143,210,161"/>
+<area shape="rect" id="node4_25" href="javascript:void(0);" title="x.__setattr__(&#39;name&#39;, value) &lt;==&gt; x.name = value" alt="" coords="54,161,210,180"/>
+<area shape="rect" id="node4_26" href="javascript:void(0);" title="exceptions.BaseException.__setstate__" alt="" coords="54,180,210,199"/>
+<area shape="rect" id="node4_27" href="javascript:void(0);" title="exceptions.BaseException.__unicode__" alt="" coords="54,199,210,217"/>
+<area shape="rect" id="node4" href="javascript:void(0);" title="Common base class for all exceptions" alt="" coords="41,5,221,224"/>
 </map>
   <img src="uml_class_diagram_for_googleap_12.gif" alt='' usemap="#uml_class_diagram_for_googleap_12" ismap="ismap" class="graph-without-title" />
 </center>
@@ -362,7 +362,7 @@
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Tue Nov  1 17:02:49 2016
+    Generated by Epydoc 3.0.1 on Thu Jan  5 12:55:03 2017
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/epy/googleapiclient.errors.InvalidChunkSizeError-class.html b/docs/epy/googleapiclient.errors.InvalidChunkSizeError-class.html
index 84dcb3c..9129948 100644
--- a/docs/epy/googleapiclient.errors.InvalidChunkSizeError-class.html
+++ b/docs/epy/googleapiclient.errors.InvalidChunkSizeError-class.html
@@ -59,24 +59,24 @@
 <h1 class="epydoc">Class InvalidChunkSizeError</h1><p class="nomargin-top"><span class="codelink"><a href="googleapiclient.errors-pysrc.html#InvalidChunkSizeError">source&nbsp;code</a></span></p>
 <center>
 <center>  <map id="uml_class_diagram_for_googleap_13" name="uml_class_diagram_for_googleap_13">
-<area shape="rect" id="node1" href="googleapiclient.errors.InvalidChunkSizeError-class.html" title="The given chunksize is not valid." alt="" coords="17,461,173,507"/>
-<area shape="rect" id="node2" href="googleapiclient.errors.Error-class.html" title="Base error for this module." alt="" coords="67,397,122,443"/>
-<area shape="rect" id="node3_14" href="javascript:void(0);" title="x.__init__(...) initializes x; see help(type(x)) for signature" alt="" coords="32,332,159,352"/>
-<area shape="rect" id="node3_15" href="javascript:void(0);" title="exceptions.Exception.__new__" alt="" coords="32,352,159,372"/>
-<area shape="rect" id="node3" href="javascript:void(0);" title="Common base class for all non&#45;exit exceptions." alt="" coords="19,299,170,379"/>
-<area shape="rect" id="node4_16" href="javascript:void(0);" title="exceptions.BaseException.args" alt="" coords="17,31,175,51"/>
-<area shape="rect" id="node4_17" href="javascript:void(0);" title="exceptions.BaseException.message" alt="" coords="17,51,175,71"/>
-<area shape="rect" id="node4_18" href="javascript:void(0);" title="x.__delattr__(&#39;name&#39;) &lt;==&gt; del x.name" alt="" coords="17,73,175,93"/>
-<area shape="rect" id="node4_19" href="javascript:void(0);" title="x.__getattribute__(&#39;name&#39;) &lt;==&gt; x.name" alt="" coords="17,93,175,113"/>
-<area shape="rect" id="node4_20" href="javascript:void(0);" title="x[y]" alt="" coords="17,113,175,133"/>
-<area shape="rect" id="node4_21" href="javascript:void(0);" title="x[i:j]" alt="" coords="17,133,175,153"/>
-<area shape="rect" id="node4_22" href="javascript:void(0);" title="helper for pickle" alt="" coords="17,153,175,173"/>
-<area shape="rect" id="node4_23" href="javascript:void(0);" title="repr(x)" alt="" coords="17,173,175,193"/>
-<area shape="rect" id="node4_24" href="javascript:void(0);" title="x.__setattr__(&#39;name&#39;, value) &lt;==&gt; x.name = value" alt="" coords="17,193,175,213"/>
-<area shape="rect" id="node4_25" href="javascript:void(0);" title="exceptions.BaseException.__setstate__" alt="" coords="17,213,175,233"/>
-<area shape="rect" id="node4_26" href="javascript:void(0);" title="str(x)" alt="" coords="17,233,175,253"/>
-<area shape="rect" id="node4_27" href="javascript:void(0);" title="exceptions.BaseException.__unicode__" alt="" coords="17,253,175,273"/>
-<area shape="rect" id="node4" href="javascript:void(0);" title="Common base class for all exceptions" alt="" coords="5,5,187,280"/>
+<area shape="rect" id="node1" href="googleapiclient.errors.InvalidChunkSizeError-class.html" title="The given chunksize is not valid." alt="" coords="17,435,173,477"/>
+<area shape="rect" id="node2" href="googleapiclient.errors.Error-class.html" title="Base error for this module." alt="" coords="70,373,123,416"/>
+<area shape="rect" id="node3_14" href="javascript:void(0);" title="x.__init__(...) initializes x; see help(type(x)) for signature" alt="" coords="34,311,159,329"/>
+<area shape="rect" id="node3_15" href="javascript:void(0);" title="exceptions.Exception.__new__" alt="" coords="34,329,159,348"/>
+<area shape="rect" id="node3" href="javascript:void(0);" title="Common base class for all non&#45;exit exceptions." alt="" coords="22,280,171,355"/>
+<area shape="rect" id="node4_16" href="javascript:void(0);" title="exceptions.BaseException.args" alt="" coords="18,28,174,47"/>
+<area shape="rect" id="node4_17" href="javascript:void(0);" title="exceptions.BaseException.message" alt="" coords="18,47,174,65"/>
+<area shape="rect" id="node4_18" href="javascript:void(0);" title="x.__delattr__(&#39;name&#39;) &lt;==&gt; del x.name" alt="" coords="18,68,174,87"/>
+<area shape="rect" id="node4_19" href="javascript:void(0);" title="x.__getattribute__(&#39;name&#39;) &lt;==&gt; x.name" alt="" coords="18,87,174,105"/>
+<area shape="rect" id="node4_20" href="javascript:void(0);" title="x[y]" alt="" coords="18,105,174,124"/>
+<area shape="rect" id="node4_21" href="javascript:void(0);" title="x[i:j]" alt="" coords="18,124,174,143"/>
+<area shape="rect" id="node4_22" href="javascript:void(0);" title="helper for pickle" alt="" coords="18,143,174,161"/>
+<area shape="rect" id="node4_23" href="javascript:void(0);" title="repr(x)" alt="" coords="18,161,174,180"/>
+<area shape="rect" id="node4_24" href="javascript:void(0);" title="x.__setattr__(&#39;name&#39;, value) &lt;==&gt; x.name = value" alt="" coords="18,180,174,199"/>
+<area shape="rect" id="node4_25" href="javascript:void(0);" title="exceptions.BaseException.__setstate__" alt="" coords="18,199,174,217"/>
+<area shape="rect" id="node4_26" href="javascript:void(0);" title="str(x)" alt="" coords="18,217,174,236"/>
+<area shape="rect" id="node4_27" href="javascript:void(0);" title="exceptions.BaseException.__unicode__" alt="" coords="18,236,174,255"/>
+<area shape="rect" id="node4" href="javascript:void(0);" title="Common base class for all exceptions" alt="" coords="5,5,185,261"/>
 </map>
   <img src="uml_class_diagram_for_googleap_13.gif" alt='' usemap="#uml_class_diagram_for_googleap_13" ismap="ismap" class="graph-without-title" />
 </center>
@@ -187,7 +187,7 @@
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Tue Nov  1 17:02:49 2016
+    Generated by Epydoc 3.0.1 on Thu Jan  5 12:55:03 2017
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/epy/googleapiclient.errors.InvalidJsonError-class.html b/docs/epy/googleapiclient.errors.InvalidJsonError-class.html
index 0f53fd5..a703042 100644
--- a/docs/epy/googleapiclient.errors.InvalidJsonError-class.html
+++ b/docs/epy/googleapiclient.errors.InvalidJsonError-class.html
@@ -59,24 +59,24 @@
 <h1 class="epydoc">Class InvalidJsonError</h1><p class="nomargin-top"><span class="codelink"><a href="googleapiclient.errors-pysrc.html#InvalidJsonError">source&nbsp;code</a></span></p>
 <center>
 <center>  <map id="uml_class_diagram_for_googleap_14" name="uml_class_diagram_for_googleap_14">
-<area shape="rect" id="node1" href="googleapiclient.errors.InvalidJsonError-class.html" title="The JSON returned could not be parsed." alt="" coords="36,461,156,507"/>
-<area shape="rect" id="node2" href="googleapiclient.errors.Error-class.html" title="Base error for this module." alt="" coords="67,397,122,443"/>
-<area shape="rect" id="node3_14" href="javascript:void(0);" title="x.__init__(...) initializes x; see help(type(x)) for signature" alt="" coords="32,332,159,352"/>
-<area shape="rect" id="node3_15" href="javascript:void(0);" title="exceptions.Exception.__new__" alt="" coords="32,352,159,372"/>
-<area shape="rect" id="node3" href="javascript:void(0);" title="Common base class for all non&#45;exit exceptions." alt="" coords="19,299,170,379"/>
-<area shape="rect" id="node4_16" href="javascript:void(0);" title="exceptions.BaseException.args" alt="" coords="17,31,175,51"/>
-<area shape="rect" id="node4_17" href="javascript:void(0);" title="exceptions.BaseException.message" alt="" coords="17,51,175,71"/>
-<area shape="rect" id="node4_18" href="javascript:void(0);" title="x.__delattr__(&#39;name&#39;) &lt;==&gt; del x.name" alt="" coords="17,73,175,93"/>
-<area shape="rect" id="node4_19" href="javascript:void(0);" title="x.__getattribute__(&#39;name&#39;) &lt;==&gt; x.name" alt="" coords="17,93,175,113"/>
-<area shape="rect" id="node4_20" href="javascript:void(0);" title="x[y]" alt="" coords="17,113,175,133"/>
-<area shape="rect" id="node4_21" href="javascript:void(0);" title="x[i:j]" alt="" coords="17,133,175,153"/>
-<area shape="rect" id="node4_22" href="javascript:void(0);" title="helper for pickle" alt="" coords="17,153,175,173"/>
-<area shape="rect" id="node4_23" href="javascript:void(0);" title="repr(x)" alt="" coords="17,173,175,193"/>
-<area shape="rect" id="node4_24" href="javascript:void(0);" title="x.__setattr__(&#39;name&#39;, value) &lt;==&gt; x.name = value" alt="" coords="17,193,175,213"/>
-<area shape="rect" id="node4_25" href="javascript:void(0);" title="exceptions.BaseException.__setstate__" alt="" coords="17,213,175,233"/>
-<area shape="rect" id="node4_26" href="javascript:void(0);" title="str(x)" alt="" coords="17,233,175,253"/>
-<area shape="rect" id="node4_27" href="javascript:void(0);" title="exceptions.BaseException.__unicode__" alt="" coords="17,253,175,273"/>
-<area shape="rect" id="node4" href="javascript:void(0);" title="Common base class for all exceptions" alt="" coords="5,5,187,280"/>
+<area shape="rect" id="node1" href="googleapiclient.errors.InvalidJsonError-class.html" title="The JSON returned could not be parsed." alt="" coords="37,435,157,477"/>
+<area shape="rect" id="node2" href="googleapiclient.errors.Error-class.html" title="Base error for this module." alt="" coords="70,373,123,416"/>
+<area shape="rect" id="node3_14" href="javascript:void(0);" title="x.__init__(...) initializes x; see help(type(x)) for signature" alt="" coords="34,311,159,329"/>
+<area shape="rect" id="node3_15" href="javascript:void(0);" title="exceptions.Exception.__new__" alt="" coords="34,329,159,348"/>
+<area shape="rect" id="node3" href="javascript:void(0);" title="Common base class for all non&#45;exit exceptions." alt="" coords="22,280,171,355"/>
+<area shape="rect" id="node4_16" href="javascript:void(0);" title="exceptions.BaseException.args" alt="" coords="18,28,174,47"/>
+<area shape="rect" id="node4_17" href="javascript:void(0);" title="exceptions.BaseException.message" alt="" coords="18,47,174,65"/>
+<area shape="rect" id="node4_18" href="javascript:void(0);" title="x.__delattr__(&#39;name&#39;) &lt;==&gt; del x.name" alt="" coords="18,68,174,87"/>
+<area shape="rect" id="node4_19" href="javascript:void(0);" title="x.__getattribute__(&#39;name&#39;) &lt;==&gt; x.name" alt="" coords="18,87,174,105"/>
+<area shape="rect" id="node4_20" href="javascript:void(0);" title="x[y]" alt="" coords="18,105,174,124"/>
+<area shape="rect" id="node4_21" href="javascript:void(0);" title="x[i:j]" alt="" coords="18,124,174,143"/>
+<area shape="rect" id="node4_22" href="javascript:void(0);" title="helper for pickle" alt="" coords="18,143,174,161"/>
+<area shape="rect" id="node4_23" href="javascript:void(0);" title="repr(x)" alt="" coords="18,161,174,180"/>
+<area shape="rect" id="node4_24" href="javascript:void(0);" title="x.__setattr__(&#39;name&#39;, value) &lt;==&gt; x.name = value" alt="" coords="18,180,174,199"/>
+<area shape="rect" id="node4_25" href="javascript:void(0);" title="exceptions.BaseException.__setstate__" alt="" coords="18,199,174,217"/>
+<area shape="rect" id="node4_26" href="javascript:void(0);" title="str(x)" alt="" coords="18,217,174,236"/>
+<area shape="rect" id="node4_27" href="javascript:void(0);" title="exceptions.BaseException.__unicode__" alt="" coords="18,236,174,255"/>
+<area shape="rect" id="node4" href="javascript:void(0);" title="Common base class for all exceptions" alt="" coords="5,5,185,261"/>
 </map>
   <img src="uml_class_diagram_for_googleap_14.gif" alt='' usemap="#uml_class_diagram_for_googleap_14" ismap="ismap" class="graph-without-title" />
 </center>
@@ -187,7 +187,7 @@
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Tue Nov  1 17:02:49 2016
+    Generated by Epydoc 3.0.1 on Thu Jan  5 12:55:03 2017
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/epy/googleapiclient.errors.InvalidNotificationError-class.html b/docs/epy/googleapiclient.errors.InvalidNotificationError-class.html
index 775cc5b..dc56e58 100644
--- a/docs/epy/googleapiclient.errors.InvalidNotificationError-class.html
+++ b/docs/epy/googleapiclient.errors.InvalidNotificationError-class.html
@@ -59,24 +59,24 @@
 <h1 class="epydoc">Class InvalidNotificationError</h1><p class="nomargin-top"><span class="codelink"><a href="googleapiclient.errors-pysrc.html#InvalidNotificationError">source&nbsp;code</a></span></p>
 <center>
 <center>  <map id="uml_class_diagram_for_googleap_15" name="uml_class_diagram_for_googleap_15">
-<area shape="rect" id="node1" href="googleapiclient.errors.InvalidNotificationError-class.html" title="The channel Notification is invalid." alt="" coords="15,461,174,507"/>
-<area shape="rect" id="node2" href="googleapiclient.errors.Error-class.html" title="Base error for this module." alt="" coords="67,397,122,443"/>
-<area shape="rect" id="node3_14" href="javascript:void(0);" title="x.__init__(...) initializes x; see help(type(x)) for signature" alt="" coords="32,332,159,352"/>
-<area shape="rect" id="node3_15" href="javascript:void(0);" title="exceptions.Exception.__new__" alt="" coords="32,352,159,372"/>
-<area shape="rect" id="node3" href="javascript:void(0);" title="Common base class for all non&#45;exit exceptions." alt="" coords="19,299,170,379"/>
-<area shape="rect" id="node4_16" href="javascript:void(0);" title="exceptions.BaseException.args" alt="" coords="17,31,175,51"/>
-<area shape="rect" id="node4_17" href="javascript:void(0);" title="exceptions.BaseException.message" alt="" coords="17,51,175,71"/>
-<area shape="rect" id="node4_18" href="javascript:void(0);" title="x.__delattr__(&#39;name&#39;) &lt;==&gt; del x.name" alt="" coords="17,73,175,93"/>
-<area shape="rect" id="node4_19" href="javascript:void(0);" title="x.__getattribute__(&#39;name&#39;) &lt;==&gt; x.name" alt="" coords="17,93,175,113"/>
-<area shape="rect" id="node4_20" href="javascript:void(0);" title="x[y]" alt="" coords="17,113,175,133"/>
-<area shape="rect" id="node4_21" href="javascript:void(0);" title="x[i:j]" alt="" coords="17,133,175,153"/>
-<area shape="rect" id="node4_22" href="javascript:void(0);" title="helper for pickle" alt="" coords="17,153,175,173"/>
-<area shape="rect" id="node4_23" href="javascript:void(0);" title="repr(x)" alt="" coords="17,173,175,193"/>
-<area shape="rect" id="node4_24" href="javascript:void(0);" title="x.__setattr__(&#39;name&#39;, value) &lt;==&gt; x.name = value" alt="" coords="17,193,175,213"/>
-<area shape="rect" id="node4_25" href="javascript:void(0);" title="exceptions.BaseException.__setstate__" alt="" coords="17,213,175,233"/>
-<area shape="rect" id="node4_26" href="javascript:void(0);" title="str(x)" alt="" coords="17,233,175,253"/>
-<area shape="rect" id="node4_27" href="javascript:void(0);" title="exceptions.BaseException.__unicode__" alt="" coords="17,253,175,273"/>
-<area shape="rect" id="node4" href="javascript:void(0);" title="Common base class for all exceptions" alt="" coords="5,5,187,280"/>
+<area shape="rect" id="node1" href="googleapiclient.errors.InvalidNotificationError-class.html" title="The channel Notification is invalid." alt="" coords="18,435,175,477"/>
+<area shape="rect" id="node2" href="googleapiclient.errors.Error-class.html" title="Base error for this module." alt="" coords="70,373,123,416"/>
+<area shape="rect" id="node3_14" href="javascript:void(0);" title="x.__init__(...) initializes x; see help(type(x)) for signature" alt="" coords="34,311,159,329"/>
+<area shape="rect" id="node3_15" href="javascript:void(0);" title="exceptions.Exception.__new__" alt="" coords="34,329,159,348"/>
+<area shape="rect" id="node3" href="javascript:void(0);" title="Common base class for all non&#45;exit exceptions." alt="" coords="22,280,171,355"/>
+<area shape="rect" id="node4_16" href="javascript:void(0);" title="exceptions.BaseException.args" alt="" coords="18,28,174,47"/>
+<area shape="rect" id="node4_17" href="javascript:void(0);" title="exceptions.BaseException.message" alt="" coords="18,47,174,65"/>
+<area shape="rect" id="node4_18" href="javascript:void(0);" title="x.__delattr__(&#39;name&#39;) &lt;==&gt; del x.name" alt="" coords="18,68,174,87"/>
+<area shape="rect" id="node4_19" href="javascript:void(0);" title="x.__getattribute__(&#39;name&#39;) &lt;==&gt; x.name" alt="" coords="18,87,174,105"/>
+<area shape="rect" id="node4_20" href="javascript:void(0);" title="x[y]" alt="" coords="18,105,174,124"/>
+<area shape="rect" id="node4_21" href="javascript:void(0);" title="x[i:j]" alt="" coords="18,124,174,143"/>
+<area shape="rect" id="node4_22" href="javascript:void(0);" title="helper for pickle" alt="" coords="18,143,174,161"/>
+<area shape="rect" id="node4_23" href="javascript:void(0);" title="repr(x)" alt="" coords="18,161,174,180"/>
+<area shape="rect" id="node4_24" href="javascript:void(0);" title="x.__setattr__(&#39;name&#39;, value) &lt;==&gt; x.name = value" alt="" coords="18,180,174,199"/>
+<area shape="rect" id="node4_25" href="javascript:void(0);" title="exceptions.BaseException.__setstate__" alt="" coords="18,199,174,217"/>
+<area shape="rect" id="node4_26" href="javascript:void(0);" title="str(x)" alt="" coords="18,217,174,236"/>
+<area shape="rect" id="node4_27" href="javascript:void(0);" title="exceptions.BaseException.__unicode__" alt="" coords="18,236,174,255"/>
+<area shape="rect" id="node4" href="javascript:void(0);" title="Common base class for all exceptions" alt="" coords="5,5,185,261"/>
 </map>
   <img src="uml_class_diagram_for_googleap_15.gif" alt='' usemap="#uml_class_diagram_for_googleap_15" ismap="ismap" class="graph-without-title" />
 </center>
@@ -187,7 +187,7 @@
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Tue Nov  1 17:02:49 2016
+    Generated by Epydoc 3.0.1 on Thu Jan  5 12:55:03 2017
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/epy/googleapiclient.errors.MediaUploadSizeError-class.html b/docs/epy/googleapiclient.errors.MediaUploadSizeError-class.html
index 4c57ad2..be6285b 100644
--- a/docs/epy/googleapiclient.errors.MediaUploadSizeError-class.html
+++ b/docs/epy/googleapiclient.errors.MediaUploadSizeError-class.html
@@ -59,24 +59,24 @@
 <h1 class="epydoc">Class MediaUploadSizeError</h1><p class="nomargin-top"><span class="codelink"><a href="googleapiclient.errors-pysrc.html#MediaUploadSizeError">source&nbsp;code</a></span></p>
 <center>
 <center>  <map id="uml_class_diagram_for_googleap_16" name="uml_class_diagram_for_googleap_16">
-<area shape="rect" id="node1" href="googleapiclient.errors.MediaUploadSizeError-class.html" title="Media is larger than the method can accept." alt="" coords="17,461,173,507"/>
-<area shape="rect" id="node2" href="googleapiclient.errors.Error-class.html" title="Base error for this module." alt="" coords="67,397,122,443"/>
-<area shape="rect" id="node3_14" href="javascript:void(0);" title="x.__init__(...) initializes x; see help(type(x)) for signature" alt="" coords="32,332,159,352"/>
-<area shape="rect" id="node3_15" href="javascript:void(0);" title="exceptions.Exception.__new__" alt="" coords="32,352,159,372"/>
-<area shape="rect" id="node3" href="javascript:void(0);" title="Common base class for all non&#45;exit exceptions." alt="" coords="19,299,170,379"/>
-<area shape="rect" id="node4_16" href="javascript:void(0);" title="exceptions.BaseException.args" alt="" coords="17,31,175,51"/>
-<area shape="rect" id="node4_17" href="javascript:void(0);" title="exceptions.BaseException.message" alt="" coords="17,51,175,71"/>
-<area shape="rect" id="node4_18" href="javascript:void(0);" title="x.__delattr__(&#39;name&#39;) &lt;==&gt; del x.name" alt="" coords="17,73,175,93"/>
-<area shape="rect" id="node4_19" href="javascript:void(0);" title="x.__getattribute__(&#39;name&#39;) &lt;==&gt; x.name" alt="" coords="17,93,175,113"/>
-<area shape="rect" id="node4_20" href="javascript:void(0);" title="x[y]" alt="" coords="17,113,175,133"/>
-<area shape="rect" id="node4_21" href="javascript:void(0);" title="x[i:j]" alt="" coords="17,133,175,153"/>
-<area shape="rect" id="node4_22" href="javascript:void(0);" title="helper for pickle" alt="" coords="17,153,175,173"/>
-<area shape="rect" id="node4_23" href="javascript:void(0);" title="repr(x)" alt="" coords="17,173,175,193"/>
-<area shape="rect" id="node4_24" href="javascript:void(0);" title="x.__setattr__(&#39;name&#39;, value) &lt;==&gt; x.name = value" alt="" coords="17,193,175,213"/>
-<area shape="rect" id="node4_25" href="javascript:void(0);" title="exceptions.BaseException.__setstate__" alt="" coords="17,213,175,233"/>
-<area shape="rect" id="node4_26" href="javascript:void(0);" title="str(x)" alt="" coords="17,233,175,253"/>
-<area shape="rect" id="node4_27" href="javascript:void(0);" title="exceptions.BaseException.__unicode__" alt="" coords="17,253,175,273"/>
-<area shape="rect" id="node4" href="javascript:void(0);" title="Common base class for all exceptions" alt="" coords="5,5,187,280"/>
+<area shape="rect" id="node1" href="googleapiclient.errors.MediaUploadSizeError-class.html" title="Media is larger than the method can accept." alt="" coords="18,435,175,477"/>
+<area shape="rect" id="node2" href="googleapiclient.errors.Error-class.html" title="Base error for this module." alt="" coords="70,373,123,416"/>
+<area shape="rect" id="node3_14" href="javascript:void(0);" title="x.__init__(...) initializes x; see help(type(x)) for signature" alt="" coords="34,311,159,329"/>
+<area shape="rect" id="node3_15" href="javascript:void(0);" title="exceptions.Exception.__new__" alt="" coords="34,329,159,348"/>
+<area shape="rect" id="node3" href="javascript:void(0);" title="Common base class for all non&#45;exit exceptions." alt="" coords="22,280,171,355"/>
+<area shape="rect" id="node4_16" href="javascript:void(0);" title="exceptions.BaseException.args" alt="" coords="18,28,174,47"/>
+<area shape="rect" id="node4_17" href="javascript:void(0);" title="exceptions.BaseException.message" alt="" coords="18,47,174,65"/>
+<area shape="rect" id="node4_18" href="javascript:void(0);" title="x.__delattr__(&#39;name&#39;) &lt;==&gt; del x.name" alt="" coords="18,68,174,87"/>
+<area shape="rect" id="node4_19" href="javascript:void(0);" title="x.__getattribute__(&#39;name&#39;) &lt;==&gt; x.name" alt="" coords="18,87,174,105"/>
+<area shape="rect" id="node4_20" href="javascript:void(0);" title="x[y]" alt="" coords="18,105,174,124"/>
+<area shape="rect" id="node4_21" href="javascript:void(0);" title="x[i:j]" alt="" coords="18,124,174,143"/>
+<area shape="rect" id="node4_22" href="javascript:void(0);" title="helper for pickle" alt="" coords="18,143,174,161"/>
+<area shape="rect" id="node4_23" href="javascript:void(0);" title="repr(x)" alt="" coords="18,161,174,180"/>
+<area shape="rect" id="node4_24" href="javascript:void(0);" title="x.__setattr__(&#39;name&#39;, value) &lt;==&gt; x.name = value" alt="" coords="18,180,174,199"/>
+<area shape="rect" id="node4_25" href="javascript:void(0);" title="exceptions.BaseException.__setstate__" alt="" coords="18,199,174,217"/>
+<area shape="rect" id="node4_26" href="javascript:void(0);" title="str(x)" alt="" coords="18,217,174,236"/>
+<area shape="rect" id="node4_27" href="javascript:void(0);" title="exceptions.BaseException.__unicode__" alt="" coords="18,236,174,255"/>
+<area shape="rect" id="node4" href="javascript:void(0);" title="Common base class for all exceptions" alt="" coords="5,5,185,261"/>
 </map>
   <img src="uml_class_diagram_for_googleap_16.gif" alt='' usemap="#uml_class_diagram_for_googleap_16" ismap="ismap" class="graph-without-title" />
 </center>
@@ -187,7 +187,7 @@
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Tue Nov  1 17:02:49 2016
+    Generated by Epydoc 3.0.1 on Thu Jan  5 12:55:03 2017
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/epy/googleapiclient.errors.ResumableUploadError-class.html b/docs/epy/googleapiclient.errors.ResumableUploadError-class.html
index 34802ac..7a41d45 100644
--- a/docs/epy/googleapiclient.errors.ResumableUploadError-class.html
+++ b/docs/epy/googleapiclient.errors.ResumableUploadError-class.html
@@ -59,25 +59,25 @@
 <h1 class="epydoc">Class ResumableUploadError</h1><p class="nomargin-top"><span class="codelink"><a href="googleapiclient.errors-pysrc.html#ResumableUploadError">source&nbsp;code</a></span></p>
 <center>
 <center>  <map id="uml_class_diagram_for_googleap_17" name="uml_class_diagram_for_googleap_17">
-<area shape="rect" id="node1" href="googleapiclient.errors.ResumableUploadError-class.html" title="Error occured during resumable upload." alt="" coords="49,523,210,568"/>
-<area shape="rect" id="node2_14" href="googleapiclient.errors.HttpError-class.html#__init__" title="x.__init__(...) initializes x; see help(type(x)) for signature" alt="" coords="17,437,244,457"/>
-<area shape="rect" id="node2_15" href="googleapiclient.errors.HttpError-class.html#__repr__" title="str(x)" alt="" coords="17,457,244,477"/>
-<area shape="rect" id="node2_16" href="googleapiclient.errors.HttpError-class.html#__str__" title="str(x)" alt="" coords="17,477,244,497"/>
-<area shape="rect" id="node2" href="googleapiclient.errors.HttpError-class.html" title="HTTP data was invalid or unexpected." alt="" coords="5,403,256,503"/>
-<area shape="rect" id="node3" href="googleapiclient.errors.Error-class.html" title="Base error for this module." alt="" coords="102,339,157,384"/>
-<area shape="rect" id="node4_17" href="javascript:void(0);" title="exceptions.BaseException.args" alt="" coords="52,31,209,51"/>
-<area shape="rect" id="node4_18" href="javascript:void(0);" title="exceptions.BaseException.message" alt="" coords="52,51,209,71"/>
-<area shape="rect" id="node4_19" href="javascript:void(0);" title="x.__delattr__(&#39;name&#39;) &lt;==&gt; del x.name" alt="" coords="52,73,209,93"/>
-<area shape="rect" id="node4_20" href="javascript:void(0);" title="x.__getattribute__(&#39;name&#39;) &lt;==&gt; x.name" alt="" coords="52,93,209,113"/>
-<area shape="rect" id="node4_21" href="javascript:void(0);" title="x[y]" alt="" coords="52,113,209,133"/>
-<area shape="rect" id="node4_22" href="javascript:void(0);" title="x[i:j]" alt="" coords="52,133,209,153"/>
-<area shape="rect" id="node4_23" href="javascript:void(0);" title="helper for pickle" alt="" coords="52,153,209,173"/>
-<area shape="rect" id="node4_24" href="javascript:void(0);" title="x.__setattr__(&#39;name&#39;, value) &lt;==&gt; x.name = value" alt="" coords="52,173,209,193"/>
-<area shape="rect" id="node4_25" href="javascript:void(0);" title="exceptions.BaseException.__setstate__" alt="" coords="52,193,209,213"/>
-<area shape="rect" id="node4_26" href="javascript:void(0);" title="exceptions.BaseException.__unicode__" alt="" coords="52,213,209,233"/>
-<area shape="rect" id="node4" href="javascript:void(0);" title="Common base class for all exceptions" alt="" coords="40,5,221,240"/>
-<area shape="rect" id="node5_27" href="javascript:void(0);" title="exceptions.Exception.__new__" alt="" coords="67,293,193,313"/>
-<area shape="rect" id="node5" href="javascript:void(0);" title="Common base class for all non&#45;exit exceptions." alt="" coords="54,259,205,319"/>
+<area shape="rect" id="node1" href="googleapiclient.errors.ResumableUploadError-class.html" title="Error occured during resumable upload." alt="" coords="51,491,214,533"/>
+<area shape="rect" id="node2_14" href="googleapiclient.errors.HttpError-class.html#__init__" title="x.__init__(...) initializes x; see help(type(x)) for signature" alt="" coords="18,409,246,428"/>
+<area shape="rect" id="node2_15" href="googleapiclient.errors.HttpError-class.html#__repr__" title="str(x)" alt="" coords="18,428,246,447"/>
+<area shape="rect" id="node2_16" href="googleapiclient.errors.HttpError-class.html#__str__" title="str(x)" alt="" coords="18,447,246,465"/>
+<area shape="rect" id="node2" href="googleapiclient.errors.HttpError-class.html" title="HTTP data was invalid or unexpected." alt="" coords="5,379,257,472"/>
+<area shape="rect" id="node3_17" href="javascript:void(0);" title="exceptions.Exception.__new__" alt="" coords="70,273,195,292"/>
+<area shape="rect" id="node3" href="javascript:void(0);" title="Common base class for all non&#45;exit exceptions." alt="" coords="58,243,207,299"/>
+<area shape="rect" id="node5" href="googleapiclient.errors.Error-class.html" title="Base error for this module." alt="" coords="106,317,159,360"/>
+<area shape="rect" id="node4_18" href="javascript:void(0);" title="exceptions.BaseException.args" alt="" coords="54,28,210,47"/>
+<area shape="rect" id="node4_19" href="javascript:void(0);" title="exceptions.BaseException.message" alt="" coords="54,47,210,65"/>
+<area shape="rect" id="node4_20" href="javascript:void(0);" title="x.__delattr__(&#39;name&#39;) &lt;==&gt; del x.name" alt="" coords="54,68,210,87"/>
+<area shape="rect" id="node4_21" href="javascript:void(0);" title="x.__getattribute__(&#39;name&#39;) &lt;==&gt; x.name" alt="" coords="54,87,210,105"/>
+<area shape="rect" id="node4_22" href="javascript:void(0);" title="x[y]" alt="" coords="54,105,210,124"/>
+<area shape="rect" id="node4_23" href="javascript:void(0);" title="x[i:j]" alt="" coords="54,124,210,143"/>
+<area shape="rect" id="node4_24" href="javascript:void(0);" title="helper for pickle" alt="" coords="54,143,210,161"/>
+<area shape="rect" id="node4_25" href="javascript:void(0);" title="x.__setattr__(&#39;name&#39;, value) &lt;==&gt; x.name = value" alt="" coords="54,161,210,180"/>
+<area shape="rect" id="node4_26" href="javascript:void(0);" title="exceptions.BaseException.__setstate__" alt="" coords="54,180,210,199"/>
+<area shape="rect" id="node4_27" href="javascript:void(0);" title="exceptions.BaseException.__unicode__" alt="" coords="54,199,210,217"/>
+<area shape="rect" id="node4" href="javascript:void(0);" title="Common base class for all exceptions" alt="" coords="41,5,221,224"/>
 </map>
   <img src="uml_class_diagram_for_googleap_17.gif" alt='' usemap="#uml_class_diagram_for_googleap_17" ismap="ismap" class="graph-without-title" />
 </center>
@@ -193,7 +193,7 @@
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Tue Nov  1 17:02:49 2016
+    Generated by Epydoc 3.0.1 on Thu Jan  5 12:55:03 2017
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/epy/googleapiclient.errors.UnacceptableMimeTypeError-class.html b/docs/epy/googleapiclient.errors.UnacceptableMimeTypeError-class.html
index 267e8cd..5d100b9 100644
--- a/docs/epy/googleapiclient.errors.UnacceptableMimeTypeError-class.html
+++ b/docs/epy/googleapiclient.errors.UnacceptableMimeTypeError-class.html
@@ -59,24 +59,24 @@
 <h1 class="epydoc">Class UnacceptableMimeTypeError</h1><p class="nomargin-top"><span class="codelink"><a href="googleapiclient.errors-pysrc.html#UnacceptableMimeTypeError">source&nbsp;code</a></span></p>
 <center>
 <center>  <map id="uml_class_diagram_for_googleap_18" name="uml_class_diagram_for_googleap_18">
-<area shape="rect" id="node1" href="googleapiclient.errors.UnacceptableMimeTypeError-class.html" title="That is an unacceptable mimetype for this operation." alt="" coords="5,461,200,507"/>
-<area shape="rect" id="node2" href="googleapiclient.errors.Error-class.html" title="Base error for this module." alt="" coords="74,397,129,443"/>
-<area shape="rect" id="node3_14" href="javascript:void(0);" title="x.__init__(...) initializes x; see help(type(x)) for signature" alt="" coords="39,332,165,352"/>
-<area shape="rect" id="node3_15" href="javascript:void(0);" title="exceptions.Exception.__new__" alt="" coords="39,352,165,372"/>
-<area shape="rect" id="node3" href="javascript:void(0);" title="Common base class for all non&#45;exit exceptions." alt="" coords="26,299,177,379"/>
-<area shape="rect" id="node4_16" href="javascript:void(0);" title="exceptions.BaseException.args" alt="" coords="24,31,181,51"/>
-<area shape="rect" id="node4_17" href="javascript:void(0);" title="exceptions.BaseException.message" alt="" coords="24,51,181,71"/>
-<area shape="rect" id="node4_18" href="javascript:void(0);" title="x.__delattr__(&#39;name&#39;) &lt;==&gt; del x.name" alt="" coords="24,73,181,93"/>
-<area shape="rect" id="node4_19" href="javascript:void(0);" title="x.__getattribute__(&#39;name&#39;) &lt;==&gt; x.name" alt="" coords="24,93,181,113"/>
-<area shape="rect" id="node4_20" href="javascript:void(0);" title="x[y]" alt="" coords="24,113,181,133"/>
-<area shape="rect" id="node4_21" href="javascript:void(0);" title="x[i:j]" alt="" coords="24,133,181,153"/>
-<area shape="rect" id="node4_22" href="javascript:void(0);" title="helper for pickle" alt="" coords="24,153,181,173"/>
-<area shape="rect" id="node4_23" href="javascript:void(0);" title="repr(x)" alt="" coords="24,173,181,193"/>
-<area shape="rect" id="node4_24" href="javascript:void(0);" title="x.__setattr__(&#39;name&#39;, value) &lt;==&gt; x.name = value" alt="" coords="24,193,181,213"/>
-<area shape="rect" id="node4_25" href="javascript:void(0);" title="exceptions.BaseException.__setstate__" alt="" coords="24,213,181,233"/>
-<area shape="rect" id="node4_26" href="javascript:void(0);" title="str(x)" alt="" coords="24,233,181,253"/>
-<area shape="rect" id="node4_27" href="javascript:void(0);" title="exceptions.BaseException.__unicode__" alt="" coords="24,253,181,273"/>
-<area shape="rect" id="node4" href="javascript:void(0);" title="Common base class for all exceptions" alt="" coords="12,5,193,280"/>
+<area shape="rect" id="node1" href="googleapiclient.errors.UnacceptableMimeTypeError-class.html" title="That is an unacceptable mimetype for this operation." alt="" coords="5,435,201,477"/>
+<area shape="rect" id="node2" href="googleapiclient.errors.Error-class.html" title="Base error for this module." alt="" coords="78,373,131,416"/>
+<area shape="rect" id="node3_14" href="javascript:void(0);" title="x.__init__(...) initializes x; see help(type(x)) for signature" alt="" coords="42,311,167,329"/>
+<area shape="rect" id="node3_15" href="javascript:void(0);" title="exceptions.Exception.__new__" alt="" coords="42,329,167,348"/>
+<area shape="rect" id="node3" href="javascript:void(0);" title="Common base class for all non&#45;exit exceptions." alt="" coords="30,280,179,355"/>
+<area shape="rect" id="node4_16" href="javascript:void(0);" title="exceptions.BaseException.args" alt="" coords="26,28,182,47"/>
+<area shape="rect" id="node4_17" href="javascript:void(0);" title="exceptions.BaseException.message" alt="" coords="26,47,182,65"/>
+<area shape="rect" id="node4_18" href="javascript:void(0);" title="x.__delattr__(&#39;name&#39;) &lt;==&gt; del x.name" alt="" coords="26,68,182,87"/>
+<area shape="rect" id="node4_19" href="javascript:void(0);" title="x.__getattribute__(&#39;name&#39;) &lt;==&gt; x.name" alt="" coords="26,87,182,105"/>
+<area shape="rect" id="node4_20" href="javascript:void(0);" title="x[y]" alt="" coords="26,105,182,124"/>
+<area shape="rect" id="node4_21" href="javascript:void(0);" title="x[i:j]" alt="" coords="26,124,182,143"/>
+<area shape="rect" id="node4_22" href="javascript:void(0);" title="helper for pickle" alt="" coords="26,143,182,161"/>
+<area shape="rect" id="node4_23" href="javascript:void(0);" title="repr(x)" alt="" coords="26,161,182,180"/>
+<area shape="rect" id="node4_24" href="javascript:void(0);" title="x.__setattr__(&#39;name&#39;, value) &lt;==&gt; x.name = value" alt="" coords="26,180,182,199"/>
+<area shape="rect" id="node4_25" href="javascript:void(0);" title="exceptions.BaseException.__setstate__" alt="" coords="26,199,182,217"/>
+<area shape="rect" id="node4_26" href="javascript:void(0);" title="str(x)" alt="" coords="26,217,182,236"/>
+<area shape="rect" id="node4_27" href="javascript:void(0);" title="exceptions.BaseException.__unicode__" alt="" coords="26,236,182,255"/>
+<area shape="rect" id="node4" href="javascript:void(0);" title="Common base class for all exceptions" alt="" coords="13,5,193,261"/>
 </map>
   <img src="uml_class_diagram_for_googleap_18.gif" alt='' usemap="#uml_class_diagram_for_googleap_18" ismap="ismap" class="graph-without-title" />
 </center>
@@ -187,7 +187,7 @@
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Tue Nov  1 17:02:50 2016
+    Generated by Epydoc 3.0.1 on Thu Jan  5 12:55:03 2017
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/epy/googleapiclient.errors.UnexpectedBodyError-class.html b/docs/epy/googleapiclient.errors.UnexpectedBodyError-class.html
index 455eb81..8c1b148 100644
--- a/docs/epy/googleapiclient.errors.UnexpectedBodyError-class.html
+++ b/docs/epy/googleapiclient.errors.UnexpectedBodyError-class.html
@@ -59,24 +59,24 @@
 <h1 class="epydoc">Class UnexpectedBodyError</h1><p class="nomargin-top"><span class="codelink"><a href="googleapiclient.errors-pysrc.html#UnexpectedBodyError">source&nbsp;code</a></span></p>
 <center>
 <center>  <map id="uml_class_diagram_for_googleap_19" name="uml_class_diagram_for_googleap_19">
-<area shape="rect" id="node1_14" href="googleapiclient.errors.UnexpectedBodyError-class.html#__init__" title="Constructor for an UnexpectedMethodError." alt="" coords="16,477,216,497"/>
-<area shape="rect" id="node1" href="googleapiclient.errors.UnexpectedBodyError-class.html" title="Exception raised by RequestMockBuilder on unexpected bodies." alt="" coords="4,443,228,503"/>
-<area shape="rect" id="node2" href="googleapiclient.errors.Error-class.html" title="Base error for this module." alt="" coords="87,379,142,424"/>
-<area shape="rect" id="node3_15" href="javascript:void(0);" title="exceptions.Exception.__new__" alt="" coords="52,333,179,353"/>
-<area shape="rect" id="node3" href="javascript:void(0);" title="Common base class for all non&#45;exit exceptions." alt="" coords="39,299,190,359"/>
-<area shape="rect" id="node4_16" href="javascript:void(0);" title="exceptions.BaseException.args" alt="" coords="37,31,195,51"/>
-<area shape="rect" id="node4_17" href="javascript:void(0);" title="exceptions.BaseException.message" alt="" coords="37,51,195,71"/>
-<area shape="rect" id="node4_18" href="javascript:void(0);" title="x.__delattr__(&#39;name&#39;) &lt;==&gt; del x.name" alt="" coords="37,73,195,93"/>
-<area shape="rect" id="node4_19" href="javascript:void(0);" title="x.__getattribute__(&#39;name&#39;) &lt;==&gt; x.name" alt="" coords="37,93,195,113"/>
-<area shape="rect" id="node4_20" href="javascript:void(0);" title="x[y]" alt="" coords="37,113,195,133"/>
-<area shape="rect" id="node4_21" href="javascript:void(0);" title="x[i:j]" alt="" coords="37,133,195,153"/>
-<area shape="rect" id="node4_22" href="javascript:void(0);" title="helper for pickle" alt="" coords="37,153,195,173"/>
-<area shape="rect" id="node4_23" href="javascript:void(0);" title="repr(x)" alt="" coords="37,173,195,193"/>
-<area shape="rect" id="node4_24" href="javascript:void(0);" title="x.__setattr__(&#39;name&#39;, value) &lt;==&gt; x.name = value" alt="" coords="37,193,195,213"/>
-<area shape="rect" id="node4_25" href="javascript:void(0);" title="exceptions.BaseException.__setstate__" alt="" coords="37,213,195,233"/>
-<area shape="rect" id="node4_26" href="javascript:void(0);" title="str(x)" alt="" coords="37,233,195,253"/>
-<area shape="rect" id="node4_27" href="javascript:void(0);" title="exceptions.BaseException.__unicode__" alt="" coords="37,253,195,273"/>
-<area shape="rect" id="node4" href="javascript:void(0);" title="Common base class for all exceptions" alt="" coords="25,5,207,280"/>
+<area shape="rect" id="node1_14" href="googleapiclient.errors.UnexpectedBodyError-class.html#__init__" title="Constructor for an UnexpectedMethodError." alt="" coords="18,447,219,465"/>
+<area shape="rect" id="node1" href="googleapiclient.errors.UnexpectedBodyError-class.html" title="Exception raised by RequestMockBuilder on unexpected bodies." alt="" coords="5,416,231,472"/>
+<area shape="rect" id="node2" href="googleapiclient.errors.Error-class.html" title="Base error for this module." alt="" coords="93,355,146,397"/>
+<area shape="rect" id="node3_15" href="javascript:void(0);" title="exceptions.Exception.__new__" alt="" coords="57,311,182,329"/>
+<area shape="rect" id="node3" href="javascript:void(0);" title="Common base class for all non&#45;exit exceptions." alt="" coords="45,280,194,336"/>
+<area shape="rect" id="node4_16" href="javascript:void(0);" title="exceptions.BaseException.args" alt="" coords="41,28,197,47"/>
+<area shape="rect" id="node4_17" href="javascript:void(0);" title="exceptions.BaseException.message" alt="" coords="41,47,197,65"/>
+<area shape="rect" id="node4_18" href="javascript:void(0);" title="x.__delattr__(&#39;name&#39;) &lt;==&gt; del x.name" alt="" coords="41,68,197,87"/>
+<area shape="rect" id="node4_19" href="javascript:void(0);" title="x.__getattribute__(&#39;name&#39;) &lt;==&gt; x.name" alt="" coords="41,87,197,105"/>
+<area shape="rect" id="node4_20" href="javascript:void(0);" title="x[y]" alt="" coords="41,105,197,124"/>
+<area shape="rect" id="node4_21" href="javascript:void(0);" title="x[i:j]" alt="" coords="41,124,197,143"/>
+<area shape="rect" id="node4_22" href="javascript:void(0);" title="helper for pickle" alt="" coords="41,143,197,161"/>
+<area shape="rect" id="node4_23" href="javascript:void(0);" title="repr(x)" alt="" coords="41,161,197,180"/>
+<area shape="rect" id="node4_24" href="javascript:void(0);" title="x.__setattr__(&#39;name&#39;, value) &lt;==&gt; x.name = value" alt="" coords="41,180,197,199"/>
+<area shape="rect" id="node4_25" href="javascript:void(0);" title="exceptions.BaseException.__setstate__" alt="" coords="41,199,197,217"/>
+<area shape="rect" id="node4_26" href="javascript:void(0);" title="str(x)" alt="" coords="41,217,197,236"/>
+<area shape="rect" id="node4_27" href="javascript:void(0);" title="exceptions.BaseException.__unicode__" alt="" coords="41,236,197,255"/>
+<area shape="rect" id="node4" href="javascript:void(0);" title="Common base class for all exceptions" alt="" coords="28,5,208,261"/>
 </map>
   <img src="uml_class_diagram_for_googleap_19.gif" alt='' usemap="#uml_class_diagram_for_googleap_19" ismap="ismap" class="graph-without-title" />
 </center>
@@ -252,7 +252,7 @@
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Tue Nov  1 17:02:50 2016
+    Generated by Epydoc 3.0.1 on Thu Jan  5 12:55:03 2017
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/epy/googleapiclient.errors.UnexpectedMethodError-class.html b/docs/epy/googleapiclient.errors.UnexpectedMethodError-class.html
index a99b5c0..d3a038a 100644
--- a/docs/epy/googleapiclient.errors.UnexpectedMethodError-class.html
+++ b/docs/epy/googleapiclient.errors.UnexpectedMethodError-class.html
@@ -59,24 +59,24 @@
 <h1 class="epydoc">Class UnexpectedMethodError</h1><p class="nomargin-top"><span class="codelink"><a href="googleapiclient.errors-pysrc.html#UnexpectedMethodError">source&nbsp;code</a></span></p>
 <center>
 <center>  <map id="uml_class_diagram_for_googleap_20" name="uml_class_diagram_for_googleap_20">
-<area shape="rect" id="node1_14" href="googleapiclient.errors.UnexpectedMethodError-class.html#__init__" title="Constructor for an UnexpectedMethodError." alt="" coords="17,477,200,497"/>
-<area shape="rect" id="node1" href="googleapiclient.errors.UnexpectedMethodError-class.html" title="Exception raised by RequestMockBuilder on unexpected calls." alt="" coords="5,443,211,503"/>
-<area shape="rect" id="node2" href="googleapiclient.errors.Error-class.html" title="Base error for this module." alt="" coords="81,379,135,424"/>
-<area shape="rect" id="node3_15" href="javascript:void(0);" title="exceptions.Exception.__new__" alt="" coords="45,333,172,353"/>
-<area shape="rect" id="node3" href="javascript:void(0);" title="Common base class for all non&#45;exit exceptions." alt="" coords="33,299,183,359"/>
-<area shape="rect" id="node4_16" href="javascript:void(0);" title="exceptions.BaseException.args" alt="" coords="31,31,188,51"/>
-<area shape="rect" id="node4_17" href="javascript:void(0);" title="exceptions.BaseException.message" alt="" coords="31,51,188,71"/>
-<area shape="rect" id="node4_18" href="javascript:void(0);" title="x.__delattr__(&#39;name&#39;) &lt;==&gt; del x.name" alt="" coords="31,73,188,93"/>
-<area shape="rect" id="node4_19" href="javascript:void(0);" title="x.__getattribute__(&#39;name&#39;) &lt;==&gt; x.name" alt="" coords="31,93,188,113"/>
-<area shape="rect" id="node4_20" href="javascript:void(0);" title="x[y]" alt="" coords="31,113,188,133"/>
-<area shape="rect" id="node4_21" href="javascript:void(0);" title="x[i:j]" alt="" coords="31,133,188,153"/>
-<area shape="rect" id="node4_22" href="javascript:void(0);" title="helper for pickle" alt="" coords="31,153,188,173"/>
-<area shape="rect" id="node4_23" href="javascript:void(0);" title="repr(x)" alt="" coords="31,173,188,193"/>
-<area shape="rect" id="node4_24" href="javascript:void(0);" title="x.__setattr__(&#39;name&#39;, value) &lt;==&gt; x.name = value" alt="" coords="31,193,188,213"/>
-<area shape="rect" id="node4_25" href="javascript:void(0);" title="exceptions.BaseException.__setstate__" alt="" coords="31,213,188,233"/>
-<area shape="rect" id="node4_26" href="javascript:void(0);" title="str(x)" alt="" coords="31,233,188,253"/>
-<area shape="rect" id="node4_27" href="javascript:void(0);" title="exceptions.BaseException.__unicode__" alt="" coords="31,253,188,273"/>
-<area shape="rect" id="node4" href="javascript:void(0);" title="Common base class for all exceptions" alt="" coords="19,5,200,280"/>
+<area shape="rect" id="node1_14" href="googleapiclient.errors.UnexpectedMethodError-class.html#__init__" title="Constructor for an UnexpectedMethodError." alt="" coords="17,447,201,465"/>
+<area shape="rect" id="node1" href="googleapiclient.errors.UnexpectedMethodError-class.html" title="Exception raised by RequestMockBuilder on unexpected calls." alt="" coords="5,416,213,472"/>
+<area shape="rect" id="node2" href="googleapiclient.errors.Error-class.html" title="Base error for this module." alt="" coords="83,355,136,397"/>
+<area shape="rect" id="node3_15" href="javascript:void(0);" title="exceptions.Exception.__new__" alt="" coords="47,311,172,329"/>
+<area shape="rect" id="node3" href="javascript:void(0);" title="Common base class for all non&#45;exit exceptions." alt="" coords="35,280,184,336"/>
+<area shape="rect" id="node4_16" href="javascript:void(0);" title="exceptions.BaseException.args" alt="" coords="31,28,187,47"/>
+<area shape="rect" id="node4_17" href="javascript:void(0);" title="exceptions.BaseException.message" alt="" coords="31,47,187,65"/>
+<area shape="rect" id="node4_18" href="javascript:void(0);" title="x.__delattr__(&#39;name&#39;) &lt;==&gt; del x.name" alt="" coords="31,68,187,87"/>
+<area shape="rect" id="node4_19" href="javascript:void(0);" title="x.__getattribute__(&#39;name&#39;) &lt;==&gt; x.name" alt="" coords="31,87,187,105"/>
+<area shape="rect" id="node4_20" href="javascript:void(0);" title="x[y]" alt="" coords="31,105,187,124"/>
+<area shape="rect" id="node4_21" href="javascript:void(0);" title="x[i:j]" alt="" coords="31,124,187,143"/>
+<area shape="rect" id="node4_22" href="javascript:void(0);" title="helper for pickle" alt="" coords="31,143,187,161"/>
+<area shape="rect" id="node4_23" href="javascript:void(0);" title="repr(x)" alt="" coords="31,161,187,180"/>
+<area shape="rect" id="node4_24" href="javascript:void(0);" title="x.__setattr__(&#39;name&#39;, value) &lt;==&gt; x.name = value" alt="" coords="31,180,187,199"/>
+<area shape="rect" id="node4_25" href="javascript:void(0);" title="exceptions.BaseException.__setstate__" alt="" coords="31,199,187,217"/>
+<area shape="rect" id="node4_26" href="javascript:void(0);" title="str(x)" alt="" coords="31,217,187,236"/>
+<area shape="rect" id="node4_27" href="javascript:void(0);" title="exceptions.BaseException.__unicode__" alt="" coords="31,236,187,255"/>
+<area shape="rect" id="node4" href="javascript:void(0);" title="Common base class for all exceptions" alt="" coords="18,5,198,261"/>
 </map>
   <img src="uml_class_diagram_for_googleap_20.gif" alt='' usemap="#uml_class_diagram_for_googleap_20" ismap="ismap" class="graph-without-title" />
 </center>
@@ -254,7 +254,7 @@
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Tue Nov  1 17:02:50 2016
+    Generated by Epydoc 3.0.1 on Thu Jan  5 12:55:03 2017
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/epy/googleapiclient.errors.UnknownApiNameOrVersion-class.html b/docs/epy/googleapiclient.errors.UnknownApiNameOrVersion-class.html
index a120d97..9383c28 100644
--- a/docs/epy/googleapiclient.errors.UnknownApiNameOrVersion-class.html
+++ b/docs/epy/googleapiclient.errors.UnknownApiNameOrVersion-class.html
@@ -59,24 +59,24 @@
 <h1 class="epydoc">Class UnknownApiNameOrVersion</h1><p class="nomargin-top"><span class="codelink"><a href="googleapiclient.errors-pysrc.html#UnknownApiNameOrVersion">source&nbsp;code</a></span></p>
 <center>
 <center>  <map id="uml_class_diagram_for_googleap_21" name="uml_class_diagram_for_googleap_21">
-<area shape="rect" id="node1" href="googleapiclient.errors.UnknownApiNameOrVersion-class.html" title="No API with that name and version exists." alt="" coords="5,461,198,507"/>
-<area shape="rect" id="node2" href="googleapiclient.errors.Error-class.html" title="Base error for this module." alt="" coords="74,397,129,443"/>
-<area shape="rect" id="node3_14" href="javascript:void(0);" title="x.__init__(...) initializes x; see help(type(x)) for signature" alt="" coords="39,332,165,352"/>
-<area shape="rect" id="node3_15" href="javascript:void(0);" title="exceptions.Exception.__new__" alt="" coords="39,352,165,372"/>
-<area shape="rect" id="node3" href="javascript:void(0);" title="Common base class for all non&#45;exit exceptions." alt="" coords="26,299,177,379"/>
-<area shape="rect" id="node4_16" href="javascript:void(0);" title="exceptions.BaseException.args" alt="" coords="24,31,181,51"/>
-<area shape="rect" id="node4_17" href="javascript:void(0);" title="exceptions.BaseException.message" alt="" coords="24,51,181,71"/>
-<area shape="rect" id="node4_18" href="javascript:void(0);" title="x.__delattr__(&#39;name&#39;) &lt;==&gt; del x.name" alt="" coords="24,73,181,93"/>
-<area shape="rect" id="node4_19" href="javascript:void(0);" title="x.__getattribute__(&#39;name&#39;) &lt;==&gt; x.name" alt="" coords="24,93,181,113"/>
-<area shape="rect" id="node4_20" href="javascript:void(0);" title="x[y]" alt="" coords="24,113,181,133"/>
-<area shape="rect" id="node4_21" href="javascript:void(0);" title="x[i:j]" alt="" coords="24,133,181,153"/>
-<area shape="rect" id="node4_22" href="javascript:void(0);" title="helper for pickle" alt="" coords="24,153,181,173"/>
-<area shape="rect" id="node4_23" href="javascript:void(0);" title="repr(x)" alt="" coords="24,173,181,193"/>
-<area shape="rect" id="node4_24" href="javascript:void(0);" title="x.__setattr__(&#39;name&#39;, value) &lt;==&gt; x.name = value" alt="" coords="24,193,181,213"/>
-<area shape="rect" id="node4_25" href="javascript:void(0);" title="exceptions.BaseException.__setstate__" alt="" coords="24,213,181,233"/>
-<area shape="rect" id="node4_26" href="javascript:void(0);" title="str(x)" alt="" coords="24,233,181,253"/>
-<area shape="rect" id="node4_27" href="javascript:void(0);" title="exceptions.BaseException.__unicode__" alt="" coords="24,253,181,273"/>
-<area shape="rect" id="node4" href="javascript:void(0);" title="Common base class for all exceptions" alt="" coords="12,5,193,280"/>
+<area shape="rect" id="node1" href="googleapiclient.errors.UnknownApiNameOrVersion-class.html" title="No API with that name and version exists." alt="" coords="5,435,199,477"/>
+<area shape="rect" id="node2" href="googleapiclient.errors.Error-class.html" title="Base error for this module." alt="" coords="77,373,130,416"/>
+<area shape="rect" id="node3_14" href="javascript:void(0);" title="x.__init__(...) initializes x; see help(type(x)) for signature" alt="" coords="41,311,166,329"/>
+<area shape="rect" id="node3_15" href="javascript:void(0);" title="exceptions.Exception.__new__" alt="" coords="41,329,166,348"/>
+<area shape="rect" id="node3" href="javascript:void(0);" title="Common base class for all non&#45;exit exceptions." alt="" coords="29,280,178,355"/>
+<area shape="rect" id="node4_16" href="javascript:void(0);" title="exceptions.BaseException.args" alt="" coords="25,28,181,47"/>
+<area shape="rect" id="node4_17" href="javascript:void(0);" title="exceptions.BaseException.message" alt="" coords="25,47,181,65"/>
+<area shape="rect" id="node4_18" href="javascript:void(0);" title="x.__delattr__(&#39;name&#39;) &lt;==&gt; del x.name" alt="" coords="25,68,181,87"/>
+<area shape="rect" id="node4_19" href="javascript:void(0);" title="x.__getattribute__(&#39;name&#39;) &lt;==&gt; x.name" alt="" coords="25,87,181,105"/>
+<area shape="rect" id="node4_20" href="javascript:void(0);" title="x[y]" alt="" coords="25,105,181,124"/>
+<area shape="rect" id="node4_21" href="javascript:void(0);" title="x[i:j]" alt="" coords="25,124,181,143"/>
+<area shape="rect" id="node4_22" href="javascript:void(0);" title="helper for pickle" alt="" coords="25,143,181,161"/>
+<area shape="rect" id="node4_23" href="javascript:void(0);" title="repr(x)" alt="" coords="25,161,181,180"/>
+<area shape="rect" id="node4_24" href="javascript:void(0);" title="x.__setattr__(&#39;name&#39;, value) &lt;==&gt; x.name = value" alt="" coords="25,180,181,199"/>
+<area shape="rect" id="node4_25" href="javascript:void(0);" title="exceptions.BaseException.__setstate__" alt="" coords="25,199,181,217"/>
+<area shape="rect" id="node4_26" href="javascript:void(0);" title="str(x)" alt="" coords="25,217,181,236"/>
+<area shape="rect" id="node4_27" href="javascript:void(0);" title="exceptions.BaseException.__unicode__" alt="" coords="25,236,181,255"/>
+<area shape="rect" id="node4" href="javascript:void(0);" title="Common base class for all exceptions" alt="" coords="12,5,192,261"/>
 </map>
   <img src="uml_class_diagram_for_googleap_21.gif" alt='' usemap="#uml_class_diagram_for_googleap_21" ismap="ismap" class="graph-without-title" />
 </center>
@@ -187,7 +187,7 @@
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Tue Nov  1 17:02:50 2016
+    Generated by Epydoc 3.0.1 on Thu Jan  5 12:55:04 2017
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/epy/googleapiclient.errors.UnknownFileType-class.html b/docs/epy/googleapiclient.errors.UnknownFileType-class.html
index 5be3998..a90269d 100644
--- a/docs/epy/googleapiclient.errors.UnknownFileType-class.html
+++ b/docs/epy/googleapiclient.errors.UnknownFileType-class.html
@@ -59,24 +59,24 @@
 <h1 class="epydoc">Class UnknownFileType</h1><p class="nomargin-top"><span class="codelink"><a href="googleapiclient.errors-pysrc.html#UnknownFileType">source&nbsp;code</a></span></p>
 <center>
 <center>  <map id="uml_class_diagram_for_googleap_22" name="uml_class_diagram_for_googleap_22">
-<area shape="rect" id="node1" href="googleapiclient.errors.UnknownFileType-class.html" title="File type unknown or unexpected." alt="" coords="31,461,161,507"/>
-<area shape="rect" id="node2" href="googleapiclient.errors.Error-class.html" title="Base error for this module." alt="" coords="67,397,122,443"/>
-<area shape="rect" id="node3_14" href="javascript:void(0);" title="x.__init__(...) initializes x; see help(type(x)) for signature" alt="" coords="32,332,159,352"/>
-<area shape="rect" id="node3_15" href="javascript:void(0);" title="exceptions.Exception.__new__" alt="" coords="32,352,159,372"/>
-<area shape="rect" id="node3" href="javascript:void(0);" title="Common base class for all non&#45;exit exceptions." alt="" coords="19,299,170,379"/>
-<area shape="rect" id="node4_16" href="javascript:void(0);" title="exceptions.BaseException.args" alt="" coords="17,31,175,51"/>
-<area shape="rect" id="node4_17" href="javascript:void(0);" title="exceptions.BaseException.message" alt="" coords="17,51,175,71"/>
-<area shape="rect" id="node4_18" href="javascript:void(0);" title="x.__delattr__(&#39;name&#39;) &lt;==&gt; del x.name" alt="" coords="17,73,175,93"/>
-<area shape="rect" id="node4_19" href="javascript:void(0);" title="x.__getattribute__(&#39;name&#39;) &lt;==&gt; x.name" alt="" coords="17,93,175,113"/>
-<area shape="rect" id="node4_20" href="javascript:void(0);" title="x[y]" alt="" coords="17,113,175,133"/>
-<area shape="rect" id="node4_21" href="javascript:void(0);" title="x[i:j]" alt="" coords="17,133,175,153"/>
-<area shape="rect" id="node4_22" href="javascript:void(0);" title="helper for pickle" alt="" coords="17,153,175,173"/>
-<area shape="rect" id="node4_23" href="javascript:void(0);" title="repr(x)" alt="" coords="17,173,175,193"/>
-<area shape="rect" id="node4_24" href="javascript:void(0);" title="x.__setattr__(&#39;name&#39;, value) &lt;==&gt; x.name = value" alt="" coords="17,193,175,213"/>
-<area shape="rect" id="node4_25" href="javascript:void(0);" title="exceptions.BaseException.__setstate__" alt="" coords="17,213,175,233"/>
-<area shape="rect" id="node4_26" href="javascript:void(0);" title="str(x)" alt="" coords="17,233,175,253"/>
-<area shape="rect" id="node4_27" href="javascript:void(0);" title="exceptions.BaseException.__unicode__" alt="" coords="17,253,175,273"/>
-<area shape="rect" id="node4" href="javascript:void(0);" title="Common base class for all exceptions" alt="" coords="5,5,187,280"/>
+<area shape="rect" id="node1" href="googleapiclient.errors.UnknownFileType-class.html" title="File type unknown or unexpected." alt="" coords="31,435,160,477"/>
+<area shape="rect" id="node2" href="googleapiclient.errors.Error-class.html" title="Base error for this module." alt="" coords="70,373,123,416"/>
+<area shape="rect" id="node3_14" href="javascript:void(0);" title="x.__init__(...) initializes x; see help(type(x)) for signature" alt="" coords="34,311,159,329"/>
+<area shape="rect" id="node3_15" href="javascript:void(0);" title="exceptions.Exception.__new__" alt="" coords="34,329,159,348"/>
+<area shape="rect" id="node3" href="javascript:void(0);" title="Common base class for all non&#45;exit exceptions." alt="" coords="22,280,171,355"/>
+<area shape="rect" id="node4_16" href="javascript:void(0);" title="exceptions.BaseException.args" alt="" coords="18,28,174,47"/>
+<area shape="rect" id="node4_17" href="javascript:void(0);" title="exceptions.BaseException.message" alt="" coords="18,47,174,65"/>
+<area shape="rect" id="node4_18" href="javascript:void(0);" title="x.__delattr__(&#39;name&#39;) &lt;==&gt; del x.name" alt="" coords="18,68,174,87"/>
+<area shape="rect" id="node4_19" href="javascript:void(0);" title="x.__getattribute__(&#39;name&#39;) &lt;==&gt; x.name" alt="" coords="18,87,174,105"/>
+<area shape="rect" id="node4_20" href="javascript:void(0);" title="x[y]" alt="" coords="18,105,174,124"/>
+<area shape="rect" id="node4_21" href="javascript:void(0);" title="x[i:j]" alt="" coords="18,124,174,143"/>
+<area shape="rect" id="node4_22" href="javascript:void(0);" title="helper for pickle" alt="" coords="18,143,174,161"/>
+<area shape="rect" id="node4_23" href="javascript:void(0);" title="repr(x)" alt="" coords="18,161,174,180"/>
+<area shape="rect" id="node4_24" href="javascript:void(0);" title="x.__setattr__(&#39;name&#39;, value) &lt;==&gt; x.name = value" alt="" coords="18,180,174,199"/>
+<area shape="rect" id="node4_25" href="javascript:void(0);" title="exceptions.BaseException.__setstate__" alt="" coords="18,199,174,217"/>
+<area shape="rect" id="node4_26" href="javascript:void(0);" title="str(x)" alt="" coords="18,217,174,236"/>
+<area shape="rect" id="node4_27" href="javascript:void(0);" title="exceptions.BaseException.__unicode__" alt="" coords="18,236,174,255"/>
+<area shape="rect" id="node4" href="javascript:void(0);" title="Common base class for all exceptions" alt="" coords="5,5,185,261"/>
 </map>
   <img src="uml_class_diagram_for_googleap_22.gif" alt='' usemap="#uml_class_diagram_for_googleap_22" ismap="ismap" class="graph-without-title" />
 </center>
@@ -187,7 +187,7 @@
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Tue Nov  1 17:02:50 2016
+    Generated by Epydoc 3.0.1 on Thu Jan  5 12:55:04 2017
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/epy/googleapiclient.errors.UnknownLinkType-class.html b/docs/epy/googleapiclient.errors.UnknownLinkType-class.html
index 8020548..1deafd9 100644
--- a/docs/epy/googleapiclient.errors.UnknownLinkType-class.html
+++ b/docs/epy/googleapiclient.errors.UnknownLinkType-class.html
@@ -59,24 +59,24 @@
 <h1 class="epydoc">Class UnknownLinkType</h1><p class="nomargin-top"><span class="codelink"><a href="googleapiclient.errors-pysrc.html#UnknownLinkType">source&nbsp;code</a></span></p>
 <center>
 <center>  <map id="uml_class_diagram_for_googleap_23" name="uml_class_diagram_for_googleap_23">
-<area shape="rect" id="node1" href="googleapiclient.errors.UnknownLinkType-class.html" title="Link type unknown or unexpected." alt="" coords="27,461,162,507"/>
-<area shape="rect" id="node2" href="googleapiclient.errors.Error-class.html" title="Base error for this module." alt="" coords="67,397,122,443"/>
-<area shape="rect" id="node3_14" href="javascript:void(0);" title="x.__init__(...) initializes x; see help(type(x)) for signature" alt="" coords="32,332,159,352"/>
-<area shape="rect" id="node3_15" href="javascript:void(0);" title="exceptions.Exception.__new__" alt="" coords="32,352,159,372"/>
-<area shape="rect" id="node3" href="javascript:void(0);" title="Common base class for all non&#45;exit exceptions." alt="" coords="19,299,170,379"/>
-<area shape="rect" id="node4_16" href="javascript:void(0);" title="exceptions.BaseException.args" alt="" coords="17,31,175,51"/>
-<area shape="rect" id="node4_17" href="javascript:void(0);" title="exceptions.BaseException.message" alt="" coords="17,51,175,71"/>
-<area shape="rect" id="node4_18" href="javascript:void(0);" title="x.__delattr__(&#39;name&#39;) &lt;==&gt; del x.name" alt="" coords="17,73,175,93"/>
-<area shape="rect" id="node4_19" href="javascript:void(0);" title="x.__getattribute__(&#39;name&#39;) &lt;==&gt; x.name" alt="" coords="17,93,175,113"/>
-<area shape="rect" id="node4_20" href="javascript:void(0);" title="x[y]" alt="" coords="17,113,175,133"/>
-<area shape="rect" id="node4_21" href="javascript:void(0);" title="x[i:j]" alt="" coords="17,133,175,153"/>
-<area shape="rect" id="node4_22" href="javascript:void(0);" title="helper for pickle" alt="" coords="17,153,175,173"/>
-<area shape="rect" id="node4_23" href="javascript:void(0);" title="repr(x)" alt="" coords="17,173,175,193"/>
-<area shape="rect" id="node4_24" href="javascript:void(0);" title="x.__setattr__(&#39;name&#39;, value) &lt;==&gt; x.name = value" alt="" coords="17,193,175,213"/>
-<area shape="rect" id="node4_25" href="javascript:void(0);" title="exceptions.BaseException.__setstate__" alt="" coords="17,213,175,233"/>
-<area shape="rect" id="node4_26" href="javascript:void(0);" title="str(x)" alt="" coords="17,233,175,253"/>
-<area shape="rect" id="node4_27" href="javascript:void(0);" title="exceptions.BaseException.__unicode__" alt="" coords="17,253,175,273"/>
-<area shape="rect" id="node4" href="javascript:void(0);" title="Common base class for all exceptions" alt="" coords="5,5,187,280"/>
+<area shape="rect" id="node1" href="googleapiclient.errors.UnknownLinkType-class.html" title="Link type unknown or unexpected." alt="" coords="29,435,161,477"/>
+<area shape="rect" id="node2" href="googleapiclient.errors.Error-class.html" title="Base error for this module." alt="" coords="70,373,123,416"/>
+<area shape="rect" id="node3_14" href="javascript:void(0);" title="x.__init__(...) initializes x; see help(type(x)) for signature" alt="" coords="34,311,159,329"/>
+<area shape="rect" id="node3_15" href="javascript:void(0);" title="exceptions.Exception.__new__" alt="" coords="34,329,159,348"/>
+<area shape="rect" id="node3" href="javascript:void(0);" title="Common base class for all non&#45;exit exceptions." alt="" coords="22,280,171,355"/>
+<area shape="rect" id="node4_16" href="javascript:void(0);" title="exceptions.BaseException.args" alt="" coords="18,28,174,47"/>
+<area shape="rect" id="node4_17" href="javascript:void(0);" title="exceptions.BaseException.message" alt="" coords="18,47,174,65"/>
+<area shape="rect" id="node4_18" href="javascript:void(0);" title="x.__delattr__(&#39;name&#39;) &lt;==&gt; del x.name" alt="" coords="18,68,174,87"/>
+<area shape="rect" id="node4_19" href="javascript:void(0);" title="x.__getattribute__(&#39;name&#39;) &lt;==&gt; x.name" alt="" coords="18,87,174,105"/>
+<area shape="rect" id="node4_20" href="javascript:void(0);" title="x[y]" alt="" coords="18,105,174,124"/>
+<area shape="rect" id="node4_21" href="javascript:void(0);" title="x[i:j]" alt="" coords="18,124,174,143"/>
+<area shape="rect" id="node4_22" href="javascript:void(0);" title="helper for pickle" alt="" coords="18,143,174,161"/>
+<area shape="rect" id="node4_23" href="javascript:void(0);" title="repr(x)" alt="" coords="18,161,174,180"/>
+<area shape="rect" id="node4_24" href="javascript:void(0);" title="x.__setattr__(&#39;name&#39;, value) &lt;==&gt; x.name = value" alt="" coords="18,180,174,199"/>
+<area shape="rect" id="node4_25" href="javascript:void(0);" title="exceptions.BaseException.__setstate__" alt="" coords="18,199,174,217"/>
+<area shape="rect" id="node4_26" href="javascript:void(0);" title="str(x)" alt="" coords="18,217,174,236"/>
+<area shape="rect" id="node4_27" href="javascript:void(0);" title="exceptions.BaseException.__unicode__" alt="" coords="18,236,174,255"/>
+<area shape="rect" id="node4" href="javascript:void(0);" title="Common base class for all exceptions" alt="" coords="5,5,185,261"/>
 </map>
   <img src="uml_class_diagram_for_googleap_23.gif" alt='' usemap="#uml_class_diagram_for_googleap_23" ismap="ismap" class="graph-without-title" />
 </center>
@@ -187,7 +187,7 @@
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Tue Nov  1 17:02:50 2016
+    Generated by Epydoc 3.0.1 on Thu Jan  5 12:55:04 2017
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/epy/googleapiclient.http-module.html b/docs/epy/googleapiclient.http-module.html
index 836ff2b..7a75b72 100644
--- a/docs/epy/googleapiclient.http-module.html
+++ b/docs/epy/googleapiclient.http-module.html
@@ -544,7 +544,7 @@
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Tue Nov  1 17:02:49 2016
+    Generated by Epydoc 3.0.1 on Thu Jan  5 12:55:02 2017
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/epy/googleapiclient.http-pysrc.html b/docs/epy/googleapiclient.http-pysrc.html
index 366dec0..8b0889a 100644
--- a/docs/epy/googleapiclient.http-pysrc.html
+++ b/docs/epy/googleapiclient.http-pysrc.html
@@ -1237,137 +1237,141 @@
 <a name="L996"></a><tt class="py-lineno"> 996</tt>  <tt class="py-line">    <tt class="py-keyword">elif</tt> <tt class="py-name">resp</tt><tt class="py-op">.</tt><tt class="py-name">status</tt> <tt class="py-op">==</tt> <tt class="py-number">308</tt><tt class="py-op">:</tt> </tt>
 <a name="L997"></a><tt class="py-lineno"> 997</tt>  <tt class="py-line">      <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_in_error_state</tt> <tt class="py-op">=</tt> <tt class="py-name">False</tt> </tt>
 <a name="L998"></a><tt class="py-lineno"> 998</tt>  <tt class="py-line">      <tt class="py-comment"># A "308 Resume Incomplete" indicates we are not done.</tt> </tt>
-<a name="L999"></a><tt class="py-lineno"> 999</tt>  <tt class="py-line">      <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">resumable_progress</tt> <tt class="py-op">=</tt> <tt class="py-name">int</tt><tt class="py-op">(</tt><tt class="py-name">resp</tt><tt class="py-op">[</tt><tt class="py-string">'range'</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt class="py-name">split</tt><tt class="py-op">(</tt><tt class="py-string">'-'</tt><tt class="py-op">)</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> <tt class="py-op">+</tt> <tt class="py-number">1</tt> </tt>
-<a name="L1000"></a><tt class="py-lineno">1000</tt>  <tt class="py-line">      <tt class="py-keyword">if</tt> <tt class="py-string">'location'</tt> <tt class="py-keyword">in</tt> <tt class="py-name">resp</tt><tt class="py-op">:</tt> </tt>
-<a name="L1001"></a><tt class="py-lineno">1001</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">resumable_uri</tt> <tt class="py-op">=</tt> <tt class="py-name">resp</tt><tt class="py-op">[</tt><tt class="py-string">'location'</tt><tt class="py-op">]</tt> </tt>
-<a name="L1002"></a><tt class="py-lineno">1002</tt>  <tt class="py-line">    <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
-<a name="L1003"></a><tt class="py-lineno">1003</tt>  <tt class="py-line">      <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_in_error_state</tt> <tt class="py-op">=</tt> <tt class="py-name">True</tt> </tt>
-<a name="L1004"></a><tt class="py-lineno">1004</tt>  <tt class="py-line">      <tt class="py-keyword">raise</tt> <tt id="link-173" class="py-name"><a title="googleapiclient.errors.HttpError" class="py-name" href="#" onclick="return doclink('link-173', 'HttpError', 'link-9');">HttpError</a></tt><tt class="py-op">(</tt><tt class="py-name">resp</tt><tt class="py-op">,</tt> <tt class="py-name">content</tt><tt class="py-op">,</tt> <tt class="py-name">uri</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">uri</tt><tt class="py-op">)</tt> </tt>
-<a name="L1005"></a><tt class="py-lineno">1005</tt>  <tt class="py-line"> </tt>
-<a name="L1006"></a><tt class="py-lineno">1006</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-op">(</tt><tt id="link-174" class="py-name" targets="Class googleapiclient.http.MediaUploadProgress=googleapiclient.http.MediaUploadProgress-class.html"><a title="googleapiclient.http.MediaUploadProgress" class="py-name" href="#" onclick="return doclink('link-174', 'MediaUploadProgress', 'link-174');">MediaUploadProgress</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">resumable_progress</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-175" class="py-name"><a title="googleapiclient.http.MediaIoBaseUpload.resumable
+<a name="L999"></a><tt class="py-lineno"> 999</tt>  <tt class="py-line">      <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
+<a name="L1000"></a><tt class="py-lineno">1000</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">resumable_progress</tt> <tt class="py-op">=</tt> <tt class="py-name">int</tt><tt class="py-op">(</tt><tt class="py-name">resp</tt><tt class="py-op">[</tt><tt class="py-string">'range'</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt class="py-name">split</tt><tt class="py-op">(</tt><tt class="py-string">'-'</tt><tt class="py-op">)</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> <tt class="py-op">+</tt> <tt class="py-number">1</tt> </tt>
+<a name="L1001"></a><tt class="py-lineno">1001</tt>  <tt class="py-line">      <tt class="py-keyword">except</tt> <tt class="py-name">KeyError</tt><tt class="py-op">:</tt> </tt>
+<a name="L1002"></a><tt class="py-lineno">1002</tt>  <tt class="py-line">        <tt class="py-comment"># If resp doesn't contain range header, resumable progress is 0</tt> </tt>
+<a name="L1003"></a><tt class="py-lineno">1003</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">resumable_progress</tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt>
+<a name="L1004"></a><tt class="py-lineno">1004</tt>  <tt class="py-line">      <tt class="py-keyword">if</tt> <tt class="py-string">'location'</tt> <tt class="py-keyword">in</tt> <tt class="py-name">resp</tt><tt class="py-op">:</tt> </tt>
+<a name="L1005"></a><tt class="py-lineno">1005</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">resumable_uri</tt> <tt class="py-op">=</tt> <tt class="py-name">resp</tt><tt class="py-op">[</tt><tt class="py-string">'location'</tt><tt class="py-op">]</tt> </tt>
+<a name="L1006"></a><tt class="py-lineno">1006</tt>  <tt class="py-line">    <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L1007"></a><tt class="py-lineno">1007</tt>  <tt class="py-line">      <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_in_error_state</tt> <tt class="py-op">=</tt> <tt class="py-name">True</tt> </tt>
+<a name="L1008"></a><tt class="py-lineno">1008</tt>  <tt class="py-line">      <tt class="py-keyword">raise</tt> <tt id="link-173" class="py-name"><a title="googleapiclient.errors.HttpError" class="py-name" href="#" onclick="return doclink('link-173', 'HttpError', 'link-9');">HttpError</a></tt><tt class="py-op">(</tt><tt class="py-name">resp</tt><tt class="py-op">,</tt> <tt class="py-name">content</tt><tt class="py-op">,</tt> <tt class="py-name">uri</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">uri</tt><tt class="py-op">)</tt> </tt>
+<a name="L1009"></a><tt class="py-lineno">1009</tt>  <tt class="py-line"> </tt>
+<a name="L1010"></a><tt class="py-lineno">1010</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-op">(</tt><tt id="link-174" class="py-name" targets="Class googleapiclient.http.MediaUploadProgress=googleapiclient.http.MediaUploadProgress-class.html"><a title="googleapiclient.http.MediaUploadProgress" class="py-name" href="#" onclick="return doclink('link-174', 'MediaUploadProgress', 'link-174');">MediaUploadProgress</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">resumable_progress</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-175" class="py-name"><a title="googleapiclient.http.MediaIoBaseUpload.resumable
 googleapiclient.http.MediaUpload.resumable" class="py-name" href="#" onclick="return doclink('link-175', 'resumable', 'link-49');">resumable</a></tt><tt class="py-op">.</tt><tt id="link-176" class="py-name"><a title="googleapiclient.http.MediaIoBaseUpload.size
 googleapiclient.http.MediaUpload.size" class="py-name" href="#" onclick="return doclink('link-176', 'size', 'link-123');">size</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
-<a name="L1007"></a><tt class="py-lineno">1007</tt>  <tt class="py-line">            <tt class="py-name">None</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L1008"></a><tt class="py-lineno">1008</tt>  <tt class="py-line"> </tt>
-<a name="HttpRequest.to_json"></a><div id="HttpRequest.to_json-def"><a name="L1009"></a><tt class="py-lineno">1009</tt> <a class="py-toggle" href="#" id="HttpRequest.to_json-toggle" onclick="return toggle('HttpRequest.to_json');">-</a><tt class="py-line">  <tt class="py-keyword">def</tt> <a class="py-def-name" href="googleapiclient.http.HttpRequest-class.html#to_json">to_json</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="HttpRequest.to_json-collapsed" style="display:none;" pad="++++" indent="++++++"></div><div id="HttpRequest.to_json-expanded"><a name="L1010"></a><tt class="py-lineno">1010</tt>  <tt class="py-line">    <tt class="py-docstring">"""Returns a JSON representation of the HttpRequest."""</tt> </tt>
-<a name="L1011"></a><tt class="py-lineno">1011</tt>  <tt class="py-line">    <tt class="py-name">d</tt> <tt class="py-op">=</tt> <tt class="py-name">copy</tt><tt class="py-op">.</tt><tt class="py-name">copy</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__dict__</tt><tt class="py-op">)</tt> </tt>
-<a name="L1012"></a><tt class="py-lineno">1012</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">d</tt><tt class="py-op">[</tt><tt class="py-string">'resumable'</tt><tt class="py-op">]</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
-<a name="L1013"></a><tt class="py-lineno">1013</tt>  <tt class="py-line">      <tt class="py-name">d</tt><tt class="py-op">[</tt><tt class="py-string">'resumable'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-177" class="py-name"><a title="googleapiclient.http.MediaIoBaseUpload.resumable
+<a name="L1011"></a><tt class="py-lineno">1011</tt>  <tt class="py-line">            <tt class="py-name">None</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L1012"></a><tt class="py-lineno">1012</tt>  <tt class="py-line"> </tt>
+<a name="HttpRequest.to_json"></a><div id="HttpRequest.to_json-def"><a name="L1013"></a><tt class="py-lineno">1013</tt> <a class="py-toggle" href="#" id="HttpRequest.to_json-toggle" onclick="return toggle('HttpRequest.to_json');">-</a><tt class="py-line">  <tt class="py-keyword">def</tt> <a class="py-def-name" href="googleapiclient.http.HttpRequest-class.html#to_json">to_json</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="HttpRequest.to_json-collapsed" style="display:none;" pad="++++" indent="++++++"></div><div id="HttpRequest.to_json-expanded"><a name="L1014"></a><tt class="py-lineno">1014</tt>  <tt class="py-line">    <tt class="py-docstring">"""Returns a JSON representation of the HttpRequest."""</tt> </tt>
+<a name="L1015"></a><tt class="py-lineno">1015</tt>  <tt class="py-line">    <tt class="py-name">d</tt> <tt class="py-op">=</tt> <tt class="py-name">copy</tt><tt class="py-op">.</tt><tt class="py-name">copy</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__dict__</tt><tt class="py-op">)</tt> </tt>
+<a name="L1016"></a><tt class="py-lineno">1016</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">d</tt><tt class="py-op">[</tt><tt class="py-string">'resumable'</tt><tt class="py-op">]</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L1017"></a><tt class="py-lineno">1017</tt>  <tt class="py-line">      <tt class="py-name">d</tt><tt class="py-op">[</tt><tt class="py-string">'resumable'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-177" class="py-name"><a title="googleapiclient.http.MediaIoBaseUpload.resumable
 googleapiclient.http.MediaUpload.resumable" class="py-name" href="#" onclick="return doclink('link-177', 'resumable', 'link-49');">resumable</a></tt><tt class="py-op">.</tt><tt id="link-178" class="py-name" targets="Method googleapiclient.http.HttpRequest.to_json()=googleapiclient.http.HttpRequest-class.html#to_json,Method googleapiclient.http.MediaFileUpload.to_json()=googleapiclient.http.MediaFileUpload-class.html#to_json,Method googleapiclient.http.MediaIoBaseUpload.to_json()=googleapiclient.http.MediaIoBaseUpload-class.html#to_json,Method googleapiclient.http.MediaUpload.to_json()=googleapiclient.http.MediaUpload-class.html#to_json"><a title="googleapiclient.http.HttpRequest.to_json
 googleapiclient.http.MediaFileUpload.to_json
 googleapiclient.http.MediaIoBaseUpload.to_json
 googleapiclient.http.MediaUpload.to_json" class="py-name" href="#" onclick="return doclink('link-178', 'to_json', 'link-178');">to_json</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-<a name="L1014"></a><tt class="py-lineno">1014</tt>  <tt class="py-line">    <tt class="py-keyword">del</tt> <tt class="py-name">d</tt><tt class="py-op">[</tt><tt class="py-string">'http'</tt><tt class="py-op">]</tt> </tt>
-<a name="L1015"></a><tt class="py-lineno">1015</tt>  <tt class="py-line">    <tt class="py-keyword">del</tt> <tt class="py-name">d</tt><tt class="py-op">[</tt><tt class="py-string">'postproc'</tt><tt class="py-op">]</tt> </tt>
-<a name="L1016"></a><tt class="py-lineno">1016</tt>  <tt class="py-line">    <tt class="py-keyword">del</tt> <tt class="py-name">d</tt><tt class="py-op">[</tt><tt class="py-string">'_sleep'</tt><tt class="py-op">]</tt> </tt>
-<a name="L1017"></a><tt class="py-lineno">1017</tt>  <tt class="py-line">    <tt class="py-keyword">del</tt> <tt class="py-name">d</tt><tt class="py-op">[</tt><tt class="py-string">'_rand'</tt><tt class="py-op">]</tt> </tt>
-<a name="L1018"></a><tt class="py-lineno">1018</tt>  <tt class="py-line"> </tt>
-<a name="L1019"></a><tt class="py-lineno">1019</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-name">json</tt><tt class="py-op">.</tt><tt class="py-name">dumps</tt><tt class="py-op">(</tt><tt class="py-name">d</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L1020"></a><tt class="py-lineno">1020</tt>  <tt class="py-line"> </tt>
-<a name="L1021"></a><tt class="py-lineno">1021</tt>  <tt class="py-line">  <tt class="py-decorator">@</tt><tt class="py-decorator">staticmethod</tt> </tt>
-<a name="HttpRequest.from_json"></a><div id="HttpRequest.from_json-def"><a name="L1022"></a><tt class="py-lineno">1022</tt> <a class="py-toggle" href="#" id="HttpRequest.from_json-toggle" onclick="return toggle('HttpRequest.from_json');">-</a><tt class="py-line">  <tt class="py-keyword">def</tt> <a class="py-def-name" href="googleapiclient.http.HttpRequest-class.html#from_json">from_json</a><tt class="py-op">(</tt><tt class="py-param">s</tt><tt class="py-op">,</tt> <tt class="py-param">http</tt><tt class="py-op">,</tt> <tt class="py-param">postproc</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="HttpRequest.from_json-collapsed" style="display:none;" pad="++++" indent="++++++"></div><div id="HttpRequest.from_json-expanded"><a name="L1023"></a><tt class="py-lineno">1023</tt>  <tt class="py-line">    <tt class="py-docstring">"""Returns an HttpRequest populated with info from a JSON object."""</tt> </tt>
-<a name="L1024"></a><tt class="py-lineno">1024</tt>  <tt class="py-line">    <tt class="py-name">d</tt> <tt class="py-op">=</tt> <tt class="py-name">json</tt><tt class="py-op">.</tt><tt class="py-name">loads</tt><tt class="py-op">(</tt><tt class="py-name">s</tt><tt class="py-op">)</tt> </tt>
-<a name="L1025"></a><tt class="py-lineno">1025</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">d</tt><tt class="py-op">[</tt><tt class="py-string">'resumable'</tt><tt class="py-op">]</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
-<a name="L1026"></a><tt class="py-lineno">1026</tt>  <tt class="py-line">      <tt class="py-name">d</tt><tt class="py-op">[</tt><tt class="py-string">'resumable'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt id="link-179" class="py-name" targets="Class googleapiclient.http.MediaUpload=googleapiclient.http.MediaUpload-class.html"><a title="googleapiclient.http.MediaUpload" class="py-name" href="#" onclick="return doclink('link-179', 'MediaUpload', 'link-179');">MediaUpload</a></tt><tt class="py-op">.</tt><tt id="link-180" class="py-name" targets="Class Method googleapiclient.http.MediaUpload.new_from_json()=googleapiclient.http.MediaUpload-class.html#new_from_json"><a title="googleapiclient.http.MediaUpload.new_from_json" class="py-name" href="#" onclick="return doclink('link-180', 'new_from_json', 'link-180');">new_from_json</a></tt><tt class="py-op">(</tt><tt class="py-name">d</tt><tt class="py-op">[</tt><tt class="py-string">'resumable'</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
-<a name="L1027"></a><tt class="py-lineno">1027</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt id="link-181" class="py-name" targets="Class googleapiclient.http.HttpRequest=googleapiclient.http.HttpRequest-class.html"><a title="googleapiclient.http.HttpRequest" class="py-name" href="#" onclick="return doclink('link-181', 'HttpRequest', 'link-181');">HttpRequest</a></tt><tt class="py-op">(</tt> </tt>
-<a name="L1028"></a><tt class="py-lineno">1028</tt>  <tt class="py-line">        <tt id="link-182" class="py-name"><a title="googleapiclient.http" class="py-name" href="#" onclick="return doclink('link-182', 'http', 'link-33');">http</a></tt><tt class="py-op">,</tt> </tt>
-<a name="L1029"></a><tt class="py-lineno">1029</tt>  <tt class="py-line">        <tt class="py-name">postproc</tt><tt class="py-op">,</tt> </tt>
-<a name="L1030"></a><tt class="py-lineno">1030</tt>  <tt class="py-line">        <tt class="py-name">uri</tt><tt class="py-op">=</tt><tt class="py-name">d</tt><tt class="py-op">[</tt><tt class="py-string">'uri'</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> </tt>
-<a name="L1031"></a><tt class="py-lineno">1031</tt>  <tt class="py-line">        <tt class="py-name">method</tt><tt class="py-op">=</tt><tt class="py-name">d</tt><tt class="py-op">[</tt><tt class="py-string">'method'</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> </tt>
-<a name="L1032"></a><tt class="py-lineno">1032</tt>  <tt class="py-line">        <tt id="link-183" class="py-name"><a title="googleapiclient.channel.Channel.body" class="py-name" href="#" onclick="return doclink('link-183', 'body', 'link-69');">body</a></tt><tt class="py-op">=</tt><tt class="py-name">d</tt><tt class="py-op">[</tt><tt class="py-string">'body'</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> </tt>
-<a name="L1033"></a><tt class="py-lineno">1033</tt>  <tt class="py-line">        <tt class="py-name">headers</tt><tt class="py-op">=</tt><tt class="py-name">d</tt><tt class="py-op">[</tt><tt class="py-string">'headers'</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> </tt>
-<a name="L1034"></a><tt class="py-lineno">1034</tt>  <tt class="py-line">        <tt class="py-name">methodId</tt><tt class="py-op">=</tt><tt class="py-name">d</tt><tt class="py-op">[</tt><tt class="py-string">'methodId'</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> </tt>
-<a name="L1035"></a><tt class="py-lineno">1035</tt>  <tt class="py-line">        <tt id="link-184" class="py-name"><a title="googleapiclient.http.MediaIoBaseUpload.resumable
+<a name="L1018"></a><tt class="py-lineno">1018</tt>  <tt class="py-line">    <tt class="py-keyword">del</tt> <tt class="py-name">d</tt><tt class="py-op">[</tt><tt class="py-string">'http'</tt><tt class="py-op">]</tt> </tt>
+<a name="L1019"></a><tt class="py-lineno">1019</tt>  <tt class="py-line">    <tt class="py-keyword">del</tt> <tt class="py-name">d</tt><tt class="py-op">[</tt><tt class="py-string">'postproc'</tt><tt class="py-op">]</tt> </tt>
+<a name="L1020"></a><tt class="py-lineno">1020</tt>  <tt class="py-line">    <tt class="py-keyword">del</tt> <tt class="py-name">d</tt><tt class="py-op">[</tt><tt class="py-string">'_sleep'</tt><tt class="py-op">]</tt> </tt>
+<a name="L1021"></a><tt class="py-lineno">1021</tt>  <tt class="py-line">    <tt class="py-keyword">del</tt> <tt class="py-name">d</tt><tt class="py-op">[</tt><tt class="py-string">'_rand'</tt><tt class="py-op">]</tt> </tt>
+<a name="L1022"></a><tt class="py-lineno">1022</tt>  <tt class="py-line"> </tt>
+<a name="L1023"></a><tt class="py-lineno">1023</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-name">json</tt><tt class="py-op">.</tt><tt class="py-name">dumps</tt><tt class="py-op">(</tt><tt class="py-name">d</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L1024"></a><tt class="py-lineno">1024</tt>  <tt class="py-line"> </tt>
+<a name="L1025"></a><tt class="py-lineno">1025</tt>  <tt class="py-line">  <tt class="py-decorator">@</tt><tt class="py-decorator">staticmethod</tt> </tt>
+<a name="HttpRequest.from_json"></a><div id="HttpRequest.from_json-def"><a name="L1026"></a><tt class="py-lineno">1026</tt> <a class="py-toggle" href="#" id="HttpRequest.from_json-toggle" onclick="return toggle('HttpRequest.from_json');">-</a><tt class="py-line">  <tt class="py-keyword">def</tt> <a class="py-def-name" href="googleapiclient.http.HttpRequest-class.html#from_json">from_json</a><tt class="py-op">(</tt><tt class="py-param">s</tt><tt class="py-op">,</tt> <tt class="py-param">http</tt><tt class="py-op">,</tt> <tt class="py-param">postproc</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="HttpRequest.from_json-collapsed" style="display:none;" pad="++++" indent="++++++"></div><div id="HttpRequest.from_json-expanded"><a name="L1027"></a><tt class="py-lineno">1027</tt>  <tt class="py-line">    <tt class="py-docstring">"""Returns an HttpRequest populated with info from a JSON object."""</tt> </tt>
+<a name="L1028"></a><tt class="py-lineno">1028</tt>  <tt class="py-line">    <tt class="py-name">d</tt> <tt class="py-op">=</tt> <tt class="py-name">json</tt><tt class="py-op">.</tt><tt class="py-name">loads</tt><tt class="py-op">(</tt><tt class="py-name">s</tt><tt class="py-op">)</tt> </tt>
+<a name="L1029"></a><tt class="py-lineno">1029</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">d</tt><tt class="py-op">[</tt><tt class="py-string">'resumable'</tt><tt class="py-op">]</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L1030"></a><tt class="py-lineno">1030</tt>  <tt class="py-line">      <tt class="py-name">d</tt><tt class="py-op">[</tt><tt class="py-string">'resumable'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt id="link-179" class="py-name" targets="Class googleapiclient.http.MediaUpload=googleapiclient.http.MediaUpload-class.html"><a title="googleapiclient.http.MediaUpload" class="py-name" href="#" onclick="return doclink('link-179', 'MediaUpload', 'link-179');">MediaUpload</a></tt><tt class="py-op">.</tt><tt id="link-180" class="py-name" targets="Class Method googleapiclient.http.MediaUpload.new_from_json()=googleapiclient.http.MediaUpload-class.html#new_from_json"><a title="googleapiclient.http.MediaUpload.new_from_json" class="py-name" href="#" onclick="return doclink('link-180', 'new_from_json', 'link-180');">new_from_json</a></tt><tt class="py-op">(</tt><tt class="py-name">d</tt><tt class="py-op">[</tt><tt class="py-string">'resumable'</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L1031"></a><tt class="py-lineno">1031</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt id="link-181" class="py-name" targets="Class googleapiclient.http.HttpRequest=googleapiclient.http.HttpRequest-class.html"><a title="googleapiclient.http.HttpRequest" class="py-name" href="#" onclick="return doclink('link-181', 'HttpRequest', 'link-181');">HttpRequest</a></tt><tt class="py-op">(</tt> </tt>
+<a name="L1032"></a><tt class="py-lineno">1032</tt>  <tt class="py-line">        <tt id="link-182" class="py-name"><a title="googleapiclient.http" class="py-name" href="#" onclick="return doclink('link-182', 'http', 'link-33');">http</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L1033"></a><tt class="py-lineno">1033</tt>  <tt class="py-line">        <tt class="py-name">postproc</tt><tt class="py-op">,</tt> </tt>
+<a name="L1034"></a><tt class="py-lineno">1034</tt>  <tt class="py-line">        <tt class="py-name">uri</tt><tt class="py-op">=</tt><tt class="py-name">d</tt><tt class="py-op">[</tt><tt class="py-string">'uri'</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> </tt>
+<a name="L1035"></a><tt class="py-lineno">1035</tt>  <tt class="py-line">        <tt class="py-name">method</tt><tt class="py-op">=</tt><tt class="py-name">d</tt><tt class="py-op">[</tt><tt class="py-string">'method'</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> </tt>
+<a name="L1036"></a><tt class="py-lineno">1036</tt>  <tt class="py-line">        <tt id="link-183" class="py-name"><a title="googleapiclient.channel.Channel.body" class="py-name" href="#" onclick="return doclink('link-183', 'body', 'link-69');">body</a></tt><tt class="py-op">=</tt><tt class="py-name">d</tt><tt class="py-op">[</tt><tt class="py-string">'body'</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> </tt>
+<a name="L1037"></a><tt class="py-lineno">1037</tt>  <tt class="py-line">        <tt class="py-name">headers</tt><tt class="py-op">=</tt><tt class="py-name">d</tt><tt class="py-op">[</tt><tt class="py-string">'headers'</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> </tt>
+<a name="L1038"></a><tt class="py-lineno">1038</tt>  <tt class="py-line">        <tt class="py-name">methodId</tt><tt class="py-op">=</tt><tt class="py-name">d</tt><tt class="py-op">[</tt><tt class="py-string">'methodId'</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> </tt>
+<a name="L1039"></a><tt class="py-lineno">1039</tt>  <tt class="py-line">        <tt id="link-184" class="py-name"><a title="googleapiclient.http.MediaIoBaseUpload.resumable
 googleapiclient.http.MediaUpload.resumable" class="py-name" href="#" onclick="return doclink('link-184', 'resumable', 'link-49');">resumable</a></tt><tt class="py-op">=</tt><tt class="py-name">d</tt><tt class="py-op">[</tt><tt class="py-string">'resumable'</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
-</div></div><a name="L1036"></a><tt class="py-lineno">1036</tt>  <tt class="py-line"> </tt>
-<a name="BatchHttpRequest"></a><div id="BatchHttpRequest-def"><a name="L1037"></a><tt class="py-lineno">1037</tt>  <tt class="py-line"> </tt>
-<a name="L1038"></a><tt class="py-lineno">1038</tt> <a class="py-toggle" href="#" id="BatchHttpRequest-toggle" onclick="return toggle('BatchHttpRequest');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="googleapiclient.http.BatchHttpRequest-class.html">BatchHttpRequest</a><tt class="py-op">(</tt><tt class="py-base-class">object</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="BatchHttpRequest-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="BatchHttpRequest-expanded"><a name="L1039"></a><tt class="py-lineno">1039</tt>  <tt class="py-line">  <tt class="py-docstring">"""Batches multiple HttpRequest objects into a single HTTP request.</tt> </tt>
-<a name="L1040"></a><tt class="py-lineno">1040</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L1041"></a><tt class="py-lineno">1041</tt>  <tt class="py-line"><tt class="py-docstring">  Example:</tt> </tt>
-<a name="L1042"></a><tt class="py-lineno">1042</tt>  <tt class="py-line"><tt class="py-docstring">    from googleapiclient.http import BatchHttpRequest</tt> </tt>
-<a name="L1043"></a><tt class="py-lineno">1043</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L1044"></a><tt class="py-lineno">1044</tt>  <tt class="py-line"><tt class="py-docstring">    def list_animals(request_id, response, exception):</tt> </tt>
-<a name="L1045"></a><tt class="py-lineno">1045</tt>  <tt class="py-line"><tt class="py-docstring">      \"\"\"Do something with the animals list response.\"\"\"</tt> </tt>
-<a name="L1046"></a><tt class="py-lineno">1046</tt>  <tt class="py-line"><tt class="py-docstring">      if exception is not None:</tt> </tt>
-<a name="L1047"></a><tt class="py-lineno">1047</tt>  <tt class="py-line"><tt class="py-docstring">        # Do something with the exception.</tt> </tt>
-<a name="L1048"></a><tt class="py-lineno">1048</tt>  <tt class="py-line"><tt class="py-docstring">        pass</tt> </tt>
-<a name="L1049"></a><tt class="py-lineno">1049</tt>  <tt class="py-line"><tt class="py-docstring">      else:</tt> </tt>
-<a name="L1050"></a><tt class="py-lineno">1050</tt>  <tt class="py-line"><tt class="py-docstring">        # Do something with the response.</tt> </tt>
-<a name="L1051"></a><tt class="py-lineno">1051</tt>  <tt class="py-line"><tt class="py-docstring">        pass</tt> </tt>
-<a name="L1052"></a><tt class="py-lineno">1052</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L1053"></a><tt class="py-lineno">1053</tt>  <tt class="py-line"><tt class="py-docstring">    def list_farmers(request_id, response, exception):</tt> </tt>
-<a name="L1054"></a><tt class="py-lineno">1054</tt>  <tt class="py-line"><tt class="py-docstring">      \"\"\"Do something with the farmers list response.\"\"\"</tt> </tt>
-<a name="L1055"></a><tt class="py-lineno">1055</tt>  <tt class="py-line"><tt class="py-docstring">      if exception is not None:</tt> </tt>
-<a name="L1056"></a><tt class="py-lineno">1056</tt>  <tt class="py-line"><tt class="py-docstring">        # Do something with the exception.</tt> </tt>
-<a name="L1057"></a><tt class="py-lineno">1057</tt>  <tt class="py-line"><tt class="py-docstring">        pass</tt> </tt>
-<a name="L1058"></a><tt class="py-lineno">1058</tt>  <tt class="py-line"><tt class="py-docstring">      else:</tt> </tt>
-<a name="L1059"></a><tt class="py-lineno">1059</tt>  <tt class="py-line"><tt class="py-docstring">        # Do something with the response.</tt> </tt>
-<a name="L1060"></a><tt class="py-lineno">1060</tt>  <tt class="py-line"><tt class="py-docstring">        pass</tt> </tt>
-<a name="L1061"></a><tt class="py-lineno">1061</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L1062"></a><tt class="py-lineno">1062</tt>  <tt class="py-line"><tt class="py-docstring">    service = build('farm', 'v2')</tt> </tt>
-<a name="L1063"></a><tt class="py-lineno">1063</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L1064"></a><tt class="py-lineno">1064</tt>  <tt class="py-line"><tt class="py-docstring">    batch = BatchHttpRequest()</tt> </tt>
+</div></div><a name="L1040"></a><tt class="py-lineno">1040</tt>  <tt class="py-line"> </tt>
+<a name="BatchHttpRequest"></a><div id="BatchHttpRequest-def"><a name="L1041"></a><tt class="py-lineno">1041</tt>  <tt class="py-line"> </tt>
+<a name="L1042"></a><tt class="py-lineno">1042</tt> <a class="py-toggle" href="#" id="BatchHttpRequest-toggle" onclick="return toggle('BatchHttpRequest');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="googleapiclient.http.BatchHttpRequest-class.html">BatchHttpRequest</a><tt class="py-op">(</tt><tt class="py-base-class">object</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="BatchHttpRequest-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="BatchHttpRequest-expanded"><a name="L1043"></a><tt class="py-lineno">1043</tt>  <tt class="py-line">  <tt class="py-docstring">"""Batches multiple HttpRequest objects into a single HTTP request.</tt> </tt>
+<a name="L1044"></a><tt class="py-lineno">1044</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L1045"></a><tt class="py-lineno">1045</tt>  <tt class="py-line"><tt class="py-docstring">  Example:</tt> </tt>
+<a name="L1046"></a><tt class="py-lineno">1046</tt>  <tt class="py-line"><tt class="py-docstring">    from googleapiclient.http import BatchHttpRequest</tt> </tt>
+<a name="L1047"></a><tt class="py-lineno">1047</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L1048"></a><tt class="py-lineno">1048</tt>  <tt class="py-line"><tt class="py-docstring">    def list_animals(request_id, response, exception):</tt> </tt>
+<a name="L1049"></a><tt class="py-lineno">1049</tt>  <tt class="py-line"><tt class="py-docstring">      \"\"\"Do something with the animals list response.\"\"\"</tt> </tt>
+<a name="L1050"></a><tt class="py-lineno">1050</tt>  <tt class="py-line"><tt class="py-docstring">      if exception is not None:</tt> </tt>
+<a name="L1051"></a><tt class="py-lineno">1051</tt>  <tt class="py-line"><tt class="py-docstring">        # Do something with the exception.</tt> </tt>
+<a name="L1052"></a><tt class="py-lineno">1052</tt>  <tt class="py-line"><tt class="py-docstring">        pass</tt> </tt>
+<a name="L1053"></a><tt class="py-lineno">1053</tt>  <tt class="py-line"><tt class="py-docstring">      else:</tt> </tt>
+<a name="L1054"></a><tt class="py-lineno">1054</tt>  <tt class="py-line"><tt class="py-docstring">        # Do something with the response.</tt> </tt>
+<a name="L1055"></a><tt class="py-lineno">1055</tt>  <tt class="py-line"><tt class="py-docstring">        pass</tt> </tt>
+<a name="L1056"></a><tt class="py-lineno">1056</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L1057"></a><tt class="py-lineno">1057</tt>  <tt class="py-line"><tt class="py-docstring">    def list_farmers(request_id, response, exception):</tt> </tt>
+<a name="L1058"></a><tt class="py-lineno">1058</tt>  <tt class="py-line"><tt class="py-docstring">      \"\"\"Do something with the farmers list response.\"\"\"</tt> </tt>
+<a name="L1059"></a><tt class="py-lineno">1059</tt>  <tt class="py-line"><tt class="py-docstring">      if exception is not None:</tt> </tt>
+<a name="L1060"></a><tt class="py-lineno">1060</tt>  <tt class="py-line"><tt class="py-docstring">        # Do something with the exception.</tt> </tt>
+<a name="L1061"></a><tt class="py-lineno">1061</tt>  <tt class="py-line"><tt class="py-docstring">        pass</tt> </tt>
+<a name="L1062"></a><tt class="py-lineno">1062</tt>  <tt class="py-line"><tt class="py-docstring">      else:</tt> </tt>
+<a name="L1063"></a><tt class="py-lineno">1063</tt>  <tt class="py-line"><tt class="py-docstring">        # Do something with the response.</tt> </tt>
+<a name="L1064"></a><tt class="py-lineno">1064</tt>  <tt class="py-line"><tt class="py-docstring">        pass</tt> </tt>
 <a name="L1065"></a><tt class="py-lineno">1065</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L1066"></a><tt class="py-lineno">1066</tt>  <tt class="py-line"><tt class="py-docstring">    batch.add(service.animals().list(), list_animals)</tt> </tt>
-<a name="L1067"></a><tt class="py-lineno">1067</tt>  <tt class="py-line"><tt class="py-docstring">    batch.add(service.farmers().list(), list_farmers)</tt> </tt>
-<a name="L1068"></a><tt class="py-lineno">1068</tt>  <tt class="py-line"><tt class="py-docstring">    batch.execute(http=http)</tt> </tt>
-<a name="L1069"></a><tt class="py-lineno">1069</tt>  <tt class="py-line"><tt class="py-docstring">  """</tt> </tt>
-<a name="L1070"></a><tt class="py-lineno">1070</tt>  <tt class="py-line"> </tt>
-<a name="L1071"></a><tt class="py-lineno">1071</tt>  <tt class="py-line">  <tt class="py-decorator">@</tt><tt class="py-decorator">util</tt><tt class="py-op">.</tt><tt class="py-name">positional</tt><tt class="py-op">(</tt><tt class="py-number">1</tt><tt class="py-op">)</tt> </tt>
-<a name="BatchHttpRequest.__init__"></a><div id="BatchHttpRequest.__init__-def"><a name="L1072"></a><tt class="py-lineno">1072</tt> <a class="py-toggle" href="#" id="BatchHttpRequest.__init__-toggle" onclick="return toggle('BatchHttpRequest.__init__');">-</a><tt class="py-line">  <tt class="py-keyword">def</tt> <a class="py-def-name" href="googleapiclient.http.BatchHttpRequest-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">callback</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-param">batch_uri</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="BatchHttpRequest.__init__-collapsed" style="display:none;" pad="++++" indent="++++++"></div><div id="BatchHttpRequest.__init__-expanded"><a name="L1073"></a><tt class="py-lineno">1073</tt>  <tt class="py-line">    <tt class="py-docstring">"""Constructor for a BatchHttpRequest.</tt> </tt>
-<a name="L1074"></a><tt class="py-lineno">1074</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L1075"></a><tt class="py-lineno">1075</tt>  <tt class="py-line"><tt class="py-docstring">    Args:</tt> </tt>
-<a name="L1076"></a><tt class="py-lineno">1076</tt>  <tt class="py-line"><tt class="py-docstring">      callback: callable, A callback to be called for each response, of the</tt> </tt>
-<a name="L1077"></a><tt class="py-lineno">1077</tt>  <tt class="py-line"><tt class="py-docstring">        form callback(id, response, exception). The first parameter is the</tt> </tt>
-<a name="L1078"></a><tt class="py-lineno">1078</tt>  <tt class="py-line"><tt class="py-docstring">        request id, and the second is the deserialized response object. The</tt> </tt>
-<a name="L1079"></a><tt class="py-lineno">1079</tt>  <tt class="py-line"><tt class="py-docstring">        third is an googleapiclient.errors.HttpError exception object if an HTTP error</tt> </tt>
-<a name="L1080"></a><tt class="py-lineno">1080</tt>  <tt class="py-line"><tt class="py-docstring">        occurred while processing the request, or None if no error occurred.</tt> </tt>
-<a name="L1081"></a><tt class="py-lineno">1081</tt>  <tt class="py-line"><tt class="py-docstring">      batch_uri: string, URI to send batch requests to.</tt> </tt>
-<a name="L1082"></a><tt class="py-lineno">1082</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
-<a name="L1083"></a><tt class="py-lineno">1083</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">batch_uri</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
-<a name="L1084"></a><tt class="py-lineno">1084</tt>  <tt class="py-line">      <tt class="py-name">batch_uri</tt> <tt class="py-op">=</tt> <tt class="py-string">'https://www.googleapis.com/batch'</tt> </tt>
-<a name="L1085"></a><tt class="py-lineno">1085</tt>  <tt class="py-line">    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_batch_uri</tt> <tt class="py-op">=</tt> <tt class="py-name">batch_uri</tt> </tt>
-<a name="L1086"></a><tt class="py-lineno">1086</tt>  <tt class="py-line"> </tt>
-<a name="L1087"></a><tt class="py-lineno">1087</tt>  <tt class="py-line">    <tt class="py-comment"># Global callback to be called for each individual response in the batch.</tt> </tt>
-<a name="L1088"></a><tt class="py-lineno">1088</tt>  <tt class="py-line">    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_callback</tt> <tt class="py-op">=</tt> <tt class="py-name">callback</tt> </tt>
-<a name="L1089"></a><tt class="py-lineno">1089</tt>  <tt class="py-line"> </tt>
-<a name="L1090"></a><tt class="py-lineno">1090</tt>  <tt class="py-line">    <tt class="py-comment"># A map from id to request.</tt> </tt>
-<a name="L1091"></a><tt class="py-lineno">1091</tt>  <tt class="py-line">    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_requests</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-op">}</tt> </tt>
-<a name="L1092"></a><tt class="py-lineno">1092</tt>  <tt class="py-line"> </tt>
-<a name="L1093"></a><tt class="py-lineno">1093</tt>  <tt class="py-line">    <tt class="py-comment"># A map from id to callback.</tt> </tt>
-<a name="L1094"></a><tt class="py-lineno">1094</tt>  <tt class="py-line">    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_callbacks</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-op">}</tt> </tt>
-<a name="L1095"></a><tt class="py-lineno">1095</tt>  <tt class="py-line"> </tt>
-<a name="L1096"></a><tt class="py-lineno">1096</tt>  <tt class="py-line">    <tt class="py-comment"># List of request ids, in the order in which they were added.</tt> </tt>
-<a name="L1097"></a><tt class="py-lineno">1097</tt>  <tt class="py-line">    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_order</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
-<a name="L1098"></a><tt class="py-lineno">1098</tt>  <tt class="py-line"> </tt>
-<a name="L1099"></a><tt class="py-lineno">1099</tt>  <tt class="py-line">    <tt class="py-comment"># The last auto generated id.</tt> </tt>
-<a name="L1100"></a><tt class="py-lineno">1100</tt>  <tt class="py-line">    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_last_auto_id</tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt>
-<a name="L1101"></a><tt class="py-lineno">1101</tt>  <tt class="py-line"> </tt>
-<a name="L1102"></a><tt class="py-lineno">1102</tt>  <tt class="py-line">    <tt class="py-comment"># Unique ID on which to base the Content-ID headers.</tt> </tt>
-<a name="L1103"></a><tt class="py-lineno">1103</tt>  <tt class="py-line">    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_base_id</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
-<a name="L1104"></a><tt class="py-lineno">1104</tt>  <tt class="py-line"> </tt>
-<a name="L1105"></a><tt class="py-lineno">1105</tt>  <tt class="py-line">    <tt class="py-comment"># A map from request id to (httplib2.Response, content) response pairs</tt> </tt>
-<a name="L1106"></a><tt class="py-lineno">1106</tt>  <tt class="py-line">    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_responses</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-op">}</tt> </tt>
-<a name="L1107"></a><tt class="py-lineno">1107</tt>  <tt class="py-line"> </tt>
-<a name="L1108"></a><tt class="py-lineno">1108</tt>  <tt class="py-line">    <tt class="py-comment"># A map of id(Credentials) that have been refreshed.</tt> </tt>
-<a name="L1109"></a><tt class="py-lineno">1109</tt>  <tt class="py-line">    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_refreshed_credentials</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-op">}</tt> </tt>
-</div><a name="L1110"></a><tt class="py-lineno">1110</tt>  <tt class="py-line"> </tt>
-<a name="BatchHttpRequest._refresh_and_apply_credentials"></a><div id="BatchHttpRequest._refresh_and_apply_credentials-def"><a name="L1111"></a><tt class="py-lineno">1111</tt> <a class="py-toggle" href="#" id="BatchHttpRequest._refresh_and_apply_credentials-toggle" onclick="return toggle('BatchHttpRequest._refresh_and_apply_credentials');">-</a><tt class="py-line">  <tt class="py-keyword">def</tt> <a class="py-def-name" href="googleapiclient.http.BatchHttpRequest-class.html#_refresh_and_apply_credentials">_refresh_and_apply_credentials</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">request</tt><tt class="py-op">,</tt> <tt class="py-param">http</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="BatchHttpRequest._refresh_and_apply_credentials-collapsed" style="display:none;" pad="++++" indent="++++++"></div><div id="BatchHttpRequest._refresh_and_apply_credentials-expanded"><a name="L1112"></a><tt class="py-lineno">1112</tt>  <tt class="py-line">    <tt class="py-docstring">"""Refresh the credentials and apply to the request.</tt> </tt>
-<a name="L1113"></a><tt class="py-lineno">1113</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L1114"></a><tt class="py-lineno">1114</tt>  <tt class="py-line"><tt class="py-docstring">    Args:</tt> </tt>
-<a name="L1115"></a><tt class="py-lineno">1115</tt>  <tt class="py-line"><tt class="py-docstring">      request: HttpRequest, the request.</tt> </tt>
-<a name="L1116"></a><tt class="py-lineno">1116</tt>  <tt class="py-line"><tt class="py-docstring">      http: httplib2.Http, the global http object for the batch.</tt> </tt>
-<a name="L1117"></a><tt class="py-lineno">1117</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
-<a name="L1118"></a><tt class="py-lineno">1118</tt>  <tt class="py-line">    <tt class="py-comment"># For the credentials to refresh, but only once per refresh_token</tt> </tt>
-<a name="L1119"></a><tt class="py-lineno">1119</tt>  <tt class="py-line">    <tt class="py-comment"># If there is no http per the request then refresh the http passed in</tt> </tt>
-<a name="L1120"></a><tt class="py-lineno">1120</tt>  <tt class="py-line">    <tt class="py-comment"># via execute()</tt> </tt>
-<a name="L1121"></a><tt class="py-lineno">1121</tt>  <tt class="py-line">    <tt class="py-name">creds</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
-<a name="L1122"></a><tt class="py-lineno">1122</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt id="link-185" class="py-name"><a title="googleapiclient.http.HttpMock.request
+<a name="L1066"></a><tt class="py-lineno">1066</tt>  <tt class="py-line"><tt class="py-docstring">    service = build('farm', 'v2')</tt> </tt>
+<a name="L1067"></a><tt class="py-lineno">1067</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L1068"></a><tt class="py-lineno">1068</tt>  <tt class="py-line"><tt class="py-docstring">    batch = BatchHttpRequest()</tt> </tt>
+<a name="L1069"></a><tt class="py-lineno">1069</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L1070"></a><tt class="py-lineno">1070</tt>  <tt class="py-line"><tt class="py-docstring">    batch.add(service.animals().list(), list_animals)</tt> </tt>
+<a name="L1071"></a><tt class="py-lineno">1071</tt>  <tt class="py-line"><tt class="py-docstring">    batch.add(service.farmers().list(), list_farmers)</tt> </tt>
+<a name="L1072"></a><tt class="py-lineno">1072</tt>  <tt class="py-line"><tt class="py-docstring">    batch.execute(http=http)</tt> </tt>
+<a name="L1073"></a><tt class="py-lineno">1073</tt>  <tt class="py-line"><tt class="py-docstring">  """</tt> </tt>
+<a name="L1074"></a><tt class="py-lineno">1074</tt>  <tt class="py-line"> </tt>
+<a name="L1075"></a><tt class="py-lineno">1075</tt>  <tt class="py-line">  <tt class="py-decorator">@</tt><tt class="py-decorator">util</tt><tt class="py-op">.</tt><tt class="py-name">positional</tt><tt class="py-op">(</tt><tt class="py-number">1</tt><tt class="py-op">)</tt> </tt>
+<a name="BatchHttpRequest.__init__"></a><div id="BatchHttpRequest.__init__-def"><a name="L1076"></a><tt class="py-lineno">1076</tt> <a class="py-toggle" href="#" id="BatchHttpRequest.__init__-toggle" onclick="return toggle('BatchHttpRequest.__init__');">-</a><tt class="py-line">  <tt class="py-keyword">def</tt> <a class="py-def-name" href="googleapiclient.http.BatchHttpRequest-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">callback</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-param">batch_uri</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="BatchHttpRequest.__init__-collapsed" style="display:none;" pad="++++" indent="++++++"></div><div id="BatchHttpRequest.__init__-expanded"><a name="L1077"></a><tt class="py-lineno">1077</tt>  <tt class="py-line">    <tt class="py-docstring">"""Constructor for a BatchHttpRequest.</tt> </tt>
+<a name="L1078"></a><tt class="py-lineno">1078</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L1079"></a><tt class="py-lineno">1079</tt>  <tt class="py-line"><tt class="py-docstring">    Args:</tt> </tt>
+<a name="L1080"></a><tt class="py-lineno">1080</tt>  <tt class="py-line"><tt class="py-docstring">      callback: callable, A callback to be called for each response, of the</tt> </tt>
+<a name="L1081"></a><tt class="py-lineno">1081</tt>  <tt class="py-line"><tt class="py-docstring">        form callback(id, response, exception). The first parameter is the</tt> </tt>
+<a name="L1082"></a><tt class="py-lineno">1082</tt>  <tt class="py-line"><tt class="py-docstring">        request id, and the second is the deserialized response object. The</tt> </tt>
+<a name="L1083"></a><tt class="py-lineno">1083</tt>  <tt class="py-line"><tt class="py-docstring">        third is an googleapiclient.errors.HttpError exception object if an HTTP error</tt> </tt>
+<a name="L1084"></a><tt class="py-lineno">1084</tt>  <tt class="py-line"><tt class="py-docstring">        occurred while processing the request, or None if no error occurred.</tt> </tt>
+<a name="L1085"></a><tt class="py-lineno">1085</tt>  <tt class="py-line"><tt class="py-docstring">      batch_uri: string, URI to send batch requests to.</tt> </tt>
+<a name="L1086"></a><tt class="py-lineno">1086</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
+<a name="L1087"></a><tt class="py-lineno">1087</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">batch_uri</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L1088"></a><tt class="py-lineno">1088</tt>  <tt class="py-line">      <tt class="py-name">batch_uri</tt> <tt class="py-op">=</tt> <tt class="py-string">'https://www.googleapis.com/batch'</tt> </tt>
+<a name="L1089"></a><tt class="py-lineno">1089</tt>  <tt class="py-line">    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_batch_uri</tt> <tt class="py-op">=</tt> <tt class="py-name">batch_uri</tt> </tt>
+<a name="L1090"></a><tt class="py-lineno">1090</tt>  <tt class="py-line"> </tt>
+<a name="L1091"></a><tt class="py-lineno">1091</tt>  <tt class="py-line">    <tt class="py-comment"># Global callback to be called for each individual response in the batch.</tt> </tt>
+<a name="L1092"></a><tt class="py-lineno">1092</tt>  <tt class="py-line">    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_callback</tt> <tt class="py-op">=</tt> <tt class="py-name">callback</tt> </tt>
+<a name="L1093"></a><tt class="py-lineno">1093</tt>  <tt class="py-line"> </tt>
+<a name="L1094"></a><tt class="py-lineno">1094</tt>  <tt class="py-line">    <tt class="py-comment"># A map from id to request.</tt> </tt>
+<a name="L1095"></a><tt class="py-lineno">1095</tt>  <tt class="py-line">    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_requests</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-op">}</tt> </tt>
+<a name="L1096"></a><tt class="py-lineno">1096</tt>  <tt class="py-line"> </tt>
+<a name="L1097"></a><tt class="py-lineno">1097</tt>  <tt class="py-line">    <tt class="py-comment"># A map from id to callback.</tt> </tt>
+<a name="L1098"></a><tt class="py-lineno">1098</tt>  <tt class="py-line">    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_callbacks</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-op">}</tt> </tt>
+<a name="L1099"></a><tt class="py-lineno">1099</tt>  <tt class="py-line"> </tt>
+<a name="L1100"></a><tt class="py-lineno">1100</tt>  <tt class="py-line">    <tt class="py-comment"># List of request ids, in the order in which they were added.</tt> </tt>
+<a name="L1101"></a><tt class="py-lineno">1101</tt>  <tt class="py-line">    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_order</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
+<a name="L1102"></a><tt class="py-lineno">1102</tt>  <tt class="py-line"> </tt>
+<a name="L1103"></a><tt class="py-lineno">1103</tt>  <tt class="py-line">    <tt class="py-comment"># The last auto generated id.</tt> </tt>
+<a name="L1104"></a><tt class="py-lineno">1104</tt>  <tt class="py-line">    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_last_auto_id</tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt>
+<a name="L1105"></a><tt class="py-lineno">1105</tt>  <tt class="py-line"> </tt>
+<a name="L1106"></a><tt class="py-lineno">1106</tt>  <tt class="py-line">    <tt class="py-comment"># Unique ID on which to base the Content-ID headers.</tt> </tt>
+<a name="L1107"></a><tt class="py-lineno">1107</tt>  <tt class="py-line">    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_base_id</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
+<a name="L1108"></a><tt class="py-lineno">1108</tt>  <tt class="py-line"> </tt>
+<a name="L1109"></a><tt class="py-lineno">1109</tt>  <tt class="py-line">    <tt class="py-comment"># A map from request id to (httplib2.Response, content) response pairs</tt> </tt>
+<a name="L1110"></a><tt class="py-lineno">1110</tt>  <tt class="py-line">    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_responses</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-op">}</tt> </tt>
+<a name="L1111"></a><tt class="py-lineno">1111</tt>  <tt class="py-line"> </tt>
+<a name="L1112"></a><tt class="py-lineno">1112</tt>  <tt class="py-line">    <tt class="py-comment"># A map of id(Credentials) that have been refreshed.</tt> </tt>
+<a name="L1113"></a><tt class="py-lineno">1113</tt>  <tt class="py-line">    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_refreshed_credentials</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-op">}</tt> </tt>
+</div><a name="L1114"></a><tt class="py-lineno">1114</tt>  <tt class="py-line"> </tt>
+<a name="BatchHttpRequest._refresh_and_apply_credentials"></a><div id="BatchHttpRequest._refresh_and_apply_credentials-def"><a name="L1115"></a><tt class="py-lineno">1115</tt> <a class="py-toggle" href="#" id="BatchHttpRequest._refresh_and_apply_credentials-toggle" onclick="return toggle('BatchHttpRequest._refresh_and_apply_credentials');">-</a><tt class="py-line">  <tt class="py-keyword">def</tt> <a class="py-def-name" href="googleapiclient.http.BatchHttpRequest-class.html#_refresh_and_apply_credentials">_refresh_and_apply_credentials</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">request</tt><tt class="py-op">,</tt> <tt class="py-param">http</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="BatchHttpRequest._refresh_and_apply_credentials-collapsed" style="display:none;" pad="++++" indent="++++++"></div><div id="BatchHttpRequest._refresh_and_apply_credentials-expanded"><a name="L1116"></a><tt class="py-lineno">1116</tt>  <tt class="py-line">    <tt class="py-docstring">"""Refresh the credentials and apply to the request.</tt> </tt>
+<a name="L1117"></a><tt class="py-lineno">1117</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L1118"></a><tt class="py-lineno">1118</tt>  <tt class="py-line"><tt class="py-docstring">    Args:</tt> </tt>
+<a name="L1119"></a><tt class="py-lineno">1119</tt>  <tt class="py-line"><tt class="py-docstring">      request: HttpRequest, the request.</tt> </tt>
+<a name="L1120"></a><tt class="py-lineno">1120</tt>  <tt class="py-line"><tt class="py-docstring">      http: httplib2.Http, the global http object for the batch.</tt> </tt>
+<a name="L1121"></a><tt class="py-lineno">1121</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
+<a name="L1122"></a><tt class="py-lineno">1122</tt>  <tt class="py-line">    <tt class="py-comment"># For the credentials to refresh, but only once per refresh_token</tt> </tt>
+<a name="L1123"></a><tt class="py-lineno">1123</tt>  <tt class="py-line">    <tt class="py-comment"># If there is no http per the request then refresh the http passed in</tt> </tt>
+<a name="L1124"></a><tt class="py-lineno">1124</tt>  <tt class="py-line">    <tt class="py-comment"># via execute()</tt> </tt>
+<a name="L1125"></a><tt class="py-lineno">1125</tt>  <tt class="py-line">    <tt class="py-name">creds</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
+<a name="L1126"></a><tt class="py-lineno">1126</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt id="link-185" class="py-name"><a title="googleapiclient.http.HttpMock.request
 googleapiclient.http.HttpMockSequence.request
 googleapiclient.model.BaseModel.request
 googleapiclient.model.Model.request" class="py-name" href="#" onclick="return doclink('link-185', 'request', 'link-34');">request</a></tt><tt class="py-op">.</tt><tt id="link-186" class="py-name"><a title="googleapiclient.http" class="py-name" href="#" onclick="return doclink('link-186', 'http', 'link-33');">http</a></tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt> <tt class="py-keyword">and</tt> <tt class="py-name">hasattr</tt><tt class="py-op">(</tt><tt id="link-187" class="py-name"><a title="googleapiclient.http.HttpMock.request
@@ -1377,30 +1381,30 @@
 googleapiclient.http.HttpMockSequence.request
 googleapiclient.model.BaseModel.request
 googleapiclient.model.Model.request" class="py-name" href="#" onclick="return doclink('link-189', 'request', 'link-34');">request</a></tt><tt class="py-op">,</tt> </tt>
-<a name="L1123"></a><tt class="py-lineno">1123</tt>  <tt class="py-line">        <tt class="py-string">'credentials'</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="L1124"></a><tt class="py-lineno">1124</tt>  <tt class="py-line">      <tt class="py-name">creds</tt> <tt class="py-op">=</tt> <tt id="link-190" class="py-name"><a title="googleapiclient.http.HttpMock.request
+<a name="L1127"></a><tt class="py-lineno">1127</tt>  <tt class="py-line">        <tt class="py-string">'credentials'</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L1128"></a><tt class="py-lineno">1128</tt>  <tt class="py-line">      <tt class="py-name">creds</tt> <tt class="py-op">=</tt> <tt id="link-190" class="py-name"><a title="googleapiclient.http.HttpMock.request
 googleapiclient.http.HttpMockSequence.request
 googleapiclient.model.BaseModel.request
 googleapiclient.model.Model.request" class="py-name" href="#" onclick="return doclink('link-190', 'request', 'link-34');">request</a></tt><tt class="py-op">.</tt><tt id="link-191" class="py-name"><a title="googleapiclient.http" class="py-name" href="#" onclick="return doclink('link-191', 'http', 'link-33');">http</a></tt><tt class="py-op">.</tt><tt id="link-192" class="py-name"><a title="googleapiclient.http.HttpMock.request
 googleapiclient.http.HttpMockSequence.request
 googleapiclient.model.BaseModel.request
 googleapiclient.model.Model.request" class="py-name" href="#" onclick="return doclink('link-192', 'request', 'link-34');">request</a></tt><tt class="py-op">.</tt><tt class="py-name">credentials</tt> </tt>
-<a name="L1125"></a><tt class="py-lineno">1125</tt>  <tt class="py-line">    <tt class="py-keyword">elif</tt> <tt id="link-193" class="py-name"><a title="googleapiclient.http" class="py-name" href="#" onclick="return doclink('link-193', 'http', 'link-33');">http</a></tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt> <tt class="py-keyword">and</tt> <tt class="py-name">hasattr</tt><tt class="py-op">(</tt><tt id="link-194" class="py-name"><a title="googleapiclient.http" class="py-name" href="#" onclick="return doclink('link-194', 'http', 'link-33');">http</a></tt><tt class="py-op">.</tt><tt id="link-195" class="py-name"><a title="googleapiclient.http.HttpMock.request
+<a name="L1129"></a><tt class="py-lineno">1129</tt>  <tt class="py-line">    <tt class="py-keyword">elif</tt> <tt id="link-193" class="py-name"><a title="googleapiclient.http" class="py-name" href="#" onclick="return doclink('link-193', 'http', 'link-33');">http</a></tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt> <tt class="py-keyword">and</tt> <tt class="py-name">hasattr</tt><tt class="py-op">(</tt><tt id="link-194" class="py-name"><a title="googleapiclient.http" class="py-name" href="#" onclick="return doclink('link-194', 'http', 'link-33');">http</a></tt><tt class="py-op">.</tt><tt id="link-195" class="py-name"><a title="googleapiclient.http.HttpMock.request
 googleapiclient.http.HttpMockSequence.request
 googleapiclient.model.BaseModel.request
 googleapiclient.model.Model.request" class="py-name" href="#" onclick="return doclink('link-195', 'request', 'link-34');">request</a></tt><tt class="py-op">,</tt> <tt class="py-string">'credentials'</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="L1126"></a><tt class="py-lineno">1126</tt>  <tt class="py-line">      <tt class="py-name">creds</tt> <tt class="py-op">=</tt> <tt id="link-196" class="py-name"><a title="googleapiclient.http" class="py-name" href="#" onclick="return doclink('link-196', 'http', 'link-33');">http</a></tt><tt class="py-op">.</tt><tt id="link-197" class="py-name"><a title="googleapiclient.http.HttpMock.request
+<a name="L1130"></a><tt class="py-lineno">1130</tt>  <tt class="py-line">      <tt class="py-name">creds</tt> <tt class="py-op">=</tt> <tt id="link-196" class="py-name"><a title="googleapiclient.http" class="py-name" href="#" onclick="return doclink('link-196', 'http', 'link-33');">http</a></tt><tt class="py-op">.</tt><tt id="link-197" class="py-name"><a title="googleapiclient.http.HttpMock.request
 googleapiclient.http.HttpMockSequence.request
 googleapiclient.model.BaseModel.request
 googleapiclient.model.Model.request" class="py-name" href="#" onclick="return doclink('link-197', 'request', 'link-34');">request</a></tt><tt class="py-op">.</tt><tt class="py-name">credentials</tt> </tt>
-<a name="L1127"></a><tt class="py-lineno">1127</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">creds</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
-<a name="L1128"></a><tt class="py-lineno">1128</tt>  <tt class="py-line">      <tt class="py-keyword">if</tt> <tt class="py-name">id</tt><tt class="py-op">(</tt><tt class="py-name">creds</tt><tt class="py-op">)</tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_refreshed_credentials</tt><tt class="py-op">:</tt> </tt>
-<a name="L1129"></a><tt class="py-lineno">1129</tt>  <tt class="py-line">        <tt class="py-name">creds</tt><tt class="py-op">.</tt><tt class="py-name">refresh</tt><tt class="py-op">(</tt><tt id="link-198" class="py-name"><a title="googleapiclient.http" class="py-name" href="#" onclick="return doclink('link-198', 'http', 'link-33');">http</a></tt><tt class="py-op">)</tt> </tt>
-<a name="L1130"></a><tt class="py-lineno">1130</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_refreshed_credentials</tt><tt class="py-op">[</tt><tt class="py-name">id</tt><tt class="py-op">(</tt><tt class="py-name">creds</tt><tt class="py-op">)</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-number">1</tt> </tt>
-<a name="L1131"></a><tt class="py-lineno">1131</tt>  <tt class="py-line"> </tt>
-<a name="L1132"></a><tt class="py-lineno">1132</tt>  <tt class="py-line">    <tt class="py-comment"># Only apply the credentials if we are using the http object passed in,</tt> </tt>
-<a name="L1133"></a><tt class="py-lineno">1133</tt>  <tt class="py-line">    <tt class="py-comment"># otherwise apply() will get called during _serialize_request().</tt> </tt>
-<a name="L1134"></a><tt class="py-lineno">1134</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt id="link-199" class="py-name"><a title="googleapiclient.http.HttpMock.request
+<a name="L1131"></a><tt class="py-lineno">1131</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">creds</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L1132"></a><tt class="py-lineno">1132</tt>  <tt class="py-line">      <tt class="py-keyword">if</tt> <tt class="py-name">id</tt><tt class="py-op">(</tt><tt class="py-name">creds</tt><tt class="py-op">)</tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_refreshed_credentials</tt><tt class="py-op">:</tt> </tt>
+<a name="L1133"></a><tt class="py-lineno">1133</tt>  <tt class="py-line">        <tt class="py-name">creds</tt><tt class="py-op">.</tt><tt class="py-name">refresh</tt><tt class="py-op">(</tt><tt id="link-198" class="py-name"><a title="googleapiclient.http" class="py-name" href="#" onclick="return doclink('link-198', 'http', 'link-33');">http</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L1134"></a><tt class="py-lineno">1134</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_refreshed_credentials</tt><tt class="py-op">[</tt><tt class="py-name">id</tt><tt class="py-op">(</tt><tt class="py-name">creds</tt><tt class="py-op">)</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-number">1</tt> </tt>
+<a name="L1135"></a><tt class="py-lineno">1135</tt>  <tt class="py-line"> </tt>
+<a name="L1136"></a><tt class="py-lineno">1136</tt>  <tt class="py-line">    <tt class="py-comment"># Only apply the credentials if we are using the http object passed in,</tt> </tt>
+<a name="L1137"></a><tt class="py-lineno">1137</tt>  <tt class="py-line">    <tt class="py-comment"># otherwise apply() will get called during _serialize_request().</tt> </tt>
+<a name="L1138"></a><tt class="py-lineno">1138</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt id="link-199" class="py-name"><a title="googleapiclient.http.HttpMock.request
 googleapiclient.http.HttpMockSequence.request
 googleapiclient.model.BaseModel.request
 googleapiclient.model.Model.request" class="py-name" href="#" onclick="return doclink('link-199', 'request', 'link-34');">request</a></tt><tt class="py-op">.</tt><tt id="link-200" class="py-name"><a title="googleapiclient.http" class="py-name" href="#" onclick="return doclink('link-200', 'http', 'link-33');">http</a></tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt> <tt class="py-keyword">or</tt> <tt class="py-keyword">not</tt> <tt class="py-name">hasattr</tt><tt class="py-op">(</tt><tt id="link-201" class="py-name"><a title="googleapiclient.http.HttpMock.request
@@ -1410,86 +1414,86 @@
 googleapiclient.http.HttpMockSequence.request
 googleapiclient.model.BaseModel.request
 googleapiclient.model.Model.request" class="py-name" href="#" onclick="return doclink('link-203', 'request', 'link-34');">request</a></tt><tt class="py-op">,</tt> </tt>
-<a name="L1135"></a><tt class="py-lineno">1135</tt>  <tt class="py-line">        <tt class="py-string">'credentials'</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="L1136"></a><tt class="py-lineno">1136</tt>  <tt class="py-line">      <tt class="py-name">creds</tt><tt class="py-op">.</tt><tt class="py-name">apply</tt><tt class="py-op">(</tt><tt id="link-204" class="py-name"><a title="googleapiclient.http.HttpMock.request
+<a name="L1139"></a><tt class="py-lineno">1139</tt>  <tt class="py-line">        <tt class="py-string">'credentials'</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L1140"></a><tt class="py-lineno">1140</tt>  <tt class="py-line">      <tt class="py-name">creds</tt><tt class="py-op">.</tt><tt class="py-name">apply</tt><tt class="py-op">(</tt><tt id="link-204" class="py-name"><a title="googleapiclient.http.HttpMock.request
 googleapiclient.http.HttpMockSequence.request
 googleapiclient.model.BaseModel.request
 googleapiclient.model.Model.request" class="py-name" href="#" onclick="return doclink('link-204', 'request', 'link-34');">request</a></tt><tt class="py-op">.</tt><tt class="py-name">headers</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L1137"></a><tt class="py-lineno">1137</tt>  <tt class="py-line"> </tt>
-<a name="BatchHttpRequest._id_to_header"></a><div id="BatchHttpRequest._id_to_header-def"><a name="L1138"></a><tt class="py-lineno">1138</tt> <a class="py-toggle" href="#" id="BatchHttpRequest._id_to_header-toggle" onclick="return toggle('BatchHttpRequest._id_to_header');">-</a><tt class="py-line">  <tt class="py-keyword">def</tt> <a class="py-def-name" href="googleapiclient.http.BatchHttpRequest-class.html#_id_to_header">_id_to_header</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">id_</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="BatchHttpRequest._id_to_header-collapsed" style="display:none;" pad="++++" indent="++++++"></div><div id="BatchHttpRequest._id_to_header-expanded"><a name="L1139"></a><tt class="py-lineno">1139</tt>  <tt class="py-line">    <tt class="py-docstring">"""Convert an id to a Content-ID header value.</tt> </tt>
-<a name="L1140"></a><tt class="py-lineno">1140</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L1141"></a><tt class="py-lineno">1141</tt>  <tt class="py-line"><tt class="py-docstring">    Args:</tt> </tt>
-<a name="L1142"></a><tt class="py-lineno">1142</tt>  <tt class="py-line"><tt class="py-docstring">      id_: string, identifier of individual request.</tt> </tt>
-<a name="L1143"></a><tt class="py-lineno">1143</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L1144"></a><tt class="py-lineno">1144</tt>  <tt class="py-line"><tt class="py-docstring">    Returns:</tt> </tt>
-<a name="L1145"></a><tt class="py-lineno">1145</tt>  <tt class="py-line"><tt class="py-docstring">      A Content-ID header with the id_ encoded into it. A UUID is prepended to</tt> </tt>
-<a name="L1146"></a><tt class="py-lineno">1146</tt>  <tt class="py-line"><tt class="py-docstring">      the value because Content-ID headers are supposed to be universally</tt> </tt>
-<a name="L1147"></a><tt class="py-lineno">1147</tt>  <tt class="py-line"><tt class="py-docstring">      unique.</tt> </tt>
-<a name="L1148"></a><tt class="py-lineno">1148</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
-<a name="L1149"></a><tt class="py-lineno">1149</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_base_id</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
-<a name="L1150"></a><tt class="py-lineno">1150</tt>  <tt class="py-line">      <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_base_id</tt> <tt class="py-op">=</tt> <tt class="py-name">uuid</tt><tt class="py-op">.</tt><tt class="py-name">uuid4</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-<a name="L1151"></a><tt class="py-lineno">1151</tt>  <tt class="py-line"> </tt>
-<a name="L1152"></a><tt class="py-lineno">1152</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-string">'&lt;%s+%s&gt;'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_base_id</tt><tt class="py-op">,</tt> <tt class="py-name">quote</tt><tt class="py-op">(</tt><tt class="py-name">id_</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L1153"></a><tt class="py-lineno">1153</tt>  <tt class="py-line"> </tt>
-<a name="BatchHttpRequest._header_to_id"></a><div id="BatchHttpRequest._header_to_id-def"><a name="L1154"></a><tt class="py-lineno">1154</tt> <a class="py-toggle" href="#" id="BatchHttpRequest._header_to_id-toggle" onclick="return toggle('BatchHttpRequest._header_to_id');">-</a><tt class="py-line">  <tt class="py-keyword">def</tt> <a class="py-def-name" href="googleapiclient.http.BatchHttpRequest-class.html#_header_to_id">_header_to_id</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">header</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="BatchHttpRequest._header_to_id-collapsed" style="display:none;" pad="++++" indent="++++++"></div><div id="BatchHttpRequest._header_to_id-expanded"><a name="L1155"></a><tt class="py-lineno">1155</tt>  <tt class="py-line">    <tt class="py-docstring">"""Convert a Content-ID header value to an id.</tt> </tt>
-<a name="L1156"></a><tt class="py-lineno">1156</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L1157"></a><tt class="py-lineno">1157</tt>  <tt class="py-line"><tt class="py-docstring">    Presumes the Content-ID header conforms to the format that _id_to_header()</tt> </tt>
-<a name="L1158"></a><tt class="py-lineno">1158</tt>  <tt class="py-line"><tt class="py-docstring">    returns.</tt> </tt>
-<a name="L1159"></a><tt class="py-lineno">1159</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L1160"></a><tt class="py-lineno">1160</tt>  <tt class="py-line"><tt class="py-docstring">    Args:</tt> </tt>
-<a name="L1161"></a><tt class="py-lineno">1161</tt>  <tt class="py-line"><tt class="py-docstring">      header: string, Content-ID header value.</tt> </tt>
-<a name="L1162"></a><tt class="py-lineno">1162</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L1163"></a><tt class="py-lineno">1163</tt>  <tt class="py-line"><tt class="py-docstring">    Returns:</tt> </tt>
-<a name="L1164"></a><tt class="py-lineno">1164</tt>  <tt class="py-line"><tt class="py-docstring">      The extracted id value.</tt> </tt>
-<a name="L1165"></a><tt class="py-lineno">1165</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L1166"></a><tt class="py-lineno">1166</tt>  <tt class="py-line"><tt class="py-docstring">    Raises:</tt> </tt>
-<a name="L1167"></a><tt class="py-lineno">1167</tt>  <tt class="py-line"><tt class="py-docstring">      BatchError if the header is not in the expected format.</tt> </tt>
-<a name="L1168"></a><tt class="py-lineno">1168</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
-<a name="L1169"></a><tt class="py-lineno">1169</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">header</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> <tt class="py-op">!=</tt> <tt class="py-string">'&lt;'</tt> <tt class="py-keyword">or</tt> <tt class="py-name">header</tt><tt class="py-op">[</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">]</tt> <tt class="py-op">!=</tt> <tt class="py-string">'&gt;'</tt><tt class="py-op">:</tt> </tt>
-<a name="L1170"></a><tt class="py-lineno">1170</tt>  <tt class="py-line">      <tt class="py-keyword">raise</tt> <tt id="link-205" class="py-name"><a title="googleapiclient.errors.BatchError" class="py-name" href="#" onclick="return doclink('link-205', 'BatchError', 'link-6');">BatchError</a></tt><tt class="py-op">(</tt><tt class="py-string">"Invalid value for Content-ID: %s"</tt> <tt class="py-op">%</tt> <tt class="py-name">header</tt><tt class="py-op">)</tt> </tt>
-<a name="L1171"></a><tt class="py-lineno">1171</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-string">'+'</tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt class="py-name">header</tt><tt class="py-op">:</tt> </tt>
-<a name="L1172"></a><tt class="py-lineno">1172</tt>  <tt class="py-line">      <tt class="py-keyword">raise</tt> <tt id="link-206" class="py-name"><a title="googleapiclient.errors.BatchError" class="py-name" href="#" onclick="return doclink('link-206', 'BatchError', 'link-6');">BatchError</a></tt><tt class="py-op">(</tt><tt class="py-string">"Invalid value for Content-ID: %s"</tt> <tt class="py-op">%</tt> <tt class="py-name">header</tt><tt class="py-op">)</tt> </tt>
-<a name="L1173"></a><tt class="py-lineno">1173</tt>  <tt class="py-line">    <tt id="link-207" class="py-name" targets="Module googleapiclient.discovery_cache.base=googleapiclient.discovery_cache.base-module.html"><a title="googleapiclient.discovery_cache.base" class="py-name" href="#" onclick="return doclink('link-207', 'base', 'link-207');">base</a></tt><tt class="py-op">,</tt> <tt class="py-name">id_</tt> <tt class="py-op">=</tt> <tt class="py-name">header</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">:</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt class="py-name">rsplit</tt><tt class="py-op">(</tt><tt class="py-string">'+'</tt><tt class="py-op">,</tt> <tt class="py-number">1</tt><tt class="py-op">)</tt> </tt>
-<a name="L1174"></a><tt class="py-lineno">1174</tt>  <tt class="py-line"> </tt>
-<a name="L1175"></a><tt class="py-lineno">1175</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-name">unquote</tt><tt class="py-op">(</tt><tt class="py-name">id_</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L1176"></a><tt class="py-lineno">1176</tt>  <tt class="py-line"> </tt>
-<a name="BatchHttpRequest._serialize_request"></a><div id="BatchHttpRequest._serialize_request-def"><a name="L1177"></a><tt class="py-lineno">1177</tt> <a class="py-toggle" href="#" id="BatchHttpRequest._serialize_request-toggle" onclick="return toggle('BatchHttpRequest._serialize_request');">-</a><tt class="py-line">  <tt class="py-keyword">def</tt> <a class="py-def-name" href="googleapiclient.http.BatchHttpRequest-class.html#_serialize_request">_serialize_request</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">request</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="BatchHttpRequest._serialize_request-collapsed" style="display:none;" pad="++++" indent="++++++"></div><div id="BatchHttpRequest._serialize_request-expanded"><a name="L1178"></a><tt class="py-lineno">1178</tt>  <tt class="py-line">    <tt class="py-docstring">"""Convert an HttpRequest object into a string.</tt> </tt>
-<a name="L1179"></a><tt class="py-lineno">1179</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L1180"></a><tt class="py-lineno">1180</tt>  <tt class="py-line"><tt class="py-docstring">    Args:</tt> </tt>
-<a name="L1181"></a><tt class="py-lineno">1181</tt>  <tt class="py-line"><tt class="py-docstring">      request: HttpRequest, the request to serialize.</tt> </tt>
-<a name="L1182"></a><tt class="py-lineno">1182</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L1183"></a><tt class="py-lineno">1183</tt>  <tt class="py-line"><tt class="py-docstring">    Returns:</tt> </tt>
-<a name="L1184"></a><tt class="py-lineno">1184</tt>  <tt class="py-line"><tt class="py-docstring">      The request as a string in application/http format.</tt> </tt>
-<a name="L1185"></a><tt class="py-lineno">1185</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
-<a name="L1186"></a><tt class="py-lineno">1186</tt>  <tt class="py-line">    <tt class="py-comment"># Construct status line</tt> </tt>
-<a name="L1187"></a><tt class="py-lineno">1187</tt>  <tt class="py-line">    <tt class="py-name">parsed</tt> <tt class="py-op">=</tt> <tt class="py-name">urlparse</tt><tt class="py-op">(</tt><tt id="link-208" class="py-name"><a title="googleapiclient.http.HttpMock.request
+</div><a name="L1141"></a><tt class="py-lineno">1141</tt>  <tt class="py-line"> </tt>
+<a name="BatchHttpRequest._id_to_header"></a><div id="BatchHttpRequest._id_to_header-def"><a name="L1142"></a><tt class="py-lineno">1142</tt> <a class="py-toggle" href="#" id="BatchHttpRequest._id_to_header-toggle" onclick="return toggle('BatchHttpRequest._id_to_header');">-</a><tt class="py-line">  <tt class="py-keyword">def</tt> <a class="py-def-name" href="googleapiclient.http.BatchHttpRequest-class.html#_id_to_header">_id_to_header</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">id_</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="BatchHttpRequest._id_to_header-collapsed" style="display:none;" pad="++++" indent="++++++"></div><div id="BatchHttpRequest._id_to_header-expanded"><a name="L1143"></a><tt class="py-lineno">1143</tt>  <tt class="py-line">    <tt class="py-docstring">"""Convert an id to a Content-ID header value.</tt> </tt>
+<a name="L1144"></a><tt class="py-lineno">1144</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L1145"></a><tt class="py-lineno">1145</tt>  <tt class="py-line"><tt class="py-docstring">    Args:</tt> </tt>
+<a name="L1146"></a><tt class="py-lineno">1146</tt>  <tt class="py-line"><tt class="py-docstring">      id_: string, identifier of individual request.</tt> </tt>
+<a name="L1147"></a><tt class="py-lineno">1147</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L1148"></a><tt class="py-lineno">1148</tt>  <tt class="py-line"><tt class="py-docstring">    Returns:</tt> </tt>
+<a name="L1149"></a><tt class="py-lineno">1149</tt>  <tt class="py-line"><tt class="py-docstring">      A Content-ID header with the id_ encoded into it. A UUID is prepended to</tt> </tt>
+<a name="L1150"></a><tt class="py-lineno">1150</tt>  <tt class="py-line"><tt class="py-docstring">      the value because Content-ID headers are supposed to be universally</tt> </tt>
+<a name="L1151"></a><tt class="py-lineno">1151</tt>  <tt class="py-line"><tt class="py-docstring">      unique.</tt> </tt>
+<a name="L1152"></a><tt class="py-lineno">1152</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
+<a name="L1153"></a><tt class="py-lineno">1153</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_base_id</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L1154"></a><tt class="py-lineno">1154</tt>  <tt class="py-line">      <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_base_id</tt> <tt class="py-op">=</tt> <tt class="py-name">uuid</tt><tt class="py-op">.</tt><tt class="py-name">uuid4</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L1155"></a><tt class="py-lineno">1155</tt>  <tt class="py-line"> </tt>
+<a name="L1156"></a><tt class="py-lineno">1156</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-string">'&lt;%s+%s&gt;'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_base_id</tt><tt class="py-op">,</tt> <tt class="py-name">quote</tt><tt class="py-op">(</tt><tt class="py-name">id_</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L1157"></a><tt class="py-lineno">1157</tt>  <tt class="py-line"> </tt>
+<a name="BatchHttpRequest._header_to_id"></a><div id="BatchHttpRequest._header_to_id-def"><a name="L1158"></a><tt class="py-lineno">1158</tt> <a class="py-toggle" href="#" id="BatchHttpRequest._header_to_id-toggle" onclick="return toggle('BatchHttpRequest._header_to_id');">-</a><tt class="py-line">  <tt class="py-keyword">def</tt> <a class="py-def-name" href="googleapiclient.http.BatchHttpRequest-class.html#_header_to_id">_header_to_id</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">header</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="BatchHttpRequest._header_to_id-collapsed" style="display:none;" pad="++++" indent="++++++"></div><div id="BatchHttpRequest._header_to_id-expanded"><a name="L1159"></a><tt class="py-lineno">1159</tt>  <tt class="py-line">    <tt class="py-docstring">"""Convert a Content-ID header value to an id.</tt> </tt>
+<a name="L1160"></a><tt class="py-lineno">1160</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L1161"></a><tt class="py-lineno">1161</tt>  <tt class="py-line"><tt class="py-docstring">    Presumes the Content-ID header conforms to the format that _id_to_header()</tt> </tt>
+<a name="L1162"></a><tt class="py-lineno">1162</tt>  <tt class="py-line"><tt class="py-docstring">    returns.</tt> </tt>
+<a name="L1163"></a><tt class="py-lineno">1163</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L1164"></a><tt class="py-lineno">1164</tt>  <tt class="py-line"><tt class="py-docstring">    Args:</tt> </tt>
+<a name="L1165"></a><tt class="py-lineno">1165</tt>  <tt class="py-line"><tt class="py-docstring">      header: string, Content-ID header value.</tt> </tt>
+<a name="L1166"></a><tt class="py-lineno">1166</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L1167"></a><tt class="py-lineno">1167</tt>  <tt class="py-line"><tt class="py-docstring">    Returns:</tt> </tt>
+<a name="L1168"></a><tt class="py-lineno">1168</tt>  <tt class="py-line"><tt class="py-docstring">      The extracted id value.</tt> </tt>
+<a name="L1169"></a><tt class="py-lineno">1169</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L1170"></a><tt class="py-lineno">1170</tt>  <tt class="py-line"><tt class="py-docstring">    Raises:</tt> </tt>
+<a name="L1171"></a><tt class="py-lineno">1171</tt>  <tt class="py-line"><tt class="py-docstring">      BatchError if the header is not in the expected format.</tt> </tt>
+<a name="L1172"></a><tt class="py-lineno">1172</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
+<a name="L1173"></a><tt class="py-lineno">1173</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">header</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> <tt class="py-op">!=</tt> <tt class="py-string">'&lt;'</tt> <tt class="py-keyword">or</tt> <tt class="py-name">header</tt><tt class="py-op">[</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">]</tt> <tt class="py-op">!=</tt> <tt class="py-string">'&gt;'</tt><tt class="py-op">:</tt> </tt>
+<a name="L1174"></a><tt class="py-lineno">1174</tt>  <tt class="py-line">      <tt class="py-keyword">raise</tt> <tt id="link-205" class="py-name"><a title="googleapiclient.errors.BatchError" class="py-name" href="#" onclick="return doclink('link-205', 'BatchError', 'link-6');">BatchError</a></tt><tt class="py-op">(</tt><tt class="py-string">"Invalid value for Content-ID: %s"</tt> <tt class="py-op">%</tt> <tt class="py-name">header</tt><tt class="py-op">)</tt> </tt>
+<a name="L1175"></a><tt class="py-lineno">1175</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-string">'+'</tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt class="py-name">header</tt><tt class="py-op">:</tt> </tt>
+<a name="L1176"></a><tt class="py-lineno">1176</tt>  <tt class="py-line">      <tt class="py-keyword">raise</tt> <tt id="link-206" class="py-name"><a title="googleapiclient.errors.BatchError" class="py-name" href="#" onclick="return doclink('link-206', 'BatchError', 'link-6');">BatchError</a></tt><tt class="py-op">(</tt><tt class="py-string">"Invalid value for Content-ID: %s"</tt> <tt class="py-op">%</tt> <tt class="py-name">header</tt><tt class="py-op">)</tt> </tt>
+<a name="L1177"></a><tt class="py-lineno">1177</tt>  <tt class="py-line">    <tt id="link-207" class="py-name" targets="Module googleapiclient.discovery_cache.base=googleapiclient.discovery_cache.base-module.html"><a title="googleapiclient.discovery_cache.base" class="py-name" href="#" onclick="return doclink('link-207', 'base', 'link-207');">base</a></tt><tt class="py-op">,</tt> <tt class="py-name">id_</tt> <tt class="py-op">=</tt> <tt class="py-name">header</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">:</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt class="py-name">rsplit</tt><tt class="py-op">(</tt><tt class="py-string">'+'</tt><tt class="py-op">,</tt> <tt class="py-number">1</tt><tt class="py-op">)</tt> </tt>
+<a name="L1178"></a><tt class="py-lineno">1178</tt>  <tt class="py-line"> </tt>
+<a name="L1179"></a><tt class="py-lineno">1179</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-name">unquote</tt><tt class="py-op">(</tt><tt class="py-name">id_</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L1180"></a><tt class="py-lineno">1180</tt>  <tt class="py-line"> </tt>
+<a name="BatchHttpRequest._serialize_request"></a><div id="BatchHttpRequest._serialize_request-def"><a name="L1181"></a><tt class="py-lineno">1181</tt> <a class="py-toggle" href="#" id="BatchHttpRequest._serialize_request-toggle" onclick="return toggle('BatchHttpRequest._serialize_request');">-</a><tt class="py-line">  <tt class="py-keyword">def</tt> <a class="py-def-name" href="googleapiclient.http.BatchHttpRequest-class.html#_serialize_request">_serialize_request</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">request</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="BatchHttpRequest._serialize_request-collapsed" style="display:none;" pad="++++" indent="++++++"></div><div id="BatchHttpRequest._serialize_request-expanded"><a name="L1182"></a><tt class="py-lineno">1182</tt>  <tt class="py-line">    <tt class="py-docstring">"""Convert an HttpRequest object into a string.</tt> </tt>
+<a name="L1183"></a><tt class="py-lineno">1183</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L1184"></a><tt class="py-lineno">1184</tt>  <tt class="py-line"><tt class="py-docstring">    Args:</tt> </tt>
+<a name="L1185"></a><tt class="py-lineno">1185</tt>  <tt class="py-line"><tt class="py-docstring">      request: HttpRequest, the request to serialize.</tt> </tt>
+<a name="L1186"></a><tt class="py-lineno">1186</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L1187"></a><tt class="py-lineno">1187</tt>  <tt class="py-line"><tt class="py-docstring">    Returns:</tt> </tt>
+<a name="L1188"></a><tt class="py-lineno">1188</tt>  <tt class="py-line"><tt class="py-docstring">      The request as a string in application/http format.</tt> </tt>
+<a name="L1189"></a><tt class="py-lineno">1189</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
+<a name="L1190"></a><tt class="py-lineno">1190</tt>  <tt class="py-line">    <tt class="py-comment"># Construct status line</tt> </tt>
+<a name="L1191"></a><tt class="py-lineno">1191</tt>  <tt class="py-line">    <tt class="py-name">parsed</tt> <tt class="py-op">=</tt> <tt class="py-name">urlparse</tt><tt class="py-op">(</tt><tt id="link-208" class="py-name"><a title="googleapiclient.http.HttpMock.request
 googleapiclient.http.HttpMockSequence.request
 googleapiclient.model.BaseModel.request
 googleapiclient.model.Model.request" class="py-name" href="#" onclick="return doclink('link-208', 'request', 'link-34');">request</a></tt><tt class="py-op">.</tt><tt class="py-name">uri</tt><tt class="py-op">)</tt> </tt>
-<a name="L1188"></a><tt class="py-lineno">1188</tt>  <tt class="py-line">    <tt class="py-name">request_line</tt> <tt class="py-op">=</tt> <tt class="py-name">urlunparse</tt><tt class="py-op">(</tt> </tt>
-<a name="L1189"></a><tt class="py-lineno">1189</tt>  <tt class="py-line">        <tt class="py-op">(</tt><tt class="py-string">''</tt><tt class="py-op">,</tt> <tt class="py-string">''</tt><tt class="py-op">,</tt> <tt class="py-name">parsed</tt><tt class="py-op">.</tt><tt class="py-name">path</tt><tt class="py-op">,</tt> <tt class="py-name">parsed</tt><tt class="py-op">.</tt><tt class="py-name">params</tt><tt class="py-op">,</tt> <tt class="py-name">parsed</tt><tt class="py-op">.</tt><tt class="py-name">query</tt><tt class="py-op">,</tt> <tt class="py-string">''</tt><tt class="py-op">)</tt> </tt>
-<a name="L1190"></a><tt class="py-lineno">1190</tt>  <tt class="py-line">        <tt class="py-op">)</tt> </tt>
-<a name="L1191"></a><tt class="py-lineno">1191</tt>  <tt class="py-line">    <tt class="py-name">status_line</tt> <tt class="py-op">=</tt> <tt id="link-209" class="py-name"><a title="googleapiclient.http.HttpMock.request
+<a name="L1192"></a><tt class="py-lineno">1192</tt>  <tt class="py-line">    <tt class="py-name">request_line</tt> <tt class="py-op">=</tt> <tt class="py-name">urlunparse</tt><tt class="py-op">(</tt> </tt>
+<a name="L1193"></a><tt class="py-lineno">1193</tt>  <tt class="py-line">        <tt class="py-op">(</tt><tt class="py-string">''</tt><tt class="py-op">,</tt> <tt class="py-string">''</tt><tt class="py-op">,</tt> <tt class="py-name">parsed</tt><tt class="py-op">.</tt><tt class="py-name">path</tt><tt class="py-op">,</tt> <tt class="py-name">parsed</tt><tt class="py-op">.</tt><tt class="py-name">params</tt><tt class="py-op">,</tt> <tt class="py-name">parsed</tt><tt class="py-op">.</tt><tt class="py-name">query</tt><tt class="py-op">,</tt> <tt class="py-string">''</tt><tt class="py-op">)</tt> </tt>
+<a name="L1194"></a><tt class="py-lineno">1194</tt>  <tt class="py-line">        <tt class="py-op">)</tt> </tt>
+<a name="L1195"></a><tt class="py-lineno">1195</tt>  <tt class="py-line">    <tt class="py-name">status_line</tt> <tt class="py-op">=</tt> <tt id="link-209" class="py-name"><a title="googleapiclient.http.HttpMock.request
 googleapiclient.http.HttpMockSequence.request
 googleapiclient.model.BaseModel.request
 googleapiclient.model.Model.request" class="py-name" href="#" onclick="return doclink('link-209', 'request', 'link-34');">request</a></tt><tt class="py-op">.</tt><tt class="py-name">method</tt> <tt class="py-op">+</tt> <tt class="py-string">' '</tt> <tt class="py-op">+</tt> <tt class="py-name">request_line</tt> <tt class="py-op">+</tt> <tt class="py-string">' HTTP/1.1\n'</tt> </tt>
-<a name="L1192"></a><tt class="py-lineno">1192</tt>  <tt class="py-line">    <tt class="py-name">major</tt><tt class="py-op">,</tt> <tt class="py-name">minor</tt> <tt class="py-op">=</tt> <tt id="link-210" class="py-name"><a title="googleapiclient.http.HttpMock.request
+<a name="L1196"></a><tt class="py-lineno">1196</tt>  <tt class="py-line">    <tt class="py-name">major</tt><tt class="py-op">,</tt> <tt class="py-name">minor</tt> <tt class="py-op">=</tt> <tt id="link-210" class="py-name"><a title="googleapiclient.http.HttpMock.request
 googleapiclient.http.HttpMockSequence.request
 googleapiclient.model.BaseModel.request
 googleapiclient.model.Model.request" class="py-name" href="#" onclick="return doclink('link-210', 'request', 'link-34');">request</a></tt><tt class="py-op">.</tt><tt class="py-name">headers</tt><tt class="py-op">.</tt><tt id="link-211" class="py-name"><a title="googleapiclient.discovery_cache.appengine_memcache.Cache.get
 googleapiclient.discovery_cache.base.Cache.get
 googleapiclient.discovery_cache.file_cache.Cache.get
 googleapiclient.schema.Schemas.get" class="py-name" href="#" onclick="return doclink('link-211', 'get', 'link-36');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">'content-type'</tt><tt class="py-op">,</tt> <tt class="py-string">'application/json'</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">split</tt><tt class="py-op">(</tt><tt class="py-string">'/'</tt><tt class="py-op">)</tt> </tt>
-<a name="L1193"></a><tt class="py-lineno">1193</tt>  <tt class="py-line">    <tt class="py-name">msg</tt> <tt class="py-op">=</tt> <tt class="py-name">MIMENonMultipart</tt><tt class="py-op">(</tt><tt class="py-name">major</tt><tt class="py-op">,</tt> <tt class="py-name">minor</tt><tt class="py-op">)</tt> </tt>
-<a name="L1194"></a><tt class="py-lineno">1194</tt>  <tt class="py-line">    <tt class="py-name">headers</tt> <tt class="py-op">=</tt> <tt id="link-212" class="py-name"><a title="googleapiclient.http.HttpMock.request
+<a name="L1197"></a><tt class="py-lineno">1197</tt>  <tt class="py-line">    <tt class="py-name">msg</tt> <tt class="py-op">=</tt> <tt class="py-name">MIMENonMultipart</tt><tt class="py-op">(</tt><tt class="py-name">major</tt><tt class="py-op">,</tt> <tt class="py-name">minor</tt><tt class="py-op">)</tt> </tt>
+<a name="L1198"></a><tt class="py-lineno">1198</tt>  <tt class="py-line">    <tt class="py-name">headers</tt> <tt class="py-op">=</tt> <tt id="link-212" class="py-name"><a title="googleapiclient.http.HttpMock.request
 googleapiclient.http.HttpMockSequence.request
 googleapiclient.model.BaseModel.request
 googleapiclient.model.Model.request" class="py-name" href="#" onclick="return doclink('link-212', 'request', 'link-34');">request</a></tt><tt class="py-op">.</tt><tt class="py-name">headers</tt><tt class="py-op">.</tt><tt class="py-name">copy</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-<a name="L1195"></a><tt class="py-lineno">1195</tt>  <tt class="py-line"> </tt>
-<a name="L1196"></a><tt class="py-lineno">1196</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt id="link-213" class="py-name"><a title="googleapiclient.http.HttpMock.request
+<a name="L1199"></a><tt class="py-lineno">1199</tt>  <tt class="py-line"> </tt>
+<a name="L1200"></a><tt class="py-lineno">1200</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt id="link-213" class="py-name"><a title="googleapiclient.http.HttpMock.request
 googleapiclient.http.HttpMockSequence.request
 googleapiclient.model.BaseModel.request
 googleapiclient.model.Model.request" class="py-name" href="#" onclick="return doclink('link-213', 'request', 'link-34');">request</a></tt><tt class="py-op">.</tt><tt id="link-214" class="py-name"><a title="googleapiclient.http" class="py-name" href="#" onclick="return doclink('link-214', 'http', 'link-33');">http</a></tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt> <tt class="py-keyword">and</tt> <tt class="py-name">hasattr</tt><tt class="py-op">(</tt><tt id="link-215" class="py-name"><a title="googleapiclient.http.HttpMock.request
@@ -1499,639 +1503,639 @@
 googleapiclient.http.HttpMockSequence.request
 googleapiclient.model.BaseModel.request
 googleapiclient.model.Model.request" class="py-name" href="#" onclick="return doclink('link-217', 'request', 'link-34');">request</a></tt><tt class="py-op">,</tt> </tt>
-<a name="L1197"></a><tt class="py-lineno">1197</tt>  <tt class="py-line">        <tt class="py-string">'credentials'</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="L1198"></a><tt class="py-lineno">1198</tt>  <tt class="py-line">      <tt id="link-218" class="py-name"><a title="googleapiclient.http.HttpMock.request
+<a name="L1201"></a><tt class="py-lineno">1201</tt>  <tt class="py-line">        <tt class="py-string">'credentials'</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L1202"></a><tt class="py-lineno">1202</tt>  <tt class="py-line">      <tt id="link-218" class="py-name"><a title="googleapiclient.http.HttpMock.request
 googleapiclient.http.HttpMockSequence.request
 googleapiclient.model.BaseModel.request
 googleapiclient.model.Model.request" class="py-name" href="#" onclick="return doclink('link-218', 'request', 'link-34');">request</a></tt><tt class="py-op">.</tt><tt id="link-219" class="py-name"><a title="googleapiclient.http" class="py-name" href="#" onclick="return doclink('link-219', 'http', 'link-33');">http</a></tt><tt class="py-op">.</tt><tt id="link-220" class="py-name"><a title="googleapiclient.http.HttpMock.request
 googleapiclient.http.HttpMockSequence.request
 googleapiclient.model.BaseModel.request
 googleapiclient.model.Model.request" class="py-name" href="#" onclick="return doclink('link-220', 'request', 'link-34');">request</a></tt><tt class="py-op">.</tt><tt class="py-name">credentials</tt><tt class="py-op">.</tt><tt class="py-name">apply</tt><tt class="py-op">(</tt><tt class="py-name">headers</tt><tt class="py-op">)</tt> </tt>
-<a name="L1199"></a><tt class="py-lineno">1199</tt>  <tt class="py-line"> </tt>
-<a name="L1200"></a><tt class="py-lineno">1200</tt>  <tt class="py-line">    <tt class="py-comment"># MIMENonMultipart adds its own Content-Type header.</tt> </tt>
-<a name="L1201"></a><tt class="py-lineno">1201</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-string">'content-type'</tt> <tt class="py-keyword">in</tt> <tt class="py-name">headers</tt><tt class="py-op">:</tt> </tt>
-<a name="L1202"></a><tt class="py-lineno">1202</tt>  <tt class="py-line">      <tt class="py-keyword">del</tt> <tt class="py-name">headers</tt><tt class="py-op">[</tt><tt class="py-string">'content-type'</tt><tt class="py-op">]</tt> </tt>
 <a name="L1203"></a><tt class="py-lineno">1203</tt>  <tt class="py-line"> </tt>
-<a name="L1204"></a><tt class="py-lineno">1204</tt>  <tt class="py-line">    <tt class="py-keyword">for</tt> <tt class="py-name">key</tt><tt class="py-op">,</tt> <tt class="py-name">value</tt> <tt class="py-keyword">in</tt> <tt class="py-name">six</tt><tt class="py-op">.</tt><tt class="py-name">iteritems</tt><tt class="py-op">(</tt><tt class="py-name">headers</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="L1205"></a><tt class="py-lineno">1205</tt>  <tt class="py-line">      <tt class="py-name">msg</tt><tt class="py-op">[</tt><tt class="py-name">key</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">value</tt> </tt>
-<a name="L1206"></a><tt class="py-lineno">1206</tt>  <tt class="py-line">    <tt class="py-name">msg</tt><tt class="py-op">[</tt><tt class="py-string">'Host'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">parsed</tt><tt class="py-op">.</tt><tt class="py-name">netloc</tt> </tt>
-<a name="L1207"></a><tt class="py-lineno">1207</tt>  <tt class="py-line">    <tt class="py-name">msg</tt><tt class="py-op">.</tt><tt class="py-name">set_unixfrom</tt><tt class="py-op">(</tt><tt class="py-name">None</tt><tt class="py-op">)</tt> </tt>
-<a name="L1208"></a><tt class="py-lineno">1208</tt>  <tt class="py-line"> </tt>
-<a name="L1209"></a><tt class="py-lineno">1209</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt id="link-221" class="py-name"><a title="googleapiclient.http.HttpMock.request
+<a name="L1204"></a><tt class="py-lineno">1204</tt>  <tt class="py-line">    <tt class="py-comment"># MIMENonMultipart adds its own Content-Type header.</tt> </tt>
+<a name="L1205"></a><tt class="py-lineno">1205</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-string">'content-type'</tt> <tt class="py-keyword">in</tt> <tt class="py-name">headers</tt><tt class="py-op">:</tt> </tt>
+<a name="L1206"></a><tt class="py-lineno">1206</tt>  <tt class="py-line">      <tt class="py-keyword">del</tt> <tt class="py-name">headers</tt><tt class="py-op">[</tt><tt class="py-string">'content-type'</tt><tt class="py-op">]</tt> </tt>
+<a name="L1207"></a><tt class="py-lineno">1207</tt>  <tt class="py-line"> </tt>
+<a name="L1208"></a><tt class="py-lineno">1208</tt>  <tt class="py-line">    <tt class="py-keyword">for</tt> <tt class="py-name">key</tt><tt class="py-op">,</tt> <tt class="py-name">value</tt> <tt class="py-keyword">in</tt> <tt class="py-name">six</tt><tt class="py-op">.</tt><tt class="py-name">iteritems</tt><tt class="py-op">(</tt><tt class="py-name">headers</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L1209"></a><tt class="py-lineno">1209</tt>  <tt class="py-line">      <tt class="py-name">msg</tt><tt class="py-op">[</tt><tt class="py-name">key</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">value</tt> </tt>
+<a name="L1210"></a><tt class="py-lineno">1210</tt>  <tt class="py-line">    <tt class="py-name">msg</tt><tt class="py-op">[</tt><tt class="py-string">'Host'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">parsed</tt><tt class="py-op">.</tt><tt class="py-name">netloc</tt> </tt>
+<a name="L1211"></a><tt class="py-lineno">1211</tt>  <tt class="py-line">    <tt class="py-name">msg</tt><tt class="py-op">.</tt><tt class="py-name">set_unixfrom</tt><tt class="py-op">(</tt><tt class="py-name">None</tt><tt class="py-op">)</tt> </tt>
+<a name="L1212"></a><tt class="py-lineno">1212</tt>  <tt class="py-line"> </tt>
+<a name="L1213"></a><tt class="py-lineno">1213</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt id="link-221" class="py-name"><a title="googleapiclient.http.HttpMock.request
 googleapiclient.http.HttpMockSequence.request
 googleapiclient.model.BaseModel.request
 googleapiclient.model.Model.request" class="py-name" href="#" onclick="return doclink('link-221', 'request', 'link-34');">request</a></tt><tt class="py-op">.</tt><tt id="link-222" class="py-name"><a title="googleapiclient.channel.Channel.body" class="py-name" href="#" onclick="return doclink('link-222', 'body', 'link-69');">body</a></tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
-<a name="L1210"></a><tt class="py-lineno">1210</tt>  <tt class="py-line">      <tt class="py-name">msg</tt><tt class="py-op">.</tt><tt class="py-name">set_payload</tt><tt class="py-op">(</tt><tt id="link-223" class="py-name"><a title="googleapiclient.http.HttpMock.request
+<a name="L1214"></a><tt class="py-lineno">1214</tt>  <tt class="py-line">      <tt class="py-name">msg</tt><tt class="py-op">.</tt><tt class="py-name">set_payload</tt><tt class="py-op">(</tt><tt id="link-223" class="py-name"><a title="googleapiclient.http.HttpMock.request
 googleapiclient.http.HttpMockSequence.request
 googleapiclient.model.BaseModel.request
 googleapiclient.model.Model.request" class="py-name" href="#" onclick="return doclink('link-223', 'request', 'link-34');">request</a></tt><tt class="py-op">.</tt><tt id="link-224" class="py-name"><a title="googleapiclient.channel.Channel.body" class="py-name" href="#" onclick="return doclink('link-224', 'body', 'link-69');">body</a></tt><tt class="py-op">)</tt> </tt>
-<a name="L1211"></a><tt class="py-lineno">1211</tt>  <tt class="py-line">      <tt class="py-name">msg</tt><tt class="py-op">[</tt><tt class="py-string">'content-length'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">len</tt><tt class="py-op">(</tt><tt id="link-225" class="py-name"><a title="googleapiclient.http.HttpMock.request
+<a name="L1215"></a><tt class="py-lineno">1215</tt>  <tt class="py-line">      <tt class="py-name">msg</tt><tt class="py-op">[</tt><tt class="py-string">'content-length'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">len</tt><tt class="py-op">(</tt><tt id="link-225" class="py-name"><a title="googleapiclient.http.HttpMock.request
 googleapiclient.http.HttpMockSequence.request
 googleapiclient.model.BaseModel.request
 googleapiclient.model.Model.request" class="py-name" href="#" onclick="return doclink('link-225', 'request', 'link-34');">request</a></tt><tt class="py-op">.</tt><tt id="link-226" class="py-name"><a title="googleapiclient.channel.Channel.body" class="py-name" href="#" onclick="return doclink('link-226', 'body', 'link-69');">body</a></tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L1212"></a><tt class="py-lineno">1212</tt>  <tt class="py-line"> </tt>
-<a name="L1213"></a><tt class="py-lineno">1213</tt>  <tt class="py-line">    <tt class="py-comment"># Serialize the mime message.</tt> </tt>
-<a name="L1214"></a><tt class="py-lineno">1214</tt>  <tt class="py-line">    <tt class="py-name">fp</tt> <tt class="py-op">=</tt> <tt class="py-name">StringIO</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-<a name="L1215"></a><tt class="py-lineno">1215</tt>  <tt class="py-line">    <tt class="py-comment"># maxheaderlen=0 means don't line wrap headers.</tt> </tt>
-<a name="L1216"></a><tt class="py-lineno">1216</tt>  <tt class="py-line">    <tt class="py-name">g</tt> <tt class="py-op">=</tt> <tt class="py-name">Generator</tt><tt class="py-op">(</tt><tt class="py-name">fp</tt><tt class="py-op">,</tt> <tt class="py-name">maxheaderlen</tt><tt class="py-op">=</tt><tt class="py-number">0</tt><tt class="py-op">)</tt> </tt>
-<a name="L1217"></a><tt class="py-lineno">1217</tt>  <tt class="py-line">    <tt class="py-name">g</tt><tt class="py-op">.</tt><tt class="py-name">flatten</tt><tt class="py-op">(</tt><tt class="py-name">msg</tt><tt class="py-op">,</tt> <tt class="py-name">unixfrom</tt><tt class="py-op">=</tt><tt class="py-name">False</tt><tt class="py-op">)</tt> </tt>
-<a name="L1218"></a><tt class="py-lineno">1218</tt>  <tt class="py-line">    <tt id="link-227" class="py-name"><a title="googleapiclient.channel.Channel.body" class="py-name" href="#" onclick="return doclink('link-227', 'body', 'link-69');">body</a></tt> <tt class="py-op">=</tt> <tt class="py-name">fp</tt><tt class="py-op">.</tt><tt class="py-name">getvalue</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-<a name="L1219"></a><tt class="py-lineno">1219</tt>  <tt class="py-line"> </tt>
-<a name="L1220"></a><tt class="py-lineno">1220</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-name">status_line</tt> <tt class="py-op">+</tt> <tt id="link-228" class="py-name"><a title="googleapiclient.channel.Channel.body" class="py-name" href="#" onclick="return doclink('link-228', 'body', 'link-69');">body</a></tt> </tt>
-</div><a name="L1221"></a><tt class="py-lineno">1221</tt>  <tt class="py-line"> </tt>
-<a name="BatchHttpRequest._deserialize_response"></a><div id="BatchHttpRequest._deserialize_response-def"><a name="L1222"></a><tt class="py-lineno">1222</tt> <a class="py-toggle" href="#" id="BatchHttpRequest._deserialize_response-toggle" onclick="return toggle('BatchHttpRequest._deserialize_response');">-</a><tt class="py-line">  <tt class="py-keyword">def</tt> <a class="py-def-name" href="googleapiclient.http.BatchHttpRequest-class.html#_deserialize_response">_deserialize_response</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">payload</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="BatchHttpRequest._deserialize_response-collapsed" style="display:none;" pad="++++" indent="++++++"></div><div id="BatchHttpRequest._deserialize_response-expanded"><a name="L1223"></a><tt class="py-lineno">1223</tt>  <tt class="py-line">    <tt class="py-docstring">"""Convert string into httplib2 response and content.</tt> </tt>
-<a name="L1224"></a><tt class="py-lineno">1224</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L1225"></a><tt class="py-lineno">1225</tt>  <tt class="py-line"><tt class="py-docstring">    Args:</tt> </tt>
-<a name="L1226"></a><tt class="py-lineno">1226</tt>  <tt class="py-line"><tt class="py-docstring">      payload: string, headers and body as a string.</tt> </tt>
-<a name="L1227"></a><tt class="py-lineno">1227</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L1228"></a><tt class="py-lineno">1228</tt>  <tt class="py-line"><tt class="py-docstring">    Returns:</tt> </tt>
-<a name="L1229"></a><tt class="py-lineno">1229</tt>  <tt class="py-line"><tt class="py-docstring">      A pair (resp, content), such as would be returned from httplib2.request.</tt> </tt>
-<a name="L1230"></a><tt class="py-lineno">1230</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
-<a name="L1231"></a><tt class="py-lineno">1231</tt>  <tt class="py-line">    <tt class="py-comment"># Strip off the status line</tt> </tt>
-<a name="L1232"></a><tt class="py-lineno">1232</tt>  <tt class="py-line">    <tt class="py-name">status_line</tt><tt class="py-op">,</tt> <tt class="py-name">payload</tt> <tt class="py-op">=</tt> <tt class="py-name">payload</tt><tt class="py-op">.</tt><tt class="py-name">split</tt><tt class="py-op">(</tt><tt class="py-string">'\n'</tt><tt class="py-op">,</tt> <tt class="py-number">1</tt><tt class="py-op">)</tt> </tt>
-<a name="L1233"></a><tt class="py-lineno">1233</tt>  <tt class="py-line">    <tt class="py-name">protocol</tt><tt class="py-op">,</tt> <tt class="py-name">status</tt><tt class="py-op">,</tt> <tt class="py-name">reason</tt> <tt class="py-op">=</tt> <tt class="py-name">status_line</tt><tt class="py-op">.</tt><tt class="py-name">split</tt><tt class="py-op">(</tt><tt class="py-string">' '</tt><tt class="py-op">,</tt> <tt class="py-number">2</tt><tt class="py-op">)</tt> </tt>
-<a name="L1234"></a><tt class="py-lineno">1234</tt>  <tt class="py-line"> </tt>
-<a name="L1235"></a><tt class="py-lineno">1235</tt>  <tt class="py-line">    <tt class="py-comment"># Parse the rest of the response</tt> </tt>
-<a name="L1236"></a><tt class="py-lineno">1236</tt>  <tt class="py-line">    <tt class="py-name">parser</tt> <tt class="py-op">=</tt> <tt class="py-name">FeedParser</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-<a name="L1237"></a><tt class="py-lineno">1237</tt>  <tt class="py-line">    <tt class="py-name">parser</tt><tt class="py-op">.</tt><tt class="py-name">feed</tt><tt class="py-op">(</tt><tt class="py-name">payload</tt><tt class="py-op">)</tt> </tt>
-<a name="L1238"></a><tt class="py-lineno">1238</tt>  <tt class="py-line">    <tt class="py-name">msg</tt> <tt class="py-op">=</tt> <tt class="py-name">parser</tt><tt class="py-op">.</tt><tt class="py-name">close</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-<a name="L1239"></a><tt class="py-lineno">1239</tt>  <tt class="py-line">    <tt class="py-name">msg</tt><tt class="py-op">[</tt><tt class="py-string">'status'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">status</tt> </tt>
-<a name="L1240"></a><tt class="py-lineno">1240</tt>  <tt class="py-line"> </tt>
-<a name="L1241"></a><tt class="py-lineno">1241</tt>  <tt class="py-line">    <tt class="py-comment"># Create httplib2.Response from the parsed headers.</tt> </tt>
-<a name="L1242"></a><tt class="py-lineno">1242</tt>  <tt class="py-line">    <tt class="py-name">resp</tt> <tt class="py-op">=</tt> <tt class="py-name">httplib2</tt><tt class="py-op">.</tt><tt class="py-name">Response</tt><tt class="py-op">(</tt><tt class="py-name">msg</tt><tt class="py-op">)</tt> </tt>
-<a name="L1243"></a><tt class="py-lineno">1243</tt>  <tt class="py-line">    <tt class="py-name">resp</tt><tt class="py-op">.</tt><tt class="py-name">reason</tt> <tt class="py-op">=</tt> <tt class="py-name">reason</tt> </tt>
-<a name="L1244"></a><tt class="py-lineno">1244</tt>  <tt class="py-line">    <tt class="py-name">resp</tt><tt class="py-op">.</tt><tt class="py-name">version</tt> <tt class="py-op">=</tt> <tt class="py-name">int</tt><tt class="py-op">(</tt><tt class="py-name">protocol</tt><tt class="py-op">.</tt><tt class="py-name">split</tt><tt class="py-op">(</tt><tt class="py-string">'/'</tt><tt class="py-op">,</tt> <tt class="py-number">1</tt><tt class="py-op">)</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt class="py-name">replace</tt><tt class="py-op">(</tt><tt class="py-string">'.'</tt><tt class="py-op">,</tt> <tt class="py-string">''</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L1245"></a><tt class="py-lineno">1245</tt>  <tt class="py-line"> </tt>
-<a name="L1246"></a><tt class="py-lineno">1246</tt>  <tt class="py-line">    <tt class="py-name">content</tt> <tt class="py-op">=</tt> <tt class="py-name">payload</tt><tt class="py-op">.</tt><tt class="py-name">split</tt><tt class="py-op">(</tt><tt class="py-string">'\r\n\r\n'</tt><tt class="py-op">,</tt> <tt class="py-number">1</tt><tt class="py-op">)</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt> </tt>
-<a name="L1247"></a><tt class="py-lineno">1247</tt>  <tt class="py-line"> </tt>
-<a name="L1248"></a><tt class="py-lineno">1248</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-name">resp</tt><tt class="py-op">,</tt> <tt class="py-name">content</tt> </tt>
-</div><a name="L1249"></a><tt class="py-lineno">1249</tt>  <tt class="py-line"> </tt>
-<a name="BatchHttpRequest._new_id"></a><div id="BatchHttpRequest._new_id-def"><a name="L1250"></a><tt class="py-lineno">1250</tt> <a class="py-toggle" href="#" id="BatchHttpRequest._new_id-toggle" onclick="return toggle('BatchHttpRequest._new_id');">-</a><tt class="py-line">  <tt class="py-keyword">def</tt> <a class="py-def-name" href="googleapiclient.http.BatchHttpRequest-class.html#_new_id">_new_id</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="BatchHttpRequest._new_id-collapsed" style="display:none;" pad="++++" indent="++++++"></div><div id="BatchHttpRequest._new_id-expanded"><a name="L1251"></a><tt class="py-lineno">1251</tt>  <tt class="py-line">    <tt class="py-docstring">"""Create a new id.</tt> </tt>
-<a name="L1252"></a><tt class="py-lineno">1252</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L1253"></a><tt class="py-lineno">1253</tt>  <tt class="py-line"><tt class="py-docstring">    Auto incrementing number that avoids conflicts with ids already used.</tt> </tt>
-<a name="L1254"></a><tt class="py-lineno">1254</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L1255"></a><tt class="py-lineno">1255</tt>  <tt class="py-line"><tt class="py-docstring">    Returns:</tt> </tt>
-<a name="L1256"></a><tt class="py-lineno">1256</tt>  <tt class="py-line"><tt class="py-docstring">       string, a new unique id.</tt> </tt>
-<a name="L1257"></a><tt class="py-lineno">1257</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
-<a name="L1258"></a><tt class="py-lineno">1258</tt>  <tt class="py-line">    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_last_auto_id</tt> <tt class="py-op">+=</tt> <tt class="py-number">1</tt> </tt>
-<a name="L1259"></a><tt class="py-lineno">1259</tt>  <tt class="py-line">    <tt class="py-keyword">while</tt> <tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_last_auto_id</tt><tt class="py-op">)</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_requests</tt><tt class="py-op">:</tt> </tt>
-<a name="L1260"></a><tt class="py-lineno">1260</tt>  <tt class="py-line">      <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_last_auto_id</tt> <tt class="py-op">+=</tt> <tt class="py-number">1</tt> </tt>
-<a name="L1261"></a><tt class="py-lineno">1261</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_last_auto_id</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L1262"></a><tt class="py-lineno">1262</tt>  <tt class="py-line"> </tt>
-<a name="L1263"></a><tt class="py-lineno">1263</tt>  <tt class="py-line">  <tt class="py-decorator">@</tt><tt class="py-decorator">util</tt><tt class="py-op">.</tt><tt class="py-name">positional</tt><tt class="py-op">(</tt><tt class="py-number">2</tt><tt class="py-op">)</tt> </tt>
-<a name="BatchHttpRequest.add"></a><div id="BatchHttpRequest.add-def"><a name="L1264"></a><tt class="py-lineno">1264</tt> <a class="py-toggle" href="#" id="BatchHttpRequest.add-toggle" onclick="return toggle('BatchHttpRequest.add');">-</a><tt class="py-line">  <tt class="py-keyword">def</tt> <a class="py-def-name" href="googleapiclient.http.BatchHttpRequest-class.html#add">add</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">request</tt><tt class="py-op">,</tt> <tt class="py-param">callback</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-param">request_id</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="BatchHttpRequest.add-collapsed" style="display:none;" pad="++++" indent="++++++"></div><div id="BatchHttpRequest.add-expanded"><a name="L1265"></a><tt class="py-lineno">1265</tt>  <tt class="py-line">    <tt class="py-docstring">"""Add a new request.</tt> </tt>
-<a name="L1266"></a><tt class="py-lineno">1266</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L1267"></a><tt class="py-lineno">1267</tt>  <tt class="py-line"><tt class="py-docstring">    Every callback added will be paired with a unique id, the request_id. That</tt> </tt>
-<a name="L1268"></a><tt class="py-lineno">1268</tt>  <tt class="py-line"><tt class="py-docstring">    unique id will be passed back to the callback when the response comes back</tt> </tt>
-<a name="L1269"></a><tt class="py-lineno">1269</tt>  <tt class="py-line"><tt class="py-docstring">    from the server. The default behavior is to have the library generate it's</tt> </tt>
-<a name="L1270"></a><tt class="py-lineno">1270</tt>  <tt class="py-line"><tt class="py-docstring">    own unique id. If the caller passes in a request_id then they must ensure</tt> </tt>
-<a name="L1271"></a><tt class="py-lineno">1271</tt>  <tt class="py-line"><tt class="py-docstring">    uniqueness for each request_id, and if they are not an exception is</tt> </tt>
-<a name="L1272"></a><tt class="py-lineno">1272</tt>  <tt class="py-line"><tt class="py-docstring">    raised. Callers should either supply all request_ids or nevery supply a</tt> </tt>
-<a name="L1273"></a><tt class="py-lineno">1273</tt>  <tt class="py-line"><tt class="py-docstring">    request id, to avoid such an error.</tt> </tt>
-<a name="L1274"></a><tt class="py-lineno">1274</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L1275"></a><tt class="py-lineno">1275</tt>  <tt class="py-line"><tt class="py-docstring">    Args:</tt> </tt>
-<a name="L1276"></a><tt class="py-lineno">1276</tt>  <tt class="py-line"><tt class="py-docstring">      request: HttpRequest, Request to add to the batch.</tt> </tt>
-<a name="L1277"></a><tt class="py-lineno">1277</tt>  <tt class="py-line"><tt class="py-docstring">      callback: callable, A callback to be called for this response, of the</tt> </tt>
-<a name="L1278"></a><tt class="py-lineno">1278</tt>  <tt class="py-line"><tt class="py-docstring">        form callback(id, response, exception). The first parameter is the</tt> </tt>
-<a name="L1279"></a><tt class="py-lineno">1279</tt>  <tt class="py-line"><tt class="py-docstring">        request id, and the second is the deserialized response object. The</tt> </tt>
-<a name="L1280"></a><tt class="py-lineno">1280</tt>  <tt class="py-line"><tt class="py-docstring">        third is an googleapiclient.errors.HttpError exception object if an HTTP error</tt> </tt>
-<a name="L1281"></a><tt class="py-lineno">1281</tt>  <tt class="py-line"><tt class="py-docstring">        occurred while processing the request, or None if no errors occurred.</tt> </tt>
-<a name="L1282"></a><tt class="py-lineno">1282</tt>  <tt class="py-line"><tt class="py-docstring">      request_id: string, A unique id for the request. The id will be passed to</tt> </tt>
-<a name="L1283"></a><tt class="py-lineno">1283</tt>  <tt class="py-line"><tt class="py-docstring">        the callback with the response.</tt> </tt>
-<a name="L1284"></a><tt class="py-lineno">1284</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L1285"></a><tt class="py-lineno">1285</tt>  <tt class="py-line"><tt class="py-docstring">    Returns:</tt> </tt>
-<a name="L1286"></a><tt class="py-lineno">1286</tt>  <tt class="py-line"><tt class="py-docstring">      None</tt> </tt>
-<a name="L1287"></a><tt class="py-lineno">1287</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L1288"></a><tt class="py-lineno">1288</tt>  <tt class="py-line"><tt class="py-docstring">    Raises:</tt> </tt>
-<a name="L1289"></a><tt class="py-lineno">1289</tt>  <tt class="py-line"><tt class="py-docstring">      BatchError if a media request is added to a batch.</tt> </tt>
-<a name="L1290"></a><tt class="py-lineno">1290</tt>  <tt class="py-line"><tt class="py-docstring">      KeyError is the request_id is not unique.</tt> </tt>
-<a name="L1291"></a><tt class="py-lineno">1291</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
-<a name="L1292"></a><tt class="py-lineno">1292</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">request_id</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
-<a name="L1293"></a><tt class="py-lineno">1293</tt>  <tt class="py-line">      <tt class="py-name">request_id</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-229" class="py-name" targets="Method googleapiclient.http.BatchHttpRequest._new_id()=googleapiclient.http.BatchHttpRequest-class.html#_new_id"><a title="googleapiclient.http.BatchHttpRequest._new_id" class="py-name" href="#" onclick="return doclink('link-229', '_new_id', 'link-229');">_new_id</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-<a name="L1294"></a><tt class="py-lineno">1294</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt id="link-230" class="py-name"><a title="googleapiclient.http.HttpMock.request
+<a name="L1216"></a><tt class="py-lineno">1216</tt>  <tt class="py-line"> </tt>
+<a name="L1217"></a><tt class="py-lineno">1217</tt>  <tt class="py-line">    <tt class="py-comment"># Serialize the mime message.</tt> </tt>
+<a name="L1218"></a><tt class="py-lineno">1218</tt>  <tt class="py-line">    <tt class="py-name">fp</tt> <tt class="py-op">=</tt> <tt class="py-name">StringIO</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L1219"></a><tt class="py-lineno">1219</tt>  <tt class="py-line">    <tt class="py-comment"># maxheaderlen=0 means don't line wrap headers.</tt> </tt>
+<a name="L1220"></a><tt class="py-lineno">1220</tt>  <tt class="py-line">    <tt class="py-name">g</tt> <tt class="py-op">=</tt> <tt class="py-name">Generator</tt><tt class="py-op">(</tt><tt class="py-name">fp</tt><tt class="py-op">,</tt> <tt class="py-name">maxheaderlen</tt><tt class="py-op">=</tt><tt class="py-number">0</tt><tt class="py-op">)</tt> </tt>
+<a name="L1221"></a><tt class="py-lineno">1221</tt>  <tt class="py-line">    <tt class="py-name">g</tt><tt class="py-op">.</tt><tt class="py-name">flatten</tt><tt class="py-op">(</tt><tt class="py-name">msg</tt><tt class="py-op">,</tt> <tt class="py-name">unixfrom</tt><tt class="py-op">=</tt><tt class="py-name">False</tt><tt class="py-op">)</tt> </tt>
+<a name="L1222"></a><tt class="py-lineno">1222</tt>  <tt class="py-line">    <tt id="link-227" class="py-name"><a title="googleapiclient.channel.Channel.body" class="py-name" href="#" onclick="return doclink('link-227', 'body', 'link-69');">body</a></tt> <tt class="py-op">=</tt> <tt class="py-name">fp</tt><tt class="py-op">.</tt><tt class="py-name">getvalue</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L1223"></a><tt class="py-lineno">1223</tt>  <tt class="py-line"> </tt>
+<a name="L1224"></a><tt class="py-lineno">1224</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-name">status_line</tt> <tt class="py-op">+</tt> <tt id="link-228" class="py-name"><a title="googleapiclient.channel.Channel.body" class="py-name" href="#" onclick="return doclink('link-228', 'body', 'link-69');">body</a></tt> </tt>
+</div><a name="L1225"></a><tt class="py-lineno">1225</tt>  <tt class="py-line"> </tt>
+<a name="BatchHttpRequest._deserialize_response"></a><div id="BatchHttpRequest._deserialize_response-def"><a name="L1226"></a><tt class="py-lineno">1226</tt> <a class="py-toggle" href="#" id="BatchHttpRequest._deserialize_response-toggle" onclick="return toggle('BatchHttpRequest._deserialize_response');">-</a><tt class="py-line">  <tt class="py-keyword">def</tt> <a class="py-def-name" href="googleapiclient.http.BatchHttpRequest-class.html#_deserialize_response">_deserialize_response</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">payload</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="BatchHttpRequest._deserialize_response-collapsed" style="display:none;" pad="++++" indent="++++++"></div><div id="BatchHttpRequest._deserialize_response-expanded"><a name="L1227"></a><tt class="py-lineno">1227</tt>  <tt class="py-line">    <tt class="py-docstring">"""Convert string into httplib2 response and content.</tt> </tt>
+<a name="L1228"></a><tt class="py-lineno">1228</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L1229"></a><tt class="py-lineno">1229</tt>  <tt class="py-line"><tt class="py-docstring">    Args:</tt> </tt>
+<a name="L1230"></a><tt class="py-lineno">1230</tt>  <tt class="py-line"><tt class="py-docstring">      payload: string, headers and body as a string.</tt> </tt>
+<a name="L1231"></a><tt class="py-lineno">1231</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L1232"></a><tt class="py-lineno">1232</tt>  <tt class="py-line"><tt class="py-docstring">    Returns:</tt> </tt>
+<a name="L1233"></a><tt class="py-lineno">1233</tt>  <tt class="py-line"><tt class="py-docstring">      A pair (resp, content), such as would be returned from httplib2.request.</tt> </tt>
+<a name="L1234"></a><tt class="py-lineno">1234</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
+<a name="L1235"></a><tt class="py-lineno">1235</tt>  <tt class="py-line">    <tt class="py-comment"># Strip off the status line</tt> </tt>
+<a name="L1236"></a><tt class="py-lineno">1236</tt>  <tt class="py-line">    <tt class="py-name">status_line</tt><tt class="py-op">,</tt> <tt class="py-name">payload</tt> <tt class="py-op">=</tt> <tt class="py-name">payload</tt><tt class="py-op">.</tt><tt class="py-name">split</tt><tt class="py-op">(</tt><tt class="py-string">'\n'</tt><tt class="py-op">,</tt> <tt class="py-number">1</tt><tt class="py-op">)</tt> </tt>
+<a name="L1237"></a><tt class="py-lineno">1237</tt>  <tt class="py-line">    <tt class="py-name">protocol</tt><tt class="py-op">,</tt> <tt class="py-name">status</tt><tt class="py-op">,</tt> <tt class="py-name">reason</tt> <tt class="py-op">=</tt> <tt class="py-name">status_line</tt><tt class="py-op">.</tt><tt class="py-name">split</tt><tt class="py-op">(</tt><tt class="py-string">' '</tt><tt class="py-op">,</tt> <tt class="py-number">2</tt><tt class="py-op">)</tt> </tt>
+<a name="L1238"></a><tt class="py-lineno">1238</tt>  <tt class="py-line"> </tt>
+<a name="L1239"></a><tt class="py-lineno">1239</tt>  <tt class="py-line">    <tt class="py-comment"># Parse the rest of the response</tt> </tt>
+<a name="L1240"></a><tt class="py-lineno">1240</tt>  <tt class="py-line">    <tt class="py-name">parser</tt> <tt class="py-op">=</tt> <tt class="py-name">FeedParser</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L1241"></a><tt class="py-lineno">1241</tt>  <tt class="py-line">    <tt class="py-name">parser</tt><tt class="py-op">.</tt><tt class="py-name">feed</tt><tt class="py-op">(</tt><tt class="py-name">payload</tt><tt class="py-op">)</tt> </tt>
+<a name="L1242"></a><tt class="py-lineno">1242</tt>  <tt class="py-line">    <tt class="py-name">msg</tt> <tt class="py-op">=</tt> <tt class="py-name">parser</tt><tt class="py-op">.</tt><tt class="py-name">close</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L1243"></a><tt class="py-lineno">1243</tt>  <tt class="py-line">    <tt class="py-name">msg</tt><tt class="py-op">[</tt><tt class="py-string">'status'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">status</tt> </tt>
+<a name="L1244"></a><tt class="py-lineno">1244</tt>  <tt class="py-line"> </tt>
+<a name="L1245"></a><tt class="py-lineno">1245</tt>  <tt class="py-line">    <tt class="py-comment"># Create httplib2.Response from the parsed headers.</tt> </tt>
+<a name="L1246"></a><tt class="py-lineno">1246</tt>  <tt class="py-line">    <tt class="py-name">resp</tt> <tt class="py-op">=</tt> <tt class="py-name">httplib2</tt><tt class="py-op">.</tt><tt class="py-name">Response</tt><tt class="py-op">(</tt><tt class="py-name">msg</tt><tt class="py-op">)</tt> </tt>
+<a name="L1247"></a><tt class="py-lineno">1247</tt>  <tt class="py-line">    <tt class="py-name">resp</tt><tt class="py-op">.</tt><tt class="py-name">reason</tt> <tt class="py-op">=</tt> <tt class="py-name">reason</tt> </tt>
+<a name="L1248"></a><tt class="py-lineno">1248</tt>  <tt class="py-line">    <tt class="py-name">resp</tt><tt class="py-op">.</tt><tt class="py-name">version</tt> <tt class="py-op">=</tt> <tt class="py-name">int</tt><tt class="py-op">(</tt><tt class="py-name">protocol</tt><tt class="py-op">.</tt><tt class="py-name">split</tt><tt class="py-op">(</tt><tt class="py-string">'/'</tt><tt class="py-op">,</tt> <tt class="py-number">1</tt><tt class="py-op">)</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt class="py-name">replace</tt><tt class="py-op">(</tt><tt class="py-string">'.'</tt><tt class="py-op">,</tt> <tt class="py-string">''</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L1249"></a><tt class="py-lineno">1249</tt>  <tt class="py-line"> </tt>
+<a name="L1250"></a><tt class="py-lineno">1250</tt>  <tt class="py-line">    <tt class="py-name">content</tt> <tt class="py-op">=</tt> <tt class="py-name">payload</tt><tt class="py-op">.</tt><tt class="py-name">split</tt><tt class="py-op">(</tt><tt class="py-string">'\r\n\r\n'</tt><tt class="py-op">,</tt> <tt class="py-number">1</tt><tt class="py-op">)</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt> </tt>
+<a name="L1251"></a><tt class="py-lineno">1251</tt>  <tt class="py-line"> </tt>
+<a name="L1252"></a><tt class="py-lineno">1252</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-name">resp</tt><tt class="py-op">,</tt> <tt class="py-name">content</tt> </tt>
+</div><a name="L1253"></a><tt class="py-lineno">1253</tt>  <tt class="py-line"> </tt>
+<a name="BatchHttpRequest._new_id"></a><div id="BatchHttpRequest._new_id-def"><a name="L1254"></a><tt class="py-lineno">1254</tt> <a class="py-toggle" href="#" id="BatchHttpRequest._new_id-toggle" onclick="return toggle('BatchHttpRequest._new_id');">-</a><tt class="py-line">  <tt class="py-keyword">def</tt> <a class="py-def-name" href="googleapiclient.http.BatchHttpRequest-class.html#_new_id">_new_id</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="BatchHttpRequest._new_id-collapsed" style="display:none;" pad="++++" indent="++++++"></div><div id="BatchHttpRequest._new_id-expanded"><a name="L1255"></a><tt class="py-lineno">1255</tt>  <tt class="py-line">    <tt class="py-docstring">"""Create a new id.</tt> </tt>
+<a name="L1256"></a><tt class="py-lineno">1256</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L1257"></a><tt class="py-lineno">1257</tt>  <tt class="py-line"><tt class="py-docstring">    Auto incrementing number that avoids conflicts with ids already used.</tt> </tt>
+<a name="L1258"></a><tt class="py-lineno">1258</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L1259"></a><tt class="py-lineno">1259</tt>  <tt class="py-line"><tt class="py-docstring">    Returns:</tt> </tt>
+<a name="L1260"></a><tt class="py-lineno">1260</tt>  <tt class="py-line"><tt class="py-docstring">       string, a new unique id.</tt> </tt>
+<a name="L1261"></a><tt class="py-lineno">1261</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
+<a name="L1262"></a><tt class="py-lineno">1262</tt>  <tt class="py-line">    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_last_auto_id</tt> <tt class="py-op">+=</tt> <tt class="py-number">1</tt> </tt>
+<a name="L1263"></a><tt class="py-lineno">1263</tt>  <tt class="py-line">    <tt class="py-keyword">while</tt> <tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_last_auto_id</tt><tt class="py-op">)</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_requests</tt><tt class="py-op">:</tt> </tt>
+<a name="L1264"></a><tt class="py-lineno">1264</tt>  <tt class="py-line">      <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_last_auto_id</tt> <tt class="py-op">+=</tt> <tt class="py-number">1</tt> </tt>
+<a name="L1265"></a><tt class="py-lineno">1265</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_last_auto_id</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L1266"></a><tt class="py-lineno">1266</tt>  <tt class="py-line"> </tt>
+<a name="L1267"></a><tt class="py-lineno">1267</tt>  <tt class="py-line">  <tt class="py-decorator">@</tt><tt class="py-decorator">util</tt><tt class="py-op">.</tt><tt class="py-name">positional</tt><tt class="py-op">(</tt><tt class="py-number">2</tt><tt class="py-op">)</tt> </tt>
+<a name="BatchHttpRequest.add"></a><div id="BatchHttpRequest.add-def"><a name="L1268"></a><tt class="py-lineno">1268</tt> <a class="py-toggle" href="#" id="BatchHttpRequest.add-toggle" onclick="return toggle('BatchHttpRequest.add');">-</a><tt class="py-line">  <tt class="py-keyword">def</tt> <a class="py-def-name" href="googleapiclient.http.BatchHttpRequest-class.html#add">add</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">request</tt><tt class="py-op">,</tt> <tt class="py-param">callback</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-param">request_id</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="BatchHttpRequest.add-collapsed" style="display:none;" pad="++++" indent="++++++"></div><div id="BatchHttpRequest.add-expanded"><a name="L1269"></a><tt class="py-lineno">1269</tt>  <tt class="py-line">    <tt class="py-docstring">"""Add a new request.</tt> </tt>
+<a name="L1270"></a><tt class="py-lineno">1270</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L1271"></a><tt class="py-lineno">1271</tt>  <tt class="py-line"><tt class="py-docstring">    Every callback added will be paired with a unique id, the request_id. That</tt> </tt>
+<a name="L1272"></a><tt class="py-lineno">1272</tt>  <tt class="py-line"><tt class="py-docstring">    unique id will be passed back to the callback when the response comes back</tt> </tt>
+<a name="L1273"></a><tt class="py-lineno">1273</tt>  <tt class="py-line"><tt class="py-docstring">    from the server. The default behavior is to have the library generate it's</tt> </tt>
+<a name="L1274"></a><tt class="py-lineno">1274</tt>  <tt class="py-line"><tt class="py-docstring">    own unique id. If the caller passes in a request_id then they must ensure</tt> </tt>
+<a name="L1275"></a><tt class="py-lineno">1275</tt>  <tt class="py-line"><tt class="py-docstring">    uniqueness for each request_id, and if they are not an exception is</tt> </tt>
+<a name="L1276"></a><tt class="py-lineno">1276</tt>  <tt class="py-line"><tt class="py-docstring">    raised. Callers should either supply all request_ids or nevery supply a</tt> </tt>
+<a name="L1277"></a><tt class="py-lineno">1277</tt>  <tt class="py-line"><tt class="py-docstring">    request id, to avoid such an error.</tt> </tt>
+<a name="L1278"></a><tt class="py-lineno">1278</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L1279"></a><tt class="py-lineno">1279</tt>  <tt class="py-line"><tt class="py-docstring">    Args:</tt> </tt>
+<a name="L1280"></a><tt class="py-lineno">1280</tt>  <tt class="py-line"><tt class="py-docstring">      request: HttpRequest, Request to add to the batch.</tt> </tt>
+<a name="L1281"></a><tt class="py-lineno">1281</tt>  <tt class="py-line"><tt class="py-docstring">      callback: callable, A callback to be called for this response, of the</tt> </tt>
+<a name="L1282"></a><tt class="py-lineno">1282</tt>  <tt class="py-line"><tt class="py-docstring">        form callback(id, response, exception). The first parameter is the</tt> </tt>
+<a name="L1283"></a><tt class="py-lineno">1283</tt>  <tt class="py-line"><tt class="py-docstring">        request id, and the second is the deserialized response object. The</tt> </tt>
+<a name="L1284"></a><tt class="py-lineno">1284</tt>  <tt class="py-line"><tt class="py-docstring">        third is an googleapiclient.errors.HttpError exception object if an HTTP error</tt> </tt>
+<a name="L1285"></a><tt class="py-lineno">1285</tt>  <tt class="py-line"><tt class="py-docstring">        occurred while processing the request, or None if no errors occurred.</tt> </tt>
+<a name="L1286"></a><tt class="py-lineno">1286</tt>  <tt class="py-line"><tt class="py-docstring">      request_id: string, A unique id for the request. The id will be passed to</tt> </tt>
+<a name="L1287"></a><tt class="py-lineno">1287</tt>  <tt class="py-line"><tt class="py-docstring">        the callback with the response.</tt> </tt>
+<a name="L1288"></a><tt class="py-lineno">1288</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L1289"></a><tt class="py-lineno">1289</tt>  <tt class="py-line"><tt class="py-docstring">    Returns:</tt> </tt>
+<a name="L1290"></a><tt class="py-lineno">1290</tt>  <tt class="py-line"><tt class="py-docstring">      None</tt> </tt>
+<a name="L1291"></a><tt class="py-lineno">1291</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L1292"></a><tt class="py-lineno">1292</tt>  <tt class="py-line"><tt class="py-docstring">    Raises:</tt> </tt>
+<a name="L1293"></a><tt class="py-lineno">1293</tt>  <tt class="py-line"><tt class="py-docstring">      BatchError if a media request is added to a batch.</tt> </tt>
+<a name="L1294"></a><tt class="py-lineno">1294</tt>  <tt class="py-line"><tt class="py-docstring">      KeyError is the request_id is not unique.</tt> </tt>
+<a name="L1295"></a><tt class="py-lineno">1295</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
+<a name="L1296"></a><tt class="py-lineno">1296</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">request_id</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L1297"></a><tt class="py-lineno">1297</tt>  <tt class="py-line">      <tt class="py-name">request_id</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-229" class="py-name" targets="Method googleapiclient.http.BatchHttpRequest._new_id()=googleapiclient.http.BatchHttpRequest-class.html#_new_id"><a title="googleapiclient.http.BatchHttpRequest._new_id" class="py-name" href="#" onclick="return doclink('link-229', '_new_id', 'link-229');">_new_id</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L1298"></a><tt class="py-lineno">1298</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt id="link-230" class="py-name"><a title="googleapiclient.http.HttpMock.request
 googleapiclient.http.HttpMockSequence.request
 googleapiclient.model.BaseModel.request
 googleapiclient.model.Model.request" class="py-name" href="#" onclick="return doclink('link-230', 'request', 'link-34');">request</a></tt><tt class="py-op">.</tt><tt id="link-231" class="py-name"><a title="googleapiclient.http.MediaIoBaseUpload.resumable
 googleapiclient.http.MediaUpload.resumable" class="py-name" href="#" onclick="return doclink('link-231', 'resumable', 'link-49');">resumable</a></tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
-<a name="L1295"></a><tt class="py-lineno">1295</tt>  <tt class="py-line">      <tt class="py-keyword">raise</tt> <tt id="link-232" class="py-name"><a title="googleapiclient.errors.BatchError" class="py-name" href="#" onclick="return doclink('link-232', 'BatchError', 'link-6');">BatchError</a></tt><tt class="py-op">(</tt><tt class="py-string">"Media requests cannot be used in a batch request."</tt><tt class="py-op">)</tt> </tt>
-<a name="L1296"></a><tt class="py-lineno">1296</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">request_id</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_requests</tt><tt class="py-op">:</tt> </tt>
-<a name="L1297"></a><tt class="py-lineno">1297</tt>  <tt class="py-line">      <tt class="py-keyword">raise</tt> <tt class="py-name">KeyError</tt><tt class="py-op">(</tt><tt class="py-string">"A request with this ID already exists: %s"</tt> <tt class="py-op">%</tt> <tt class="py-name">request_id</tt><tt class="py-op">)</tt> </tt>
-<a name="L1298"></a><tt class="py-lineno">1298</tt>  <tt class="py-line">    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_requests</tt><tt class="py-op">[</tt><tt class="py-name">request_id</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt id="link-233" class="py-name"><a title="googleapiclient.http.HttpMock.request
+<a name="L1299"></a><tt class="py-lineno">1299</tt>  <tt class="py-line">      <tt class="py-keyword">raise</tt> <tt id="link-232" class="py-name"><a title="googleapiclient.errors.BatchError" class="py-name" href="#" onclick="return doclink('link-232', 'BatchError', 'link-6');">BatchError</a></tt><tt class="py-op">(</tt><tt class="py-string">"Media requests cannot be used in a batch request."</tt><tt class="py-op">)</tt> </tt>
+<a name="L1300"></a><tt class="py-lineno">1300</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">request_id</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_requests</tt><tt class="py-op">:</tt> </tt>
+<a name="L1301"></a><tt class="py-lineno">1301</tt>  <tt class="py-line">      <tt class="py-keyword">raise</tt> <tt class="py-name">KeyError</tt><tt class="py-op">(</tt><tt class="py-string">"A request with this ID already exists: %s"</tt> <tt class="py-op">%</tt> <tt class="py-name">request_id</tt><tt class="py-op">)</tt> </tt>
+<a name="L1302"></a><tt class="py-lineno">1302</tt>  <tt class="py-line">    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_requests</tt><tt class="py-op">[</tt><tt class="py-name">request_id</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt id="link-233" class="py-name"><a title="googleapiclient.http.HttpMock.request
 googleapiclient.http.HttpMockSequence.request
 googleapiclient.model.BaseModel.request
 googleapiclient.model.Model.request" class="py-name" href="#" onclick="return doclink('link-233', 'request', 'link-34');">request</a></tt> </tt>
-<a name="L1299"></a><tt class="py-lineno">1299</tt>  <tt class="py-line">    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_callbacks</tt><tt class="py-op">[</tt><tt class="py-name">request_id</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">callback</tt> </tt>
-<a name="L1300"></a><tt class="py-lineno">1300</tt>  <tt class="py-line">    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_order</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-name">request_id</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L1301"></a><tt class="py-lineno">1301</tt>  <tt class="py-line"> </tt>
-<a name="BatchHttpRequest._execute"></a><div id="BatchHttpRequest._execute-def"><a name="L1302"></a><tt class="py-lineno">1302</tt> <a class="py-toggle" href="#" id="BatchHttpRequest._execute-toggle" onclick="return toggle('BatchHttpRequest._execute');">-</a><tt class="py-line">  <tt class="py-keyword">def</tt> <a class="py-def-name" href="googleapiclient.http.BatchHttpRequest-class.html#_execute">_execute</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">http</tt><tt class="py-op">,</tt> <tt class="py-param">order</tt><tt class="py-op">,</tt> <tt class="py-param">requests</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="BatchHttpRequest._execute-collapsed" style="display:none;" pad="++++" indent="++++++"></div><div id="BatchHttpRequest._execute-expanded"><a name="L1303"></a><tt class="py-lineno">1303</tt>  <tt class="py-line">    <tt class="py-docstring">"""Serialize batch request, send to server, process response.</tt> </tt>
-<a name="L1304"></a><tt class="py-lineno">1304</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L1305"></a><tt class="py-lineno">1305</tt>  <tt class="py-line"><tt class="py-docstring">    Args:</tt> </tt>
-<a name="L1306"></a><tt class="py-lineno">1306</tt>  <tt class="py-line"><tt class="py-docstring">      http: httplib2.Http, an http object to be used to make the request with.</tt> </tt>
-<a name="L1307"></a><tt class="py-lineno">1307</tt>  <tt class="py-line"><tt class="py-docstring">      order: list, list of request ids in the order they were added to the</tt> </tt>
-<a name="L1308"></a><tt class="py-lineno">1308</tt>  <tt class="py-line"><tt class="py-docstring">        batch.</tt> </tt>
-<a name="L1309"></a><tt class="py-lineno">1309</tt>  <tt class="py-line"><tt class="py-docstring">      request: list, list of request objects to send.</tt> </tt>
-<a name="L1310"></a><tt class="py-lineno">1310</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L1311"></a><tt class="py-lineno">1311</tt>  <tt class="py-line"><tt class="py-docstring">    Raises:</tt> </tt>
-<a name="L1312"></a><tt class="py-lineno">1312</tt>  <tt class="py-line"><tt class="py-docstring">      httplib2.HttpLib2Error if a transport error has occured.</tt> </tt>
-<a name="L1313"></a><tt class="py-lineno">1313</tt>  <tt class="py-line"><tt class="py-docstring">      googleapiclient.errors.BatchError if the response is the wrong format.</tt> </tt>
-<a name="L1314"></a><tt class="py-lineno">1314</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
-<a name="L1315"></a><tt class="py-lineno">1315</tt>  <tt class="py-line">    <tt class="py-name">message</tt> <tt class="py-op">=</tt> <tt class="py-name">MIMEMultipart</tt><tt class="py-op">(</tt><tt class="py-string">'mixed'</tt><tt class="py-op">)</tt> </tt>
-<a name="L1316"></a><tt class="py-lineno">1316</tt>  <tt class="py-line">    <tt class="py-comment"># Message should not write out it's own headers.</tt> </tt>
-<a name="L1317"></a><tt class="py-lineno">1317</tt>  <tt class="py-line">    <tt class="py-name">setattr</tt><tt class="py-op">(</tt><tt class="py-name">message</tt><tt class="py-op">,</tt> <tt class="py-string">'_write_headers'</tt><tt class="py-op">,</tt> <tt class="py-keyword">lambda</tt> <tt class="py-name">self</tt><tt class="py-op">:</tt> <tt class="py-name">None</tt><tt class="py-op">)</tt> </tt>
-<a name="L1318"></a><tt class="py-lineno">1318</tt>  <tt class="py-line"> </tt>
-<a name="L1319"></a><tt class="py-lineno">1319</tt>  <tt class="py-line">    <tt class="py-comment"># Add all the individual requests.</tt> </tt>
-<a name="L1320"></a><tt class="py-lineno">1320</tt>  <tt class="py-line">    <tt class="py-keyword">for</tt> <tt class="py-name">request_id</tt> <tt class="py-keyword">in</tt> <tt class="py-name">order</tt><tt class="py-op">:</tt> </tt>
-<a name="L1321"></a><tt class="py-lineno">1321</tt>  <tt class="py-line">      <tt id="link-234" class="py-name"><a title="googleapiclient.http.HttpMock.request
+<a name="L1303"></a><tt class="py-lineno">1303</tt>  <tt class="py-line">    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_callbacks</tt><tt class="py-op">[</tt><tt class="py-name">request_id</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">callback</tt> </tt>
+<a name="L1304"></a><tt class="py-lineno">1304</tt>  <tt class="py-line">    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_order</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-name">request_id</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L1305"></a><tt class="py-lineno">1305</tt>  <tt class="py-line"> </tt>
+<a name="BatchHttpRequest._execute"></a><div id="BatchHttpRequest._execute-def"><a name="L1306"></a><tt class="py-lineno">1306</tt> <a class="py-toggle" href="#" id="BatchHttpRequest._execute-toggle" onclick="return toggle('BatchHttpRequest._execute');">-</a><tt class="py-line">  <tt class="py-keyword">def</tt> <a class="py-def-name" href="googleapiclient.http.BatchHttpRequest-class.html#_execute">_execute</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">http</tt><tt class="py-op">,</tt> <tt class="py-param">order</tt><tt class="py-op">,</tt> <tt class="py-param">requests</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="BatchHttpRequest._execute-collapsed" style="display:none;" pad="++++" indent="++++++"></div><div id="BatchHttpRequest._execute-expanded"><a name="L1307"></a><tt class="py-lineno">1307</tt>  <tt class="py-line">    <tt class="py-docstring">"""Serialize batch request, send to server, process response.</tt> </tt>
+<a name="L1308"></a><tt class="py-lineno">1308</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L1309"></a><tt class="py-lineno">1309</tt>  <tt class="py-line"><tt class="py-docstring">    Args:</tt> </tt>
+<a name="L1310"></a><tt class="py-lineno">1310</tt>  <tt class="py-line"><tt class="py-docstring">      http: httplib2.Http, an http object to be used to make the request with.</tt> </tt>
+<a name="L1311"></a><tt class="py-lineno">1311</tt>  <tt class="py-line"><tt class="py-docstring">      order: list, list of request ids in the order they were added to the</tt> </tt>
+<a name="L1312"></a><tt class="py-lineno">1312</tt>  <tt class="py-line"><tt class="py-docstring">        batch.</tt> </tt>
+<a name="L1313"></a><tt class="py-lineno">1313</tt>  <tt class="py-line"><tt class="py-docstring">      request: list, list of request objects to send.</tt> </tt>
+<a name="L1314"></a><tt class="py-lineno">1314</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L1315"></a><tt class="py-lineno">1315</tt>  <tt class="py-line"><tt class="py-docstring">    Raises:</tt> </tt>
+<a name="L1316"></a><tt class="py-lineno">1316</tt>  <tt class="py-line"><tt class="py-docstring">      httplib2.HttpLib2Error if a transport error has occured.</tt> </tt>
+<a name="L1317"></a><tt class="py-lineno">1317</tt>  <tt class="py-line"><tt class="py-docstring">      googleapiclient.errors.BatchError if the response is the wrong format.</tt> </tt>
+<a name="L1318"></a><tt class="py-lineno">1318</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
+<a name="L1319"></a><tt class="py-lineno">1319</tt>  <tt class="py-line">    <tt class="py-name">message</tt> <tt class="py-op">=</tt> <tt class="py-name">MIMEMultipart</tt><tt class="py-op">(</tt><tt class="py-string">'mixed'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1320"></a><tt class="py-lineno">1320</tt>  <tt class="py-line">    <tt class="py-comment"># Message should not write out it's own headers.</tt> </tt>
+<a name="L1321"></a><tt class="py-lineno">1321</tt>  <tt class="py-line">    <tt class="py-name">setattr</tt><tt class="py-op">(</tt><tt class="py-name">message</tt><tt class="py-op">,</tt> <tt class="py-string">'_write_headers'</tt><tt class="py-op">,</tt> <tt class="py-keyword">lambda</tt> <tt class="py-name">self</tt><tt class="py-op">:</tt> <tt class="py-name">None</tt><tt class="py-op">)</tt> </tt>
+<a name="L1322"></a><tt class="py-lineno">1322</tt>  <tt class="py-line"> </tt>
+<a name="L1323"></a><tt class="py-lineno">1323</tt>  <tt class="py-line">    <tt class="py-comment"># Add all the individual requests.</tt> </tt>
+<a name="L1324"></a><tt class="py-lineno">1324</tt>  <tt class="py-line">    <tt class="py-keyword">for</tt> <tt class="py-name">request_id</tt> <tt class="py-keyword">in</tt> <tt class="py-name">order</tt><tt class="py-op">:</tt> </tt>
+<a name="L1325"></a><tt class="py-lineno">1325</tt>  <tt class="py-line">      <tt id="link-234" class="py-name"><a title="googleapiclient.http.HttpMock.request
 googleapiclient.http.HttpMockSequence.request
 googleapiclient.model.BaseModel.request
 googleapiclient.model.Model.request" class="py-name" href="#" onclick="return doclink('link-234', 'request', 'link-34');">request</a></tt> <tt class="py-op">=</tt> <tt class="py-name">requests</tt><tt class="py-op">[</tt><tt class="py-name">request_id</tt><tt class="py-op">]</tt> </tt>
-<a name="L1322"></a><tt class="py-lineno">1322</tt>  <tt class="py-line"> </tt>
-<a name="L1323"></a><tt class="py-lineno">1323</tt>  <tt class="py-line">      <tt class="py-name">msg</tt> <tt class="py-op">=</tt> <tt class="py-name">MIMENonMultipart</tt><tt class="py-op">(</tt><tt class="py-string">'application'</tt><tt class="py-op">,</tt> <tt class="py-string">'http'</tt><tt class="py-op">)</tt> </tt>
-<a name="L1324"></a><tt class="py-lineno">1324</tt>  <tt class="py-line">      <tt class="py-name">msg</tt><tt class="py-op">[</tt><tt class="py-string">'Content-Transfer-Encoding'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-string">'binary'</tt> </tt>
-<a name="L1325"></a><tt class="py-lineno">1325</tt>  <tt class="py-line">      <tt class="py-name">msg</tt><tt class="py-op">[</tt><tt class="py-string">'Content-ID'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-235" class="py-name" targets="Method googleapiclient.http.BatchHttpRequest._id_to_header()=googleapiclient.http.BatchHttpRequest-class.html#_id_to_header"><a title="googleapiclient.http.BatchHttpRequest._id_to_header" class="py-name" href="#" onclick="return doclink('link-235', '_id_to_header', 'link-235');">_id_to_header</a></tt><tt class="py-op">(</tt><tt class="py-name">request_id</tt><tt class="py-op">)</tt> </tt>
 <a name="L1326"></a><tt class="py-lineno">1326</tt>  <tt class="py-line"> </tt>
-<a name="L1327"></a><tt class="py-lineno">1327</tt>  <tt class="py-line">      <tt id="link-236" class="py-name"><a title="googleapiclient.channel.Channel.body" class="py-name" href="#" onclick="return doclink('link-236', 'body', 'link-69');">body</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-237" class="py-name" targets="Method googleapiclient.http.BatchHttpRequest._serialize_request()=googleapiclient.http.BatchHttpRequest-class.html#_serialize_request"><a title="googleapiclient.http.BatchHttpRequest._serialize_request" class="py-name" href="#" onclick="return doclink('link-237', '_serialize_request', 'link-237');">_serialize_request</a></tt><tt class="py-op">(</tt><tt id="link-238" class="py-name"><a title="googleapiclient.http.HttpMock.request
+<a name="L1327"></a><tt class="py-lineno">1327</tt>  <tt class="py-line">      <tt class="py-name">msg</tt> <tt class="py-op">=</tt> <tt class="py-name">MIMENonMultipart</tt><tt class="py-op">(</tt><tt class="py-string">'application'</tt><tt class="py-op">,</tt> <tt class="py-string">'http'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1328"></a><tt class="py-lineno">1328</tt>  <tt class="py-line">      <tt class="py-name">msg</tt><tt class="py-op">[</tt><tt class="py-string">'Content-Transfer-Encoding'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-string">'binary'</tt> </tt>
+<a name="L1329"></a><tt class="py-lineno">1329</tt>  <tt class="py-line">      <tt class="py-name">msg</tt><tt class="py-op">[</tt><tt class="py-string">'Content-ID'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-235" class="py-name" targets="Method googleapiclient.http.BatchHttpRequest._id_to_header()=googleapiclient.http.BatchHttpRequest-class.html#_id_to_header"><a title="googleapiclient.http.BatchHttpRequest._id_to_header" class="py-name" href="#" onclick="return doclink('link-235', '_id_to_header', 'link-235');">_id_to_header</a></tt><tt class="py-op">(</tt><tt class="py-name">request_id</tt><tt class="py-op">)</tt> </tt>
+<a name="L1330"></a><tt class="py-lineno">1330</tt>  <tt class="py-line"> </tt>
+<a name="L1331"></a><tt class="py-lineno">1331</tt>  <tt class="py-line">      <tt id="link-236" class="py-name"><a title="googleapiclient.channel.Channel.body" class="py-name" href="#" onclick="return doclink('link-236', 'body', 'link-69');">body</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-237" class="py-name" targets="Method googleapiclient.http.BatchHttpRequest._serialize_request()=googleapiclient.http.BatchHttpRequest-class.html#_serialize_request"><a title="googleapiclient.http.BatchHttpRequest._serialize_request" class="py-name" href="#" onclick="return doclink('link-237', '_serialize_request', 'link-237');">_serialize_request</a></tt><tt class="py-op">(</tt><tt id="link-238" class="py-name"><a title="googleapiclient.http.HttpMock.request
 googleapiclient.http.HttpMockSequence.request
 googleapiclient.model.BaseModel.request
 googleapiclient.model.Model.request" class="py-name" href="#" onclick="return doclink('link-238', 'request', 'link-34');">request</a></tt><tt class="py-op">)</tt> </tt>
-<a name="L1328"></a><tt class="py-lineno">1328</tt>  <tt class="py-line">      <tt class="py-name">msg</tt><tt class="py-op">.</tt><tt class="py-name">set_payload</tt><tt class="py-op">(</tt><tt id="link-239" class="py-name"><a title="googleapiclient.channel.Channel.body" class="py-name" href="#" onclick="return doclink('link-239', 'body', 'link-69');">body</a></tt><tt class="py-op">)</tt> </tt>
-<a name="L1329"></a><tt class="py-lineno">1329</tt>  <tt class="py-line">      <tt class="py-name">message</tt><tt class="py-op">.</tt><tt class="py-name">attach</tt><tt class="py-op">(</tt><tt class="py-name">msg</tt><tt class="py-op">)</tt> </tt>
-<a name="L1330"></a><tt class="py-lineno">1330</tt>  <tt class="py-line"> </tt>
-<a name="L1331"></a><tt class="py-lineno">1331</tt>  <tt class="py-line">    <tt class="py-comment"># encode the body: note that we can't use `as_string`, because</tt> </tt>
-<a name="L1332"></a><tt class="py-lineno">1332</tt>  <tt class="py-line">    <tt class="py-comment"># it plays games with `From ` lines.</tt> </tt>
-<a name="L1333"></a><tt class="py-lineno">1333</tt>  <tt class="py-line">    <tt class="py-name">fp</tt> <tt class="py-op">=</tt> <tt class="py-name">StringIO</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-<a name="L1334"></a><tt class="py-lineno">1334</tt>  <tt class="py-line">    <tt class="py-name">g</tt> <tt class="py-op">=</tt> <tt class="py-name">Generator</tt><tt class="py-op">(</tt><tt class="py-name">fp</tt><tt class="py-op">,</tt> <tt class="py-name">mangle_from_</tt><tt class="py-op">=</tt><tt class="py-name">False</tt><tt class="py-op">)</tt> </tt>
-<a name="L1335"></a><tt class="py-lineno">1335</tt>  <tt class="py-line">    <tt class="py-name">g</tt><tt class="py-op">.</tt><tt class="py-name">flatten</tt><tt class="py-op">(</tt><tt class="py-name">message</tt><tt class="py-op">,</tt> <tt class="py-name">unixfrom</tt><tt class="py-op">=</tt><tt class="py-name">False</tt><tt class="py-op">)</tt> </tt>
-<a name="L1336"></a><tt class="py-lineno">1336</tt>  <tt class="py-line">    <tt id="link-240" class="py-name"><a title="googleapiclient.channel.Channel.body" class="py-name" href="#" onclick="return doclink('link-240', 'body', 'link-69');">body</a></tt> <tt class="py-op">=</tt> <tt class="py-name">fp</tt><tt class="py-op">.</tt><tt class="py-name">getvalue</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-<a name="L1337"></a><tt class="py-lineno">1337</tt>  <tt class="py-line"> </tt>
-<a name="L1338"></a><tt class="py-lineno">1338</tt>  <tt class="py-line">    <tt class="py-name">headers</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-op">}</tt> </tt>
-<a name="L1339"></a><tt class="py-lineno">1339</tt>  <tt class="py-line">    <tt class="py-name">headers</tt><tt class="py-op">[</tt><tt class="py-string">'content-type'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-string">'multipart/mixed; '</tt> </tt>
-<a name="L1340"></a><tt class="py-lineno">1340</tt>  <tt class="py-line">                               <tt class="py-string">'boundary="%s"'</tt><tt class="py-op">)</tt> <tt class="py-op">%</tt> <tt class="py-name">message</tt><tt class="py-op">.</tt><tt class="py-name">get_boundary</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L1332"></a><tt class="py-lineno">1332</tt>  <tt class="py-line">      <tt class="py-name">msg</tt><tt class="py-op">.</tt><tt class="py-name">set_payload</tt><tt class="py-op">(</tt><tt id="link-239" class="py-name"><a title="googleapiclient.channel.Channel.body" class="py-name" href="#" onclick="return doclink('link-239', 'body', 'link-69');">body</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L1333"></a><tt class="py-lineno">1333</tt>  <tt class="py-line">      <tt class="py-name">message</tt><tt class="py-op">.</tt><tt class="py-name">attach</tt><tt class="py-op">(</tt><tt class="py-name">msg</tt><tt class="py-op">)</tt> </tt>
+<a name="L1334"></a><tt class="py-lineno">1334</tt>  <tt class="py-line"> </tt>
+<a name="L1335"></a><tt class="py-lineno">1335</tt>  <tt class="py-line">    <tt class="py-comment"># encode the body: note that we can't use `as_string`, because</tt> </tt>
+<a name="L1336"></a><tt class="py-lineno">1336</tt>  <tt class="py-line">    <tt class="py-comment"># it plays games with `From ` lines.</tt> </tt>
+<a name="L1337"></a><tt class="py-lineno">1337</tt>  <tt class="py-line">    <tt class="py-name">fp</tt> <tt class="py-op">=</tt> <tt class="py-name">StringIO</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L1338"></a><tt class="py-lineno">1338</tt>  <tt class="py-line">    <tt class="py-name">g</tt> <tt class="py-op">=</tt> <tt class="py-name">Generator</tt><tt class="py-op">(</tt><tt class="py-name">fp</tt><tt class="py-op">,</tt> <tt class="py-name">mangle_from_</tt><tt class="py-op">=</tt><tt class="py-name">False</tt><tt class="py-op">)</tt> </tt>
+<a name="L1339"></a><tt class="py-lineno">1339</tt>  <tt class="py-line">    <tt class="py-name">g</tt><tt class="py-op">.</tt><tt class="py-name">flatten</tt><tt class="py-op">(</tt><tt class="py-name">message</tt><tt class="py-op">,</tt> <tt class="py-name">unixfrom</tt><tt class="py-op">=</tt><tt class="py-name">False</tt><tt class="py-op">)</tt> </tt>
+<a name="L1340"></a><tt class="py-lineno">1340</tt>  <tt class="py-line">    <tt id="link-240" class="py-name"><a title="googleapiclient.channel.Channel.body" class="py-name" href="#" onclick="return doclink('link-240', 'body', 'link-69');">body</a></tt> <tt class="py-op">=</tt> <tt class="py-name">fp</tt><tt class="py-op">.</tt><tt class="py-name">getvalue</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
 <a name="L1341"></a><tt class="py-lineno">1341</tt>  <tt class="py-line"> </tt>
-<a name="L1342"></a><tt class="py-lineno">1342</tt>  <tt class="py-line">    <tt class="py-name">resp</tt><tt class="py-op">,</tt> <tt class="py-name">content</tt> <tt class="py-op">=</tt> <tt id="link-241" class="py-name"><a title="googleapiclient.http" class="py-name" href="#" onclick="return doclink('link-241', 'http', 'link-33');">http</a></tt><tt class="py-op">.</tt><tt id="link-242" class="py-name"><a title="googleapiclient.http.HttpMock.request
+<a name="L1342"></a><tt class="py-lineno">1342</tt>  <tt class="py-line">    <tt class="py-name">headers</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-op">}</tt> </tt>
+<a name="L1343"></a><tt class="py-lineno">1343</tt>  <tt class="py-line">    <tt class="py-name">headers</tt><tt class="py-op">[</tt><tt class="py-string">'content-type'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-string">'multipart/mixed; '</tt> </tt>
+<a name="L1344"></a><tt class="py-lineno">1344</tt>  <tt class="py-line">                               <tt class="py-string">'boundary="%s"'</tt><tt class="py-op">)</tt> <tt class="py-op">%</tt> <tt class="py-name">message</tt><tt class="py-op">.</tt><tt class="py-name">get_boundary</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L1345"></a><tt class="py-lineno">1345</tt>  <tt class="py-line"> </tt>
+<a name="L1346"></a><tt class="py-lineno">1346</tt>  <tt class="py-line">    <tt class="py-name">resp</tt><tt class="py-op">,</tt> <tt class="py-name">content</tt> <tt class="py-op">=</tt> <tt id="link-241" class="py-name"><a title="googleapiclient.http" class="py-name" href="#" onclick="return doclink('link-241', 'http', 'link-33');">http</a></tt><tt class="py-op">.</tt><tt id="link-242" class="py-name"><a title="googleapiclient.http.HttpMock.request
 googleapiclient.http.HttpMockSequence.request
 googleapiclient.model.BaseModel.request
 googleapiclient.model.Model.request" class="py-name" href="#" onclick="return doclink('link-242', 'request', 'link-34');">request</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_batch_uri</tt><tt class="py-op">,</tt> <tt class="py-name">method</tt><tt class="py-op">=</tt><tt class="py-string">'POST'</tt><tt class="py-op">,</tt> <tt id="link-243" class="py-name"><a title="googleapiclient.channel.Channel.body" class="py-name" href="#" onclick="return doclink('link-243', 'body', 'link-69');">body</a></tt><tt class="py-op">=</tt><tt id="link-244" class="py-name"><a title="googleapiclient.channel.Channel.body" class="py-name" href="#" onclick="return doclink('link-244', 'body', 'link-69');">body</a></tt><tt class="py-op">,</tt> </tt>
-<a name="L1343"></a><tt class="py-lineno">1343</tt>  <tt class="py-line">                                 <tt class="py-name">headers</tt><tt class="py-op">=</tt><tt class="py-name">headers</tt><tt class="py-op">)</tt> </tt>
-<a name="L1344"></a><tt class="py-lineno">1344</tt>  <tt class="py-line"> </tt>
-<a name="L1345"></a><tt class="py-lineno">1345</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">resp</tt><tt class="py-op">.</tt><tt class="py-name">status</tt> <tt class="py-op">&gt;=</tt> <tt class="py-number">300</tt><tt class="py-op">:</tt> </tt>
-<a name="L1346"></a><tt class="py-lineno">1346</tt>  <tt class="py-line">      <tt class="py-keyword">raise</tt> <tt id="link-245" class="py-name"><a title="googleapiclient.errors.HttpError" class="py-name" href="#" onclick="return doclink('link-245', 'HttpError', 'link-9');">HttpError</a></tt><tt class="py-op">(</tt><tt class="py-name">resp</tt><tt class="py-op">,</tt> <tt class="py-name">content</tt><tt class="py-op">,</tt> <tt class="py-name">uri</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_batch_uri</tt><tt class="py-op">)</tt> </tt>
-<a name="L1347"></a><tt class="py-lineno">1347</tt>  <tt class="py-line"> </tt>
-<a name="L1348"></a><tt class="py-lineno">1348</tt>  <tt class="py-line">    <tt class="py-comment"># Prepend with a content-type header so FeedParser can handle it.</tt> </tt>
-<a name="L1349"></a><tt class="py-lineno">1349</tt>  <tt class="py-line">    <tt class="py-name">header</tt> <tt class="py-op">=</tt> <tt class="py-string">'content-type: %s\r\n\r\n'</tt> <tt class="py-op">%</tt> <tt class="py-name">resp</tt><tt class="py-op">[</tt><tt class="py-string">'content-type'</tt><tt class="py-op">]</tt> </tt>
-<a name="L1350"></a><tt class="py-lineno">1350</tt>  <tt class="py-line">    <tt class="py-comment"># PY3's FeedParser only accepts unicode. So we should decode content</tt> </tt>
-<a name="L1351"></a><tt class="py-lineno">1351</tt>  <tt class="py-line">    <tt class="py-comment"># here, and encode each payload again.</tt> </tt>
-<a name="L1352"></a><tt class="py-lineno">1352</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">six</tt><tt class="py-op">.</tt><tt class="py-name">PY3</tt><tt class="py-op">:</tt> </tt>
-<a name="L1353"></a><tt class="py-lineno">1353</tt>  <tt class="py-line">      <tt class="py-name">content</tt> <tt class="py-op">=</tt> <tt class="py-name">content</tt><tt class="py-op">.</tt><tt class="py-name">decode</tt><tt class="py-op">(</tt><tt class="py-string">'utf-8'</tt><tt class="py-op">)</tt> </tt>
-<a name="L1354"></a><tt class="py-lineno">1354</tt>  <tt class="py-line">    <tt class="py-name">for_parser</tt> <tt class="py-op">=</tt> <tt class="py-name">header</tt> <tt class="py-op">+</tt> <tt class="py-name">content</tt> </tt>
-<a name="L1355"></a><tt class="py-lineno">1355</tt>  <tt class="py-line"> </tt>
-<a name="L1356"></a><tt class="py-lineno">1356</tt>  <tt class="py-line">    <tt class="py-name">parser</tt> <tt class="py-op">=</tt> <tt class="py-name">FeedParser</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-<a name="L1357"></a><tt class="py-lineno">1357</tt>  <tt class="py-line">    <tt class="py-name">parser</tt><tt class="py-op">.</tt><tt class="py-name">feed</tt><tt class="py-op">(</tt><tt class="py-name">for_parser</tt><tt class="py-op">)</tt> </tt>
-<a name="L1358"></a><tt class="py-lineno">1358</tt>  <tt class="py-line">    <tt class="py-name">mime_response</tt> <tt class="py-op">=</tt> <tt class="py-name">parser</tt><tt class="py-op">.</tt><tt class="py-name">close</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L1347"></a><tt class="py-lineno">1347</tt>  <tt class="py-line">                                 <tt class="py-name">headers</tt><tt class="py-op">=</tt><tt class="py-name">headers</tt><tt class="py-op">)</tt> </tt>
+<a name="L1348"></a><tt class="py-lineno">1348</tt>  <tt class="py-line"> </tt>
+<a name="L1349"></a><tt class="py-lineno">1349</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">resp</tt><tt class="py-op">.</tt><tt class="py-name">status</tt> <tt class="py-op">&gt;=</tt> <tt class="py-number">300</tt><tt class="py-op">:</tt> </tt>
+<a name="L1350"></a><tt class="py-lineno">1350</tt>  <tt class="py-line">      <tt class="py-keyword">raise</tt> <tt id="link-245" class="py-name"><a title="googleapiclient.errors.HttpError" class="py-name" href="#" onclick="return doclink('link-245', 'HttpError', 'link-9');">HttpError</a></tt><tt class="py-op">(</tt><tt class="py-name">resp</tt><tt class="py-op">,</tt> <tt class="py-name">content</tt><tt class="py-op">,</tt> <tt class="py-name">uri</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_batch_uri</tt><tt class="py-op">)</tt> </tt>
+<a name="L1351"></a><tt class="py-lineno">1351</tt>  <tt class="py-line"> </tt>
+<a name="L1352"></a><tt class="py-lineno">1352</tt>  <tt class="py-line">    <tt class="py-comment"># Prepend with a content-type header so FeedParser can handle it.</tt> </tt>
+<a name="L1353"></a><tt class="py-lineno">1353</tt>  <tt class="py-line">    <tt class="py-name">header</tt> <tt class="py-op">=</tt> <tt class="py-string">'content-type: %s\r\n\r\n'</tt> <tt class="py-op">%</tt> <tt class="py-name">resp</tt><tt class="py-op">[</tt><tt class="py-string">'content-type'</tt><tt class="py-op">]</tt> </tt>
+<a name="L1354"></a><tt class="py-lineno">1354</tt>  <tt class="py-line">    <tt class="py-comment"># PY3's FeedParser only accepts unicode. So we should decode content</tt> </tt>
+<a name="L1355"></a><tt class="py-lineno">1355</tt>  <tt class="py-line">    <tt class="py-comment"># here, and encode each payload again.</tt> </tt>
+<a name="L1356"></a><tt class="py-lineno">1356</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">six</tt><tt class="py-op">.</tt><tt class="py-name">PY3</tt><tt class="py-op">:</tt> </tt>
+<a name="L1357"></a><tt class="py-lineno">1357</tt>  <tt class="py-line">      <tt class="py-name">content</tt> <tt class="py-op">=</tt> <tt class="py-name">content</tt><tt class="py-op">.</tt><tt class="py-name">decode</tt><tt class="py-op">(</tt><tt class="py-string">'utf-8'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1358"></a><tt class="py-lineno">1358</tt>  <tt class="py-line">    <tt class="py-name">for_parser</tt> <tt class="py-op">=</tt> <tt class="py-name">header</tt> <tt class="py-op">+</tt> <tt class="py-name">content</tt> </tt>
 <a name="L1359"></a><tt class="py-lineno">1359</tt>  <tt class="py-line"> </tt>
-<a name="L1360"></a><tt class="py-lineno">1360</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">mime_response</tt><tt class="py-op">.</tt><tt class="py-name">is_multipart</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="L1361"></a><tt class="py-lineno">1361</tt>  <tt class="py-line">      <tt class="py-keyword">raise</tt> <tt id="link-246" class="py-name"><a title="googleapiclient.errors.BatchError" class="py-name" href="#" onclick="return doclink('link-246', 'BatchError', 'link-6');">BatchError</a></tt><tt class="py-op">(</tt><tt class="py-string">"Response not in multipart/mixed format."</tt><tt class="py-op">,</tt> <tt class="py-name">resp</tt><tt class="py-op">=</tt><tt class="py-name">resp</tt><tt class="py-op">,</tt> </tt>
-<a name="L1362"></a><tt class="py-lineno">1362</tt>  <tt class="py-line">                       <tt class="py-name">content</tt><tt class="py-op">=</tt><tt class="py-name">content</tt><tt class="py-op">)</tt> </tt>
+<a name="L1360"></a><tt class="py-lineno">1360</tt>  <tt class="py-line">    <tt class="py-name">parser</tt> <tt class="py-op">=</tt> <tt class="py-name">FeedParser</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L1361"></a><tt class="py-lineno">1361</tt>  <tt class="py-line">    <tt class="py-name">parser</tt><tt class="py-op">.</tt><tt class="py-name">feed</tt><tt class="py-op">(</tt><tt class="py-name">for_parser</tt><tt class="py-op">)</tt> </tt>
+<a name="L1362"></a><tt class="py-lineno">1362</tt>  <tt class="py-line">    <tt class="py-name">mime_response</tt> <tt class="py-op">=</tt> <tt class="py-name">parser</tt><tt class="py-op">.</tt><tt class="py-name">close</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
 <a name="L1363"></a><tt class="py-lineno">1363</tt>  <tt class="py-line"> </tt>
-<a name="L1364"></a><tt class="py-lineno">1364</tt>  <tt class="py-line">    <tt class="py-keyword">for</tt> <tt class="py-name">part</tt> <tt class="py-keyword">in</tt> <tt class="py-name">mime_response</tt><tt class="py-op">.</tt><tt class="py-name">get_payload</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="L1365"></a><tt class="py-lineno">1365</tt>  <tt class="py-line">      <tt class="py-name">request_id</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-247" class="py-name" targets="Method googleapiclient.http.BatchHttpRequest._header_to_id()=googleapiclient.http.BatchHttpRequest-class.html#_header_to_id"><a title="googleapiclient.http.BatchHttpRequest._header_to_id" class="py-name" href="#" onclick="return doclink('link-247', '_header_to_id', 'link-247');">_header_to_id</a></tt><tt class="py-op">(</tt><tt class="py-name">part</tt><tt class="py-op">[</tt><tt class="py-string">'Content-ID'</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
-<a name="L1366"></a><tt class="py-lineno">1366</tt>  <tt class="py-line">      <tt id="link-248" class="py-name" targets="Method googleapiclient.model.BaseModel.response()=googleapiclient.model.BaseModel-class.html#response,Method googleapiclient.model.Model.response()=googleapiclient.model.Model-class.html#response"><a title="googleapiclient.model.BaseModel.response
+<a name="L1364"></a><tt class="py-lineno">1364</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">mime_response</tt><tt class="py-op">.</tt><tt class="py-name">is_multipart</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L1365"></a><tt class="py-lineno">1365</tt>  <tt class="py-line">      <tt class="py-keyword">raise</tt> <tt id="link-246" class="py-name"><a title="googleapiclient.errors.BatchError" class="py-name" href="#" onclick="return doclink('link-246', 'BatchError', 'link-6');">BatchError</a></tt><tt class="py-op">(</tt><tt class="py-string">"Response not in multipart/mixed format."</tt><tt class="py-op">,</tt> <tt class="py-name">resp</tt><tt class="py-op">=</tt><tt class="py-name">resp</tt><tt class="py-op">,</tt> </tt>
+<a name="L1366"></a><tt class="py-lineno">1366</tt>  <tt class="py-line">                       <tt class="py-name">content</tt><tt class="py-op">=</tt><tt class="py-name">content</tt><tt class="py-op">)</tt> </tt>
+<a name="L1367"></a><tt class="py-lineno">1367</tt>  <tt class="py-line"> </tt>
+<a name="L1368"></a><tt class="py-lineno">1368</tt>  <tt class="py-line">    <tt class="py-keyword">for</tt> <tt class="py-name">part</tt> <tt class="py-keyword">in</tt> <tt class="py-name">mime_response</tt><tt class="py-op">.</tt><tt class="py-name">get_payload</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L1369"></a><tt class="py-lineno">1369</tt>  <tt class="py-line">      <tt class="py-name">request_id</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-247" class="py-name" targets="Method googleapiclient.http.BatchHttpRequest._header_to_id()=googleapiclient.http.BatchHttpRequest-class.html#_header_to_id"><a title="googleapiclient.http.BatchHttpRequest._header_to_id" class="py-name" href="#" onclick="return doclink('link-247', '_header_to_id', 'link-247');">_header_to_id</a></tt><tt class="py-op">(</tt><tt class="py-name">part</tt><tt class="py-op">[</tt><tt class="py-string">'Content-ID'</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L1370"></a><tt class="py-lineno">1370</tt>  <tt class="py-line">      <tt id="link-248" class="py-name" targets="Method googleapiclient.model.BaseModel.response()=googleapiclient.model.BaseModel-class.html#response,Method googleapiclient.model.Model.response()=googleapiclient.model.Model-class.html#response"><a title="googleapiclient.model.BaseModel.response
 googleapiclient.model.Model.response" class="py-name" href="#" onclick="return doclink('link-248', 'response', 'link-248');">response</a></tt><tt class="py-op">,</tt> <tt class="py-name">content</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-249" class="py-name" targets="Method googleapiclient.http.BatchHttpRequest._deserialize_response()=googleapiclient.http.BatchHttpRequest-class.html#_deserialize_response"><a title="googleapiclient.http.BatchHttpRequest._deserialize_response" class="py-name" href="#" onclick="return doclink('link-249', '_deserialize_response', 'link-249');">_deserialize_response</a></tt><tt class="py-op">(</tt><tt class="py-name">part</tt><tt class="py-op">.</tt><tt class="py-name">get_payload</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L1367"></a><tt class="py-lineno">1367</tt>  <tt class="py-line">      <tt class="py-comment"># We encode content here to emulate normal http response.</tt> </tt>
-<a name="L1368"></a><tt class="py-lineno">1368</tt>  <tt class="py-line">      <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">content</tt><tt class="py-op">,</tt> <tt class="py-name">six</tt><tt class="py-op">.</tt><tt class="py-name">text_type</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="L1369"></a><tt class="py-lineno">1369</tt>  <tt class="py-line">        <tt class="py-name">content</tt> <tt class="py-op">=</tt> <tt class="py-name">content</tt><tt class="py-op">.</tt><tt class="py-name">encode</tt><tt class="py-op">(</tt><tt class="py-string">'utf-8'</tt><tt class="py-op">)</tt> </tt>
-<a name="L1370"></a><tt class="py-lineno">1370</tt>  <tt class="py-line">      <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_responses</tt><tt class="py-op">[</tt><tt class="py-name">request_id</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt id="link-250" class="py-name"><a title="googleapiclient.model.BaseModel.response
+<a name="L1371"></a><tt class="py-lineno">1371</tt>  <tt class="py-line">      <tt class="py-comment"># We encode content here to emulate normal http response.</tt> </tt>
+<a name="L1372"></a><tt class="py-lineno">1372</tt>  <tt class="py-line">      <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">content</tt><tt class="py-op">,</tt> <tt class="py-name">six</tt><tt class="py-op">.</tt><tt class="py-name">text_type</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L1373"></a><tt class="py-lineno">1373</tt>  <tt class="py-line">        <tt class="py-name">content</tt> <tt class="py-op">=</tt> <tt class="py-name">content</tt><tt class="py-op">.</tt><tt class="py-name">encode</tt><tt class="py-op">(</tt><tt class="py-string">'utf-8'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1374"></a><tt class="py-lineno">1374</tt>  <tt class="py-line">      <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_responses</tt><tt class="py-op">[</tt><tt class="py-name">request_id</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt id="link-250" class="py-name"><a title="googleapiclient.model.BaseModel.response
 googleapiclient.model.Model.response" class="py-name" href="#" onclick="return doclink('link-250', 'response', 'link-248');">response</a></tt><tt class="py-op">,</tt> <tt class="py-name">content</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L1371"></a><tt class="py-lineno">1371</tt>  <tt class="py-line"> </tt>
-<a name="L1372"></a><tt class="py-lineno">1372</tt>  <tt class="py-line">  <tt class="py-decorator">@</tt><tt class="py-decorator">util</tt><tt class="py-op">.</tt><tt class="py-name">positional</tt><tt class="py-op">(</tt><tt class="py-number">1</tt><tt class="py-op">)</tt> </tt>
-<a name="BatchHttpRequest.execute"></a><div id="BatchHttpRequest.execute-def"><a name="L1373"></a><tt class="py-lineno">1373</tt> <a class="py-toggle" href="#" id="BatchHttpRequest.execute-toggle" onclick="return toggle('BatchHttpRequest.execute');">-</a><tt class="py-line">  <tt class="py-keyword">def</tt> <a class="py-def-name" href="googleapiclient.http.BatchHttpRequest-class.html#execute">execute</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">http</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="BatchHttpRequest.execute-collapsed" style="display:none;" pad="++++" indent="++++++"></div><div id="BatchHttpRequest.execute-expanded"><a name="L1374"></a><tt class="py-lineno">1374</tt>  <tt class="py-line">    <tt class="py-docstring">"""Execute all the requests as a single batched HTTP request.</tt> </tt>
-<a name="L1375"></a><tt class="py-lineno">1375</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L1376"></a><tt class="py-lineno">1376</tt>  <tt class="py-line"><tt class="py-docstring">    Args:</tt> </tt>
-<a name="L1377"></a><tt class="py-lineno">1377</tt>  <tt class="py-line"><tt class="py-docstring">      http: httplib2.Http, an http object to be used in place of the one the</tt> </tt>
-<a name="L1378"></a><tt class="py-lineno">1378</tt>  <tt class="py-line"><tt class="py-docstring">        HttpRequest request object was constructed with. If one isn't supplied</tt> </tt>
-<a name="L1379"></a><tt class="py-lineno">1379</tt>  <tt class="py-line"><tt class="py-docstring">        then use a http object from the requests in this batch.</tt> </tt>
-<a name="L1380"></a><tt class="py-lineno">1380</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L1381"></a><tt class="py-lineno">1381</tt>  <tt class="py-line"><tt class="py-docstring">    Returns:</tt> </tt>
-<a name="L1382"></a><tt class="py-lineno">1382</tt>  <tt class="py-line"><tt class="py-docstring">      None</tt> </tt>
-<a name="L1383"></a><tt class="py-lineno">1383</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L1384"></a><tt class="py-lineno">1384</tt>  <tt class="py-line"><tt class="py-docstring">    Raises:</tt> </tt>
-<a name="L1385"></a><tt class="py-lineno">1385</tt>  <tt class="py-line"><tt class="py-docstring">      httplib2.HttpLib2Error if a transport error has occured.</tt> </tt>
-<a name="L1386"></a><tt class="py-lineno">1386</tt>  <tt class="py-line"><tt class="py-docstring">      googleapiclient.errors.BatchError if the response is the wrong format.</tt> </tt>
-<a name="L1387"></a><tt class="py-lineno">1387</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
-<a name="L1388"></a><tt class="py-lineno">1388</tt>  <tt class="py-line">    <tt class="py-comment"># If we have no requests return</tt> </tt>
-<a name="L1389"></a><tt class="py-lineno">1389</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_order</tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <tt class="py-number">0</tt><tt class="py-op">:</tt> </tt>
-<a name="L1390"></a><tt class="py-lineno">1390</tt>  <tt class="py-line">      <tt class="py-keyword">return</tt> <tt class="py-name">None</tt> </tt>
-<a name="L1391"></a><tt class="py-lineno">1391</tt>  <tt class="py-line"> </tt>
-<a name="L1392"></a><tt class="py-lineno">1392</tt>  <tt class="py-line">    <tt class="py-comment"># If http is not supplied use the first valid one given in the requests.</tt> </tt>
-<a name="L1393"></a><tt class="py-lineno">1393</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt id="link-251" class="py-name"><a title="googleapiclient.http" class="py-name" href="#" onclick="return doclink('link-251', 'http', 'link-33');">http</a></tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
-<a name="L1394"></a><tt class="py-lineno">1394</tt>  <tt class="py-line">      <tt class="py-keyword">for</tt> <tt class="py-name">request_id</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_order</tt><tt class="py-op">:</tt> </tt>
-<a name="L1395"></a><tt class="py-lineno">1395</tt>  <tt class="py-line">        <tt id="link-252" class="py-name"><a title="googleapiclient.http.HttpMock.request
+</div><a name="L1375"></a><tt class="py-lineno">1375</tt>  <tt class="py-line"> </tt>
+<a name="L1376"></a><tt class="py-lineno">1376</tt>  <tt class="py-line">  <tt class="py-decorator">@</tt><tt class="py-decorator">util</tt><tt class="py-op">.</tt><tt class="py-name">positional</tt><tt class="py-op">(</tt><tt class="py-number">1</tt><tt class="py-op">)</tt> </tt>
+<a name="BatchHttpRequest.execute"></a><div id="BatchHttpRequest.execute-def"><a name="L1377"></a><tt class="py-lineno">1377</tt> <a class="py-toggle" href="#" id="BatchHttpRequest.execute-toggle" onclick="return toggle('BatchHttpRequest.execute');">-</a><tt class="py-line">  <tt class="py-keyword">def</tt> <a class="py-def-name" href="googleapiclient.http.BatchHttpRequest-class.html#execute">execute</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">http</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="BatchHttpRequest.execute-collapsed" style="display:none;" pad="++++" indent="++++++"></div><div id="BatchHttpRequest.execute-expanded"><a name="L1378"></a><tt class="py-lineno">1378</tt>  <tt class="py-line">    <tt class="py-docstring">"""Execute all the requests as a single batched HTTP request.</tt> </tt>
+<a name="L1379"></a><tt class="py-lineno">1379</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L1380"></a><tt class="py-lineno">1380</tt>  <tt class="py-line"><tt class="py-docstring">    Args:</tt> </tt>
+<a name="L1381"></a><tt class="py-lineno">1381</tt>  <tt class="py-line"><tt class="py-docstring">      http: httplib2.Http, an http object to be used in place of the one the</tt> </tt>
+<a name="L1382"></a><tt class="py-lineno">1382</tt>  <tt class="py-line"><tt class="py-docstring">        HttpRequest request object was constructed with. If one isn't supplied</tt> </tt>
+<a name="L1383"></a><tt class="py-lineno">1383</tt>  <tt class="py-line"><tt class="py-docstring">        then use a http object from the requests in this batch.</tt> </tt>
+<a name="L1384"></a><tt class="py-lineno">1384</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L1385"></a><tt class="py-lineno">1385</tt>  <tt class="py-line"><tt class="py-docstring">    Returns:</tt> </tt>
+<a name="L1386"></a><tt class="py-lineno">1386</tt>  <tt class="py-line"><tt class="py-docstring">      None</tt> </tt>
+<a name="L1387"></a><tt class="py-lineno">1387</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L1388"></a><tt class="py-lineno">1388</tt>  <tt class="py-line"><tt class="py-docstring">    Raises:</tt> </tt>
+<a name="L1389"></a><tt class="py-lineno">1389</tt>  <tt class="py-line"><tt class="py-docstring">      httplib2.HttpLib2Error if a transport error has occured.</tt> </tt>
+<a name="L1390"></a><tt class="py-lineno">1390</tt>  <tt class="py-line"><tt class="py-docstring">      googleapiclient.errors.BatchError if the response is the wrong format.</tt> </tt>
+<a name="L1391"></a><tt class="py-lineno">1391</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
+<a name="L1392"></a><tt class="py-lineno">1392</tt>  <tt class="py-line">    <tt class="py-comment"># If we have no requests return</tt> </tt>
+<a name="L1393"></a><tt class="py-lineno">1393</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_order</tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <tt class="py-number">0</tt><tt class="py-op">:</tt> </tt>
+<a name="L1394"></a><tt class="py-lineno">1394</tt>  <tt class="py-line">      <tt class="py-keyword">return</tt> <tt class="py-name">None</tt> </tt>
+<a name="L1395"></a><tt class="py-lineno">1395</tt>  <tt class="py-line"> </tt>
+<a name="L1396"></a><tt class="py-lineno">1396</tt>  <tt class="py-line">    <tt class="py-comment"># If http is not supplied use the first valid one given in the requests.</tt> </tt>
+<a name="L1397"></a><tt class="py-lineno">1397</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt id="link-251" class="py-name"><a title="googleapiclient.http" class="py-name" href="#" onclick="return doclink('link-251', 'http', 'link-33');">http</a></tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L1398"></a><tt class="py-lineno">1398</tt>  <tt class="py-line">      <tt class="py-keyword">for</tt> <tt class="py-name">request_id</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_order</tt><tt class="py-op">:</tt> </tt>
+<a name="L1399"></a><tt class="py-lineno">1399</tt>  <tt class="py-line">        <tt id="link-252" class="py-name"><a title="googleapiclient.http.HttpMock.request
 googleapiclient.http.HttpMockSequence.request
 googleapiclient.model.BaseModel.request
 googleapiclient.model.Model.request" class="py-name" href="#" onclick="return doclink('link-252', 'request', 'link-34');">request</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_requests</tt><tt class="py-op">[</tt><tt class="py-name">request_id</tt><tt class="py-op">]</tt> </tt>
-<a name="L1396"></a><tt class="py-lineno">1396</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt id="link-253" class="py-name"><a title="googleapiclient.http.HttpMock.request
+<a name="L1400"></a><tt class="py-lineno">1400</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt id="link-253" class="py-name"><a title="googleapiclient.http.HttpMock.request
 googleapiclient.http.HttpMockSequence.request
 googleapiclient.model.BaseModel.request
 googleapiclient.model.Model.request" class="py-name" href="#" onclick="return doclink('link-253', 'request', 'link-34');">request</a></tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
-<a name="L1397"></a><tt class="py-lineno">1397</tt>  <tt class="py-line">          <tt id="link-254" class="py-name"><a title="googleapiclient.http" class="py-name" href="#" onclick="return doclink('link-254', 'http', 'link-33');">http</a></tt> <tt class="py-op">=</tt> <tt id="link-255" class="py-name"><a title="googleapiclient.http.HttpMock.request
+<a name="L1401"></a><tt class="py-lineno">1401</tt>  <tt class="py-line">          <tt id="link-254" class="py-name"><a title="googleapiclient.http" class="py-name" href="#" onclick="return doclink('link-254', 'http', 'link-33');">http</a></tt> <tt class="py-op">=</tt> <tt id="link-255" class="py-name"><a title="googleapiclient.http.HttpMock.request
 googleapiclient.http.HttpMockSequence.request
 googleapiclient.model.BaseModel.request
 googleapiclient.model.Model.request" class="py-name" href="#" onclick="return doclink('link-255', 'request', 'link-34');">request</a></tt><tt class="py-op">.</tt><tt id="link-256" class="py-name"><a title="googleapiclient.http" class="py-name" href="#" onclick="return doclink('link-256', 'http', 'link-33');">http</a></tt> </tt>
-<a name="L1398"></a><tt class="py-lineno">1398</tt>  <tt class="py-line">          <tt class="py-keyword">break</tt> </tt>
-<a name="L1399"></a><tt class="py-lineno">1399</tt>  <tt class="py-line"> </tt>
-<a name="L1400"></a><tt class="py-lineno">1400</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt id="link-257" class="py-name"><a title="googleapiclient.http" class="py-name" href="#" onclick="return doclink('link-257', 'http', 'link-33');">http</a></tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
-<a name="L1401"></a><tt class="py-lineno">1401</tt>  <tt class="py-line">      <tt class="py-keyword">raise</tt> <tt class="py-name">ValueError</tt><tt class="py-op">(</tt><tt class="py-string">"Missing a valid http object."</tt><tt class="py-op">)</tt> </tt>
-<a name="L1402"></a><tt class="py-lineno">1402</tt>  <tt class="py-line"> </tt>
-<a name="L1403"></a><tt class="py-lineno">1403</tt>  <tt class="py-line">    <tt class="py-comment"># Special case for OAuth2Credentials-style objects which have not yet been</tt> </tt>
-<a name="L1404"></a><tt class="py-lineno">1404</tt>  <tt class="py-line">    <tt class="py-comment"># refreshed with an initial access_token.</tt> </tt>
-<a name="L1405"></a><tt class="py-lineno">1405</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">getattr</tt><tt class="py-op">(</tt><tt id="link-258" class="py-name"><a title="googleapiclient.http" class="py-name" href="#" onclick="return doclink('link-258', 'http', 'link-33');">http</a></tt><tt class="py-op">.</tt><tt id="link-259" class="py-name"><a title="googleapiclient.http.HttpMock.request
+<a name="L1402"></a><tt class="py-lineno">1402</tt>  <tt class="py-line">          <tt class="py-keyword">break</tt> </tt>
+<a name="L1403"></a><tt class="py-lineno">1403</tt>  <tt class="py-line"> </tt>
+<a name="L1404"></a><tt class="py-lineno">1404</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt id="link-257" class="py-name"><a title="googleapiclient.http" class="py-name" href="#" onclick="return doclink('link-257', 'http', 'link-33');">http</a></tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L1405"></a><tt class="py-lineno">1405</tt>  <tt class="py-line">      <tt class="py-keyword">raise</tt> <tt class="py-name">ValueError</tt><tt class="py-op">(</tt><tt class="py-string">"Missing a valid http object."</tt><tt class="py-op">)</tt> </tt>
+<a name="L1406"></a><tt class="py-lineno">1406</tt>  <tt class="py-line"> </tt>
+<a name="L1407"></a><tt class="py-lineno">1407</tt>  <tt class="py-line">    <tt class="py-comment"># Special case for OAuth2Credentials-style objects which have not yet been</tt> </tt>
+<a name="L1408"></a><tt class="py-lineno">1408</tt>  <tt class="py-line">    <tt class="py-comment"># refreshed with an initial access_token.</tt> </tt>
+<a name="L1409"></a><tt class="py-lineno">1409</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">getattr</tt><tt class="py-op">(</tt><tt id="link-258" class="py-name"><a title="googleapiclient.http" class="py-name" href="#" onclick="return doclink('link-258', 'http', 'link-33');">http</a></tt><tt class="py-op">.</tt><tt id="link-259" class="py-name"><a title="googleapiclient.http.HttpMock.request
 googleapiclient.http.HttpMockSequence.request
 googleapiclient.model.BaseModel.request
 googleapiclient.model.Model.request" class="py-name" href="#" onclick="return doclink('link-259', 'request', 'link-34');">request</a></tt><tt class="py-op">,</tt> <tt class="py-string">'credentials'</tt><tt class="py-op">,</tt> <tt class="py-name">None</tt><tt class="py-op">)</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
-<a name="L1406"></a><tt class="py-lineno">1406</tt>  <tt class="py-line">      <tt class="py-name">creds</tt> <tt class="py-op">=</tt> <tt id="link-260" class="py-name"><a title="googleapiclient.http" class="py-name" href="#" onclick="return doclink('link-260', 'http', 'link-33');">http</a></tt><tt class="py-op">.</tt><tt id="link-261" class="py-name"><a title="googleapiclient.http.HttpMock.request
+<a name="L1410"></a><tt class="py-lineno">1410</tt>  <tt class="py-line">      <tt class="py-name">creds</tt> <tt class="py-op">=</tt> <tt id="link-260" class="py-name"><a title="googleapiclient.http" class="py-name" href="#" onclick="return doclink('link-260', 'http', 'link-33');">http</a></tt><tt class="py-op">.</tt><tt id="link-261" class="py-name"><a title="googleapiclient.http.HttpMock.request
 googleapiclient.http.HttpMockSequence.request
 googleapiclient.model.BaseModel.request
 googleapiclient.model.Model.request" class="py-name" href="#" onclick="return doclink('link-261', 'request', 'link-34');">request</a></tt><tt class="py-op">.</tt><tt class="py-name">credentials</tt> </tt>
-<a name="L1407"></a><tt class="py-lineno">1407</tt>  <tt class="py-line">      <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">getattr</tt><tt class="py-op">(</tt><tt class="py-name">creds</tt><tt class="py-op">,</tt> <tt class="py-string">'access_token'</tt><tt class="py-op">,</tt> <tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="L1408"></a><tt class="py-lineno">1408</tt>  <tt class="py-line">        <tt id="link-262" class="py-name"><a title="googleapiclient.discovery_cache.LOGGER
+<a name="L1411"></a><tt class="py-lineno">1411</tt>  <tt class="py-line">      <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">getattr</tt><tt class="py-op">(</tt><tt class="py-name">creds</tt><tt class="py-op">,</tt> <tt class="py-string">'access_token'</tt><tt class="py-op">,</tt> <tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L1412"></a><tt class="py-lineno">1412</tt>  <tt class="py-line">        <tt id="link-262" class="py-name"><a title="googleapiclient.discovery_cache.LOGGER
 googleapiclient.discovery_cache.appengine_memcache.LOGGER
 googleapiclient.discovery_cache.file_cache.LOGGER
 googleapiclient.http.LOGGER
 googleapiclient.model.LOGGER" class="py-name" href="#" onclick="return doclink('link-262', 'LOGGER', 'link-25');">LOGGER</a></tt><tt class="py-op">.</tt><tt class="py-name">info</tt><tt class="py-op">(</tt><tt class="py-string">'Attempting refresh to obtain initial access_token'</tt><tt class="py-op">)</tt> </tt>
-<a name="L1409"></a><tt class="py-lineno">1409</tt>  <tt class="py-line">        <tt class="py-name">creds</tt><tt class="py-op">.</tt><tt class="py-name">refresh</tt><tt class="py-op">(</tt><tt id="link-263" class="py-name"><a title="googleapiclient.http" class="py-name" href="#" onclick="return doclink('link-263', 'http', 'link-33');">http</a></tt><tt class="py-op">)</tt> </tt>
-<a name="L1410"></a><tt class="py-lineno">1410</tt>  <tt class="py-line"> </tt>
-<a name="L1411"></a><tt class="py-lineno">1411</tt>  <tt class="py-line">    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-264" class="py-name" targets="Method googleapiclient.http.BatchHttpRequest._execute()=googleapiclient.http.BatchHttpRequest-class.html#_execute"><a title="googleapiclient.http.BatchHttpRequest._execute" class="py-name" href="#" onclick="return doclink('link-264', '_execute', 'link-264');">_execute</a></tt><tt class="py-op">(</tt><tt id="link-265" class="py-name"><a title="googleapiclient.http" class="py-name" href="#" onclick="return doclink('link-265', 'http', 'link-33');">http</a></tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_order</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_requests</tt><tt class="py-op">)</tt> </tt>
-<a name="L1412"></a><tt class="py-lineno">1412</tt>  <tt class="py-line"> </tt>
-<a name="L1413"></a><tt class="py-lineno">1413</tt>  <tt class="py-line">    <tt class="py-comment"># Loop over all the requests and check for 401s. For each 401 request the</tt> </tt>
-<a name="L1414"></a><tt class="py-lineno">1414</tt>  <tt class="py-line">    <tt class="py-comment"># credentials should be refreshed and then sent again in a separate batch.</tt> </tt>
-<a name="L1415"></a><tt class="py-lineno">1415</tt>  <tt class="py-line">    <tt class="py-name">redo_requests</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-op">}</tt> </tt>
-<a name="L1416"></a><tt class="py-lineno">1416</tt>  <tt class="py-line">    <tt class="py-name">redo_order</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
-<a name="L1417"></a><tt class="py-lineno">1417</tt>  <tt class="py-line"> </tt>
-<a name="L1418"></a><tt class="py-lineno">1418</tt>  <tt class="py-line">    <tt class="py-keyword">for</tt> <tt class="py-name">request_id</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_order</tt><tt class="py-op">:</tt> </tt>
-<a name="L1419"></a><tt class="py-lineno">1419</tt>  <tt class="py-line">      <tt class="py-name">resp</tt><tt class="py-op">,</tt> <tt class="py-name">content</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_responses</tt><tt class="py-op">[</tt><tt class="py-name">request_id</tt><tt class="py-op">]</tt> </tt>
-<a name="L1420"></a><tt class="py-lineno">1420</tt>  <tt class="py-line">      <tt class="py-keyword">if</tt> <tt class="py-name">resp</tt><tt class="py-op">[</tt><tt class="py-string">'status'</tt><tt class="py-op">]</tt> <tt class="py-op">==</tt> <tt class="py-string">'401'</tt><tt class="py-op">:</tt> </tt>
-<a name="L1421"></a><tt class="py-lineno">1421</tt>  <tt class="py-line">        <tt class="py-name">redo_order</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-name">request_id</tt><tt class="py-op">)</tt> </tt>
-<a name="L1422"></a><tt class="py-lineno">1422</tt>  <tt class="py-line">        <tt id="link-266" class="py-name"><a title="googleapiclient.http.HttpMock.request
+<a name="L1413"></a><tt class="py-lineno">1413</tt>  <tt class="py-line">        <tt class="py-name">creds</tt><tt class="py-op">.</tt><tt class="py-name">refresh</tt><tt class="py-op">(</tt><tt id="link-263" class="py-name"><a title="googleapiclient.http" class="py-name" href="#" onclick="return doclink('link-263', 'http', 'link-33');">http</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L1414"></a><tt class="py-lineno">1414</tt>  <tt class="py-line"> </tt>
+<a name="L1415"></a><tt class="py-lineno">1415</tt>  <tt class="py-line">    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-264" class="py-name" targets="Method googleapiclient.http.BatchHttpRequest._execute()=googleapiclient.http.BatchHttpRequest-class.html#_execute"><a title="googleapiclient.http.BatchHttpRequest._execute" class="py-name" href="#" onclick="return doclink('link-264', '_execute', 'link-264');">_execute</a></tt><tt class="py-op">(</tt><tt id="link-265" class="py-name"><a title="googleapiclient.http" class="py-name" href="#" onclick="return doclink('link-265', 'http', 'link-33');">http</a></tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_order</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_requests</tt><tt class="py-op">)</tt> </tt>
+<a name="L1416"></a><tt class="py-lineno">1416</tt>  <tt class="py-line"> </tt>
+<a name="L1417"></a><tt class="py-lineno">1417</tt>  <tt class="py-line">    <tt class="py-comment"># Loop over all the requests and check for 401s. For each 401 request the</tt> </tt>
+<a name="L1418"></a><tt class="py-lineno">1418</tt>  <tt class="py-line">    <tt class="py-comment"># credentials should be refreshed and then sent again in a separate batch.</tt> </tt>
+<a name="L1419"></a><tt class="py-lineno">1419</tt>  <tt class="py-line">    <tt class="py-name">redo_requests</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-op">}</tt> </tt>
+<a name="L1420"></a><tt class="py-lineno">1420</tt>  <tt class="py-line">    <tt class="py-name">redo_order</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
+<a name="L1421"></a><tt class="py-lineno">1421</tt>  <tt class="py-line"> </tt>
+<a name="L1422"></a><tt class="py-lineno">1422</tt>  <tt class="py-line">    <tt class="py-keyword">for</tt> <tt class="py-name">request_id</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_order</tt><tt class="py-op">:</tt> </tt>
+<a name="L1423"></a><tt class="py-lineno">1423</tt>  <tt class="py-line">      <tt class="py-name">resp</tt><tt class="py-op">,</tt> <tt class="py-name">content</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_responses</tt><tt class="py-op">[</tt><tt class="py-name">request_id</tt><tt class="py-op">]</tt> </tt>
+<a name="L1424"></a><tt class="py-lineno">1424</tt>  <tt class="py-line">      <tt class="py-keyword">if</tt> <tt class="py-name">resp</tt><tt class="py-op">[</tt><tt class="py-string">'status'</tt><tt class="py-op">]</tt> <tt class="py-op">==</tt> <tt class="py-string">'401'</tt><tt class="py-op">:</tt> </tt>
+<a name="L1425"></a><tt class="py-lineno">1425</tt>  <tt class="py-line">        <tt class="py-name">redo_order</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-name">request_id</tt><tt class="py-op">)</tt> </tt>
+<a name="L1426"></a><tt class="py-lineno">1426</tt>  <tt class="py-line">        <tt id="link-266" class="py-name"><a title="googleapiclient.http.HttpMock.request
 googleapiclient.http.HttpMockSequence.request
 googleapiclient.model.BaseModel.request
 googleapiclient.model.Model.request" class="py-name" href="#" onclick="return doclink('link-266', 'request', 'link-34');">request</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_requests</tt><tt class="py-op">[</tt><tt class="py-name">request_id</tt><tt class="py-op">]</tt> </tt>
-<a name="L1423"></a><tt class="py-lineno">1423</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-267" class="py-name" targets="Method googleapiclient.http.BatchHttpRequest._refresh_and_apply_credentials()=googleapiclient.http.BatchHttpRequest-class.html#_refresh_and_apply_credentials"><a title="googleapiclient.http.BatchHttpRequest._refresh_and_apply_credentials" class="py-name" href="#" onclick="return doclink('link-267', '_refresh_and_apply_credentials', 'link-267');">_refresh_and_apply_credentials</a></tt><tt class="py-op">(</tt><tt id="link-268" class="py-name"><a title="googleapiclient.http.HttpMock.request
+<a name="L1427"></a><tt class="py-lineno">1427</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-267" class="py-name" targets="Method googleapiclient.http.BatchHttpRequest._refresh_and_apply_credentials()=googleapiclient.http.BatchHttpRequest-class.html#_refresh_and_apply_credentials"><a title="googleapiclient.http.BatchHttpRequest._refresh_and_apply_credentials" class="py-name" href="#" onclick="return doclink('link-267', '_refresh_and_apply_credentials', 'link-267');">_refresh_and_apply_credentials</a></tt><tt class="py-op">(</tt><tt id="link-268" class="py-name"><a title="googleapiclient.http.HttpMock.request
 googleapiclient.http.HttpMockSequence.request
 googleapiclient.model.BaseModel.request
 googleapiclient.model.Model.request" class="py-name" href="#" onclick="return doclink('link-268', 'request', 'link-34');">request</a></tt><tt class="py-op">,</tt> <tt id="link-269" class="py-name"><a title="googleapiclient.http" class="py-name" href="#" onclick="return doclink('link-269', 'http', 'link-33');">http</a></tt><tt class="py-op">)</tt> </tt>
-<a name="L1424"></a><tt class="py-lineno">1424</tt>  <tt class="py-line">        <tt class="py-name">redo_requests</tt><tt class="py-op">[</tt><tt class="py-name">request_id</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt id="link-270" class="py-name"><a title="googleapiclient.http.HttpMock.request
+<a name="L1428"></a><tt class="py-lineno">1428</tt>  <tt class="py-line">        <tt class="py-name">redo_requests</tt><tt class="py-op">[</tt><tt class="py-name">request_id</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt id="link-270" class="py-name"><a title="googleapiclient.http.HttpMock.request
 googleapiclient.http.HttpMockSequence.request
 googleapiclient.model.BaseModel.request
 googleapiclient.model.Model.request" class="py-name" href="#" onclick="return doclink('link-270', 'request', 'link-34');">request</a></tt> </tt>
-<a name="L1425"></a><tt class="py-lineno">1425</tt>  <tt class="py-line"> </tt>
-<a name="L1426"></a><tt class="py-lineno">1426</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">redo_requests</tt><tt class="py-op">:</tt> </tt>
-<a name="L1427"></a><tt class="py-lineno">1427</tt>  <tt class="py-line">      <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-271" class="py-name"><a title="googleapiclient.http.BatchHttpRequest._execute" class="py-name" href="#" onclick="return doclink('link-271', '_execute', 'link-264');">_execute</a></tt><tt class="py-op">(</tt><tt id="link-272" class="py-name"><a title="googleapiclient.http" class="py-name" href="#" onclick="return doclink('link-272', 'http', 'link-33');">http</a></tt><tt class="py-op">,</tt> <tt class="py-name">redo_order</tt><tt class="py-op">,</tt> <tt class="py-name">redo_requests</tt><tt class="py-op">)</tt> </tt>
-<a name="L1428"></a><tt class="py-lineno">1428</tt>  <tt class="py-line"> </tt>
-<a name="L1429"></a><tt class="py-lineno">1429</tt>  <tt class="py-line">    <tt class="py-comment"># Now process all callbacks that are erroring, and raise an exception for</tt> </tt>
-<a name="L1430"></a><tt class="py-lineno">1430</tt>  <tt class="py-line">    <tt class="py-comment"># ones that return a non-2xx response? Or add extra parameter to callback</tt> </tt>
-<a name="L1431"></a><tt class="py-lineno">1431</tt>  <tt class="py-line">    <tt class="py-comment"># that contains an HttpError?</tt> </tt>
+<a name="L1429"></a><tt class="py-lineno">1429</tt>  <tt class="py-line"> </tt>
+<a name="L1430"></a><tt class="py-lineno">1430</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">redo_requests</tt><tt class="py-op">:</tt> </tt>
+<a name="L1431"></a><tt class="py-lineno">1431</tt>  <tt class="py-line">      <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-271" class="py-name"><a title="googleapiclient.http.BatchHttpRequest._execute" class="py-name" href="#" onclick="return doclink('link-271', '_execute', 'link-264');">_execute</a></tt><tt class="py-op">(</tt><tt id="link-272" class="py-name"><a title="googleapiclient.http" class="py-name" href="#" onclick="return doclink('link-272', 'http', 'link-33');">http</a></tt><tt class="py-op">,</tt> <tt class="py-name">redo_order</tt><tt class="py-op">,</tt> <tt class="py-name">redo_requests</tt><tt class="py-op">)</tt> </tt>
 <a name="L1432"></a><tt class="py-lineno">1432</tt>  <tt class="py-line"> </tt>
-<a name="L1433"></a><tt class="py-lineno">1433</tt>  <tt class="py-line">    <tt class="py-keyword">for</tt> <tt class="py-name">request_id</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_order</tt><tt class="py-op">:</tt> </tt>
-<a name="L1434"></a><tt class="py-lineno">1434</tt>  <tt class="py-line">      <tt class="py-name">resp</tt><tt class="py-op">,</tt> <tt class="py-name">content</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_responses</tt><tt class="py-op">[</tt><tt class="py-name">request_id</tt><tt class="py-op">]</tt> </tt>
-<a name="L1435"></a><tt class="py-lineno">1435</tt>  <tt class="py-line"> </tt>
-<a name="L1436"></a><tt class="py-lineno">1436</tt>  <tt class="py-line">      <tt id="link-273" class="py-name"><a title="googleapiclient.http.HttpMock.request
+<a name="L1433"></a><tt class="py-lineno">1433</tt>  <tt class="py-line">    <tt class="py-comment"># Now process all callbacks that are erroring, and raise an exception for</tt> </tt>
+<a name="L1434"></a><tt class="py-lineno">1434</tt>  <tt class="py-line">    <tt class="py-comment"># ones that return a non-2xx response? Or add extra parameter to callback</tt> </tt>
+<a name="L1435"></a><tt class="py-lineno">1435</tt>  <tt class="py-line">    <tt class="py-comment"># that contains an HttpError?</tt> </tt>
+<a name="L1436"></a><tt class="py-lineno">1436</tt>  <tt class="py-line"> </tt>
+<a name="L1437"></a><tt class="py-lineno">1437</tt>  <tt class="py-line">    <tt class="py-keyword">for</tt> <tt class="py-name">request_id</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_order</tt><tt class="py-op">:</tt> </tt>
+<a name="L1438"></a><tt class="py-lineno">1438</tt>  <tt class="py-line">      <tt class="py-name">resp</tt><tt class="py-op">,</tt> <tt class="py-name">content</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_responses</tt><tt class="py-op">[</tt><tt class="py-name">request_id</tt><tt class="py-op">]</tt> </tt>
+<a name="L1439"></a><tt class="py-lineno">1439</tt>  <tt class="py-line"> </tt>
+<a name="L1440"></a><tt class="py-lineno">1440</tt>  <tt class="py-line">      <tt id="link-273" class="py-name"><a title="googleapiclient.http.HttpMock.request
 googleapiclient.http.HttpMockSequence.request
 googleapiclient.model.BaseModel.request
 googleapiclient.model.Model.request" class="py-name" href="#" onclick="return doclink('link-273', 'request', 'link-34');">request</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_requests</tt><tt class="py-op">[</tt><tt class="py-name">request_id</tt><tt class="py-op">]</tt> </tt>
-<a name="L1437"></a><tt class="py-lineno">1437</tt>  <tt class="py-line">      <tt class="py-name">callback</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_callbacks</tt><tt class="py-op">[</tt><tt class="py-name">request_id</tt><tt class="py-op">]</tt> </tt>
-<a name="L1438"></a><tt class="py-lineno">1438</tt>  <tt class="py-line"> </tt>
-<a name="L1439"></a><tt class="py-lineno">1439</tt>  <tt class="py-line">      <tt id="link-274" class="py-name"><a title="googleapiclient.model.BaseModel.response
+<a name="L1441"></a><tt class="py-lineno">1441</tt>  <tt class="py-line">      <tt class="py-name">callback</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_callbacks</tt><tt class="py-op">[</tt><tt class="py-name">request_id</tt><tt class="py-op">]</tt> </tt>
+<a name="L1442"></a><tt class="py-lineno">1442</tt>  <tt class="py-line"> </tt>
+<a name="L1443"></a><tt class="py-lineno">1443</tt>  <tt class="py-line">      <tt id="link-274" class="py-name"><a title="googleapiclient.model.BaseModel.response
 googleapiclient.model.Model.response" class="py-name" href="#" onclick="return doclink('link-274', 'response', 'link-248');">response</a></tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
-<a name="L1440"></a><tt class="py-lineno">1440</tt>  <tt class="py-line">      <tt class="py-name">exception</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
-<a name="L1441"></a><tt class="py-lineno">1441</tt>  <tt class="py-line">      <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
-<a name="L1442"></a><tt class="py-lineno">1442</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">resp</tt><tt class="py-op">.</tt><tt class="py-name">status</tt> <tt class="py-op">&gt;=</tt> <tt class="py-number">300</tt><tt class="py-op">:</tt> </tt>
-<a name="L1443"></a><tt class="py-lineno">1443</tt>  <tt class="py-line">          <tt class="py-keyword">raise</tt> <tt id="link-275" class="py-name"><a title="googleapiclient.errors.HttpError" class="py-name" href="#" onclick="return doclink('link-275', 'HttpError', 'link-9');">HttpError</a></tt><tt class="py-op">(</tt><tt class="py-name">resp</tt><tt class="py-op">,</tt> <tt class="py-name">content</tt><tt class="py-op">,</tt> <tt class="py-name">uri</tt><tt class="py-op">=</tt><tt id="link-276" class="py-name"><a title="googleapiclient.http.HttpMock.request
+<a name="L1444"></a><tt class="py-lineno">1444</tt>  <tt class="py-line">      <tt class="py-name">exception</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
+<a name="L1445"></a><tt class="py-lineno">1445</tt>  <tt class="py-line">      <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
+<a name="L1446"></a><tt class="py-lineno">1446</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">resp</tt><tt class="py-op">.</tt><tt class="py-name">status</tt> <tt class="py-op">&gt;=</tt> <tt class="py-number">300</tt><tt class="py-op">:</tt> </tt>
+<a name="L1447"></a><tt class="py-lineno">1447</tt>  <tt class="py-line">          <tt class="py-keyword">raise</tt> <tt id="link-275" class="py-name"><a title="googleapiclient.errors.HttpError" class="py-name" href="#" onclick="return doclink('link-275', 'HttpError', 'link-9');">HttpError</a></tt><tt class="py-op">(</tt><tt class="py-name">resp</tt><tt class="py-op">,</tt> <tt class="py-name">content</tt><tt class="py-op">,</tt> <tt class="py-name">uri</tt><tt class="py-op">=</tt><tt id="link-276" class="py-name"><a title="googleapiclient.http.HttpMock.request
 googleapiclient.http.HttpMockSequence.request
 googleapiclient.model.BaseModel.request
 googleapiclient.model.Model.request" class="py-name" href="#" onclick="return doclink('link-276', 'request', 'link-34');">request</a></tt><tt class="py-op">.</tt><tt class="py-name">uri</tt><tt class="py-op">)</tt> </tt>
-<a name="L1444"></a><tt class="py-lineno">1444</tt>  <tt class="py-line">        <tt id="link-277" class="py-name"><a title="googleapiclient.model.BaseModel.response
+<a name="L1448"></a><tt class="py-lineno">1448</tt>  <tt class="py-line">        <tt id="link-277" class="py-name"><a title="googleapiclient.model.BaseModel.response
 googleapiclient.model.Model.response" class="py-name" href="#" onclick="return doclink('link-277', 'response', 'link-248');">response</a></tt> <tt class="py-op">=</tt> <tt id="link-278" class="py-name"><a title="googleapiclient.http.HttpMock.request
 googleapiclient.http.HttpMockSequence.request
 googleapiclient.model.BaseModel.request
 googleapiclient.model.Model.request" class="py-name" href="#" onclick="return doclink('link-278', 'request', 'link-34');">request</a></tt><tt class="py-op">.</tt><tt class="py-name">postproc</tt><tt class="py-op">(</tt><tt class="py-name">resp</tt><tt class="py-op">,</tt> <tt class="py-name">content</tt><tt class="py-op">)</tt> </tt>
-<a name="L1445"></a><tt class="py-lineno">1445</tt>  <tt class="py-line">      <tt class="py-keyword">except</tt> <tt id="link-279" class="py-name"><a title="googleapiclient.errors.HttpError" class="py-name" href="#" onclick="return doclink('link-279', 'HttpError', 'link-9');">HttpError</a></tt> <tt class="py-keyword">as</tt> <tt class="py-name">e</tt><tt class="py-op">:</tt> </tt>
-<a name="L1446"></a><tt class="py-lineno">1446</tt>  <tt class="py-line">        <tt class="py-name">exception</tt> <tt class="py-op">=</tt> <tt class="py-name">e</tt> </tt>
-<a name="L1447"></a><tt class="py-lineno">1447</tt>  <tt class="py-line"> </tt>
-<a name="L1448"></a><tt class="py-lineno">1448</tt>  <tt class="py-line">      <tt class="py-keyword">if</tt> <tt class="py-name">callback</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
-<a name="L1449"></a><tt class="py-lineno">1449</tt>  <tt class="py-line">        <tt class="py-name">callback</tt><tt class="py-op">(</tt><tt class="py-name">request_id</tt><tt class="py-op">,</tt> <tt id="link-280" class="py-name"><a title="googleapiclient.model.BaseModel.response
+<a name="L1449"></a><tt class="py-lineno">1449</tt>  <tt class="py-line">      <tt class="py-keyword">except</tt> <tt id="link-279" class="py-name"><a title="googleapiclient.errors.HttpError" class="py-name" href="#" onclick="return doclink('link-279', 'HttpError', 'link-9');">HttpError</a></tt> <tt class="py-keyword">as</tt> <tt class="py-name">e</tt><tt class="py-op">:</tt> </tt>
+<a name="L1450"></a><tt class="py-lineno">1450</tt>  <tt class="py-line">        <tt class="py-name">exception</tt> <tt class="py-op">=</tt> <tt class="py-name">e</tt> </tt>
+<a name="L1451"></a><tt class="py-lineno">1451</tt>  <tt class="py-line"> </tt>
+<a name="L1452"></a><tt class="py-lineno">1452</tt>  <tt class="py-line">      <tt class="py-keyword">if</tt> <tt class="py-name">callback</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L1453"></a><tt class="py-lineno">1453</tt>  <tt class="py-line">        <tt class="py-name">callback</tt><tt class="py-op">(</tt><tt class="py-name">request_id</tt><tt class="py-op">,</tt> <tt id="link-280" class="py-name"><a title="googleapiclient.model.BaseModel.response
 googleapiclient.model.Model.response" class="py-name" href="#" onclick="return doclink('link-280', 'response', 'link-248');">response</a></tt><tt class="py-op">,</tt> <tt class="py-name">exception</tt><tt class="py-op">)</tt> </tt>
-<a name="L1450"></a><tt class="py-lineno">1450</tt>  <tt class="py-line">      <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_callback</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
-<a name="L1451"></a><tt class="py-lineno">1451</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_callback</tt><tt class="py-op">(</tt><tt class="py-name">request_id</tt><tt class="py-op">,</tt> <tt id="link-281" class="py-name"><a title="googleapiclient.model.BaseModel.response
+<a name="L1454"></a><tt class="py-lineno">1454</tt>  <tt class="py-line">      <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_callback</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L1455"></a><tt class="py-lineno">1455</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_callback</tt><tt class="py-op">(</tt><tt class="py-name">request_id</tt><tt class="py-op">,</tt> <tt id="link-281" class="py-name"><a title="googleapiclient.model.BaseModel.response
 googleapiclient.model.Model.response" class="py-name" href="#" onclick="return doclink('link-281', 'response', 'link-248');">response</a></tt><tt class="py-op">,</tt> <tt class="py-name">exception</tt><tt class="py-op">)</tt> </tt>
-</div></div><a name="L1452"></a><tt class="py-lineno">1452</tt>  <tt class="py-line"> </tt>
-<a name="HttpRequestMock"></a><div id="HttpRequestMock-def"><a name="L1453"></a><tt class="py-lineno">1453</tt>  <tt class="py-line"> </tt>
-<a name="L1454"></a><tt class="py-lineno">1454</tt> <a class="py-toggle" href="#" id="HttpRequestMock-toggle" onclick="return toggle('HttpRequestMock');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="googleapiclient.http.HttpRequestMock-class.html">HttpRequestMock</a><tt class="py-op">(</tt><tt class="py-base-class">object</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="HttpRequestMock-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="HttpRequestMock-expanded"><a name="L1455"></a><tt class="py-lineno">1455</tt>  <tt class="py-line">  <tt class="py-docstring">"""Mock of HttpRequest.</tt> </tt>
-<a name="L1456"></a><tt class="py-lineno">1456</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L1457"></a><tt class="py-lineno">1457</tt>  <tt class="py-line"><tt class="py-docstring">  Do not construct directly, instead use RequestMockBuilder.</tt> </tt>
-<a name="L1458"></a><tt class="py-lineno">1458</tt>  <tt class="py-line"><tt class="py-docstring">  """</tt> </tt>
-<a name="L1459"></a><tt class="py-lineno">1459</tt>  <tt class="py-line"> </tt>
-<a name="HttpRequestMock.__init__"></a><div id="HttpRequestMock.__init__-def"><a name="L1460"></a><tt class="py-lineno">1460</tt> <a class="py-toggle" href="#" id="HttpRequestMock.__init__-toggle" onclick="return toggle('HttpRequestMock.__init__');">-</a><tt class="py-line">  <tt class="py-keyword">def</tt> <a class="py-def-name" href="googleapiclient.http.HttpRequestMock-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">resp</tt><tt class="py-op">,</tt> <tt class="py-param">content</tt><tt class="py-op">,</tt> <tt class="py-param">postproc</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="HttpRequestMock.__init__-collapsed" style="display:none;" pad="++++" indent="++++++"></div><div id="HttpRequestMock.__init__-expanded"><a name="L1461"></a><tt class="py-lineno">1461</tt>  <tt class="py-line">    <tt class="py-docstring">"""Constructor for HttpRequestMock</tt> </tt>
-<a name="L1462"></a><tt class="py-lineno">1462</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L1463"></a><tt class="py-lineno">1463</tt>  <tt class="py-line"><tt class="py-docstring">    Args:</tt> </tt>
-<a name="L1464"></a><tt class="py-lineno">1464</tt>  <tt class="py-line"><tt class="py-docstring">      resp: httplib2.Response, the response to emulate coming from the request</tt> </tt>
-<a name="L1465"></a><tt class="py-lineno">1465</tt>  <tt class="py-line"><tt class="py-docstring">      content: string, the response body</tt> </tt>
-<a name="L1466"></a><tt class="py-lineno">1466</tt>  <tt class="py-line"><tt class="py-docstring">      postproc: callable, the post processing function usually supplied by</tt> </tt>
-<a name="L1467"></a><tt class="py-lineno">1467</tt>  <tt class="py-line"><tt class="py-docstring">                the model class. See model.JsonModel.response() as an example.</tt> </tt>
-<a name="L1468"></a><tt class="py-lineno">1468</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
-<a name="L1469"></a><tt class="py-lineno">1469</tt>  <tt class="py-line">    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">resp</tt> <tt class="py-op">=</tt> <tt class="py-name">resp</tt> </tt>
-<a name="L1470"></a><tt class="py-lineno">1470</tt>  <tt class="py-line">    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">content</tt> <tt class="py-op">=</tt> <tt class="py-name">content</tt> </tt>
-<a name="L1471"></a><tt class="py-lineno">1471</tt>  <tt class="py-line">    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">postproc</tt> <tt class="py-op">=</tt> <tt class="py-name">postproc</tt> </tt>
-<a name="L1472"></a><tt class="py-lineno">1472</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">resp</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
-<a name="L1473"></a><tt class="py-lineno">1473</tt>  <tt class="py-line">      <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">resp</tt> <tt class="py-op">=</tt> <tt class="py-name">httplib2</tt><tt class="py-op">.</tt><tt class="py-name">Response</tt><tt class="py-op">(</tt><tt class="py-op">{</tt><tt class="py-string">'status'</tt><tt class="py-op">:</tt> <tt class="py-number">200</tt><tt class="py-op">,</tt> <tt class="py-string">'reason'</tt><tt class="py-op">:</tt> <tt class="py-string">'OK'</tt><tt class="py-op">}</tt><tt class="py-op">)</tt> </tt>
-<a name="L1474"></a><tt class="py-lineno">1474</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-string">'reason'</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">resp</tt><tt class="py-op">:</tt> </tt>
-<a name="L1475"></a><tt class="py-lineno">1475</tt>  <tt class="py-line">      <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">resp</tt><tt class="py-op">.</tt><tt class="py-name">reason</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">resp</tt><tt class="py-op">[</tt><tt class="py-string">'reason'</tt><tt class="py-op">]</tt> </tt>
-</div><a name="L1476"></a><tt class="py-lineno">1476</tt>  <tt class="py-line"> </tt>
-<a name="HttpRequestMock.execute"></a><div id="HttpRequestMock.execute-def"><a name="L1477"></a><tt class="py-lineno">1477</tt> <a class="py-toggle" href="#" id="HttpRequestMock.execute-toggle" onclick="return toggle('HttpRequestMock.execute');">-</a><tt class="py-line">  <tt class="py-keyword">def</tt> <a class="py-def-name" href="googleapiclient.http.HttpRequestMock-class.html#execute">execute</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">http</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="HttpRequestMock.execute-collapsed" style="display:none;" pad="++++" indent="++++++"></div><div id="HttpRequestMock.execute-expanded"><a name="L1478"></a><tt class="py-lineno">1478</tt>  <tt class="py-line">    <tt class="py-docstring">"""Execute the request.</tt> </tt>
-<a name="L1479"></a><tt class="py-lineno">1479</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L1480"></a><tt class="py-lineno">1480</tt>  <tt class="py-line"><tt class="py-docstring">    Same behavior as HttpRequest.execute(), but the response is</tt> </tt>
-<a name="L1481"></a><tt class="py-lineno">1481</tt>  <tt class="py-line"><tt class="py-docstring">    mocked and not really from an HTTP request/response.</tt> </tt>
-<a name="L1482"></a><tt class="py-lineno">1482</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
-<a name="L1483"></a><tt class="py-lineno">1483</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">postproc</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">resp</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">content</tt><tt class="py-op">)</tt> </tt>
-</div></div><a name="L1484"></a><tt class="py-lineno">1484</tt>  <tt class="py-line"> </tt>
-<a name="RequestMockBuilder"></a><div id="RequestMockBuilder-def"><a name="L1485"></a><tt class="py-lineno">1485</tt>  <tt class="py-line"> </tt>
-<a name="L1486"></a><tt class="py-lineno">1486</tt> <a class="py-toggle" href="#" id="RequestMockBuilder-toggle" onclick="return toggle('RequestMockBuilder');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="googleapiclient.http.RequestMockBuilder-class.html">RequestMockBuilder</a><tt class="py-op">(</tt><tt class="py-base-class">object</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="RequestMockBuilder-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="RequestMockBuilder-expanded"><a name="L1487"></a><tt class="py-lineno">1487</tt>  <tt class="py-line">  <tt class="py-docstring">"""A simple mock of HttpRequest</tt> </tt>
-<a name="L1488"></a><tt class="py-lineno">1488</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L1489"></a><tt class="py-lineno">1489</tt>  <tt class="py-line"><tt class="py-docstring">    Pass in a dictionary to the constructor that maps request methodIds to</tt> </tt>
-<a name="L1490"></a><tt class="py-lineno">1490</tt>  <tt class="py-line"><tt class="py-docstring">    tuples of (httplib2.Response, content, opt_expected_body) that should be</tt> </tt>
-<a name="L1491"></a><tt class="py-lineno">1491</tt>  <tt class="py-line"><tt class="py-docstring">    returned when that method is called. None may also be passed in for the</tt> </tt>
-<a name="L1492"></a><tt class="py-lineno">1492</tt>  <tt class="py-line"><tt class="py-docstring">    httplib2.Response, in which case a 200 OK response will be generated.</tt> </tt>
-<a name="L1493"></a><tt class="py-lineno">1493</tt>  <tt class="py-line"><tt class="py-docstring">    If an opt_expected_body (str or dict) is provided, it will be compared to</tt> </tt>
-<a name="L1494"></a><tt class="py-lineno">1494</tt>  <tt class="py-line"><tt class="py-docstring">    the body and UnexpectedBodyError will be raised on inequality.</tt> </tt>
-<a name="L1495"></a><tt class="py-lineno">1495</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L1496"></a><tt class="py-lineno">1496</tt>  <tt class="py-line"><tt class="py-docstring">    Example:</tt> </tt>
-<a name="L1497"></a><tt class="py-lineno">1497</tt>  <tt class="py-line"><tt class="py-docstring">      response = '{"data": {"id": "tag:google.c...'</tt> </tt>
-<a name="L1498"></a><tt class="py-lineno">1498</tt>  <tt class="py-line"><tt class="py-docstring">      requestBuilder = RequestMockBuilder(</tt> </tt>
-<a name="L1499"></a><tt class="py-lineno">1499</tt>  <tt class="py-line"><tt class="py-docstring">        {</tt> </tt>
-<a name="L1500"></a><tt class="py-lineno">1500</tt>  <tt class="py-line"><tt class="py-docstring">          'plus.activities.get': (None, response),</tt> </tt>
-<a name="L1501"></a><tt class="py-lineno">1501</tt>  <tt class="py-line"><tt class="py-docstring">        }</tt> </tt>
-<a name="L1502"></a><tt class="py-lineno">1502</tt>  <tt class="py-line"><tt class="py-docstring">      )</tt> </tt>
-<a name="L1503"></a><tt class="py-lineno">1503</tt>  <tt class="py-line"><tt class="py-docstring">      googleapiclient.discovery.build("plus", "v1", requestBuilder=requestBuilder)</tt> </tt>
-<a name="L1504"></a><tt class="py-lineno">1504</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L1505"></a><tt class="py-lineno">1505</tt>  <tt class="py-line"><tt class="py-docstring">    Methods that you do not supply a response for will return a</tt> </tt>
-<a name="L1506"></a><tt class="py-lineno">1506</tt>  <tt class="py-line"><tt class="py-docstring">    200 OK with an empty string as the response content or raise an excpetion</tt> </tt>
-<a name="L1507"></a><tt class="py-lineno">1507</tt>  <tt class="py-line"><tt class="py-docstring">    if check_unexpected is set to True. The methodId is taken from the rpcName</tt> </tt>
-<a name="L1508"></a><tt class="py-lineno">1508</tt>  <tt class="py-line"><tt class="py-docstring">    in the discovery document.</tt> </tt>
-<a name="L1509"></a><tt class="py-lineno">1509</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L1510"></a><tt class="py-lineno">1510</tt>  <tt class="py-line"><tt class="py-docstring">    For more details see the project wiki.</tt> </tt>
-<a name="L1511"></a><tt class="py-lineno">1511</tt>  <tt class="py-line"><tt class="py-docstring">  """</tt> </tt>
-<a name="L1512"></a><tt class="py-lineno">1512</tt>  <tt class="py-line"> </tt>
-<a name="RequestMockBuilder.__init__"></a><div id="RequestMockBuilder.__init__-def"><a name="L1513"></a><tt class="py-lineno">1513</tt> <a class="py-toggle" href="#" id="RequestMockBuilder.__init__-toggle" onclick="return toggle('RequestMockBuilder.__init__');">-</a><tt class="py-line">  <tt class="py-keyword">def</tt> <a class="py-def-name" href="googleapiclient.http.RequestMockBuilder-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">responses</tt><tt class="py-op">,</tt> <tt class="py-param">check_unexpected</tt><tt class="py-op">=</tt><tt class="py-name">False</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="RequestMockBuilder.__init__-collapsed" style="display:none;" pad="++++" indent="++++++"></div><div id="RequestMockBuilder.__init__-expanded"><a name="L1514"></a><tt class="py-lineno">1514</tt>  <tt class="py-line">    <tt class="py-docstring">"""Constructor for RequestMockBuilder</tt> </tt>
-<a name="L1515"></a><tt class="py-lineno">1515</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L1516"></a><tt class="py-lineno">1516</tt>  <tt class="py-line"><tt class="py-docstring">    The constructed object should be a callable object</tt> </tt>
-<a name="L1517"></a><tt class="py-lineno">1517</tt>  <tt class="py-line"><tt class="py-docstring">    that can replace the class HttpResponse.</tt> </tt>
-<a name="L1518"></a><tt class="py-lineno">1518</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L1519"></a><tt class="py-lineno">1519</tt>  <tt class="py-line"><tt class="py-docstring">    responses - A dictionary that maps methodIds into tuples</tt> </tt>
-<a name="L1520"></a><tt class="py-lineno">1520</tt>  <tt class="py-line"><tt class="py-docstring">                of (httplib2.Response, content). The methodId</tt> </tt>
-<a name="L1521"></a><tt class="py-lineno">1521</tt>  <tt class="py-line"><tt class="py-docstring">                comes from the 'rpcName' field in the discovery</tt> </tt>
-<a name="L1522"></a><tt class="py-lineno">1522</tt>  <tt class="py-line"><tt class="py-docstring">                document.</tt> </tt>
-<a name="L1523"></a><tt class="py-lineno">1523</tt>  <tt class="py-line"><tt class="py-docstring">    check_unexpected - A boolean setting whether or not UnexpectedMethodError</tt> </tt>
-<a name="L1524"></a><tt class="py-lineno">1524</tt>  <tt class="py-line"><tt class="py-docstring">                       should be raised on unsupplied method.</tt> </tt>
-<a name="L1525"></a><tt class="py-lineno">1525</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
-<a name="L1526"></a><tt class="py-lineno">1526</tt>  <tt class="py-line">    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">responses</tt> <tt class="py-op">=</tt> <tt class="py-name">responses</tt> </tt>
-<a name="L1527"></a><tt class="py-lineno">1527</tt>  <tt class="py-line">    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">check_unexpected</tt> <tt class="py-op">=</tt> <tt class="py-name">check_unexpected</tt> </tt>
-</div><a name="L1528"></a><tt class="py-lineno">1528</tt>  <tt class="py-line"> </tt>
-<a name="RequestMockBuilder.__call__"></a><div id="RequestMockBuilder.__call__-def"><a name="L1529"></a><tt class="py-lineno">1529</tt> <a class="py-toggle" href="#" id="RequestMockBuilder.__call__-toggle" onclick="return toggle('RequestMockBuilder.__call__');">-</a><tt class="py-line">  <tt class="py-keyword">def</tt> <a class="py-def-name" href="googleapiclient.http.RequestMockBuilder-class.html#__call__">__call__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">http</tt><tt class="py-op">,</tt> <tt class="py-param">postproc</tt><tt class="py-op">,</tt> <tt class="py-param">uri</tt><tt class="py-op">,</tt> <tt class="py-param">method</tt><tt class="py-op">=</tt><tt class="py-string">'GET'</tt><tt class="py-op">,</tt> <tt class="py-param">body</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> </tt>
-<a name="L1530"></a><tt class="py-lineno">1530</tt>  <tt class="py-line">               <tt class="py-param">headers</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-param">methodId</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-param">resumable</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="RequestMockBuilder.__call__-collapsed" style="display:none;" pad="++++" indent="++++++"></div><div id="RequestMockBuilder.__call__-expanded"><a name="L1531"></a><tt class="py-lineno">1531</tt>  <tt class="py-line">    <tt class="py-docstring">"""Implements the callable interface that discovery.build() expects</tt> </tt>
-<a name="L1532"></a><tt class="py-lineno">1532</tt>  <tt class="py-line"><tt class="py-docstring">    of requestBuilder, which is to build an object compatible with</tt> </tt>
-<a name="L1533"></a><tt class="py-lineno">1533</tt>  <tt class="py-line"><tt class="py-docstring">    HttpRequest.execute(). See that method for the description of the</tt> </tt>
-<a name="L1534"></a><tt class="py-lineno">1534</tt>  <tt class="py-line"><tt class="py-docstring">    parameters and the expected response.</tt> </tt>
-<a name="L1535"></a><tt class="py-lineno">1535</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
-<a name="L1536"></a><tt class="py-lineno">1536</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">methodId</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">responses</tt><tt class="py-op">:</tt> </tt>
-<a name="L1537"></a><tt class="py-lineno">1537</tt>  <tt class="py-line">      <tt id="link-282" class="py-name"><a title="googleapiclient.model.BaseModel.response
+</div></div><a name="L1456"></a><tt class="py-lineno">1456</tt>  <tt class="py-line"> </tt>
+<a name="HttpRequestMock"></a><div id="HttpRequestMock-def"><a name="L1457"></a><tt class="py-lineno">1457</tt>  <tt class="py-line"> </tt>
+<a name="L1458"></a><tt class="py-lineno">1458</tt> <a class="py-toggle" href="#" id="HttpRequestMock-toggle" onclick="return toggle('HttpRequestMock');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="googleapiclient.http.HttpRequestMock-class.html">HttpRequestMock</a><tt class="py-op">(</tt><tt class="py-base-class">object</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="HttpRequestMock-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="HttpRequestMock-expanded"><a name="L1459"></a><tt class="py-lineno">1459</tt>  <tt class="py-line">  <tt class="py-docstring">"""Mock of HttpRequest.</tt> </tt>
+<a name="L1460"></a><tt class="py-lineno">1460</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L1461"></a><tt class="py-lineno">1461</tt>  <tt class="py-line"><tt class="py-docstring">  Do not construct directly, instead use RequestMockBuilder.</tt> </tt>
+<a name="L1462"></a><tt class="py-lineno">1462</tt>  <tt class="py-line"><tt class="py-docstring">  """</tt> </tt>
+<a name="L1463"></a><tt class="py-lineno">1463</tt>  <tt class="py-line"> </tt>
+<a name="HttpRequestMock.__init__"></a><div id="HttpRequestMock.__init__-def"><a name="L1464"></a><tt class="py-lineno">1464</tt> <a class="py-toggle" href="#" id="HttpRequestMock.__init__-toggle" onclick="return toggle('HttpRequestMock.__init__');">-</a><tt class="py-line">  <tt class="py-keyword">def</tt> <a class="py-def-name" href="googleapiclient.http.HttpRequestMock-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">resp</tt><tt class="py-op">,</tt> <tt class="py-param">content</tt><tt class="py-op">,</tt> <tt class="py-param">postproc</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="HttpRequestMock.__init__-collapsed" style="display:none;" pad="++++" indent="++++++"></div><div id="HttpRequestMock.__init__-expanded"><a name="L1465"></a><tt class="py-lineno">1465</tt>  <tt class="py-line">    <tt class="py-docstring">"""Constructor for HttpRequestMock</tt> </tt>
+<a name="L1466"></a><tt class="py-lineno">1466</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L1467"></a><tt class="py-lineno">1467</tt>  <tt class="py-line"><tt class="py-docstring">    Args:</tt> </tt>
+<a name="L1468"></a><tt class="py-lineno">1468</tt>  <tt class="py-line"><tt class="py-docstring">      resp: httplib2.Response, the response to emulate coming from the request</tt> </tt>
+<a name="L1469"></a><tt class="py-lineno">1469</tt>  <tt class="py-line"><tt class="py-docstring">      content: string, the response body</tt> </tt>
+<a name="L1470"></a><tt class="py-lineno">1470</tt>  <tt class="py-line"><tt class="py-docstring">      postproc: callable, the post processing function usually supplied by</tt> </tt>
+<a name="L1471"></a><tt class="py-lineno">1471</tt>  <tt class="py-line"><tt class="py-docstring">                the model class. See model.JsonModel.response() as an example.</tt> </tt>
+<a name="L1472"></a><tt class="py-lineno">1472</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
+<a name="L1473"></a><tt class="py-lineno">1473</tt>  <tt class="py-line">    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">resp</tt> <tt class="py-op">=</tt> <tt class="py-name">resp</tt> </tt>
+<a name="L1474"></a><tt class="py-lineno">1474</tt>  <tt class="py-line">    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">content</tt> <tt class="py-op">=</tt> <tt class="py-name">content</tt> </tt>
+<a name="L1475"></a><tt class="py-lineno">1475</tt>  <tt class="py-line">    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">postproc</tt> <tt class="py-op">=</tt> <tt class="py-name">postproc</tt> </tt>
+<a name="L1476"></a><tt class="py-lineno">1476</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">resp</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L1477"></a><tt class="py-lineno">1477</tt>  <tt class="py-line">      <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">resp</tt> <tt class="py-op">=</tt> <tt class="py-name">httplib2</tt><tt class="py-op">.</tt><tt class="py-name">Response</tt><tt class="py-op">(</tt><tt class="py-op">{</tt><tt class="py-string">'status'</tt><tt class="py-op">:</tt> <tt class="py-number">200</tt><tt class="py-op">,</tt> <tt class="py-string">'reason'</tt><tt class="py-op">:</tt> <tt class="py-string">'OK'</tt><tt class="py-op">}</tt><tt class="py-op">)</tt> </tt>
+<a name="L1478"></a><tt class="py-lineno">1478</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-string">'reason'</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">resp</tt><tt class="py-op">:</tt> </tt>
+<a name="L1479"></a><tt class="py-lineno">1479</tt>  <tt class="py-line">      <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">resp</tt><tt class="py-op">.</tt><tt class="py-name">reason</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">resp</tt><tt class="py-op">[</tt><tt class="py-string">'reason'</tt><tt class="py-op">]</tt> </tt>
+</div><a name="L1480"></a><tt class="py-lineno">1480</tt>  <tt class="py-line"> </tt>
+<a name="HttpRequestMock.execute"></a><div id="HttpRequestMock.execute-def"><a name="L1481"></a><tt class="py-lineno">1481</tt> <a class="py-toggle" href="#" id="HttpRequestMock.execute-toggle" onclick="return toggle('HttpRequestMock.execute');">-</a><tt class="py-line">  <tt class="py-keyword">def</tt> <a class="py-def-name" href="googleapiclient.http.HttpRequestMock-class.html#execute">execute</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">http</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="HttpRequestMock.execute-collapsed" style="display:none;" pad="++++" indent="++++++"></div><div id="HttpRequestMock.execute-expanded"><a name="L1482"></a><tt class="py-lineno">1482</tt>  <tt class="py-line">    <tt class="py-docstring">"""Execute the request.</tt> </tt>
+<a name="L1483"></a><tt class="py-lineno">1483</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L1484"></a><tt class="py-lineno">1484</tt>  <tt class="py-line"><tt class="py-docstring">    Same behavior as HttpRequest.execute(), but the response is</tt> </tt>
+<a name="L1485"></a><tt class="py-lineno">1485</tt>  <tt class="py-line"><tt class="py-docstring">    mocked and not really from an HTTP request/response.</tt> </tt>
+<a name="L1486"></a><tt class="py-lineno">1486</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
+<a name="L1487"></a><tt class="py-lineno">1487</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">postproc</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">resp</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">content</tt><tt class="py-op">)</tt> </tt>
+</div></div><a name="L1488"></a><tt class="py-lineno">1488</tt>  <tt class="py-line"> </tt>
+<a name="RequestMockBuilder"></a><div id="RequestMockBuilder-def"><a name="L1489"></a><tt class="py-lineno">1489</tt>  <tt class="py-line"> </tt>
+<a name="L1490"></a><tt class="py-lineno">1490</tt> <a class="py-toggle" href="#" id="RequestMockBuilder-toggle" onclick="return toggle('RequestMockBuilder');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="googleapiclient.http.RequestMockBuilder-class.html">RequestMockBuilder</a><tt class="py-op">(</tt><tt class="py-base-class">object</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="RequestMockBuilder-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="RequestMockBuilder-expanded"><a name="L1491"></a><tt class="py-lineno">1491</tt>  <tt class="py-line">  <tt class="py-docstring">"""A simple mock of HttpRequest</tt> </tt>
+<a name="L1492"></a><tt class="py-lineno">1492</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L1493"></a><tt class="py-lineno">1493</tt>  <tt class="py-line"><tt class="py-docstring">    Pass in a dictionary to the constructor that maps request methodIds to</tt> </tt>
+<a name="L1494"></a><tt class="py-lineno">1494</tt>  <tt class="py-line"><tt class="py-docstring">    tuples of (httplib2.Response, content, opt_expected_body) that should be</tt> </tt>
+<a name="L1495"></a><tt class="py-lineno">1495</tt>  <tt class="py-line"><tt class="py-docstring">    returned when that method is called. None may also be passed in for the</tt> </tt>
+<a name="L1496"></a><tt class="py-lineno">1496</tt>  <tt class="py-line"><tt class="py-docstring">    httplib2.Response, in which case a 200 OK response will be generated.</tt> </tt>
+<a name="L1497"></a><tt class="py-lineno">1497</tt>  <tt class="py-line"><tt class="py-docstring">    If an opt_expected_body (str or dict) is provided, it will be compared to</tt> </tt>
+<a name="L1498"></a><tt class="py-lineno">1498</tt>  <tt class="py-line"><tt class="py-docstring">    the body and UnexpectedBodyError will be raised on inequality.</tt> </tt>
+<a name="L1499"></a><tt class="py-lineno">1499</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L1500"></a><tt class="py-lineno">1500</tt>  <tt class="py-line"><tt class="py-docstring">    Example:</tt> </tt>
+<a name="L1501"></a><tt class="py-lineno">1501</tt>  <tt class="py-line"><tt class="py-docstring">      response = '{"data": {"id": "tag:google.c...'</tt> </tt>
+<a name="L1502"></a><tt class="py-lineno">1502</tt>  <tt class="py-line"><tt class="py-docstring">      requestBuilder = RequestMockBuilder(</tt> </tt>
+<a name="L1503"></a><tt class="py-lineno">1503</tt>  <tt class="py-line"><tt class="py-docstring">        {</tt> </tt>
+<a name="L1504"></a><tt class="py-lineno">1504</tt>  <tt class="py-line"><tt class="py-docstring">          'plus.activities.get': (None, response),</tt> </tt>
+<a name="L1505"></a><tt class="py-lineno">1505</tt>  <tt class="py-line"><tt class="py-docstring">        }</tt> </tt>
+<a name="L1506"></a><tt class="py-lineno">1506</tt>  <tt class="py-line"><tt class="py-docstring">      )</tt> </tt>
+<a name="L1507"></a><tt class="py-lineno">1507</tt>  <tt class="py-line"><tt class="py-docstring">      googleapiclient.discovery.build("plus", "v1", requestBuilder=requestBuilder)</tt> </tt>
+<a name="L1508"></a><tt class="py-lineno">1508</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L1509"></a><tt class="py-lineno">1509</tt>  <tt class="py-line"><tt class="py-docstring">    Methods that you do not supply a response for will return a</tt> </tt>
+<a name="L1510"></a><tt class="py-lineno">1510</tt>  <tt class="py-line"><tt class="py-docstring">    200 OK with an empty string as the response content or raise an excpetion</tt> </tt>
+<a name="L1511"></a><tt class="py-lineno">1511</tt>  <tt class="py-line"><tt class="py-docstring">    if check_unexpected is set to True. The methodId is taken from the rpcName</tt> </tt>
+<a name="L1512"></a><tt class="py-lineno">1512</tt>  <tt class="py-line"><tt class="py-docstring">    in the discovery document.</tt> </tt>
+<a name="L1513"></a><tt class="py-lineno">1513</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L1514"></a><tt class="py-lineno">1514</tt>  <tt class="py-line"><tt class="py-docstring">    For more details see the project wiki.</tt> </tt>
+<a name="L1515"></a><tt class="py-lineno">1515</tt>  <tt class="py-line"><tt class="py-docstring">  """</tt> </tt>
+<a name="L1516"></a><tt class="py-lineno">1516</tt>  <tt class="py-line"> </tt>
+<a name="RequestMockBuilder.__init__"></a><div id="RequestMockBuilder.__init__-def"><a name="L1517"></a><tt class="py-lineno">1517</tt> <a class="py-toggle" href="#" id="RequestMockBuilder.__init__-toggle" onclick="return toggle('RequestMockBuilder.__init__');">-</a><tt class="py-line">  <tt class="py-keyword">def</tt> <a class="py-def-name" href="googleapiclient.http.RequestMockBuilder-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">responses</tt><tt class="py-op">,</tt> <tt class="py-param">check_unexpected</tt><tt class="py-op">=</tt><tt class="py-name">False</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="RequestMockBuilder.__init__-collapsed" style="display:none;" pad="++++" indent="++++++"></div><div id="RequestMockBuilder.__init__-expanded"><a name="L1518"></a><tt class="py-lineno">1518</tt>  <tt class="py-line">    <tt class="py-docstring">"""Constructor for RequestMockBuilder</tt> </tt>
+<a name="L1519"></a><tt class="py-lineno">1519</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L1520"></a><tt class="py-lineno">1520</tt>  <tt class="py-line"><tt class="py-docstring">    The constructed object should be a callable object</tt> </tt>
+<a name="L1521"></a><tt class="py-lineno">1521</tt>  <tt class="py-line"><tt class="py-docstring">    that can replace the class HttpResponse.</tt> </tt>
+<a name="L1522"></a><tt class="py-lineno">1522</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L1523"></a><tt class="py-lineno">1523</tt>  <tt class="py-line"><tt class="py-docstring">    responses - A dictionary that maps methodIds into tuples</tt> </tt>
+<a name="L1524"></a><tt class="py-lineno">1524</tt>  <tt class="py-line"><tt class="py-docstring">                of (httplib2.Response, content). The methodId</tt> </tt>
+<a name="L1525"></a><tt class="py-lineno">1525</tt>  <tt class="py-line"><tt class="py-docstring">                comes from the 'rpcName' field in the discovery</tt> </tt>
+<a name="L1526"></a><tt class="py-lineno">1526</tt>  <tt class="py-line"><tt class="py-docstring">                document.</tt> </tt>
+<a name="L1527"></a><tt class="py-lineno">1527</tt>  <tt class="py-line"><tt class="py-docstring">    check_unexpected - A boolean setting whether or not UnexpectedMethodError</tt> </tt>
+<a name="L1528"></a><tt class="py-lineno">1528</tt>  <tt class="py-line"><tt class="py-docstring">                       should be raised on unsupplied method.</tt> </tt>
+<a name="L1529"></a><tt class="py-lineno">1529</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
+<a name="L1530"></a><tt class="py-lineno">1530</tt>  <tt class="py-line">    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">responses</tt> <tt class="py-op">=</tt> <tt class="py-name">responses</tt> </tt>
+<a name="L1531"></a><tt class="py-lineno">1531</tt>  <tt class="py-line">    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">check_unexpected</tt> <tt class="py-op">=</tt> <tt class="py-name">check_unexpected</tt> </tt>
+</div><a name="L1532"></a><tt class="py-lineno">1532</tt>  <tt class="py-line"> </tt>
+<a name="RequestMockBuilder.__call__"></a><div id="RequestMockBuilder.__call__-def"><a name="L1533"></a><tt class="py-lineno">1533</tt> <a class="py-toggle" href="#" id="RequestMockBuilder.__call__-toggle" onclick="return toggle('RequestMockBuilder.__call__');">-</a><tt class="py-line">  <tt class="py-keyword">def</tt> <a class="py-def-name" href="googleapiclient.http.RequestMockBuilder-class.html#__call__">__call__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">http</tt><tt class="py-op">,</tt> <tt class="py-param">postproc</tt><tt class="py-op">,</tt> <tt class="py-param">uri</tt><tt class="py-op">,</tt> <tt class="py-param">method</tt><tt class="py-op">=</tt><tt class="py-string">'GET'</tt><tt class="py-op">,</tt> <tt class="py-param">body</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> </tt>
+<a name="L1534"></a><tt class="py-lineno">1534</tt>  <tt class="py-line">               <tt class="py-param">headers</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-param">methodId</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-param">resumable</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="RequestMockBuilder.__call__-collapsed" style="display:none;" pad="++++" indent="++++++"></div><div id="RequestMockBuilder.__call__-expanded"><a name="L1535"></a><tt class="py-lineno">1535</tt>  <tt class="py-line">    <tt class="py-docstring">"""Implements the callable interface that discovery.build() expects</tt> </tt>
+<a name="L1536"></a><tt class="py-lineno">1536</tt>  <tt class="py-line"><tt class="py-docstring">    of requestBuilder, which is to build an object compatible with</tt> </tt>
+<a name="L1537"></a><tt class="py-lineno">1537</tt>  <tt class="py-line"><tt class="py-docstring">    HttpRequest.execute(). See that method for the description of the</tt> </tt>
+<a name="L1538"></a><tt class="py-lineno">1538</tt>  <tt class="py-line"><tt class="py-docstring">    parameters and the expected response.</tt> </tt>
+<a name="L1539"></a><tt class="py-lineno">1539</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
+<a name="L1540"></a><tt class="py-lineno">1540</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">methodId</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">responses</tt><tt class="py-op">:</tt> </tt>
+<a name="L1541"></a><tt class="py-lineno">1541</tt>  <tt class="py-line">      <tt id="link-282" class="py-name"><a title="googleapiclient.model.BaseModel.response
 googleapiclient.model.Model.response" class="py-name" href="#" onclick="return doclink('link-282', 'response', 'link-248');">response</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">responses</tt><tt class="py-op">[</tt><tt class="py-name">methodId</tt><tt class="py-op">]</tt> </tt>
-<a name="L1538"></a><tt class="py-lineno">1538</tt>  <tt class="py-line">      <tt class="py-name">resp</tt><tt class="py-op">,</tt> <tt class="py-name">content</tt> <tt class="py-op">=</tt> <tt id="link-283" class="py-name"><a title="googleapiclient.model.BaseModel.response
+<a name="L1542"></a><tt class="py-lineno">1542</tt>  <tt class="py-line">      <tt class="py-name">resp</tt><tt class="py-op">,</tt> <tt class="py-name">content</tt> <tt class="py-op">=</tt> <tt id="link-283" class="py-name"><a title="googleapiclient.model.BaseModel.response
 googleapiclient.model.Model.response" class="py-name" href="#" onclick="return doclink('link-283', 'response', 'link-248');">response</a></tt><tt class="py-op">[</tt><tt class="py-op">:</tt><tt class="py-number">2</tt><tt class="py-op">]</tt> </tt>
-<a name="L1539"></a><tt class="py-lineno">1539</tt>  <tt class="py-line">      <tt class="py-keyword">if</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt id="link-284" class="py-name"><a title="googleapiclient.model.BaseModel.response
+<a name="L1543"></a><tt class="py-lineno">1543</tt>  <tt class="py-line">      <tt class="py-keyword">if</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt id="link-284" class="py-name"><a title="googleapiclient.model.BaseModel.response
 googleapiclient.model.Model.response" class="py-name" href="#" onclick="return doclink('link-284', 'response', 'link-248');">response</a></tt><tt class="py-op">)</tt> <tt class="py-op">&gt;</tt> <tt class="py-number">2</tt><tt class="py-op">:</tt> </tt>
-<a name="L1540"></a><tt class="py-lineno">1540</tt>  <tt class="py-line">        <tt class="py-comment"># Test the body against the supplied expected_body.</tt> </tt>
-<a name="L1541"></a><tt class="py-lineno">1541</tt>  <tt class="py-line">        <tt class="py-name">expected_body</tt> <tt class="py-op">=</tt> <tt id="link-285" class="py-name"><a title="googleapiclient.model.BaseModel.response
+<a name="L1544"></a><tt class="py-lineno">1544</tt>  <tt class="py-line">        <tt class="py-comment"># Test the body against the supplied expected_body.</tt> </tt>
+<a name="L1545"></a><tt class="py-lineno">1545</tt>  <tt class="py-line">        <tt class="py-name">expected_body</tt> <tt class="py-op">=</tt> <tt id="link-285" class="py-name"><a title="googleapiclient.model.BaseModel.response
 googleapiclient.model.Model.response" class="py-name" href="#" onclick="return doclink('link-285', 'response', 'link-248');">response</a></tt><tt class="py-op">[</tt><tt class="py-number">2</tt><tt class="py-op">]</tt> </tt>
-<a name="L1542"></a><tt class="py-lineno">1542</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">bool</tt><tt class="py-op">(</tt><tt class="py-name">expected_body</tt><tt class="py-op">)</tt> <tt class="py-op">!=</tt> <tt class="py-name">bool</tt><tt class="py-op">(</tt><tt id="link-286" class="py-name"><a title="googleapiclient.channel.Channel.body" class="py-name" href="#" onclick="return doclink('link-286', 'body', 'link-69');">body</a></tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="L1543"></a><tt class="py-lineno">1543</tt>  <tt class="py-line">          <tt class="py-comment"># Not expecting a body and provided one</tt> </tt>
-<a name="L1544"></a><tt class="py-lineno">1544</tt>  <tt class="py-line">          <tt class="py-comment"># or expecting a body and not provided one.</tt> </tt>
-<a name="L1545"></a><tt class="py-lineno">1545</tt>  <tt class="py-line">          <tt class="py-keyword">raise</tt> <tt id="link-287" class="py-name"><a title="googleapiclient.errors.UnexpectedBodyError" class="py-name" href="#" onclick="return doclink('link-287', 'UnexpectedBodyError', 'link-18');">UnexpectedBodyError</a></tt><tt class="py-op">(</tt><tt class="py-name">expected_body</tt><tt class="py-op">,</tt> <tt id="link-288" class="py-name"><a title="googleapiclient.channel.Channel.body" class="py-name" href="#" onclick="return doclink('link-288', 'body', 'link-69');">body</a></tt><tt class="py-op">)</tt> </tt>
-<a name="L1546"></a><tt class="py-lineno">1546</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">expected_body</tt><tt class="py-op">,</tt> <tt class="py-name">str</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="L1547"></a><tt class="py-lineno">1547</tt>  <tt class="py-line">          <tt class="py-name">expected_body</tt> <tt class="py-op">=</tt> <tt class="py-name">json</tt><tt class="py-op">.</tt><tt class="py-name">loads</tt><tt class="py-op">(</tt><tt class="py-name">expected_body</tt><tt class="py-op">)</tt> </tt>
-<a name="L1548"></a><tt class="py-lineno">1548</tt>  <tt class="py-line">        <tt id="link-289" class="py-name"><a title="googleapiclient.channel.Channel.body" class="py-name" href="#" onclick="return doclink('link-289', 'body', 'link-69');">body</a></tt> <tt class="py-op">=</tt> <tt class="py-name">json</tt><tt class="py-op">.</tt><tt class="py-name">loads</tt><tt class="py-op">(</tt><tt id="link-290" class="py-name"><a title="googleapiclient.channel.Channel.body" class="py-name" href="#" onclick="return doclink('link-290', 'body', 'link-69');">body</a></tt><tt class="py-op">)</tt> </tt>
-<a name="L1549"></a><tt class="py-lineno">1549</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt id="link-291" class="py-name"><a title="googleapiclient.channel.Channel.body" class="py-name" href="#" onclick="return doclink('link-291', 'body', 'link-69');">body</a></tt> <tt class="py-op">!=</tt> <tt class="py-name">expected_body</tt><tt class="py-op">:</tt> </tt>
-<a name="L1550"></a><tt class="py-lineno">1550</tt>  <tt class="py-line">          <tt class="py-keyword">raise</tt> <tt id="link-292" class="py-name"><a title="googleapiclient.errors.UnexpectedBodyError" class="py-name" href="#" onclick="return doclink('link-292', 'UnexpectedBodyError', 'link-18');">UnexpectedBodyError</a></tt><tt class="py-op">(</tt><tt class="py-name">expected_body</tt><tt class="py-op">,</tt> <tt id="link-293" class="py-name"><a title="googleapiclient.channel.Channel.body" class="py-name" href="#" onclick="return doclink('link-293', 'body', 'link-69');">body</a></tt><tt class="py-op">)</tt> </tt>
-<a name="L1551"></a><tt class="py-lineno">1551</tt>  <tt class="py-line">      <tt class="py-keyword">return</tt> <tt id="link-294" class="py-name" targets="Class googleapiclient.http.HttpRequestMock=googleapiclient.http.HttpRequestMock-class.html"><a title="googleapiclient.http.HttpRequestMock" class="py-name" href="#" onclick="return doclink('link-294', 'HttpRequestMock', 'link-294');">HttpRequestMock</a></tt><tt class="py-op">(</tt><tt class="py-name">resp</tt><tt class="py-op">,</tt> <tt class="py-name">content</tt><tt class="py-op">,</tt> <tt class="py-name">postproc</tt><tt class="py-op">)</tt> </tt>
-<a name="L1552"></a><tt class="py-lineno">1552</tt>  <tt class="py-line">    <tt class="py-keyword">elif</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">check_unexpected</tt><tt class="py-op">:</tt> </tt>
-<a name="L1553"></a><tt class="py-lineno">1553</tt>  <tt class="py-line">      <tt class="py-keyword">raise</tt> <tt id="link-295" class="py-name"><a title="googleapiclient.errors.UnexpectedMethodError" class="py-name" href="#" onclick="return doclink('link-295', 'UnexpectedMethodError', 'link-21');">UnexpectedMethodError</a></tt><tt class="py-op">(</tt><tt class="py-name">methodId</tt><tt class="py-op">=</tt><tt class="py-name">methodId</tt><tt class="py-op">)</tt> </tt>
-<a name="L1554"></a><tt class="py-lineno">1554</tt>  <tt class="py-line">    <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
-<a name="L1555"></a><tt class="py-lineno">1555</tt>  <tt class="py-line">      <tt id="link-296" class="py-name"><a title="googleapiclient.model" class="py-name" href="#" onclick="return doclink('link-296', 'model', 'link-23');">model</a></tt> <tt class="py-op">=</tt> <tt id="link-297" class="py-name"><a title="googleapiclient.model.JsonModel" class="py-name" href="#" onclick="return doclink('link-297', 'JsonModel', 'link-24');">JsonModel</a></tt><tt class="py-op">(</tt><tt class="py-name">False</tt><tt class="py-op">)</tt> </tt>
-<a name="L1556"></a><tt class="py-lineno">1556</tt>  <tt class="py-line">      <tt class="py-keyword">return</tt> <tt id="link-298" class="py-name"><a title="googleapiclient.http.HttpRequestMock" class="py-name" href="#" onclick="return doclink('link-298', 'HttpRequestMock', 'link-294');">HttpRequestMock</a></tt><tt class="py-op">(</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-string">'{}'</tt><tt class="py-op">,</tt> <tt id="link-299" class="py-name"><a title="googleapiclient.model" class="py-name" href="#" onclick="return doclink('link-299', 'model', 'link-23');">model</a></tt><tt class="py-op">.</tt><tt id="link-300" class="py-name"><a title="googleapiclient.model.BaseModel.response
+<a name="L1546"></a><tt class="py-lineno">1546</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">bool</tt><tt class="py-op">(</tt><tt class="py-name">expected_body</tt><tt class="py-op">)</tt> <tt class="py-op">!=</tt> <tt class="py-name">bool</tt><tt class="py-op">(</tt><tt id="link-286" class="py-name"><a title="googleapiclient.channel.Channel.body" class="py-name" href="#" onclick="return doclink('link-286', 'body', 'link-69');">body</a></tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L1547"></a><tt class="py-lineno">1547</tt>  <tt class="py-line">          <tt class="py-comment"># Not expecting a body and provided one</tt> </tt>
+<a name="L1548"></a><tt class="py-lineno">1548</tt>  <tt class="py-line">          <tt class="py-comment"># or expecting a body and not provided one.</tt> </tt>
+<a name="L1549"></a><tt class="py-lineno">1549</tt>  <tt class="py-line">          <tt class="py-keyword">raise</tt> <tt id="link-287" class="py-name"><a title="googleapiclient.errors.UnexpectedBodyError" class="py-name" href="#" onclick="return doclink('link-287', 'UnexpectedBodyError', 'link-18');">UnexpectedBodyError</a></tt><tt class="py-op">(</tt><tt class="py-name">expected_body</tt><tt class="py-op">,</tt> <tt id="link-288" class="py-name"><a title="googleapiclient.channel.Channel.body" class="py-name" href="#" onclick="return doclink('link-288', 'body', 'link-69');">body</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L1550"></a><tt class="py-lineno">1550</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">expected_body</tt><tt class="py-op">,</tt> <tt class="py-name">str</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L1551"></a><tt class="py-lineno">1551</tt>  <tt class="py-line">          <tt class="py-name">expected_body</tt> <tt class="py-op">=</tt> <tt class="py-name">json</tt><tt class="py-op">.</tt><tt class="py-name">loads</tt><tt class="py-op">(</tt><tt class="py-name">expected_body</tt><tt class="py-op">)</tt> </tt>
+<a name="L1552"></a><tt class="py-lineno">1552</tt>  <tt class="py-line">        <tt id="link-289" class="py-name"><a title="googleapiclient.channel.Channel.body" class="py-name" href="#" onclick="return doclink('link-289', 'body', 'link-69');">body</a></tt> <tt class="py-op">=</tt> <tt class="py-name">json</tt><tt class="py-op">.</tt><tt class="py-name">loads</tt><tt class="py-op">(</tt><tt id="link-290" class="py-name"><a title="googleapiclient.channel.Channel.body" class="py-name" href="#" onclick="return doclink('link-290', 'body', 'link-69');">body</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L1553"></a><tt class="py-lineno">1553</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt id="link-291" class="py-name"><a title="googleapiclient.channel.Channel.body" class="py-name" href="#" onclick="return doclink('link-291', 'body', 'link-69');">body</a></tt> <tt class="py-op">!=</tt> <tt class="py-name">expected_body</tt><tt class="py-op">:</tt> </tt>
+<a name="L1554"></a><tt class="py-lineno">1554</tt>  <tt class="py-line">          <tt class="py-keyword">raise</tt> <tt id="link-292" class="py-name"><a title="googleapiclient.errors.UnexpectedBodyError" class="py-name" href="#" onclick="return doclink('link-292', 'UnexpectedBodyError', 'link-18');">UnexpectedBodyError</a></tt><tt class="py-op">(</tt><tt class="py-name">expected_body</tt><tt class="py-op">,</tt> <tt id="link-293" class="py-name"><a title="googleapiclient.channel.Channel.body" class="py-name" href="#" onclick="return doclink('link-293', 'body', 'link-69');">body</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L1555"></a><tt class="py-lineno">1555</tt>  <tt class="py-line">      <tt class="py-keyword">return</tt> <tt id="link-294" class="py-name" targets="Class googleapiclient.http.HttpRequestMock=googleapiclient.http.HttpRequestMock-class.html"><a title="googleapiclient.http.HttpRequestMock" class="py-name" href="#" onclick="return doclink('link-294', 'HttpRequestMock', 'link-294');">HttpRequestMock</a></tt><tt class="py-op">(</tt><tt class="py-name">resp</tt><tt class="py-op">,</tt> <tt class="py-name">content</tt><tt class="py-op">,</tt> <tt class="py-name">postproc</tt><tt class="py-op">)</tt> </tt>
+<a name="L1556"></a><tt class="py-lineno">1556</tt>  <tt class="py-line">    <tt class="py-keyword">elif</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">check_unexpected</tt><tt class="py-op">:</tt> </tt>
+<a name="L1557"></a><tt class="py-lineno">1557</tt>  <tt class="py-line">      <tt class="py-keyword">raise</tt> <tt id="link-295" class="py-name"><a title="googleapiclient.errors.UnexpectedMethodError" class="py-name" href="#" onclick="return doclink('link-295', 'UnexpectedMethodError', 'link-21');">UnexpectedMethodError</a></tt><tt class="py-op">(</tt><tt class="py-name">methodId</tt><tt class="py-op">=</tt><tt class="py-name">methodId</tt><tt class="py-op">)</tt> </tt>
+<a name="L1558"></a><tt class="py-lineno">1558</tt>  <tt class="py-line">    <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L1559"></a><tt class="py-lineno">1559</tt>  <tt class="py-line">      <tt id="link-296" class="py-name"><a title="googleapiclient.model" class="py-name" href="#" onclick="return doclink('link-296', 'model', 'link-23');">model</a></tt> <tt class="py-op">=</tt> <tt id="link-297" class="py-name"><a title="googleapiclient.model.JsonModel" class="py-name" href="#" onclick="return doclink('link-297', 'JsonModel', 'link-24');">JsonModel</a></tt><tt class="py-op">(</tt><tt class="py-name">False</tt><tt class="py-op">)</tt> </tt>
+<a name="L1560"></a><tt class="py-lineno">1560</tt>  <tt class="py-line">      <tt class="py-keyword">return</tt> <tt id="link-298" class="py-name"><a title="googleapiclient.http.HttpRequestMock" class="py-name" href="#" onclick="return doclink('link-298', 'HttpRequestMock', 'link-294');">HttpRequestMock</a></tt><tt class="py-op">(</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-string">'{}'</tt><tt class="py-op">,</tt> <tt id="link-299" class="py-name"><a title="googleapiclient.model" class="py-name" href="#" onclick="return doclink('link-299', 'model', 'link-23');">model</a></tt><tt class="py-op">.</tt><tt id="link-300" class="py-name"><a title="googleapiclient.model.BaseModel.response
 googleapiclient.model.Model.response" class="py-name" href="#" onclick="return doclink('link-300', 'response', 'link-248');">response</a></tt><tt class="py-op">)</tt> </tt>
-</div></div><a name="L1557"></a><tt class="py-lineno">1557</tt>  <tt class="py-line"> </tt>
-<a name="HttpMock"></a><div id="HttpMock-def"><a name="L1558"></a><tt class="py-lineno">1558</tt>  <tt class="py-line"> </tt>
-<a name="L1559"></a><tt class="py-lineno">1559</tt> <a class="py-toggle" href="#" id="HttpMock-toggle" onclick="return toggle('HttpMock');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="googleapiclient.http.HttpMock-class.html">HttpMock</a><tt class="py-op">(</tt><tt class="py-base-class">object</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="HttpMock-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="HttpMock-expanded"><a name="L1560"></a><tt class="py-lineno">1560</tt>  <tt class="py-line">  <tt class="py-docstring">"""Mock of httplib2.Http"""</tt> </tt>
-<a name="L1561"></a><tt class="py-lineno">1561</tt>  <tt class="py-line"> </tt>
-<a name="HttpMock.__init__"></a><div id="HttpMock.__init__-def"><a name="L1562"></a><tt class="py-lineno">1562</tt> <a class="py-toggle" href="#" id="HttpMock.__init__-toggle" onclick="return toggle('HttpMock.__init__');">-</a><tt class="py-line">  <tt class="py-keyword">def</tt> <a class="py-def-name" href="googleapiclient.http.HttpMock-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">filename</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-param">headers</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="HttpMock.__init__-collapsed" style="display:none;" pad="++++" indent="++++++"></div><div id="HttpMock.__init__-expanded"><a name="L1563"></a><tt class="py-lineno">1563</tt>  <tt class="py-line">    <tt class="py-docstring">"""</tt> </tt>
-<a name="L1564"></a><tt class="py-lineno">1564</tt>  <tt class="py-line"><tt class="py-docstring">    Args:</tt> </tt>
-<a name="L1565"></a><tt class="py-lineno">1565</tt>  <tt class="py-line"><tt class="py-docstring">      filename: string, absolute filename to read response from</tt> </tt>
-<a name="L1566"></a><tt class="py-lineno">1566</tt>  <tt class="py-line"><tt class="py-docstring">      headers: dict, header to return with response</tt> </tt>
-<a name="L1567"></a><tt class="py-lineno">1567</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
-<a name="L1568"></a><tt class="py-lineno">1568</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">headers</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
-<a name="L1569"></a><tt class="py-lineno">1569</tt>  <tt class="py-line">      <tt class="py-name">headers</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-string">'status'</tt><tt class="py-op">:</tt> <tt class="py-string">'200'</tt><tt class="py-op">}</tt> </tt>
-<a name="L1570"></a><tt class="py-lineno">1570</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">filename</tt><tt class="py-op">:</tt> </tt>
-<a name="L1571"></a><tt class="py-lineno">1571</tt>  <tt class="py-line">      <tt class="py-name">f</tt> <tt class="py-op">=</tt> <tt class="py-name">open</tt><tt class="py-op">(</tt><tt class="py-name">filename</tt><tt class="py-op">,</tt> <tt class="py-string">'rb'</tt><tt class="py-op">)</tt> </tt>
-<a name="L1572"></a><tt class="py-lineno">1572</tt>  <tt class="py-line">      <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">data</tt> <tt class="py-op">=</tt> <tt class="py-name">f</tt><tt class="py-op">.</tt><tt id="link-301" class="py-name"><a title="googleapiclient.http._StreamSlice.read" class="py-name" href="#" onclick="return doclink('link-301', 'read', 'link-50');">read</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-<a name="L1573"></a><tt class="py-lineno">1573</tt>  <tt class="py-line">      <tt class="py-name">f</tt><tt class="py-op">.</tt><tt class="py-name">close</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-<a name="L1574"></a><tt class="py-lineno">1574</tt>  <tt class="py-line">    <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
-<a name="L1575"></a><tt class="py-lineno">1575</tt>  <tt class="py-line">      <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">data</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
-<a name="L1576"></a><tt class="py-lineno">1576</tt>  <tt class="py-line">    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">response_headers</tt> <tt class="py-op">=</tt> <tt class="py-name">headers</tt> </tt>
-<a name="L1577"></a><tt class="py-lineno">1577</tt>  <tt class="py-line">    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">headers</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
-<a name="L1578"></a><tt class="py-lineno">1578</tt>  <tt class="py-line">    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">uri</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
-<a name="L1579"></a><tt class="py-lineno">1579</tt>  <tt class="py-line">    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">method</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
-<a name="L1580"></a><tt class="py-lineno">1580</tt>  <tt class="py-line">    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-302" class="py-name"><a title="googleapiclient.channel.Channel.body" class="py-name" href="#" onclick="return doclink('link-302', 'body', 'link-69');">body</a></tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
+</div></div><a name="L1561"></a><tt class="py-lineno">1561</tt>  <tt class="py-line"> </tt>
+<a name="HttpMock"></a><div id="HttpMock-def"><a name="L1562"></a><tt class="py-lineno">1562</tt>  <tt class="py-line"> </tt>
+<a name="L1563"></a><tt class="py-lineno">1563</tt> <a class="py-toggle" href="#" id="HttpMock-toggle" onclick="return toggle('HttpMock');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="googleapiclient.http.HttpMock-class.html">HttpMock</a><tt class="py-op">(</tt><tt class="py-base-class">object</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="HttpMock-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="HttpMock-expanded"><a name="L1564"></a><tt class="py-lineno">1564</tt>  <tt class="py-line">  <tt class="py-docstring">"""Mock of httplib2.Http"""</tt> </tt>
+<a name="L1565"></a><tt class="py-lineno">1565</tt>  <tt class="py-line"> </tt>
+<a name="HttpMock.__init__"></a><div id="HttpMock.__init__-def"><a name="L1566"></a><tt class="py-lineno">1566</tt> <a class="py-toggle" href="#" id="HttpMock.__init__-toggle" onclick="return toggle('HttpMock.__init__');">-</a><tt class="py-line">  <tt class="py-keyword">def</tt> <a class="py-def-name" href="googleapiclient.http.HttpMock-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">filename</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-param">headers</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="HttpMock.__init__-collapsed" style="display:none;" pad="++++" indent="++++++"></div><div id="HttpMock.__init__-expanded"><a name="L1567"></a><tt class="py-lineno">1567</tt>  <tt class="py-line">    <tt class="py-docstring">"""</tt> </tt>
+<a name="L1568"></a><tt class="py-lineno">1568</tt>  <tt class="py-line"><tt class="py-docstring">    Args:</tt> </tt>
+<a name="L1569"></a><tt class="py-lineno">1569</tt>  <tt class="py-line"><tt class="py-docstring">      filename: string, absolute filename to read response from</tt> </tt>
+<a name="L1570"></a><tt class="py-lineno">1570</tt>  <tt class="py-line"><tt class="py-docstring">      headers: dict, header to return with response</tt> </tt>
+<a name="L1571"></a><tt class="py-lineno">1571</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
+<a name="L1572"></a><tt class="py-lineno">1572</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">headers</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L1573"></a><tt class="py-lineno">1573</tt>  <tt class="py-line">      <tt class="py-name">headers</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-string">'status'</tt><tt class="py-op">:</tt> <tt class="py-string">'200'</tt><tt class="py-op">}</tt> </tt>
+<a name="L1574"></a><tt class="py-lineno">1574</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">filename</tt><tt class="py-op">:</tt> </tt>
+<a name="L1575"></a><tt class="py-lineno">1575</tt>  <tt class="py-line">      <tt class="py-name">f</tt> <tt class="py-op">=</tt> <tt class="py-name">open</tt><tt class="py-op">(</tt><tt class="py-name">filename</tt><tt class="py-op">,</tt> <tt class="py-string">'rb'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1576"></a><tt class="py-lineno">1576</tt>  <tt class="py-line">      <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">data</tt> <tt class="py-op">=</tt> <tt class="py-name">f</tt><tt class="py-op">.</tt><tt id="link-301" class="py-name"><a title="googleapiclient.http._StreamSlice.read" class="py-name" href="#" onclick="return doclink('link-301', 'read', 'link-50');">read</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L1577"></a><tt class="py-lineno">1577</tt>  <tt class="py-line">      <tt class="py-name">f</tt><tt class="py-op">.</tt><tt class="py-name">close</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L1578"></a><tt class="py-lineno">1578</tt>  <tt class="py-line">    <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L1579"></a><tt class="py-lineno">1579</tt>  <tt class="py-line">      <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">data</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
+<a name="L1580"></a><tt class="py-lineno">1580</tt>  <tt class="py-line">    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">response_headers</tt> <tt class="py-op">=</tt> <tt class="py-name">headers</tt> </tt>
 <a name="L1581"></a><tt class="py-lineno">1581</tt>  <tt class="py-line">    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">headers</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
-</div><a name="L1582"></a><tt class="py-lineno">1582</tt>  <tt class="py-line"> </tt>
-<a name="L1583"></a><tt class="py-lineno">1583</tt>  <tt class="py-line"> </tt>
-<a name="HttpMock.request"></a><div id="HttpMock.request-def"><a name="L1584"></a><tt class="py-lineno">1584</tt> <a class="py-toggle" href="#" id="HttpMock.request-toggle" onclick="return toggle('HttpMock.request');">-</a><tt class="py-line">  <tt class="py-keyword">def</tt> <a class="py-def-name" href="googleapiclient.http.HttpMock-class.html#request">request</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">uri</tt><tt class="py-op">,</tt> </tt>
-<a name="L1585"></a><tt class="py-lineno">1585</tt>  <tt class="py-line">              <tt class="py-param">method</tt><tt class="py-op">=</tt><tt class="py-string">'GET'</tt><tt class="py-op">,</tt> </tt>
-<a name="L1586"></a><tt class="py-lineno">1586</tt>  <tt class="py-line">              <tt class="py-param">body</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> </tt>
-<a name="L1587"></a><tt class="py-lineno">1587</tt>  <tt class="py-line">              <tt class="py-param">headers</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> </tt>
-<a name="L1588"></a><tt class="py-lineno">1588</tt>  <tt class="py-line">              <tt class="py-param">redirections</tt><tt class="py-op">=</tt><tt class="py-number">1</tt><tt class="py-op">,</tt> </tt>
-<a name="L1589"></a><tt class="py-lineno">1589</tt>  <tt class="py-line">              <tt class="py-param">connection_type</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="HttpMock.request-collapsed" style="display:none;" pad="++++" indent="++++++"></div><div id="HttpMock.request-expanded"><a name="L1590"></a><tt class="py-lineno">1590</tt>  <tt class="py-line">    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">uri</tt> <tt class="py-op">=</tt> <tt class="py-name">uri</tt> </tt>
-<a name="L1591"></a><tt class="py-lineno">1591</tt>  <tt class="py-line">    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">method</tt> <tt class="py-op">=</tt> <tt class="py-name">method</tt> </tt>
-<a name="L1592"></a><tt class="py-lineno">1592</tt>  <tt class="py-line">    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-303" class="py-name"><a title="googleapiclient.channel.Channel.body" class="py-name" href="#" onclick="return doclink('link-303', 'body', 'link-69');">body</a></tt> <tt class="py-op">=</tt> <tt id="link-304" class="py-name"><a title="googleapiclient.channel.Channel.body" class="py-name" href="#" onclick="return doclink('link-304', 'body', 'link-69');">body</a></tt> </tt>
-<a name="L1593"></a><tt class="py-lineno">1593</tt>  <tt class="py-line">    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">headers</tt> <tt class="py-op">=</tt> <tt class="py-name">headers</tt> </tt>
-<a name="L1594"></a><tt class="py-lineno">1594</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-name">httplib2</tt><tt class="py-op">.</tt><tt class="py-name">Response</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">response_headers</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">data</tt> </tt>
-</div></div><a name="L1595"></a><tt class="py-lineno">1595</tt>  <tt class="py-line"> </tt>
-<a name="HttpMockSequence"></a><div id="HttpMockSequence-def"><a name="L1596"></a><tt class="py-lineno">1596</tt>  <tt class="py-line"> </tt>
-<a name="L1597"></a><tt class="py-lineno">1597</tt> <a class="py-toggle" href="#" id="HttpMockSequence-toggle" onclick="return toggle('HttpMockSequence');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="googleapiclient.http.HttpMockSequence-class.html">HttpMockSequence</a><tt class="py-op">(</tt><tt class="py-base-class">object</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="HttpMockSequence-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="HttpMockSequence-expanded"><a name="L1598"></a><tt class="py-lineno">1598</tt>  <tt class="py-line">  <tt class="py-docstring">"""Mock of httplib2.Http</tt> </tt>
-<a name="L1599"></a><tt class="py-lineno">1599</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L1600"></a><tt class="py-lineno">1600</tt>  <tt class="py-line"><tt class="py-docstring">  Mocks a sequence of calls to request returning different responses for each</tt> </tt>
-<a name="L1601"></a><tt class="py-lineno">1601</tt>  <tt class="py-line"><tt class="py-docstring">  call. Create an instance initialized with the desired response headers</tt> </tt>
-<a name="L1602"></a><tt class="py-lineno">1602</tt>  <tt class="py-line"><tt class="py-docstring">  and content and then use as if an httplib2.Http instance.</tt> </tt>
+<a name="L1582"></a><tt class="py-lineno">1582</tt>  <tt class="py-line">    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">uri</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
+<a name="L1583"></a><tt class="py-lineno">1583</tt>  <tt class="py-line">    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">method</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
+<a name="L1584"></a><tt class="py-lineno">1584</tt>  <tt class="py-line">    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-302" class="py-name"><a title="googleapiclient.channel.Channel.body" class="py-name" href="#" onclick="return doclink('link-302', 'body', 'link-69');">body</a></tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
+<a name="L1585"></a><tt class="py-lineno">1585</tt>  <tt class="py-line">    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">headers</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
+</div><a name="L1586"></a><tt class="py-lineno">1586</tt>  <tt class="py-line"> </tt>
+<a name="L1587"></a><tt class="py-lineno">1587</tt>  <tt class="py-line"> </tt>
+<a name="HttpMock.request"></a><div id="HttpMock.request-def"><a name="L1588"></a><tt class="py-lineno">1588</tt> <a class="py-toggle" href="#" id="HttpMock.request-toggle" onclick="return toggle('HttpMock.request');">-</a><tt class="py-line">  <tt class="py-keyword">def</tt> <a class="py-def-name" href="googleapiclient.http.HttpMock-class.html#request">request</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">uri</tt><tt class="py-op">,</tt> </tt>
+<a name="L1589"></a><tt class="py-lineno">1589</tt>  <tt class="py-line">              <tt class="py-param">method</tt><tt class="py-op">=</tt><tt class="py-string">'GET'</tt><tt class="py-op">,</tt> </tt>
+<a name="L1590"></a><tt class="py-lineno">1590</tt>  <tt class="py-line">              <tt class="py-param">body</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> </tt>
+<a name="L1591"></a><tt class="py-lineno">1591</tt>  <tt class="py-line">              <tt class="py-param">headers</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> </tt>
+<a name="L1592"></a><tt class="py-lineno">1592</tt>  <tt class="py-line">              <tt class="py-param">redirections</tt><tt class="py-op">=</tt><tt class="py-number">1</tt><tt class="py-op">,</tt> </tt>
+<a name="L1593"></a><tt class="py-lineno">1593</tt>  <tt class="py-line">              <tt class="py-param">connection_type</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="HttpMock.request-collapsed" style="display:none;" pad="++++" indent="++++++"></div><div id="HttpMock.request-expanded"><a name="L1594"></a><tt class="py-lineno">1594</tt>  <tt class="py-line">    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">uri</tt> <tt class="py-op">=</tt> <tt class="py-name">uri</tt> </tt>
+<a name="L1595"></a><tt class="py-lineno">1595</tt>  <tt class="py-line">    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">method</tt> <tt class="py-op">=</tt> <tt class="py-name">method</tt> </tt>
+<a name="L1596"></a><tt class="py-lineno">1596</tt>  <tt class="py-line">    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-303" class="py-name"><a title="googleapiclient.channel.Channel.body" class="py-name" href="#" onclick="return doclink('link-303', 'body', 'link-69');">body</a></tt> <tt class="py-op">=</tt> <tt id="link-304" class="py-name"><a title="googleapiclient.channel.Channel.body" class="py-name" href="#" onclick="return doclink('link-304', 'body', 'link-69');">body</a></tt> </tt>
+<a name="L1597"></a><tt class="py-lineno">1597</tt>  <tt class="py-line">    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">headers</tt> <tt class="py-op">=</tt> <tt class="py-name">headers</tt> </tt>
+<a name="L1598"></a><tt class="py-lineno">1598</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-name">httplib2</tt><tt class="py-op">.</tt><tt class="py-name">Response</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">response_headers</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">data</tt> </tt>
+</div></div><a name="L1599"></a><tt class="py-lineno">1599</tt>  <tt class="py-line"> </tt>
+<a name="HttpMockSequence"></a><div id="HttpMockSequence-def"><a name="L1600"></a><tt class="py-lineno">1600</tt>  <tt class="py-line"> </tt>
+<a name="L1601"></a><tt class="py-lineno">1601</tt> <a class="py-toggle" href="#" id="HttpMockSequence-toggle" onclick="return toggle('HttpMockSequence');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="googleapiclient.http.HttpMockSequence-class.html">HttpMockSequence</a><tt class="py-op">(</tt><tt class="py-base-class">object</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="HttpMockSequence-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="HttpMockSequence-expanded"><a name="L1602"></a><tt class="py-lineno">1602</tt>  <tt class="py-line">  <tt class="py-docstring">"""Mock of httplib2.Http</tt> </tt>
 <a name="L1603"></a><tt class="py-lineno">1603</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L1604"></a><tt class="py-lineno">1604</tt>  <tt class="py-line"><tt class="py-docstring">    http = HttpMockSequence([</tt> </tt>
-<a name="L1605"></a><tt class="py-lineno">1605</tt>  <tt class="py-line"><tt class="py-docstring">      ({'status': '401'}, ''),</tt> </tt>
-<a name="L1606"></a><tt class="py-lineno">1606</tt>  <tt class="py-line"><tt class="py-docstring">      ({'status': '200'}, '{"access_token":"1/3w","expires_in":3600}'),</tt> </tt>
-<a name="L1607"></a><tt class="py-lineno">1607</tt>  <tt class="py-line"><tt class="py-docstring">      ({'status': '200'}, 'echo_request_headers'),</tt> </tt>
-<a name="L1608"></a><tt class="py-lineno">1608</tt>  <tt class="py-line"><tt class="py-docstring">      ])</tt> </tt>
-<a name="L1609"></a><tt class="py-lineno">1609</tt>  <tt class="py-line"><tt class="py-docstring">    resp, content = http.request("http://examples.com")</tt> </tt>
-<a name="L1610"></a><tt class="py-lineno">1610</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L1611"></a><tt class="py-lineno">1611</tt>  <tt class="py-line"><tt class="py-docstring">  There are special values you can pass in for content to trigger</tt> </tt>
-<a name="L1612"></a><tt class="py-lineno">1612</tt>  <tt class="py-line"><tt class="py-docstring">  behavours that are helpful in testing.</tt> </tt>
-<a name="L1613"></a><tt class="py-lineno">1613</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L1614"></a><tt class="py-lineno">1614</tt>  <tt class="py-line"><tt class="py-docstring">  'echo_request_headers' means return the request headers in the response body</tt> </tt>
-<a name="L1615"></a><tt class="py-lineno">1615</tt>  <tt class="py-line"><tt class="py-docstring">  'echo_request_headers_as_json' means return the request headers in</tt> </tt>
-<a name="L1616"></a><tt class="py-lineno">1616</tt>  <tt class="py-line"><tt class="py-docstring">     the response body</tt> </tt>
-<a name="L1617"></a><tt class="py-lineno">1617</tt>  <tt class="py-line"><tt class="py-docstring">  'echo_request_body' means return the request body in the response body</tt> </tt>
-<a name="L1618"></a><tt class="py-lineno">1618</tt>  <tt class="py-line"><tt class="py-docstring">  'echo_request_uri' means return the request uri in the response body</tt> </tt>
-<a name="L1619"></a><tt class="py-lineno">1619</tt>  <tt class="py-line"><tt class="py-docstring">  """</tt> </tt>
-<a name="L1620"></a><tt class="py-lineno">1620</tt>  <tt class="py-line"> </tt>
-<a name="HttpMockSequence.__init__"></a><div id="HttpMockSequence.__init__-def"><a name="L1621"></a><tt class="py-lineno">1621</tt> <a class="py-toggle" href="#" id="HttpMockSequence.__init__-toggle" onclick="return toggle('HttpMockSequence.__init__');">-</a><tt class="py-line">  <tt class="py-keyword">def</tt> <a class="py-def-name" href="googleapiclient.http.HttpMockSequence-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">iterable</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="HttpMockSequence.__init__-collapsed" style="display:none;" pad="++++" indent="++++++"></div><div id="HttpMockSequence.__init__-expanded"><a name="L1622"></a><tt class="py-lineno">1622</tt>  <tt class="py-line">    <tt class="py-docstring">"""</tt> </tt>
-<a name="L1623"></a><tt class="py-lineno">1623</tt>  <tt class="py-line"><tt class="py-docstring">    Args:</tt> </tt>
-<a name="L1624"></a><tt class="py-lineno">1624</tt>  <tt class="py-line"><tt class="py-docstring">      iterable: iterable, a sequence of pairs of (headers, body)</tt> </tt>
-<a name="L1625"></a><tt class="py-lineno">1625</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
-<a name="L1626"></a><tt class="py-lineno">1626</tt>  <tt class="py-line">    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_iterable</tt> <tt class="py-op">=</tt> <tt class="py-name">iterable</tt> </tt>
-<a name="L1627"></a><tt class="py-lineno">1627</tt>  <tt class="py-line">    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">follow_redirects</tt> <tt class="py-op">=</tt> <tt class="py-name">True</tt> </tt>
-</div><a name="L1628"></a><tt class="py-lineno">1628</tt>  <tt class="py-line"> </tt>
-<a name="HttpMockSequence.request"></a><div id="HttpMockSequence.request-def"><a name="L1629"></a><tt class="py-lineno">1629</tt> <a class="py-toggle" href="#" id="HttpMockSequence.request-toggle" onclick="return toggle('HttpMockSequence.request');">-</a><tt class="py-line">  <tt class="py-keyword">def</tt> <a class="py-def-name" href="googleapiclient.http.HttpMockSequence-class.html#request">request</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">uri</tt><tt class="py-op">,</tt> </tt>
-<a name="L1630"></a><tt class="py-lineno">1630</tt>  <tt class="py-line">              <tt class="py-param">method</tt><tt class="py-op">=</tt><tt class="py-string">'GET'</tt><tt class="py-op">,</tt> </tt>
-<a name="L1631"></a><tt class="py-lineno">1631</tt>  <tt class="py-line">              <tt class="py-param">body</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> </tt>
-<a name="L1632"></a><tt class="py-lineno">1632</tt>  <tt class="py-line">              <tt class="py-param">headers</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> </tt>
-<a name="L1633"></a><tt class="py-lineno">1633</tt>  <tt class="py-line">              <tt class="py-param">redirections</tt><tt class="py-op">=</tt><tt class="py-number">1</tt><tt class="py-op">,</tt> </tt>
-<a name="L1634"></a><tt class="py-lineno">1634</tt>  <tt class="py-line">              <tt class="py-param">connection_type</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="HttpMockSequence.request-collapsed" style="display:none;" pad="++++" indent="++++++"></div><div id="HttpMockSequence.request-expanded"><a name="L1635"></a><tt class="py-lineno">1635</tt>  <tt class="py-line">    <tt class="py-name">resp</tt><tt class="py-op">,</tt> <tt class="py-name">content</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_iterable</tt><tt class="py-op">.</tt><tt class="py-name">pop</tt><tt class="py-op">(</tt><tt class="py-number">0</tt><tt class="py-op">)</tt> </tt>
-<a name="L1636"></a><tt class="py-lineno">1636</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">content</tt> <tt class="py-op">==</tt> <tt class="py-string">'echo_request_headers'</tt><tt class="py-op">:</tt> </tt>
-<a name="L1637"></a><tt class="py-lineno">1637</tt>  <tt class="py-line">      <tt class="py-name">content</tt> <tt class="py-op">=</tt> <tt class="py-name">headers</tt> </tt>
-<a name="L1638"></a><tt class="py-lineno">1638</tt>  <tt class="py-line">    <tt class="py-keyword">elif</tt> <tt class="py-name">content</tt> <tt class="py-op">==</tt> <tt class="py-string">'echo_request_headers_as_json'</tt><tt class="py-op">:</tt> </tt>
-<a name="L1639"></a><tt class="py-lineno">1639</tt>  <tt class="py-line">      <tt class="py-name">content</tt> <tt class="py-op">=</tt> <tt class="py-name">json</tt><tt class="py-op">.</tt><tt class="py-name">dumps</tt><tt class="py-op">(</tt><tt class="py-name">headers</tt><tt class="py-op">)</tt> </tt>
-<a name="L1640"></a><tt class="py-lineno">1640</tt>  <tt class="py-line">    <tt class="py-keyword">elif</tt> <tt class="py-name">content</tt> <tt class="py-op">==</tt> <tt class="py-string">'echo_request_body'</tt><tt class="py-op">:</tt> </tt>
-<a name="L1641"></a><tt class="py-lineno">1641</tt>  <tt class="py-line">      <tt class="py-keyword">if</tt> <tt class="py-name">hasattr</tt><tt class="py-op">(</tt><tt id="link-305" class="py-name"><a title="googleapiclient.channel.Channel.body" class="py-name" href="#" onclick="return doclink('link-305', 'body', 'link-69');">body</a></tt><tt class="py-op">,</tt> <tt class="py-string">'read'</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="L1642"></a><tt class="py-lineno">1642</tt>  <tt class="py-line">        <tt class="py-name">content</tt> <tt class="py-op">=</tt> <tt id="link-306" class="py-name"><a title="googleapiclient.channel.Channel.body" class="py-name" href="#" onclick="return doclink('link-306', 'body', 'link-69');">body</a></tt><tt class="py-op">.</tt><tt id="link-307" class="py-name"><a title="googleapiclient.http._StreamSlice.read" class="py-name" href="#" onclick="return doclink('link-307', 'read', 'link-50');">read</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-<a name="L1643"></a><tt class="py-lineno">1643</tt>  <tt class="py-line">      <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
-<a name="L1644"></a><tt class="py-lineno">1644</tt>  <tt class="py-line">        <tt class="py-name">content</tt> <tt class="py-op">=</tt> <tt id="link-308" class="py-name"><a title="googleapiclient.channel.Channel.body" class="py-name" href="#" onclick="return doclink('link-308', 'body', 'link-69');">body</a></tt> </tt>
-<a name="L1645"></a><tt class="py-lineno">1645</tt>  <tt class="py-line">    <tt class="py-keyword">elif</tt> <tt class="py-name">content</tt> <tt class="py-op">==</tt> <tt class="py-string">'echo_request_uri'</tt><tt class="py-op">:</tt> </tt>
-<a name="L1646"></a><tt class="py-lineno">1646</tt>  <tt class="py-line">      <tt class="py-name">content</tt> <tt class="py-op">=</tt> <tt class="py-name">uri</tt> </tt>
-<a name="L1647"></a><tt class="py-lineno">1647</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">content</tt><tt class="py-op">,</tt> <tt class="py-name">six</tt><tt class="py-op">.</tt><tt class="py-name">text_type</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="L1648"></a><tt class="py-lineno">1648</tt>  <tt class="py-line">      <tt class="py-name">content</tt> <tt class="py-op">=</tt> <tt class="py-name">content</tt><tt class="py-op">.</tt><tt class="py-name">encode</tt><tt class="py-op">(</tt><tt class="py-string">'utf-8'</tt><tt class="py-op">)</tt> </tt>
-<a name="L1649"></a><tt class="py-lineno">1649</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-name">httplib2</tt><tt class="py-op">.</tt><tt class="py-name">Response</tt><tt class="py-op">(</tt><tt class="py-name">resp</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-name">content</tt> </tt>
-</div></div><a name="L1650"></a><tt class="py-lineno">1650</tt>  <tt class="py-line"> </tt>
-<a name="set_user_agent"></a><div id="set_user_agent-def"><a name="L1651"></a><tt class="py-lineno">1651</tt>  <tt class="py-line"> </tt>
-<a name="L1652"></a><tt class="py-lineno">1652</tt> <a class="py-toggle" href="#" id="set_user_agent-toggle" onclick="return toggle('set_user_agent');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="googleapiclient.http-module.html#set_user_agent">set_user_agent</a><tt class="py-op">(</tt><tt class="py-param">http</tt><tt class="py-op">,</tt> <tt class="py-param">user_agent</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="set_user_agent-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="set_user_agent-expanded"><a name="L1653"></a><tt class="py-lineno">1653</tt>  <tt class="py-line">  <tt class="py-docstring">"""Set the user-agent on every request.</tt> </tt>
-<a name="L1654"></a><tt class="py-lineno">1654</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L1655"></a><tt class="py-lineno">1655</tt>  <tt class="py-line"><tt class="py-docstring">  Args:</tt> </tt>
-<a name="L1656"></a><tt class="py-lineno">1656</tt>  <tt class="py-line"><tt class="py-docstring">     http - An instance of httplib2.Http</tt> </tt>
-<a name="L1657"></a><tt class="py-lineno">1657</tt>  <tt class="py-line"><tt class="py-docstring">         or something that acts like it.</tt> </tt>
-<a name="L1658"></a><tt class="py-lineno">1658</tt>  <tt class="py-line"><tt class="py-docstring">     user_agent: string, the value for the user-agent header.</tt> </tt>
-<a name="L1659"></a><tt class="py-lineno">1659</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L1660"></a><tt class="py-lineno">1660</tt>  <tt class="py-line"><tt class="py-docstring">  Returns:</tt> </tt>
-<a name="L1661"></a><tt class="py-lineno">1661</tt>  <tt class="py-line"><tt class="py-docstring">     A modified instance of http that was passed in.</tt> </tt>
-<a name="L1662"></a><tt class="py-lineno">1662</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L1663"></a><tt class="py-lineno">1663</tt>  <tt class="py-line"><tt class="py-docstring">  Example:</tt> </tt>
-<a name="L1664"></a><tt class="py-lineno">1664</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L1665"></a><tt class="py-lineno">1665</tt>  <tt class="py-line"><tt class="py-docstring">    h = httplib2.Http()</tt> </tt>
-<a name="L1666"></a><tt class="py-lineno">1666</tt>  <tt class="py-line"><tt class="py-docstring">    h = set_user_agent(h, "my-app-name/6.0")</tt> </tt>
-<a name="L1667"></a><tt class="py-lineno">1667</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L1668"></a><tt class="py-lineno">1668</tt>  <tt class="py-line"><tt class="py-docstring">  Most of the time the user-agent will be set doing auth, this is for the rare</tt> </tt>
-<a name="L1669"></a><tt class="py-lineno">1669</tt>  <tt class="py-line"><tt class="py-docstring">  cases where you are accessing an unauthenticated endpoint.</tt> </tt>
-<a name="L1670"></a><tt class="py-lineno">1670</tt>  <tt class="py-line"><tt class="py-docstring">  """</tt> </tt>
-<a name="L1671"></a><tt class="py-lineno">1671</tt>  <tt class="py-line">  <tt class="py-name">request_orig</tt> <tt class="py-op">=</tt> <tt id="link-309" class="py-name"><a title="googleapiclient.http" class="py-name" href="#" onclick="return doclink('link-309', 'http', 'link-33');">http</a></tt><tt class="py-op">.</tt><tt id="link-310" class="py-name"><a title="googleapiclient.http.HttpMock.request
+<a name="L1604"></a><tt class="py-lineno">1604</tt>  <tt class="py-line"><tt class="py-docstring">  Mocks a sequence of calls to request returning different responses for each</tt> </tt>
+<a name="L1605"></a><tt class="py-lineno">1605</tt>  <tt class="py-line"><tt class="py-docstring">  call. Create an instance initialized with the desired response headers</tt> </tt>
+<a name="L1606"></a><tt class="py-lineno">1606</tt>  <tt class="py-line"><tt class="py-docstring">  and content and then use as if an httplib2.Http instance.</tt> </tt>
+<a name="L1607"></a><tt class="py-lineno">1607</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L1608"></a><tt class="py-lineno">1608</tt>  <tt class="py-line"><tt class="py-docstring">    http = HttpMockSequence([</tt> </tt>
+<a name="L1609"></a><tt class="py-lineno">1609</tt>  <tt class="py-line"><tt class="py-docstring">      ({'status': '401'}, ''),</tt> </tt>
+<a name="L1610"></a><tt class="py-lineno">1610</tt>  <tt class="py-line"><tt class="py-docstring">      ({'status': '200'}, '{"access_token":"1/3w","expires_in":3600}'),</tt> </tt>
+<a name="L1611"></a><tt class="py-lineno">1611</tt>  <tt class="py-line"><tt class="py-docstring">      ({'status': '200'}, 'echo_request_headers'),</tt> </tt>
+<a name="L1612"></a><tt class="py-lineno">1612</tt>  <tt class="py-line"><tt class="py-docstring">      ])</tt> </tt>
+<a name="L1613"></a><tt class="py-lineno">1613</tt>  <tt class="py-line"><tt class="py-docstring">    resp, content = http.request("http://examples.com")</tt> </tt>
+<a name="L1614"></a><tt class="py-lineno">1614</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L1615"></a><tt class="py-lineno">1615</tt>  <tt class="py-line"><tt class="py-docstring">  There are special values you can pass in for content to trigger</tt> </tt>
+<a name="L1616"></a><tt class="py-lineno">1616</tt>  <tt class="py-line"><tt class="py-docstring">  behavours that are helpful in testing.</tt> </tt>
+<a name="L1617"></a><tt class="py-lineno">1617</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L1618"></a><tt class="py-lineno">1618</tt>  <tt class="py-line"><tt class="py-docstring">  'echo_request_headers' means return the request headers in the response body</tt> </tt>
+<a name="L1619"></a><tt class="py-lineno">1619</tt>  <tt class="py-line"><tt class="py-docstring">  'echo_request_headers_as_json' means return the request headers in</tt> </tt>
+<a name="L1620"></a><tt class="py-lineno">1620</tt>  <tt class="py-line"><tt class="py-docstring">     the response body</tt> </tt>
+<a name="L1621"></a><tt class="py-lineno">1621</tt>  <tt class="py-line"><tt class="py-docstring">  'echo_request_body' means return the request body in the response body</tt> </tt>
+<a name="L1622"></a><tt class="py-lineno">1622</tt>  <tt class="py-line"><tt class="py-docstring">  'echo_request_uri' means return the request uri in the response body</tt> </tt>
+<a name="L1623"></a><tt class="py-lineno">1623</tt>  <tt class="py-line"><tt class="py-docstring">  """</tt> </tt>
+<a name="L1624"></a><tt class="py-lineno">1624</tt>  <tt class="py-line"> </tt>
+<a name="HttpMockSequence.__init__"></a><div id="HttpMockSequence.__init__-def"><a name="L1625"></a><tt class="py-lineno">1625</tt> <a class="py-toggle" href="#" id="HttpMockSequence.__init__-toggle" onclick="return toggle('HttpMockSequence.__init__');">-</a><tt class="py-line">  <tt class="py-keyword">def</tt> <a class="py-def-name" href="googleapiclient.http.HttpMockSequence-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">iterable</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="HttpMockSequence.__init__-collapsed" style="display:none;" pad="++++" indent="++++++"></div><div id="HttpMockSequence.__init__-expanded"><a name="L1626"></a><tt class="py-lineno">1626</tt>  <tt class="py-line">    <tt class="py-docstring">"""</tt> </tt>
+<a name="L1627"></a><tt class="py-lineno">1627</tt>  <tt class="py-line"><tt class="py-docstring">    Args:</tt> </tt>
+<a name="L1628"></a><tt class="py-lineno">1628</tt>  <tt class="py-line"><tt class="py-docstring">      iterable: iterable, a sequence of pairs of (headers, body)</tt> </tt>
+<a name="L1629"></a><tt class="py-lineno">1629</tt>  <tt class="py-line"><tt class="py-docstring">    """</tt> </tt>
+<a name="L1630"></a><tt class="py-lineno">1630</tt>  <tt class="py-line">    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_iterable</tt> <tt class="py-op">=</tt> <tt class="py-name">iterable</tt> </tt>
+<a name="L1631"></a><tt class="py-lineno">1631</tt>  <tt class="py-line">    <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">follow_redirects</tt> <tt class="py-op">=</tt> <tt class="py-name">True</tt> </tt>
+</div><a name="L1632"></a><tt class="py-lineno">1632</tt>  <tt class="py-line"> </tt>
+<a name="HttpMockSequence.request"></a><div id="HttpMockSequence.request-def"><a name="L1633"></a><tt class="py-lineno">1633</tt> <a class="py-toggle" href="#" id="HttpMockSequence.request-toggle" onclick="return toggle('HttpMockSequence.request');">-</a><tt class="py-line">  <tt class="py-keyword">def</tt> <a class="py-def-name" href="googleapiclient.http.HttpMockSequence-class.html#request">request</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">uri</tt><tt class="py-op">,</tt> </tt>
+<a name="L1634"></a><tt class="py-lineno">1634</tt>  <tt class="py-line">              <tt class="py-param">method</tt><tt class="py-op">=</tt><tt class="py-string">'GET'</tt><tt class="py-op">,</tt> </tt>
+<a name="L1635"></a><tt class="py-lineno">1635</tt>  <tt class="py-line">              <tt class="py-param">body</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> </tt>
+<a name="L1636"></a><tt class="py-lineno">1636</tt>  <tt class="py-line">              <tt class="py-param">headers</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> </tt>
+<a name="L1637"></a><tt class="py-lineno">1637</tt>  <tt class="py-line">              <tt class="py-param">redirections</tt><tt class="py-op">=</tt><tt class="py-number">1</tt><tt class="py-op">,</tt> </tt>
+<a name="L1638"></a><tt class="py-lineno">1638</tt>  <tt class="py-line">              <tt class="py-param">connection_type</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="HttpMockSequence.request-collapsed" style="display:none;" pad="++++" indent="++++++"></div><div id="HttpMockSequence.request-expanded"><a name="L1639"></a><tt class="py-lineno">1639</tt>  <tt class="py-line">    <tt class="py-name">resp</tt><tt class="py-op">,</tt> <tt class="py-name">content</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_iterable</tt><tt class="py-op">.</tt><tt class="py-name">pop</tt><tt class="py-op">(</tt><tt class="py-number">0</tt><tt class="py-op">)</tt> </tt>
+<a name="L1640"></a><tt class="py-lineno">1640</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">content</tt> <tt class="py-op">==</tt> <tt class="py-string">'echo_request_headers'</tt><tt class="py-op">:</tt> </tt>
+<a name="L1641"></a><tt class="py-lineno">1641</tt>  <tt class="py-line">      <tt class="py-name">content</tt> <tt class="py-op">=</tt> <tt class="py-name">headers</tt> </tt>
+<a name="L1642"></a><tt class="py-lineno">1642</tt>  <tt class="py-line">    <tt class="py-keyword">elif</tt> <tt class="py-name">content</tt> <tt class="py-op">==</tt> <tt class="py-string">'echo_request_headers_as_json'</tt><tt class="py-op">:</tt> </tt>
+<a name="L1643"></a><tt class="py-lineno">1643</tt>  <tt class="py-line">      <tt class="py-name">content</tt> <tt class="py-op">=</tt> <tt class="py-name">json</tt><tt class="py-op">.</tt><tt class="py-name">dumps</tt><tt class="py-op">(</tt><tt class="py-name">headers</tt><tt class="py-op">)</tt> </tt>
+<a name="L1644"></a><tt class="py-lineno">1644</tt>  <tt class="py-line">    <tt class="py-keyword">elif</tt> <tt class="py-name">content</tt> <tt class="py-op">==</tt> <tt class="py-string">'echo_request_body'</tt><tt class="py-op">:</tt> </tt>
+<a name="L1645"></a><tt class="py-lineno">1645</tt>  <tt class="py-line">      <tt class="py-keyword">if</tt> <tt class="py-name">hasattr</tt><tt class="py-op">(</tt><tt id="link-305" class="py-name"><a title="googleapiclient.channel.Channel.body" class="py-name" href="#" onclick="return doclink('link-305', 'body', 'link-69');">body</a></tt><tt class="py-op">,</tt> <tt class="py-string">'read'</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L1646"></a><tt class="py-lineno">1646</tt>  <tt class="py-line">        <tt class="py-name">content</tt> <tt class="py-op">=</tt> <tt id="link-306" class="py-name"><a title="googleapiclient.channel.Channel.body" class="py-name" href="#" onclick="return doclink('link-306', 'body', 'link-69');">body</a></tt><tt class="py-op">.</tt><tt id="link-307" class="py-name"><a title="googleapiclient.http._StreamSlice.read" class="py-name" href="#" onclick="return doclink('link-307', 'read', 'link-50');">read</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L1647"></a><tt class="py-lineno">1647</tt>  <tt class="py-line">      <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L1648"></a><tt class="py-lineno">1648</tt>  <tt class="py-line">        <tt class="py-name">content</tt> <tt class="py-op">=</tt> <tt id="link-308" class="py-name"><a title="googleapiclient.channel.Channel.body" class="py-name" href="#" onclick="return doclink('link-308', 'body', 'link-69');">body</a></tt> </tt>
+<a name="L1649"></a><tt class="py-lineno">1649</tt>  <tt class="py-line">    <tt class="py-keyword">elif</tt> <tt class="py-name">content</tt> <tt class="py-op">==</tt> <tt class="py-string">'echo_request_uri'</tt><tt class="py-op">:</tt> </tt>
+<a name="L1650"></a><tt class="py-lineno">1650</tt>  <tt class="py-line">      <tt class="py-name">content</tt> <tt class="py-op">=</tt> <tt class="py-name">uri</tt> </tt>
+<a name="L1651"></a><tt class="py-lineno">1651</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">content</tt><tt class="py-op">,</tt> <tt class="py-name">six</tt><tt class="py-op">.</tt><tt class="py-name">text_type</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L1652"></a><tt class="py-lineno">1652</tt>  <tt class="py-line">      <tt class="py-name">content</tt> <tt class="py-op">=</tt> <tt class="py-name">content</tt><tt class="py-op">.</tt><tt class="py-name">encode</tt><tt class="py-op">(</tt><tt class="py-string">'utf-8'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1653"></a><tt class="py-lineno">1653</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-name">httplib2</tt><tt class="py-op">.</tt><tt class="py-name">Response</tt><tt class="py-op">(</tt><tt class="py-name">resp</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-name">content</tt> </tt>
+</div></div><a name="L1654"></a><tt class="py-lineno">1654</tt>  <tt class="py-line"> </tt>
+<a name="set_user_agent"></a><div id="set_user_agent-def"><a name="L1655"></a><tt class="py-lineno">1655</tt>  <tt class="py-line"> </tt>
+<a name="L1656"></a><tt class="py-lineno">1656</tt> <a class="py-toggle" href="#" id="set_user_agent-toggle" onclick="return toggle('set_user_agent');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="googleapiclient.http-module.html#set_user_agent">set_user_agent</a><tt class="py-op">(</tt><tt class="py-param">http</tt><tt class="py-op">,</tt> <tt class="py-param">user_agent</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="set_user_agent-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="set_user_agent-expanded"><a name="L1657"></a><tt class="py-lineno">1657</tt>  <tt class="py-line">  <tt class="py-docstring">"""Set the user-agent on every request.</tt> </tt>
+<a name="L1658"></a><tt class="py-lineno">1658</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L1659"></a><tt class="py-lineno">1659</tt>  <tt class="py-line"><tt class="py-docstring">  Args:</tt> </tt>
+<a name="L1660"></a><tt class="py-lineno">1660</tt>  <tt class="py-line"><tt class="py-docstring">     http - An instance of httplib2.Http</tt> </tt>
+<a name="L1661"></a><tt class="py-lineno">1661</tt>  <tt class="py-line"><tt class="py-docstring">         or something that acts like it.</tt> </tt>
+<a name="L1662"></a><tt class="py-lineno">1662</tt>  <tt class="py-line"><tt class="py-docstring">     user_agent: string, the value for the user-agent header.</tt> </tt>
+<a name="L1663"></a><tt class="py-lineno">1663</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L1664"></a><tt class="py-lineno">1664</tt>  <tt class="py-line"><tt class="py-docstring">  Returns:</tt> </tt>
+<a name="L1665"></a><tt class="py-lineno">1665</tt>  <tt class="py-line"><tt class="py-docstring">     A modified instance of http that was passed in.</tt> </tt>
+<a name="L1666"></a><tt class="py-lineno">1666</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L1667"></a><tt class="py-lineno">1667</tt>  <tt class="py-line"><tt class="py-docstring">  Example:</tt> </tt>
+<a name="L1668"></a><tt class="py-lineno">1668</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L1669"></a><tt class="py-lineno">1669</tt>  <tt class="py-line"><tt class="py-docstring">    h = httplib2.Http()</tt> </tt>
+<a name="L1670"></a><tt class="py-lineno">1670</tt>  <tt class="py-line"><tt class="py-docstring">    h = set_user_agent(h, "my-app-name/6.0")</tt> </tt>
+<a name="L1671"></a><tt class="py-lineno">1671</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L1672"></a><tt class="py-lineno">1672</tt>  <tt class="py-line"><tt class="py-docstring">  Most of the time the user-agent will be set doing auth, this is for the rare</tt> </tt>
+<a name="L1673"></a><tt class="py-lineno">1673</tt>  <tt class="py-line"><tt class="py-docstring">  cases where you are accessing an unauthenticated endpoint.</tt> </tt>
+<a name="L1674"></a><tt class="py-lineno">1674</tt>  <tt class="py-line"><tt class="py-docstring">  """</tt> </tt>
+<a name="L1675"></a><tt class="py-lineno">1675</tt>  <tt class="py-line">  <tt class="py-name">request_orig</tt> <tt class="py-op">=</tt> <tt id="link-309" class="py-name"><a title="googleapiclient.http" class="py-name" href="#" onclick="return doclink('link-309', 'http', 'link-33');">http</a></tt><tt class="py-op">.</tt><tt id="link-310" class="py-name"><a title="googleapiclient.http.HttpMock.request
 googleapiclient.http.HttpMockSequence.request
 googleapiclient.model.BaseModel.request
 googleapiclient.model.Model.request" class="py-name" href="#" onclick="return doclink('link-310', 'request', 'link-34');">request</a></tt> </tt>
-<a name="L1672"></a><tt class="py-lineno">1672</tt>  <tt class="py-line"> </tt>
-<a name="L1673"></a><tt class="py-lineno">1673</tt>  <tt class="py-line">  <tt class="py-comment"># The closure that will replace 'httplib2.Http.request'.</tt> </tt>
-<a name="L1674"></a><tt class="py-lineno">1674</tt>  <tt class="py-line">  <tt class="py-keyword">def</tt> <tt class="py-def-name">new_request</tt><tt class="py-op">(</tt><tt class="py-param">uri</tt><tt class="py-op">,</tt> <tt class="py-param">method</tt><tt class="py-op">=</tt><tt class="py-string">'GET'</tt><tt class="py-op">,</tt> <tt class="py-param">body</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-param">headers</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> </tt>
-<a name="L1675"></a><tt class="py-lineno">1675</tt>  <tt class="py-line">                  <tt class="py-param">redirections</tt><tt class="py-op">=</tt><tt class="py-name">httplib2</tt><tt class="py-op">.</tt><tt class="py-name">DEFAULT_MAX_REDIRECTS</tt><tt class="py-op">,</tt> </tt>
-<a name="L1676"></a><tt class="py-lineno">1676</tt>  <tt class="py-line">                  <tt class="py-param">connection_type</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="L1677"></a><tt class="py-lineno">1677</tt>  <tt class="py-line">    <tt class="py-docstring">"""Modify the request headers to add the user-agent."""</tt> </tt>
-<a name="L1678"></a><tt class="py-lineno">1678</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">headers</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
-<a name="L1679"></a><tt class="py-lineno">1679</tt>  <tt class="py-line">      <tt class="py-name">headers</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-op">}</tt> </tt>
-<a name="L1680"></a><tt class="py-lineno">1680</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-string">'user-agent'</tt> <tt class="py-keyword">in</tt> <tt class="py-name">headers</tt><tt class="py-op">:</tt> </tt>
-<a name="L1681"></a><tt class="py-lineno">1681</tt>  <tt class="py-line">      <tt class="py-name">headers</tt><tt class="py-op">[</tt><tt class="py-string">'user-agent'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">user_agent</tt> <tt class="py-op">+</tt> <tt class="py-string">' '</tt> <tt class="py-op">+</tt> <tt class="py-name">headers</tt><tt class="py-op">[</tt><tt class="py-string">'user-agent'</tt><tt class="py-op">]</tt> </tt>
-<a name="L1682"></a><tt class="py-lineno">1682</tt>  <tt class="py-line">    <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
-<a name="L1683"></a><tt class="py-lineno">1683</tt>  <tt class="py-line">      <tt class="py-name">headers</tt><tt class="py-op">[</tt><tt class="py-string">'user-agent'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">user_agent</tt> </tt>
-<a name="L1684"></a><tt class="py-lineno">1684</tt>  <tt class="py-line">    <tt class="py-name">resp</tt><tt class="py-op">,</tt> <tt class="py-name">content</tt> <tt class="py-op">=</tt> <tt class="py-name">request_orig</tt><tt class="py-op">(</tt><tt class="py-name">uri</tt><tt class="py-op">,</tt> <tt class="py-name">method</tt><tt class="py-op">,</tt> <tt id="link-311" class="py-name"><a title="googleapiclient.channel.Channel.body" class="py-name" href="#" onclick="return doclink('link-311', 'body', 'link-69');">body</a></tt><tt class="py-op">,</tt> <tt class="py-name">headers</tt><tt class="py-op">,</tt> </tt>
-<a name="L1685"></a><tt class="py-lineno">1685</tt>  <tt class="py-line">                        <tt class="py-name">redirections</tt><tt class="py-op">,</tt> <tt class="py-name">connection_type</tt><tt class="py-op">)</tt> </tt>
-<a name="L1686"></a><tt class="py-lineno">1686</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-name">resp</tt><tt class="py-op">,</tt> <tt class="py-name">content</tt> </tt>
-</div><a name="L1687"></a><tt class="py-lineno">1687</tt>  <tt class="py-line"> </tt>
-<a name="L1688"></a><tt class="py-lineno">1688</tt>  <tt class="py-line">  <tt id="link-312" class="py-name"><a title="googleapiclient.http" class="py-name" href="#" onclick="return doclink('link-312', 'http', 'link-33');">http</a></tt><tt class="py-op">.</tt><tt id="link-313" class="py-name"><a title="googleapiclient.http.HttpMock.request
+<a name="L1676"></a><tt class="py-lineno">1676</tt>  <tt class="py-line"> </tt>
+<a name="L1677"></a><tt class="py-lineno">1677</tt>  <tt class="py-line">  <tt class="py-comment"># The closure that will replace 'httplib2.Http.request'.</tt> </tt>
+<a name="L1678"></a><tt class="py-lineno">1678</tt>  <tt class="py-line">  <tt class="py-keyword">def</tt> <tt class="py-def-name">new_request</tt><tt class="py-op">(</tt><tt class="py-param">uri</tt><tt class="py-op">,</tt> <tt class="py-param">method</tt><tt class="py-op">=</tt><tt class="py-string">'GET'</tt><tt class="py-op">,</tt> <tt class="py-param">body</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-param">headers</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> </tt>
+<a name="L1679"></a><tt class="py-lineno">1679</tt>  <tt class="py-line">                  <tt class="py-param">redirections</tt><tt class="py-op">=</tt><tt class="py-name">httplib2</tt><tt class="py-op">.</tt><tt class="py-name">DEFAULT_MAX_REDIRECTS</tt><tt class="py-op">,</tt> </tt>
+<a name="L1680"></a><tt class="py-lineno">1680</tt>  <tt class="py-line">                  <tt class="py-param">connection_type</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L1681"></a><tt class="py-lineno">1681</tt>  <tt class="py-line">    <tt class="py-docstring">"""Modify the request headers to add the user-agent."""</tt> </tt>
+<a name="L1682"></a><tt class="py-lineno">1682</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">headers</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L1683"></a><tt class="py-lineno">1683</tt>  <tt class="py-line">      <tt class="py-name">headers</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-op">}</tt> </tt>
+<a name="L1684"></a><tt class="py-lineno">1684</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-string">'user-agent'</tt> <tt class="py-keyword">in</tt> <tt class="py-name">headers</tt><tt class="py-op">:</tt> </tt>
+<a name="L1685"></a><tt class="py-lineno">1685</tt>  <tt class="py-line">      <tt class="py-name">headers</tt><tt class="py-op">[</tt><tt class="py-string">'user-agent'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">user_agent</tt> <tt class="py-op">+</tt> <tt class="py-string">' '</tt> <tt class="py-op">+</tt> <tt class="py-name">headers</tt><tt class="py-op">[</tt><tt class="py-string">'user-agent'</tt><tt class="py-op">]</tt> </tt>
+<a name="L1686"></a><tt class="py-lineno">1686</tt>  <tt class="py-line">    <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L1687"></a><tt class="py-lineno">1687</tt>  <tt class="py-line">      <tt class="py-name">headers</tt><tt class="py-op">[</tt><tt class="py-string">'user-agent'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">user_agent</tt> </tt>
+<a name="L1688"></a><tt class="py-lineno">1688</tt>  <tt class="py-line">    <tt class="py-name">resp</tt><tt class="py-op">,</tt> <tt class="py-name">content</tt> <tt class="py-op">=</tt> <tt class="py-name">request_orig</tt><tt class="py-op">(</tt><tt class="py-name">uri</tt><tt class="py-op">,</tt> <tt class="py-name">method</tt><tt class="py-op">,</tt> <tt id="link-311" class="py-name"><a title="googleapiclient.channel.Channel.body" class="py-name" href="#" onclick="return doclink('link-311', 'body', 'link-69');">body</a></tt><tt class="py-op">,</tt> <tt class="py-name">headers</tt><tt class="py-op">,</tt> </tt>
+<a name="L1689"></a><tt class="py-lineno">1689</tt>  <tt class="py-line">                        <tt class="py-name">redirections</tt><tt class="py-op">,</tt> <tt class="py-name">connection_type</tt><tt class="py-op">)</tt> </tt>
+<a name="L1690"></a><tt class="py-lineno">1690</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-name">resp</tt><tt class="py-op">,</tt> <tt class="py-name">content</tt> </tt>
+</div><a name="L1691"></a><tt class="py-lineno">1691</tt>  <tt class="py-line"> </tt>
+<a name="L1692"></a><tt class="py-lineno">1692</tt>  <tt class="py-line">  <tt id="link-312" class="py-name"><a title="googleapiclient.http" class="py-name" href="#" onclick="return doclink('link-312', 'http', 'link-33');">http</a></tt><tt class="py-op">.</tt><tt id="link-313" class="py-name"><a title="googleapiclient.http.HttpMock.request
 googleapiclient.http.HttpMockSequence.request
 googleapiclient.model.BaseModel.request
 googleapiclient.model.Model.request" class="py-name" href="#" onclick="return doclink('link-313', 'request', 'link-34');">request</a></tt> <tt class="py-op">=</tt> <tt class="py-name">new_request</tt> </tt>
-<a name="L1689"></a><tt class="py-lineno">1689</tt>  <tt class="py-line">  <tt class="py-keyword">return</tt> <tt id="link-314" class="py-name"><a title="googleapiclient.http" class="py-name" href="#" onclick="return doclink('link-314', 'http', 'link-33');">http</a></tt> </tt>
-</div><a name="L1690"></a><tt class="py-lineno">1690</tt>  <tt class="py-line"> </tt>
-<a name="tunnel_patch"></a><div id="tunnel_patch-def"><a name="L1691"></a><tt class="py-lineno">1691</tt>  <tt class="py-line"> </tt>
-<a name="L1692"></a><tt class="py-lineno">1692</tt> <a class="py-toggle" href="#" id="tunnel_patch-toggle" onclick="return toggle('tunnel_patch');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="googleapiclient.http-module.html#tunnel_patch">tunnel_patch</a><tt class="py-op">(</tt><tt class="py-param">http</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="tunnel_patch-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="tunnel_patch-expanded"><a name="L1693"></a><tt class="py-lineno">1693</tt>  <tt class="py-line">  <tt class="py-docstring">"""Tunnel PATCH requests over POST.</tt> </tt>
-<a name="L1694"></a><tt class="py-lineno">1694</tt>  <tt class="py-line"><tt class="py-docstring">  Args:</tt> </tt>
-<a name="L1695"></a><tt class="py-lineno">1695</tt>  <tt class="py-line"><tt class="py-docstring">     http - An instance of httplib2.Http</tt> </tt>
-<a name="L1696"></a><tt class="py-lineno">1696</tt>  <tt class="py-line"><tt class="py-docstring">         or something that acts like it.</tt> </tt>
-<a name="L1697"></a><tt class="py-lineno">1697</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L1698"></a><tt class="py-lineno">1698</tt>  <tt class="py-line"><tt class="py-docstring">  Returns:</tt> </tt>
-<a name="L1699"></a><tt class="py-lineno">1699</tt>  <tt class="py-line"><tt class="py-docstring">     A modified instance of http that was passed in.</tt> </tt>
-<a name="L1700"></a><tt class="py-lineno">1700</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L1701"></a><tt class="py-lineno">1701</tt>  <tt class="py-line"><tt class="py-docstring">  Example:</tt> </tt>
-<a name="L1702"></a><tt class="py-lineno">1702</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L1703"></a><tt class="py-lineno">1703</tt>  <tt class="py-line"><tt class="py-docstring">    h = httplib2.Http()</tt> </tt>
-<a name="L1704"></a><tt class="py-lineno">1704</tt>  <tt class="py-line"><tt class="py-docstring">    h = tunnel_patch(h, "my-app-name/6.0")</tt> </tt>
-<a name="L1705"></a><tt class="py-lineno">1705</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L1706"></a><tt class="py-lineno">1706</tt>  <tt class="py-line"><tt class="py-docstring">  Useful if you are running on a platform that doesn't support PATCH.</tt> </tt>
-<a name="L1707"></a><tt class="py-lineno">1707</tt>  <tt class="py-line"><tt class="py-docstring">  Apply this last if you are using OAuth 1.0, as changing the method</tt> </tt>
-<a name="L1708"></a><tt class="py-lineno">1708</tt>  <tt class="py-line"><tt class="py-docstring">  will result in a different signature.</tt> </tt>
-<a name="L1709"></a><tt class="py-lineno">1709</tt>  <tt class="py-line"><tt class="py-docstring">  """</tt> </tt>
-<a name="L1710"></a><tt class="py-lineno">1710</tt>  <tt class="py-line">  <tt class="py-name">request_orig</tt> <tt class="py-op">=</tt> <tt id="link-315" class="py-name"><a title="googleapiclient.http" class="py-name" href="#" onclick="return doclink('link-315', 'http', 'link-33');">http</a></tt><tt class="py-op">.</tt><tt id="link-316" class="py-name"><a title="googleapiclient.http.HttpMock.request
+<a name="L1693"></a><tt class="py-lineno">1693</tt>  <tt class="py-line">  <tt class="py-keyword">return</tt> <tt id="link-314" class="py-name"><a title="googleapiclient.http" class="py-name" href="#" onclick="return doclink('link-314', 'http', 'link-33');">http</a></tt> </tt>
+</div><a name="L1694"></a><tt class="py-lineno">1694</tt>  <tt class="py-line"> </tt>
+<a name="tunnel_patch"></a><div id="tunnel_patch-def"><a name="L1695"></a><tt class="py-lineno">1695</tt>  <tt class="py-line"> </tt>
+<a name="L1696"></a><tt class="py-lineno">1696</tt> <a class="py-toggle" href="#" id="tunnel_patch-toggle" onclick="return toggle('tunnel_patch');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="googleapiclient.http-module.html#tunnel_patch">tunnel_patch</a><tt class="py-op">(</tt><tt class="py-param">http</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="tunnel_patch-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="tunnel_patch-expanded"><a name="L1697"></a><tt class="py-lineno">1697</tt>  <tt class="py-line">  <tt class="py-docstring">"""Tunnel PATCH requests over POST.</tt> </tt>
+<a name="L1698"></a><tt class="py-lineno">1698</tt>  <tt class="py-line"><tt class="py-docstring">  Args:</tt> </tt>
+<a name="L1699"></a><tt class="py-lineno">1699</tt>  <tt class="py-line"><tt class="py-docstring">     http - An instance of httplib2.Http</tt> </tt>
+<a name="L1700"></a><tt class="py-lineno">1700</tt>  <tt class="py-line"><tt class="py-docstring">         or something that acts like it.</tt> </tt>
+<a name="L1701"></a><tt class="py-lineno">1701</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L1702"></a><tt class="py-lineno">1702</tt>  <tt class="py-line"><tt class="py-docstring">  Returns:</tt> </tt>
+<a name="L1703"></a><tt class="py-lineno">1703</tt>  <tt class="py-line"><tt class="py-docstring">     A modified instance of http that was passed in.</tt> </tt>
+<a name="L1704"></a><tt class="py-lineno">1704</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L1705"></a><tt class="py-lineno">1705</tt>  <tt class="py-line"><tt class="py-docstring">  Example:</tt> </tt>
+<a name="L1706"></a><tt class="py-lineno">1706</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L1707"></a><tt class="py-lineno">1707</tt>  <tt class="py-line"><tt class="py-docstring">    h = httplib2.Http()</tt> </tt>
+<a name="L1708"></a><tt class="py-lineno">1708</tt>  <tt class="py-line"><tt class="py-docstring">    h = tunnel_patch(h, "my-app-name/6.0")</tt> </tt>
+<a name="L1709"></a><tt class="py-lineno">1709</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L1710"></a><tt class="py-lineno">1710</tt>  <tt class="py-line"><tt class="py-docstring">  Useful if you are running on a platform that doesn't support PATCH.</tt> </tt>
+<a name="L1711"></a><tt class="py-lineno">1711</tt>  <tt class="py-line"><tt class="py-docstring">  Apply this last if you are using OAuth 1.0, as changing the method</tt> </tt>
+<a name="L1712"></a><tt class="py-lineno">1712</tt>  <tt class="py-line"><tt class="py-docstring">  will result in a different signature.</tt> </tt>
+<a name="L1713"></a><tt class="py-lineno">1713</tt>  <tt class="py-line"><tt class="py-docstring">  """</tt> </tt>
+<a name="L1714"></a><tt class="py-lineno">1714</tt>  <tt class="py-line">  <tt class="py-name">request_orig</tt> <tt class="py-op">=</tt> <tt id="link-315" class="py-name"><a title="googleapiclient.http" class="py-name" href="#" onclick="return doclink('link-315', 'http', 'link-33');">http</a></tt><tt class="py-op">.</tt><tt id="link-316" class="py-name"><a title="googleapiclient.http.HttpMock.request
 googleapiclient.http.HttpMockSequence.request
 googleapiclient.model.BaseModel.request
 googleapiclient.model.Model.request" class="py-name" href="#" onclick="return doclink('link-316', 'request', 'link-34');">request</a></tt> </tt>
-<a name="L1711"></a><tt class="py-lineno">1711</tt>  <tt class="py-line"> </tt>
-<a name="L1712"></a><tt class="py-lineno">1712</tt>  <tt class="py-line">  <tt class="py-comment"># The closure that will replace 'httplib2.Http.request'.</tt> </tt>
-<a name="L1713"></a><tt class="py-lineno">1713</tt>  <tt class="py-line">  <tt class="py-keyword">def</tt> <tt class="py-def-name">new_request</tt><tt class="py-op">(</tt><tt class="py-param">uri</tt><tt class="py-op">,</tt> <tt class="py-param">method</tt><tt class="py-op">=</tt><tt class="py-string">'GET'</tt><tt class="py-op">,</tt> <tt class="py-param">body</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-param">headers</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> </tt>
-<a name="L1714"></a><tt class="py-lineno">1714</tt>  <tt class="py-line">                  <tt class="py-param">redirections</tt><tt class="py-op">=</tt><tt class="py-name">httplib2</tt><tt class="py-op">.</tt><tt class="py-name">DEFAULT_MAX_REDIRECTS</tt><tt class="py-op">,</tt> </tt>
-<a name="L1715"></a><tt class="py-lineno">1715</tt>  <tt class="py-line">                  <tt class="py-param">connection_type</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="L1716"></a><tt class="py-lineno">1716</tt>  <tt class="py-line">    <tt class="py-docstring">"""Modify the request headers to add the user-agent."""</tt> </tt>
-<a name="L1717"></a><tt class="py-lineno">1717</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">headers</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
-<a name="L1718"></a><tt class="py-lineno">1718</tt>  <tt class="py-line">      <tt class="py-name">headers</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-op">}</tt> </tt>
-<a name="L1719"></a><tt class="py-lineno">1719</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">method</tt> <tt class="py-op">==</tt> <tt class="py-string">'PATCH'</tt><tt class="py-op">:</tt> </tt>
-<a name="L1720"></a><tt class="py-lineno">1720</tt>  <tt class="py-line">      <tt class="py-keyword">if</tt> <tt class="py-string">'oauth_token'</tt> <tt class="py-keyword">in</tt> <tt class="py-name">headers</tt><tt class="py-op">.</tt><tt id="link-317" class="py-name"><a title="googleapiclient.discovery_cache.appengine_memcache.Cache.get
+<a name="L1715"></a><tt class="py-lineno">1715</tt>  <tt class="py-line"> </tt>
+<a name="L1716"></a><tt class="py-lineno">1716</tt>  <tt class="py-line">  <tt class="py-comment"># The closure that will replace 'httplib2.Http.request'.</tt> </tt>
+<a name="L1717"></a><tt class="py-lineno">1717</tt>  <tt class="py-line">  <tt class="py-keyword">def</tt> <tt class="py-def-name">new_request</tt><tt class="py-op">(</tt><tt class="py-param">uri</tt><tt class="py-op">,</tt> <tt class="py-param">method</tt><tt class="py-op">=</tt><tt class="py-string">'GET'</tt><tt class="py-op">,</tt> <tt class="py-param">body</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-param">headers</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> </tt>
+<a name="L1718"></a><tt class="py-lineno">1718</tt>  <tt class="py-line">                  <tt class="py-param">redirections</tt><tt class="py-op">=</tt><tt class="py-name">httplib2</tt><tt class="py-op">.</tt><tt class="py-name">DEFAULT_MAX_REDIRECTS</tt><tt class="py-op">,</tt> </tt>
+<a name="L1719"></a><tt class="py-lineno">1719</tt>  <tt class="py-line">                  <tt class="py-param">connection_type</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L1720"></a><tt class="py-lineno">1720</tt>  <tt class="py-line">    <tt class="py-docstring">"""Modify the request headers to add the user-agent."""</tt> </tt>
+<a name="L1721"></a><tt class="py-lineno">1721</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">headers</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L1722"></a><tt class="py-lineno">1722</tt>  <tt class="py-line">      <tt class="py-name">headers</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-op">}</tt> </tt>
+<a name="L1723"></a><tt class="py-lineno">1723</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt class="py-name">method</tt> <tt class="py-op">==</tt> <tt class="py-string">'PATCH'</tt><tt class="py-op">:</tt> </tt>
+<a name="L1724"></a><tt class="py-lineno">1724</tt>  <tt class="py-line">      <tt class="py-keyword">if</tt> <tt class="py-string">'oauth_token'</tt> <tt class="py-keyword">in</tt> <tt class="py-name">headers</tt><tt class="py-op">.</tt><tt id="link-317" class="py-name"><a title="googleapiclient.discovery_cache.appengine_memcache.Cache.get
 googleapiclient.discovery_cache.base.Cache.get
 googleapiclient.discovery_cache.file_cache.Cache.get
 googleapiclient.schema.Schemas.get" class="py-name" href="#" onclick="return doclink('link-317', 'get', 'link-36');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">'authorization'</tt><tt class="py-op">,</tt> <tt class="py-string">''</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="L1721"></a><tt class="py-lineno">1721</tt>  <tt class="py-line">        <tt id="link-318" class="py-name"><a title="googleapiclient.discovery_cache.LOGGER
+<a name="L1725"></a><tt class="py-lineno">1725</tt>  <tt class="py-line">        <tt id="link-318" class="py-name"><a title="googleapiclient.discovery_cache.LOGGER
 googleapiclient.discovery_cache.appengine_memcache.LOGGER
 googleapiclient.discovery_cache.file_cache.LOGGER
 googleapiclient.http.LOGGER
 googleapiclient.model.LOGGER" class="py-name" href="#" onclick="return doclink('link-318', 'LOGGER', 'link-25');">LOGGER</a></tt><tt class="py-op">.</tt><tt class="py-name">warning</tt><tt class="py-op">(</tt> </tt>
-<a name="L1722"></a><tt class="py-lineno">1722</tt>  <tt class="py-line">            <tt class="py-string">'OAuth 1.0 request made with Credentials after tunnel_patch.'</tt><tt class="py-op">)</tt> </tt>
-<a name="L1723"></a><tt class="py-lineno">1723</tt>  <tt class="py-line">      <tt class="py-name">headers</tt><tt class="py-op">[</tt><tt class="py-string">'x-http-method-override'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-string">"PATCH"</tt> </tt>
-<a name="L1724"></a><tt class="py-lineno">1724</tt>  <tt class="py-line">      <tt class="py-name">method</tt> <tt class="py-op">=</tt> <tt class="py-string">'POST'</tt> </tt>
-<a name="L1725"></a><tt class="py-lineno">1725</tt>  <tt class="py-line">    <tt class="py-name">resp</tt><tt class="py-op">,</tt> <tt class="py-name">content</tt> <tt class="py-op">=</tt> <tt class="py-name">request_orig</tt><tt class="py-op">(</tt><tt class="py-name">uri</tt><tt class="py-op">,</tt> <tt class="py-name">method</tt><tt class="py-op">,</tt> <tt id="link-319" class="py-name"><a title="googleapiclient.channel.Channel.body" class="py-name" href="#" onclick="return doclink('link-319', 'body', 'link-69');">body</a></tt><tt class="py-op">,</tt> <tt class="py-name">headers</tt><tt class="py-op">,</tt> </tt>
-<a name="L1726"></a><tt class="py-lineno">1726</tt>  <tt class="py-line">                        <tt class="py-name">redirections</tt><tt class="py-op">,</tt> <tt class="py-name">connection_type</tt><tt class="py-op">)</tt> </tt>
-<a name="L1727"></a><tt class="py-lineno">1727</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-name">resp</tt><tt class="py-op">,</tt> <tt class="py-name">content</tt> </tt>
-</div><a name="L1728"></a><tt class="py-lineno">1728</tt>  <tt class="py-line"> </tt>
-<a name="L1729"></a><tt class="py-lineno">1729</tt>  <tt class="py-line">  <tt id="link-320" class="py-name"><a title="googleapiclient.http" class="py-name" href="#" onclick="return doclink('link-320', 'http', 'link-33');">http</a></tt><tt class="py-op">.</tt><tt id="link-321" class="py-name"><a title="googleapiclient.http.HttpMock.request
+<a name="L1726"></a><tt class="py-lineno">1726</tt>  <tt class="py-line">            <tt class="py-string">'OAuth 1.0 request made with Credentials after tunnel_patch.'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1727"></a><tt class="py-lineno">1727</tt>  <tt class="py-line">      <tt class="py-name">headers</tt><tt class="py-op">[</tt><tt class="py-string">'x-http-method-override'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-string">"PATCH"</tt> </tt>
+<a name="L1728"></a><tt class="py-lineno">1728</tt>  <tt class="py-line">      <tt class="py-name">method</tt> <tt class="py-op">=</tt> <tt class="py-string">'POST'</tt> </tt>
+<a name="L1729"></a><tt class="py-lineno">1729</tt>  <tt class="py-line">    <tt class="py-name">resp</tt><tt class="py-op">,</tt> <tt class="py-name">content</tt> <tt class="py-op">=</tt> <tt class="py-name">request_orig</tt><tt class="py-op">(</tt><tt class="py-name">uri</tt><tt class="py-op">,</tt> <tt class="py-name">method</tt><tt class="py-op">,</tt> <tt id="link-319" class="py-name"><a title="googleapiclient.channel.Channel.body" class="py-name" href="#" onclick="return doclink('link-319', 'body', 'link-69');">body</a></tt><tt class="py-op">,</tt> <tt class="py-name">headers</tt><tt class="py-op">,</tt> </tt>
+<a name="L1730"></a><tt class="py-lineno">1730</tt>  <tt class="py-line">                        <tt class="py-name">redirections</tt><tt class="py-op">,</tt> <tt class="py-name">connection_type</tt><tt class="py-op">)</tt> </tt>
+<a name="L1731"></a><tt class="py-lineno">1731</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-name">resp</tt><tt class="py-op">,</tt> <tt class="py-name">content</tt> </tt>
+</div><a name="L1732"></a><tt class="py-lineno">1732</tt>  <tt class="py-line"> </tt>
+<a name="L1733"></a><tt class="py-lineno">1733</tt>  <tt class="py-line">  <tt id="link-320" class="py-name"><a title="googleapiclient.http" class="py-name" href="#" onclick="return doclink('link-320', 'http', 'link-33');">http</a></tt><tt class="py-op">.</tt><tt id="link-321" class="py-name"><a title="googleapiclient.http.HttpMock.request
 googleapiclient.http.HttpMockSequence.request
 googleapiclient.model.BaseModel.request
 googleapiclient.model.Model.request" class="py-name" href="#" onclick="return doclink('link-321', 'request', 'link-34');">request</a></tt> <tt class="py-op">=</tt> <tt class="py-name">new_request</tt> </tt>
-<a name="L1730"></a><tt class="py-lineno">1730</tt>  <tt class="py-line">  <tt class="py-keyword">return</tt> <tt id="link-322" class="py-name"><a title="googleapiclient.http" class="py-name" href="#" onclick="return doclink('link-322', 'http', 'link-33');">http</a></tt> </tt>
-</div><a name="L1731"></a><tt class="py-lineno">1731</tt>  <tt class="py-line"> </tt><script type="text/javascript">
+<a name="L1734"></a><tt class="py-lineno">1734</tt>  <tt class="py-line">  <tt class="py-keyword">return</tt> <tt id="link-322" class="py-name"><a title="googleapiclient.http" class="py-name" href="#" onclick="return doclink('link-322', 'http', 'link-33');">http</a></tt> </tt>
+</div><a name="L1735"></a><tt class="py-lineno">1735</tt>  <tt class="py-line"> </tt><script type="text/javascript">
 <!--
 expandto(location.href);
 // -->
@@ -2164,7 +2168,7 @@
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Tue Nov  1 17:02:51 2016
+    Generated by Epydoc 3.0.1 on Thu Jan  5 12:55:06 2017
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/epy/googleapiclient.http.BatchHttpRequest-class.html b/docs/epy/googleapiclient.http.BatchHttpRequest-class.html
index 530bcb9..a9915f9 100644
--- a/docs/epy/googleapiclient.http.BatchHttpRequest-class.html
+++ b/docs/epy/googleapiclient.http.BatchHttpRequest-class.html
@@ -59,10 +59,10 @@
 <h1 class="epydoc">Class BatchHttpRequest</h1><p class="nomargin-top"><span class="codelink"><a href="googleapiclient.http-pysrc.html#BatchHttpRequest">source&nbsp;code</a></span></p>
 <center>
 <center>  <map id="uml_class_diagram_for_googleap_24" name="uml_class_diagram_for_googleap_24">
-<area shape="rect" id="node1_3" href="googleapiclient.http.BatchHttpRequest-class.html#__init__" title="Constructor for a BatchHttpRequest." alt="" coords="17,40,328,60"/>
-<area shape="rect" id="node1_4" href="googleapiclient.http.BatchHttpRequest-class.html#add" title="Add a new request." alt="" coords="17,60,328,80"/>
-<area shape="rect" id="node1_5" href="googleapiclient.http.BatchHttpRequest-class.html#execute" title="Execute all the requests as a single batched HTTP request." alt="" coords="17,80,328,100"/>
-<area shape="rect" id="node1" href="googleapiclient.http.BatchHttpRequest-class.html" title="Batches multiple HttpRequest objects into a single HTTP request." alt="" coords="5,6,339,106"/>
+<area shape="rect" id="node1_3" href="googleapiclient.http.BatchHttpRequest-class.html#__init__" title="Constructor for a BatchHttpRequest." alt="" coords="18,36,331,55"/>
+<area shape="rect" id="node1_4" href="googleapiclient.http.BatchHttpRequest-class.html#add" title="Add a new request." alt="" coords="18,55,331,73"/>
+<area shape="rect" id="node1_5" href="googleapiclient.http.BatchHttpRequest-class.html#execute" title="Execute all the requests as a single batched HTTP request." alt="" coords="18,73,331,92"/>
+<area shape="rect" id="node1" href="googleapiclient.http.BatchHttpRequest-class.html" title="Batches multiple HttpRequest objects into a single HTTP request." alt="" coords="5,5,343,99"/>
 </map>
   <img src="uml_class_diagram_for_googleap_24.gif" alt='' usemap="#uml_class_diagram_for_googleap_24" ismap="ismap" class="graph-without-title" />
 </center>
@@ -740,7 +740,7 @@
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Tue Nov  1 17:02:50 2016
+    Generated by Epydoc 3.0.1 on Thu Jan  5 12:55:04 2017
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/epy/googleapiclient.http.HttpMock-class.html b/docs/epy/googleapiclient.http.HttpMock-class.html
index 8f7576b..b3e8fd7 100644
--- a/docs/epy/googleapiclient.http.HttpMock-class.html
+++ b/docs/epy/googleapiclient.http.HttpMock-class.html
@@ -59,9 +59,9 @@
 <h1 class="epydoc">Class HttpMock</h1><p class="nomargin-top"><span class="codelink"><a href="googleapiclient.http-pysrc.html#HttpMock">source&nbsp;code</a></span></p>
 <center>
 <center>  <map id="uml_class_diagram_for_googleap_25" name="uml_class_diagram_for_googleap_25">
-<area shape="rect" id="node1_2" href="googleapiclient.http.HttpMock-class.html#__init__" title="Args:..." alt="" coords="17,39,611,59"/>
-<area shape="rect" id="node1_3" href="googleapiclient.http.HttpMock-class.html#request" title="googleapiclient.http.HttpMock.request" alt="" coords="17,59,611,79"/>
-<area shape="rect" id="node1" href="googleapiclient.http.HttpMock-class.html" title="Mock of httplib2.Http" alt="" coords="5,5,622,85"/>
+<area shape="rect" id="node1_2" href="googleapiclient.http.HttpMock-class.html#__init__" title="Args:..." alt="" coords="17,36,617,55"/>
+<area shape="rect" id="node1_3" href="googleapiclient.http.HttpMock-class.html#request" title="googleapiclient.http.HttpMock.request" alt="" coords="17,55,617,73"/>
+<area shape="rect" id="node1" href="googleapiclient.http.HttpMock-class.html" title="Mock of httplib2.Http" alt="" coords="5,5,629,80"/>
 </map>
   <img src="uml_class_diagram_for_googleap_25.gif" alt='' usemap="#uml_class_diagram_for_googleap_25" ismap="ismap" class="graph-without-title" />
 </center>
@@ -250,7 +250,7 @@
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Tue Nov  1 17:02:50 2016
+    Generated by Epydoc 3.0.1 on Thu Jan  5 12:55:04 2017
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/epy/googleapiclient.http.HttpMockSequence-class.html b/docs/epy/googleapiclient.http.HttpMockSequence-class.html
index 3426ce5..7a5ba17 100644
--- a/docs/epy/googleapiclient.http.HttpMockSequence-class.html
+++ b/docs/epy/googleapiclient.http.HttpMockSequence-class.html
@@ -59,9 +59,9 @@
 <h1 class="epydoc">Class HttpMockSequence</h1><p class="nomargin-top"><span class="codelink"><a href="googleapiclient.http-pysrc.html#HttpMockSequence">source&nbsp;code</a></span></p>
 <center>
 <center>  <map id="uml_class_diagram_for_googleap_26" name="uml_class_diagram_for_googleap_26">
-<area shape="rect" id="node1_2" href="googleapiclient.http.HttpMockSequence-class.html#__init__" title="Args:..." alt="" coords="17,39,611,59"/>
-<area shape="rect" id="node1_3" href="googleapiclient.http.HttpMockSequence-class.html#request" title="googleapiclient.http.HttpMockSequence.request" alt="" coords="17,59,611,79"/>
-<area shape="rect" id="node1" href="googleapiclient.http.HttpMockSequence-class.html" title="Mock of httplib2.Http" alt="" coords="5,5,622,85"/>
+<area shape="rect" id="node1_2" href="googleapiclient.http.HttpMockSequence-class.html#__init__" title="Args:..." alt="" coords="17,36,617,55"/>
+<area shape="rect" id="node1_3" href="googleapiclient.http.HttpMockSequence-class.html#request" title="googleapiclient.http.HttpMockSequence.request" alt="" coords="17,55,617,73"/>
+<area shape="rect" id="node1" href="googleapiclient.http.HttpMockSequence-class.html" title="Mock of httplib2.Http" alt="" coords="5,5,629,80"/>
 </map>
   <img src="uml_class_diagram_for_googleap_26.gif" alt='' usemap="#uml_class_diagram_for_googleap_26" ismap="ismap" class="graph-without-title" />
 </center>
@@ -267,7 +267,7 @@
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Tue Nov  1 17:02:50 2016
+    Generated by Epydoc 3.0.1 on Thu Jan  5 12:55:04 2017
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/epy/googleapiclient.http.HttpRequest-class.html b/docs/epy/googleapiclient.http.HttpRequest-class.html
index 7a16b74..5b2d0a5 100644
--- a/docs/epy/googleapiclient.http.HttpRequest-class.html
+++ b/docs/epy/googleapiclient.http.HttpRequest-class.html
@@ -59,13 +59,13 @@
 <h1 class="epydoc">Class HttpRequest</h1><p class="nomargin-top"><span class="codelink"><a href="googleapiclient.http-pysrc.html#HttpRequest">source&nbsp;code</a></span></p>
 <center>
 <center>  <map id="uml_class_diagram_for_googleap_27" name="uml_class_diagram_for_googleap_27">
-<area shape="rect" id="node1_6" href="googleapiclient.http.HttpRequest-class.html#__init__" title="Constructor for an HttpRequest." alt="" coords="17,39,677,59"/>
-<area shape="rect" id="node1_7" href="googleapiclient.http.HttpRequest-class.html#execute" title="Execute the request." alt="" coords="17,59,677,79"/>
-<area shape="rect" id="node1_8" href="googleapiclient.http.HttpRequest-class.html#add_response_callback" title="add_response_headers_callback" alt="" coords="17,79,677,99"/>
-<area shape="rect" id="node1_9" href="googleapiclient.http.HttpRequest-class.html#next_chunk" title="Execute the next step of a resumable upload." alt="" coords="17,99,677,119"/>
-<area shape="rect" id="node1_10" href="googleapiclient.http.HttpRequest-class.html#to_json" title="Returns a JSON representation of the HttpRequest." alt="" coords="17,119,677,139"/>
-<area shape="rect" id="node1_11" href="googleapiclient.http.HttpRequest-class.html#from_json" title="Returns an HttpRequest populated with info from a JSON object." alt="" coords="17,139,677,159"/>
-<area shape="rect" id="node1" href="googleapiclient.http.HttpRequest-class.html" title="Encapsulates a single HTTP request." alt="" coords="5,5,689,165"/>
+<area shape="rect" id="node1_6" href="googleapiclient.http.HttpRequest-class.html#__init__" title="Constructor for an HttpRequest." alt="" coords="17,36,684,55"/>
+<area shape="rect" id="node1_7" href="googleapiclient.http.HttpRequest-class.html#execute" title="Execute the request." alt="" coords="17,55,684,73"/>
+<area shape="rect" id="node1_8" href="googleapiclient.http.HttpRequest-class.html#add_response_callback" title="add_response_headers_callback" alt="" coords="17,73,684,92"/>
+<area shape="rect" id="node1_9" href="googleapiclient.http.HttpRequest-class.html#next_chunk" title="Execute the next step of a resumable upload." alt="" coords="17,92,684,111"/>
+<area shape="rect" id="node1_10" href="googleapiclient.http.HttpRequest-class.html#to_json" title="Returns a JSON representation of the HttpRequest." alt="" coords="17,111,684,129"/>
+<area shape="rect" id="node1_11" href="googleapiclient.http.HttpRequest-class.html#from_json" title="Returns an HttpRequest populated with info from a JSON object." alt="" coords="17,129,684,148"/>
+<area shape="rect" id="node1" href="googleapiclient.http.HttpRequest-class.html" title="Encapsulates a single HTTP request." alt="" coords="5,5,696,155"/>
 </map>
   <img src="uml_class_diagram_for_googleap_27.gif" alt='' usemap="#uml_class_diagram_for_googleap_27" ismap="ismap" class="graph-without-title" />
 </center>
@@ -561,7 +561,7 @@
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Tue Nov  1 17:02:50 2016
+    Generated by Epydoc 3.0.1 on Thu Jan  5 12:55:04 2017
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/epy/googleapiclient.http.HttpRequestMock-class.html b/docs/epy/googleapiclient.http.HttpRequestMock-class.html
index 902b193..a0d3257 100644
--- a/docs/epy/googleapiclient.http.HttpRequestMock-class.html
+++ b/docs/epy/googleapiclient.http.HttpRequestMock-class.html
@@ -59,9 +59,9 @@
 <h1 class="epydoc">Class HttpRequestMock</h1><p class="nomargin-top"><span class="codelink"><a href="googleapiclient.http-pysrc.html#HttpRequestMock">source&nbsp;code</a></span></p>
 <center>
 <center>  <map id="uml_class_diagram_for_googleap_28" name="uml_class_diagram_for_googleap_28">
-<area shape="rect" id="node1_2" href="googleapiclient.http.HttpRequestMock-class.html#__init__" title="Constructor for HttpRequestMock" alt="" coords="16,39,240,59"/>
-<area shape="rect" id="node1_3" href="googleapiclient.http.HttpRequestMock-class.html#execute" title="Execute the request." alt="" coords="16,59,240,79"/>
-<area shape="rect" id="node1" href="googleapiclient.http.HttpRequestMock-class.html" title="Mock of HttpRequest." alt="" coords="4,5,252,85"/>
+<area shape="rect" id="node1_2" href="googleapiclient.http.HttpRequestMock-class.html#__init__" title="Constructor for HttpRequestMock" alt="" coords="17,36,241,55"/>
+<area shape="rect" id="node1_3" href="googleapiclient.http.HttpRequestMock-class.html#execute" title="Execute the request." alt="" coords="17,55,241,73"/>
+<area shape="rect" id="node1" href="googleapiclient.http.HttpRequestMock-class.html" title="Mock of HttpRequest." alt="" coords="5,5,253,80"/>
 </map>
   <img src="uml_class_diagram_for_googleap_28.gif" alt='' usemap="#uml_class_diagram_for_googleap_28" ismap="ismap" class="graph-without-title" />
 </center>
@@ -279,7 +279,7 @@
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Tue Nov  1 17:02:50 2016
+    Generated by Epydoc 3.0.1 on Thu Jan  5 12:55:04 2017
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/epy/googleapiclient.http.MediaDownloadProgress-class.html b/docs/epy/googleapiclient.http.MediaDownloadProgress-class.html
index 97380f6..45362fa 100644
--- a/docs/epy/googleapiclient.http.MediaDownloadProgress-class.html
+++ b/docs/epy/googleapiclient.http.MediaDownloadProgress-class.html
@@ -59,9 +59,9 @@
 <h1 class="epydoc">Class MediaDownloadProgress</h1><p class="nomargin-top"><span class="codelink"><a href="googleapiclient.http-pysrc.html#MediaDownloadProgress">source&nbsp;code</a></span></p>
 <center>
 <center>  <map id="uml_class_diagram_for_googleap_29" name="uml_class_diagram_for_googleap_29">
-<area shape="rect" id="node1_2" href="googleapiclient.http.MediaDownloadProgress-class.html#__init__" title="Constructor." alt="" coords="17,39,288,59"/>
-<area shape="rect" id="node1_3" href="googleapiclient.http.MediaDownloadProgress-class.html#progress" title="Percent of download completed, as a float." alt="" coords="17,59,288,79"/>
-<area shape="rect" id="node1" href="googleapiclient.http.MediaDownloadProgress-class.html" title="Status of a resumable download." alt="" coords="5,5,299,85"/>
+<area shape="rect" id="node1_2" href="googleapiclient.http.MediaDownloadProgress-class.html#__init__" title="Constructor." alt="" coords="18,36,291,55"/>
+<area shape="rect" id="node1_3" href="googleapiclient.http.MediaDownloadProgress-class.html#progress" title="Percent of download completed, as a float." alt="" coords="18,55,291,73"/>
+<area shape="rect" id="node1" href="googleapiclient.http.MediaDownloadProgress-class.html" title="Status of a resumable download." alt="" coords="5,5,303,80"/>
 </map>
   <img src="uml_class_diagram_for_googleap_29.gif" alt='' usemap="#uml_class_diagram_for_googleap_29" ismap="ismap" class="graph-without-title" />
 </center>
@@ -272,7 +272,7 @@
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Tue Nov  1 17:02:50 2016
+    Generated by Epydoc 3.0.1 on Thu Jan  5 12:55:04 2017
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/epy/googleapiclient.http.MediaFileUpload-class.html b/docs/epy/googleapiclient.http.MediaFileUpload-class.html
index 2b812dd..aaf5e4d 100644
--- a/docs/epy/googleapiclient.http.MediaFileUpload-class.html
+++ b/docs/epy/googleapiclient.http.MediaFileUpload-class.html
@@ -59,20 +59,20 @@
 <h1 class="epydoc">Class MediaFileUpload</h1><p class="nomargin-top"><span class="codelink"><a href="googleapiclient.http-pysrc.html#MediaFileUpload">source&nbsp;code</a></span></p>
 <center>
 <center>  <map id="uml_class_diagram_for_googleap_30" name="uml_class_diagram_for_googleap_30">
-<area shape="rect" id="node1_11" href="googleapiclient.http.MediaFileUpload-class.html#__init__" title="Constructor." alt="" coords="17,320,597,340"/>
-<area shape="rect" id="node1_12" href="googleapiclient.http.MediaFileUpload-class.html#to_json" title="Creating a JSON representation of an instance of MediaFileUpload." alt="" coords="17,340,597,360"/>
-<area shape="rect" id="node1_13" href="googleapiclient.http.MediaFileUpload-class.html#from_json" title="googleapiclient.http.MediaFileUpload.from_json" alt="" coords="17,360,597,380"/>
-<area shape="rect" id="node1" href="googleapiclient.http.MediaFileUpload-class.html" title="A MediaUpload for a file." alt="" coords="5,286,609,386"/>
-<area shape="rect" id="node2_14" href="googleapiclient.http.MediaIoBaseUpload-class.html#chunksize" title="Chunk size for resumable uploads." alt="" coords="224,120,392,140"/>
-<area shape="rect" id="node2_15" href="googleapiclient.http.MediaIoBaseUpload-class.html#mimetype" title="Mime type of the body." alt="" coords="224,140,392,160"/>
-<area shape="rect" id="node2_16" href="googleapiclient.http.MediaIoBaseUpload-class.html#size" title="Size of upload." alt="" coords="224,160,392,180"/>
-<area shape="rect" id="node2_17" href="googleapiclient.http.MediaIoBaseUpload-class.html#resumable" title="Whether this upload is resumable." alt="" coords="224,180,392,200"/>
-<area shape="rect" id="node2_18" href="googleapiclient.http.MediaIoBaseUpload-class.html#getbytes" title="Get bytes from the media." alt="" coords="224,200,392,220"/>
-<area shape="rect" id="node2_19" href="googleapiclient.http.MediaIoBaseUpload-class.html#has_stream" title="Does the underlying upload support a streaming interface." alt="" coords="224,220,392,240"/>
-<area shape="rect" id="node2_20" href="googleapiclient.http.MediaIoBaseUpload-class.html#stream" title="A stream interface to the data being uploaded." alt="" coords="224,240,392,260"/>
-<area shape="rect" id="node2" href="googleapiclient.http.MediaIoBaseUpload-class.html" title="A MediaUpload for a io.Base objects." alt="" coords="212,86,404,266"/>
-<area shape="rect" id="node3_21" href="googleapiclient.http.MediaUpload-class.html#new_from_json" title="Utility class method to instantiate a MediaUpload subclass from a JSON representation produced by to_json()." alt="" coords="240,40,376,60"/>
-<area shape="rect" id="node3" href="googleapiclient.http.MediaUpload-class.html" title="Describes a media object to upload." alt="" coords="228,6,388,66"/>
+<area shape="rect" id="node1_11" href="googleapiclient.http.MediaFileUpload-class.html#__init__" title="Constructor." alt="" coords="17,297,596,316"/>
+<area shape="rect" id="node1_12" href="googleapiclient.http.MediaFileUpload-class.html#to_json" title="Creating a JSON representation of an instance of MediaFileUpload." alt="" coords="17,316,596,335"/>
+<area shape="rect" id="node1_13" href="googleapiclient.http.MediaFileUpload-class.html#from_json" title="googleapiclient.http.MediaFileUpload.from_json" alt="" coords="17,335,596,353"/>
+<area shape="rect" id="node1" href="googleapiclient.http.MediaFileUpload-class.html" title="A MediaUpload for a file." alt="" coords="5,267,608,360"/>
+<area shape="rect" id="node2_14" href="googleapiclient.http.MediaIoBaseUpload-class.html#chunksize" title="Chunk size for resumable uploads." alt="" coords="223,111,391,129"/>
+<area shape="rect" id="node2_15" href="googleapiclient.http.MediaIoBaseUpload-class.html#mimetype" title="Mime type of the body." alt="" coords="223,129,391,148"/>
+<area shape="rect" id="node2_16" href="googleapiclient.http.MediaIoBaseUpload-class.html#size" title="Size of upload." alt="" coords="223,148,391,167"/>
+<area shape="rect" id="node2_17" href="googleapiclient.http.MediaIoBaseUpload-class.html#resumable" title="Whether this upload is resumable." alt="" coords="223,167,391,185"/>
+<area shape="rect" id="node2_18" href="googleapiclient.http.MediaIoBaseUpload-class.html#getbytes" title="Get bytes from the media." alt="" coords="223,185,391,204"/>
+<area shape="rect" id="node2_19" href="googleapiclient.http.MediaIoBaseUpload-class.html#has_stream" title="Does the underlying upload support a streaming interface." alt="" coords="223,204,391,223"/>
+<area shape="rect" id="node2_20" href="googleapiclient.http.MediaIoBaseUpload-class.html#stream" title="A stream interface to the data being uploaded." alt="" coords="223,223,391,241"/>
+<area shape="rect" id="node2" href="googleapiclient.http.MediaIoBaseUpload-class.html" title="A MediaUpload for a io.Base objects." alt="" coords="211,80,403,248"/>
+<area shape="rect" id="node3_21" href="googleapiclient.http.MediaUpload-class.html#new_from_json" title="Utility class method to instantiate a MediaUpload subclass from a JSON representation produced by to_json()." alt="" coords="239,36,373,55"/>
+<area shape="rect" id="node3" href="googleapiclient.http.MediaUpload-class.html" title="Describes a media object to upload." alt="" coords="226,5,385,61"/>
 </map>
   <img src="uml_class_diagram_for_googleap_30.gif" alt='' usemap="#uml_class_diagram_for_googleap_30" ismap="ismap" class="graph-without-title" />
 </center>
@@ -392,7 +392,7 @@
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Tue Nov  1 17:02:50 2016
+    Generated by Epydoc 3.0.1 on Thu Jan  5 12:55:04 2017
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/epy/googleapiclient.http.MediaInMemoryUpload-class.html b/docs/epy/googleapiclient.http.MediaInMemoryUpload-class.html
index 2a2c897..193854f 100644
--- a/docs/epy/googleapiclient.http.MediaInMemoryUpload-class.html
+++ b/docs/epy/googleapiclient.http.MediaInMemoryUpload-class.html
@@ -59,19 +59,19 @@
 <h1 class="epydoc">Class MediaInMemoryUpload</h1><p class="nomargin-top"><span class="codelink"><a href="googleapiclient.http-pysrc.html#MediaInMemoryUpload">source&nbsp;code</a></span></p>
 <center>
 <center>  <map id="uml_class_diagram_for_googleap_31" name="uml_class_diagram_for_googleap_31">
-<area shape="rect" id="node1_10" href="googleapiclient.http.MediaInMemoryUpload-class.html#__init__" title="Create a new MediaInMemoryUpload." alt="" coords="17,339,689,359"/>
-<area shape="rect" id="node1" href="googleapiclient.http.MediaInMemoryUpload-class.html" title="MediaUpload for a chunk of bytes." alt="" coords="5,305,701,365"/>
-<area shape="rect" id="node2_11" href="googleapiclient.http.MediaIoBaseUpload-class.html#chunksize" title="Chunk size for resumable uploads." alt="" coords="269,119,437,139"/>
-<area shape="rect" id="node2_12" href="googleapiclient.http.MediaIoBaseUpload-class.html#mimetype" title="Mime type of the body." alt="" coords="269,139,437,159"/>
-<area shape="rect" id="node2_13" href="googleapiclient.http.MediaIoBaseUpload-class.html#size" title="Size of upload." alt="" coords="269,159,437,179"/>
-<area shape="rect" id="node2_14" href="googleapiclient.http.MediaIoBaseUpload-class.html#resumable" title="Whether this upload is resumable." alt="" coords="269,179,437,199"/>
-<area shape="rect" id="node2_15" href="googleapiclient.http.MediaIoBaseUpload-class.html#getbytes" title="Get bytes from the media." alt="" coords="269,199,437,219"/>
-<area shape="rect" id="node2_16" href="googleapiclient.http.MediaIoBaseUpload-class.html#has_stream" title="Does the underlying upload support a streaming interface." alt="" coords="269,219,437,239"/>
-<area shape="rect" id="node2_17" href="googleapiclient.http.MediaIoBaseUpload-class.html#stream" title="A stream interface to the data being uploaded." alt="" coords="269,239,437,259"/>
-<area shape="rect" id="node2_18" href="googleapiclient.http.MediaIoBaseUpload-class.html#to_json" title="This upload type is not serializable." alt="" coords="269,259,437,279"/>
-<area shape="rect" id="node2" href="googleapiclient.http.MediaIoBaseUpload-class.html" title="A MediaUpload for a io.Base objects." alt="" coords="257,85,449,285"/>
-<area shape="rect" id="node3_19" href="googleapiclient.http.MediaUpload-class.html#new_from_json" title="Utility class method to instantiate a MediaUpload subclass from a JSON representation produced by to_json()." alt="" coords="285,40,421,60"/>
-<area shape="rect" id="node3" href="googleapiclient.http.MediaUpload-class.html" title="Describes a media object to upload." alt="" coords="273,6,433,66"/>
+<area shape="rect" id="node1_10" href="googleapiclient.http.MediaInMemoryUpload-class.html#__init__" title="Create a new MediaInMemoryUpload." alt="" coords="17,316,689,335"/>
+<area shape="rect" id="node1" href="googleapiclient.http.MediaInMemoryUpload-class.html" title="MediaUpload for a chunk of bytes." alt="" coords="5,285,701,341"/>
+<area shape="rect" id="node2_11" href="googleapiclient.http.MediaIoBaseUpload-class.html#chunksize" title="Chunk size for resumable uploads." alt="" coords="269,111,437,129"/>
+<area shape="rect" id="node2_12" href="googleapiclient.http.MediaIoBaseUpload-class.html#mimetype" title="Mime type of the body." alt="" coords="269,129,437,148"/>
+<area shape="rect" id="node2_13" href="googleapiclient.http.MediaIoBaseUpload-class.html#size" title="Size of upload." alt="" coords="269,148,437,167"/>
+<area shape="rect" id="node2_14" href="googleapiclient.http.MediaIoBaseUpload-class.html#resumable" title="Whether this upload is resumable." alt="" coords="269,167,437,185"/>
+<area shape="rect" id="node2_15" href="googleapiclient.http.MediaIoBaseUpload-class.html#getbytes" title="Get bytes from the media." alt="" coords="269,185,437,204"/>
+<area shape="rect" id="node2_16" href="googleapiclient.http.MediaIoBaseUpload-class.html#has_stream" title="Does the underlying upload support a streaming interface." alt="" coords="269,204,437,223"/>
+<area shape="rect" id="node2_17" href="googleapiclient.http.MediaIoBaseUpload-class.html#stream" title="A stream interface to the data being uploaded." alt="" coords="269,223,437,241"/>
+<area shape="rect" id="node2_18" href="googleapiclient.http.MediaIoBaseUpload-class.html#to_json" title="This upload type is not serializable." alt="" coords="269,241,437,260"/>
+<area shape="rect" id="node2" href="googleapiclient.http.MediaIoBaseUpload-class.html" title="A MediaUpload for a io.Base objects." alt="" coords="257,80,449,267"/>
+<area shape="rect" id="node3_19" href="googleapiclient.http.MediaUpload-class.html#new_from_json" title="Utility class method to instantiate a MediaUpload subclass from a JSON representation produced by to_json()." alt="" coords="285,36,420,55"/>
+<area shape="rect" id="node3" href="googleapiclient.http.MediaUpload-class.html" title="Describes a media object to upload." alt="" coords="273,5,431,61"/>
 </map>
   <img src="uml_class_diagram_for_googleap_31.gif" alt='' usemap="#uml_class_diagram_for_googleap_31" ismap="ismap" class="graph-without-title" />
 </center>
@@ -297,7 +297,7 @@
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Tue Nov  1 17:02:50 2016
+    Generated by Epydoc 3.0.1 on Thu Jan  5 12:55:04 2017
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/epy/googleapiclient.http.MediaIoBaseDownload-class.html b/docs/epy/googleapiclient.http.MediaIoBaseDownload-class.html
index 2bab358..548be0b 100644
--- a/docs/epy/googleapiclient.http.MediaIoBaseDownload-class.html
+++ b/docs/epy/googleapiclient.http.MediaIoBaseDownload-class.html
@@ -59,9 +59,9 @@
 <h1 class="epydoc">Class MediaIoBaseDownload</h1><p class="nomargin-top"><span class="codelink"><a href="googleapiclient.http-pysrc.html#MediaIoBaseDownload">source&nbsp;code</a></span></p>
 <center>
 <center>  <map id="uml_class_diagram_for_googleap_32" name="uml_class_diagram_for_googleap_32">
-<area shape="rect" id="node1_2" href="googleapiclient.http.MediaIoBaseDownload-class.html#__init__" title="Constructor." alt="" coords="17,39,397,59"/>
-<area shape="rect" id="node1_3" href="googleapiclient.http.MediaIoBaseDownload-class.html#next_chunk" title="Get the next chunk of the download." alt="" coords="17,59,397,79"/>
-<area shape="rect" id="node1" href="googleapiclient.http.MediaIoBaseDownload-class.html" title="&quot;Download media resources." alt="" coords="5,5,409,85"/>
+<area shape="rect" id="node1_2" href="googleapiclient.http.MediaIoBaseDownload-class.html#__init__" title="Constructor." alt="" coords="18,36,395,55"/>
+<area shape="rect" id="node1_3" href="googleapiclient.http.MediaIoBaseDownload-class.html#next_chunk" title="Get the next chunk of the download." alt="" coords="18,55,395,73"/>
+<area shape="rect" id="node1" href="googleapiclient.http.MediaIoBaseDownload-class.html" title="&quot;Download media resources." alt="" coords="5,5,407,80"/>
 </map>
   <img src="uml_class_diagram_for_googleap_32.gif" alt='' usemap="#uml_class_diagram_for_googleap_32" ismap="ismap" class="graph-without-title" />
 </center>
@@ -314,7 +314,7 @@
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Tue Nov  1 17:02:50 2016
+    Generated by Epydoc 3.0.1 on Thu Jan  5 12:55:04 2017
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/epy/googleapiclient.http.MediaIoBaseUpload-class.html b/docs/epy/googleapiclient.http.MediaIoBaseUpload-class.html
index 419f390..3c938a5 100644
--- a/docs/epy/googleapiclient.http.MediaIoBaseUpload-class.html
+++ b/docs/epy/googleapiclient.http.MediaIoBaseUpload-class.html
@@ -59,18 +59,18 @@
 <h1 class="epydoc">Class MediaIoBaseUpload</h1><p class="nomargin-top"><span class="codelink"><a href="googleapiclient.http-pysrc.html#MediaIoBaseUpload">source&nbsp;code</a></span></p>
 <center>
 <center>  <map id="uml_class_diagram_for_googleap_33" name="uml_class_diagram_for_googleap_33">
-<area shape="rect" id="node1_10" href="googleapiclient.http.MediaIoBaseUpload-class.html#__init__" title="Constructor." alt="" coords="17,120,520,140"/>
-<area shape="rect" id="node1_11" href="googleapiclient.http.MediaIoBaseUpload-class.html#chunksize" title="Chunk size for resumable uploads." alt="" coords="17,140,520,160"/>
-<area shape="rect" id="node1_12" href="googleapiclient.http.MediaIoBaseUpload-class.html#mimetype" title="Mime type of the body." alt="" coords="17,160,520,180"/>
-<area shape="rect" id="node1_13" href="googleapiclient.http.MediaIoBaseUpload-class.html#size" title="Size of upload." alt="" coords="17,180,520,200"/>
-<area shape="rect" id="node1_14" href="googleapiclient.http.MediaIoBaseUpload-class.html#resumable" title="Whether this upload is resumable." alt="" coords="17,200,520,220"/>
-<area shape="rect" id="node1_15" href="googleapiclient.http.MediaIoBaseUpload-class.html#getbytes" title="Get bytes from the media." alt="" coords="17,220,520,240"/>
-<area shape="rect" id="node1_16" href="googleapiclient.http.MediaIoBaseUpload-class.html#has_stream" title="Does the underlying upload support a streaming interface." alt="" coords="17,240,520,260"/>
-<area shape="rect" id="node1_17" href="googleapiclient.http.MediaIoBaseUpload-class.html#stream" title="A stream interface to the data being uploaded." alt="" coords="17,260,520,280"/>
-<area shape="rect" id="node1_18" href="googleapiclient.http.MediaIoBaseUpload-class.html#to_json" title="This upload type is not serializable." alt="" coords="17,280,520,300"/>
-<area shape="rect" id="node1" href="googleapiclient.http.MediaIoBaseUpload-class.html" title="A MediaUpload for a io.Base objects." alt="" coords="5,86,531,306"/>
-<area shape="rect" id="node2_19" href="googleapiclient.http.MediaUpload-class.html#new_from_json" title="Utility class method to instantiate a MediaUpload subclass from a JSON representation produced by to_json()." alt="" coords="201,40,337,60"/>
-<area shape="rect" id="node2" href="googleapiclient.http.MediaUpload-class.html" title="Describes a media object to upload." alt="" coords="189,6,349,66"/>
+<area shape="rect" id="node1_10" href="googleapiclient.http.MediaIoBaseUpload-class.html#__init__" title="Constructor." alt="" coords="18,111,518,129"/>
+<area shape="rect" id="node1_11" href="googleapiclient.http.MediaIoBaseUpload-class.html#chunksize" title="Chunk size for resumable uploads." alt="" coords="18,129,518,148"/>
+<area shape="rect" id="node1_12" href="googleapiclient.http.MediaIoBaseUpload-class.html#mimetype" title="Mime type of the body." alt="" coords="18,148,518,167"/>
+<area shape="rect" id="node1_13" href="googleapiclient.http.MediaIoBaseUpload-class.html#size" title="Size of upload." alt="" coords="18,167,518,185"/>
+<area shape="rect" id="node1_14" href="googleapiclient.http.MediaIoBaseUpload-class.html#resumable" title="Whether this upload is resumable." alt="" coords="18,185,518,204"/>
+<area shape="rect" id="node1_15" href="googleapiclient.http.MediaIoBaseUpload-class.html#getbytes" title="Get bytes from the media." alt="" coords="18,204,518,223"/>
+<area shape="rect" id="node1_16" href="googleapiclient.http.MediaIoBaseUpload-class.html#has_stream" title="Does the underlying upload support a streaming interface." alt="" coords="18,223,518,241"/>
+<area shape="rect" id="node1_17" href="googleapiclient.http.MediaIoBaseUpload-class.html#stream" title="A stream interface to the data being uploaded." alt="" coords="18,241,518,260"/>
+<area shape="rect" id="node1_18" href="googleapiclient.http.MediaIoBaseUpload-class.html#to_json" title="This upload type is not serializable." alt="" coords="18,260,518,279"/>
+<area shape="rect" id="node1" href="googleapiclient.http.MediaIoBaseUpload-class.html" title="A MediaUpload for a io.Base objects." alt="" coords="5,80,529,285"/>
+<area shape="rect" id="node2_19" href="googleapiclient.http.MediaUpload-class.html#new_from_json" title="Utility class method to instantiate a MediaUpload subclass from a JSON representation produced by to_json()." alt="" coords="201,36,335,55"/>
+<area shape="rect" id="node2" href="googleapiclient.http.MediaUpload-class.html" title="Describes a media object to upload." alt="" coords="188,5,347,61"/>
 </map>
   <img src="uml_class_diagram_for_googleap_33.gif" alt='' usemap="#uml_class_diagram_for_googleap_33" ismap="ismap" class="graph-without-title" />
 </center>
@@ -674,7 +674,7 @@
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Tue Nov  1 17:02:50 2016
+    Generated by Epydoc 3.0.1 on Thu Jan  5 12:55:04 2017
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/epy/googleapiclient.http.MediaUpload-class.html b/docs/epy/googleapiclient.http.MediaUpload-class.html
index e90d6db..1386a80 100644
--- a/docs/epy/googleapiclient.http.MediaUpload-class.html
+++ b/docs/epy/googleapiclient.http.MediaUpload-class.html
@@ -59,16 +59,16 @@
 <h1 class="epydoc">Class MediaUpload</h1><p class="nomargin-top"><span class="codelink"><a href="googleapiclient.http-pysrc.html#MediaUpload">source&nbsp;code</a></span></p>
 <center>
 <center>  <map id="uml_class_diagram_for_googleap_34" name="uml_class_diagram_for_googleap_34">
-<area shape="rect" id="node1_9" href="googleapiclient.http.MediaUpload-class.html#chunksize" title="Chunk size for resumable uploads." alt="" coords="17,40,172,60"/>
-<area shape="rect" id="node1_10" href="googleapiclient.http.MediaUpload-class.html#mimetype" title="Mime type of the body." alt="" coords="17,60,172,80"/>
-<area shape="rect" id="node1_11" href="googleapiclient.http.MediaUpload-class.html#size" title="Size of upload." alt="" coords="17,80,172,100"/>
-<area shape="rect" id="node1_12" href="googleapiclient.http.MediaUpload-class.html#resumable" title="Whether this upload is resumable." alt="" coords="17,100,172,120"/>
-<area shape="rect" id="node1_13" href="googleapiclient.http.MediaUpload-class.html#getbytes" title="Get bytes from the media." alt="" coords="17,120,172,140"/>
-<area shape="rect" id="node1_14" href="googleapiclient.http.MediaUpload-class.html#has_stream" title="Does the underlying upload support a streaming interface." alt="" coords="17,140,172,160"/>
-<area shape="rect" id="node1_15" href="googleapiclient.http.MediaUpload-class.html#stream" title="A stream interface to the data being uploaded." alt="" coords="17,160,172,180"/>
-<area shape="rect" id="node1_16" href="googleapiclient.http.MediaUpload-class.html#to_json" title="Create a JSON representation of an instance of MediaUpload." alt="" coords="17,180,172,200"/>
-<area shape="rect" id="node1_17" href="googleapiclient.http.MediaUpload-class.html#new_from_json" title="Utility class method to instantiate a MediaUpload subclass from a JSON representation produced by to_json()." alt="" coords="17,200,172,220"/>
-<area shape="rect" id="node1" href="googleapiclient.http.MediaUpload-class.html" title="Describes a media object to upload." alt="" coords="5,6,184,226"/>
+<area shape="rect" id="node1_9" href="googleapiclient.http.MediaUpload-class.html#chunksize" title="Chunk size for resumable uploads." alt="" coords="17,36,172,55"/>
+<area shape="rect" id="node1_10" href="googleapiclient.http.MediaUpload-class.html#mimetype" title="Mime type of the body." alt="" coords="17,55,172,73"/>
+<area shape="rect" id="node1_11" href="googleapiclient.http.MediaUpload-class.html#size" title="Size of upload." alt="" coords="17,73,172,92"/>
+<area shape="rect" id="node1_12" href="googleapiclient.http.MediaUpload-class.html#resumable" title="Whether this upload is resumable." alt="" coords="17,92,172,111"/>
+<area shape="rect" id="node1_13" href="googleapiclient.http.MediaUpload-class.html#getbytes" title="Get bytes from the media." alt="" coords="17,111,172,129"/>
+<area shape="rect" id="node1_14" href="googleapiclient.http.MediaUpload-class.html#has_stream" title="Does the underlying upload support a streaming interface." alt="" coords="17,129,172,148"/>
+<area shape="rect" id="node1_15" href="googleapiclient.http.MediaUpload-class.html#stream" title="A stream interface to the data being uploaded." alt="" coords="17,148,172,167"/>
+<area shape="rect" id="node1_16" href="googleapiclient.http.MediaUpload-class.html#to_json" title="Create a JSON representation of an instance of MediaUpload." alt="" coords="17,167,172,185"/>
+<area shape="rect" id="node1_17" href="googleapiclient.http.MediaUpload-class.html#new_from_json" title="Utility class method to instantiate a MediaUpload subclass from a JSON representation produced by to_json()." alt="" coords="17,185,172,204"/>
+<area shape="rect" id="node1" href="googleapiclient.http.MediaUpload-class.html" title="Describes a media object to upload." alt="" coords="5,5,184,211"/>
 </map>
   <img src="uml_class_diagram_for_googleap_34.gif" alt='' usemap="#uml_class_diagram_for_googleap_34" ismap="ismap" class="graph-without-title" />
 </center>
@@ -681,7 +681,7 @@
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Tue Nov  1 17:02:50 2016
+    Generated by Epydoc 3.0.1 on Thu Jan  5 12:55:04 2017
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/epy/googleapiclient.http.MediaUploadProgress-class.html b/docs/epy/googleapiclient.http.MediaUploadProgress-class.html
index 302b2e4..939e747 100644
--- a/docs/epy/googleapiclient.http.MediaUploadProgress-class.html
+++ b/docs/epy/googleapiclient.http.MediaUploadProgress-class.html
@@ -59,9 +59,9 @@
 <h1 class="epydoc">Class MediaUploadProgress</h1><p class="nomargin-top"><span class="codelink"><a href="googleapiclient.http-pysrc.html#MediaUploadProgress">source&nbsp;code</a></span></p>
 <center>
 <center>  <map id="uml_class_diagram_for_googleap_35" name="uml_class_diagram_for_googleap_35">
-<area shape="rect" id="node1_2" href="googleapiclient.http.MediaUploadProgress-class.html#__init__" title="Constructor." alt="" coords="17,39,288,59"/>
-<area shape="rect" id="node1_3" href="googleapiclient.http.MediaUploadProgress-class.html#progress" title="Percent of upload completed, as a float." alt="" coords="17,59,288,79"/>
-<area shape="rect" id="node1" href="googleapiclient.http.MediaUploadProgress-class.html" title="Status of a resumable upload." alt="" coords="5,5,299,85"/>
+<area shape="rect" id="node1_2" href="googleapiclient.http.MediaUploadProgress-class.html#__init__" title="Constructor." alt="" coords="18,36,291,55"/>
+<area shape="rect" id="node1_3" href="googleapiclient.http.MediaUploadProgress-class.html#progress" title="Percent of upload completed, as a float." alt="" coords="18,55,291,73"/>
+<area shape="rect" id="node1" href="googleapiclient.http.MediaUploadProgress-class.html" title="Status of a resumable upload." alt="" coords="5,5,303,80"/>
 </map>
   <img src="uml_class_diagram_for_googleap_35.gif" alt='' usemap="#uml_class_diagram_for_googleap_35" ismap="ismap" class="graph-without-title" />
 </center>
@@ -273,7 +273,7 @@
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Tue Nov  1 17:02:50 2016
+    Generated by Epydoc 3.0.1 on Thu Jan  5 12:55:05 2017
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/epy/googleapiclient.http.RequestMockBuilder-class.html b/docs/epy/googleapiclient.http.RequestMockBuilder-class.html
index ae2fc97..2901f47 100644
--- a/docs/epy/googleapiclient.http.RequestMockBuilder-class.html
+++ b/docs/epy/googleapiclient.http.RequestMockBuilder-class.html
@@ -59,9 +59,9 @@
 <h1 class="epydoc">Class RequestMockBuilder</h1><p class="nomargin-top"><span class="codelink"><a href="googleapiclient.http-pysrc.html#RequestMockBuilder">source&nbsp;code</a></span></p>
 <center>
 <center>  <map id="uml_class_diagram_for_googleap_36" name="uml_class_diagram_for_googleap_36">
-<area shape="rect" id="node1_2" href="googleapiclient.http.RequestMockBuilder-class.html#__init__" title="Constructor for RequestMockBuilder" alt="" coords="17,39,680,59"/>
-<area shape="rect" id="node1_3" href="googleapiclient.http.RequestMockBuilder-class.html#__call__" title="Implements the callable interface that discovery.build() expects of requestBuilder, which is to build an object compatible with HttpRequest.execute()." alt="" coords="17,59,680,79"/>
-<area shape="rect" id="node1" href="googleapiclient.http.RequestMockBuilder-class.html" title="A simple mock of HttpRequest" alt="" coords="5,5,691,85"/>
+<area shape="rect" id="node1_2" href="googleapiclient.http.RequestMockBuilder-class.html#__init__" title="Constructor for RequestMockBuilder" alt="" coords="17,36,687,55"/>
+<area shape="rect" id="node1_3" href="googleapiclient.http.RequestMockBuilder-class.html#__call__" title="Implements the callable interface that discovery.build() expects of requestBuilder, which is to build an object compatible with HttpRequest.execute()." alt="" coords="17,55,687,73"/>
+<area shape="rect" id="node1" href="googleapiclient.http.RequestMockBuilder-class.html" title="A simple mock of HttpRequest" alt="" coords="5,5,699,80"/>
 </map>
   <img src="uml_class_diagram_for_googleap_36.gif" alt='' usemap="#uml_class_diagram_for_googleap_36" ismap="ismap" class="graph-without-title" />
 </center>
@@ -319,7 +319,7 @@
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Tue Nov  1 17:02:50 2016
+    Generated by Epydoc 3.0.1 on Thu Jan  5 12:55:05 2017
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/epy/googleapiclient.http._StreamSlice-class.html b/docs/epy/googleapiclient.http._StreamSlice-class.html
index 6a5ba88..32dc7f2 100644
--- a/docs/epy/googleapiclient.http._StreamSlice-class.html
+++ b/docs/epy/googleapiclient.http._StreamSlice-class.html
@@ -59,9 +59,9 @@
 <h1 class="epydoc">Class _StreamSlice</h1><p class="nomargin-top"><span class="codelink"><a href="googleapiclient.http-pysrc.html#_StreamSlice">source&nbsp;code</a></span></p>
 <center>
 <center>  <map id="uml_class_diagram_for_googleap_37" name="uml_class_diagram_for_googleap_37">
-<area shape="rect" id="node1_2" href="googleapiclient.http._StreamSlice-class.html#__init__" title="Constructor." alt="" coords="17,39,253,59"/>
-<area shape="rect" id="node1_3" href="googleapiclient.http._StreamSlice-class.html#read" title="Read n bytes." alt="" coords="17,59,253,79"/>
-<area shape="rect" id="node1" href="googleapiclient.http._StreamSlice-class.html" title="Truncated stream." alt="" coords="5,5,265,85"/>
+<area shape="rect" id="node1_2" href="googleapiclient.http._StreamSlice-class.html#__init__" title="Constructor." alt="" coords="18,36,254,55"/>
+<area shape="rect" id="node1_3" href="googleapiclient.http._StreamSlice-class.html#read" title="Read n bytes." alt="" coords="18,55,254,73"/>
+<area shape="rect" id="node1" href="googleapiclient.http._StreamSlice-class.html" title="Truncated stream." alt="" coords="5,5,265,80"/>
 </map>
   <img src="uml_class_diagram_for_googleap_37.gif" alt='' usemap="#uml_class_diagram_for_googleap_37" ismap="ismap" class="graph-without-title" />
 </center>
@@ -285,7 +285,7 @@
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Tue Nov  1 17:02:50 2016
+    Generated by Epydoc 3.0.1 on Thu Jan  5 12:55:05 2017
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/epy/googleapiclient.mimeparse-module.html b/docs/epy/googleapiclient.mimeparse-module.html
index 456b534..c2d92e0 100644
--- a/docs/epy/googleapiclient.mimeparse-module.html
+++ b/docs/epy/googleapiclient.mimeparse-module.html
@@ -490,7 +490,7 @@
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Tue Nov  1 17:02:49 2016
+    Generated by Epydoc 3.0.1 on Thu Jan  5 12:55:02 2017
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/epy/googleapiclient.mimeparse-pysrc.html b/docs/epy/googleapiclient.mimeparse-pysrc.html
index 30b03e7..b55b8d5 100644
--- a/docs/epy/googleapiclient.mimeparse-pysrc.html
+++ b/docs/epy/googleapiclient.mimeparse-pysrc.html
@@ -264,7 +264,7 @@
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Tue Nov  1 17:02:51 2016
+    Generated by Epydoc 3.0.1 on Thu Jan  5 12:55:06 2017
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/epy/googleapiclient.model-module.html b/docs/epy/googleapiclient.model-module.html
index b2fe8f8..9029b08 100644
--- a/docs/epy/googleapiclient.model-module.html
+++ b/docs/epy/googleapiclient.model-module.html
@@ -306,7 +306,7 @@
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Tue Nov  1 17:02:49 2016
+    Generated by Epydoc 3.0.1 on Thu Jan  5 12:55:02 2017
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/epy/googleapiclient.model-pysrc.html b/docs/epy/googleapiclient.model-pysrc.html
index ae0f007..552c5c6 100644
--- a/docs/epy/googleapiclient.model-pysrc.html
+++ b/docs/epy/googleapiclient.model-pysrc.html
@@ -635,7 +635,7 @@
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Tue Nov  1 17:02:51 2016
+    Generated by Epydoc 3.0.1 on Thu Jan  5 12:55:06 2017
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/epy/googleapiclient.model.BaseModel-class.html b/docs/epy/googleapiclient.model.BaseModel-class.html
index a6fbe3e..5a01c95 100644
--- a/docs/epy/googleapiclient.model.BaseModel-class.html
+++ b/docs/epy/googleapiclient.model.BaseModel-class.html
@@ -59,16 +59,16 @@
 <h1 class="epydoc">Class BaseModel</h1><p class="nomargin-top"><span class="codelink"><a href="googleapiclient.model-pysrc.html#BaseModel">source&nbsp;code</a></span></p>
 <center>
 <center>  <map id="uml_class_diagram_for_googleap_38" name="uml_class_diagram_for_googleap_38">
-<area shape="rect" id="node1_8" href="googleapiclient.model.BaseModel-class.html#accept" title="googleapiclient.model.BaseModel.accept" alt="" coords="17,95,397,115"/>
-<area shape="rect" id="node1_9" href="googleapiclient.model.BaseModel-class.html#content_type" title="googleapiclient.model.BaseModel.content_type" alt="" coords="17,115,397,135"/>
-<area shape="rect" id="node1_10" href="googleapiclient.model.BaseModel-class.html#no_content_response" title="googleapiclient.model.BaseModel.no_content_response" alt="" coords="17,135,397,155"/>
-<area shape="rect" id="node1_11" href="googleapiclient.model.BaseModel-class.html#alt_param" title="googleapiclient.model.BaseModel.alt_param" alt="" coords="17,155,397,175"/>
-<area shape="rect" id="node1_12" href="googleapiclient.model.BaseModel-class.html#request" title="Updates outgoing requests with a serialized body." alt="" coords="17,177,397,197"/>
-<area shape="rect" id="node1_13" href="googleapiclient.model.BaseModel-class.html#response" title="Convert the response wire format into a Python object." alt="" coords="17,197,397,217"/>
-<area shape="rect" id="node1_14" href="googleapiclient.model.BaseModel-class.html#serialize" title="Perform the actual Python object serialization." alt="" coords="17,217,397,237"/>
-<area shape="rect" id="node1_15" href="googleapiclient.model.BaseModel-class.html#deserialize" title="Perform the actual deserialization from response string to Python object." alt="" coords="17,237,397,257"/>
-<area shape="rect" id="node1" href="googleapiclient.model.BaseModel-class.html" title="Base model class." alt="" coords="5,69,409,264"/>
-<area shape="rect" id="node2" href="googleapiclient.model.Model-class.html" title="Model base class." alt="" coords="177,5,239,51"/>
+<area shape="rect" id="node1_8" href="googleapiclient.model.BaseModel-class.html#accept" title="googleapiclient.model.BaseModel.accept" alt="" coords="18,89,406,108"/>
+<area shape="rect" id="node1_9" href="googleapiclient.model.BaseModel-class.html#content_type" title="googleapiclient.model.BaseModel.content_type" alt="" coords="18,108,406,127"/>
+<area shape="rect" id="node1_10" href="googleapiclient.model.BaseModel-class.html#no_content_response" title="googleapiclient.model.BaseModel.no_content_response" alt="" coords="18,127,406,145"/>
+<area shape="rect" id="node1_11" href="googleapiclient.model.BaseModel-class.html#alt_param" title="googleapiclient.model.BaseModel.alt_param" alt="" coords="18,145,406,164"/>
+<area shape="rect" id="node1_12" href="googleapiclient.model.BaseModel-class.html#request" title="Updates outgoing requests with a serialized body." alt="" coords="18,167,406,185"/>
+<area shape="rect" id="node1_13" href="googleapiclient.model.BaseModel-class.html#response" title="Convert the response wire format into a Python object." alt="" coords="18,185,406,204"/>
+<area shape="rect" id="node1_14" href="googleapiclient.model.BaseModel-class.html#serialize" title="Perform the actual Python object serialization." alt="" coords="18,204,406,223"/>
+<area shape="rect" id="node1_15" href="googleapiclient.model.BaseModel-class.html#deserialize" title="Perform the actual deserialization from response string to Python object." alt="" coords="18,223,406,241"/>
+<area shape="rect" id="node1" href="googleapiclient.model.BaseModel-class.html" title="Base model class." alt="" coords="5,67,417,248"/>
+<area shape="rect" id="node2" href="googleapiclient.model.Model-class.html" title="Model base class." alt="" coords="181,5,241,48"/>
 </map>
   <img src="uml_class_diagram_for_googleap_38.gif" alt='' usemap="#uml_class_diagram_for_googleap_38" ismap="ismap" class="graph-without-title" />
 </center>
@@ -545,7 +545,7 @@
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Tue Nov  1 17:02:50 2016
+    Generated by Epydoc 3.0.1 on Thu Jan  5 12:55:05 2017
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/epy/googleapiclient.model.JsonModel-class.html b/docs/epy/googleapiclient.model.JsonModel-class.html
index 88b26f4..f58cfc6 100644
--- a/docs/epy/googleapiclient.model.JsonModel-class.html
+++ b/docs/epy/googleapiclient.model.JsonModel-class.html
@@ -59,18 +59,18 @@
 <h1 class="epydoc">Class JsonModel</h1><p class="nomargin-top"><span class="codelink"><a href="googleapiclient.model-pysrc.html#JsonModel">source&nbsp;code</a></span></p>
 <center>
 <center>  <map id="uml_class_diagram_for_googleap_39" name="uml_class_diagram_for_googleap_39">
-<area shape="rect" id="node1_9" href="googleapiclient.model.JsonModel-class.html#accept" title="googleapiclient.model.JsonModel.accept" alt="" coords="104,195,312,215"/>
-<area shape="rect" id="node1_10" href="googleapiclient.model.JsonModel-class.html#content_type" title="googleapiclient.model.JsonModel.content_type" alt="" coords="104,215,312,235"/>
-<area shape="rect" id="node1_11" href="googleapiclient.model.JsonModel-class.html#alt_param" title="googleapiclient.model.JsonModel.alt_param" alt="" coords="104,235,312,255"/>
-<area shape="rect" id="node1_12" href="googleapiclient.model.JsonModel-class.html#__init__" title="Construct a JsonModel." alt="" coords="104,257,312,277"/>
-<area shape="rect" id="node1_13" href="googleapiclient.model.JsonModel-class.html#serialize" title="Perform the actual Python object serialization." alt="" coords="104,277,312,297"/>
-<area shape="rect" id="node1_14" href="googleapiclient.model.JsonModel-class.html#deserialize" title="Perform the actual deserialization from response string to Python object." alt="" coords="104,297,312,317"/>
-<area shape="rect" id="node1_15" href="googleapiclient.model.JsonModel-class.html#no_content_response" title="googleapiclient.model.JsonModel.no_content_response" alt="" coords="104,317,312,337"/>
-<area shape="rect" id="node1" href="googleapiclient.model.JsonModel-class.html" title="Model class for JSON." alt="" coords="92,169,324,343"/>
-<area shape="rect" id="node2_16" href="googleapiclient.model.BaseModel-class.html#request" title="Updates outgoing requests with a serialized body." alt="" coords="17,103,397,123"/>
-<area shape="rect" id="node2_17" href="googleapiclient.model.BaseModel-class.html#response" title="Convert the response wire format into a Python object." alt="" coords="17,123,397,143"/>
-<area shape="rect" id="node2" href="googleapiclient.model.BaseModel-class.html" title="Base model class." alt="" coords="5,69,409,149"/>
-<area shape="rect" id="node3" href="googleapiclient.model.Model-class.html" title="Model base class." alt="" coords="177,5,239,51"/>
+<area shape="rect" id="node1_9" href="googleapiclient.model.JsonModel-class.html#accept" title="googleapiclient.model.JsonModel.accept" alt="" coords="107,183,318,201"/>
+<area shape="rect" id="node1_10" href="googleapiclient.model.JsonModel-class.html#content_type" title="googleapiclient.model.JsonModel.content_type" alt="" coords="107,201,318,220"/>
+<area shape="rect" id="node1_11" href="googleapiclient.model.JsonModel-class.html#alt_param" title="googleapiclient.model.JsonModel.alt_param" alt="" coords="107,220,318,239"/>
+<area shape="rect" id="node1_12" href="googleapiclient.model.JsonModel-class.html#__init__" title="Construct a JsonModel." alt="" coords="107,241,318,260"/>
+<area shape="rect" id="node1_13" href="googleapiclient.model.JsonModel-class.html#serialize" title="Perform the actual Python object serialization." alt="" coords="107,260,318,279"/>
+<area shape="rect" id="node1_14" href="googleapiclient.model.JsonModel-class.html#deserialize" title="Perform the actual deserialization from response string to Python object." alt="" coords="107,279,318,297"/>
+<area shape="rect" id="node1_15" href="googleapiclient.model.JsonModel-class.html#no_content_response" title="googleapiclient.model.JsonModel.no_content_response" alt="" coords="107,297,318,316"/>
+<area shape="rect" id="node1" href="googleapiclient.model.JsonModel-class.html" title="Model class for JSON." alt="" coords="95,160,330,323"/>
+<area shape="rect" id="node2_16" href="googleapiclient.model.BaseModel-class.html#request" title="Updates outgoing requests with a serialized body." alt="" coords="18,97,406,116"/>
+<area shape="rect" id="node2_17" href="googleapiclient.model.BaseModel-class.html#response" title="Convert the response wire format into a Python object." alt="" coords="18,116,406,135"/>
+<area shape="rect" id="node2" href="googleapiclient.model.BaseModel-class.html" title="Base model class." alt="" coords="5,67,417,141"/>
+<area shape="rect" id="node3" href="googleapiclient.model.Model-class.html" title="Model base class." alt="" coords="181,5,241,48"/>
 </map>
   <img src="uml_class_diagram_for_googleap_39.gif" alt='' usemap="#uml_class_diagram_for_googleap_39" ismap="ismap" class="graph-without-title" />
 </center>
@@ -432,7 +432,7 @@
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Tue Nov  1 17:02:50 2016
+    Generated by Epydoc 3.0.1 on Thu Jan  5 12:55:05 2017
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/epy/googleapiclient.model.MediaModel-class.html b/docs/epy/googleapiclient.model.MediaModel-class.html
index 61dccff..5d1c41e 100644
--- a/docs/epy/googleapiclient.model.MediaModel-class.html
+++ b/docs/epy/googleapiclient.model.MediaModel-class.html
@@ -59,19 +59,19 @@
 <h1 class="epydoc">Class MediaModel</h1><p class="nomargin-top"><span class="codelink"><a href="googleapiclient.model-pysrc.html#MediaModel">source&nbsp;code</a></span></p>
 <center>
 <center>  <map id="uml_class_diagram_for_googleap_40" name="uml_class_diagram_for_googleap_40">
-<area shape="rect" id="node1_9" href="googleapiclient.model.MediaModel-class.html#accept" title="googleapiclient.model.MediaModel.accept" alt="" coords="128,293,288,313"/>
-<area shape="rect" id="node1_10" href="googleapiclient.model.MediaModel-class.html#content_type" title="googleapiclient.model.MediaModel.content_type" alt="" coords="128,313,288,333"/>
-<area shape="rect" id="node1_11" href="googleapiclient.model.MediaModel-class.html#alt_param" title="googleapiclient.model.MediaModel.alt_param" alt="" coords="128,333,288,353"/>
-<area shape="rect" id="node1_12" href="googleapiclient.model.MediaModel-class.html#deserialize" title="Perform the actual deserialization from response string to Python object." alt="" coords="128,356,288,376"/>
-<area shape="rect" id="node1_13" href="googleapiclient.model.MediaModel-class.html#no_content_response" title="googleapiclient.model.MediaModel.no_content_response" alt="" coords="128,376,288,396"/>
-<area shape="rect" id="node1" href="googleapiclient.model.MediaModel-class.html" title="Model class for requests that return Media." alt="" coords="116,267,300,402"/>
-<area shape="rect" id="node2_14" href="googleapiclient.model.JsonModel-class.html#__init__" title="Construct a JsonModel." alt="" coords="104,201,312,221"/>
-<area shape="rect" id="node2_15" href="googleapiclient.model.JsonModel-class.html#serialize" title="Perform the actual Python object serialization." alt="" coords="104,221,312,241"/>
-<area shape="rect" id="node2" href="googleapiclient.model.JsonModel-class.html" title="Model class for JSON." alt="" coords="92,168,324,248"/>
-<area shape="rect" id="node3_16" href="googleapiclient.model.BaseModel-class.html#request" title="Updates outgoing requests with a serialized body." alt="" coords="17,103,397,123"/>
-<area shape="rect" id="node3_17" href="googleapiclient.model.BaseModel-class.html#response" title="Convert the response wire format into a Python object." alt="" coords="17,123,397,143"/>
-<area shape="rect" id="node3" href="googleapiclient.model.BaseModel-class.html" title="Base model class." alt="" coords="5,69,409,149"/>
-<area shape="rect" id="node4" href="googleapiclient.model.Model-class.html" title="Model base class." alt="" coords="177,5,239,51"/>
+<area shape="rect" id="node1_9" href="googleapiclient.model.MediaModel-class.html#accept" title="googleapiclient.model.MediaModel.accept" alt="" coords="131,276,294,295"/>
+<area shape="rect" id="node1_10" href="googleapiclient.model.MediaModel-class.html#content_type" title="googleapiclient.model.MediaModel.content_type" alt="" coords="131,295,294,313"/>
+<area shape="rect" id="node1_11" href="googleapiclient.model.MediaModel-class.html#alt_param" title="googleapiclient.model.MediaModel.alt_param" alt="" coords="131,313,294,332"/>
+<area shape="rect" id="node1_12" href="googleapiclient.model.MediaModel-class.html#deserialize" title="Perform the actual deserialization from response string to Python object." alt="" coords="131,335,294,353"/>
+<area shape="rect" id="node1_13" href="googleapiclient.model.MediaModel-class.html#no_content_response" title="googleapiclient.model.MediaModel.no_content_response" alt="" coords="131,353,294,372"/>
+<area shape="rect" id="node1" href="googleapiclient.model.MediaModel-class.html" title="Model class for requests that return Media." alt="" coords="119,253,306,379"/>
+<area shape="rect" id="node2_14" href="googleapiclient.model.JsonModel-class.html#__init__" title="Construct a JsonModel." alt="" coords="107,191,318,209"/>
+<area shape="rect" id="node2_15" href="googleapiclient.model.JsonModel-class.html#serialize" title="Perform the actual Python object serialization." alt="" coords="107,209,318,228"/>
+<area shape="rect" id="node2" href="googleapiclient.model.JsonModel-class.html" title="Model class for JSON." alt="" coords="95,160,330,235"/>
+<area shape="rect" id="node3_16" href="googleapiclient.model.BaseModel-class.html#request" title="Updates outgoing requests with a serialized body." alt="" coords="18,97,406,116"/>
+<area shape="rect" id="node3_17" href="googleapiclient.model.BaseModel-class.html#response" title="Convert the response wire format into a Python object." alt="" coords="18,116,406,135"/>
+<area shape="rect" id="node3" href="googleapiclient.model.BaseModel-class.html" title="Base model class." alt="" coords="5,67,417,141"/>
+<area shape="rect" id="node4" href="googleapiclient.model.Model-class.html" title="Model base class." alt="" coords="181,5,241,48"/>
 </map>
   <img src="uml_class_diagram_for_googleap_40.gif" alt='' usemap="#uml_class_diagram_for_googleap_40" ismap="ismap" class="graph-without-title" />
 </center>
@@ -339,7 +339,7 @@
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Tue Nov  1 17:02:50 2016
+    Generated by Epydoc 3.0.1 on Thu Jan  5 12:55:05 2017
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/epy/googleapiclient.model.Model-class.html b/docs/epy/googleapiclient.model.Model-class.html
index 87c0d70..9175a3a 100644
--- a/docs/epy/googleapiclient.model.Model-class.html
+++ b/docs/epy/googleapiclient.model.Model-class.html
@@ -59,9 +59,9 @@
 <h1 class="epydoc">Class Model</h1><p class="nomargin-top"><span class="codelink"><a href="googleapiclient.model-pysrc.html#Model">source&nbsp;code</a></span></p>
 <center>
 <center>  <map id="uml_class_diagram_for_googleap_41" name="uml_class_diagram_for_googleap_41">
-<area shape="rect" id="node1_2" href="googleapiclient.model.Model-class.html#request" title="Updates outgoing requests with a serialized body." alt="" coords="17,39,397,59"/>
-<area shape="rect" id="node1_3" href="googleapiclient.model.Model-class.html#response" title="Convert the response wire format into a Python object." alt="" coords="17,59,397,79"/>
-<area shape="rect" id="node1" href="googleapiclient.model.Model-class.html" title="Model base class." alt="" coords="5,5,409,85"/>
+<area shape="rect" id="node1_2" href="googleapiclient.model.Model-class.html#request" title="Updates outgoing requests with a serialized body." alt="" coords="18,36,406,55"/>
+<area shape="rect" id="node1_3" href="googleapiclient.model.Model-class.html#response" title="Convert the response wire format into a Python object." alt="" coords="18,55,406,73"/>
+<area shape="rect" id="node1" href="googleapiclient.model.Model-class.html" title="Model base class." alt="" coords="5,5,417,80"/>
 </map>
   <img src="uml_class_diagram_for_googleap_41.gif" alt='' usemap="#uml_class_diagram_for_googleap_41" ismap="ismap" class="graph-without-title" />
 </center>
@@ -297,7 +297,7 @@
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Tue Nov  1 17:02:50 2016
+    Generated by Epydoc 3.0.1 on Thu Jan  5 12:55:05 2017
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/epy/googleapiclient.model.ProtocolBufferModel-class.html b/docs/epy/googleapiclient.model.ProtocolBufferModel-class.html
index 2149bef..9a44531 100644
--- a/docs/epy/googleapiclient.model.ProtocolBufferModel-class.html
+++ b/docs/epy/googleapiclient.model.ProtocolBufferModel-class.html
@@ -59,18 +59,18 @@
 <h1 class="epydoc">Class ProtocolBufferModel</h1><p class="nomargin-top"><span class="codelink"><a href="googleapiclient.model-pysrc.html#ProtocolBufferModel">source&nbsp;code</a></span></p>
 <center>
 <center>  <map id="uml_class_diagram_for_googleap_42" name="uml_class_diagram_for_googleap_42">
-<area shape="rect" id="node1_9" href="googleapiclient.model.ProtocolBufferModel-class.html#accept" title="googleapiclient.model.ProtocolBufferModel.accept" alt="" coords="120,195,296,215"/>
-<area shape="rect" id="node1_10" href="googleapiclient.model.ProtocolBufferModel-class.html#content_type" title="googleapiclient.model.ProtocolBufferModel.content_type" alt="" coords="120,215,296,235"/>
-<area shape="rect" id="node1_11" href="googleapiclient.model.ProtocolBufferModel-class.html#alt_param" title="googleapiclient.model.ProtocolBufferModel.alt_param" alt="" coords="120,235,296,255"/>
-<area shape="rect" id="node1_12" href="googleapiclient.model.ProtocolBufferModel-class.html#__init__" title="Constructs a ProtocolBufferModel." alt="" coords="120,257,296,277"/>
-<area shape="rect" id="node1_13" href="googleapiclient.model.ProtocolBufferModel-class.html#serialize" title="Perform the actual Python object serialization." alt="" coords="120,277,296,297"/>
-<area shape="rect" id="node1_14" href="googleapiclient.model.ProtocolBufferModel-class.html#deserialize" title="Perform the actual deserialization from response string to Python object." alt="" coords="120,297,296,317"/>
-<area shape="rect" id="node1_15" href="googleapiclient.model.ProtocolBufferModel-class.html#no_content_response" title="googleapiclient.model.ProtocolBufferModel.no_content_response" alt="" coords="120,317,296,337"/>
-<area shape="rect" id="node1" href="googleapiclient.model.ProtocolBufferModel-class.html" title="Model class for protocol buffers." alt="" coords="108,169,308,343"/>
-<area shape="rect" id="node2_16" href="googleapiclient.model.BaseModel-class.html#request" title="Updates outgoing requests with a serialized body." alt="" coords="17,103,397,123"/>
-<area shape="rect" id="node2_17" href="googleapiclient.model.BaseModel-class.html#response" title="Convert the response wire format into a Python object." alt="" coords="17,123,397,143"/>
-<area shape="rect" id="node2" href="googleapiclient.model.BaseModel-class.html" title="Base model class." alt="" coords="5,69,409,149"/>
-<area shape="rect" id="node3" href="googleapiclient.model.Model-class.html" title="Model base class." alt="" coords="177,5,239,51"/>
+<area shape="rect" id="node1_9" href="googleapiclient.model.ProtocolBufferModel-class.html#accept" title="googleapiclient.model.ProtocolBufferModel.accept" alt="" coords="123,183,301,201"/>
+<area shape="rect" id="node1_10" href="googleapiclient.model.ProtocolBufferModel-class.html#content_type" title="googleapiclient.model.ProtocolBufferModel.content_type" alt="" coords="123,201,301,220"/>
+<area shape="rect" id="node1_11" href="googleapiclient.model.ProtocolBufferModel-class.html#alt_param" title="googleapiclient.model.ProtocolBufferModel.alt_param" alt="" coords="123,220,301,239"/>
+<area shape="rect" id="node1_12" href="googleapiclient.model.ProtocolBufferModel-class.html#__init__" title="Constructs a ProtocolBufferModel." alt="" coords="123,241,301,260"/>
+<area shape="rect" id="node1_13" href="googleapiclient.model.ProtocolBufferModel-class.html#serialize" title="Perform the actual Python object serialization." alt="" coords="123,260,301,279"/>
+<area shape="rect" id="node1_14" href="googleapiclient.model.ProtocolBufferModel-class.html#deserialize" title="Perform the actual deserialization from response string to Python object." alt="" coords="123,279,301,297"/>
+<area shape="rect" id="node1_15" href="googleapiclient.model.ProtocolBufferModel-class.html#no_content_response" title="googleapiclient.model.ProtocolBufferModel.no_content_response" alt="" coords="123,297,301,316"/>
+<area shape="rect" id="node1" href="googleapiclient.model.ProtocolBufferModel-class.html" title="Model class for protocol buffers." alt="" coords="111,160,312,323"/>
+<area shape="rect" id="node2_16" href="googleapiclient.model.BaseModel-class.html#request" title="Updates outgoing requests with a serialized body." alt="" coords="18,97,406,116"/>
+<area shape="rect" id="node2_17" href="googleapiclient.model.BaseModel-class.html#response" title="Convert the response wire format into a Python object." alt="" coords="18,116,406,135"/>
+<area shape="rect" id="node2" href="googleapiclient.model.BaseModel-class.html" title="Base model class." alt="" coords="5,67,417,141"/>
+<area shape="rect" id="node3" href="googleapiclient.model.Model-class.html" title="Model base class." alt="" coords="181,5,241,48"/>
 </map>
   <img src="uml_class_diagram_for_googleap_42.gif" alt='' usemap="#uml_class_diagram_for_googleap_42" ismap="ismap" class="graph-without-title" />
 </center>
@@ -436,7 +436,7 @@
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Tue Nov  1 17:02:50 2016
+    Generated by Epydoc 3.0.1 on Thu Jan  5 12:55:05 2017
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/epy/googleapiclient.model.RawModel-class.html b/docs/epy/googleapiclient.model.RawModel-class.html
index 8d35f27..87a7724 100644
--- a/docs/epy/googleapiclient.model.RawModel-class.html
+++ b/docs/epy/googleapiclient.model.RawModel-class.html
@@ -59,19 +59,19 @@
 <h1 class="epydoc">Class RawModel</h1><p class="nomargin-top"><span class="codelink"><a href="googleapiclient.model-pysrc.html#RawModel">source&nbsp;code</a></span></p>
 <center>
 <center>  <map id="uml_class_diagram_for_googleap_43" name="uml_class_diagram_for_googleap_43">
-<area shape="rect" id="node1_9" href="googleapiclient.model.RawModel-class.html#accept" title="googleapiclient.model.RawModel.accept" alt="" coords="128,293,288,313"/>
-<area shape="rect" id="node1_10" href="googleapiclient.model.RawModel-class.html#content_type" title="googleapiclient.model.RawModel.content_type" alt="" coords="128,313,288,333"/>
-<area shape="rect" id="node1_11" href="googleapiclient.model.RawModel-class.html#alt_param" title="googleapiclient.model.RawModel.alt_param" alt="" coords="128,333,288,353"/>
-<area shape="rect" id="node1_12" href="googleapiclient.model.RawModel-class.html#deserialize" title="Perform the actual deserialization from response string to Python object." alt="" coords="128,356,288,376"/>
-<area shape="rect" id="node1_13" href="googleapiclient.model.RawModel-class.html#no_content_response" title="googleapiclient.model.RawModel.no_content_response" alt="" coords="128,376,288,396"/>
-<area shape="rect" id="node1" href="googleapiclient.model.RawModel-class.html" title="Model class for requests that don&#39;t return JSON." alt="" coords="116,267,300,402"/>
-<area shape="rect" id="node2_14" href="googleapiclient.model.JsonModel-class.html#__init__" title="Construct a JsonModel." alt="" coords="104,201,312,221"/>
-<area shape="rect" id="node2_15" href="googleapiclient.model.JsonModel-class.html#serialize" title="Perform the actual Python object serialization." alt="" coords="104,221,312,241"/>
-<area shape="rect" id="node2" href="googleapiclient.model.JsonModel-class.html" title="Model class for JSON." alt="" coords="92,168,324,248"/>
-<area shape="rect" id="node3_16" href="googleapiclient.model.BaseModel-class.html#request" title="Updates outgoing requests with a serialized body." alt="" coords="17,103,397,123"/>
-<area shape="rect" id="node3_17" href="googleapiclient.model.BaseModel-class.html#response" title="Convert the response wire format into a Python object." alt="" coords="17,123,397,143"/>
-<area shape="rect" id="node3" href="googleapiclient.model.BaseModel-class.html" title="Base model class." alt="" coords="5,69,409,149"/>
-<area shape="rect" id="node4" href="googleapiclient.model.Model-class.html" title="Model base class." alt="" coords="177,5,239,51"/>
+<area shape="rect" id="node1_9" href="googleapiclient.model.RawModel-class.html#accept" title="googleapiclient.model.RawModel.accept" alt="" coords="131,276,294,295"/>
+<area shape="rect" id="node1_10" href="googleapiclient.model.RawModel-class.html#content_type" title="googleapiclient.model.RawModel.content_type" alt="" coords="131,295,294,313"/>
+<area shape="rect" id="node1_11" href="googleapiclient.model.RawModel-class.html#alt_param" title="googleapiclient.model.RawModel.alt_param" alt="" coords="131,313,294,332"/>
+<area shape="rect" id="node1_12" href="googleapiclient.model.RawModel-class.html#deserialize" title="Perform the actual deserialization from response string to Python object." alt="" coords="131,335,294,353"/>
+<area shape="rect" id="node1_13" href="googleapiclient.model.RawModel-class.html#no_content_response" title="googleapiclient.model.RawModel.no_content_response" alt="" coords="131,353,294,372"/>
+<area shape="rect" id="node1" href="googleapiclient.model.RawModel-class.html" title="Model class for requests that don&#39;t return JSON." alt="" coords="119,253,306,379"/>
+<area shape="rect" id="node2_14" href="googleapiclient.model.JsonModel-class.html#__init__" title="Construct a JsonModel." alt="" coords="107,191,318,209"/>
+<area shape="rect" id="node2_15" href="googleapiclient.model.JsonModel-class.html#serialize" title="Perform the actual Python object serialization." alt="" coords="107,209,318,228"/>
+<area shape="rect" id="node2" href="googleapiclient.model.JsonModel-class.html" title="Model class for JSON." alt="" coords="95,160,330,235"/>
+<area shape="rect" id="node3_16" href="googleapiclient.model.BaseModel-class.html#request" title="Updates outgoing requests with a serialized body." alt="" coords="18,97,406,116"/>
+<area shape="rect" id="node3_17" href="googleapiclient.model.BaseModel-class.html#response" title="Convert the response wire format into a Python object." alt="" coords="18,116,406,135"/>
+<area shape="rect" id="node3" href="googleapiclient.model.BaseModel-class.html" title="Base model class." alt="" coords="5,67,417,141"/>
+<area shape="rect" id="node4" href="googleapiclient.model.Model-class.html" title="Model base class." alt="" coords="181,5,241,48"/>
 </map>
   <img src="uml_class_diagram_for_googleap_43.gif" alt='' usemap="#uml_class_diagram_for_googleap_43" ismap="ismap" class="graph-without-title" />
 </center>
@@ -339,7 +339,7 @@
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Tue Nov  1 17:02:50 2016
+    Generated by Epydoc 3.0.1 on Thu Jan  5 12:55:05 2017
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/epy/googleapiclient.sample_tools-module.html b/docs/epy/googleapiclient.sample_tools-module.html
index 84f10f2..9aad11c 100644
--- a/docs/epy/googleapiclient.sample_tools-module.html
+++ b/docs/epy/googleapiclient.sample_tools-module.html
@@ -204,7 +204,7 @@
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Tue Nov  1 17:02:49 2016
+    Generated by Epydoc 3.0.1 on Thu Jan  5 12:55:02 2017
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/epy/googleapiclient.sample_tools-pysrc.html b/docs/epy/googleapiclient.sample_tools-pysrc.html
index c7228ad..22c0006 100644
--- a/docs/epy/googleapiclient.sample_tools-pysrc.html
+++ b/docs/epy/googleapiclient.sample_tools-pysrc.html
@@ -195,7 +195,7 @@
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Tue Nov  1 17:02:51 2016
+    Generated by Epydoc 3.0.1 on Thu Jan  5 12:55:06 2017
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/epy/googleapiclient.schema-module.html b/docs/epy/googleapiclient.schema-module.html
index 527428d..f821a5a 100644
--- a/docs/epy/googleapiclient.schema-module.html
+++ b/docs/epy/googleapiclient.schema-module.html
@@ -167,7 +167,7 @@
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Tue Nov  1 17:02:49 2016
+    Generated by Epydoc 3.0.1 on Thu Jan  5 12:55:02 2017
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/epy/googleapiclient.schema-pysrc.html b/docs/epy/googleapiclient.schema-pysrc.html
index c0955a5..caca218 100644
--- a/docs/epy/googleapiclient.schema-pysrc.html
+++ b/docs/epy/googleapiclient.schema-pysrc.html
@@ -459,7 +459,7 @@
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Tue Nov  1 17:02:50 2016
+    Generated by Epydoc 3.0.1 on Thu Jan  5 12:55:06 2017
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/epy/googleapiclient.schema.Schemas-class.html b/docs/epy/googleapiclient.schema.Schemas-class.html
index 3708da5..025f7f2 100644
--- a/docs/epy/googleapiclient.schema.Schemas-class.html
+++ b/docs/epy/googleapiclient.schema.Schemas-class.html
@@ -59,11 +59,11 @@
 <h1 class="epydoc">Class Schemas</h1><p class="nomargin-top"><span class="codelink"><a href="googleapiclient.schema-pysrc.html#Schemas">source&nbsp;code</a></span></p>
 <center>
 <center>  <map id="uml_class_diagram_for_googleap_44" name="uml_class_diagram_for_googleap_44">
-<area shape="rect" id="node1_4" href="googleapiclient.schema.Schemas-class.html#__init__" title="Constructor." alt="" coords="17,39,216,59"/>
-<area shape="rect" id="node1_5" href="googleapiclient.schema.Schemas-class.html#prettyPrintByName" title="Get pretty printed object prototype from the schema name." alt="" coords="17,59,216,79"/>
-<area shape="rect" id="node1_6" href="googleapiclient.schema.Schemas-class.html#prettyPrintSchema" title="Get pretty printed object prototype of schema." alt="" coords="17,79,216,99"/>
-<area shape="rect" id="node1_7" href="googleapiclient.schema.Schemas-class.html#get" title="Get deserialized JSON schema from the schema name." alt="" coords="17,99,216,119"/>
-<area shape="rect" id="node1" href="googleapiclient.schema.Schemas-class.html" title="Schemas for an API." alt="" coords="5,5,227,125"/>
+<area shape="rect" id="node1_4" href="googleapiclient.schema.Schemas-class.html#__init__" title="Constructor." alt="" coords="18,36,217,55"/>
+<area shape="rect" id="node1_5" href="googleapiclient.schema.Schemas-class.html#prettyPrintByName" title="Get pretty printed object prototype from the schema name." alt="" coords="18,55,217,73"/>
+<area shape="rect" id="node1_6" href="googleapiclient.schema.Schemas-class.html#prettyPrintSchema" title="Get pretty printed object prototype of schema." alt="" coords="18,73,217,92"/>
+<area shape="rect" id="node1_7" href="googleapiclient.schema.Schemas-class.html#get" title="Get deserialized JSON schema from the schema name." alt="" coords="18,92,217,111"/>
+<area shape="rect" id="node1" href="googleapiclient.schema.Schemas-class.html" title="Schemas for an API." alt="" coords="5,5,228,117"/>
 </map>
   <img src="uml_class_diagram_for_googleap_44.gif" alt='' usemap="#uml_class_diagram_for_googleap_44" ismap="ismap" class="graph-without-title" />
 </center>
@@ -485,7 +485,7 @@
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Tue Nov  1 17:02:50 2016
+    Generated by Epydoc 3.0.1 on Thu Jan  5 12:55:05 2017
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/epy/googleapiclient.schema._SchemaToStruct-class.html b/docs/epy/googleapiclient.schema._SchemaToStruct-class.html
index 7f0176a..4dd17dc 100644
--- a/docs/epy/googleapiclient.schema._SchemaToStruct-class.html
+++ b/docs/epy/googleapiclient.schema._SchemaToStruct-class.html
@@ -59,14 +59,14 @@
 <h1 class="epydoc">Class _SchemaToStruct</h1><p class="nomargin-top"><span class="codelink"><a href="googleapiclient.schema-pysrc.html#_SchemaToStruct">source&nbsp;code</a></span></p>
 <center>
 <center>  <map id="uml_class_diagram_for_googleap_45" name="uml_class_diagram_for_googleap_45">
-<area shape="rect" id="node1_7" href="googleapiclient.schema._SchemaToStruct-class.html#__init__" title="Constructor." alt="" coords="17,40,237,60"/>
-<area shape="rect" id="node1_8" href="googleapiclient.schema._SchemaToStruct-class.html#emit" title="Add text as a line to the output." alt="" coords="17,60,237,80"/>
-<area shape="rect" id="node1_9" href="googleapiclient.schema._SchemaToStruct-class.html#emitBegin" title="Add text to the output, but with no line terminator." alt="" coords="17,80,237,100"/>
-<area shape="rect" id="node1_10" href="googleapiclient.schema._SchemaToStruct-class.html#emitEnd" title="Add text and comment to the output with line terminator." alt="" coords="17,100,237,120"/>
-<area shape="rect" id="node1_11" href="googleapiclient.schema._SchemaToStruct-class.html#indent" title="Increase indentation level." alt="" coords="17,120,237,140"/>
-<area shape="rect" id="node1_12" href="googleapiclient.schema._SchemaToStruct-class.html#undent" title="Decrease indentation level." alt="" coords="17,140,237,160"/>
-<area shape="rect" id="node1_13" href="googleapiclient.schema._SchemaToStruct-class.html#to_str" title="Prototype object based on the schema, in Python code with comments." alt="" coords="17,160,237,180"/>
-<area shape="rect" id="node1" href="googleapiclient.schema._SchemaToStruct-class.html" title="Convert schema to a prototype object." alt="" coords="5,6,249,186"/>
+<area shape="rect" id="node1_7" href="googleapiclient.schema._SchemaToStruct-class.html#__init__" title="Constructor." alt="" coords="18,36,238,55"/>
+<area shape="rect" id="node1_8" href="googleapiclient.schema._SchemaToStruct-class.html#emit" title="Add text as a line to the output." alt="" coords="18,55,238,73"/>
+<area shape="rect" id="node1_9" href="googleapiclient.schema._SchemaToStruct-class.html#emitBegin" title="Add text to the output, but with no line terminator." alt="" coords="18,73,238,92"/>
+<area shape="rect" id="node1_10" href="googleapiclient.schema._SchemaToStruct-class.html#emitEnd" title="Add text and comment to the output with line terminator." alt="" coords="18,92,238,111"/>
+<area shape="rect" id="node1_11" href="googleapiclient.schema._SchemaToStruct-class.html#indent" title="Increase indentation level." alt="" coords="18,111,238,129"/>
+<area shape="rect" id="node1_12" href="googleapiclient.schema._SchemaToStruct-class.html#undent" title="Decrease indentation level." alt="" coords="18,129,238,148"/>
+<area shape="rect" id="node1_13" href="googleapiclient.schema._SchemaToStruct-class.html#to_str" title="Prototype object based on the schema, in Python code with comments." alt="" coords="18,148,238,167"/>
+<area shape="rect" id="node1" href="googleapiclient.schema._SchemaToStruct-class.html" title="Convert schema to a prototype object." alt="" coords="5,5,249,173"/>
 </map>
   <img src="uml_class_diagram_for_googleap_45.gif" alt='' usemap="#uml_class_diagram_for_googleap_45" ismap="ismap" class="graph-without-title" />
 </center>
@@ -509,7 +509,7 @@
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Tue Nov  1 17:02:50 2016
+    Generated by Epydoc 3.0.1 on Thu Jan  5 12:55:05 2017
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/epy/help.html b/docs/epy/help.html
index 3432247..1240626 100644
--- a/docs/epy/help.html
+++ b/docs/epy/help.html
@@ -246,7 +246,7 @@
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Tue Nov  1 17:02:49 2016
+    Generated by Epydoc 3.0.1 on Thu Jan  5 12:55:02 2017
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/epy/identifier-index.html b/docs/epy/identifier-index.html
index 92a80b8..09cdb2c 100644
--- a/docs/epy/identifier-index.html
+++ b/docs/epy/identifier-index.html
@@ -76,7 +76,7 @@
  <a href="#T">T</a>
  <a href="#U">U</a>
  <a href="#V">V</a>
-  W
+ <a href="#W">W</a>
  <a href="#X">X</a>
   Y
   Z
@@ -116,15 +116,16 @@
 <span class="index-where">(in&nbsp;<a href="googleapiclient.model.ProtocolBufferModel-class.html">ProtocolBufferModel</a>)</span></td>
 <td width="33%" class="link-index"><a href="googleapiclient.model.JsonModel-class.html#alt_param">alt_param</a><br />
 <span class="index-where">(in&nbsp;<a href="googleapiclient.model.JsonModel-class.html">JsonModel</a>)</span></td>
-<td width="33%" class="link-index"><a href="googleapiclient.discovery_cache-module.html#autodetect">autodetect()</a><br />
-<span class="index-where">(in&nbsp;<a href="googleapiclient.discovery_cache-module.html">googleapiclient.discovery_cache</a>)</span></td>
+<td width="33%" class="link-index"><a href="googleapiclient._auth-module.html#authorized_http">authorized_http()</a><br />
+<span class="index-where">(in&nbsp;<a href="googleapiclient._auth-module.html">googleapiclient._auth</a>)</span></td>
 </tr>
 <tr>
 <td width="33%" class="link-index"><a href="googleapiclient.model.RawModel-class.html#accept">accept</a><br />
 <span class="index-where">(in&nbsp;<a href="googleapiclient.model.RawModel-class.html">RawModel</a>)</span></td>
 <td width="33%" class="link-index"><a href="googleapiclient.model.MediaModel-class.html#alt_param">alt_param</a><br />
 <span class="index-where">(in&nbsp;<a href="googleapiclient.model.MediaModel-class.html">MediaModel</a>)</span></td>
-<td width="33%" class="link-index">&nbsp;</td>
+<td width="33%" class="link-index"><a href="googleapiclient.discovery_cache-module.html#autodetect">autodetect()</a><br />
+<span class="index-where">(in&nbsp;<a href="googleapiclient.discovery_cache-module.html">googleapiclient.discovery_cache</a>)</span></td>
 </tr>
 </table>
 </td></tr>
@@ -217,33 +218,39 @@
 <span class="index-where">(in&nbsp;<a href="googleapiclient.http-module.html">googleapiclient.http</a>)</span></td>
 <td width="33%" class="link-index"><a href="googleapiclient.model.MediaModel-class.html#deserialize">deserialize()</a><br />
 <span class="index-where">(in&nbsp;<a href="googleapiclient.model.MediaModel-class.html">MediaModel</a>)</span></td>
-<td width="33%" class="link-index"><a href="googleapiclient.discovery_cache-module.html">discovery_cache</a><br />
-<span class="index-where">(in&nbsp;<a href="googleapiclient-module.html">googleapiclient</a>)</span></td>
-</tr>
-<tr>
-<td width="33%" class="link-index"><a href="googleapiclient.discovery-module.html#DEFAULT_METHOD_DOC">DEFAULT_METHOD_DOC</a><br />
-<span class="index-where">(in&nbsp;<a href="googleapiclient.discovery-module.html">googleapiclient.discovery</a>)</span></td>
-<td width="33%" class="link-index"><a href="googleapiclient.model.ProtocolBufferModel-class.html#deserialize">deserialize()</a><br />
-<span class="index-where">(in&nbsp;<a href="googleapiclient.model.ProtocolBufferModel-class.html">ProtocolBufferModel</a>)</span></td>
 <td width="33%" class="link-index"><a href="googleapiclient.discovery_cache-module.html#DISCOVERY_DOC_MAX_AGE">DISCOVERY_DOC_MAX_AGE</a><br />
 <span class="index-where">(in&nbsp;<a href="googleapiclient.discovery_cache-module.html">googleapiclient.discovery_cache</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="googleapiclient.model.BaseModel-class.html#deserialize">deserialize()</a><br />
-<span class="index-where">(in&nbsp;<a href="googleapiclient.model.BaseModel-class.html">BaseModel</a>)</span></td>
-<td width="33%" class="link-index"><a href="googleapiclient.model.RawModel-class.html#deserialize">deserialize()</a><br />
-<span class="index-where">(in&nbsp;<a href="googleapiclient.model.RawModel-class.html">RawModel</a>)</span></td>
+<td width="33%" class="link-index"><a href="googleapiclient._auth-module.html#default_credentials">default_credentials()</a><br />
+<span class="index-where">(in&nbsp;<a href="googleapiclient._auth-module.html">googleapiclient._auth</a>)</span></td>
+<td width="33%" class="link-index"><a href="googleapiclient.model.ProtocolBufferModel-class.html#deserialize">deserialize()</a><br />
+<span class="index-where">(in&nbsp;<a href="googleapiclient.model.ProtocolBufferModel-class.html">ProtocolBufferModel</a>)</span></td>
 <td width="33%" class="link-index"><a href="googleapiclient.discovery-module.html#DISCOVERY_URI">DISCOVERY_URI</a><br />
 <span class="index-where">(in&nbsp;<a href="googleapiclient.discovery-module.html">googleapiclient.discovery</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="googleapiclient.model.JsonModel-class.html#deserialize">deserialize()</a><br />
-<span class="index-where">(in&nbsp;<a href="googleapiclient.model.JsonModel-class.html">JsonModel</a>)</span></td>
-<td width="33%" class="link-index"><a href="googleapiclient.discovery-module.html">discovery</a><br />
-<span class="index-where">(in&nbsp;<a href="googleapiclient-module.html">googleapiclient</a>)</span></td>
+<td width="33%" class="link-index"><a href="googleapiclient.discovery-module.html#DEFAULT_METHOD_DOC">DEFAULT_METHOD_DOC</a><br />
+<span class="index-where">(in&nbsp;<a href="googleapiclient.discovery-module.html">googleapiclient.discovery</a>)</span></td>
+<td width="33%" class="link-index"><a href="googleapiclient.model.RawModel-class.html#deserialize">deserialize()</a><br />
+<span class="index-where">(in&nbsp;<a href="googleapiclient.model.RawModel-class.html">RawModel</a>)</span></td>
 <td width="33%" class="link-index"><a href="googleapiclient.model-module.html#dump_request_response">dump_request_response</a><br />
 <span class="index-where">(in&nbsp;<a href="googleapiclient.model-module.html">googleapiclient.model</a>)</span></td>
 </tr>
+<tr>
+<td width="33%" class="link-index"><a href="googleapiclient.model.BaseModel-class.html#deserialize">deserialize()</a><br />
+<span class="index-where">(in&nbsp;<a href="googleapiclient.model.BaseModel-class.html">BaseModel</a>)</span></td>
+<td width="33%" class="link-index"><a href="googleapiclient.discovery-module.html">discovery</a><br />
+<span class="index-where">(in&nbsp;<a href="googleapiclient-module.html">googleapiclient</a>)</span></td>
+<td width="33%" class="link-index">&nbsp;</td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="googleapiclient.model.JsonModel-class.html#deserialize">deserialize()</a><br />
+<span class="index-where">(in&nbsp;<a href="googleapiclient.model.JsonModel-class.html">JsonModel</a>)</span></td>
+<td width="33%" class="link-index"><a href="googleapiclient.discovery_cache-module.html">discovery_cache</a><br />
+<span class="index-where">(in&nbsp;<a href="googleapiclient-module.html">googleapiclient</a>)</span></td>
+<td width="33%" class="link-index">&nbsp;</td>
+</tr>
 </table>
 </td></tr>
 <tr valign="top"><td valign="top" width="1%"><h2 class="epydoc"><a name="E">E</a></h2></td>
@@ -333,28 +340,35 @@
 <td valign="top">
 <table class="link-index" width="100%" border="1">
 <tr>
-<td width="33%" class="link-index"><a href="googleapiclient.http.MediaIoBaseUpload-class.html#has_stream">has_stream()</a><br />
-<span class="index-where">(in&nbsp;<a href="googleapiclient.http.MediaIoBaseUpload-class.html">MediaIoBaseUpload</a>)</span></td>
+<td width="33%" class="link-index"><a href="googleapiclient._auth-module.html#HAS_GOOGLE_AUTH">HAS_GOOGLE_AUTH</a><br />
+<span class="index-where">(in&nbsp;<a href="googleapiclient._auth-module.html">googleapiclient._auth</a>)</span></td>
+<td width="33%" class="link-index"><a href="googleapiclient.http-module.html">http</a><br />
+<span class="index-where">(in&nbsp;<a href="googleapiclient-module.html">googleapiclient</a>)</span></td>
+<td width="33%" class="link-index"><a href="googleapiclient.http.HttpMockSequence-class.html">HttpMockSequence</a><br />
+<span class="index-where">(in&nbsp;<a href="googleapiclient.http-module.html">googleapiclient.http</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="googleapiclient._auth-module.html#HAS_OAUTH2CLIENT">HAS_OAUTH2CLIENT</a><br />
+<span class="index-where">(in&nbsp;<a href="googleapiclient._auth-module.html">googleapiclient._auth</a>)</span></td>
 <td width="33%" class="link-index"><a href="googleapiclient.discovery-module.html#HTTP_PAYLOAD_METHODS">HTTP_PAYLOAD_METHODS</a><br />
 <span class="index-where">(in&nbsp;<a href="googleapiclient.discovery-module.html">googleapiclient.discovery</a>)</span></td>
-<td width="33%" class="link-index"><a href="googleapiclient.http.HttpMockSequence-class.html">HttpMockSequence</a><br />
+<td width="33%" class="link-index"><a href="googleapiclient.http.HttpRequest-class.html">HttpRequest</a><br />
+<span class="index-where">(in&nbsp;<a href="googleapiclient.http-module.html">googleapiclient.http</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="googleapiclient.http.MediaIoBaseUpload-class.html#has_stream">has_stream()</a><br />
+<span class="index-where">(in&nbsp;<a href="googleapiclient.http.MediaIoBaseUpload-class.html">MediaIoBaseUpload</a>)</span></td>
+<td width="33%" class="link-index"><a href="googleapiclient.errors.HttpError-class.html">HttpError</a><br />
+<span class="index-where">(in&nbsp;<a href="googleapiclient.errors-module.html">googleapiclient.errors</a>)</span></td>
+<td width="33%" class="link-index"><a href="googleapiclient.http.HttpRequestMock-class.html">HttpRequestMock</a><br />
 <span class="index-where">(in&nbsp;<a href="googleapiclient.http-module.html">googleapiclient.http</a>)</span></td>
 </tr>
 <tr>
 <td width="33%" class="link-index"><a href="googleapiclient.http.MediaUpload-class.html#has_stream">has_stream()</a><br />
 <span class="index-where">(in&nbsp;<a href="googleapiclient.http.MediaUpload-class.html">MediaUpload</a>)</span></td>
-<td width="33%" class="link-index"><a href="googleapiclient.errors.HttpError-class.html">HttpError</a><br />
-<span class="index-where">(in&nbsp;<a href="googleapiclient.errors-module.html">googleapiclient.errors</a>)</span></td>
-<td width="33%" class="link-index"><a href="googleapiclient.http.HttpRequest-class.html">HttpRequest</a><br />
-<span class="index-where">(in&nbsp;<a href="googleapiclient.http-module.html">googleapiclient.http</a>)</span></td>
-</tr>
-<tr>
-<td width="33%" class="link-index"><a href="googleapiclient.http-module.html">http</a><br />
-<span class="index-where">(in&nbsp;<a href="googleapiclient-module.html">googleapiclient</a>)</span></td>
 <td width="33%" class="link-index"><a href="googleapiclient.http.HttpMock-class.html">HttpMock</a><br />
 <span class="index-where">(in&nbsp;<a href="googleapiclient.http-module.html">googleapiclient.http</a>)</span></td>
-<td width="33%" class="link-index"><a href="googleapiclient.http.HttpRequestMock-class.html">HttpRequestMock</a><br />
-<span class="index-where">(in&nbsp;<a href="googleapiclient.http-module.html">googleapiclient.http</a>)</span></td>
+<td width="33%" class="link-index">&nbsp;</td>
 </tr>
 </table>
 </td></tr>
@@ -720,6 +734,18 @@
 <tr><td class="link-index">&nbsp;</td><td class="link-index">&nbsp;</td><td class="link-index">&nbsp;</td></tr>
 </table>
 </td></tr>
+<tr valign="top"><td valign="top" width="1%"><h2 class="epydoc"><a name="W">W</a></h2></td>
+<td valign="top">
+<table class="link-index" width="100%" border="1">
+<tr>
+<td width="33%" class="link-index"><a href="googleapiclient._auth-module.html#with_scopes">with_scopes()</a><br />
+<span class="index-where">(in&nbsp;<a href="googleapiclient._auth-module.html">googleapiclient._auth</a>)</span></td>
+<td width="33%" class="link-index">&nbsp;</td>
+<td width="33%" class="link-index">&nbsp;</td>
+</tr>
+<tr><td class="link-index">&nbsp;</td><td class="link-index">&nbsp;</td><td class="link-index">&nbsp;</td></tr>
+</table>
+</td></tr>
 <tr valign="top"><td valign="top" width="1%"><h2 class="epydoc"><a name="X">X</a></h2></td>
 <td valign="top">
 <table class="link-index" width="100%" border="1">
@@ -746,21 +772,13 @@
 <tr>
 <td width="33%" class="link-index"><a href="googleapiclient.http.RequestMockBuilder-class.html#__call__">__call__()</a><br />
 <span class="index-where">(in&nbsp;<a href="googleapiclient.http.RequestMockBuilder-class.html">RequestMockBuilder</a>)</span></td>
-<td width="33%" class="link-index"><a href="googleapiclient.http._StreamSlice-class.html#__init__">__init__()</a><br />
-<span class="index-where">(in&nbsp;<a href="googleapiclient.http._StreamSlice-class.html" onclick="show_private();">_StreamSlice</a>)</span></td>
-<td width="33%" class="link-index"><a href="googleapiclient.model.BaseModel-class.html#_log_response">_log_response()</a><br />
-<span class="index-where">(in&nbsp;<a href="googleapiclient.model.BaseModel-class.html">BaseModel</a>)</span></td>
-</tr>
-<tr>
-<td width="33%" class="link-index"><a href="googleapiclient.mimeparse-module.html#__credits__">__credits__</a><br />
-<span class="index-where">(in&nbsp;<a href="googleapiclient.mimeparse-module.html">googleapiclient.mimeparse</a>)</span></td>
 <td width="33%" class="link-index"><a href="googleapiclient.model.JsonModel-class.html#__init__">__init__()</a><br />
 <span class="index-where">(in&nbsp;<a href="googleapiclient.model.JsonModel-class.html">JsonModel</a>)</span></td>
 <td width="33%" class="link-index"><a href="googleapiclient.discovery-module.html#_media_path_url_from_info">_media_path_url_from_info()</a><br />
 <span class="index-where">(in&nbsp;<a href="googleapiclient.discovery-module.html">googleapiclient.discovery</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="googleapiclient.mimeparse-module.html#__email__">__email__</a><br />
+<td width="33%" class="link-index"><a href="googleapiclient.mimeparse-module.html#__credits__">__credits__</a><br />
 <span class="index-where">(in&nbsp;<a href="googleapiclient.mimeparse-module.html">googleapiclient.mimeparse</a>)</span></td>
 <td width="33%" class="link-index"><a href="googleapiclient.model.ProtocolBufferModel-class.html#__init__">__init__()</a><br />
 <span class="index-where">(in&nbsp;<a href="googleapiclient.model.ProtocolBufferModel-class.html">ProtocolBufferModel</a>)</span></td>
@@ -768,99 +786,107 @@
 <span class="index-where">(in&nbsp;<a href="googleapiclient.discovery-module.html">googleapiclient.discovery</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="googleapiclient.discovery.Resource-class.html#__getstate__">__getstate__()</a><br />
-<span class="index-where">(in&nbsp;<a href="googleapiclient.discovery.Resource-class.html" onclick="show_private();">Resource</a>)</span></td>
+<td width="33%" class="link-index"><a href="googleapiclient.mimeparse-module.html#__email__">__email__</a><br />
+<span class="index-where">(in&nbsp;<a href="googleapiclient.mimeparse-module.html">googleapiclient.mimeparse</a>)</span></td>
 <td width="33%" class="link-index"><a href="googleapiclient.schema.Schemas-class.html#__init__">__init__()</a><br />
 <span class="index-where">(in&nbsp;<a href="googleapiclient.schema.Schemas-class.html">Schemas</a>)</span></td>
 <td width="33%" class="link-index"><a href="googleapiclient.discovery-module.html#_media_size_to_long">_media_size_to_long()</a><br />
 <span class="index-where">(in&nbsp;<a href="googleapiclient.discovery-module.html">googleapiclient.discovery</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="googleapiclient.channel.Channel-class.html#__init__">__init__()</a><br />
-<span class="index-where">(in&nbsp;<a href="googleapiclient.channel.Channel-class.html">Channel</a>)</span></td>
+<td width="33%" class="link-index"><a href="googleapiclient.discovery.Resource-class.html#__getstate__">__getstate__()</a><br />
+<span class="index-where">(in&nbsp;<a href="googleapiclient.discovery.Resource-class.html" onclick="show_private();">Resource</a>)</span></td>
 <td width="33%" class="link-index"><a href="googleapiclient.schema._SchemaToStruct-class.html#__init__">__init__()</a><br />
 <span class="index-where">(in&nbsp;<a href="googleapiclient.schema._SchemaToStruct-class.html" onclick="show_private();">_SchemaToStruct</a>)</span></td>
 <td width="33%" class="link-index"><a href="googleapiclient.http.BatchHttpRequest-class.html#_new_id">_new_id()</a><br />
 <span class="index-where">(in&nbsp;<a href="googleapiclient.http.BatchHttpRequest-class.html">BatchHttpRequest</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="googleapiclient.channel.Notification-class.html#__init__">__init__()</a><br />
-<span class="index-where">(in&nbsp;<a href="googleapiclient.channel.Notification-class.html">Notification</a>)</span></td>
+<td width="33%" class="link-index"><a href="googleapiclient.channel.Channel-class.html#__init__">__init__()</a><br />
+<span class="index-where">(in&nbsp;<a href="googleapiclient.channel.Channel-class.html">Channel</a>)</span></td>
 <td width="33%" class="link-index"><a href="googleapiclient.discovery_cache.base.Cache-class.html#__metaclass__">__metaclass__</a><br />
 <span class="index-where">(in&nbsp;<a href="googleapiclient.discovery_cache.base.Cache-class.html">Cache</a>)</span></td>
 <td width="33%" class="link-index"><a href="googleapiclient.schema.Schemas-class.html#_prettyPrintByName">_prettyPrintByName()</a><br />
 <span class="index-where">(in&nbsp;<a href="googleapiclient.schema.Schemas-class.html">Schemas</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="googleapiclient.discovery.Resource-class.html#__init__">__init__()</a><br />
-<span class="index-where">(in&nbsp;<a href="googleapiclient.discovery.Resource-class.html" onclick="show_private();">Resource</a>)</span></td>
+<td width="33%" class="link-index"><a href="googleapiclient.channel.Notification-class.html#__init__">__init__()</a><br />
+<span class="index-where">(in&nbsp;<a href="googleapiclient.channel.Notification-class.html">Notification</a>)</span></td>
 <td width="33%" class="link-index"><a href="googleapiclient.errors.BatchError-class.html#__repr__">__repr__()</a><br />
 <span class="index-where">(in&nbsp;<a href="googleapiclient.errors.BatchError-class.html">BatchError</a>)</span></td>
 <td width="33%" class="link-index"><a href="googleapiclient.schema.Schemas-class.html#_prettyPrintSchema">_prettyPrintSchema()</a><br />
 <span class="index-where">(in&nbsp;<a href="googleapiclient.schema.Schemas-class.html">Schemas</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="googleapiclient.discovery.ResourceMethodParameters-class.html#__init__">__init__()</a><br />
-<span class="index-where">(in&nbsp;<a href="googleapiclient.discovery.ResourceMethodParameters-class.html" onclick="show_private();">ResourceMethodParameters</a>)</span></td>
+<td width="33%" class="link-index"><a href="googleapiclient.discovery.Resource-class.html#__init__">__init__()</a><br />
+<span class="index-where">(in&nbsp;<a href="googleapiclient.discovery.Resource-class.html" onclick="show_private();">Resource</a>)</span></td>
 <td width="33%" class="link-index"><a href="googleapiclient.errors.HttpError-class.html#__repr__">__repr__()</a><br />
 <span class="index-where">(in&nbsp;<a href="googleapiclient.errors.HttpError-class.html">HttpError</a>)</span></td>
 <td width="33%" class="link-index"><a href="googleapiclient.http.HttpRequest-class.html#_process_response">_process_response()</a><br />
 <span class="index-where">(in&nbsp;<a href="googleapiclient.http.HttpRequest-class.html">HttpRequest</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="googleapiclient.discovery_cache.appengine_memcache.Cache-class.html#__init__">__init__()</a><br />
-<span class="index-where">(in&nbsp;<a href="googleapiclient.discovery_cache.appengine_memcache.Cache-class.html">Cache</a>)</span></td>
+<td width="33%" class="link-index"><a href="googleapiclient.discovery.ResourceMethodParameters-class.html#__init__">__init__()</a><br />
+<span class="index-where">(in&nbsp;<a href="googleapiclient.discovery.ResourceMethodParameters-class.html" onclick="show_private();">ResourceMethodParameters</a>)</span></td>
 <td width="33%" class="link-index"><a href="googleapiclient.discovery.Resource-class.html#__setstate__">__setstate__()</a><br />
 <span class="index-where">(in&nbsp;<a href="googleapiclient.discovery.Resource-class.html" onclick="show_private();">Resource</a>)</span></td>
 <td width="33%" class="link-index"><a href="googleapiclient.discovery_cache.file_cache-module.html#_read_or_initialize_cache">_read_or_initialize_cache()</a><br />
 <span class="index-where">(in&nbsp;<a href="googleapiclient.discovery_cache.file_cache-module.html">googleapiclient.discovery_cache.file_cache</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="googleapiclient.discovery_cache.file_cache.Cache-class.html#__init__">__init__()</a><br />
-<span class="index-where">(in&nbsp;<a href="googleapiclient.discovery_cache.file_cache.Cache-class.html">Cache</a>)</span></td>
+<td width="33%" class="link-index"><a href="googleapiclient.discovery_cache.appengine_memcache.Cache-class.html#__init__">__init__()</a><br />
+<span class="index-where">(in&nbsp;<a href="googleapiclient.discovery_cache.appengine_memcache.Cache-class.html">Cache</a>)</span></td>
 <td width="33%" class="link-index"><a href="googleapiclient.model-module.html#_abstract">_abstract()</a><br />
 <span class="index-where">(in&nbsp;<a href="googleapiclient.model-module.html">googleapiclient.model</a>)</span></td>
 <td width="33%" class="link-index"><a href="googleapiclient.http.BatchHttpRequest-class.html#_refresh_and_apply_credentials">_refresh_and_apply_credentials()</a><br />
 <span class="index-where">(in&nbsp;<a href="googleapiclient.http.BatchHttpRequest-class.html">BatchHttpRequest</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="googleapiclient.errors.BatchError-class.html#__init__">__init__()</a><br />
-<span class="index-where">(in&nbsp;<a href="googleapiclient.errors.BatchError-class.html">BatchError</a>)</span></td>
+<td width="33%" class="link-index"><a href="googleapiclient.discovery_cache.file_cache.Cache-class.html#__init__">__init__()</a><br />
+<span class="index-where">(in&nbsp;<a href="googleapiclient.discovery_cache.file_cache.Cache-class.html">Cache</a>)</span></td>
 <td width="33%" class="link-index"><a href="googleapiclient.discovery.Resource-class.html#_add_basic_methods">_add_basic_methods()</a><br />
 <span class="index-where">(in&nbsp;<a href="googleapiclient.discovery.Resource-class.html" onclick="show_private();">Resource</a>)</span></td>
 <td width="33%" class="link-index"><a href="googleapiclient.discovery-module.html#_retrieve_discovery_doc">_retrieve_discovery_doc()</a><br />
 <span class="index-where">(in&nbsp;<a href="googleapiclient.discovery-module.html">googleapiclient.discovery</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="googleapiclient.errors.HttpError-class.html#__init__">__init__()</a><br />
-<span class="index-where">(in&nbsp;<a href="googleapiclient.errors.HttpError-class.html">HttpError</a>)</span></td>
+<td width="33%" class="link-index"><a href="googleapiclient.errors.BatchError-class.html#__init__">__init__()</a><br />
+<span class="index-where">(in&nbsp;<a href="googleapiclient.errors.BatchError-class.html">BatchError</a>)</span></td>
 <td width="33%" class="link-index"><a href="googleapiclient.discovery.Resource-class.html#_add_nested_resources">_add_nested_resources()</a><br />
 <span class="index-where">(in&nbsp;<a href="googleapiclient.discovery.Resource-class.html" onclick="show_private();">Resource</a>)</span></td>
 <td width="33%" class="link-index"><a href="googleapiclient.http-module.html#_retry_request">_retry_request()</a><br />
 <span class="index-where">(in&nbsp;<a href="googleapiclient.http-module.html">googleapiclient.http</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="googleapiclient.errors.UnexpectedBodyError-class.html#__init__">__init__()</a><br />
-<span class="index-where">(in&nbsp;<a href="googleapiclient.errors.UnexpectedBodyError-class.html">UnexpectedBodyError</a>)</span></td>
+<td width="33%" class="link-index"><a href="googleapiclient.errors.HttpError-class.html#__init__">__init__()</a><br />
+<span class="index-where">(in&nbsp;<a href="googleapiclient.errors.HttpError-class.html">HttpError</a>)</span></td>
 <td width="33%" class="link-index"><a href="googleapiclient.discovery.Resource-class.html#_add_next_methods">_add_next_methods()</a><br />
 <span class="index-where">(in&nbsp;<a href="googleapiclient.discovery.Resource-class.html" onclick="show_private();">Resource</a>)</span></td>
 <td width="33%" class="link-index"><a href="googleapiclient.schema._SchemaToStruct-class.html">_SchemaToStruct</a><br />
 <span class="index-where">(in&nbsp;<a href="googleapiclient.schema-module.html">googleapiclient.schema</a>)</span></td>
 </tr>
 <tr>
+<td width="33%" class="link-index"><a href="googleapiclient.errors.UnexpectedBodyError-class.html#__init__">__init__()</a><br />
+<span class="index-where">(in&nbsp;<a href="googleapiclient.errors.UnexpectedBodyError-class.html">UnexpectedBodyError</a>)</span></td>
+<td width="33%" class="link-index"><a href="googleapiclient._auth-module.html">_auth</a><br />
+<span class="index-where">(in&nbsp;<a href="googleapiclient-module.html">googleapiclient</a>)</span></td>
+<td width="33%" class="link-index"><a href="googleapiclient.http.BatchHttpRequest-class.html#_serialize_request">_serialize_request()</a><br />
+<span class="index-where">(in&nbsp;<a href="googleapiclient.http.BatchHttpRequest-class.html">BatchHttpRequest</a>)</span></td>
+</tr>
+<tr>
 <td width="33%" class="link-index"><a href="googleapiclient.errors.UnexpectedMethodError-class.html#__init__">__init__()</a><br />
 <span class="index-where">(in&nbsp;<a href="googleapiclient.errors.UnexpectedMethodError-class.html">UnexpectedMethodError</a>)</span></td>
 <td width="33%" class="link-index"><a href="googleapiclient.model.BaseModel-class.html#_build_query">_build_query()</a><br />
 <span class="index-where">(in&nbsp;<a href="googleapiclient.model.BaseModel-class.html">BaseModel</a>)</span></td>
-<td width="33%" class="link-index"><a href="googleapiclient.http.BatchHttpRequest-class.html#_serialize_request">_serialize_request()</a><br />
-<span class="index-where">(in&nbsp;<a href="googleapiclient.http.BatchHttpRequest-class.html">BatchHttpRequest</a>)</span></td>
+<td width="33%" class="link-index"><a href="googleapiclient.discovery.Resource-class.html#_set_dynamic_attr">_set_dynamic_attr()</a><br />
+<span class="index-where">(in&nbsp;<a href="googleapiclient.discovery.Resource-class.html" onclick="show_private();">Resource</a>)</span></td>
 </tr>
 <tr>
 <td width="33%" class="link-index"><a href="googleapiclient.http.BatchHttpRequest-class.html#__init__">__init__()</a><br />
 <span class="index-where">(in&nbsp;<a href="googleapiclient.http.BatchHttpRequest-class.html">BatchHttpRequest</a>)</span></td>
 <td width="33%" class="link-index"><a href="googleapiclient.discovery._BytesGenerator-class.html">_BytesGenerator</a><br />
 <span class="index-where">(in&nbsp;<a href="googleapiclient.discovery-module.html">googleapiclient.discovery</a>)</span></td>
-<td width="33%" class="link-index"><a href="googleapiclient.discovery.Resource-class.html#_set_dynamic_attr">_set_dynamic_attr()</a><br />
+<td width="33%" class="link-index"><a href="googleapiclient.discovery.Resource-class.html#_set_service_methods">_set_service_methods()</a><br />
 <span class="index-where">(in&nbsp;<a href="googleapiclient.discovery.Resource-class.html" onclick="show_private();">Resource</a>)</span></td>
 </tr>
 <tr>
@@ -868,15 +894,15 @@
 <span class="index-where">(in&nbsp;<a href="googleapiclient.http.HttpMock-class.html">HttpMock</a>)</span></td>
 <td width="33%" class="link-index"><a href="googleapiclient.discovery-module.html#_cast">_cast()</a><br />
 <span class="index-where">(in&nbsp;<a href="googleapiclient.discovery-module.html">googleapiclient.discovery</a>)</span></td>
-<td width="33%" class="link-index"><a href="googleapiclient.discovery.Resource-class.html#_set_service_methods">_set_service_methods()</a><br />
-<span class="index-where">(in&nbsp;<a href="googleapiclient.discovery.Resource-class.html" onclick="show_private();">Resource</a>)</span></td>
+<td width="33%" class="link-index"><a href="googleapiclient.http-module.html#_should_retry_response">_should_retry_response()</a><br />
+<span class="index-where">(in&nbsp;<a href="googleapiclient.http-module.html">googleapiclient.http</a>)</span></td>
 </tr>
 <tr>
 <td width="33%" class="link-index"><a href="googleapiclient.http.HttpMockSequence-class.html#__init__">__init__()</a><br />
 <span class="index-where">(in&nbsp;<a href="googleapiclient.http.HttpMockSequence-class.html">HttpMockSequence</a>)</span></td>
 <td width="33%" class="link-index"><a href="googleapiclient.http.BatchHttpRequest-class.html#_deserialize_response">_deserialize_response()</a><br />
 <span class="index-where">(in&nbsp;<a href="googleapiclient.http.BatchHttpRequest-class.html">BatchHttpRequest</a>)</span></td>
-<td width="33%" class="link-index"><a href="googleapiclient.http-module.html#_should_retry_response">_should_retry_response()</a><br />
+<td width="33%" class="link-index"><a href="googleapiclient.http-module.html#_ssl_SSLError">_ssl_SSLError</a><br />
 <span class="index-where">(in&nbsp;<a href="googleapiclient.http-module.html">googleapiclient.http</a>)</span></td>
 </tr>
 <tr>
@@ -884,7 +910,7 @@
 <span class="index-where">(in&nbsp;<a href="googleapiclient.http.HttpRequest-class.html">HttpRequest</a>)</span></td>
 <td width="33%" class="link-index"><a href="googleapiclient.http.BatchHttpRequest-class.html#_execute">_execute()</a><br />
 <span class="index-where">(in&nbsp;<a href="googleapiclient.http.BatchHttpRequest-class.html">BatchHttpRequest</a>)</span></td>
-<td width="33%" class="link-index"><a href="googleapiclient.http-module.html#_ssl_SSLError">_ssl_SSLError</a><br />
+<td width="33%" class="link-index"><a href="googleapiclient.http._StreamSlice-class.html">_StreamSlice</a><br />
 <span class="index-where">(in&nbsp;<a href="googleapiclient.http-module.html">googleapiclient.http</a>)</span></td>
 </tr>
 <tr>
@@ -892,64 +918,70 @@
 <span class="index-where">(in&nbsp;<a href="googleapiclient.http.HttpRequestMock-class.html">HttpRequestMock</a>)</span></td>
 <td width="33%" class="link-index"><a href="googleapiclient.mimeparse-module.html#_filter_blank">_filter_blank()</a><br />
 <span class="index-where">(in&nbsp;<a href="googleapiclient.mimeparse-module.html">googleapiclient.mimeparse</a>)</span></td>
-<td width="33%" class="link-index"><a href="googleapiclient.http._StreamSlice-class.html">_StreamSlice</a><br />
-<span class="index-where">(in&nbsp;<a href="googleapiclient.http-module.html">googleapiclient.http</a>)</span></td>
+<td width="33%" class="link-index"><a href="googleapiclient.http.MediaUpload-class.html#_to_json">_to_json()</a><br />
+<span class="index-where">(in&nbsp;<a href="googleapiclient.http.MediaUpload-class.html">MediaUpload</a>)</span></td>
 </tr>
 <tr>
 <td width="33%" class="link-index"><a href="googleapiclient.http.MediaDownloadProgress-class.html#__init__">__init__()</a><br />
 <span class="index-where">(in&nbsp;<a href="googleapiclient.http.MediaDownloadProgress-class.html">MediaDownloadProgress</a>)</span></td>
 <td width="33%" class="link-index"><a href="googleapiclient.discovery-module.html#_fix_up_media_upload">_fix_up_media_upload()</a><br />
 <span class="index-where">(in&nbsp;<a href="googleapiclient.discovery-module.html">googleapiclient.discovery</a>)</span></td>
-<td width="33%" class="link-index"><a href="googleapiclient.http.MediaUpload-class.html#_to_json">_to_json()</a><br />
-<span class="index-where">(in&nbsp;<a href="googleapiclient.http.MediaUpload-class.html">MediaUpload</a>)</span></td>
+<td width="33%" class="link-index"><a href="googleapiclient.schema._SchemaToStruct-class.html#_to_str_impl">_to_str_impl()</a><br />
+<span class="index-where">(in&nbsp;<a href="googleapiclient.schema._SchemaToStruct-class.html" onclick="show_private();">_SchemaToStruct</a>)</span></td>
 </tr>
 <tr>
 <td width="33%" class="link-index"><a href="googleapiclient.http.MediaFileUpload-class.html#__init__">__init__()</a><br />
 <span class="index-where">(in&nbsp;<a href="googleapiclient.http.MediaFileUpload-class.html">MediaFileUpload</a>)</span></td>
 <td width="33%" class="link-index"><a href="googleapiclient.discovery-module.html#_fix_up_method_description">_fix_up_method_description()</a><br />
 <span class="index-where">(in&nbsp;<a href="googleapiclient.discovery-module.html">googleapiclient.discovery</a>)</span></td>
-<td width="33%" class="link-index"><a href="googleapiclient.schema._SchemaToStruct-class.html#_to_str_impl">_to_str_impl()</a><br />
-<span class="index-where">(in&nbsp;<a href="googleapiclient.schema._SchemaToStruct-class.html" onclick="show_private();">_SchemaToStruct</a>)</span></td>
+<td width="33%" class="link-index"><a href="googleapiclient.discovery_cache.file_cache-module.html#_to_timestamp">_to_timestamp()</a><br />
+<span class="index-where">(in&nbsp;<a href="googleapiclient.discovery_cache.file_cache-module.html">googleapiclient.discovery_cache.file_cache</a>)</span></td>
 </tr>
 <tr>
 <td width="33%" class="link-index"><a href="googleapiclient.http.MediaInMemoryUpload-class.html#__init__">__init__()</a><br />
 <span class="index-where">(in&nbsp;<a href="googleapiclient.http.MediaInMemoryUpload-class.html">MediaInMemoryUpload</a>)</span></td>
 <td width="33%" class="link-index"><a href="googleapiclient.discovery-module.html#_fix_up_parameters">_fix_up_parameters()</a><br />
 <span class="index-where">(in&nbsp;<a href="googleapiclient.discovery-module.html">googleapiclient.discovery</a>)</span></td>
-<td width="33%" class="link-index"><a href="googleapiclient.discovery_cache.file_cache-module.html#_to_timestamp">_to_timestamp()</a><br />
-<span class="index-where">(in&nbsp;<a href="googleapiclient.discovery_cache.file_cache-module.html">googleapiclient.discovery_cache.file_cache</a>)</span></td>
+<td width="33%" class="link-index"><a href="googleapiclient.http-module.html#_TOO_MANY_REQUESTS">_TOO_MANY_REQUESTS</a><br />
+<span class="index-where">(in&nbsp;<a href="googleapiclient.http-module.html">googleapiclient.http</a>)</span></td>
 </tr>
 <tr>
 <td width="33%" class="link-index"><a href="googleapiclient.http.MediaIoBaseDownload-class.html#__init__">__init__()</a><br />
 <span class="index-where">(in&nbsp;<a href="googleapiclient.http.MediaIoBaseDownload-class.html">MediaIoBaseDownload</a>)</span></td>
 <td width="33%" class="link-index"><a href="googleapiclient.errors.HttpError-class.html#_get_reason">_get_reason()</a><br />
 <span class="index-where">(in&nbsp;<a href="googleapiclient.errors.HttpError-class.html">HttpError</a>)</span></td>
-<td width="33%" class="link-index"><a href="googleapiclient.http-module.html#_TOO_MANY_REQUESTS">_TOO_MANY_REQUESTS</a><br />
-<span class="index-where">(in&nbsp;<a href="googleapiclient.http-module.html">googleapiclient.http</a>)</span></td>
+<td width="33%" class="link-index"><a href="googleapiclient.channel-module.html#_upper_header_keys">_upper_header_keys()</a><br />
+<span class="index-where">(in&nbsp;<a href="googleapiclient.channel-module.html">googleapiclient.channel</a>)</span></td>
 </tr>
 <tr>
 <td width="33%" class="link-index"><a href="googleapiclient.http.MediaIoBaseUpload-class.html#__init__">__init__()</a><br />
 <span class="index-where">(in&nbsp;<a href="googleapiclient.http.MediaIoBaseUpload-class.html">MediaIoBaseUpload</a>)</span></td>
 <td width="33%" class="link-index"><a href="googleapiclient.http.BatchHttpRequest-class.html#_header_to_id">_header_to_id()</a><br />
 <span class="index-where">(in&nbsp;<a href="googleapiclient.http.BatchHttpRequest-class.html">BatchHttpRequest</a>)</span></td>
-<td width="33%" class="link-index"><a href="googleapiclient.channel-module.html#_upper_header_keys">_upper_header_keys()</a><br />
-<span class="index-where">(in&nbsp;<a href="googleapiclient.channel-module.html">googleapiclient.channel</a>)</span></td>
+<td width="33%" class="link-index"><a href="googleapiclient.discovery-module.html#_urljoin">_urljoin()</a><br />
+<span class="index-where">(in&nbsp;<a href="googleapiclient.discovery-module.html">googleapiclient.discovery</a>)</span></td>
 </tr>
 <tr>
 <td width="33%" class="link-index"><a href="googleapiclient.http.MediaUploadProgress-class.html#__init__">__init__()</a><br />
 <span class="index-where">(in&nbsp;<a href="googleapiclient.http.MediaUploadProgress-class.html">MediaUploadProgress</a>)</span></td>
 <td width="33%" class="link-index"><a href="googleapiclient.http.BatchHttpRequest-class.html#_id_to_header">_id_to_header()</a><br />
 <span class="index-where">(in&nbsp;<a href="googleapiclient.http.BatchHttpRequest-class.html">BatchHttpRequest</a>)</span></td>
-<td width="33%" class="link-index"><a href="googleapiclient.discovery-module.html#_urljoin">_urljoin()</a><br />
-<span class="index-where">(in&nbsp;<a href="googleapiclient.discovery-module.html">googleapiclient.discovery</a>)</span></td>
+<td width="33%" class="link-index"><a href="googleapiclient.discovery._BytesGenerator-class.html#_write_lines">_write_lines</a><br />
+<span class="index-where">(in&nbsp;<a href="googleapiclient.discovery._BytesGenerator-class.html" onclick="show_private();">_BytesGenerator</a>)</span></td>
 </tr>
 <tr>
 <td width="33%" class="link-index"><a href="googleapiclient.http.RequestMockBuilder-class.html#__init__">__init__()</a><br />
 <span class="index-where">(in&nbsp;<a href="googleapiclient.http.RequestMockBuilder-class.html">RequestMockBuilder</a>)</span></td>
 <td width="33%" class="link-index"><a href="googleapiclient.model.BaseModel-class.html#_log_request">_log_request()</a><br />
 <span class="index-where">(in&nbsp;<a href="googleapiclient.model.BaseModel-class.html">BaseModel</a>)</span></td>
-<td width="33%" class="link-index"><a href="googleapiclient.discovery._BytesGenerator-class.html#_write_lines">_write_lines</a><br />
-<span class="index-where">(in&nbsp;<a href="googleapiclient.discovery._BytesGenerator-class.html" onclick="show_private();">_BytesGenerator</a>)</span></td>
+<td width="33%" class="link-index">&nbsp;</td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="googleapiclient.http._StreamSlice-class.html#__init__">__init__()</a><br />
+<span class="index-where">(in&nbsp;<a href="googleapiclient.http._StreamSlice-class.html" onclick="show_private();">_StreamSlice</a>)</span></td>
+<td width="33%" class="link-index"><a href="googleapiclient.model.BaseModel-class.html#_log_response">_log_response()</a><br />
+<span class="index-where">(in&nbsp;<a href="googleapiclient.model.BaseModel-class.html">BaseModel</a>)</span></td>
+<td width="33%" class="link-index">&nbsp;</td>
 </tr>
 </table>
 </td></tr>
@@ -980,7 +1012,7 @@
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Tue Nov  1 17:02:49 2016
+    Generated by Epydoc 3.0.1 on Thu Jan  5 12:55:02 2017
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/epy/module-tree.html b/docs/epy/module-tree.html
index bdb9f44..fbaa6d1 100644
--- a/docs/epy/module-tree.html
+++ b/docs/epy/module-tree.html
@@ -57,6 +57,7 @@
 <ul class="nomargin-top">
     <li> <strong class="uidlink"><a href="googleapiclient-module.html">googleapiclient</a></strong>
     <ul>
+    <li class="private"> <strong class="uidlink"><a href="googleapiclient._auth-module.html">googleapiclient._auth</a></strong>: <em class="summary">Helpers for authentication using oauth2client or google-auth.</em>    </li>
     <li> <strong class="uidlink"><a href="googleapiclient.channel-module.html">googleapiclient.channel</a></strong>: <em class="summary">Channel notifications support.</em>    </li>
     <li> <strong class="uidlink"><a href="googleapiclient.discovery-module.html">googleapiclient.discovery</a></strong>: <em class="summary">Client for discovery based APIs.</em>    </li>
     <li> <strong class="uidlink"><a href="googleapiclient.discovery_cache-module.html">googleapiclient.discovery_cache</a></strong>: <em class="summary">Caching utility for the discovery document.</em>
@@ -101,7 +102,7 @@
 <table border="0" cellpadding="0" cellspacing="0" width="100%%">
   <tr>
     <td align="left" class="footer">
-    Generated by Epydoc 3.0.1 on Tue Nov  1 17:02:49 2016
+    Generated by Epydoc 3.0.1 on Thu Jan  5 12:55:02 2017
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/epy/redirect.html b/docs/epy/redirect.html
index bc03ec6..09be7b4 100644
--- a/docs/epy/redirect.html
+++ b/docs/epy/redirect.html
@@ -7,7 +7,7 @@
 <body>
 <script type="text/javascript">
 <!--
-var pages = ["googleapiclient.discovery_cache.appengine_memcache.Cache-c", "googleapiclient.discovery_cache.appengine_memcache-m", "googleapiclient.discovery.ResourceMethodParameters-c", "googleapiclient.discovery_cache.file_cache.Cache-c", "googleapiclient.errors.UnacceptableMimeTypeError-c", "googleapiclient.errors.InvalidNotificationError-c", "googleapiclient.errors.UnknownApiNameOrVersion-c", "googleapiclient.errors.InvalidChunkSizeError-c", "googleapiclient.errors.UnexpectedMethodError-c", "googleapiclient.errors.MediaUploadSizeError-c", "googleapiclient.errors.ResumableUploadError-c", "googleapiclient.discovery_cache.file_cache-m", "googleapiclient.discovery_cache.base.Cache-c", "googleapiclient.errors.UnexpectedBodyError-c", "googleapiclient.http.MediaDownloadProgress-c", "googleapiclient.discovery._BytesGenerator-c", "googleapiclient.model.ProtocolBufferModel-c", "googleapiclient.http.MediaInMemoryUpload-c", "googleapiclient.http.MediaIoBaseDownload-c", "googleapiclient.http.MediaUploadProgress-c", "googleapiclient.errors.InvalidJsonError-c", "googleapiclient.http.RequestMockBuilder-c", "googleapiclient.errors.UnknownFileType-c", "googleapiclient.errors.UnknownLinkType-c", "googleapiclient.http.MediaIoBaseUpload-c", "googleapiclient.schema._SchemaToStruct-c", "googleapiclient.http.BatchHttpRequest-c", "googleapiclient.http.HttpMockSequence-c", "googleapiclient.discovery_cache.base-m", "googleapiclient.channel.Notification-c", "googleapiclient.http.HttpRequestMock-c", "googleapiclient.http.MediaFileUpload-c", "googleapiclient.discovery.Resource-c", "googleapiclient.errors.BatchError-c", "googleapiclient.http._StreamSlice-c", "googleapiclient.errors.HttpError-c", "googleapiclient.http.HttpRequest-c", "googleapiclient.http.MediaUpload-c", "googleapiclient.model.MediaModel-c", "googleapiclient.discovery_cache-m", "googleapiclient.channel.Channel-c", "googleapiclient.model.BaseModel-c", "googleapiclient.model.JsonModel-c", "googleapiclient.model.RawModel-c", "googleapiclient.schema.Schemas-c", "googleapiclient.http.HttpMock-c", "googleapiclient.sample_tools-m", "googleapiclient.errors.Error-c", "googleapiclient.NullHandler-c", "googleapiclient.model.Model-c", "googleapiclient.discovery-m", "googleapiclient.mimeparse-m", "googleapiclient.channel-m", "googleapiclient.errors-m", "googleapiclient.schema-m", "googleapiclient.model-m", "googleapiclient.http-m", "googleapiclient-m"];
+var pages = ["googleapiclient.discovery_cache.appengine_memcache.Cache-c", "googleapiclient.discovery_cache.appengine_memcache-m", "googleapiclient.discovery.ResourceMethodParameters-c", "googleapiclient.discovery_cache.file_cache.Cache-c", "googleapiclient.errors.UnacceptableMimeTypeError-c", "googleapiclient.errors.InvalidNotificationError-c", "googleapiclient.errors.UnknownApiNameOrVersion-c", "googleapiclient.errors.InvalidChunkSizeError-c", "googleapiclient.errors.UnexpectedMethodError-c", "googleapiclient.errors.MediaUploadSizeError-c", "googleapiclient.errors.ResumableUploadError-c", "googleapiclient.discovery_cache.file_cache-m", "googleapiclient.discovery_cache.base.Cache-c", "googleapiclient.errors.UnexpectedBodyError-c", "googleapiclient.http.MediaDownloadProgress-c", "googleapiclient.discovery._BytesGenerator-c", "googleapiclient.model.ProtocolBufferModel-c", "googleapiclient.http.MediaInMemoryUpload-c", "googleapiclient.http.MediaIoBaseDownload-c", "googleapiclient.http.MediaUploadProgress-c", "googleapiclient.errors.InvalidJsonError-c", "googleapiclient.http.RequestMockBuilder-c", "googleapiclient.errors.UnknownFileType-c", "googleapiclient.errors.UnknownLinkType-c", "googleapiclient.http.MediaIoBaseUpload-c", "googleapiclient.schema._SchemaToStruct-c", "googleapiclient.http.BatchHttpRequest-c", "googleapiclient.http.HttpMockSequence-c", "googleapiclient.discovery_cache.base-m", "googleapiclient.channel.Notification-c", "googleapiclient.http.HttpRequestMock-c", "googleapiclient.http.MediaFileUpload-c", "googleapiclient.discovery.Resource-c", "googleapiclient.errors.BatchError-c", "googleapiclient.http._StreamSlice-c", "googleapiclient.errors.HttpError-c", "googleapiclient.http.HttpRequest-c", "googleapiclient.http.MediaUpload-c", "googleapiclient.model.MediaModel-c", "googleapiclient.discovery_cache-m", "googleapiclient.channel.Channel-c", "googleapiclient.model.BaseModel-c", "googleapiclient.model.JsonModel-c", "googleapiclient.model.RawModel-c", "googleapiclient.schema.Schemas-c", "googleapiclient.http.HttpMock-c", "googleapiclient.sample_tools-m", "googleapiclient.errors.Error-c", "googleapiclient.NullHandler-c", "googleapiclient.model.Model-c", "googleapiclient.discovery-m", "googleapiclient.mimeparse-m", "googleapiclient.channel-m", "googleapiclient.errors-m", "googleapiclient.schema-m", "googleapiclient._auth-m", "googleapiclient.model-m", "googleapiclient.http-m", "googleapiclient-m"];
 var dottedName = get_anchor();
 if (dottedName) {
     var target = redirect_url(dottedName);
diff --git a/docs/epy/toc-everything.html b/docs/epy/toc-everything.html
index f47bd32..83fb7d3 100644
--- a/docs/epy/toc-everything.html
+++ b/docs/epy/toc-everything.html
@@ -70,6 +70,15 @@
      >googleapiclient.schema._SchemaToStruct</a><br />  </div>
   <h2 class="toc">All Functions</h2>
   <div class="private">
+    <a target="mainFrame" href="googleapiclient._auth-module.html#authorized_http"
+     >googleapiclient._auth.authorized_http</a><br />  </div>
+  <div class="private">
+    <a target="mainFrame" href="googleapiclient._auth-module.html#default_credentials"
+     >googleapiclient._auth.default_credentials</a><br />  </div>
+  <div class="private">
+    <a target="mainFrame" href="googleapiclient._auth-module.html#with_scopes"
+     >googleapiclient._auth.with_scopes</a><br />  </div>
+  <div class="private">
     <a target="mainFrame" href="googleapiclient.channel-module.html#_upper_header_keys"
      >googleapiclient.channel._upper_header_keys</a><br />  </div>
     <a target="mainFrame" href="googleapiclient.channel-module.html#new_webhook_channel"
@@ -138,6 +147,12 @@
     <a target="mainFrame" href="googleapiclient.model-module.html#makepatch"
      >googleapiclient.model.makepatch</a><br />    <a target="mainFrame" href="googleapiclient.sample_tools-module.html#init"
      >googleapiclient.sample_tools.init</a><br />  <h2 class="toc">All Variables</h2>
+  <div class="private">
+    <a target="mainFrame" href="googleapiclient._auth-module.html#HAS_GOOGLE_AUTH"
+     >googleapiclient._auth.HAS_GOOGLE_AUTH</a><br />  </div>
+  <div class="private">
+    <a target="mainFrame" href="googleapiclient._auth-module.html#HAS_OAUTH2CLIENT"
+     >googleapiclient._auth.HAS_OAUTH2CLIENT</a><br />  </div>
     <a target="mainFrame" href="googleapiclient.channel-module.html#CHANNEL_PARAMS"
      >googleapiclient.channel.CHANNEL_PARAMS</a><br />    <a target="mainFrame" href="googleapiclient.channel-module.html#EPOCH"
      >googleapiclient.channel.EPOCH</a><br />    <a target="mainFrame" href="googleapiclient.channel-module.html#X_GOOG_CHANNEL_ID"
diff --git a/docs/epy/toc-googleapiclient._auth-module.html b/docs/epy/toc-googleapiclient._auth-module.html
new file mode 100644
index 0000000..a2896cb
--- /dev/null
+++ b/docs/epy/toc-googleapiclient._auth-module.html
@@ -0,0 +1,46 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+          "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>_auth</title>
+  <link rel="stylesheet" href="epydoc.css" type="text/css" />
+  <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+      alink="#204080">
+<h1 class="toc">Module _auth</h1>
+<hr />
+  <h2 class="toc">Functions</h2>
+  <div class="private">
+    <a target="mainFrame" href="googleapiclient._auth-module.html#authorized_http"
+     >authorized_http</a><br />  </div>
+  <div class="private">
+    <a target="mainFrame" href="googleapiclient._auth-module.html#default_credentials"
+     >default_credentials</a><br />  </div>
+  <div class="private">
+    <a target="mainFrame" href="googleapiclient._auth-module.html#with_scopes"
+     >with_scopes</a><br />  </div>
+  <h2 class="toc">Variables</h2>
+  <div class="private">
+    <a target="mainFrame" href="googleapiclient._auth-module.html#HAS_GOOGLE_AUTH"
+     >HAS_GOOGLE_AUTH</a><br />  </div>
+  <div class="private">
+    <a target="mainFrame" href="googleapiclient._auth-module.html#HAS_OAUTH2CLIENT"
+     >HAS_OAUTH2CLIENT</a><br />  </div>
+<hr />
+<span class="options">[<a href="javascript:void(0);" class="privatelink"
+    onclick="toggle_private();">hide&nbsp;private</a>]</span>
+
+<script type="text/javascript">
+  <!--
+  // Private objects are initially displayed (because if
+  // javascript is turned off then we want them to be
+  // visible); but by default, we want to hide them.  So hide
+  // them unless we have a cookie that says to show them.
+  checkCookie();
+  // -->
+</script>
+</body>
+</html>
diff --git a/docs/epy/toc.html b/docs/epy/toc.html
index d667889..019e619 100644
--- a/docs/epy/toc.html
+++ b/docs/epy/toc.html
@@ -16,7 +16,10 @@
   <br />
   <h2 class="toc">Modules</h2>
     <a target="moduleFrame" href="toc-googleapiclient-module.html"
-     onclick="setFrame('toc-googleapiclient-module.html','googleapiclient-module.html');"     >googleapiclient</a><br />    <a target="moduleFrame" href="toc-googleapiclient.channel-module.html"
+     onclick="setFrame('toc-googleapiclient-module.html','googleapiclient-module.html');"     >googleapiclient</a><br />  <div class="private">
+    <a target="moduleFrame" href="toc-googleapiclient._auth-module.html"
+     onclick="setFrame('toc-googleapiclient._auth-module.html','googleapiclient._auth-module.html');"     >googleapiclient._auth</a><br />  </div>
+    <a target="moduleFrame" href="toc-googleapiclient.channel-module.html"
      onclick="setFrame('toc-googleapiclient.channel-module.html','googleapiclient.channel-module.html');"     >googleapiclient.channel</a><br />    <a target="moduleFrame" href="toc-googleapiclient.discovery-module.html"
      onclick="setFrame('toc-googleapiclient.discovery-module.html','googleapiclient.discovery-module.html');"     >googleapiclient.discovery</a><br />    <a target="moduleFrame" href="toc-googleapiclient.discovery_cache-module.html"
      onclick="setFrame('toc-googleapiclient.discovery_cache-module.html','googleapiclient.discovery_cache-module.html');"     >googleapiclient.discovery_cache</a><br />    <a target="moduleFrame" href="toc-googleapiclient.discovery_cache.appengine_memcache-module.html"
diff --git a/docs/epy/uml_class_diagram_for_googleap.gif b/docs/epy/uml_class_diagram_for_googleap.gif
index 86f4563..01d4f00 100644
--- a/docs/epy/uml_class_diagram_for_googleap.gif
+++ b/docs/epy/uml_class_diagram_for_googleap.gif
Binary files differ
diff --git a/docs/epy/uml_class_diagram_for_googleap_10.gif b/docs/epy/uml_class_diagram_for_googleap_10.gif
index b289d22..e77cf93 100644
--- a/docs/epy/uml_class_diagram_for_googleap_10.gif
+++ b/docs/epy/uml_class_diagram_for_googleap_10.gif
Binary files differ
diff --git a/docs/epy/uml_class_diagram_for_googleap_11.gif b/docs/epy/uml_class_diagram_for_googleap_11.gif
index 5fa8d29..d6affed 100644
--- a/docs/epy/uml_class_diagram_for_googleap_11.gif
+++ b/docs/epy/uml_class_diagram_for_googleap_11.gif
Binary files differ
diff --git a/docs/epy/uml_class_diagram_for_googleap_12.gif b/docs/epy/uml_class_diagram_for_googleap_12.gif
index 3c93ccf..2649758 100644
--- a/docs/epy/uml_class_diagram_for_googleap_12.gif
+++ b/docs/epy/uml_class_diagram_for_googleap_12.gif
Binary files differ
diff --git a/docs/epy/uml_class_diagram_for_googleap_13.gif b/docs/epy/uml_class_diagram_for_googleap_13.gif
index 9f5ec19..5c95b93 100644
--- a/docs/epy/uml_class_diagram_for_googleap_13.gif
+++ b/docs/epy/uml_class_diagram_for_googleap_13.gif
Binary files differ
diff --git a/docs/epy/uml_class_diagram_for_googleap_14.gif b/docs/epy/uml_class_diagram_for_googleap_14.gif
index 4c1f0a5..202891d 100644
--- a/docs/epy/uml_class_diagram_for_googleap_14.gif
+++ b/docs/epy/uml_class_diagram_for_googleap_14.gif
Binary files differ
diff --git a/docs/epy/uml_class_diagram_for_googleap_15.gif b/docs/epy/uml_class_diagram_for_googleap_15.gif
index 9f0d471..4e3fd1a 100644
--- a/docs/epy/uml_class_diagram_for_googleap_15.gif
+++ b/docs/epy/uml_class_diagram_for_googleap_15.gif
Binary files differ
diff --git a/docs/epy/uml_class_diagram_for_googleap_16.gif b/docs/epy/uml_class_diagram_for_googleap_16.gif
index 36f1612..bc507dc 100644
--- a/docs/epy/uml_class_diagram_for_googleap_16.gif
+++ b/docs/epy/uml_class_diagram_for_googleap_16.gif
Binary files differ
diff --git a/docs/epy/uml_class_diagram_for_googleap_17.gif b/docs/epy/uml_class_diagram_for_googleap_17.gif
index 1af681a..419b9ca 100644
--- a/docs/epy/uml_class_diagram_for_googleap_17.gif
+++ b/docs/epy/uml_class_diagram_for_googleap_17.gif
Binary files differ
diff --git a/docs/epy/uml_class_diagram_for_googleap_18.gif b/docs/epy/uml_class_diagram_for_googleap_18.gif
index e28ee2e..87ad7ed 100644
--- a/docs/epy/uml_class_diagram_for_googleap_18.gif
+++ b/docs/epy/uml_class_diagram_for_googleap_18.gif
Binary files differ
diff --git a/docs/epy/uml_class_diagram_for_googleap_19.gif b/docs/epy/uml_class_diagram_for_googleap_19.gif
index f5beaac..b8009bd 100644
--- a/docs/epy/uml_class_diagram_for_googleap_19.gif
+++ b/docs/epy/uml_class_diagram_for_googleap_19.gif
Binary files differ
diff --git a/docs/epy/uml_class_diagram_for_googleap_2.gif b/docs/epy/uml_class_diagram_for_googleap_2.gif
index 040ca75..57b1f6f 100644
--- a/docs/epy/uml_class_diagram_for_googleap_2.gif
+++ b/docs/epy/uml_class_diagram_for_googleap_2.gif
Binary files differ
diff --git a/docs/epy/uml_class_diagram_for_googleap_20.gif b/docs/epy/uml_class_diagram_for_googleap_20.gif
index d3b2212..bbb2092 100644
--- a/docs/epy/uml_class_diagram_for_googleap_20.gif
+++ b/docs/epy/uml_class_diagram_for_googleap_20.gif
Binary files differ
diff --git a/docs/epy/uml_class_diagram_for_googleap_21.gif b/docs/epy/uml_class_diagram_for_googleap_21.gif
index ef77139..8097eca 100644
--- a/docs/epy/uml_class_diagram_for_googleap_21.gif
+++ b/docs/epy/uml_class_diagram_for_googleap_21.gif
Binary files differ
diff --git a/docs/epy/uml_class_diagram_for_googleap_22.gif b/docs/epy/uml_class_diagram_for_googleap_22.gif
index 35fa369..202ad11 100644
--- a/docs/epy/uml_class_diagram_for_googleap_22.gif
+++ b/docs/epy/uml_class_diagram_for_googleap_22.gif
Binary files differ
diff --git a/docs/epy/uml_class_diagram_for_googleap_23.gif b/docs/epy/uml_class_diagram_for_googleap_23.gif
index f48a690..0991530 100644
--- a/docs/epy/uml_class_diagram_for_googleap_23.gif
+++ b/docs/epy/uml_class_diagram_for_googleap_23.gif
Binary files differ
diff --git a/docs/epy/uml_class_diagram_for_googleap_24.gif b/docs/epy/uml_class_diagram_for_googleap_24.gif
index 794fdf8..195370b 100644
--- a/docs/epy/uml_class_diagram_for_googleap_24.gif
+++ b/docs/epy/uml_class_diagram_for_googleap_24.gif
Binary files differ
diff --git a/docs/epy/uml_class_diagram_for_googleap_25.gif b/docs/epy/uml_class_diagram_for_googleap_25.gif
index a48db3a..6949e28 100644
--- a/docs/epy/uml_class_diagram_for_googleap_25.gif
+++ b/docs/epy/uml_class_diagram_for_googleap_25.gif
Binary files differ
diff --git a/docs/epy/uml_class_diagram_for_googleap_26.gif b/docs/epy/uml_class_diagram_for_googleap_26.gif
index d2e72dd..40eb954 100644
--- a/docs/epy/uml_class_diagram_for_googleap_26.gif
+++ b/docs/epy/uml_class_diagram_for_googleap_26.gif
Binary files differ
diff --git a/docs/epy/uml_class_diagram_for_googleap_27.gif b/docs/epy/uml_class_diagram_for_googleap_27.gif
index 9c2bffb..f3d3781 100644
--- a/docs/epy/uml_class_diagram_for_googleap_27.gif
+++ b/docs/epy/uml_class_diagram_for_googleap_27.gif
Binary files differ
diff --git a/docs/epy/uml_class_diagram_for_googleap_28.gif b/docs/epy/uml_class_diagram_for_googleap_28.gif
index ae44c0f..32b5628 100644
--- a/docs/epy/uml_class_diagram_for_googleap_28.gif
+++ b/docs/epy/uml_class_diagram_for_googleap_28.gif
Binary files differ
diff --git a/docs/epy/uml_class_diagram_for_googleap_29.gif b/docs/epy/uml_class_diagram_for_googleap_29.gif
index cae3b90..0bcf209 100644
--- a/docs/epy/uml_class_diagram_for_googleap_29.gif
+++ b/docs/epy/uml_class_diagram_for_googleap_29.gif
Binary files differ
diff --git a/docs/epy/uml_class_diagram_for_googleap_3.gif b/docs/epy/uml_class_diagram_for_googleap_3.gif
index 3ab1c48..0bd1afd 100644
--- a/docs/epy/uml_class_diagram_for_googleap_3.gif
+++ b/docs/epy/uml_class_diagram_for_googleap_3.gif
Binary files differ
diff --git a/docs/epy/uml_class_diagram_for_googleap_30.gif b/docs/epy/uml_class_diagram_for_googleap_30.gif
index f2f052c..9f80745 100644
--- a/docs/epy/uml_class_diagram_for_googleap_30.gif
+++ b/docs/epy/uml_class_diagram_for_googleap_30.gif
Binary files differ
diff --git a/docs/epy/uml_class_diagram_for_googleap_31.gif b/docs/epy/uml_class_diagram_for_googleap_31.gif
index be08786..cb1f1e3 100644
--- a/docs/epy/uml_class_diagram_for_googleap_31.gif
+++ b/docs/epy/uml_class_diagram_for_googleap_31.gif
Binary files differ
diff --git a/docs/epy/uml_class_diagram_for_googleap_32.gif b/docs/epy/uml_class_diagram_for_googleap_32.gif
index 1d7323b..ed8f8b5 100644
--- a/docs/epy/uml_class_diagram_for_googleap_32.gif
+++ b/docs/epy/uml_class_diagram_for_googleap_32.gif
Binary files differ
diff --git a/docs/epy/uml_class_diagram_for_googleap_33.gif b/docs/epy/uml_class_diagram_for_googleap_33.gif
index 0aec8e8..98e7ed2 100644
--- a/docs/epy/uml_class_diagram_for_googleap_33.gif
+++ b/docs/epy/uml_class_diagram_for_googleap_33.gif
Binary files differ
diff --git a/docs/epy/uml_class_diagram_for_googleap_34.gif b/docs/epy/uml_class_diagram_for_googleap_34.gif
index 7f3564e..07ba985 100644
--- a/docs/epy/uml_class_diagram_for_googleap_34.gif
+++ b/docs/epy/uml_class_diagram_for_googleap_34.gif
Binary files differ
diff --git a/docs/epy/uml_class_diagram_for_googleap_35.gif b/docs/epy/uml_class_diagram_for_googleap_35.gif
index c263227..597b75a 100644
--- a/docs/epy/uml_class_diagram_for_googleap_35.gif
+++ b/docs/epy/uml_class_diagram_for_googleap_35.gif
Binary files differ
diff --git a/docs/epy/uml_class_diagram_for_googleap_36.gif b/docs/epy/uml_class_diagram_for_googleap_36.gif
index ed62595..5940a43 100644
--- a/docs/epy/uml_class_diagram_for_googleap_36.gif
+++ b/docs/epy/uml_class_diagram_for_googleap_36.gif
Binary files differ
diff --git a/docs/epy/uml_class_diagram_for_googleap_37.gif b/docs/epy/uml_class_diagram_for_googleap_37.gif
index dbf307c..be15041 100644
--- a/docs/epy/uml_class_diagram_for_googleap_37.gif
+++ b/docs/epy/uml_class_diagram_for_googleap_37.gif
Binary files differ
diff --git a/docs/epy/uml_class_diagram_for_googleap_38.gif b/docs/epy/uml_class_diagram_for_googleap_38.gif
index 22b7ac0..69aca27 100644
--- a/docs/epy/uml_class_diagram_for_googleap_38.gif
+++ b/docs/epy/uml_class_diagram_for_googleap_38.gif
Binary files differ
diff --git a/docs/epy/uml_class_diagram_for_googleap_39.gif b/docs/epy/uml_class_diagram_for_googleap_39.gif
index 5c17b47..8de959b 100644
--- a/docs/epy/uml_class_diagram_for_googleap_39.gif
+++ b/docs/epy/uml_class_diagram_for_googleap_39.gif
Binary files differ
diff --git a/docs/epy/uml_class_diagram_for_googleap_4.gif b/docs/epy/uml_class_diagram_for_googleap_4.gif
index 23819fc..c563526 100644
--- a/docs/epy/uml_class_diagram_for_googleap_4.gif
+++ b/docs/epy/uml_class_diagram_for_googleap_4.gif
Binary files differ
diff --git a/docs/epy/uml_class_diagram_for_googleap_40.gif b/docs/epy/uml_class_diagram_for_googleap_40.gif
index 2abee82..d1b147e 100644
--- a/docs/epy/uml_class_diagram_for_googleap_40.gif
+++ b/docs/epy/uml_class_diagram_for_googleap_40.gif
Binary files differ
diff --git a/docs/epy/uml_class_diagram_for_googleap_41.gif b/docs/epy/uml_class_diagram_for_googleap_41.gif
index e8905e6..6f06b8e 100644
--- a/docs/epy/uml_class_diagram_for_googleap_41.gif
+++ b/docs/epy/uml_class_diagram_for_googleap_41.gif
Binary files differ
diff --git a/docs/epy/uml_class_diagram_for_googleap_42.gif b/docs/epy/uml_class_diagram_for_googleap_42.gif
index 53e255e..34def5d 100644
--- a/docs/epy/uml_class_diagram_for_googleap_42.gif
+++ b/docs/epy/uml_class_diagram_for_googleap_42.gif
Binary files differ
diff --git a/docs/epy/uml_class_diagram_for_googleap_43.gif b/docs/epy/uml_class_diagram_for_googleap_43.gif
index 81831dd..4da4b75 100644
--- a/docs/epy/uml_class_diagram_for_googleap_43.gif
+++ b/docs/epy/uml_class_diagram_for_googleap_43.gif
Binary files differ
diff --git a/docs/epy/uml_class_diagram_for_googleap_44.gif b/docs/epy/uml_class_diagram_for_googleap_44.gif
index 902e0fc..c8cda05 100644
--- a/docs/epy/uml_class_diagram_for_googleap_44.gif
+++ b/docs/epy/uml_class_diagram_for_googleap_44.gif
Binary files differ
diff --git a/docs/epy/uml_class_diagram_for_googleap_45.gif b/docs/epy/uml_class_diagram_for_googleap_45.gif
index b2bf6da..12044ed 100644
--- a/docs/epy/uml_class_diagram_for_googleap_45.gif
+++ b/docs/epy/uml_class_diagram_for_googleap_45.gif
Binary files differ
diff --git a/docs/epy/uml_class_diagram_for_googleap_5.gif b/docs/epy/uml_class_diagram_for_googleap_5.gif
index cbc84d5..5ff1dac 100644
--- a/docs/epy/uml_class_diagram_for_googleap_5.gif
+++ b/docs/epy/uml_class_diagram_for_googleap_5.gif
Binary files differ
diff --git a/docs/epy/uml_class_diagram_for_googleap_6.gif b/docs/epy/uml_class_diagram_for_googleap_6.gif
index 21dc112..9a0086e 100644
--- a/docs/epy/uml_class_diagram_for_googleap_6.gif
+++ b/docs/epy/uml_class_diagram_for_googleap_6.gif
Binary files differ
diff --git a/docs/epy/uml_class_diagram_for_googleap_7.gif b/docs/epy/uml_class_diagram_for_googleap_7.gif
index b4ce9dc..1d11789 100644
--- a/docs/epy/uml_class_diagram_for_googleap_7.gif
+++ b/docs/epy/uml_class_diagram_for_googleap_7.gif
Binary files differ
diff --git a/docs/epy/uml_class_diagram_for_googleap_8.gif b/docs/epy/uml_class_diagram_for_googleap_8.gif
index cbd6200..4333f9e 100644
--- a/docs/epy/uml_class_diagram_for_googleap_8.gif
+++ b/docs/epy/uml_class_diagram_for_googleap_8.gif
Binary files differ
diff --git a/docs/epy/uml_class_diagram_for_googleap_9.gif b/docs/epy/uml_class_diagram_for_googleap_9.gif
index b4ce9dc..1d11789 100644
--- a/docs/epy/uml_class_diagram_for_googleap_9.gif
+++ b/docs/epy/uml_class_diagram_for_googleap_9.gif
Binary files differ
diff --git a/googleapiclient/__init__.py b/googleapiclient/__init__.py
index e80f447..84d7687 100644
--- a/googleapiclient/__init__.py
+++ b/googleapiclient/__init__.py
@@ -12,7 +12,7 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-__version__ = "1.5.5"
+__version__ = "1.6.0"
 
 # Set default logging handler to avoid "No handler found" warnings.
 import logging
